diff --git a/.gitignore b/.gitignore
index a643c30..549521c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,3 +5,12 @@ __pycache__/
 .DS_Store
 games/tetris/*/target/
 games/tetris/tetris/src/data/image.nppm
+build-*/
+dist/
+pack/essai/*.elf
+pack/essai/*.o
+pack/essai/*.nwa
+tests/modules/*.cmod
+build/
+build-*/
+dist*/
diff --git a/CALCADE.md b/CALCADE.md
new file mode 100644
index 0000000..0aad2e8
--- /dev/null
+++ b/CALCADE.md
@@ -0,0 +1,313 @@
+# NumPlay 1.10.0 — habillage Calcade
+
+NumPlay (le lanceur de jeux de Mason Chen / Mason363, licence GNU GPL v3) reçoit l'habillage commun des jeux
+Calcade : l'intro animée du studio, l'écran de mise à jour obligatoire tous les 20 lancements
+et la sauvegarde `numplay.sys` au format CLC2 du site **https://jeux.w-production.fr/**.
+
+## Mise en règle des jeux (19 octobre 2026)
+
+Chaque jeu a été vérifié : la licence de son code, l'origine de ses images, polices, niveaux et textes, et les
+noms ou marques qu'il montre. Les jeux de mécanique commune (empiler des pièces, un labyrinthe à points, un
+serpent, un casse-briques...) restent ; ce qui appartient à d'autres (noms, logos, personnages, images, niveaux,
+textes, code non libre) est refait.
+
+### Refaits de fond en comble (6 jeux)
+
+Aucun jeu n'est retiré : ceux qui reprenaient le contenu d'un jeu du commerce sont refaits jusqu'à ce qu'il
+n'en reste rien (images, niveaux, textes, polices, code), en gardant la façon de jouer.
+
+| Avant | Maintenant | Ce qui venait du jeu d'origine | Ce qui l'a remplacé |
+|---|---|---|---|
+| NumDash | **NumDash** | les 12 niveaux officiels de Geometry Dash (RobTop) et leurs noms, le titre, les astuces, l'aspect du jeu, des pentes portées de gd3ds, les numéros d'objets de GD | 12 niveaux neufs prouvés jouables (`tools/conformite/numdash_niveaux.py`, `tools/solve.c`), dessins (`tools/sprites_nd.py`), moteur et physique réécrits avec nos valeurs, numérotation et éditeur à NumDash, police Archivo (OFL) |
+| NumBlocks | **NumBlocks** | textures, police, écrans, peaux et sons de Minecraft 1.8.8 (`client.jar`), noms des blocs, générateur et comportements calqués sur le code décompilé | 391 images dessinées par script (`tools/conformite/numblocks_art.py`), générateur de monde, physique, créatures, feu, liquides, recettes, menus et textes réécrits avec nos règles et nos chiffres |
+| NumDrive | **NumDrive** | niveaux, modèles 3D, scripts et palette extraits du fichier de jeu de Drive Mad (Fancade), police de Fancade | moteur physique 2D neuf, 7 voitures, 157 circuits générés et tous vérifiés finissables (`tools/conformite/numdrive_levels.py`), police Poppins (OFL) |
+| Balatro | **Jokeria** | 385 images du jeu, police m6x11, noms et textes des cartes, code Lua et shaders traduits en C | règles écrites pour Jokeria, 26 Jokers inventés, images et police dessinées par script (`tools/conformite/jokeria_art.py`, `jokeria_font.py`) |
+| Buckshot Roulette | **Chevrotine** | 370 images rendues depuis les scènes 3D du jeu, le croupier, ses répliques, les polices Fake Receipt et Dot Matrix | une fête foraine de nuit face à l'Automate, objets et règles à nous, images dessinées par script (`tools/conformite/chevrotine_art.py`), polices Nunito et Archivo (OFL) |
+| Portal Returns | **Warp Lab** | les 78 salles, images, police et textes du jeu TI-84 de MateoConLechuga (sans licence), l'univers de Portal (Valve), code traduit de l'assembleur | 32 salles neuves toutes résolues par `make test`, moteur, robot Pip, labo et police à nous (`tools/conformite/warplab_*.py`), passages rose et menthe |
+
+Les sauvegardes gardent leur nom de fichier (sauf NumDrive : `numdrive.sav` au lieu de `drivemad.sav`) ; une
+ancienne progression d'un jeu refait n'est pas reprise, le jeu repart proprement. `numplay.sys` ne change pas.
+
+Les grands jeux autonomes du dépôt d'origine (Celeste, Hollow Knight, Champion Island, The Final Earth 2,
+NumPowder), qui n'étaient ni dans NumPlay ni sur le site, restent hors des sources de cette version.
+
+### Renommés et redessinés
+
+| Avant | Maintenant | Ce qui a changé |
+|---|---|---|
+| Crossy Road | **Piou Road** | nom et logo (droit, sur une ligne), police à lui (`tools/conformite/piou_font.py`) à la place des chiffres « décodés du jeu », couleurs décalées, le poulet devient un poussin jaune |
+| Block Blast | **Block Boom** | nom, couleurs des blocs |
+| Tetris | **Stackfall** | nom (menu, appli), blocs en galets et couleurs à lui (plus celles du « Tetris Guideline »), icône sans le mot TETRIS (`tools/conformite/stackfall_art.py`) |
+| Flappy Bird | **Flappix** | nom, un oiseau à lui (`tools/conformite/flappix_sprite.py`), colonnes de terre cuite au lieu des tuyaux verts, sol turquoise |
+| Pac-Man | **Munchy Maze** | nom et logo MUNCHY, héros carré menthe avec un œil, monstres à antennes et à un œil, noms des monstres (Rocko, Mimi, Zigzag, Boubou), murs violets, une étoile au lieu du vaisseau de Galaxian, sans les intermèdes de l'arcade |
+| Connect Four / Puissance 4 | **Line Up 4 / Aligne 4** | nom et titre, grille violette, jetons corail et menthe |
+| Block Breaker | **Brick Breaker / Casse-briques** | nom, couleurs, premier mur |
+
+### Mêmes noms, aspect à eux
+
+| Jeu | Ce qui a changé |
+|---|---|
+| Snake | couleurs (plus celles du Snake de Google), noms de modes (Trous, Échange, Saut, Miroir, Pierre) |
+| Solitaire | dos de carte en treillis au lieu du soleil bleu et de l'anneau aux quatre couleurs de Google, bleu à lui |
+| Échecs | couleurs de l'échiquier et des menus (plus le thème vert de Chess.com) |
+| Démineur | couleurs (plus le gris et le bureau sarcelle de Windows 95), visage menthe à antenne, texte « comme Windows » retiré |
+| 2048 | inchangé : le jeu et son aspect sont sous licence MIT (Gabriele Cirulli) : la notice est ajoutée (`games/g2048/LICENSE-2048.txt`) |
+| NumVisuals | inchangé (tout est à NumPlay) |
+
+### Licences ajoutées
+
+- `games/g2048/LICENSE-2048.txt` : MIT de Gabriele Cirulli.
+- `games/tetris/numworks_utils/LICENSE-storage.txt` : BSD 3-Clause du code de stockage de numworks-extapp-storage.
+- `LICENSES/OFL-1.1-Archivo-Caveat.txt` : les polices de l'intro Calcade.
+- `games/numdrive/LICENSES/OFL-1.1-Poppins.txt` : la police de NumDrive.
+- Retirées car plus utilisées : PixelMplus, Rammetto One (NumDash), m6x11 (Balatro), Fake Receipt et Dot Matrix (Buckshot Roulette), Baloo 2 (NumDrive).
+
+Les images d'aperçu (carrousel, vignettes du site, README) sont refaites à partir des jeux modifiés
+(`tools/conformite/captures.py`, `tools/conformite/icones.py`). Les anciennes captures, qui montraient les
+anciens noms et l'aspect des jeux d'origine, sont supprimées.
+
+## Les deux versions
+
+| Fichier | Jeux | Taille du .nwa | Installé |
+|---|---|---:|---:|
+| `NumPlay.nwa` (`NumPlay-complet.nwa`) | les 19 jeux | 1 393 668 o | 1 164 664 o |
+| `NumPlay-leger.nwa` | les mêmes 19 jeux | 1 393 668 o | 1 164 664 o |
+
+Refaits, les 6 gros jeux sont beaucoup plus légers : les 19 jeux tiennent ensemble en moins de 1,2 Mo
+installés, donc la version légère n'a plus besoin d'enlever de jeux et les deux fichiers sont identiques
+(le site propose toujours les deux noms). Les listes sont dans `tools/calcade_build.sh` (`FULL` et `LITE`).
+
+## Le pack
+
+En plus des deux versions tout-en-un, NumPlay existe en **cœur** (`NumPlay-coeur.nwa`) et en
+**modules** (`np_<jeu>.cmod`, un par mini-jeu, les 19), fabriqués par `tools/calcade_pack.py` dans l'arbre
+français (voir § 5). Le dossier `pack/` garde une première version du pack, qui n'est plus celle du site.
+
+## Nom de l'appli : Calcade (20 octobre 2026)
+
+Sur la calculatrice, l'appli s'appelle maintenant **Calcade** et porte le logo Calcade (icône de l'écran d'accueil
+et en-tête du carrousel) ; les textes des jeux et des réglages disent « Calcade ». Les noms internes ne changent pas
+(`numplay.sys`, `numplay_saves.py`, `NumPlay-coeur.nwa`, modules `np_*`), pour que le site et les sauvegardes
+continuent de marcher. La page « À propos » des réglages garde le crédit de l'auteur d'origine (Mason Chen,
+github.com/Mason363/NumPlay), comme le demande la GPL.
+
+## 1. Intro (≈ 4,3 s)
+
+Elle reprend celle de Voie Libre, avec la même chronologie (0,3 s logo, onde de choc, 30 éclats ;
+1,0 s lettres C‑A‑L‑C‑A‑D‑E toutes les 75 ms ; 1,55 s / 1,95 s reflets ; 2,05 s « présente » ;
+2,4 s `jeux.w-production.fr` ; 3,95 s fondu). **OK** ou **Retour** la passe après 0,5 s.
+**Home** quitte NumPlay.
+
+- Images générées par `tools/calcade_art.py` à partir du kit (`tools/calcade/` : logo SVG,
+  Archivo Expanded Black, Caveat) : 13,8 Ko d'images, rangées compressées en DEFLATE (6,2 Ko
+  dans la calculatrice) et décompressées en RAM au démarrage.
+- Les textes utilisent les polices de NumPlay (Nunito). Seules les lettres accentuées qui
+  manquaient sont ajoutées (à é è —, 0,6 Ko).
+- Code dans `launcher/src/calcade.c` : fond animé, sprites mis à l'échelle avec teinte, opacité
+  et reflet, anneaux, poussières. Tout est dessiné par bandes de 16 lignes, avec le moteur de
+  NumPlay (`gfx.c`).
+- Mesure dans l'émulateur ARM (216 MHz, sans la vitesse réelle de la N0120) : 21,6 images/s
+  pour l'intro et 18,7 images/s pour l'écran de mise à jour.
+- Avec le déguisement « Matrices » de NumPlay, l'intro ne se joue qu'après le code secret.
+
+## 2. Mise à jour obligatoire (tous les 20 lancements)
+
+À chaque ouverture de NumPlay, juste après la lecture de `numplay.sys` :
+
+```
+compte = launches & 0x7FFFFFFF ;  compte++
+si compte % 20 == 0 : bit 31 = 1         (20e, 40e, 60e… ouverture)
+launches = (bit 31) | compte ; somme de contrôle recalculée ; fichier écrit tout de suite
+```
+
+- Si le bit 31 vaut 1, l'intro se joue puis l'écran **« Mise à jour »** s'affiche et reste à
+  l'écran. Aucune touche ne le quitte (OK, EXE, Retour, flèches, chiffres, effacer…). Le texte
+  indique « Mise à jour obligatoire — va sur jeux.w-production.fr/#/mise-a-jour pour
+  continuer à jouer. » Seule **Home** (ou On/Off) quitte NumPlay.
+- Le jeu ne remet **jamais** ce bit à 0. Les ouvertures continuent d'être comptées pendant le
+  blocage.
+- C'est le site qui le remet à 0, une fois la mise à jour installée (voir § 4). NumPlay se
+  débloque au lancement suivant.
+
+## 3. Sauvegarde `numplay.sys` (CLC2, 116 octets, petit-boutiste)
+
+Fichier invisible du stockage des scripts Python, lu et écrit avec les fonctions
+d'enregistrements de NumPlay (`games/common/epsilon_files.h`, même méthode que `save.c` du
+kit : en-tête userland, `[u16 taille][nom\0][données]`). Il est aussi copié dans
+`numplay_saves.py`, la copie de sauvegarde de NumPlay, ce qui lui permet de survivre à une
+mise à jour faite sur le site officiel NumWorks.
+
+| Octet | Taille | Champ | Sens |
+|---:|---:|---|---|
+| 0 | 4 | `magic` | `"CLC2"` (0x32434C43) |
+| 4 | 2 | `fmt` | 2 |
+| 6 | 2 | `size` | 116 |
+| 8 | 12 | `game` | `numplay` (ASCII, terminé par 0) |
+| 20 | 8 | `ver` | `1.10.0` |
+| 28 | 4 | `launches` | bits 0‑30 : ouvertures de NumPlay ; **bit 31 : mise à jour exigée** |
+| 32 | 4 | `plays_total` | parties lancées depuis NumPlay (tous jeux) |
+| 36 | 12 | `last_game` | identifiant du dernier jeu lancé (`numdash`…), vide si aucun |
+| 48 | 1 | `ngames` | nombre de jeux de cette version de NumPlay (19 dans les deux versions) |
+| 49 | 1 | `last_index` | place du dernier jeu dans la liste ci-dessous, 0xFF si aucun |
+| 50 | 2 | `reserved0` | 0 |
+| 52 | 56 | `plays[28]` | u16 : nombre de lancements de chaque jeu, par sa place ci-dessous |
+| 108 | 4 | `reserved1` | 0 |
+| 112 | 4 | `check` | somme de contrôle des octets 0 à 111 (algorithme `hash_bytes` du kit) |
+
+Places de `plays[]` (ordre de `games/games.json`, le même dans les deux versions) :
+
+| 0 numdash (NumDash) | 1 crossyroad (Piou Road) | 2 numblocks (NumBlocks) | 3 numdrive (NumDrive) |
+|---|---|---|---|
+| 4 balatro (Jokeria) | 5 buckshot (Chevrotine) | 6 blockblast (Block Boom) | 7 portal (Warp Lab) |
+| 8 tetris (Stackfall) | 9 chess (Échecs) | 10 flappybird (Flappix) | 11 pacman (Munchy Maze) |
+| 12 snake (Snake) | 13 connectfour (Aligne 4) | 14 solitaire (Solitaire) | 15 g2048 (2048) |
+| 16 minesweeper (Démineur) | 17 breakout (Casse-briques) | 18 numvisuals (NumVisuals) | |
+
+Les identifiants restent ceux de NumPlay 1.10.0 (liste figée dans `tools/calcade_art.py`), même pour les jeux
+renommés : les compteurs déjà enregistrés gardent leur place.
+
+Un fichier absent, trop court, d'un autre jeu ou dont la somme est fausse ne fait jamais
+planter NumPlay : on repart de zéro. Il n'existe pas d'ancien format à convertir (c'est la
+première version Calcade de NumPlay).
+
+**La progression des jeux** (niveaux, records…) reste dans les fichiers de chaque jeu, et
+NumPlay en garde une copie dans le script `numplay_saves.py`. Elle n'est pas recopiée dans
+`numplay.sys`, car le stockage ne fait que 42 Ko. Pour qu'une mise à jour par le site ne la
+perde pas, il faut que le site **sauvegarde et remette aussi `numplay_saves.py`** (s'il ne
+garde pas déjà les scripts Python). Au lancement suivant, NumPlay remet tout seul les
+sauvegardes manquantes à partir de cette copie.
+
+## 4. À faire côté site (`calcade-sauvegardes.js`)
+
+1. **Compter sans le bit 31** : partout où `lancements` sert à comparer deux copies, utiliser
+   `lancements & 0x7FFFFFFF` (sinon une copie bloquée paraît toujours « plus récente »).
+2. **Lever le drapeau après l'installation**, en recalculant la somme de contrôle, et écrire le
+   fichier même si la calculatrice a déjà une copie avec le même compte :
+
+```js
+function leverDrapeauMaj(octets) {
+  const d = new DataView(octets.buffer, octets.byteOffset, octets.byteLength);
+  const taille = d.getUint16(6, true);
+  d.setUint32(28, d.getUint32(28, true) & 0x7fffffff, true);
+  d.setUint32(taille - 4, sommeControle(octets, taille - 4), true);
+  return octets;
+}
+// dans decoder() :
+r.lancements_reels = r.lancements & 0x7fffffff;
+r.maj_exigee = (r.lancements >>> 31) === 1;
+if (r.jeu === "numplay" && octets.length >= 116) {
+  r.details = {
+    parties: d.getUint32(32, true),
+    dernier_jeu: texte(octets, 36, 12),
+    jeux_dans_version: octets[48],
+    lancements_par_jeu: Array.from({ length: 28 }, (_, i) => d.getUint16(52 + 2 * i, true)),
+  };
+}
+```
+
+## 5. Pack NumPlay (19 octobre 2026) : le cœur et les mini-jeux en modules
+
+> **Mise en règle (20 octobre 2026) :** le cœur et les 19 modules sont refabriqués à partir des sources mises
+> en règle (`tools/calcade_pack.py` dans l'arbre français). Les identifiants ne changent pas (`np_balatro` est
+> Jokeria, `np_buckshot` Chevrotine, `np_portal` Warp Lab) ; les cartes des grands jeux restent valables.
+
+Sur le site, « Tout dans NumPlay » : le joueur coche des mini-jeux de NumPlay et des grands jeux
+Calcade, et le navigateur lie le tout en **une seule application NumPlay** (`lieur.js`, GNU ld en
+WebAssembly : `eadk.o + NumPlay-coeur.nwa + module1.cmod + module2.cmod + …`). Chaque jeu ne prend
+que sa vraie taille (pas d'arrondi à 64 Ko par jeu, une seule fois la bibliothèque du lanceur).
+
+| Fichier | Rôle |
+|---|---|
+| `NumPlay-coeur.nwa` | le lanceur seul (`-DNP_COEUR=1`) : intro Calcade, carrousel, réglages, compteur et mise à jour obligatoire (`numplay.sys` inchangé). Aucun jeu dedans. |
+| `modules/np_<id>.cmod` | un mini-jeu = un module Calcade (fiche ABI 1, id `np_<id>`) |
+| `modules/np_<id>.json` / `.png` | sa présentation sur le site (nom, description, catégorie, ordre) et sa capture 160×120 |
+
+**Le cœur** (`launcher/src/coeur.c`) construit la table des jeux au démarrage à partir des fiches
+liées, dans l'ordre du site :
+
+- fiche `np_…` : il pose la *question NumPlay* à sa fonction `lancer()` (`ctx->abi ==
+  NUMPLAY_QUESTION`, voir `launcher/src/numplay_pack.h`) et reçoit la description complète du jeu
+  (captures, couleurs, fichiers de sauvegarde) : le jeu se comporte exactement comme dans NumPlay ;
+- toute autre fiche valide : un grand jeu Calcade (Voie Libre, Turbo Rush…). Sa carte montre sa
+  vignette 80×60 (ou une cartouche à sa couleur avec son initiale). Il reçoit `ctx->ram` = toute la
+  RAM libre (alignée sur 8, remise à zéro avant chaque lancement) ; `CALCADE_QUITTER` ferme NumPlay ;
+- aucun module : écran « Aucun jeu dans NumPlay — choisis tes jeux sur jeux.w-production.fr ».
+
+**La RAM.** L'arène de NumPlay n'est plus un tableau du lanceur : c'est la RAM libre de l'appli,
+de `_heap_start` à `_heap_end` (symboles du script de liaison du site). Un mini-jeu y range sa
+`.data` (à +0) et sa `.bss` (juste après, alignée sur 8) : `tools/npmodule.py --arena-symbol
+_heap_start` réécrit ses références ; le cœur recopie l'image de `.data` et met la `.bss` à zéro
+avant chaque partie. Si la RAM libre ne suffit pas, la carte l'écrit (« Il manque N Ko… ») et le
+jeu ne se lance pas.
+
+**Un module mini-jeu** (`tools/calcade_pack.py`) = le jeu tel que NumPlay le fabrique, ses
+captures, sa description, sa fiche, et sa propre libc/libm/libgcc ; tout est rendu local sauf la
+fiche. Il ne réclame que `eadk_*`, des fonctions du cœur (`np_keyboard_scan`, `gfx_*`…, liste dans
+`dist-pack/exports-coeur.txt`, que le cœur garde visibles) et les symboles du script de liaison.
+Stackfall (ex-Tetris) est en Rust : quand la cible `thumbv7em-none-eabihf` n'est pas installable, il est repris
+tel quel d'un `NumPlay.nwa` déjà fabriqué (`tools/calcade_extraire.py`, option `--extraire`).
+
+**Les cartes des grands jeux** (19 octobre, soir) : `tools/calcade_cartes.py` fabrique, pour un
+grand jeu Calcade, un petit module à fiche `carte:<id de sa fiche>` qui ne contient que deux
+captures au format du carrousel (192×144, 256 couleurs). Le site l'ajoute au pack avec le jeu
+(`jeux valides/NumPlay/cartes/<id du catalogue>.cmod`) ; le cœur l'accroche au jeu (même id de
+fiche, ou même nom) et la carte du carrousel montre ces captures au lieu de la vignette 80×60.
+Les captures des mini-jeux sont aussi en 256 couleurs (au lieu de 16 dans la version française),
+avec un léger renforcement de netteté après la réduction (`tools/shots.py`).
+
+Dans un pack, la désinstallation d'un jeu depuis les réglages est désactivée (les jeux ne sont pas
+calés sur les secteurs de la flash) : on refait son pack sur le site.
+
+```
+python3 tools/lang.py tree fr ../fr && cd ../fr        # NumPlay en français
+python3 tools/calcade_pack.py --extraire NumPlay.nwa   # dist-pack/NumPlay-coeur.nwa et dist-pack/modules/
+python3 tools/calcade_pack_test.py --lieur lieur.js --eadk eadk.o --out essai \
+    --keys "6000-6100:ok" --shots 7000 dist-pack/NumPlay-coeur.nwa dist-pack/modules/np_snake.cmod
+```
+
+`calcade_pack_test.py` lie le pack avec le script de `lieur.js` du site et le fait tourner dans
+l'émulateur (`tools/emu.py`, qui accepte maintenant un `.elf` déjà lié).
+
+Fichiers ajoutés : `launcher/src/coeur.c`, `numplay_pack.h`, `calcade_module.h` (contrat du kit
+Calcade), `tools/calcade_pack.py`, `calcade_pack_test.py`, `calcade_extraire.py`. Modifiés (tout
+sous `#if NP_COEUR`, sauf `np_game_run` qui rend maintenant un int) : `np.h`, `main.c`, `games.c`,
+`home.c`, `gfx.[ch]`, `flash.c`, `calcade.c`, `tools/npmodule.py` (option `--arena-symbol`),
+`tools/emu.py` (`.elf` accepté).
+
+## Compiler
+
+```
+tools/calcade_build.sh          # dist/NumPlay-complet.nwa et dist/NumPlay-leger.nwa
+python3 tools/calcade_art.py launcher/src/calcade_art.c   # régénère images et polices
+python3 tests/test_calcade.py dist/NumPlay-complet.nwa    # 19 vérifications dans l'émulateur
+python3 tools/calcade_shots.py dist/NumPlay-complet.nwa captures/
+```
+
+Outils : arm-none-eabi-gcc 15.2 (xPack), nwlink 1.0.0, Python 3 avec Pillow, zopfli,
+pyelftools, unicorn, cairosvg, pngquant, et Rust pour Tetris (cible `thumbv7em-none-eabihf`).
+Fichiers modifiés par rapport à NumPlay 1.10.0 : `launcher/src/main.c` (4 lignes),
+`launcher/src/storage.c` (1 ligne) et `Makefile` (option `ONLY`). Fichiers ajoutés :
+`launcher/src/calcade.[ch]`, `calcade_art.c`, `tools/calcade_art.py`, `tools/calcade_shots.py`,
+`tools/calcade_build.sh`, `tools/calcade/`, `tests/test_calcade.py`.
+
+## Licence
+
+NumPlay © 2026 Mason Chen est distribué sous **GNU GPL v3** (fichier `LICENSE`). Cette version
+est une **version modifiée par Calcade (16 octobre 2026)** : elle reste sous GPL v3, et son code
+source complet doit être fourni avec chaque `.nwa` distribué (le site le propose sur
+`jeux.w-production.fr/licences/numplay/`). Les polices gardent leur licence (dossier `LICENSES/` :
+SIL OFL 1.1, PixelMplus) ; le code repris de Tatone26 est dans le domaine public (`UNLICENSE`).
+Les noms et images des jeux d'origine appartiennent à leurs propriétaires et ne sont pas couverts.
+
+## 20 octobre 2026 (après-midi) : mise à jour sans boucle, sortie par le câble
+
+- **Jeton d'installation** (`launcher/src/calcade.c`, `cc_install_token`) : le cœur contient la marque
+  `CALCADE-JETON-v1` suivie de 4 octets. Le site (`calculatrice.js`, `_tamponnerJeton`) y écrit un numéro
+  propre à chaque installation. Au premier lancement, si ce numéro n'est pas celui gardé dans
+  `numplay.sys` (champ `reserved1`), NumPlay vient d'être mis à jour : il efface lui-même le bit 31 et
+  arrondit le compteur au multiple de 20 suivant (la demande suivante vient 20 ouvertures plus tard).
+  Ça ne dépend plus de l'écriture des sauvegardes par le site.
+- **Écran « Mise à jour obligatoire »** : brancher le câble USB ferme NumPlay (`np_usb_plugged`, SVC 52
+  `SVC_USB_IS_PLUGGED` d'Epsilon), la calculatrice passe en mode USB et la mise à jour se fait sur le site.
+- Les grands jeux Calcade dans NumPlay n'ont plus leur intro ni leur écran de mise à jour : seuls ceux du
+  cœur restent.
diff --git a/games/numdash/LICENSES/OFL-1.1-RammettoOne.txt b/LICENSES/OFL-1.1-Archivo-Caveat.txt
similarity index 93%
rename from games/numdash/LICENSES/OFL-1.1-RammettoOne.txt
rename to LICENSES/OFL-1.1-Archivo-Caveat.txt
index 035fdde..692faab 100644
--- a/games/numdash/LICENSES/OFL-1.1-RammettoOne.txt
+++ b/LICENSES/OFL-1.1-Archivo-Caveat.txt
@@ -1,8 +1,11 @@
-Copyright 2011 The Rammetto Project Authors (https://github.com/googlefonts/RammettoFont), with Reserved Font Name Rammetto.
+Copyright 2020 The Archivo Project Authors (https://github.com/Omnibus-Type/Archivo)
+Copyright 2014 The Caveat Project Authors (https://github.com/googlefonts/caveat)
+
+Archivo (Expanded Black) et Caveat, utilisées par tools/calcade_art.py pour dessiner l'intro Calcade.
 
 This Font Software is licensed under the SIL Open Font License, Version 1.1.
 This license is copied below, and is also available with a FAQ at:
-https://openfontlicense.org
+http://scripts.sil.org/OFL
 
 
 -----------------------------------------------------------
diff --git a/Makefile b/Makefile
index d590bb4..cc274e3 100644
--- a/Makefile
+++ b/Makefile
@@ -1,3 +1,5 @@
+# Modifié par Calcade le 16 octobre 2026 : option ONLY (versions complète et légère, voir CALCADE.md) ;
+# le 19 octobre : jeux mis en règle (voir CALCADE.md).
 # NumPlay: one launcher app with every game, plus each game on its own.
 #
 #   make            build/NumPlay*.nwa and build/apps/*.nwa (the release files)
@@ -24,19 +26,19 @@ RAM_LIMIT = 148928
 # custom builds of Epsilon 25.2's source give apps less: 133652 bytes; every game fits there too, in NumPlay and on
 # its own (their big buffers are on the stack, 32 KB apart from that RAM, or in the RAM the software has left)
 CUSTOM_RAM = 133652
-BIG_APPS = Celeste HollowKnight ChampionIsland FinalEarth2 NumPowder NumBlocks NumDrive
+BIG_APPS = NumBlocks
 # the calculator's space for installed apps (0x90200000 to 0x903F0000 in its flash)
 APP_SPACE = 2031616
 # Upsilon, the N0110 and N0115's custom software, gives .nwa apps less RAM: NumPlay-Upsilon.nwa has
 # the games that fit it (NumPlay draws their text there: see launcher/src/compat.c)
 UPSILON_RAM = 107674
-UPSILON_GAMES = crossyroad blockblast portal tetris chess flappybird pacman snake connectfour solitaire g2048 minesweeper \
+UPSILON_GAMES = crossyroad numdrive blockblast portal tetris chess flappybird pacman snake connectfour solitaire g2048 minesweeper \
   breakout numvisuals
 
 # NumPlay and its discreet versions: the same app, with another name and icon
 # on the calculator's home screen. Each one is a release file.
 VARIANTS = NumPlay NumPlay-Invisible NumPlay-Matrices
-NAME_NumPlay = "NumPlay"
+NAME_NumPlay = "Calcade"
 ICON_NumPlay = launcher/assets/icon.png
 NAME_NumPlay-Invisible = " "
 ICON_NumPlay-Invisible = launcher/assets/icon-invisible.png
@@ -52,6 +54,12 @@ EADK_SIM_CFLAGS := $(shell $(NWLINK) eadk-cflags-simulator)
 $(B)/games.mk: games/games.json tools/games_mk.py | $(B)
 	$(PY) tools/games_mk.py $< > $@
 -include $(B)/games.mk
+# Calcade: ONLY="id id ..." builds NumPlay with these games only (the full and light versions,
+# see CALCADE.md); each keeps its place in games.json
+ifneq ($(strip $(ONLY)),)
+GAMES := $(filter $(ONLY),$(GAMES))
+GEN_ONLY = --only "$(GAMES)"
+endif
 
 LAUNCHER_SRC = $(wildcard launcher/src/*.c)
 LAUNCHER_H = $(wildcard launcher/src/*.h)
@@ -109,7 +117,7 @@ MODULES = $(foreach g,$(GAMES),$(B)/modules/$(g).o)
 
 # ------------------------------------------------------------------ generated glue
 $(B)/gen/gametable.c: games/games.json tools/gen_games.py $(MODULES)
-	$(PY) tools/gen_games.py games/games.json $(B)/modules $(B)/gen
+	$(PY) tools/gen_games.py games/games.json $(B)/modules $(B)/gen $(GEN_ONLY)
 
 $(B)/gen/shots_%.c: games/games.json tools/shots.py $$(SHOTS_$$*) | $(B)
 	cd games/$* && $(PY) ../../tools/shots.py --id $* --index $(INDEX_$*) $(COLORS_$*) ../../$@ $(SHOTS_REL_$*)
@@ -193,20 +201,20 @@ $(foreach l,$(LANGS),$(B)/NumPlay-$(LANG_$(l)).nwa): $(B)/NumPlay-%.nwa: FORCE |
 
 # ------------------------------------------------------------------ games on their own
 APP_numdash = games/numdash/build/numdash.nwa:NumDash.nwa
-APP_crossyroad = games/crossyroad/output/crossyroad.nwa:CrossyRoad.nwa
+APP_crossyroad = games/crossyroad/output/crossyroad.nwa:PiouRoad.nwa
 APP_numdrive = games/numdrive/output/device/numdrive.nwa:NumDrive.nwa
-APP_balatro = games/balatro/output/balatro.nwa:Balatro.nwa
-APP_buckshot = games/buckshot/output/buckshot.nwa:BuckshotRoulette.nwa
-APP_portal = games/portal/output/portal.nwa:PortalReturns.nwa
+APP_balatro = games/balatro/output/balatro.nwa:Jokeria.nwa
+APP_buckshot = games/buckshot/output/buckshot.nwa:Chevrotine.nwa
+APP_portal = games/portal/output/portal.nwa:WarpLab.nwa
 APP_chess = games/chess/output/chess.nwa:NumChess.nwa
-APP_tetris = games/tetris/tetris/target/thumbv7em-none-eabihf/release/tetris:Tetris.nwa
+APP_tetris = games/tetris/tetris/target/thumbv7em-none-eabihf/release/tetris:Stackfall.nwa
 APP_numvisuals = games/numvisuals/output/numvisuals.nwa:NumVisuals.nwa
 # too big to share the calculator's app space with NumPlay: only on their own
-APP_celeste = games/celeste/output/celeste.nwa:Celeste.nwa
-APP_championisland = games/championisland/output/championisland.nwa:ChampionIsland.nwa
-APP_hollowknight = games/hollowknight/output/hollowknight.nwa:HollowKnight.nwa
-APP_finalearth2 = games/finalearth2/output/finalearth2.nwa:FinalEarth2.nwa
-APP_numpowder = games/numpowder/output/numpowder.nwa:NumPowder.nwa
+#(retiré des sources) APP_celeste = games/celeste/output/celeste.nwa:Celeste.nwa
+#(retiré des sources) APP_championisland = games/championisland/output/championisland.nwa:ChampionIsland.nwa
+#(retiré des sources) APP_hollowknight = games/hollowknight/output/hollowknight.nwa:HollowKnight.nwa
+#(retiré des sources) APP_finalearth2 = games/finalearth2/output/finalearth2.nwa:FinalEarth2.nwa
+#(retiré des sources) APP_numpowder = games/numpowder/output/numpowder.nwa:NumPowder.nwa
 
 apps: | $(B)
 	$(MAKE) -C games/numdash build NWLINK="node node_modules/nwlink/bin/nwlink"
@@ -217,11 +225,11 @@ apps: | $(B)
 	$(MAKE) -C games/portal build NWLINK="$(NWLINK)"
 	$(MAKE) -C games/chess build NWLINK="$(NWLINK)"
 	$(MAKE) -C games/numvisuals build NWLINK="$(NWLINK)"
-	$(MAKE) -C games/celeste build NWLINK="$(NWLINK)"
-	$(MAKE) -C games/championisland build NWLINK="$(NWLINK)"
-	$(MAKE) -C games/hollowknight build NWLINK="$(NWLINK)"
-	$(MAKE) -C games/finalearth2 build NWLINK="$(NWLINK)"
-	$(MAKE) -C games/numpowder build NWLINK="$(NWLINK)"
+#(retiré des sources) 	$(MAKE) -C games/celeste build NWLINK="$(NWLINK)"
+#(retiré des sources) 	$(MAKE) -C games/championisland build NWLINK="$(NWLINK)"
+#(retiré des sources) 	$(MAKE) -C games/hollowknight build NWLINK="$(NWLINK)"
+#(retiré des sources) 	$(MAKE) -C games/finalearth2 build NWLINK="$(NWLINK)"
+#(retiré des sources) 	$(MAKE) -C games/numpowder build NWLINK="$(NWLINK)"
 	cd games/tetris/tetris && NWLINK="$(NWLINK)" $(CARGO) build --release --quiet
 	cp $(word 1,$(subst :, ,$(APP_numdash))) $(B)/apps/$(word 2,$(subst :, ,$(APP_numdash)))
 	cp $(word 1,$(subst :, ,$(APP_crossyroad))) $(B)/apps/$(word 2,$(subst :, ,$(APP_crossyroad)))
@@ -232,11 +240,11 @@ apps: | $(B)
 	cp $(word 1,$(subst :, ,$(APP_chess))) $(B)/apps/$(word 2,$(subst :, ,$(APP_chess)))
 	cp $(word 1,$(subst :, ,$(APP_tetris))) $(B)/apps/$(word 2,$(subst :, ,$(APP_tetris)))
 	cp $(word 1,$(subst :, ,$(APP_numvisuals))) $(B)/apps/$(word 2,$(subst :, ,$(APP_numvisuals)))
-	cp $(word 1,$(subst :, ,$(APP_celeste))) $(B)/apps/$(word 2,$(subst :, ,$(APP_celeste)))
-	cp $(word 1,$(subst :, ,$(APP_championisland))) $(B)/apps/$(word 2,$(subst :, ,$(APP_championisland)))
-	cp $(word 1,$(subst :, ,$(APP_hollowknight))) $(B)/apps/$(word 2,$(subst :, ,$(APP_hollowknight)))
-	cp $(word 1,$(subst :, ,$(APP_finalearth2))) $(B)/apps/$(word 2,$(subst :, ,$(APP_finalearth2)))
-	cp $(word 1,$(subst :, ,$(APP_numpowder))) $(B)/apps/$(word 2,$(subst :, ,$(APP_numpowder)))
+#(retiré des sources) 	cp $(word 1,$(subst :, ,$(APP_celeste))) $(B)/apps/$(word 2,$(subst :, ,$(APP_celeste)))
+#(retiré des sources) 	cp $(word 1,$(subst :, ,$(APP_championisland))) $(B)/apps/$(word 2,$(subst :, ,$(APP_championisland)))
+#(retiré des sources) 	cp $(word 1,$(subst :, ,$(APP_hollowknight))) $(B)/apps/$(word 2,$(subst :, ,$(APP_hollowknight)))
+#(retiré des sources) 	cp $(word 1,$(subst :, ,$(APP_finalearth2))) $(B)/apps/$(word 2,$(subst :, ,$(APP_finalearth2)))
+#(retiré des sources) 	cp $(word 1,$(subst :, ,$(APP_numpowder))) $(B)/apps/$(word 2,$(subst :, ,$(APP_numpowder)))
 	arm-none-eabi-strip --strip-unneeded $(B)/apps/Tetris.nwa
 
 STD_APPS = $(foreach g,$(STD_GAMES),$(B)/apps/$(NWA_$(g)))
@@ -289,9 +297,9 @@ clean:
 	-$(MAKE) -C games/portal clean
 	-$(MAKE) -C games/chess clean
 	-$(MAKE) -C games/numvisuals clean
-	-$(MAKE) -C games/championisland clean
-	-$(MAKE) -C games/hollowknight clean
-	-$(MAKE) -C games/finalearth2 clean
-	-$(MAKE) -C games/numpowder clean
+#(retiré des sources) 	-$(MAKE) -C games/championisland clean
+#(retiré des sources) 	-$(MAKE) -C games/hollowknight clean
+#(retiré des sources) 	-$(MAKE) -C games/finalearth2 clean
+#(retiré des sources) 	-$(MAKE) -C games/numpowder clean
 	-cd games/tetris/tetris && $(CARGO) clean
 	-$(foreach g,$(STD_GAMES),$(MAKE) -C games/$(g) clean;)
diff --git a/README.md b/README.md
index df3eb4c..4d7659f 100644
--- a/README.md
+++ b/README.md
@@ -2,264 +2,69 @@
   <img src="docs/media/icon.png" width="96" alt="NumPlay icon">
 </p>
 
-<h1 align="center">NumPlay</h1>
+<h1 align="center">NumPlay — version Calcade</h1>
 
 <p align="center">
-  <b>17 free games for your NumWorks calculator, in one app.</b><br>
-  Plus five big games that install on their own. For the N0110, N0115 and N0120, in English, French and Chinese.
+  <b>19 free games for your NumWorks calculator, in one app.</b><br>
+  NumPlay by Mason Chen (GNU GPL v3), modified by Calcade (<a href="https://jeux.w-production.fr">jeux.w-production.fr</a>): see <a href="CALCADE.md">CALCADE.md</a>.
 </p>
 
-<p align="center">
-  <a href="https://github.com/Mason363/NumPlay/releases"><img src="https://img.shields.io/github/downloads/Mason363/NumPlay/total?style=for-the-badge&label=downloads&color=1E7F74" alt="Total downloads"></a>
-  <a href="https://github.com/Mason363/NumPlay/stargazers"><img src="https://img.shields.io/github/stars/Mason363/NumPlay?style=for-the-badge&color=E3B341" alt="GitHub stars"></a>
-  <a href="https://github.com/Mason363/NumPlay/releases/latest"><img src="https://img.shields.io/github/v/release/Mason363/NumPlay?style=for-the-badge&label=version&color=2D9F4F" alt="Latest version"></a>
-</p>
-
-<p align="center">
-  <a href="https://github.com/Mason363/NumPlay/releases/latest/download/NumPlay.nwa"><img src="https://img.shields.io/badge/Download-NumPlay.nwa-1E7F74?style=for-the-badge" alt="Download NumPlay.nwa"></a>
-</p>
-
-<p align="center">
-  <a href="#how-to-install"><b>How to install</b></a> &nbsp;·&nbsp; <a href="docs/play.md"><b>How to play</b></a> &nbsp;·&nbsp; <a href="https://github.com/Mason363/NumPlay/releases/latest"><b>All downloads</b></a> &nbsp;·&nbsp; <a href="#roadmap"><b>Roadmap</b></a>
-</p>
-
-<p align="center">
-  <img src="docs/media/launcher.gif" width="560" alt="The NumPlay launcher on a NumWorks calculator, scrolling through its games">
-</p>
-
-⭐ **Enjoying NumPlay?** Give it a star at the top of this page: it takes a second and helps other people find it.<br>
-💡 **Want a game that isn't here?** Check the [roadmap](#roadmap) first, then email me at [masonchen204@gmail.com](mailto:masonchen204@gmail.com).
+> **19 October 2026.** Calcade checked every game for licences and rights, and no game was dropped. Six games
+> copied the content of commercial games (pictures, levels, texts, sometimes their code) and were remade from the
+> ground up, keeping how they play: NumDash, NumBlocks and NumDrive (new levels, art, engines and texts), Jokeria
+> (was Balatro), Chevrotine (was Buckshot Roulette) and Warp Lab (was Portal Returns). Seven games were renamed and
+> got their own look: Piou Road, Block Boom, Stackfall, Flappix, Munchy Maze, Line Up 4 and Brick Breaker. Snake,
+> Solitaire, Chess and Minesweeper got their own colours. Details:
+> [CALCADE.md](CALCADE.md#mise-en-r%C3%A8gle-des-jeux-19-octobre-2026).
 
 ## Games in NumPlay
 
-All of these come in one app, **NumPlay.nwa**.
-
 <table>
   <tr>
-    <td align="center" width="20%"><a href="games/numdash/README.md"><img src="docs/media/thumb_numdash.png" width="120" alt="NumDash"><br><b>NumDash</b></a></td>
-    <td align="center" width="20%"><a href="games/crossyroad/README.md"><img src="docs/media/thumb_crossyroad.png" width="120" alt="Crossy Road"><br><b>Crossy Road</b></a></td>
-    <td align="center" width="20%"><a href="games/numblocks/README.md"><img src="docs/media/thumb_numblocks.png" width="120" alt="NumBlocks"><br><b>NumBlocks</b></a></td>
-    <td align="center" width="20%"><a href="games/numdrive/README.md"><img src="docs/media/thumb_numdrive.png" width="120" alt="NumDrive"><br><b>NumDrive</b></a></td>
-    <td align="center" width="20%"><a href="games/balatro/README.md"><img src="docs/media/thumb_balatro.png" width="120" alt="Balatro"><br><b>Balatro</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><a href="games/buckshot/README.md"><img src="docs/media/thumb_buckshot.png" width="120" alt="Buckshot Roulette"><br><b>Buckshot Roulette</b></a></td>
-    <td align="center"><a href="games/blockblast/README.md"><img src="docs/media/thumb_blockblast.png" width="120" alt="Block Blast"><br><b>Block Blast</b></a></td>
-    <td align="center"><a href="games/portal/README.md"><img src="docs/media/thumb_portal.png" width="120" alt="Portal Returns"><br><b>Portal Returns</b></a></td>
-    <td align="center"><a href="games/tetris/README.md"><img src="docs/media/thumb_tetris.png" width="120" alt="Tetris"><br><b>Tetris</b></a></td>
-    <td align="center"><a href="games/chess/README.md"><img src="docs/media/thumb_chess.png" width="120" alt="Chess"><br><b>Chess</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><a href="games/flappybird/README.md"><img src="docs/media/thumb_flappybird.png" width="120" alt="Flappy Bird"><br><b>Flappy Bird</b></a></td>
-    <td align="center"><a href="games/pacman/README.md"><img src="docs/media/thumb_pacman.png" width="120" alt="Pac-Man"><br><b>Pac-Man</b></a></td>
-    <td align="center"><a href="games/snake/README.md"><img src="docs/media/thumb_snake.png" width="120" alt="Snake"><br><b>Snake</b></a></td>
-    <td align="center"><a href="games/connectfour/README.md"><img src="docs/media/thumb_connectfour.png" width="120" alt="Connect Four"><br><b>Connect Four</b></a></td>
-    <td align="center"><a href="games/solitaire/README.md"><img src="docs/media/thumb_solitaire.png" width="120" alt="Solitaire"><br><b>Solitaire</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><a href="games/g2048/README.md"><img src="docs/media/thumb_g2048.png" width="120" alt="2048"><br><b>2048</b></a></td>
-    <td align="center"><a href="games/minesweeper/README.md"><img src="docs/media/thumb_minesweeper.png" width="120" alt="Minesweeper"><br><b>Minesweeper</b></a></td>
-    <td align="center"><a href="games/breakout/README.md"><img src="docs/media/thumb_breakout.png" width="120" alt="Block Breaker"><br><b>Block Breaker</b></a></td>
-    <td align="center"><a href="games/numvisuals/README.md"><img src="docs/media/thumb_numvisuals.png" width="120" alt="NumVisuals"><br><b>NumVisuals</b></a></td>
+    <td align="center" width="20%"><a href="games/numdash/README.md"><img src="games/numdash/docs/calcade.png" width="140" alt="NumDash"><br><b>NumDash</b></a></td>
+    <td align="center" width="20%"><a href="games/crossyroad/README.md"><img src="games/crossyroad/docs/calcade.png" width="140" alt="Piou Road"><br><b>Piou Road</b></a></td>
+    <td align="center" width="20%"><a href="games/numblocks/README.md"><img src="games/numblocks/docs/shot.png" width="140" alt="NumBlocks"><br><b>NumBlocks</b></a></td>
+    <td align="center" width="20%"><a href="games/numdrive/README.md"><img src="games/numdrive/docs/calcade.png" width="140" alt="NumDrive"><br><b>NumDrive</b></a></td>
+    <td align="center" width="20%"><a href="games/balatro/README.md"><img src="games/balatro/docs/calcade.png" width="140" alt="Jokeria"><br><b>Jokeria</b></a></td>
   </tr>
-</table>
-
-Want just one game? Each one also comes as its own file on the [downloads page](https://github.com/Mason363/NumPlay/releases/latest).
-
-## Big games, installed on their own
-
-These are too big to fit next to NumPlay, so each one is its own app. Install it without NumPlay.
-
-<table>
   <tr>
-    <td align="center" width="33%"><a href="games/numpowder/README.md"><img src="docs/media/thumb_numpowder.png" width="200" alt="NumPowder"><br><b>NumPowder</b></a><br><sub>The Powder Toy: 175 materials to mix, melt, burn and blow up</sub><br><a href="https://github.com/Mason363/NumPlay/releases/latest/download/NumPowder.nwa">Download</a></td>
-    <td align="center" width="33%"><a href="games/finalearth2/README.md"><img src="docs/media/thumb_finalearth2.png" width="200" alt="The Final Earth 2"><br><b>The Final Earth 2</b></a><br><sub>Build a city on floating islands in space</sub><br><a href="https://github.com/Mason363/NumPlay/releases/latest/download/FinalEarth2.nwa">Download</a></td>
-    <td align="center" width="33%"><a href="games/hollowknight/README.md"><img src="docs/media/thumb_hollowknight.png" width="200" alt="Hollow Knight"><br><b>Hollow Knight</b></a><br><sub>From King's Pass to Hornet in Greenpath</sub><br><a href="https://github.com/Mason363/NumPlay/releases/latest/download/HollowKnight.nwa">Download</a></td>
+    <td align="center" width="20%"><a href="games/buckshot/README.md"><img src="games/buckshot/docs/calcade.png" width="140" alt="Chevrotine"><br><b>Chevrotine</b></a></td>
+    <td align="center" width="20%"><a href="games/blockblast/README.md"><img src="games/blockblast/docs/calcade.png" width="140" alt="Block Boom"><br><b>Block Boom</b></a></td>
+    <td align="center" width="20%"><a href="games/portal/README.md"><img src="games/portal/docs/calcade.png" width="140" alt="Warp Lab"><br><b>Warp Lab</b></a></td>
+    <td align="center" width="20%"><a href="games/tetris/README.md"><img src="games/tetris/docs/calcade.png" width="140" alt="Stackfall"><br><b>Stackfall</b></a></td>
+    <td align="center" width="20%"><a href="games/chess/README.md"><img src="games/chess/docs/calcade.png" width="140" alt="Chess"><br><b>Chess</b></a></td>
   </tr>
   <tr>
-    <td align="center"><a href="games/celeste/README.md"><img src="docs/media/thumb_celeste.png" width="200" alt="Celeste"><br><b>Celeste</b></a><br><sub>The whole climb, with every B-side and C-side</sub><br><a href="https://github.com/Mason363/NumPlay/releases/latest/download/Celeste.nwa">Download</a></td>
-    <td align="center"><a href="games/championisland/README.md"><img src="docs/media/thumb_championisland.png" width="200" alt="Champion Island"><br><b>Champion Island</b></a><br><sub>The whole island and its seven sports</sub><br><a href="https://github.com/Mason363/NumPlay/releases/latest/download/ChampionIsland.nwa">Download</a></td>
-    <td align="center"><a href="#roadmap"><b>More on the way</b></a><br><sub>Undertale's fights, The Binding of Isaac, Plants vs. Zombies, Doom and more: see the roadmap</sub></td>
+    <td align="center" width="20%"><a href="games/flappybird/README.md"><img src="games/flappybird/docs/calcade.png" width="140" alt="Flappix"><br><b>Flappix</b></a></td>
+    <td align="center" width="20%"><a href="games/pacman/README.md"><img src="games/pacman/docs/calcade.png" width="140" alt="Munchy Maze"><br><b>Munchy Maze</b></a></td>
+    <td align="center" width="20%"><a href="games/snake/README.md"><img src="games/snake/docs/calcade.png" width="140" alt="Snake"><br><b>Snake</b></a></td>
+    <td align="center" width="20%"><a href="games/connectfour/README.md"><img src="games/connectfour/docs/calcade.png" width="140" alt="Line Up 4"><br><b>Line Up 4</b></a></td>
+    <td align="center" width="20%"><a href="games/solitaire/README.md"><img src="games/solitaire/docs/calcade.png" width="140" alt="Solitaire"><br><b>Solitaire</b></a></td>
   </tr>
-</table>
-
-## How to install
-
-You need your calculator, its USB cable, and a computer with **Google Chrome** or **Microsoft Edge**. It takes about 2 minutes.
-
-1. **Download** [NumPlay.nwa](https://github.com/Mason363/NumPlay/releases/latest/download/NumPlay.nwa), or one of the big games above.
-2. **Plug** your calculator into the computer and turn it on.
-3. **Go to** [my.numworks.com/apps](https://my.numworks.com/apps) and log in. No account? Sign up there, it's free.
-4. Click **Connect**, then pick your calculator in the small window that opens.
-5. **Add** the file you downloaded, then click **Install**. Keep the calculator plugged in until it's done.
-6. **Play!** On your calculator, press the **Home** key (the little house), go to the end of the apps and open **NumPlay**.
-
-> [!TIP]
-> **Updating?** Install the new file the same way: your progress comes back by itself. Already have other apps from that website? Add them again in step 5 to keep them.
-
-<details>
-<summary><b>Which calculators work</b></summary>
-
-| Calculator | Software | What runs |
-| --- | --- | --- |
-| N0120 | Epsilon 23.2 or newer (the calculator's own software) | Everything |
-| N0110, N0115 | Epsilon 23.2 or newer | Everything. These models are about 2.5 times slower, so the big games show fewer frames per second, but they keep their speed. |
-| N0110, N0115 | Upsilon | NumPlay-Upsilon.nwa: 14 games (see Other versions) |
-| Any | Custom software built from Epsilon 25.2's source | Everything. These builds can give apps less memory (133 KB): on one that gives even less, a game that needs more says how much on its card. |
-
-To see your calculator's model and software, open **Settings**, then **About**. To update the software, go to [my.numworks.com](https://my.numworks.com) with the calculator plugged in.
-
-</details>
-
-<details>
-<summary><b>Other versions: hidden, disguised, French, Chinese, Upsilon</b></summary>
-
-| File | What it is |
-| --- | --- |
-| [NumPlay-Invisible.nwa](https://github.com/Mason363/NumPlay/releases/latest/download/NumPlay-Invisible.nwa) | The same app, hidden: a blank white icon with no name, so it looks like an empty spot on the home screen. |
-| [NumPlay-Matrices.nwa](https://github.com/Mason363/NumPlay/releases/latest/download/NumPlay-Matrices.nwa) | The same app, in disguise: it looks like a math app called **Matrices**. |
-| [NumPlay-French.nwa](https://github.com/Mason363/NumPlay/releases/latest/download/NumPlay-French.nwa) | NumPlay en français : tous les jeux, en français. |
-| [NumPlay-Chinese.nwa](https://github.com/Mason363/NumPlay/releases/latest/download/NumPlay-Chinese.nwa) | NumPlay 中文版：所有游戏，简体中文。 |
-| [NumPlay-Upsilon.nwa](https://github.com/Mason363/NumPlay/releases/latest/download/NumPlay-Upsilon.nwa) | For calculators running **Upsilon**: the 14 games that fit in the memory it gives apps. |
-
-<img src="docs/media/home_invisible.png" width="240" alt="The home screen with NumPlay-Invisible: the spot after Settings looks empty"> <img src="docs/media/home_matrices.png" width="240" alt="The home screen with NumPlay-Matrices among the calculator's own apps">
-
-Install any of them instead of NumPlay.nwa: your progress is the same in each. A few things stay in English in French and Chinese: words drawn into pictures, level names, key names, NumBlocks' commands and Portal Returns' stories. The big games come in English only.
-
-**On Upsilon,** the NumWorks website doesn't install apps (it shows 0 KB free). Install [Node.js](https://nodejs.org), plug in the calculator, and run `npx nwlink install-nwa NumPlay-Upsilon.nwa` in the folder you downloaded it to.
-
-</details>
-
-<details>
-<summary><b>Keeping your saves</b></summary>
-
-- Your progress is saved on the calculator as files. Turning it off keeps them.
-- **Installing apps erases these files**, all but the Python scripts. So NumPlay keeps a copy of every save in a Python script, `numplay_saves.py` (the big games have their own), and your progress comes back the first time you open the game. Don't delete these scripts.
-- **A restart erases every file**, scripts included: the reset button on the back, or a crash. If your calculator restarts by itself while you play, please [email me](mailto:masonchen204@gmail.com) which game and what you were doing.
-- The calculator holds 42 KB of files in all. A big NumBlocks world can fill it: delete worlds or scripts you don't need to make room.
-
-</details>
-
-<details>
-<summary><b>The app doesn't show up after installing</b></summary>
-
-- **The calculator restarts once after installing:** it shows the NumWorks logo, then asks for your language. That's normal. Your apps are at the end of the home screen.
-- **Each big game installs alone,** without NumPlay and without the other big games: if you pick more than fits, they don't install.
-- **Installing replaces the apps you installed before.** To keep one, add it again with the new one.
-- **Nothing happens when you plug it in?** Try another cable: some only charge.
-- Check your calculator's software is **Epsilon 23.2 or newer** (Settings, then About).
-
-</details>
-
-## On a real calculator
-
-<table>
   <tr>
-    <td><img src="docs/media/irl_numdash.gif" width="100%" alt="NumDash on a real NumWorks calculator"></td>
-    <td><img src="docs/media/irl_crossyroad.gif" width="100%" alt="Crossy Road on a real NumWorks calculator"></td>
-    <td><img src="docs/media/irl_balatro.gif" width="100%" alt="Balatro on a real NumWorks calculator"></td>
+    <td align="center" width="20%"><a href="games/g2048/README.md"><img src="games/g2048/docs/calcade.png" width="140" alt="2048"><br><b>2048</b></a></td>
+    <td align="center" width="20%"><a href="games/minesweeper/README.md"><img src="games/minesweeper/docs/calcade.png" width="140" alt="Minesweeper"><br><b>Minesweeper</b></a></td>
+    <td align="center" width="20%"><a href="games/breakout/README.md"><img src="games/breakout/docs/calcade.png" width="140" alt="Brick Breaker"><br><b>Brick Breaker</b></a></td>
+    <td align="center" width="20%"><a href="games/numvisuals/README.md"><img src="games/numvisuals/docs/calcade.png" width="140" alt="NumVisuals"><br><b>NumVisuals</b></a></td>
   </tr>
 </table>
 
-Filmed on my own calculator, no emulator.
-
-## Roadmap
-
-- [x] Celeste
-- [x] Hollow Knight
-- [x] Minecraft 1.8 (NumBlocks)
-- [x] The Final Earth 2
-- [x] The Powder Toy (NumPowder)
-- [x] Block Blast
-- [ ] Undertale (the fights)
-- [ ] The Binding of Isaac
-- [ ] Plants vs. Zombies
-- [ ] Doom
-- [ ] Five Nights at Freddy's
-- [ ] Pong and more two-player games
-- [ ] Cookie Clicker
-- [ ] Level Devil
-- [ ] Sonic the Hedgehog
-- [ ] Subway Surfers
-- [ ] The Nether and the End in NumBlocks
-- [ ] A customizer website: pick the games you want in your launcher, with Enlarged Extra Apps support to fit several big games, or big and small ones together
-- [ ] [Retro-Go](https://github.com/ducalex/retro-go) for Game Boy, NES and more: upload your own ROMs on the website and get a .nwa app that plays them
-
 ## Credits
 
-NumPlay is a fan project, made out of love for these games and for the NumWorks calculator. If you enjoy a game here, go play the original and support the people who made it. NumWorks also has a great community of people making games by hand: try [Numcraft](https://github.com/yannis300307/NumcraftRust), [Celeste Classic](https://github.com/BenchatonDev/Celeste-Numworks), [Tatone26's All the Apps](https://github.com/Tatone26/Numworks-games), the apps on [Nwagyu](https://nwagyu.org/guide/) and [yannis300307's list](https://gist.github.com/yannis300307/9123136f90877107ec0d49ba96b303e5).
-
-- **[Tatone26](https://github.com/Tatone26/Numworks-games)**'s **All the Apps** inspired NumPlay's list of classics. Flappy Bird, Pac-Man, Snake, Connect Four, Solitaire and 2048 are written in C for NumPlay and keep its options, with no code copied from it. Tetris is Tatone26's own, which they released into the public domain, adapted for NumPlay.
-- **[Gabriele Cirulli](https://github.com/gabrielecirulli/2048)** made 2048.
-- **Block Blast!** by [Hungry Studio](https://www.hungrystudio.com) inspired NumPlay's Block Blast, written in C for NumPlay with no code or art from it. Its blocks, scoring and colours follow measurements of the app by the players behind [blockblast-Self-Improvement-loop](https://github.com/Kucze3205/blockblast-Self-Improvement-loop).
-- Snake, Solitaire and Block Breaker look and play like **Google's games** in Search. They are drawn from scratch; nothing is taken from Google.
-- **[gd3ds](https://github.com/AleFunky/gd3ds)** by AleFunky and friends, whose research into Geometry Dash made NumDash possible. Clubstep, Deadlocked and Dash also rely on [gdsolver](https://github.com/gdsolver/gdsolver)'s measurements of Geometry Dash 2.2, level data from [gmdkit](https://github.com/UHDanke/gmdkit) by HDanke and checks against [GDRWeb](https://github.com/iliasHDZ/GDRWeb) by IliasHDZ.
-- **Balatro** by LocalThunk inspired NumPlay's Balatro, which uses art adapted from the game and the **m6x11** font by Daniel Linssen.
-- **Minecraft** by Mojang inspired NumBlocks, which follows Minecraft 1.8.8 exactly: it makes its worlds the way Minecraft 1.8.8 does and uses its blocks, items, recipes, textures, font and screens.
-- **Celeste** inspired NumPlay's Celeste, which uses the game's own pictures, maps, texts and fonts. Not affiliated with Maddy Makes Games.
-- **Hollow Knight** inspired NumPlay's Hollow Knight, which uses the game's own pictures, animations, maps, texts and fonts. Not affiliated with Team Cherry.
-- **[The Powder Toy](https://powdertoy.co.uk)** inspired NumPowder, which ports its materials' behaviour, its font and its icons from [its source code](https://github.com/The-Powder-Toy/The-Powder-Toy) (GNU GPL v3.0), by Stanislaw K Skowronek, Simon Robertshaw and its contributors. Not affiliated with them.
-- **[The Final Earth 2](https://store.steampowered.com/app/1180130/The_Final_Earth_2/)** by [Florian van Strien](https://florianvanstrien.nl) inspired NumPlay's The Final Earth 2, which uses the game's own pictures, fonts and texts, with additional sprites by LukXD99. Not affiliated with him.
-- **Buckshot Roulette** by Mike Klubnika inspired NumPlay's Buckshot Roulette, whose scenes are rendered from the game through the Open Buckshot Roulette project (1503Dev). Fonts: Fake Receipt by Ray Larabie and Dot Matrix by Dionaea.
-- The **Doodle Champion Island Games** (2021) inspired Champion Island, which uses the doodle's own pictures, maps and texts from the [Google-Doodle-Champion-Island](https://github.com/potherca-blog/Google-Doodle-Champion-Island) archive by potherca-blog, and the **PixelMplus** font by Itou Hiroki ([license](LICENSES/PixelMplus.txt)).
-- **[Portal Returns](https://www.cemetech.net/downloads/files/1313/x1313)** by MateoConLechuga for the TI-84 Plus CE, with sprites by CKH4 and Portal Prelude chambers ported by Unicorn from BuilderBoy's original.
-- The **Nunito** and **Rammetto One** fonts, under the SIL Open Font License ([LICENSES](LICENSES)).
-- The **Fusion Pixel** font by TakWolf (with glyphs from **Ark Pixel**), under the SIL Open Font License ([license](LICENSES/OFL-1.1-Fusion-Pixel.txt)), for the Chinese letters.
+- **[Tatone26](https://github.com/Tatone26/Numworks-games)**'s **All the Apps** (public domain) inspired NumPlay's list of classics. Flappix, Munchy Maze, Snake, Line Up 4, Solitaire and 2048 are written in C for NumPlay and keep its options, with no code copied from it. Stackfall is Tatone26's own Tetris-style game, released into the public domain, adapted for NumPlay; its `numworks_utils` library holds storage code from [numworks-extapp-storage](https://framagit.org/Yaya.Cout/numworks-extapp-storage) (BSD 3-Clause, [notice](games/tetris/numworks_utils/LICENSE-storage.txt)).
+- **2048** is [Gabriele Cirulli](https://github.com/gabrielecirulli/2048)'s game (MIT License, [notice](games/g2048/LICENSE-2048.txt)).
+- NumDash, NumBlocks, NumDrive, Jokeria, Chevrotine and Warp Lab started as **Mason Chen**'s games; in October 2026 Calcade remade their levels, art, rules, texts and much of their code.
+- Block Boom's blocks and scoring follow measurements by the players behind [blockblast-Self-Improvement-loop](https://github.com/Kucze3205/blockblast-Self-Improvement-loop).
+- Minesweeper: the game of Robert Donner and Curt Johnson.
+- The **Nunito** font (SIL Open Font License, [LICENSES](LICENSES)); the **Fusion Pixel** font by TakWolf, with glyphs from **Ark Pixel** (SIL Open Font License), for Chinese letters; the **Poppins** font of NumDrive (SIL Open Font License, [notice](games/numdrive/LICENSES/OFL-1.1-Poppins.txt)); the **Archivo Black** and **Caveat** fonts of the Calcade intro (SIL Open Font License, [LICENSES/OFL-1.1-Archivo-Caveat.txt](LICENSES/OFL-1.1-Archivo-Caveat.txt)).
 - **[Upsilon](https://github.com/UpsilonNumworks/Upsilon)**, the custom software NumPlay-Upsilon.nwa runs on.
 - **reversal_lava63**, a beta tester who plays NumPlay's apps on a real calculator and reports what's wrong.
 - **[Gabriel](https://github.com/tomcalif9-stack)**, who made the home screen's moving backgrounds, translated NumPlay into French first, and tests it on Upsilon and an N0115.
 - Everyone who reported a bug: **NEE** ([reversallava63](https://github.com/reversallava63)), **Gabriel**, **[briac134](https://github.com/briac134)**, **[Raphanobie](https://github.com/Raphanobie)**, **[zbigzo](https://github.com/zbigzo)**, **Yacine**, **PelicanMan75**, **[Spykube](https://github.com/Spykube)** and **[axio-m](https://github.com/axio-m)**. Thank you!
 
-## License
-
-NumPlay is licensed under the [GNU General Public License v3.0](LICENSE). Copyright (c) 2026 Mason Chen. Code and fonts from others keep their own licenses: the `UNLICENSE` files in the games' folders and the [LICENSES](LICENSES) folder. The names, artwork and music of the games NumPlay is inspired by belong to their makers and are not covered by it.
 
-<sub>Unofficial fan games, not affiliated with NumWorks, RobTop Games (Geometry Dash), Hipster Whale (Crossy Road), the makers of Drive Mad, LocalThunk or Playstack (Balatro), Mike Klubnika or Critical Reflex (Buckshot Roulette), Hungry Studio (Block Blast!), Mojang or Microsoft (Minecraft), Maddy Makes Games (Celeste), Team Cherry (Hollow Knight), Florian van Strien (The Final Earth 2), The Powder Toy's developers (The Powder Toy), MateoConLechuga (Portal Returns), Valve (Portal), .GEARS (Flappy Bird), Bandai Namco (Pac-Man), Hasbro (Connect Four), Google (Snake, Solitaire, Block Breaker, Doodle Champion Island Games), STUDIO4°C or Microsoft (Minesweeper). Tetris is a trademark of The Tetris Company, Minecraft of Mojang Synergies AB, Pac-Man of Bandai Namco and Connect Four of Hasbro.</sub>
+## License
 
-## Gallery
+NumPlay is licensed under the [GNU General Public License v3.0](LICENSE). Copyright (c) 2026 Mason Chen; modifications (c) 2026 Calcade. Code and fonts from others keep their own licenses: the `UNLICENSE` and `LICENSE-*` files in the games' folders and the [LICENSES](LICENSES) folder.
 
-<table>
-  <tr>
-    <td align="center" width="33%"><img src="docs/media/gallery/numdash.gif" width="100%" alt="NumDash on a real NumWorks calculator"><br><a href="games/numdash/README.md"><b>NumDash</b></a></td>
-    <td align="center" width="33%"><img src="docs/media/gallery/crossyroad.gif" width="100%" alt="Crossy Road on a real NumWorks calculator"><br><a href="games/crossyroad/README.md"><b>Crossy Road</b></a></td>
-    <td align="center" width="33%"><img src="docs/media/gallery/numblocks.gif" width="100%" alt="NumBlocks: lighting TNT and blowing a crater in the ground"><br><a href="games/numblocks/README.md"><b>NumBlocks</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/media/gallery/numblocks_real.gif" width="100%" alt="NumBlocks on a real NumWorks calculator, walking past trees and a sheep"><br><a href="games/numblocks/README.md"><b>NumBlocks</b></a></td>
-    <td align="center"><img src="docs/media/gallery/numdrive.gif" width="100%" alt="NumDrive on a real NumWorks calculator: a monster truck jumps off a ramp"><br><a href="games/numdrive/README.md"><b>NumDrive</b></a></td>
-    <td align="center"><img src="docs/media/gallery/balatro.gif" width="100%" alt="Balatro on a real NumWorks calculator: a hand of cards is scored"><br><a href="games/balatro/README.md"><b>Balatro</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/media/gallery/buckshot.gif" width="100%" alt="Buckshot Roulette on a real NumWorks calculator: picking up the shotgun"><br><a href="games/buckshot/README.md"><b>Buckshot Roulette</b></a></td>
-    <td align="center"><img src="docs/media/gallery/blockblast.gif" width="100%" alt="Block Blast: two rows clear for Good!, then a combo of 3"><br><a href="games/blockblast/README.md"><b>Block Blast</b></a></td>
-    <td align="center"><img src="docs/media/gallery/portal.gif" width="100%" alt="Portal Returns: jumping through portals in a test chamber"><br><a href="games/portal/README.md"><b>Portal Returns</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/media/gallery/tetris.gif" width="100%" alt="Tetris on a real NumWorks calculator: pieces drop and a line clears"><br><a href="games/tetris/README.md"><b>Tetris</b></a></td>
-    <td align="center"><img src="docs/media/gallery/chess.gif" width="100%" alt="Chess: the opening moves of a game against a bot"><br><a href="games/chess/README.md"><b>Chess</b></a></td>
-    <td align="center"><img src="docs/media/gallery/flappybird.gif" width="100%" alt="Flappy Bird: flapping through the pipes"><br><a href="games/flappybird/README.md"><b>Flappy Bird</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/media/gallery/pacman.gif" width="100%" alt="Pac-Man: eating dots in the maze"><br><a href="games/pacman/README.md"><b>Pac-Man</b></a></td>
-    <td align="center"><img src="docs/media/gallery/snake.gif" width="100%" alt="Snake: the snake eats apples and grows"><br><a href="games/snake/README.md"><b>Snake</b></a></td>
-    <td align="center"><img src="docs/media/gallery/connectfour.gif" width="100%" alt="Connect Four: winning a round against the computer"><br><a href="games/connectfour/README.md"><b>Connect Four</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/media/gallery/solitaire.gif" width="100%" alt="Solitaire: moving cards between the columns"><br><a href="games/solitaire/README.md"><b>Solitaire</b></a></td>
-    <td align="center"><img src="docs/media/gallery/g2048.gif" width="100%" alt="2048: sliding and merging tiles up to 128"><br><a href="games/g2048/README.md"><b>2048</b></a></td>
-    <td align="center"><img src="docs/media/gallery/minesweeper.gif" width="100%" alt="Minesweeper: opening the field, flagging the mines and winning"><br><a href="games/minesweeper/README.md"><b>Minesweeper</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/media/gallery/breakout.gif" width="100%" alt="Block Breaker: the ball breaks bricks"><br><a href="games/breakout/README.md"><b>Block Breaker</b></a></td>
-    <td align="center"><img src="docs/media/gallery/numvisuals.gif" width="100%" alt="NumVisuals: moving backgrounds, from northern lights to a lava lamp"><br><a href="games/numvisuals/README.md"><b>NumVisuals</b></a></td>
-    <td align="center"><img src="docs/media/gallery/numpowder.gif" width="100%" alt="NumPowder: water floods the sand, then lava pours in and boils it"><br><a href="games/numpowder/README.md"><b>NumPowder</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/media/gallery/finalearth2.gif" width="100%" alt="The Final Earth 2: building a house in a city on a floating island"><br><a href="games/finalearth2/README.md"><b>The Final Earth 2</b></a></td>
-    <td align="center"><img src="docs/media/gallery/hollowknight.gif" width="100%" alt="Hollow Knight: fighting the False Knight and Hornet"><br><a href="games/hollowknight/README.md"><b>Hollow Knight</b></a></td>
-    <td align="center"><img src="docs/media/gallery/celeste.gif" width="100%" alt="Celeste on a real NumWorks calculator: Madeline climbs the first level"><br><a href="games/celeste/README.md"><b>Celeste</b></a></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/media/gallery/championisland.gif" width="100%" alt="Champion Island: climbing, artistic swimming and the marathon"><br><a href="games/championisland/README.md"><b>Champion Island</b></a></td>
-  </tr>
-</table>
+<sub>Unofficial games, not affiliated with NumWorks. The game ideas are common to many games; the names, characters, pictures and levels here are NumPlay's own. Tetris is a trademark of The Tetris Company, Minecraft of Mojang, Geometry Dash of RobTop Games, Balatro of LocalThunk, Buckshot Roulette of Mike Klubnika, Portal of Valve, Drive Mad of Fancade, Pac-Man of Bandai Namco, Flappy Bird of its owner, Crossy Road of Hipster Whale, Block Blast! of Hungry Studio, Connect Four and Puissance 4 of Hasbro, Google of Google LLC, Windows of Microsoft: these games are not theirs and are not endorsed by them.</sub>
diff --git a/games/balatro/.gitignore b/games/balatro/.gitignore
index a7261a2..ea1472e 100644
--- a/games/balatro/.gitignore
+++ b/games/balatro/.gitignore
@@ -1,4 +1 @@
 output/
-# Balatro's own 1x sheets and the m6x11 font: inputs of tools/mkassets.py, kept
-# out of the repository. src/assets.c holds the art the app uses.
-assets/
diff --git a/games/balatro/Makefile b/games/balatro/Makefile
index 3201f4f..a28cd82 100644
--- a/games/balatro/Makefile
+++ b/games/balatro/Makefile
@@ -1,8 +1,9 @@
-# Balatro for the NumWorks calculator.
+# Jokeria for the NumWorks calculator (Calcade's version of NumPlay's poker game, in the folder
+# games/balatro and with its save balatro.sav, as before).
 #   make          build output/balatro.nwa
 #   make check    link it like the calculator does and print the installed size
 #   make sim      simulator build (output/balatro.nwb) for tools/record.py
-#   make assets   regenerate src/assets.c from assets/ (Python 3, numpy, Pillow)
+#   make assets   draw the art and the font again (../../tools/conformite/jokeria_art.py: Python 3, numpy, Pillow)
 #   make run      install on a connected calculator
 Q ?= @
 CC = arm-none-eabi-gcc
@@ -11,11 +12,6 @@ PY ?= python3
 BUILD_DIR = output
 SRC = $(wildcard src/*.c)
 HDR = $(wildcard src/*.h)
-# NumPlay's language builds (NP_TEXT_EXTRA on in ../common/np_text.h): the names and descriptions,
-# translated in src/texts.h, become output/texts.c (tools/mktexts.py) instead of data.c's
-ifeq ($(shell grep -q 'define NP_TEXT_EXTRA 1' ../common/np_text.h && echo 1),1)
-SRC += $(BUILD_DIR)/texts.c
-endif
 
 CFLAGS = -std=c99 $(shell $(NWLINK) eadk-cflags-device)
 CFLAGS += -Os -Wall -fno-math-errno -fno-tree-loop-distribute-patterns -fno-reorder-functions -flto-partition=one
@@ -46,11 +42,9 @@ $(BUILD_DIR)/icon.o: src/icon.png | $(BUILD_DIR)
 $(BUILD_DIR):
 	$(Q) mkdir -p $@
 
-$(BUILD_DIR)/texts.c: src/texts.h tools/mktexts.py tools/mkdata.py | $(BUILD_DIR)
-	$(Q) $(PY) tools/mktexts.py src/texts.h $@
 
 assets:
-	$(Q) $(PY) tools/mkassets.py
+	$(Q) $(PY) ../../tools/conformite/jokeria_art.py --check
 
 sim: $(BUILD_DIR)/balatro.nwb
 $(BUILD_DIR)/balatro.nwb: $(SRC) $(HDR) | $(BUILD_DIR)
diff --git a/games/balatro/README.md b/games/balatro/README.md
index 20cb23c..dd57476 100644
--- a/games/balatro/README.md
+++ b/games/balatro/README.md
@@ -1,89 +1,64 @@
-> **Balatro is part of [NumPlay](../../README.md)**, every NumWorks game in one app. Get it with all the others, or on its own as `Balatro.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest).
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Jokeria**. Il a été entièrement refait pour ne plus rien reprendre de Balatro (LocalThunk, Playstack) : nouvelles règles écrites pour lui, nouvelle liste de Jokers, nouvelles images, nouvelle police, nouveaux textes. Voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec ces éditeurs.
 
-<p align="center">
-  <img src="src/icon.png" width="84" alt="Balatro icon">
-</p>
+<img src="docs/calcade.png" width="320" alt="Jokeria">
 
-<h1 align="center">Balatro</h1>
+# Jokeria
 
-<p align="center">
-  <b>The poker roguelike, on the NumWorks N0120 calculator.</b><br>
-  Play poker hands, build a deck of Jokers and beat the Boss Blind of Ante 8.
-</p>
-
-<p align="center">
-  <a href="https://github.com/Mason363/NumPlay/releases/latest/download/Balatro.nwa"><b>Download Balatro.nwa</b></a>
-  &nbsp;·&nbsp; <a href="#controls">Controls</a>
-  &nbsp;·&nbsp; <a href="#credits">Credits</a>
-</p>
-
-<p align="center">
-  <img src="docs/play.gif" width="640" alt="Playing a hand: cards score, Jokers trigger, the score adds up">
-</p>
-
-## Highlights
-
-* **The whole core game:** Small, Big and Boss Blinds, the shop, booster packs, skip tags and Endless mode after Ante 8.
-* **All 150 Jokers**, including the Legendary ones from The Soul, plus every Tarot, Planet and Spectral card, all 32 Vouchers and 24 Tags.
-* **All 28 Boss Blinds**, with their own colours and effects, and the five final bosses.
-* **Scoring like the original:** cards score left to right, then held cards, then Jokers, with retriggers, editions and seals, and every chip and mult popping up.
-* **The look of the game:** the original card and Joker art, the moving paint background, the same panels, colours and font, the fire behind a hand that beats the Blind, and the foil, holographic, polychrome and negative sheens.
-* **Saves everything:** press Home at any moment and pick your run back up exactly where you left it.
-* Red Deck, White Stake.
+**A poker game with Jokers, on the NumWorks calculator.** Play poker hands to beat the target score of each table,
+collect Jokers that change how hands score, and get through 8 salons.
 
 <table>
   <tr>
-    <td align="center"><img src="docs/shot.png" width="390" alt="Title screen"><br><sub>Title screen</sub></td>
-    <td align="center"><img src="docs/round.png" width="390" alt="A round"><br><sub>Pick up to 5 cards and play them</sub></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/blinds.png" width="390" alt="Choosing a blind"><br><sub>Play each Blind, or skip it for a Tag</sub></td>
-    <td align="center"><img src="docs/cashout.png" width="390" alt="Cash out"><br><sub>Cash out: reward, hands left, Jokers, interest</sub></td>
+    <td align="center"><img src="docs/title.png" width="320" alt="Title screen"><br><sub>Title screen</sub></td>
+    <td align="center"><img src="docs/round.png" width="320" alt="A table"><br><sub>Pick up to 5 cards</sub></td>
   </tr>
   <tr>
-    <td align="center"><img src="docs/shop.png" width="390" alt="Shop"><br><sub>The shop: Jokers, cards, Vouchers and packs</sub></td>
-    <td align="center"><img src="docs/pack.png" width="390" alt="Booster pack"><br><sub>A Mega Arcana Pack: use Tarots on your hand</sub></td>
+    <td align="center"><img src="docs/shop.png" width="320" alt="Shop"><br><sub>The shop: Jokers and Lessons</sub></td>
+    <td align="center"><img src="docs/gold.png" width="320" alt="Gold table"><br><sub>Each Gold table has a twist</sub></td>
   </tr>
 </table>
 
+## How it plays
+
+* **8 salons of 3 tables**: Bronze, Silver and Gold. Each table has a target score, 5 hands and 3 discards, and you
+  hold 8 cards.
+* **A hand** is up to 5 cards. Its poker hand (High Card to Straight Flush) gives **Points** and **Multi**; each
+  scoring card adds its rank to the Points (2 to 10, then J 11, Q 12, K 13, A 14). Score = Points x Multi.
+* **26 Jokers**, up to 5 at a time, add their effects left to right: the Street Busker, the Red Lantern, the
+  Night Owl, the Ringmaster, the Fire-Eater, the Phoenix, the Prism, the Gambler and more.
+* **The shop** after each won table: Jokers, and Lessons that level up one poker hand. Reroll it, sell Jokers
+  for half their price.
+* **Coins**: each won table pays 3, 4 or 6, plus 1 per hand left and 1 of interest per 10 coins held (up to 4).
+* **The Gold tables' twists**: the Clock (3 hands), the Drought (1 discard), the Weight (6 cards), the Taxman
+  (discards cost 2 coins), the Wind (a new hand after each hand) and the Tower (a higher target).
+* After the 8th salon, keep going as long as you can. Home saves the run at any moment.
+
 ## Controls
 
 | Key | Action |
 |---|---|
 | Arrows | Move between cards, Jokers and buttons |
-| OK | Select a card, or pick a Joker or item (then Sell, Use, Buy, Open...) |
-| EXE | Play Hand |
-| ⌫ | Discard |
+| OK | Pick a card; buy; sell a Joker (twice) |
+| EXE | Play the hand |
+| ⌫ | Discard the picked cards |
 | shift | Sort the hand by rank or by suit |
-| alpha + left / right | Move a Joker or a card |
-| toolbox | Run Info (poker hands, blinds, vouchers) |
-| var | View your deck |
-| Hold OK or EXE | Speed up scoring |
-| Back | Back, or the Options menu |
+| shift + left / right | Move a Joker |
+| toolbox | The poker hands and their levels |
+| Hold OK or EXE | Quicker scoring |
+| Back | Menu |
 | Home | Save and quit |
 
-The game speed can be changed in Options. "How to Play" in Options lists the keys too.
-
-## Install
-
-1. Download **[Balatro.nwa](https://github.com/Mason363/NumPlay/releases/latest/download/Balatro.nwa)** from the [latest NumPlay release](https://github.com/Mason363/NumPlay/releases/latest).
-2. Plug the calculator into your computer and open **[my.numworks.com/apps](https://my.numworks.com/apps)** in Chrome or Edge.
-3. Upload `Balatro.nwa`.
-
 ## Credits
 
-Inspired by **Balatro** by LocalThunk. Not affiliated with LocalThunk or Playstack.
-
-* Card, Joker and interface art adapted from Balatro by LocalThunk.
-* Font: m6x11 by Daniel Linssen.
-
-Made by Mason Chen as part of NumPlay. If you enjoy it, please support the original game.
+Jokeria was made for Calcade (2026) from NumPlay's poker game by Mason Chen: the renderer, the sprite coder and the
+calculator code are NumPlay's (GNU GPL v3); the rules, the Jokers, the art, the font and the texts were written
+and drawn for Jokeria. Not affiliated with LocalThunk or Playstack.
 
 ## Build
 
 ```sh
 make          # output/balatro.nwa
 make check    # link it like the calculator does and print the installed size
-make sim      # a build for the NumWorks simulator
-make assets   # rebuild the art from assets/ (Python 3, numpy, Pillow)
+make assets   # draw the art and the font again (../../tools/conformite/jokeria_art.py)
+make EXTRA=-DTEST_PHASE=1   # tests: 1 the shop, 2 a table with 5 Jokers, 3 a Gold table
 ```
diff --git a/games/balatro/docs/calcade.png b/games/balatro/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..53b3ea72d248f001ecef2eca5cff5f9de2076454
GIT binary patch
literal 10353
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
NQ2L-QS0ig4`ahM->iqx!

literal 0
HcmV?d00001

diff --git a/games/balatro/docs/gold.png b/games/balatro/docs/gold.png
new file mode 100644
index 0000000000000000000000000000000000000000..1317b3ce76d3ff40a908b12c7f49d77450f27fec
GIT binary patch
literal 4856
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

literal 0
HcmV?d00001

diff --git a/games/balatro/docs/round.png b/games/balatro/docs/round.png
index 32f15028ed00d77cb31fa173d963ea0dc89da815..a0cf6c8ec26fd01004c5a66619df9842de5814fa 100644
GIT binary patch
literal 10415
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
X!p60r&DNJGKY*gFnoNzfS;+qYtUaHe

literal 17886
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
T3)QV)00000NkvXXu0mjfbbFzn

diff --git a/games/balatro/docs/shop.png b/games/balatro/docs/shop.png
index a58035444d93a7bfaa65edd100e8889507d6b983..560512bf26dd827e5f5e8d4e7fd210caf07651e2 100644
GIT binary patch
literal 8366
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

literal 11970
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
JrTzgr{C|d@)z|<4

diff --git a/games/balatro/docs/title.png b/games/balatro/docs/title.png
new file mode 100644
index 0000000000000000000000000000000000000000..4441cceec9a77d12f08259b359f20313f60c3520
GIT binary patch
literal 8536
zcmZ8nXIK+!(+*9fgGiB%AVrkWQK~3{(m|z22}J}X0t(U-iimWSB1mr$5Rl$WXcDCN
z-aDZugg`>zi|3s8&-Z7q-R!kHPv)7Kd+vKS+(1v0j+%oS007WEeWGpz0FXQ&o*!N%
zB_1#IZz}-+{Jc-q)t-B&?WKdlxDe@xfNN+2GV~Cc)NUXtM_KUea30USK-fLX#!j~z
z%YhT8Jb9<B#qpn?J?wr;wPp)iDz+Z@IuH{1-tDN%t;WNRUo31Gr}he4Cs_1Ru#rJd
zaRbb*MqX*%cHGfA)}b`_sQ+YaEOY;7#{Txt?~9)wBe#EDcz*CAAkAM84on|#SOY{!
zM48sF&ENKTpqn7@Q?N{H5mtknDb7(r?qqA?g5I}02ym-1y>m&GI@+0(kou0WDzw9Q
zbwvn4PAPQjgMtxtu?M<lu>}U5F7|x{8Dq1Kaj-kMzMH~uee8%OpOI%fmrNiG!A?<T
zv!g`1$A)ous(P@{_!cd<c03%!)M*z-#!mco(`?ZmPvK!rev}dd(7->2jLGL~KPozo
zN0>bInirW-KVLzeB8OjWj0K}uy8>p?0Ztfo16~XTp+(o%wmSU1lgH|3Ev-;$63)%m
zni6!AYx*`rgYkAR>^3s@V(b_#e(Ay3BVEoA#mAFNXI%vv(}cKFmxCTqYA}`>QcBDK
zk-07RA5R0bh^w9KX8Rh3nt5*KR~_#73sShlZZu+P{tU#xcWcY25m~7PF48AHU!uaj
z_3Jqu5Qw3)OY+=$u=xwQ8PR(yelx;Hw~3iX?KOpD;9FO^@@7ou#RO}9k;7P~I|Q#-
zL{@YhUMrXL*DX;LWd|Pzf4vwiP@Tnnn*G;$6zN}&7%p<L?Xm&1+A$f)y^m2sGH8-x
zAR@BfLeNbn$_0NMcmGT@_hNTzN2_9AG$#*%zwYd~u|w*8hj5fzf>SvKV@=JHUMdTO
z;tGIUvkNncCjK_O>}pCI_p%5ZKLX00GRVdINeyi9Vq|f@rihju+IjaqF5NVh3JteX
zIwgYhR`1Omgy0OfDyS~^C@`xS?h25Ba$n%9juno2?BEB0qiQi3m@S?Am7M6)$>^2a
zQQ|B-QBT-qk}`{;^cP`}qTv9xUv$uIqdf*Mg$Mj|{0}j3A1rD(Pa)8<TNNoRi6n_m
z8eGd5_CC{h;fO*c{n-j9JQh>`L0}m6;YiQx)rY@)^7>1CyDeky$%Ghwl4I(`%Az0x
zQRnq~EPG|A3*&ITZTIDcq3YAcU;cWV)jap8l|>KIITZJ?0|^Xr+xx(xkg0T6@~1&g
zfLua~fmI-`wh_Qco{n){D9&_w97)dXdH1p)Gw&dWKpOK<|Eeo|d=uB!vn9;$vA42!
zA{<@9Fd<S+2m}PPzbk&XGIz@Lo6jvN)R^IJf_CS5HU+zJW(J*#v?(Bo&3gH__}G|}
z$Srf;rlE^G5&-9=Uo)3r@3of{0Ig0iwqv*|T+g^{PcP0r{l_)00U!Wi5KVZa{LBvi
zl3{YH)HpMsOy8g5>Bl{{57SbR1%@AMVb)DjO)S6+aFt(4awn}NAb~8>w1*Mh|2@Pd
z?*?;+xSC9PJ|yCa*{PjXO#V||bi#-!Ksc}&#0`i3YCN2L?$AVv87;vK&KI}9ebFB$
z+Ad{mjl?g;McU62&i&^{yzPC&gtkAN{kaVbRNVAZz%i?sL_wC0o7~{k*lg{_&CG0o
z8y>V0vAYg;B{2xR`|zq@K*v$oX#&c~eZ6UP_O?LbldHsJVkQt`sQ?dlElWFOqW-j7
zk7Z$$0@sbJQa2|x7G0`FE~=$%Z#<$Lh*6q*s&#*Yn|QY^Kcg(SlR{#qH1WbVeuv~D
zbSE9Eo1)6NiPoNmcfe94hLCRC_7IBl?e+6A$QoA9YSNcC*6sY9V@rP)O2U1Q8J8`i
zSH$@}jJNzt(hSlxCd_oxA+B2I+s$u|WTvMp+Bdt#XUkY6ix+xeHYKd4En~nuo2p+_
z@knfp&}|3+LS~f0OZx`E_)P&>9ra-aV_#*yn@CcOy=miAETkAUkg<5tT9DqI81RAa
zmijZ>Gq#bP3^5JLfzQPe7o8+&fp4KgX1%XOZNn7;_eyowXB(dwLRgD49|3sJH7%3j
zr?q?PpRz}(k9!P;!R75Y^o;$!=4~&YaSI=yc+oEzJeK^sXM+$_S7hJDn?Aj6xYe4G
zOLXQU?Xf#&=gadSTLpH_7UG09c#$96j{0bu@_GGZbn}oC%G(EepSp@zx&|T(@4J;M
zdFs1lOa|#fc$7UO!bqY{Qll@bNKN|!Tu7Am(bJAUS`*QJ>g6XiTdh8lB>;MD?#Q8v
ze*K2(p`iS3Q-D|Dd^Kp&r8&hDWAW89U%pAI5RXc9X>lo3+8lI^X~z^Ecv&ljo*jdo
zl#b4ZMUxLc6}N6KvQ~j^cq~<Q5BCm^jXyt<O>P=1?&7o*lPc!-TemSDZLaP01okD}
z{1!zzg;mU?Da^P$pAm`IZyp#g?aCdpn{=|%%=UrQSe}#)ds1j5ebvD*qYD3^zmzMM
z8!c#spA?aEdrMU`KkG?XEJrntL@KZ8+_)k!<ElW&U)UmT&4imoUvNtS0NzMpTUe29
zsk!#EIs5eGmlnRCR7&|^^25AudX(LDd9LSCTVL+U|JJ@6ZLCJAr#%);{xMSdoSEjz
zwx$R#ZP@hw8og4zio)S_QIZ+gH-v&>1Z$6D*c2{QQ@7_{`kj=ac%%b&tGg5Y2eC$~
z86H%33kM31Yf@(1M6lkrJNTs6M1SWwL-@9E)nex$8=Hl)7*L4He9fiGK$Y{=$0?4%
z6pQ0CL&tvB57%Ab?daAkCyEmp>pgHo#iU4JZfl#XfUX8``TP59k1n<eNi!H~SmznH
zIcg}@Q@vW#XRmwC`mDusm(b(3KB6Ab_hl6WyEeF!dY$kzMqeEFZ5i2lw(j;5O9Qaf
z`Ug+%{DU4uJXOO}?EVF_WTMxA$id2%)W0EcbwyT#1bk|(uD(#(=T+jXL71NKnjq#A
zyIPab{lH<UVL%4PvgTi4eEK)J{~{$y{1T;Y_s{!R{zIp<?f>A)@gD#;Tugho%Qi$r
zbmuW*3`XJ#T=fk9GZ^tdM1Sxv#B)ggwZn_)7yZxh>pOu(odZxj*(_3c`BpJ$&A2)L
zIC^A)?!*BGuOQT9Lut*XwG(`79_AA-<?!*CM1&gUjH^=k3C*c}D3#evL-}HpkUsv?
z+Zr!pkl8fU&jFK|hWeN+{hpXnU`$et%T+m;M~UM=&&g~sNsmicBjm}W1*$Wub=KT-
zbj5jSNOZ+{>aOT)gqy!N_d1m7Ouw@ly%S6zRXAMhl;QZUDOnkDClV_T6{>9O?y^_i
zWTV>ANL{Uk&E*uc5{-8aMwumPE>Nsnbu(`*f0v*o+8x9B7gmq3X_Xl;b;>)_p@Flm
zdWX1&<5_d1UqXu`f^t*ZEf&eKyOY1pQxR+mZZ=ny|0v-Gzj_;!fNfKQ;}N?_*?$Bi
z699Yi@{k3agwT%H`|_pb4+mc(wUjbL*~Z$0mt=DRqt!Wf?N1jX9b?`z_YiCmpIy%o
zyA*X^(D`zZbtaoE&61%|pPa-9*J9Ax+at;X3#|p8Nj<mc59p$A{XR@iw6FK^_aDw5
zu{Nq9(Sb1tArMJlT0%~CzN)xOM=g+I(kno%DsIrV;nG=GtIE4s-C#Q}v0MMfl=F%C
zE%Jj;8jP{!|HMkB1B7yq?a)b({D@=p@3s?sCcH-f4X-YdKsw&2u(Hc6PU6FjMF+)1
z?@9!F>!PB$9O3&&ld;Sky0(4hY6HXm-NLt>`K$4tT6#}tyoJ9Zp5w#@@0P;H`X2eM
z&X=U){TkRc=J@%Eal}1ddTf$m-tuARvqWIayr|X>9qY62FfkM89YmQtBA<_NyO7j0
zjbRoAgv+pUPnk@B-n0W|GUJp;>n;Q>0}AWi1Aul;g3f;fdr||=AXu+bwV!^?IJ+pd
z0+P~9psui-`4xwg0EUDNl^3BCo1KH&+<50z;D6REFA@*Hnv??}DvWiwnf2<(qH(@%
ztt!sYRIggs7AU79h^^yUo_=;FTIIEnqUzsFnS7YpIzB003U7K1`|?EgYVrn#cV1jO
z7NVb;hCSNYsVy;9$J;M`Sh^$9HuL)h;GXFPt_?ML7XHVqvF@eN5U*)Xv-GATFG*I*
z1vS1`%WrSxc0wS1dolSY<p*MyGlN8zXt6d#`W=`#A+39smn4|0J<3))-nXyRG#`1&
zDBstqf20_?Jq#5X3W8)iQV#IG@zEwD?NK?@nJOJlK6GU1IAjL|-G==^2#eu$HQ8&h
zSo3)aurgQ;z6c##NizQU@=(2ml^pXdS|himY$(j67oR>NX^?fjAp-3vRoBm-u}H#L
zaIGKDqFez=9yZ)cLxhm5AVMOe7y28$YW5LyS3h*<$?sN?cwW}g0WhPzs^=#RZK%qM
zXMvAhGd2x5J9zlzvK`u>v0d8IN;_^cR=$|(UP7K0uxPo+1AG8BgSiG&c%9ajm}_YT
zy@!Shm@1eaZ+P*DibUjqPG~BpDL1;b+1P+(@Zu^uL<mjP@<fL*duSEq(OrmE&<P)H
z$H219W~Ib@&6I($mD^^y`-iUtdziBH>Vloi2rOZ$s<8LgEE3@&*j3{j`BUH6p|Vc-
zULC^rbZIFgF-1XJ)2@Bp2=cx<ZR<p&)om;#;Q^S3q2OHVo&1d$J&+}N;7mUmYe#h|
z<#*9hz2<A`(#@5iWL?UPEAM2PcF5Rfzr<vbWs$}|1|Bp#b9}PdLmTB6OIzzKQP;Ct
zOkjN?<Nsp!p7Fxk?0fO6ynAdLZ9&qz00D|P8%pnQ>{kwHXI+IXLGGx!)Dbl)c&gM_
zorV?#R4u3x<;nx9JZK#ij4<^fRYNV^>#HIR2vRI?P-rgnHni<U*XHkb_$-wY^UkfN
z+s>p?A?0`Q1a>H$L`xbBH$3o4nP2+djLmuN&NFOYOwf=xu)o}BE-ApKYRXSJ<3HVK
zW^1rEr5*f<rJnrq8Wk6(IVGD-+~kaH(9<4KU+!{{NCB1QX`<ldZmstAuA)TbLa_@>
zoqbf^inZBnUhBTJDS27!Nv~h&fh5=w4p+7hh_8|E`t=dJkYhWghW|9p^XZ%UfVauF
z*zUWV?Xx5M)*P)WGr$$#`B@^t6Gy-MgU}9EJZx)Io_HN|@u7@r{!&?vI&N8j72m3)
z0kQ6&6u8+?MI#3k`!fj5WxC^5!O)jedx@u6cM$G3Wv{9A;;G`PX-7=Nc7OG98P}gA
zR*sTPixdgY?^#OlT_5XRLi=e+ytE4S-t*3$pqJ2-3@P7|hYbYB%S}~yHFg+^OM@I+
zV{<8M4;Bj3O-%!~dwR6QK}u;{$5!9hggkEJt6K{fTnXq2x|bbo%iZA7{;~4Q<&P#8
z`-$N>NxA6LL!5aj0hONmz2NaK6#T9hB(zzJPVdvGx2ORn@2QmCjf`aLxmB<!ZB$Za
zwq7OP9Cw{=LtVipxx|{J6ndw>_sNHcfWbt9RF9lVs?i(=i)%@Z-AggCelZ}Z#8@iw
zYcCtnlF*e{Jhs#g#rEk;$>OV(;XX+LXRvbV1xh)Gl%%jk!xZ0pzI!XM4fi63i@I98
zbtA^92t9=pxHC>&nE56Rzk)>e)bm+mgI=9X8<7tE$kTg&O8+xrVElK1fmchVDSkW3
zD|MCBTW{Cv2+g+EQC8<oa>ea1;N9Mo&c4o%w-1r=tS&}ore;nRZNf8(;Of~u{aKqS
zlE4Y!yZ0fh$A`|e+WMKL0WQlTj?#8mJKu}GvO}<vApb2A5<r80=vD2?$6&c6p$Hr7
z9<i%P99GODkIaNK@^&y^gFa}0i<!V_+e|9mn|j(ura!?dH!H5`#DCT|_k-`;3CQ)q
z>oXdW0{Cz3@!TQXC2Wdkd$0{`UhlYBY1LYdmlr-sbqmI5&-+Mp%X+H*Xd84@i`^gR
zjE=9iBqc5&8$&&hXYX!=hwyw7e&Z&zoT~GC<rATO*Tleu**`H(TEd5UM)WEG0*zJz
zcl_Z16ldnVr8eaCuG{)!VHF8#^cgxEC}5x^OCD7@Y??ao5LNX%SYiWFKiW2pj#c=2
ztuV9XH$?d@GDJq^lFxdxOj}=m$%Bk1x&^C<JH2M^F=eUptXD2RYDS+SC*u%|h2B6z
zx$kXU*;d+5H&!nt=N>|ua5V(=vA#h;lzLsa%p^_Z!J=H=^m|DV)u+kvh|qz6L3o9|
z-#O?sf(#U$l6AEEl|XtDB#_qNJo7~=NGho1;(Y%gq)K=|kj3;R)iwL(*Bgy3Ott{L
z3!H?ibFh3+g!91Vu4?7;fVeL5!;e@NX(tAxe%A}6J*h!(v{x-4kpAIp>WAhoAhD%e
zD&7jUsaee4NL>HkmQ~{(aL|*;TMEC9U1Ka9bJ8#V`t(zciqYJBTjkOI!~mfgde7MR
zM^kJVl^u!2EzgtL+H(cF#Hr{KPp4Xo3R75_b0yhSQ)BZ5>Lt$%5lQhsUq4aJQ^aCD
z_YYu9gxWPh!j~AxWkVPwO={t<V&gy>gv3nB1FZK}-h}du({=PW&Q5|Bulhv<8x@Vs
z#_na@6oj?PF}!#$bMvtc4j(2cMQu&FH+dTpRI9<nSEX5cxi!%*@8VE2m(MRYt&R)}
zl_`$%O{#gZQz+$hquGNoCWj4>#TELweqZ3hS2j50ANCc&QCRIqc{cqdy1><sJ+}NF
zn5IC<pFM%K-AWM-q1B?fFFGjE!FhiODjbp!>}zj$^5;%M5vC_+DO2>yX32;crWf|!
z;OFLQ{Cd{&T8@M6Z|8fHE|Yz$&T`y!Uyh87sF8`w8ff~m9Fe4+^|*GlbRpj>w>ibH
zs}g=Eih;yGX-vJ59F@ds8!KI)T7upxCA8}(xbfSyKRH>dt0h5j2pjhq(K|D(B5k&i
zMws}elZTjZQ$Qo*%ss0}MiGa3@pVMV4hv?r_}A2=&X$*>V!@a50f7hgOoC0+=H7Aw
z?s(Y8qo!NGlfFQ&aI;5nGHX;&Aex!W{nCao3kOWkc$j0{dRksTfEyRCd+<!xd6n3j
zFe#4XDFScvS8lgTs0eXM7JclHjzTFRlcU*GO>LH2Tc%3sCwD0@gb}YHD9K`X5TBJD
zN2?>eKy?u3GV`wjMpO%zKQb|$@OnHVN`YRO^y>fk2>o9^LhLb<{uTuy)wuRQGSbuw
zKOZsus~;xU{l_*OaR1Sdng7ub#{cLCW;MhS9#x%Wk_!AKp7CMH-LH$we`*0YezKwX
z&Ncphe~bSlum@^myx1*yKkp&*1XPM+X^8q=iTPc*)6ZrC$H-4Q0TF|TH^sBOg(n10
z%oVGLPHpX$^LSm;?)y(o&$<q4Mi3x=I|`8t&4VX3Ja23Le(*jJ`Q{5-P^xb@@00=%
z4MJgOKhr|56{HtXoHhNDb$0~rs_dg=zk*{oNlg{0dfQ~si5bmh0h>(o5O9jh#m8*3
zD~BWQ+R?xQ5N1PaFLnm6Xb0Lc_w&KbsFskmYB<|r-~BB8%+hnl+`AL~0Z?}o%lXi}
zp}~MgkNo#5XVP|r4Yo`=jfY{WNdMtzhrIb)?vv60@O8%{k~{Rau$YCJLJHnoHUJV-
zFsVmzp0*KL1SrE!XT%QE02*VlCn~cabGgI$SXS(gNgue~<YOT<I?kYJin0PYiYE+a
zKGFMj+PvSVk<AG@mh!!Uft9z2J1e;=_w1CcJPWk9+UhXT_dYLlvEP`~(^D1r{%$*O
zo{}XYioz{vW*T_8=Ly0!YbAWg!WN6vzx&vpd)}kuPkgXXz>OTdsNfP*s!ec&2TuOo
zb`27xaKg=f>CdGW7!GFqr<`A8ApC{B+`CoX+|tLD$MOqJ+`4N?wH{#qGgd(H<-V4T
zp+}5PJ)x}#;C5CtnH%m=w3z^XGq%5A$DAI?=Ak`(6WZVwO0T4gU;ii(@#>LFlh171
z)(76IMenuK>suC068&MavB1BC8j+Ayw*WkVX_>P^QRqacDSsP1Av4*K>da4>#rL^K
zyEZ0Qn2CmskC}xWzvY*KTCzDuyI#9bh5TaTff>rBp25yTsa@?fGb|eYVhNmtsB3F$
ze~gdTL&#_>Ekfs36LSqsZ&|tZTxB9^D@@Ee!Fn6&LF7iAJybVyB$(UvzZ+#7fCKJ@
zia1(slMNm&p^tM-VjiFidY$HahoFRroHT<IXnxdNf0i>DqlFR+w$Mf;ju;L07}Fwt
zPhH2@T{g9*4!M?w1lA$SZ<OD2?kf!HG;QQ@5^k3<a7A1G$u&Nz>0|I^c_`!gTj+G6
zdTxaE+D=y{xvb9@os0Xr-jlNRd3okCkeIvA2ae!&EvF^LJUPcnEq<cC{<`V?0rL?*
zye{8!p1Tq%Zd)IP8xC9e;?h)ntn%0kN5)C<0ls{FXM2_LuS&cJF0otVTt@zw)k*tY
zlT!`)PJVx`ByrYJArIRfC0a#hhaVCN-x(M>3LONciIIVW-m%}9Z6;5Be?tW=>I(<o
zl%{l1eFLOuQ8Ao?%A6d|w|(9trs;rix;4Luh-UoASsodHl9%UDy3vNj@0ESNWO(CG
zts0h4OvF5*b1s`D6cDd+&7Ug}72p9tf$G%(xE{EOZa&1@duyGn>htG4J^UAX$78R}
z`MUte=NzB+I&$2TLOV`uaz_AxiU<40l!PrHt)k6fZ>Z7KPKeFtMYfY#&JklrY^bKD
z<EQy~x2>F%(~%LF&Gj;(T%^6K&GI7n@NvhxPz*0smZ#9wpK63x%7>j19c81?G5SWE
z&1clhj?g5}fM!A^BYkNz`nDNg^{6bU_#V+8nI2pG%||E<fYr*BFfp}q?YVve71d9*
z{uAAz$4nz-oSq_djj?zM#-xd>mdZ>MR8HhUK;yZ6jJeI!4-dTLwgG9EKD~xV{et>?
z073((PC^T46E(8zUb@Tw><2!1<nx^V3`O93*!hAhwBl@eV<NN0Lrg&%y}dCrU0oWm
z=Lac_H2noQ%F99zS-}^d0Tlvn7BgQiWXvMltk_#$4bx0tkpO%Fbdwfdfrh+O&0Drx
zYG&&KH9*cdfn$RdjRDj1mmUE<KH7+pc<oJ9uNDGd6Co1h%$%5IL1KHxjm*iaT098a
zZDx95M5i^cK;@hf^6vA)BKc#hZpFa(9JUaE-056h7RY#D(&n=M*dO#g7Uy1ES^#XQ
zDorcRwfHGyb-+EDAKb#MFTj5_E~XA3SGFigyK6F3>-^j2g>vo%7jo7zK@YN*q}f8>
zCoDx}Ju9}|1T~Y+M8xjPNHr$Qhrd-^j_({`EFm+w3zV)qQF}y`z>+Y+T#XT}Dnz{^
zO5tDm3Ozd5^RKd@!SolvVsU5N4#W~gAH`=SV5RZ%TFwnR6BEvcq?gErT|@B~g~*zF
zmcDpoC0I7a)o(9m8(qp<kDlOWCWxt;!ZBT;*(v}F+&;|PUM=%&ux=+<q~lx+D{^#7
zgCB=M;=!pqG<k|}AyG3)IXE^5R$E^i9NeZjdlbzj8m^UXlebRCt0$EBN#LxuU+$&^
zYpbB{&YUd^ej;E}Yw=>@*Y)vA*4NJd)@9-5u3(9H!xYnm&`VME>!n<O7JPPMq%Oa9
zkD&%NtrO%`GJ~x{D$W=mm2aAKT}(WhMP<&hKA_YKH+UexYsb91SO6$z4|5H+I%{iS
z%oz?1(N$NqhufwIwMqC~1QmIilGaBsk*_yb{#^(4((@B%H6kyv?isI~BWF?gw(Fpi
zDsj8QteSH*HS7Ckz(b>G`n+NJPR+lqBrVfSbCcq>vE);`fsmV`s7$J<gY*!af0PXx
zy2sg*2rs@|s``GeyFcTk;KqXQH%k<U{cR47yBQYA$7$&u(gM^#-SEJ&=Z<MR72NTc
z-l&>ITO#A)GB1z;1SSOMab4wna*S;P(Mp6Kuwe}s%^>S929r^RI=to=iNGsi;lS;n
zi_WcTLz6F;?!TqYeGL}XAez2#+P^bB;`r>}QK8;{qrxfT2;(1h)%iqQi{!7I)mQ#Z
z4VC|beGFH>*m}G9+~OVDHeMGz&!QST)HF5c13G_M9GAE`Se{Tb?r=QPnz;EnbNq$N
zurb`H{EsK%1QrsG`zj^yNkwr9HEbMbbCEbJJL!-gxJ^UJ4~?Yt#O0tx9Q;ogz0aOo
ziQ8&V1sI)~eAd5wq8U*d;%0|+xd#!Rn3%uYfoA$>leV)oSaiXq*cL+h2KC5t$<ri5
z)j@2f*C`rNMWqbECpuYyQ7pm&6$s*jjz-(zeO3w7!7AEW#TRGK23+Z5b{|iLpoCM!
zlYRyVmnk+_+EMrDipUE(Bu=u$B%_u@V$Bl*_~VBqHyKpi5Fl2z_X8L92+#x@y&-wg
z4uzSO!IXj0D!zgmKp>H|NU|}%c)Kdr@L|M>aw8n+)Y2Y<97v|}!Kf2X(+*P&Zi`TS
z%53mQ${|P}+#}UGu$49ol(b(D4WZrQP;BV9$whvayxVjc*#GJhiMr!zGN1|<X!`Nx
z1%GIw_F4b7uSNrUM@WN2hcbKJy?)}OYlHlIk?@}m+3F~#)5nE=@X)+blWz?6H&~1`
zek<RuDD;bs+UDYYL}@qd3>z$Uu3-7$x&W>T*fF<GRH-HeSJHz=fY-F@-^vR;o)nuM
zh^v3DqheP)B|A5m9V<vF!5v~8@!bL+*L*9bBMC1OI;}1vtzqz4JgB&DkmT3fF0res
z_Jm|w8kTsz-u&kSu?eeUVIpS!7Jok9ssLW_T~%HEuu{uDUAi12lFATj+?RVtTQu*7
z6FjRS>Qy6&q{Z}=o|zOioq*%D1clx8AJu#DW<4kRQTFyZyd6>7rAqJy^o1uB7rs`)
zd!uhAvcDg6WUtX|nI43ZO-cvTjfe-*{roIh|72bwuzr&#nslnVQgILm_V%pFtyRtP
z05}8XNUW87)o!%DxF$%fn(^#mi}+|wsLSH8io}Y_QMRJ?lk6SFcauTF;B?_Qth4g#
zESx4J_Belzs8BW!U0sp<|E+aO+@S#lCx#B@T!~YJi4-jSgmKCMlSB$i2|vXI75Io5
zl}N0Uz67EW4Z1#>=+6_ct?6%l#p2>q;A7$_KK3l2%&b|_`O@t!@rwz-)5m)1zaCl#
F{~yH_Yr6md

literal 0
HcmV?d00001

diff --git a/games/balatro/lang/fr.txt b/games/balatro/lang/fr.txt
index de20fa5..0a4174c 100644
--- a/games/balatro/lang/fr.txt
+++ b/games/balatro/lang/fr.txt
@@ -1,763 +1,156 @@
-# Balatro in French: the English text as in the source, a tab, the translation (see tools/lang.py).
-# Names and descriptions (src/texts.h) in the game's markup: {C:mult}...{} a colour, #1# a value;
-# other texts: \004 and the like are colour codes (src/gfx.h). Mult is Multi, Chips Jetons, as in the
-# game in French. Tooltip lines stay short (about 30 letters); buttons are small.
-Joker	Joker
-{C:mult}+#1#{} Mult	{C:mult}+#1#{} Multi
-Greedy Joker	Joker avide
-Played cards with\n{C:attention}#2#{} suit give\n{C:mult}+#1#{} Mult when scored	Les cartes jouées de\n{C:attention}#2#{} donnent\n{C:mult}+#1#{} Multi quand elles comptent
-Lusty Joker	Joker lubrique
-Played cards with\n{C:mult}#2#{} suit give\n{C:mult}+#1#{} Mult when scored	Les cartes jouées de\n{C:mult}#2#{} donnent\n{C:mult}+#1#{} Multi quand elles comptent
-Wrathful Joker	Joker courroucé
-Played cards with\n{C:spades}#2#{} suit give\n{C:mult}+#1#{} Mult when scored	Les cartes jouées de\n{C:spades}#2#{} donnent\n{C:mult}+#1#{} Multi quand elles comptent
-Gluttonous Joker	Joker glouton
-Jolly Joker	Joker jovial
-{C:mult}+#1#{} Mult if played\nhand contains\na {C:attention}#2#	{C:mult}+#1#{} Multi si la main\njouée contient\n{C:attention}#2#
-Zany Joker	Joker loufoque
-Mad Joker	Joker fou
-Crazy Joker	Joker dingue
-Droll Joker	Joker drôle
-Sly Joker	Joker sournois
-{C:chips}+#1#{} Chips if played\nhand contains\na {C:attention}#2#	{C:chips}+#1#{} Jetons si la main\njouée contient\n{C:attention}#2#
-Wily Joker	Joker rusé
-Clever Joker	Joker malin
-Devious Joker	Joker retors
-Crafty Joker	Joker astucieux
-Half Joker	Demi-joker
-{C:mult}+#1#{} Mult if played\nhand contains\n{C:attention}#2#{} or fewer cards	{C:mult}+#1#{} Multi si la main\njouée contient\n{C:attention}#2#{} cartes ou moins
-Joker Stencil	Joker pochoir
-{X:mult,C:white} X1 {} Mult for each\nempty {C:attention}Joker{} slot\nJoker Stencil included\n{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive})	{X:mult,C:white} X1 {} Multi par\nemplacement de {C:attention}Joker{} vide\n(Joker pochoir compris)\n{C:inactive}(Actuellement {X:mult,C:white} X#1# {C:inactive})
-Four Fingers	Quatre doigts
-All {C:attention}Flushes{} and\n{C:attention}Straights{} can be\nmade with {C:attention}4{} cards	Les {C:attention}Couleurs{} et\n{C:attention}Quintes{} peuvent se\nfaire avec {C:attention}4{} cartes
-Mime	Mime
-Retrigger all\ncard {C:attention}held in\n{C:attention}hand{} abilities	Redéclenche les\ncapacités des cartes\n{C:attention}en main
-Credit Card	Carte de crédit
-Go up to\n{C:mult}-$#1#{} in debt	Endettement possible\njusqu'à {C:mult}-$#1#
-Ceremonial Dagger	Dague cérémonielle
-When {C:attention}Blind{} is selected,\ndestroy Joker to the right\nand permanently add {C:attention}double\nits sell value to this {C:mult}Mult\n{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)	Quand une {C:attention}Blind{} est choisie,\ndétruit le Joker à droite et\najoute {C:attention}le double{} de sa valeur\nde vente à ce {C:mult}Multi\n{C:inactive}(Actuellement {C:mult}+#1#{C:inactive} Multi)
-Banner	Bannière
-{C:chips}+#1#{} Chips for\neach remaining\n{C:attention}discard	{C:chips}+#1#{} Jetons par\n{C:attention}défausse{} restante
-Mystic Summit	Sommet mystique
-{C:mult}+#1#{} Mult when\n{C:attention}#2#{} discards\nremaining	{C:mult}+#1#{} Multi quand il\nreste {C:attention}#2#{} défausse
-Marble Joker	Joker de marbre
-Adds one {C:attention}Stone{} card\nto deck when\n{C:attention}Blind{} is selected	Ajoute une carte de\n{C:attention}pierre{} au jeu quand\nune {C:attention}Blind{} est choisie
-Loyalty Card	Carte de fidélité
-{X:mult,C:white} X#1# {} Mult every\n{C:attention}#2#{} hands played\n{C:inactive}#3#	{X:mult,C:white} X#1# {} Multi toutes\nles {C:attention}#2#{} mains jouées\n{C:inactive}#3#
-8 Ball	Boule 8
-{C:green}#1# in #2#{} chance for each\nplayed {C:attention}8{} to create a\n{C:tarot}Tarot{} card when scored\n{C:inactive}(Must have room)	Chaque {C:attention}8{} joué a {C:green}#1# chance\nsur #2#{} de créer une carte\n{C:tarot}Tarot{} quand il compte\n{C:inactive}(Place requise)
-Misprint	Erreur d'impression
-Dusk	Crépuscule
-Retrigger all played\ncards in {C:attention}final\n{C:attention}hand{} of round	Redéclenche toutes les\ncartes jouées lors de la\n{C:attention}dernière main{} de la manche
-Raised Fist	Poing levé
-Adds {C:attention}double{} the rank\nof {C:attention}lowest{} ranked card\nheld in hand to Mult	Ajoute au Multi {C:attention}le double\nde la valeur de la carte\nen main la {C:attention}plus faible
-Chaos the Clown	Chaos le clown
-{C:attention}#1#{} free {C:green}Reroll\nper shop	{C:attention}#1#{} {C:green}relance{} gratuite\npar boutique
-Fibonacci	Fibonacci
-Each played {C:attention}Ace{},\n{C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{} gives\n{C:mult}+#1#{} Mult when scored	Chaque {C:attention}As{}, {C:attention}2{}, {C:attention}3{},\n{C:attention}5{} ou {C:attention}8{} joué donne\n{C:mult}+#1#{} Multi quand il compte
-Steel Joker	Joker d'acier
-Gives {X:mult,C:white} X#1# {} Mult\nfor each {C:attention}Steel Card\nin your {C:attention}full deck\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Donne {X:mult,C:white} X#1# {} Multi\npar {C:attention}carte d'acier\ndu {C:attention}jeu complet\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Scary Face	Visage effrayant
-Played {C:attention}face{} cards\ngive {C:chips}+#1#{} Chips\nwhen scored	Les {C:attention}figures{} jouées\ndonnent {C:chips}+#1#{} Jetons\nquand elles comptent
-Abstract Joker	Joker abstrait
-{C:mult}+#1#{} Mult for\neach {C:attention}Joker{} card\n{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)	{C:mult}+#1#{} Multi par\ncarte {C:attention}Joker\n{C:inactive}(Actuellement {C:mult}+#2#{C:inactive} Multi)
-Delayed Gratification	Gratification différée
-Earn {C:money}$#1#{} per {C:attention}discard{} if\nno discards are used\nby end of the round	Gagne {C:money}$#1#{} par {C:attention}défausse\nsi aucune n'est utilisée\navant la fin de la manche
-Hack	Hack
-Retrigger\neach played\n{C:attention}2{}, {C:attention}3{}, {C:attention}4{}, or {C:attention}5{}	Redéclenche chaque\n{C:attention}2{}, {C:attention}3{}, {C:attention}4{} ou {C:attention}5{} joué
-Pareidolia	Paréidolie
-All cards are\nconsidered\n{C:attention}face{} cards	Toutes les cartes\nsont des {C:attention}figures
-Gros Michel	Gros Michel
-{C:mult}+#1#{} Mult\n{C:green}#2# in #3#{} chance this\ncard is destroyed\nat end of round	{C:mult}+#1#{} Multi\n{C:green}#2# chance sur #3#{} d'être\ndétruite en fin de manche
-Even Steven	Steven le pair
-Played cards with\n{C:attention}even{} rank give\n{C:mult}+#1#{} Mult when scored\n{C:inactive}(10, 8, 6, 4, 2)	Les cartes jouées de\nvaleur {C:attention}paire{} donnent\n{C:mult}+#1#{} Multi quand elles comptent\n{C:inactive}(10, 8, 6, 4, 2)
-Odd Todd	Todd l'impair
-Played cards with\n{C:attention}odd{} rank give\n{C:chips}+#1#{} Chips when scored\n{C:inactive}(A, 9, 7, 5, 3)	Les cartes jouées de\nvaleur {C:attention}impaire{} donnent\n{C:chips}+#1#{} Jetons quand elles comptent\n{C:inactive}(A, 9, 7, 5, 3)
-Scholar	Érudit
-Played {C:attention}Aces{}\ngive {C:chips}+#2#{} Chips\nand {C:mult}+#1#{} Mult\nwhen scored	Les {C:attention}As{} joués\ndonnent {C:chips}+#2#{} Jetons\net {C:mult}+#1#{} Multi\nquand ils comptent
-Business Card	Carte de visite
-Played {C:attention}face{} cards have\na {C:green}#1# in #2#{} chance to\ngive {C:money}$2{} when scored	Les {C:attention}figures{} jouées ont\n{C:green}#1# chance sur #2#{} de\ndonner {C:money}$2{} quand elles comptent
-Supernova	Supernova
-Adds the number of times\n{C:attention}poker hand{} has been\nplayed this run to Mult	Ajoute au Multi le nombre\nde fois où cette {C:attention}main\nde poker{} a été jouée
-Ride the Bus	Prendre le bus
-This Joker gains {C:mult}+#1#{} Mult\nper {C:attention}consecutive{} hand\nplayed without a\nscoring {C:attention}face{} card\n{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)	Ce Joker gagne {C:mult}+#1#{} Multi\npar main {C:attention}consécutive{} jouée\nsans {C:attention}figure{} qui compte\n{C:inactive}(Actuellement {C:mult}+#2#{C:inactive} Multi)
-Space Joker	Joker de l'espace
-{C:green}#1# in #2#{} chance to\nupgrade level of\nplayed {C:attention}poker hand{}	{C:green}#1# chance sur #2#{} d'améliorer\nle niveau de la {C:attention}main\nde poker{} jouée
-Egg	Œuf
-Gains {C:money}$#1#{} of\n{C:attention}sell value{} at\nend of round	Gagne {C:money}$#1#{} de\n{C:attention}valeur de vente{} en\nfin de manche
-Burglar	Cambrioleur
-When {C:attention}Blind{} is selected,\ngain {C:chips}+#1#{} Hands and\n{C:attention}lose all discards	Quand une {C:attention}Blind{} est choisie,\ngagne {C:chips}+#1#{} mains et\n{C:attention}perd toutes les défausses
-Blackboard	Tableau noir
-{X:mult,C:white} X#1# {} Mult if all\ncards held in hand\nare {C:spades}#2#{} or {C:attention}#3#{}	{X:mult,C:white} X#1# {} Multi si toutes\nles cartes en main sont\ndes {C:spades}#2#{} ou des {C:attention}#3#{}
-Runner	Coureur
-Gains {C:chips}+#2#{} Chips\nif played hand\ncontains a {C:attention}Straight{}\n{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)	Gagne {C:chips}+#2#{} Jetons\nsi la main jouée\ncontient une {C:attention}Quinte\n{C:inactive}(Actuellement {C:chips}+#1#{C:inactive} Jetons)
-Ice Cream	Crème glacée
-{C:chips}+#1#{} Chips\n{C:chips}-#2#{} Chips for\nevery hand played	{C:chips}+#1#{} Jetons\n{C:chips}-#2#{} Jetons par\nmain jouée
-DNA	ADN
-If {C:attention}first hand{} of round\nhas only {C:attention}1{} card, add a\npermanent copy to deck\nand draw it to {C:attention}hand	Si la {C:attention}première main{} de la\nmanche n'a qu'{C:attention}1{} carte, en\najoute une copie au jeu\net la pioche en {C:attention}main
-Splash	Éclaboussure
-Every {C:attention}played card\ncounts in scoring	Chaque {C:attention}carte jouée\ncompte dans le score
-Blue Joker	Joker bleu
-{C:chips}+#1#{} Chips for each\nremaining card in {C:attention}deck\n{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)	{C:chips}+#1#{} Jetons par carte\nrestante dans le {C:attention}jeu\n{C:inactive}(Actuellement {C:chips}+#2#{C:inactive} Jetons)
-Sixth Sense	Sixième sens
-If {C:attention}first hand{} of round is\na single {C:attention}6{}, destroy it and\ncreate a {C:spectral}Spectral{} card\n{C:inactive}(Must have room)	Si la {C:attention}première main{} de la\nmanche est un seul {C:attention}6{}, le\ndétruit et crée une carte\n{C:spectral}Spectrale\n{C:inactive}(Place requise)
-Constellation	Constellation
-This Joker gains\n{X:mult,C:white} X#1# {} Mult every time\na {C:planet}Planet{} card is used\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Ce Joker gagne\n{X:mult,C:white} X#1# {} Multi chaque fois\nqu'une carte {C:planet}Planète{} est utilisée\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Hiker	Randonneur
-Every played {C:attention}card{}\npermanently gains\n{C:chips}+#1#{} Chips when scored	Chaque {C:attention}carte{} jouée\ngagne définitivement\n{C:chips}+#1#{} Jetons quand elle compte
-Faceless Joker	Joker sans visage
-Earn {C:money}$#1#{} if {C:attention}#2#{} or\nmore {C:attention}face cards{}\nare discarded\nat the same time	Gagne {C:money}$#1#{} si {C:attention}#2#{} ou\nplus {C:attention}figures{} sont\ndéfaussées en même temps
-Green Joker	Joker vert
-{C:mult}+#1#{} Mult per hand played\n{C:mult}-#2#{} Mult per discard\n{C:inactive}(Currently {C:mult}+#3#{C:inactive} Mult)	{C:mult}+#1#{} Multi par main jouée\n{C:mult}-#2#{} Multi par défausse\n{C:inactive}(Actuellement {C:mult}+#3#{C:inactive} Multi)
-Superposition	Superposition
-Create a {C:tarot}Tarot{} card if\npoker hand contains an\n{C:attention}Ace{} and a {C:attention}Straight{}\n{C:inactive}(Must have room)	Crée une carte {C:tarot}Tarot{} si\nla main contient un {C:attention}As\net une {C:attention}Quinte\n{C:inactive}(Place requise)
-To Do List	Liste de tâches
-Earn {C:money}$#1#{} if {C:attention}poker hand{}\nis a {C:attention}#2#{},\npoker hand changes\nat end of round	Gagne {C:money}$#1#{} si la {C:attention}main\nde poker{} est : {C:attention}#2#{},\nla main change en\nfin de manche
-Cavendish	Cavendish
-{X:mult,C:white} X#1# {} Mult\n{C:green}#2# in #3#{} chance this\ncard is destroyed\nat end of round	{X:mult,C:white} X#1# {} Multi\n{C:green}#2# chance sur #3#{} d'être\ndétruite en fin de manche
-Card Sharp	Tricheur
-{X:mult,C:white} X#1# {} Mult if played\n{C:attention}poker hand{} has already\nbeen played this round	{X:mult,C:white} X#1# {} Multi si la {C:attention}main\nde poker{} jouée a déjà\nété jouée cette manche
-Red Card	Carton rouge
-This Joker gains\n{C:mult}+#1#{} Mult when any\n{C:attention}Booster Pack{} is skipped\n{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)	Ce Joker gagne\n{C:mult}+#1#{} Multi quand un\n{C:attention}paquet booster{} est passé\n{C:inactive}(Actuellement {C:mult}+#2#{C:inactive} Multi)
-Madness	Folie
-When {C:attention}Small Blind{} or {C:attention}Big Blind{}\nis selected, gain {X:mult,C:white} X#1# {} Mult\nand {C:attention}destroy{} a random Joker\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Quand la {C:attention}petite{} ou la {C:attention}grosse\nblind{} est choisie, gagne {X:mult,C:white} X#1# {} Multi\net {C:attention}détruit{} un Joker au hasard\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Square Joker	Joker carré
-This Joker gains {C:chips}+#2#{} Chips\nif played hand has\nexactly {C:attention}4{} cards\n{C:inactive}(Currently {C:chips}#1#{C:inactive} Chips)	Ce Joker gagne {C:chips}+#2#{} Jetons\nsi la main jouée a\nexactement {C:attention}4{} cartes\n{C:inactive}(Actuellement {C:chips}#1#{C:inactive} Jetons)
-Seance	Séance
-If {C:attention}poker hand{} is a\n{C:attention}#1#{}, create a\nrandom {C:spectral}Spectral{} card\n{C:inactive}(Must have room)	Si la {C:attention}main de poker\nest : {C:attention}#1#{}, crée une\ncarte {C:spectral}Spectrale{} au hasard\n{C:inactive}(Place requise)
-Riff-Raff	Racaille
-When {C:attention}Blind{} is selected,\ncreate {C:attention}#1# {C:chips}Common{C:attention} Jokers\n{C:inactive}(Must have room)	Quand une {C:attention}Blind{} est choisie,\ncrée {C:attention}#1#{} Jokers {C:chips}communs\n{C:inactive}(Place requise)
-Vampire	Vampire
-This Joker gains {X:mult,C:white} X#1# {} Mult\nper scoring {C:attention}Enhanced card{} played,\nremoves card {C:attention}Enhancement\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Ce Joker gagne {X:mult,C:white} X#1# {} Multi\npar {C:attention}carte améliorée{} jouée\nqui compte, et lui retire\nson {C:attention}amélioration\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Shortcut	Raccourci
-Allows {C:attention}Straights{} to be\nmade with gaps of {C:attention}1 rank\n{C:inactive}(ex: {C:attention}10 8 6 5 3{C:inactive})	Les {C:attention}Quintes{} peuvent\nsauter {C:attention}1 valeur\n{C:inactive}(ex. : {C:attention}10 8 6 5 3{C:inactive})
-Hologram	Hologramme
-This Joker gains {X:mult,C:white} X#1# {} Mult\nevery time a {C:attention}playing card{}\nis added to your deck\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Ce Joker gagne {X:mult,C:white} X#1# {} Multi\nchaque fois qu'une {C:attention}carte\nà jouer{} est ajoutée au jeu\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Vagabond	Vagabond
-Create a {C:tarot}Tarot{} card\nif hand is played\nwith {C:money}$#1#{} or less	Crée une carte {C:tarot}Tarot\nsi la main est jouée\navec {C:money}$#1#{} ou moins
-Baron	Baron
-Each {C:attention}King{}\nheld in hand\ngives {X:mult,C:white} X#1# {} Mult	Chaque {C:attention}Roi\nen main donne\n{X:mult,C:white} X#1# {} Multi
-Cloud 9	Nuage 9
-Earn {C:money}$#1#{} for each\n{C:attention}9{} in your {C:attention}full deck\nat end of round\n{C:inactive}(Currently {C:money}$#2#{}{C:inactive})	Gagne {C:money}$#1#{} par {C:attention}9\ndu {C:attention}jeu complet{} en\nfin de manche\n{C:inactive}(Actuellement {C:money}$#2#{}{C:inactive})
-Rocket	Fusée
-Earn {C:money}$#1#{} at end of round\nPayout increases by {C:money}$#2#{}\nwhen {C:attention}Boss Blind{} is defeated	Gagne {C:money}$#1#{} en fin de manche\nLe gain augmente de {C:money}$#2#\nquand la {C:attention}Blind de boss\nest vaincue
-Obelisk	Obélisque
-This Joker gains {X:mult,C:white} X#1# {} Mult\nper {C:attention}consecutive{} hand played\nwithout playing your\nmost played {C:attention}poker hand\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Ce Joker gagne {X:mult,C:white} X#1# {} Multi\npar main {C:attention}consécutive{} jouée\nsans jouer ta {C:attention}main\nde poker{} la plus jouée\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Midas Mask	Masque de Midas
-All played {C:attention}face{} cards\nbecome {C:attention}Gold{} cards\nwhen scored	Les {C:attention}figures{} jouées\ndeviennent des cartes\n{C:attention}dorées{} quand elles comptent
-Luchador	Luchador
-Sell this card to\ndisable the current\n{C:attention}Boss Blind{}	Vends cette carte pour\ndésactiver la {C:attention}Blind\nde boss{} en cours
-Photograph	Photographie
-First played {C:attention}face\ncard gives {X:mult,C:white} X#1# {} Mult\nwhen scored	La première {C:attention}figure\njouée donne {X:mult,C:white} X#1# {} Multi\nquand elle compte
-Gift Card	Carte cadeau
-Add {C:money}$#1#{} of {C:attention}sell value\nto every {C:attention}Joker{} and\n{C:attention}Consumable{} card at\nend of round	Ajoute {C:money}$#1#{} de {C:attention}valeur\nde vente{} à chaque {C:attention}Joker\net {C:attention}consommable{} en\nfin de manche
-Turtle Bean	Haricot tortue
-{C:attention}+#1#{} hand size,\nreduces by\n{C:mult}#2#{} every round	{C:attention}+#1#{} taille de main,\ndiminue de {C:mult}#2#\nà chaque manche
-Erosion	Érosion
-{C:mult}+#1#{} Mult for each\ncard below {C:attention}#3#{}\nin your full deck\n{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)	{C:mult}+#1#{} Multi par carte\nsous les {C:attention}#3#{} du\njeu complet\n{C:inactive}(Actuellement {C:mult}+#2#{C:inactive} Multi)
-Reserved Parking	Stationnement réservé
-Each {C:attention}face{} card\nheld in hand has\na {C:green}#2# in #3#{} chance\nto give {C:money}$#1#{}	Chaque {C:attention}figure{} en main\na {C:green}#2# chance sur #3#\nde donner {C:money}$#1#
-Mail-In Rebate	Remise par courrier
-Earn {C:money}$#1#{} for each\ndiscarded {C:attention}#2#{}, rank\nchanges every round	Gagne {C:money}$#1#{} par {C:attention}#2#\ndéfaussé, la valeur\nchange à chaque manche
-To the Moon	Jusqu'à la Lune
-Earn an extra {C:money}$#1#{} of\n{C:attention}interest{} for every {C:money}$5{} you\nhave at end of round	Gagne {C:money}$#1#{} d'{C:attention}intérêts\nen plus pour chaque {C:money}$5\nen fin de manche
-Hallucination	Hallucination
-{C:green}#1# in #2#{} chance to create\na {C:tarot}Tarot{} card when any\n{C:attention}Booster Pack{} is opened\n{C:inactive}(Must have room)	{C:green}#1# chance sur #2#{} de créer\nune carte {C:tarot}Tarot{} quand un\n{C:attention}paquet booster{} est ouvert\n{C:inactive}(Place requise)
-Fortune Teller	Diseuse de bonne aventure
-{C:mult}+#1#{} Mult per {C:tarot}Tarot{}\ncard used this run\n{C:inactive}(Currently {C:mult}+#2#{C:inactive})	{C:mult}+#1#{} Multi par carte\n{C:tarot}Tarot{} utilisée dans la partie\n{C:inactive}(Actuellement {C:mult}+#2#{C:inactive})
-Juggler	Jongleur
-{C:attention}+#1#{} hand size	{C:attention}+#1#{} taille de main
-Drunkard	Ivrogne
-{C:mult}+#1#{} discard\neach round	{C:mult}+#1#{} défausse\npar manche
-Stone Joker	Joker de pierre
-Gives {C:chips}+#1#{} Chips for\neach {C:attention}Stone Card\nin your {C:attention}full deck\n{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)	Donne {C:chips}+#1#{} Jetons par\n{C:attention}carte de pierre\ndu {C:attention}jeu complet\n{C:inactive}(Actuellement {C:chips}+#2#{C:inactive} Jetons)
-Golden Joker	Joker doré
-Earn {C:money}$#1#{} at\nend of round	Gagne {C:money}$#1#{} en\nfin de manche
-Lucky Cat	Chat porte-bonheur
-This Joker gains {X:mult,C:white} X#1# {} Mult\nevery time a {C:attention}Lucky{} card\n{C:green}successfully{} triggers\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Ce Joker gagne {X:mult,C:white} X#1# {} Multi\nchaque fois qu'une carte\n{C:attention}chanceuse{} se déclenche\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Baseball Card	Carte de baseball
-{C:green}Uncommon{} Jokers\neach give {X:mult,C:white} X#1# {} Mult	Chaque Joker {C:green}peu commun\ndonne {X:mult,C:white} X#1# {} Multi
-Bull	Taureau
-{C:chips}+#1#{} Chips for\neach {C:money}$1{} you have\n{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)	{C:chips}+#1#{} Jetons par\n{C:money}$1{} possédé\n{C:inactive}(Actuellement {C:chips}+#2#{C:inactive} Jetons)
-Diet Cola	Soda light
-Sell this card to\ncreate a free\n{C:attention}#1#	Vends cette carte pour\nobtenir gratuitement\nun {C:attention}#1#
-Trading Card	Carte à échanger
-If {C:attention}first discard{} of round\nhas only {C:attention}1{} card, destroy\nit and earn {C:money}$#1#	Si la {C:attention}première défausse{} de\nla manche n'a qu'{C:attention}1{} carte,\nla détruit et gagne {C:money}$#1#
-Flash Card	Carte flash
-This Joker gains {C:mult}+#1#{} Mult\nper {C:attention}reroll{} in the shop\n{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)	Ce Joker gagne {C:mult}+#1#{} Multi\npar {C:attention}relance{} en boutique\n{C:inactive}(Actuellement {C:mult}+#2#{C:inactive} Multi)
-Popcorn	Pop-corn
-{C:mult}+#1#{} Mult\n{C:mult}-#2#{} Mult per\nround played	{C:mult}+#1#{} Multi\n{C:mult}-#2#{} Multi par\nmanche jouée
-Spare Trousers	Pantalon de rechange
-This Joker gains {C:mult}+#1#{} Mult\nif played hand contains\na {C:attention}#2#\n{C:inactive}(Currently {C:mult}+#3#{C:inactive} Mult)	Ce Joker gagne {C:mult}+#1#{} Multi\nsi la main jouée\ncontient {C:attention}#2#\n{C:inactive}(Actuellement {C:mult}+#3#{C:inactive} Multi)
-Ancient Joker	Joker antique
-Each played card with\n{C:attention}#2#{} suit gives\n{X:mult,C:white} X#1# {} Mult when scored,\nsuit changes at end of round	Chaque carte jouée de\n{C:attention}#2#{} donne {X:mult,C:white} X#1# {} Multi\nquand elle compte, la couleur\nchange en fin de manche
-Ramen	Ramen
-{X:mult,C:white} X#1# {} Mult,\nloses {X:mult,C:white} X#2# {} Mult\nper {C:attention}card{} discarded	{X:mult,C:white} X#1# {} Multi,\nperd {X:mult,C:white} X#2# {} Multi\npar {C:attention}carte{} défaussée
-Walkie Talkie	Talkie-walkie
-Each played {C:attention}10{} or {C:attention}4\ngives {C:chips}+#1#{} Chips and\n{C:mult}+#2#{} Mult when scored	Chaque {C:attention}10{} ou {C:attention}4{} joué\ndonne {C:chips}+#1#{} Jetons et\n{C:mult}+#2#{} Multi quand il compte
-Seltzer	Eau gazeuse
-Retrigger all\ncards played for\nthe next {C:attention}#1#{} hands	Redéclenche toutes\nles cartes jouées pendant\nles {C:attention}#1#{} prochaines mains
-Castle	Château
-This Joker gains {C:chips}+#1#{} Chips\nper discarded {C:attention}#2#{} card,\nsuit changes every round\n{C:inactive}(Currently {C:chips}+#3#{C:inactive} Chips)	Ce Joker gagne {C:chips}+#1#{} Jetons\npar carte de {C:attention}#2#{} défaussée,\nla couleur change à chaque manche\n{C:inactive}(Actuellement {C:chips}+#3#{C:inactive} Jetons)
-Smiley Face	Visage souriant
-Played {C:attention}face{} cards\ngive {C:mult}+#1#{} Mult\nwhen scored	Les {C:attention}figures{} jouées\ndonnent {C:mult}+#1#{} Multi\nquand elles comptent
-Campfire	Feu de camp
-This Joker gains {X:mult,C:white}X#1#{} Mult\nfor each card {C:attention}sold{}, resets\nwhen {C:attention}Boss Blind{} is defeated\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Ce Joker gagne {X:mult,C:white}X#1#{} Multi\npar carte {C:attention}vendue{}, remis à\nzéro quand la {C:attention}Blind de boss\nest vaincue\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Golden Ticket	Ticket doré
-Played {C:attention}Gold{} cards\nearn {C:money}$#1#{} when scored	Les cartes {C:attention}dorées{} jouées\nrapportent {C:money}$#1#{} quand\nelles comptent
-Mr. Bones	M. Os
-Prevents Death\nif chips scored\nare at least {C:attention}25%\nof required chips\n{C:mult}self destructs{}	Évite la défaite si\nles jetons marqués font\nau moins {C:attention}25%{} des jetons\nrequis, puis {C:mult}s'autodétruit
-Acrobat	Acrobate
-{X:mult,C:white} X#1# {} Mult on {C:attention}final\n{C:attention}hand{} of round	{X:mult,C:white} X#1# {} Multi lors de la\n{C:attention}dernière main{} de la manche
-Sock and Buskin	Socque et cothurne
-Retrigger all\nplayed {C:attention}face{} cards	Redéclenche toutes\nles {C:attention}figures{} jouées
-Swashbuckler	Bretteur
-Adds the sell value\nof all other owned\n{C:attention}Jokers{} to Mult\n{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)	Ajoute au Multi la valeur\nde vente de tous tes\nautres {C:attention}Jokers\n{C:inactive}(Actuellement {C:mult}+#1#{C:inactive} Multi)
-Troubadour	Troubadour
-{C:attention}+#1#{} hand size,\n{C:chips}-#2#{} hand each round	{C:attention}+#1#{} taille de main,\n{C:chips}-#2#{} main par manche
-Certificate	Certificat
-When round begins,\nadd a random {C:attention}playing\n{C:attention}card{} with a random\n{C:attention}seal{} to your hand	Au début de la manche,\najoute à ta main une {C:attention}carte\n{C:attention}à jouer{} au hasard avec\nun {C:attention}sceau{} au hasard
-Smeared Joker	Joker barbouillé
-{C:mult}Hearts{} and {C:attention}Diamonds\ncount as the same suit,\n{C:spades}Spades{} and {C:attention}Clubs\ncount as the same suit	Les {C:mult}Cœurs{} et {C:attention}Carreaux\ncomptent comme une même\ncouleur, les {C:spades}Piques{} et\n{C:attention}Trèfles{} aussi
-Throwback	Rétro
-{X:mult,C:white} X#1# {} Mult for each\n{C:attention}Blind{} skipped this run\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	{X:mult,C:white} X#1# {} Multi par\n{C:attention}Blind{} passée dans la partie\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Hanging Chad	Bulletin troué
-Retrigger {C:attention}first{} played\ncard used in scoring\n{C:attention}#1#{} additional times	Redéclenche {C:attention}#1#{} fois de plus\nla {C:attention}première{} carte jouée\nqui compte
-Rough Gem	Gemme brute
-Played cards with\n{C:attention}Diamond{} suit earn\n{C:money}$#1#{} when scored	Les cartes jouées de\n{C:attention}Carreau{} rapportent\n{C:money}$#1#{} quand elles comptent
-Bloodstone	Héliotrope
-{C:green}#1# in #2#{} chance for\nplayed cards with\n{C:mult}Heart{} suit to give\n{X:mult,C:white} X#3# {} Mult when scored	Les cartes jouées de\n{C:mult}Cœur{} ont {C:green}#1# chance\nsur #2#{} de donner {X:mult,C:white} X#3# {} Multi\nquand elles comptent
-Arrowhead	Pointe de flèche
-Played cards with\n{C:spades}Spade{} suit give\n{C:chips}+#1#{} Chips when scored	Les cartes jouées de\n{C:spades}Pique{} donnent\n{C:chips}+#1#{} Jetons quand elles comptent
-Onyx Agate	Agate onyx
-Played cards with\n{C:attention}Club{} suit give\n{C:mult}+#1#{} Mult when scored	Les cartes jouées de\n{C:attention}Trèfle{} donnent\n{C:mult}+#1#{} Multi quand elles comptent
-Glass Joker	Joker de verre
-This Joker gains {X:mult,C:white} X#1# {} Mult\nfor every {C:attention}Glass Card\nthat is destroyed\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Ce Joker gagne {X:mult,C:white} X#1# {} Multi\npar {C:attention}carte de verre\ndétruite\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Showman	Showman
-{C:attention}Joker{}, {C:tarot}Tarot{}, {C:planet}Planet{},\nand {C:spectral}Spectral{} cards may\nappear multiple times	Les cartes {C:attention}Joker{}, {C:tarot}Tarot{},\n{C:planet}Planète{} et {C:spectral}Spectrales\npeuvent apparaître\nplusieurs fois
-Flower Pot	Pot de fleurs
-{X:mult,C:white} X#1# {} Mult if poker\nhand contains a\n{C:attention}Diamond{} card, {C:attention}Club{} card,\n{C:mult}Heart{} card, and {C:spades}Spade{} card	{X:mult,C:white} X#1# {} Multi si la main\ncontient une carte de\n{C:attention}Carreau{}, de {C:attention}Trèfle{},\nde {C:mult}Cœur{} et de {C:spades}Pique
-Blueprint	Plan
-Copies ability of\n{C:attention}Joker{} to the right	Copie la capacité\ndu {C:attention}Joker{} à droite
-Wee Joker	Mini-joker
-This Joker gains\n{C:chips}+#2#{} Chips when each\nplayed {C:attention}2{} is scored\n{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)	Ce Joker gagne\n{C:chips}+#2#{} Jetons quand\nchaque {C:attention}2{} joué compte\n{C:inactive}(Actuellement {C:chips}+#1#{C:inactive} Jetons)
-Merry Andy	Joyeux Andy
-{C:mult}+#1#{} discards\neach round,\n{C:mult}#2#{} hand size	{C:mult}+#1#{} défausses\npar manche,\n{C:mult}#2#{} taille de main
-Oops! All 6s	Oups ! Que des 6
-Doubles all {C:attention}listed\n{C:green}probabilities\n{C:inactive}(ex: {C:green}1 in 3{C:inactive} -> {C:green}2 in 3{C:inactive})	Double toutes les\n{C:green}probabilités{} indiquées\n{C:inactive}(ex. : {C:green}1 sur 3{C:inactive} -> {C:green}2 sur 3{C:inactive})
-The Idol	L'Idole
-Each played {C:attention}#2#\nof {C:attention}#3#{} gives\n{X:mult,C:white} X#1# {} Mult when scored\nCard changes every round	Chaque {C:attention}#2#\nde {C:attention}#3#{} joué donne\n{X:mult,C:white} X#1# {} Multi quand il compte\nLa carte change à chaque manche
-Seeing Double	Double vue
-{X:mult,C:white} X#1# {} Mult if played\nhand has a scoring\n{C:attention}Club{} card and a scoring\ncard of any other {C:attention}suit	{X:mult,C:white} X#1# {} Multi si la main\njouée a une carte de\n{C:attention}Trèfle{} qui compte et une\nautre {C:attention}couleur{} qui compte
-Matador	Matador
-Earn {C:money}$#1#{} if played\nhand triggers the\n{C:attention}Boss Blind{} ability	Gagne {C:money}$#1#{} si la main\njouée déclenche la capacité\nde la {C:attention}Blind de boss
-Hit the Road	En route
-This Joker gains {X:mult,C:white} X#1# {} Mult\nfor every {C:attention}Jack{}\ndiscarded this round\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Ce Joker gagne {X:mult,C:white} X#1# {} Multi\npar {C:attention}Valet{} défaussé\npendant cette manche\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-The Duo	Le Duo
-{X:mult,C:white} X#1# {} Mult if played\nhand contains\na {C:attention}#2#	{X:mult,C:white} X#1# {} Multi si la main\njouée contient\n{C:attention}#2#
-The Trio	Le Trio
-The Family	La Famille
-The Order	L'Ordre
-The Tribe	La Tribu
-Stuntman	Cascadeur
-{C:chips}+#1#{} Chips,\n{C:attention}-#2#{} hand size	{C:chips}+#1#{} Jetons,\n{C:attention}-#2#{} taille de main
-Invisible Joker	Joker invisible
-After {C:attention}#1#{} rounds,\nsell this card to\n{C:attention}Duplicate{} a random Joker\n{C:inactive}(Currently {C:attention}#2#{C:inactive}/#1#)	Après {C:attention}#1#{} manches,\nvends cette carte pour\n{C:attention}dupliquer{} un Joker au hasard\n{C:inactive}(Actuellement {C:attention}#2#{C:inactive}/#1#)
-Brainstorm	Remue-méninges
-Copies the ability\nof leftmost {C:attention}Joker	Copie la capacité\ndu {C:attention}Joker{} le plus à gauche
-Satellite	Satellite
-Earn {C:money}$#1#{} at end of\nround per unique {C:planet}Planet\ncard used this run\n{C:inactive}(Currently {C:money}$#2#{C:inactive})	Gagne {C:money}$#1#{} en fin de manche\npar carte {C:planet}Planète{} différente\nutilisée dans la partie\n{C:inactive}(Actuellement {C:money}$#2#{C:inactive})
-Shoot the Moon	Viser la Lune
-Each {C:attention}Queen{}\nheld in hand\ngives {C:mult}+#1#{} Mult	Chaque {C:attention}Dame\nen main donne\n{C:mult}+#1#{} Multi
-Driver's License	Permis de conduire
-{X:mult,C:white} X#1# {} Mult if you have\nat least {C:attention}16{} Enhanced\ncards in your full deck\n{C:inactive}(Currently {C:attention}#2#{C:inactive})	{X:mult,C:white} X#1# {} Multi si le jeu\ncomplet a au moins {C:attention}16\ncartes améliorées\n{C:inactive}(Actuellement {C:attention}#2#{C:inactive})
-Cartomancer	Cartomancien
-Create a {C:tarot}Tarot{} card\nwhen {C:attention}Blind{} is selected\n{C:inactive}(Must have room)	Crée une carte {C:tarot}Tarot\nquand une {C:attention}Blind{} est choisie\n{C:inactive}(Place requise)
-Astronomer	Astronome
-All {C:planet}Planet{} cards and\n{C:planet}Celestial Packs{} in\nthe shop are {C:attention}free	Les cartes {C:planet}Planète{} et\n{C:planet}paquets Céleste{} de\nla boutique sont {C:attention}gratuits
-Burnt Joker	Joker brûlé
-Upgrade the level of\nthe first {C:attention}discarded\npoker hand each round	Améliore le niveau de\nla première {C:attention}main défaussée\nde chaque manche
-Bootstraps	Tirant de botte
-{C:mult}+#1#{} Mult for every\n{C:money}$#2#{} you have\n{C:inactive}(Currently {C:mult}+#3#{C:inactive} Mult)	{C:mult}+#1#{} Multi pour chaque\ntranche de {C:money}$#2#{} possédée\n{C:inactive}(Actuellement {C:mult}+#3#{C:inactive} Multi)
-Canio	Canio
-This Joker gains {X:mult,C:white} X#1# {} Mult\nwhen a {C:attention}face{} card\nis destroyed\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	Ce Joker gagne {X:mult,C:white} X#1# {} Multi\nquand une {C:attention}figure{}\nest détruite\n{C:inactive}(Actuellement {X:mult,C:white} X#2# {C:inactive} Multi)
-Triboulet	Triboulet
-Played {C:attention}Kings{} and\n{C:attention}Queens{} each give\n{X:mult,C:white} X#1# {} Mult when scored	Les {C:attention}Rois{} et {C:attention}Dames\njoués donnent chacun\n{X:mult,C:white} X#1# {} Multi quand ils comptent
-Yorick	Yorick
-This Joker gains\n{X:mult,C:white} X#1# {} Mult every {C:attention}#2#{C:inactive} [#3#]{}\ncards discarded\n{C:inactive}(Currently {X:mult,C:white} X#4# {C:inactive} Mult)	Ce Joker gagne\n{X:mult,C:white} X#1# {} Multi toutes les {C:attention}#2#{C:inactive} [#3#]{}\ncartes défaussées\n{C:inactive}(Actuellement {X:mult,C:white} X#4# {C:inactive} Multi)
-Chicot	Chicot
-Disables effect of\nevery {C:attention}Boss Blind	Désactive l'effet de\nchaque {C:attention}Blind de boss
-Perkeo	Perkeo
-Creates a {C:dark_edition}Negative{} copy of\n{C:attention}1{} random {C:attention}consumable{}\ncard in your possession\nat the end of the {C:attention}shop	Crée une copie {C:dark_edition}négative\nd'{C:attention}1{} {C:attention}consommable{} au hasard\nen ta possession à la\nfin de la {C:attention}boutique
-The Fool	Le Mat
-Creates the last\n{C:tarot}Tarot{} or {C:planet}Planet{} card\nused during this run\n{C:tarot}The Fool excluded	Crée la dernière carte\n{C:tarot}Tarot{} ou {C:planet}Planète{}\nutilisée dans la partie\n{C:tarot}Le Mat exclu
-The Magician	Le Bateleur
-Enhances {C:attention}#1#{}\nselected cards to\n{C:attention}#2#s	Améliore {C:attention}#1#{} cartes\nchoisies en\n{C:attention}#2#
-The High Priestess	La Papesse
-Creates up to {C:attention}#1#\nrandom {C:planet}Planet{} cards\n{C:inactive}(Must have room)	Crée jusqu'à {C:attention}#1#\ncartes {C:planet}Planète{} au hasard\n{C:inactive}(Place requise)
-The Empress	L'Impératrice
-Enhances {C:attention}#1#\nselected cards to\n{C:attention}#2#s	Améliore {C:attention}#1#\ncartes choisies en\n{C:attention}#2#
-The Emperor	L'Empereur
-Creates up to {C:attention}#1#\nrandom {C:tarot}Tarot{} cards\n{C:inactive}(Must have room)	Crée jusqu'à {C:attention}#1#\ncartes {C:tarot}Tarot{} au hasard\n{C:inactive}(Place requise)
-The Hierophant	Le Pape
-The Lovers	L'Amoureux
-Enhances {C:attention}#1#{} selected\ncard into a\n{C:attention}#2#	Améliore {C:attention}#1#{} carte\nchoisie en\n{C:attention}#2#
-The Chariot	Le Chariot
-Justice	La Justice
-The Hermit	L'Ermite
-Doubles money\n{C:inactive}(Max of {C:money}$#1#{C:inactive})	Double ton argent\n{C:inactive}(Max. {C:money}$#1#{C:inactive})
-The Wheel of Fortune	La Roue de Fortune
-{C:green}#1# in #2#{} chance to add\n{C:dark_edition}Foil{}, {C:dark_edition}Holographic{}, or\n{C:dark_edition}Polychrome{} edition\nto a random {C:attention}Joker	{C:green}#1# chance sur #2#{} d'ajouter\nl'édition {C:dark_edition}métallisée{},\n{C:dark_edition}holographique{} ou {C:dark_edition}polychrome\nà un {C:attention}Joker{} au hasard
-Strength	La Force
-Increases rank of\nup to {C:attention}#1#{} selected\ncards by {C:attention}1	Augmente de {C:attention}1{} la\nvaleur d'au plus\n{C:attention}#1#{} cartes choisies
-The Hanged Man	Le Pendu
-Destroys up to\n{C:attention}#1#{} selected cards	Détruit jusqu'à\n{C:attention}#1#{} cartes choisies
-Death	La Mort
-Select {C:attention}#1#{} cards,\nconvert the {C:attention}left{} card\ninto the {C:attention}right{} card\n{C:inactive}(Drag to rearrange)	Choisis {C:attention}#1#{} cartes,\nla carte de {C:attention}gauche\ndevient celle de {C:attention}droite\n{C:inactive}(Glisse pour réordonner)
-Temperance	Tempérance
-Gives the total sell\nvalue of all current\nJokers {C:inactive}(Max of {C:money}$#1#{C:inactive})\n{C:inactive}(Currently {C:money}$#2#{C:inactive})	Donne la valeur de vente\ntotale de tes Jokers\n{C:inactive}(Max. {C:money}$#1#{C:inactive})\n{C:inactive}(Actuellement {C:money}$#2#{C:inactive})
-The Devil	Le Diable
-The Tower	La Maison Dieu
-The Star	L'Étoile
-Converts up to\n{C:attention}#1#{} selected cards\nto {C:attention}#2#{}	Convertit jusqu'à\n{C:attention}#1#{} cartes choisies\nen {C:attention}#2#{}
-The Moon	La Lune
-The Sun	Le Soleil
-Judgement	Le Jugement
-Creates a random\n{C:attention}Joker{} card\n{C:inactive}(Must have room)	Crée une carte\n{C:attention}Joker{} au hasard\n{C:inactive}(Place requise)
-The World	Le Monde
-Mercury	Mercure
-({C:attention}lvl.#1#){} Level up\n{C:attention}#2#\n{C:mult}+#3#{} Mult and\n{C:chips}+#4#{} chips	({C:attention}niv. #1#){} Améliore\n{C:attention}#2#\n{C:mult}+#3#{} Multi et\n{C:chips}+#4#{} Jetons
-Venus	Vénus
-Earth	Terre
-Mars	Mars
-Jupiter	Jupiter
-Saturn	Saturne
-Uranus	Uranus
-Neptune	Neptune
-Pluto	Pluton
-Planet X	Planète X
-Ceres	Cérès
-Eris	Éris
-Familiar	Familier
-Destroy {C:attention}1{} random\ncard in your hand, add\n{C:attention}#1#{} random {C:attention}Enhanced face\n{C:attention}cards{} to your hand	Détruit {C:attention}1{} carte au hasard\nde ta main, ajoute {C:attention}#1#\n{C:attention}figures améliorées\nau hasard à ta main
-Grim	Faucheuse
-Destroy {C:attention}1{} random\ncard in your hand,\nadd {C:attention}#1#{} random {C:attention}Enhanced\n{C:attention}Aces{} to your hand	Détruit {C:attention}1{} carte au hasard\nde ta main, ajoute {C:attention}#1#\n{C:attention}As améliorés{} au hasard\nà ta main
-Incantation	Incantation
-Destroy {C:attention}1{} random\ncard in your hand, add {C:attention}#1#\nrandom {C:attention}Enhanced numbered\n{C:attention}cards{} to your hand	Détruit {C:attention}1{} carte au hasard\nde ta main, ajoute {C:attention}#1#\n{C:attention}cartes numérotées améliorées\nau hasard à ta main
-Talisman	Talisman
-Add a {C:attention}Gold Seal{}\nto {C:attention}1{} selected\ncard in your hand	Ajoute un {C:attention}sceau doré\nà {C:attention}1{} carte choisie\nde ta main
-Aura	Aura
-Add {C:dark_edition}Foil{}, {C:dark_edition}Holographic{},\nor {C:dark_edition}Polychrome{} effect to\n{C:attention}1{} selected card in hand	Ajoute l'effet {C:dark_edition}métallisé{},\n{C:dark_edition}holographique{} ou {C:dark_edition}polychrome\nà {C:attention}1{} carte choisie en main
-Wraith	Spectre
-Creates a random\n{C:mult}Rare{C:attention} Joker{},\nsets money to {C:money}$0	Crée un {C:attention}Joker {C:mult}rare\nau hasard, met ton\nargent à {C:money}$0
-Sigil	Sigille
-Converts all cards\nin hand to a single\nrandom {C:attention}suit	Convertit toutes les cartes\nen main en une seule\n{C:attention}couleur{} au hasard
-Ouija	Ouija
-Converts all cards\nin hand to a single\nrandom {C:attention}rank\n{C:mult}-1{} hand size	Convertit toutes les cartes\nen main en une seule\n{C:attention}valeur{} au hasard\n{C:mult}-1{} taille de main
-Ectoplasm	Ectoplasme
-Add {C:dark_edition}Negative{} to\na random {C:attention}Joker,\n{C:mult}-#1#{} hand size	Ajoute {C:dark_edition}négatif{} à\nun {C:attention}Joker{} au hasard,\n{C:mult}-#1#{} taille de main
-Immolate	Immolation
-Destroys {C:attention}#1#{} random\ncards in hand,\ngain {C:money}$#2#	Détruit {C:attention}#1#{} cartes\nau hasard en main,\ngagne {C:money}$#2#
-Ankh	Ânkh
-Create a copy of a\nrandom {C:attention}Joker{}, destroy\nall other Jokers	Crée une copie d'un\n{C:attention}Joker{} au hasard, détruit\ntous les autres Jokers
-Deja Vu	Déjà vu
-Add a {C:mult}Red Seal{}\nto {C:attention}1{} selected\ncard in your hand	Ajoute un {C:mult}sceau rouge\nà {C:attention}1{} carte choisie\nde ta main
-Hex	Maléfice
-Add {C:dark_edition}Polychrome{} to a\nrandom {C:attention}Joker{}, destroy\nall other Jokers	Ajoute {C:dark_edition}polychrome{} à un\n{C:attention}Joker{} au hasard, détruit\ntous les autres Jokers
-Trance	Transe
-Add a {C:chips}Blue Seal{}\nto {C:attention}1{} selected\ncard in your hand	Ajoute un {C:chips}sceau bleu\nà {C:attention}1{} carte choisie\nde ta main
-Medium	Médium
-Add a {C:tarot}Purple Seal{}\nto {C:attention}1{} selected\ncard in your hand	Ajoute un {C:tarot}sceau violet\nà {C:attention}1{} carte choisie\nde ta main
-Cryptid	Cryptide
-Create {C:attention}#1#{} copies of\n{C:attention}1{} selected card\nin your hand	Crée {C:attention}#1#{} copies de\n{C:attention}1{} carte choisie\nde ta main
-The Soul	L'Âme
-Creates a\n{C:tarot}Legendary{} Joker\n{C:inactive}(Must have room)	Crée un Joker\n{C:tarot}légendaire\n{C:inactive}(Place requise)
-Black Hole	Trou noir
-Upgrade every\n{C:tarot}poker hand\nby {C:attention}1{} level	Améliore chaque\n{C:tarot}main de poker\nde {C:attention}1{} niveau
-Overstock	Surstock
-{C:attention}+1{} card slot\navailable in shop	{C:attention}+1{} emplacement de\ncarte en boutique
-Clearance Sale	Liquidation totale
-All cards and packs in\nshop are {C:attention}#1#%{} off	Toutes les cartes et\npaquets de la boutique\nsont à {C:attention}-#1#%
-Hone	Affûtage
-{C:dark_edition}Foil{}, {C:dark_edition}Holographic{}, and\n{C:dark_edition}Polychrome{} cards\nappear {C:attention}#1#X{} more often	Les cartes {C:dark_edition}métallisées{},\n{C:dark_edition}holographiques{} et {C:dark_edition}polychromes\napparaissent {C:attention}#1#X{} plus souvent
-Reroll Surplus	Surplus de relances
-Rerolls cost\n{C:money}$#1#{} less	Les relances coûtent\n{C:money}$#1#{} de moins
-Crystal Ball	Boule de cristal
-{C:attention}+1{} consumable slot	{C:attention}+1{} emplacement\nde consommable
-Telescope	Télescope
-{C:attention}Celestial Packs{} always\ncontain the {C:planet}Planet{}\ncard for your most\nplayed {C:attention}poker hand	Les {C:attention}paquets Céleste{} contiennent\ntoujours la carte {C:planet}Planète\nde ta {C:attention}main de poker\nla plus jouée
-Grabber	Grappin
-Permanently\ngain {C:chips}+#1#{} hand\nper round	Gagne définitivement\n{C:chips}+#1#{} main\npar manche
-Wasteful	Gaspilleur
-Permanently\ngain {C:mult}+#1#{} discard\neach round	Gagne définitivement\n{C:mult}+#1#{} défausse\npar manche
-Tarot Merchant	Marchand de tarots
-{C:tarot}Tarot{} cards appear\n{C:attention}#1#X{} more frequently\nin the shop	Les cartes {C:tarot}Tarot{} apparaissent\n{C:attention}#1#X{} plus souvent\nen boutique
-Planet Merchant	Marchand de planètes
-{C:planet}Planet{} cards appear\n{C:attention}#1#X{} more frequently\nin the shop	Les cartes {C:planet}Planète{} apparaissent\n{C:attention}#1#X{} plus souvent\nen boutique
-Seed Money	Capital de départ
-Raise the cap on\ninterest earned in\neach round to {C:money}$#1#{}	Augmente le plafond\ndes intérêts gagnés par\nmanche à {C:money}$#1#{}
-Blank	Vierge
-{C:inactive}Does nothing?	{C:inactive}Ne fait rien ?
-Magic Trick	Tour de magie
-{C:attention}Playing cards{} can\nbe purchased\nfrom the {C:attention}shop	Les {C:attention}cartes à jouer{} peuvent\nêtre achetées en\n{C:attention}boutique
-Hieroglyph	Hiéroglyphe
-{C:attention}-#1#{} Ante,\n{C:chips}-#1#{} hand\neach round	{C:attention}-#1#{} Ante,\n{C:chips}-#1#{} main\npar manche
-Director's Cut	Version longue
-Reroll Boss Blind\n{C:attention}1{} time per Ante,\n{C:money}$#1#{} per roll	Relance la Blind de boss\n{C:attention}1{} fois par Ante,\n{C:money}$#1#{} par relance
-Paint Brush	Pinceau
-Overstock Plus	Surstock plus
-Liquidation	Liquidation
-Glow Up	Relooking
-Reroll Glut	Excès de relances
-Omen Globe	Globe des présages
-{C:spectral}Spectral{} cards may\nappear in any of\nthe {C:attention}Arcana Packs	Les cartes {C:spectral}Spectrales{} peuvent\napparaître dans les\n{C:attention}paquets Arcanes
-Observatory	Observatoire
-{C:planet}Planet{} cards in your\n{C:attention}consumable{} area give\n{X:mult,C:white} X#1# {} Mult for their\nspecified {C:attention}poker hand	Les cartes {C:planet}Planète{} de ta zone\nde {C:attention}consommables{} donnent\n{X:mult,C:white} X#1# {} Multi pour leur\n{C:attention}main de poker
-Nacho Tong	Pince à nachos
-Recyclomancy	Recyclomancie
-Tarot Tycoon	Magnat des tarots
-Planet Tycoon	Magnat des planètes
-Money Tree	Arbre à argent
-Antimatter	Antimatière
-{C:dark_edition}+1{} Joker Slot	{C:dark_edition}+1{} emplacement de Joker
-Illusion	Illusion
-{C:attention}Playing cards{} in shop\nmay have an {C:attention}Enhancement{},\n{C:dark_edition}Edition{}, and/or a {C:attention}Seal{}	Les {C:attention}cartes à jouer{} en boutique\npeuvent avoir une {C:attention}amélioration{},\nune {C:dark_edition}édition{} ou un {C:attention}sceau
-Petroglyph	Pétroglyphe
-{C:attention}-#1#{} Ante,\n{C:mult}-#1#{} discard\neach round	{C:attention}-#1#{} Ante,\n{C:mult}-#1#{} défausse\npar manche
-Retcon	Retcon
-Reroll Boss Blind\n{C:attention}unlimited{} times,\n{C:money}$#1#{} per roll	Relance la Blind de boss\nde façon {C:attention}illimitée{},\n{C:money}$#1#{} par relance
-Palette	Palette
-Uncommon Tag	Badge peu commun
-Shop has a free\n{C:green}Uncommon Joker	La boutique a un\nJoker {C:green}peu commun{} gratuit
-Rare Tag	Badge rare
-Shop has a free\n{C:mult}Rare Joker	La boutique a un\nJoker {C:mult}rare{} gratuit
-Negative Tag	Badge négatif
-Next base edition shop\nJoker is free and\nbecomes {C:dark_edition}Negative	Le prochain Joker de base\nen boutique est gratuit\net devient {C:dark_edition}négatif
-Foil Tag	Badge métallisé
-Next base edition shop\nJoker is free and\nbecomes {C:dark_edition}Foil	Le prochain Joker de base\nen boutique est gratuit\net devient {C:dark_edition}métallisé
-Holographic Tag	Badge holographique
-Next base edition shop\nJoker is free and\nbecomes {C:dark_edition}Holographic	Le prochain Joker de base\nen boutique est gratuit\net devient {C:dark_edition}holographique
-Polychrome Tag	Badge polychrome
-Next base edition shop\nJoker is free and\nbecomes {C:dark_edition}Polychrome	Le prochain Joker de base\nen boutique est gratuit\net devient {C:dark_edition}polychrome
-Investment Tag	Badge d'investissement
-After defeating\nthe Boss Blind,\ngain {C:money}$#1#	Après avoir vaincu\nla Blind de boss,\ngagne {C:money}$#1#
-Voucher Tag	Badge de bon
-Adds one {C:attention}Voucher\nto the next shop	Ajoute un {C:attention}bon\nà la prochaine boutique
-Boss Tag	Badge de boss
-Rerolls the\n{C:attention}Boss Blind	Relance la\n{C:attention}Blind de boss
-Standard Tag	Badge standard
-Gives a free\n{C:attention}Mega Standard Pack	Donne un {C:attention}méga\npaquet standard{} gratuit
-Charm Tag	Badge charme
-Gives a free\n{C:tarot}Mega Arcana Pack	Donne un {C:tarot}méga\npaquet Arcanes{} gratuit
-Meteor Tag	Badge météore
-Gives a free\n{C:planet}Mega Celestial Pack	Donne un {C:planet}méga\npaquet Céleste{} gratuit
-Buffoon Tag	Badge bouffon
-Gives a free\n{C:attention}Mega Buffoon Pack	Donne un {C:attention}méga\npaquet bouffon{} gratuit
-Handy Tag	Badge pratique
-Gives {C:money}$#1#{} per played\n{C:chips}hand{} this run\n{C:inactive}(Will give {C:money}$#2#{C:inactive})	Donne {C:money}$#1#{} par {C:chips}main\njouée{} dans la partie\n{C:inactive}(Donnera {C:money}$#2#{C:inactive})
-Garbage Tag	Badge poubelle
-Gives {C:money}$#1#{} per unused\n{C:mult}discard{} this run\n{C:inactive}(Will give {C:money}$#2#{C:inactive})	Donne {C:money}$#1#{} par {C:mult}défausse\nnon utilisée{} dans la partie\n{C:inactive}(Donnera {C:money}$#2#{C:inactive})
-Ethereal Tag	Badge éthéré
-Gives a free\n{C:spectral}Spectral Pack	Donne un {C:spectral}paquet\nspectral{} gratuit
-Coupon Tag	Badge coupon
-Initial cards and\nbooster packs in next\nshop are free	Les premières cartes et\nles paquets de la prochaine\nboutique sont gratuits
-Double Tag	Badge double
-Gives a copy of the\nnext selected {C:attention}Tag{}\n{C:attention}Double Tag excluded	Donne une copie du\nprochain {C:attention}badge{} choisi\n{C:attention}Badge double exclu
-Juggle Tag	Badge jonglage
-{C:attention}+#1#{} hand size\nnext round	{C:attention}+#1#{} taille de main\nla manche suivante
-D6 Tag	Badge D6
-Rerolls in next shop\nstart at {C:money}$0	Les relances de la prochaine\nboutique commencent à {C:money}$0
-Top-up Tag	Badge recharge
-Create up to {C:attention}#1#\n{C:chips}Common{} Jokers\n{C:inactive}(Must have room)	Crée jusqu'à {C:attention}#1#\nJokers {C:chips}communs\n{C:inactive}(Place requise)
-Speed Tag	Badge vitesse
-Gives {C:money}$#1#{} per skipped\nBlind this run\n{C:inactive}(Will give {C:money}$#2#{C:inactive})	Donne {C:money}$#1#{} par Blind\npassée dans la partie\n{C:inactive}(Donnera {C:money}$#2#{C:inactive})
-Orbital Tag	Badge orbital
-Upgrade {C:attention}#1#\nby {C:attention}#2# levels	Améliore {C:attention}#1#\nde {C:attention}#2# niveaux
-Economy Tag	Badge économie
-Doubles your money\n{C:inactive}(Max of {C:money}$#1#{C:inactive})	Double ton argent\n{C:inactive}(Max. {C:money}$#1#{C:inactive})
-Small Blind	Petite blind
-Big Blind	Grosse blind
-The Ox	Le Bœuf
-Playing a #1#\nsets money to $0	Jouer {C:attention}#1#\nmet ton argent à $0
-The House	La Maison
-First hand is\ndrawn face down	La première main est\npiochée face cachée
-The Club	Le Trèfle
-All Club cards\nare debuffed	Toutes les cartes de\nTrèfle sont affaiblies
-The Fish	Le Poisson
-Cards drawn face down\nafter each hand played	Les cartes piochées après\nchaque main jouée sont\nface cachée
-The Window	La Fenêtre
-All Diamond cards\nare debuffed	Toutes les cartes de\nCarreau sont affaiblies
-The Hook	Le Crochet
-Discards 2 random\ncards per hand played	Défausse 2 cartes au hasard\npar main jouée
-The Manacle	Les Menottes
--1 Hand Size	-1 taille de main
-The Wall	Le Mur
-Extra large blind	Blind très grosse
-The Wheel	La Roue
- in 7 cards get\ndrawn face down	 carte sur 7 est\npiochée face cachée
-The Arm	Le Bras
-Decrease level of\nplayed poker hand	Baisse le niveau de\nla main de poker jouée
-The Psychic	Le Médium
-Must play 5 cards	Il faut jouer 5 cartes
-The Goad	L'Aiguillon
-All Spade cards\nare debuffed	Toutes les cartes de\nPique sont affaiblies
-The Water	L'Eau
-Start with\n0 discards	Commence avec\n0 défausse
-The Serpent	Le Serpent
-After Play or Discard,\nalways draw 3 cards	Après avoir joué ou défaussé,\npioche toujours 3 cartes
-The Pillar	Le Pilier
-Cards played previously\nthis Ante are debuffed	Les cartes déjà jouées\npendant cette Ante\nsont affaiblies
-The Eye	L'Œil
-No repeat hand\ntypes this round	Pas deux fois le même\ntype de main cette manche
-The Mouth	La Bouche
-Play only 1 hand\ntype this round	Un seul type de main\npeut être joué cette manche
-The Plant	La Plante
-All face cards\nare debuffed	Toutes les figures\nsont affaiblies
-The Needle	L'Aiguille
-Play only 1 hand	Une seule main à jouer
-The Head	La Tête
-All Heart cards\nare debuffed	Toutes les cartes de\nCœur sont affaiblies
-The Tooth	La Dent
-Lose $1 per\ncard played	Perds $1 par\ncarte jouée
-The Mark	La Marque
-All face cards are\ndrawn face down	Toutes les figures sont\npiochées face cachée
-The Flint	Le Silex
-Base Chips and\nMult are halved	Les Jetons et le Multi\nde base sont divisés par 2
-Crimson Heart	Cœur cramoisi
-One random Joker\ndisabled every hand	Un Joker au hasard est\ndésactivé à chaque main
-Cerulean Bell	Cloche céruléenne
-Forces 1 card to\nalways be selected	Force 1 carte à être\ntoujours choisie
-Amber Acorn	Gland ambré
-Flips and shuffles\nall Joker cards	Retourne et mélange\ntous les Jokers
-Verdant Leaf	Feuille verdoyante
-All cards debuffed\nuntil 1 Joker sold	Toutes les cartes sont\naffaiblies jusqu'à la\nvente d'1 Joker
-Violet Vessel	Vase violet
-Very large blind	Blind gigantesque
-Bonus Card	Carte bonus
-Mult Card	Carte multi
-Wild Card	Carte sauvage
-Can be used\nas any suit	Compte comme\nn'importe quelle couleur
-Glass Card	Carte de verre
-{X:mult,C:white} X#1# {} Mult\n{C:green}#2# in #3#{} chance to\ndestroy card	{X:mult,C:white} X#1# {} Multi\n{C:green}#2# chance sur #3#{} de\ndétruire la carte
-Steel Card	Carte d'acier
-{X:mult,C:white} X#1# {} Mult\nwhile this card\nstays in hand	{X:mult,C:white} X#1# {} Multi\ntant que cette carte\nreste en main
-Stone Card	Carte de pierre
-{C:chips}+#1#{} Chips\nno rank or suit	{C:chips}+#1#{} Jetons\nsans valeur ni couleur
-Gold Card	Carte dorée
-{C:money}$#1#{} if this\ncard is held in hand\nat end of round	{C:money}$#1#{} si cette carte\nest en main en\nfin de manche
-Lucky Card	Carte chanceuse
-{C:green}#1# in #3#{} chance\nfor {C:mult}+#2#{} Mult\n{C:green}#1# in #5#{} chance\nto win {C:money}$#4#	{C:green}#1# chance sur #3#{} de\ndonner {C:mult}+#2#{} Multi\n{C:green}#1# chance sur #5#{} de\ngagner {C:money}$#4#
-Foil	Métallisé
-{C:chips}+#1#{} chips	{C:chips}+#1#{} Jetons
-Holographic	Holographique
-Polychrome	Polychrome
-{X:mult,C:white} X#1# {} Mult	{X:mult,C:white} X#1# {} Multi
-Negative	Négatif
-{C:dark_edition}+#1#{} Joker slot	{C:dark_edition}+#1#{} emplacement de Joker
-Gold Seal	Sceau doré
-Earn {C:money}$3{} when this\ncard is played\nand scores	Gagne {C:money}$3{} quand cette\ncarte est jouée\net compte
-Red Seal	Sceau rouge
-Retrigger this\ncard {C:attention}1{} time	Redéclenche cette\ncarte {C:attention}1{} fois
-Blue Seal	Sceau bleu
-Creates the {C:planet}Planet{} card\nfor final played {C:attention}poker hand{}\nof round if {C:attention}held{} in hand\n{C:inactive}(Must have room)	Crée la carte {C:planet}Planète\nde la dernière {C:attention}main de poker\njouée de la manche si la\ncarte est {C:attention}en main\n{C:inactive}(Place requise)
-Purple Seal	Sceau violet
-Creates a {C:tarot}Tarot{} card\nwhen {C:attention}discarded\n{C:inactive}(Must have room)	Crée une carte {C:tarot}Tarot\nquand elle est {C:attention}défaussée\n{C:inactive}(Place requise)
-Arcana Pack	Paquet Arcanes
-Choose {C:attention}#1#{} of up to\n{C:attention}#2#{C:tarot} Tarot{} cards to\nbe used immediately	Choisis {C:attention}#1#{} parmi jusqu'à\n{C:attention}#2#{C:tarot} cartes Tarot{} à\nutiliser immédiatement
-Jumbo Arcana Pack	Paquet Arcanes jumbo
-Mega Arcana Pack	Méga paquet Arcanes
-Celestial Pack	Paquet Céleste
-Choose {C:attention}#1#{} of up to\n{C:attention}#2#{C:planet} Planet{} cards to\nbe used immediately	Choisis {C:attention}#1#{} parmi jusqu'à\n{C:attention}#2#{C:planet} cartes Planète{} à\nutiliser immédiatement
-Jumbo Celestial Pack	Paquet Céleste jumbo
-Mega Celestial Pack	Méga paquet Céleste
-Standard Pack	Paquet standard
-Choose {C:attention}#1#{} of up to\n{C:attention}#2#{C:attention} Playing{} cards to\nadd to your deck	Choisis {C:attention}#1#{} parmi jusqu'à\n{C:attention}#2#{C:attention} cartes à jouer{} à\najouter à ton jeu
-Jumbo Standard Pack	Paquet standard jumbo
-Mega Standard Pack	Méga paquet standard
-Buffoon Pack	Paquet bouffon
-Choose {C:attention}#1#{} of up to\n{C:attention}#2#{C:attention} Joker{} cards	Choisis {C:attention}#1#{} parmi jusqu'à\n{C:attention}#2#{C:attention} cartes Joker
-Jumbo Buffoon Pack	Paquet bouffon jumbo
-Mega Buffoon Pack	Méga paquet bouffon
-Spectral Pack	Paquet spectral
-Choose {C:attention}#1#{} of up to\n{C:attention}#2#{C:spectral} Spectral{} cards to\nbe used immediately	Choisis {C:attention}#1#{} parmi jusqu'à\n{C:attention}#2#{C:spectral} cartes Spectrales{} à\nutiliser immédiatement
-Jumbo Spectral Pack	Paquet spectral jumbo
-Mega Spectral Pack	Méga paquet spectral
-Red Deck	Jeu rouge
-{C:mult}+#1#{} discard\nevery round	{C:mult}+#1#{} défausse\npar manche
-Jack	Valet
-Queen	Dame
-King	Roi
-Ace	As
-Spade	Pique
-Heart	Cœur
-Club	Trèfle
-Diamond	Carreau
-Spades	Piques
-Hearts	Cœurs
-Clubs	Trèfles
-Diamonds	Carreaux
- Mult	 Multi
-Active!	Actif !
- remaining	 restantes
-[poker hand]	[main de poker]
-\020 Mult	\020 Multi
+# Jokeria in French: the English text as in the source, a tab, the translation (see tools/lang.py).
+# \002 and the like are colour codes (src/gfx.h); \177 to \203 are the suits and the delete key.
+Street Busker	Musicien des rues
+\003+3\020 Multi and\n\002+10\020 Points	\003+3\020 Multi et\n\002+10\020 Points
+Red Lantern	Lanterne rouge
+Each scoring \004red\020 card\n(\200 or \202) gives \003+2\020 Multi	Chaque carte \004rouge\020 qui\ncompte (\200 ou \202) donne\n\003+2\020 Multi
+Night Owl	Hibou de nuit
+Each scoring \004black\020 card\n(\177 or \201) gives \002+12\020 Points	Chaque carte \004noire\020 qui\ncompte (\177 ou \201) donne\n\002+12\020 Points
+Low Tide	Marée basse
+Each scoring card\nfrom \0042 to 5\020 gives\n\003+3\020 Multi	Chaque carte qui compte\nde \0042 à 5\020 donne\n\003+3\020 Multi
+Seven Seas	Sept mers
+Each scoring \0047\020\ngives \003+7\020 Multi	Chaque \0047\020 qui compte\ndonne \003+7\020 Multi
+Matchmaker	Entremetteuse
+\002+25\020 Points for each\nrank that appears\n\004twice or more\020 in the hand	\002+25\020 Points par valeur\nprésente \004au moins deux\nfois\020 dans la main
+Tightrope	Funambule
+\003+12\020 Multi if you\nplay exactly \0043 cards	\003+12\020 Multi si vous\njouez \004exactement 3 cartes
+Penny Jar	Tirelire
+\003+1\020 Multi for every\n\0054 coins\020 you have	\003+1\020 Multi pour chaque\ntranche de \0054 écus\020\nque vous avez
+Lucky Clover	Trèfle porte-bonheur
+Each scoring \201 has\n\0041 chance in 3\020 to\ngive \0051 coin	Chaque \201 qui compte a\n\0041 chance sur 3\020 de\ndonner \0051 écu
+Stagehand	Machiniste
+Earn \0052 coins\020 at the\nend of each table	Gagnez \0052 écus\020 à la\nfin de chaque table
+Encore	Rappel
+On the \004last hand\020\nof a table: \002+20\020\nPoints and \016x1.5\020 Multi	À la \004dernière main\020\nd'une table : \002+20\020\nPoints et \016x1,5\020 Multi
+Pickpocket	Pickpocket
+Earn \0051 coin\020 for each\ndiscard of \0044 cards\020\nor more	Gagnez \0051 écu\020 par\ndéfausse de \0044 cartes\020\nou plus
+Ringmaster	Monsieur Loyal
+\016x1.5\020 Multi when\n\0045 cards\020 score	\016x1,5\020 Multi quand\n\0045 cartes\020 comptent
+Fire-Eater	Cracheur de feu
+Gains \003+1\020 Multi each\ntime you play a\n\004Flush	Gagne \003+1\020 Multi à\nchaque \004Couleur\020 jouée
+Strongman	Hercule de foire
+\016x3\020 Multi if every\nscoring card is a\n\004J, Q or K	\016x3\020 Multi si toutes\nles cartes qui comptent\nsont des \004V, D ou R
+Carousel	Manège
+\003+0 to +10\020 Multi,\na new spin\neach hand	\003+0 à +10\020 Multi,\nun nouveau tour\nà chaque main
+Royal Court	Cour royale
+\016x2\020 Multi if a \004K\020\nand a \004Q\020 both score	\016x2\020 Multi si un \004R\020\net une \004D\020 comptent
+Ace Pilot	As du ciel
+Each scoring \004Ace\020\ngives \016x1.5\020 Multi	Chaque \004As\020 qui compte\ndonne \016x1,5\020 Multi
+Snowball	Boule de neige
+Gains \002+10\020 Points\neach time you\n\004win a table	Gagne \002+10\020 Points\nà chaque \004table\ngagnée
+The Twins	Les Jumeaux
+\003+10\020 Multi on a\n\004Two Pair\020 or a\n\004Full House	\003+10\020 Multi sur une\n\004Double paire\020 ou\nun \004Full
+Lamplighter	Allumeur de réverbères
+Each \202 left \004in your\nhand\020 gives \003+3\020 Multi	Chaque \202 gardé \004en\nmain\020 donne \003+3\020 Multi
+Usurer	Usurier
+Interest goes up\nto \0052 coins\020 more	Les intérêts montent\njusqu'à \0052 écus\020 de plus
+Grand Finale	Grand final
+\016x3\020 Multi when you\nhave \004no discards\020 left	\016x3\020 Multi quand il ne\nreste \004aucune défausse
+Phoenix	Phénix
+Lose a table: play\nit \004again\020, once.\nThen it flies away	Table perdue : rejouez-la\n\004une fois\020. Puis il\ns'envole
+Prism	Prisme
+\016x1\020 Multi, plus \016x0.5\020\nfor each \004suit\020\namong scoring cards	\016x1\020 Multi, plus \016x0,5\020\npar \004enseigne\020 parmi les\ncartes qui comptent
+Gambler	Parieur
+\016x4\020 Multi, but\n\0041 chance in 4\020\nof \016x0.5\020 instead	\016x4\020 Multi, mais\n\0041 chance sur 4\020\nd'avoir \016x0,5\020 à la place
+High Card	Carte haute
+Pair	Paire
+Two Pair	Double paire
+Three of a Kind	Brelan
+Straight	Quinte
+Flush	Couleur
+Full House	Full
+Four of a Kind	Carré
+Straight Flush	Quinte flush
+The Clock	L'Horloge
+Only 3 hands	3 mains seulement
+The Drought	La Sécheresse
+Only 1 discard	1 défausse seulement
+The Weight	Le Poids
+6 cards in hand	6 cartes en main
+The Taxman	Le Percepteur
+Each discard costs 2 coins	Chaque défausse coûte 2 écus
+The Wind	Le Vent
+After each hand, a new hand\nis dealt from the whole deck	Après chaque main, une main\nneuve est tirée de tout le paquet
+The Tower	La Tour
+The target is half again\nas high	Le score à atteindre est\nune fois et demie plus haut
+Bronze Table	Table de bronze
+Silver Table	Table d'argent
+Gold Table	Table d'or
+\020 Multi	\020 Multi
+\020 Points	\020 Points
+Mult	Multi
+J	V
+Q	D
+K	R
+A	A
++1	+1
+(now 	(maintenant 
 Common	Commun
 Uncommon	Peu commun
 Rare	Rare
-Legendary	Légendaire
-%1 of %2	%1 de %2
-\003Debuffed\020\nScores no chips\nand all abilities\nare disabled	\003Affaiblie\020\nNe donne aucun jeton\net toutes ses capacités\nsont désactivées
-\020 chips	\020 jetons
-\020 extra chips	\020 jetons en plus
-compatible	compatible
-incompatible	incompatible
-Tarot	Tarot
-Planet	Planète
-Spectral	Spectrale
-Voucher	Bon
-PLAY	JOUER
-OPTIONS	OPTIONS
-QUIT	QUITTER
-CREDITS	CRÉDITS
-New Run	Nouvelle partie
-Continue	Continuer
-\003+1\020 discard\nevery round	\003+1\020 défausse\npar manche
-Round	Manche
-Ante	Ante
-Money	Argent
-Best Hand	Meilleure main
-White Stake	Mise blanche
-Base Difficulty	Difficulté de base
-Wins \004	Victoires \004
-\001   Best Ante \004	\001   Meilleure ante \004
-\001   Best Hand \003	\001   Meilleure main \003
-Seed \004	Graine \004
-CONTINUE	CONTINUER
-Back	Retour
-\004Arrows\020  move between cards, Jokers, buttons\n\004OK\020  select a card, or pick a Joker/item and\n     choose \006Sell\020, \003Use\020, \005Buy\020...\n\004EXE\020  \002Play Hand\020      \004DEL\020  \003Discard\020\n\004shift\020  sort the hand by rank or suit\n\004alpha\020 + \004left/right\020  move a Joker or card\n\004toolbox\020  Run Info      \004var\020  view deck\n\004back\020  back / Options     \004home\020  save, quit\nHold \004OK\020 or \004EXE\020 to speed up scoring.\n\nPlay poker hands: score = \002Chips\020 x \003Mult\020.\nBeat each Blind's score before your\nhands run out. Buy Jokers in the shop\nand beat the Ante 8 Boss Blind to win!	\004Flèches\020  aller entre cartes, Jokers et boutons\n\004OK\020  choisir une carte, ou prendre un Joker/objet\n     puis \006Vendre\020, \003Utiliser\020, \005Acheter\020...\n\004EXE\020  \002Jouer la main\020      \004DEL\020  \003Défausser\020\n\004shift\020  trier la main par valeur ou couleur\n\004alpha\020 + \004gauche/droite\020  déplacer un Joker ou une carte\n\004Boîte à outils\020  Infos partie    \004var\020  voir le jeu\n\004Retour\020  retour / Options    \004Accueil\020  sauver, quitter\nMaintiens \004OK\020 ou \004EXE\020 pour accélérer le score.\n\nJoue des mains de poker : score = \002Jetons\020 x \003Multi\020.\nBats le score de chaque Blind avant d'être\nà court de mains. Achète des Jokers en boutique\net bats la Blind de boss de l'Ante 8 pour gagner !
+Raises the level of\n\004	Monte d'un niveau :\n\004
+\020 by one:\n\002+	\020\n\002+
+\020 Points, \003+	\020 Points, \003+
+Now level 	Niveau actuel 
+Lesson	Leçon
+Salon 	Salon 
+Target	Objectif
+Score	Score
+Hands 	Mains 
+Discards 	Défausses 
+Deck 	Paquet 
+level 	niveau 
+Pick up to 5 cards	Choisissez jusqu'à 5 cartes
+EXE: play   \203: discard   shift: sort	EXE : jouer   \203 : défausser   shift : trier
+Score at least	Score à atteindre
+Reward: 	Gain : 
+ coins	 écus
+Gold Table: 	Table d'or : 
+Play	Jouer
+Table won!	Table gagnée !
+Hands left	Mains restantes
+Interest (1 per 10)	Intérêts (1 pour 10)
+Total	Total
+Shop	Boutique
+Sold	Vendu
+Reroll 	Relancer 
+Next	Suite
+New items for the shop	De nouveaux articles en boutique
+On to the next table	À la table suivante
+up: your Jokers (OK twice: sell; shift + arrows: order)	haut : vos Jokers (OK deux fois : vendre ; shift + flèches : ordre)
+OK again: sell for 	OK encore : vendre 
+You won!	Gagné !
+Game over	Perdu
+Best hand	Meilleure main
+Tables won	Tables gagnées
+Best salon ever	Meilleur salon
+Keep going	Continuer
+New run	Nouvelle partie
+Main menu	Menu principal
+Poker hands	Mains de poker
+lvl 	niv. 
 How to play	Comment jouer
-Credits	Crédits
-Inspired by \004Balatro\020 by LocalThunk.\nNot affiliated with LocalThunk or Playstack.\n\nCard, Joker and interface art adapted\nfrom Balatro by LocalThunk.\nRules and card texts follow the game.\nFont: \004m6x11\020 by Daniel Linssen.\n\nMade by \004Mason Chen\020 as part of NumPlay.\n\nPlease support the original game!	Inspiré de \004Balatro\020 de LocalThunk.\nSans lien avec LocalThunk ni Playstack.\n\nImages des cartes, Jokers et interface\nadaptées de Balatro de LocalThunk.\nRègles et textes des cartes comme le jeu.\nPolice : \004m6x11\020 de Daniel Linssen.\n\nFait par \004Mason Chen\020 pour NumPlay.\n\nSoutiens le jeu original !
-Game Speed	Vitesse du jeu
-How to Play	Comment jouer
-Main Menu	Menu principal
-Options	Options
-Game Speed < 	Vitesse < 
-New run?	Nouvelle partie ?
-The current run will be lost.	La partie en cours sera perdue.
+Reach the target score at each table.	Atteignez le score demandé à chaque table.
+Pick up to 5 cards and play a poker hand:	Jouez une main de poker de 5 cartes au plus :
+\002Points\020 (the hand's, plus each scoring	les \002Points\020 (de la main, et la valeur de
+card's rank) times \003Multi\020 is your score.	chaque carte qui compte) fois le \003Multi\020.
+Jokers add their effects, left to right.	Les Jokers ajoutent leurs effets, de gauche à droite.
+Won tables pay \005coins\020: buy Jokers and	Les tables gagnées rapportent des \005écus\020 : Jokers
+Lessons in the shop. 8 salons to win.	et Leçons en boutique. 8 salons pour gagner.
+Arrows: move     OK: pick a card	Flèches : se déplacer     OK : choisir une carte
+EXE: play the hand     \203: discard	EXE : jouer la main     \203 : défausser
+shift: sort by rank or suit	shift : trier par valeur ou par enseigne
+shift + arrows: move a Joker	shift + flèches : déplacer un Joker
+toolbox: poker hands     Back: menu	boîte à outils : mains     Retour : menu
+Home: save and quit	Maison : sauvegarder et quitter
+Resume	Reprendre
+Menu	Menu
+Give up this run?	Abandonner la partie ?
 Yes	Oui
 No	Non
-Poker Hands	Mains de poker
-Blinds	Blinds
-Vouchers	Bons
-lvl.	niv.
-Score at least	Score minimum
-Reward:	Gain :
-No Vouchers redeemed yet	Aucun bon utilisé pour l'instant
-left/right: tabs     back: close	gauche/droite : onglets     retour : fermer
-Remaining	Restantes
-Full Deck	Jeu complet
-Play Hand	Jouer\nla main
-Sort Hand	Trier la main
-Rank	Rang
-Suit	Coul.
-Discard	Défausser
-SELL\n	VENDRE\n
-USE	UTILISER
-Select	Choisir
-Defeated	Vaincue
-Skipped	Passée
-Upcoming	À venir
-or	ou
-Skip Blind	Passer\nla blind
-Reroll Boss\n$10	Relance boss\n$10
-Cash Out: 	Encaisser : 
-Remaining Hands ($1 each)	Mains restantes ($1 chacune)
-Defeat the Boss Blind	Vaincre la Blind de boss
- interest per $5 (	 d'intérêt par $5 (
- max)	 max)
-Next\nRound	Manche\nsuivante
-Reroll	Relancer
-ANTE 	ANTE 
- VOUCHER	 : BON
-REDEEM	ÉCHANGER
-OPEN	OUVRIR
-BUY	ACHETER
-BUY\n& USE	ACHETER\n& UTILISER
-Choose 	Choisis 
-Skip	Passer
-SELECT	CHOISIR
-Better luck\nnext time!	Plus de chance\nla prochaine fois !
-Don't give up!	N'abandonne pas !
-So close!	Si près !
-The house\nalways wins...	La banque\ngagne toujours...
-You did it!	Tu as réussi !
-Unbelievable!	Incroyable !
-A true\ncard shark!	Un vrai\nas des cartes !
-YOU WIN!	VICTOIRE !
-GAME OVER	PARTIE PERDUE
-Ante \004	Ante \004
-\001    Round \004	\001    Manche \004
-Most Played Hand	Main la plus jouée
-Cards Played	Cartes jouées
-Cards Discarded	Cartes défaussées
-Cards Purchased	Cartes achetées
-Times Rerolled	Relances
-Seed	Graine
-Endless\nMode	Mode\nsans fin
-New\nRun	Nouvelle\npartie
-Main\nMenu	Menu\nprincipal
-Mult	Multi
-+3 Hand Size	+3 taille de main
-Debuffed	Affaiblie
-Again!	Encore !
-X2 Mult	X2 Multi
-+10 Mult	+10 Multi
-X1.5 Mult	X1.5 Multi
-Not Allowed!	Interdit !
-+1 Tarot	+1 Tarot
-Saved by Mr. Bones	Sauvé par M. Os
-+1 Planet	+1 Planète
-Nope!	Raté !
-Improve your run!	Améliore ta partie !
-to earn	pour gagner
-Choose your\nnext Blind	Choisis ta\nprochaine Blind
-Round\nscore	Score
-Run\nInfo	Infos\npartie
-Hands	Mains
-Discards	Défausses
-Upgrade!	Amélioré !
-Reset	Réinit.
-Saved!	Sauvé !
-Eaten!	Mangé !
-Extinct!	Éteint !
-Safe!	Sauf !
-Melted!	Fondu !
-Drank!	Bu !
-+1 Spectral	+1 Spectrale
-Copied!	Copié !
-Gold	Or
-Level Up!	Niveau sup. !
-Value Up!	Valeur sup. !
-Boss Disabled!	Boss désactivé !
-Duplicated!	Dupliqué !
-+2 Mult	+2 Multi
-+3 Mult	+3 Multi
-+3 Hands	+3 mains
-+2 Jokers	+2 Jokers
-+1 Stone	+1 pierre
--X0.01 Mult	-X0.01 Multi
--1 Mult	-1 Multi
--4 Mult	-4 Multi
-+1 Mult	+1 Multi
-Flush Five	Quintuple couleur
-Flush House	Full couleur
-Five of a Kind	Quintuple
-Straight Flush	Quinte flush
-Four of a Kind	Carré
-Full House	Full
-Flush	Couleur
-Straight	Quinte
-Three of a Kind	Brelan
-Two Pair	Double paire
-Pair	Paire
-High Card	Carte haute
+Continue	Reprendre
+Quit	Quitter
+A poker game with Jokers	Un jeu de poker avec des Jokers
+Best salon 	Meilleur salon 
+   Best hand 	   Meilleure main 
+Jokeria, a Calcade game	Jokeria, un jeu Calcade
diff --git a/games/balatro/lang/zh.txt b/games/balatro/lang/zh.txt
index aa61e87..7af3e39 100644
--- a/games/balatro/lang/zh.txt
+++ b/games/balatro/lang/zh.txt
@@ -1,764 +1,155 @@
-# Balatro in Chinese: the English text as in the source, a tab, the translation (see tools/lang.py).
-# Names and descriptions (src/texts.h) in the game's markup: {C:mult}...{} a colour, #1# a value;
-# other texts: \004 and the like are colour codes (src/gfx.h). Terms as in the game's Chinese
-# version (筹码, 倍率, 盲注...). A Chinese letter is 12 pixels wide: tooltip lines stay within 12-13.
-# Each letter no other text uses costs NumPlay-Chinese about 18 bytes: the texts keep to common ones.
-Joker	小丑
-{C:mult}+#1#{} Mult	{C:mult}+#1#{}倍率
-Greedy Joker	贪婪小丑
-Played cards with\n{C:attention}#2#{} suit give\n{C:mult}+#1#{} Mult when scored	打出的{C:attention}#2#{}牌\n在计分时给予\n{C:mult}+#1#{}倍率
-Lusty Joker	色欲小丑
-Played cards with\n{C:mult}#2#{} suit give\n{C:mult}+#1#{} Mult when scored	打出的{C:mult}#2#{}牌\n在计分时给予\n{C:mult}+#1#{}倍率
-Wrathful Joker	愤怒小丑
-Played cards with\n{C:spades}#2#{} suit give\n{C:mult}+#1#{} Mult when scored	打出的{C:spades}#2#{}牌\n在计分时给予\n{C:mult}+#1#{}倍率
-Gluttonous Joker	暴食小丑
-Jolly Joker	开心小丑
-{C:mult}+#1#{} Mult if played\nhand contains\na {C:attention}#2#	如果打出的牌中\n包含{C:attention}#2#\n{C:mult}+#1#{}倍率
-Zany Joker	古怪小丑
-Mad Joker	疯狂小丑
-Crazy Joker	狂野小丑
-Droll Joker	滑稽小丑
-Sly Joker	狡猾小丑
-{C:chips}+#1#{} Chips if played\nhand contains\na {C:attention}#2#	如果打出的牌中\n包含{C:attention}#2#\n{C:chips}+#1#{}筹码
-Wily Joker	诡诈小丑
-Clever Joker	聪明小丑
-Devious Joker	阴险小丑
-Crafty Joker	精明小丑
-Half Joker	半张小丑
-{C:mult}+#1#{} Mult if played\nhand contains\n{C:attention}#2#{} or fewer cards	如果打出的牌\n不多于{C:attention}#2#{}张\n{C:mult}+#1#{}倍率
-Joker Stencil	小丑模板
-{X:mult,C:white} X1 {} Mult for each\nempty {C:attention}Joker{} slot\nJoker Stencil included\n{C:inactive}(Currently {X:mult,C:white} X#1# {C:inactive})	每个空的{C:attention}小丑{}槽位\n给予{X:mult,C:white} X1 {}倍率\n(含小丑模板本身)\n{C:inactive}(当前为{X:mult,C:white} X#1# {C:inactive})
-Four Fingers	四指
-All {C:attention}Flushes{} and\n{C:attention}Straights{} can be\nmade with {C:attention}4{} cards	所有{C:attention}同花{}和{C:attention}顺子\n只需{C:attention}4{}张牌\n即可组成
-Mime	哑剧演员
-Retrigger all\ncard {C:attention}held in\n{C:attention}hand{} abilities	重新触发所有\n{C:attention}手牌中{}的牌的\n能力
-Credit Card	信用卡
-Go up to\n{C:mult}-$#1#{} in debt	资金最多可为\n{C:mult}-$#1#
-Ceremonial Dagger	仪式匕首
-When {C:attention}Blind{} is selected,\ndestroy Joker to the right\nand permanently add {C:attention}double\nits sell value to this {C:mult}Mult\n{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)	选择{C:attention}盲注{}时\n摧毁右边的小丑牌\n并将其售价的{C:attention}两倍\n永久加到此牌的{C:mult}倍率\n{C:inactive}(当前为{C:mult}+#1#{C:inactive}倍率)
-Banner	旗帜
-{C:chips}+#1#{} Chips for\neach remaining\n{C:attention}discard	每剩余一次\n{C:attention}弃牌\n{C:chips}+#1#{}筹码
-Mystic Summit	神秘之峰
-{C:mult}+#1#{} Mult when\n{C:attention}#2#{} discards\nremaining	剩余弃牌次数\n为{C:attention}#2#{}时\n{C:mult}+#1#{}倍率
-Marble Joker	大理石小丑
-Adds one {C:attention}Stone{} card\nto deck when\n{C:attention}Blind{} is selected	选择{C:attention}盲注{}时\n向牌组中加入\n一张{C:attention}石头牌
-Loyalty Card	积分卡
-{X:mult,C:white} X#1# {} Mult every\n{C:attention}#2#{} hands played\n{C:inactive}#3#	每打出{C:attention}#2#{}次牌\n给予{X:mult,C:white} X#1# {}倍率\n{C:inactive}#3#
-8 Ball	8号球
-{C:green}#1# in #2#{} chance for each\nplayed {C:attention}8{} to create a\n{C:tarot}Tarot{} card when scored\n{C:inactive}(Must have room)	每张打出的{C:attention}8{}计分时\n有{C:green}#1#/#2#{}的几率\n生成一张{C:tarot}塔罗牌\n{C:inactive}(必须有空位)
-Misprint	印错
-Dusk	黄昏
-Retrigger all played\ncards in {C:attention}final\n{C:attention}hand{} of round	重新触发每回合\n{C:attention}最后一次出牌{}中\n所有打出的牌
-Raised Fist	致胜之拳
-Adds {C:attention}double{} the rank\nof {C:attention}lowest{} ranked card\nheld in hand to Mult	将手牌中{C:attention}点数最小{}的牌\n其点数的{C:attention}两倍\n加到倍率上
-Chaos the Clown	混沌小丑
-{C:attention}#1#{} free {C:green}Reroll\nper shop	每个商店有\n{C:attention}#1#{}次免费{C:green}重掷
-Fibonacci	斐波那契
-Each played {C:attention}Ace{},\n{C:attention}2{}, {C:attention}3{}, {C:attention}5{}, or {C:attention}8{} gives\n{C:mult}+#1#{} Mult when scored	每张打出的{C:attention}A{}、{C:attention}2{}、\n{C:attention}3{}、{C:attention}5{}或{C:attention}8{}计分时\n给予{C:mult}+#1#{}倍率
-Steel Joker	钢铁小丑
-Gives {X:mult,C:white} X#1# {} Mult\nfor each {C:attention}Steel Card\nin your {C:attention}full deck\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	完整牌组中每有\n一张{C:attention}钢铁牌\n给予{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Scary Face	恐怖面孔
-Played {C:attention}face{} cards\ngive {C:chips}+#1#{} Chips\nwhen scored	打出的{C:attention}人头牌\n计分时给予\n{C:chips}+#1#{}筹码
-Abstract Joker	抽象小丑
-{C:mult}+#1#{} Mult for\neach {C:attention}Joker{} card\n{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)	每有一张{C:attention}小丑牌\n{C:mult}+#1#{}倍率\n{C:inactive}(当前为{C:mult}+#2#{C:inactive}倍率)
-Delayed Gratification	延迟满足
-Earn {C:money}$#1#{} per {C:attention}discard{} if\nno discards are used\nby end of the round	回合结束时如果\n没有使用弃牌，每次\n{C:attention}弃牌{}获得{C:money}$#1#
-Hack	黑客
-Retrigger\neach played\n{C:attention}2{}, {C:attention}3{}, {C:attention}4{}, or {C:attention}5{}	重新触发每张\n打出的{C:attention}2{}、{C:attention}3{}、\n{C:attention}4{}或{C:attention}5
-Pareidolia	幻视
-All cards are\nconsidered\n{C:attention}face{} cards	所有牌都视为\n{C:attention}人头牌
-Gros Michel	大麦克香蕉
-{C:mult}+#1#{} Mult\n{C:green}#2# in #3#{} chance this\ncard is destroyed\nat end of round	{C:mult}+#1#{}倍率\n回合结束时有{C:green}#2#/#3#\n的几率摧毁此牌
-Even Steven	偶数史蒂文
-Played cards with\n{C:attention}even{} rank give\n{C:mult}+#1#{} Mult when scored\n{C:inactive}(10, 8, 6, 4, 2)	打出的{C:attention}双数{}点数牌\n计分时给予\n{C:mult}+#1#{}倍率\n{C:inactive}(10, 8, 6, 4, 2)
-Odd Todd	奇数托德
-Played cards with\n{C:attention}odd{} rank give\n{C:chips}+#1#{} Chips when scored\n{C:inactive}(A, 9, 7, 5, 3)	打出的{C:attention}奇数{}点数牌\n计分时给予\n{C:chips}+#1#{}筹码\n{C:inactive}(A, 9, 7, 5, 3)
-Scholar	学者
-Played {C:attention}Aces{}\ngive {C:chips}+#2#{} Chips\nand {C:mult}+#1#{} Mult\nwhen scored	打出的{C:attention}A{}计分时\n给予{C:chips}+#2#{}筹码\n和{C:mult}+#1#{}倍率
-Business Card	名片
-Played {C:attention}face{} cards have\na {C:green}#1# in #2#{} chance to\ngive {C:money}$2{} when scored	打出的{C:attention}人头牌{}计分时\n有{C:green}#1#/#2#{}的几率\n给予{C:money}$2
-Supernova	超新星
-Adds the number of times\n{C:attention}poker hand{} has been\nplayed this run to Mult	将本局中该{C:attention}牌型\n已打出的次数\n加到倍率上
-Ride the Bus	搭乘巴士
-This Joker gains {C:mult}+#1#{} Mult\nper {C:attention}consecutive{} hand\nplayed without a\nscoring {C:attention}face{} card\n{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)	每{C:attention}连续{}一次出牌\n没有计分的{C:attention}人头牌\n此小丑获得{C:mult}+#1#{}倍率\n{C:inactive}(当前为{C:mult}+#2#{C:inactive}倍率)
-Space Joker	太空小丑
-{C:green}#1# in #2#{} chance to\nupgrade level of\nplayed {C:attention}poker hand{}	有{C:green}#1#/#2#{}的几率\n升级打出的{C:attention}牌型
-Egg	鸡蛋
-Gains {C:money}$#1#{} of\n{C:attention}sell value{} at\nend of round	回合结束时\n{C:attention}售价{}增加{C:money}$#1#
-Burglar	窃贼
-When {C:attention}Blind{} is selected,\ngain {C:chips}+#1#{} Hands and\n{C:attention}lose all discards	选择{C:attention}盲注{}时\n获得{C:chips}+#1#{}次出牌\n并{C:attention}失去所有弃牌
-Blackboard	黑板
-{X:mult,C:white} X#1# {} Mult if all\ncards held in hand\nare {C:spades}#2#{} or {C:attention}#3#{}	如果手牌全部为\n{C:spades}#2#{}或{C:attention}#3#\n给予{X:mult,C:white} X#1# {}倍率
-Runner	跑步选手
-Gains {C:chips}+#2#{} Chips\nif played hand\ncontains a {C:attention}Straight{}\n{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)	如果打出的牌中\n包含{C:attention}顺子\n获得{C:chips}+#2#{}筹码\n{C:inactive}(当前为{C:chips}+#1#{C:inactive}筹码)
-Ice Cream	冰淇淋
-{C:chips}+#1#{} Chips\n{C:chips}-#2#{} Chips for\nevery hand played	{C:chips}+#1#{}筹码\n每次出牌后\n{C:chips}-#2#{}筹码
-DNA	DNA
-If {C:attention}first hand{} of round\nhas only {C:attention}1{} card, add a\npermanent copy to deck\nand draw it to {C:attention}hand	如果回合的{C:attention}第一次出牌\n只有{C:attention}1{}张牌，将其\n永久复制到牌组\n并抽到{C:attention}手牌{}中
-Splash	飞溅
-Every {C:attention}played card\ncounts in scoring	每张{C:attention}打出的牌\n都会计分
-Blue Joker	蓝色小丑
-{C:chips}+#1#{} Chips for each\nremaining card in {C:attention}deck\n{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)	{C:attention}牌组{}中每剩余\n一张牌{C:chips}+#1#{}筹码\n{C:inactive}(当前为{C:chips}+#2#{C:inactive}筹码)
-Sixth Sense	第六感
-If {C:attention}first hand{} of round is\na single {C:attention}6{}, destroy it and\ncreate a {C:spectral}Spectral{} card\n{C:inactive}(Must have room)	如果回合的{C:attention}第一次出牌\n只有一张{C:attention}6{}，将其摧毁\n并生成一张{C:spectral}幻灵牌\n{C:inactive}(必须有空位)
-Constellation	星座
-This Joker gains\n{X:mult,C:white} X#1# {} Mult every time\na {C:planet}Planet{} card is used\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	每使用一张{C:planet}星球牌\n此小丑获得\n{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Hiker	徒步者
-Every played {C:attention}card{}\npermanently gains\n{C:chips}+#1#{} Chips when scored	每张打出的{C:attention}牌{}计分时\n永久获得{C:chips}+#1#{}筹码
-Faceless Joker	无面小丑
-Earn {C:money}$#1#{} if {C:attention}#2#{} or\nmore {C:attention}face cards{}\nare discarded\nat the same time	同时弃掉{C:attention}#2#{}张\n或更多{C:attention}人头牌{}时\n获得{C:money}$#1#
-Green Joker	绿色小丑
-{C:mult}+#1#{} Mult per hand played\n{C:mult}-#2#{} Mult per discard\n{C:inactive}(Currently {C:mult}+#3#{C:inactive} Mult)	每次出牌{C:mult}+#1#{}倍率\n每次弃牌{C:mult}-#2#{}倍率\n{C:inactive}(当前为{C:mult}+#3#{C:inactive}倍率)
-Superposition	叠加态
-Create a {C:tarot}Tarot{} card if\npoker hand contains an\n{C:attention}Ace{} and a {C:attention}Straight{}\n{C:inactive}(Must have room)	如果牌型中包含\n{C:attention}A{}和{C:attention}顺子\n生成一张{C:tarot}塔罗牌\n{C:inactive}(必须有空位)
-To Do List	待办清单
-Earn {C:money}$#1#{} if {C:attention}poker hand{}\nis a {C:attention}#2#{},\npoker hand changes\nat end of round	如果牌型为{C:attention}#2#\n获得{C:money}$#1#\n回合结束时牌型改变
-Cavendish	卡文迪什
-{X:mult,C:white} X#1# {} Mult\n{C:green}#2# in #3#{} chance this\ncard is destroyed\nat end of round	{X:mult,C:white} X#1# {}倍率\n回合结束时有{C:green}#2#/#3#\n的几率摧毁此牌
-Card Sharp	老千
-{X:mult,C:white} X#1# {} Mult if played\n{C:attention}poker hand{} has already\nbeen played this round	如果打出的{C:attention}牌型\n本回合已打出过\n给予{X:mult,C:white} X#1# {}倍率
-Red Card	红牌
-This Joker gains\n{C:mult}+#1#{} Mult when any\n{C:attention}Booster Pack{} is skipped\n{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)	每跳过一个{C:attention}补充包\n此小丑获得{C:mult}+#1#{}倍率\n{C:inactive}(当前为{C:mult}+#2#{C:inactive}倍率)
-Madness	癫狂
-When {C:attention}Small Blind{} or {C:attention}Big Blind{}\nis selected, gain {X:mult,C:white} X#1# {} Mult\nand {C:attention}destroy{} a random Joker\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	选择{C:attention}小盲注{}或{C:attention}大盲注{}时\n获得{X:mult,C:white} X#1# {}倍率\n并随机{C:attention}摧毁{}一张小丑牌\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Square Joker	方形小丑
-This Joker gains {C:chips}+#2#{} Chips\nif played hand has\nexactly {C:attention}4{} cards\n{C:inactive}(Currently {C:chips}#1#{C:inactive} Chips)	如果打出的牌\n正好为{C:attention}4{}张\n此小丑获得{C:chips}+#2#{}筹码\n{C:inactive}(当前为{C:chips}#1#{C:inactive}筹码)
-Seance	降神会
-If {C:attention}poker hand{} is a\n{C:attention}#1#{}, create a\nrandom {C:spectral}Spectral{} card\n{C:inactive}(Must have room)	如果牌型为{C:attention}#1#\n随机生成一张\n{C:spectral}幻灵牌\n{C:inactive}(必须有空位)
-Riff-Raff	乌合之众
-When {C:attention}Blind{} is selected,\ncreate {C:attention}#1# {C:chips}Common{C:attention} Jokers\n{C:inactive}(Must have room)	选择{C:attention}盲注{}时\n生成{C:attention}#1#{}张{C:chips}普通{}小丑牌\n{C:inactive}(必须有空位)
-Vampire	吸血鬼
-This Joker gains {X:mult,C:white} X#1# {} Mult\nper scoring {C:attention}Enhanced card{} played,\nremoves card {C:attention}Enhancement\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	每打出一张计分的\n{C:attention}增强牌{}，此小丑获得\n{X:mult,C:white} X#1# {}倍率并移除\n该牌的{C:attention}增强\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Shortcut	捷径
-Allows {C:attention}Straights{} to be\nmade with gaps of {C:attention}1 rank\n{C:inactive}(ex: {C:attention}10 8 6 5 3{C:inactive})	{C:attention}顺子{}可以跳过\n{C:attention}1{}个点数\n{C:inactive}(例：{C:attention}10 8 6 5 3{C:inactive})
-Hologram	全息影像
-This Joker gains {X:mult,C:white} X#1# {} Mult\nevery time a {C:attention}playing card{}\nis added to your deck\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	每有一张{C:attention}游戏牌{}\n加入牌组，此小丑\n获得{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Vagabond	流浪者
-Create a {C:tarot}Tarot{} card\nif hand is played\nwith {C:money}$#1#{} or less	如果出牌时资金\n不多于{C:money}$#1#\n生成一张{C:tarot}塔罗牌
-Baron	男爵
-Each {C:attention}King{}\nheld in hand\ngives {X:mult,C:white} X#1# {} Mult	手牌中每张{C:attention}K\n给予{X:mult,C:white} X#1# {}倍率
-Cloud 9	九霄云外
-Earn {C:money}$#1#{} for each\n{C:attention}9{} in your {C:attention}full deck\nat end of round\n{C:inactive}(Currently {C:money}$#2#{}{C:inactive})	回合结束时{C:attention}完整\n牌组{}中每有一张{C:attention}9\n获得{C:money}$#1#\n{C:inactive}(当前为{C:money}$#2#{}{C:inactive})
-Rocket	火箭
-Earn {C:money}$#1#{} at end of round\nPayout increases by {C:money}$#2#{}\nwhen {C:attention}Boss Blind{} is defeated	回合结束时获得{C:money}$#1#\n击败{C:attention}Boss盲注{}时\n奖励增加{C:money}$#2#
-Obelisk	方尖碑
-This Joker gains {X:mult,C:white} X#1# {} Mult\nper {C:attention}consecutive{} hand played\nwithout playing your\nmost played {C:attention}poker hand\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	每{C:attention}连续{}一次出牌\n不是最常打出的{C:attention}牌型\n此小丑获得{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Midas Mask	迈达斯面具
-All played {C:attention}face{} cards\nbecome {C:attention}Gold{} cards\nwhen scored	打出的{C:attention}人头牌\n计分时变为\n{C:attention}黄金牌
-Luchador	摔跤手
-Sell this card to\ndisable the current\n{C:attention}Boss Blind{}	卖掉此牌\n使当前的{C:attention}Boss盲注\n失效
-Photograph	照片
-First played {C:attention}face\ncard gives {X:mult,C:white} X#1# {} Mult\nwhen scored	第一张打出的\n{C:attention}人头牌{}计分时\n给予{X:mult,C:white} X#1# {}倍率
-Gift Card	礼品卡
-Add {C:money}$#1#{} of {C:attention}sell value\nto every {C:attention}Joker{} and\n{C:attention}Consumable{} card at\nend of round	回合结束时每张\n{C:attention}小丑牌{}和{C:attention}消耗牌\n的售价增加{C:money}$#1#
-Turtle Bean	龟豆
-{C:attention}+#1#{} hand size,\nreduces by\n{C:mult}#2#{} every round	手牌上限{C:attention}+#1#\n每回合减少{C:mult}#2#
-Erosion	侵蚀
-{C:mult}+#1#{} Mult for each\ncard below {C:attention}#3#{}\nin your full deck\n{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)	完整牌组中每比\n{C:attention}#3#{}张少一张牌\n{C:mult}+#1#{}倍率\n{C:inactive}(当前为{C:mult}+#2#{C:inactive}倍率)
-Reserved Parking	预留停车位
-Each {C:attention}face{} card\nheld in hand has\na {C:green}#2# in #3#{} chance\nto give {C:money}$#1#{}	手牌中每张{C:attention}人头牌\n有{C:green}#2#/#3#{}的几率\n给予{C:money}$#1#
-Mail-In Rebate	邮件回扣
-Earn {C:money}$#1#{} for each\ndiscarded {C:attention}#2#{}, rank\nchanges every round	每弃掉一张{C:attention}#2#\n获得{C:money}$#1#\n点数每回合改变
-To the Moon	冲向月球
-Earn an extra {C:money}$#1#{} of\n{C:attention}interest{} for every {C:money}$5{} you\nhave at end of round	回合结束时每有{C:money}$5\n额外获得{C:money}$#1#{}的{C:attention}利息
-Hallucination	幻觉
-{C:green}#1# in #2#{} chance to create\na {C:tarot}Tarot{} card when any\n{C:attention}Booster Pack{} is opened\n{C:inactive}(Must have room)	打开任何{C:attention}补充包{}时\n有{C:green}#1#/#2#{}的几率\n生成一张{C:tarot}塔罗牌\n{C:inactive}(必须有空位)
-Fortune Teller	占卜师
-{C:mult}+#1#{} Mult per {C:tarot}Tarot{}\ncard used this run\n{C:inactive}(Currently {C:mult}+#2#{C:inactive})	本局每使用一张\n{C:tarot}塔罗牌{C:mult}+#1#{}倍率\n{C:inactive}(当前为{C:mult}+#2#{C:inactive})
-Juggler	杂耍师
-{C:attention}+#1#{} hand size	手牌上限{C:attention}+#1#
-Drunkard	醉汉
-{C:mult}+#1#{} discard\neach round	每回合\n弃牌次数{C:mult}+#1#
-Stone Joker	石头小丑
-Gives {C:chips}+#1#{} Chips for\neach {C:attention}Stone Card\nin your {C:attention}full deck\n{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)	完整牌组中每有\n一张{C:attention}石头牌\n给予{C:chips}+#1#{}筹码\n{C:inactive}(当前为{C:chips}+#2#{C:inactive}筹码)
-Golden Joker	黄金小丑
-Earn {C:money}$#1#{} at\nend of round	回合结束时\n获得{C:money}$#1#
-Lucky Cat	招财猫
-This Joker gains {X:mult,C:white} X#1# {} Mult\nevery time a {C:attention}Lucky{} card\n{C:green}successfully{} triggers\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	每次{C:attention}幸运牌{C:green}成功{}触发\n此小丑获得\n{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Baseball Card	棒球卡
-{C:green}Uncommon{} Jokers\neach give {X:mult,C:white} X#1# {} Mult	每张{C:green}罕见{}小丑牌\n给予{X:mult,C:white} X#1# {}倍率
-Bull	斗牛
-{C:chips}+#1#{} Chips for\neach {C:money}$1{} you have\n{C:inactive}(Currently {C:chips}+#2#{C:inactive} Chips)	每有{C:money}$1\n{C:chips}+#1#{}筹码\n{C:inactive}(当前为{C:chips}+#2#{C:inactive}筹码)
-Diet Cola	无糖可乐
-Sell this card to\ncreate a free\n{C:attention}#1#	卖掉此牌\n获得一个免费的\n{C:attention}#1#
-Trading Card	交易卡
-If {C:attention}first discard{} of round\nhas only {C:attention}1{} card, destroy\nit and earn {C:money}$#1#	如果回合的{C:attention}第一次弃牌\n只有{C:attention}1{}张牌\n将其摧毁并获得{C:money}$#1#
-Flash Card	闪示卡
-This Joker gains {C:mult}+#1#{} Mult\nper {C:attention}reroll{} in the shop\n{C:inactive}(Currently {C:mult}+#2#{C:inactive} Mult)	商店中每{C:attention}重掷{}一次\n此小丑获得{C:mult}+#1#{}倍率\n{C:inactive}(当前为{C:mult}+#2#{C:inactive}倍率)
-Popcorn	爆米花
-{C:mult}+#1#{} Mult\n{C:mult}-#2#{} Mult per\nround played	{C:mult}+#1#{}倍率\n每回合{C:mult}-#2#{}倍率
-Spare Trousers	备用裤子
-This Joker gains {C:mult}+#1#{} Mult\nif played hand contains\na {C:attention}#2#\n{C:inactive}(Currently {C:mult}+#3#{C:inactive} Mult)	如果打出的牌中\n包含{C:attention}#2#\n此小丑获得{C:mult}+#1#{}倍率\n{C:inactive}(当前为{C:mult}+#3#{C:inactive}倍率)
-Ancient Joker	古老小丑
-Each played card with\n{C:attention}#2#{} suit gives\n{X:mult,C:white} X#1# {} Mult when scored,\nsuit changes at end of round	打出的{C:attention}#2#{}牌计分时\n给予{X:mult,C:white} X#1# {}倍率\n回合结束时花色改变
-Ramen	拉面
-{X:mult,C:white} X#1# {} Mult,\nloses {X:mult,C:white} X#2# {} Mult\nper {C:attention}card{} discarded	{X:mult,C:white} X#1# {}倍率\n每弃掉一张{C:attention}牌\n失去{X:mult,C:white} X#2# {}倍率
-Walkie Talkie	对讲机
-Each played {C:attention}10{} or {C:attention}4\ngives {C:chips}+#1#{} Chips and\n{C:mult}+#2#{} Mult when scored	每张打出的{C:attention}10{}或{C:attention}4\n计分时给予{C:chips}+#1#{}筹码\n和{C:mult}+#2#{}倍率
-Seltzer	苏打水
-Retrigger all\ncards played for\nthe next {C:attention}#1#{} hands	在接下来的{C:attention}#1#{}次出牌中\n重新触发所有\n打出的牌
-Castle	城堡
-This Joker gains {C:chips}+#1#{} Chips\nper discarded {C:attention}#2#{} card,\nsuit changes every round\n{C:inactive}(Currently {C:chips}+#3#{C:inactive} Chips)	每弃掉一张{C:attention}#2#{}牌\n此小丑获得{C:chips}+#1#{}筹码\n花色每回合改变\n{C:inactive}(当前为{C:chips}+#3#{C:inactive}筹码)
-Smiley Face	笑脸
-Played {C:attention}face{} cards\ngive {C:mult}+#1#{} Mult\nwhen scored	打出的{C:attention}人头牌\n计分时给予\n{C:mult}+#1#{}倍率
-Campfire	篝火
-This Joker gains {X:mult,C:white}X#1#{} Mult\nfor each card {C:attention}sold{}, resets\nwhen {C:attention}Boss Blind{} is defeated\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	每{C:attention}卖出{}一张牌\n此小丑获得{X:mult,C:white}X#1#{}倍率\n击败{C:attention}Boss盲注{}时重置\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Golden Ticket	金色门票
-Played {C:attention}Gold{} cards\nearn {C:money}$#1#{} when scored	打出的{C:attention}黄金牌\n计分时获得{C:money}$#1#
-Mr. Bones	骷髅先生
-Prevents Death\nif chips scored\nare at least {C:attention}25%\nof required chips\n{C:mult}self destructs{}	如果得分至少为\n所需筹码的{C:attention}25%\n则免于失败\n然后{C:mult}自我摧毁
-Acrobat	杂技演员
-{X:mult,C:white} X#1# {} Mult on {C:attention}final\n{C:attention}hand{} of round	每回合的{C:attention}最后一次\n{C:attention}出牌{}给予{X:mult,C:white} X#1# {}倍率
-Sock and Buskin	喜与悲
-Retrigger all\nplayed {C:attention}face{} cards	重新触发所有\n打出的{C:attention}人头牌
-Swashbuckler	侠盗
-Adds the sell value\nof all other owned\n{C:attention}Jokers{} to Mult\n{C:inactive}(Currently {C:mult}+#1#{C:inactive} Mult)	将其他所有{C:attention}小丑牌\n的售价加到倍率上\n{C:inactive}(当前为{C:mult}+#1#{C:inactive}倍率)
-Troubadour	吟游诗人
-{C:attention}+#1#{} hand size,\n{C:chips}-#2#{} hand each round	手牌上限{C:attention}+#1#\n每回合出牌次数{C:chips}-#2#
-Certificate	证书
-When round begins,\nadd a random {C:attention}playing\n{C:attention}card{} with a random\n{C:attention}seal{} to your hand	回合开始时\n将一张有随机{C:attention}蜡封\n的随机{C:attention}游戏牌\n加入手牌
-Smeared Joker	涂抹小丑
-{C:mult}Hearts{} and {C:attention}Diamonds\ncount as the same suit,\n{C:spades}Spades{} and {C:attention}Clubs\ncount as the same suit	{C:mult}红桃{}和{C:attention}方片\n视为同一花色\n{C:spades}黑桃{}和{C:attention}梅花\n视为同一花色
-Throwback	回溯
-{X:mult,C:white} X#1# {} Mult for each\n{C:attention}Blind{} skipped this run\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	本局每跳过一个{C:attention}盲注\n给予{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Hanging Chad	悬孔
-Retrigger {C:attention}first{} played\ncard used in scoring\n{C:attention}#1#{} additional times	额外重新触发\n第{C:attention}一{}张计分的牌\n{C:attention}#1#{}次
-Rough Gem	原石
-Played cards with\n{C:attention}Diamond{} suit earn\n{C:money}$#1#{} when scored	打出的{C:attention}方片{}牌\n计分时获得{C:money}$#1#
-Bloodstone	血石
-{C:green}#1# in #2#{} chance for\nplayed cards with\n{C:mult}Heart{} suit to give\n{X:mult,C:white} X#3# {} Mult when scored	打出的{C:mult}红桃{}牌计分时\n有{C:green}#1#/#2#{}的几率\n给予{X:mult,C:white} X#3# {}倍率
-Arrowhead	箭头
-Played cards with\n{C:spades}Spade{} suit give\n{C:chips}+#1#{} Chips when scored	打出的{C:spades}黑桃{}牌\n计分时给予\n{C:chips}+#1#{}筹码
-Onyx Agate	缟玛瑙
-Played cards with\n{C:attention}Club{} suit give\n{C:mult}+#1#{} Mult when scored	打出的{C:attention}梅花{}牌\n计分时给予\n{C:mult}+#1#{}倍率
-Glass Joker	玻璃小丑
-This Joker gains {X:mult,C:white} X#1# {} Mult\nfor every {C:attention}Glass Card\nthat is destroyed\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	每摧毁一张{C:attention}玻璃牌\n此小丑获得\n{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Showman	马戏团长
-{C:attention}Joker{}, {C:tarot}Tarot{}, {C:planet}Planet{},\nand {C:spectral}Spectral{} cards may\nappear multiple times	{C:attention}小丑牌{}、{C:tarot}塔罗牌{}、\n{C:planet}星球牌{}和{C:spectral}幻灵牌\n可以多次出现
-Flower Pot	花盆
-{X:mult,C:white} X#1# {} Mult if poker\nhand contains a\n{C:attention}Diamond{} card, {C:attention}Club{} card,\n{C:mult}Heart{} card, and {C:spades}Spade{} card	如果牌型中包含\n{C:attention}方片{}、{C:attention}梅花{}、\n{C:mult}红桃{}和{C:spades}黑桃{}牌\n给予{X:mult,C:white} X#1# {}倍率
-Blueprint	蓝图
-Copies ability of\n{C:attention}Joker{} to the right	复制右边\n{C:attention}小丑牌{}的能力
-Wee Joker	小小丑
-This Joker gains\n{C:chips}+#2#{} Chips when each\nplayed {C:attention}2{} is scored\n{C:inactive}(Currently {C:chips}+#1#{C:inactive} Chips)	每张打出的{C:attention}2{}计分时\n此小丑获得{C:chips}+#2#{}筹码\n{C:inactive}(当前为{C:chips}+#1#{C:inactive}筹码)
-Merry Andy	快乐安迪
-{C:mult}+#1#{} discards\neach round,\n{C:mult}#2#{} hand size	每回合弃牌\n次数{C:mult}+#1#\n手牌上限{C:mult}#2#
-Oops! All 6s	哎呀！全是6
-Doubles all {C:attention}listed\n{C:green}probabilities\n{C:inactive}(ex: {C:green}1 in 3{C:inactive} -> {C:green}2 in 3{C:inactive})	所有列出的\n{C:green}几率{}翻倍\n{C:inactive}(例：{C:green}1/3{C:inactive} -> {C:green}2/3{C:inactive})
-The Idol	偶像
-Each played {C:attention}#2#\nof {C:attention}#3#{} gives\n{X:mult,C:white} X#1# {} Mult when scored\nCard changes every round	每张打出的{C:attention}#3##2#\n计分时给予\n{X:mult,C:white} X#1# {}倍率\n牌每回合改变
-Seeing Double	重影
-{X:mult,C:white} X#1# {} Mult if played\nhand has a scoring\n{C:attention}Club{} card and a scoring\ncard of any other {C:attention}suit	如果打出的牌中有\n计分的{C:attention}梅花{}牌和\n其他{C:attention}花色{}的计分牌\n给予{X:mult,C:white} X#1# {}倍率
-Matador	斗牛士
-Earn {C:money}$#1#{} if played\nhand triggers the\n{C:attention}Boss Blind{} ability	如果打出的牌触发\n{C:attention}Boss盲注{}的能力\n获得{C:money}$#1#
-Hit the Road	上路吧
-This Joker gains {X:mult,C:white} X#1# {} Mult\nfor every {C:attention}Jack{}\ndiscarded this round\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	本回合每弃掉一张{C:attention}J\n此小丑获得\n{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-The Duo	二重奏
-{X:mult,C:white} X#1# {} Mult if played\nhand contains\na {C:attention}#2#	如果打出的牌中\n包含{C:attention}#2#\n给予{X:mult,C:white} X#1# {}倍率
-The Trio	三重奏
-The Family	一家人
-The Order	秩序
-The Tribe	部落
-Stuntman	特技演员
-{C:chips}+#1#{} Chips,\n{C:attention}-#2#{} hand size	{C:chips}+#1#{}筹码\n手牌上限{C:attention}-#2#
-Invisible Joker	隐形小丑
-After {C:attention}#1#{} rounds,\nsell this card to\n{C:attention}Duplicate{} a random Joker\n{C:inactive}(Currently {C:attention}#2#{C:inactive}/#1#)	经过{C:attention}#1#{}个回合后\n卖掉此牌可随机\n{C:attention}复制{}一张小丑牌\n{C:inactive}(当前为{C:attention}#2#{C:inactive}/#1#)
-Brainstorm	头脑风暴
-Copies the ability\nof leftmost {C:attention}Joker	复制最左边\n{C:attention}小丑牌{}的能力
-Satellite	卫星
-Earn {C:money}$#1#{} at end of\nround per unique {C:planet}Planet\ncard used this run\n{C:inactive}(Currently {C:money}$#2#{C:inactive})	回合结束时本局每使用过\n一种{C:planet}星球牌{}获得{C:money}$#1#\n{C:inactive}(当前为{C:money}$#2#{C:inactive})
-Shoot the Moon	射月
-Each {C:attention}Queen{}\nheld in hand\ngives {C:mult}+#1#{} Mult	手牌中每张{C:attention}Q\n给予{C:mult}+#1#{}倍率
-Driver's License	驾照
-{X:mult,C:white} X#1# {} Mult if you have\nat least {C:attention}16{} Enhanced\ncards in your full deck\n{C:inactive}(Currently {C:attention}#2#{C:inactive})	如果完整牌组中\n至少有{C:attention}16{}张增强牌\n给予{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{C:attention}#2#{C:inactive})
-Cartomancer	卡牌术士
-Create a {C:tarot}Tarot{} card\nwhen {C:attention}Blind{} is selected\n{C:inactive}(Must have room)	选择{C:attention}盲注{}时\n生成一张{C:tarot}塔罗牌\n{C:inactive}(必须有空位)
-Astronomer	天文学家
-All {C:planet}Planet{} cards and\n{C:planet}Celestial Packs{} in\nthe shop are {C:attention}free	商店中所有{C:planet}星球牌\n和{C:planet}天体包{}都{C:attention}免费
-Burnt Joker	烧焦小丑
-Upgrade the level of\nthe first {C:attention}discarded\npoker hand each round	每回合升级\n第一次{C:attention}弃掉{}的牌型
-Bootstraps	拔靴带
-{C:mult}+#1#{} Mult for every\n{C:money}$#2#{} you have\n{C:inactive}(Currently {C:mult}+#3#{C:inactive} Mult)	每有{C:money}$#2#\n{C:mult}+#1#{}倍率\n{C:inactive}(当前为{C:mult}+#3#{C:inactive}倍率)
-Canio	卡尼奥
-This Joker gains {X:mult,C:white} X#1# {} Mult\nwhen a {C:attention}face{} card\nis destroyed\n{C:inactive}(Currently {X:mult,C:white} X#2# {C:inactive} Mult)	每摧毁一张{C:attention}人头牌\n此小丑获得\n{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{X:mult,C:white} X#2# {C:inactive}倍率)
-Triboulet	特里布莱
-Played {C:attention}Kings{} and\n{C:attention}Queens{} each give\n{X:mult,C:white} X#1# {} Mult when scored	打出的{C:attention}K{}和{C:attention}Q\n计分时各给予\n{X:mult,C:white} X#1# {}倍率
-Yorick	约里克
-This Joker gains\n{X:mult,C:white} X#1# {} Mult every {C:attention}#2#{C:inactive} [#3#]{}\ncards discarded\n{C:inactive}(Currently {X:mult,C:white} X#4# {C:inactive} Mult)	每弃掉{C:attention}#2#{C:inactive} [#3#]{}张牌\n此小丑获得\n{X:mult,C:white} X#1# {}倍率\n{C:inactive}(当前为{X:mult,C:white} X#4# {C:inactive}倍率)
-Chicot	奇科
-Disables effect of\nevery {C:attention}Boss Blind	使每个{C:attention}Boss盲注\n的效果失效
-Perkeo	帕奇欧
-Creates a {C:dark_edition}Negative{} copy of\n{C:attention}1{} random {C:attention}consumable{}\ncard in your possession\nat the end of the {C:attention}shop	离开{C:attention}商店{}时\n随机复制{C:attention}1{}张持有的\n{C:attention}消耗牌{}，复制品为{C:dark_edition}负片
-The Fool	愚者
-Creates the last\n{C:tarot}Tarot{} or {C:planet}Planet{} card\nused during this run\n{C:tarot}The Fool excluded	生成本局最后使用的\n{C:tarot}塔罗牌{}或{C:planet}星球牌\n{C:tarot}愚者除外
-The Magician	魔术师
-Enhances {C:attention}#1#{}\nselected cards to\n{C:attention}#2#s	将{C:attention}#1#{}张选定的牌\n增强为{C:attention}#2#
-The High Priestess	女祭司
-Creates up to {C:attention}#1#\nrandom {C:planet}Planet{} cards\n{C:inactive}(Must have room)	随机生成最多\n{C:attention}#1#{}张{C:planet}星球牌\n{C:inactive}(必须有空位)
-The Empress	女皇
-Enhances {C:attention}#1#\nselected cards to\n{C:attention}#2#s	将{C:attention}#1#{}张选定的牌\n增强为{C:attention}#2#
-The Emperor	皇帝
-Creates up to {C:attention}#1#\nrandom {C:tarot}Tarot{} cards\n{C:inactive}(Must have room)	随机生成最多\n{C:attention}#1#{}张{C:tarot}塔罗牌\n{C:inactive}(必须有空位)
-The Hierophant	教皇
-The Lovers	恋人
-Enhances {C:attention}#1#{} selected\ncard into a\n{C:attention}#2#	将{C:attention}#1#{}张选定的牌\n增强为{C:attention}#2#
-The Chariot	战车
-Justice	正义
-The Hermit	隐者
-Doubles money\n{C:inactive}(Max of {C:money}$#1#{C:inactive})	资金翻倍\n{C:inactive}(最多{C:money}$#1#{C:inactive})
-The Wheel of Fortune	命运之轮
-{C:green}#1# in #2#{} chance to add\n{C:dark_edition}Foil{}, {C:dark_edition}Holographic{}, or\n{C:dark_edition}Polychrome{} edition\nto a random {C:attention}Joker	有{C:green}#1#/#2#{}的几率\n为随机一张{C:attention}小丑牌\n添加{C:dark_edition}闪箔{}、{C:dark_edition}镭射{}\n或{C:dark_edition}多彩{}版本
-Strength	力量
-Increases rank of\nup to {C:attention}#1#{} selected\ncards by {C:attention}1	将最多{C:attention}#1#{}张选定的牌\n的点数提升{C:attention}1
-The Hanged Man	倒吊人
-Destroys up to\n{C:attention}#1#{} selected cards	摧毁最多\n{C:attention}#1#{}张选定的牌
-Death	死神
-Select {C:attention}#1#{} cards,\nconvert the {C:attention}left{} card\ninto the {C:attention}right{} card\n{C:inactive}(Drag to rearrange)	选择{C:attention}#1#{}张牌\n将{C:attention}左边{}的牌\n变为{C:attention}右边{}的牌\n{C:inactive}(可移动以重新排列)
-Temperance	节制
-Gives the total sell\nvalue of all current\nJokers {C:inactive}(Max of {C:money}$#1#{C:inactive})\n{C:inactive}(Currently {C:money}$#2#{C:inactive})	获得所有小丑牌\n的售价总和\n{C:inactive}(最多{C:money}$#1#{C:inactive})\n{C:inactive}(当前为{C:money}$#2#{C:inactive})
-The Devil	恶魔
+# Jokeria in Chinese: the English text as in the source, a tab, the translation (see tools/lang.py).
+Street Busker	街头艺人
+\003+3\020 Multi and\n\002+10\020 Points	\003+3\020 倍率\n\002+10\020 点数
+Red Lantern	红灯笼
+Each scoring \004red\020 card\n(\200 or \202) gives \003+2\020 Multi	每张计分的\004红色\020牌\n(\200 或 \202) 给 \003+2\020 倍率
+Night Owl	夜猫头鹰
+Each scoring \004black\020 card\n(\177 or \201) gives \002+12\020 Points	每张计分的\004黑色\020牌\n(\177 或 \201) 给 \002+12\020 点数
+Low Tide	退潮
+Each scoring card\nfrom \0042 to 5\020 gives\n\003+3\020 Multi	每张计分的\n\0042 到 5\020 给\n\003+3\020 倍率
+Seven Seas	七海
+Each scoring \0047\020\ngives \003+7\020 Multi	每张计分的 \0047\020\n给 \003+7\020 倍率
+Matchmaker	红娘
+\002+25\020 Points for each\nrank that appears\n\004twice or more\020 in the hand	牌中每个出现\n\004两次或以上\020的点数\n给 \002+25\020 点数
+Tightrope	走钢丝
+\003+12\020 Multi if you\nplay exactly \0043 cards	正好打出 \0043 张牌\020\n时 \003+12\020 倍率
+Penny Jar	存钱罐
+\003+1\020 Multi for every\n\0054 coins\020 you have	你每有 \0054 枚金币\020\n给 \003+1\020 倍率
+Lucky Clover	幸运草
+Each scoring \201 has\n\0041 chance in 3\020 to\ngive \0051 coin	每张计分的 \201 有\n\004三分之一\020的机会\n给 \0051 枚金币
+Stagehand	舞台工
+Earn \0052 coins\020 at the\nend of each table	每张牌桌结束时\n获得 \0052 枚金币
+Encore	返场
+On the \004last hand\020\nof a table: \002+20\020\nPoints and \016x1.5\020 Multi	牌桌的\004最后一手\020：\n\002+20\020 点数和\n\016x1.5\020 倍率
+Pickpocket	扒手
+Earn \0051 coin\020 for each\ndiscard of \0044 cards\020\nor more	每次弃 \0044 张或以上\020\n获得 \0051 枚金币
+Ringmaster	马戏团长
+\016x1.5\020 Multi when\n\0045 cards\020 score	\0045 张牌\020都计分时\n\016x1.5\020 倍率
+Fire-Eater	吞火人
+Gains \003+1\020 Multi each\ntime you play a\n\004Flush	每打出一次\004同花\020\n获得 \003+1\020 倍率
+Strongman	大力士
+\016x3\020 Multi if every\nscoring card is a\n\004J, Q or K	计分牌全是\n\004J、Q 或 K\020 时\n\016x3\020 倍率
+Carousel	旋转木马
+\003+0 to +10\020 Multi,\na new spin\neach hand	\003+0 到 +10\020 倍率，\n每手重新转动
+Royal Court	王室
+\016x2\020 Multi if a \004K\020\nand a \004Q\020 both score	\004K\020 和 \004Q\020 都计分时\n\016x2\020 倍率
+Ace Pilot	王牌飞行员
+Each scoring \004Ace\020\ngives \016x1.5\020 Multi	每张计分的 \004A\020\n给 \016x1.5\020 倍率
+Snowball	雪球
+Gains \002+10\020 Points\neach time you\n\004win a table	每\004赢一张牌桌\020\n获得 \002+10\020 点数
+The Twins	双胞胎
+\003+10\020 Multi on a\n\004Two Pair\020 or a\n\004Full House	\004两对\020或\004葫芦\020时\n\003+10\020 倍率
+Lamplighter	点灯人
+Each \202 left \004in your\nhand\020 gives \003+3\020 Multi	每张留在\004手中\020的\n\202 给 \003+3\020 倍率
+Usurer	放贷人
+Interest goes up\nto \0052 coins\020 more	利息上限\n多 \0052 枚金币
+Grand Finale	压轴
+\016x3\020 Multi when you\nhave \004no discards\020 left	\004没有弃牌\020次数时\n\016x3\020 倍率
+Phoenix	凤凰
+Lose a table: play\nit \004again\020, once.\nThen it flies away	输掉牌桌时：\n\004重打一次\020。\n然后它飞走
+Prism	棱镜
+\016x1\020 Multi, plus \016x0.5\020\nfor each \004suit\020\namong scoring cards	\016x1\020 倍率，计分牌中\n每种\004花色\020再加\n\016x0.5\020
+Gambler	赌徒
+\016x4\020 Multi, but\n\0041 chance in 4\020\nof \016x0.5\020 instead	\016x4\020 倍率，但有\n\004四分之一\020的机会\n变成 \016x0.5\020
+High Card	高牌
+Pair	对子
+Two Pair	两对
+Three of a Kind	三条
+Straight	顺子
+Flush	同花
+Full House	葫芦
+Four of a Kind	四条
+Straight Flush	同花顺
+The Clock	时钟
+Only 3 hands	只有 3 手
+The Drought	干旱
+Only 1 discard	只有 1 次弃牌
+The Weight	重压
+6 cards in hand	手中 6 张牌
+The Taxman	税吏
+Each discard costs 2 coins	每次弃牌花 2 枚金币
+The Wind	风
+After each hand, a new hand\nis dealt from the whole deck	每手之后，\n从整副牌重新发牌
 The Tower	高塔
-The Star	星星
-Converts up to\n{C:attention}#1#{} selected cards\nto {C:attention}#2#{}	将最多{C:attention}#1#{}张\n选定的牌转换为\n{C:attention}#2#{}
-The Moon	月亮
-The Sun	太阳
-Judgement	审判
-Creates a random\n{C:attention}Joker{} card\n{C:inactive}(Must have room)	随机生成一张\n{C:attention}小丑牌\n{C:inactive}(必须有空位)
-The World	世界
-Mercury	水星
-({C:attention}lvl.#1#){} Level up\n{C:attention}#2#\n{C:mult}+#3#{} Mult and\n{C:chips}+#4#{} chips	({C:attention}等级#1#){}升级\n{C:attention}#2#\n{C:mult}+#3#{}倍率和\n{C:chips}+#4#{}筹码
-Venus	金星
-Earth	地球
-Mars	火星
-Jupiter	木星
-Saturn	土星
-Uranus	天王星
-Neptune	海王星
-Pluto	冥王星
-Planet X	X行星
-Ceres	谷神星
-Eris	阋神星
-Familiar	使魔
-Destroy {C:attention}1{} random\ncard in your hand, add\n{C:attention}#1#{} random {C:attention}Enhanced face\n{C:attention}cards{} to your hand	随机摧毁手牌中\n{C:attention}1{}张牌，并将{C:attention}#1#{}张\n随机{C:attention}增强人头牌\n加入手牌
-Grim	冷酷
-Destroy {C:attention}1{} random\ncard in your hand,\nadd {C:attention}#1#{} random {C:attention}Enhanced\n{C:attention}Aces{} to your hand	随机摧毁手牌中\n{C:attention}1{}张牌，并将{C:attention}#1#{}张\n随机{C:attention}增强A\n加入手牌
-Incantation	咒语
-Destroy {C:attention}1{} random\ncard in your hand, add {C:attention}#1#\nrandom {C:attention}Enhanced numbered\n{C:attention}cards{} to your hand	随机摧毁手牌中\n{C:attention}1{}张牌，并将{C:attention}#1#{}张\n随机{C:attention}增强数字牌\n加入手牌
-Talisman	护身符
-Add a {C:attention}Gold Seal{}\nto {C:attention}1{} selected\ncard in your hand	为手牌中{C:attention}1{}张选定的牌\n添加{C:attention}金色蜡封
-Aura	灵气
-Add {C:dark_edition}Foil{}, {C:dark_edition}Holographic{},\nor {C:dark_edition}Polychrome{} effect to\n{C:attention}1{} selected card in hand	为手牌中{C:attention}1{}张选定的牌\n添加{C:dark_edition}闪箔{}、{C:dark_edition}镭射\n或{C:dark_edition}多彩{}效果
-Wraith	幽灵
-Creates a random\n{C:mult}Rare{C:attention} Joker{},\nsets money to {C:money}$0	随机生成一张\n{C:mult}稀有{C:attention}小丑牌{}\n资金变为{C:money}$0
-Sigil	魔咒
-Converts all cards\nin hand to a single\nrandom {C:attention}suit	将所有手牌转换为\n随机的同一{C:attention}花色
-Ouija	通灵板
-Converts all cards\nin hand to a single\nrandom {C:attention}rank\n{C:mult}-1{} hand size	将所有手牌转换为\n随机的同一{C:attention}点数\n手牌上限{C:mult}-1
-Ectoplasm	灵质
-Add {C:dark_edition}Negative{} to\na random {C:attention}Joker,\n{C:mult}-#1#{} hand size	为随机一张{C:attention}小丑牌\n添加{C:dark_edition}负片\n手牌上限{C:mult}-#1#
-Immolate	献祭
-Destroys {C:attention}#1#{} random\ncards in hand,\ngain {C:money}$#2#	随机摧毁{C:attention}#1#{}张手牌\n获得{C:money}$#2#
-Ankh	安卡
-Create a copy of a\nrandom {C:attention}Joker{}, destroy\nall other Jokers	随机复制一张{C:attention}小丑牌\n摧毁其他所有小丑牌
-Deja Vu	既视感
-Add a {C:mult}Red Seal{}\nto {C:attention}1{} selected\ncard in your hand	为手牌中{C:attention}1{}张选定的牌\n添加{C:mult}红色蜡封
-Hex	妖法
-Add {C:dark_edition}Polychrome{} to a\nrandom {C:attention}Joker{}, destroy\nall other Jokers	为随机一张{C:attention}小丑牌\n添加{C:dark_edition}多彩\n摧毁其他所有小丑牌
-Trance	出神
-Add a {C:chips}Blue Seal{}\nto {C:attention}1{} selected\ncard in your hand	为手牌中{C:attention}1{}张选定的牌\n添加{C:chips}蓝色蜡封
-Medium	灵媒
-Add a {C:tarot}Purple Seal{}\nto {C:attention}1{} selected\ncard in your hand	为手牌中{C:attention}1{}张选定的牌\n添加{C:tarot}紫色蜡封
-Cryptid	神秘生物
-Create {C:attention}#1#{} copies of\n{C:attention}1{} selected card\nin your hand	为手牌中{C:attention}1{}张选定的牌\n生成{C:attention}#1#{}张复制
-The Soul	灵魂
-Creates a\n{C:tarot}Legendary{} Joker\n{C:inactive}(Must have room)	生成一张\n{C:tarot}传奇{}小丑牌\n{C:inactive}(必须有空位)
-Black Hole	黑洞
-Upgrade every\n{C:tarot}poker hand\nby {C:attention}1{} level	所有{C:tarot}牌型\n升级{C:attention}1{}级
-Overstock	库存过剩
-{C:attention}+1{} card slot\navailable in shop	商店中可用的\n卡槽{C:attention}+1
-Clearance Sale	清仓特卖
-All cards and packs in\nshop are {C:attention}#1#%{} off	商店中所有卡牌\n和补充包降价{C:attention}#1#%
-Hone	磨砺
-{C:dark_edition}Foil{}, {C:dark_edition}Holographic{}, and\n{C:dark_edition}Polychrome{} cards\nappear {C:attention}#1#X{} more often	{C:dark_edition}闪箔{}、{C:dark_edition}镭射{}和\n{C:dark_edition}多彩{}牌出现的频率\n提高到{C:attention}#1#X
-Reroll Surplus	重掷盈余
-Rerolls cost\n{C:money}$#1#{} less	重掷费用\n减少{C:money}$#1#
-Crystal Ball	水晶球
-{C:attention}+1{} consumable slot	消耗牌槽位{C:attention}+1
-Telescope	望远镜
-{C:attention}Celestial Packs{} always\ncontain the {C:planet}Planet{}\ncard for your most\nplayed {C:attention}poker hand	{C:attention}天体包{}总是包含\n你最常打出的{C:attention}牌型\n对应的{C:planet}星球牌
-Grabber	抓取者
-Permanently\ngain {C:chips}+#1#{} hand\nper round	永久获得\n每回合{C:chips}+#1#{}次出牌
-Wasteful	挥霍
-Permanently\ngain {C:mult}+#1#{} discard\neach round	永久获得\n每回合{C:mult}+#1#{}次弃牌
-Tarot Merchant	塔罗商人
-{C:tarot}Tarot{} cards appear\n{C:attention}#1#X{} more frequently\nin the shop	{C:tarot}塔罗牌{}在商店中\n出现的频率提高到\n{C:attention}#1#X
-Planet Merchant	星球商人
-{C:planet}Planet{} cards appear\n{C:attention}#1#X{} more frequently\nin the shop	{C:planet}星球牌{}在商店中\n出现的频率提高到\n{C:attention}#1#X
-Seed Money	种子基金
-Raise the cap on\ninterest earned in\neach round to {C:money}$#1#{}	每回合获得的\n利息上限提高到{C:money}$#1#
-Blank	空白
-{C:inactive}Does nothing?	{C:inactive}没有效果？
-Magic Trick	魔术
-{C:attention}Playing cards{} can\nbe purchased\nfrom the {C:attention}shop	可以在{C:attention}商店{}中\n购买{C:attention}游戏牌
-Hieroglyph	象形文字
-{C:attention}-#1#{} Ante,\n{C:chips}-#1#{} hand\neach round	底注{C:attention}-#1#\n每回合出牌次数{C:chips}-#1#
-Director's Cut	导演剪辑版
-Reroll Boss Blind\n{C:attention}1{} time per Ante,\n{C:money}$#1#{} per roll	每个底注可重掷\nBoss盲注{C:attention}1{}次\n每次{C:money}$#1#
-Paint Brush	画笔
-Overstock Plus	库存过剩+
-Liquidation	清算
-Glow Up	焕然一新
-Reroll Glut	重掷过剩
-Omen Globe	预兆球
-{C:spectral}Spectral{} cards may\nappear in any of\nthe {C:attention}Arcana Packs	{C:spectral}幻灵牌{}可能出现在\n{C:attention}秘术包{}中
-Observatory	天文台
-{C:planet}Planet{} cards in your\n{C:attention}consumable{} area give\n{X:mult,C:white} X#1# {} Mult for their\nspecified {C:attention}poker hand	消耗牌区域中的\n{C:planet}星球牌{}为其对应的\n{C:attention}牌型{}给予{X:mult,C:white} X#1# {}倍率
-Nacho Tong	玉米片夹
-Recyclomancy	回收术
-Tarot Tycoon	塔罗大亨
-Planet Tycoon	星球大亨
-Money Tree	摇钱树
-Antimatter	反物质
-{C:dark_edition}+1{} Joker Slot	小丑牌槽位{C:dark_edition}+1
-Illusion	幻象
-{C:attention}Playing cards{} in shop\nmay have an {C:attention}Enhancement{},\n{C:dark_edition}Edition{}, and/or a {C:attention}Seal{}	商店中的{C:attention}游戏牌\n可能有{C:attention}增强{}、\n{C:dark_edition}版本{}或{C:attention}蜡封
-Petroglyph	岩画
-{C:attention}-#1#{} Ante,\n{C:mult}-#1#{} discard\neach round	底注{C:attention}-#1#\n每回合弃牌次数{C:mult}-#1#
-Retcon	设定修改
-Reroll Boss Blind\n{C:attention}unlimited{} times,\n{C:money}$#1#{} per roll	可以{C:attention}无限{}次重掷\nBoss盲注\n每次{C:money}$#1#
-Palette	调色板
-Uncommon Tag	罕见标签
-Shop has a free\n{C:green}Uncommon Joker	商店中有一张免费的\n{C:green}罕见{}小丑牌
-Rare Tag	稀有标签
-Shop has a free\n{C:mult}Rare Joker	商店中有一张免费的\n{C:mult}稀有{}小丑牌
-Negative Tag	负片标签
-Next base edition shop\nJoker is free and\nbecomes {C:dark_edition}Negative	商店中下一张基础版本\n的小丑牌免费\n并变为{C:dark_edition}负片
-Foil Tag	闪箔标签
-Next base edition shop\nJoker is free and\nbecomes {C:dark_edition}Foil	商店中下一张基础版本\n的小丑牌免费\n并变为{C:dark_edition}闪箔
-Holographic Tag	镭射标签
-Next base edition shop\nJoker is free and\nbecomes {C:dark_edition}Holographic	商店中下一张基础版本\n的小丑牌免费\n并变为{C:dark_edition}镭射
-Polychrome Tag	多彩标签
-Next base edition shop\nJoker is free and\nbecomes {C:dark_edition}Polychrome	商店中下一张基础版本\n的小丑牌免费\n并变为{C:dark_edition}多彩
-Investment Tag	投资标签
-After defeating\nthe Boss Blind,\ngain {C:money}$#1#	击败Boss盲注后\n获得{C:money}$#1#
-Voucher Tag	优惠券标签
-Adds one {C:attention}Voucher\nto the next shop	在下一个商店中\n加入一张{C:attention}优惠券
-Boss Tag	Boss标签
-Rerolls the\n{C:attention}Boss Blind	重掷{C:attention}Boss盲注
-Standard Tag	标准标签
-Gives a free\n{C:attention}Mega Standard Pack	免费获得一个\n{C:attention}超级标准包
-Charm Tag	魅力标签
-Gives a free\n{C:tarot}Mega Arcana Pack	免费获得一个\n{C:tarot}超级秘术包
-Meteor Tag	流星标签
-Gives a free\n{C:planet}Mega Celestial Pack	免费获得一个\n{C:planet}超级天体包
-Buffoon Tag	小丑标签
-Gives a free\n{C:attention}Mega Buffoon Pack	免费获得一个\n{C:attention}超级小丑包
-Handy Tag	便利标签
-Gives {C:money}$#1#{} per played\n{C:chips}hand{} this run\n{C:inactive}(Will give {C:money}$#2#{C:inactive})	本局每打出一次{C:chips}牌\n获得{C:money}$#1#\n{C:inactive}(将获得{C:money}$#2#{C:inactive})
-Garbage Tag	垃圾标签
-Gives {C:money}$#1#{} per unused\n{C:mult}discard{} this run\n{C:inactive}(Will give {C:money}$#2#{C:inactive})	本局每有一次未使用的\n{C:mult}弃牌{}获得{C:money}$#1#\n{C:inactive}(将获得{C:money}$#2#{C:inactive})
-Ethereal Tag	空灵标签
-Gives a free\n{C:spectral}Spectral Pack	免费获得一个\n{C:spectral}幻灵包
-Coupon Tag	优惠标签
-Initial cards and\nbooster packs in next\nshop are free	下一个商店中\n初始的卡牌和\n补充包都免费
-Double Tag	双倍标签
-Gives a copy of the\nnext selected {C:attention}Tag{}\n{C:attention}Double Tag excluded	复制下一个选择的\n{C:attention}标签\n{C:attention}双倍标签除外
-Juggle Tag	杂耍标签
-{C:attention}+#1#{} hand size\nnext round	下一回合\n手牌上限{C:attention}+#1#
-D6 Tag	D6标签
-Rerolls in next shop\nstart at {C:money}$0	下一个商店的重掷\n从{C:money}$0{}开始
-Top-up Tag	补充标签
-Create up to {C:attention}#1#\n{C:chips}Common{} Jokers\n{C:inactive}(Must have room)	生成最多{C:attention}#1#{}张\n{C:chips}普通{}小丑牌\n{C:inactive}(必须有空位)
-Speed Tag	速度标签
-Gives {C:money}$#1#{} per skipped\nBlind this run\n{C:inactive}(Will give {C:money}$#2#{C:inactive})	本局每跳过一个盲注\n获得{C:money}$#1#\n{C:inactive}(将获得{C:money}$#2#{C:inactive})
-Orbital Tag	轨道标签
-Upgrade {C:attention}#1#\nby {C:attention}#2# levels	将{C:attention}#1#\n升级{C:attention}#2#{}级
-Economy Tag	经济标签
-Doubles your money\n{C:inactive}(Max of {C:money}$#1#{C:inactive})	资金翻倍\n{C:inactive}(最多{C:money}$#1#{C:inactive})
-Small Blind	小盲注
-Big Blind	大盲注
-The Ox	公牛
-Playing a #1#\nsets money to $0	打出{C:attention}#1#\n会使资金变为$0
-The House	房屋
-First hand is\ndrawn face down	第一手牌\n背面朝上抽取
-The Club	梅花
-All Club cards\nare debuffed	所有梅花牌\n被削弱
-The Fish	鱼
-Cards drawn face down\nafter each hand played	每次出牌后\n抽到的牌背面朝上
-The Window	窗口
-All Diamond cards\nare debuffed	所有方片牌\n被削弱
-The Hook	钩子
-Discards 2 random\ncards per hand played	每次出牌时\n随机弃掉2张手牌
-The Manacle	镣铐
--1 Hand Size	手牌上限-1
-The Wall	墙壁
-Extra large blind	超大盲注
-The Wheel	轮子
- in 7 cards get\ndrawn face down	/7的牌\n背面朝上抽取
-The Arm	手臂
-Decrease level of\nplayed poker hand	降低打出牌型\n的等级
-The Psychic	灵媒
-Must play 5 cards	必须打出5张牌
-The Goad	刺棒
-All Spade cards\nare debuffed	所有黑桃牌\n被削弱
-The Water	水
-Start with\n0 discards	开始时\n弃牌次数为0
-The Serpent	毒蛇
-After Play or Discard,\nalways draw 3 cards	出牌或弃牌后\n总是抽3张牌
-The Pillar	柱子
-Cards played previously\nthis Ante are debuffed	本底注中打出过\n的牌被削弱
-The Eye	眼睛
-No repeat hand\ntypes this round	本回合不能重复\n打出相同牌型
-The Mouth	嘴巴
-Play only 1 hand\ntype this round	本回合只能打出\n一种牌型
-The Plant	植物
-All face cards\nare debuffed	所有人头牌\n被削弱
-The Needle	针
-Play only 1 hand	只能出牌1次
-The Head	头
-All Heart cards\nare debuffed	所有红桃牌\n被削弱
-The Tooth	牙齿
-Lose $1 per\ncard played	每打出一张牌\n失去$1
-The Mark	标记
-All face cards are\ndrawn face down	所有人头牌\n背面朝上抽取
-The Flint	燧石
-Base Chips and\nMult are halved	基础筹码和\n倍率除以2
-Crimson Heart	绯红之心
-One random Joker\ndisabled every hand	每次出牌时随机\n一张小丑牌失效
-Cerulean Bell	蔚蓝之铃
-Forces 1 card to\nalways be selected	强制始终选中\n1张牌
-Amber Acorn	琥珀橡果
-Flips and shuffles\nall Joker cards	翻转所有小丑牌\n并改变顺序
-Verdant Leaf	翠绿之叶
-All cards debuffed\nuntil 1 Joker sold	卖出1张小丑牌前\n所有牌被削弱
-Violet Vessel	紫罗兰之杯
-Very large blind	巨型盲注
-Bonus Card	奖励牌
-Mult Card	倍率牌
-Wild Card	万能牌
-Can be used\nas any suit	可当作所有花色
-Glass Card	玻璃牌
-{X:mult,C:white} X#1# {} Mult\n{C:green}#2# in #3#{} chance to\ndestroy card	{X:mult,C:white} X#1# {}倍率\n有{C:green}#2#/#3#{}的几率\n摧毁此牌
-Steel Card	钢铁牌
-{X:mult,C:white} X#1# {} Mult\nwhile this card\nstays in hand	此牌留在手牌中时\n给予{X:mult,C:white} X#1# {}倍率
-Stone Card	石头牌
-{C:chips}+#1#{} Chips\nno rank or suit	{C:chips}+#1#{}筹码\n没有点数和花色
-Gold Card	黄金牌
-{C:money}$#1#{} if this\ncard is held in hand\nat end of round	回合结束时如果\n此牌在手牌中\n获得{C:money}$#1#
-Lucky Card	幸运牌
-{C:green}#1# in #3#{} chance\nfor {C:mult}+#2#{} Mult\n{C:green}#1# in #5#{} chance\nto win {C:money}$#4#	有{C:green}#1#/#3#{}的几率\n给予{C:mult}+#2#{}倍率\n有{C:green}#1#/#5#{}的几率\n获得{C:money}$#4#
-Foil	闪箔
-{C:chips}+#1#{} chips	{C:chips}+#1#{}筹码
-Holographic	镭射
-Polychrome	多彩
-{X:mult,C:white} X#1# {} Mult	{X:mult,C:white} X#1# {}倍率
-Negative	负片
-{C:dark_edition}+#1#{} Joker slot	小丑牌槽位{C:dark_edition}+#1#
-Gold Seal	金色蜡封
-Earn {C:money}$3{} when this\ncard is played\nand scores	此牌打出并计分时\n获得{C:money}$3
-Red Seal	红色蜡封
-Retrigger this\ncard {C:attention}1{} time	重新触发此牌\n{C:attention}1{}次
-Blue Seal	蓝色蜡封
-Creates the {C:planet}Planet{} card\nfor final played {C:attention}poker hand{}\nof round if {C:attention}held{} in hand\n{C:inactive}(Must have room)	如果此牌在回合结束时\n{C:attention}留在{}手牌中，生成\n最后打出的{C:attention}牌型\n对应的{C:planet}星球牌\n{C:inactive}(必须有空位)
-Purple Seal	紫色蜡封
-Creates a {C:tarot}Tarot{} card\nwhen {C:attention}discarded\n{C:inactive}(Must have room)	此牌被{C:attention}弃掉{}时\n生成一张{C:tarot}塔罗牌\n{C:inactive}(必须有空位)
-Arcana Pack	秘术包
-Choose {C:attention}#1#{} of up to\n{C:attention}#2#{C:tarot} Tarot{} cards to\nbe used immediately	从最多{C:attention}#2#{}张{C:tarot}塔罗牌\n中选择{C:attention}#1#{}张\n立即使用
-Jumbo Arcana Pack	巨型秘术包
-Mega Arcana Pack	超级秘术包
-Celestial Pack	天体包
-Choose {C:attention}#1#{} of up to\n{C:attention}#2#{C:planet} Planet{} cards to\nbe used immediately	从最多{C:attention}#2#{}张{C:planet}星球牌\n中选择{C:attention}#1#{}张\n立即使用
-Jumbo Celestial Pack	巨型天体包
-Mega Celestial Pack	超级天体包
-Standard Pack	标准包
-Choose {C:attention}#1#{} of up to\n{C:attention}#2#{C:attention} Playing{} cards to\nadd to your deck	从最多{C:attention}#2#{}张{C:attention}游戏牌\n中选择{C:attention}#1#{}张\n加入牌组
-Jumbo Standard Pack	巨型标准包
-Mega Standard Pack	超级标准包
-Buffoon Pack	小丑包
-Choose {C:attention}#1#{} of up to\n{C:attention}#2#{C:attention} Joker{} cards	从最多{C:attention}#2#{}张{C:attention}小丑牌\n中选择{C:attention}#1#{}张
-Jumbo Buffoon Pack	巨型小丑包
-Mega Buffoon Pack	超级小丑包
-Spectral Pack	幻灵包
-Choose {C:attention}#1#{} of up to\n{C:attention}#2#{C:spectral} Spectral{} cards to\nbe used immediately	从最多{C:attention}#2#{}张{C:spectral}幻灵牌\n中选择{C:attention}#1#{}张\n立即使用
-Jumbo Spectral Pack	巨型幻灵包
-Mega Spectral Pack	超级幻灵包
-Red Deck	红色牌组
-{C:mult}+#1#{} discard\nevery round	每回合\n弃牌次数{C:mult}+#1#
-Jack	J
-Queen	Q
-King	K
-Ace	A
-Spade	黑桃
-Heart	红桃
-Club	梅花
-Diamond	方片
-Spades	黑桃
-Hearts	红桃
-Clubs	梅花
-Diamonds	方片
- Mult	倍率
-Active!	已生效！
- remaining	次后生效
-[poker hand]	[牌型]
-\020 Mult	\020倍率
+The target is half again\nas high	目标分数\n提高一半
+Bronze Table	铜牌桌
+Silver Table	银牌桌
+Gold Table	金牌桌
+\020 Multi	\020 倍率
+\020 Points	\020 点数
+Mult	倍率
+(now 	(现在 
 Common	普通
-Uncommon	罕见
+Uncommon	少见
 Rare	稀有
-Legendary	传奇
-%1 of %2	%2%1
-\003Debuffed\020\nScores no chips\nand all abilities\nare disabled	\003已削弱\020\n不计筹码\n且所有能力失效
-\020 chips	\020筹码
-\020 extra chips	\020额外筹码
-compatible	可复制
-incompatible	不可复制
-Tarot	塔罗牌
-Planet	星球牌
-Spectral	幻灵牌
-Voucher	优惠券
-PLAY	开始
-OPTIONS	选项
-QUIT	退出
-CREDITS	制作者
-New Run	新游戏
-Continue	继续
-\003+1\020 discard\nevery round	每回合弃牌次数\003+1
-Round	回合
-Ante	底注
-Money	资金
-Best Hand	最佳出牌
-White Stake	白注
-Base Difficulty	基础难度
-Wins \004	胜场 \004
-\001   Best Ante \004	\001   最高底注 \004
-\001   Best Hand \003	\001   最佳出牌 \003
-Seed \004	种子 \004
-CONTINUE	继续
-Back	返回
-\004Arrows\020  move between cards, Jokers, buttons\n\004OK\020  select a card, or pick a Joker/item and\n     choose \006Sell\020, \003Use\020, \005Buy\020...\n\004EXE\020  \002Play Hand\020      \004DEL\020  \003Discard\020\n\004shift\020  sort the hand by rank or suit\n\004alpha\020 + \004left/right\020  move a Joker or card\n\004toolbox\020  Run Info      \004var\020  view deck\n\004back\020  back / Options     \004home\020  save, quit\nHold \004OK\020 or \004EXE\020 to speed up scoring.\n\nPlay poker hands: score = \002Chips\020 x \003Mult\020.\nBeat each Blind's score before your\nhands run out. Buy Jokers in the shop\nand beat the Ante 8 Boss Blind to win!	\004方向键\020  在牌、小丑牌和选项间移动\n\004OK\020  选择牌，或选中小丑牌/物品后\n     选择\006出售\020、\003使用\020、\005购买\020等\n\004EXE\020  \002出牌\020      \004DEL\020  \003弃牌\020\n\004shift\020  按点数或花色整理手牌\n\004alpha\020 + \004左/右\020  移动小丑牌或牌\n\004工具箱\020  牌局信息      \004var\020  查看牌组\n\004返回\020  返回/选项      \004主页\020  保存并退出\n按住\004OK\020或\004EXE\020可加快计分\n\n打出扑克牌型：得分 = \002筹码\020 x \003倍率\020\n在出牌次数用完前达到每个盲注的分数\n在商店里购买小丑牌\n击败第8底注的Boss盲注即可获胜！
-How to play	玩法说明
-Credits	制作者
-Inspired by \004Balatro\020 by LocalThunk.\nNot affiliated with LocalThunk or Playstack.\n\nCard, Joker and interface art adapted\nfrom Balatro by LocalThunk.\nRules and card texts follow the game.\nFont: \004m6x11\020 by Daniel Linssen.\n\nMade by \004Mason Chen\020 as part of NumPlay.\n\nPlease support the original game!	灵感来自LocalThunk的\004Balatro\020。\n与LocalThunk及Playstack无关。\n\n卡牌、小丑牌和界面美术\n改编自LocalThunk的Balatro。\n规则和卡牌说明同原版。\n字体：Daniel Linssen的\004m6x11\020。\n\n由\004Mason Chen\020为NumPlay制作。\n\n请购买原版游戏！
-Game Speed	游戏速度
-How to Play	玩法说明
-Main Menu	主菜单
-Options	选项
-Game Speed < 	游戏速度 <
-New run?	新游戏？
-The current run will be lost.	当前对局将会丢失。
+Raises the level of\n\004	提升一级：\n\004
+\020 by one:\n\002+	\020\n\002+
+\020 Points, \003+	\020 点数，\003+
+Now level 	现在等级 
+Lesson	课程
+Salon 	沙龙 
+Target	目标
+Score	分数
+Hands 	出牌 
+Discards 	弃牌 
+Deck 	牌堆 
+level 	等级 
+Pick up to 5 cards	最多选 5 张牌
+EXE: play   \203: discard   shift: sort	EXE：出牌   \203：弃牌   shift：排序
+Score at least	至少得分
+Reward: 	奖励：
+ coins	 枚金币
+Gold Table: 	金牌桌：
+Play	开始
+Table won!	赢下牌桌！
+Hands left	剩余出牌
+Interest (1 per 10)	利息（每 10 枚 1 枚）
+Total	合计
+Shop	商店
+Sold	已售
+Reroll 	刷新 
+Next	下一桌
+New items for the shop	刷新商店物品
+On to the next table	前往下一张牌桌
+up: your Jokers (OK twice: sell; shift + arrows: order)	上：你的小丑牌（按两次 OK：卖出；shift + 方向键：排序）
+OK again: sell for 	再按 OK：卖出得 
+You won!	你赢了！
+Game over	游戏结束
+Best hand	最佳一手
+Tables won	赢下牌桌
+Best salon ever	最佳沙龙
+Keep going	继续
+New run	新游戏
+Main menu	主菜单
+Poker hands	牌型
+lvl 	级 
+How to play	玩法
+Reach the target score at each table.	在每张牌桌达到目标分数。
+Pick up to 5 cards and play a poker hand:	选最多 5 张牌，打出一手牌：
+\002Points\020 (the hand's, plus each scoring	\002点数\020（牌型的，加上每张计分牌
+card's rank) times \003Multi\020 is your score.	的点数）乘以\003倍率\020就是得分。
+Jokers add their effects, left to right.	小丑牌从左到右加上效果。
+Won tables pay \005coins\020: buy Jokers and	赢下牌桌得到\005金币\020：在商店
+Lessons in the shop. 8 salons to win.	买小丑牌和课程。通过 8 个沙龙获胜。
+Arrows: move     OK: pick a card	方向键：移动     OK：选牌
+EXE: play the hand     \203: discard	EXE：出牌     \203：弃牌
+shift: sort by rank or suit	shift：按点数或花色排序
+shift + arrows: move a Joker	shift + 方向键：移动小丑牌
+toolbox: poker hands     Back: menu	工具箱：牌型     返回：菜单
+Home: save and quit	Home：保存并退出
+Resume	继续
+Menu	菜单
+Give up this run?	放弃这局？
 Yes	是
 No	否
-Poker Hands	牌型
-Blinds	盲注
-Vouchers	优惠券
-lvl.	等级
-Score at least	最低得分
-Reward:	奖励：
-No Vouchers redeemed yet	还没有兑换优惠券
-left/right: tabs     back: close	左/右：切换     返回：关闭
-Remaining	剩余
-Full Deck	完整牌组
-Play Hand	出牌
-Sort Hand	整理手牌
-Rank	点数
-Suit	花色
-Discard	弃牌
-SELL\n	出售\n
-USE	使用
-Select	选择
-Defeated	已击败
-Skipped	已跳过
-Upcoming	即将到来
-or	或
-Skip Blind	跳过
-Reroll Boss\n$10	重掷Boss\n$10
-Cash Out: 	兑现：
-Remaining Hands ($1 each)	剩余出牌(每次$1)
-Defeat the Boss Blind	击败Boss盲注
- interest per $5 (	/每$5利息(最多
- max)	)
-Next\nRound	下一回合
-Reroll	重掷
-ANTE 	第
- VOUCHER	底注优惠券
-REDEEM	兑换
-OPEN	打开
-BUY	购买
-BUY\n& USE	购买并\n使用
-Choose 	选择
-Skip	跳过
-SELECT	选择
-Better luck\nnext time!	下次好运！
-Don't give up!	别放弃！
-So close!	再试一次！
-The house\nalways wins...	庄家\n总是会赢...
-You did it!	你做到了！
-Unbelievable!	难以置信！
-A true\ncard shark!	真正的\n卡牌高手！
-YOU WIN!	你赢了！
-GAME OVER	游戏结束
-Ante \004	底注 \004
-\001    Round \004	\001    回合 \004
-Most Played Hand	最常打出的牌型
-Cards Played	打出的牌
-Cards Discarded	弃掉的牌
-Cards Purchased	购买的牌
-Times Rerolled	重掷次数
-Seed	种子
-Endless\nMode	无限\n模式
-New\nRun	新游戏
-Main\nMenu	主菜单
-Mult	倍率
-+3 Hand Size	手牌上限+3
-Debuffed	已削弱
-Again!	再来！
-X2 Mult	X2倍率
-+10 Mult	+10倍率
-X1.5 Mult	X1.5倍率
-Not Allowed!	不允许！
-+1 Tarot	+1塔罗牌
-Saved by Mr. Bones	骷髅先生保住了你
-+1 Planet	+1星球牌
-Nope!	不行！
-Improve your run!	强化你的牌局！
-to earn	奖励
-Choose your\nnext Blind	选择你的\n下一个盲注
-Round\nscore	回合\n得分
-Run\nInfo	牌局\n信息
-Hands	出牌
-Discards	弃牌
-Upgrade!	升级！
-Reset	重置
-Saved!	保住了！
-Eaten!	吃掉了！
-Extinct!	没了！
-Safe!	安全！
-Melted!	没了！
-Drank!	用完了！
-+1 Spectral	+1幻灵牌
-Copied!	已复制！
-Gold	黄金
-Level Up!	升级！
-Value Up!	价值提升！
-Boss Disabled!	Boss失效！
-Duplicated!	已复制！
-+2 Mult	+2倍率
-+3 Mult	+3倍率
-+3 Hands	+3次出牌
-+2 Jokers	+2小丑牌
-+1 Stone	+1石头牌
--X0.01 Mult	-X0.01倍率
--1 Mult	-1倍率
--4 Mult	-4倍率
-+1 Mult	+1倍率
-Flush Five	同花五条
-Flush House	同花葫芦
-Five of a Kind	五条
-Straight Flush	同花顺
-Four of a Kind	四条
-Full House	葫芦
-Flush	同花
-Straight	顺子
-Three of a Kind	三条
-Two Pair	两对
-Pair	对子
-High Card	高牌
+Continue	继续
+Quit	退出
+A poker game with Jokers	一款带小丑牌的扑克游戏
+Best salon 	最佳沙龙 
+   Best hand 	   最佳一手 
+Jokeria, a Calcade game	Jokeria，Calcade 游戏
+J	J
+Q	Q
+K	K
+A	A
++1	+1
diff --git a/games/balatro/src/art.c b/games/balatro/src/art.c
index 5f602a8..b2455ad 100644
--- a/games/balatro/src/art.c
+++ b/games/balatro/src/art.c
@@ -111,7 +111,7 @@ static uint32_t used;
 static uint16_t where[ART_NSPRITES]; /* offset/4 + 1 into the arena, 0 = not decoded */
 static uint8_t lasty[ART_NSPRITES];  /* this frame: bottom row of the sprite's last use */
 static uint8_t firsty[ART_NSPRITES]; /* this frame: top row of its first use */
-static uint8_t tmpl_buf[3][ART_CW * ART_CH];
+static uint8_t tmpl_buf[1][ART_CW * ART_CH];
 static int8_t tmpl_slot[ART_NGROUPS];
 static uint8_t tmpl_ready;
 
@@ -120,7 +120,7 @@ static void templates(void) {
   int k = 0;
   for (int g = 0; g < ART_NGROUPS; g++) {
     tmpl_slot[g] = -1;
-    if (art_tmpl_of_group[g] >= 0 && k < 3) {
+    if (art_tmpl_of_group[g] >= 0 && k < 1) {
       decode(art_tmpl_of_group[g], tmpl_buf[k], 0);
       tmpl_slot[g] = (int8_t)k++;
     }
diff --git a/games/balatro/src/art.h b/games/balatro/src/art.h
index f56cbe4..327425a 100644
--- a/games/balatro/src/art.h
+++ b/games/balatro/src/art.h
@@ -3,7 +3,7 @@
 #include <stdint.h>
 #include "assets.h"
 
-#define ART_ARENA (50 * 1024)
+#define ART_ARENA (20 * 1024)
 
 void art_flush(void);
 void art_begin_frame(void);
diff --git a/games/balatro/src/assets.c b/games/balatro/src/assets.c
index 5991be4..3ebf711 100644
--- a/games/balatro/src/assets.c
+++ b/games/balatro/src/assets.c
@@ -1,6028 +1,483 @@
-/* Generated by tools/mkassets.py from Balatro's art (LocalThunk) and the m6x11 font (Daniel Linssen): do not edit. */
+/* Generated by tools/conformite/jokeria_art.py (Jokeria's own art and font, Calcade 2026): do not edit. */
 #include "assets.h"
 
 const art_sprite_t art_sprites[ART_NSPRITES] = {
   {0, 0, 35, 47},
-  {224, 0, 35, 47},
-  {505, 0, 35, 47},
-  {992, 0, 35, 47},
-  {1511, 0, 35, 47},
-  {1870, 0, 35, 47},
-  {2361, 0, 35, 47},
-  {2661, 0, 35, 47},
-  {2974, 0, 35, 47},
-  {3309, 0, 35, 47},
-  {3629, 0, 35, 47},
-  {3987, 0, 35, 47},
-  {4280, 0, 35, 47},
-  {4584, 0, 35, 47},
-  {4925, 0, 35, 47},
-  {5239, 0, 35, 47},
-  {5547, 0, 35, 28},
-  {5793, 0, 35, 47},
-  {5964, 0, 35, 47},
-  {6231, 0, 35, 47},
-  {6461, 0, 35, 47},
-  {6847, 0, 35, 47},
-  {7453, 0, 35, 47},
-  {7901, 0, 35, 47},
-  {8412, 0, 35, 47},
-  {8720, 0, 35, 47},
-  {9361, 0, 35, 47},
-  {9794, 0, 35, 47},
-  {10149, 0, 35, 47},
-  {10533, 0, 35, 47},
-  {10973, 0, 35, 47},
-  {11234, 0, 35, 47},
-  {11561, 0, 35, 47},
-  {12015, 0, 35, 47},
-  {12347, 0, 35, 47},
-  {12739, 0, 35, 47},
-  {13104, 0, 35, 47},
-  {13447, 0, 35, 47},
-  {13800, 0, 35, 47},
-  {14284, 0, 35, 47},
-  {14554, 0, 35, 47},
-  {14803, 0, 35, 47},
-  {15144, 0, 35, 47},
-  {15324, 0, 35, 47},
-  {15806, 0, 35, 47},
-  {16216, 0, 35, 47},
-  {16529, 0, 35, 47},
-  {16722, 0, 35, 47},
-  {16966, 0, 35, 47},
-  {17381, 0, 35, 47},
-  {17690, 0, 35, 47},
-  {18013, 0, 35, 47},
-  {18325, 0, 35, 47},
-  {18864, 0, 35, 47},
-  {19297, 0, 35, 47},
-  {19612, 0, 35, 47},
-  {20203, 0, 35, 47},
-  {20519, 0, 35, 47},
-  {20778, 0, 35, 47},
-  {21059, 0, 35, 47},
-  {21611, 0, 35, 47},
-  {22173, 0, 35, 47},
-  {22664, 0, 35, 47},
-  {22929, 0, 35, 47},
-  {23165, 0, 35, 47},
-  {23697, 0, 35, 35},
-  {23978, 0, 35, 47},
-  {24534, 0, 35, 47},
-  {25137, 0, 35, 47},
-  {25419, 0, 35, 47},
-  {25927, 0, 35, 47},
-  {26066, 0, 35, 47},
-  {26727, 0, 35, 47},
-  {27077, 0, 35, 47},
-  {27459, 0, 35, 47},
-  {27969, 0, 35, 47},
-  {28362, 0, 35, 47},
-  {28945, 0, 35, 47},
-  {29226, 0, 35, 39},
-  {29681, 0, 35, 47},
-  {29944, 0, 35, 47},
-  {30381, 0, 35, 47},
-  {30899, 0, 35, 47},
-  {31239, 0, 35, 47},
-  {31806, 0, 35, 47},
-  {32126, 0, 35, 47},
-  {32609, 0, 35, 47},
-  {32869, 0, 35, 47},
-  {33329, 0, 35, 47},
-  {33749, 0, 35, 47},
-  {34399, 0, 35, 47},
-  {34703, 0, 35, 47},
-  {35038, 0, 35, 47},
-  {35587, 0, 35, 47},
-  {35851, 0, 35, 47},
-  {36439, 0, 35, 47},
-  {36963, 0, 35, 47},
-  {37268, 0, 35, 47},
-  {37692, 0, 35, 47},
-  {38334, 0, 35, 47},
-  {39031, 0, 35, 47},
-  {39500, 0, 35, 47},
-  {40039, 0, 35, 47},
-  {40355, 0, 35, 47},
-  {40837, 0, 35, 47},
-  {41282, 0, 35, 47},
-  {41640, 0, 35, 47},
-  {42061, 0, 35, 47},
-  {42343, 0, 35, 47},
-  {42597, 0, 35, 47},
-  {42789, 0, 35, 47},
-  {43056, 0, 35, 47},
-  {43469, 0, 35, 47},
-  {44055, 0, 35, 47},
-  {44376, 0, 35, 47},
-  {44906, 0, 35, 47},
-  {45382, 0, 35, 47},
-  {45935, 0, 35, 47},
-  {46450, 0, 35, 47},
-  {46972, 0, 35, 47},
-  {47581, 0, 35, 47},
-  {47939, 0, 35, 47},
-  {48186, 0, 35, 47},
-  {48817, 0, 35, 47},
-  {49109, 0, 25, 33},
-  {49370, 0, 35, 47},
-  {49723, 0, 35, 47},
-  {50062, 0, 35, 47},
-  {50390, 0, 35, 47},
-  {51014, 0, 35, 47},
-  {51632, 0, 35, 47},
-  {52148, 0, 35, 47},
-  {52675, 0, 35, 47},
-  {53201, 0, 35, 47},
-  {53728, 0, 35, 47},
-  {54263, 0, 35, 47},
-  {54809, 0, 35, 47},
-  {55102, 0, 35, 47},
-  {55426, 0, 35, 47},
-  {56035, 0, 35, 47},
-  {56518, 0, 35, 47},
-  {56963, 0, 35, 47},
-  {57473, 0, 35, 47},
-  {57997, 0, 35, 47},
-  {58583, 0, 35, 47},
-  {59313, 0, 35, 47},
-  {59813, 0, 35, 47},
-  {60435, 0, 35, 47},
-  {60982, 0, 35, 47},
-  {61587, 0, 35, 47},
-  {62098, 0, 35, 47},
-  {62665, 0, 35, 47},
-  {62889, 0, 35, 47},
-  {63127, 0, 35, 47},
-  {63376, 0, 35, 47},
-  {63575, 0, 35, 47},
-  {63791, 0, 35, 47},
-  {64047, 1, 35, 47},
-  {64427, 1, 35, 47},
-  {64854, 1, 35, 47},
-  {65331, 1, 35, 47},
-  {65759, 1, 35, 47},
-  {66287, 1, 35, 47},
-  {66766, 1, 35, 47},
-  {67262, 1, 35, 47},
-  {67754, 1, 35, 47},
-  {68242, 1, 35, 47},
-  {68746, 1, 35, 47},
-  {69165, 1, 35, 47},
-  {69631, 1, 35, 47},
-  {70072, 1, 35, 47},
-  {70543, 1, 35, 47},
-  {71059, 1, 35, 47},
-  {71524, 1, 35, 47},
-  {71984, 1, 35, 47},
-  {72390, 1, 35, 47},
-  {72838, 1, 35, 47},
-  {73263, 1, 35, 47},
-  {73776, 1, 35, 47},
-  {74270, 1, 35, 47},
-  {74732, 1, 35, 47},
-  {75084, 1, 35, 47},
-  {75459, 1, 35, 47},
-  {75905, 1, 35, 47},
-  {76263, 1, 35, 47},
-  {76701, 1, 35, 47},
-  {77063, 1, 35, 47},
-  {77434, 1, 35, 47},
-  {77807, 1, 35, 47},
-  {78138, 1, 35, 47},
-  {78556, 1, 35, 47},
-  {78983, 1, 35, 47},
-  {79391, 1, 35, 47},
-  {79894, 1, 35, 47},
-  {80381, 1, 35, 47},
-  {80938, 1, 35, 47},
-  {81485, 1, 35, 47},
-  {81949, 1, 35, 47},
-  {82494, 1, 35, 47},
-  {82937, 1, 35, 47},
-  {83364, 1, 35, 47},
-  {83893, 1, 35, 47},
-  {84353, 1, 35, 47},
-  {84843, 1, 35, 47},
-  {85376, 1, 35, 47},
-  {85876, 1, 35, 47},
-  {86410, 1, 35, 47},
-  {86810, 1, 35, 47},
-  {87300, 1, 35, 47},
-  {87888, 1, 35, 47},
-  {88489, 1, 35, 47},
-  {88707, 2, 35, 47},
-  {89572, 2, 35, 47},
-  {89869, 2, 35, 47},
-  {90132, 2, 35, 47},
-  {90382, 2, 35, 47},
-  {90697, 2, 35, 47},
-  {91014, 2, 35, 47},
-  {91393, 2, 35, 47},
-  {91739, 2, 35, 47},
-  {92029, 2, 35, 47},
-  {92298, 2, 35, 47},
-  {92538, 2, 35, 47},
-  {92810, 2, 35, 47},
-  {92977, 2, 35, 47},
-  {93260, 2, 35, 47},
-  {93666, 2, 35, 47},
-  {93985, 2, 35, 47},
-  {94278, 2, 35, 47},
-  {94723, 2, 35, 47},
-  {95170, 2, 35, 47},
-  {95571, 2, 35, 47},
-  {96169, 2, 35, 47},
-  {96619, 2, 35, 47},
-  {97133, 2, 35, 47},
-  {97607, 2, 35, 47},
-  {98027, 2, 35, 47},
-  {98414, 2, 35, 47},
-  {98805, 2, 35, 47},
-  {99276, 2, 35, 47},
-  {99678, 2, 35, 47},
-  {100125, 2, 35, 47},
-  {100659, 2, 35, 47},
-  {101154, 2, 35, 47},
-  {101590, 2, 35, 47},
-  {102083, 2, 35, 47},
-  {102626, 2, 35, 47},
-  {103169, 2, 35, 47},
-  {103694, 2, 35, 47},
-  {104260, 2, 35, 47},
-  {104775, 2, 35, 47},
-  {105223, 2, 35, 47},
-  {105696, 2, 35, 47},
-  {106223, 2, 35, 47},
-  {106624, 2, 35, 47},
-  {107076, 2, 35, 47},
-  {107661, 2, 35, 47},
-  {108226, 2, 35, 47},
-  {108804, 2, 35, 47},
-  {109346, 3, 35, 47},
-  {109836, 3, 35, 47},
-  {109871, 3, 35, 47},
-  {110449, 3, 35, 47},
-  {110637, 3, 35, 47},
-  {110867, 3, 35, 47},
-  {111232, 3, 35, 47},
-  {111353, 3, 35, 47},
-  {112111, 3, 35, 47},
-  {112216, 3, 35, 47},
-  {112430, 3, 35, 47},
-  {112511, 3, 35, 47},
-  {112598, 3, 35, 47},
-  {112700, 3, 35, 47},
-  {112755, 3, 35, 47},
-  {113384, 3, 35, 47},
-  {113435, 3, 35, 47},
-  {113488, 3, 35, 47},
-  {113544, 3, 35, 47},
-  {113607, 3, 35, 47},
-  {113674, 3, 35, 47},
-  {113740, 3, 35, 47},
-  {113815, 3, 35, 47},
-  {113894, 3, 35, 47},
-  {113980, 3, 35, 47},
-  {114431, 3, 35, 47},
-  {114876, 3, 35, 47},
-  {115314, 3, 35, 47},
-  {115368, 3, 35, 47},
-  {115416, 3, 35, 47},
-  {115467, 3, 35, 47},
-  {115521, 3, 35, 47},
-  {115582, 3, 35, 47},
-  {115647, 3, 35, 47},
-  {115712, 3, 35, 47},
-  {115787, 3, 35, 47},
-  {115865, 3, 35, 47},
-  {115949, 3, 35, 47},
-  {116357, 3, 35, 47},
-  {116825, 3, 35, 47},
-  {117277, 3, 35, 47},
-  {117336, 3, 35, 47},
-  {117383, 3, 35, 47},
-  {117431, 3, 35, 47},
-  {117482, 3, 35, 47},
-  {117538, 3, 35, 47},
-  {117597, 3, 35, 47},
-  {117653, 3, 35, 47},
-  {117718, 3, 35, 47},
-  {117785, 3, 35, 47},
-  {117857, 3, 35, 47},
-  {118323, 3, 35, 47},
-  {118782, 3, 35, 47},
-  {119231, 3, 35, 47},
-  {119280, 3, 35, 47},
-  {119330, 3, 35, 47},
-  {119383, 3, 35, 47},
-  {119439, 3, 35, 47},
-  {119501, 3, 35, 47},
-  {119568, 3, 35, 47},
-  {119635, 3, 35, 47},
-  {119712, 3, 35, 47},
-  {119792, 3, 35, 47},
-  {119879, 3, 35, 47},
-  {120289, 3, 35, 47},
-  {120717, 3, 35, 47},
-  {121210, 3, 35, 47},
-  {121267, 4, 26, 26},
-  {121406, 4, 26, 26},
-  {121544, 4, 26, 26},
-  {121653, 4, 26, 26},
-  {121766, 4, 26, 26},
-  {121858, 4, 26, 26},
-  {121964, 4, 26, 26},
-  {122075, 4, 26, 26},
-  {122170, 4, 26, 26},
-  {122261, 4, 26, 26},
-  {122358, 4, 26, 26},
-  {122482, 4, 26, 26},
-  {122559, 4, 26, 26},
-  {122668, 4, 26, 26},
-  {122754, 4, 26, 26},
-  {122869, 4, 26, 26},
-  {122968, 4, 26, 26},
-  {123068, 4, 26, 26},
-  {123180, 4, 26, 26},
-  {123281, 4, 26, 26},
-  {123390, 4, 26, 26},
-  {123496, 4, 26, 26},
-  {123601, 4, 26, 26},
-  {123703, 4, 26, 26},
-  {123805, 4, 26, 26},
-  {123906, 4, 26, 26},
-  {124095, 4, 26, 26},
-  {124276, 4, 26, 26},
-  {124457, 4, 26, 26},
-  {124650, 4, 26, 26},
-  {124825, 4, 26, 26},
-  {124918, 4, 19, 19},
-  {125064, 4, 19, 19},
-  {125206, 4, 19, 19},
-  {125357, 4, 19, 19},
-  {125507, 4, 19, 19},
-  {125657, 4, 19, 19},
-  {125789, 4, 19, 19},
-  {125922, 4, 19, 19},
-  {126058, 4, 19, 19},
-  {126208, 4, 19, 19},
-  {126345, 4, 19, 19},
-  {126494, 4, 19, 19},
-  {126643, 4, 19, 19},
-  {126796, 4, 19, 19},
-  {126947, 4, 19, 19},
-  {127105, 4, 19, 19},
-  {127266, 4, 19, 19},
-  {127386, 4, 19, 19},
-  {127512, 4, 19, 19},
-  {127639, 4, 19, 19},
-  {127776, 4, 19, 19},
-  {127901, 4, 19, 19},
-  {128052, 4, 19, 19},
-  {128198, 4, 19, 19},
-  {128351, 4, 72, 36},
-  {129340, 4, 15, 15},
-  {129464, 4, 11, 11},
-  {129545, 5, 212, 138},
+  {78, 0, 35, 47},
+  {223, 0, 35, 47},
+  {402, 0, 35, 47},
+  {694, 0, 35, 47},
+  {1048, 0, 35, 47},
+  {1233, 0, 35, 47},
+  {1436, 0, 35, 47},
+  {1608, 0, 35, 47},
+  {1812, 0, 35, 47},
+  {1927, 0, 35, 47},
+  {2118, 0, 35, 47},
+  {2309, 0, 35, 47},
+  {2510, 0, 35, 47},
+  {2702, 0, 35, 47},
+  {2896, 0, 35, 47},
+  {3068, 0, 35, 47},
+  {3365, 0, 35, 47},
+  {3562, 0, 35, 47},
+  {3746, 0, 35, 47},
+  {4010, 0, 35, 47},
+  {4342, 0, 35, 47},
+  {4535, 0, 35, 47},
+  {4765, 0, 35, 47},
+  {5063, 0, 35, 47},
+  {5361, 0, 35, 47},
+  {5737, 0, 35, 47},
+  {5947, 1, 7, 7},
+  {5971, 1, 7, 7},
+  {5995, 1, 7, 7},
+  {6018, 1, 7, 7},
+  {6036, 1, 11, 11},
+  {6066, 1, 11, 11},
+  {6092, 1, 11, 11},
+  {6121, 1, 11, 11},
+  {6148, 1, 17, 15},
+  {6206, 1, 17, 15},
+  {6286, 1, 17, 15},
+  {6353, 1, 33, 45},
+  {7048, 1, 9, 9},
+  {7099, 2, 118, 44},
 };
-const uint8_t art_blob[132510] = {
-  14,0,1,24,40,45,49,47,47,39,77,79,58,25,29,74,75,188,120,60,180,159,198,164,
-  9,240,218,0,222,150,59,247,168,181,81,225,137,217,44,173,154,177,126,0,134,60,220,171,
-  175,13,224,81,146,203,42,75,188,180,224,221,242,215,109,21,241,227,160,122,238,6,3,18,
-  59,53,71,191,22,36,139,13,62,122,112,56,190,217,183,78,250,203,123,217,205,17,147,205,
-  150,173,156,85,23,82,252,41,27,63,54,35,244,33,187,167,155,141,11,49,77,194,206,34,
-  175,233,130,70,134,227,164,191,61,135,25,153,121,39,199,96,111,14,43,247,192,185,236,27,
-  23,95,253,127,12,55,185,10,129,126,44,197,100,14,103,41,29,49,179,56,11,146,155,21,
-  17,134,199,21,250,154,0,171,44,104,254,15,180,11,81,83,202,34,194,246,46,133,183,1,
-  61,83,28,178,35,89,207,163,92,22,30,104,159,248,173,76,63,84,159,43,245,213,178,91,
-  72,4,80,23,162,26,229,50,23,0,1,29,46,53,43,34,39,28,35,28,24,19,27,27,
-  35,24,18,10,17,22,22,48,48,54,18,11,255,255,166,18,208,165,97,5,223,50,135,214,
-  161,203,213,83,147,89,207,215,67,86,58,141,11,238,105,118,61,164,87,114,119,120,85,98,
-  173,127,149,196,76,235,22,227,211,30,186,164,71,38,232,231,231,214,248,173,110,204,201,96,
-  62,112,168,0,46,111,192,241,52,109,104,74,87,134,125,215,226,86,95,196,62,146,40,193,
-  163,160,129,9,114,168,113,106,148,234,50,70,187,150,158,100,206,240,209,91,238,131,221,223,
-  186,187,80,61,211,28,91,216,1,20,168,16,195,105,149,197,34,206,229,187,217,204,22,112,
-  176,197,17,97,60,116,221,217,154,238,33,166,2,105,123,214,98,4,205,221,175,118,140,153,
-  71,174,71,218,41,131,184,231,4,210,249,222,21,65,72,165,214,34,132,142,89,245,84,170,
-  15,200,227,67,11,116,87,26,148,53,221,175,126,179,19,109,115,77,147,249,69,134,112,65,
-  46,32,180,221,131,167,141,248,241,157,236,59,209,18,247,206,176,177,65,254,151,183,1,91,
-  103,190,20,130,154,12,204,148,190,223,41,255,76,59,155,67,169,239,237,83,242,225,196,207,
-  159,14,0,1,4,76,93,89,26,10,33,74,73,51,10,35,37,69,42,71,50,55,22,67,
-  25,68,37,224,177,155,7,113,204,16,89,138,229,39,69,240,151,157,13,202,80,198,165,112,
-  166,158,216,76,41,11,43,210,242,76,250,15,91,197,18,71,239,63,75,164,89,23,36,109,
-  131,193,138,230,177,135,192,241,81,88,227,169,60,115,207,165,214,87,122,179,42,105,250,188,
-  166,113,92,44,84,186,149,206,128,66,226,22,90,252,59,126,252,196,25,40,221,131,183,231,
-  229,217,4,88,237,2,93,6,17,181,112,126,169,35,125,228,77,20,140,9,114,74,178,40,
-  155,79,116,193,252,22,96,111,146,153,151,227,77,34,68,121,98,218,233,207,21,152,104,214,
-  24,54,42,173,19,181,213,75,91,1,245,146,35,211,80,55,212,53,166,167,18,23,215,181,
-  122,238,154,189,128,170,218,15,227,188,88,145,2,85,171,79,144,46,151,33,18,71,113,171,
-  197,75,221,221,103,34,2,254,237,175,3,42,69,92,168,222,144,118,39,111,41,70,188,148,
-  52,157,109,254,208,9,14,110,153,40,14,126,143,76,52,204,197,119,227,29,64,128,226,202,
-  228,211,52,209,246,41,216,192,38,104,226,41,253,71,165,95,218,188,238,118,222,106,63,140,
-  222,181,225,22,153,130,92,215,81,195,159,139,97,86,150,102,5,94,14,231,56,249,137,206,
-  182,68,67,112,22,195,83,155,210,189,164,49,179,238,141,101,25,140,153,117,183,188,88,29,
-  176,106,73,36,79,182,116,2,73,128,70,200,62,156,226,203,121,213,88,155,122,72,213,13,
-  157,207,6,87,114,182,74,81,78,113,84,18,134,245,169,190,28,22,190,163,164,92,154,219,
-  112,237,238,156,49,103,143,180,1,45,124,1,184,241,115,136,97,125,51,208,67,126,141,146,
-  210,66,237,17,179,116,68,5,244,240,24,210,80,144,163,51,42,210,191,116,159,59,91,10,
-  97,101,205,174,174,101,213,24,62,15,25,14,90,148,133,9,109,145,195,73,151,73,115,29,
-  120,98,32,43,158,27,40,221,170,111,136,30,51,48,40,13,28,19,1,78,24,238,234,190,
-  165,255,255,250,171,194,23,195,16,0,1,37,55,75,80,65,45,60,80,81,29,8,11,8,
-  8,5,40,38,70,36,136,237,233,140,174,207,206,142,87,61,228,111,242,171,20,20,100,147,
-  2,21,188,25,242,121,242,147,246,31,141,204,141,229,250,140,96,144,144,8,71,134,139,88,
-  74,188,81,138,181,228,97,249,22,157,30,128,10,103,14,128,251,106,159,47,253,93,23,107,
-  33,54,110,166,48,71,57,167,89,53,22,207,27,26,255,180,103,212,0,204,171,27,227,182,
-  148,188,153,92,29,150,4,202,98,107,30,119,127,19,71,166,190,119,86,158,197,78,145,57,
-  60,228,121,251,56,83,105,55,165,17,162,62,25,90,219,253,172,26,114,172,207,125,162,155,
-  107,35,49,163,114,97,254,77,130,32,141,91,19,65,171,27,119,30,23,230,243,150,51,142,
-  40,168,141,162,206,165,80,62,135,49,169,224,58,89,207,4,167,171,184,139,196,80,213,38,
-  211,135,56,249,172,86,222,50,23,139,152,233,220,179,213,185,243,3,171,159,180,54,72,22,
-  76,23,236,6,58,188,32,121,109,200,224,103,35,78,83,59,221,216,235,160,230,145,237,95,
-  240,155,171,180,40,107,217,124,206,104,46,166,244,49,128,172,121,221,199,39,158,140,170,171,
-  186,210,118,161,142,120,49,253,40,244,171,81,174,144,43,58,153,108,124,2,85,89,172,244,
-  120,20,175,96,116,150,184,106,18,139,22,36,25,89,60,202,184,46,193,28,0,143,69,23,
-  150,38,87,20,54,255,240,245,53,174,33,132,185,74,212,166,140,232,223,91,166,130,239,234,
-  39,240,22,41,152,196,139,30,161,61,239,232,84,29,42,159,166,172,171,114,54,200,177,34,
-  103,166,116,197,130,35,66,149,194,98,15,35,73,102,161,175,200,100,18,158,63,186,201,152,
-  239,26,71,153,33,174,36,183,44,242,166,38,11,99,114,78,32,96,88,218,46,191,20,55,
-  233,188,94,98,250,85,160,153,74,233,131,140,234,27,33,161,245,153,244,170,204,117,166,165,
-  5,196,150,83,66,153,14,17,230,124,187,92,8,8,70,166,83,61,80,143,165,201,12,7,
-  163,170,79,16,183,253,112,135,207,9,204,127,150,237,184,175,109,59,188,9,102,28,187,16,
-  125,181,20,198,7,212,213,53,1,40,197,93,121,146,84,149,255,254,233,52,154,115,0,10,
-  0,1,19,48,75,77,64,69,51,81,97,106,61,1,133,17,1,61,74,0,155,140,133,197,
-  255,0,255,64,10,193,119,160,153,217,68,136,65,130,2,66,99,60,186,181,108,163,9,156,
-  130,112,54,7,145,228,205,168,210,168,9,155,196,82,96,100,213,211,86,171,143,134,34,128,
-  42,10,147,58,159,172,130,66,26,82,162,123,127,247,245,10,31,143,157,14,206,70,194,43,
-  216,138,28,39,49,63,120,202,12,24,183,240,238,238,72,208,115,176,123,249,226,106,213,125,
-  240,152,94,116,238,67,102,245,219,100,15,249,248,205,10,137,225,195,119,173,148,96,37,133,
-  114,8,209,240,27,36,218,30,27,243,162,38,31,235,249,195,15,197,95,99,162,177,217,127,
-  22,120,186,229,211,115,253,4,13,169,81,128,81,247,165,184,143,74,164,57,96,243,131,234,
-  112,203,43,248,207,75,51,122,20,102,93,56,43,237,104,47,239,170,31,183,100,99,16,232,
-  95,132,197,218,37,100,99,250,142,151,85,16,208,55,20,162,210,61,212,238,84,160,139,114,
-  154,12,178,29,4,248,10,205,131,167,159,244,78,235,69,184,45,252,169,40,157,57,185,2,
-  209,85,251,18,128,73,121,196,141,218,133,133,198,76,139,172,185,219,243,150,128,143,103,235,
-  44,244,93,76,195,228,55,135,230,92,125,79,155,229,63,91,241,103,136,36,164,228,147,18,
-  151,120,248,252,106,204,105,93,145,18,228,41,82,73,69,232,249,245,49,167,136,110,143,91,
-  107,155,108,212,190,163,26,46,240,82,77,123,105,163,37,185,254,247,195,164,48,46,14,0,
-  1,12,47,75,69,42,64,74,77,27,12,71,71,71,18,16,2,133,17,203,116,169,189,123,
-  134,22,89,121,25,163,206,121,19,53,200,159,121,252,144,79,144,255,161,153,113,38,134,70,
-  186,117,250,13,194,14,66,6,11,166,92,94,117,103,120,122,92,246,252,193,10,212,214,77,
-  79,239,34,137,35,239,3,39,90,27,2,72,186,224,45,32,98,117,156,160,130,180,149,136,
-  134,15,20,111,2,244,40,111,92,215,248,205,24,164,229,75,195,50,194,47,139,19,43,230,
-  218,247,253,232,221,144,69,174,214,143,146,76,45,129,30,65,59,157,140,47,146,71,152,215,
-  176,76,203,151,168,3,151,9,181,131,241,117,147,24,135,129,25,228,164,83,90,90,75,215,
-  44,40,239,226,148,121,108,211,113,144,252,30,64,34,114,187,251,151,90,184,142,222,199,102,
-  4,168,102,233,83,87,106,183,232,253,166,228,96,162,234,218,55,253,52,253,101,241,211,194,
-  12,214,171,98,8,26,29,81,162,113,88,119,41,245,238,195,41,44,58,74,204,83,36,34,
-  79,187,123,142,208,42,96,227,57,86,13,35,140,128,51,35,59,219,184,170,13,105,203,18,
-  218,84,176,116,182,95,85,27,160,117,10,119,148,97,226,41,167,146,198,60,225,92,30,176,
-  129,2,167,220,49,216,130,74,81,123,56,7,97,150,27,210,73,9,85,93,214,56,254,1,
-  249,177,198,223,130,195,178,234,245,211,165,138,197,172,111,197,111,6,238,185,167,183,43,255,
-  169,99,153,163,0,4,165,213,50,154,42,192,46,192,242,241,247,45,22,16,39,111,148,91,
-  130,247,167,171,146,55,231,57,16,208,228,204,82,254,26,58,220,36,238,71,175,42,228,254,
-  116,221,62,214,50,67,231,13,86,244,119,224,197,134,216,255,59,76,183,238,213,83,87,192,
-  102,3,218,209,92,237,7,9,151,1,244,64,117,138,243,153,101,101,230,37,152,236,102,127,
-  25,163,71,120,9,88,160,245,127,51,207,192,159,193,25,218,56,104,61,213,18,191,212,255,
-  80,80,215,83,169,95,183,39,30,197,22,243,145,42,242,124,203,97,59,94,177,142,134,131,
-  96,71,255,254,43,91,215,106,133,23,0,1,23,40,41,19,15,24,30,25,21,17,15,28,
-  42,62,45,52,32,45,32,31,17,29,35,33,6,255,255,166,8,92,148,102,57,180,121,50,
-  84,34,109,203,1,143,254,149,186,24,200,24,32,133,133,82,251,50,54,142,97,247,145,129,
-  59,183,220,134,26,55,56,56,51,225,59,200,155,34,182,127,130,93,106,125,226,69,30,186,
-  251,105,122,117,103,172,222,89,74,150,75,41,14,199,172,128,116,144,219,179,15,49,210,189,
-  27,236,234,89,175,110,148,81,136,86,60,63,152,56,2,171,41,56,108,184,46,73,229,207,
-  242,48,3,21,87,191,98,46,204,83,254,23,49,167,135,98,236,173,84,240,68,241,229,6,
-  203,172,107,58,108,34,16,253,139,147,243,161,134,212,39,211,23,38,80,210,87,148,163,94,
-  93,187,214,252,189,14,70,193,32,73,166,180,249,170,250,238,173,237,118,10,100,253,8,28,
-  253,63,72,111,219,76,56,66,56,246,211,176,187,18,205,38,90,130,57,177,102,132,111,23,
-  121,218,201,129,179,119,43,119,85,228,224,248,47,61,90,152,27,15,159,28,132,33,223,8,
-  128,110,200,116,62,240,139,68,108,78,183,158,219,240,61,172,33,121,174,33,131,196,29,117,
-  6,202,188,139,173,0,27,169,201,67,45,153,10,126,238,47,35,73,173,170,8,23,0,1,
-  15,38,39,23,7,6,12,16,30,24,20,25,37,59,43,38,23,20,36,60,60,59,32,29,
-  250,203,106,229,155,113,79,13,138,178,130,217,243,119,110,182,176,179,245,24,75,54,191,211,
-  143,99,111,192,180,232,77,187,57,247,55,239,112,25,165,88,74,138,26,45,1,38,171,67,
-  27,160,128,210,26,250,86,211,1,206,218,192,131,153,33,104,125,43,192,64,140,37,57,110,
-  205,76,151,127,66,38,227,182,232,117,174,2,68,186,17,141,159,17,16,137,88,8,3,2,
-  235,181,116,170,241,13,113,17,14,21,122,53,112,83,149,156,160,24,166,92,129,4,231,206,
-  61,28,43,81,104,96,196,52,195,172,147,176,149,250,37,71,181,189,209,207,123,22,32,250,
-  133,163,176,138,131,70,193,40,116,115,64,161,227,0,185,233,73,63,98,55,215,127,241,76,
-  182,18,1,77,164,225,128,238,84,53,30,108,250,29,30,183,43,195,93,145,173,65,185,88,
-  35,156,189,86,119,11,108,196,174,203,17,122,36,150,27,138,17,155,138,135,112,182,178,147,
-  60,205,16,182,204,74,30,37,194,168,93,185,129,187,156,95,211,149,64,169,92,131,54,109,
-  158,216,55,6,50,53,208,174,140,64,111,9,53,85,23,149,194,232,69,73,144,103,231,216,
-  203,109,160,164,101,251,163,158,54,160,135,181,231,38,163,134,54,230,247,76,53,82,22,0,
-  1,16,38,39,23,8,14,34,69,64,45,11,11,32,52,50,29,11,23,28,35,46,45,31,
-  6,255,255,165,223,111,139,196,90,123,130,1,121,193,144,81,176,130,212,143,11,38,106,135,
-  67,252,243,110,237,89,77,72,190,152,250,185,79,20,131,70,226,78,197,97,149,115,194,44,
-  30,149,241,101,79,88,117,39,35,113,168,253,146,112,23,74,34,62,169,232,171,217,78,13,
-  29,206,53,19,149,2,245,37,201,134,176,106,190,174,68,105,231,222,50,234,49,227,147,20,
-  204,224,203,133,86,234,164,88,179,10,198,161,91,228,49,174,108,156,160,209,131,247,111,103,
-  213,211,160,243,178,12,23,17,198,25,24,33,18,192,227,255,255,21,195,164,118,128,100,249,
-  115,194,244,126,157,222,74,144,202,228,179,187,242,235,12,67,252,226,38,196,255,189,143,223,
-  116,15,89,30,64,103,213,163,213,175,61,228,116,75,146,98,53,138,75,173,131,246,180,198,
-  188,76,110,185,141,33,252,152,225,37,44,215,254,119,189,64,148,3,46,90,197,113,31,44,
-  95,191,7,251,107,183,42,45,91,57,226,171,116,19,211,176,181,126,161,171,78,145,131,211,
-  249,39,118,182,212,83,190,178,204,53,27,106,2,40,67,218,231,134,103,167,216,169,126,100,
-  231,173,91,40,183,88,0,101,164,219,194,1,95,140,2,142,27,212,235,101,19,78,22,152,
-  176,86,42,196,251,52,218,55,10,182,245,170,215,168,192,74,92,144,205,53,74,23,0,1,
-  3,19,28,29,21,16,10,10,6,11,23,25,35,36,39,34,35,64,56,45,23,66,66,51,
-  251,173,155,181,64,241,79,14,47,235,42,95,99,61,212,85,94,158,14,43,227,186,140,93,
-  1,39,221,173,48,84,121,58,145,147,101,120,87,73,242,84,210,51,56,183,182,100,78,101,
-  152,159,220,119,132,189,203,133,70,243,14,183,72,7,165,126,200,91,175,120,16,142,153,187,
-  72,73,59,63,27,28,0,239,77,1,63,99,47,168,137,188,254,82,67,181,221,65,51,47,
-  9,158,248,58,81,174,248,204,119,73,186,1,69,92,129,211,195,6,100,107,235,45,61,184,
-  8,123,74,222,15,114,44,37,184,16,123,115,253,111,210,170,84,92,63,205,56,152,6,124,
-  210,10,224,215,190,83,206,204,64,130,41,84,210,117,249,214,163,224,111,11,194,37,110,178,
-  175,255,106,10,187,252,245,200,141,181,6,154,78,136,142,146,25,188,61,73,30,88,172,60,
-  234,224,141,135,227,253,28,203,43,189,19,119,189,84,74,154,145,158,197,14,221,210,245,160,
-  180,241,234,146,159,52,194,248,79,11,0,66,207,251,38,66,37,177,69,144,213,190,174,253,
-  254,208,63,194,71,37,144,202,8,192,53,36,137,47,41,107,3,103,118,253,129,96,8,147,
-  121,151,133,167,56,208,38,197,111,20,34,148,152,151,19,162,17,61,166,70,208,32,15,79,
-  165,51,73,219,230,23,0,1,0,13,18,23,16,19,13,16,8,9,11,30,28,57,39,42,
-  33,67,70,55,21,59,54,50,253,113,219,116,46,241,79,51,18,90,65,38,103,191,76,51,
-  171,253,37,8,29,172,195,86,68,228,247,196,7,35,120,69,137,146,184,239,155,146,53,153,
-  203,94,63,151,33,19,89,237,202,193,8,69,0,38,127,216,229,114,45,228,83,10,21,14,
-  161,253,97,155,69,230,121,146,116,105,89,38,44,28,255,230,90,33,255,63,90,102,115,169,
-  88,237,134,87,220,87,253,171,235,191,15,65,66,5,113,219,237,209,231,200,81,18,56,9,
-  238,34,168,50,31,164,45,9,167,89,19,120,186,232,205,85,5,111,127,50,111,11,96,245,
-  227,188,24,202,213,254,10,174,167,62,229,146,32,113,100,251,239,111,67,107,115,209,165,250,
-  136,212,246,27,140,37,61,209,129,65,3,233,10,242,6,153,146,96,108,139,124,233,79,73,
-  183,134,237,84,57,83,189,108,232,110,59,94,23,127,192,192,67,103,1,134,143,2,16,117,
-  33,90,125,210,70,79,191,115,120,69,61,124,59,40,90,11,240,155,210,27,109,135,150,162,
-  140,213,82,245,54,19,81,238,2,104,62,9,53,0,200,45,163,195,122,5,167,54,175,74,
-  96,106,213,150,233,188,50,195,98,200,4,79,150,156,226,31,15,169,224,197,102,33,231,200,
-  123,17,64,54,23,229,39,251,243,110,139,217,164,67,245,29,51,26,254,129,26,89,100,71,
-  225,148,4,115,58,161,21,158,192,19,128,224,246,223,132,203,21,206,151,235,113,201,107,154,
-  86,101,118,21,0,1,24,40,41,19,9,22,30,28,29,34,38,46,37,42,20,13,14,30,
-  60,51,66,34,20,203,106,229,155,113,62,64,71,162,140,98,34,108,84,163,180,197,34,178,
-  66,13,250,89,54,36,28,154,47,73,144,243,253,79,239,0,239,63,88,51,15,104,5,198,
-  14,146,236,34,108,247,21,253,80,51,68,32,250,253,5,210,201,93,36,10,35,76,37,18,
-  62,244,129,74,115,92,168,133,172,222,173,164,164,77,93,244,31,41,232,136,205,70,237,115,
-  186,50,252,132,234,221,230,180,91,211,251,216,74,117,57,59,223,90,238,243,17,222,187,160,
-  245,147,35,45,103,93,151,92,69,118,161,207,243,16,32,156,97,246,7,130,60,201,253,248,
-  254,79,219,119,90,238,29,68,225,64,121,239,18,153,7,145,85,243,197,145,41,115,63,252,
-  32,107,149,44,211,194,81,206,178,6,109,114,115,202,214,113,195,1,133,102,200,107,32,46,
-  237,130,27,3,41,127,121,237,72,217,232,201,36,187,31,228,214,251,143,254,116,214,238,160,
-  90,98,33,214,9,22,249,245,223,130,123,214,181,164,245,89,1,28,161,80,53,26,109,13,
-  71,78,195,49,245,193,189,182,45,230,174,215,96,95,93,176,235,21,92,191,108,173,240,8,
-  32,99,225,249,196,251,80,160,21,0,1,24,40,44,34,22,19,11,14,13,21,37,38,24,
-  27,27,35,24,29,37,64,84,65,13,7,14,139,232,146,206,88,234,114,165,36,115,103,236,
-  106,13,70,207,193,36,118,211,192,97,46,6,41,55,134,172,9,24,43,99,99,235,177,172,
-  127,3,116,108,220,91,144,43,90,229,22,242,211,132,97,125,162,252,110,216,176,198,72,161,
-  150,41,175,3,171,246,237,52,176,154,38,241,188,225,183,255,134,186,120,164,92,119,97,82,
-  142,151,5,8,79,130,119,71,236,53,53,47,178,85,60,13,87,213,64,163,71,125,0,192,
-  168,211,53,182,206,235,141,121,228,176,127,90,5,148,188,99,11,232,234,194,58,53,200,217,
-  41,65,217,17,88,60,70,133,203,186,117,13,70,85,151,192,68,102,123,139,92,114,85,12,
-  102,191,147,99,78,85,213,169,96,159,62,248,79,9,111,73,213,113,2,125,213,23,228,102,
-  234,8,185,226,98,117,113,1,185,27,131,64,242,114,143,64,132,103,73,96,152,110,69,16,
-  6,20,244,250,139,76,96,25,36,38,2,150,131,235,109,16,19,185,72,126,28,226,224,146,
-  243,65,101,27,187,226,52,114,39,98,84,251,168,223,170,166,189,96,136,155,111,112,12,73,
-  10,74,225,102,66,172,83,220,131,229,54,249,40,172,65,32,239,17,190,247,20,185,242,89,
-  20,0,1,17,24,44,30,36,27,27,55,51,53,39,50,49,25,9,7,13,12,13,63,60,
-  43,233,63,91,142,16,139,129,80,173,137,64,192,102,233,180,197,61,0,74,127,174,155,33,
-  56,5,175,66,208,41,112,2,25,87,15,50,21,63,43,243,6,176,197,150,88,244,59,19,
-  147,125,193,103,0,74,8,250,103,57,163,166,181,201,178,115,124,90,47,16,92,255,11,78,
-  187,20,223,209,96,154,77,210,178,63,41,210,29,209,174,48,9,1,193,237,117,28,200,154,
-  167,124,62,87,13,87,218,14,135,5,207,72,5,171,191,163,32,142,85,163,147,226,255,238,
-  45,71,205,162,82,202,206,180,223,209,179,139,245,163,214,156,92,246,160,201,139,188,93,234,
-  181,78,77,116,173,7,12,251,113,84,3,41,29,122,178,206,206,81,117,161,251,128,140,42,
-  36,103,54,85,188,10,243,175,111,92,225,139,186,40,42,251,91,51,218,119,9,137,91,134,
-  62,181,130,254,149,67,194,27,62,67,117,93,68,160,149,34,238,253,156,249,195,184,113,5,
-  140,193,208,126,14,162,106,39,180,164,174,125,44,171,164,203,199,57,231,188,0,188,61,224,
-  46,211,18,42,210,10,7,24,75,18,114,254,74,186,93,0,87,60,14,162,192,208,27,68,
-  201,75,3,122,38,40,159,32,148,26,144,75,46,253,250,222,191,124,135,50,123,216,70,48,
-  112,5,109,20,95,11,199,84,177,75,200,22,184,184,176,195,20,178,63,144,140,250,179,91,
-  235,252,177,11,236,23,0,1,15,40,41,27,9,15,13,14,7,17,29,29,25,23,33,51,
-  56,53,37,32,35,66,52,39,243,203,106,229,155,113,81,157,217,2,1,233,113,251,175,220,
-  101,86,71,106,179,234,232,103,220,141,149,29,149,110,179,7,80,78,196,167,4,88,122,195,
-  219,34,189,177,192,245,196,43,139,144,228,19,178,52,43,8,23,150,250,234,137,59,89,85,
-  187,118,58,127,14,27,49,145,223,93,174,199,166,187,59,172,155,226,226,127,162,236,22,144,
-  135,235,64,193,39,38,114,167,135,156,180,79,128,255,72,44,66,136,111,162,225,78,90,204,
-  80,95,165,157,207,17,255,122,29,129,164,167,199,226,53,77,133,190,20,214,136,209,244,53,
-  51,184,164,22,129,207,113,93,191,132,20,153,177,148,145,73,32,205,62,3,2,40,133,212,
-  185,189,139,237,198,68,41,232,91,195,149,114,77,236,123,82,45,210,244,236,10,130,192,233,
-  164,140,162,231,166,1,62,56,61,5,204,79,55,36,15,4,207,202,153,195,70,242,161,248,
-  177,63,206,165,105,224,186,46,81,167,124,3,195,173,69,213,31,222,72,47,109,48,166,146,
-  103,124,90,46,10,220,180,126,56,15,204,247,78,102,239,33,7,188,105,196,127,142,58,74,
-  154,77,247,47,180,229,214,219,43,143,52,131,102,1,148,214,35,124,202,29,68,197,234,246,
-  171,107,117,97,252,168,71,20,0,1,25,40,45,29,24,30,21,16,39,75,74,56,37,47,
-  37,25,22,20,34,32,27,6,255,255,165,152,9,154,99,33,239,68,135,35,15,194,152,96,
-  189,52,3,95,69,207,159,61,91,120,43,66,20,220,10,63,31,139,210,190,15,1,142,0,
-  173,40,99,192,63,22,164,111,19,196,211,103,163,56,80,143,118,88,242,16,154,94,3,229,
-  105,208,255,7,193,207,103,183,225,61,53,186,220,190,21,60,103,86,103,100,44,189,108,60,
-  169,74,105,243,135,102,11,190,56,46,123,72,116,120,106,99,176,56,203,18,111,77,133,170,
-  38,167,131,59,173,205,189,128,83,122,76,233,177,253,157,192,196,240,11,3,170,170,144,140,
-  189,178,123,27,69,139,54,230,168,61,195,167,19,84,195,59,75,109,138,121,106,119,6,131,
-  56,86,139,70,49,188,170,82,249,48,209,123,8,11,149,9,182,253,199,56,141,193,243,10,
-  219,107,189,253,49,18,44,96,3,40,178,172,136,139,54,2,22,28,250,75,232,193,157,91,
-  144,89,114,246,4,100,132,118,218,15,189,244,96,63,197,12,63,137,17,219,65,81,1,60,
-  107,110,89,255,65,126,91,82,212,120,157,83,36,172,140,139,233,61,21,146,180,37,211,192,
-  141,96,123,254,186,234,85,193,43,85,178,233,79,37,132,143,9,124,110,96,254,31,178,125,
-  2,210,33,23,0,1,3,8,13,33,38,35,36,34,38,17,22,26,22,26,39,54,49,37,
-  28,24,13,40,54,52,6,173,155,181,64,241,40,81,251,137,153,191,113,29,220,236,103,159,
-  41,27,1,27,226,137,211,241,102,94,60,8,20,175,69,245,203,47,57,57,114,233,63,228,
-  48,125,70,227,233,248,32,180,237,145,57,232,220,102,162,92,46,133,61,121,80,171,130,193,
-  184,94,52,90,96,220,218,45,150,110,244,18,235,20,50,182,79,186,251,200,108,15,224,148,
-  164,77,189,12,60,227,218,236,104,134,77,223,175,29,178,169,7,189,228,16,219,131,21,239,
-  59,108,21,195,85,41,50,251,3,217,56,215,129,91,215,78,105,99,68,190,252,174,14,168,
-  163,184,136,114,190,47,128,162,104,242,189,196,71,253,125,184,253,33,190,67,63,67,208,172,
-  81,86,59,198,203,104,89,35,122,90,142,46,129,184,133,52,188,47,34,203,159,174,50,207,
-  87,31,197,132,84,60,196,232,204,100,71,240,53,93,89,92,161,210,94,163,138,216,41,53,
-  140,57,12,191,234,81,243,143,70,15,0,1,7,12,13,5,17,26,29,17,36,70,141,113,
-  109,61,66,30,4,91,202,98,43,201,221,204,137,173,8,143,107,206,207,147,5,230,144,174,
-  158,175,68,50,127,176,69,123,104,192,88,101,30,134,18,182,239,34,69,177,196,57,239,28,
-  90,253,173,202,32,123,186,5,108,144,167,253,178,25,241,83,177,115,187,130,89,230,205,207,
-  27,235,156,81,205,173,113,22,61,174,203,82,81,234,110,193,225,38,194,157,41,242,187,220,
-  41,160,151,22,72,79,102,51,10,14,166,206,195,113,106,211,22,113,81,46,164,13,5,163,
-  2,221,249,86,136,70,139,22,148,120,248,57,26,240,175,6,221,1,177,50,113,19,193,237,
-  160,226,30,185,126,129,36,127,195,78,132,68,10,0,1,19,39,47,55,60,77,105,94,79,
-  74,61,84,68,237,83,156,123,226,159,142,57,42,88,99,235,86,134,17,60,111,214,203,14,
-  5,162,67,110,27,227,255,183,186,185,67,13,174,243,207,232,18,30,245,144,147,246,153,195,
-  75,93,172,168,240,52,74,42,7,227,150,202,51,95,193,41,166,189,113,235,143,124,224,222,
-  47,106,71,153,6,206,98,189,117,105,217,161,129,181,11,58,86,38,88,157,100,77,2,159,
-  162,126,133,53,108,249,44,6,66,22,135,37,216,195,76,52,203,213,104,100,12,52,118,191,
-  72,248,231,92,174,9,122,22,65,24,173,138,26,226,26,147,163,185,72,135,235,61,134,173,
-  21,20,202,141,163,168,155,106,237,60,213,155,253,5,54,49,5,128,79,84,98,73,21,130,
-  11,90,57,55,222,179,82,191,236,0,46,245,194,177,120,236,58,234,20,128,170,121,242,225,
-  146,231,69,65,253,205,189,131,212,215,243,28,49,79,10,246,148,244,243,174,90,179,183,141,
-  255,135,38,45,165,19,129,211,58,176,52,181,214,92,165,216,216,229,180,225,124,225,200,123,
-  35,71,145,77,98,242,28,39,90,255,253,187,230,132,164,22,0,1,9,13,26,17,25,15,
-  17,11,34,53,66,42,47,59,71,55,34,20,13,16,39,41,31,6,255,255,165,233,227,161,
-  145,169,65,214,253,207,135,133,59,188,179,104,68,156,116,119,38,192,56,179,175,236,39,4,
-  247,219,219,50,89,157,45,62,163,162,120,80,219,174,38,167,113,76,132,240,53,168,15,124,
-  238,243,90,72,74,7,197,70,137,119,91,121,127,17,113,195,208,90,128,86,235,130,238,222,
-  218,239,23,96,128,17,15,89,37,182,212,122,234,178,187,246,174,166,16,63,214,122,103,99,
-  79,166,121,49,108,55,170,122,162,244,12,246,166,106,107,115,211,234,191,105,65,116,99,223,
-  165,240,34,141,44,56,163,219,85,108,220,93,247,112,7,135,231,249,24,226,230,239,214,186,
-  181,111,84,16,142,179,197,5,201,71,182,91,187,82,76,100,174,178,158,19,215,34,121,168,
-  112,254,2,77,33,112,25,120,110,40,92,243,241,214,180,137,188,104,40,187,215,176,173,38,
-  25,17,58,105,10,21,0,51,54,76,46,48,33,22,15,12,4,9,10,55,56,60,24,20,
-  20,14,24,37,39,24,248,83,85,171,230,232,202,202,11,232,23,51,117,172,108,184,73,124,
-  248,77,20,208,9,80,14,66,99,218,110,209,36,72,191,120,9,140,55,211,82,244,202,241,
-  3,192,111,121,251,209,44,121,63,39,126,121,56,45,124,85,236,134,238,220,185,103,207,11,
-  106,162,31,97,137,223,18,76,214,248,52,154,69,234,74,15,202,209,159,56,201,217,168,152,
-  125,225,207,106,246,55,103,254,107,245,254,72,211,205,169,180,236,197,153,124,148,130,235,225,
-  58,242,31,191,23,5,250,13,67,210,65,187,228,65,192,246,230,251,194,110,186,203,74,151,
-  63,134,5,40,140,242,177,20,250,181,171,121,3,78,29,32,108,170,80,178,100,176,196,62,
-  183,247,164,104,136,232,200,127,238,214,152,120,217,136,61,4,112,121,93,144,210,182,81,180,
-  84,100,3,147,49,170,162,231,71,72,228,131,16,194,250,178,102,48,11,119,144,159,190,32,
-  115,74,156,27,186,13,229,7,44,206,33,241,72,220,226,84,174,65,4,120,116,152,139,204,
-  48,100,219,127,36,168,122,103,27,209,147,239,137,71,15,254,75,184,107,15,160,33,97,182,
-  252,22,228,196,198,201,241,188,173,101,246,211,87,12,21,140,236,54,85,253,143,161,179,31,
-  71,40,119,202,24,43,126,113,251,33,137,89,134,83,231,28,142,19,172,152,106,251,255,170,
-  163,65,112,49,238,188,148,95,176,206,123,250,35,20,220,111,56,249,94,149,62,41,36,135,
-  110,181,44,68,127,188,196,73,160,149,236,17,213,173,183,81,244,94,36,36,249,239,19,180,
-  28,206,153,120,88,176,169,20,0,1,41,67,75,70,48,50,22,21,14,23,23,30,32,65,
-  58,45,20,18,13,11,7,247,66,183,53,162,227,58,151,168,217,222,254,242,191,100,240,93,
-  108,87,93,15,22,34,193,186,247,150,87,96,7,3,189,121,143,36,113,190,191,131,250,24,
-  88,95,246,222,202,31,177,165,208,234,64,200,104,123,81,18,251,188,170,24,187,159,70,6,
-  136,45,133,238,171,61,54,107,23,66,123,114,131,215,167,37,234,118,99,249,27,205,89,42,
-  116,92,40,126,194,255,119,244,165,241,32,8,70,204,173,113,202,20,209,64,178,246,66,203,
-  105,110,235,180,213,126,118,248,77,240,151,12,41,124,113,128,215,175,219,39,46,145,234,190,
-  17,235,96,13,177,254,27,39,73,160,105,56,23,1,209,2,144,150,249,228,163,149,188,238,
-  237,73,254,134,159,238,199,16,174,195,253,199,189,103,104,184,88,38,187,236,38,121,29,188,
-  2,191,95,107,193,79,207,33,210,164,71,213,195,8,85,208,102,14,30,189,190,224,113,179,
-  186,195,187,183,117,43,5,181,214,203,84,171,212,174,41,195,222,204,129,162,124,236,111,202,
-  82,154,161,49,41,139,228,240,132,220,74,178,129,149,239,122,34,190,16,94,85,76,30,87,
-  158,93,149,108,15,119,255,58,109,125,117,70,154,215,136,173,126,185,242,35,210,170,49,152,
-  143,250,133,15,254,108,209,19,21,208,171,146,93,99,49,226,98,125,249,90,115,203,135,4,
-  219,198,218,45,191,77,45,187,128,81,171,136,248,61,121,223,135,70,124,90,65,229,51,71,
-  192,101,55,29,0,235,208,9,168,75,40,240,94,87,148,242,250,179,186,5,100,9,106,124,
-  222,184,42,251,186,184,96,24,171,4,110,186,55,180,195,185,92,190,69,226,151,139,30,215,
-  25,137,167,4,193,192,199,56,139,119,15,5,175,99,247,166,24,202,222,218,81,63,67,247,
-  252,192,116,205,162,166,250,179,70,161,125,44,117,182,178,129,234,209,172,168,79,182,49,76,
-  132,107,241,118,48,78,24,194,48,59,78,167,10,172,83,99,60,122,200,160,171,149,129,228,
-  248,143,45,227,13,176,65,73,240,149,38,251,26,85,254,187,18,11,155,160,165,219,127,64,
-  250,200,50,242,84,192,94,230,142,11,140,166,44,52,67,79,227,2,205,208,203,198,49,91,
-  33,232,29,132,104,137,20,132,225,245,67,40,212,167,102,143,19,167,75,33,251,126,159,21,
-  6,139,36,126,237,186,34,170,15,157,120,245,183,169,135,116,28,241,116,139,49,169,212,202,
-  211,186,1,15,161,147,165,114,68,59,204,212,151,97,59,111,172,238,89,253,255,89,94,131,
-  143,180,170,100,139,16,188,107,100,126,104,77,0,19,0,1,8,14,17,9,14,35,56,72,
-  88,67,46,35,34,36,13,25,21,54,53,51,45,55,58,158,233,77,111,218,33,107,127,236,
-  139,14,41,242,124,147,162,66,190,66,44,0,142,179,207,127,159,27,28,242,237,243,66,112,
-  150,186,212,58,162,215,9,69,98,5,159,165,0,234,139,206,10,98,19,250,58,102,207,61,
-  39,220,30,82,26,161,133,135,113,77,42,186,191,151,223,172,160,185,247,221,82,24,224,100,
-  32,222,254,132,198,107,101,245,197,108,234,164,191,190,191,201,184,56,121,213,182,104,183,24,
-  13,153,130,126,161,205,172,6,158,199,75,190,8,188,11,49,134,50,67,121,206,164,181,128,
-  104,113,52,85,64,25,184,150,135,4,96,98,48,124,104,13,96,152,82,102,215,177,120,148,
-  154,20,244,138,224,40,73,147,202,242,213,111,194,71,217,38,35,236,121,244,118,75,240,116,
-  37,3,134,109,167,47,14,156,249,218,23,176,56,192,231,84,182,0,90,32,21,170,211,83,
-  241,141,59,184,247,139,59,4,243,84,157,14,229,172,255,98,44,209,111,151,187,229,49,140,
-  255,128,31,151,14,121,169,78,172,205,10,64,5,48,53,82,189,137,112,12,150,106,96,219,
-  38,6,85,26,1,31,154,193,158,138,73,167,107,0,21,248,163,110,0,183,110,182,12,227,
-  166,80,84,75,82,143,146,205,177,244,95,160,83,56,114,90,47,232,212,15,194,88,215,200,
-  86,189,140,201,32,175,80,45,86,126,104,186,251,181,78,21,35,218,238,207,69,230,77,204,
-  108,175,117,71,77,244,142,105,193,58,120,154,226,13,202,133,236,192,163,108,132,187,113,50,
-  182,64,236,254,254,245,84,107,24,115,101,210,30,113,59,116,25,154,53,148,247,84,208,162,
-  121,107,221,211,144,88,121,113,34,68,144,233,251,198,158,140,161,247,57,97,30,49,178,113,
-  3,167,212,194,49,114,119,169,202,45,253,14,238,66,79,170,151,92,48,180,139,32,58,155,
-  80,89,19,243,14,20,0,1,18,29,29,21,19,37,30,26,9,12,36,35,62,37,47,14,
-  17,73,96,91,22,245,143,164,72,138,6,69,117,92,121,96,151,26,90,177,224,234,181,0,
-  234,215,220,190,95,191,157,141,110,100,184,117,17,11,54,0,152,116,88,119,62,53,232,189,
-  54,47,225,142,47,177,206,110,143,125,49,119,162,10,112,182,86,89,115,181,147,32,115,84,
-  171,111,164,98,87,105,168,28,56,124,146,113,134,64,207,108,192,175,39,13,140,191,206,29,
-  134,24,223,37,37,52,186,135,113,17,93,197,34,133,226,1,24,13,253,48,254,226,120,192,
-  116,162,182,247,50,124,4,255,243,105,68,48,115,197,185,74,35,245,179,183,197,179,252,105,
-  201,130,10,172,121,89,156,156,205,121,62,129,23,32,54,30,252,215,112,81,199,53,112,236,
-  187,32,201,78,70,88,154,212,197,53,188,57,191,215,84,250,168,127,26,155,192,246,62,187,
-  128,196,128,32,0,158,92,149,173,122,62,101,211,201,234,240,187,168,35,238,29,9,214,181,
-  243,209,177,124,243,113,227,42,12,131,206,42,198,227,34,103,215,195,73,230,5,134,205,82,
-  56,73,41,198,98,15,197,202,160,176,227,242,35,160,236,196,78,38,9,29,227,227,190,50,
-  228,255,193,23,205,202,211,133,21,17,98,220,165,102,131,55,4,39,246,250,100,239,151,71,
-  95,116,134,197,207,155,227,125,56,166,10,102,0,182,128,111,119,54,188,238,196,147,202,13,
-  1,170,112,231,92,31,76,145,139,190,1,207,54,236,199,207,66,24,36,78,205,0,171,206,
-  11,117,125,230,66,119,92,111,216,31,189,33,103,29,132,92,76,126,78,217,86,92,6,207,
-  106,36,83,131,246,245,124,243,61,20,238,213,189,157,236,117,157,39,167,82,176,201,132,248,
-  142,22,252,45,90,146,215,113,208,32,3,206,217,100,27,127,252,32,175,163,30,211,101,120,
-  174,206,198,98,230,86,212,160,35,5,110,168,126,86,246,154,253,97,235,222,68,95,71,85,
-  162,249,251,1,79,171,107,50,168,153,217,143,169,192,184,60,83,224,124,83,215,78,187,38,
-  131,201,169,177,163,143,166,197,21,103,214,7,131,127,76,78,175,45,12,237,73,4,85,207,
-  132,16,150,55,216,255,221,14,221,46,123,0,20,0,1,23,31,32,21,20,19,7,5,8,
-  19,17,16,5,27,39,39,24,38,139,131,101,255,255,255,165,152,9,154,99,60,122,177,171,
-  33,194,252,171,221,236,3,20,232,204,206,162,160,21,202,79,53,213,97,6,56,193,4,114,
-  29,157,170,80,251,88,96,43,98,175,174,53,160,57,75,102,193,80,255,55,170,15,199,72,
-  240,195,147,92,226,250,70,192,124,188,39,94,52,235,122,67,46,31,251,192,41,119,142,56,
-  150,156,54,75,213,88,145,116,235,178,162,80,179,109,174,210,215,161,122,164,73,181,235,27,
-  92,117,2,20,254,226,27,214,133,47,39,107,126,135,121,195,79,69,54,162,125,189,245,215,
-  169,158,103,180,30,161,110,91,197,208,245,128,149,148,207,249,206,48,254,239,157,148,24,180,
-  114,149,80,138,48,142,211,181,178,241,11,24,151,180,199,174,93,94,211,61,4,31,127,115,
-  86,190,81,240,179,96,59,198,80,211,178,69,60,148,234,52,210,188,150,193,125,250,211,162,
-  20,21,20,226,79,54,110,179,50,52,3,63,150,215,66,193,45,32,116,11,187,224,19,218,
-  52,217,109,140,157,160,202,102,99,207,212,196,74,141,63,74,54,148,73,58,44,48,195,96,
-  103,149,67,126,6,214,89,121,97,50,88,123,19,170,234,152,195,58,54,75,44,82,10,200,
-  65,235,161,173,13,173,159,121,20,0,3,10,14,13,6,6,11,11,25,28,47,50,59,42,
-  26,27,74,80,89,56,53,146,212,23,41,137,128,140,216,211,37,244,251,98,46,115,59,191,
-  33,20,88,243,42,1,202,102,81,199,66,129,165,174,236,186,141,108,204,164,171,167,3,222,
-  50,228,65,55,128,101,81,200,199,9,90,2,147,211,147,102,172,255,198,240,196,2,73,34,
-  13,17,19,31,191,129,25,41,137,231,240,137,153,104,120,8,170,63,13,139,245,154,133,209,
-  226,186,223,240,182,35,189,84,250,246,18,191,43,32,250,153,157,158,147,128,27,30,57,140,
-  189,13,217,99,174,201,123,66,213,156,21,208,32,20,202,41,130,87,219,86,187,122,13,227,
-  18,102,97,233,128,132,38,250,119,20,213,63,103,60,67,10,30,97,213,77,49,152,226,211,
-  235,126,237,105,155,168,25,177,81,174,56,93,184,148,47,247,224,133,171,35,194,104,77,37,
-  68,254,169,99,28,44,184,31,2,212,185,165,44,139,212,87,186,1,118,153,132,211,156,189,
-  182,224,190,186,81,17,67,40,211,101,61,61,202,86,119,194,124,63,15,216,225,41,231,79,
-  24,166,111,143,208,31,149,109,76,189,159,12,222,3,122,122,228,31,192,94,60,122,77,153,
-  91,84,146,51,120,254,43,241,123,141,116,116,175,158,10,72,86,55,231,248,127,138,202,211,
-  133,67,233,132,45,56,214,112,49,15,3,242,95,195,21,130,162,24,79,241,54,21,63,34,
-  149,88,232,91,177,225,242,22,132,102,72,209,194,75,189,168,66,108,145,85,179,227,219,9,
-  71,42,192,226,65,84,85,245,245,62,99,198,42,63,124,74,202,251,9,175,153,55,199,214,
-  234,232,130,74,237,105,84,68,227,6,241,126,251,27,65,152,165,97,209,62,242,0,254,199,
-  1,60,219,192,207,26,166,207,97,30,197,118,35,1,24,155,195,89,62,128,3,20,2,224,
-  25,54,142,226,6,80,178,238,70,248,191,181,212,28,233,39,142,176,47,166,118,125,4,153,
-  20,179,164,53,223,15,126,70,231,79,16,118,250,215,86,189,112,1,61,179,232,255,28,248,
-  123,19,106,191,53,188,18,30,119,101,93,232,81,153,152,179,140,153,70,16,168,252,255,68,
-  205,70,227,203,149,109,71,123,142,89,160,194,220,17,79,151,225,252,139,192,59,40,67,201,
-  33,112,141,192,82,110,31,164,111,192,199,192,63,87,130,156,33,196,112,1,199,232,173,232,
-  33,176,23,240,29,185,209,15,50,234,2,50,132,153,221,147,80,174,172,158,224,197,90,236,
-  94,180,116,172,46,139,88,191,239,118,163,213,169,96,70,17,87,180,15,234,188,200,119,178,
-  142,247,152,169,184,216,31,200,126,214,1,82,143,125,48,19,197,82,132,211,206,116,61,193,
-  205,206,200,234,131,45,151,155,92,184,81,251,206,54,101,84,91,220,6,242,139,85,138,99,
-  120,13,0,1,16,21,38,30,53,37,63,41,111,77,127,56,66,12,4,14,53,66,95,41,
-  87,133,235,117,125,109,77,141,60,102,219,220,156,156,96,157,14,0,181,109,91,79,119,19,
-  207,5,124,17,29,48,38,54,0,249,85,148,217,206,104,187,78,156,154,110,36,254,94,239,
-  199,118,125,29,196,199,218,145,93,122,174,136,153,4,231,228,20,182,79,226,158,41,224,232,
-  137,209,125,86,237,196,133,121,119,160,76,104,10,230,49,37,192,121,192,142,255,126,198,82,
-  94,11,101,28,2,120,89,29,142,153,206,20,99,253,167,251,130,253,87,151,159,71,206,180,
-  211,235,87,245,138,14,188,25,137,35,220,252,174,158,185,118,96,106,148,121,115,188,126,91,
-  86,96,158,184,51,224,249,81,76,208,234,85,21,60,92,7,153,81,91,174,41,44,96,47,
-  255,222,211,25,191,78,201,213,161,90,19,251,78,82,74,198,229,255,13,64,24,234,176,1,
-  143,197,96,220,37,220,102,160,34,61,115,2,211,29,150,51,49,254,101,155,206,95,109,166,
-  46,206,142,246,3,190,114,56,65,1,215,130,92,176,71,223,102,227,19,76,106,225,20,227,
-  24,219,146,54,77,241,172,85,155,77,194,154,74,114,25,221,54,90,219,246,117,85,190,47,
-  235,72,33,64,248,4,181,41,158,241,202,68,245,72,243,35,134,90,250,135,132,227,214,234,
-  122,87,120,156,33,159,105,73,213,35,255,98,180,255,41,249,223,47,2,62,123,186,133,35,
-  138,77,43,133,212,233,126,88,11,251,230,16,140,68,48,214,36,106,72,254,178,231,205,157,
-  209,197,180,211,112,84,2,56,158,49,215,249,17,66,118,89,40,152,155,245,113,117,62,66,
-  130,53,161,189,133,60,143,120,123,15,73,127,231,198,44,83,195,215,211,68,8,21,198,48,
-  169,6,245,49,116,42,11,75,27,13,150,0,103,25,223,246,218,217,122,100,255,210,236,178,
-  60,31,22,0,1,24,40,44,33,36,38,33,26,32,34,32,31,28,37,26,18,5,17,22,
-  25,50,59,43,160,133,254,12,249,94,156,192,97,129,147,236,42,54,75,118,53,158,173,52,
-  209,195,13,218,194,78,77,24,217,237,32,109,154,195,95,134,54,105,128,159,227,38,189,110,
-  199,17,73,94,52,91,162,27,4,210,105,179,215,115,78,229,59,97,192,33,217,101,27,73,
-  9,50,43,214,142,13,100,251,113,5,72,119,74,149,51,9,93,89,157,86,156,188,72,172,
-  19,228,57,100,141,72,22,220,233,86,217,191,138,41,5,189,175,115,15,98,186,25,233,97,
-  11,0,198,243,148,106,38,162,135,193,150,153,6,4,213,100,43,152,177,98,19,87,34,205,
-  145,237,110,18,220,134,216,37,232,116,239,13,233,56,106,4,237,145,5,240,89,190,214,71,
-  21,97,53,155,145,3,140,47,58,30,166,1,10,58,248,35,19,101,67,44,9,125,177,188,
-  70,109,229,75,220,108,22,213,153,202,20,13,191,2,134,253,89,99,151,205,196,211,247,131,
-  79,80,27,14,81,146,45,203,137,195,206,116,6,141,215,228,163,3,214,75,240,234,59,37,
-  185,206,235,31,68,232,63,31,39,169,147,209,214,247,218,203,172,53,96,128,247,245,82,51,
-  23,124,195,146,90,236,187,16,223,203,231,198,229,106,160,222,156,0,237,191,46,12,184,83,
-  216,207,84,160,76,201,183,70,1,46,220,28,192,159,214,111,69,212,157,25,140,88,4,137,
-  54,152,28,71,42,170,84,76,69,134,156,34,63,160,103,48,246,194,174,118,11,18,0,3,
-  55,59,73,39,42,26,27,23,44,25,63,44,72,39,37,24,22,28,10,17,83,171,116,55,
-  118,62,191,9,76,22,211,167,45,79,16,111,9,133,57,162,129,201,214,49,137,231,147,120,
-  9,232,115,223,66,9,217,168,7,90,208,131,75,219,231,80,54,118,241,167,166,217,79,207,
-  166,216,254,251,126,18,254,201,197,219,94,205,75,72,4,250,39,197,54,104,187,73,118,92,
-  12,187,217,187,220,206,198,235,47,132,80,235,190,49,227,204,15,86,155,45,249,59,6,185,
-  181,76,105,47,151,238,126,44,60,116,227,95,33,58,145,75,241,235,14,145,69,214,232,61,
-  21,226,53,247,223,183,190,25,193,208,105,249,144,110,16,253,101,50,85,35,37,180,199,79,
-  32,205,116,238,166,129,218,213,163,183,213,172,93,100,159,237,128,145,58,207,68,191,34,172,
-  47,224,31,103,167,227,175,75,191,93,226,246,112,169,251,34,146,226,54,41,204,211,39,71,
-  88,67,122,196,186,217,247,137,195,93,33,248,193,84,115,220,2,177,155,21,21,171,175,49,
-  73,146,74,23,126,168,140,214,32,221,122,69,21,78,56,249,98,63,255,112,132,235,82,135,
-  153,238,212,189,53,6,83,40,209,26,229,188,77,80,119,39,56,56,62,89,55,125,21,154,
-  95,242,66,97,122,75,50,24,231,167,203,236,140,242,218,167,75,237,82,248,73,145,27,125,
-  210,64,37,87,11,84,101,112,56,150,233,28,161,69,241,159,26,236,251,194,201,6,213,241,
-  242,28,7,197,158,139,76,109,181,129,8,147,159,43,95,74,38,76,120,225,102,138,243,20,
-  211,107,175,39,210,8,53,79,22,4,14,119,118,63,236,131,18,194,246,174,0,19,0,1,
-  5,57,75,88,46,42,26,23,9,7,48,52,69,27,23,5,4,41,52,49,45,36,123,162,
-  178,106,189,164,201,224,2,39,114,244,108,226,103,199,216,28,2,252,64,163,169,225,107,179,
-  202,192,180,27,224,105,32,165,34,184,158,222,145,93,184,97,110,56,158,168,111,10,13,209,
-  169,25,195,232,92,255,175,120,24,90,44,219,223,24,40,20,112,155,40,154,133,82,141,234,
-  107,146,221,43,131,205,240,185,205,42,25,84,139,61,170,211,232,247,98,158,78,172,252,226,
-  175,165,41,109,221,78,13,31,200,40,248,66,135,166,1,235,192,85,48,115,58,56,182,16,
-  22,92,218,178,64,150,162,6,40,131,1,0,235,40,62,38,147,156,250,205,157,113,181,208,
-  171,56,45,203,80,218,122,221,5,126,205,27,61,135,22,20,60,174,91,16,218,87,174,255,
-  128,61,167,104,14,219,96,127,131,220,180,122,231,7,244,226,145,113,190,167,140,226,227,125,
-  220,110,186,168,75,22,98,119,201,196,129,58,13,23,8,95,189,235,127,199,244,26,95,91,
-  144,124,136,63,33,26,128,44,142,201,21,89,175,236,160,129,68,115,198,48,199,218,67,109,
-  199,48,10,45,200,10,196,3,55,187,221,106,99,190,11,74,9,83,180,123,135,78,144,49,
-  159,229,164,67,234,132,56,231,194,57,224,19,162,119,245,91,28,215,149,76,7,6,184,193,
-  221,237,137,115,124,5,147,204,227,111,76,122,196,78,34,153,117,239,6,239,249,170,139,235,
-  38,33,132,93,110,186,243,59,80,65,11,65,120,39,43,161,253,238,96,217,229,117,147,85,
-  120,145,135,20,167,37,189,224,223,7,84,119,217,52,115,205,13,246,248,126,31,224,73,193,
-  216,25,49,96,99,64,216,10,211,107,235,142,64,27,10,159,122,95,210,186,104,235,162,131,
-  216,207,211,200,69,18,126,216,210,189,111,89,23,1,36,246,143,89,122,196,178,71,255,255,
-  209,195,231,53,252,22,0,1,30,46,51,27,23,24,25,39,39,43,22,35,28,29,20,30,
-  30,25,44,48,50,25,18,9,255,255,165,233,227,161,145,169,65,220,0,8,107,87,83,236,
-  21,2,71,203,45,133,201,23,110,208,3,131,89,108,74,105,17,61,67,245,62,134,100,80,
-  158,54,201,248,29,169,26,186,165,28,180,12,150,131,30,242,141,222,218,10,253,139,122,119,
-  62,224,178,131,194,116,230,194,60,164,213,250,196,120,98,110,133,191,226,147,21,103,194,130,
-  185,162,28,94,172,214,49,103,184,166,133,23,193,113,31,8,65,112,52,59,134,175,236,180,
-  203,88,24,237,55,27,243,209,252,4,135,27,226,166,172,107,77,227,39,148,177,108,217,140,
-  176,115,31,113,245,131,42,249,165,1,215,68,11,60,252,123,155,244,103,85,107,124,188,88,
-  109,80,25,132,172,145,22,59,53,15,16,156,135,44,16,37,217,26,202,217,189,30,167,187,
-  220,95,35,24,184,155,215,183,48,231,42,230,67,226,84,195,100,157,53,90,83,32,208,203,
-  172,12,92,18,141,13,199,182,222,156,242,187,211,91,213,254,207,227,242,47,200,87,60,33,
-  9,107,19,0,1,35,54,75,80,65,49,21,29,29,16,21,17,17,5,8,13,27,55,70,
-  53,54,36,149,17,243,97,68,105,236,172,76,249,3,63,17,105,101,96,77,72,13,183,98,
-  69,134,19,137,195,97,139,192,191,10,152,41,156,157,127,185,209,12,10,127,89,153,246,78,
-  130,132,228,224,80,203,124,36,82,202,247,184,217,50,170,112,129,5,145,5,49,239,138,125,
-  171,46,54,187,76,218,5,208,211,203,214,92,16,221,221,28,140,171,154,15,18,37,208,114,
-  205,235,233,100,138,156,132,145,197,132,129,238,254,193,138,99,127,221,236,98,92,223,249,211,
-  253,113,94,101,116,16,43,77,43,233,30,247,191,240,246,244,149,24,141,75,242,91,91,62,
-  77,180,45,242,234,114,1,108,68,239,150,222,20,222,191,103,6,193,180,55,208,118,133,29,
-  201,90,239,119,169,15,77,125,46,179,169,158,120,2,207,7,151,163,254,244,6,116,157,74,
-  189,204,235,160,43,192,134,89,89,213,33,140,58,13,87,86,19,18,74,40,27,164,131,56,
-  101,59,77,24,85,219,42,78,47,34,139,165,139,183,239,31,31,209,170,23,46,237,47,83,
-  139,234,187,116,26,114,170,153,25,16,76,139,75,101,250,110,177,201,34,104,103,19,78,72,
-  15,153,36,23,225,11,22,194,162,155,55,27,187,212,49,56,157,16,173,76,5,27,83,235,
-  77,48,252,167,27,143,44,31,119,155,255,254,234,104,111,82,128,12,0,19,18,22,5,24,
-  45,47,68,78,77,78,81,44,63,96,20,77,217,85,43,10,177,31,149,140,150,55,235,34,
-  208,162,46,227,61,94,191,69,99,203,61,48,228,14,7,87,146,37,251,119,71,46,215,153,
-  112,108,158,182,226,141,207,140,73,189,190,101,68,75,10,14,20,21,14,136,136,3,239,71,
-  24,173,231,191,223,150,222,13,225,243,208,108,167,218,117,109,195,202,185,15,254,189,133,225,
-  147,191,110,243,207,19,103,76,105,25,239,96,38,38,192,50,110,187,83,223,27,29,104,253,
-  106,141,71,165,88,182,52,228,204,149,6,68,167,174,104,13,88,141,105,111,183,55,22,132,
-  96,89,0,51,54,229,112,86,239,86,11,169,17,193,96,63,113,173,83,58,33,64,109,148,
-  125,141,146,183,37,90,154,154,176,24,126,145,91,238,88,181,71,5,253,3,44,128,136,22,
-  80,207,1,151,142,65,108,4,71,190,94,154,216,44,209,129,76,68,39,167,176,194,127,98,
-  243,1,97,152,209,117,150,126,212,184,71,146,114,35,127,149,112,145,24,225,45,242,168,255,
-  251,115,157,92,4,165,171,158,250,12,88,208,10,202,185,102,92,62,154,24,108,6,27,154,
-  167,10,27,212,69,41,227,222,216,179,205,17,255,47,9,133,99,122,120,197,201,118,38,6,
-  83,41,178,43,242,225,137,30,75,229,34,175,171,95,70,224,5,51,130,196,39,195,105,138,
-  227,59,84,219,212,141,96,189,137,181,241,1,39,40,173,49,133,145,94,121,56,117,81,65,
-  69,20,28,12,246,201,249,97,48,194,172,27,50,2,90,16,229,214,127,11,224,71,117,13,
-  18,149,24,182,76,221,91,239,57,139,170,186,176,107,26,209,136,231,76,179,33,86,130,255,
-  199,188,169,73,8,79,168,2,44,83,95,230,21,97,122,156,44,216,241,150,52,95,56,157,
-  213,236,151,29,134,60,212,132,22,4,13,152,23,128,145,210,205,64,212,247,49,202,138,90,
-  27,67,69,173,152,254,75,12,115,254,241,245,6,182,0,20,0,1,38,45,45,32,31,55,
-  43,42,73,60,64,15,24,19,13,4,9,46,46,45,5,247,36,231,235,19,179,87,131,84,
-  118,18,106,190,21,209,82,163,251,150,11,105,158,79,121,110,137,173,117,123,15,206,170,207,
-  122,201,248,235,251,116,20,145,228,248,49,200,16,107,113,176,31,49,189,112,254,225,218,230,
-  172,5,100,166,42,237,25,158,9,235,171,123,181,177,63,54,180,171,10,181,189,57,75,4,
-  241,244,248,145,102,112,232,233,2,123,204,169,25,220,118,203,53,223,78,0,38,48,197,246,
-  56,103,187,42,139,182,115,186,102,20,192,98,117,247,121,224,136,44,241,107,195,217,115,93,
-  54,169,142,46,34,40,79,161,184,50,176,13,161,49,4,43,141,165,180,128,229,243,55,47,
-  99,244,26,56,215,172,44,190,182,228,138,96,0,90,6,11,58,182,210,3,134,15,20,190,
-  129,29,159,145,191,94,255,76,169,255,248,244,142,207,176,136,27,204,32,45,248,164,184,117,
-  54,122,202,94,97,93,93,238,128,114,143,16,230,195,72,139,57,102,165,163,125,157,89,74,
-  49,152,25,2,247,218,45,73,182,161,230,176,87,202,65,104,64,59,53,250,8,130,42,81,
-  62,105,38,189,209,204,188,53,98,58,154,191,251,161,131,241,112,73,145,199,8,74,154,37,
-  223,66,237,194,38,197,109,167,69,38,24,106,45,183,75,175,73,128,71,241,209,69,232,179,
-  65,203,183,243,253,229,126,32,51,74,100,22,0,1,10,33,45,46,31,30,34,41,39,35,
-  25,31,34,39,26,11,7,10,28,41,62,54,37,201,221,208,131,10,89,180,55,158,36,89,
-  157,93,88,43,220,155,44,160,32,126,201,44,59,174,250,215,236,227,236,175,189,153,196,110,
-  94,2,230,202,93,104,228,159,38,20,117,47,186,139,231,120,117,28,208,78,41,45,155,62,
-  148,22,20,31,175,102,219,51,50,67,137,211,52,60,210,253,184,69,4,5,252,143,136,232,
-  220,153,53,124,138,9,170,78,245,111,8,109,37,175,85,129,139,192,24,209,6,65,233,110,
-  50,241,132,101,73,90,135,28,160,249,181,217,252,172,190,142,205,94,162,229,107,8,172,169,
-  250,149,13,126,191,117,202,212,229,107,131,22,178,102,104,79,142,247,1,164,164,239,255,17,
-  82,187,126,52,192,78,163,72,236,100,54,15,2,31,107,165,191,192,219,214,41,4,144,137,
-  35,186,117,129,118,209,141,170,248,156,107,46,34,189,97,187,73,84,255,14,122,33,77,186,
-  149,198,24,214,248,179,204,159,165,0,202,118,132,5,172,223,75,221,112,120,160,31,103,198,
-  146,199,221,230,138,42,49,155,201,50,90,45,108,179,53,252,210,253,220,205,110,42,157,246,
-  213,220,80,238,14,144,99,49,79,137,30,126,102,101,156,138,200,93,43,88,130,181,57,227,
-  108,0,134,13,77,103,168,38,75,233,199,132,199,160,29,162,112,3,226,168,68,155,85,92,
-  187,202,245,181,50,152,214,140,125,153,144,60,241,29,214,199,208,228,173,169,49,174,2,36,
-  132,219,179,231,235,105,185,104,80,120,124,131,56,251,91,40,62,189,103,4,66,141,108,140,
-  70,69,176,150,85,234,133,203,148,252,82,17,46,219,143,28,60,45,124,23,0,1,17,23,
-  42,43,43,31,12,14,13,22,20,19,12,15,17,20,22,32,48,55,57,36,63,42,26,225,
-  151,216,221,7,37,154,108,168,102,243,47,137,115,179,92,176,224,45,42,42,202,184,43,177,
-  178,242,50,111,39,88,31,246,140,133,100,0,197,234,236,254,43,59,208,234,120,47,245,73,
-  23,145,2,57,182,69,114,224,180,112,36,127,157,206,255,158,164,136,104,138,86,126,100,249,
-  225,70,4,241,75,244,251,177,198,11,76,120,42,168,227,204,223,245,9,67,229,252,82,11,
-  25,75,188,78,155,111,230,73,82,189,177,2,11,134,156,116,159,201,207,169,196,56,73,110,
-  184,166,10,8,91,72,17,160,228,0,123,250,141,185,218,72,9,68,172,73,226,172,223,71,
-  61,236,74,27,130,43,153,56,84,9,65,216,146,226,195,58,160,85,229,19,144,27,11,185,
-  240,3,114,203,171,167,192,211,100,11,101,59,78,42,67,142,82,69,122,78,74,95,251,225,
-  58,16,15,9,125,186,118,99,251,130,176,219,74,63,91,8,41,73,44,100,143,233,68,103,
-  143,120,195,170,74,101,55,182,205,150,196,93,126,207,248,20,170,114,204,27,114,202,230,33,
-  62,97,62,236,140,109,114,107,238,98,15,115,208,224,23,234,110,119,118,186,243,162,74,24,
-  203,1,232,162,217,58,118,87,221,2,217,211,58,107,54,234,108,102,243,145,212,140,21,198,
-  48,0,11,215,18,67,254,97,87,157,23,194,207,113,20,165,40,181,26,161,38,247,108,174,
-  223,229,14,1,137,145,238,142,231,100,246,55,194,157,39,251,183,237,152,208,175,26,131,151,
-  18,0,1,47,54,75,51,61,45,94,80,78,7,7,4,4,27,37,43,20,15,5,246,66,
-  182,153,84,249,125,229,233,72,217,83,129,122,45,108,12,0,150,128,63,229,51,71,255,45,
-  230,175,229,201,153,117,251,143,34,8,152,210,223,191,112,236,145,208,184,223,55,91,111,103,
-  89,226,108,169,108,209,228,217,155,224,115,142,155,7,135,152,25,193,39,156,121,71,224,247,
-  21,128,64,108,75,242,176,127,212,33,207,96,69,102,168,213,91,26,48,121,221,128,103,69,
-  158,72,111,198,1,49,100,172,67,4,165,70,192,70,240,115,146,253,244,159,28,58,220,44,
-  47,112,144,140,81,15,55,72,51,104,253,86,250,7,58,192,174,93,186,164,97,230,170,174,
-  239,78,73,227,44,58,154,226,203,185,147,35,221,124,153,243,94,243,131,105,13,125,136,148,
-  130,63,191,53,48,47,86,187,44,192,205,73,135,41,117,249,67,60,92,208,41,192,150,221,
-  90,209,223,231,156,69,168,9,73,219,196,235,115,60,96,18,4,173,25,161,197,67,240,34,
-  212,238,27,135,99,164,221,98,76,160,198,118,48,35,190,34,171,215,233,69,208,130,159,88,
-  103,56,74,99,129,108,47,100,98,236,29,140,170,245,13,171,38,218,207,209,240,157,201,75,
-  71,106,53,89,24,15,4,24,242,218,9,114,126,139,171,111,249,212,16,219,251,136,146,88,
-  55,207,107,19,211,254,112,83,218,4,252,209,160,103,208,114,253,77,154,165,123,31,76,73,
-  121,253,163,49,221,61,40,15,0,1,26,38,75,54,47,19,60,79,71,24,6,64,65,78,
-  25,21,40,59,151,92,151,69,102,249,134,167,82,227,191,100,0,25,152,141,151,244,192,228,
-  58,50,170,26,252,254,108,97,92,83,85,151,158,109,96,138,4,11,33,218,29,185,63,166,
-  126,12,247,201,193,52,243,89,180,38,29,66,109,159,135,173,27,214,180,87,62,99,196,177,
-  77,79,184,214,248,206,114,252,109,140,148,114,193,75,182,35,49,209,7,19,144,190,230,106,
-  66,108,111,17,213,85,131,68,212,250,122,194,119,53,253,167,137,222,31,203,216,194,94,110,
-  168,66,156,127,205,212,138,9,153,157,171,122,129,125,109,133,171,247,113,251,197,13,135,148,
-  148,55,125,92,167,141,127,116,67,218,209,20,148,241,136,227,216,219,165,61,13,27,81,142,
-  5,189,71,241,145,158,180,228,79,172,151,182,134,177,23,225,255,16,153,88,153,109,89,82,
-  127,117,232,8,173,64,94,40,151,37,152,163,237,2,156,231,233,125,71,182,89,83,179,63,
-  64,201,93,227,128,161,42,77,45,225,244,141,23,60,177,44,179,58,193,46,234,89,60,232,
-  20,193,78,116,79,48,100,12,48,143,181,57,88,78,141,97,248,138,121,197,76,213,154,28,
-  90,8,183,244,108,196,174,54,219,46,6,97,84,7,148,101,161,184,61,160,247,227,227,62,
-  1,246,22,137,10,168,109,107,85,9,151,165,244,10,213,91,149,134,114,89,148,127,228,48,
-  196,227,184,170,216,196,120,239,205,140,228,86,44,150,42,221,212,255,254,175,21,182,27,255,
-  15,0,1,3,31,34,30,30,27,26,15,46,46,56,35,85,123,112,60,33,106,66,71,140,
-  3,42,19,107,174,204,24,32,111,196,92,230,75,71,182,175,82,13,207,230,136,196,98,209,
-  152,55,57,142,114,139,199,36,150,184,97,181,99,212,75,140,82,66,125,179,82,56,222,202,
-  185,40,50,119,189,150,72,31,94,164,86,66,6,103,68,65,194,158,14,219,168,22,123,240,
-  167,228,96,72,216,128,220,197,95,228,35,240,136,75,189,17,141,255,166,69,86,9,28,27,
-  228,146,51,246,248,57,112,184,233,77,64,11,86,155,122,132,57,113,96,216,142,147,106,152,
-  48,10,232,207,114,125,232,99,150,135,201,67,189,105,184,209,215,79,173,142,156,14,37,84,
-  26,207,125,126,223,226,212,147,77,236,108,39,56,190,129,194,200,79,209,194,105,249,200,146,
-  112,169,46,86,71,79,12,102,154,14,130,177,132,179,253,158,215,1,89,149,146,228,13,200,
-  129,64,226,202,222,155,209,5,35,48,61,167,8,72,58,36,232,51,69,28,53,127,209,198,
-  73,191,32,48,40,204,202,159,194,81,44,224,88,26,186,200,47,234,56,82,130,134,139,82,
-  24,196,101,254,162,81,180,197,253,193,6,183,54,33,103,54,164,210,204,113,214,113,78,9,
-  232,214,41,44,124,25,194,70,175,48,20,150,205,125,35,78,117,246,185,210,191,5,79,238,
-  238,225,211,59,117,158,255,194,203,205,91,59,193,90,179,197,84,214,56,118,109,141,203,113,
-  250,242,48,94,74,84,41,178,6,203,181,123,106,27,174,49,164,79,247,197,113,137,185,16,
-  3,205,26,48,71,241,179,44,206,41,102,175,3,32,185,0,70,115,13,39,253,137,225,124,
-  233,178,196,187,218,222,207,53,52,190,82,122,80,235,107,109,222,27,34,153,184,169,159,230,
-  225,234,76,27,182,183,179,128,221,203,131,230,127,221,208,25,60,164,239,27,208,74,230,154,
-  149,73,218,61,151,45,158,72,117,145,209,16,9,143,159,170,58,7,245,113,117,128,233,196,
-  219,123,12,133,73,36,214,246,0,160,59,205,218,70,50,75,165,254,221,224,226,255,255,198,
-  55,26,118,85,20,0,1,27,38,45,25,38,49,61,44,26,31,58,58,43,20,22,13,5,
-  16,46,52,38,6,255,255,165,152,9,154,100,26,63,133,162,121,145,217,172,190,128,191,63,
-  12,58,62,130,190,59,94,226,157,155,78,138,151,138,201,115,249,112,244,145,104,66,135,2,
-  53,146,203,76,2,112,175,68,12,42,128,68,228,5,33,98,226,120,20,53,204,181,16,113,
-  144,108,109,145,67,251,30,144,139,138,18,104,192,149,15,55,32,144,13,111,35,23,43,147,
-  40,72,252,111,206,28,27,96,140,105,251,228,60,78,7,96,201,51,22,117,210,80,74,2,
-  133,81,28,129,242,194,90,176,57,169,185,220,51,91,23,192,183,133,10,61,79,43,225,103,
-  248,78,78,186,59,225,73,221,138,31,113,251,188,230,23,195,134,163,156,154,210,82,48,192,
-  139,212,248,25,28,255,213,122,108,168,201,44,87,217,46,103,203,138,100,156,121,70,50,246,
-  118,100,138,88,183,148,154,219,239,98,83,112,74,102,220,62,82,1,6,216,198,181,201,116,
-  255,62,43,4,167,195,48,241,39,204,15,44,119,244,247,54,119,154,25,62,178,17,124,81,
-  99,200,22,49,43,241,32,62,121,166,18,0,1,27,43,45,35,33,34,23,39,57,68,45,
-  32,17,13,20,68,73,66,13,250,36,236,238,64,241,33,88,147,84,176,123,122,214,95,243,
-  196,216,11,86,230,229,217,89,206,190,190,64,84,34,97,82,149,182,198,248,16,195,56,219,
-  213,195,179,71,148,10,102,57,179,61,14,132,10,171,102,143,141,6,164,244,111,243,119,7,
-  140,224,77,99,188,65,152,46,156,124,145,239,186,55,162,59,37,131,190,159,6,124,71,118,
-  145,68,83,147,188,82,63,134,167,194,98,136,1,218,90,12,242,36,74,74,41,153,175,219,
-  98,80,43,88,57,235,14,87,29,205,99,206,197,121,158,120,114,32,78,79,237,207,176,95,
-  79,41,5,51,125,251,191,137,228,159,69,65,67,196,24,52,56,54,154,108,8,96,41,111,
-  222,117,31,83,78,15,54,125,172,58,157,39,220,150,136,57,115,74,174,255,234,213,141,149,
-  13,80,104,129,103,197,180,113,135,44,127,156,18,32,21,112,188,206,3,3,59,58,42,144,
-  206,192,184,164,226,160,180,84,125,200,43,87,238,221,30,135,109,177,239,22,0,1,30,38,
-  45,23,38,56,59,42,41,38,56,34,36,24,24,13,22,23,26,24,24,27,10,220,151,105,
-  244,62,185,201,245,49,33,62,160,170,212,128,250,48,177,65,250,205,207,85,85,81,195,146,
-  56,135,143,10,57,198,74,192,38,215,118,78,37,187,141,27,149,106,50,128,15,115,102,231,
-  19,180,97,47,58,60,152,178,50,109,151,134,141,80,209,173,130,60,60,138,42,75,90,97,
-  27,147,20,130,194,243,112,80,170,224,226,67,78,31,20,143,30,229,110,14,47,12,94,58,
-  150,185,132,79,137,229,28,158,0,89,146,238,57,72,83,160,240,143,198,205,39,137,149,83,
-  178,168,72,165,199,72,84,100,42,94,43,208,116,127,243,104,55,206,106,21,44,112,172,25,
-  74,133,126,240,241,220,25,178,92,80,52,209,138,190,80,17,90,33,198,245,162,38,107,175,
-  164,44,57,196,0,219,227,104,59,189,92,41,239,80,12,12,228,87,215,83,172,140,29,214,
-  29,6,185,78,64,187,16,139,30,176,69,65,51,193,166,77,172,188,57,171,35,135,72,253,
-  140,231,59,51,71,157,238,142,230,181,164,3,192,93,92,77,215,190,12,137,247,168,59,23,
-  229,99,98,125,49,54,62,59,9,172,174,70,239,168,23,71,191,213,132,78,160,200,206,54,
-  232,56,121,156,69,203,4,85,136,104,175,112,201,12,210,85,58,119,131,210,62,240,37,74,
-  197,104,43,138,42,15,114,71,57,199,243,149,241,116,124,246,22,40,224,241,4,181,209,34,
-  12,0,5,11,40,37,33,9,11,23,28,62,74,112,78,86,30,55,143,166,158,198,94,74,
-  84,254,232,252,254,36,95,149,150,120,1,225,255,71,119,115,77,129,108,23,48,147,243,92,
-  221,250,190,209,220,225,1,82,139,130,35,207,134,23,184,77,252,179,181,244,94,20,193,191,
-  148,161,170,186,208,117,159,232,218,19,122,185,103,189,90,15,123,169,58,88,116,176,153,47,
-  182,188,114,154,251,26,3,144,57,89,176,167,32,53,105,153,142,53,194,24,105,243,93,28,
-  219,18,102,16,30,116,252,14,130,129,72,156,108,47,212,194,18,127,66,49,101,133,165,46,
-  255,150,31,88,40,215,133,247,176,31,59,254,180,47,255,39,174,247,51,186,158,213,54,209,
-  15,224,42,122,106,34,93,60,106,218,192,0,15,0,1,36,49,75,75,86,114,105,91,38,
-  24,19,19,4,7,8,5,247,133,15,133,2,182,197,139,51,125,56,156,204,157,23,7,92,
-  233,75,22,11,40,97,208,210,95,77,29,178,109,152,167,121,128,245,104,127,107,194,200,149,
-  223,93,151,156,68,218,72,216,68,44,119,61,40,151,55,133,242,84,113,102,6,29,150,70,
-  88,228,110,245,189,115,132,93,107,227,198,247,203,176,157,21,39,222,168,144,59,94,213,196,
-  161,46,180,117,23,96,214,153,99,177,103,197,56,211,86,118,41,8,104,141,178,97,184,98,
-  88,103,187,22,76,60,253,180,207,84,89,235,186,114,184,51,178,139,14,237,138,27,61,194,
-  68,155,236,142,107,167,89,220,28,74,196,176,92,22,84,203,161,30,225,238,79,245,94,81,
-  78,119,217,52,177,214,168,192,228,194,164,143,87,54,18,157,188,99,85,246,35,86,188,89,
-  57,127,84,148,43,203,232,113,137,22,220,237,199,151,72,188,26,12,3,246,101,52,246,168,
-  11,153,248,12,133,243,204,94,103,252,202,20,231,86,139,26,239,180,156,162,21,32,5,13,
-  57,61,148,66,210,52,144,52,120,137,76,116,157,186,8,30,0,124,3,232,8,116,82,17,
-  174,235,242,236,87,236,172,100,132,195,196,207,24,82,123,167,207,209,191,55,233,61,47,6,
-  110,72,102,237,54,112,221,93,186,92,223,157,188,29,243,71,190,203,143,202,98,176,179,199,
-  110,16,92,252,119,155,49,46,188,175,181,138,7,204,156,242,210,143,113,175,211,106,189,3,
-  95,60,198,59,43,102,61,127,16,101,9,95,237,37,173,33,127,240,11,244,136,142,148,178,
-  126,113,181,99,79,225,191,125,205,169,101,167,115,186,75,148,179,190,137,222,144,244,85,29,
-  255,1,73,157,173,200,129,194,192,190,213,187,15,14,147,62,215,196,13,135,216,13,18,185,
-  2,227,100,40,1,160,36,95,56,239,37,122,238,48,244,92,27,156,39,225,143,42,140,7,
-  210,29,115,205,120,250,89,21,106,36,52,1,129,248,146,200,54,232,8,17,178,155,245,218,
-  118,160,243,250,7,177,20,176,255,20,248,112,97,96,18,0,1,7,10,15,20,26,29,18,
-  26,31,91,81,72,11,17,47,47,79,60,58,4,173,149,124,46,195,23,101,196,255,214,165,
-  150,248,40,239,186,193,180,116,150,78,103,168,185,216,240,134,10,18,165,151,59,49,23,218,
-  200,224,135,211,6,166,160,28,126,157,36,139,224,122,198,121,101,104,192,84,38,121,74,112,
-  229,244,73,97,202,15,6,53,117,193,227,7,39,145,8,116,216,63,0,69,209,0,218,1,
-  121,169,181,108,235,133,219,34,189,131,220,76,104,18,201,65,186,48,242,169,26,128,75,159,
-  89,184,113,67,128,58,74,121,95,184,184,57,117,182,9,169,40,69,45,50,120,157,172,46,
-  93,235,182,113,114,156,189,186,253,246,31,35,92,13,234,224,212,154,213,93,79,117,239,107,
-  230,164,36,61,232,69,232,35,168,127,41,240,17,206,56,15,49,41,44,200,69,74,218,69,
-  237,152,110,85,185,58,251,150,180,12,66,59,64,33,241,14,218,241,134,129,212,137,243,224,
-  31,33,69,24,30,78,13,225,127,141,211,7,238,70,129,100,40,69,211,1,144,208,233,21,
-  119,92,233,227,137,141,64,153,254,0,91,26,100,92,237,211,5,1,82,142,2,94,250,178,
-  71,218,62,88,40,20,222,196,23,213,126,112,67,166,123,248,175,103,187,144,128,178,27,78,
-  155,33,126,6,93,122,222,33,47,0,201,69,63,115,204,255,84,22,190,82,130,163,173,219,
-  211,50,15,123,204,135,8,254,199,46,143,14,221,121,70,57,245,222,194,185,89,91,168,38,
-  138,96,7,84,44,45,197,252,158,90,55,41,131,70,114,70,153,132,61,50,235,167,64,234,
-  12,87,26,57,216,17,148,123,237,242,95,175,37,57,187,38,119,62,237,245,78,38,61,233,
-  144,15,244,152,50,166,144,70,177,165,208,147,193,162,26,183,22,0,1,13,40,41,30,16,
-  34,31,43,34,38,44,34,37,10,43,36,36,36,40,54,25,27,12,6,255,255,165,233,143,
-  185,202,32,229,100,83,225,191,183,7,17,120,117,223,29,55,171,48,26,89,15,218,29,136,
-  8,215,53,163,82,204,190,102,179,55,123,119,60,132,189,175,165,135,164,66,56,66,81,60,
-  233,84,232,71,86,184,11,121,86,131,126,173,101,104,152,145,108,125,9,210,219,40,217,64,
-  198,223,33,188,26,53,228,31,100,122,125,205,9,68,253,30,34,187,64,185,194,2,72,154,
-  88,36,163,138,72,236,45,187,28,15,25,195,47,85,243,91,166,172,2,142,186,233,168,115,
-  1,69,53,20,184,254,246,186,97,32,42,10,93,183,66,169,96,224,60,30,71,117,46,38,
-  191,254,217,200,217,129,201,241,46,68,181,61,97,108,83,186,53,215,88,133,239,222,21,101,
-  132,235,238,160,59,158,1,5,218,215,15,69,91,203,179,151,128,118,200,9,10,125,104,63,
-  175,254,239,198,119,64,17,255,167,30,23,114,61,76,182,26,236,159,248,219,254,153,17,39,
-  50,228,254,59,62,60,81,202,90,252,95,180,252,229,77,60,83,5,0,232,106,59,165,1,
-  26,222,7,22,228,210,129,0,205,160,164,249,163,179,206,174,237,33,167,227,101,149,189,30,
-  204,231,42,108,186,219,64,8,82,111,196,16,102,149,15,165,0,19,0,1,4,27,28,25,
-  18,17,18,6,6,6,9,24,40,40,39,35,89,83,124,65,44,203,106,229,155,113,42,226,
-  182,108,162,174,251,107,78,6,63,2,132,56,87,125,28,121,17,71,152,64,186,206,18,119,
-  78,255,247,222,203,225,40,5,109,209,117,12,77,54,125,88,236,50,24,28,50,81,155,192,
-  176,192,150,206,52,21,150,167,241,239,220,30,104,155,165,147,236,62,141,211,46,90,16,8,
-  134,81,137,73,203,96,245,193,185,101,106,60,186,103,217,246,91,138,69,105,209,127,243,186,
-  29,51,226,67,207,155,5,199,106,219,43,153,91,90,27,19,4,36,65,228,139,240,40,249,
-  61,243,14,162,84,183,17,236,24,41,37,9,149,164,175,202,152,151,61,109,33,154,234,146,
-  73,97,23,255,115,250,120,83,80,200,236,155,111,112,39,151,49,52,20,0,1,29,33,45,
-  21,23,30,25,59,40,41,29,37,57,43,35,14,36,44,58,32,23,7,255,255,165,152,9,
-  154,100,26,63,133,162,122,57,207,144,120,212,154,137,101,16,71,210,232,244,3,76,58,0,
-  0,87,124,9,18,143,97,83,246,217,122,93,24,122,41,33,39,52,60,86,31,190,13,202,
-  10,31,82,81,59,219,36,233,250,119,238,54,58,46,58,173,106,239,62,253,152,98,85,92,
-  130,8,253,28,89,43,89,3,10,41,202,32,98,143,105,177,164,211,19,235,213,171,70,68,
-  133,227,154,6,201,206,24,55,193,29,67,211,108,26,178,93,7,234,68,186,14,166,56,108,
-  96,10,108,127,209,122,145,32,28,171,136,250,19,173,32,212,220,126,50,156,21,208,12,199,
-  46,104,65,24,101,198,205,129,220,65,126,102,214,240,226,243,120,192,23,185,118,120,157,135,
-  157,213,31,185,48,72,19,45,63,68,231,162,164,37,162,122,230,168,34,182,255,50,159,18,
-  10,130,230,223,14,223,228,186,71,92,57,24,20,215,218,120,178,56,127,181,243,137,11,0,
-  33,48,73,83,91,70,37,21,80,80,72,226,74,94,213,199,248,143,148,42,190,223,123,203,
-  151,97,41,118,110,223,199,83,192,137,12,108,108,121,32,151,44,140,184,60,112,225,162,247,
-  149,26,195,214,7,225,148,99,119,249,150,230,53,25,3,254,152,90,159,219,181,215,207,70,
-  69,77,59,59,136,78,92,166,64,109,4,70,37,250,103,226,252,45,47,242,119,163,177,3,
-  8,149,168,9,81,253,19,15,128,57,85,127,28,107,145,163,40,37,130,111,25,237,112,252,
-  131,179,238,81,104,187,197,89,143,202,152,126,99,105,21,132,66,54,4,47,211,104,197,44,
-  165,212,241,129,239,116,34,192,179,104,151,223,227,94,194,202,191,33,202,204,220,115,175,238,
-  133,251,190,40,193,76,117,63,194,130,94,200,62,194,244,12,234,79,177,24,94,35,229,29,
-  63,157,121,226,3,126,204,69,42,134,85,190,109,215,255,249,174,221,127,255,40,164,125,96,
-  8,177,66,5,87,2,83,215,7,13,165,110,194,56,246,23,181,3,229,149,59,207,10,224,
-  241,124,146,131,92,158,163,58,23,7,57,196,129,189,119,46,89,176,194,152,52,32,16,132,
-  139,211,229,53,107,108,194,131,239,95,180,174,231,84,117,194,228,241,24,246,144,209,58,155,
-  190,153,7,189,12,216,133,95,44,238,113,64,88,165,98,109,255,192,103,253,192,32,203,134,
-  182,18,226,79,144,176,83,76,2,246,37,25,225,39,2,9,143,56,131,182,146,211,213,81,
-  230,5,159,1,61,13,215,202,2,74,210,92,28,14,44,153,170,96,0,70,190,157,133,227,
-  169,254,223,127,117,204,69,97,229,8,4,159,188,192,209,78,234,14,111,200,95,194,109,190,
-  237,167,39,12,21,35,134,117,105,104,160,60,75,101,194,72,55,63,142,72,103,228,154,29,
-  222,249,9,50,0,22,0,1,23,27,32,16,19,20,18,30,52,55,40,25,19,30,27,35,
-  33,31,32,35,41,54,41,25,255,255,165,233,227,161,145,92,3,69,198,22,33,0,215,162,
-  85,58,4,81,89,215,0,227,28,230,60,27,69,140,4,6,222,229,4,157,208,255,83,41,
-  25,92,153,214,3,31,19,146,193,46,190,27,8,248,89,30,166,251,221,161,199,171,206,158,
-  44,141,42,202,48,208,201,233,51,133,7,95,159,77,231,181,218,159,120,125,208,30,82,168,
-  129,5,155,201,36,130,32,26,231,93,178,222,19,127,178,133,52,86,220,27,245,129,143,146,
-  159,116,251,151,90,210,2,186,173,180,219,9,65,85,174,153,64,141,152,16,64,139,178,238,
-  27,210,59,109,0,82,144,16,55,0,114,249,226,161,136,24,211,224,76,123,117,120,89,217,
-  12,8,206,199,253,151,55,106,104,235,178,33,139,81,56,48,26,118,46,132,139,124,238,94,
-  74,1,31,92,206,24,25,37,89,184,238,87,161,116,223,110,203,240,202,22,127,255,9,149,
-  123,122,95,202,54,135,205,61,123,20,121,117,202,69,136,214,117,10,189,233,147,33,253,178,
-  149,149,251,86,33,89,166,105,30,26,211,118,118,139,242,140,125,5,178,81,3,251,77,188,
-  34,98,185,223,116,180,150,50,1,176,230,41,188,5,240,184,84,78,137,1,33,40,152,111,
-  181,195,16,0,1,46,61,66,29,46,63,59,40,24,20,17,15,16,33,48,84,57,24,7,
-  9,63,13,49,253,33,60,250,222,118,178,8,183,110,73,248,242,64,179,19,254,140,0,107,
-  38,9,63,57,213,141,201,91,170,111,106,128,153,12,49,99,79,245,37,104,12,22,170,47,
-  194,7,33,8,43,235,145,56,220,53,5,56,187,123,155,246,206,89,22,15,35,29,239,180,
-  124,237,167,139,228,13,218,96,118,205,159,25,104,157,220,113,149,91,254,19,193,88,2,36,
-  175,234,2,183,31,23,172,92,112,18,232,250,62,164,179,120,22,70,17,217,198,121,67,49,
-  3,61,80,70,174,168,89,14,213,165,16,240,197,128,76,237,15,239,73,58,184,109,234,156,
-  196,11,116,70,178,29,180,139,70,176,240,183,152,14,249,45,243,247,76,113,247,131,190,43,
-  205,101,250,203,165,250,253,84,64,139,110,50,15,66,84,129,4,65,104,15,10,118,205,13,
-  244,53,167,58,152,57,162,109,47,184,4,8,178,141,2,246,12,88,209,215,224,165,87,95,
-  146,15,214,143,220,9,183,145,6,159,235,116,114,114,93,178,210,244,182,28,212,149,171,150,
-  31,69,18,35,223,14,5,207,30,248,97,94,138,125,128,250,38,182,146,148,185,165,162,120,
-  165,21,76,236,128,232,25,212,236,83,244,196,2,211,114,122,20,16,32,123,234,23,110,65,
-  144,221,211,8,174,135,255,255,190,231,162,108,121,21,0,1,37,46,75,45,69,53,76,54,
-  43,12,7,10,18,25,20,23,22,27,26,18,26,15,13,255,255,165,99,198,202,182,173,205,
-  228,242,127,197,24,84,142,88,216,240,158,83,63,207,192,250,229,18,20,126,211,171,84,50,
-  226,218,204,254,118,10,90,15,164,172,173,214,121,183,26,145,189,170,208,107,64,194,34,219,
-  92,118,61,199,185,137,65,141,223,28,15,193,1,64,237,186,23,168,5,23,156,183,253,173,
-  0,60,120,18,138,171,48,169,37,221,108,214,126,18,223,81,56,33,138,96,62,15,244,13,
-  203,122,164,208,234,171,170,105,53,27,115,48,21,98,71,99,71,48,40,87,49,238,145,16,
-  43,200,177,2,114,213,232,68,254,35,98,240,240,193,181,72,113,124,109,79,150,73,197,13,
-  209,9,247,153,25,23,152,112,93,125,188,70,110,64,64,193,235,151,85,114,248,35,222,108,
-  238,173,181,82,70,85,133,76,40,214,40,161,149,170,32,41,98,47,168,189,131,164,57,44,
-  191,220,32,160,14,35,83,92,232,54,182,193,167,185,236,240,47,229,198,108,187,13,133,203,
-  103,208,235,107,185,21,44,210,227,65,233,8,62,0,136,88,63,50,80,126,39,87,247,183,
-  204,94,166,235,27,168,128,54,235,90,69,64,127,37,144,107,48,164,60,93,118,239,217,85,
-  116,32,175,52,192,48,165,53,123,237,208,32,57,19,0,1,21,64,66,52,18,16,8,5,
-  5,52,50,51,13,20,81,78,90,28,28,6,249,7,9,213,187,165,233,85,173,26,9,57,
-  149,243,45,22,37,30,23,52,77,253,27,169,98,84,163,244,201,191,159,198,203,147,137,208,
-  18,21,235,75,150,28,157,196,192,102,29,122,202,146,229,46,168,189,221,231,98,219,228,112,
-  171,199,198,131,27,94,16,235,241,143,169,217,126,150,163,128,214,135,241,108,242,182,59,221,
-  165,224,65,159,96,80,97,227,195,193,73,125,195,251,189,195,192,61,146,129,147,105,22,170,
-  16,100,63,80,112,70,141,96,98,84,53,159,82,134,60,10,130,167,186,20,15,88,97,77,
-  42,73,86,37,117,101,74,140,171,49,254,211,20,168,71,94,12,186,13,115,202,175,225,97,
-  238,50,41,78,254,136,181,86,85,87,5,249,130,228,203,188,128,57,124,51,27,145,65,139,
-  158,73,55,14,235,160,225,231,19,197,70,194,219,146,222,199,47,150,184,12,44,48,157,165,
-  116,115,126,218,222,169,44,173,12,144,105,222,26,110,47,144,37,52,162,222,40,22,239,14,
-  36,177,30,196,134,33,166,144,235,17,241,117,161,73,201,144,110,39,228,127,72,246,78,13,
-  248,152,211,189,13,61,61,56,118,103,38,146,219,66,8,36,30,104,160,205,235,219,124,109,
-  73,195,101,151,10,113,50,96,40,27,174,246,88,192,194,175,106,250,152,84,253,224,223,175,
-  59,65,67,217,251,80,181,243,173,63,89,164,50,168,215,88,74,155,3,125,89,161,78,50,
-  16,214,188,2,84,225,222,165,123,99,131,85,48,15,223,220,25,217,44,82,130,194,158,155,
-  207,172,105,60,37,95,241,12,22,119,21,116,17,103,232,152,11,113,42,1,131,2,240,40,
-  19,77,222,128,196,99,153,191,23,173,242,48,172,192,225,80,207,56,126,130,157,222,189,249,
-  175,160,159,176,46,19,161,96,53,206,38,148,130,82,247,174,107,64,241,181,58,222,202,178,
-  63,146,250,53,221,90,128,64,123,173,25,11,111,198,46,118,62,118,238,4,98,194,79,243,
-  209,135,114,44,164,203,89,93,169,149,74,105,117,152,187,47,255,133,89,47,159,55,182,146,
-  158,202,60,10,40,99,2,116,123,55,19,11,138,117,158,62,55,163,160,128,194,10,134,136,
-  67,203,29,13,212,244,238,77,165,10,118,165,83,204,2,61,162,255,255,132,219,81,27,96,
-  19,0,1,14,23,63,59,56,18,7,7,11,28,49,43,36,25,33,72,61,84,36,32,245,
-  203,100,174,17,156,4,7,116,227,130,171,23,207,195,147,159,149,219,149,142,231,38,186,141,
-  157,6,228,143,81,100,202,141,182,177,247,105,223,147,9,243,79,21,237,62,240,180,166,69,
-  113,50,199,151,81,202,114,165,59,26,72,77,43,50,173,199,2,237,78,77,167,178,176,212,
-  195,23,206,2,20,254,250,69,151,218,126,6,140,74,208,254,210,245,248,236,206,89,65,37,
-  185,145,114,144,102,197,190,212,91,20,20,98,246,219,102,181,42,167,154,217,31,30,253,61,
-  128,176,160,127,130,63,15,127,204,83,77,10,31,51,174,200,147,64,127,139,139,194,195,194,
-  216,4,132,85,56,201,214,182,18,69,136,218,84,215,55,175,106,46,11,39,188,119,31,117,
-  9,37,109,212,113,88,1,241,197,85,101,6,204,149,207,164,1,237,86,222,152,5,56,10,
-  220,144,176,161,140,187,148,217,127,31,105,9,5,90,18,197,5,16,213,193,181,168,30,213,
-  209,49,189,203,80,99,189,68,141,238,239,216,126,56,247,85,75,204,131,170,99,127,56,60,
-  8,93,131,6,37,101,178,127,243,126,36,156,130,139,120,241,110,238,142,172,169,25,203,57,
-  207,191,131,172,11,188,33,141,185,13,49,100,41,150,59,53,11,176,101,56,125,201,43,36,
-  237,233,209,224,242,172,42,140,69,98,19,171,6,249,2,149,63,170,143,221,87,250,2,191,
-  206,149,73,254,133,92,194,49,165,237,100,204,122,187,7,59,34,224,41,239,175,2,147,195,
-  2,164,60,123,63,231,216,197,196,40,179,189,97,153,199,153,37,153,20,196,39,119,248,225,
-  142,101,48,213,215,241,99,222,17,73,50,51,59,167,134,112,39,227,111,220,181,149,219,101,
-  148,122,242,57,23,208,102,158,94,114,143,25,104,30,108,94,69,214,174,255,217,116,99,226,
-  157,19,0,1,26,39,45,19,10,30,29,52,39,49,33,66,59,57,13,13,13,57,57,49,
-  247,203,106,229,155,113,42,208,220,129,60,213,105,142,213,115,119,208,184,135,77,193,95,247,
-  45,81,207,206,48,19,211,235,3,6,91,67,163,133,95,25,186,206,131,147,127,165,69,223,
-  15,230,164,72,53,153,211,76,63,228,73,36,71,181,109,64,206,167,217,247,88,189,98,33,
-  9,120,54,108,55,110,67,170,121,202,166,56,20,177,238,79,8,1,247,47,214,31,206,210,
-  194,252,74,187,197,200,127,21,8,229,127,68,142,179,11,217,36,134,109,126,170,226,89,113,
-  190,103,242,130,73,20,16,217,169,200,163,235,125,200,183,61,4,55,192,73,24,96,81,14,
-  219,102,253,125,254,224,231,66,3,209,8,106,114,97,32,114,142,10,222,223,212,45,210,43,
-  148,138,90,63,66,24,122,140,44,251,104,180,62,201,151,93,182,200,246,138,128,186,197,61,
-  35,112,244,250,185,25,168,208,120,129,67,246,204,61,239,80,56,39,181,118,65,247,152,84,
-  149,105,97,39,229,40,82,230,128,106,95,49,132,229,55,50,33,205,90,82,54,66,179,221,
-  112,189,249,25,187,238,143,139,211,225,217,254,41,235,243,144,63,250,151,8,249,192,133,162,
-  116,98,219,87,130,179,234,62,13,5,145,209,255,210,9,200,66,193,116,7,33,75,22,75,
-  119,107,101,177,19,0,1,37,49,75,44,65,71,75,50,42,31,56,37,38,11,9,16,15,
-  13,11,7,248,36,231,182,69,5,159,128,28,205,145,23,85,139,179,147,158,36,240,61,93,
-  196,174,254,8,164,60,23,143,155,57,71,165,83,13,63,209,76,230,4,152,168,46,141,75,
-  107,242,162,237,155,127,171,132,237,172,174,221,234,85,19,18,234,234,132,37,189,46,69,57,
-  105,130,108,162,185,10,210,238,232,213,78,221,106,185,80,74,201,100,32,61,216,57,153,52,
-  111,59,255,124,144,118,160,192,155,180,193,141,87,186,124,48,225,79,53,226,221,120,76,136,
-  243,96,50,143,83,37,5,122,109,159,195,76,87,88,33,233,10,159,101,78,164,128,107,85,
-  220,88,113,83,45,19,111,117,103,150,127,118,155,98,231,98,106,193,46,43,182,101,51,71,
-  120,143,198,247,66,137,76,156,21,241,29,64,138,106,94,92,212,29,236,163,131,81,152,179,
-  232,6,190,15,79,100,202,133,44,218,14,175,252,160,59,213,67,98,164,110,88,47,74,117,
-  193,48,92,62,220,126,76,30,224,252,199,192,120,116,139,22,86,243,116,67,237,7,210,189,
-  66,159,137,54,184,190,237,244,10,17,212,192,9,193,28,7,21,201,170,172,203,225,50,24,
-  26,11,237,59,49,220,149,149,106,90,54,116,247,195,234,159,132,4,41,89,26,96,237,120,
-  48,3,184,214,55,228,126,185,147,120,38,27,93,237,28,60,67,129,32,241,70,205,117,234,
-  33,43,104,229,111,219,60,86,190,221,60,98,26,230,21,61,97,255,179,213,8,4,65,214,
-  97,210,65,243,212,155,51,43,112,115,57,147,169,254,174,253,203,154,109,100,254,134,238,45,
-  240,51,250,255,109,244,252,101,165,64,43,230,246,97,197,102,188,68,25,145,64,245,114,26,
-  106,179,184,89,84,136,29,210,22,117,193,4,134,176,245,15,29,208,189,100,213,192,157,38,
-  241,5,103,241,132,103,253,41,1,40,110,152,93,123,168,129,192,39,97,165,85,251,193,125,
-  209,82,10,137,139,52,20,95,202,192,235,30,131,143,67,231,192,108,119,98,51,206,191,172,
-  104,254,249,103,104,53,140,255,22,174,45,33,111,52,105,255,197,231,74,15,198,254,133,198,
-  72,143,223,99,183,71,18,169,199,71,151,167,189,80,210,33,27,3,33,87,16,45,189,142,
-  156,220,66,161,19,254,39,229,52,25,9,44,65,60,76,238,247,104,212,80,91,12,189,243,
-  52,251,77,185,29,243,249,234,175,79,21,137,163,163,102,42,202,166,134,169,154,109,6,118,
-  61,124,195,224,77,212,243,8,120,92,150,95,255,250,131,21,33,177,181,23,0,1,34,40,
-  45,38,56,67,39,37,21,37,31,31,19,9,19,18,26,24,27,39,32,27,17,15,11,255,
-  255,166,18,208,165,73,90,32,146,243,13,6,88,150,115,36,214,65,212,80,153,228,48,23,
-  185,57,186,122,165,220,55,0,13,228,126,117,241,90,68,244,159,64,64,197,208,250,39,69,
-  162,93,218,150,135,12,211,152,216,164,226,174,107,33,54,201,83,1,112,3,31,102,186,177,
-  179,56,168,165,141,239,203,75,226,109,206,209,139,127,152,53,251,159,181,101,195,98,27,185,
-  17,187,21,197,53,99,23,54,228,24,173,54,109,62,202,82,155,207,177,112,1,73,123,143,
-  16,222,154,69,149,69,231,118,26,63,196,114,252,138,157,122,190,252,183,165,145,56,8,203,
-  150,155,196,26,17,58,29,5,200,99,117,71,26,190,97,156,37,71,140,239,184,71,111,111,
-  10,233,109,190,143,112,178,47,14,206,229,183,174,74,114,187,13,142,197,218,55,47,122,139,
-  253,211,229,238,52,161,174,252,245,51,8,93,13,113,92,3,191,90,161,107,29,252,183,88,
-  133,96,195,145,24,151,170,44,222,35,205,54,152,206,71,202,20,9,149,105,229,199,165,131,
-  56,25,53,84,155,216,207,26,197,126,71,253,217,252,40,45,105,137,195,254,22,42,169,80,
-  180,206,16,168,165,174,38,206,153,171,104,4,188,174,228,237,36,81,103,221,220,208,123,22,
-  0,1,37,46,75,40,47,19,35,35,55,40,32,19,17,13,10,17,22,22,14,42,42,52,
-  18,11,255,255,165,233,227,161,144,206,141,153,207,196,167,250,70,239,153,254,74,88,72,253,
-  106,101,98,195,32,45,82,40,156,162,58,203,148,149,127,53,3,143,26,113,58,39,137,62,
-  104,200,223,243,47,204,154,96,94,184,25,217,176,245,84,109,113,112,152,231,206,164,194,112,
-  58,157,83,109,81,222,172,234,19,166,116,169,166,172,74,234,15,62,226,155,88,82,104,104,
-  60,196,220,25,251,192,204,195,137,246,107,144,163,185,123,173,205,235,190,231,182,136,74,188,
-  138,102,33,67,191,66,198,77,85,119,186,111,27,16,136,129,166,77,81,48,188,61,148,33,
-  168,75,121,29,109,99,9,126,115,7,168,17,23,152,225,225,78,3,30,101,205,48,65,22,
-  142,142,111,233,74,204,202,68,1,102,48,170,48,118,242,61,29,184,91,56,100,96,27,199,
-  88,14,12,14,255,126,85,14,240,11,22,191,34,198,141,179,205,202,20,35,224,196,50,143,
-  85,175,223,185,157,255,63,234,102,145,61,80,233,102,149,164,47,144,17,0,1,28,46,68,
-  46,39,46,64,68,43,24,13,12,25,64,63,57,25,22,8,255,255,165,29,66,144,176,127,
-  188,2,195,158,156,15,2,158,121,176,46,143,162,16,36,1,249,235,255,139,186,153,228,51,
-  47,33,77,20,19,8,209,174,61,161,21,17,206,191,138,160,113,180,195,219,15,72,176,125,
-  94,214,138,121,122,98,225,26,216,252,63,182,49,184,233,180,193,44,66,6,215,31,82,33,
-  188,3,74,145,149,44,208,241,45,177,166,151,168,72,144,103,92,15,147,90,196,104,103,20,
-  140,242,81,2,95,216,186,252,174,110,134,248,181,199,119,52,87,210,117,62,49,180,247,197,
-  153,7,30,237,229,255,194,35,130,41,99,9,17,103,211,248,222,118,132,65,240,109,115,146,
-  61,163,131,171,220,159,96,56,196,116,142,202,217,23,98,138,85,199,75,165,6,93,112,108,
-  228,63,55,160,104,203,22,56,55,131,120,189,169,200,168,3,215,95,118,90,215,88,6,212,
-  180,245,166,254,60,70,87,164,155,7,8,126,157,145,203,143,254,199,211,68,124,233,134,89,
-  24,63,56,60,48,46,115,164,36,153,64,82,22,35,178,143,122,245,151,72,120,59,122,104,
-  4,162,18,216,14,210,123,40,53,208,65,23,0,1,40,49,66,32,28,12,7,11,33,30,
-  27,7,9,8,18,33,34,23,20,21,52,65,77,42,0,36,230,244,40,165,33,220,89,124,
-  135,45,40,101,255,178,26,177,106,196,72,198,232,255,96,86,107,232,138,58,242,22,4,234,
-  103,230,109,119,86,114,200,74,174,70,130,188,186,9,144,138,140,201,169,91,215,43,45,166,
-  28,250,139,225,237,101,16,115,55,29,11,131,97,77,107,178,21,9,107,82,170,84,183,87,
-  55,102,15,149,147,82,60,212,101,130,49,110,119,129,31,220,100,86,126,205,211,174,208,26,
-  166,74,42,201,193,151,19,102,195,65,11,13,134,125,23,14,162,28,158,168,187,224,248,110,
-  143,253,161,34,187,74,124,51,254,63,239,99,136,80,100,108,96,167,197,28,75,151,209,143,
-  6,85,245,72,123,78,183,133,51,80,22,70,209,72,176,52,193,16,91,56,74,44,164,76,
-  75,157,33,242,44,89,78,246,89,122,125,2,130,133,60,175,140,78,109,22,213,27,231,96,
-  253,57,116,230,48,15,113,205,183,93,9,78,42,90,113,85,244,1,83,101,17,247,185,112,
-  108,107,169,208,217,245,11,54,113,197,124,7,33,245,139,67,182,144,115,174,87,149,255,71,
-  2,187,39,102,6,17,106,186,161,214,73,186,58,66,36,169,221,205,14,129,180,80,162,245,
-  9,23,170,239,218,75,240,181,114,178,129,13,65,226,1,116,25,143,37,12,199,32,16,205,
-  116,182,18,59,244,132,188,165,178,10,46,89,68,5,61,0,199,132,65,175,175,24,237,162,
-  98,186,97,163,93,148,191,182,103,114,237,25,137,66,75,9,147,154,34,106,69,11,24,123,
-  135,212,190,21,102,200,218,152,79,37,88,94,33,8,33,51,64,13,5,187,149,143,119,119,
-  158,81,249,67,90,89,233,196,23,178,81,201,68,19,172,211,180,53,226,31,144,49,38,31,
-  67,0,156,130,67,50,83,90,110,20,106,56,202,239,112,148,165,105,143,87,153,60,205,178,
-  196,148,94,80,222,190,245,129,42,245,130,70,117,203,10,247,138,246,53,11,184,107,170,14,
-  209,100,69,92,36,254,34,154,21,33,87,91,155,194,73,110,127,236,41,59,77,77,142,2,
-  211,155,155,144,250,122,236,212,134,95,185,161,21,62,14,187,252,175,110,168,172,37,39,42,
-  41,54,123,240,196,236,223,188,25,62,57,183,15,34,160,6,193,119,144,184,173,244,170,1,
-  90,14,25,241,139,159,208,200,243,251,142,15,0,34,33,58,25,44,27,30,19,32,51,51,
-  39,18,10,81,35,144,247,230,90,212,61,70,247,105,230,244,168,149,11,117,13,186,155,176,
-  214,56,101,27,156,245,228,92,172,249,213,135,91,32,7,137,13,108,181,207,97,49,128,66,
-  34,0,194,106,84,158,103,109,15,102,107,35,232,80,213,16,83,180,51,53,187,241,222,218,
-  95,149,85,221,216,89,118,244,53,20,208,162,13,43,139,182,95,12,177,11,240,241,185,73,
-  221,127,139,140,169,124,118,170,34,207,67,168,214,33,88,92,228,64,161,201,16,193,127,20,
-  48,106,197,0,207,192,144,43,132,108,222,216,66,40,205,236,122,40,133,152,87,212,69,122,
-  184,153,211,202,146,95,83,152,27,232,118,96,235,140,163,194,60,83,66,232,173,24,97,19,
-  93,118,221,97,157,230,203,6,58,201,219,93,158,118,11,47,190,44,231,82,2,215,141,79,
-  161,171,75,92,199,144,35,96,53,183,181,221,161,129,251,155,28,19,55,154,25,59,254,174,
-  62,184,103,2,147,89,158,19,84,68,53,69,149,242,193,188,205,139,242,160,74,117,250,53,
-  176,49,94,29,150,49,69,200,10,133,149,112,175,105,173,144,214,95,17,141,253,13,226,235,
-  218,178,189,24,190,248,80,41,33,145,114,81,63,113,189,199,202,146,207,228,82,125,48,12,
-  189,112,146,53,198,140,252,111,113,40,228,122,28,223,153,143,252,43,167,47,253,24,55,205,
-  171,7,216,242,218,84,74,41,52,67,121,135,87,28,204,219,8,101,134,160,82,62,221,32,
-  127,246,222,8,90,211,18,248,245,249,49,201,151,57,66,238,196,243,180,191,190,198,246,240,
-  160,122,41,105,83,167,86,77,55,140,46,19,68,224,238,223,45,202,162,50,132,9,161,93,
-  160,225,187,159,184,125,137,159,170,212,164,192,106,159,70,52,112,248,111,195,219,132,104,250,
-  44,232,45,24,40,113,108,59,131,172,115,67,1,86,105,186,37,204,141,155,211,235,225,186,
-  44,61,65,151,254,135,22,235,66,122,62,21,179,133,62,121,190,11,239,66,81,44,164,32,
-  44,37,249,169,34,22,151,156,42,249,18,151,174,110,73,184,192,115,79,207,162,40,19,22,
-  255,31,95,99,53,171,132,109,58,204,145,100,92,223,217,86,203,32,240,127,174,37,99,134,
-  220,94,211,215,59,46,101,176,202,115,255,34,19,94,68,53,59,187,67,73,176,1,29,123,
-  139,117,140,10,229,102,188,240,175,181,249,230,57,11,219,125,138,113,69,204,0,17,0,1,
-  5,33,33,29,28,28,40,35,41,32,20,14,23,34,34,31,105,103,126,55,80,74,53,195,
-  134,101,18,84,21,171,178,3,129,198,187,63,178,116,25,143,235,132,152,42,26,229,37,230,
-  132,228,210,9,19,98,172,58,9,6,107,253,90,242,85,159,139,73,18,158,225,240,120,177,
-  220,228,101,246,4,53,9,154,173,102,17,3,232,194,133,133,203,116,34,219,49,96,255,65,
-  68,245,231,142,179,86,216,222,166,184,201,102,118,175,251,201,130,126,205,1,184,202,209,43,
-  114,123,3,149,195,182,51,116,28,64,179,23,182,146,214,187,248,147,221,102,125,133,219,173,
-  8,44,160,46,231,109,226,192,237,246,53,111,181,177,100,214,111,38,139,211,223,156,197,45,
-  163,213,130,104,77,228,31,139,191,212,148,232,7,165,185,251,8,59,51,123,32,148,13,201,
-  132,103,186,202,10,211,100,29,212,6,92,106,190,143,143,58,158,230,14,140,60,53,17,141,
-  64,150,118,211,185,205,172,53,19,11,225,44,212,143,66,225,155,70,56,245,213,148,114,131,
-  148,180,209,56,31,164,36,235,202,224,218,46,80,178,208,146,239,218,157,236,131,7,68,85,
-  166,153,99,90,11,195,210,222,39,69,187,64,236,209,60,97,190,73,123,11,51,104,84,113,
-  242,224,206,55,138,88,176,3,188,252,241,209,75,65,39,218,27,231,63,129,31,77,190,212,
-  115,192,88,97,58,193,40,194,185,125,131,249,136,143,2,221,10,251,3,18,151,108,218,93,
-  38,228,132,234,23,175,196,82,143,122,168,174,42,149,219,53,180,154,104,77,33,218,82,162,
-  170,224,128,11,236,67,243,190,161,13,147,26,179,212,169,121,204,231,150,169,215,43,2,33,
-  184,246,182,218,111,18,56,168,202,159,131,206,6,48,221,232,219,126,83,241,221,195,13,130,
-  110,250,160,232,39,138,105,2,89,229,150,21,8,92,30,202,184,97,119,125,163,83,16,26,
-  45,83,35,23,91,243,99,66,132,38,239,42,34,42,11,193,159,47,86,19,96,42,198,199,
-  179,126,56,28,97,64,23,209,68,140,176,62,254,71,63,20,150,250,121,43,101,15,22,2,
-  117,255,255,226,78,184,199,195,20,0,1,27,43,45,47,56,69,42,40,44,46,32,28,25,
-  20,16,33,40,29,26,24,23,6,255,255,165,152,9,154,100,26,63,130,173,242,12,73,224,
-  127,146,195,217,14,93,106,82,88,127,70,174,2,154,170,254,41,214,217,177,8,35,197,109,
-  230,114,179,56,0,57,233,199,139,54,9,95,110,247,16,6,161,193,5,137,108,2,170,143,
-  9,106,183,73,55,109,189,104,222,180,53,68,72,110,105,146,11,136,13,140,1,39,122,44,
-  137,18,85,243,19,122,7,86,64,112,95,45,11,143,180,31,244,82,67,170,164,232,37,249,
-  184,165,215,248,52,76,34,225,50,209,48,156,133,206,254,36,105,185,7,154,121,58,205,165,
-  179,42,206,114,147,144,152,175,115,72,36,216,13,55,177,175,86,189,33,94,218,109,192,90,
-  235,167,125,3,191,142,94,65,41,237,153,252,39,129,184,251,27,92,91,135,54,187,187,171,
-  232,169,163,31,126,54,135,216,170,74,29,33,175,58,38,56,84,66,66,173,160,94,7,220,
-  57,41,98,58,170,187,115,10,25,15,194,239,153,123,45,250,27,208,137,96,248,237,231,146,
-  57,231,228,117,190,123,212,151,20,8,0,174,178,200,27,27,7,8,7,2,193,189,63,5,
-  2,110,162,160,89,253,242,190,160,73,52,39,15,86,143,42,14,51,198,16,16,214,213,87,
-  152,109,26,109,26,244,75,155,35,100,181,245,236,27,241,135,164,83,70,71,89,42,55,76,
-  51,8,27,164,83,250,70,96,238,84,8,244,243,208,20,162,215,45,178,158,113,250,125,135,
-  41,222,186,37,46,120,31,185,59,15,106,53,192,84,0,49,171,140,62,251,65,32,51,205,
-  252,192,181,156,173,239,194,102,77,49,148,84,0,128,130,233,100,203,102,144,236,13,67,217,
-  92,34,222,180,185,133,118,63,26,226,58,203,124,253,52,1,240,32,187,179,165,124,198,130,
-  183,105,83,84,251,14,95,220,199,82,122,241,13,103,200,207,98,109,118,78,207,19,91,99,
-  4,96,42,163,212,16,132,2,201,134,77,178,166,254,163,199,81,71,225,15,245,240,83,139,
-  103,124,115,172,246,76,97,26,75,11,97,234,36,200,125,205,223,46,132,92,209,211,169,80,
-  229,159,70,113,192,20,0,1,6,42,75,85,55,44,33,74,52,47,3,29,35,35,11,6,
-  7,5,4,39,37,22,36,231,105,59,212,176,240,208,43,181,76,200,45,238,180,250,223,10,
-  189,251,77,66,37,241,230,23,1,186,93,105,2,198,29,232,1,197,85,186,141,190,3,29,
-  187,213,117,60,204,166,180,92,52,36,46,154,186,104,176,45,169,8,148,196,71,224,11,139,
-  209,126,95,217,185,49,145,244,29,31,223,131,53,29,251,24,5,21,96,190,55,160,178,109,
-  186,124,50,52,179,171,3,54,112,41,145,225,248,167,254,56,6,249,50,36,224,223,191,81,
-  152,79,138,166,125,88,68,248,112,111,58,116,75,177,15,206,114,6,176,197,177,134,122,133,
-  3,30,100,232,154,48,208,114,77,140,135,194,69,5,193,163,158,36,55,118,236,90,164,193,
-  225,149,122,20,205,191,41,214,174,230,26,187,204,12,25,18,141,230,82,59,137,227,163,68,
-  194,131,190,129,98,254,111,156,44,140,126,199,13,47,30,159,108,18,75,202,240,217,143,122,
-  140,105,100,194,155,88,211,140,201,64,168,65,77,229,24,86,187,194,140,17,190,241,182,151,
-  85,215,117,5,52,43,126,105,54,192,126,198,108,132,231,165,248,229,138,227,227,158,164,93,
-  224,200,143,197,147,17,211,16,117,231,192,85,117,230,79,64,157,9,64,29,249,85,162,131,
-  109,124,193,37,124,200,109,58,141,62,79,235,249,217,112,106,240,199,3,174,201,76,74,186,
-  28,84,209,217,200,245,13,73,23,184,167,53,171,200,191,185,163,44,105,107,11,15,178,246,
-  101,181,146,1,44,225,249,194,124,2,24,226,115,54,71,58,83,10,203,79,227,143,244,207,
-  6,118,90,227,28,181,197,188,218,182,91,20,40,230,63,204,211,204,196,174,220,249,113,234,
-  15,87,52,40,180,217,124,116,66,129,65,132,84,184,21,116,109,56,106,47,104,227,55,116,
-  234,153,77,119,84,119,154,99,5,45,61,178,43,111,148,246,144,29,130,25,225,188,212,90,
-  110,61,185,61,21,72,53,178,32,129,151,43,20,107,140,9,251,184,129,88,116,84,145,40,
-  62,58,171,200,179,142,162,122,160,163,30,190,65,26,22,4,126,209,24,199,49,181,233,129,
-  180,64,39,155,156,110,1,87,14,116,222,195,154,192,120,218,98,195,67,88,191,105,127,67,
-  56,255,255,212,154,197,56,46,203,22,0,1,39,46,60,34,47,45,39,25,16,13,51,50,
-  45,15,17,28,18,14,25,35,45,29,18,6,246,192,229,179,15,151,29,67,132,76,15,104,
-  22,127,128,130,206,1,167,118,188,247,103,236,183,89,38,49,164,76,148,236,98,232,222,71,
-  151,182,78,164,231,62,161,226,101,58,48,205,61,245,134,185,109,245,206,230,105,232,196,94,
-  244,216,215,117,67,44,119,20,30,125,219,16,1,111,191,164,221,109,136,3,159,212,92,229,
-  84,50,239,236,91,189,205,198,175,186,17,49,41,249,1,61,15,221,127,71,252,225,23,84,
-  53,128,78,189,60,5,80,223,184,254,66,123,159,204,192,165,78,215,194,68,250,129,100,117,
-  226,78,153,31,136,181,187,219,175,156,181,52,235,54,39,182,198,106,208,59,152,209,174,33,
-  194,186,34,200,75,51,104,66,165,19,57,89,17,124,104,252,66,131,87,226,213,193,32,7,
-  74,69,222,55,83,112,204,9,69,144,10,115,183,100,222,221,164,16,101,184,186,79,92,210,
-  66,162,243,235,71,59,253,55,250,76,246,2,168,172,102,31,107,2,244,163,68,106,252,62,
-  49,202,152,122,139,170,100,92,231,87,73,190,170,230,212,249,210,76,230,198,60,38,66,120,
-  139,10,23,0,1,38,71,75,58,39,37,38,35,36,12,42,41,70,34,36,7,11,8,18,
-  21,20,10,1,255,240,66,183,27,228,200,218,55,204,77,94,84,50,242,114,145,162,211,22,
-  245,112,17,79,104,116,51,114,58,204,124,109,44,182,241,136,107,124,129,78,190,186,176,81,
-  58,36,70,108,161,82,231,204,188,122,198,120,50,253,77,138,36,127,205,97,111,130,180,209,
-  226,221,145,40,9,246,129,2,35,216,193,81,196,29,196,39,51,210,125,154,55,255,118,119,
-  151,39,51,154,67,85,106,159,63,33,94,11,253,35,108,208,142,41,236,106,63,87,151,103,
-  240,40,35,188,56,63,224,227,29,64,54,183,243,5,213,204,114,88,246,13,128,219,15,100,
-  233,156,35,10,101,67,137,171,250,117,50,123,60,230,170,65,223,45,150,164,95,248,13,121,
-  128,249,226,235,108,65,240,222,22,12,36,99,39,130,32,119,236,91,68,211,40,230,153,186,
-  192,57,223,156,14,5,224,252,26,168,22,233,174,130,87,16,87,200,83,231,244,159,64,82,
-  18,187,187,182,76,103,255,35,66,121,0,252,105,92,3,241,23,106,70,223,86,218,48,172,
-  30,255,64,126,3,28,76,45,154,55,28,96,73,125,27,25,252,223,198,216,79,215,187,249,
-  227,21,11,213,84,216,16,234,203,35,122,82,172,135,89,63,29,152,9,103,88,210,185,214,
-  178,221,34,245,205,18,109,104,101,239,244,178,28,0,218,215,91,167,16,249,130,190,7,174,
-  169,204,11,239,97,102,219,80,48,50,16,7,251,134,175,39,14,251,221,250,181,201,180,220,
-  21,43,135,130,179,99,239,22,225,15,185,209,247,225,238,168,104,122,243,224,87,22,149,255,
-  100,1,103,15,63,244,164,183,69,239,1,68,56,23,36,78,173,37,189,182,62,189,155,20,
-  252,34,196,37,215,230,115,242,77,61,199,74,169,229,82,74,189,111,200,77,28,62,8,2,
-  252,35,32,170,129,5,47,107,253,133,246,113,141,217,148,122,149,96,53,79,154,125,34,16,
-  136,119,170,154,53,134,83,156,135,142,216,90,145,247,131,154,121,15,255,177,135,158,145,41,
-  123,14,191,3,242,134,195,163,140,142,48,205,150,81,101,56,128,179,27,164,175,120,202,124,
-  55,86,40,104,18,131,36,195,32,16,104,50,138,131,173,79,164,171,165,177,210,87,72,203,
-  156,224,103,58,110,228,182,140,88,191,134,37,77,217,249,24,215,27,90,64,141,125,128,255,
-  208,246,41,40,228,0,13,0,1,0,4,10,11,11,8,6,7,33,56,65,135,99,168,54,
-  28,160,61,172,178,229,112,162,86,211,232,100,37,178,234,24,200,178,227,14,245,99,109,58,
-  149,59,35,134,106,20,54,28,112,104,34,90,131,244,84,53,233,181,9,211,77,101,22,124,
-  27,170,197,216,76,204,240,87,249,47,12,30,248,183,109,26,79,29,74,204,5,214,157,86,
-  79,161,46,72,132,205,188,152,233,193,104,200,167,123,197,188,114,62,63,253,113,112,75,142,
-  228,37,208,207,31,230,90,224,133,87,111,254,12,217,23,198,150,207,180,90,177,27,82,217,
-  228,187,31,24,162,252,2,101,161,88,189,124,169,110,25,179,75,62,181,52,73,61,209,16,
-  193,35,161,122,163,11,81,24,178,138,239,190,75,195,210,46,13,47,202,109,10,20,70,73,
-  12,196,139,113,196,81,218,233,43,81,102,115,116,10,219,219,144,183,115,41,114,235,42,68,
-  8,152,227,33,103,11,5,235,86,169,201,248,17,39,162,124,152,121,132,178,198,216,221,248,
-  140,223,111,99,225,94,225,211,242,67,107,6,9,195,118,191,32,200,119,178,214,14,203,74,
-  121,92,30,120,133,67,214,12,223,245,96,121,182,0,35,195,142,53,214,98,18,214,234,203,
-  184,132,14,53,146,41,2,24,249,251,54,236,183,77,160,16,161,103,243,243,172,179,20,239,
-  158,249,7,2,225,248,238,233,58,2,251,139,175,93,77,194,245,1,105,12,203,209,52,130,
-  40,62,20,197,183,165,218,39,122,139,133,197,233,186,198,236,9,236,206,72,240,6,132,200,
-  207,165,50,194,121,1,95,181,43,234,198,175,182,124,79,18,86,33,246,106,174,2,119,50,
-  158,231,33,166,91,239,105,136,161,19,212,154,234,69,8,4,160,197,155,42,51,137,2,246,
-  223,23,149,247,173,196,186,125,163,8,177,91,75,24,66,222,182,240,215,47,75,189,46,226,
-  62,187,34,86,211,118,69,34,249,227,98,134,78,240,156,100,189,220,101,8,237,26,115,68,
-  26,105,237,71,146,226,203,103,33,236,226,244,41,14,53,128,153,186,52,59,170,110,118,159,
-  248,131,95,128,12,168,254,177,222,161,18,232,114,246,139,14,206,150,165,5,244,135,235,174,
-  58,13,221,221,17,255,213,33,211,68,129,169,3,178,241,217,168,197,134,251,156,253,146,81,
-  27,97,172,147,44,177,178,48,205,203,28,109,249,93,75,188,10,34,54,104,241,254,39,19,
-  240,136,224,189,185,201,62,56,226,129,64,12,27,211,95,196,163,42,167,110,246,145,11,186,
-  128,49,86,127,75,173,178,140,209,147,15,79,103,181,83,70,176,203,208,177,49,243,115,208,
-  22,252,238,234,91,63,36,210,0,22,0,1,23,33,45,27,24,30,24,43,39,52,87,73,
-  60,22,36,38,19,5,8,16,19,20,11,6,255,255,165,233,227,161,145,169,66,64,187,232,
-  52,155,181,188,116,214,139,113,49,36,10,92,17,117,72,208,163,66,200,234,93,209,118,169,
-  125,167,129,241,21,140,168,186,220,31,194,250,224,207,145,65,148,166,21,79,67,147,102,49,
-  17,41,250,120,15,25,125,178,101,161,28,246,91,223,111,133,4,38,27,117,61,6,155,228,
-  100,140,91,18,55,22,74,180,146,222,93,82,121,222,39,247,84,232,25,76,159,147,189,252,
-  121,210,52,43,74,101,47,113,190,44,8,78,253,91,191,236,211,43,49,96,66,255,58,61,
-  33,23,179,28,68,15,217,149,29,104,214,29,209,253,14,11,148,20,49,1,188,173,67,88,
-  30,192,124,32,185,70,114,136,149,255,176,109,197,5,169,223,14,92,149,214,93,243,214,187,
-  242,224,65,136,97,111,70,142,52,29,218,58,148,45,97,76,75,119,80,33,179,200,149,23,
-  104,208,179,156,55,186,176,227,74,61,133,220,54,145,72,163,61,88,173,139,72,138,9,75,
-  40,205,91,25,46,109,245,215,92,188,107,246,116,34,185,140,23,11,171,239,227,214,126,86,
-  107,9,141,24,0,1,2,11,15,18,26,42,38,25,7,17,25,36,33,29,36,29,35,15,
-  15,9,10,66,68,35,221,63,105,3,108,213,238,139,91,172,36,159,62,164,26,0,230,45,
-  143,101,136,81,105,203,178,173,162,147,61,239,129,124,83,113,44,64,104,231,185,24,108,152,
-  3,65,22,167,100,204,185,40,171,168,123,86,128,170,32,78,112,161,23,73,58,161,195,79,
-  126,8,2,246,193,63,138,18,49,89,85,4,136,182,211,109,210,2,42,9,20,227,84,126,
-  148,246,248,247,136,176,86,240,114,134,184,226,249,68,161,48,197,37,180,19,144,32,47,157,
-  183,123,41,26,188,60,239,124,114,224,121,44,154,10,143,141,186,235,208,85,10,35,225,81,
-  251,7,4,253,200,103,92,179,98,128,31,30,5,85,187,81,156,180,212,185,34,125,90,134,
-  35,7,22,201,220,246,184,181,119,113,241,114,90,197,244,71,54,247,226,67,237,34,56,173,
-  40,108,111,124,202,185,29,215,153,63,133,137,159,5,212,89,93,112,12,89,130,185,77,223,
-  67,141,113,91,47,178,55,143,110,128,245,0,133,178,104,225,178,126,237,186,33,204,42,146,
-  101,8,146,255,230,218,206,65,220,250,251,6,239,76,210,205,19,123,248,190,32,149,174,190,
-  69,102,49,77,232,104,41,215,209,214,172,249,3,25,248,82,227,127,89,79,83,176,230,114,
-  169,215,3,2,42,31,251,29,24,253,134,128,173,58,241,76,109,180,123,20,51,202,86,77,
-  65,242,214,223,204,96,188,56,171,190,52,85,188,181,75,144,42,200,185,226,186,15,157,6,
-  192,58,221,188,15,65,12,145,119,172,180,250,62,253,8,21,41,195,81,175,201,55,221,153,
-  33,179,254,117,51,153,97,86,43,29,71,13,36,34,188,185,223,218,223,241,75,47,42,236,
-  74,162,214,146,78,49,89,155,21,20,21,156,100,17,223,23,201,38,7,13,59,125,50,10,
-  83,121,146,163,254,252,242,230,158,34,109,71,80,55,250,23,208,190,108,146,79,254,129,66,
-  202,156,236,238,143,88,200,216,204,171,220,254,205,139,217,54,194,137,233,135,246,45,195,46,
-  151,88,158,238,57,74,22,191,204,19,24,92,96,232,190,237,32,163,143,201,38,204,255,241,
-  241,147,112,213,49,56,0,10,0,1,38,45,45,32,31,69,117,148,133,66,29,251,133,17,
-  194,44,118,127,37,10,179,84,121,166,176,96,214,135,129,243,156,196,164,65,201,189,141,58,
-  187,63,115,143,24,186,169,252,206,160,49,4,55,158,166,145,224,218,37,226,107,235,175,240,
-  47,8,150,216,165,60,114,240,54,214,19,179,149,52,63,84,160,15,175,26,229,246,14,84,
-  204,176,180,146,53,59,217,53,139,244,56,48,177,190,116,115,26,77,234,84,128,134,111,197,
-  176,183,40,20,230,251,219,212,20,4,91,52,203,251,175,235,225,68,179,255,157,88,40,212,
-  253,193,16,0,50,58,96,52,47,13,14,20,20,18,26,36,50,44,38,38,14,197,180,56,
-  157,86,62,31,222,39,46,28,144,84,212,148,132,186,160,220,174,44,32,145,214,147,88,221,
-  0,164,250,212,73,168,200,219,22,72,206,87,80,176,9,229,47,245,142,97,130,17,111,87,
-  237,124,127,132,199,129,171,223,80,3,22,163,232,67,30,221,106,58,180,25,149,230,2,194,
-  71,134,114,137,201,195,233,41,11,14,21,207,180,192,9,139,148,202,55,10,226,92,9,192,
-  9,110,156,121,157,219,56,234,149,198,245,189,229,100,252,214,236,161,180,201,102,117,241,132,
-  192,195,117,143,98,254,166,79,58,194,180,195,120,105,191,64,194,56,70,240,20,181,157,193,
-  193,184,119,127,99,251,171,161,245,90,113,163,59,119,39,145,116,214,245,208,60,61,207,104,
-  111,129,206,82,23,146,235,118,136,226,167,127,248,97,66,154,94,82,126,190,144,188,6,160,
-  112,127,87,101,214,129,190,70,138,60,226,195,173,32,170,65,223,216,130,29,77,189,123,200,
-  35,80,42,203,178,100,20,212,203,110,161,206,5,238,1,43,41,94,107,234,226,94,197,241,
-  81,78,149,202,156,100,129,130,77,251,207,88,189,224,95,65,138,38,162,253,111,52,85,36,
-  208,39,169,123,235,134,171,96,125,216,95,110,101,55,18,245,86,184,80,66,58,110,229,128,
-  118,9,120,154,140,41,121,9,44,12,107,173,209,72,83,193,176,244,77,106,164,232,92,121,
-  105,16,13,0,218,201,165,248,197,121,64,174,130,69,86,24,153,114,128,107,46,114,123,89,
-  75,65,159,229,139,145,31,21,91,141,200,35,128,155,201,73,38,46,118,182,206,245,230,107,
-  105,142,137,83,9,54,116,78,211,211,98,138,68,153,76,31,33,75,78,91,64,3,95,101,
-  99,144,14,218,129,101,252,88,61,217,203,187,237,17,56,55,225,224,246,163,105,174,72,99,
-  107,34,187,6,241,13,249,77,241,138,168,68,84,64,175,2,33,172,54,76,21,187,84,129,
-  234,24,22,240,19,28,84,67,117,100,144,173,50,107,109,56,137,176,236,168,77,207,236,176,
-  2,202,40,113,142,188,180,149,42,136,161,55,43,68,134,217,50,232,137,234,124,234,44,155,
-  234,167,163,24,87,7,39,175,61,72,81,70,46,91,205,12,81,166,48,160,158,187,203,35,
-  46,42,18,112,237,195,34,105,124,83,153,65,190,162,54,118,228,11,47,236,196,92,58,174,
-  99,160,213,22,205,240,104,102,107,162,125,42,225,54,5,30,204,119,155,61,32,237,249,55,
-  57,216,38,81,181,225,197,95,119,63,37,89,180,73,228,200,34,179,211,109,157,217,254,51,
-  33,198,99,138,227,24,220,253,2,47,57,214,177,59,111,109,99,226,52,30,77,237,197,3,
-  51,230,93,59,52,74,206,143,220,118,27,196,125,228,187,34,82,152,96,6,40,70,141,196,
-  90,82,91,178,146,27,104,221,169,139,63,83,142,8,128,23,0,1,23,46,55,47,30,43,
-  30,39,21,21,16,13,21,21,28,33,38,32,22,18,21,43,47,41,10,255,255,166,18,208,
-  165,74,120,128,198,134,76,252,183,1,176,192,115,254,52,233,26,223,104,54,236,193,74,149,
-  233,75,129,251,191,144,169,89,12,151,188,68,51,40,227,116,71,6,144,162,92,235,63,147,
-  227,250,125,95,146,80,25,2,32,95,35,238,135,230,187,84,144,162,107,255,163,137,3,78,
-  159,188,193,16,107,164,205,88,1,207,14,143,118,218,199,28,232,88,83,211,74,8,48,103,
-  54,119,68,223,143,68,174,155,22,69,248,88,9,253,139,10,182,52,24,97,4,40,214,202,
-  129,227,163,65,182,93,213,201,218,36,131,162,202,242,230,94,25,167,106,170,12,12,204,200,
-  245,183,201,56,232,122,55,81,196,178,50,223,44,123,6,234,89,160,157,115,107,91,21,194,
-  113,72,230,225,210,150,100,48,192,214,198,179,220,249,145,59,250,202,84,245,81,49,171,240,
-  135,60,150,148,93,130,202,228,230,206,187,231,131,111,136,199,21,79,241,121,28,83,23,163,
-  207,51,124,232,141,48,136,160,85,74,169,2,60,103,182,77,180,201,114,243,208,210,217,56,
-  164,194,223,50,30,58,18,131,192,205,66,91,40,0,85,177,186,157,146,11,50,191,236,121,
-  141,129,151,26,125,136,37,52,225,243,108,78,118,174,108,225,67,96,71,217,6,11,16,142,
-  158,130,87,95,35,103,165,223,251,102,30,196,72,96,164,235,176,106,66,28,187,203,110,253,
-  150,149,39,171,34,11,0,1,14,23,63,59,57,18,11,13,72,68,162,100,133,69,0,179,
-  178,178,123,176,47,147,162,185,170,177,152,82,196,186,172,245,38,243,1,178,253,56,213,199,
-  243,47,221,234,158,92,82,5,106,104,187,49,126,48,6,46,157,163,33,176,149,208,171,189,
-  77,58,112,223,215,11,209,16,75,78,204,230,186,220,56,210,222,46,255,156,61,45,220,237,
-  1,45,231,240,56,252,138,252,236,109,153,150,76,62,171,79,177,12,185,162,253,150,172,67,
-  74,20,121,60,5,14,159,76,251,127,78,228,188,244,16,36,134,33,158,137,118,195,215,37,
-  104,101,9,213,202,195,219,229,189,135,52,151,62,185,15,185,127,212,218,200,195,218,212,224,
-  143,185,13,125,141,164,138,46,38,21,252,123,157,190,56,15,247,234,16,107,57,207,212,149,
-  59,138,26,91,29,165,254,186,115,108,118,159,21,156,166,215,196,148,122,219,71,95,133,227,
-  218,66,196,138,96,184,152,70,80,15,38,211,122,71,159,236,217,58,81,49,84,200,248,179,
-  50,204,92,159,7,202,47,238,145,60,72,21,115,2,24,176,92,90,99,0,184,16,252,207,
-  79,73,121,7,149,248,109,187,240,152,94,192,92,132,34,39,29,204,13,211,26,65,5,43,
-  63,106,22,220,67,3,40,254,71,231,0,93,60,131,140,243,143,149,133,64,33,88,12,92,
-  57,94,136,50,152,241,239,117,35,58,177,191,240,205,81,189,84,102,238,62,130,85,40,255,
-  41,205,5,97,92,150,87,77,162,191,222,255,102,107,238,46,184,119,22,136,67,43,179,226,
-  250,30,42,108,132,63,91,244,147,137,10,57,121,127,197,148,190,91,233,162,208,248,121,30,
-  77,251,0,21,0,1,24,42,48,44,34,50,44,44,49,44,59,46,44,27,33,28,26,8,
-  13,16,20,9,249,7,9,85,74,67,185,197,168,218,155,118,235,229,167,197,146,249,217,217,
-  245,168,132,81,29,126,189,21,36,26,108,45,102,109,45,62,176,203,207,217,34,253,92,72,
-  135,21,211,157,19,180,151,14,243,93,110,177,99,9,90,47,209,40,23,110,50,116,249,83,
-  179,112,57,220,122,46,255,68,34,160,234,55,231,233,75,13,210,78,223,154,112,73,251,159,
-  207,102,45,124,76,177,190,104,91,33,32,35,125,24,230,41,94,57,3,88,17,173,74,249,
-  24,27,103,208,220,125,17,111,225,155,158,66,49,176,6,248,185,114,192,75,144,200,69,206,
-  176,92,175,34,32,232,221,54,8,26,94,77,110,202,192,161,237,253,5,104,139,169,92,93,
-  183,21,27,68,184,61,23,239,9,158,46,16,51,90,209,1,59,134,164,181,163,73,30,181,
-  164,232,189,133,219,109,18,32,4,78,193,155,78,110,29,10,225,144,174,175,186,230,163,242,
-  242,190,143,0,180,62,63,142,77,232,240,12,77,171,216,99,180,211,21,42,159,228,167,165,
-  11,58,84,111,201,229,41,51,172,226,107,149,181,102,114,187,136,7,133,78,240,175,114,163,
-  77,228,139,226,185,117,77,227,208,211,232,11,177,130,52,58,99,220,39,50,60,125,202,50,
-  3,220,155,149,111,8,187,148,237,109,43,193,123,91,70,76,29,194,27,58,4,62,57,82,
-  115,223,187,147,23,159,165,113,140,75,218,193,28,139,222,92,51,211,68,101,120,147,91,220,
-  205,163,233,210,115,37,123,137,207,178,142,7,105,235,241,50,53,75,130,8,34,169,200,31,
-  210,170,50,22,72,125,195,132,0,112,97,244,14,241,105,45,144,190,0,198,149,51,123,60,
-  175,124,111,136,109,231,255,150,105,143,121,56,81,47,196,66,55,95,36,196,125,255,179,66,
-  189,94,63,22,60,213,248,12,12,8,243,21,58,55,19,174,158,168,19,63,11,5,227,227,
-  232,184,133,248,14,72,60,2,236,3,166,172,169,177,128,248,2,130,240,52,210,201,73,13,
-  109,72,171,76,204,209,255,76,207,104,76,221,55,239,237,29,202,255,136,138,100,191,133,206,
-  101,241,89,245,29,26,90,35,16,21,0,1,21,49,55,51,28,24,12,14,18,23,25,28,
-  27,28,70,60,54,31,32,44,222,156,48,105,3,25,110,180,216,174,34,124,68,238,124,144,
-  0,73,61,149,233,140,246,226,86,187,31,233,195,194,127,0,101,178,157,10,69,185,147,44,
-  33,167,170,194,126,177,96,204,243,247,21,157,159,47,245,7,48,169,231,24,98,100,198,227,
-  19,84,111,146,106,13,138,72,189,206,210,6,157,250,76,11,71,240,110,225,174,168,177,234,
-  250,82,67,194,46,225,138,238,115,154,243,125,9,123,153,254,200,158,158,165,86,16,102,126,
-  166,200,207,30,27,70,133,14,137,183,92,185,43,228,105,16,80,3,114,140,230,250,252,199,
-  100,237,89,224,117,195,205,115,209,125,249,124,29,76,32,63,101,106,215,52,198,100,177,47,
-  116,137,153,128,26,37,173,24,219,50,121,72,150,34,23,206,97,25,249,136,116,191,170,149,
-  250,51,221,229,1,162,118,25,155,58,103,249,78,230,250,185,42,164,3,198,120,139,106,3,
-  47,52,224,154,235,43,110,248,117,158,221,61,217,121,234,34,222,99,184,85,201,162,55,93,
-  72,151,152,109,13,146,166,20,159,123,144,126,211,94,120,155,249,152,234,146,28,250,63,224,
-  111,154,211,235,91,21,131,242,41,187,26,75,219,163,144,154,51,212,62,112,247,36,199,245,
-  9,123,85,197,161,14,1,172,234,11,18,87,215,57,100,154,198,175,165,31,8,221,255,56,
-  7,245,156,56,243,255,33,70,250,59,181,91,136,55,144,72,62,87,184,74,155,166,39,61,
-  186,195,157,145,171,105,92,77,163,228,65,22,178,218,41,129,99,57,111,57,169,158,157,221,
-  66,146,209,251,158,255,180,226,255,255,24,128,13,220,57,84,88,230,17,0,1,31,60,75,
-  64,39,26,9,8,6,3,21,23,23,6,53,73,121,70,83,36,139,97,103,241,36,136,191,
-  182,110,124,233,188,160,85,20,234,169,185,153,154,178,136,207,244,130,12,83,98,179,228,234,
-  50,236,222,19,246,148,253,89,254,150,31,49,50,239,149,159,2,114,211,221,75,4,180,227,
-  186,82,189,140,21,132,240,192,141,126,148,1,120,83,98,219,169,69,199,40,167,162,175,53,
-  253,217,21,64,70,131,27,8,74,32,32,215,201,121,56,159,157,249,118,135,171,83,240,72,
-  90,60,39,31,49,236,168,145,76,53,66,19,103,145,192,5,92,220,167,49,197,22,96,70,
-  224,136,151,251,240,57,196,178,255,145,145,183,104,169,224,231,15,177,60,87,40,95,143,30,
-  201,237,122,149,19,225,251,231,201,253,87,53,191,95,30,220,151,131,104,162,40,203,172,122,
-  239,8,6,243,107,99,35,178,156,212,236,185,74,29,151,142,126,125,188,244,12,11,115,39,
-  28,43,94,51,75,157,195,83,225,206,36,37,162,57,119,93,195,217,122,193,10,148,94,165,
-  254,85,137,10,1,68,74,79,98,163,241,98,64,196,148,244,70,142,123,225,61,239,51,197,
-  21,230,114,70,24,71,246,118,5,207,111,178,66,137,174,120,162,68,121,123,57,241,37,31,
-  165,158,251,154,197,178,195,125,241,43,69,177,209,164,5,141,194,191,74,22,233,75,169,16,
-  14,57,104,221,178,156,147,73,251,10,95,202,63,17,127,100,179,137,80,165,97,234,253,64,
-  137,97,89,22,183,169,96,133,46,46,43,198,161,23,144,158,31,7,200,52,113,105,175,102,
-  40,235,26,39,240,249,13,169,254,236,231,149,155,168,38,102,173,99,214,76,212,54,49,61,
-  230,2,211,149,130,73,58,11,29,185,92,175,165,50,35,131,86,204,184,55,115,3,237,210,
-  222,23,202,30,110,45,115,30,122,52,7,226,34,131,35,118,12,31,103,42,221,193,49,153,
-  247,248,26,227,122,34,42,38,186,68,128,171,113,104,253,7,73,49,205,244,86,45,144,109,
-  10,212,48,80,85,106,14,84,2,140,232,86,157,195,143,175,150,26,98,99,179,211,159,127,
-  175,108,57,73,227,253,23,119,72,250,81,249,71,239,29,178,54,255,223,34,233,36,13,107,
-  53,109,122,197,11,241,118,255,36,149,197,225,109,121,205,41,43,162,133,255,233,79,103,75,
-  63,48,73,66,163,76,50,95,229,118,16,53,21,86,48,44,136,200,62,186,191,85,88,163,
-  190,39,115,74,19,114,185,23,45,159,82,103,249,39,136,77,72,228,224,255,254,143,221,72,
-  24,22,0,1,26,46,63,47,31,43,36,38,24,38,39,24,11,18,18,26,17,26,42,49,
-  49,26,17,6,255,255,165,233,227,161,145,169,66,64,243,179,81,231,241,179,112,7,205,89,
-  254,157,154,89,83,183,105,35,118,212,254,174,200,120,30,60,86,4,69,136,161,135,126,82,
-  200,79,215,165,119,146,0,224,188,227,37,38,146,246,151,92,203,140,153,70,223,141,2,228,
-  108,160,91,51,168,95,62,209,32,228,138,247,158,181,56,151,168,93,19,20,5,52,163,142,
-  4,162,219,112,33,21,9,227,31,228,84,170,216,111,95,105,116,45,128,28,29,115,212,167,
-  67,190,49,81,213,41,116,226,13,71,122,239,187,15,162,182,191,100,141,153,218,130,53,185,
-  153,77,17,71,252,143,209,151,189,209,142,235,214,185,226,214,107,247,20,102,90,239,147,182,
-  179,125,184,153,174,167,174,230,41,63,102,189,92,67,152,34,201,199,241,246,225,145,40,70,
-  79,196,102,206,135,120,214,40,10,234,189,49,178,125,29,184,186,177,166,56,90,95,48,132,
-  134,210,88,117,183,233,160,203,143,43,68,83,132,162,194,141,134,217,200,53,1,13,94,119,
-  45,1,51,196,10,248,117,56,93,16,104,158,99,205,108,126,24,21,21,0,0,255,13,37,
-  51,47,35,43,41,36,17,22,17,32,23,22,30,36,37,29,68,200,222,165,211,203,197,63,
-  143,249,59,224,19,127,166,62,241,187,255,71,175,177,44,172,53,165,139,137,68,73,107,15,
-  78,223,125,135,117,171,176,142,54,137,252,226,196,171,103,114,146,33,55,6,54,95,95,82,
-  123,223,212,148,249,125,168,192,185,180,252,163,251,187,152,64,19,242,23,75,11,24,186,208,
-  195,183,129,168,73,93,183,129,114,38,243,184,210,115,195,118,63,159,94,193,32,187,35,89,
-  227,207,8,197,240,110,130,16,196,37,252,158,196,84,186,208,4,195,113,92,41,76,135,161,
-  7,78,204,44,189,90,85,94,60,14,222,32,199,167,138,112,188,94,150,88,78,79,227,119,
-  166,114,246,207,64,78,126,161,173,139,214,225,187,182,192,165,247,226,114,11,205,162,116,82,
-  176,79,88,58,75,50,174,152,213,50,105,73,42,69,41,6,130,78,2,36,192,80,188,182,
-  156,240,26,140,15,209,174,95,254,244,221,41,230,49,176,201,61,78,97,123,57,124,8,198,
-  212,57,54,0,185,197,99,102,71,205,102,197,37,166,179,178,233,248,162,135,238,40,68,250,
-  116,142,181,108,165,93,22,111,118,143,67,144,49,74,126,0,201,61,25,215,252,103,171,40,
-  240,185,154,2,145,91,164,150,132,12,48,175,255,186,228,245,101,90,169,181,123,224,40,34,
-  173,126,175,227,14,1,10,155,114,226,81,20,14,81,86,98,202,171,147,65,41,126,66,89,
-  80,105,118,135,157,204,220,101,135,122,107,213,25,196,37,48,57,75,138,19,245,175,196,63,
-  144,124,75,87,144,251,225,35,11,51,201,179,15,131,113,189,255,78,134,183,229,27,192,135,
-  37,88,246,196,5,135,0,228,231,212,75,211,7,222,85,213,186,154,136,13,93,231,48,108,
-  198,144,23,106,192,171,185,33,110,223,8,20,120,43,214,40,151,67,39,239,181,123,227,198,
-  141,179,167,141,91,163,216,156,78,26,174,122,192,83,15,1,0,12,0,26,101,118,101,25,
-  12,49,73,78,33,13,6,245,253,73,215,24,249,89,187,137,67,101,251,114,149,174,139,167,
-  247,140,173,131,206,189,52,24,214,178,230,248,162,149,152,247,246,176,50,95,223,51,62,219,
-  236,78,84,241,64,119,53,85,203,8,77,202,13,240,31,21,40,254,89,116,192,17,2,161,
-  165,201,105,199,195,243,9,226,58,17,137,167,228,113,158,236,209,242,195,92,106,186,204,79,
-  167,114,213,250,228,238,2,180,136,191,240,245,5,10,176,195,119,95,53,122,15,150,50,28,
-  160,6,192,186,194,188,24,135,144,206,158,93,38,245,127,117,53,52,231,133,152,99,19,79,
-  137,191,12,142,221,103,33,178,135,24,11,232,6,227,236,180,227,19,99,17,119,240,118,223,
-  4,116,114,229,129,230,56,74,136,229,25,203,90,122,173,73,119,145,72,240,165,178,143,200,
-  57,77,16,23,120,100,232,0,147,182,235,250,81,159,35,12,14,115,246,203,211,55,230,194,
-  10,81,198,47,219,31,89,106,82,155,16,194,38,226,224,31,180,132,104,159,11,81,250,197,
-  124,220,198,110,156,69,246,187,180,255,49,4,19,197,32,172,14,0,1,66,73,75,8,12,
-  66,74,77,81,77,73,23,20,20,8,40,59,130,169,253,157,35,99,88,52,30,0,146,48,
-  142,43,222,112,44,91,31,125,85,6,5,73,108,183,210,168,17,173,95,70,56,205,181,105,
-  190,201,136,218,199,175,134,28,174,244,44,205,192,122,92,126,64,68,250,37,42,31,212,153,
-  3,143,214,78,3,105,135,106,67,91,119,100,162,192,253,118,133,13,187,6,241,252,106,113,
-  67,61,90,40,131,225,212,128,202,74,91,235,27,220,135,134,12,103,15,153,143,28,207,122,
-  196,15,219,69,36,255,61,30,233,129,110,76,65,5,107,149,153,191,150,170,4,58,128,124,
-  209,190,178,27,16,11,53,112,148,190,48,176,13,86,26,29,199,31,18,38,75,213,63,29,
-  172,213,226,238,104,116,103,132,114,192,67,79,78,238,214,62,166,14,51,124,75,185,252,13,
-  209,85,28,125,113,0,43,242,39,25,161,237,114,144,20,182,251,205,121,130,175,5,86,3,
-  237,129,96,165,10,13,32,135,96,180,179,7,122,156,31,107,162,227,213,226,123,80,157,212,
-  211,69,21,2,232,195,177,218,151,44,227,235,82,17,226,188,234,188,30,71,72,106,219,126,
-  253,71,73,204,19,177,182,203,80,244,126,246,118,23,209,22,250,160,55,75,27,99,72,192,
-  94,169,194,15,101,239,14,111,40,166,131,71,210,231,200,73,184,96,14,119,8,69,9,255,
-  75,156,30,4,55,245,168,212,160,8,64,224,31,166,136,124,167,14,223,111,207,180,183,188,
-  71,76,46,161,171,6,79,114,58,8,132,15,67,98,159,66,126,186,51,228,202,189,167,210,
-  177,19,67,109,7,214,56,190,29,166,2,244,180,131,127,32,163,66,19,40,171,67,109,214,
-  37,194,197,7,230,172,161,123,140,122,64,241,32,91,189,96,113,131,127,188,191,179,105,82,
-  144,182,83,241,0,158,239,133,114,71,170,115,48,153,255,255,212,8,158,105,231,17,0,1,
-  38,53,75,49,48,56,45,49,26,28,27,25,24,17,12,26,61,59,28,36,231,76,54,247,
-  10,246,195,183,16,82,252,165,10,216,241,6,28,206,31,160,113,153,250,35,209,21,47,45,
-  207,181,232,169,178,71,112,239,89,95,202,113,207,79,183,222,104,7,216,6,87,52,235,33,
-  229,129,92,156,28,51,140,222,102,7,4,222,202,144,229,195,68,21,165,252,225,240,75,66,
-  28,61,235,82,133,2,200,94,158,10,35,31,215,185,179,115,215,155,219,122,50,84,44,9,
-  253,55,32,195,137,110,224,254,57,21,255,176,159,24,225,81,245,49,77,75,57,22,254,23,
-  220,172,232,218,10,139,166,41,168,168,22,32,233,140,167,173,57,150,230,61,24,93,171,136,
-  193,48,61,183,22,57,22,171,251,130,42,169,120,9,217,175,163,5,7,247,22,155,194,176,
-  252,180,82,29,9,49,204,0,108,223,105,192,33,158,215,144,249,186,132,102,59,240,74,33,
-  30,2,106,247,79,72,80,255,116,14,147,98,200,130,205,217,202,145,116,244,2,3,83,46,
-  23,67,246,85,246,43,118,194,48,108,131,125,174,165,34,58,134,199,33,227,31,62,156,64,
-  230,215,7,120,96,19,13,243,187,137,212,213,143,105,54,221,13,137,48,77,108,178,38,124,
-  75,138,148,173,152,31,176,211,128,75,181,213,3,206,212,53,98,177,110,26,40,55,91,35,
-  30,150,31,151,177,146,255,155,166,149,56,27,183,135,35,174,83,166,226,121,119,54,130,106,
-  231,160,221,106,71,204,84,108,53,21,65,93,19,199,82,51,151,98,170,107,98,147,6,232,
-  60,110,251,225,42,230,63,89,63,135,129,49,34,0,214,130,71,86,58,10,6,60,119,32,
-  49,82,103,53,17,186,135,25,220,58,72,85,182,139,149,35,36,177,14,180,82,241,142,126,
-  89,79,212,139,3,14,14,42,0,124,175,230,94,52,13,150,198,208,155,195,166,255,189,96,
-  168,5,255,240,46,65,181,250,213,14,49,235,85,74,127,223,113,0,198,129,28,119,8,167,
-  111,10,68,196,133,164,206,253,229,108,154,97,249,248,69,176,80,30,33,116,39,129,221,0,
-  253,89,236,48,211,62,198,211,83,24,244,215,220,223,153,104,3,168,8,36,49,147,195,47,
-  110,142,76,131,255,252,43,186,210,168,125,8,0,1,24,38,54,93,83,119,83,71,149,129,
-  213,199,252,47,65,130,253,114,9,207,206,204,106,123,38,180,117,162,70,141,87,188,35,27,
-  149,155,170,7,48,242,194,114,59,216,168,82,189,175,78,178,90,74,2,192,176,170,199,197,
-  30,8,32,35,113,227,246,178,25,205,227,162,142,124,62,174,141,29,126,243,124,197,199,134,
-  196,82,65,207,154,111,235,86,166,149,167,129,5,90,65,155,84,249,129,113,244,224,173,108,
-  149,7,69,48,103,253,66,237,93,91,175,220,182,231,21,135,64,188,55,230,67,67,246,40,
-  179,96,171,53,230,230,179,105,180,96,17,176,128,176,138,165,81,61,135,10,129,45,75,162,
-  98,115,35,242,194,214,104,99,221,102,127,194,37,168,10,212,235,132,53,58,4,39,245,30,
-  20,202,159,233,132,90,61,221,7,125,78,145,246,86,116,139,6,70,121,55,135,152,73,238,
-  96,35,1,54,152,194,6,45,113,216,115,131,205,124,34,104,207,192,230,102,226,209,154,47,
-  62,90,203,1,188,56,28,243,215,218,78,3,240,123,85,109,39,37,31,1,186,253,29,161,
-  192,30,226,239,136,192,6,159,93,129,103,7,113,167,105,1,101,160,80,63,12,198,108,200,
-  93,146,49,132,124,95,13,173,103,214,137,98,159,233,172,57,232,31,92,75,62,113,32,224,
-  99,220,50,79,204,1,87,17,180,168,98,76,159,77,12,74,3,11,17,181,157,97,228,183,
-  232,219,206,136,159,83,34,9,234,133,236,71,154,159,211,21,0,5,4,25,26,25,26,22,
-  22,5,24,25,37,22,21,29,44,46,30,12,27,58,14,106,7,72,225,230,98,150,73,177,
-  21,14,84,122,209,105,175,98,139,150,34,229,138,13,216,114,98,48,1,1,243,126,90,125,
-  181,150,50,23,114,41,67,34,200,80,123,223,149,73,165,125,54,71,111,98,121,3,230,197,
-  82,83,25,181,96,148,184,148,45,234,156,137,137,157,111,210,82,87,58,158,161,236,211,153,
-  103,235,30,101,32,139,180,137,160,196,141,244,110,182,34,201,74,233,184,15,78,7,54,231,
-  74,139,126,208,161,35,95,186,48,198,232,87,78,247,77,164,42,114,248,195,254,105,158,226,
-  120,134,13,181,226,29,47,71,198,226,210,196,181,130,36,223,9,84,122,169,155,135,82,170,
-  147,170,182,13,136,39,6,91,59,117,212,41,92,122,121,102,92,124,173,121,231,248,250,238,
-  133,77,137,201,223,188,241,223,31,233,190,140,142,40,150,180,22,131,53,228,243,75,144,175,
-  202,163,133,1,103,49,38,106,109,152,83,93,183,142,238,79,199,195,147,248,230,185,164,143,
-  221,94,86,213,53,180,93,79,158,38,48,0,2,197,21,42,111,148,154,125,173,137,223,190,
-  60,79,40,5,221,208,57,152,28,221,148,240,173,23,134,74,192,34,202,63,119,237,167,105,
-  168,226,201,2,94,187,190,39,128,111,246,131,245,66,185,76,9,69,101,28,32,248,167,248,
-  124,116,68,161,218,43,142,137,112,138,252,158,4,28,9,174,240,104,248,213,79,210,21,196,
-  45,24,205,173,71,58,227,166,242,229,96,130,110,70,112,246,95,213,30,222,38,191,71,135,
-  139,207,188,239,210,125,98,238,184,88,221,48,27,72,207,38,75,133,248,113,8,130,6,228,
-  95,246,197,47,197,164,136,3,218,211,15,6,107,132,45,21,199,85,92,182,92,108,215,209,
-  80,137,206,28,30,220,77,13,158,7,107,153,96,47,182,160,7,16,212,198,154,76,85,16,
-  87,125,10,254,19,75,89,22,103,3,183,30,245,221,174,133,140,11,236,7,34,182,224,177,
-  227,240,209,122,71,237,41,78,238,27,110,70,64,191,44,101,7,251,164,218,114,40,58,54,
-  188,247,3,192,2,137,2,149,93,2,191,194,222,77,193,0,235,65,184,102,139,244,84,62,
-  29,133,222,22,112,22,42,132,103,208,50,142,200,242,155,235,14,73,186,195,26,57,164,18,
-  189,183,186,109,57,230,131,31,144,124,61,81,157,133,132,174,83,72,53,38,19,38,78,164,
-  198,68,88,108,249,0,13,0,1,39,46,75,101,153,147,85,34,12,8,13,13,19,9,2,
-  175,44,65,217,12,248,152,125,38,115,217,28,42,54,151,183,230,249,186,147,86,226,53,248,
-  147,83,55,160,11,248,250,249,121,130,100,37,90,101,247,250,184,78,203,226,52,85,139,221,
-  213,201,59,207,35,183,29,47,13,85,99,250,89,213,0,203,211,24,6,33,151,111,98,165,
-  136,28,175,219,238,233,106,231,66,200,187,207,26,240,108,65,245,101,63,71,174,133,120,193,
-  52,55,83,133,15,56,181,124,213,129,9,130,127,55,129,26,229,121,27,24,190,253,123,217,
-  16,25,117,8,28,185,252,79,225,45,218,105,253,66,228,5,172,98,191,146,26,238,235,42,
-  239,135,53,81,194,31,95,162,220,71,166,73,75,69,33,57,113,78,237,255,138,178,245,44,
-  160,21,135,238,112,12,161,14,147,201,159,76,18,42,11,134,132,18,194,91,116,116,79,194,
-  102,166,217,248,93,116,29,93,186,101,98,119,109,5,76,109,197,104,140,15,112,12,91,102,
-  182,177,63,82,99,250,229,185,107,251,54,85,214,98,95,233,192,60,99,169,86,76,177,50,
-  131,209,158,18,192,175,101,77,244,9,194,56,217,190,225,212,205,12,145,147,134,141,134,195,
-  233,67,230,124,93,164,157,111,74,125,196,121,26,10,248,226,122,207,54,189,175,90,129,176,
-  129,237,231,183,100,240,170,67,59,255,254,140,93,229,22,0,1,21,27,41,25,30,33,27,
-  30,28,29,37,25,29,31,44,39,24,17,28,37,59,12,166,248,245,84,129,93,110,42,46,
-  93,24,14,146,242,78,94,176,191,12,90,167,71,43,52,136,18,1,54,243,117,116,39,17,
-  116,253,20,134,222,153,199,32,127,156,223,35,66,59,119,196,77,85,129,189,146,100,164,130,
-  43,101,137,163,182,232,109,64,23,204,65,169,222,140,60,159,171,229,129,160,58,148,247,217,
-  10,231,64,251,108,123,163,118,71,184,128,33,28,14,91,127,89,193,58,13,229,141,42,1,
-  218,245,156,102,20,199,148,206,203,74,231,35,94,252,64,208,123,224,237,23,53,142,153,155,
-  88,11,251,88,175,209,72,242,79,157,233,48,239,169,28,55,105,181,138,148,161,32,105,87,
-  39,62,231,135,28,183,185,57,124,48,28,60,116,131,155,120,79,43,28,0,225,125,223,156,
-  147,139,80,102,122,130,208,111,248,171,159,104,66,112,187,41,9,47,113,141,12,79,94,117,
-  232,165,30,111,69,38,64,156,244,168,52,112,60,249,19,116,205,116,93,30,114,36,75,3,
-  42,98,102,190,116,213,188,245,156,65,25,83,167,104,5,178,125,63,206,124,209,38,2,164,
-  79,6,58,219,236,34,152,121,156,47,135,215,18,186,64,223,211,25,158,1,248,105,22,140,
-  223,34,184,43,81,189,121,131,186,20,109,48,204,21,49,224,142,199,57,20,142,208,221,185,
-  116,90,107,64,110,109,138,171,118,144,130,30,221,145,54,29,107,138,72,115,223,39,117,69,
-  95,160,40,246,214,78,105,130,48,51,153,229,252,14,199,204,41,149,69,238,33,74,156,190,
-  220,242,44,193,116,243,175,55,170,79,129,56,109,219,1,0,7,1,120,40,143,247,238,156,
-  109,34,80,203,248,13,57,180,126,75,31,255,31,213,49,225,152,96,17,90,56,51,115,128,
-  182,81,112,253,253,189,144,202,41,65,92,163,46,66,37,207,215,3,171,58,190,230,67,186,
-  54,83,140,152,50,170,45,6,159,242,125,38,157,130,171,11,150,3,194,82,120,100,112,182,
-  174,56,49,227,137,72,17,81,240,72,129,246,183,217,151,130,16,21,0,1,30,46,52,43,
-  36,42,39,40,43,33,27,28,33,40,27,44,37,37,22,25,25,8,3,255,255,165,152,9,
-  154,100,26,63,133,152,174,122,55,169,74,193,160,119,246,7,191,182,23,34,114,206,17,177,
-  208,189,152,153,66,138,170,13,21,4,111,238,186,129,231,187,149,10,40,114,0,168,174,105,
-  185,156,213,160,97,183,90,91,207,169,71,109,190,251,123,236,250,143,71,185,141,129,236,226,
-  30,226,23,92,137,57,77,72,245,162,39,94,172,156,244,200,139,219,219,205,239,115,26,202,
-  24,67,39,84,194,158,116,61,150,137,230,93,155,82,63,37,134,24,121,4,241,14,62,186,
-  244,178,110,54,182,86,120,157,207,66,8,146,125,49,60,118,248,227,248,57,13,141,205,203,
-  144,237,251,228,195,50,11,252,91,98,212,89,128,210,120,52,51,174,108,67,70,211,15,214,
-  72,37,130,59,189,226,92,226,172,232,147,89,225,140,31,198,70,148,230,154,215,57,70,54,
-  251,139,103,110,176,48,245,100,177,254,247,39,106,230,182,121,24,113,206,245,149,83,46,107,
-  116,195,112,102,37,243,163,171,167,162,156,251,236,22,0,1,27,46,55,46,41,41,39,41,
-  35,42,41,44,23,13,15,15,19,11,8,36,41,52,18,11,253,218,100,39,137,56,119,249,
-  93,42,30,32,115,158,168,140,197,164,94,71,85,231,81,135,153,214,151,164,40,191,159,95,
-  138,188,36,61,47,113,46,72,73,226,65,80,103,52,121,120,37,153,236,142,43,250,125,16,
-  65,106,72,250,234,60,187,171,197,205,225,140,237,220,250,237,52,80,200,229,137,174,0,202,
-  137,232,113,198,188,52,245,161,59,32,194,235,4,13,157,159,51,214,196,164,18,146,156,233,
-  64,150,78,74,91,168,241,208,154,7,136,13,240,117,224,5,11,21,35,62,171,181,71,10,
-  134,84,210,158,147,123,191,34,246,7,130,234,204,115,84,63,53,112,179,212,237,97,63,234,
-  44,224,140,87,172,128,12,40,74,136,98,221,43,5,1,22,93,167,228,158,207,134,148,243,
-  133,255,20,118,92,160,67,33,202,80,48,245,225,186,31,93,4,153,179,229,92,223,85,61,
-  109,111,182,204,72,188,152,32,80,145,83,193,206,193,26,232,87,97,65,135,113,203,77,195,
-  138,192,166,32,176,70,202,20,120,189,153,19,106,137,58,126,198,102,89,70,236,7,169,145,
-  215,168,55,29,184,134,101,100,252,248,178,154,188,53,186,13,185,55,81,153,57,248,51,166,
-  89,185,94,232,167,89,206,163,37,9,7,19,9,144,2,105,139,202,48,234,8,179,1,194,
-  72,247,86,26,169,99,67,97,110,221,161,56,134,124,184,97,129,35,175,248,168,11,234,55,
-  68,56,190,151,165,99,14,90,240,191,237,135,2,240,12,195,147,46,70,14,12,50,245,191,
-  244,152,71,175,95,159,24,195,104,239,218,0,223,202,195,2,216,57,190,86,219,232,21,230,
-  174,155,36,143,116,253,189,11,65,80,123,161,14,111,111,213,117,49,9,171,35,64,173,152,
-  129,155,248,209,212,142,79,185,10,88,107,155,240,147,7,172,192,89,163,137,211,218,148,148,
-  170,223,113,98,113,151,73,54,168,183,31,44,43,200,23,105,124,23,0,1,25,46,52,47,
-  51,62,57,47,31,20,22,24,31,23,28,17,13,5,9,26,45,39,27,7,5,253,192,17,
-  58,22,82,187,236,111,47,209,41,159,17,103,70,85,69,242,250,10,86,121,79,167,185,230,
-  95,245,169,50,8,250,102,83,191,77,251,69,12,146,90,202,155,49,253,15,208,34,46,222,
-  112,13,121,90,20,12,232,113,230,175,159,165,135,92,58,96,31,164,27,12,90,12,25,126,
-  5,82,152,152,111,191,130,134,246,106,195,133,106,99,20,97,19,64,99,48,94,222,65,112,
-  253,177,58,154,106,214,27,26,251,203,93,238,242,119,249,210,41,25,85,161,52,117,70,10,
-  214,104,31,44,221,162,27,215,183,219,108,96,126,22,61,189,250,245,157,37,99,61,121,114,
-  192,131,234,35,163,65,96,72,214,80,108,241,72,85,157,219,28,139,107,77,203,118,227,246,
-  209,29,76,232,154,230,18,138,163,228,245,180,66,3,31,85,164,78,228,124,3,15,78,83,
-  167,95,33,185,20,195,177,108,166,56,172,139,244,217,244,251,201,215,211,253,66,22,224,113,
-  110,225,192,87,206,99,115,33,184,161,14,67,95,218,216,248,71,67,11,78,218,242,108,0,
-  135,100,229,21,147,67,103,187,145,10,150,130,60,197,169,159,152,88,117,46,186,141,230,165,
-  98,77,118,181,252,142,122,134,192,174,172,139,36,137,88,6,109,138,239,211,27,232,103,8,
-  22,59,231,125,173,91,97,94,68,175,116,22,239,155,124,87,12,23,28,209,58,252,81,54,
-  154,185,196,61,54,12,126,118,95,95,78,119,48,58,22,86,123,54,220,134,45,1,130,253,
-  232,109,248,219,59,103,238,147,149,222,28,158,173,149,103,95,203,72,1,229,204,240,113,48,
-  218,29,208,102,251,230,18,167,114,97,70,252,13,248,58,98,251,194,104,105,107,212,83,99,
-  133,212,173,85,101,20,0,29,38,43,20,16,16,23,21,29,25,22,25,17,25,26,29,24,
-  18,35,39,40,22,138,186,19,110,230,254,38,101,85,82,126,105,102,151,117,106,140,172,149,
-  240,197,147,180,226,83,168,243,67,19,152,24,197,71,159,77,81,104,92,213,124,151,82,39,
-  65,113,36,24,244,231,108,222,201,89,197,207,145,244,179,89,107,165,61,95,166,45,115,84,
-  182,227,146,141,25,129,198,22,195,92,172,227,115,240,148,183,246,157,249,167,151,198,206,233,
-  74,184,145,62,247,111,180,36,79,169,106,66,105,56,5,24,52,163,243,158,17,160,166,49,
-  194,199,239,119,164,168,116,254,188,223,14,13,135,155,173,14,182,251,191,64,167,207,243,123,
-  29,163,110,252,204,23,186,183,191,207,1,65,90,2,68,58,140,196,217,135,29,27,67,112,
-  67,55,98,222,239,60,106,12,204,144,151,129,174,92,23,223,109,117,27,104,5,52,241,36,
-  176,39,70,218,93,5,236,233,113,33,68,16,43,17,56,149,219,99,212,171,160,62,175,250,
-  208,59,110,7,167,251,133,109,91,208,249,121,19,117,55,152,16,146,104,233,165,229,168,158,
-  140,143,214,249,124,137,40,84,22,18,39,201,225,239,158,76,215,155,248,214,26,127,167,32,
-  7,90,10,242,46,63,21,182,188,108,56,246,114,237,51,82,78,27,49,150,213,133,52,163,
-  166,113,180,165,109,69,175,108,4,249,235,128,193,173,147,242,56,250,79,146,176,89,215,141,
-  42,170,79,241,114,16,227,235,138,43,243,185,86,142,2,132,224,84,214,84,111,231,238,203,
-  117,222,168,9,108,29,35,231,7,165,235,114,45,57,31,131,127,214,145,106,244,155,226,9,
-  247,240,114,36,66,152,166,3,181,123,89,11,188,1,205,158,227,108,244,67,150,175,240,72,
-  223,93,39,9,53,94,42,161,10,68,34,142,193,112,92,158,166,9,62,133,39,15,13,221,
-  81,230,58,220,13,174,7,159,25,42,17,177,250,105,226,168,190,90,246,176,102,171,130,75,
-  238,129,137,62,46,11,59,250,102,50,92,181,200,160,236,133,75,146,175,97,42,215,13,251,
-  181,88,13,38,112,74,76,50,114,120,194,130,88,147,239,187,182,162,16,200,137,213,227,194,
-  156,106,126,81,183,111,253,183,78,171,135,20,19,99,145,233,162,219,173,194,15,50,112,209,
-  224,143,198,220,102,218,142,245,249,167,252,118,162,181,205,130,148,92,219,202,218,47,213,144,
-  241,209,230,75,176,141,100,82,188,143,35,79,119,191,198,216,183,206,33,231,184,128,127,179,
-  211,231,148,71,251,91,83,240,14,30,228,19,104,21,23,190,54,45,249,54,7,154,40,180,
-  207,10,28,55,36,228,159,0,122,167,235,194,44,194,73,190,161,159,97,29,154,48,166,140,
-  203,176,23,85,76,54,11,192,140,92,65,57,94,113,86,140,65,58,123,65,152,71,252,247,
-  140,141,136,30,89,97,0,19,0,1,42,52,56,14,24,44,43,30,6,13,21,24,17,6,
-  52,52,56,72,71,64,240,66,188,30,195,59,47,140,188,157,33,250,254,50,2,47,152,206,
-  202,242,234,237,63,220,243,5,202,148,218,40,2,104,203,242,246,53,111,115,201,156,228,172,
-  209,171,58,89,151,125,12,26,52,9,159,194,252,229,114,69,1,197,219,5,153,72,56,89,
-  143,172,140,9,97,24,235,206,122,179,170,54,43,214,148,113,119,40,38,16,208,98,192,40,
-  141,70,79,133,13,141,83,57,185,18,163,1,175,186,205,200,107,61,207,166,10,228,50,2,
-  216,18,229,107,185,5,230,168,0,83,255,169,74,200,121,47,72,157,250,90,246,189,153,77,
-  141,20,171,253,232,142,254,52,246,67,93,68,157,61,93,65,32,179,126,101,87,22,208,53,
-  104,249,148,93,236,192,200,9,36,7,132,129,100,174,65,88,33,12,8,209,141,53,9,57,
-  64,244,69,108,69,246,12,56,208,221,59,42,184,74,13,109,199,2,249,145,140,81,4,46,
-  180,185,167,118,234,60,0,178,129,83,141,53,43,189,42,114,153,53,105,188,139,128,31,203,
-  104,150,74,126,10,250,83,24,70,94,158,153,27,147,187,153,211,10,81,52,213,219,178,116,
-  151,118,197,82,152,129,14,105,224,209,154,72,24,19,157,155,163,10,250,100,96,181,124,24,
-  0,1,12,16,26,15,24,19,20,13,14,23,23,17,34,39,39,15,19,23,23,38,50,54,
-  40,66,56,32,143,170,164,184,49,81,232,214,63,35,206,179,94,198,156,2,105,2,221,226,
-  242,160,188,82,232,169,132,236,95,16,126,138,108,247,92,83,31,246,46,45,248,82,65,46,
-  141,208,178,78,191,10,23,62,86,30,158,206,252,47,69,98,179,8,65,245,149,7,254,56,
-  43,11,240,12,166,233,199,172,136,127,36,144,78,217,105,148,110,199,94,63,168,126,103,46,
-  15,102,33,27,130,15,101,156,107,160,209,239,69,132,212,24,154,172,130,47,228,170,207,218,
-  211,68,223,232,19,215,165,94,146,236,204,61,57,153,25,56,154,62,77,64,100,246,247,40,
-  238,30,122,46,117,230,161,231,223,72,164,40,166,45,17,183,149,190,82,137,177,56,234,76,
-  59,157,57,18,45,30,42,178,130,205,54,134,198,166,19,236,248,97,20,18,2,125,28,6,
-  199,77,69,246,121,54,66,243,149,77,166,245,48,161,54,40,197,81,167,60,193,105,37,218,
-  58,243,251,166,204,253,41,66,223,172,198,220,69,51,193,41,255,73,6,57,205,209,220,50,
-  245,139,188,93,60,12,102,84,206,120,17,142,124,162,35,154,180,12,145,124,216,34,55,223,
-  100,128,112,211,21,117,56,61,19,134,13,255,142,161,157,7,161,218,44,153,110,47,217,202,
-  210,19,155,136,255,4,106,38,230,210,143,111,50,171,200,37,199,112,196,106,127,118,20,0,
-  13,23,27,17,17,19,22,14,11,13,22,28,31,38,56,54,35,76,73,86,180,203,166,19,
-  4,3,70,33,4,230,178,30,48,38,206,152,32,184,9,132,195,107,214,23,243,232,61,85,
-  89,196,230,224,218,71,57,177,34,113,253,228,76,110,166,7,243,240,209,152,111,251,10,229,
-  181,236,226,158,170,4,188,100,218,165,14,22,60,157,243,226,200,145,66,105,134,194,195,222,
-  180,19,64,109,112,213,157,125,10,7,96,224,93,142,20,237,171,231,22,195,150,30,131,214,
-  174,19,45,163,238,109,245,226,7,142,3,66,66,231,196,91,66,223,168,215,145,242,31,224,
-  5,224,102,172,143,215,33,182,165,208,101,140,230,133,233,122,241,1,159,253,2,4,188,142,
-  70,167,22,121,92,212,216,172,48,61,128,124,232,84,22,108,32,62,151,107,83,138,216,242,
-  208,90,154,143,189,141,33,6,176,197,226,179,86,59,105,188,110,23,174,40,5,199,68,118,
-  35,54,9,154,254,121,52,216,90,225,231,100,203,19,122,200,218,223,202,152,187,83,141,144,
-  195,165,230,37,205,215,87,40,33,90,36,201,16,69,15,198,113,95,115,186,146,96,182,143,
-  123,144,49,145,49,186,220,77,186,158,89,93,60,95,29,177,147,163,105,243,22,96,71,138,
-  126,149,125,164,197,239,183,62,162,61,37,80,106,203,43,88,186,135,2,23,102,183,125,67,
-  59,18,95,45,27,2,116,201,61,131,1,138,97,160,108,64,103,252,35,55,187,188,144,172,
-  160,122,255,220,192,135,119,173,10,231,24,182,228,8,122,71,89,88,206,135,69,114,68,208,
-  26,237,161,92,136,104,115,61,201,249,33,250,109,143,1,113,87,150,161,155,156,174,155,131,
-  155,0,135,49,150,98,126,174,151,252,200,200,104,39,5,232,26,138,104,38,40,28,231,86,
-  50,145,81,82,105,240,212,218,174,40,153,116,206,185,244,169,1,245,29,135,70,90,10,95,
-  155,108,239,36,238,236,10,163,187,121,166,187,231,122,63,254,178,138,127,27,68,168,26,101,
-  6,98,233,204,75,148,132,126,47,92,42,117,31,226,171,147,62,70,133,133,136,244,99,113,
-  112,242,210,56,37,178,246,110,214,18,148,125,92,106,156,192,244,242,54,128,46,45,108,196,
-  4,165,131,111,225,121,89,170,49,193,192,120,147,0,253,116,125,179,11,147,151,209,150,50,
-  210,83,167,38,122,142,8,121,92,35,28,28,107,148,171,56,80,80,0,17,0,1,44,57,
-  59,30,43,55,48,52,72,64,37,36,36,38,5,22,28,27,8,255,255,165,29,66,144,176,
-  113,1,62,109,237,189,21,239,155,18,235,156,79,21,225,254,63,21,126,223,134,64,20,169,
-  122,36,162,166,149,129,93,201,236,232,237,236,28,192,242,242,243,209,117,220,49,162,229,181,
-  155,19,244,82,174,137,185,19,190,41,159,87,110,170,200,221,208,209,41,26,95,47,88,233,
-  254,230,249,237,101,229,185,70,186,214,217,213,226,138,141,63,164,227,210,230,204,75,145,52,
-  153,59,3,100,149,255,217,219,188,138,196,217,13,233,197,84,76,197,217,236,88,237,169,92,
-  174,208,206,207,28,212,45,167,128,185,31,138,21,61,166,41,239,209,182,178,99,46,243,41,
-  88,245,21,110,51,174,179,17,63,228,241,122,172,27,218,224,127,203,5,130,148,140,184,217,
-  169,177,24,222,217,215,31,88,142,99,94,32,163,77,238,132,48,209,186,240,78,30,140,133,
-  42,190,57,151,217,71,54,57,22,245,141,113,81,63,125,21,248,175,30,253,222,43,193,24,
-  233,141,81,30,71,127,2,88,204,193,154,77,143,89,166,111,111,89,23,18,0,1,31,60,
-  75,50,41,26,22,8,25,24,24,7,14,20,49,43,59,72,68,76,36,129,84,145,7,110,
-  180,204,250,158,193,88,80,37,39,88,255,118,204,10,83,15,28,228,62,206,72,171,57,176,
-  227,106,66,81,150,132,175,90,62,211,73,216,125,247,32,109,183,207,167,210,70,85,96,125,
-  80,168,115,118,3,71,67,189,184,95,240,173,193,208,31,198,33,183,237,35,93,96,94,90,
-  94,106,187,92,43,138,103,124,15,221,225,154,88,180,228,254,134,151,224,34,97,103,173,109,
-  249,127,229,204,162,187,131,240,123,191,142,252,17,160,166,157,128,201,169,217,113,160,18,115,
-  216,186,211,234,90,121,209,68,167,251,222,1,159,190,24,209,49,228,205,235,5,128,39,115,
-  198,80,203,145,211,196,154,111,140,62,139,153,135,46,121,64,173,54,28,170,101,74,190,54,
-  178,98,216,164,249,97,131,6,60,130,91,59,144,231,136,141,14,112,52,160,49,250,9,224,
-  43,175,9,197,123,190,211,237,66,62,104,245,187,35,64,148,11,197,165,203,174,220,29,255,
-  199,30,171,226,137,175,251,23,86,251,191,117,218,255,192,21,29,124,27,197,0,67,155,104,
-  183,152,230,167,124,202,180,202,188,42,115,250,35,246,226,230,7,212,26,247,91,10,198,118,
-  160,48,239,199,170,138,84,122,173,244,96,50,69,79,99,61,211,164,195,83,86,169,190,226,
-  176,77,13,219,12,87,26,77,77,227,101,48,224,255,42,5,91,32,200,140,0,104,251,74,
-  122,132,25,65,109,193,147,19,208,151,91,169,40,119,46,136,180,236,57,137,196,139,255,64,
-  75,209,251,159,153,154,36,185,152,113,76,212,155,250,111,76,13,107,202,178,47,129,172,189,
-  124,191,98,35,23,250,10,20,146,35,20,53,59,193,145,93,149,227,79,156,55,182,211,56,
-  98,108,197,244,255,244,73,96,68,36,126,129,99,19,0,3,160,203,182,193,11,205,42,203,
-  132,152,163,137,85,15,151,168,192,244,213,101,223,74,39,55,250,9,180,167,202,102,108,62,
-  255,150,17,226,69,30,135,221,123,39,182,176,124,193,41,182,111,86,5,125,63,72,42,228,
-  181,108,32,62,86,100,145,208,252,101,115,205,225,210,59,25,114,8,112,130,33,226,89,36,
-  179,10,145,233,188,110,118,252,209,68,210,204,235,76,202,43,80,61,248,194,173,71,16,47,
-  155,181,250,42,148,102,43,91,19,52,176,56,27,179,221,26,235,129,230,254,44,71,15,237,
-  125,37,237,32,169,223,138,145,36,132,129,196,217,76,148,170,202,115,63,86,54,192,172,219,
-  255,255,40,213,254,139,0,22,0,16,35,48,39,33,50,49,39,14,25,31,34,26,37,35,
-  30,9,10,17,35,55,49,235,11,39,105,3,78,216,165,88,231,20,37,254,158,23,88,236,
-  142,116,42,45,191,50,117,253,213,23,122,206,146,57,72,194,206,27,183,105,56,96,227,77,
-  190,9,254,85,34,247,156,134,55,166,140,2,83,228,171,50,101,123,68,28,84,186,43,91,
-  231,124,149,10,215,166,120,74,121,139,137,42,7,92,94,33,225,227,109,222,182,171,250,239,
-  225,103,71,29,158,16,32,248,173,85,252,240,185,123,51,213,165,37,197,0,38,49,126,116,
-  180,4,209,235,206,20,117,139,117,33,117,140,30,175,199,133,40,38,139,23,63,166,155,80,
-  125,246,113,151,177,71,231,134,40,107,108,191,130,208,74,141,76,7,137,190,8,216,173,228,
-  154,26,92,89,151,67,148,191,52,171,128,49,227,183,203,65,219,149,103,221,106,102,146,38,
-  210,74,107,252,70,247,177,102,156,198,198,181,103,194,196,76,95,81,225,187,191,43,198,230,
-  5,135,55,247,50,106,5,255,169,11,205,216,175,189,183,203,237,40,221,104,215,136,231,10,
-  236,160,87,120,107,237,46,189,57,240,13,205,110,149,12,231,167,141,145,83,111,81,62,106,
-  26,55,113,204,246,30,245,165,185,158,153,164,127,90,22,142,75,86,61,72,169,204,240,159,
-  38,37,236,234,36,157,0,123,182,128,96,202,215,187,184,134,136,249,187,114,16,220,207,5,
-  91,246,12,1,248,217,201,207,207,154,175,5,232,204,224,235,232,253,187,147,220,176,243,77,
-  117,205,202,104,44,135,112,51,45,114,167,181,78,67,127,114,208,100,195,164,93,97,3,200,
-  112,3,54,247,212,58,254,219,27,13,153,125,34,134,94,245,5,186,36,214,179,172,217,139,
-  144,46,152,158,189,188,219,97,175,124,39,119,83,171,225,90,135,133,125,95,115,212,53,221,
-  95,66,42,85,146,156,142,30,106,93,121,43,50,3,9,128,93,224,28,106,15,169,110,166,
-  78,169,109,109,198,28,248,114,238,195,216,181,152,35,36,163,246,244,51,22,0,147,54,77,
-  207,228,218,122,208,171,19,169,18,3,107,167,227,35,232,103,59,142,70,13,84,69,62,108,
-  30,99,142,225,195,229,183,249,32,22,193,186,59,77,97,155,29,208,241,26,209,69,161,160,
-  112,19,0,19,0,1,30,46,55,43,56,51,39,31,30,43,27,29,11,12,23,33,68,59,
-  53,13,251,226,84,92,73,164,52,186,101,116,145,79,14,156,103,117,248,73,55,151,217,137,
-  189,23,186,62,205,212,246,65,90,50,253,82,234,186,135,202,248,130,193,54,137,215,90,85,
-  163,150,202,31,17,159,94,125,77,54,94,71,137,44,86,9,186,126,228,211,131,62,31,230,
-  59,170,190,244,17,164,183,124,94,128,217,2,161,115,135,89,137,234,170,214,59,41,33,221,
-  232,103,123,214,60,11,170,7,211,149,244,92,92,44,123,184,141,240,208,42,53,63,89,227,
-  240,120,174,179,242,106,251,144,22,84,5,189,184,187,112,37,4,21,62,24,87,43,59,169,
-  148,184,93,149,138,121,226,49,189,114,101,210,160,92,174,99,19,198,54,86,140,84,104,142,
-  180,238,17,161,188,178,34,195,122,95,56,27,36,195,98,147,111,138,122,222,227,136,182,72,
-  153,27,131,252,54,117,126,222,48,156,20,198,43,105,48,152,242,59,80,106,25,76,233,163,
-  230,99,24,156,182,255,219,175,52,233,233,229,153,113,146,151,7,9,32,4,64,227,84,73,
-  147,88,160,168,247,40,81,163,51,58,89,169,32,246,78,56,255,149,29,22,240,41,1,55,
-  129,150,192,169,64,96,231,202,161,218,131,179,232,194,80,214,133,69,154,139,19,0,1,4,
-  10,53,50,66,50,63,45,18,4,53,79,78,29,5,6,11,10,47,40,72,45,237,252,138,
-  153,177,26,103,90,122,130,29,250,220,10,121,183,85,112,57,172,75,119,247,5,252,209,250,
-  217,112,86,232,104,206,186,146,126,245,205,47,177,56,246,178,35,135,99,98,71,69,152,67,
-  127,49,208,31,128,133,94,113,32,67,155,209,103,22,102,186,36,181,91,131,187,228,240,208,
-  26,229,146,113,131,214,47,183,187,31,178,249,120,208,40,25,2,154,103,200,63,81,108,224,
-  186,100,3,157,76,108,94,76,73,95,89,75,102,150,99,189,191,91,122,35,229,19,228,138,
-  197,126,66,207,80,220,22,155,249,228,244,243,32,69,237,18,109,46,27,155,54,131,228,148,
-  76,16,48,152,243,46,14,70,110,252,183,159,189,184,118,117,22,102,178,218,158,228,75,85,
-  213,18,149,170,25,17,240,139,206,184,55,163,136,171,155,88,193,168,176,129,245,93,197,132,
-  228,128,179,252,251,100,231,68,174,2,96,128,172,183,75,121,87,145,55,104,214,14,92,254,
-  190,85,96,55,240,60,75,11,108,57,162,41,212,194,94,149,144,58,15,204,113,88,194,76,
-  228,253,161,223,154,136,48,12,129,241,235,94,120,79,63,111,140,125,192,153,136,25,61,34,
-  137,109,151,68,40,143,65,39,129,158,126,147,188,252,71,82,76,162,94,96,166,41,152,73,
-  42,248,192,206,191,153,147,208,134,221,54,204,119,71,127,60,69,1,125,37,186,187,82,205,
-  51,214,239,179,104,26,14,70,204,83,11,182,47,28,252,97,168,110,25,112,222,77,83,206,
-  109,39,28,126,234,80,195,60,143,223,222,89,246,27,207,177,172,101,54,4,60,225,59,33,
-  204,202,225,178,17,225,52,40,112,210,58,224,95,144,244,44,134,75,119,155,132,95,101,136,
-  150,66,157,185,233,255,255,38,134,221,32,128,22,0,1,39,56,75,71,74,67,37,27,30,
-  33,38,23,14,8,27,31,26,14,10,11,12,17,13,246,66,182,153,136,193,244,34,99,26,
-  189,139,6,68,69,125,84,110,144,26,152,32,234,167,56,242,152,58,143,244,56,254,117,64,
-  55,160,160,89,78,178,183,30,0,108,144,200,41,248,150,101,169,103,42,233,253,179,18,67,
-  229,92,174,51,157,145,17,38,197,222,82,235,224,6,230,91,154,208,53,17,146,225,68,231,
-  144,186,3,224,25,89,63,253,88,238,32,158,94,187,126,184,99,145,132,155,250,170,234,168,
-  138,190,231,135,178,41,178,155,231,21,212,66,63,126,166,8,196,82,84,253,247,159,62,111,
-  0,142,149,168,187,5,13,105,27,69,198,75,127,201,117,176,24,60,73,237,51,216,192,201,
-  30,28,137,64,10,121,4,114,31,52,76,240,4,111,202,104,174,159,24,110,229,158,152,150,
-  31,185,242,181,247,58,118,208,176,58,163,133,250,182,15,241,56,227,233,137,110,47,229,113,
-  211,210,114,34,138,34,68,102,180,127,89,198,138,111,238,196,107,95,26,144,36,180,157,113,
-  129,141,0,92,54,160,193,147,18,101,111,86,223,114,56,228,169,106,133,60,70,187,169,253,
-  191,27,182,44,32,189,13,11,55,106,214,201,30,147,163,174,95,224,24,215,170,44,210,4,
-  255,223,251,254,126,70,56,91,117,232,238,197,14,63,139,203,53,171,207,226,112,112,148,114,
-  219,10,214,184,65,10,19,48,237,211,165,56,6,243,197,241,21,203,185,138,11,104,103,7,
-  53,186,39,30,43,207,3,81,124,99,94,133,48,118,7,25,118,7,199,197,29,55,162,143,
-  214,189,145,235,18,223,101,34,246,222,34,105,158,54,245,248,225,232,202,166,202,221,139,227,
-  223,192,248,34,130,223,92,109,202,169,28,110,138,198,247,251,225,194,129,120,137,73,108,174,
-  52,220,40,244,236,102,234,44,127,241,160,54,60,9,171,104,61,35,104,180,61,160,137,144,
-  3,44,24,5,199,141,118,87,202,5,216,60,153,51,197,66,82,151,111,166,140,77,103,84,
-  239,196,255,74,249,119,87,73,56,192,92,64,112,177,37,180,57,101,172,157,44,76,243,143,
-  180,97,198,96,131,31,45,167,14,248,66,144,194,253,206,186,143,9,159,234,204,251,208,161,
-  101,17,104,193,95,1,32,177,243,170,97,148,177,151,246,59,63,249,14,243,149,14,55,147,
-  205,168,147,209,228,154,247,189,172,73,185,131,111,196,41,161,222,180,13,225,214,204,235,50,
-  148,153,125,5,63,197,61,56,129,175,95,14,36,113,116,211,64,61,206,47,43,125,235,255,
-  0,3,99,194,209,157,64,157,30,101,92,162,61,180,115,136,205,23,108,38,154,166,205,227,
-  17,35,240,64,241,174,48,97,187,129,82,168,211,81,82,54,222,97,71,133,203,37,212,255,
-  250,78,212,218,118,228,20,0,1,23,33,51,28,21,8,20,22,37,27,25,19,24,25,26,
-  27,26,49,101,103,62,245,233,57,179,146,11,127,107,126,171,95,163,162,170,67,107,156,219,
-  192,58,62,178,235,125,138,166,217,107,90,87,211,117,82,244,151,190,9,61,104,86,61,32,
-  107,95,143,55,114,199,160,213,250,166,88,191,164,165,133,185,159,186,24,189,120,175,111,215,
-  227,39,251,224,201,132,159,186,54,208,245,123,228,50,194,49,247,121,237,186,63,195,49,132,
-  87,108,145,70,76,35,223,201,83,184,102,144,188,254,85,196,223,8,153,214,163,75,151,186,
-  245,93,55,1,153,31,129,113,228,36,17,192,199,69,36,0,235,167,174,183,145,247,249,162,
-  102,113,145,212,113,138,89,114,59,174,16,8,119,165,157,253,170,59,47,94,102,123,89,24,
-  96,209,239,206,252,52,41,43,226,136,246,239,102,32,237,52,131,188,80,234,232,23,92,78,
-  149,21,143,239,175,162,151,198,215,206,103,227,250,160,247,255,197,35,245,84,254,24,207,245,
-  73,83,216,175,155,125,48,4,170,126,134,96,58,198,230,234,147,73,175,53,49,178,192,159,
-  49,75,177,175,45,25,102,67,194,118,226,156,200,114,49,98,117,230,67,80,215,59,103,130,
-  17,219,253,113,69,180,17,166,59,144,47,14,72,238,101,205,12,252,84,4,177,8,29,228,
-  69,189,202,29,139,25,147,210,30,187,212,111,54,8,68,72,64,70,109,185,131,167,87,102,
-  106,234,51,85,105,84,167,97,1,27,218,68,223,61,106,245,42,62,166,3,53,237,26,38,
-  176,73,138,158,45,162,152,191,188,153,210,61,9,231,119,179,159,25,182,52,65,195,237,10,
-  101,88,182,77,62,139,140,183,234,100,98,236,218,48,237,131,85,126,177,198,175,132,199,40,
-  26,8,210,78,131,13,154,137,212,93,121,110,228,173,196,179,204,31,199,171,107,244,195,107,
-  7,237,48,179,197,9,95,103,46,176,241,156,139,184,170,91,254,248,189,23,244,159,24,114,
-  245,141,244,253,3,252,33,237,55,202,113,88,254,24,43,70,15,98,133,23,254,234,36,43,
-  127,128,185,72,195,219,225,76,160,23,220,219,66,29,191,199,105,150,203,244,181,241,41,63,
-  188,92,224,138,29,132,158,231,5,13,203,85,76,16,138,99,6,22,22,181,34,213,193,151,
-  58,226,30,14,146,72,15,208,166,17,67,239,155,85,1,97,47,151,109,10,35,66,78,80,
-  249,216,57,223,28,249,144,115,159,51,25,225,102,16,253,90,50,172,141,82,130,163,76,227,
-  203,190,46,4,191,124,218,242,119,211,246,52,195,80,251,141,83,254,225,204,177,36,127,168,
-  236,118,51,189,96,220,125,88,148,155,58,161,41,76,215,224,191,233,123,148,8,201,252,171,
-  33,158,161,127,170,244,241,1,87,161,15,127,60,39,49,61,95,234,25,60,53,2,192,28,
-  91,137,40,155,243,191,0,195,97,222,102,164,121,175,198,5,21,30,60,107,51,38,128,198,
-  20,142,214,47,96,194,46,61,67,232,215,3,124,240,242,25,77,240,48,152,226,48,25,164,
-  107,255,246,68,36,106,233,18,0,1,50,60,69,24,48,47,47,16,12,8,10,15,55,76,
-  67,26,13,44,42,18,7,9,6,177,211,165,224,161,13,84,236,104,249,108,119,88,27,95,
-  197,188,38,125,241,239,115,30,46,217,39,249,42,41,98,21,167,68,174,20,145,37,250,226,
-  158,108,199,166,13,103,157,128,81,117,35,71,43,64,99,239,243,238,103,195,200,118,239,18,
-  227,20,103,171,132,178,145,49,172,210,28,194,198,8,240,130,16,8,7,249,201,60,186,42,
-  223,29,85,15,184,43,9,252,215,160,71,255,70,148,66,112,207,123,73,6,247,212,63,249,
-  221,77,230,203,254,1,235,213,7,72,157,3,105,167,227,209,197,124,45,106,6,155,60,113,
-  53,233,200,217,231,60,88,184,175,157,207,39,32,213,75,131,22,72,178,61,82,76,175,236,
-  218,127,224,6,67,252,190,10,194,0,55,52,92,41,148,223,103,239,124,19,233,137,154,141,
-  196,218,240,94,238,28,15,65,1,91,243,10,96,213,184,165,212,17,229,221,120,233,80,73,
-  144,51,222,181,89,234,90,218,198,69,215,247,243,43,15,209,110,255,236,143,80,219,69,112,
-  106,247,133,145,140,223,84,168,177,110,151,212,19,69,170,152,211,25,245,200,175,207,173,185,
-  67,29,73,13,35,253,215,56,11,44,141,104,179,38,149,167,88,55,152,94,254,70,126,184,
-  86,63,176,168,116,85,68,68,168,110,187,254,157,124,17,210,237,32,25,83,66,103,64,41,
-  110,168,212,112,162,111,230,56,89,107,66,6,148,216,78,94,121,131,149,242,114,207,199,91,
-  77,125,229,126,72,1,175,131,206,89,49,49,90,154,94,103,137,185,164,174,103,191,67,84,
-  107,249,206,170,187,220,142,193,99,126,7,36,132,176,246,182,216,147,215,14,230,40,18,126,
-  190,17,44,16,3,91,69,24,117,14,128,0,202,239,216,191,51,28,47,159,97,122,59,78,
-  161,172,99,73,167,180,230,237,78,255,184,17,155,63,222,154,143,48,150,74,84,13,157,196,
-  43,146,177,132,205,66,88,183,24,69,226,48,142,63,251,132,10,17,224,63,22,0,1,37,
-  42,66,36,53,34,34,18,22,16,32,24,22,12,14,34,30,28,10,32,63,63,34,244,36,
-  232,34,172,181,222,133,54,251,131,99,244,151,47,182,53,51,111,243,211,96,30,0,116,193,
-  36,234,80,210,72,189,155,109,56,169,147,26,211,121,190,85,228,218,76,194,28,192,83,110,
-  150,10,228,16,70,252,31,14,10,197,216,55,141,152,169,59,247,30,140,249,108,150,166,65,
-  227,195,5,131,198,149,213,209,17,249,111,185,162,141,253,167,50,222,114,162,49,228,191,110,
-  5,251,205,114,155,163,37,122,132,223,71,240,89,119,207,87,85,25,177,39,32,21,221,66,
-  246,229,248,235,238,98,70,100,194,251,88,103,227,13,182,219,49,88,230,168,70,137,30,12,
-  61,123,147,150,117,121,93,62,88,45,204,135,185,134,182,248,98,116,2,207,143,177,227,30,
-  73,45,69,237,30,254,164,44,1,26,70,69,113,217,155,233,248,86,252,83,29,141,45,181,
-  248,117,59,201,64,221,118,198,229,0,56,134,25,247,145,182,238,184,194,119,184,95,42,140,
-  7,127,69,188,200,162,238,90,168,144,249,136,227,172,181,108,129,207,109,219,238,21,112,154,
-  161,235,63,150,108,73,170,166,75,98,187,9,45,58,231,217,79,253,132,7,114,104,33,10,
-  147,198,204,201,248,10,227,85,17,56,131,253,138,25,184,50,92,118,135,50,149,135,143,226,
-  143,205,144,110,63,138,248,237,227,5,116,249,26,204,86,85,159,49,78,251,186,174,226,183,
-  136,26,48,247,236,90,153,175,240,105,158,238,254,12,228,73,220,52,195,44,137,152,26,222,
-  201,59,161,0,55,11,101,234,46,187,91,237,113,15,116,32,57,90,250,159,253,208,101,49,
-  148,16,17,208,58,112,128,157,202,225,90,19,190,29,69,220,68,58,209,230,76,165,231,79,
-  130,110,192,101,229,54,38,173,243,222,5,141,249,138,81,153,154,147,237,198,250,145,160,25,
-  222,17,65,75,173,129,121,74,146,50,81,208,190,203,116,127,195,137,159,215,64,100,226,233,
-  45,66,106,179,12,47,98,187,190,67,89,194,43,121,43,0,7,28,61,184,173,35,192,94,
-  56,160,183,12,104,25,183,4,178,73,22,85,220,216,203,91,54,233,119,42,166,171,197,149,
-  248,224,205,227,247,207,203,104,197,199,93,19,134,87,188,245,125,3,204,12,203,35,174,255,
-  255,243,190,206,157,208,64,13,0,1,21,43,67,52,37,20,26,33,50,55,112,106,98,28,
-  255,133,19,208,79,129,219,2,67,113,151,111,100,135,21,72,36,51,93,157,8,69,76,63,
-  185,108,246,64,117,24,112,199,213,244,248,1,73,41,212,104,145,210,122,22,202,87,56,173,
-  108,202,233,238,145,206,215,169,229,202,24,95,247,112,210,96,202,174,128,136,186,159,220,252,
-  6,59,154,94,150,132,100,145,98,254,205,112,207,21,87,97,6,198,133,26,246,200,172,183,
-  219,176,8,246,97,149,245,148,178,26,160,55,35,206,144,124,192,215,194,133,13,132,68,239,
-  164,43,66,87,86,104,34,130,53,23,245,0,235,193,155,51,108,152,244,55,239,168,118,159,
-  172,154,34,16,92,254,223,144,163,116,224,66,9,140,128,101,126,204,57,123,127,163,84,29,
-  251,156,5,207,160,208,209,211,66,70,205,238,226,147,107,180,251,70,202,222,13,138,86,31,
-  205,69,218,250,249,51,253,251,227,172,237,104,72,131,23,7,106,121,164,36,136,95,172,210,
-  70,131,187,205,20,137,19,22,184,38,46,6,241,160,6,13,173,184,156,92,21,75,6,243,
-  4,139,6,23,28,21,213,20,248,89,166,18,148,32,232,85,77,13,221,35,182,210,84,182,
-  37,122,57,177,135,157,119,230,45,253,166,255,118,211,221,19,177,137,180,127,177,220,123,79,
-  242,53,27,163,255,253,88,47,153,177,0,20,0,1,0,5,19,62,64,56,13,17,16,23,
-  27,65,71,74,33,49,47,60,33,21,3,245,203,101,121,59,144,183,196,174,196,20,85,213,
-  169,79,231,21,69,151,24,114,216,21,1,152,141,156,35,58,119,129,216,2,58,60,202,72,
-  110,31,180,228,0,69,210,177,241,117,234,1,6,164,130,12,230,115,143,210,24,196,53,93,
-  113,231,130,123,210,186,68,8,22,111,140,185,25,92,132,72,111,183,40,2,196,84,200,67,
-  103,66,108,61,215,61,184,101,41,251,114,102,129,164,25,103,61,200,106,188,37,138,213,144,
-  149,162,30,229,14,113,66,111,165,200,148,132,43,198,171,125,169,199,19,237,16,194,239,93,
-  16,14,102,159,204,168,76,43,34,137,194,75,140,169,186,100,119,255,56,143,121,210,210,16,
-  161,5,90,188,172,84,36,104,181,86,225,238,116,222,241,248,66,108,179,51,55,60,44,12,
-  252,252,44,202,149,125,70,10,103,163,164,73,209,201,2,255,213,121,23,155,41,248,196,61,
-  140,244,153,218,86,249,185,16,255,240,238,174,2,133,107,221,29,185,218,173,18,50,157,3,
-  44,171,244,195,38,21,113,27,57,104,78,4,51,133,10,39,192,0,96,216,101,166,66,154,
-  39,149,14,126,5,210,246,245,222,3,231,217,46,158,254,199,120,238,249,233,182,80,127,51,
-  97,223,219,80,39,143,114,17,34,188,50,246,126,48,64,243,22,249,7,228,51,233,85,13,
-  134,80,36,208,10,125,204,108,44,42,215,141,96,239,197,152,94,146,69,59,166,85,186,235,
-  26,86,192,163,231,242,188,103,94,34,113,67,50,14,185,142,55,133,3,20,135,124,236,241,
-  59,231,199,210,191,191,11,28,186,176,156,14,210,61,162,210,131,152,179,68,38,87,167,180,
-  147,183,116,138,234,27,19,9,60,64,125,27,118,108,119,102,53,78,191,92,114,211,36,10,
-  213,121,195,178,191,198,165,245,24,21,2,107,2,185,109,128,254,32,13,68,202,113,180,229,
-  84,85,43,210,126,38,90,11,45,198,241,82,173,57,39,189,50,57,213,162,45,250,188,201,
-  74,249,255,252,91,78,255,254,180,22,30,201,84,13,0,1,6,10,57,52,66,38,40,27,
-  34,30,80,56,124,71,102,78,43,1,17,219,23,159,251,64,228,197,32,214,218,244,146,43,
-  131,57,128,217,179,92,57,116,103,87,165,98,214,113,65,18,229,133,152,149,229,9,247,89,
-  251,217,157,48,208,90,216,192,58,121,48,228,46,244,73,181,36,206,174,77,37,144,235,156,
-  184,100,160,64,100,129,203,18,27,104,50,43,68,113,20,100,36,192,227,7,85,22,69,56,
-  69,227,23,221,17,83,246,1,76,176,214,155,23,16,128,48,78,34,163,252,136,100,140,95,
-  186,129,46,117,59,77,96,167,108,32,173,103,98,100,100,58,14,219,157,233,213,135,107,57,
-  94,226,212,255,28,160,242,136,42,243,8,71,202,165,222,212,96,149,127,187,134,93,238,205,
-  192,19,129,98,49,16,89,148,7,44,226,38,239,194,51,8,51,178,71,255,195,171,23,189,
-  125,182,194,22,207,107,99,8,36,134,231,120,4,167,34,218,113,102,168,2,18,154,236,31,
-  122,43,17,203,34,120,79,90,55,227,157,74,119,226,238,34,181,145,229,106,253,14,53,77,
-  126,26,10,70,205,112,35,160,67,26,2,148,113,155,226,142,0,215,161,240,36,129,63,19,
-  10,238,193,199,151,249,27,39,204,67,126,15,125,252,199,240,165,193,123,214,254,39,178,98,
-  117,87,4,4,106,110,242,151,117,2,18,209,127,227,131,9,144,65,31,66,11,225,11,210,
-  190,132,224,250,47,81,130,79,43,52,143,196,204,84,170,201,102,197,78,203,62,59,209,252,
-  39,171,89,55,93,164,172,250,237,47,174,124,17,216,157,228,70,173,146,236,215,103,58,110,
-  210,147,113,97,205,69,215,53,182,45,209,82,36,108,253,11,220,172,15,57,137,42,0,159,
-  140,201,157,103,129,44,159,54,70,111,186,221,132,41,91,79,20,207,193,153,53,2,124,120,
-  72,120,249,190,43,128,190,153,5,249,251,114,194,93,229,242,223,245,253,201,255,251,145,118,
-  221,138,13,0,1,48,76,107,66,56,38,67,64,53,65,56,56,6,2,33,50,64,83,251,
-  187,149,193,135,23,131,86,97,64,90,62,59,238,155,66,173,30,172,239,49,252,172,154,227,
-  253,100,83,57,248,244,143,44,205,222,13,143,253,119,62,140,245,202,88,77,50,237,91,32,
-  209,230,199,183,111,179,68,51,151,56,241,210,16,188,144,60,84,75,74,19,183,187,139,50,
-  75,181,105,164,245,7,184,253,15,229,138,125,191,28,236,69,170,223,86,183,110,116,17,84,
-  161,26,238,119,230,89,176,63,182,247,118,109,109,169,197,42,181,123,181,157,72,219,162,191,
-  125,130,253,34,247,157,11,40,183,88,228,49,179,55,11,149,41,125,30,110,36,19,117,243,
-  75,48,67,58,111,53,42,127,24,21,27,29,90,72,7,178,214,22,59,168,106,169,7,78,
-  163,109,187,29,49,155,183,219,81,16,99,48,183,48,84,8,71,208,101,175,42,221,208,68,
-  186,158,91,20,184,246,233,161,204,146,164,7,239,95,136,19,39,11,228,104,73,124,157,227,
-  179,64,213,187,49,156,106,91,140,32,61,191,211,80,133,249,146,11,114,178,9,80,49,239,
-  236,119,209,6,158,228,9,77,253,119,35,244,119,148,168,74,105,25,170,244,127,218,84,30,
-  241,31,169,33,171,82,38,254,132,14,70,54,177,24,24,221,83,175,94,64,144,91,40,173,
-  105,246,11,27,158,21,1,50,59,201,95,152,118,119,24,247,237,211,154,240,244,9,2,104,
-  98,254,211,42,2,30,3,212,152,226,159,253,12,210,82,168,101,19,255,243,77,249,202,49,
-  9,0,8,55,59,94,47,47,5,4,25,104,111,232,53,164,101,205,249,22,140,181,150,194,
-  169,188,28,45,183,63,242,226,39,13,254,183,131,104,157,223,147,26,145,10,213,23,119,144,
-  97,226,48,130,255,208,99,184,90,119,20,184,174,93,246,242,81,199,241,130,77,88,69,170,
-  204,197,180,104,203,244,113,103,219,214,162,63,220,132,238,233,167,58,57,89,127,185,65,31,
-  1,97,230,3,103,34,32,205,103,234,255,99,20,99,46,59,219,51,180,175,77,120,240,74,
-  107,33,97,245,205,48,12,245,246,202,19,253,134,22,104,105,66,97,230,90,148,195,217,163,
-  159,139,232,167,123,137,208,148,21,139,152,128,127,235,126,113,214,155,182,200,121,228,164,213,
-  133,115,80,252,199,190,105,34,115,206,214,240,120,35,42,24,175,210,136,113,191,136,38,44,
-  193,209,110,7,95,118,27,240,148,8,141,207,55,116,104,105,16,107,163,17,76,113,245,33,
-  41,100,15,130,9,113,89,175,200,126,158,13,107,74,17,148,244,182,128,75,85,116,71,79,
-  153,234,83,229,112,18,173,89,175,106,176,186,210,42,182,206,56,27,101,255,158,40,57,142,
-  133,227,248,185,4,33,212,166,132,87,74,73,206,140,213,167,57,228,113,101,75,150,235,0,
-  132,238,212,10,61,86,160,69,32,71,165,133,225,136,132,2,97,161,233,77,227,177,142,4,
-  63,181,106,123,48,245,136,173,243,65,208,65,133,140,12,53,198,16,79,211,227,39,202,123,
-  91,123,134,87,174,132,99,173,146,201,127,91,186,68,170,133,30,20,151,18,76,211,101,236,
-  224,220,36,175,74,57,19,230,251,104,215,47,32,32,239,61,166,107,146,85,179,88,153,145,
-  139,58,191,204,114,14,151,110,253,3,132,112,160,0,163,102,76,57,230,136,149,227,117,185,
-  33,146,199,228,241,191,122,202,200,242,51,133,87,20,0,1,29,33,39,14,13,12,11,30,
-  25,44,25,38,16,43,31,36,45,78,96,66,29,249,233,63,91,148,241,52,145,126,231,220,
-  154,197,195,79,217,36,139,30,83,9,209,241,178,48,119,43,112,116,226,197,2,141,102,34,
-  216,230,207,40,123,180,164,252,29,77,91,20,207,197,111,180,228,251,230,48,93,73,248,158,
-  194,203,51,37,23,41,100,136,1,55,47,199,43,8,70,103,89,54,214,71,223,58,177,3,
-  48,196,145,152,243,165,59,76,24,184,156,34,82,46,9,194,38,218,199,128,157,248,212,194,
-  185,193,5,191,120,94,83,73,93,120,216,34,218,66,29,244,215,153,221,47,238,38,11,97,
-  62,219,110,136,108,4,113,185,94,222,189,199,64,25,171,165,196,169,216,155,246,180,84,69,
-  207,64,107,83,208,88,202,35,97,52,250,233,210,129,116,214,110,126,237,154,120,108,191,70,
-  247,186,105,23,82,168,181,19,214,249,106,28,197,222,194,76,154,167,161,82,1,192,158,207,
-  82,74,2,63,165,156,203,39,147,217,24,245,41,29,197,30,225,125,51,44,245,85,225,166,
-  187,118,46,58,189,115,107,129,23,34,189,253,251,46,133,226,144,25,246,212,184,115,31,2,
-  65,116,115,34,192,57,57,23,0,1,3,45,45,48,16,18,21,21,29,27,33,25,25,37,
-  51,43,20,5,18,29,29,59,54,50,248,9,232,200,125,119,84,182,149,114,23,84,28,229,
-  77,162,144,171,201,40,133,90,91,193,126,230,14,156,146,140,8,60,17,158,106,225,251,29,
-  19,128,179,213,184,252,186,151,245,184,77,248,135,195,142,233,162,131,159,34,241,65,240,157,
-  103,220,9,235,91,133,15,104,120,120,86,215,132,7,220,197,52,120,193,156,132,40,121,205,
-  67,73,11,81,7,215,242,253,83,133,249,87,203,164,79,122,142,208,20,213,132,91,243,14,
-  253,68,91,56,218,238,5,5,184,19,199,102,188,51,58,57,13,248,208,157,59,123,98,98,
-  183,146,95,47,17,23,57,255,221,78,97,55,114,111,59,96,229,46,41,37,89,162,229,208,
-  182,63,22,212,235,106,202,39,72,252,246,204,95,190,207,245,217,42,45,53,20,192,149,61,
-  215,115,81,135,179,234,52,46,177,209,242,225,142,73,0,236,72,139,27,76,190,107,170,176,
-  66,66,95,101,79,120,52,133,83,197,31,217,230,100,251,239,183,79,116,224,29,12,0,1,
-  38,45,45,32,31,69,74,111,74,78,61,66,29,251,133,35,101,77,15,20,167,194,99,142,
-  78,95,27,94,154,12,228,120,187,169,100,33,3,169,37,94,138,1,53,63,20,80,167,108,
-  43,177,196,48,208,57,125,130,158,57,109,176,192,131,77,85,128,225,22,115,38,133,143,231,
-  155,220,191,86,34,57,230,217,239,192,88,81,2,41,244,244,115,242,172,124,83,207,86,18,
-  5,52,243,115,120,236,78,207,33,78,138,235,186,128,148,3,128,1,71,131,231,79,102,15,
-  241,206,20,200,197,28,192,113,206,109,230,101,218,91,177,106,31,139,145,236,131,158,243,174,
-  104,187,119,82,13,241,108,69,31,226,94,139,132,243,207,40,25,79,111,62,218,104,232,92,
-  237,156,82,133,250,38,192,184,179,23,46,49,55,135,134,73,163,46,99,209,119,20,0,1,
-  30,33,41,14,19,12,14,24,43,39,33,18,35,43,74,63,46,21,46,57,45,11,255,255,
-  165,152,9,154,100,26,63,130,114,7,203,191,120,192,209,227,55,203,236,203,146,95,14,226,
-  165,124,164,193,218,27,250,94,57,42,91,124,45,38,250,43,197,148,186,33,184,33,70,129,
-  183,59,88,40,28,102,245,76,83,162,242,163,118,190,120,125,162,104,201,178,149,24,169,72,
-  179,52,141,197,129,156,14,39,68,208,11,244,101,95,145,96,17,7,172,143,27,80,34,135,
-  97,201,207,151,22,202,54,104,222,203,103,95,249,190,203,46,27,229,197,43,18,93,134,71,
-  206,162,200,11,85,234,22,220,47,111,173,22,89,22,236,82,64,5,238,228,127,22,202,153,
-  189,176,71,230,153,50,28,14,246,90,183,85,89,120,117,38,123,240,214,246,100,45,90,255,
-  123,176,151,199,255,195,37,163,207,94,240,47,93,133,31,248,35,76,171,127,7,8,87,35,
-  225,204,13,107,161,190,56,177,38,223,229,140,136,244,214,231,67,164,227,127,210,30,142,7,
-  58,84,136,90,51,235,151,18,185,138,45,13,0,205,124,69,155,142,233,43,147,142,140,66,
-  22,0,1,30,46,55,43,67,59,47,13,16,11,15,35,36,47,25,33,17,37,40,43,21,
-  12,7,5,245,72,54,132,56,16,146,6,45,86,142,129,151,166,57,5,201,38,180,148,53,
-  85,76,217,143,101,132,151,25,231,212,10,200,175,192,94,0,46,184,155,107,253,238,73,147,
-  191,236,71,249,146,181,56,12,234,251,68,105,18,78,223,169,208,77,54,136,163,153,114,75,
-  63,9,146,10,82,246,89,16,65,107,111,138,10,244,62,143,163,56,32,212,169,220,61,152,
-  187,110,140,121,242,142,134,242,31,189,111,118,242,173,89,220,120,238,40,137,37,114,223,150,
-  181,142,226,239,27,126,124,44,230,139,227,24,177,109,24,116,179,21,237,50,138,71,221,151,
-  231,206,198,30,22,115,200,204,17,144,71,251,186,117,73,184,236,7,87,201,159,75,15,122,
-  150,206,66,249,249,165,220,19,245,246,17,211,76,16,196,19,49,55,120,6,118,44,244,178,
-  35,180,143,54,214,57,25,126,151,168,51,165,163,160,206,82,137,42,184,210,143,189,236,9,
-  255,50,189,4,206,209,192,82,139,146,34,107,249,167,125,40,134,183,1,143,222,23,55,25,
-  87,75,141,52,56,165,57,160,217,22,156,137,21,171,136,55,125,215,102,23,173,129,115,127,
-  181,213,18,205,6,169,196,151,217,46,225,76,247,193,64,96,30,85,152,95,178,238,225,79,
-  60,51,10,17,185,150,203,59,37,170,120,32,138,148,139,3,143,127,71,29,199,137,225,62,
-  157,221,182,44,170,61,88,124,62,221,78,71,185,240,112,250,54,43,108,65,223,96,101,142,
-  89,143,17,43,83,30,6,2,187,80,92,240,63,124,1,171,135,108,28,24,68,144,222,48,
-  49,22,126,33,208,84,2,179,33,85,47,105,165,147,171,5,79,1,230,2,47,150,185,93,
-  20,239,191,96,77,17,0,25,24,31,8,26,25,26,21,40,41,32,20,24,39,30,28,105,
-  50,65,42,105,3,28,54,159,12,24,227,85,224,216,136,18,218,255,219,216,190,71,164,75,
-  1,106,174,157,15,239,139,128,97,218,161,92,241,131,0,234,155,154,125,207,48,0,239,250,
-  150,126,142,162,175,25,151,28,38,161,143,167,10,27,131,253,21,69,55,179,50,50,134,109,
-  206,67,67,84,251,143,7,17,6,95,40,185,70,122,248,133,248,171,191,229,103,76,200,155,
-  19,1,106,90,160,215,156,14,123,203,117,175,112,218,150,79,79,38,54,129,84,33,71,16,
-  26,32,28,113,112,106,166,141,1,135,140,239,228,186,208,227,30,123,163,67,106,154,82,95,
-  250,46,154,254,191,215,207,114,243,214,27,22,211,154,107,94,84,166,253,243,59,70,195,73,
-  128,107,11,226,170,209,33,32,139,76,202,110,99,12,40,148,28,118,37,249,73,236,59,52,
-  229,67,203,102,200,131,251,252,130,82,156,54,3,197,64,73,183,122,27,251,226,98,84,96,
-  48,197,51,254,135,142,57,226,224,247,15,183,189,139,66,7,128,198,150,39,185,185,206,87,
-  106,10,122,65,131,218,173,12,165,184,105,65,179,253,206,62,250,197,170,224,190,147,147,207,
-  124,181,36,23,207,229,30,236,63,127,249,48,149,159,24,199,64,155,105,86,127,231,47,248,
-  132,117,133,67,65,136,163,114,26,108,102,137,216,25,141,20,252,178,141,165,163,191,189,122,
-  156,240,236,25,90,97,115,32,49,101,249,35,161,5,149,73,236,59,56,113,141,62,152,211,
-  145,250,232,115,152,162,109,72,176,200,82,38,67,30,240,21,27,192,42,69,235,140,35,60,
-  226,212,175,28,160,102,10,163,67,103,139,186,197,106,152,245,32,19,48,1,9,151,128,43,
-  113,133,108,228,172,255,64,153,63,17,208,203,66,154,242,177,25,196,135,85,122,158,233,115,
-  62,34,71,153,13,197,140,181,142,201,99,104,97,221,30,104,81,163,255,128,45,128,53,21,
-  219,25,183,134,17,12,197,50,50,71,83,20,231,70,19,76,198,225,13,81,63,78,65,130,
-  188,244,196,8,232,232,4,33,241,248,211,211,4,126,204,168,82,38,63,118,11,207,204,215,
-  172,137,110,88,244,11,44,169,73,222,231,249,206,94,148,25,77,121,50,23,114,73,71,180,
-  105,160,15,25,75,240,205,209,102,132,56,180,69,90,163,235,212,92,191,205,145,62,179,117,
-  133,89,65,6,146,107,125,67,155,217,126,123,57,70,45,74,80,64,214,163,143,129,46,232,
-  170,126,60,238,69,247,136,180,105,100,38,112,252,201,0,23,0,1,34,43,53,38,39,39,
-  39,36,28,12,10,31,28,41,20,18,16,28,28,36,37,47,34,16,248,36,236,234,230,106,
-  195,232,198,12,82,244,49,27,30,118,240,5,196,12,165,103,23,126,120,170,243,234,229,79,
-  103,248,118,135,73,43,232,239,157,154,224,122,0,153,36,113,101,167,35,58,39,43,99,242,
-  154,137,248,39,94,74,80,150,165,59,245,203,139,94,86,253,121,117,119,63,245,11,154,76,
-  100,70,79,5,106,136,92,148,108,71,95,27,80,135,61,4,85,1,78,216,248,218,40,201,
-  39,219,85,81,0,235,235,4,35,23,8,120,198,4,177,249,11,196,196,143,104,233,12,149,
-  224,121,165,70,126,126,100,163,57,202,247,7,1,183,140,25,232,82,112,215,75,188,78,111,
-  231,54,84,82,4,165,200,163,99,91,115,126,248,122,73,177,100,192,140,29,237,22,30,143,
-  87,136,122,87,107,134,120,80,79,230,247,187,139,143,212,176,223,151,194,165,19,82,88,225,
-  69,253,241,149,94,251,235,188,96,70,53,216,80,96,103,200,185,212,63,126,129,92,145,43,
-  86,88,26,101,166,25,209,254,215,93,140,25,45,34,166,200,200,134,42,159,24,156,14,21,
-  160,219,234,209,33,45,99,235,183,119,194,234,13,41,195,184,114,145,29,144,65,100,240,98,
-  172,244,184,29,144,151,90,232,4,149,100,152,186,117,122,96,230,16,95,138,128,76,12,242,
-  21,0,1,6,14,20,14,22,21,25,28,34,44,32,35,31,29,31,33,33,22,9,84,91,
-  89,2,143,164,78,19,28,103,76,116,247,180,14,152,228,214,35,141,37,171,250,174,241,162,
-  255,89,84,5,241,123,74,89,33,20,146,57,45,208,144,232,26,112,163,179,43,237,75,161,
-  17,246,11,92,110,218,57,217,153,125,52,25,127,192,172,68,155,9,209,217,68,158,42,238,
-  29,74,47,246,107,255,135,194,55,62,62,180,210,20,110,111,255,174,237,2,213,7,179,239,
-  25,203,130,68,87,70,6,109,204,171,143,251,134,78,111,6,106,14,38,80,84,31,158,243,
-  180,48,235,215,94,249,81,177,158,127,164,74,127,3,239,12,51,172,60,71,255,223,206,213,
-  224,21,182,38,234,53,122,249,101,56,135,226,30,243,228,64,110,253,65,104,136,219,119,69,
-  74,185,103,247,174,247,65,114,208,88,145,182,98,240,55,105,221,121,15,69,232,13,105,252,
-  71,208,138,152,45,154,195,227,51,17,206,169,20,154,60,147,160,127,201,146,30,202,130,168,
-  3,182,6,215,253,195,181,49,222,195,19,101,170,241,45,21,95,227,159,187,215,168,7,176,
-  21,177,136,231,93,45,217,55,86,206,157,30,161,20,105,20,236,29,74,182,155,144,158,199,
-  177,5,6,134,224,22,137,53,201,235,28,205,220,52,15,186,154,116,84,83,249,14,120,148,
-  227,22,43,20,170,35,14,3,238,137,19,185,252,127,155,248,253,150,91,61,140,54,10,62,
-  100,92,157,253,235,59,135,49,11,188,62,215,125,231,141,172,92,245,232,171,44,251,97,212,
-  18,252,222,215,2,93,154,125,255,144,41,144,56,137,160,107,221,124,170,183,58,79,227,195,
-  91,218,209,151,176,234,48,84,39,169,107,247,79,102,214,27,156,248,99,48,186,35,83,14,
-  247,30,212,1,68,100,189,248,188,87,24,14,241,206,254,145,67,6,192,36,186,149,162,39,
-  183,212,60,68,232,98,74,243,234,117,104,121,238,57,181,130,180,148,153,73,80,127,252,193,
-  117,175,37,17,1,132,252,197,145,177,53,48,111,5,105,92,178,45,50,16,117,16,225,42,
-  244,118,48,21,221,235,36,155,186,138,26,108,235,129,252,238,22,219,166,158,221,32,221,129,
-  166,8,32,139,199,238,198,35,157,65,25,116,128,224,26,56,91,60,75,255,251,155,81,40,
-  171,132,15,0,16,14,20,11,22,21,40,30,35,43,41,60,37,49,86,108,94,28,253,179,
-  14,228,51,27,112,82,67,8,110,186,155,59,43,220,1,184,128,153,247,57,219,249,161,182,
-  91,48,124,38,173,170,172,76,131,84,108,175,134,221,216,92,0,145,46,211,102,127,102,177,
-  214,150,159,182,26,8,164,36,83,165,52,166,83,2,23,1,93,119,219,134,67,35,51,148,
-  170,118,53,100,31,136,3,161,33,85,198,212,92,182,186,206,17,27,27,250,16,202,78,140,
-  236,80,74,212,102,68,119,51,26,8,172,160,228,172,154,218,190,213,232,120,134,247,101,17,
-  137,61,117,84,112,150,157,193,62,39,97,212,132,42,109,173,67,70,168,43,44,179,57,245,
-  142,83,121,157,147,10,141,208,2,42,209,251,93,61,131,110,148,206,102,32,142,255,187,123,
-  107,234,224,101,178,223,100,30,72,238,32,157,30,112,189,237,79,153,223,81,185,121,68,36,
-  225,95,96,229,136,44,168,70,21,108,151,227,94,106,2,65,132,19,245,120,25,35,237,116,
-  218,225,255,255,164,63,248,78,11,144,41,214,67,45,107,160,163,104,94,75,33,82,101,174,
-  158,186,178,7,109,162,126,233,155,50,140,200,147,173,104,7,250,69,227,114,209,158,102,202,
-  159,113,92,174,54,169,50,203,185,198,90,25,243,184,218,193,221,110,3,200,5,172,175,239,
-  217,87,178,60,63,225,165,157,6,235,152,156,227,51,164,226,160,235,229,157,91,31,123,111,
-  128,133,182,51,12,79,230,122,127,13,132,223,23,119,14,79,50,211,36,233,229,75,180,2,
-  87,96,10,89,39,141,176,200,51,199,199,109,170,200,251,92,168,88,49,142,141,212,44,183,
-  18,76,70,161,43,190,154,106,52,28,207,112,145,9,81,112,192,78,59,106,34,230,41,83,
-  251,128,155,123,223,53,238,236,24,42,11,102,209,30,25,144,81,30,222,5,196,219,80,37,
-  120,218,173,177,112,194,8,118,172,132,50,123,120,97,51,76,16,146,171,102,182,184,186,103,
-  24,123,45,42,159,243,61,221,181,190,244,94,98,34,79,4,156,210,193,158,26,0,22,0,
-  1,4,8,10,26,42,45,24,8,3,7,15,17,13,13,14,17,10,47,49,60,91,112,98,
-  60,78,202,176,96,151,74,29,137,248,194,239,179,166,91,128,20,91,13,153,160,255,129,18,
-  82,236,25,241,151,166,52,195,224,102,204,90,190,97,79,22,91,58,190,16,174,8,202,235,
-  21,153,216,53,236,243,132,216,1,39,69,165,71,80,70,81,86,82,242,251,30,223,146,161,
-  97,128,50,87,22,130,172,244,170,131,190,144,33,55,159,225,215,176,164,202,0,35,32,7,
-  135,56,98,29,24,82,221,120,202,115,52,231,217,77,141,42,168,13,104,83,45,146,130,14,
-  152,63,79,37,160,222,140,205,154,120,144,201,226,14,154,49,177,135,211,5,172,242,59,81,
-  20,234,129,132,247,205,108,66,20,226,142,4,161,10,108,81,43,245,205,160,12,27,182,226,
-  148,131,188,115,202,237,157,172,46,158,201,66,218,159,82,62,231,137,226,143,116,189,80,78,
-  204,190,11,28,183,92,241,113,42,250,119,229,192,46,17,154,231,145,252,217,36,163,110,25,
-  144,127,121,164,249,30,238,28,231,17,196,135,161,63,149,114,249,92,0,219,36,61,230,29,
-  218,195,88,119,86,233,78,63,224,29,192,167,234,178,103,249,192,170,87,84,237,225,167,196,
-  154,216,186,180,19,217,56,198,175,87,190,145,242,18,212,173,69,188,60,146,64,230,27,157,
-  56,20,177,42,52,113,142,147,200,164,204,245,4,245,204,129,186,203,168,153,70,49,4,41,
-  89,12,9,46,15,177,248,190,137,166,59,9,99,28,109,12,64,119,142,50,23,144,71,197,
-  230,152,13,61,177,195,19,200,21,159,146,250,3,178,86,240,108,216,193,172,27,36,78,196,
-  69,240,106,196,236,188,159,255,33,21,181,179,45,201,208,66,95,190,255,149,70,210,99,64,
-  8,158,16,109,171,166,154,117,56,93,91,60,95,220,124,166,133,52,230,110,251,34,65,64,
-  180,240,123,152,124,105,129,245,95,125,15,200,198,110,147,2,252,198,53,2,197,77,223,182,
-  85,9,43,27,65,26,91,50,121,116,159,57,60,103,187,153,13,74,81,146,40,224,72,137,
-  167,126,143,155,8,148,1,37,32,96,147,197,31,230,184,173,182,243,89,104,4,100,144,59,
-  232,200,228,79,88,121,207,198,26,102,92,150,5,20,3,118,141,136,192,227,228,195,76,235,
-  120,192,112,74,163,70,112,111,42,218,16,133,178,252,91,122,230,255,252,94,250,146,105,18,
-  0,1,23,26,37,30,39,31,17,11,12,13,24,59,58,53,30,90,102,85,20,244,173,149,
-  162,21,83,132,44,9,239,160,156,201,93,188,143,172,99,161,126,49,155,126,122,130,246,138,
-  152,96,78,143,240,1,175,36,154,65,127,101,220,44,78,186,12,221,5,119,247,227,92,222,
-  65,76,191,109,229,77,253,135,59,233,141,189,158,99,3,247,214,217,243,6,203,175,25,51,
-  232,132,168,31,124,179,244,130,100,42,156,146,139,19,197,167,239,36,13,22,16,236,179,10,
-  251,126,147,237,81,24,79,176,126,226,196,223,4,79,235,156,141,235,193,51,250,216,7,238,
-  218,192,62,190,56,247,187,174,194,221,186,231,84,32,190,160,230,141,204,207,98,126,245,251,
-  69,231,170,253,231,234,65,158,105,66,128,23,108,55,163,42,247,207,210,165,209,13,118,33,
-  197,245,131,66,85,15,203,81,227,127,46,130,177,34,135,251,138,53,90,242,58,2,189,20,
-  123,157,161,76,209,102,207,49,110,223,183,228,52,183,251,72,43,179,215,148,16,17,189,81,
-  232,241,61,156,142,243,59,191,67,45,35,85,90,139,10,26,217,26,52,171,56,167,28,1,
-  109,15,32,214,220,21,193,68,172,138,207,27,83,154,186,167,27,192,85,48,79,239,186,99,
-  173,110,159,197,31,38,0,146,214,82,44,142,120,35,230,236,118,194,154,232,221,93,194,205,
-  54,197,133,154,3,205,114,34,5,127,186,201,252,181,80,236,41,84,167,250,243,95,152,44,
-  161,228,182,158,235,129,27,217,31,205,219,15,194,123,205,195,73,52,168,104,200,26,165,223,
-  153,255,109,75,36,51,32,75,60,251,244,164,63,101,28,169,65,38,51,90,162,117,225,127,
-  169,192,122,172,252,129,155,65,5,14,94,180,227,107,186,228,245,119,4,109,204,207,237,200,
-  123,249,30,56,45,53,80,179,255,237,113,134,15,197,249,166,61,180,188,14,137,61,68,14,
-  121,25,61,85,115,253,100,2,120,229,196,127,14,213,201,182,72,137,19,180,140,206,77,71,
-  211,16,88,178,222,147,74,116,155,138,12,174,173,35,50,37,21,18,13,85,226,234,67,85,
-  248,61,228,44,222,164,249,155,28,11,196,213,80,157,136,131,114,165,25,255,125,23,162,216,
-  38,252,243,255,255,232,222,240,240,86,17,0,1,19,39,43,50,35,32,13,37,67,63,48,
-  21,73,72,75,32,24,14,245,7,8,122,219,253,106,240,172,212,112,172,89,234,104,22,92,
-  164,80,156,90,44,114,161,244,0,36,202,26,56,195,62,234,166,109,206,165,27,29,240,235,
-  187,32,9,252,182,107,28,95,33,2,33,201,15,238,134,69,52,143,242,223,98,96,146,182,
-  188,163,29,181,94,213,253,200,76,48,210,154,111,1,232,186,150,125,32,56,83,124,84,61,
-  155,173,254,27,234,233,5,28,5,6,200,87,243,104,37,184,92,93,93,41,48,3,181,0,
-  0,151,2,134,194,58,23,23,93,137,82,125,255,201,79,143,34,131,17,245,214,152,68,109,
-  62,237,65,52,158,44,188,21,95,153,74,115,7,233,32,128,92,127,222,13,243,111,117,50,
-  101,165,203,184,81,221,40,212,41,45,210,11,157,143,161,189,10,68,217,199,73,167,218,106,
-  70,194,50,211,245,132,92,124,108,45,162,216,204,27,177,52,202,139,172,157,150,3,247,235,
-  29,81,249,95,238,66,189,98,127,23,86,21,20,198,128,116,211,252,163,0,1,8,157,40,
-  88,120,212,88,125,232,186,78,198,103,255,140,224,121,208,78,172,250,6,63,16,11,157,198,
-  218,98,47,4,233,114,38,53,51,247,91,66,180,52,34,235,177,54,80,14,148,236,41,140,
-  44,5,150,71,97,27,96,26,174,214,9,39,61,160,166,62,126,101,189,99,249,78,206,166,
-  100,171,38,253,158,154,38,1,50,213,117,21,236,25,31,28,197,183,31,205,139,21,255,181,
-  70,136,188,223,3,28,4,133,242,195,206,149,42,96,211,91,212,188,215,118,254,95,62,0,
-  127,249,159,39,73,6,206,117,28,106,101,182,169,243,20,34,174,148,142,154,56,105,76,197,
-  236,122,72,213,132,50,125,92,21,34,7,190,0,75,146,94,131,76,106,113,113,129,109,234,
-  34,231,36,249,111,151,40,30,248,161,84,96,52,187,94,199,222,191,216,216,125,180,5,2,
-  249,52,35,121,21,250,227,14,83,7,90,132,149,76,35,203,171,68,19,66,206,136,80,101,
-  67,165,120,194,42,125,247,55,132,73,137,19,32,95,58,169,102,213,132,217,75,144,62,171,
-  42,46,173,155,221,27,77,101,1,218,250,236,158,20,29,22,90,36,88,113,180,255,254,223,
-  206,254,1,0,18,0,1,22,66,66,44,10,16,43,39,52,25,26,9,53,83,84,57,24,
-  27,7,249,7,8,235,23,246,124,97,30,251,10,173,174,19,43,21,168,207,42,222,32,236,
-  82,252,192,148,246,141,196,11,39,208,150,233,56,147,241,22,118,4,134,231,110,18,125,131,
-  100,223,119,0,140,86,132,125,36,97,190,60,139,187,28,137,213,146,120,115,114,200,145,172,
-  107,105,72,13,213,161,110,252,162,189,112,78,218,255,26,196,132,51,235,208,50,188,32,232,
-  117,110,157,163,70,2,204,165,215,147,147,207,126,36,32,236,62,150,8,146,255,84,147,25,
-  72,100,25,44,93,88,190,61,37,101,250,109,48,251,196,187,35,200,241,217,181,174,117,243,
-  0,75,238,155,137,55,245,80,251,13,142,108,101,0,90,146,54,114,6,125,159,251,118,16,
-  60,110,76,123,51,192,157,154,25,209,221,169,175,85,228,1,229,28,5,47,88,116,42,120,
-  115,67,174,123,164,154,87,250,211,27,15,137,59,147,170,17,74,36,152,137,255,124,70,91,
-  219,90,106,230,44,103,16,96,154,222,194,82,22,114,141,14,53,16,12,34,185,214,158,8,
-  76,152,177,88,36,24,112,236,206,253,129,168,239,35,23,223,172,193,109,170,145,2,125,168,
-  182,67,151,182,157,238,41,64,75,109,75,14,184,143,49,254,94,204,28,179,39,29,134,193,
-  81,194,228,217,14,136,208,183,158,8,150,115,195,72,8,147,166,216,252,247,169,254,233,174,
-  249,152,17,72,25,147,140,37,54,235,60,170,89,176,210,195,129,79,70,128,144,20,118,207,
-  246,124,69,188,133,186,201,159,30,224,44,60,124,163,62,139,82,249,197,96,253,179,122,151,
-  140,8,168,168,60,80,125,28,29,233,123,156,50,61,22,234,96,3,9,102,106,95,107,44,
-  129,186,180,100,49,89,172,194,4,4,101,110,68,32,187,244,9,30,102,159,63,198,91,121,
-  135,84,174,80,142,175,20,64,32,2,201,87,183,41,96,138,76,172,80,145,127,179,179,130,
-  71,145,247,1,184,235,144,17,175,6,130,244,185,121,189,253,197,164,159,153,23,61,251,211,
-  119,181,177,157,194,20,219,115,64,241,145,186,27,20,66,58,27,107,116,17,84,115,131,219,
-  142,196,241,163,241,75,44,222,147,101,202,167,7,38,115,164,55,117,235,247,94,183,175,58,
-  80,152,56,203,209,175,88,164,252,181,141,198,132,43,237,205,91,197,202,18,68,105,26,123,
-  76,18,55,185,93,161,127,171,66,175,155,115,210,48,181,241,146,117,186,88,240,231,229,75,
-  203,142,183,83,81,60,255,244,95,235,97,159,217,204,13,99,168,11,164,45,137,144,141,112,
-  159,117,174,70,115,210,109,203,237,47,215,73,136,16,0,4,14,17,19,26,39,70,70,87,
-  76,62,33,8,15,22,24,23,21,162,52,94,50,1,152,105,226,133,107,206,135,52,182,172,
-  246,10,107,84,11,71,133,169,57,239,131,58,86,172,168,210,99,100,219,73,212,0,18,234,
-  69,216,126,249,220,180,70,225,253,252,6,239,185,35,37,249,116,206,218,203,195,125,156,130,
-  225,179,122,21,143,142,126,177,178,119,20,156,111,127,193,55,84,68,40,112,198,156,137,184,
-  0,71,87,104,36,37,86,213,198,50,138,250,242,78,123,75,200,210,10,47,215,177,243,89,
-  36,147,108,167,9,215,150,247,97,70,36,199,136,250,227,142,72,3,250,206,123,7,12,190,
-  169,15,241,185,6,19,106,82,133,74,238,36,131,27,169,170,68,104,8,191,183,137,143,99,
-  204,119,177,225,10,21,164,74,124,64,44,0,98,239,0,150,237,125,160,58,160,150,196,43,
-  193,140,121,205,20,86,217,68,183,145,133,102,206,30,136,148,240,156,5,168,233,150,233,130,
-  216,92,109,237,99,12,101,210,49,254,53,0,39,124,155,185,211,123,33,226,164,226,100,111,
-  192,71,231,202,16,120,95,40,104,107,96,131,243,230,27,1,75,73,185,195,243,81,26,207,
-  14,58,247,144,248,135,16,199,124,191,9,175,246,244,183,115,117,204,178,97,132,191,133,0,
-  44,36,136,76,8,247,99,193,30,217,168,147,198,177,139,185,67,120,226,76,235,254,232,239,
-  250,236,173,11,97,219,215,183,57,235,134,169,179,112,179,71,110,229,189,249,171,129,185,63,
-  177,193,175,241,72,233,43,11,80,164,91,22,0,1,4,26,41,39,30,34,58,57,39,30,
-  39,40,37,35,34,28,14,13,28,42,46,28,12,6,255,255,165,233,227,161,145,169,65,215,
-  255,154,142,91,135,32,22,24,70,218,239,53,245,222,105,11,199,33,189,224,68,159,128,204,
-  148,175,132,10,252,11,160,218,179,186,61,41,136,66,80,195,49,184,233,198,109,191,68,158,
-  6,152,229,202,222,21,49,22,250,49,37,16,182,85,216,197,189,155,22,216,216,179,23,86,
-  205,199,43,0,18,0,109,75,163,123,167,191,134,186,176,105,255,143,40,19,150,154,93,118,
-  56,200,107,12,191,248,123,148,150,53,151,110,245,13,115,74,33,164,106,11,119,243,195,246,
-  230,105,52,228,207,99,85,73,74,213,147,23,232,217,54,24,229,120,212,210,88,222,227,248,
-  25,193,154,203,8,78,195,155,219,31,159,10,49,165,118,29,37,32,27,189,129,22,229,114,
-  0,64,105,209,107,111,69,72,144,220,74,109,176,41,75,240,61,59,132,219,145,251,56,120,
-  82,20,2,248,206,39,204,81,123,110,194,6,90,180,206,250,233,194,24,0,1,31,42,46,
-  36,31,29,9,6,7,6,9,7,12,28,34,38,26,27,43,49,46,46,58,58,30,248,7,
-  9,58,1,199,143,4,70,17,9,176,223,202,58,49,195,187,19,36,68,210,79,160,53,157,
-  107,144,235,4,81,203,25,117,125,108,61,66,109,148,101,114,2,153,146,255,177,101,55,226,
-  239,160,229,246,48,118,234,48,98,203,111,160,63,83,10,33,243,99,244,176,224,50,53,88,
-  51,72,225,128,148,186,227,214,74,138,159,242,18,204,209,106,91,144,150,166,255,45,47,228,
-  97,154,163,225,73,94,15,91,73,43,92,202,175,201,116,136,128,216,143,3,211,236,38,118,
-  73,94,0,105,10,13,121,61,36,170,11,146,112,6,175,25,108,75,14,189,67,177,249,10,
-  168,233,210,130,79,165,181,90,92,33,47,166,118,135,79,183,227,21,40,189,80,222,190,234,
-  27,144,92,87,122,249,93,80,8,204,197,20,24,154,34,160,2,77,119,237,152,188,76,202,
-  135,48,252,219,191,152,27,163,234,25,215,93,164,79,209,88,229,110,124,138,244,212,163,146,
-  102,193,77,75,57,185,130,152,71,69,127,188,43,110,63,102,222,109,84,120,88,139,109,85,
-  251,131,235,253,18,84,197,187,106,138,62,126,208,3,157,161,94,84,25,151,144,54,109,175,
-  62,63,7,188,50,30,57,243,144,148,103,181,146,107,106,55,218,189,210,23,90,52,69,63,
-  73,157,132,154,199,238,188,65,219,51,171,34,59,74,9,145,120,12,186,235,89,242,251,2,
-  86,246,177,94,108,108,84,9,102,23,220,102,210,185,159,37,154,148,202,51,57,162,189,225,
-  239,197,209,235,64,193,118,21,105,195,217,224,158,104,144,28,67,178,65,213,151,92,27,242,
-  234,237,77,169,93,154,75,55,39,52,153,14,186,54,46,83,187,85,106,101,208,244,147,236,
-  179,96,185,134,37,61,11,181,73,65,187,144,207,214,13,96,166,216,25,146,190,237,38,16,
-  167,2,101,2,26,19,31,103,160,136,81,121,204,101,247,128,34,161,50,203,185,36,236,166,
-  69,232,87,189,64,125,5,120,189,222,115,10,21,190,26,103,89,0,82,124,177,61,117,214,
-  215,244,61,64,96,158,178,168,91,243,192,129,104,165,181,180,139,219,94,170,74,129,41,178,
-  7,103,128,94,118,17,102,46,61,221,76,88,94,143,160,149,10,163,244,204,182,41,106,123,
-  171,187,159,11,229,122,5,164,76,62,139,79,36,31,78,172,181,80,205,225,65,118,215,231,
-  28,213,231,40,254,51,209,55,124,34,89,190,255,1,241,116,93,151,32,33,141,186,43,254,
-  187,159,50,225,56,244,233,97,118,10,228,31,163,139,72,123,249,76,18,250,125,121,133,10,
-  254,101,229,86,215,76,176,197,45,26,216,134,92,20,68,108,134,89,255,249,163,249,69,156,
-  0,12,0,1,22,68,73,52,14,61,61,57,22,88,111,98,29,38,69,0,179,179,69,125,
-  42,15,39,70,113,152,5,111,98,81,176,192,91,73,231,113,169,37,160,26,246,116,37,60,
-  75,89,28,48,41,3,160,102,137,165,192,68,165,67,106,200,65,219,70,10,233,220,229,93,
-  83,157,51,11,91,70,193,89,219,5,202,55,84,93,179,117,183,26,33,150,82,142,111,100,
-  196,29,124,105,23,204,86,52,20,168,135,227,195,168,38,43,211,157,166,133,103,89,94,143,
-  184,174,230,29,88,227,180,110,163,253,222,209,226,39,220,148,202,114,209,1,22,115,40,55,
-  101,144,203,16,156,22,159,209,196,116,229,26,237,105,123,16,1,213,115,175,10,108,98,93,
-  210,203,92,132,124,58,200,191,11,117,72,32,246,27,167,186,17,147,25,160,119,38,211,21,
-  92,140,140,156,11,88,82,17,255,116,37,253,193,195,28,31,163,136,157,76,208,3,188,129,
-  248,198,68,216,64,220,134,40,54,160,63,77,235,215,62,119,126,155,67,158,154,41,149,88,
-  232,103,57,80,135,188,28,253,27,42,95,113,117,38,173,62,184,165,212,169,54,215,84,116,
-  158,38,62,70,50,83,170,19,30,35,59,55,45,28,157,119,176,166,92,252,229,218,255,255,
-  252,14,171,219,121,22,0,1,24,29,39,15,30,32,51,37,38,22,33,20,31,28,39,26,
-  30,32,30,33,38,53,225,247,97,90,68,226,35,217,102,241,138,197,68,144,136,100,98,200,
-  248,149,74,16,159,122,143,174,47,239,128,54,247,250,12,197,131,80,79,114,25,131,120,77,
-  108,224,41,177,154,111,151,32,205,75,236,94,239,38,114,129,0,15,255,75,102,61,172,88,
-  51,254,226,40,191,235,246,88,78,142,82,68,6,80,58,202,180,77,103,21,223,30,209,12,
-  213,108,86,154,198,132,169,248,113,190,207,240,6,79,164,225,100,220,17,46,81,185,166,236,
-  232,18,20,63,24,222,67,184,191,49,128,130,28,213,172,8,242,252,67,39,209,90,134,149,
-  170,253,44,186,17,205,231,65,186,29,253,30,251,216,106,20,208,156,145,33,134,193,147,230,
-  205,60,84,244,77,225,8,225,132,12,175,134,185,93,199,22,168,12,136,148,237,149,124,189,
-  159,165,204,56,8,109,146,192,235,7,69,85,80,107,165,225,244,211,132,158,34,17,73,90,
-  1,162,115,66,56,97,26,208,35,167,144,242,137,72,88,113,97,198,56,35,148,125,117,129,
-  251,0,23,0,1,9,40,45,36,14,18,27,26,29,24,35,35,29,18,22,32,39,23,23,
-  16,35,44,67,47,26,255,255,166,18,208,165,75,59,35,151,144,143,57,123,63,214,1,138,
-  34,140,61,232,119,168,207,139,67,248,63,93,251,112,229,99,28,48,157,250,7,183,139,160,
-  222,104,42,124,144,179,123,163,191,21,68,89,154,167,64,232,183,74,210,240,237,54,62,115,
-  225,80,244,132,49,91,48,245,16,241,203,115,214,153,123,1,22,210,16,133,185,80,83,175,
-  101,57,136,88,210,167,76,178,151,92,23,206,203,234,31,189,217,230,33,86,152,60,138,19,
-  238,46,33,50,132,36,7,100,181,18,181,57,16,13,40,51,181,58,163,182,49,8,106,175,
-  146,117,93,7,156,46,114,253,188,243,140,70,109,33,252,250,122,17,185,96,248,99,195,0,
-  236,229,192,242,109,248,208,13,255,95,40,99,47,230,254,141,61,220,125,243,104,168,191,192,
-  149,192,248,158,95,191,120,86,101,151,119,16,169,9,205,111,34,46,119,244,172,155,132,128,
-  187,181,201,59,73,77,152,146,195,131,154,179,120,212,34,201,214,9,210,195,52,92,144,238,
-  43,75,242,130,235,38,138,59,183,141,226,173,215,168,129,183,47,140,168,185,38,43,98,109,
-  139,14,113,176,62,108,49,93,5,3,245,91,213,187,164,90,148,194,113,255,254,233,226,19,
-  27,111,173,107,36,1,184,127,79,18,193,234,32,171,141,196,2,181,103,29,205,207,225,10,
-  165,80,133,57,227,138,224,245,14,218,149,249,191,43,92,6,176,161,30,12,0,1,63,76,
-  77,24,14,62,69,76,27,10,67,88,86,55,50,55,28,33,238,19,63,159,61,217,176,40,
-  97,193,165,188,117,194,163,43,226,76,203,180,154,101,58,72,34,205,184,36,243,41,38,22,
-  16,190,243,148,175,222,35,180,147,105,138,235,166,120,213,204,248,158,4,33,79,243,80,152,
-  185,107,203,226,32,142,47,105,94,248,117,172,249,138,237,241,220,98,152,107,34,143,18,68,
-  125,197,150,86,142,254,95,240,221,15,101,36,236,160,234,105,14,65,2,239,163,243,137,215,
-  220,133,65,185,233,230,95,38,205,121,73,183,37,39,241,218,71,255,243,145,39,74,92,6,
-  205,173,166,81,30,179,37,8,235,71,21,80,8,203,155,31,42,191,81,218,219,166,203,8,
-  192,157,120,63,76,194,215,245,36,49,113,71,64,246,151,225,153,110,237,60,158,71,247,70,
-  77,112,149,193,66,234,151,36,104,120,21,19,143,157,201,237,216,231,204,197,163,246,22,201,
-  98,17,162,247,229,192,80,87,149,135,218,239,158,42,13,251,222,168,99,143,120,3,169,52,
-  118,89,170,86,19,190,166,138,23,92,53,30,23,110,99,113,240,112,103,185,30,120,249,201,
-  102,231,130,231,247,15,196,183,233,45,121,169,39,117,247,77,12,155,48,217,13,45,43,1,
-  232,161,242,150,211,112,115,108,242,141,202,15,191,194,18,224,181,235,33,70,184,249,172,50,
-  14,254,229,151,139,90,76,157,149,155,223,175,44,75,154,255,255,247,156,134,167,118,22,0,
-  1,7,27,45,66,79,69,44,25,17,13,19,24,31,34,35,31,15,11,8,13,53,52,42,
-  255,255,255,165,233,227,161,144,200,210,155,85,101,255,122,121,208,180,214,0,143,242,193,229,
-  180,218,210,38,146,39,86,91,131,105,34,192,59,231,219,127,57,216,212,155,84,32,247,40,
-  212,23,125,176,64,201,60,159,203,23,141,206,132,7,56,162,68,50,116,145,89,80,141,245,
-  102,253,58,33,56,164,77,133,164,83,36,123,189,218,14,99,171,172,163,113,190,177,48,75,
-  250,231,82,81,166,185,161,252,118,187,78,8,129,114,88,162,247,127,251,173,165,190,120,234,
-  25,52,182,113,77,94,147,128,9,184,12,134,85,137,75,122,109,226,31,186,251,47,45,241,
-  134,246,232,219,164,91,241,69,255,138,24,125,208,72,249,217,221,13,110,186,220,46,199,227,
-  103,174,223,151,97,1,26,254,67,16,53,176,160,84,86,3,213,227,160,117,86,97,238,91,
-  87,238,53,4,32,89,144,227,150,146,47,13,174,149,164,57,214,152,18,88,165,87,144,159,
-  61,192,152,150,171,7,242,130,194,151,91,207,116,214,34,85,88,9,137,240,189,118,210,92,
-  40,35,187,225,110,132,189,168,156,103,163,94,32,138,174,237,128,2,115,240,224,67,196,101,
-  194,38,6,180,56,210,225,192,27,131,67,158,131,174,98,204,207,242,113,108,47,20,223,25,
-  236,14,26,147,39,1,36,80,89,215,71,24,130,15,19,0,1,17,22,23,47,46,52,16,
-  43,59,53,28,10,11,10,15,72,73,79,36,32,2,233,57,35,9,55,151,139,130,211,184,
-  18,144,144,208,73,233,32,120,53,202,243,211,80,250,45,111,17,245,56,204,153,45,249,235,
-  2,66,8,90,122,39,216,206,106,207,101,112,130,230,197,185,22,152,75,235,36,188,100,96,
-  82,129,33,54,47,110,69,148,134,43,88,201,203,235,84,95,127,147,160,2,111,52,220,158,
-  48,116,55,177,57,244,131,45,107,62,34,226,91,243,53,157,106,187,207,96,222,208,72,253,
-  54,231,130,192,60,62,115,9,19,92,53,58,76,140,179,147,43,187,42,161,44,13,199,1,
-  66,96,59,195,240,236,89,226,28,255,114,7,253,152,223,207,215,76,163,31,19,178,135,23,
-  209,71,91,2,122,209,171,18,63,82,155,168,223,46,53,184,192,174,212,249,174,248,212,229,
-  170,216,89,247,136,2,114,238,17,163,4,168,75,215,212,17,67,206,94,163,220,12,120,110,
-  255,188,59,186,11,8,210,21,244,81,205,117,99,100,68,160,78,184,9,6,199,253,81,186,
-  176,79,124,37,253,30,53,192,227,131,15,146,26,129,176,255,149,17,122,199,148,224,121,181,
-  86,75,173,220,43,245,167,82,145,219,57,180,16,42,116,120,98,240,18,202,8,53,45,143,
-  83,161,14,115,62,1,190,65,124,173,13,152,7,204,237,16,49,101,19,100,30,14,181,55,
-  173,42,243,43,187,93,114,90,154,236,173,64,205,239,14,199,164,90,189,188,72,48,74,171,
-  69,160,15,200,119,232,148,119,44,160,78,8,60,83,65,122,69,198,209,81,97,78,8,56,
-  91,34,60,77,255,62,142,167,125,226,82,210,172,39,48,116,252,252,241,80,33,90,53,19,
-  253,179,105,61,216,21,73,41,26,149,95,18,133,100,122,241,190,186,186,144,0,145,101,185,
-  90,54,20,97,165,84,103,95,26,141,79,255,85,163,88,92,244,190,110,18,123,122,54,30,
-  191,41,112,42,174,118,21,76,151,179,30,166,11,221,197,119,197,13,117,200,200,19,79,43,
-  134,70,198,229,244,198,181,190,170,91,164,190,237,209,116,142,82,60,153,0,205,95,122,148,
-  242,170,76,45,81,157,51,22,82,230,12,99,121,193,215,44,32,82,133,37,178,134,11,24,
-  129,154,226,53,208,220,88,168,151,177,145,38,176,225,30,83,162,175,129,60,91,125,12,86,
-  151,173,34,17,99,152,52,106,175,81,20,23,16,118,79,46,14,91,52,103,222,134,208,253,
-  42,145,94,5,2,128,58,123,115,110,61,187,94,187,245,221,43,149,144,199,185,80,211,222,
-  63,53,43,147,90,40,145,150,25,202,33,26,37,2,128,151,83,210,27,59,144,71,122,252,
-  20,232,60,129,27,190,200,255,255,179,91,42,123,151,20,0,1,36,56,75,59,49,53,37,
-  41,45,45,45,26,22,11,6,7,7,20,21,46,28,59,36,136,246,122,159,173,39,162,187,
-  173,174,15,157,60,214,147,65,221,72,136,203,248,35,217,238,18,68,115,75,127,209,45,98,
-  89,11,88,192,74,179,253,255,55,44,70,218,123,72,81,203,77,121,88,126,61,71,44,39,
-  161,232,0,81,193,232,151,47,217,39,54,95,189,253,226,183,188,9,159,214,213,48,63,52,
-  225,26,84,32,158,147,85,94,129,154,32,216,148,166,190,104,89,42,92,173,218,27,86,202,
-  248,42,85,232,204,29,87,28,61,129,185,128,148,174,157,182,203,102,8,76,116,1,113,83,
-  94,111,233,146,32,111,75,23,204,220,204,146,21,239,8,236,198,185,192,229,27,255,112,178,
-  228,178,56,181,84,236,242,222,21,137,194,158,52,205,200,44,59,243,108,123,126,54,107,91,
-  125,248,67,219,105,154,196,44,153,30,255,17,230,79,211,67,237,212,142,168,38,88,116,69,
-  12,218,204,177,167,90,190,205,231,151,244,131,118,152,99,47,231,41,203,90,126,117,157,95,
-  95,130,239,191,160,100,0,103,165,79,5,125,254,31,32,92,111,221,52,19,139,245,9,58,
-  137,28,43,67,91,238,153,196,160,110,125,204,138,234,77,125,246,88,227,221,170,2,230,206,
-  167,18,165,111,173,136,227,51,78,21,124,137,234,252,182,235,92,62,104,37,189,36,231,214,
-  23,112,73,245,70,48,225,39,212,208,223,68,9,216,103,203,47,38,210,41,66,205,60,97,
-  44,16,123,40,203,57,103,200,145,116,6,72,95,56,116,13,98,159,113,41,68,47,42,43,
-  70,253,46,19,242,188,181,26,198,125,33,155,138,151,186,222,182,250,61,131,61,40,180,41,
-  222,191,204,68,176,201,182,127,218,230,60,98,160,116,232,208,105,72,196,73,135,235,216,206,
-  117,151,73,161,227,141,184,88,134,62,19,243,29,31,176,41,222,89,70,86,179,179,222,223,
-  238,195,131,194,99,165,160,101,233,71,206,235,220,158,137,192,157,153,144,147,40,212,195,151,
-  16,20,221,123,29,222,215,119,164,179,42,156,221,228,187,14,31,93,221,244,140,240,107,110,
-  131,56,232,200,124,117,240,47,8,135,14,93,199,172,195,197,103,158,224,176,227,137,65,187,
-  4,64,202,213,126,132,68,120,64,149,115,239,122,80,81,141,82,156,214,6,242,106,23,116,
-  27,103,102,198,53,43,181,135,166,120,24,20,192,229,103,133,52,182,81,99,231,71,242,171,
-  0,131,150,32,134,41,194,42,111,119,30,72,44,184,59,126,252,14,51,82,142,148,159,194,
-  113,203,90,179,4,43,173,199,181,58,72,20,89,56,118,198,241,200,152,195,110,191,172,143,
-  27,255,255,158,63,75,120,108,21,0,1,14,23,57,47,49,19,44,44,40,26,27,33,19,
-  48,44,45,38,49,48,18,207,3,43,105,3,108,213,226,30,20,81,126,138,102,23,168,81,
-  59,182,27,37,164,98,217,116,229,103,238,233,72,100,165,65,157,47,194,138,233,59,84,71,
-  180,174,217,224,94,25,158,156,106,120,100,42,254,63,41,124,234,137,12,137,45,8,1,219,
-  223,159,37,113,241,182,24,98,243,15,159,100,35,98,135,228,97,73,104,181,176,228,207,178,
-  38,4,182,127,78,219,23,207,42,138,37,94,249,219,26,196,103,7,157,175,228,111,81,104,
-  179,206,106,127,129,93,122,56,125,28,68,38,95,5,107,71,0,146,236,157,93,44,5,211,
-  254,190,186,92,34,217,243,133,236,124,42,150,198,3,190,72,74,57,112,203,186,140,163,33,
-  107,203,195,208,77,47,93,70,249,167,207,74,171,181,105,69,172,53,150,248,236,239,225,148,
-  116,34,140,144,125,54,135,6,46,239,137,135,178,246,20,104,231,98,198,218,37,1,10,125,
-  177,112,3,192,218,228,45,133,75,208,100,137,59,7,41,61,186,203,233,43,229,175,189,200,
-  74,184,223,128,69,64,94,2,237,105,174,141,22,101,157,130,14,234,70,48,104,210,112,18,
-  5,44,8,94,170,187,51,172,2,167,184,203,177,86,20,224,84,104,167,44,192,23,176,50,
-  75,132,141,180,127,150,3,7,146,161,85,36,138,78,102,31,170,14,219,237,141,223,139,139,
-  129,122,56,29,13,97,45,101,134,248,42,131,39,109,47,110,194,0,144,141,126,72,91,42,
-  255,37,206,82,184,155,139,231,30,202,2,222,136,161,215,242,126,243,109,32,69,133,154,201,
-  152,96,82,31,165,120,213,22,184,188,195,58,84,244,61,65,133,144,51,232,248,202,149,215,
-  150,134,225,204,32,65,125,111,48,248,180,76,246,34,77,98,9,182,33,30,11,160,218,117,
-  86,203,84,163,169,66,187,219,190,182,8,228,7,103,10,30,30,2,238,106,15,74,141,90,
-  104,234,60,27,224,32,32,215,1,110,7,141,192,66,135,251,50,92,60,132,117,28,90,153,
-  220,218,100,40,52,224,212,10,187,187,98,200,246,201,86,143,76,51,115,55,102,30,180,67,
-  197,5,21,145,250,119,172,66,203,73,221,255,254,216,67,180,42,246,56,50,21,0,1,31,
-  41,44,39,34,31,13,35,35,51,28,30,5,9,8,11,10,11,67,65,95,34,19,7,9,
-  214,14,221,134,126,170,53,239,248,93,213,96,169,218,18,73,91,188,77,253,59,101,83,97,
-  86,212,147,207,65,242,206,112,221,92,155,225,169,19,64,162,112,91,3,5,46,182,98,15,
-  226,206,125,108,21,124,143,128,66,59,226,9,43,182,73,39,32,183,220,197,127,19,151,38,
-  107,208,62,178,137,108,18,63,13,104,149,178,233,225,151,134,41,111,105,106,251,130,58,197,
-  102,172,208,188,228,95,102,206,18,3,76,167,117,161,223,17,19,97,186,107,231,245,53,53,
-  62,34,238,254,50,192,211,116,245,16,219,176,132,31,139,54,87,47,14,38,46,224,125,69,
-  236,111,181,180,64,179,27,71,57,66,69,73,67,134,241,184,198,118,198,81,180,177,238,87,
-  46,70,71,148,108,21,63,145,174,176,101,51,232,71,11,236,16,218,8,41,55,174,168,120,
-  75,109,159,239,202,1,9,171,64,217,248,195,251,95,152,12,236,162,193,229,132,23,19,193,
-  137,121,134,174,183,47,207,90,110,130,107,54,145,76,6,35,14,142,249,159,172,207,61,182,
-  2,254,254,65,46,22,101,106,213,183,171,64,33,141,69,244,142,114,215,21,222,174,161,110,
-  49,35,184,204,137,189,17,165,27,97,213,140,151,20,138,196,173,255,90,28,94,86,183,45,
-  241,113,10,42,16,233,199,164,193,102,82,79,118,90,102,90,244,227,115,142,215,101,103,191,
-  124,162,223,135,102,137,242,223,197,152,137,144,243,68,75,106,228,80,198,80,219,16,83,184,
-  179,223,117,2,214,147,91,213,124,39,213,232,210,131,191,210,167,51,182,166,208,100,156,170,
-  109,140,179,55,18,89,208,130,235,118,180,152,18,167,209,110,14,114,116,71,163,61,31,148,
-  12,163,227,61,10,79,239,0,101,199,53,233,161,247,69,12,99,71,103,29,87,6,222,178,
-  63,146,231,28,36,216,141,35,85,99,13,123,13,100,177,44,122,226,189,208,250,125,21,152,
-  75,236,148,0,7,159,125,152,142,52,91,167,178,134,24,38,194,74,178,159,142,76,104,14,
-  215,132,93,49,172,38,41,95,99,234,235,196,198,56,12,79,141,79,9,66,47,27,16,255,
-  186,106,61,14,185,98,94,129,137,216,170,113,255,203,61,23,108,12,32,21,0,1,26,36,
-  45,33,40,43,51,39,51,37,38,18,12,11,31,61,60,44,23,24,22,9,2,216,144,149,
-  77,236,236,240,1,184,38,222,65,33,131,12,216,241,239,158,85,23,106,9,38,200,119,134,
-  213,212,43,139,176,178,11,1,244,206,105,61,68,33,210,109,43,21,108,101,14,159,63,160,
-  63,227,185,142,227,76,172,71,108,24,221,188,11,77,118,123,103,160,120,97,64,243,64,116,
-  56,27,183,75,138,123,248,44,76,35,106,170,3,210,31,164,107,151,106,71,49,206,213,78,
-  150,201,149,202,251,254,18,89,60,105,126,104,232,113,196,148,174,1,133,217,92,221,6,108,
-  244,211,97,36,5,116,230,178,215,61,198,65,21,16,158,181,89,160,250,116,86,134,129,189,
-  48,24,63,45,50,81,86,52,7,234,97,62,230,71,189,103,249,82,145,165,80,176,135,195,
-  73,228,222,255,17,131,45,246,92,127,44,158,79,94,223,102,177,228,104,195,161,160,120,40,
-  14,196,251,254,136,243,237,183,182,124,165,207,101,165,60,37,235,155,10,170,199,132,167,26,
-  227,127,79,89,3,180,121,209,101,125,75,142,38,202,21,174,119,112,191,157,139,143,163,121,
-  126,203,75,199,92,121,144,234,109,21,127,169,105,10,19,22,63,139,201,186,117,229,214,22,
-  220,246,233,8,26,237,83,185,30,21,150,210,37,190,33,206,95,142,47,34,35,84,22,178,
-  201,107,239,147,253,227,221,171,186,255,147,12,164,188,188,70,246,25,241,50,76,81,89,116,
-  144,9,158,60,65,173,135,241,206,198,18,51,223,36,207,229,154,89,242,167,114,138,170,198,
-  201,51,61,191,183,248,51,47,119,39,58,41,187,40,227,159,232,11,188,211,94,237,9,100,
-  145,38,214,24,238,8,10,212,253,72,246,78,214,131,175,73,158,109,65,232,67,217,103,192,
-  127,70,198,120,207,248,155,20,128,95,152,93,80,116,27,185,43,12,4,8,29,131,111,244,
-  20,64,11,9,44,101,43,128,255,91,59,195,5,136,16,46,155,36,61,87,103,56,195,116,
-  210,140,203,20,157,162,118,27,27,172,115,160,172,155,180,112,13,195,170,251,54,31,217,14,
-  221,22,216,185,118,74,177,205,106,237,181,58,96,33,71,223,154,136,124,115,225,25,99,7,
-  112,148,191,86,86,217,168,59,215,5,156,243,153,254,44,99,80,21,0,1,47,53,75,46,
-  46,38,26,25,12,12,70,71,65,6,5,6,10,9,7,7,44,42,23,36,231,209,91,139,
-  98,100,108,226,215,11,55,198,183,176,83,28,198,248,122,112,192,180,58,138,103,144,16,108,
-  184,218,179,54,51,63,178,239,96,38,43,116,193,25,57,176,8,114,162,210,204,94,50,80,
-  38,254,87,25,227,243,73,14,210,104,212,61,185,220,53,98,159,109,155,161,179,110,213,97,
-  199,74,130,255,202,210,161,175,127,216,172,249,55,196,117,149,141,75,53,215,36,212,70,116,
-  213,84,155,84,67,255,63,238,141,216,160,184,179,211,197,160,19,156,117,56,211,115,193,101,
-  155,164,32,206,225,201,140,236,214,61,245,123,241,234,217,33,220,21,109,224,49,141,180,135,
-  184,33,244,192,158,73,81,93,223,86,188,121,180,252,175,41,43,151,17,33,65,219,8,241,
-  55,89,0,248,185,241,206,241,239,254,84,118,129,51,41,184,233,102,48,220,234,238,236,207,
-  84,40,27,116,39,176,106,114,195,125,71,202,63,96,122,138,48,1,234,147,187,233,82,163,
-  200,145,108,119,184,208,33,143,225,183,235,64,223,9,45,66,93,47,174,76,243,69,12,33,
-  237,136,16,40,41,199,13,142,176,176,188,92,11,195,134,210,21,125,70,69,20,211,122,130,
-  103,62,107,40,10,33,111,133,143,87,61,195,225,215,121,174,209,88,242,242,69,122,115,48,
-  7,41,53,168,168,5,56,118,108,143,253,129,116,243,84,99,182,205,210,40,47,140,204,225,
-  0,69,119,100,187,28,75,120,228,121,224,35,206,228,131,11,207,36,52,65,189,204,134,91,
-  150,92,232,146,14,149,22,47,144,130,229,119,24,161,108,57,171,138,18,107,40,98,240,8,
-  47,92,246,32,55,123,215,211,3,43,245,105,217,56,203,47,68,84,111,116,88,99,23,153,
-  248,21,34,35,87,30,106,253,51,83,195,63,214,66,165,7,117,35,232,65,115,80,85,199,
-  250,32,218,94,227,48,140,61,92,186,159,21,182,44,204,111,33,4,174,69,76,158,85,178,
-  198,160,130,122,196,247,159,208,194,87,78,245,18,111,104,37,197,86,188,42,121,183,179,104,
-  5,153,219,160,234,122,181,141,220,100,114,216,179,251,98,9,232,179,124,212,78,215,222,136,
-  195,250,243,189,54,58,183,117,44,255,255,31,45,245,242,59,22,0,1,24,36,41,25,24,
-  34,33,28,33,26,29,17,18,36,30,30,11,26,32,56,49,64,34,10,7,9,237,76,52,
-  169,231,63,255,173,118,140,190,182,42,2,119,67,225,88,247,113,17,230,218,239,155,27,52,
-  28,146,210,193,214,188,4,57,148,54,179,77,31,226,6,172,147,185,158,182,160,64,4,65,
-  103,233,231,72,65,0,195,254,100,182,117,131,35,117,168,5,253,17,128,238,223,178,184,119,
-  91,123,121,165,201,154,176,151,88,103,87,145,3,156,169,249,72,59,235,58,218,126,60,170,
-  148,134,247,186,62,45,250,71,32,59,205,138,39,175,155,252,106,44,179,56,169,33,90,192,
-  241,201,72,210,44,16,233,121,215,214,130,253,123,67,73,32,107,97,0,123,58,236,34,7,
-  67,222,140,94,70,2,47,130,24,2,79,215,181,78,66,241,184,216,198,145,19,181,193,168,
-  215,152,241,233,64,232,224,62,205,58,161,249,22,123,225,194,18,145,188,68,243,35,54,186,
-  5,60,67,68,35,254,139,194,158,213,230,164,117,59,69,98,106,171,178,6,40,72,70,176,
-  224,192,96,42,149,192,65,197,232,253,71,201,207,77,21,3,201,211,211,143,139,182,65,94,
-  159,28,53,189,29,193,98,173,113,35,41,107,242,62,152,1,248,59,113,192,233,151,171,205,
-  105,113,25,219,29,173,181,19,65,113,157,51,25,67,200,163,217,89,106,186,163,120,243,114,
-  123,105,2,166,48,86,91,135,201,175,56,148,238,212,232,124,166,226,163,98,166,61,177,78,
-  239,212,180,196,209,178,167,43,155,221,199,188,159,168,189,95,180,55,116,82,170,94,136,231,
-  199,239,173,250,185,129,144,162,225,125,41,80,197,39,198,190,243,173,199,176,107,115,34,231,
-  188,186,241,124,241,227,18,167,85,174,251,221,66,195,68,183,115,48,92,111,100,75,110,136,
-  128,97,80,124,234,190,187,103,22,31,244,223,34,26,179,208,17,75,93,201,246,101,160,47,
-  171,139,115,39,210,140,215,20,52,112,13,100,90,10,239,187,245,112,59,111,63,131,13,68,
-  220,190,93,45,223,117,27,58,87,5,62,74,235,117,88,67,149,222,77,204,25,34,118,238,
-  53,7,33,102,255,239,3,72,184,188,75,46,53,21,159,39,184,223,3,106,206,47,138,31,
-  122,96,122,203,38,82,129,37,67,150,137,69,78,23,65,177,15,254,242,103,63,211,195,21,
-  0,1,39,49,65,34,50,35,35,14,13,30,33,68,46,44,16,14,12,5,27,27,52,26,
-  11,36,232,5,27,128,55,50,112,137,71,146,208,166,218,159,206,220,5,67,211,173,106,226,
-  35,102,62,47,25,112,64,189,67,168,35,130,120,106,4,59,82,124,221,250,12,32,217,33,
-  172,96,242,116,250,183,64,185,216,144,162,27,124,99,19,202,11,190,121,187,85,227,29,82,
-  134,125,110,232,212,229,217,149,153,102,226,90,218,53,50,17,166,13,120,192,58,9,18,250,
-  40,154,111,55,184,160,162,209,40,65,115,17,61,174,157,97,253,170,241,225,62,243,161,165,
-  23,215,206,244,61,129,35,32,246,189,145,252,37,122,220,61,68,79,255,253,170,51,244,152,
-  88,25,127,36,65,249,182,31,224,145,115,104,224,112,51,143,107,214,252,249,162,255,132,160,
-  57,13,21,206,20,57,207,126,113,39,52,87,117,227,42,214,105,46,235,16,36,65,172,254,
-  16,213,161,208,213,16,34,239,25,48,106,30,228,84,100,235,136,146,194,100,231,145,86,61,
-  107,144,54,167,217,1,181,24,101,229,208,93,65,182,5,67,52,25,69,55,169,129,146,223,
-  241,156,155,151,233,43,129,236,254,111,84,151,91,240,7,34,233,209,87,241,79,117,237,15,
-  73,169,115,18,182,96,92,247,112,171,138,166,112,105,217,6,186,214,110,13,21,139,9,175,
-  118,65,64,119,61,162,5,70,186,172,42,100,22,81,147,197,0,15,198,118,154,254,130,81,
-  156,54,167,98,161,10,25,156,196,161,28,71,181,202,235,64,142,141,9,8,149,58,45,204,
-  216,121,238,235,139,223,127,96,247,131,147,3,240,98,63,157,119,62,117,15,175,140,156,213,
-  136,162,128,53,151,193,177,254,7,100,139,253,149,16,167,254,108,176,46,232,86,188,189,37,
-  215,152,190,229,198,134,31,36,171,98,203,135,219,103,155,97,24,126,204,60,164,44,93,59,
-  51,221,159,152,156,58,25,156,35,149,255,4,187,210,250,4,34,174,217,97,75,24,122,247,
-  183,163,102,94,209,97,137,195,201,19,120,88,143,221,200,159,127,206,122,199,5,171,159,219,
-  250,148,248,46,73,130,67,131,227,127,2,178,35,170,217,14,222,147,224,57,21,222,217,143,
-  120,168,5,128,75,250,7,193,187,217,208,54,34,120,162,105,27,36,16,190,167,138,89,160,
-  11,0,54,228,222,2,15,25,98,44,255,249,35,215,240,135,57,23,0,1,16,26,39,26,
-  23,17,30,44,39,23,22,22,32,31,35,24,23,25,34,32,46,56,54,31,9,255,255,166,
-  18,208,165,97,224,131,202,3,80,183,213,72,22,225,28,239,212,185,84,39,98,112,12,54,
-  100,253,241,180,98,200,206,112,7,34,136,122,251,79,189,123,199,237,64,5,194,149,202,211,
-  94,169,53,98,10,24,240,30,218,254,231,25,208,33,109,11,19,92,170,5,71,231,206,246,
-  207,188,50,29,45,235,108,68,54,59,107,228,6,230,159,81,88,251,255,149,215,154,151,234,
-  169,141,248,133,223,80,173,56,220,244,182,1,125,96,32,83,22,151,48,29,174,239,111,133,
-  168,150,119,9,52,40,48,174,159,19,175,59,71,1,55,247,78,237,220,219,98,69,25,29,
-  217,61,58,252,89,238,134,130,78,36,30,131,238,245,20,220,59,50,75,198,174,10,67,3,
-  120,232,167,174,49,41,116,153,73,211,166,208,33,128,80,54,7,190,151,118,239,191,102,188,
-  215,39,150,107,177,233,88,160,156,134,229,225,100,82,134,93,61,187,59,194,38,114,67,116,
-  84,102,240,105,250,106,162,88,181,83,92,85,67,115,113,179,73,116,223,123,206,110,207,19,
-  95,175,32,187,243,36,247,150,11,230,146,213,117,125,191,178,244,37,150,190,242,121,16,0,
-  1,19,30,44,44,37,34,16,16,5,6,5,27,49,48,28,76,83,224,52,117,243,229,65,
-  115,122,62,59,26,255,179,212,2,152,56,194,26,4,99,221,107,176,215,74,141,177,56,71,
-  150,59,96,105,187,241,175,221,72,157,119,11,172,152,172,5,94,24,200,89,203,22,54,220,
-  111,30,134,38,105,169,46,210,202,126,199,115,196,72,249,210,20,200,138,56,125,145,15,188,
-  124,209,51,156,128,87,152,17,198,94,57,88,219,31,213,35,129,204,173,247,102,4,181,116,
-  103,215,111,11,214,208,150,236,11,37,188,154,61,167,236,214,100,85,93,47,213,149,146,209,
-  80,155,101,53,242,5,14,50,247,98,116,7,30,194,94,161,91,28,25,116,22,226,89,206,
-  176,169,10,150,121,183,203,223,24,148,95,54,11,24,206,204,59,149,94,92,11,190,166,218,
-  32,171,154,74,149,158,32,247,175,169,127,163,248,222,124,195,248,244,34,198,112,148,185,201,
-  13,154,194,205,253,192,149,110,84,96,195,75,174,61,115,166,204,8,38,21,103,127,225,239,
-  20,26,154,218,127,76,23,250,172,188,75,53,237,103,210,100,124,87,129,102,74,99,42,88,
-  39,216,107,118,179,45,240,205,27,173,83,229,28,53,176,145,151,195,11,2,177,219,40,8,
-  27,86,240,183,54,160,183,18,56,137,104,218,114,160,177,195,9,195,15,45,206,176,65,166,
-  236,246,80,44,101,202,98,107,253,129,14,0,31,29,50,20,20,3,21,42,47,38,18,15,
-  12,70,25,223,38,26,171,242,253,64,160,162,93,89,33,83,87,156,248,174,47,162,169,155,
-  194,141,123,12,29,19,145,194,38,194,222,205,209,31,181,144,50,59,88,253,236,229,156,170,
-  254,61,207,205,88,216,143,124,118,131,119,161,82,9,106,205,130,196,238,44,37,169,206,214,
-  41,250,22,186,7,29,246,165,127,240,40,184,254,4,139,64,132,25,238,236,161,191,147,121,
-  247,91,25,142,196,95,79,72,54,139,48,154,60,188,48,255,66,233,107,97,112,199,112,191,
-  4,80,212,150,228,130,87,1,87,98,161,94,109,20,89,215,118,228,59,107,10,182,58,70,
-  242,2,245,134,57,125,40,105,255,107,151,215,158,58,134,60,138,226,40,255,38,47,72,187,
-  101,179,26,52,72,189,146,199,130,114,41,236,31,110,0,216,183,160,185,188,60,127,229,85,
-  137,59,205,7,63,194,6,114,241,63,142,177,235,106,23,248,39,48,41,36,74,153,16,170,
-  61,170,127,12,55,167,11,136,168,72,243,115,145,42,178,219,113,134,204,71,105,37,206,44,
-  118,227,214,180,119,137,47,253,183,74,202,62,70,246,158,58,70,122,148,191,104,61,122,83,
-  198,111,197,234,30,43,216,1,134,48,100,184,117,39,224,239,21,78,134,12,70,178,208,197,
-  116,195,113,179,128,123,150,74,255,63,140,48,203,106,250,43,153,66,251,63,155,147,33,69,
-  131,79,68,59,7,209,234,1,127,212,162,135,49,127,78,106,247,135,172,127,124,144,36,79,
-  234,253,243,59,96,215,162,112,250,202,175,79,125,245,101,205,63,78,79,83,42,222,223,35,
-  62,189,228,151,202,190,156,108,204,156,60,135,60,90,231,176,193,57,254,238,133,67,60,247,
-  29,109,193,67,134,82,9,38,225,77,87,190,133,103,107,195,201,126,177,92,60,11,156,245,
-  220,33,2,153,202,122,42,245,83,9,46,140,147,242,24,77,40,28,238,97,204,106,71,82,
-  165,209,144,112,187,113,111,26,33,49,195,53,193,250,150,83,22,39,190,241,185,92,170,186,
-  14,94,194,23,57,99,207,36,119,226,194,20,6,31,247,227,207,225,98,192,184,6,193,5,
-  134,159,48,155,20,245,78,167,99,180,202,254,71,146,237,74,204,199,17,142,40,62,130,72,
-  145,155,231,216,214,152,149,188,225,166,112,217,135,79,77,135,140,36,112,248,164,235,82,154,
-  111,181,177,192,204,149,81,10,182,153,26,255,88,56,19,25,36,248,136,23,230,247,22,49,
-  56,20,114,208,62,200,84,233,253,75,55,207,96,152,162,73,59,206,187,22,7,110,72,177,
-  124,190,88,25,228,42,179,23,204,112,47,225,232,4,61,233,229,138,0,17,0,1,45,71,
-  75,40,67,63,62,23,26,41,61,69,55,26,16,8,7,3,242,66,182,95,31,65,153,193,
-  218,88,213,123,148,97,25,15,71,36,146,192,114,38,121,78,63,131,1,133,191,129,121,46,
-  31,71,169,249,205,130,104,111,137,119,161,90,213,164,149,164,160,102,219,163,132,91,81,125,
-  153,17,8,3,113,66,5,99,26,200,13,108,19,143,61,9,74,79,79,217,114,56,159,172,
-  47,121,82,7,209,1,203,88,132,48,161,236,124,105,123,38,122,205,162,7,201,76,90,136,
-  117,190,160,80,58,234,11,231,232,150,169,5,78,213,75,73,126,191,245,70,197,195,93,71,
-  150,239,239,44,221,16,156,102,156,94,38,100,203,217,102,231,231,68,212,126,127,210,222,254,
-  180,199,65,48,190,106,88,208,162,119,176,196,251,214,88,72,94,75,165,135,24,90,41,115,
-  212,115,2,37,158,77,5,99,213,183,233,226,165,91,82,203,197,209,184,27,209,111,184,31,
-  249,88,75,179,52,230,168,130,64,132,125,150,12,101,175,254,248,227,7,205,39,239,13,163,
-  216,234,242,243,32,255,80,71,53,87,1,8,15,94,10,20,14,136,243,190,120,193,205,43,
-  21,34,138,129,34,161,22,62,56,246,96,93,199,91,87,228,26,95,205,215,1,254,86,168,
-  28,90,156,150,251,147,10,118,167,226,189,238,56,81,226,11,156,75,69,151,47,241,68,39,
-  152,141,3,68,196,117,16,227,45,241,71,146,234,241,105,169,150,221,247,156,230,225,170,68,
-  169,62,251,41,242,203,223,6,83,134,186,250,49,61,125,140,165,156,230,136,201,83,208,187,
-  167,83,136,188,197,122,118,98,91,25,134,25,89,134,179,26,126,37,42,100,205,112,40,147,
-  58,230,43,239,39,212,96,20,234,190,132,111,231,187,216,142,76,151,177,97,166,87,119,190,
-  6,134,230,184,124,83,145,84,40,110,217,54,225,17,199,59,155,56,116,131,82,245,229,167,
-  207,116,79,18,147,21,79,170,215,103,10,69,71,243,28,117,122,102,97,61,239,133,24,190,
-  39,126,124,84,194,100,142,85,243,68,141,37,254,255,236,210,239,30,135,114,66,216,21,0,
-  1,29,46,75,55,53,39,31,29,18,16,33,36,49,27,20,12,11,14,43,49,52,17,6,
-  255,252,230,245,29,81,121,70,169,10,49,132,229,144,224,89,147,4,191,16,160,85,127,216,
-  58,2,10,58,108,183,129,108,156,171,215,37,24,179,122,74,230,171,68,103,155,159,189,138,
-  61,63,210,253,65,54,232,208,71,153,79,194,163,59,73,127,140,160,137,89,14,65,160,128,
-  106,206,103,1,33,47,97,23,194,3,81,205,231,69,208,91,182,50,196,37,80,253,20,37,
-  161,177,231,242,13,174,202,245,63,159,247,83,195,231,232,136,115,218,95,74,33,112,224,107,
-  232,151,13,204,116,255,122,226,124,74,36,27,108,161,88,205,195,108,128,251,244,191,204,171,
-  243,72,226,243,22,45,248,83,62,142,196,148,148,80,145,157,133,3,141,184,75,192,65,53,
-  193,252,162,124,191,95,216,235,162,212,89,215,210,45,46,124,217,26,13,146,200,25,244,57,
-  92,193,221,47,199,17,214,242,194,250,124,187,196,188,229,150,95,206,77,60,176,159,30,237,
-  98,13,200,59,11,188,144,231,106,166,102,187,205,83,151,98,248,38,191,228,238,221,126,248,
-  251,249,147,142,157,145,200,196,255,78,56,159,159,60,197,199,1,31,221,184,212,100,132,233,
-  5,18,21,117,194,147,3,255,209,50,49,157,139,18,156,29,53,96,127,46,34,20,164,219,
-  34,34,36,72,61,61,228,96,247,215,14,179,81,5,170,204,24,43,33,144,169,73,77,146,
-  118,222,185,74,146,96,248,218,7,243,80,42,17,8,39,63,214,79,243,200,14,132,155,98,
-  112,10,105,177,15,107,108,46,125,255,217,92,146,103,157,232,77,215,127,144,206,159,164,54,
-  30,187,142,229,11,153,219,179,131,73,90,149,18,77,60,243,141,140,183,108,133,0,141,198,
-  48,255,193,223,107,213,168,173,164,69,240,124,115,238,88,104,29,39,152,45,163,218,138,183,
-  241,226,241,85,147,144,254,63,164,225,192,21,0,1,9,27,39,31,22,11,21,18,25,30,
-  43,42,49,35,29,5,7,55,72,103,53,33,243,20,66,2,120,57,2,213,218,101,76,15,
-  137,22,202,139,189,142,78,118,121,211,100,160,79,40,20,173,102,190,54,108,28,198,51,12,
-  204,172,219,7,208,80,237,233,15,137,93,86,234,58,195,200,231,129,54,8,1,26,148,205,
-  117,235,250,238,128,185,106,163,78,203,144,171,100,56,217,58,172,36,170,115,25,243,174,180,
-  229,118,116,61,188,0,74,171,153,212,112,232,94,91,178,55,89,224,197,81,171,35,134,212,
-  252,146,208,86,140,54,152,107,228,81,174,189,126,230,34,236,139,72,124,93,117,75,93,4,
-  132,68,230,42,167,176,209,233,47,191,11,124,49,239,144,136,252,17,215,94,18,22,241,140,
-  63,58,209,140,99,20,230,95,195,126,109,238,216,67,174,203,11,125,133,69,10,134,159,171,
-  174,128,139,206,146,151,98,244,152,76,180,69,77,241,11,65,36,18,212,229,9,173,40,37,
-  190,182,23,159,241,188,174,20,62,179,154,229,51,132,111,255,40,15,71,199,204,15,163,248,
-  157,229,166,10,205,218,181,117,224,78,248,115,232,34,110,236,164,213,117,215,220,120,89,192,
-  198,131,57,28,240,100,21,69,42,245,111,58,76,232,180,49,147,93,231,6,184,35,120,81,
-  227,136,117,128,45,198,94,95,100,52,18,126,130,32,83,103,47,44,214,85,102,213,115,211,
-  70,104,12,193,33,108,197,0,108,184,142,205,25,205,190,33,28,153,169,46,122,186,251,173,
-  64,94,114,175,39,17,133,104,218,139,164,67,133,146,214,17,128,59,244,228,0,229,169,194,
-  215,187,254,251,198,208,87,226,222,162,14,220,224,205,13,11,196,199,167,37,164,157,194,154,
-  34,200,194,170,40,123,158,140,73,22,206,205,153,254,36,249,137,141,171,98,26,222,77,76,
-  153,18,197,158,185,50,206,218,24,251,70,115,149,143,57,83,197,57,11,143,4,16,110,36,
-  164,254,169,96,72,194,47,247,82,185,114,26,7,249,94,177,211,106,59,129,78,178,75,179,
-  179,235,80,61,21,75,15,176,9,16,238,226,222,120,143,124,185,16,97,124,94,192,36,61,
-  33,3,71,43,166,167,14,21,189,201,82,185,2,248,239,130,51,16,0,8,30,46,49,28,
-  50,43,50,28,32,25,28,62,61,44,4,2,245,93,105,3,35,115,1,4,27,53,95,121,
-  153,240,45,60,179,63,220,231,249,157,31,134,91,246,236,211,117,142,61,145,212,222,184,251,
-  91,126,36,57,100,54,118,152,202,237,134,132,90,22,129,209,241,231,115,152,234,45,85,224,
-  63,53,214,46,218,51,152,70,108,67,167,189,237,188,255,137,215,9,54,211,79,225,228,19,
-  229,231,98,56,250,80,177,233,178,32,154,208,44,198,101,126,60,220,66,134,120,166,97,223,
-  241,126,239,18,111,28,70,85,31,30,18,0,55,88,61,10,155,177,15,192,118,130,125,176,
-  143,120,100,74,102,181,34,120,20,147,39,4,95,124,213,70,58,93,206,191,222,24,246,167,
-  170,191,124,98,170,29,186,55,185,8,115,47,29,90,145,41,98,129,238,134,194,128,98,135,
-  189,207,240,174,130,123,170,5,233,164,7,186,175,246,166,41,132,65,2,232,227,44,37,3,
-  12,205,115,117,187,62,74,177,85,27,217,165,89,6,227,67,245,56,29,169,104,114,86,101,
-  146,61,160,89,131,59,131,6,218,98,80,108,142,20,81,57,167,180,68,151,240,83,16,196,
-  16,251,110,60,165,32,203,15,208,104,223,46,114,206,240,87,71,131,215,40,14,120,68,137,
-  21,4,67,106,70,104,14,54,36,218,245,153,186,176,199,32,20,207,95,227,110,62,172,189,
-  130,179,129,165,70,148,54,227,91,218,54,231,196,183,152,206,29,178,188,204,65,217,139,83,
-  237,200,35,177,86,126,102,86,33,92,130,89,57,147,34,46,16,168,27,95,102,206,175,94,
-  186,85,65,250,101,154,207,95,109,40,19,22,80,15,133,17,121,1,41,15,27,116,48,111,
-  254,219,76,170,140,187,81,15,109,88,117,42,126,134,69,73,42,28,147,18,68,189,77,75,
-  194,128,169,172,135,115,79,38,87,183,146,198,52,4,96,173,203,61,229,28,65,255,55,107,
-  217,81,251,103,141,226,128,123,63,204,120,140,139,27,172,109,240,55,19,118,97,153,24,56,
-  159,183,102,82,210,163,133,171,238,197,135,152,15,90,118,224,47,239,5,183,16,84,114,63,
-  11,23,225,31,19,103,2,85,169,139,176,139,237,24,244,220,49,146,107,22,71,162,37,95,
-  225,42,77,130,237,220,212,169,192,45,236,232,0,20,0,14,15,23,54,67,65,67,52,49,
-  4,5,10,17,17,14,8,32,59,67,64,234,74,36,105,3,39,199,202,60,201,107,114,248,
-  240,181,87,239,204,145,179,229,225,108,238,13,163,128,196,224,56,69,142,10,203,120,50,150,
-  24,197,50,224,85,5,121,146,37,61,11,3,10,168,56,236,252,154,107,221,210,57,188,80,
-  11,129,222,109,47,189,164,28,189,51,159,90,133,83,74,115,132,79,66,204,128,255,161,186,
-  12,34,8,155,89,19,2,105,245,209,241,45,95,8,101,122,6,215,121,103,92,28,191,216,
-  119,161,232,143,251,119,79,244,73,38,31,168,252,83,126,55,184,2,157,198,201,209,16,252,
-  81,196,218,129,174,35,69,34,175,254,11,140,20,148,252,237,162,143,180,194,67,112,160,46,
-  222,32,151,39,218,54,225,70,26,231,115,124,240,48,166,167,233,192,78,26,226,90,142,156,
-  216,210,186,92,65,32,72,236,77,223,180,119,125,213,207,15,187,104,49,99,14,98,41,35,
-  231,163,131,69,220,25,74,135,224,207,16,34,110,2,97,224,202,74,46,17,18,39,243,137,
-  26,91,172,238,50,89,129,196,213,127,81,138,99,87,168,28,134,219,176,239,205,147,21,94,
-  90,46,12,223,135,39,8,81,199,242,229,241,233,33,187,65,201,107,112,176,131,152,41,193,
-  26,54,63,232,221,237,102,182,121,168,119,2,27,151,146,67,128,67,166,64,93,100,173,115,
-  198,174,33,129,158,171,51,1,92,250,80,181,244,52,27,82,25,21,85,153,151,171,65,210,
-  41,93,118,116,5,228,202,4,224,12,170,185,100,14,43,68,159,209,15,69,78,63,152,112,
-  227,172,150,130,208,47,206,20,225,141,24,170,236,208,196,13,70,140,242,160,238,249,231,4,
-  199,55,51,76,44,159,20,122,33,165,9,76,119,206,236,54,117,252,234,122,146,178,41,172,
-  145,74,215,64,53,19,119,72,44,97,219,226,66,40,109,50,238,68,31,250,173,169,8,17,
-  183,93,180,113,49,129,220,96,255,205,44,185,236,91,97,192,40,214,239,43,183,92,30,62,
-  57,95,146,195,157,104,194,165,8,46,1,131,84,104,220,50,239,156,52,128,167,106,248,191,
-  194,49,254,118,204,181,178,51,179,161,49,89,201,248,126,143,45,62,110,237,77,153,43,63,
-  140,51,0,66,68,111,165,59,244,249,109,191,106,231,139,47,5,196,249,121,9,91,234,166,
-  31,197,99,50,82,241,145,126,12,200,253,24,229,72,145,123,165,98,92,220,162,175,229,246,
-  241,241,223,70,245,87,115,241,225,183,251,124,163,52,67,146,135,146,248,40,193,115,0,19,
-  0,10,10,57,90,92,61,27,24,12,5,5,49,62,65,22,21,30,42,32,220,20,54,155,
-  124,32,0,52,76,60,12,48,117,44,194,245,0,221,230,100,225,101,97,48,173,150,246,196,
-  7,107,201,66,1,24,29,8,134,6,251,205,192,174,181,223,81,222,192,41,125,197,239,136,
-  31,125,167,137,8,191,0,46,166,63,34,226,6,161,61,44,100,249,127,83,188,52,74,112,
-  164,222,236,143,103,214,170,32,100,31,181,214,24,68,20,96,126,130,112,17,94,50,244,208,
-  155,175,195,54,167,128,48,69,248,176,254,36,254,234,74,239,142,192,7,237,65,152,150,129,
-  29,216,254,185,60,63,115,225,79,211,134,82,138,147,138,193,253,59,134,178,111,64,74,92,
-  0,123,199,167,223,12,91,223,61,177,223,247,108,31,1,158,127,73,39,250,162,34,226,3,
-  60,163,53,8,156,126,35,110,182,251,88,0,238,119,167,55,114,48,233,73,79,231,17,103,
-  220,235,216,107,51,73,211,232,181,4,184,73,39,180,90,200,57,13,207,65,246,87,185,11,
-  85,43,204,169,147,119,111,236,183,161,197,211,8,248,84,17,198,199,243,173,150,146,12,17,
-  56,238,138,215,26,125,37,35,171,225,218,45,49,24,9,216,118,249,222,72,210,210,81,139,
-  131,37,53,4,8,83,253,153,59,181,194,128,57,197,105,115,137,180,167,251,186,192,189,144,
-  106,122,143,53,85,181,7,196,175,5,243,205,237,252,184,205,26,166,104,5,95,132,220,4,
-  214,46,6,172,177,27,58,52,237,189,182,23,107,152,10,96,201,171,70,113,248,96,240,242,
-  254,140,33,97,74,82,193,73,107,197,159,168,147,163,219,222,219,112,44,8,12,72,40,98,
-  168,30,145,14,187,173,40,1,210,130,191,3,215,194,208,246,115,202,196,49,22,36,40,28,
-  234,101,242,82,78,203,99,172,59,61,35,65,231,24,175,155,69,187,241,220,74,224,243,187,
-  218,224,246,33,188,186,158,176,202,124,7,40,241,69,243,154,79,182,198,81,59,197,37,112,
-  247,207,149,28,97,152,141,76,162,237,125,74,141,20,57,251,181,147,215,20,43,116,141,111,
-  76,17,176,172,146,244,13,59,53,89,92,111,63,156,163,187,153,34,224,243,159,211,243,29,
-  236,71,65,128,162,62,155,117,83,178,7,31,100,181,63,61,102,255,153,186,138,7,115,146,
-  172,25,11,89,70,143,152,155,183,234,111,94,248,41,138,204,109,209,58,188,36,248,205,2,
-  112,209,75,240,118,243,95,132,157,181,137,89,72,161,182,43,222,103,43,46,213,42,98,226,
-  27,151,150,58,7,29,57,143,89,162,58,55,160,24,220,186,224,65,72,14,254,64,28,218,
-  63,176,224,13,186,233,132,220,201,181,228,235,36,77,49,188,223,109,34,161,81,55,29,115,
-  121,51,46,63,162,243,255,110,10,116,221,228,157,241,149,177,9,10,255,159,46,72,85,47,
-  240,224,251,119,232,226,182,179,193,143,26,103,139,204,254,147,49,57,203,228,236,62,175,234,
-  106,158,156,34,171,125,43,17,90,202,55,241,106,169,172,117,174,13,188,185,122,200,5,209,
-  148,134,135,78,143,198,17,58,180,201,104,189,217,9,8,222,222,1,62,65,44,128,226,94,
-  231,16,230,176,254,4,40,193,68,16,0,1,50,59,75,49,43,28,27,27,28,23,47,62,
-  46,32,18,59,46,76,36,117,195,83,139,148,190,148,208,124,152,253,143,48,250,217,192,135,
-  157,143,167,221,157,251,75,197,95,96,210,236,36,43,152,64,9,168,24,71,126,144,163,211,
-  164,87,40,191,70,71,3,38,63,33,2,73,140,110,84,160,124,126,66,49,190,163,200,157,
-  157,237,17,236,107,77,225,160,101,186,87,68,68,68,54,115,171,43,204,120,201,195,103,147,
-  76,47,106,72,198,115,40,66,16,110,92,63,122,152,232,219,92,60,82,141,192,230,220,25,
-  226,44,64,57,33,6,73,113,78,195,157,195,86,161,252,139,73,202,240,72,168,6,35,138,
-  164,8,178,213,204,220,225,232,18,37,59,224,153,123,20,23,115,84,35,128,172,230,25,156,
-  104,69,0,130,232,217,87,192,226,120,227,236,25,40,20,222,51,246,132,54,83,110,129,150,
-  124,76,50,164,213,135,164,97,216,184,90,243,217,48,208,68,154,8,150,66,111,155,38,227,
-  245,62,255,245,163,45,249,237,248,242,106,222,5,219,62,116,94,57,134,148,101,15,125,61,
-  229,254,136,52,229,90,187,171,169,59,2,37,179,136,181,27,131,144,31,135,236,92,119,135,
-  8,24,118,208,185,234,174,167,77,191,110,235,129,112,109,49,33,36,179,102,203,48,233,133,
-  239,226,31,198,224,125,109,7,126,181,250,160,79,243,184,155,233,73,115,6,121,200,155,201,
-  75,203,177,26,65,139,13,152,178,172,8,161,12,218,203,18,205,219,81,121,239,30,204,21,
-  202,15,88,33,251,187,84,226,204,115,246,31,213,166,28,153,145,137,10,96,10,46,234,55,
-  113,208,161,245,163,235,214,236,36,60,60,180,55,95,75,99,222,73,102,79,189,169,242,143,
-  98,239,48,14,201,129,195,9,132,135,228,117,190,69,206,251,103,194,195,100,116,17,239,112,
-  162,70,111,63,134,182,157,85,202,190,191,161,95,47,142,93,123,31,147,78,121,116,233,84,
-  49,74,248,139,182,36,175,139,213,247,250,166,108,198,12,178,235,66,184,70,90,225,231,199,
-  221,123,4,131,219,155,105,154,175,27,247,4,13,15,204,136,243,11,195,96,154,239,255,254,
-  30,214,114,129,0,17,0,1,9,14,15,9,12,12,10,15,19,36,26,23,5,16,68,148,
-  111,200,121,76,254,60,112,195,243,255,96,172,165,49,98,172,168,30,12,147,245,126,202,18,
-  201,105,161,134,193,211,41,71,98,216,57,122,147,232,244,241,108,81,1,71,28,212,49,7,
-  32,190,110,29,167,169,48,59,193,112,206,78,25,124,22,166,58,140,217,64,62,64,34,34,
-  152,182,201,25,25,214,20,63,165,225,66,97,23,9,114,153,150,25,91,130,150,239,49,80,
-  72,76,15,242,144,251,67,94,27,209,146,253,77,98,95,242,113,238,245,218,135,105,82,162,
-  113,231,151,232,147,190,233,255,59,146,58,213,78,58,136,91,182,113,199,127,222,220,133,61,
-  107,33,20,57,119,241,29,236,50,105,89,255,29,26,143,194,72,123,19,190,27,74,179,21,
-  110,235,46,252,208,193,248,113,61,89,162,239,214,165,7,118,83,232,215,224,43,218,196,255,
-  249,122,129,146,93,204,235,12,221,173,86,46,53,153,155,149,181,192,167,89,197,210,59,116,
-  71,207,78,221,136,234,151,103,8,92,183,46,183,21,242,168,108,89,191,37,21,199,138,37,
-  105,153,25,253,194,72,183,102,182,242,97,147,242,203,0,192,162,51,56,154,208,26,44,67,
-  14,88,43,125,23,143,26,13,86,185,237,51,95,18,34,31,29,151,47,159,162,42,189,228,
-  31,102,33,131,133,173,247,144,68,30,83,243,33,21,150,222,187,191,63,89,162,3,78,84,
-  168,82,64,189,133,38,144,147,119,164,85,62,161,84,37,162,30,87,96,82,192,240,171,249,
-  165,197,160,82,239,243,104,81,141,70,21,134,198,166,114,158,23,232,39,183,231,44,153,190,
-  217,33,143,62,90,129,103,36,235,16,39,135,136,150,87,63,141,25,41,246,243,57,69,136,
-  92,28,76,189,100,128,158,183,157,4,218,245,91,5,177,199,68,199,118,60,32,178,82,206,
-  231,117,212,127,188,46,216,43,160,133,70,2,208,29,7,232,104,232,66,100,149,46,84,58,
-  143,30,178,184,88,13,40,230,59,12,182,195,227,204,23,35,25,203,117,244,179,95,209,215,
-  121,135,15,26,153,234,245,204,82,153,56,74,82,182,200,212,89,67,235,5,32,192,40,122,
-  130,113,59,202,118,121,250,205,154,217,140,251,127,109,86,68,65,62,226,116,232,47,124,22,
-  146,30,19,233,83,205,145,152,171,16,58,92,182,67,253,153,128,20,232,175,140,207,53,168,
-  89,168,181,184,86,65,7,44,80,91,27,117,136,139,197,79,69,221,201,44,229,103,163,56,
-  120,221,133,110,199,182,141,12,88,123,192,210,29,190,202,41,39,244,18,230,160,218,110,29,
-  205,200,180,61,247,123,110,231,130,221,197,47,157,122,210,197,22,130,154,47,24,14,253,112,
-  180,125,219,16,0,22,22,26,42,47,53,16,16,8,8,5,48,49,56,22,118,47,180,87,
-  76,244,128,200,132,192,74,86,3,75,102,37,106,67,147,56,2,229,136,105,133,37,27,78,
-  167,202,37,62,16,59,98,89,81,255,5,233,47,66,157,164,124,216,28,166,14,60,20,197,
-  232,16,184,53,148,240,172,234,55,41,186,184,213,18,57,46,255,120,27,133,100,86,182,159,
-  163,60,210,35,242,183,114,0,97,242,150,8,56,0,158,216,110,93,147,163,106,110,215,75,
-  96,97,168,64,236,33,13,241,222,140,16,189,127,198,243,153,59,32,231,21,68,66,186,112,
-  68,170,50,205,222,226,78,85,164,192,157,66,207,229,156,70,119,252,39,121,219,144,215,168,
-  120,128,168,34,135,45,243,85,224,226,243,15,165,222,142,152,95,94,16,102,233,165,226,57,
-  188,2,165,133,203,232,63,107,184,71,151,221,17,162,207,95,32,60,228,220,105,103,30,145,
-  167,140,104,7,179,9,99,31,22,87,157,219,242,19,96,208,121,125,39,36,242,220,131,41,
-  246,9,122,152,163,64,190,122,37,40,96,43,37,55,240,210,150,251,44,5,239,28,200,168,
-  187,99,249,222,168,14,117,188,79,63,18,5,151,225,16,181,102,233,215,12,57,208,151,23,
-  146,42,89,106,61,223,116,32,181,80,88,10,126,178,50,89,75,7,202,126,161,104,56,96,
-  37,157,95,171,136,220,56,20,49,110,185,55,71,151,198,22,91,60,72,193,148,71,112,151,
-  165,158,249,43,235,201,239,48,251,91,133,31,25,182,136,216,255,167,6,221,208,43,189,43,
-  112,203,110,212,158,5,69,177,54,211,33,117,27,225,172,120,68,126,76,185,13,152,67,239,
-  246,51,33,88,35,53,6,109,25,121,81,158,96,214,146,77,252,189,237,146,120,37,214,186,
-  74,91,28,125,45,219,44,96,205,140,213,26,109,245,96,181,139,221,182,91,136,10,117,158,
-  186,233,142,227,227,24,228,35,45,214,127,17,154,203,128,169,74,32,20,182,28,215,8,31,
-  50,43,171,198,172,11,81,200,69,78,11,254,246,110,201,82,79,128,176,255,176,24,201,142,
-  164,201,34,96,32,123,196,73,235,66,18,31,232,188,150,10,101,147,111,204,94,153,110,233,
-  223,39,195,52,247,56,206,94,36,233,185,116,63,235,207,16,197,43,146,25,77,70,172,89,
-  251,4,162,137,234,250,97,24,249,137,108,156,86,73,225,77,150,247,213,177,126,0,17,0,
-  7,6,26,24,42,25,26,9,9,40,43,46,10,7,18,19,140,71,77,5,143,142,23,101,
-  80,178,207,240,235,127,232,239,36,1,250,131,248,68,126,86,190,210,165,178,252,248,233,45,
-  185,116,106,120,86,73,42,92,7,18,46,22,172,169,239,237,118,224,163,42,220,39,146,211,
-  11,147,132,88,106,17,103,107,192,59,205,206,46,160,176,58,251,231,220,25,236,82,219,27,
-  107,212,157,131,150,246,161,72,245,182,154,210,124,250,168,13,156,184,34,135,186,164,55,40,
-  118,187,9,161,201,216,143,251,156,195,60,204,72,59,232,90,213,212,118,47,101,226,213,18,
-  139,216,146,51,37,136,230,211,59,56,214,179,107,232,92,103,23,72,61,86,249,16,37,103,
-  1,48,148,88,164,167,237,201,206,184,114,118,168,253,127,28,121,248,170,93,252,114,114,216,
-  92,66,165,134,96,250,52,181,246,167,169,113,70,243,212,86,195,0,209,245,235,54,207,185,
-  196,225,69,74,230,0,245,121,23,196,199,135,196,146,129,27,21,234,101,163,157,251,174,30,
-  51,36,221,33,219,131,185,69,229,185,56,87,96,13,248,92,152,157,224,248,148,228,18,255,
-  1,221,16,131,71,100,184,114,250,155,254,117,164,73,131,151,206,94,43,53,96,50,73,108,
-  82,171,143,6,4,82,183,29,203,76,179,3,87,148,69,185,26,49,224,135,48,125,22,101,
-  98,59,205,197,158,82,206,115,227,128,55,181,98,223,130,174,97,13,157,172,215,34,222,168,
-  166,122,188,125,167,148,86,229,43,223,151,138,138,33,10,215,137,175,231,182,158,180,223,39,
-  91,241,12,90,92,1,53,147,50,168,126,192,170,188,59,132,174,202,241,200,157,25,89,59,
-  30,200,48,12,221,232,151,223,78,7,41,62,56,94,184,62,59,175,89,201,94,77,68,250,
-  184,80,240,130,42,81,78,144,71,46,203,112,123,227,49,165,242,119,188,160,247,11,158,145,
-  76,232,162,144,2,118,155,1,7,171,199,194,17,133,11,79,119,193,79,146,157,72,200,194,
-  189,164,237,176,118,49,82,10,170,57,75,82,232,131,136,144,29,86,190,206,244,204,171,235,
-  78,120,139,19,43,155,169,96,24,217,236,231,230,16,93,158,233,4,184,155,213,81,63,97,
-  70,12,76,136,219,40,17,176,172,240,233,165,198,107,62,178,180,172,181,32,89,157,193,190,
-  126,61,17,195,215,66,159,14,215,100,59,44,123,45,88,58,157,199,168,55,175,129,3,72,
-  177,233,189,214,197,6,238,185,141,75,255,69,44,193,72,45,44,6,41,213,18,198,126,197,
-  40,183,145,57,76,39,12,17,205,54,80,101,248,228,15,87,160,48,122,114,96,86,161,15,
-  180,204,0,13,0,26,35,55,30,57,64,64,26,3,3,4,63,81,71,21,101,35,52,171,
-  192,204,171,150,54,192,179,47,116,148,169,171,197,104,172,149,74,22,218,19,41,124,101,68,
-  232,33,218,215,202,23,214,132,9,88,223,150,61,23,137,165,181,128,206,105,65,27,122,115,
-  216,48,70,119,163,239,24,181,13,13,136,70,192,41,165,227,193,185,78,138,204,104,190,133,
-  243,129,148,30,251,2,80,130,245,117,189,129,45,87,67,122,200,137,122,254,176,117,93,203,
-  148,144,135,93,47,83,108,219,229,227,201,111,155,3,109,121,189,127,118,31,73,113,22,163,
-  70,17,195,251,110,170,46,245,51,89,73,21,242,244,199,155,35,199,30,207,182,130,222,186,
-  119,207,209,84,80,161,28,214,253,109,219,133,172,133,238,104,111,118,41,99,235,97,80,202,
-  246,56,12,56,149,28,75,13,154,195,232,183,194,66,58,5,234,119,46,245,136,241,34,52,
-  206,103,60,150,10,214,83,169,6,153,65,76,151,31,162,106,234,108,247,115,144,83,24,159,
-  160,131,68,53,238,18,133,221,60,68,71,115,231,95,161,240,55,64,102,172,88,165,81,30,
-  251,245,214,61,87,107,25,13,56,209,193,97,51,54,126,183,152,149,167,33,215,182,185,52,
-  189,47,186,42,110,116,178,205,3,2,131,150,51,39,73,91,54,225,149,247,26,121,28,75,
-  179,21,130,48,85,203,188,99,190,189,27,248,50,166,207,232,36,231,71,33,82,57,249,56,
-  160,64,51,216,255,91,194,131,134,8,244,102,54,34,170,49,107,178,84,140,101,167,70,43,
-  211,121,206,189,50,224,81,199,66,248,21,107,200,119,245,195,179,49,217,209,194,64,74,3,
-  105,103,122,211,29,18,20,18,227,196,53,33,115,221,158,185,217,99,186,229,186,205,137,16,
-  6,160,104,142,255,122,198,251,138,19,227,231,120,142,242,133,17,178,56,77,70,61,60,221,
-  251,57,54,179,225,239,198,152,179,143,74,227,174,92,104,120,67,59,220,38,188,155,185,57,
-  84,50,11,210,162,20,227,83,4,2,15,60,18,166,8,200,204,111,186,15,33,11,3,18,
-  211,96,212,9,233,68,18,246,190,250,53,85,34,12,49,184,8,255,223,44,159,173,240,208,
-  196,187,117,172,25,30,0,250,31,0,15,0,26,26,41,21,35,26,22,13,17,20,33,56,
-  52,36,115,56,58,112,195,71,58,163,98,69,248,24,40,36,52,33,13,195,98,160,207,91,
-  17,85,154,223,69,156,244,250,174,224,0,225,7,172,58,149,21,2,71,24,88,65,13,221,
-  217,129,238,35,113,53,29,85,254,246,227,226,53,221,191,178,82,85,182,138,14,145,120,182,
-  15,152,181,153,34,198,157,16,75,107,55,181,104,174,248,179,36,29,58,241,165,136,227,45,
-  73,29,241,89,255,243,232,202,59,68,24,119,62,120,14,178,130,215,228,185,168,121,114,91,
-  140,16,42,203,136,7,209,221,10,141,80,63,31,53,226,58,139,101,15,67,198,100,82,68,
-  135,80,158,113,142,61,233,144,129,133,78,181,76,26,203,53,34,31,50,3,71,166,182,19,
-  90,162,166,85,253,79,41,162,92,108,243,132,201,214,76,135,221,115,9,123,77,50,23,8,
-  185,204,235,144,75,226,24,212,201,239,187,140,100,25,177,173,13,179,177,33,180,73,232,193,
-  206,31,29,103,56,242,218,109,187,60,88,54,44,99,188,141,252,156,135,139,252,244,54,15,
-  94,211,63,22,35,50,123,1,63,45,230,227,37,131,28,124,93,22,28,73,30,72,176,159,
-  79,183,121,16,170,132,196,122,118,36,49,168,90,238,38,139,114,147,84,175,129,223,251,198,
-  109,239,159,117,155,63,200,173,193,237,93,229,13,121,122,219,178,8,140,21,172,135,100,61,
-  34,181,73,86,25,4,12,231,72,252,213,142,65,0,81,222,200,36,252,18,29,240,170,131,
-  143,39,111,173,112,134,12,33,40,105,229,191,89,86,123,142,127,115,204,151,160,162,151,55,
-  77,118,73,154,92,202,112,251,164,15,114,74,97,115,123,228,202,127,178,126,254,202,114,79,
-  200,121,173,210,186,199,70,16,117,115,38,12,51,61,132,17,141,59,115,185,218,58,34,54,
-  158,11,165,95,29,6,1,160,62,158,39,6,149,7,248,162,67,181,2,186,55,101,156,144,
-  225,15,248,165,229,76,165,79,101,119,21,83,228,109,184,51,92,241,145,240,204,81,188,181,
-  123,168,67,153,182,40,1,102,57,26,73,220,18,23,182,39,178,245,123,191,85,61,61,254,
-  202,11,159,226,11,8,46,228,197,189,109,31,20,215,208,212,4,178,88,234,21,112,224,199,
-  42,178,71,135,85,69,200,145,145,235,235,242,166,234,233,46,44,98,251,243,71,152,147,29,
-  42,93,252,197,242,89,3,243,210,6,105,151,156,128,170,58,99,241,234,0,166,222,17,253,
-  0,20,0,17,31,58,47,39,34,32,31,63,65,66,17,12,5,13,19,20,52,46,45,229,
-  237,123,53,165,7,155,9,42,84,164,94,0,150,27,27,48,12,181,226,65,154,255,105,54,
-  179,216,250,46,197,198,30,67,101,252,59,218,81,66,208,254,73,60,159,3,200,94,4,62,
-  110,104,232,231,183,222,123,113,69,203,81,199,131,105,181,130,206,178,215,120,94,191,74,219,
-  190,9,48,67,219,185,168,138,95,109,53,91,106,214,9,179,93,50,138,139,158,236,123,37,
-  114,252,172,151,72,214,16,221,145,67,243,107,61,29,20,159,89,201,25,2,5,12,60,182,
-  207,255,125,58,25,113,82,183,153,57,15,204,179,253,59,198,64,227,225,77,48,248,174,103,
-  205,58,6,41,19,235,177,14,183,210,232,245,232,197,32,144,180,94,47,156,249,86,149,4,
-  132,28,42,198,227,96,151,156,236,239,192,76,52,43,127,228,59,105,222,8,252,176,230,217,
-  95,227,75,75,249,244,221,130,0,18,0,1,10,13,15,15,16,24,15,17,32,57,69,52,
-  54,63,63,70,70,23,252,115,53,165,7,155,9,41,68,169,31,73,74,42,34,121,210,57,
-  225,218,127,19,217,76,140,199,159,133,253,239,216,63,156,158,111,53,206,174,68,159,91,70,
-  130,81,82,155,6,186,180,68,103,209,218,228,51,64,45,191,170,192,145,46,158,239,251,3,
-  207,201,221,111,142,245,196,213,144,40,158,95,201,48,137,166,242,138,82,163,64,107,3,19,
-  127,67,94,216,165,114,41,70,170,155,185,85,231,24,9,118,156,193,124,48,163,178,63,174,
-  12,170,126,188,125,93,241,179,56,83,134,201,234,238,217,131,95,128,204,226,85,100,199,153,
-  212,73,151,114,111,181,3,66,64,157,114,135,15,71,178,186,118,224,25,43,192,3,196,13,
-  212,205,17,9,29,219,91,202,189,28,183,42,194,173,69,118,241,151,126,23,68,95,215,92,
-  251,60,53,41,174,188,153,190,22,205,108,193,52,149,127,230,191,110,208,40,114,215,70,125,
-  110,128,11,252,51,222,209,22,0,1,10,27,41,31,24,17,58,77,84,63,43,29,8,12,
-  24,29,40,41,37,17,10,227,235,115,53,165,7,155,9,42,84,162,83,21,58,198,134,122,
-  12,119,44,77,10,212,91,108,20,44,157,192,162,113,113,215,17,129,236,96,209,67,3,84,
-  130,126,7,203,178,109,242,40,34,58,3,62,84,113,38,169,156,104,182,175,25,252,186,5,
-  96,176,172,28,249,93,144,74,254,121,246,237,231,39,48,5,136,125,67,191,12,39,84,136,
-  88,55,134,16,43,125,179,79,47,63,180,109,166,237,49,253,100,11,158,23,51,62,172,241,
-  109,18,34,31,80,196,80,247,117,87,214,132,237,149,226,148,129,234,140,131,197,204,59,147,
-  36,217,131,138,75,31,1,55,169,226,191,168,77,57,61,21,25,67,9,160,249,59,242,253,
-  137,43,136,179,1,3,135,132,136,38,142,182,2,42,144,223,37,248,99,243,224,50,80,240,
-  110,210,153,115,42,87,63,162,50,79,21,1,239,197,75,215,250,127,4,69,181,223,235,6,
-  8,136,14,34,245,71,206,184,200,246,152,108,37,40,96,219,19,0,1,13,27,37,26,28,
-  19,58,47,71,53,72,55,31,21,15,15,13,50,12,11,115,53,165,7,155,9,42,84,162,
-  21,205,196,184,16,210,224,178,47,1,140,46,205,233,250,202,68,47,110,23,184,108,98,181,
-  22,116,180,19,75,79,88,124,242,207,218,183,208,171,115,210,218,177,184,162,124,247,188,246,
-  179,34,47,62,11,219,156,175,16,230,15,134,36,50,158,186,208,177,125,11,229,13,75,113,
-  243,73,132,134,224,51,231,40,18,112,129,18,42,103,91,183,153,12,192,10,20,136,206,188,
-  209,33,51,0,229,83,243,201,198,88,40,235,140,174,197,219,134,250,74,69,1,171,183,31,
-  57,248,33,130,48,179,230,125,234,143,176,55,184,158,96,99,95,19,132,37,204,161,130,0,
-  118,31,113,134,235,147,200,44,64,117,202,251,67,60,44,172,131,173,157,155,74,66,225,17,
-  0,1,10,27,28,26,19,66,63,153,106,101,4,7,10,11,9,35,253,2,115,53,165,7,
-  155,9,42,80,65,235,208,139,34,194,250,42,159,54,185,171,57,133,65,141,105,164,26,208,
-  114,79,41,69,164,18,246,5,45,51,120,153,155,143,158,221,76,117,182,178,219,63,116,207,
-  26,67,4,46,42,180,53,176,30,112,220,125,132,70,153,76,235,209,183,222,115,100,111,99,
-  19,117,147,180,247,179,7,51,172,90,104,169,20,12,172,72,255,108,161,51,220,13,195,201,
-  210,83,2,175,173,102,43,155,142,217,105,133,248,203,21,168,42,34,64,234,142,241,38,219,
-  249,134,144,7,215,110,32,174,171,60,76,167,4,132,14,90,62,98,139,41,15,243,68,176,
-  130,58,154,66,103,78,90,18,62,186,97,237,240,94,143,75,36,110,59,88,20,207,48,240,
-  150,40,202,106,142,62,63,136,174,39,141,131,34,208,232,9,228,63,117,231,69,110,107,20,
-  0,1,11,29,41,44,75,74,77,62,54,40,33,31,28,9,16,22,22,19,23,236,239,115,
-  53,165,7,155,9,41,59,38,38,100,139,85,94,47,249,247,191,47,95,235,114,213,93,249,
-  39,190,238,67,165,38,30,110,166,141,215,52,96,203,58,118,209,243,15,131,8,213,72,156,
-  11,148,230,204,154,72,32,89,182,187,239,11,79,233,214,44,9,62,48,187,25,220,152,236,
-  81,1,29,176,9,100,3,230,163,208,64,194,239,148,62,45,211,54,24,135,173,190,157,245,
-  120,66,241,7,222,108,202,118,51,191,63,205,203,54,72,44,12,79,4,79,129,89,122,128,
-  248,198,254,188,189,8,21,238,214,189,105,110,106,128,148,206,187,34,125,37,57,202,48,103,
-  74,156,148,215,147,160,151,118,74,78,214,195,180,212,164,190,168,93,54,146,23,66,144,160,
-  18,107,55,72,246,22,105,155,61,85,4,141,169,51,210,226,151,76,245,138,133,255,243,181,
-  185,16,212,117,204,201,107,145,182,2,85,195,158,170,29,17,181,21,78,252,195,94,132,149,
-  210,195,161,149,109,201,115,165,123,52,36,184,115,244,232,28,0,8,7,20,26,42,46,36,
-  30,18,28,21,24,20,19,18,11,14,16,20,22,28,28,45,40,44,24,36,33,35,41,136,
-  229,58,83,203,201,167,213,165,95,43,203,157,244,218,188,206,237,71,232,57,143,196,183,221,
-  236,245,202,198,248,51,204,43,123,122,229,106,35,246,135,207,163,171,137,104,10,240,9,161,
-  88,83,53,218,164,31,97,87,205,137,236,252,248,135,52,199,124,192,253,183,81,11,62,58,
-  102,216,205,144,154,184,239,59,191,115,55,157,87,234,231,0,50,143,174,136,183,192,67,13,
-  226,107,98,180,30,183,193,190,86,219,79,67,134,61,166,177,173,202,246,185,208,223,237,209,
-  42,100,184,175,181,36,123,187,106,113,202,77,107,227,194,92,32,54,201,88,4,209,191,9,
-  48,56,15,171,222,245,253,161,252,237,135,198,17,27,222,154,196,193,198,8,255,152,112,9,
-  68,243,78,15,91,180,233,184,176,20,168,97,189,100,24,244,239,35,179,3,196,132,178,1,
-  24,53,229,148,118,60,0,247,77,150,192,252,114,43,84,9,123,22,122,193,96,121,37,163,
-  219,193,238,13,196,218,235,68,138,184,161,61,84,13,94,25,161,60,144,203,16,79,16,185,
-  123,43,61,185,94,110,210,34,29,151,112,139,166,212,126,18,209,57,188,134,78,13,120,94,
-  53,68,22,228,44,68,176,215,170,200,244,135,181,139,77,206,249,5,120,152,68,181,233,37,
-  251,130,196,216,62,81,159,160,136,1,223,146,164,174,254,64,34,86,33,139,177,159,104,217,
-  180,123,252,67,133,129,17,195,57,117,100,105,212,123,6,6,116,45,135,223,178,249,81,34,
-  41,252,232,188,115,115,177,189,136,183,23,22,0,8,22,27,22,13,21,19,14,19,21,45,
-  34,33,10,7,43,42,45,12,30,40,72,76,61,210,237,37,123,249,219,219,208,117,95,176,
-  119,38,246,174,54,72,88,19,199,250,234,92,0,110,170,113,29,88,241,95,238,97,56,234,
-  87,148,42,70,145,197,208,126,211,52,170,210,182,64,220,150,129,253,129,133,155,235,97,161,
-  228,27,17,201,157,28,224,27,65,135,204,149,93,54,23,244,138,101,160,158,247,25,239,235,
-  81,212,21,139,210,51,178,87,56,226,41,65,225,179,240,73,122,160,111,198,239,206,121,39,
-  176,112,43,86,194,232,161,20,58,157,169,54,241,127,224,140,21,250,180,143,51,166,144,120,
-  144,29,235,111,222,202,25,218,182,250,37,15,219,152,80,241,43,249,64,87,244,81,52,86,
-  232,116,200,31,53,81,242,241,35,30,26,69,6,249,238,188,63,174,171,9,152,9,209,215,
-  70,97,237,247,78,25,187,61,107,193,68,227,165,134,46,49,0,171,173,134,227,239,200,193,
-  42,64,146,145,227,165,198,107,47,202,71,239,192,131,108,68,22,149,137,92,38,11,124,196,
-  20,130,95,130,117,99,132,180,170,136,114,111,35,117,136,173,138,79,5,117,35,112,132,46,
-  58,127,2,138,134,188,216,164,236,161,91,12,105,25,148,29,192,175,211,211,92,73,173,208,
-  231,213,114,112,52,156,183,72,145,228,85,96,53,22,10,187,237,254,39,21,149,52,135,208,
-  197,149,145,229,115,14,145,58,16,79,149,36,74,218,3,90,224,122,81,15,215,64,58,233,
-  209,171,206,163,241,147,102,238,234,207,28,30,61,99,19,222,12,19,85,74,105,108,143,212,
-  168,187,219,162,147,180,19,19,10,116,17,122,134,119,183,23,17,88,142,172,169,190,134,158,
-  11,114,29,213,13,9,14,193,199,82,76,159,55,237,6,130,240,97,70,83,179,161,200,202,
-  160,22,48,65,28,166,21,0,8,24,38,40,22,14,16,18,18,36,36,37,8,9,39,41,
-  40,12,22,26,41,84,76,241,177,14,222,74,145,158,198,235,147,194,118,96,132,224,203,151,
-  29,209,201,31,20,205,181,160,41,186,240,115,37,55,134,189,249,81,240,181,134,228,162,74,
-  57,83,82,125,151,0,176,108,125,186,213,147,144,186,182,23,16,78,40,52,201,29,153,149,
-  207,218,140,31,84,253,78,32,227,56,165,187,88,147,246,160,133,52,216,106,9,207,3,194,
-  22,204,101,25,242,69,145,42,198,67,148,94,120,95,141,207,193,34,97,59,225,154,44,70,
-  209,162,194,151,225,170,48,202,228,57,37,184,197,252,179,63,153,208,147,19,137,127,108,100,
-  66,205,30,50,227,196,115,106,211,48,157,109,180,113,253,160,50,220,39,35,173,111,83,88,
-  134,138,173,157,239,254,154,207,93,65,157,253,62,209,240,235,171,119,39,94,3,206,57,74,
-  254,147,223,44,127,165,249,115,126,202,165,217,115,255,150,49,180,10,69,89,44,115,129,164,
-  195,148,211,144,158,170,103,71,247,195,40,23,177,130,161,49,164,90,177,197,34,119,155,7,
-  234,102,147,184,159,39,121,28,63,49,233,46,179,169,30,47,131,201,114,234,62,211,254,10,
-  186,194,133,4,184,211,77,237,244,86,219,31,189,196,74,138,250,95,28,103,178,120,34,31,
-  49,240,123,99,99,206,78,140,74,134,146,106,70,165,12,253,237,34,78,148,102,99,204,68,
-  219,63,77,243,157,111,44,149,18,232,52,114,122,77,183,225,194,32,178,134,228,107,143,12,
-  88,90,146,244,25,77,217,153,128,39,209,229,10,136,59,174,15,168,245,245,72,240,188,91,
-  158,179,83,180,246,35,173,175,114,79,235,127,114,4,130,125,173,193,177,0,89,87,65,74,
-  47,79,101,62,110,132,173,12,106,84,146,171,190,145,251,183,75,192,231,113,157,34,58,0,
-  75,6,0,231,203,7,52,211,4,9,47,90,208,136,9,64,6,139,48,101,214,61,62,188,
-  75,233,225,74,247,84,115,49,151,118,98,224,106,255,73,176,46,209,109,139,164,188,192,255,
-  194,176,78,22,0,8,22,27,29,14,13,8,13,28,43,46,35,20,11,43,41,43,12,29,
-  39,42,68,64,55,8,190,192,88,76,234,116,83,160,49,130,111,92,225,47,172,210,174,236,
-  6,234,251,89,122,50,7,73,234,213,249,75,137,72,55,157,72,77,184,233,227,134,36,100,
-  141,18,53,133,154,33,197,104,69,111,164,228,6,184,125,206,57,107,83,97,116,124,217,11,
-  177,222,222,231,224,70,203,17,198,146,121,118,53,206,34,19,27,239,96,131,105,212,41,3,
-  185,1,88,5,43,181,213,210,108,59,65,240,97,74,25,85,172,63,224,8,135,113,1,159,
-  188,237,204,30,129,201,138,205,124,198,121,184,165,211,144,35,131,102,60,199,183,157,57,50,
-  109,132,95,18,129,113,64,217,167,126,188,35,85,171,41,37,231,107,52,243,142,53,17,211,
-  46,246,239,145,147,197,9,110,230,126,182,173,55,62,156,2,208,193,248,67,61,25,31,245,
-  146,55,229,173,188,136,131,184,59,242,114,222,188,146,134,134,159,4,34,159,216,192,230,72,
-  152,2,75,183,126,49,144,88,184,250,135,224,232,99,148,52,34,168,227,120,28,30,136,181,
-  93,183,102,99,45,25,15,18,61,94,203,76,46,116,101,164,53,235,245,148,240,181,28,81,
-  75,168,121,7,99,94,121,96,34,55,236,52,150,107,132,110,97,128,208,236,49,29,241,132,
-  223,255,245,62,231,7,107,209,179,15,75,221,144,224,116,206,12,152,255,203,18,29,5,182,
-  224,70,246,155,45,235,232,75,117,193,139,251,74,46,202,217,220,98,68,97,47,150,52,71,
-  173,54,68,96,114,157,162,217,7,105,105,214,202,192,88,198,42,85,120,248,86,224,231,150,
-  214,13,50,189,45,156,150,75,46,166,144,252,219,130,90,206,184,246,1,200,114,37,82,72,
-  38,113,5,109,191,167,145,112,122,88,176,22,127,16,49,237,202,166,133,188,168,61,108,23,
-  0,8,12,25,19,13,10,11,10,9,30,51,59,40,19,18,38,40,32,12,10,37,42,87,
-  65,54,194,237,37,123,250,24,31,218,24,36,167,187,29,148,210,241,222,246,123,188,202,8,
-  58,152,222,45,175,190,246,120,215,119,40,3,192,171,124,117,8,237,5,231,114,24,203,235,
-  52,43,48,234,160,47,54,70,115,156,159,208,65,69,179,94,50,149,98,63,153,50,117,66,
-  191,111,163,154,84,189,83,29,192,59,61,111,138,110,181,75,136,168,28,212,180,72,71,1,
-  101,130,45,137,228,26,64,251,18,247,101,153,234,50,104,118,13,215,244,229,208,147,61,218,
-  250,109,206,94,254,36,173,210,24,148,123,195,84,156,49,10,228,11,213,107,68,40,162,49,
-  170,214,107,54,221,253,248,137,22,168,25,207,206,152,37,151,102,99,236,119,137,185,166,247,
-  195,234,120,106,193,160,167,43,207,119,217,112,189,55,41,249,29,58,89,156,61,20,140,181,
-  234,136,201,104,152,187,25,100,63,243,149,49,187,150,249,140,235,43,138,36,11,235,44,238,
-  191,211,224,88,113,190,111,57,54,179,208,150,106,60,227,240,104,61,30,124,42,245,39,244,
-  152,194,6,194,167,80,133,103,226,169,186,231,51,57,18,176,126,110,179,36,230,130,47,145,
-  210,177,248,23,216,200,13,236,213,42,28,197,195,116,18,159,199,20,21,115,13,237,201,105,
-  112,59,217,83,219,129,153,228,196,7,189,218,85,201,10,252,206,174,63,144,147,143,120,82,
-  58,172,195,180,238,191,236,225,54,167,239,8,104,115,125,68,130,103,120,1,219,74,143,81,
-  199,135,16,117,44,8,226,83,169,0,132,230,48,47,33,185,168,203,169,251,234,132,222,55,
-  185,10,16,204,166,96,62,4,61,91,110,159,23,101,246,208,58,45,247,26,10,160,172,135,
-  165,131,169,99,229,35,185,217,55,54,185,243,70,40,51,254,129,181,100,77,54,107,64,81,
-  168,121,71,112,146,152,224,130,13,158,68,102,221,245,99,246,83,14,232,169,174,152,28,55,
-  67,21,230,121,83,214,16,233,47,63,9,54,123,210,193,251,244,238,62,241,185,251,132,153,
-  146,98,131,46,147,91,224,29,128,67,58,134,18,254,14,55,251,27,10,33,41,89,150,76,
-  91,20,23,107,224,11,244,168,34,200,249,121,56,217,93,119,198,55,32,119,53,18,148,21,
-  0,6,5,25,21,30,15,18,13,26,43,49,37,18,8,6,40,41,44,12,45,93,97,60,
-  194,237,37,124,34,169,184,224,65,163,144,169,64,190,195,99,5,158,47,53,125,129,167,13,
-  169,2,218,143,79,175,151,129,153,150,75,195,234,157,228,154,195,210,51,139,156,51,11,64,
-  134,155,241,191,91,201,200,106,83,58,142,112,20,59,173,187,6,232,234,155,48,174,75,74,
-  62,183,66,248,249,242,34,196,138,73,238,158,5,54,120,90,140,67,62,45,231,128,138,136,
-  86,145,37,195,179,17,248,176,6,216,24,251,108,93,124,181,56,246,101,91,9,175,179,192,
-  34,30,21,150,20,31,250,1,211,22,99,181,126,101,147,200,116,14,40,255,87,39,244,88,
-  3,66,109,225,92,196,252,94,205,61,13,4,197,227,188,115,90,80,221,33,40,36,89,15,
-  142,117,120,123,21,12,17,99,212,233,92,143,58,101,154,154,229,12,134,57,77,23,166,250,
-  220,237,158,201,177,218,151,112,214,51,216,180,14,161,147,63,152,74,165,70,197,144,184,161,
-  115,103,255,140,170,192,113,70,184,200,88,42,223,211,54,227,185,10,10,228,158,22,251,48,
-  83,96,230,201,177,93,215,94,208,191,172,117,239,217,81,254,179,168,220,254,34,91,116,200,
-  23,228,87,119,116,200,2,160,226,20,204,98,18,155,202,3,47,30,235,28,78,96,26,174,
-  189,174,212,116,178,164,30,210,99,99,112,171,175,80,195,8,49,200,134,230,127,83,122,189,
-  176,83,41,230,111,66,139,25,113,229,89,119,122,23,165,240,254,251,201,59,85,116,2,28,
-  73,230,19,152,138,35,182,163,254,11,87,107,53,135,168,71,97,155,149,177,55,211,185,214,
-  77,76,22,209,71,155,128,169,110,53,49,197,248,238,168,139,97,82,51,46,116,208,167,132,
-  108,23,164,127,42,214,204,89,204,82,187,43,22,66,130,56,88,184,163,222,148,44,115,203,
-  151,170,100,94,147,123,233,131,81,162,90,128,233,47,113,219,32,51,1,182,248,209,74,165,
-  247,249,186,209,194,226,213,126,45,215,127,42,87,178,88,220,30,227,95,167,31,214,21,0,
-  8,24,35,36,25,34,42,46,31,17,8,8,9,35,34,37,12,16,30,38,42,76,64,54,
-  190,192,28,157,11,55,156,169,170,128,74,160,226,20,44,220,244,128,166,76,163,242,253,221,
-  79,213,50,108,180,205,44,192,177,56,200,234,133,0,218,52,130,51,183,67,25,199,113,236,
-  74,223,69,254,224,52,131,182,152,24,109,119,254,49,140,250,133,58,195,17,14,158,148,56,
-  248,59,252,116,71,136,20,73,150,138,141,137,160,141,175,47,129,79,114,49,189,111,253,146,
-  99,1,52,123,31,15,156,129,245,222,186,106,255,71,71,212,192,185,217,158,14,77,69,215,
-  91,253,13,11,148,39,87,138,63,111,127,225,57,187,124,30,171,71,223,252,69,139,248,118,
-  98,87,197,103,117,169,155,31,116,46,116,178,232,90,242,41,243,180,47,184,154,166,228,201,
-  44,178,13,189,225,252,47,125,82,67,138,20,50,174,99,70,210,211,139,225,177,131,24,168,
-  142,87,178,250,141,136,188,159,169,164,165,224,244,213,89,216,32,27,48,59,214,177,154,179,
-  37,182,148,202,23,15,43,87,78,24,114,107,104,152,92,61,96,28,41,82,60,207,61,47,
-  136,243,191,50,109,81,170,95,112,61,139,182,17,125,126,5,91,108,56,76,97,26,248,252,
-  244,211,90,88,191,139,249,88,19,53,114,156,221,37,136,91,29,160,191,232,107,96,198,10,
-  149,129,74,52,98,146,209,7,200,10,177,238,23,18,186,178,60,99,167,130,12,246,220,207,
-  182,38,237,75,118,11,127,67,176,241,240,197,165,20,32,174,255,52,33,10,48,85,180,38,
-  48,166,196,252,5,18,105,190,175,94,180,219,61,170,101,160,188,207,57,53,101,232,19,86,
-  95,137,165,39,156,243,70,178,99,73,240,22,72,59,174,108,17,67,175,105,145,84,4,94,
-  25,175,71,205,95,110,15,213,77,248,99,134,10,241,70,240,6,56,113,147,227,116,118,191,
-  252,65,106,44,202,229,33,144,246,94,13,135,57,101,255,125,68,193,54,87,130,29,125,244,
-  122,220,122,150,161,111,65,135,205,215,46,45,202,31,189,178,73,227,55,163,159,12,88,221,
-  243,193,215,159,177,76,69,253,108,91,163,173,116,238,21,0,6,5,26,30,33,19,10,11,
-  21,42,48,37,19,8,9,34,41,40,17,22,47,97,83,241,237,37,124,33,188,255,161,113,
-  41,218,203,72,184,246,97,220,177,87,33,33,196,115,234,32,74,27,78,203,10,189,144,100,
-  3,3,19,134,124,158,246,8,91,246,156,141,138,223,160,211,229,173,185,222,55,48,140,10,
-  97,64,113,66,254,19,49,232,235,152,221,100,187,140,25,32,116,13,29,135,114,194,73,38,
-  148,232,104,36,180,80,119,188,124,251,133,206,249,134,47,56,220,219,101,27,123,133,71,236,
-  107,214,122,17,180,48,70,55,68,4,198,212,172,52,158,144,53,118,227,8,189,84,201,38,
-  138,245,58,242,225,16,14,47,226,246,255,138,194,246,178,110,142,1,137,156,139,237,37,79,
-  88,185,136,226,39,98,131,143,193,242,237,180,118,30,120,157,133,185,70,99,72,185,248,98,
-  222,62,61,93,103,249,1,51,121,51,64,95,41,131,254,38,13,160,32,136,174,179,245,26,
-  65,98,147,75,4,47,58,168,110,228,208,74,0,58,76,169,75,67,141,223,21,88,94,137,
-  70,36,104,62,15,212,149,149,59,251,91,97,28,59,137,77,144,39,250,85,22,24,248,80,
-  107,195,151,34,13,133,84,190,250,29,254,185,199,148,204,194,30,195,118,207,202,234,111,149,
-  136,24,174,231,217,219,100,66,202,76,129,36,196,140,33,210,195,10,134,107,113,202,138,18,
-  88,1,80,40,91,247,78,143,225,210,56,55,12,17,45,94,236,197,26,25,44,171,130,33,
-  190,252,85,13,161,190,130,103,111,24,106,2,76,77,100,101,132,150,118,217,119,200,141,168,
-  135,233,200,147,106,142,100,166,203,96,138,41,69,87,219,198,2,244,196,1,239,82,234,244,
-  187,225,161,13,128,73,249,88,240,238,220,152,132,242,41,199,249,218,188,100,159,74,33,221,
-  32,217,194,74,198,119,42,172,43,38,41,16,206,200,215,128,52,131,191,4,187,113,238,105,
-  113,148,137,55,249,255,70,81,146,242,100,200,176,199,77,163,225,25,185,154,3,13,33,230,
-  176,236,221,204,207,29,41,47,26,76,90,50,160,225,207,104,181,217,53,158,84,4,45,165,
-  166,57,22,0,1,5,25,36,31,20,9,13,21,24,34,34,32,22,21,39,41,34,17,25,
-  23,41,81,76,242,41,55,123,29,49,30,233,211,26,131,194,210,110,223,68,60,240,204,84,
-  133,100,92,125,100,246,178,57,253,119,79,235,143,15,143,82,165,40,195,236,119,95,82,63,
-  139,228,130,207,64,148,190,197,74,55,108,214,119,177,179,44,136,198,135,122,171,87,87,252,
-  191,105,17,197,252,105,101,177,186,170,57,151,252,138,135,6,167,185,105,44,116,217,206,110,
-  228,88,67,67,43,228,45,184,218,68,197,236,30,150,111,167,229,176,160,43,89,25,66,19,
-  181,205,224,197,180,171,127,108,126,170,238,104,215,238,225,20,126,169,151,203,108,6,174,106,
-  96,101,173,78,114,1,124,212,198,236,176,44,5,121,246,42,122,37,100,166,249,26,116,29,
-  212,228,2,174,85,20,67,117,109,117,20,246,129,51,98,13,215,155,109,192,4,39,195,115,
-  206,180,111,226,74,237,122,46,170,198,34,240,12,92,4,96,52,126,90,146,0,163,233,47,
-  174,43,219,17,56,56,101,128,159,30,135,51,22,113,7,44,156,32,171,173,119,243,145,151,
-  100,249,111,74,206,94,136,4,209,223,143,146,92,139,167,188,192,96,95,150,175,161,186,99,
-  89,42,51,36,84,139,80,46,187,105,188,99,65,44,143,100,122,173,62,218,226,72,23,109,
-  113,215,50,69,9,156,186,8,76,237,126,21,149,143,113,116,245,65,45,107,54,182,5,18,
-  131,85,101,232,72,131,110,144,93,234,119,107,179,130,173,171,253,17,162,81,123,131,11,24,
-  136,220,98,63,224,247,255,102,70,40,136,35,89,179,182,184,174,213,138,225,55,109,165,178,
-  141,63,171,36,161,236,229,128,1,222,166,167,56,19,215,36,58,164,108,73,35,192,50,118,
-  56,87,131,186,110,117,118,218,59,237,40,5,217,151,21,121,70,99,41,76,118,123,184,131,
-  12,91,234,71,82,148,120,213,91,66,86,144,71,11,89,199,232,139,242,121,151,147,129,107,
-  231,98,23,192,139,234,5,101,29,63,139,217,93,188,154,49,247,131,24,67,209,80,134,57,
-  46,193,204,55,210,217,196,215,231,113,22,0,1,5,27,37,37,25,26,24,34,34,31,17,
-  9,8,9,34,39,37,14,11,42,97,97,64,2,190,234,212,101,27,29,100,192,103,236,216,
-  122,100,207,24,79,90,70,59,216,41,186,109,248,54,186,112,175,30,188,115,12,252,224,235,
-  142,120,243,9,120,214,214,226,226,82,54,46,106,185,232,237,18,119,117,115,184,0,248,163,
-  185,225,52,67,11,6,124,121,226,29,43,50,17,15,14,20,24,183,94,165,123,77,134,223,
-  187,188,245,21,89,97,14,85,20,196,195,201,142,179,201,213,234,167,119,140,27,218,7,63,
-  223,122,2,123,229,193,64,196,15,52,10,102,91,38,82,23,193,253,130,16,162,93,176,27,
-  141,235,245,81,157,85,249,76,52,39,226,73,59,71,8,85,180,23,23,152,143,15,10,238,
-  180,187,69,141,149,4,197,192,180,122,129,234,85,78,15,43,161,254,89,232,48,224,66,176,
-  127,109,153,75,170,21,104,117,58,33,18,183,213,95,124,0,208,240,109,89,29,222,225,7,
-  114,55,204,24,37,152,117,11,164,135,61,232,19,179,40,68,57,2,78,245,74,97,8,25,
-  136,103,108,158,254,151,133,47,15,183,203,180,140,79,82,166,248,142,226,250,194,125,202,137,
-  205,175,16,3,21,154,156,106,75,233,47,68,122,218,56,97,128,216,125,66,51,156,37,103,
-  237,114,237,27,251,88,114,222,47,4,171,114,25,206,44,175,240,129,237,32,152,176,230,201,
-  132,133,129,2,71,224,74,172,222,99,133,163,24,43,119,224,212,156,56,136,223,124,124,147,
-  124,31,115,228,184,86,211,227,203,153,239,43,22,90,210,45,44,173,55,240,95,189,232,84,
-  125,236,230,21,249,133,48,148,63,200,12,216,153,0,52,98,248,87,230,46,130,77,139,120,
-  158,134,180,31,154,27,249,64,81,48,78,174,214,100,147,29,176,85,237,226,110,175,248,145,
-  232,6,118,211,58,222,41,55,0,254,146,255,3,194,203,131,70,217,4,188,253,28,154,87,
-  73,131,64,153,132,249,15,145,229,178,234,41,182,223,247,111,131,166,162,85,182,89,242,85,
-  240,76,136,101,169,145,1,6,144,200,0,206,208,94,67,101,158,210,26,117,133,122,219,18,
-  122,95,42,14,184,219,195,44,21,44,22,0,1,5,52,65,89,46,33,3,5,6,8,37,
-  37,41,15,16,10,23,27,31,22,61,65,55,8,190,166,228,149,104,68,159,18,119,52,225,
-  85,208,147,234,224,4,253,127,102,198,243,58,139,123,4,58,29,102,204,192,18,157,186,121,
-  213,13,252,166,79,99,124,103,162,107,93,192,176,70,152,96,149,22,236,196,52,153,249,44,
-  142,27,133,144,82,241,145,149,20,66,114,141,189,68,91,169,203,36,215,17,130,81,63,5,
-  94,234,199,253,99,70,9,193,153,48,78,142,85,36,189,199,39,90,146,126,195,13,113,196,
-  56,43,244,201,95,39,212,82,107,140,28,158,122,188,170,217,121,152,70,53,210,159,250,148,
-  148,121,198,89,1,51,26,10,107,145,144,119,71,71,222,55,156,78,191,96,40,20,121,253,
-  213,30,15,226,65,245,252,48,105,197,227,40,34,87,165,53,99,246,16,207,158,97,69,90,
-  166,27,255,202,174,182,178,185,255,203,152,208,231,17,102,117,236,157,75,142,254,86,116,251,
-  108,4,5,56,108,233,70,97,55,211,104,17,6,32,254,149,117,47,135,14,18,4,62,144,
-  220,217,138,173,89,92,40,100,13,77,81,195,166,42,242,76,219,127,24,51,213,132,100,192,
-  142,77,93,0,135,189,230,125,1,71,96,41,20,40,90,95,28,47,193,98,46,136,14,220,
-  188,108,232,172,124,246,90,196,25,51,74,109,50,1,113,55,2,155,152,123,255,74,105,174,
-  216,119,166,254,229,153,138,76,122,224,87,254,48,153,63,250,110,71,28,153,174,38,109,50,
-  168,79,103,1,119,35,149,252,7,79,14,140,118,162,102,165,206,139,95,170,167,108,15,117,
-  64,216,87,94,224,7,88,210,25,247,135,28,109,65,26,154,102,234,182,74,249,53,183,31,
-  132,47,154,229,112,27,12,18,19,118,210,221,118,67,47,157,83,136,96,213,100,22,0,1,
-  5,35,67,61,35,17,17,18,12,12,15,11,14,37,34,37,13,16,10,37,39,96,65,57,
-  190,213,62,178,114,41,145,133,14,102,73,42,92,109,115,137,9,105,207,7,49,35,203,62,
-  217,206,90,187,233,98,161,77,106,252,214,61,212,78,112,103,241,198,213,232,163,95,147,143,
-  127,218,46,156,155,176,253,225,177,52,37,142,176,196,53,210,167,116,199,89,205,46,175,203,
-  37,134,78,142,147,218,207,2,3,171,236,143,113,228,215,31,250,246,147,95,154,19,178,91,
-  52,46,130,173,41,238,197,173,113,212,248,128,189,88,207,95,105,18,32,58,254,48,36,32,
-  184,180,47,88,232,229,109,243,180,146,22,142,241,254,92,143,252,19,12,246,133,13,207,11,
-  182,68,113,251,43,68,222,255,203,247,159,98,104,23,180,106,117,93,243,145,30,101,100,92,
-  147,215,168,177,183,94,239,69,189,83,217,37,241,22,254,137,185,71,90,122,100,115,56,135,
-  106,1,135,208,38,62,190,37,15,41,25,1,73,50,246,169,3,73,123,84,33,225,49,241,
-  85,182,115,95,196,153,135,176,161,40,88,79,18,101,147,238,148,73,200,216,41,126,94,73,
-  206,76,28,138,166,111,83,192,120,49,66,26,182,244,122,89,74,247,72,161,30,63,60,35,
-  60,39,122,72,173,63,96,119,191,9,103,5,23,3,217,95,33,42,80,143,73,85,235,4,
-  44,148,94,179,195,35,146,35,238,29,183,191,79,195,205,21,158,90,213,66,171,194,168,183,
-  64,205,102,161,110,145,225,36,67,95,218,7,22,4,232,110,43,246,212,42,71,152,186,237,
-  135,3,70,28,145,242,84,254,223,15,33,247,153,52,21,189,91,16,22,41,0,92,96,201,
-  213,105,50,249,29,189,100,46,205,143,65,132,161,29,53,59,152,179,146,194,27,132,89,69,
-  184,113,174,88,53,40,159,183,74,138,54,86,157,204,212,196,231,223,10,78,173,123,232,24,
-  7,3,21,95,90,100,139,19,218,147,128,121,229,19,72,184,245,138,245,96,241,214,172,82,
-  64,15,171,200,103,203,89,22,0,6,5,26,26,27,12,16,14,14,20,40,48,35,19,12,
-  43,41,40,11,9,27,40,97,75,244,41,55,210,84,255,8,90,9,161,251,253,60,244,114,
-  98,163,223,218,158,251,161,253,252,17,131,16,10,82,112,10,225,15,221,164,175,65,80,122,
-  4,77,191,174,187,38,204,102,137,19,139,65,35,181,173,39,240,124,73,76,14,177,226,111,
-  245,48,64,240,103,127,198,44,62,37,102,243,3,223,86,29,38,55,206,6,241,27,131,210,
-  0,34,79,82,4,128,138,52,208,216,241,109,248,241,171,205,74,139,118,46,133,59,48,102,
-  76,143,104,94,71,250,31,102,209,89,164,72,227,124,155,17,10,128,234,129,102,139,169,57,
-  137,140,57,43,77,107,76,54,224,220,146,105,45,207,73,160,174,87,228,127,12,173,1,254,
-  227,36,32,133,202,8,129,93,250,203,223,56,80,47,229,123,62,8,48,50,62,87,63,177,
-  164,67,70,63,237,161,176,0,152,203,81,148,84,232,148,239,241,213,169,245,242,213,36,128,
-  135,1,7,209,52,210,68,92,150,52,164,50,159,224,19,214,123,59,118,98,138,239,147,69,
-  88,55,147,232,185,7,70,67,92,54,51,183,100,248,211,58,93,85,185,171,151,98,132,58,
-  53,39,210,74,93,214,217,12,245,106,246,201,200,53,36,5,197,228,135,17,147,140,77,255,
-  115,72,125,18,55,206,11,160,109,199,236,129,4,213,128,226,191,217,160,229,61,175,156,15,
-  171,36,22,147,159,138,204,158,173,97,238,94,212,169,174,38,15,183,211,159,94,165,66,60,
-  100,155,115,125,117,145,210,12,61,184,22,224,214,24,236,15,224,147,81,87,191,72,12,209,
-  151,95,129,17,78,161,218,165,221,185,113,150,155,62,46,189,180,133,82,3,55,150,22,0,
-  11,142,29,12,121,251,68,153,199,170,39,239,157,20,176,6,218,78,70,83,101,147,48,56,
-  150,47,159,205,167,227,45,67,25,192,97,49,89,68,78,175,20,0,1,6,46,51,58,24,
-  38,32,33,16,10,9,34,34,33,9,11,13,10,41,97,96,60,190,208,232,57,6,73,158,
-  85,125,126,54,238,230,58,89,232,246,23,166,140,182,6,149,186,2,194,78,147,129,40,65,
-  41,147,232,212,45,207,126,199,251,145,30,113,54,142,110,141,238,214,233,66,213,65,165,235,
-  11,79,192,8,74,0,143,85,70,172,191,191,57,166,63,99,2,204,156,145,179,44,79,170,
-  51,136,222,104,174,149,38,237,0,184,159,177,246,70,138,49,69,253,4,4,137,32,150,93,
-  187,55,253,176,237,130,167,154,105,6,225,249,28,24,130,150,74,244,43,90,151,253,179,115,
-  240,165,51,188,120,6,150,58,250,77,176,57,18,74,140,90,159,35,12,81,121,70,158,91,
-  20,225,155,179,14,35,160,115,26,129,8,156,236,207,109,208,29,134,105,36,202,87,10,250,
-  154,179,119,58,220,49,4,194,163,215,224,57,52,112,146,18,194,62,13,18,20,241,14,121,
-  91,223,222,81,10,45,65,165,85,11,128,57,153,199,107,245,168,129,11,18,21,97,25,125,
-  108,85,252,201,146,225,162,205,175,230,200,117,150,38,100,134,147,244,98,33,31,224,187,31,
-  22,168,253,71,136,121,34,25,238,20,129,218,170,6,44,217,83,73,97,126,238,65,226,111,
-  162,174,131,250,65,135,47,40,192,190,73,178,198,124,42,208,87,58,153,10,38,240,108,79,
-  148,217,60,203,196,143,83,132,249,94,194,123,200,14,205,141,26,252,75,149,60,189,231,100,
-  189,90,41,252,149,98,153,56,54,204,62,216,117,26,211,148,48,121,217,219,234,141,137,132,
-  19,252,124,137,68,130,100,191,253,177,117,9,185,68,223,233,216,155,10,219,99,50,92,124,
-  66,39,179,72,213,23,32,9,206,244,103,19,206,138,36,35,25,203,124,31,76,146,78,102,
-  121,173,108,235,86,100,228,144,156,215,116,88,54,190,119,76,221,188,245,3,227,32,198,184,
-  221,113,214,152,184,196,141,255,76,180,127,167,253,40,201,11,247,128,70,26,237,173,65,123,
-  223,0,13,166,191,122,93,21,0,3,5,27,28,31,19,21,27,45,46,37,17,14,18,34,
-  37,30,16,29,43,72,77,61,24,190,206,142,81,37,199,56,179,163,133,157,47,189,106,49,
-  193,70,246,65,189,143,4,114,246,166,95,210,137,39,196,240,220,231,81,150,171,197,112,18,
-  7,74,184,123,76,143,68,36,132,134,28,101,255,144,193,235,255,31,201,255,135,14,21,138,
-  48,106,44,143,230,50,7,222,222,157,33,4,134,0,31,127,103,90,200,164,248,146,152,221,
-  237,92,16,135,185,5,42,88,195,132,103,94,151,119,239,70,192,79,56,188,94,239,238,79,
-  188,218,147,56,175,226,147,41,145,108,188,35,154,157,83,41,224,218,78,200,38,76,203,170,
-  1,80,91,78,123,13,61,80,185,122,186,251,203,168,160,152,210,91,59,212,29,134,6,255,
-  216,28,41,218,193,73,3,65,80,27,106,182,250,101,64,156,80,145,243,21,43,208,179,238,
-  60,112,160,125,68,115,9,8,130,154,141,217,219,183,133,190,246,45,76,208,212,255,102,226,
-  53,220,109,201,41,105,194,32,139,36,200,8,225,154,150,220,26,140,50,99,244,55,198,61,
-  31,107,149,59,148,51,202,187,165,115,16,240,198,81,183,165,248,23,151,114,134,107,84,125,
-  223,19,57,30,8,67,52,91,132,75,163,132,63,177,11,109,37,53,19,88,14,145,157,93,
-  112,100,115,244,87,11,243,239,116,209,246,250,103,138,74,55,96,102,203,228,164,7,225,4,
-  213,158,247,206,102,203,95,169,21,29,157,235,38,6,33,97,140,25,2,74,37,204,236,110,
-  247,26,65,32,210,111,228,150,108,81,100,4,12,85,254,114,245,109,32,252,190,35,244,34,
-  199,110,208,54,118,64,161,188,17,188,96,250,216,15,164,223,77,241,242,191,170,144,255,194,
-  73,169,41,202,38,47,66,142,144,149,255,141,237,219,185,161,241,97,26,12,45,45,147,87,
-  43,243,27,97,180,198,78,245,78,221,197,243,32,139,223,192,219,128,84,138,33,248,42,131,
-  52,187,23,106,190,57,236,8,188,88,94,170,5,113,3,136,93,88,87,77,79,32,247,96,
-  139,170,27,46,204,87,248,220,7,218,101,166,67,136,9,32,87,133,136,172,252,113,40,78,
-  223,19,226,255,137,138,240,112,54,6,224,114,176,127,240,231,212,2,247,22,0,6,5,30,
-  30,40,22,30,22,39,37,37,17,9,14,32,30,28,11,16,30,47,72,76,56,210,116,249,
-  189,20,231,215,96,66,135,233,106,130,155,111,173,167,26,69,28,234,61,153,240,195,169,2,
-  34,22,42,0,146,92,216,184,114,129,28,43,16,228,253,146,2,195,122,92,180,242,213,99,
-  248,216,41,200,154,188,124,159,116,52,46,17,157,206,60,0,165,176,134,203,111,7,72,91,
-  66,192,59,236,200,218,98,204,250,20,78,128,199,201,85,31,197,35,193,116,37,199,145,97,
-  31,234,0,146,18,122,202,86,80,212,15,138,230,238,174,219,153,241,0,23,126,1,63,87,
-  59,12,222,105,47,114,21,63,8,21,40,7,80,35,213,50,162,133,120,130,219,65,64,193,
-  68,230,121,71,164,128,146,189,169,199,121,43,24,213,233,133,54,65,244,126,216,225,2,157,
-  66,128,242,46,237,186,186,26,32,17,20,50,211,9,70,141,94,248,50,79,111,131,238,147,
-  246,217,110,200,22,170,86,245,119,123,78,207,107,212,113,114,189,223,85,113,55,137,37,232,
-  56,30,208,138,78,83,148,234,177,172,13,35,206,80,242,69,81,229,97,89,65,207,28,70,
-  18,26,155,207,182,46,187,38,117,116,10,15,88,221,118,232,11,199,39,34,206,87,166,139,
-  175,120,34,50,108,199,249,139,134,6,15,77,150,104,57,222,214,242,184,187,107,221,209,52,
-  86,63,185,7,70,43,34,58,105,76,19,77,25,240,231,122,210,160,65,131,255,246,162,7,
-  178,208,203,51,199,59,159,35,177,252,66,126,176,14,127,28,91,200,97,107,127,231,19,154,
-  145,201,101,88,67,73,144,132,192,207,50,83,236,58,113,164,65,140,170,24,106,198,232,199,
-  255,150,172,151,245,193,174,63,144,161,67,201,152,188,249,41,250,21,225,61,38,160,66,110,
-  236,255,106,48,95,144,210,110,252,4,226,255,195,169,126,19,5,121,176,240,181,179,164,15,
-  162,55,171,130,229,220,124,234,227,254,249,55,135,78,75,250,191,86,102,55,251,134,126,178,
-  220,184,194,102,23,0,1,4,32,34,36,20,31,26,39,37,37,17,9,40,41,44,11,10,
-  15,33,34,29,55,62,54,194,116,249,189,68,147,6,39,92,247,78,68,50,38,106,242,115,
-  106,184,183,6,149,57,165,59,138,231,13,83,16,51,116,28,99,73,241,146,85,44,73,126,
-  215,252,179,115,0,59,252,49,10,62,101,127,45,217,8,101,217,182,213,224,69,20,175,126,
-  235,11,60,71,114,182,93,49,117,52,227,39,92,252,180,140,0,167,4,154,234,110,101,25,
-  138,63,226,161,172,97,89,243,18,85,81,234,127,169,157,98,213,15,252,194,103,89,185,213,
-  153,11,74,48,190,117,234,21,75,127,67,84,161,64,171,18,100,202,11,164,66,212,213,232,
-  255,80,6,82,63,214,208,154,97,58,170,23,104,175,143,83,14,151,251,243,216,229,30,214,
-  116,125,76,28,101,154,43,253,9,39,245,192,77,97,116,148,21,155,15,53,237,236,248,243,
-  92,252,41,115,219,202,153,241,171,201,240,88,129,196,233,252,103,194,90,246,78,79,53,123,
-  26,61,24,188,55,170,197,194,208,136,104,167,65,29,238,67,1,177,185,180,90,74,94,102,
-  72,244,190,218,146,7,64,0,202,224,59,199,95,120,175,54,187,10,144,12,157,189,157,203,
-  45,101,185,145,122,125,221,220,90,176,187,121,230,173,110,245,253,186,224,182,254,224,169,138,
-  4,206,74,125,222,203,172,3,252,132,144,194,147,204,212,2,204,196,169,194,234,109,46,103,
-  205,76,218,63,161,181,37,159,223,129,88,191,78,208,114,30,115,149,236,204,71,65,160,254,
-  237,207,75,120,54,113,102,204,227,97,233,233,251,133,167,67,251,187,235,239,229,192,251,119,
-  185,217,177,219,94,1,153,252,146,158,41,108,157,60,224,242,203,28,27,163,190,108,243,36,
-  58,91,198,243,149,98,223,167,16,255,140,64,138,108,52,40,66,105,82,239,117,207,199,217,
-  63,229,198,24,253,0,123,240,25,53,62,122,28,237,238,143,171,142,62,154,158,221,239,35,
-  221,131,86,137,99,251,109,86,22,0,6,5,31,35,44,35,28,33,20,31,18,22,12,37,
-  39,37,11,11,22,40,42,75,64,54,194,177,14,222,113,23,155,39,250,114,144,211,56,193,
-  161,190,75,205,131,48,63,104,227,151,186,81,146,144,49,175,240,160,125,38,185,192,75,109,
-  26,108,163,74,99,112,94,191,136,235,228,12,40,113,207,145,56,118,252,189,209,132,28,123,
-  120,200,114,216,103,255,63,217,0,213,209,50,254,25,55,134,179,105,194,19,158,126,114,136,
-  26,247,58,61,201,204,245,145,49,20,164,83,213,109,199,217,253,150,236,53,203,116,87,242,
-  106,56,182,79,170,243,115,141,175,8,217,25,134,73,52,232,206,118,129,111,145,203,94,131,
-  241,80,135,236,206,103,27,247,43,139,118,142,236,52,208,213,227,207,17,218,213,35,136,86,
-  219,74,60,61,204,34,233,224,100,231,209,50,57,105,125,205,241,118,107,148,214,13,220,71,
-  15,48,200,248,104,201,59,129,147,227,192,28,45,149,26,226,247,41,238,246,125,58,119,222,
-  113,28,33,43,106,15,229,100,72,64,10,48,205,201,93,180,239,90,2,139,22,35,111,244,
-  194,188,253,1,104,157,175,121,37,123,86,177,182,208,187,147,140,10,154,114,155,219,198,178,
-  178,114,35,240,129,169,79,82,94,24,118,127,86,187,120,216,255,120,133,5,138,78,128,82,
-  104,141,184,67,238,225,1,192,177,68,76,174,82,15,21,138,236,59,42,46,180,11,205,16,
-  161,63,124,163,200,35,95,229,24,146,223,131,90,41,245,136,220,130,252,141,185,117,8,105,
-  130,223,89,173,101,191,147,45,98,133,62,183,14,195,15,111,182,164,88,27,74,125,207,58,
-  2,248,179,105,67,53,77,31,253,78,193,250,25,183,204,2,207,110,186,206,24,12,34,213,
-  0,43,199,142,124,174,22,0,6,5,28,32,35,18,14,27,39,34,31,18,22,39,45,41,
-  18,23,29,26,29,74,71,54,188,237,37,123,94,204,98,11,162,113,169,163,202,184,97,59,
-  19,233,171,52,229,238,54,26,183,117,8,227,154,27,213,168,248,109,11,223,153,137,138,244,
-  147,166,105,88,161,80,51,92,182,43,129,67,169,161,110,192,232,143,231,47,75,176,8,238,
-  187,76,135,246,29,13,217,26,68,156,73,201,131,205,167,208,165,150,204,241,236,213,131,78,
-  49,59,54,0,194,117,100,73,35,223,104,94,133,183,146,199,0,76,149,38,142,4,247,190,
-  34,51,105,164,163,49,188,204,157,219,62,20,221,249,5,235,79,71,170,162,237,186,139,242,
-  217,153,99,119,141,38,225,224,209,160,233,83,191,95,71,139,55,194,36,71,109,78,14,4,
-  226,143,199,241,23,75,92,195,31,217,236,132,124,218,194,154,232,203,255,150,27,216,220,243,
-  85,125,21,157,42,104,255,53,166,18,213,46,74,174,109,83,52,5,58,95,142,205,131,188,
-  130,237,201,151,124,137,213,79,73,217,136,7,110,126,198,62,15,189,232,170,58,120,245,208,
-  37,89,174,17,120,145,47,105,241,38,132,105,13,72,22,28,46,224,203,87,254,162,5,28,
-  142,98,245,119,41,8,146,154,110,208,156,200,177,241,241,133,238,89,78,103,47,35,13,247,
-  164,246,77,172,189,186,17,131,152,190,156,53,116,114,164,69,140,105,242,56,182,151,239,103,
-  58,109,26,197,221,200,126,58,74,20,193,174,41,190,76,85,119,241,45,55,24,102,255,103,
-  222,64,113,48,135,176,90,217,69,12,213,52,162,25,93,81,151,74,46,17,59,124,43,178,
-  18,89,147,34,32,98,182,109,164,122,244,106,246,210,128,16,254,211,47,236,106,74,129,88,
-  77,168,187,165,56,27,43,131,9,137,70,101,40,156,175,233,172,65,54,77,19,64,111,74,
-  60,97,243,249,54,137,147,226,218,36,53,97,173,165,39,159,251,196,210,61,117,179,23,0,
-  5,4,24,25,29,21,19,15,23,21,45,34,33,10,6,37,35,41,18,36,41,42,74,65,
-  54,188,237,37,124,88,173,0,102,149,60,39,202,116,211,218,158,129,7,27,120,158,211,220,
-  59,121,218,88,87,236,244,12,15,195,56,35,97,97,7,77,151,250,82,164,24,223,131,167,
-  82,74,108,241,13,133,66,249,170,68,234,221,255,198,165,214,151,13,201,225,125,169,136,232,
-  85,225,115,233,8,253,197,198,246,223,8,180,165,178,164,140,87,81,236,100,242,101,77,49,
-  202,166,19,186,138,68,119,75,79,107,85,33,247,243,190,222,107,213,80,180,59,129,140,73,
-  116,200,99,132,222,248,71,72,130,220,129,101,248,226,36,132,122,0,126,194,251,252,193,127,
-  39,96,115,228,121,242,133,136,148,100,4,58,171,105,37,0,55,18,237,231,99,44,188,139,
-  76,118,199,164,134,73,74,56,179,82,55,169,94,3,6,43,163,167,80,129,92,242,164,68,
-  30,210,126,1,248,222,41,162,74,112,101,188,253,169,194,49,136,103,250,248,3,246,253,205,
-  72,194,48,1,146,103,208,201,146,161,137,10,189,146,166,197,35,87,227,68,89,154,37,149,
-  44,230,223,52,195,103,191,111,25,147,104,117,29,241,132,99,129,85,52,160,28,37,153,157,
-  216,112,50,129,191,64,174,139,5,179,205,157,194,228,75,175,21,87,223,192,218,116,157,234,
-  63,176,58,107,57,26,252,200,223,72,94,241,186,123,27,216,159,50,23,175,91,215,193,168,
-  213,172,195,69,137,41,82,172,183,205,189,123,214,59,133,160,53,252,60,189,109,141,174,185,
-  34,208,207,170,115,200,30,62,55,69,12,97,59,187,195,150,21,173,249,198,126,34,250,150,
-  178,129,62,154,252,33,184,148,245,246,166,193,92,138,130,157,53,143,18,252,68,97,59,123,
-  125,226,28,107,203,36,74,228,100,223,106,179,165,119,206,22,0,6,5,39,34,38,13,26,
-  24,35,32,30,14,5,7,7,39,41,41,16,23,35,41,84,71,55,191,16,158,71,221,0,
-  237,204,131,84,101,233,120,210,175,55,83,180,108,176,192,197,109,34,70,230,176,101,98,120,
-  153,110,223,60,190,206,131,53,157,29,143,64,178,93,161,19,65,119,55,49,95,105,113,249,
-  216,63,164,96,4,94,96,220,42,239,131,139,253,116,175,25,56,225,147,169,182,40,112,185,
-  89,32,149,103,130,47,194,82,221,159,33,41,219,244,54,114,109,50,75,65,133,126,31,41,
-  24,131,27,137,173,251,251,25,136,210,148,44,11,225,135,231,73,215,190,169,207,248,140,255,
-  150,246,13,142,114,98,62,148,193,66,206,228,227,132,96,144,85,81,30,173,247,1,0,22,
-  244,185,79,182,248,120,156,59,221,207,155,113,226,239,147,225,183,249,122,46,27,32,182,54,
-  69,189,88,131,99,123,22,239,252,54,188,132,126,37,186,175,119,95,222,157,168,248,227,249,
-  89,168,158,84,91,97,105,64,57,135,94,221,10,156,133,197,111,124,97,100,228,176,183,163,
-  40,69,217,29,97,231,157,37,102,11,123,110,172,108,105,29,153,141,181,182,236,100,158,89,
-  236,178,100,181,186,100,144,29,217,28,201,187,69,124,24,168,108,94,60,16,5,162,224,252,
-  172,102,110,77,5,249,163,77,236,216,246,188,188,41,215,10,28,230,131,66,145,26,142,236,
-  184,248,109,12,187,196,147,72,29,234,88,182,132,67,114,185,74,110,254,55,99,23,126,72,
-  10,6,204,181,132,109,125,58,253,249,214,56,34,108,73,215,129,23,121,106,161,221,176,5,
-  112,181,182,124,162,97,122,20,132,139,226,118,46,96,228,234,68,166,141,46,157,150,185,115,
-  118,173,170,92,34,144,228,189,90,195,110,55,59,44,2,108,100,174,110,105,164,246,16,20,
-  82,131,182,220,173,19,87,247,204,11,66,160,33,170,52,22,5,179,147,184,25,46,22,175,
-  44,128,4,55,125,130,13,13,102,88,186,52,243,78,192,52,88,217,158,26,115,249,63,71,
-  179,180,235,0,168,242,144,115,187,75,65,104,13,104,102,151,207,225,158,158,97,222,29,0,
-  88,170,25,144,198,66,100,43,168,133,98,190,87,197,232,151,13,250,19,51,149,203,100,36,
-  22,0,4,5,21,24,30,19,20,11,12,20,40,51,37,19,9,36,41,39,17,30,43,88,
-  76,60,194,237,37,123,250,24,31,245,178,87,167,71,177,69,21,22,50,60,187,150,39,242,
-  152,117,142,43,174,26,109,162,179,220,13,164,77,60,234,100,227,18,55,176,23,132,188,152,
-  75,120,181,187,76,41,251,164,222,137,22,222,49,87,156,178,51,218,161,224,128,226,102,80,
-  147,124,249,108,254,86,199,27,198,243,213,177,103,254,13,51,234,91,60,229,140,164,172,198,
-  49,40,61,41,194,221,250,17,31,220,255,161,209,49,247,7,213,111,183,2,13,3,216,43,
-  100,1,17,194,210,237,59,48,165,88,208,104,34,132,123,186,153,184,172,244,4,60,227,120,
-  87,195,206,52,24,93,94,37,165,177,191,229,81,251,79,235,130,91,107,148,142,137,88,237,
-  151,30,118,215,26,105,99,237,206,36,89,239,166,254,29,143,106,106,141,156,185,117,99,39,
-  1,191,67,249,248,148,43,209,117,49,32,252,164,82,67,216,186,237,111,12,34,236,10,125,
-  225,72,120,55,60,45,81,121,191,42,28,232,51,121,19,198,19,163,104,241,15,59,114,47,
-  222,198,224,129,183,147,149,140,23,73,232,6,86,53,203,71,112,184,96,215,142,114,163,75,
-  49,254,230,43,204,79,103,98,175,113,30,230,178,95,173,33,229,205,55,46,33,24,224,228,
-  38,90,240,124,128,9,239,69,207,135,223,67,189,255,138,21,117,112,170,163,78,33,7,41,
-  138,207,241,211,185,47,55,221,101,105,124,62,210,8,168,53,216,63,139,87,102,199,4,166,
-  92,8,59,252,58,102,62,155,220,223,173,77,215,70,117,4,112,66,184,110,134,231,65,90,
-  33,45,114,30,235,237,68,114,202,60,80,250,135,41,212,15,90,138,201,218,193,121,26,202,
-  16,82,126,84,221,205,211,192,90,198,191,99,202,173,41,76,82,114,11,243,87,106,17,112,
-  95,107,185,35,4,114,205,217,44,6,138,148,130,136,37,43,105,123,103,201,188,171,158,65,
-  156,80,211,200,102,10,52,161,255,18,201,255,209,15,221,99,60,159,120,91,208,185,196,230,
-  54,226,151,45,251,7,165,149,132,103,92,90,196,124,22,0,6,5,21,23,34,31,38,28,
-  35,21,28,14,15,9,7,9,33,40,37,18,30,81,97,77,24,190,213,121,94,221,67,161,
-  166,200,179,57,77,104,148,170,127,235,155,84,121,178,157,209,189,1,88,9,74,112,169,239,
-  204,142,252,158,68,20,18,65,81,80,130,73,171,206,196,6,182,241,83,233,135,44,101,181,
-  76,235,190,145,13,180,118,113,16,135,80,104,29,92,239,69,29,99,8,50,24,91,200,60,
-  8,187,19,54,5,49,147,154,150,88,16,122,89,182,56,216,130,151,97,142,2,123,110,53,
-  56,123,192,131,79,72,255,63,206,78,78,60,173,208,147,222,35,208,107,238,72,131,107,112,
-  182,147,221,34,58,26,81,53,170,57,53,252,172,47,106,175,184,220,153,228,135,5,120,40,
-  65,156,9,88,12,191,80,93,89,190,223,86,233,99,209,118,32,173,28,181,167,101,155,184,
-  241,73,203,111,70,89,206,50,132,226,130,199,145,65,84,21,61,48,127,188,70,77,218,22,
-  34,32,30,196,70,237,184,44,218,119,191,151,133,236,246,211,63,163,111,196,87,255,50,204,
-  211,61,0,224,121,23,41,8,155,254,106,5,173,108,53,72,10,154,149,113,51,139,68,40,
-  222,111,0,180,124,40,122,169,79,21,168,113,251,53,197,253,39,7,66,67,12,183,147,129,
-  80,76,28,182,242,20,242,57,129,82,81,243,87,131,108,136,229,209,112,187,208,26,46,71,
-  194,197,27,187,237,144,145,197,51,193,109,112,46,134,187,12,223,59,254,50,3,53,83,254,
-  87,91,210,2,92,189,149,85,70,202,135,160,232,71,143,112,219,241,248,18,40,210,189,165,
-  176,186,172,13,160,55,192,120,46,232,42,92,251,116,90,48,10,186,54,245,46,51,20,50,
-  74,61,87,14,72,98,73,125,210,15,235,240,117,143,58,5,177,92,76,62,39,35,152,139,
-  196,98,84,248,168,71,223,254,49,222,191,21,111,194,160,141,50,201,35,1,145,127,214,98,
-  231,20,71,241,196,199,103,167,55,206,230,175,111,235,157,87,195,148,175,254,22,0,2,7,
-  21,31,52,55,49,21,8,34,35,42,11,11,10,11,48,67,66,33,18,42,28,198,135,135,
-  120,234,58,40,5,73,61,246,157,56,77,200,16,243,24,251,61,4,154,108,33,1,132,92,
-  206,74,252,148,123,225,207,190,19,94,117,210,99,23,156,18,228,162,139,156,26,52,125,150,
-  134,98,54,159,215,76,232,198,46,137,139,167,204,61,51,161,173,176,39,139,101,129,191,96,
-  6,186,153,57,235,123,7,90,5,124,17,205,184,140,241,157,167,219,14,82,88,159,163,192,
-  146,130,163,183,131,101,178,3,27,249,69,30,180,232,106,252,203,98,108,220,254,198,174,0,
-  26,114,163,226,158,146,234,113,13,100,65,111,16,181,128,87,245,208,182,8,126,209,232,37,
-  102,72,188,147,210,217,191,121,23,125,107,52,189,204,231,175,0,48,33,224,86,29,185,104,
-  88,93,110,20,154,209,191,186,187,218,238,88,96,10,183,233,87,209,241,242,224,246,236,186,
-  51,85,206,223,169,61,139,54,184,189,108,130,68,50,75,95,119,247,223,74,8,232,17,226,
-  28,224,186,206,80,43,242,32,247,135,181,20,82,52,250,196,90,234,136,220,62,157,150,5,
-  214,199,157,50,231,64,148,164,19,205,27,110,189,105,28,248,226,132,63,156,19,8,52,24,
-  13,36,196,210,77,105,26,157,106,180,34,157,163,137,83,132,104,209,4,109,159,2,100,34,
-  102,183,197,102,50,212,124,241,40,34,54,152,127,115,195,99,122,32,132,210,176,215,4,28,
-  83,133,144,111,26,205,218,31,131,134,253,86,22,0,2,4,10,22,22,54,56,52,18,3,
-  3,34,35,37,10,11,17,77,75,73,18,36,27,198,141,135,120,234,58,102,81,205,61,246,
-  157,81,148,231,43,92,84,78,39,4,235,22,170,159,1,249,208,201,84,38,102,116,163,182,
-  49,99,6,153,27,185,64,29,197,150,46,178,73,40,78,104,204,138,184,12,150,157,154,247,
-  191,89,19,183,98,235,66,92,34,101,10,79,100,113,173,128,25,9,181,84,83,44,49,177,
-  88,170,123,139,104,201,240,210,86,241,250,192,255,160,97,170,50,98,179,75,46,201,201,77,
-  98,247,221,189,191,232,9,95,1,140,255,171,113,195,200,121,56,54,166,47,70,55,41,16,
-  28,127,111,131,55,36,120,184,208,151,15,145,185,128,69,138,113,233,82,237,160,68,125,89,
-  54,98,73,247,26,123,125,174,5,92,116,76,155,116,71,152,190,66,17,135,29,135,254,79,
-  237,181,57,26,130,219,216,65,17,86,165,84,222,247,142,38,217,5,103,172,131,44,158,101,
-  36,210,22,227,43,12,36,43,17,244,49,74,169,67,32,23,216,88,213,211,99,217,170,139,
-  9,75,76,215,199,36,184,232,237,146,126,192,144,50,146,6,169,108,10,146,209,4,5,195,
-  169,41,98,116,14,40,154,237,51,65,154,206,62,181,139,54,199,210,251,73,1,36,201,117,
-  106,153,154,154,232,242,127,223,85,149,215,48,50,253,140,255,212,129,62,250,244,80,213,63,
-  131,150,211,0,222,101,147,70,226,73,238,76,62,83,230,213,166,239,182,231,237,137,156,243,
-  107,134,155,31,151,217,0,118,99,64,39,79,126,149,10,28,140,210,59,101,157,247,152,38,
-  202,121,192,22,0,9,7,33,63,64,48,11,10,37,44,45,20,26,48,64,50,27,9,18,
-  24,24,19,10,113,21,135,120,233,238,173,10,221,207,22,8,156,249,119,228,190,31,78,128,
-  192,15,110,67,185,20,214,226,137,210,80,86,112,84,64,23,114,72,219,185,133,165,163,13,
-  59,184,154,251,153,185,59,24,14,19,221,6,245,135,68,201,208,48,139,36,115,195,209,159,
-  133,94,188,225,0,142,136,126,45,188,17,212,254,244,203,8,137,235,236,5,149,112,154,102,
-  97,250,222,129,93,15,46,236,179,223,83,5,43,23,9,204,228,245,207,140,175,155,64,194,
-  160,23,192,70,112,117,193,214,203,117,139,140,53,222,174,136,42,7,243,1,171,14,74,219,
-  53,182,156,76,173,152,20,195,193,7,57,202,150,97,228,23,66,166,205,149,40,228,163,179,
-  161,138,35,72,177,232,100,47,22,255,27,189,95,141,75,3,169,50,111,247,151,64,79,57,
-  102,73,217,177,168,67,35,192,72,25,246,34,127,203,66,56,244,238,82,176,211,208,28,218,
-  193,1,45,173,8,185,116,17,103,73,104,187,222,179,185,140,247,197,33,190,187,64,48,184,
-  29,113,236,162,152,42,70,136,60,14,93,187,186,54,149,34,66,112,89,244,14,124,140,81,
-  163,86,253,132,144,17,142,233,155,51,68,92,34,105,102,198,28,222,28,78,15,73,252,113,
-  8,136,72,226,203,44,0,163,216,21,236,119,185,138,180,157,72,135,101,38,250,164,177,44,
-  167,99,89,50,114,210,42,213,249,2,11,22,52,150,93,79,20,80,133,48,90,61,196,226,
-  38,43,241,155,189,159,125,35,143,123,23,246,254,49,74,243,251,112,86,171,183,214,196,164,
-  6,106,108,197,33,190,116,75,187,221,137,175,149,222,236,248,115,116,238,252,68,117,237,199,
-  248,168,76,11,77,202,66,96,8,240,209,28,120,203,35,122,170,204,22,67,143,108,29,133,
-  124,211,12,192,101,131,118,211,40,185,122,26,11,213,167,64,44,20,0,2,8,29,70,72,
-  55,35,36,41,22,15,11,10,17,35,62,53,33,9,18,34,173,228,135,120,236,17,10,208,
-  223,102,210,96,139,130,79,84,2,20,10,206,56,58,183,127,107,208,235,116,32,0,238,231,
-  208,172,98,3,11,230,250,90,144,188,45,63,165,224,0,203,45,199,156,97,171,43,253,189,
-  177,145,63,49,211,159,140,4,42,161,135,29,195,223,217,55,80,40,195,85,28,112,242,219,
-  251,214,185,238,206,102,10,17,93,94,185,255,211,142,152,24,137,57,55,27,7,155,217,158,
-  228,146,146,237,126,205,54,0,152,145,24,34,200,111,16,110,145,122,137,44,180,221,110,231,
-  5,201,196,23,133,147,193,15,110,176,173,229,136,161,138,112,159,91,67,44,232,235,193,250,
-  201,216,217,74,32,212,113,199,109,31,215,24,227,207,80,44,231,203,103,25,117,229,95,98,
-  118,240,145,104,170,89,101,24,43,143,124,173,147,32,81,160,172,235,79,78,36,176,74,84,
-  31,186,22,94,28,205,10,40,144,40,60,14,30,37,23,179,177,238,31,248,31,198,140,38,
-  235,196,92,211,245,1,252,213,195,211,36,254,42,5,245,150,208,205,31,53,201,238,222,236,
-  174,45,54,197,73,125,205,33,112,96,111,238,78,173,119,165,163,36,218,178,59,226,67,179,
-  38,59,177,177,171,14,216,178,76,158,233,72,16,66,161,46,4,160,212,163,83,230,251,155,
-  65,167,137,124,48,85,196,215,14,116,77,55,163,57,1,60,245,255,252,113,59,250,7,107,
-  201,210,162,80,59,129,213,192,147,175,9,97,156,93,199,19,0,7,7,29,27,31,21,42,
-  41,49,42,43,30,18,15,72,67,64,10,18,34,137,40,135,120,233,238,206,34,221,207,20,
-  244,223,252,251,79,32,143,145,245,29,146,113,123,207,233,65,59,107,16,221,58,189,193,72,
-  12,38,140,204,13,134,193,202,80,207,42,60,107,3,41,133,52,137,145,88,255,180,109,38,
-  255,111,183,100,166,190,79,11,143,184,167,192,129,35,128,123,20,148,200,242,188,196,84,44,
-  240,148,2,143,105,16,174,12,6,79,101,0,16,165,252,100,255,52,50,51,193,162,157,243,
-  148,111,106,49,15,229,200,58,165,107,196,47,99,112,38,28,126,39,3,246,184,50,163,206,
-  7,121,56,34,78,226,123,145,23,235,231,97,98,208,191,164,248,161,254,116,182,201,102,184,
-  134,250,182,196,52,132,91,6,188,230,98,106,143,77,139,214,61,59,148,106,196,145,253,249,
-  190,146,63,166,116,254,68,98,173,141,130,125,93,25,87,140,47,175,163,206,212,44,218,63,
-  15,239,97,201,160,204,15,69,230,5,166,67,2,171,142,189,87,218,81,122,217,69,18,90,
-  34,80,189,129,14,163,16,220,190,11,191,15,104,56,181,26,49,237,101,101,102,7,252,27,
-  91,174,38,48,10,86,180,83,243,192,57,134,109,253,100,58,175,129,243,95,237,151,217,165,
-  248,36,33,198,77,252,143,132,135,222,33,178,32,232,235,40,99,22,48,72,213,78,14,209,
-  53,243,106,118,42,182,104,125,85,126,158,209,57,230,36,165,159,59,102,41,26,126,251,9,
-  85,40,215,104,137,81,239,92,223,161,41,229,222,71,128,218,104,153,197,49,143,28,52,147,
-  3,190,201,50,184,225,78,144,64,177,241,94,149,141,108,156,114,86,140,80,86,100,221,145,
-  133,98,236,128,56,252,84,41,188,10,41,61,222,249,15,193,178,188,107,7,16,142,114,86,
-  179,189,216,79,220,48,90,161,100,164,235,181,250,0,185,7,77,143,198,137,121,22,0,8,
-  6,10,26,26,70,48,49,8,25,24,30,19,21,18,12,48,67,66,33,18,36,28,198,141,
-  135,120,234,58,71,43,141,61,246,157,56,77,199,84,99,66,249,226,224,106,92,92,97,152,
-  227,36,157,166,129,32,213,234,249,33,6,78,20,32,163,89,153,80,14,251,128,13,146,93,
-  121,57,134,111,154,176,234,40,64,147,57,98,189,244,0,48,68,42,191,214,251,40,172,75,
-  171,200,74,86,189,112,36,106,100,12,38,203,57,14,198,17,226,252,137,87,254,251,165,30,
-  94,67,63,136,164,147,38,63,212,76,60,29,136,237,169,103,57,227,157,149,2,49,108,219,
-  202,123,169,54,204,63,112,173,28,193,162,146,134,242,58,213,127,111,95,127,194,29,153,155,
-  195,180,205,49,199,235,154,210,6,75,100,205,47,149,171,211,198,54,143,119,124,20,52,90,
-  124,125,78,189,161,80,160,17,73,174,151,147,97,188,173,117,186,218,83,192,243,84,101,240,
-  89,128,23,187,245,105,162,97,159,1,193,226,246,135,20,44,99,181,84,166,75,128,163,66,
-  11,77,219,175,247,87,71,131,172,121,175,155,128,185,168,39,201,156,8,170,4,114,50,166,
-  218,42,3,127,46,50,156,41,149,204,189,107,38,105,245,233,210,78,80,111,252,162,251,59,
-  211,77,215,22,97,159,171,56,187,15,153,189,226,220,246,24,133,59,193,6,231,74,203,6,
-  191,146,26,42,108,229,254,87,249,117,39,17,73,194,9,185,45,87,49,181,131,235,192,236,
-  142,47,235,49,107,34,229,169,60,126,140,88,166,122,225,40,44,254,180,145,193,130,82,20,
-  0,10,20,23,24,50,55,46,10,5,4,36,41,44,11,14,75,75,73,18,42,27,127,15,
-  135,120,233,238,239,58,221,207,20,240,225,45,6,255,101,2,10,195,211,69,201,109,84,196,
-  205,212,114,188,16,148,236,125,199,28,37,50,136,37,190,61,173,50,163,216,222,247,175,111,
-  127,142,121,253,190,171,238,189,47,207,36,241,117,184,228,133,169,190,237,155,217,25,241,54,
-  46,59,111,159,19,231,161,53,94,226,87,79,145,87,49,215,145,234,131,26,227,101,37,184,
-  2,113,98,81,152,213,44,20,58,72,92,43,133,227,18,26,48,34,220,204,168,31,164,165,
-  184,160,151,142,210,220,208,202,180,145,219,149,71,120,34,128,195,46,232,199,74,136,13,28,
-  197,95,173,216,250,39,234,124,121,14,182,179,248,42,9,198,4,144,126,44,221,105,215,129,
-  58,135,129,50,236,145,203,177,80,204,6,52,0,53,15,154,88,175,15,131,34,160,49,74,
-  226,28,204,166,20,157,159,46,232,194,246,141,175,73,99,75,242,253,26,69,92,96,21,174,
-  118,53,33,130,36,228,232,70,217,145,87,51,109,78,148,253,166,26,13,147,71,60,106,61,
-  14,45,132,212,184,105,25,228,253,168,114,186,101,90,44,198,130,189,153,147,119,184,147,68,
-  221,144,216,152,20,105,193,64,5,233,136,6,185,239,125,3,188,200,44,103,151,3,233,219,
-  111,117,22,113,105,235,10,75,214,72,141,96,228,146,228,94,53,69,244,99,179,114,190,62,
-  0,245,44,194,157,149,198,227,62,249,68,53,183,198,70,10,25,169,63,86,138,47,151,9,
-  28,177,88,219,5,24,167,220,249,16,18,0,9,8,34,67,72,50,42,44,45,18,51,74,
-  68,29,10,17,27,34,16,228,30,135,120,233,23,253,203,101,35,122,248,218,95,4,162,159,
-  112,107,1,220,84,216,236,196,91,128,81,255,156,26,201,60,75,131,246,158,215,42,154,109,
-  136,59,246,25,136,95,210,113,59,222,150,237,109,252,254,163,25,2,132,153,125,107,24,220,
-  253,182,89,197,179,14,1,136,22,206,1,230,62,9,89,81,247,102,170,222,141,97,168,136,
-  178,94,174,210,213,248,108,27,77,183,252,70,223,227,219,70,74,165,224,65,26,0,131,216,
-  82,189,192,229,171,173,16,145,113,205,67,216,84,235,254,13,99,255,164,101,137,165,113,246,
-  38,205,27,179,111,47,54,21,66,113,237,86,120,78,145,64,37,214,145,61,92,119,246,202,
-  121,45,51,6,198,135,115,61,32,175,162,45,37,139,171,159,204,31,206,171,11,229,34,153,
-  10,45,187,3,104,173,55,31,80,116,59,234,171,159,64,53,185,33,164,179,67,222,85,32,
-  79,97,235,172,66,170,210,131,168,149,212,244,163,52,24,241,65,206,146,246,225,168,147,169,
-  170,248,221,22,54,95,11,128,148,167,21,238,191,68,3,82,229,42,151,140,253,251,208,156,
-  167,240,82,116,100,152,31,175,172,163,123,96,129,151,182,202,52,172,87,165,73,195,17,181,
-  129,202,41,227,114,152,206,123,252,72,193,38,220,102,7,225,93,142,186,21,239,230,35,134,
-  40,210,169,69,119,209,199,134,241,120,224,100,202,91,32,17,196,128,84,9,145,25,177,166,
-  45,50,218,169,18,52,81,186,24,88,204,110,244,114,165,78,10,96,60,225,228,218,214,22,
-  0,6,7,16,25,24,62,51,50,27,36,42,22,11,7,9,48,66,65,26,5,9,18,34,
-  245,92,135,120,234,84,162,185,255,251,206,250,88,109,254,154,206,205,20,168,19,123,121,51,
-  13,72,194,92,123,199,227,229,24,222,105,239,137,33,53,210,14,115,121,203,31,148,16,110,
-  150,126,15,187,88,139,248,234,67,124,92,110,143,48,172,119,11,178,110,75,191,154,222,168,
-  252,201,233,87,103,133,34,80,112,238,81,11,218,4,17,224,221,184,146,218,113,39,236,190,
-  115,148,64,220,138,21,234,55,237,145,49,176,176,6,6,209,95,176,31,97,114,130,220,28,
-  178,37,2,233,165,161,174,185,224,238,42,243,218,219,96,110,204,205,0,62,158,65,61,164,
-  167,54,102,111,169,148,189,164,152,195,86,168,229,209,13,155,161,30,166,159,57,75,4,255,
-  157,58,98,3,151,227,122,251,119,28,31,23,78,130,106,65,183,206,195,136,169,213,44,75,
-  57,42,215,216,176,195,209,183,189,209,212,47,223,58,253,120,99,151,47,203,62,233,6,200,
-  199,251,140,202,235,252,104,11,96,67,121,169,156,79,128,55,220,228,122,23,207,236,107,64,
-  37,160,81,14,235,59,112,174,42,118,40,152,68,39,245,86,10,77,191,198,74,41,193,120,
-  74,46,185,6,221,72,174,185,120,246,94,166,165,115,141,218,82,250,138,33,245,181,167,11,
-  16,217,226,147,169,160,114,28,162,177,127,175,23,36,126,100,196,9,22,0,10,31,80,72,
-  50,27,26,34,19,19,11,10,44,43,45,14,31,23,26,18,26,35,17,153,203,135,120,234,
-  17,233,119,96,14,241,103,132,114,211,44,8,238,139,54,66,130,47,87,250,14,255,36,84,
-  168,253,155,15,6,28,220,102,232,21,230,20,77,18,28,152,134,244,179,139,139,214,242,193,
-  93,219,177,39,104,40,28,106,204,28,151,226,111,66,251,227,42,73,32,230,124,129,98,82,
-  237,247,173,209,216,77,94,232,94,156,230,204,91,2,42,196,12,235,63,241,88,52,163,165,
-  242,93,139,114,198,27,96,30,182,24,174,134,80,237,216,18,62,15,142,98,10,168,107,251,
-  69,37,193,119,56,233,126,229,70,235,42,182,184,15,159,86,209,205,52,22,67,90,172,244,
-  202,48,203,105,233,224,225,151,145,116,46,245,177,81,67,80,22,14,111,29,127,204,213,89,
-  49,184,75,80,76,38,221,120,202,96,181,107,59,85,252,219,172,198,64,128,192,7,234,219,
-  251,74,113,42,103,108,184,104,166,9,251,81,39,249,78,109,144,38,0,163,49,16,243,93,
-  149,85,36,185,140,155,155,127,174,157,245,33,153,34,8,221,192,32,18,238,63,149,78,191,
-  28,13,86,81,164,134,25,3,61,101,169,248,21,222,198,125,28,110,94,101,107,0,192,95,
-  191,195,89,161,50,214,73,193,62,24,51,102,214,156,48,120,60,55,3,14,50,117,21,154,
-  80,180,19,208,171,22,209,17,1,199,222,220,60,136,0,171,94,34,33,14,176,195,64,126,
-  239,23,167,125,145,133,8,230,74,194,157,31,118,46,92,127,133,242,80,74,121,212,187,203,
-  214,163,113,103,238,239,220,194,5,222,119,99,1,70,241,135,231,93,102,220,216,45,17,218,
-  40,232,208,9,219,99,163,18,166,225,116,249,4,153,234,255,93,127,141,188,5,51,38,108,
-  69,199,49,73,22,0,10,31,56,66,43,26,8,39,36,36,10,11,16,12,48,60,65,27,
-  14,18,24,36,17,155,203,135,120,233,121,208,247,137,156,156,111,122,138,187,31,97,2,216,
-  129,202,40,220,130,199,156,230,52,38,246,108,14,37,250,193,193,197,249,68,38,154,182,101,
-  21,215,68,108,164,127,240,19,245,53,150,172,171,156,125,177,164,123,66,89,234,4,255,65,
-  242,240,23,34,246,212,134,246,98,164,115,65,225,109,115,62,165,219,202,201,26,228,158,158,
-  79,181,74,64,203,127,245,146,40,170,204,149,153,205,234,99,48,113,21,143,244,127,235,186,
-  133,216,105,54,155,251,182,99,212,60,53,160,160,39,56,0,15,159,134,164,118,75,209,20,
-  255,11,52,98,233,30,128,36,198,190,10,1,172,206,21,226,249,141,160,131,19,176,131,249,
-  241,192,96,18,81,13,110,125,0,73,111,125,133,67,97,218,150,20,204,81,20,23,172,6,
-  209,152,164,236,18,156,72,227,7,177,60,150,7,241,86,239,213,220,49,83,127,66,119,227,
-  155,209,132,232,99,232,144,55,35,53,129,105,244,3,59,174,160,217,46,153,92,40,188,79,
-  16,204,131,111,251,230,40,151,187,33,29,160,160,128,201,97,107,230,163,98,143,101,148,94,
-  89,57,157,50,20,205,209,184,217,41,54,56,85,179,30,195,175,162,236,62,26,66,33,210,
-  167,30,193,97,126,143,106,234,166,167,221,41,174,231,174,207,195,138,134,62,145,164,110,197,
-  105,62,92,47,180,156,195,159,107,96,95,51,84,249,84,80,200,105,26,77,153,23,112,100,
-  35,119,22,110,95,249,86,56,128,167,48,106,253,146,45,13,139,230,7,122,200,150,37,66,
-  15,251,115,193,153,46,199,181,44,200,177,171,66,150,179,29,221,157,186,60,114,193,210,244,
-  204,235,223,12,58,226,203,174,72,59,126,24,59,217,197,253,103,157,61,55,169,143,104,22,
-  0,9,7,17,24,24,36,43,48,30,8,34,35,42,13,18,12,48,67,66,33,18,42,28,
-  198,135,135,120,233,191,94,168,223,150,122,88,248,2,130,153,23,97,2,243,62,97,127,133,
-  26,191,117,48,7,3,131,107,210,245,20,103,222,115,206,210,38,20,173,25,201,176,194,178,
-  48,28,238,91,19,51,211,176,85,33,238,40,34,135,201,87,135,119,79,118,91,109,232,20,
-  144,101,116,253,38,215,140,175,196,72,24,199,107,75,84,168,125,92,0,156,163,42,146,113,
-  207,160,6,236,213,155,66,136,220,198,167,93,177,58,154,123,197,95,35,59,49,125,193,154,
-  88,239,39,203,65,192,108,230,150,19,90,215,140,23,236,163,41,54,171,61,162,174,216,8,
-  246,24,51,218,126,148,196,38,175,3,49,7,199,240,16,38,83,125,208,67,37,99,238,214,
-  90,71,196,203,90,242,62,192,190,108,250,228,89,32,153,94,73,71,142,116,219,231,52,101,
-  44,166,18,200,195,30,185,192,238,182,159,170,237,145,5,145,186,232,47,244,196,43,12,230,
-  141,106,87,183,57,179,126,192,108,133,78,33,38,88,243,81,228,9,112,236,85,248,129,41,
-  100,237,114,244,58,120,16,135,149,215,204,90,250,112,238,184,245,204,111,121,131,222,18,125,
-  174,146,177,244,22,241,240,236,109,145,59,93,76,68,190,137,134,149,225,40,36,37,139,104,
-  111,0,110,240,143,93,210,229,157,107,229,171,224,235,243,18,88,254,14,180,60,221,164,80,
-  101,228,119,205,96,160,237,148,159,32,16,235,111,250,23,242,116,60,153,217,68,107,131,77,
-  147,92,155,102,96,190,236,39,217,28,74,59,220,127,78,120,58,4,44,162,125,97,90,234,
-  115,119,30,129,183,182,188,198,255,51,139,112,17,80,252,31,112,144,212,145,199,79,37,23,
-  0,14,29,58,61,73,52,47,24,44,40,33,16,16,26,25,34,31,32,22,19,21,16,15,
-  244,109,190,135,120,233,94,241,15,202,36,101,136,164,47,182,115,39,102,109,35,69,148,185,
-  157,111,167,242,50,156,115,74,46,184,16,86,153,18,76,185,121,184,186,179,190,152,112,143,
-  18,118,112,211,64,106,124,234,96,158,114,175,0,215,31,224,54,64,9,65,168,60,147,121,
-  95,251,149,118,182,95,45,7,84,111,233,39,82,109,2,187,230,143,87,107,128,130,110,4,
-  209,98,129,230,15,101,80,145,224,217,254,159,187,167,10,226,109,227,199,166,51,96,67,174,
-  185,176,194,62,214,249,211,176,190,63,195,6,146,10,107,180,31,27,45,38,255,8,245,5,
-  4,171,73,12,179,233,186,144,223,54,114,233,18,141,67,232,87,50,32,70,31,188,222,103,
-  138,255,195,51,103,101,226,196,233,133,79,7,154,129,169,126,20,184,243,214,164,194,231,102,
-  18,149,18,145,228,195,58,94,154,189,83,240,196,197,19,80,144,182,171,141,176,59,81,224,
-  132,255,73,155,188,62,79,153,95,135,235,235,4,96,45,161,208,218,94,55,6,151,15,228,
-  36,217,130,103,13,27,64,226,17,217,75,91,132,133,179,80,163,200,244,85,36,187,54,182,
-  9,68,92,61,176,125,121,133,14,172,152,25,248,162,248,89,31,37,21,212,106,23,7,70,
-  245,196,181,45,96,145,65,184,146,196,172,67,227,104,129,24,135,200,148,26,112,192,156,60,
-  255,34,58,164,237,157,175,211,104,148,5,90,29,91,70,240,180,47,46,159,92,30,91,198,
-  238,169,113,104,11,170,185,126,74,222,119,106,126,177,144,184,84,73,25,16,102,91,174,149,
-  168,18,179,254,193,11,171,151,120,244,211,78,142,156,213,138,135,179,191,109,114,31,149,19,
-  240,81,86,94,126,116,216,73,20,132,140,183,165,183,241,43,79,195,133,124,130,49,223,169,
-  203,20,44,154,75,237,229,60,251,56,228,193,48,212,45,178,216,109,21,38,49,87,152,14,
-  68,162,3,43,42,106,123,135,210,163,19,46,94,118,7,110,35,112,151,57,205,3,190,113,
-  252,194,70,220,91,96,153,203,11,103,201,237,122,103,62,51,129,152,68,34,152,68,22,0,
-  3,17,22,57,42,57,36,60,51,58,39,34,14,26,24,39,30,35,20,19,25,28,0,147,
-  122,135,120,233,128,76,159,203,248,50,202,161,181,54,73,212,217,170,118,136,238,130,121,16,
-  102,120,250,152,140,42,119,103,4,132,226,119,44,229,187,89,43,128,196,218,87,120,233,218,
-  102,179,135,196,219,105,43,215,226,205,207,126,239,157,86,131,63,61,114,245,214,248,53,127,
-  248,199,137,94,98,249,170,173,101,111,112,129,93,51,31,34,36,254,169,232,251,224,75,242,
-  201,29,12,3,61,121,231,148,21,44,217,85,26,125,189,205,148,181,115,11,117,68,234,252,
-  136,39,200,218,81,92,87,222,76,98,173,155,95,43,162,226,54,204,228,105,145,111,212,28,
-  130,165,152,120,124,188,41,6,4,206,141,6,180,85,12,114,67,34,65,211,246,12,60,208,
-  83,18,49,198,183,230,20,246,145,125,251,103,177,44,91,125,237,233,133,1,220,215,108,176,
-  6,209,104,88,116,38,24,209,31,209,105,247,144,232,230,229,186,250,242,180,114,130,219,27,
-  172,6,136,237,201,108,234,146,163,227,85,178,127,60,132,233,201,225,210,47,134,105,148,230,
-  216,102,168,96,205,25,16,77,37,4,35,33,165,250,42,59,221,20,62,156,160,125,224,161,
-  34,135,178,150,219,124,39,211,209,87,196,163,210,212,10,99,144,183,191,82,196,60,54,121,
-  194,78,79,107,140,220,156,141,242,42,90,126,39,167,132,174,224,162,29,39,57,99,94,3,
-  188,51,20,76,112,96,108,78,197,237,158,124,227,223,197,66,198,16,61,85,79,147,217,203,
-  186,112,255,94,161,43,163,218,21,21,173,72,154,160,2,121,239,63,29,79,68,143,166,71,
-  231,91,55,189,66,242,77,8,233,182,181,12,219,22,129,16,176,173,241,71,174,17,236,15,
-  126,175,79,217,221,143,136,161,100,14,255,193,158,72,38,232,177,179,117,113,161,189,195,105,
-  0,253,71,149,224,160,131,34,203,189,58,47,151,169,53,163,130,227,223,171,254,146,141,245,
-  176,104,3,20,43,172,244,197,209,31,143,243,150,104,194,96,182,83,110,224,72,131,204,95,
-  96,27,30,77,105,23,0,5,16,53,56,59,35,58,43,43,18,21,31,26,28,11,22,18,
-  40,35,34,14,16,29,9,159,125,135,120,233,195,3,191,204,237,192,199,155,129,7,203,104,
-  184,33,70,251,143,27,106,245,193,66,35,164,87,218,243,163,113,14,89,164,205,207,216,94,
-  39,16,157,79,129,98,173,119,35,226,209,30,30,200,221,168,79,147,211,202,46,76,112,164,
-  31,185,66,188,108,21,96,244,140,209,199,158,78,195,211,25,144,191,125,82,237,92,150,237,
-  249,138,161,149,4,237,4,203,62,252,234,74,110,183,70,119,142,11,155,192,95,165,50,152,
-  190,61,179,201,129,36,145,59,173,243,35,215,172,164,255,200,8,60,97,179,120,240,188,139,
-  201,57,252,66,61,212,152,178,190,17,195,245,179,148,241,67,49,141,187,247,143,35,36,79,
-  252,89,158,59,252,95,116,141,160,16,178,38,43,151,211,219,121,78,156,35,191,128,48,51,
-  167,115,40,207,238,71,162,24,182,135,5,9,68,171,133,106,126,210,11,52,77,26,0,230,
-  132,18,12,51,149,0,224,9,106,81,183,175,115,80,129,3,14,110,94,168,134,159,195,111,
-  176,244,131,223,80,16,210,121,61,136,163,140,91,60,252,220,137,206,99,208,168,114,66,17,
-  101,96,235,163,238,211,189,7,237,126,252,9,40,202,154,63,158,206,254,173,126,252,53,130,
-  46,175,18,126,106,157,188,173,249,66,90,181,105,249,60,139,175,171,200,244,122,107,178,235,
-  2,155,254,172,35,94,189,241,4,112,46,107,225,155,93,78,11,112,188,228,28,56,42,173,
-  203,171,192,141,235,14,238,27,42,29,156,209,50,48,110,35,86,155,215,204,188,75,60,128,
-  143,178,221,76,75,241,50,116,210,34,166,139,36,26,206,233,248,117,58,148,146,165,37,221,
-  196,222,211,201,35,29,191,251,170,101,144,218,243,250,221,249,66,13,206,154,105,73,18,236,
-  195,53,87,101,134,2,39,105,79,31,57,107,82,9,175,110,70,238,102,174,130,206,252,204,
-  179,4,66,188,225,193,81,4,23,246,149,224,180,204,214,149,97,99,19,233,223,209,214,32,
-  115,90,31,237,188,14,163,254,149,99,135,164,34,79,205,253,129,38,80,138,36,175,205,151,
-  46,128,78,232,82,141,252,30,41,137,49,129,83,119,87,22,219,82,163,199,108,185,213,38,
-  36,102,40,4,55,131,199,113,68,10,99,39,20,125,243,50,102,206,5,112,156,179,155,246,
-  128,89,48,176,239,36,73,209,3,248,23,0,12,28,49,45,64,56,65,35,47,35,31,18,
-  28,24,18,11,23,28,31,25,19,20,21,1,148,122,135,120,233,94,241,15,203,248,50,207,
-  62,21,54,94,2,113,78,18,211,24,179,241,61,94,118,21,118,15,103,230,184,223,107,144,
-  116,31,6,183,215,238,209,177,222,2,33,90,84,119,126,102,59,214,33,230,234,168,112,255,
-  201,203,9,82,119,48,90,140,209,148,25,82,24,73,89,225,231,176,82,128,48,13,154,74,
-  174,158,203,65,148,70,254,123,15,40,47,137,1,249,201,147,63,9,185,133,190,206,73,88,
-  31,234,205,88,173,165,116,51,0,128,247,206,166,7,105,112,6,92,183,177,124,231,252,197,
-  125,126,242,156,250,231,56,90,224,92,237,234,146,124,64,141,36,209,121,173,10,243,145,199,
-  41,193,154,12,124,19,195,248,187,0,212,222,95,94,43,195,76,181,120,91,246,205,155,228,
-  11,95,50,229,141,11,245,179,108,196,227,251,25,209,3,57,145,54,254,224,186,243,111,63,
-  116,193,31,201,197,193,94,142,213,253,116,145,182,145,70,223,119,135,46,223,91,227,74,62,
-  183,9,3,81,128,210,69,143,252,172,41,241,148,56,114,127,67,174,67,13,162,176,178,136,
-  34,160,121,206,105,83,59,27,247,47,213,95,215,248,15,224,89,195,149,76,115,159,2,66,
-  213,93,8,136,178,35,18,229,166,87,198,238,205,207,149,191,225,6,104,101,196,50,221,16,
-  247,2,212,136,119,100,85,61,20,252,103,155,241,7,241,130,212,47,248,238,230,167,226,43,
-  5,200,175,31,218,15,127,48,67,218,175,213,46,225,118,118,172,7,51,199,222,211,92,183,
-  129,55,114,232,74,74,71,174,161,107,23,173,170,79,169,152,66,107,224,197,25,147,227,238,
-  65,171,255,162,74,88,185,210,30,248,39,123,240,174,27,91,1,2,129,25,161,2,94,157,
-  8,222,183,242,224,200,80,158,255,18,240,21,210,6,75,58,110,242,69,141,180,96,195,12,
-  11,176,122,213,121,217,163,224,202,164,65,73,48,17,114,65,182,53,45,242,183,52,2,235,
-  30,154,246,180,235,0,116,27,242,229,213,24,54,242,250,163,191,124,0,7,251,33,195,72,
-  226,50,245,54,32,66,139,49,89,175,141,193,188,84,108,224,127,213,238,91,117,65,20,197,
-  126,67,15,187,47,189,14,110,219,236,62,133,100,170,155,77,45,206,36,103,240,146,12,129,
-  77,33,254,216,236,22,0,3,16,59,59,75,46,51,26,25,41,40,40,31,29,25,24,27,
-  32,22,23,24,23,253,108,190,135,120,233,94,241,15,203,248,32,186,193,169,117,236,136,197,
-  237,228,197,60,70,172,73,19,41,151,157,72,62,253,176,163,173,21,115,99,192,95,189,60,
-  248,214,241,202,201,131,218,76,190,81,218,107,204,227,133,251,242,118,16,53,34,68,74,222,
-  37,245,165,7,167,13,51,124,129,252,89,56,247,84,30,177,143,130,76,243,2,176,122,221,
-  59,78,51,47,16,76,130,64,250,231,205,118,247,93,67,69,168,50,204,70,98,23,82,88,
-  18,86,6,32,53,168,205,124,35,22,242,169,81,118,90,83,33,129,56,187,193,239,229,36,
-  67,92,87,231,207,108,173,150,29,71,139,132,96,181,171,222,198,211,222,222,231,18,67,192,
-  171,31,126,136,107,99,105,221,247,239,231,116,5,174,171,226,120,130,65,253,129,167,95,205,
-  71,45,58,217,120,16,76,214,152,253,181,89,190,173,94,219,184,74,91,43,231,171,68,163,
-  140,36,68,84,239,212,215,143,83,222,146,118,168,163,249,160,86,160,81,176,173,46,214,237,
-  102,112,132,40,20,79,241,145,246,110,45,91,75,241,164,23,212,108,127,215,250,111,69,72,
-  24,180,114,88,245,194,20,102,211,120,204,78,211,128,251,43,61,216,140,102,207,185,239,156,
-  117,69,97,95,147,64,116,57,96,171,223,146,70,177,77,255,41,149,92,184,157,197,111,219,
-  244,12,188,169,197,137,47,248,24,90,131,210,112,32,88,2,249,208,217,205,162,120,4,78,
-  157,231,188,166,46,155,211,195,129,251,221,66,168,104,29,78,220,143,197,149,75,199,203,72,
-  31,160,28,15,175,208,173,18,75,176,124,97,246,141,100,108,125,0,208,7,100,94,104,83,
-  216,121,187,33,46,190,199,139,79,131,68,99,177,131,238,1,41,190,31,186,117,234,214,88,
-  172,9,213,150,209,200,5,213,37,201,175,191,202,81,223,49,218,255,4,187,247,178,233,15,
-  47,213,53,138,236,21,49,121,30,198,98,133,73,22,0,18,30,55,61,61,67,51,40,43,
-  40,37,22,18,38,30,37,18,13,6,10,18,22,255,111,191,135,120,233,28,60,161,211,176,
-  81,42,235,157,154,216,8,116,23,137,246,186,104,12,18,253,22,26,125,3,20,43,146,233,
-  136,15,188,185,202,34,103,199,151,69,230,204,130,234,64,127,98,52,62,131,160,142,111,157,
-  157,73,100,3,218,74,146,183,202,166,117,35,118,187,138,39,132,222,251,11,206,173,221,84,
-  138,202,187,195,199,51,79,0,41,85,111,39,76,13,228,252,47,185,112,140,113,166,121,197,
-  253,158,130,52,202,251,154,206,98,26,53,112,62,243,86,118,250,69,254,111,129,227,206,233,
-  81,40,133,3,180,31,155,149,238,43,30,245,203,187,233,193,231,161,250,86,39,129,227,191,
-  183,149,151,29,165,176,65,18,108,122,9,18,119,241,2,33,188,133,18,212,225,86,208,229,
-  89,155,8,223,97,63,227,191,220,38,73,235,53,2,118,242,10,234,16,192,138,50,44,195,
-  185,198,116,220,112,249,201,137,216,101,228,139,68,140,71,240,196,233,182,100,203,181,209,128,
-  133,155,101,188,184,60,145,102,248,43,135,125,253,134,231,183,145,188,240,135,161,74,132,187,
-  213,59,11,16,73,198,76,47,197,76,30,201,40,136,70,88,209,174,189,223,34,113,28,142,
-  231,138,73,96,61,226,115,174,44,22,181,111,72,120,95,118,49,170,3,200,255,209,8,180,
-  210,32,197,169,105,122,94,233,229,114,85,35,10,71,60,141,83,98,250,246,178,225,161,66,
-  217,80,202,149,200,64,168,37,63,27,216,34,236,80,208,202,183,19,250,239,5,64,210,206,
-  200,116,113,93,7,73,82,250,71,69,98,132,56,146,219,132,8,73,222,94,204,114,123,193,
-  116,194,239,88,181,242,30,81,26,189,11,177,154,109,220,71,32,147,221,20,118,174,58,148,
-  76,206,180,104,143,140,84,138,116,185,147,198,194,94,229,167,52,131,16,216,94,29,150,89,
-  19,149,90,70,179,236,193,100,133,225,33,189,186,197,139,82,11,67,183,56,24,66,17,63,
-  38,122,152,146,98,197,241,95,136,8,207,63,41,146,188,49,54,58,36,99,23,111,135,136,
-  222,153,37,148,155,54,251,161,228,214,110,130,11,120,212,251,142,252,160,243,154,159,78,175,
-  46,79,20,121,117,67,11,110,197,35,78,212,63,239,193,119,134,70,180,47,199,114,134,239,
-  5,140,95,39,65,30,23,0,3,16,22,52,57,73,53,34,20,12,19,28,36,27,19,14,
-  27,27,39,33,30,16,34,17,170,126,135,120,233,227,211,172,202,86,41,13,232,225,179,124,
-  173,34,45,89,27,158,7,238,241,168,50,142,117,56,19,55,211,191,65,240,227,4,27,54,
-  122,165,29,78,226,66,120,28,60,68,100,17,94,230,193,50,153,140,153,126,120,14,53,3,
-  38,103,26,154,223,122,89,91,56,229,135,49,188,171,40,163,191,102,248,192,219,90,157,9,
-  181,195,51,181,162,214,106,1,67,178,32,36,24,80,3,253,172,199,11,74,131,189,83,103,
-  94,32,38,85,219,103,27,40,212,193,254,46,9,84,22,160,111,37,208,206,185,9,247,3,
-  4,116,240,129,109,130,167,108,170,7,238,59,79,213,108,173,121,248,236,63,82,254,209,225,
-  55,66,51,87,230,38,37,77,82,82,68,21,172,243,83,159,102,218,117,98,236,48,196,149,
-  27,29,214,17,4,57,139,217,246,93,166,151,130,39,75,209,199,236,115,207,104,106,219,207,
-  170,164,75,76,230,220,146,4,107,100,203,227,93,253,162,34,49,36,158,241,36,27,165,201,
-  253,93,146,142,108,24,167,137,128,83,251,77,59,11,34,246,227,103,43,207,131,160,156,125,
-  90,59,164,157,222,173,23,85,182,40,73,56,180,140,168,15,212,54,127,122,229,216,111,168,
-  44,72,221,75,209,144,107,88,14,98,105,120,224,191,93,199,16,182,16,172,247,59,226,58,
-  114,153,201,228,234,187,35,184,249,132,163,185,223,218,175,72,178,31,85,77,64,68,121,222,
-  194,73,254,138,24,15,233,85,0,89,205,0,60,202,245,117,47,118,176,143,62,86,122,5,
-  252,171,71,138,21,30,217,211,64,119,126,209,130,8,169,98,158,189,150,74,21,61,141,243,
-  215,132,248,200,76,120,168,236,47,225,204,242,96,187,4,93,89,110,16,50,101,26,86,255,
-  84,223,74,22,138,217,37,67,92,208,86,232,185,27,202,0,26,23,0,17,29,56,45,59,
-  48,60,38,52,38,35,26,29,30,14,23,25,31,22,22,22,16,12,243,109,190,135,120,233,
-  94,241,15,202,36,101,59,5,35,124,2,2,15,230,89,186,246,27,115,83,194,24,250,58,
-  208,98,105,102,109,128,206,36,137,176,102,239,227,238,86,73,112,236,236,207,44,65,254,45,
-  218,62,200,18,77,160,175,242,134,112,56,181,254,71,211,171,177,174,104,232,189,179,183,175,
-  52,76,174,90,122,170,159,112,146,114,166,38,136,100,12,166,21,52,90,252,110,68,85,22,
-  229,236,253,205,69,107,78,246,127,27,86,208,253,181,101,110,105,80,232,56,48,50,163,208,
-  234,73,114,253,111,201,130,43,191,84,11,252,96,166,182,42,170,187,16,188,232,27,93,21,
-  115,35,250,15,187,154,153,43,38,215,161,0,97,33,118,255,113,67,11,8,135,148,35,94,
-  183,214,18,238,144,57,162,254,244,2,64,158,236,104,216,64,52,224,157,207,211,73,16,226,
-  20,104,99,62,164,45,210,244,195,142,248,108,157,43,73,69,61,155,108,59,246,233,86,43,
-  94,19,87,167,19,216,105,43,7,177,246,42,62,177,223,130,138,167,11,93,69,31,23,89,
-  88,58,71,114,134,122,39,1,126,98,200,142,16,61,53,225,70,93,108,77,166,221,150,176,
-  91,253,198,1,41,118,140,251,82,197,242,199,59,10,106,254,76,96,245,112,177,105,83,254,
-  144,38,108,25,198,38,97,181,120,141,168,142,158,129,83,2,16,115,91,155,178,65,65,158,
-  23,127,167,124,219,66,88,234,50,137,178,147,182,90,86,194,13,53,79,206,156,54,189,167,
-  95,102,200,6,95,43,214,35,252,45,115,91,106,100,25,135,125,199,99,3,21,225,66,79,
-  68,123,174,1,45,240,6,24,72,81,9,41,102,55,71,163,132,219,42,177,184,122,249,148,
-  144,182,61,168,134,78,90,175,97,71,245,183,22,0,3,6,15,17,44,44,59,43,58,41,
-  26,17,45,47,53,23,48,42,44,22,18,22,253,219,242,135,120,233,220,220,28,27,101,58,
-  92,153,248,107,248,215,83,250,237,30,193,252,201,205,204,214,49,222,169,65,207,86,225,204,
-  249,61,249,6,95,48,25,231,241,93,16,80,48,62,151,197,245,140,200,37,246,77,18,244,
-  93,75,141,123,140,211,204,76,206,31,81,198,173,171,208,66,111,252,192,154,11,219,130,154,
-  19,38,230,11,2,207,39,62,113,50,22,216,237,137,53,118,158,80,248,189,145,239,78,60,
-  149,195,82,210,75,37,50,15,175,15,46,34,144,18,153,91,253,70,239,213,111,47,44,24,
-  109,243,143,120,30,6,119,34,117,251,182,179,225,152,185,69,114,204,76,239,156,56,219,233,
-  189,59,164,195,108,21,218,80,89,1,53,27,133,92,179,13,159,55,158,167,193,124,203,12,
-  65,157,126,63,153,105,43,63,19,70,97,43,138,11,43,86,100,246,229,109,152,161,94,212,
-  202,154,71,215,217,247,250,17,177,213,109,116,124,117,61,253,111,57,250,101,150,54,243,148,
-  68,31,77,246,160,51,152,250,172,119,203,135,191,255,203,192,133,105,30,2,255,231,138,126,
-  192,248,21,180,93,227,36,130,185,84,176,120,187,209,20,74,104,76,139,161,66,213,74,136,
-  52,161,246,5,232,117,148,61,158,199,142,8,33,59,106,52,51,165,159,235,246,119,227,7,
-  9,218,34,39,203,101,245,29,81,88,144,199,200,30,156,98,233,114,20,140,251,95,58,117,
-  167,62,242,174,170,31,194,144,202,217,177,111,177,221,118,124,3,12,204,37,145,92,196,245,
-  138,188,119,107,82,81,39,127,130,10,230,80,115,27,104,61,219,241,98,210,72,187,93,55,
-  91,182,214,190,46,173,160,148,65,55,56,14,23,90,163,25,69,145,42,201,123,49,137,190,
-  118,42,158,166,7,74,95,127,133,142,183,255,181,179,79,228,66,6,38,54,204,125,59,123,
-  15,208,123,120,110,159,27,234,38,63,151,41,106,200,224,79,41,247,13,254,194,20,254,59,
-  135,102,35,146,207,253,221,95,146,155,36,37,182,146,54,158,89,116,207,34,201,17,210,180,
-  65,85,139,6,232,165,169,81,109,190,139,86,123,151,33,236,81,127,22,10,97,2,222,79,
-  28,203,2,124,46,45,20,249,228,224,54,145,130,22,0,12,28,63,63,62,41,39,29,26,
-  21,41,38,46,26,44,46,43,27,17,18,13,10,242,107,190,135,120,233,94,241,15,202,150,
-  208,186,193,169,100,205,187,32,65,53,27,35,36,34,128,5,212,151,111,110,209,108,69,254,
-  39,92,176,178,65,138,89,113,124,12,132,74,88,253,49,168,162,191,174,47,14,53,81,154,
-  88,93,148,7,170,53,86,84,242,121,237,76,7,95,16,80,88,177,16,61,63,190,211,43,
-  24,149,77,254,82,84,137,173,236,0,163,202,73,245,79,247,242,223,33,126,118,32,204,2,
-  123,82,74,29,33,221,37,232,123,210,92,181,168,156,170,84,252,154,58,25,115,173,211,165,
-  128,167,203,211,189,196,223,12,62,168,174,65,29,213,128,23,19,209,190,123,204,163,175,245,
-  91,169,102,49,79,238,98,231,22,40,228,172,120,225,229,52,84,35,238,126,26,227,99,101,
-  34,130,248,76,44,152,237,69,127,10,201,175,77,160,194,133,106,80,60,0,228,196,215,70,
-  140,71,39,124,32,221,131,160,99,125,137,66,43,239,106,75,192,35,60,110,190,194,251,139,
-  82,51,220,131,109,14,155,106,175,242,2,62,140,110,5,133,220,178,95,185,179,192,6,218,
-  103,237,203,2,113,188,5,85,107,240,209,113,24,163,171,177,94,173,71,250,3,191,173,67,
-  95,146,18,95,183,188,241,79,190,33,195,229,251,254,3,148,176,225,48,8,93,146,173,161,
-  215,76,207,242,103,228,233,172,53,178,214,179,81,66,181,28,180,173,138,31,137,13,255,239,
-  108,150,90,88,138,219,43,87,145,152,94,223,134,114,173,46,174,48,47,86,252,112,85,158,
-  122,86,73,80,190,221,106,20,90,180,128,40,197,191,83,62,8,215,152,61,78,228,138,244,
-  201,153,238,19,130,199,240,16,215,109,253,190,180,198,237,26,128,247,14,178,153,62,171,99,
-  214,10,72,252,68,164,178,16,39,199,14,186,37,239,127,142,30,89,189,158,207,35,61,142,
-  150,61,206,24,240,210,235,158,38,248,14,114,234,203,184,109,14,22,0,3,17,22,57,42,
-  71,47,48,22,15,24,57,53,51,14,14,22,30,30,22,29,36,7,150,122,135,120,233,128,
-  76,159,203,248,68,172,212,144,240,95,183,103,56,205,226,229,176,84,169,70,66,229,204,148,
-  95,193,31,240,121,157,59,25,1,231,220,115,236,24,8,10,80,112,73,133,22,97,1,176,
-  35,66,155,220,218,90,119,151,37,147,211,221,108,232,249,65,46,80,160,70,254,132,236,146,
-  83,209,246,23,28,72,60,93,92,80,9,96,196,233,82,29,170,196,171,170,12,81,16,106,
-  67,55,152,176,138,138,136,211,131,33,87,137,229,119,1,38,159,12,225,76,16,227,248,156,
-  60,175,113,92,154,206,104,160,65,121,6,68,29,138,75,116,123,197,248,252,114,191,202,43,
-  85,194,187,151,233,18,132,152,30,120,124,105,118,147,95,223,138,4,14,133,254,238,190,196,
-  139,146,150,45,33,86,209,63,57,250,3,122,150,160,8,141,179,26,145,227,2,200,46,74,
-  145,65,114,164,70,47,161,160,76,181,90,159,180,201,101,91,176,112,18,83,214,209,68,180,
-  150,33,124,134,234,57,138,70,16,233,4,24,50,71,230,33,125,219,77,148,72,43,62,209,
-  18,41,119,198,20,118,95,97,200,218,181,34,19,72,228,121,148,214,157,69,23,173,152,163,
-  164,122,151,121,15,208,152,113,84,144,222,58,23,115,81,191,97,31,85,5,136,85,174,144,
-  10,20,178,23,254,173,1,93,206,182,5,227,205,173,165,184,234,0,154,148,109,221,129,71,
-  166,25,109,40,101,70,123,22,152,14,26,154,166,229,220,210,144,151,92,233,200,234,210,16,
-  21,94,81,2,213,195,126,58,49,196,61,231,173,0,168,79,185,154,108,131,232,92,8,116,
-  35,225,94,142,160,150,200,122,66,218,58,247,15,107,138,59,180,198,80,217,7,172,232,228,
-  193,55,150,251,92,244,226,175,115,210,140,122,203,237,62,31,19,252,224,39,156,147,227,227,
-  71,193,100,78,163,76,236,251,161,119,127,246,254,103,170,58,32,187,155,119,204,23,106,88,
-  58,135,58,240,113,79,155,148,23,85,68,49,207,2,19,191,226,240,180,97,53,174,223,144,
-  243,197,5,22,0,5,16,20,54,43,85,51,60,26,41,34,29,16,16,29,29,40,37,37,
-  30,24,21,250,145,122,135,120,233,187,163,244,191,115,141,90,212,113,30,169,236,177,242,22,
-  141,73,103,163,136,248,251,189,20,63,187,200,72,237,157,242,82,242,99,46,83,169,118,164,
-  250,32,7,54,27,182,76,80,149,145,225,136,191,185,106,214,227,58,242,92,225,218,237,59,
-  195,131,97,251,18,131,34,230,24,2,226,169,233,176,111,186,1,154,166,125,175,125,252,13,
-  207,197,10,159,127,43,85,170,212,153,184,48,40,37,45,170,64,197,64,5,164,82,86,224,
-  193,103,114,110,128,166,14,7,131,254,68,230,68,217,235,176,88,69,245,135,217,200,5,236,
-  132,95,185,107,100,105,40,1,13,155,254,141,50,56,72,126,202,153,77,84,203,207,169,127,
-  221,243,26,216,162,208,191,116,122,118,14,183,131,179,115,186,215,3,147,113,234,88,230,74,
-  153,18,123,69,174,202,178,19,89,88,247,251,189,238,137,246,73,126,79,10,201,224,59,155,
-  45,112,148,16,181,68,189,96,243,248,136,196,22,214,94,111,188,151,243,29,23,235,159,160,
-  65,156,255,43,87,228,74,37,93,53,6,237,60,87,229,219,9,147,235,99,184,144,63,144,
-  34,118,103,44,89,33,86,55,64,45,166,56,200,109,38,254,246,91,111,167,20,135,235,83,
-  159,207,32,116,78,175,188,188,24,134,135,59,229,226,186,143,114,69,103,46,82,162,10,39,
-  167,50,82,213,150,163,131,79,89,170,56,25,103,36,74,71,105,218,239,65,233,58,121,219,
-  12,113,84,211,47,207,75,130,157,230,33,102,108,199,89,202,252,55,217,154,188,153,213,247,
-  178,166,195,246,112,64,3,113,168,90,48,191,147,155,43,225,251,28,6,24,214,5,239,48,
-  79,85,241,228,44,224,250,81,53,47,158,170,236,122,28,108,150,229,40,210,227,64,38,225,
-  38,40,183,31,71,92,20,166,125,95,95,61,250,181,163,102,196,114,80,234,180,151,193,249,
-  61,169,94,141,24,83,113,183,205,83,16,158,73,186,221,97,129,29,141,8,109,40,109,189,
-  134,148,102,158,77,243,243,12,94,37,70,165,35,176,6,71,149,127,99,161,126,151,42,189,
-  140,95,66,7,135,20,11,26,135,27,240,253,85,89,152,193,133,67,238,229,208,255,243,51,
-  63,56,172,247,7,174,172,53,23,0,1,16,57,62,76,47,50,26,31,24,40,35,34,20,
-  19,24,26,28,27,19,19,19,28,0,154,122,135,120,233,154,34,255,48,191,229,126,2,181,
-  247,172,219,199,83,181,130,247,238,1,113,211,114,11,97,58,228,226,25,220,216,208,190,172,
-  50,117,71,217,107,180,125,71,97,245,150,115,145,2,4,47,32,32,192,220,230,77,93,250,
-  134,85,35,129,119,91,106,241,180,193,232,66,209,191,28,197,36,81,14,237,235,236,161,48,
-  8,32,18,122,168,66,22,128,184,186,201,37,251,190,124,219,19,211,41,253,12,229,89,130,
-  155,189,25,214,236,45,121,87,159,237,129,150,22,119,60,159,102,104,181,5,25,2,243,242,
-  97,211,40,125,122,102,181,137,232,30,157,135,11,97,135,182,83,129,55,11,135,210,236,180,
-  170,112,130,222,87,67,121,172,143,209,153,158,93,198,195,229,122,8,11,224,3,148,39,1,
-  33,242,228,27,146,65,0,244,143,135,173,235,128,17,11,53,224,186,184,239,162,216,102,47,
-  4,251,188,182,156,127,56,99,36,45,117,236,96,146,178,9,18,68,70,141,164,221,131,89,
-  132,251,190,124,151,101,80,55,201,95,206,76,77,219,164,88,117,59,135,100,64,41,164,120,
-  181,55,195,29,74,41,109,169,205,0,69,113,62,244,184,36,146,22,90,14,143,41,78,113,
-  246,111,119,10,198,210,101,224,187,29,242,164,229,237,57,169,84,157,24,179,96,163,217,226,
-  144,146,198,76,253,29,70,37,204,172,123,68,253,166,247,99,96,181,200,54,116,206,52,91,
-  118,132,224,68,79,253,13,250,239,75,126,7,148,124,62,57,222,93,124,93,43,174,179,200,
-  30,10,208,72,128,33,250,87,211,153,196,164,239,46,181,175,248,206,22,20,194,50,173,171,
-  132,250,228,88,166,206,121,72,206,224,219,231,14,222,173,186,246,40,8,152,116,166,132,133,
-  225,68,207,110,25,152,63,250,10,43,12,238,168,114,178,238,126,83,229,74,42,114,176,240,
-  45,58,49,102,167,200,10,153,105,48,154,213,11,33,7,95,203,161,181,107,15,234,200,197,
-  26,75,186,133,231,14,9,248,15,7,71,103,161,228,132,23,212,76,10,16,212,178,103,74,
-  187,164,205,74,23,0,5,16,32,54,53,43,33,36,47,40,26,22,30,35,40,26,35,33,
-  42,29,31,20,20,244,145,122,135,120,233,161,168,47,206,217,224,38,77,226,116,111,158,121,
-  113,141,231,163,186,32,46,168,255,115,228,33,132,212,176,55,205,210,8,31,144,112,170,186,
-  138,51,249,44,114,34,20,131,91,13,104,54,27,192,189,236,177,62,106,151,196,110,178,7,
-  233,64,246,186,40,253,169,3,79,165,56,179,165,26,83,81,30,148,239,12,103,170,124,80,
-  186,5,199,112,19,177,109,231,227,138,154,110,169,75,34,0,172,101,93,190,196,146,23,9,
-  54,238,40,31,222,161,101,247,149,68,183,123,224,129,118,193,41,143,222,75,97,169,91,172,
-  125,190,230,198,150,147,108,54,142,246,175,110,55,210,20,81,137,87,213,130,119,124,217,142,
-  245,131,249,24,202,121,65,182,38,184,80,38,114,96,15,247,243,111,254,108,111,255,155,51,
-  118,215,85,197,4,77,252,98,208,239,117,22,244,26,0,27,113,29,219,226,157,81,254,1,
-  244,87,120,188,173,74,98,204,188,58,216,196,134,178,26,166,117,191,168,241,209,157,90,65,
-  152,34,13,171,204,139,195,136,76,22,48,230,122,159,38,98,170,76,153,130,64,173,10,50,
-  1,84,107,51,55,136,209,90,215,246,233,115,18,80,111,210,223,179,58,232,225,88,204,48,
-  157,142,115,1,125,159,39,63,111,219,154,130,224,105,21,154,160,122,221,63,75,24,6,211,
-  254,70,232,199,122,116,202,47,199,229,66,216,141,17,23,131,40,101,50,194,28,51,63,127,
-  35,105,201,138,181,203,146,241,91,119,217,19,44,184,55,63,173,213,62,181,153,225,105,117,
-  173,165,255,221,39,84,108,119,46,1,53,233,208,134,95,34,171,215,241,47,73,72,135,223,
-  222,164,168,86,63,226,37,234,94,183,191,200,172,109,81,201,8,112,131,221,239,120,85,138,
-  245,11,210,144,208,27,61,101,18,214,189,255,180,8,87,76,51,1,146,249,70,85,116,59,
-  168,116,200,49,165,30,29,224,217,217,160,232,249,151,134,152,36,215,38,148,190,94,141,144,
-  198,224,144,103,255,40,168,157,134,245,135,42,128,53,70,116,102,90,28,233,168,1,206,253,
-  29,35,105,201,58,90,250,105,48,21,42,231,66,99,181,25,243,206,32,75,142,77,196,15,
-  39,80,225,7,227,197,2,46,93,59,21,0,15,51,61,95,65,59,12,16,17,21,27,36,
-  45,44,35,47,30,36,15,16,10,242,107,190,135,120,233,94,241,15,203,248,13,141,232,211,
-  182,149,123,135,227,146,144,1,18,245,60,190,193,173,56,240,29,107,31,110,6,178,177,68,
-  96,93,131,134,1,178,59,33,70,235,194,21,251,120,70,190,211,121,186,252,20,63,135,28,
-  240,182,82,33,99,31,190,230,165,208,3,254,219,209,145,122,13,85,129,168,89,52,129,60,
-  143,192,98,243,172,252,29,98,140,119,87,160,70,159,240,217,4,239,138,167,9,97,124,42,
-  39,138,140,114,108,103,84,44,255,48,192,140,41,113,91,113,164,70,115,188,195,24,15,212,
-  213,22,50,142,71,106,200,47,174,65,254,78,97,196,10,96,95,196,125,250,44,238,179,116,
-  140,212,149,187,41,49,138,201,46,91,136,150,1,236,173,4,107,188,235,148,219,106,217,210,
-  136,187,107,240,134,120,214,40,18,16,100,238,236,195,65,167,174,190,40,2,86,103,146,28,
-  177,154,28,202,19,102,81,193,186,48,209,14,102,39,72,158,219,254,230,69,245,12,109,35,
-  39,177,1,58,178,118,189,150,12,52,23,238,136,20,211,204,26,48,65,172,239,141,214,70,
-  95,107,49,137,83,201,139,13,58,14,70,179,183,136,174,204,216,101,129,245,14,188,66,5,
-  81,87,19,255,167,70,151,82,237,24,148,56,101,77,136,105,191,56,67,31,22,237,199,32,
-  163,98,110,29,10,215,210,191,184,237,161,17,230,173,156,1,176,70,231,17,9,73,106,117,
-  29,75,62,220,232,146,48,41,107,210,98,206,184,178,11,40,80,37,114,114,228,249,176,96,
-  76,172,91,37,165,180,145,228,236,82,47,236,32,96,64,222,131,102,175,106,5,83,103,59,
-  66,110,22,0,13,29,47,44,28,75,74,75,39,34,37,15,16,17,29,25,18,19,30,37,
-  25,18,248,146,122,135,120,233,94,241,15,200,192,165,49,152,37,171,99,142,31,94,27,18,
-  106,113,20,70,164,116,155,166,87,230,92,49,31,19,151,33,134,48,115,102,222,41,156,18,
-  206,115,254,189,147,210,141,203,20,215,12,84,218,246,167,54,43,238,80,110,230,155,113,43,
-  43,88,21,17,10,3,169,77,81,3,248,8,117,224,91,217,195,23,7,141,201,85,251,134,
-  194,233,56,119,189,245,138,146,191,10,83,64,75,13,59,224,127,218,211,1,140,239,117,204,
-  3,44,164,97,84,57,170,1,186,240,66,255,127,83,4,131,240,248,253,130,228,29,61,17,
-  181,112,25,25,2,193,195,187,162,189,237,54,20,71,15,26,237,210,186,191,132,21,157,138,
-  191,221,66,66,97,240,61,121,115,138,144,35,148,33,36,73,241,111,157,200,28,85,161,104,
-  110,229,205,123,84,17,139,245,50,175,27,213,69,172,138,140,127,10,119,239,84,95,4,24,
-  254,203,16,76,149,108,103,106,151,252,15,243,67,171,217,105,9,181,226,169,27,225,46,148,
-  152,224,195,52,127,224,149,149,71,81,190,119,98,96,147,103,129,118,184,250,131,225,139,210,
-  64,202,1,235,109,15,182,105,102,204,226,122,228,143,173,165,182,41,181,90,54,209,235,252,
-  178,222,35,91,18,139,77,122,85,137,100,247,108,237,132,215,35,83,101,117,202,167,142,245,
-  226,80,85,69,252,248,35,205,67,203,199,210,108,73,37,115,245,101,246,55,57,251,38,60,
-  45,158,202,54,202,119,212,165,135,14,18,89,150,110,245,28,88,167,152,30,56,240,230,214,
-  255,67,157,41,39,105,140,212,232,229,84,190,69,186,157,224,175,18,127,121,168,145,167,46,
-  195,246,61,110,128,152,213,65,231,75,215,98,123,236,148,136,173,36,40,42,191,62,147,207,
-  101,203,194,40,53,8,223,144,6,113,103,215,164,188,91,30,70,214,171,159,184,52,69,50,
-  56,190,133,129,228,63,107,175,193,132,142,60,77,103,183,93,249,70,83,2,87,16,49,153,
-  55,184,43,42,250,244,133,116,42,182,74,126,22,0,2,6,22,51,53,57,41,47,38,28,
-  23,53,50,49,18,40,39,39,19,17,12,18,1,144,200,135,120,232,253,10,50,89,72,160,
-  35,231,219,223,198,254,226,183,92,57,48,215,144,4,61,3,10,204,50,250,23,53,94,149,
-  234,88,112,188,119,220,167,42,205,239,36,214,184,121,77,85,255,83,142,77,129,118,115,232,
-  78,228,201,73,108,165,253,135,213,32,165,190,25,247,29,193,164,185,100,115,85,13,140,118,
-  8,36,168,190,211,140,1,109,148,55,28,247,6,31,173,56,53,76,180,168,83,29,141,41,
-  153,221,245,178,15,61,241,215,121,68,5,10,209,111,2,188,137,216,171,232,158,78,209,231,
-  87,137,146,188,112,254,143,28,155,35,141,160,206,32,126,195,52,27,56,157,226,219,83,144,
-  138,52,133,51,170,1,51,169,78,239,223,217,139,238,125,177,88,162,240,14,76,252,85,30,
-  25,85,195,186,212,23,69,6,25,116,94,187,122,172,60,123,35,13,64,125,69,6,189,126,
-  118,30,120,219,202,233,46,209,233,202,176,146,65,103,35,2,53,251,111,12,0,247,187,149,
-  177,206,35,218,241,113,115,63,13,241,128,13,86,17,146,26,63,156,81,150,184,56,144,241,
-  67,229,33,4,210,76,5,168,87,1,251,55,96,198,4,214,88,103,231,149,167,229,139,59,
-  94,187,57,186,254,138,95,131,177,89,77,54,92,70,99,62,233,215,153,11,29,120,205,106,
-  207,229,122,113,84,86,103,27,166,96,49,35,57,206,86,187,99,219,62,170,235,217,70,117,
-  176,25,208,123,250,37,17,231,165,151,48,4,162,81,134,220,75,210,254,108,231,240,223,140,
-  183,25,208,98,7,82,118,238,200,170,99,147,206,76,240,152,61,38,65,130,49,91,124,85,
-  216,84,47,124,219,12,115,4,88,69,155,125,110,210,119,177,54,90,112,240,239,175,234,144,
-  139,48,93,17,220,232,225,205,218,91,64,101,88,142,109,191,248,250,72,195,243,58,161,46,
-  198,191,237,72,115,206,29,102,221,162,189,162,238,245,239,156,200,240,207,65,192,39,76,51,
-  181,114,146,154,238,5,188,64,35,90,181,10,156,248,125,42,61,3,196,26,85,99,17,87,
-  14,229,178,236,255,53,138,32,208,233,186,145,104,151,237,178,38,116,166,210,133,70,17,185,
-  247,98,27,110,242,165,25,208,97,92,177,176,238,237,168,38,27,77,135,237,26,6,76,114,
-  222,250,33,216,116,37,177,210,102,121,112,191,44,1,243,239,106,181,116,139,69,73,220,36,
-  12,203,111,81,2,77,196,80,121,40,195,157,177,29,155,17,229,176,167,92,21,184,57,157,
-  21,0,20,51,80,89,57,42,21,20,32,35,35,18,15,30,43,42,28,10,16,15,27,0,
-  144,197,135,120,233,27,71,96,47,75,3,168,228,25,222,233,76,250,184,208,92,95,208,64,
-  245,113,46,48,91,104,165,241,84,11,128,119,35,97,43,7,242,251,247,17,238,95,90,99,
-  136,232,142,158,78,35,78,171,53,20,243,46,179,252,201,190,88,192,148,70,253,58,144,123,
-  138,159,192,20,91,127,36,10,33,98,144,56,182,20,167,226,69,216,136,96,201,149,249,74,
-  59,99,151,151,104,87,44,54,138,138,222,122,81,110,227,255,88,249,232,102,12,59,231,175,
-  109,231,26,210,60,191,143,179,116,240,165,221,211,225,55,255,184,156,41,177,185,26,171,235,
-  106,61,32,57,232,78,94,17,217,249,253,161,130,140,59,108,80,34,77,173,116,58,217,166,
-  132,97,137,115,69,19,89,77,52,185,113,126,59,43,151,78,5,185,60,113,189,149,127,184,
-  196,29,216,244,52,75,177,166,177,185,98,161,142,152,148,247,95,189,224,196,93,50,72,102,
-  153,101,23,89,248,6,16,81,183,196,86,20,72,37,10,31,103,102,181,151,227,161,112,220,
-  89,2,180,108,42,92,181,27,3,148,23,180,207,49,97,208,0,185,197,165,88,83,236,112,
-  13,249,48,177,122,36,241,156,143,231,169,138,234,213,250,131,245,193,68,168,18,169,85,214,
-  86,129,176,90,188,98,172,26,70,165,61,125,59,67,205,33,67,97,57,190,32,87,153,79,
-  109,245,71,135,223,189,202,99,196,3,249,161,139,104,59,180,119,89,231,219,133,136,16,91,
-  240,203,90,22,134,183,155,198,237,79,10,169,149,192,29,162,11,150,62,229,70,66,99,202,
-  120,9,12,169,106,206,126,217,19,179,112,208,221,108,160,136,21,134,116,239,138,220,21,12,
-  171,142,42,116,49,124,94,242,29,218,157,99,34,91,123,250,81,126,38,1,101,219,19,144,
-  101,222,144,9,98,66,99,231,122,51,58,28,111,60,98,25,231,224,225,21,127,63,22,96,
-  56,194,76,128,132,231,5,237,251,22,61,134,140,130,32,63,194,217,229,51,49,25,111,89,
-  26,118,69,221,109,79,130,107,126,255,139,33,68,136,146,108,249,112,48,217,209,150,83,124,
-  253,13,168,239,114,222,109,171,237,163,82,123,188,73,80,187,236,86,193,181,52,161,168,107,
-  201,30,167,147,181,157,246,200,15,90,223,245,215,126,90,3,214,205,206,209,129,240,246,209,
-  25,242,54,96,115,133,208,65,225,196,223,69,203,244,43,13,122,228,92,194,39,131,38,120,
-  73,201,203,85,6,98,167,73,197,227,148,111,119,170,238,94,110,153,226,209,140,77,143,27,
-  44,18,0,2,1,9,9,14,12,11,16,32,33,29,24,52,54,41,65,61,134,70,41,22,
-  20,10,185,84,62,173,87,225,140,201,165,91,91,93,220,250,183,31,15,47,124,13,89,16,
-  242,74,16,123,137,199,174,173,78,94,243,215,68,54,44,127,149,240,255,72,247,96,161,238,
-  33,158,206,246,151,39,210,160,82,152,225,53,169,158,30,252,71,210,1,170,72,230,184,42,
-  125,192,109,209,175,214,9,75,34,88,128,220,6,54,250,33,142,235,201,125,60,19,197,205,
-  176,152,132,250,119,233,62,181,83,248,65,141,189,109,192,244,161,61,6,207,35,72,148,17,
-  32,159,237,28,101,217,111,198,70,193,24,145,167,151,183,243,38,80,199,227,87,14,131,42,
-  243,146,161,154,15,55,249,35,81,234,117,95,162,226,48,182,161,168,142,208,6,14,195,204,
-  155,76,208,51,230,50,50,236,193,152,177,245,181,201,154,248,234,95,119,17,97,13,170,173,
-  49,4,254,121,0,0,254,4,5,5,5,4,3,3,4,4,6,7,7,5,5,6,7,5,
-  6,5,6,4,5,6,7,10,8,7,3,3,3,3,3,4,4,4,4,5,5,6,6,7,
-  5,6,7,8,6,7,10,10,7,3,5,5,5,4,6,6,5,5,6,8,7,7,8,8,
-  10,9,8,5,3,5,5,7,6,6,4,4,4,4,3,5,6,6,8,8,8,6,5,6,
-  6,7,6,5,5,8,8,9,6,9,12,15,12,7,5,7,9,12,9,9,9,9,7,3,
-  4,6,10,12,14,9,7,192,203,153,219,179,43,210,70,118,82,56,155,176,223,141,176,44,
-  111,199,122,114,15,195,46,227,16,0,162,46,19,96,36,96,214,135,73,11,157,122,74,131,
-  233,129,12,155,61,76,154,231,206,14,216,234,143,226,156,189,67,108,198,91,110,216,44,87,
-  187,87,127,133,199,160,34,165,99,105,6,206,161,55,138,114,38,200,196,246,217,43,230,161,
-  170,114,128,86,52,66,76,251,87,233,145,214,165,7,29,115,249,19,11,63,204,49,121,251,
-  14,109,191,238,17,78,228,137,143,197,176,36,245,103,40,26,201,29,89,92,51,200,199,93,
-  216,221,105,163,187,60,216,185,234,72,226,26,29,49,61,196,49,246,51,37,197,184,93,116,
-  229,188,238,22,200,106,252,72,133,202,33,75,34,203,84,123,102,187,75,80,235,171,227,254,
-  177,78,49,198,193,139,6,103,64,163,82,175,177,181,120,169,48,182,123,187,204,137,106,182,
-  151,218,112,182,77,86,176,139,81,90,209,211,225,202,130,144,30,166,53,67,86,139,134,78,
-  51,142,243,213,155,92,53,169,43,73,231,34,42,227,85,214,124,79,228,18,36,139,160,176,
-  118,10,231,201,16,59,84,80,117,0,47,84,162,110,164,186,135,131,30,66,200,126,146,230,
-  111,47,157,83,246,105,187,72,178,84,85,182,185,112,127,5,132,145,206,36,7,180,85,102,
-  8,125,195,156,71,61,77,75,112,118,63,232,11,11,117,77,49,93,33,7,20,142,198,241,
-  195,35,98,246,162,150,13,5,44,235,142,39,97,124,221,47,215,37,22,20,177,112,33,171,
-  47,64,167,141,94,65,224,215,139,203,92,94,229,201,94,193,114,253,89,82,222,42,53,160,
-  119,78,159,58,103,110,211,108,66,138,72,212,190,146,91,42,199,127,156,248,182,53,130,24,
-  59,95,3,15,6,127,214,236,114,83,183,81,145,28,216,192,192,117,155,208,85,26,210,99,
-  38,63,72,38,112,71,205,26,23,1,138,88,134,131,117,197,84,23,23,188,16,45,191,27,
-  254,130,78,190,184,89,159,91,122,137,116,94,64,140,220,18,20,165,7,1,226,116,235,57,
-  100,76,47,116,84,104,104,202,225,78,136,204,26,82,241,89,224,49,71,207,17,252,156,202,
-  61,139,79,228,150,147,252,79,243,241,205,65,245,75,226,152,112,57,15,218,204,111,94,181,
-  175,111,44,214,153,50,45,108,221,210,231,74,153,51,184,3,217,142,96,131,143,219,103,253,
-  137,236,130,49,51,233,21,245,74,203,159,142,184,109,78,217,77,142,0,104,157,165,229,44,
-  92,107,68,89,49,33,141,12,4,109,2,242,163,106,210,193,77,144,201,193,19,216,166,27,
-  186,37,41,150,165,0,95,1,12,62,8,85,94,6,197,193,78,138,102,103,108,38,59,155,
-  238,147,176,94,243,4,146,245,168,86,129,155,154,46,138,177,9,69,143,236,175,200,224,239,
-  158,140,22,130,96,37,127,54,34,48,239,152,97,7,224,36,183,2,111,215,244,203,38,251,
-  128,104,166,51,149,42,211,152,35,44,176,140,18,104,85,111,7,133,165,220,185,185,91,191,
-  88,98,69,10,149,21,14,71,107,83,56,150,200,238,240,231,207,48,35,234,183,123,182,189,
-  104,171,128,126,241,124,236,124,109,130,105,237,4,48,47,4,255,185,87,52,17,96,46,153,
-  134,252,99,173,19,0,1,36,41,50,14,33,32,76,64,56,21,25,63,56,45,9,8,7,
-  14,41,39,255,159,100,156,184,221,223,87,68,180,235,232,149,158,235,67,187,28,149,93,217,
-  63,138,19,59,64,17,106,97,236,247,163,252,39,50,15,146,203,22,81,162,200,226,144,165,
-  175,175,19,148,235,51,144,234,201,187,62,165,220,148,96,96,147,219,177,246,55,174,62,244,
-  253,79,61,6,182,222,33,22,79,208,152,232,197,200,85,43,173,124,202,100,48,206,109,39,
-  252,183,112,122,113,27,131,119,90,180,219,71,67,232,191,95,104,221,182,182,48,244,1,176,
-  219,186,171,4,54,111,108,191,78,184,93,85,114,251,205,180,62,51,103,207,24,21,69,31,
-  132,146,178,87,246,185,5,48,165,147,43,217,142,59,178,14,134,53,8,228,141,223,187,171,
-  134,46,94,158,124,83,32,191,199,45,229,179,95,31,192,155,63,82,53,92,86,37,245,167,
-  76,4,85,208,20,203,35,203,243,122,155,26,216,110,52,207,16,68,224,123,189,59,231,114,
-  101,138,92,115,192,251,139,191,237,105,241,88,123,28,246,53,125,56,65,236,101,244,108,141,
-  48,162,159,191,52,212,177,30,38,53,37,217,234,169,137,49,63,156,83,157,35,167,100,182,
-  224,85,92,43,96,2,191,135,161,120,111,216,227,22,0,1,28,40,41,14,11,29,29,25,
-  11,9,26,21,22,41,47,48,19,18,28,78,73,74,14,239,170,119,46,147,98,252,74,254,
-  224,90,225,124,147,177,242,17,222,56,104,172,5,227,181,165,16,154,6,254,198,199,7,235,
-  67,2,13,124,120,198,189,238,207,155,158,197,177,22,85,237,92,76,25,222,199,132,111,164,
-  21,171,102,4,74,185,179,208,251,37,62,52,245,78,255,59,45,81,233,81,169,104,222,34,
-  154,146,216,201,42,217,84,194,96,57,104,97,43,119,235,75,71,240,50,0,63,195,21,165,
-  85,49,74,52,77,89,88,205,20,204,112,143,185,221,152,224,230,216,153,219,102,214,27,70,
-  4,101,189,104,134,212,52,92,177,167,253,108,167,198,201,224,181,245,117,7,10,18,81,51,
-  39,135,87,127,95,225,85,171,0,70,171,112,30,115,100,188,97,74,147,132,255,209,204,209,
-  74,85,139,102,45,216,45,252,112,147,154,76,173,83,164,223,39,142,84,188,147,162,122,241,
-  194,141,195,120,222,146,155,240,14,100,69,195,247,101,218,58,238,214,225,65,63,81,107,184,
-  108,58,248,83,64,147,52,169,254,148,1,219,20,0,1,28,31,31,10,18,19,15,24,23,
-  21,10,48,54,52,58,71,78,43,28,42,31,251,192,169,182,54,49,163,202,225,108,70,223,
-  169,171,133,56,131,98,54,39,110,210,109,69,149,21,6,62,63,70,184,218,118,203,161,73,
-  82,49,61,184,239,189,82,7,204,4,179,242,63,210,24,36,249,163,108,251,142,83,143,183,
-  36,196,248,219,146,5,43,7,99,110,136,65,44,180,143,171,161,57,36,70,84,248,72,89,
-  246,157,209,101,21,149,77,238,6,118,130,181,225,250,114,197,172,59,181,38,2,11,242,96,
-  207,164,211,16,7,54,152,136,122,128,43,65,191,114,34,144,195,105,253,190,32,43,7,9,
-  9,121,229,231,3,100,215,202,142,93,156,89,179,116,252,152,202,251,22,155,59,208,231,34,
-  59,90,243,23,169,6,83,41,8,250,237,237,60,146,91,229,3,178,137,4,178,121,162,196,
-  6,133,111,181,111,60,97,4,41,224,201,34,83,226,71,150,96,25,247,90,70,151,130,197,
-  39,58,213,216,51,156,43,91,171,41,61,9,79,122,240,10,35,255,149,192,66,88,16,0,
-  1,38,67,70,35,16,22,23,18,24,21,20,54,67,78,69,70,55,240,159,100,156,184,221,
-  223,87,68,180,235,232,149,158,219,68,16,18,94,35,162,156,67,40,229,124,214,1,190,196,
-  6,93,47,21,171,56,23,5,169,249,175,96,206,1,13,47,170,136,245,24,196,174,0,169,
-  144,38,215,153,202,140,108,80,83,206,2,43,253,174,91,107,17,53,90,133,54,232,164,205,
-  45,5,88,4,139,155,198,106,141,210,34,52,124,193,5,41,102,104,36,115,250,144,95,76,
-  60,9,122,240,187,1,238,139,219,219,2,4,156,43,198,157,159,125,87,237,20,186,212,194,
-  19,9,127,98,228,213,34,30,71,57,235,20,42,83,193,64,147,80,185,49,76,86,249,147,
-  194,22,143,205,54,63,230,4,39,29,236,218,141,241,187,139,51,210,91,230,241,7,214,217,
-  187,51,208,96,74,197,84,3,222,198,29,174,254,162,12,65,195,71,239,87,165,28,254,121,
-  89,150,80,99,54,77,252,185,155,187,19,114,111,145,66,204,125,156,90,160,106,52,171,105,
-  173,221,25,179,211,246,255,230,53,70,80,112,229,221,242,242,199,17,17,186,25,189,52,59,
-  1,187,68,14,81,55,243,235,253,106,133,52,83,226,19,245,174,118,80,95,206,255,50,165,
-  229,26,53,219,217,138,221,172,112,60,65,244,157,4,227,193,44,251,70,36,147,250,153,66,
-  162,19,0,1,14,34,53,49,39,24,17,60,56,65,16,34,56,56,50,16,21,9,16,241,
-  14,183,80,52,64,194,219,30,129,135,20,116,21,98,107,95,51,136,243,223,114,207,155,42,
-  195,184,255,177,23,238,232,5,178,92,5,190,77,77,192,238,77,198,177,43,14,167,46,168,
-  82,254,164,33,224,164,227,234,139,212,169,92,51,124,135,209,143,186,42,30,122,174,116,152,
-  29,88,180,122,9,232,179,15,80,10,159,40,31,98,177,138,8,249,32,210,183,183,54,151,
-  157,183,157,230,205,194,27,205,20,93,33,119,156,111,141,139,245,173,136,205,223,10,91,184,
-  61,158,62,107,89,18,64,94,35,135,211,140,169,55,186,144,64,202,217,117,47,157,92,146,
-  6,104,235,49,251,215,138,255,223,65,207,81,196,141,65,253,129,142,185,134,127,27,29,2,
-  209,83,117,245,183,116,156,110,218,249,159,172,164,246,166,49,151,221,135,18,238,183,193,125,
-  145,103,197,162,40,133,23,56,97,104,160,130,89,26,122,172,12,197,43,226,57,58,160,11,
-  41,237,109,163,191,212,169,94,191,244,25,58,154,242,14,168,122,240,76,194,220,150,226,29,
-  228,104,216,174,234,173,20,83,72,114,177,164,72,203,199,133,163,186,71,151,103,222,91,44,
-  64,245,68,218,39,217,39,6,17,49,84,35,238,172,180,122,172,127,164,13,123,90,115,131,
-  140,68,219,44,152,94,23,0,1,6,34,64,57,34,9,16,26,22,14,4,8,21,21,70,
-  61,64,57,53,51,4,5,21,19,243,181,151,30,211,181,184,96,109,154,67,112,168,150,118,
-  45,174,166,25,255,179,158,240,66,103,3,148,17,160,64,134,83,58,207,251,16,104,163,85,
-  61,203,187,51,64,214,76,65,167,168,186,149,132,40,117,129,191,71,194,100,70,90,215,45,
-  140,91,165,180,94,43,243,3,114,158,77,124,156,222,42,213,106,103,152,151,20,198,65,246,
-  29,238,15,46,17,146,208,45,26,8,90,134,1,244,136,241,111,24,93,196,174,213,79,163,
-  42,220,106,95,196,41,111,111,210,236,43,238,255,237,92,146,30,169,152,58,197,199,154,103,
-  238,132,37,62,195,36,204,242,60,42,74,227,95,219,125,110,186,173,128,154,243,95,250,116,
-  87,93,63,228,120,136,167,156,192,124,40,188,245,239,183,45,12,63,71,45,71,190,190,140,
-  223,33,40,46,50,185,200,167,74,113,53,0,218,94,190,47,104,60,99,29,162,179,97,185,
-  224,174,169,174,223,7,222,18,114,131,207,156,160,246,6,228,243,197,229,136,150,72,242,120,
-  58,30,70,8,29,138,42,43,15,229,160,180,15,165,240,254,50,21,15,47,86,25,98,230,
-  12,248,56,4,119,157,72,184,63,231,172,63,81,10,9,51,75,81,199,230,157,92,176,149,
-  253,114,131,171,25,230,131,218,66,56,12,87,150,112,74,72,246,124,108,111,107,250,147,85,
-  121,211,12,239,119,192,242,137,117,188,8,123,122,250,251,169,95,26,211,86,61,165,204,189,
-  16,221,232,126,217,126,16,227,191,117,253,246,177,165,199,157,65,93,208,149,190,233,96,65,
-  112,20,0,1,35,39,73,46,59,26,26,17,20,14,10,44,44,62,24,23,4,8,50,64,
-  58,240,181,151,30,211,181,184,105,17,114,32,106,126,221,109,81,216,147,12,19,133,170,100,
-  45,233,25,247,41,47,216,97,103,57,77,189,250,3,115,131,154,149,77,4,29,113,95,151,
-  51,244,245,37,34,57,104,14,221,0,141,216,151,1,69,238,78,249,14,18,55,167,231,63,
-  200,8,47,224,248,219,122,234,91,12,69,115,170,188,76,240,222,225,185,6,87,114,48,214,
-  94,85,53,87,179,189,38,242,100,189,74,224,156,113,98,17,169,178,15,181,3,70,15,207,
-  15,92,104,192,67,68,242,126,30,45,16,29,172,187,140,79,207,90,47,192,207,163,165,212,
-  216,122,131,51,125,130,91,121,60,59,134,248,125,6,238,134,199,158,213,213,141,225,244,62,
-  180,82,87,164,202,200,197,146,134,156,50,124,249,96,209,71,153,73,202,27,35,248,98,167,
-  249,193,133,19,202,160,157,228,218,126,129,147,111,179,139,58,117,165,61,0,5,216,180,199,
-  29,168,233,46,52,30,202,235,66,58,253,48,241,185,29,185,19,17,218,75,57,229,168,92,
-  166,208,120,96,186,120,37,188,89,117,186,204,59,63,199,239,70,246,167,101,140,240,125,206,
-  190,130,148,46,210,164,33,193,151,85,38,62,177,252,47,160,171,67,115,57,229,118,153,91,
-  11,133,45,16,152,135,241,199,229,112,163,66,115,75,74,3,91,94,148,243,163,224,19,144,
-  36,25,62,12,1,27,43,235,65,9,39,23,0,1,26,40,51,44,37,29,9,29,50,56,
-  47,40,42,53,38,30,8,7,19,20,21,22,21,17,228,159,180,133,217,247,242,85,212,145,
-  114,172,158,197,214,233,99,119,6,1,9,136,135,30,98,18,49,246,108,4,24,210,46,77,
-  225,2,75,50,123,104,127,114,144,206,229,116,44,18,87,12,74,237,132,222,97,199,74,80,
-  50,115,94,119,53,56,98,73,95,187,246,125,117,78,209,236,137,40,73,130,252,213,7,171,
-  253,37,172,239,220,22,233,192,89,188,251,231,213,74,108,103,19,184,67,31,56,210,177,14,
-  69,132,2,151,216,86,70,141,13,237,255,55,35,81,66,11,20,204,186,56,226,232,228,56,
-  242,217,232,176,57,233,117,135,214,81,245,73,78,7,232,68,199,22,133,42,36,234,74,154,
-  82,37,106,228,188,5,102,184,62,250,92,250,79,17,31,20,182,134,38,118,227,229,227,156,
-  106,140,73,25,228,48,222,115,85,128,103,168,161,137,223,247,218,83,171,0,142,216,56,72,
-  151,170,185,86,153,116,111,28,199,102,207,135,7,3,193,84,181,196,168,51,26,45,43,31,
-  80,45,7,197,115,217,221,55,2,85,240,162,167,4,199,60,111,72,82,184,189,41,130,77,
-  40,156,33,65,134,127,236,18,255,36,14,142,201,21,0,1,5,43,43,37,7,7,12,8,
-  9,6,6,14,20,28,70,62,58,13,17,74,98,93,0,153,219,3,16,92,89,161,1,208,
-  205,240,52,110,74,180,47,93,197,130,6,144,182,5,20,133,62,25,5,201,237,70,44,68,
-  107,234,85,15,114,95,38,128,13,99,171,178,199,102,131,239,39,254,119,76,200,82,245,140,
-  148,51,235,220,187,141,117,26,255,143,72,244,159,99,197,138,61,187,120,132,153,61,104,150,
-  195,58,118,172,146,236,97,211,163,157,51,203,140,248,123,94,42,225,243,49,240,120,125,31,
-  61,147,103,66,200,167,235,201,129,135,181,197,94,218,255,14,19,76,18,218,35,92,160,90,
-  180,89,3,29,68,175,166,192,34,20,52,229,241,244,122,156,103,136,35,239,233,236,99,156,
-  43,172,171,185,200,35,57,95,163,112,244,56,42,167,6,82,107,226,95,244,99,142,179,60,
-  225,231,170,21,97,0,116,151,163,116,31,93,218,63,143,182,173,188,34,163,236,202,155,137,
-  50,242,127,148,91,83,74,155,149,55,114,251,225,246,186,223,82,214,61,48,35,30,237,177,
-  243,238,121,2,71,210,233,151,45,62,109,35,148,233,110,221,169,101,20,0,1,6,34,39,
-  66,42,37,6,7,11,27,51,59,46,40,29,66,70,74,32,11,4,229,192,169,182,54,49,
-  163,202,225,108,70,223,169,171,133,162,114,232,80,137,10,176,23,4,183,43,132,111,220,85,
-  214,25,16,242,229,103,185,189,187,59,12,48,125,11,168,101,38,88,61,233,107,16,132,222,
-  22,177,141,106,233,216,15,55,12,138,91,41,196,245,68,20,238,157,80,196,8,171,216,8,
-  223,211,84,89,107,62,172,35,134,91,79,83,211,132,216,135,176,189,252,51,115,141,80,254,
-  198,40,46,58,232,167,162,225,36,171,20,8,224,77,176,115,156,244,125,122,28,225,157,52,
-  196,133,160,8,36,225,219,19,154,176,189,228,91,174,210,59,28,84,182,160,36,193,151,155,
-  1,51,193,131,79,178,114,50,52,166,209,163,242,138,176,115,58,228,35,175,17,51,91,128,
-  50,9,108,76,99,190,155,176,9,98,171,168,76,79,113,219,28,107,181,96,208,51,252,134,
-  51,207,45,225,194,15,248,164,84,212,172,71,69,235,195,235,151,163,21,0,1,27,40,58,
-  30,21,15,23,37,28,21,16,48,67,64,37,23,46,38,47,19,30,13,237,170,119,46,147,
-  98,250,240,47,57,52,126,5,133,69,179,39,234,79,226,41,62,185,6,78,18,133,91,6,
-  205,141,78,79,175,71,23,168,193,244,72,197,35,55,117,138,12,103,252,57,226,46,246,45,
-  53,179,90,172,154,216,137,97,175,167,125,162,41,185,195,82,236,203,32,44,180,123,16,101,
-  131,246,238,18,138,76,202,175,153,53,201,151,142,0,110,73,252,186,151,45,85,161,252,213,
-  237,90,216,79,40,228,108,181,28,32,52,210,135,203,26,190,181,113,6,157,121,70,145,229,
-  91,233,233,208,145,200,98,146,26,28,74,240,20,75,111,246,121,126,108,13,248,21,207,177,
-  162,186,239,97,100,66,37,225,109,242,120,228,1,47,4,17,198,137,151,142,179,142,198,121,
-  128,233,53,155,186,0,158,104,173,58,122,52,213,195,153,147,135,238,238,189,154,240,174,56,
-  115,122,20,166,19,255,18,63,157,147,50,133,191,24,196,92,192,6,203,123,162,160,70,210,
-  147,180,230,168,15,118,76,9,209,225,78,83,89,137,109,226,10,243,255,62,42,194,212,25,
-  196,18,17,0,1,6,10,12,14,13,18,10,12,5,8,31,32,29,6,6,7,183,181,149,
-  3,125,100,235,155,120,168,49,168,255,113,29,90,61,94,59,25,133,71,2,47,42,146,230,
-  92,171,87,226,226,144,203,230,70,118,82,13,13,153,112,15,89,40,14,230,38,125,39,246,
-  147,12,110,210,145,148,178,159,87,171,101,178,206,241,173,127,255,139,242,140,152,24,176,168,
-  236,15,55,235,179,75,146,237,244,15,64,65,118,116,184,155,157,9,26,192,105,33,236,203,
-  79,43,238,235,0,158,209,221,80,225,129,53,171,67,104,192,192,127,111,178,36,96,171,1,
-  176,155,151,233,184,242,85,241,167,163,93,64,134,192,187,127,163,210,59,244,180,226,51,57,
-  54,20,0,1,28,39,68,41,35,10,12,26,25,25,64,64,61,15,13,22,15,53,46,61,
-  20,243,148,187,103,31,246,17,200,144,4,119,34,144,136,133,91,244,176,168,240,227,69,118,
-  193,67,49,61,71,96,30,212,136,21,194,152,36,111,246,43,68,126,98,166,200,48,208,57,
-  214,80,18,60,110,167,90,236,13,34,217,139,90,18,172,202,22,141,179,83,212,95,132,92,
-  161,8,0,197,89,98,77,170,154,38,220,41,249,253,165,250,138,161,116,6,161,108,226,223,
-  219,30,208,45,247,20,85,211,195,90,10,152,34,197,69,13,161,191,45,14,214,16,15,179,
-  199,5,90,150,89,140,232,166,167,166,143,242,107,137,37,247,12,62,34,63,58,129,182,209,
-  231,94,235,240,117,82,102,191,85,95,26,25,109,11,93,19,19,24,17,174,65,77,100,48,
-  175,6,89,145,136,138,248,68,59,97,186,140,15,38,79,43,162,205,254,197,127,179,254,172,
-  226,183,156,209,236,223,167,135,136,75,141,191,26,237,116,246,93,70,29,49,101,229,160,208,
-  209,221,167,168,205,159,207,136,197,239,248,163,174,75,14,161,121,47,187,131,102,40,227,113,
-  115,37,198,196,81,191,241,52,98,185,24,75,210,66,105,79,235,173,252,125,17,0,1,28,
-  44,46,20,7,16,24,32,73,63,67,16,20,12,11,81,93,91,242,148,187,103,31,246,17,
-  200,144,4,119,34,144,136,133,91,244,176,66,82,9,236,64,163,225,133,185,46,48,34,8,
-  0,198,48,81,160,229,84,66,7,217,11,43,37,80,17,62,86,42,63,86,89,173,33,5,
-  118,171,101,37,138,250,167,94,111,145,201,52,1,202,215,204,253,215,142,121,10,240,75,36,
-  71,9,232,23,249,194,133,55,146,109,196,134,87,117,178,151,41,119,54,194,179,1,122,74,
-  91,240,204,180,225,42,24,178,254,125,152,156,98,71,63,171,243,105,106,196,134,131,176,141,
-  212,12,51,60,31,141,39,154,7,128,25,96,100,37,98,43,119,212,167,152,129,205,108,168,
-  55,16,120,104,82,242,153,50,237,191,13,25,98,48,102,196,224,255,93,220,198,207,56,36,
-  131,138,162,122,201,118,204,13,82,169,168,37,250,136,5,142,52,110,48,143,210,232,98,160,
-  122,77,9,43,41,62,110,206,36,182,217,28,106,232,97,145,242,56,176,74,23,92,251,113,
-  50,204,224,172,24,30,86,110,87,182,105,188,111,156,33,202,54,169,52,151,15,237,100,166,
-  114,190,218,32,119,118,126,252,143,129,93,113,71,135,223,60,152,34,173,245,100,114,15,192,
-  96,248,165,175,137,133,147,174,120,168,226,135,169,24,117,89,209,196,61,209,216,53,207,133,
-  179,37,234,119,202,245,11,149,232,135,97,219,177,250,62,221,153,0,213,24,228,53,17,253,
-  223,130,167,211,245,35,7,121,58,224,196,32,183,192,107,35,138,191,85,211,104,24,214,53,
-  4,138,206,201,102,75,44,198,79,249,124,81,198,198,127,6,187,47,125,225,204,128,78,146,
-  80,60,241,209,190,95,137,199,85,212,177,23,24,170,253,165,61,22,22,0,1,20,40,47,
-  30,32,26,26,11,31,39,44,23,20,14,14,41,62,66,53,31,29,23,20,243,170,119,46,
-  147,98,250,240,47,56,235,120,240,57,247,37,64,67,76,66,245,89,41,96,193,120,252,12,
-  9,247,205,203,84,149,208,109,94,146,218,59,207,249,175,117,143,69,253,101,249,182,150,199,
-  231,189,128,135,169,197,101,10,93,216,28,192,6,87,51,165,202,212,51,119,64,244,61,230,
-  50,199,235,64,81,53,216,204,199,77,5,107,108,116,204,0,87,185,161,220,232,196,66,135,
-  175,196,40,95,7,18,157,245,199,142,109,116,96,46,124,224,229,1,252,72,45,26,138,97,
-  194,188,226,119,173,64,212,137,18,89,191,157,234,31,162,98,156,96,101,136,42,157,132,218,
-  76,22,16,50,116,215,236,90,179,14,102,129,86,180,178,189,133,183,224,30,147,198,106,59,
-  88,123,23,204,80,135,46,39,48,49,171,193,55,131,203,15,187,34,29,178,53,47,128,111,
-  62,244,169,161,43,239,250,112,40,141,110,56,222,74,213,218,184,145,168,74,178,66,49,194,
-  185,200,30,149,61,59,137,166,70,234,67,62,174,105,66,178,83,54,136,202,164,227,243,18,
-  126,192,26,69,169,42,131,83,107,66,98,50,163,219,165,183,156,70,4,116,236,217,99,220,
-  87,115,51,205,108,126,101,157,72,58,182,118,107,57,90,30,33,249,127,140,108,190,215,251,
-  116,22,0,1,27,37,50,37,32,20,7,8,12,20,19,20,10,14,17,17,15,30,41,39,
-  42,93,91,32,148,187,103,31,246,17,200,145,215,122,107,70,62,181,77,198,130,239,105,38,
-  57,133,203,191,169,186,106,46,105,148,145,111,63,59,238,114,96,163,228,126,176,132,29,1,
-  186,35,241,45,228,208,108,27,64,45,5,241,75,17,132,96,195,192,244,204,251,232,218,146,
-  228,254,134,191,88,98,145,164,45,109,130,90,234,83,13,43,191,141,212,18,178,1,32,125,
-  166,3,243,22,208,75,2,124,10,40,212,241,236,175,68,223,45,192,107,108,244,234,47,112,
-  180,210,247,84,98,227,141,230,20,91,61,24,49,159,32,107,156,142,99,149,251,198,166,240,
-  58,229,60,74,235,255,4,201,178,70,6,210,160,173,250,147,76,188,161,54,127,240,250,25,
-  21,118,213,133,132,172,244,201,133,147,139,37,87,236,233,189,227,156,143,218,248,115,195,13,
-  162,74,20,195,117,219,174,193,227,172,240,78,189,214,160,105,45,153,71,153,123,219,177,135,
-  53,84,177,169,198,231,127,245,164,228,87,113,135,206,122,129,51,79,118,210,111,3,248,226,
-  84,58,235,200,217,33,225,156,211,119,134,157,187,186,22,238,247,221,42,1,149,52,212,47,
-  194,255,9,165,146,51,22,0,9,40,53,48,19,21,32,44,55,43,32,10,22,21,62,48,
-  48,7,9,7,7,26,41,39,244,26,179,159,232,20,186,242,232,131,93,137,89,18,81,245,
-  230,193,97,44,166,196,65,10,85,215,251,209,222,160,167,20,236,253,196,132,74,201,253,107,
-  196,176,77,28,124,173,139,162,3,248,80,116,36,169,161,55,115,215,115,248,49,119,227,156,
-  228,158,201,109,38,35,106,16,5,17,22,146,193,220,4,248,63,17,84,113,173,52,239,16,
-  171,34,245,143,145,63,216,52,115,118,235,43,32,161,15,44,210,244,3,97,189,143,102,195,
-  67,116,237,143,16,126,39,26,236,170,144,68,213,252,26,58,236,219,57,100,145,60,200,64,
-  221,101,113,18,142,13,191,201,153,142,85,12,15,158,151,176,198,113,139,133,211,193,184,213,
-  180,204,169,175,152,159,144,103,200,138,209,28,106,199,136,241,85,3,158,155,53,213,47,52,
-  163,5,19,140,115,222,218,136,14,254,140,217,101,126,74,2,197,183,42,37,147,64,85,28,
-  62,63,251,225,46,76,39,128,35,47,145,228,203,187,166,157,11,92,137,154,81,126,79,197,
-  116,39,102,156,54,187,130,55,178,124,26,20,64,160,79,168,162,201,139,184,81,136,162,206,
-  98,42,251,81,199,201,135,142,173,175,13,199,229,47,210,236,30,55,222,213,72,102,62,191,
-  148,162,203,188,209,72,20,21,195,198,39,165,60,119,74,228,70,35,82,162,69,242,143,197,
-  166,87,241,2,102,231,146,1,128,222,137,208,227,84,127,171,149,107,84,74,80,72,164,19,
-  136,144,78,12,145,27,50,223,161,143,167,72,237,205,105,132,104,168,216,154,214,168,110,244,
-  24,90,77,85,196,243,130,89,106,246,150,203,252,169,228,181,177,130,95,148,14,120,200,95,
-  75,190,223,47,140,147,45,151,143,98,223,54,68,96,74,223,105,194,167,123,117,101,232,232,
-  167,26,145,221,64,169,218,156,134,197,74,131,18,248,145,252,177,116,230,22,0,9,9,43,
-  36,44,15,14,18,18,24,19,21,19,12,35,51,61,36,19,14,69,68,75,17,241,204,150,
-  89,141,128,100,123,108,62,1,192,97,148,151,15,49,250,109,224,181,91,16,3,215,239,78,
-  102,175,175,212,118,143,151,68,222,178,158,200,217,147,234,223,114,186,118,231,198,94,140,211,
-  152,255,221,132,121,149,121,129,194,123,40,249,26,40,138,181,52,83,15,239,84,221,39,225,
-  201,3,68,192,51,220,243,163,41,218,148,55,217,182,33,209,123,13,191,227,72,124,233,184,
-  16,246,29,130,197,1,246,204,103,89,1,193,190,76,114,40,134,135,163,193,255,23,232,173,
-  82,52,115,165,246,190,199,173,200,61,142,112,206,37,224,235,62,55,219,47,80,110,177,192,
-  112,177,198,199,181,182,154,41,85,152,50,234,190,98,223,123,216,24,61,116,21,172,12,20,
-  53,71,53,124,5,81,29,2,107,82,253,72,165,39,53,228,188,121,147,17,98,112,123,86,
-  29,211,8,54,123,177,131,208,41,212,40,211,23,246,221,177,114,240,17,170,25,121,62,60,
-  46,219,22,96,157,25,43,5,24,48,82,243,103,139,78,142,197,154,99,127,29,118,109,178,
-  153,222,56,11,236,20,159,85,190,228,9,12,103,109,202,42,165,247,83,115,129,8,239,186,
-  41,47,184,30,170,195,28,187,1,2,99,134,240,179,209,66,254,65,182,244,232,139,108,3,
-  128,248,116,129,24,169,230,198,107,95,87,110,168,189,28,246,151,53,63,200,8,135,251,208,
-  72,32,55,231,64,133,83,174,139,166,150,249,251,124,2,114,147,138,244,63,130,137,157,170,
-  17,189,201,149,254,180,205,28,102,74,71,48,84,82,118,84,183,12,55,243,241,89,66,212,
-  99,167,16,84,24,11,158,77,40,159,157,87,20,229,86,251,90,33,117,102,217,235,184,36,
-  99,116,236,1,98,103,122,55,31,80,193,223,195,54,229,76,250,180,178,215,148,182,56,78,
-  136,119,63,230,7,246,248,226,165,240,22,0,8,39,51,44,23,44,45,54,31,33,16,12,
-  24,32,46,48,45,29,19,13,16,16,11,95,20,183,62,134,83,201,126,157,163,148,13,16,
-  20,96,215,95,114,14,50,135,248,68,217,116,178,92,18,38,182,116,85,47,107,246,121,135,
-  22,172,79,99,111,20,148,104,55,143,63,178,161,11,33,158,223,8,111,28,198,237,59,140,
-  233,222,114,216,6,243,191,64,124,26,205,30,223,29,197,228,203,212,217,81,141,106,220,147,
-  124,184,2,9,198,211,10,185,242,121,188,114,109,46,62,197,26,201,16,87,47,242,169,109,
-  229,173,74,11,170,113,89,247,109,255,115,230,22,21,125,131,253,152,121,164,161,54,211,196,
-  87,140,81,167,23,201,142,202,149,28,183,144,216,44,100,133,143,213,45,152,59,88,178,159,
-  240,59,155,120,201,149,52,181,255,104,27,11,105,99,56,254,209,13,76,40,19,28,251,60,
-  21,82,199,120,251,249,209,58,113,53,95,197,136,212,136,220,104,221,216,19,231,152,223,24,
-  83,202,230,161,87,144,58,210,233,121,126,80,104,194,31,253,255,212,194,220,44,141,100,233,
-  209,158,176,15,236,30,205,79,125,97,204,189,43,114,129,41,68,4,245,19,170,63,50,58,
-  48,78,13,188,3,130,118,101,160,49,252,141,248,58,67,2,157,231,143,67,131,78,114,157,
-  150,16,207,40,193,244,69,142,105,67,151,16,23,142,66,8,98,186,125,136,74,71,49,84,
-  158,106,114,114,195,32,51,248,173,175,86,251,154,250,212,233,32,65,169,236,213,163,211,32,
-  98,93,67,177,245,29,209,203,30,74,232,245,74,180,165,221,34,61,5,225,32,182,141,162,
-  164,231,119,138,168,4,167,222,146,210,149,8,22,206,98,127,165,2,201,250,235,98,252,26,
-  170,49,82,18,0,32,36,85,61,59,16,14,15,45,49,59,26,29,26,26,14,36,39,37,
-  91,20,183,62,134,83,157,200,2,240,254,210,155,247,34,157,210,20,99,136,193,104,54,106,
-  229,160,76,171,235,159,144,38,16,251,130,134,91,206,9,24,87,21,135,36,121,54,194,247,
-  122,229,213,232,241,242,224,218,221,253,156,235,241,5,73,124,192,178,187,221,127,135,82,59,
-  62,120,97,53,252,226,236,240,211,114,155,75,14,53,225,106,75,13,140,86,208,20,126,90,
-  145,124,30,64,50,181,176,146,160,39,95,240,197,37,80,177,34,100,74,194,85,138,58,156,
-  0,159,93,117,76,227,51,7,14,219,231,23,241,217,14,192,235,253,135,46,174,70,179,120,
-  67,180,145,51,22,107,240,240,101,101,114,191,61,18,73,52,216,121,120,103,45,18,116,139,
-  55,228,50,197,221,192,84,214,66,109,19,12,102,164,29,24,148,128,173,211,199,151,130,163,
-  250,157,249,30,55,77,136,251,188,125,52,153,126,140,216,98,28,200,29,20,61,150,220,93,
-  226,64,42,140,246,92,21,154,55,215,167,93,245,52,60,212,5,245,9,80,104,35,253,240,
-  31,20,101,92,159,103,159,224,24,128,234,174,161,109,133,173,3,13,247,112,68,30,141,69,
-  92,63,172,173,19,46,140,139,250,201,221,37,164,69,14,113,97,25,104,96,209,185,248,123,
-  161,199,249,83,98,210,228,34,76,136,151,106,12,138,106,249,199,80,17,33,137,246,186,169,
-  159,175,169,62,160,134,5,243,177,99,190,49,249,186,65,194,82,26,251,85,4,116,112,60,
-  151,53,171,115,238,66,237,225,8,251,111,41,171,187,176,57,63,69,233,250,170,47,11,163,
-  228,93,44,83,26,108,56,4,24,36,250,50,6,200,246,222,205,147,232,193,158,179,220,212,
-  171,95,46,182,209,1,156,230,238,74,92,107,35,29,183,176,174,68,46,4,12,76,50,104,
-  236,63,219,134,223,219,175,240,113,95,82,0,127,42,78,8,86,121,177,183,251,69,59,188,
-  234,87,193,167,10,50,176,79,10,152,115,105,143,244,140,45,225,41,191,84,59,65,130,34,
-  21,86,108,79,106,83,194,9,220,72,138,67,111,46,93,244,162,36,211,231,135,192,151,60,
-  47,211,91,148,127,166,201,1,126,242,77,30,247,54,84,9,19,56,170,54,55,235,211,27,
-  158,66,226,110,127,229,126,36,198,43,191,89,20,25,163,18,237,242,123,147,190,153,185,35,
-  125,119,227,12,104,59,195,43,102,141,36,19,233,171,86,191,24,27,35,147,96,37,167,217,
-  178,171,33,121,231,66,238,190,76,97,73,165,158,153,15,9,38,151,130,24,102,71,164,155,
-  199,22,0,9,41,49,45,13,14,18,16,14,15,60,57,48,15,19,26,56,52,57,22,22,
-  19,11,55,124,183,86,105,85,21,138,239,93,43,98,106,225,83,203,118,241,16,141,49,113,
-  93,2,32,16,26,137,229,169,29,228,203,116,63,39,74,212,145,166,11,37,216,191,255,170,
-  214,127,117,200,57,251,142,69,145,238,96,168,115,120,55,104,71,47,220,182,136,161,3,193,
-  220,220,152,160,68,12,217,170,172,184,107,119,249,53,126,71,28,58,59,12,128,137,161,122,
-  20,11,212,41,32,64,215,232,165,72,64,215,36,110,212,131,15,86,66,166,104,251,134,116,
-  8,46,3,140,43,169,81,154,48,115,81,173,16,242,63,71,156,161,77,140,7,106,230,109,
-  141,115,109,125,76,92,131,244,214,52,157,189,143,178,81,25,37,186,176,66,32,73,195,254,
-  254,254,106,72,131,138,133,139,178,79,47,189,33,209,97,252,51,12,210,58,47,206,14,128,
-  183,128,182,38,181,107,198,60,42,182,16,7,204,191,245,164,140,177,135,91,202,21,72,81,
-  83,191,57,76,99,79,127,205,221,145,130,169,14,20,133,147,5,79,205,134,4,94,34,177,
-  66,62,69,19,112,230,1,222,105,182,56,32,58,84,203,129,91,223,134,138,156,233,248,144,
-  131,62,32,199,242,33,190,146,213,190,46,138,234,245,94,65,224,94,115,118,166,250,242,192,
-  95,88,176,29,0,190,222,6,81,127,92,34,31,162,43,175,138,148,247,100,71,67,132,194,
-  43,180,50,214,130,21,149,247,202,7,219,225,83,16,8,211,41,15,178,60,185,190,145,87,
-  80,251,186,20,128,164,27,190,34,41,95,150,209,1,109,201,159,165,103,149,103,76,237,172,
-  55,207,103,84,159,11,100,114,123,143,234,22,147,114,16,10,77,213,138,207,185,90,148,126,
-  56,57,62,69,173,9,58,171,116,84,153,5,189,166,109,77,26,194,50,91,110,41,120,78,
-  32,193,222,78,139,120,53,8,140,108,86,56,101,33,94,166,218,151,37,20,0,4,9,13,
-  25,32,45,45,36,25,26,71,70,67,28,26,13,54,55,55,5,21,19,244,115,165,170,77,
-  28,26,46,151,227,113,187,156,27,243,243,87,49,63,85,38,7,134,157,36,139,38,114,251,
-  62,117,90,24,1,133,247,167,221,142,129,67,40,222,240,48,23,40,29,141,36,235,46,78,
-  216,120,112,152,167,235,115,101,232,106,149,3,216,163,238,216,239,107,67,219,91,138,140,86,
-  117,18,67,69,161,246,202,214,148,191,233,151,1,86,41,42,1,77,142,64,117,178,217,209,
-  114,70,177,26,31,155,178,51,117,41,140,166,3,195,197,143,237,78,112,18,41,239,154,191,
-  248,3,61,4,106,194,182,43,190,108,199,4,82,179,185,100,13,136,194,104,130,150,192,203,
-  134,63,148,169,158,93,234,26,66,157,26,169,241,232,204,7,4,10,33,53,118,234,82,139,
-  83,241,242,228,224,29,133,6,85,120,76,72,195,116,163,237,84,49,120,52,25,152,199,126,
-  142,223,197,48,15,223,93,102,209,220,189,132,110,222,11,127,44,14,193,192,122,60,64,61,
-  196,212,36,24,250,41,0,205,216,238,95,43,49,13,24,90,58,127,226,159,106,112,2,146,
-  127,132,241,108,156,153,209,186,165,150,49,36,73,136,70,228,183,0,197,142,251,22,113,21,
-  244,210,224,207,50,0,185,102,103,153,20,233,64,134,194,141,80,176,80,76,188,59,254,207,
-  117,222,132,177,211,66,69,85,10,110,157,160,227,245,163,79,50,112,82,90,229,37,53,133,
-  245,132,4,167,73,242,240,174,178,57,38,223,39,69,71,27,234,4,214,157,169,197,14,42,
-  83,208,152,223,44,1,160,247,117,116,55,159,38,171,54,227,215,227,61,89,228,219,154,151,
-  62,221,9,93,175,167,69,130,180,244,64,88,147,196,94,247,189,54,152,51,118,110,240,140,
-  171,35,15,148,71,142,144,159,47,74,35,137,112,120,33,208,123,250,237,65,8,142,109,223,
-  121,250,21,52,207,185,115,149,70,192,106,98,167,189,253,126,6,219,37,135,201,5,150,201,
-  78,70,12,8,19,105,20,6,252,228,42,133,182,253,88,174,183,192,85,179,72,248,11,33,
-  162,98,140,230,112,169,104,73,86,151,64,15,11,246,232,47,21,125,74,195,93,64,84,55,
-  254,196,60,175,191,23,0,43,57,74,40,34,25,17,11,12,13,16,12,12,32,64,63,36,
-  4,5,4,5,18,43,59,43,244,26,219,143,158,62,215,182,84,111,158,175,84,130,176,157,
-  38,63,121,111,142,93,129,144,28,234,170,71,64,95,86,183,202,238,47,121,232,144,45,12,
-  92,225,7,235,19,214,252,19,16,46,63,239,24,176,38,77,17,119,86,5,113,88,175,152,
-  45,7,132,220,89,124,8,191,8,106,57,139,157,201,48,100,169,39,61,34,82,65,243,213,
-  50,147,72,178,76,151,249,43,103,221,73,20,189,161,107,64,215,222,157,63,121,5,209,249,
-  91,240,102,117,112,203,110,64,191,48,155,189,213,32,198,190,88,97,190,63,176,82,113,239,
-  190,171,119,133,249,66,7,24,147,44,44,42,94,202,3,63,21,58,1,144,250,242,193,186,
-  92,84,249,46,87,103,174,73,74,155,143,113,186,199,202,138,184,168,13,60,25,86,3,51,
-  18,207,23,245,231,134,136,37,159,183,51,151,109,252,168,164,151,201,220,12,217,84,168,28,
-  254,198,179,122,208,129,97,199,149,222,124,77,181,36,176,208,96,16,135,170,26,73,81,211,
-  16,183,209,250,77,81,165,59,150,74,172,170,93,101,144,83,1,191,17,104,48,238,212,34,
-  3,187,108,254,70,157,22,2,58,244,217,173,144,199,99,96,86,148,165,44,94,80,6,68,
-  67,169,199,190,40,195,7,22,226,25,16,175,38,127,232,233,71,183,24,211,94,119,173,132,
-  186,180,45,26,32,32,146,104,56,6,127,87,88,179,137,0,246,111,6,136,43,160,202,24,
-  249,171,166,42,109,152,150,157,141,102,241,159,221,124,81,68,132,237,213,176,207,163,23,74,
-  83,128,49,37,47,235,178,114,49,132,77,49,54,237,79,10,26,242,191,90,159,241,196,29,
-  156,201,27,254,35,28,207,29,245,230,246,145,87,132,70,253,106,18,136,54,103,248,249,171,
-  33,121,65,49,49,173,226,55,87,235,225,182,252,246,144,205,255,153,139,111,27,238,12,86,
-  186,77,87,77,76,14,189,161,123,7,6,245,131,239,84,52,120,137,255,42,114,25,87,22,
-  0,12,39,53,55,41,61,64,56,36,41,34,42,29,33,17,11,10,14,18,18,14,18,2,
-  87,9,183,62,134,83,173,141,173,202,36,121,29,132,76,163,33,77,223,245,23,36,114,116,
-  82,37,203,138,190,251,94,10,176,254,32,64,223,198,234,109,204,186,134,169,158,72,35,62,
-  205,239,18,60,174,1,5,153,167,129,128,22,104,97,247,31,171,200,4,64,181,128,163,185,
-  138,111,100,226,231,6,252,58,183,251,122,109,70,124,52,110,32,73,116,169,133,142,199,56,
-  10,103,168,154,107,7,126,95,6,53,140,228,77,99,232,62,34,220,132,240,10,108,7,109,
-  133,223,116,100,225,220,221,145,230,113,62,106,134,246,7,23,115,8,113,169,175,127,26,168,
-  192,92,185,92,248,12,68,129,93,156,228,168,244,105,129,190,116,13,114,28,24,164,188,42,
-  110,100,58,189,195,120,75,73,222,67,47,24,144,61,206,106,210,138,31,241,35,102,118,125,
-  173,181,174,165,126,238,229,76,187,164,175,225,101,112,35,214,86,155,98,160,67,161,109,180,
-  49,79,117,82,188,119,18,214,86,231,173,17,42,2,62,2,235,238,26,113,188,73,152,68,
-  73,136,210,238,169,33,218,146,184,89,238,10,243,149,218,206,36,232,20,76,41,151,98,122,
-  161,163,198,81,134,63,99,19,68,52,185,196,199,210,223,126,34,60,172,125,164,17,33,16,
-  117,111,13,25,11,184,178,1,126,2,158,19,166,114,146,205,198,205,29,72,105,27,201,175,
-  246,55,24,254,177,79,47,67,36,47,209,66,168,219,52,139,176,154,200,186,247,11,35,81,
-  178,221,47,226,65,192,178,15,247,129,91,117,31,51,157,72,242,173,92,104,68,92,242,223,
-  85,86,148,236,7,214,239,96,44,103,79,229,97,10,219,142,159,92,106,2,54,171,43,132,
-  41,4,49,85,142,32,15,42,216,163,145,22,0,5,35,43,46,16,14,7,5,3,5,5,
-  11,26,28,37,52,53,46,22,75,72,74,17,199,108,183,104,23,70,82,13,37,23,1,245,
-  220,145,60,180,173,215,181,69,178,97,127,170,91,51,12,169,97,172,207,211,237,73,6,21,
-  235,251,126,247,36,231,241,234,206,65,128,29,29,253,118,18,2,251,123,120,156,250,144,42,
-  73,177,243,33,254,187,169,112,65,48,185,110,81,145,142,162,59,94,33,21,153,191,44,4,
-  130,96,201,83,215,226,185,174,180,189,80,119,191,244,113,64,167,165,235,38,241,82,76,86,
-  42,96,103,132,191,141,106,118,75,14,212,241,223,41,102,183,77,99,196,106,212,177,134,140,
-  245,232,86,134,176,119,201,160,58,192,14,168,134,173,159,78,53,208,114,154,23,80,98,111,
-  221,11,9,137,239,15,57,108,59,93,102,128,99,17,151,152,189,202,166,151,250,176,103,25,
-  240,164,128,10,148,220,9,47,101,167,171,2,130,6,107,168,65,42,93,195,67,49,189,238,
-  95,216,30,174,70,215,128,236,5,67,157,68,102,231,9,168,65,185,74,178,181,38,161,217,
-  80,206,163,103,204,60,171,26,230,24,134,146,65,179,203,152,180,129,215,142,177,112,71,160,
-  27,197,103,15,97,225,7,240,71,14,112,113,171,3,137,155,84,103,193,249,47,87,242,207,
-  196,151,90,71,88,198,50,78,130,220,225,208,102,69,132,247,217,129,101,136,187,173,184,203,
-  48,99,133,196,221,16,126,175,227,83,107,162,28,57,12,94,24,116,219,149,243,139,136,149,
-  8,158,208,4,55,150,163,14,43,189,105,90,181,154,251,96,162,76,24,252,133,207,34,165,
-  242,73,250,8,171,166,90,106,58,195,254,234,165,181,20,0,8,63,73,69,15,9,11,19,
-  25,46,48,57,36,27,13,8,45,60,72,31,255,109,194,183,67,131,172,254,212,66,184,221,
-  15,183,104,86,80,113,219,245,254,250,186,217,248,55,170,18,248,85,11,89,166,152,51,254,
-  160,63,235,104,105,76,82,78,241,177,73,41,232,154,176,64,231,245,235,132,125,43,10,14,
-  47,230,128,220,114,90,227,62,80,214,76,215,85,1,177,45,2,156,176,196,6,119,233,150,
-  153,133,18,119,103,86,231,199,48,212,5,192,87,57,69,149,155,164,126,250,79,79,251,161,
-  25,79,217,149,140,34,193,181,158,7,43,245,209,97,241,116,111,49,83,95,205,196,93,106,
-  255,224,97,13,102,158,205,83,41,173,113,44,20,171,71,188,132,18,107,251,74,68,208,79,
-  222,209,40,202,210,33,54,22,228,22,201,143,112,200,210,167,235,52,2,7,239,235,79,177,
-  203,17,167,8,178,64,210,238,18,36,143,116,212,29,172,13,97,54,44,216,42,76,82,74,
-  206,118,2,41,196,84,238,155,180,73,148,41,130,38,118,7,239,144,243,164,249,63,185,167,
-  103,165,67,220,91,12,134,119,118,135,210,178,56,161,51,216,168,131,214,152,95,85,187,187,
-  223,249,223,115,25,97,11,219,135,134,80,55,16,88,100,202,244,199,91,71,63,45,179,170,
-  54,64,157,147,168,150,163,25,249,219,35,26,46,220,177,246,3,147,163,36,156,212,147,39,
-  67,4,103,187,228,73,148,181,116,190,66,95,219,253,78,140,132,232,42,73,236,249,8,98,
-  87,63,119,81,72,97,16,154,230,7,249,14,156,9,72,182,74,101,156,14,180,144,118,106,
-  36,30,240,49,114,124,64,199,83,199,84,65,73,40,224,193,195,226,55,55,62,21,0,46,
-  71,89,44,18,5,14,16,20,13,11,12,37,43,40,18,25,58,53,50,19,30,17,238,142,
-  31,199,47,82,211,125,96,165,64,52,204,213,248,114,148,91,161,160,50,229,94,82,151,18,
-  84,104,230,38,151,148,93,246,212,49,11,48,90,33,69,37,139,150,102,119,36,233,26,15,
-  197,48,247,83,7,75,124,201,136,200,75,2,15,40,113,237,157,138,186,161,173,246,223,108,
-  142,207,174,180,53,250,190,120,94,136,210,154,201,111,185,172,86,99,241,92,224,179,176,117,
-  77,233,190,48,55,85,26,244,96,111,49,116,169,40,109,1,242,249,93,224,139,0,23,138,
-  128,192,135,61,47,28,237,33,8,82,36,250,47,115,254,20,160,32,246,220,204,208,93,40,
-  183,52,111,147,174,222,44,125,202,173,219,60,26,162,19,153,126,218,57,10,224,213,191,26,
-  217,135,53,214,3,74,150,135,115,65,162,60,238,104,122,236,123,230,85,228,37,45,220,231,
-  192,214,26,247,230,52,200,231,118,52,191,174,15,129,75,218,211,96,103,100,226,16,199,79,
-  163,248,166,46,228,239,75,172,173,235,96,202,153,123,113,54,195,57,193,230,225,239,1,221,
-  247,193,63,149,211,195,128,134,192,73,157,187,25,49,164,233,36,187,65,196,62,178,46,84,
-  15,124,224,115,11,118,127,120,206,53,163,10,226,48,151,62,114,145,240,93,168,229,111,222,
-  110,224,135,243,255,105,209,188,252,130,128,5,208,161,163,168,172,88,227,15,210,135,33,129,
-  236,235,126,104,223,78,211,152,91,47,104,161,192,76,171,75,50,131,38,91,202,190,153,231,
-  0,189,75,241,71,19,195,215,2,160,5,219,173,43,87,82,48,4,255,99,66,97,230,177,
-  2,0,45,169,48,124,147,224,240,220,6,255,65,241,23,159,222,170,75,0,97,60,168,136,
-  72,38,120,18,174,143,172,1,30,90,206,44,144,125,248,96,182,90,47,90,41,233,203,89,
-  177,114,176,38,124,167,76,115,247,118,105,150,163,224,178,15,38,183,14,0,33,50,249,55,
-  229,180,50,75,71,166,63,122,251,17,204,76,21,0,34,47,80,49,35,17,23,22,17,34,
-  39,37,21,27,30,67,60,56,13,14,11,251,77,8,183,62,134,83,179,199,247,71,79,196,
-  195,214,64,24,108,170,62,61,248,47,167,19,51,21,107,179,133,19,124,53,225,215,80,109,
-  239,101,191,229,145,226,252,236,198,231,40,34,60,2,132,99,150,61,81,194,22,23,228,42,
-  205,95,19,247,17,27,124,172,189,8,54,121,226,43,36,0,131,45,217,26,138,112,135,4,
-  145,212,227,196,13,47,193,31,251,71,15,237,41,216,164,17,60,126,163,197,229,76,225,87,
-  104,151,172,34,199,86,14,250,249,100,78,91,213,108,120,166,39,69,16,208,156,142,44,111,
-  164,151,231,14,149,40,44,104,49,137,79,13,88,237,249,180,69,127,103,0,128,178,130,220,
-  189,53,191,243,165,176,78,165,201,231,105,113,35,147,242,144,89,247,107,192,43,116,121,144,
-  109,223,199,4,224,86,13,122,148,75,228,124,177,203,186,116,116,153,87,182,202,147,159,183,
-  14,237,18,21,95,247,20,253,205,88,139,30,196,111,63,21,70,180,149,82,97,109,78,15,
-  51,193,128,142,66,153,229,166,145,189,185,76,101,74,171,26,205,173,95,106,17,8,250,8,
-  102,50,195,100,20,79,54,250,193,0,199,161,195,16,130,179,72,63,52,230,158,52,8,126,
-  208,91,157,11,43,142,211,233,16,109,159,52,42,58,11,79,102,6,224,75,209,19,131,104,
-  157,201,18,142,35,141,179,123,89,248,235,128,202,88,223,70,139,153,93,207,88,216,17,212,
-  138,120,252,250,0,200,97,152,166,131,50,178,161,63,239,179,45,4,141,189,209,17,162,238,
-  2,152,249,152,47,119,216,182,229,217,14,44,192,49,185,4,17,121,124,135,154,193,202,25,
-  79,72,177,192,255,46,20,0,43,43,51,12,11,6,19,27,45,61,55,48,19,43,50,47,
-  21,7,22,35,48,31,244,146,22,205,64,194,196,193,219,217,37,91,154,82,92,187,198,135,
-  67,9,109,216,216,246,117,33,103,251,104,202,201,31,146,254,213,36,241,23,48,89,72,91,
-  5,246,167,17,187,15,7,7,74,67,243,69,142,154,70,3,27,28,16,74,10,73,200,121,
-  124,136,221,238,69,20,135,89,97,16,17,148,143,169,193,62,124,83,173,216,49,195,49,12,
-  212,203,8,195,230,135,235,251,46,48,171,201,84,208,153,202,139,190,13,178,186,11,232,192,
-  210,124,36,156,14,91,251,51,96,53,226,146,77,6,227,10,49,103,6,106,141,34,134,194,
-  219,237,58,198,7,211,25,94,213,11,176,151,168,143,215,211,146,104,95,182,19,162,51,55,
-  21,51,23,155,143,195,192,245,182,12,253,180,169,120,186,255,200,197,219,169,228,59,236,138,
-  68,104,127,117,142,198,8,145,252,137,202,178,171,58,148,166,119,51,165,35,90,0,17,165,
-  83,72,66,209,172,44,186,57,247,60,6,162,253,51,72,157,126,79,191,136,184,248,59,17,
-  255,188,203,132,255,39,96,183,106,56,141,85,17,172,252,217,140,61,186,92,207,145,187,214,
-  109,132,15,164,90,0,134,75,100,206,161,77,180,233,54,53,70,96,111,232,219,184,95,52,
-  53,238,180,231,169,52,253,32,64,118,51,242,54,152,128,226,83,63,128,188,130,216,56,140,
-  82,239,252,170,101,165,214,7,11,251,2,255,211,181,230,124,158,76,61,151,62,241,11,138,
-  16,212,65,76,145,171,174,145,6,35,74,171,58,8,168,240,188,232,180,186,208,228,144,196,
-  46,90,67,12,250,8,222,23,101,36,97,47,175,38,110,89,66,101,191,15,15,69,175,9,
-  155,6,59,107,157,181,56,137,73,217,141,83,216,153,199,45,198,206,138,176,189,161,110,161,
-  157,77,91,231,222,250,102,247,199,35,235,228,11,136,12,41,55,195,69,74,212,17,0,43,
-  49,58,16,10,16,24,30,18,61,60,65,14,8,65,66,78,33,30,244,101,174,235,255,44,
-  192,145,241,137,18,110,214,117,79,193,134,207,199,224,159,114,30,129,228,167,171,221,73,118,
-  75,246,148,253,119,38,6,241,101,81,123,122,229,212,165,66,103,127,77,168,114,124,246,242,
-  161,208,184,219,136,161,224,222,160,175,18,141,60,12,249,9,107,111,24,181,161,221,137,202,
-  221,111,229,244,111,249,4,223,84,33,75,37,49,31,108,59,246,83,244,17,14,176,138,117,
-  34,18,179,121,244,8,171,111,165,187,28,24,34,223,125,190,208,70,161,118,58,183,163,63,
-  89,106,57,171,221,32,134,12,192,74,13,7,156,16,135,102,55,188,229,104,211,16,36,222,
-  80,115,215,208,214,195,194,30,58,61,79,25,33,223,77,122,161,87,147,31,224,100,167,98,
-  124,223,74,6,193,79,179,80,93,131,118,208,39,62,226,252,241,192,85,108,54,150,210,96,
-  120,211,129,96,152,10,195,8,147,232,137,233,167,1,51,146,191,82,11,56,132,208,131,53,
-  11,61,6,9,37,101,45,217,26,30,22,115,184,148,131,29,29,51,188,35,49,184,170,144,
-  69,103,66,25,158,132,149,243,208,233,213,7,175,180,25,232,189,132,253,160,234,192,82,56,
-  80,44,101,19,74,20,202,129,209,81,138,104,159,50,75,89,151,187,19,102,212,11,54,187,
-  99,31,217,228,200,146,170,56,113,127,41,210,199,130,198,100,158,190,69,105,97,36,151,73,
-  218,162,151,80,115,183,136,22,126,66,52,201,188,225,117,132,251,59,87,53,172,249,121,9,
-  176,169,42,200,181,31,9,81,46,18,216,48,120,204,140,131,88,81,2,54,1,47,93,77,
-  31,1,64,197,241,72,41,159,31,214,14,222,80,1,234,4,228,103,41,39,18,229,27,201,
-  57,53,100,57,66,169,194,227,178,64,19,212,125,185,65,107,83,121,5,179,128,223,60,134,
-  113,124,71,20,81,66,4,146,232,231,250,39,244,142,215,51,199,169,84,127,145,39,5,230,
-  185,62,231,206,66,244,27,59,212,243,41,169,184,47,195,78,84,249,164,147,211,74,184,152,
-  21,192,116,38,201,147,8,126,146,244,231,136,132,21,230,86,69,225,49,197,43,174,246,136,
-  71,81,67,75,159,86,77,173,106,214,107,180,72,209,164,126,83,117,48,169,47,83,226,175,
-  55,190,89,22,0,40,45,53,34,42,38,39,37,37,29,16,16,11,28,34,50,37,54,32,
-  29,6,13,18,16,233,142,49,101,255,82,211,135,81,80,64,52,204,223,79,14,212,219,232,
-  208,36,56,99,51,155,158,214,168,4,105,240,138,53,214,85,154,103,127,241,97,154,93,235,
-  197,202,9,242,190,104,212,95,32,220,87,239,238,3,1,89,216,196,210,237,75,246,230,250,
-  180,108,152,148,67,165,61,7,132,32,186,194,128,23,20,82,220,76,15,241,106,78,251,235,
-  236,218,7,107,92,221,55,236,204,248,130,115,181,21,216,2,80,47,26,136,85,84,239,107,
-  189,251,32,73,118,88,31,245,71,24,128,50,163,0,79,23,28,5,75,122,157,196,178,198,
-  34,228,70,84,193,20,125,4,205,64,236,182,86,205,18,27,140,1,154,173,69,221,37,24,
-  88,218,69,203,110,204,149,91,64,245,94,122,117,37,95,194,209,112,96,163,211,58,198,119,
-  30,52,208,212,254,34,140,12,33,115,31,26,65,237,231,25,108,225,234,132,95,35,255,232,
-  215,152,29,252,151,33,132,25,86,115,56,67,168,204,29,55,27,15,53,40,213,166,9,255,
-  142,44,27,111,95,223,19,89,126,85,123,153,201,60,179,105,170,158,63,68,208,99,7,5,
-  65,126,120,159,114,248,92,15,10,240,58,232,43,246,31,198,118,79,223,251,148,74,189,140,
-  123,216,157,57,76,116,5,44,100,86,150,211,16,247,76,176,156,32,48,97,195,53,161,216,
-  181,52,204,66,35,250,174,206,210,53,218,254,15,70,54,110,101,56,162,141,101,74,117,49,
-  5,139,243,96,141,160,26,166,43,178,58,57,244,159,215,39,151,45,199,189,94,114,161,201,
-  96,88,98,247,4,146,52,248,20,244,215,111,143,162,26,135,46,199,119,15,72,77,66,202,
-  180,5,186,217,96,135,68,102,131,140,248,227,165,81,188,237,196,108,249,201,5,15,72,122,
-  87,78,172,23,200,226,58,237,178,191,117,47,127,19,120,235,183,144,44,143,42,80,96,202,
-  107,69,127,36,201,59,91,182,126,145,199,121,27,149,202,36,115,186,40,79,188,243,253,87,
-  95,230,162,87,88,184,219,73,211,8,204,201,237,142,253,162,25,254,23,0,35,46,69,36,
-  32,25,24,14,15,15,16,11,11,11,12,16,21,30,29,42,50,66,51,24,163,140,183,70,
-  207,220,126,81,128,71,94,202,35,226,229,117,68,225,59,47,224,224,31,208,47,149,169,141,
-  183,247,110,138,51,139,104,138,94,177,149,250,102,16,156,89,6,124,131,55,174,154,195,146,
-  72,41,122,206,10,230,77,43,213,160,234,241,238,192,177,154,112,27,24,227,20,43,204,251,
-  140,217,37,250,93,92,244,173,50,200,245,157,198,182,236,39,18,139,73,115,163,141,56,7,
-  93,207,74,192,56,229,89,228,178,3,238,11,190,216,86,98,173,231,31,233,100,24,41,247,
-  137,76,213,203,180,44,130,105,208,189,88,81,127,44,1,149,252,171,64,135,122,22,28,98,
-  162,54,125,24,46,95,211,55,65,198,43,35,157,101,23,72,160,94,206,31,111,87,1,109,
-  114,54,86,132,199,162,54,155,206,152,135,117,26,186,251,93,73,250,230,209,230,211,228,118,
-  108,150,176,231,99,150,198,89,210,91,236,33,187,171,228,27,205,127,96,111,188,49,228,72,
-  21,216,75,154,238,43,198,166,149,75,9,67,196,72,124,241,143,162,81,46,3,189,213,88,
-  169,79,131,84,85,139,91,32,169,209,119,55,205,13,216,103,49,208,29,151,211,140,254,31,
-  207,94,219,189,81,45,166,197,151,250,180,197,35,223,55,219,143,68,4,42,101,63,86,230,
-  174,132,20,39,184,229,179,253,10,233,162,116,201,251,166,87,114,96,56,91,218,176,10,251,
-  218,178,144,120,115,225,179,242,15,246,20,103,185,66,18,246,104,126,223,151,161,239,218,110,
-  0,163,140,86,254,196,95,42,181,7,178,225,178,3,148,134,82,195,59,227,68,168,81,63,
-  45,79,69,99,22,67,179,121,149,47,59,193,193,83,34,232,167,85,24,110,51,162,19,214,
-  170,170,238,219,208,229,176,132,196,145,171,79,110,220,123,10,48,103,228,19,69,38,21,0,
-  6,12,25,28,20,24,23,49,49,59,50,37,32,15,42,57,68,41,39,28,36,248,102,255,
-  73,47,44,212,37,206,218,180,16,70,161,179,216,111,179,225,199,120,61,116,61,3,53,126,
-  163,171,119,123,117,222,210,191,233,49,251,118,211,176,51,125,215,61,133,108,96,248,155,164,
-  87,209,9,190,98,180,255,238,118,85,151,239,250,75,48,195,194,78,24,64,95,220,160,115,
-  25,231,72,46,78,224,65,96,192,88,202,204,89,177,169,242,6,150,201,94,155,46,209,38,
-  33,51,96,71,119,105,87,99,202,23,243,233,115,8,114,220,77,157,9,166,237,102,236,29,
-  63,73,229,126,94,235,235,37,91,246,43,76,181,167,33,214,81,187,54,42,82,34,58,203,
-  171,151,139,173,101,143,135,137,104,90,152,44,214,3,160,182,58,163,207,155,247,234,6,34,
-  91,0,247,0,246,207,239,252,52,164,171,151,181,76,14,161,86,143,41,94,212,169,41,242,
-  98,126,236,40,36,122,56,20,10,170,163,232,227,120,109,240,93,199,186,35,133,13,250,184,
-  116,202,83,219,87,158,24,147,197,125,163,4,179,226,56,122,35,12,60,203,25,100,45,90,
-  21,218,216,161,199,203,213,45,193,229,91,168,174,155,117,70,247,161,85,147,91,151,237,244,
-  174,195,190,151,57,227,175,200,16,164,219,216,97,40,24,50,83,131,208,89,253,187,76,115,
-  118,164,115,155,252,173,147,152,82,108,181,143,249,236,244,31,136,162,86,88,120,195,167,42,
-  77,248,119,89,14,0,214,26,137,147,153,121,42,30,37,128,230,24,111,99,254,67,43,140,
-  29,217,4,24,42,235,186,253,126,117,223,1,77,29,131,102,133,212,240,191,154,245,219,163,
-  10,179,203,50,121,172,175,205,33,25,7,60,139,172,236,124,147,132,120,188,111,137,240,201,
-  46,56,208,234,255,27,2,238,134,171,152,185,236,54,33,78,161,46,203,72,8,31,153,203,
-  188,67,159,4,177,41,86,122,115,58,253,61,131,215,64,160,134,8,249,84,109,255,218,61,
-  183,34,120,51,173,219,178,241,162,221,159,115,146,85,106,70,175,125,101,168,60,207,121,227,
-  114,183,128,168,1,243,214,146,215,128,174,23,0,2,4,9,12,10,14,14,20,20,42,42,
-  46,36,54,46,42,17,21,13,66,64,83,38,16,187,46,223,111,5,89,216,237,112,31,61,
-  221,65,41,246,31,85,53,160,251,187,124,88,69,36,129,207,71,199,190,187,123,111,245,105,
-  88,54,126,221,156,204,60,228,37,3,254,157,151,161,24,235,24,221,137,131,72,213,198,167,
-  249,59,63,2,147,202,206,112,67,14,209,81,38,224,182,225,141,208,183,33,184,249,72,34,
-  150,180,134,228,150,17,23,53,238,209,67,39,213,204,38,186,56,163,54,182,235,146,196,60,
-  10,9,184,36,82,72,210,54,194,45,131,189,77,186,255,217,104,186,7,224,172,169,96,81,
-  138,188,217,221,116,218,151,102,178,43,80,8,138,223,189,152,172,177,238,214,161,43,70,45,
-  175,233,82,203,67,78,0,230,251,170,136,119,135,249,212,201,219,243,104,203,186,144,47,184,
-  62,63,24,221,174,150,117,83,234,59,230,108,230,58,202,145,227,119,184,15,19,204,78,220,
-  156,245,238,60,29,127,106,23,238,183,101,241,167,109,240,154,126,83,24,4,78,9,186,223,
-  145,47,156,132,77,194,90,22,78,129,13,112,227,22,226,215,188,169,49,6,91,219,54,239,
-  73,116,168,254,210,100,228,31,87,37,213,106,27,178,153,163,47,123,92,12,13,61,110,156,
-  204,177,196,103,246,56,60,84,163,160,16,89,197,107,138,22,204,95,173,185,251,245,226,23,
-  190,46,227,114,240,124,156,11,3,83,109,103,6,202,107,44,22,85,183,130,56,99,223,98,
-  107,163,214,87,48,151,199,208,219,125,110,96,222,136,222,209,134,129,131,138,143,126,32,70,
-  245,114,92,203,138,224,184,29,212,171,219,251,84,216,70,94,212,173,83,193,80,86,72,178,
-  95,69,150,100,188,108,158,1,156,142,19,14,70,143,152,32,120,143,130,130,191,183,133,11,
-  156,105,243,187,168,164,66,206,214,47,48,126,47,142,76,194,38,200,234,74,212,142,81,87,
-  225,38,180,120,95,42,77,165,83,170,129,158,84,109,229,205,215,182,177,103,77,194,25,48,
-  253,47,203,118,155,55,55,233,3,120,254,247,68,157,152,140,102,41,248,212,156,238,113,110,
-  111,215,88,91,142,66,50,36,24,170,188,195,125,69,55,196,49,163,29,113,70,159,157,11,
-  88,238,55,147,157,44,156,64,112,5,105,107,170,167,21,86,41,168,91,205,165,92,51,163,
-  248,72,22,0,1,1,8,10,11,13,13,14,16,14,13,14,42,45,38,67,62,66,70,71,
-  78,30,16,223,37,70,42,91,52,206,125,194,69,240,228,73,54,206,172,251,71,47,232,234,
-  193,139,111,237,46,145,44,30,230,196,162,178,196,120,243,193,76,151,53,97,237,126,230,254,
-  147,16,36,85,14,5,72,28,13,120,178,166,223,79,228,193,216,97,183,165,253,87,227,112,
-  83,182,198,254,57,116,40,54,27,228,231,109,60,37,66,2,223,193,140,73,50,11,226,139,
-  87,118,50,150,9,205,16,177,199,185,120,112,74,134,33,58,205,107,135,96,84,237,67,184,
-  86,135,185,101,130,125,42,17,230,181,209,243,197,31,142,230,255,188,9,107,198,134,120,169,
-  203,163,99,192,213,100,217,31,71,11,190,200,63,176,142,232,142,88,181,158,24,154,73,209,
-  216,53,21,127,241,207,226,250,78,20,45,134,14,36,228,247,224,111,124,243,15,53,81,226,
-  60,192,239,175,208,249,149,59,122,222,39,184,108,0,176,90,77,101,29,25,39,116,189,175,
-  159,187,141,162,70,224,213,90,49,191,175,92,141,175,175,165,50,156,110,219,246,140,113,39,
-  125,233,112,84,34,21,118,226,139,170,29,156,57,102,225,227,128,188,228,55,180,59,55,35,
-  154,193,205,17,8,96,131,96,102,239,112,88,238,202,183,1,50,132,51,122,147,89,175,107,
-  16,159,43,49,84,77,75,160,193,56,14,138,253,92,9,102,30,111,86,149,184,169,72,176,
-  218,4,85,223,100,157,80,2,234,233,163,218,91,16,188,50,23,2,67,150,11,202,53,205,
-  215,227,113,236,242,194,134,178,118,142,178,23,166,249,57,110,69,181,175,216,104,177,44,193,
-  238,224,117,54,114,163,158,0,169,83,142,205,58,242,95,74,14,99,31,114,168,17,9,31,
-  80,136,118,80,145,100,85,0,86,210,164,110,171,166,134,203,196,55,8,26,149,129,100,97,
-  227,69,119,122,20,172,85,46,126,41,246,218,83,188,96,11,235,148,92,179,232,124,104,174,
-  160,236,51,210,253,216,253,139,33,165,235,150,108,75,130,45,52,18,188,184,225,236,226,231,
-  167,166,81,176,129,81,107,82,22,32,93,24,120,39,65,99,71,109,60,68,79,3,27,88,
-  185,241,85,202,255,0,133,150,154,189,35,58,218,106,211,235,205,98,230,182,46,54,197,129,
-  95,135,104,122,26,161,225,188,60,84,228,133,72,71,85,170,199,23,0,6,10,21,18,14,
-  13,70,75,71,21,19,42,53,54,32,63,58,56,6,5,10,11,15,247,111,182,142,167,96,
-  8,116,73,184,117,144,128,151,211,159,240,239,114,75,67,135,51,135,247,63,223,183,120,235,
-  111,232,183,8,119,10,89,250,112,83,131,147,221,247,151,190,98,61,4,10,118,172,239,53,
-  237,219,92,244,155,60,147,9,125,131,52,107,177,147,102,159,179,190,236,4,58,151,207,14,
-  180,231,236,60,154,103,77,251,89,193,8,113,130,216,30,70,233,66,55,107,169,248,110,27,
-  44,167,107,246,14,38,198,197,187,220,59,166,189,255,140,232,43,68,243,165,117,47,232,128,
-  209,156,23,170,250,60,59,73,120,76,7,150,61,8,21,72,177,254,18,106,7,173,27,138,
-  123,144,227,19,165,127,75,144,55,8,241,139,14,158,223,83,33,219,128,57,97,10,239,126,
-  239,130,235,137,120,137,145,223,188,57,43,250,111,246,89,226,212,136,32,81,139,84,133,176,
-  192,86,136,249,200,149,215,15,149,224,2,136,228,12,129,230,94,38,32,131,114,44,54,248,
-  215,23,242,165,230,177,126,68,229,26,221,36,229,229,25,124,216,44,7,109,155,244,30,216,
-  76,232,116,30,33,30,31,56,10,104,223,183,50,185,98,136,87,138,162,151,80,100,106,27,
-  201,150,49,158,193,254,92,9,106,91,73,173,1,12,73,225,116,58,35,12,204,168,84,24,
-  230,139,183,124,92,0,54,150,184,76,14,47,182,125,74,139,167,132,181,183,18,159,161,106,
-  196,28,168,1,155,105,107,67,153,58,118,34,229,99,98,158,57,237,208,132,238,77,188,188,
-  240,163,187,102,35,28,114,44,36,141,92,111,93,185,39,52,141,216,243,112,204,208,190,34,
-  61,2,185,244,31,3,24,207,83,147,216,84,190,201,38,186,79,109,46,253,23,242,229,243,
-  112,172,24,134,18,133,27,57,184,244,31,174,119,207,80,246,137,98,39,49,115,10,174,147,
-  52,41,120,240,247,14,236,121,198,65,118,242,111,91,147,245,196,80,122,76,134,114,213,45,
-  68,208,30,201,12,218,9,179,192,19,190,25,212,101,207,241,13,245,139,224,6,161,249,173,
-  161,35,94,93,179,186,48,102,189,69,95,36,6,213,18,17,178,2,195,44,252,93,202,102,
-  137,61,74,112,45,29,170,88,6,32,233,0,224,128,22,0,4,11,18,22,14,12,11,38,
-  48,45,39,29,64,50,49,14,6,17,58,72,63,29,3,148,5,107,205,126,137,233,21,247,
-  221,127,209,76,167,178,220,249,210,155,30,175,133,109,58,87,49,233,225,107,77,183,242,198,
-  195,249,7,176,75,200,199,109,21,195,189,212,158,242,184,232,83,225,190,142,176,78,0,213,
-  240,155,5,56,117,122,190,51,26,114,29,124,255,1,173,134,232,113,106,14,167,147,155,24,
-  132,3,26,205,233,74,201,0,110,58,181,70,227,134,178,37,247,10,134,210,16,251,175,158,
-  2,67,213,184,121,176,183,24,1,12,45,242,158,0,144,128,83,162,97,8,68,229,169,21,
-  0,162,75,167,102,65,165,194,70,133,83,132,125,228,198,44,5,249,107,216,227,219,90,36,
-  192,36,17,232,104,172,206,36,77,50,26,189,213,7,36,16,249,193,212,20,244,142,154,75,
-  163,40,153,71,79,8,36,118,160,3,145,110,53,182,21,213,85,179,103,20,246,201,138,5,
-  80,8,161,147,38,115,204,148,187,165,105,231,168,27,242,165,58,35,229,111,91,24,43,210,
-  204,206,103,4,56,199,117,203,170,34,181,121,246,194,60,83,210,55,232,161,10,22,252,167,
-  161,112,78,47,96,33,153,65,245,144,97,151,41,47,241,179,149,149,148,246,199,23,157,51,
-  175,77,20,94,83,28,237,32,246,71,202,145,42,224,137,207,54,245,50,77,57,47,31,152,
-  243,238,40,216,119,19,187,37,32,174,132,39,141,168,135,254,58,211,202,189,90,142,213,83,
-  28,150,189,169,97,79,245,133,160,27,104,123,236,196,135,92,88,200,239,125,161,175,41,179,
-  95,0,80,208,134,3,163,76,204,237,160,17,63,27,159,222,254,94,138,8,125,36,74,237,
-  47,116,250,59,249,14,212,253,112,30,91,238,64,194,14,154,225,150,210,10,32,129,18,49,
-  232,71,110,2,205,189,54,8,22,202,124,103,199,1,246,26,81,66,233,69,156,45,187,14,
-  79,40,109,221,96,182,129,168,98,47,147,243,95,15,194,215,188,92,77,149,91,229,219,85,
-  153,171,20,75,179,7,170,183,60,114,247,122,91,50,251,110,202,129,44,186,124,105,26,209,
-  181,69,81,6,42,50,94,40,133,250,86,99,231,140,4,9,102,30,186,88,74,216,118,219,
-  125,111,10,0,53,234,237,143,119,159,160,35,153,236,39,82,6,171,220,1,3,147,242,243,
-  184,139,2,206,131,111,229,113,95,150,181,242,60,79,250,37,179,69,215,133,81,113,214,79,
-  81,190,229,175,22,0,1,4,11,14,20,19,26,28,35,34,26,47,64,65,40,28,34,69,
-  58,53,31,30,3,143,119,143,96,97,125,227,52,224,214,183,101,102,125,224,119,141,238,62,
-  72,228,190,202,241,66,238,143,251,32,39,44,41,130,124,208,118,127,109,154,10,41,161,158,
-  77,85,101,203,63,174,195,102,193,204,120,71,169,104,190,118,208,29,178,23,38,33,222,2,
-  116,42,190,99,237,111,33,14,251,132,92,51,21,192,10,171,137,88,157,193,7,126,136,217,
-  86,175,216,208,227,4,116,49,255,171,246,253,194,65,162,26,62,41,251,150,147,109,183,121,
-  233,191,188,154,18,71,191,100,177,63,144,19,170,48,121,173,83,251,112,249,108,185,108,157,
-  106,69,3,70,183,53,87,193,144,166,110,247,85,157,86,241,29,255,21,69,10,96,45,51,
-  189,211,165,16,34,113,45,207,22,237,6,215,208,163,20,125,35,27,131,88,30,130,42,222,
-  216,225,164,98,71,146,60,215,208,225,188,100,39,190,57,37,168,161,109,240,7,82,196,31,
-  201,52,122,146,166,199,48,70,214,145,39,3,177,168,89,102,183,63,35,156,22,90,74,49,
-  16,81,57,63,82,88,84,167,98,213,166,71,109,105,45,249,247,156,224,192,81,91,240,168,
-  231,242,214,19,15,161,19,237,127,183,84,250,51,83,150,246,117,227,172,147,23,140,153,166,
-  14,23,69,187,205,152,208,188,192,12,1,16,57,170,148,156,29,214,192,160,248,133,110,160,
-  249,186,44,12,138,172,204,237,89,55,196,65,13,149,155,156,175,8,245,75,52,196,129,235,
-  138,126,147,163,42,70,3,15,140,216,209,255,118,98,62,203,71,184,240,145,122,249,64,238,
-  136,153,130,186,78,164,107,195,148,77,175,58,67,192,191,111,176,78,169,147,93,207,1,98,
-  37,230,106,224,42,229,153,228,126,192,230,65,172,168,119,80,243,95,83,135,114,29,69,193,
-  230,173,112,67,104,254,157,9,73,110,213,108,204,250,157,156,69,193,27,3,155,35,36,196,
-  185,221,236,211,251,39,57,225,246,86,201,125,211,54,147,31,18,141,19,123,179,220,108,69,
-  104,167,89,70,198,101,254,32,59,206,15,81,138,87,150,228,204,230,81,132,194,20,27,117,
-  213,104,0,93,21,206,138,192,141,110,0,190,173,99,178,18,0,6,6,9,13,19,26,22,
-  18,12,7,7,9,13,75,72,77,16,73,98,252,176,123,238,8,60,114,160,70,196,219,1,
-  166,138,177,253,245,17,50,81,40,45,164,2,128,25,143,100,35,237,7,197,104,52,170,217,
-  184,197,16,208,126,81,177,41,147,35,88,248,239,194,78,92,32,202,58,99,90,182,152,113,
-  195,177,1,162,131,14,15,224,189,27,15,32,165,247,217,112,231,139,107,249,174,121,183,252,
-  238,103,246,195,56,188,230,199,57,16,7,109,194,11,212,128,255,77,10,205,40,124,98,5,
-  93,31,133,146,15,144,141,3,147,227,254,159,1,175,198,143,170,21,11,158,192,94,112,218,
-  92,223,41,166,115,39,238,188,224,236,163,147,5,244,43,159,204,191,75,48,219,24,223,130,
-  179,89,11,250,171,178,197,247,132,11,183,197,235,35,3,65,28,193,255,64,199,72,68,157,
-  191,174,135,113,97,152,215,92,193,187,142,11,31,194,210,136,167,104,239,104,177,168,29,96,
-  181,164,62,93,199,225,151,60,135,35,26,107,246,25,94,121,42,38,221,145,97,83,92,236,
-  133,193,25,238,158,37,45,255,138,42,184,158,165,157,212,15,144,72,130,236,141,167,127,99,
-  78,172,16,190,173,8,28,126,74,200,136,138,206,173,217,207,120,55,20,33,191,189,188,2,
-  66,18,242,155,87,84,96,56,255,164,147,184,130,184,38,119,96,118,112,176,106,100,36,49,
-  252,27,23,45,244,180,40,43,94,204,127,51,145,239,102,154,92,87,93,232,73,88,198,245,
-  190,43,39,124,157,19,214,120,197,22,7,102,226,119,16,103,112,198,94,226,179,46,104,93,
-  49,0,157,71,198,207,42,246,239,182,241,116,151,211,224,21,96,138,52,214,88,117,219,227,
-  148,47,216,172,224,64,149,95,253,150,130,57,136,117,205,16,236,7,67,11,136,30,192,35,
-  9,111,105,211,166,5,21,191,147,35,117,242,67,69,18,20,107,215,207,135,122,15,166,113,
-  42,160,211,101,114,142,19,17,0,3,8,17,19,13,12,15,73,69,73,16,17,12,36,50,
-  47,29,71,191,9,146,163,137,37,239,134,180,100,179,167,5,125,203,110,226,146,65,70,38,
-  246,25,242,32,213,170,18,18,62,135,237,232,249,141,83,185,36,204,235,151,33,101,97,56,
-  249,54,48,120,117,203,172,126,45,76,109,255,37,239,209,131,67,193,221,151,36,28,174,246,
-  101,210,69,66,87,120,241,51,74,36,197,175,182,219,225,141,55,162,168,159,78,137,83,13,
-  52,215,216,34,107,194,211,32,202,147,107,234,255,89,222,114,7,248,123,231,22,250,26,143,
-  112,133,244,48,134,228,190,247,5,77,145,193,1,35,32,40,238,121,37,174,29,187,133,101,
-  167,11,237,145,174,9,212,253,8,95,175,225,56,105,233,108,146,77,221,204,242,141,165,138,
-  33,110,94,118,203,55,225,208,41,162,16,18,255,109,158,251,103,217,160,157,225,1,234,140,
-  66,15,114,202,84,61,124,143,182,243,181,1,175,34,127,75,225,177,162,37,242,141,210,22,
-  194,226,69,231,207,223,250,16,156,172,37,151,86,84,247,41,254,54,108,208,160,62,200,19,
-  203,158,79,224,168,133,151,187,3,33,46,98,46,2,208,148,204,107,225,129,233,151,25,196,
-  34,154,11,250,67,109,194,143,25,127,177,51,233,8,248,159,153,115,27,25,168,201,251,199,
-  35,40,5,83,31,239,192,87,14,33,220,50,142,76,92,125,37,144,24,178,189,114,232,168,
-  34,79,95,221,17,241,2,230,107,42,5,8,84,131,94,81,136,83,137,216,144,92,125,243,
-  189,103,144,178,131,6,5,85,192,85,143,191,44,61,230,172,208,54,31,85,62,11,86,29,
-  238,228,136,218,217,147,254,25,54,203,90,230,205,194,213,186,113,1,223,59,138,27,233,226,
-  187,193,22,21,65,178,58,119,36,144,219,45,25,144,82,254,94,222,69,14,38,128,84,75,
-  51,97,240,221,40,48,107,8,227,16,73,207,86,54,47,0,233,149,190,135,195,226,72,158,
-  54,111,129,71,34,20,253,223,116,246,255,134,60,93,117,10,239,82,254,232,41,155,82,244,
-  21,0,1,3,14,17,17,14,16,27,47,72,80,64,49,26,67,63,64,15,5,8,31,13,
-  167,117,180,71,238,248,36,200,172,151,174,109,128,27,22,221,46,72,119,204,111,4,35,165,
-  75,171,91,102,154,81,76,82,207,153,79,15,92,39,184,232,11,235,56,250,49,184,167,75,
-  50,89,95,78,136,103,245,148,5,81,243,42,101,127,164,134,97,98,95,215,217,56,199,222,
-  216,75,112,171,107,176,159,62,144,124,153,50,61,83,167,173,97,19,67,150,155,233,219,219,
-  75,91,208,128,15,134,171,119,142,137,102,254,11,96,55,224,48,82,181,222,242,179,119,234,
-  161,78,68,9,247,140,7,108,96,171,247,44,243,62,95,57,132,114,195,6,217,73,206,224,
-  57,29,3,185,222,137,230,161,188,14,109,158,207,197,23,28,84,214,130,162,15,53,3,24,
-  16,180,228,180,59,18,105,203,32,2,124,83,154,190,254,116,49,76,41,43,238,188,64,84,
-  50,236,248,199,27,62,51,2,51,91,156,93,16,97,57,210,103,198,68,226,215,161,191,119,
-  189,120,229,181,78,8,197,133,197,154,241,139,34,67,54,155,142,167,150,109,234,169,227,184,
-  1,226,96,89,63,252,150,124,248,150,194,77,173,159,147,111,35,191,141,148,244,16,218,238,
-  224,23,251,249,130,217,60,171,70,13,38,3,174,221,24,250,113,215,252,204,127,167,16,24,
-  70,220,200,199,112,245,235,153,75,137,190,200,69,248,138,175,163,1,209,227,73,151,119,218,
-  211,130,42,39,203,102,125,201,234,198,13,49,216,108,215,101,163,88,96,202,98,251,111,168,
-  51,158,2,17,242,210,100,162,8,146,183,217,242,235,72,6,231,7,86,205,254,186,1,105,
-  193,206,188,182,218,193,110,85,162,100,250,230,70,120,213,26,26,52,67,111,145,209,88,48,
-  152,4,7,233,222,175,76,86,252,40,154,234,8,109,255,178,55,2,66,20,188,72,227,227,
-  221,147,77,80,45,253,102,151,0,30,32,174,110,214,195,133,209,133,16,10,162,155,1,153,
-  221,84,152,165,125,241,253,133,62,227,235,178,157,236,165,157,66,17,225,177,40,161,225,8,
-  1,161,201,219,122,170,56,28,105,42,27,201,64,110,223,19,34,96,138,146,201,182,6,149,
-  68,235,114,67,218,225,92,208,222,107,175,213,125,148,195,204,64,169,102,176,43,9,209,21,
-  0,3,8,19,23,20,28,25,40,91,99,88,50,42,41,13,10,10,21,21,43,33,13,106,
-  187,130,138,169,205,4,169,60,38,57,115,65,118,17,255,87,60,190,106,167,224,164,52,248,
-  56,189,245,244,58,141,18,124,234,54,114,161,112,12,118,43,142,25,150,233,223,115,192,219,
-  254,164,179,156,193,26,146,49,127,94,131,85,50,102,154,216,120,77,101,209,183,141,123,66,
-  132,218,168,211,110,212,162,176,248,113,107,210,83,54,169,84,24,23,99,135,125,146,112,45,
-  163,243,196,236,193,15,242,89,127,163,58,176,7,186,1,44,235,36,130,40,225,107,125,5,
-  61,30,197,55,68,201,61,150,102,185,40,140,242,162,52,143,172,86,98,207,90,62,68,127,
-  40,148,202,118,25,221,254,155,9,198,133,4,181,36,102,20,19,63,188,95,14,227,108,91,
-  187,34,163,94,24,182,59,23,65,27,75,224,29,1,178,214,42,111,251,156,167,170,23,44,
-  25,124,90,135,34,65,107,220,165,63,74,153,55,254,176,149,34,179,175,161,183,104,165,82,
-  138,216,81,22,149,119,128,129,254,188,122,139,5,103,40,160,171,169,252,57,8,55,90,115,
-  241,26,191,110,231,9,244,47,99,198,106,93,250,193,43,254,244,79,191,70,30,221,150,232,
-  174,224,198,14,150,29,89,89,68,32,30,218,95,33,174,127,223,33,238,183,128,159,138,76,
-  1,154,250,116,226,58,113,80,164,201,68,218,136,223,227,6,246,208,69,43,9,138,127,194,
-  187,69,231,65,51,230,124,112,184,195,188,171,83,152,71,104,121,138,193,97,83,30,142,132,
-  217,185,19,34,84,124,245,161,252,125,93,183,138,105,213,20,134,2,183,58,56,40,21,194,
-  115,168,105,127,175,55,97,76,35,233,146,157,243,252,195,106,23,0,1,3,15,20,20,13,
-  15,72,74,87,25,23,41,43,63,25,23,3,6,6,48,54,57,253,134,254,141,254,176,50,
-  45,130,198,142,147,196,123,34,2,109,126,134,56,196,203,53,229,148,151,228,159,203,225,127,
-  42,53,227,151,242,220,248,148,233,1,232,35,32,102,167,227,215,138,209,181,91,18,184,10,
-  59,102,10,52,169,146,151,71,13,224,113,78,198,223,209,127,95,158,136,141,245,71,68,202,
-  152,131,98,80,124,77,219,216,156,41,120,140,18,18,220,49,209,53,7,73,136,181,35,190,
-  223,67,24,218,2,133,214,52,29,37,218,140,40,46,172,113,75,16,215,55,211,189,98,98,
-  149,38,88,245,123,113,236,161,24,12,94,164,67,118,194,46,43,187,33,106,3,55,39,119,
-  27,149,203,87,244,146,15,50,165,112,36,206,105,88,171,251,91,87,241,66,24,183,246,101,
-  159,2,84,52,34,223,178,206,205,214,202,31,62,97,112,220,66,0,87,9,173,196,127,89,
-  198,78,200,129,124,68,211,173,205,255,62,215,186,90,241,187,1,7,183,106,145,116,247,0,
-  44,70,220,236,148,16,63,56,116,12,233,238,41,84,14,54,219,62,215,184,212,201,99,53,
-  161,210,178,117,253,90,89,249,110,167,65,102,10,108,136,189,148,129,121,212,121,80,136,56,
-  81,103,72,229,54,163,138,247,83,220,94,210,47,158,191,191,96,224,251,176,27,239,118,162,
-  69,255,55,135,174,237,223,161,84,231,58,223,88,70,174,150,108,64,189,248,38,109,51,139,
-  42,199,41,252,164,17,197,33,221,191,70,140,54,29,52,230,181,140,48,213,72,54,15,144,
-  115,219,82,178,3,79,162,184,13,54,172,181,9,81,219,232,31,248,234,238,135,70,209,88,
-  104,149,57,83,159,152,83,108,224,12,129,169,71,109,206,4,243,85,37,200,108,184,57,135,
-  181,255,156,90,26,81,87,196,194,18,35,43,36,177,135,240,77,144,206,199,247,10,128,51,
-  209,11,240,109,242,122,16,164,47,93,229,121,21,0,1,1,7,9,10,8,6,4,7,7,
-  10,11,43,44,62,34,39,20,64,71,76,73,90,0,86,224,145,228,51,187,2,109,172,133,
-  115,67,95,122,26,129,40,92,64,227,2,2,53,209,138,177,210,33,146,125,120,134,30,139,
-  225,131,248,4,4,78,30,40,189,211,85,80,124,57,37,62,18,90,29,165,66,152,251,114,
-  200,171,29,95,220,27,189,103,142,204,100,123,156,103,98,162,134,23,220,242,196,42,129,73,
-  181,4,94,239,120,110,165,241,3,77,206,154,132,188,71,83,185,17,216,125,170,187,21,97,
-  9,4,157,215,235,234,101,220,3,99,149,243,169,192,110,158,102,81,77,34,5,158,216,134,
-  189,26,183,236,205,60,62,152,109,117,145,4,175,172,118,168,251,73,212,115,143,175,79,140,
-  78,59,230,81,226,178,250,136,165,65,64,196,183,88,87,25,175,8,252,52,82,248,47,201,
-  205,243,69,159,83,140,106,138,71,217,228,220,203,148,142,75,45,215,241,31,3,40,6,140,
-  189,90,167,3,226,119,170,101,241,148,71,168,26,231,91,153,45,191,149,119,221,20,72,104,
-  56,94,207,238,187,35,208,78,229,110,113,18,105,43,151,176,209,197,141,228,5,12,204,227,
-  149,158,66,135,151,54,81,92,35,103,252,32,34,159,55,36,203,155,128,133,123,23,226,170,
-  226,90,119,146,213,55,172,194,140,70,51,157,121,196,156,168,37,151,104,133,135,67,136,208,
-  77,197,225,233,138,169,168,133,237,154,93,197,155,230,229,232,81,91,249,252,27,46,30,20,
-  89,169,100,130,14,175,12,154,145,236,142,34,231,186,238,42,237,130,144,212,153,3,26,146,
-  142,11,21,64,153,95,27,102,141,114,89,87,158,180,209,69,112,142,253,247,69,178,200,78,
-  144,217,76,251,10,247,10,163,10,108,50,187,228,38,72,202,127,116,7,170,153,128,108,237,
-  56,64,209,115,83,88,244,153,144,70,124,215,164,251,102,9,28,43,114,205,52,212,109,106,
-  176,105,119,151,35,173,240,7,66,209,80,80,156,74,190,2,84,32,29,1,153,151,124,86,
-  144,113,192,247,0,216,234,109,6,81,204,33,128,30,132,140,141,221,198,197,249,76,66,123,
-  192,99,131,140,16,126,73,48,142,114,86,12,212,251,123,19,126,6,56,110,88,69,248,74,
-  189,64,190,26,5,109,223,167,79,10,248,17,150,69,164,24,86,87,75,229,226,93,134,82,
-  10,155,85,249,107,101,119,49,40,155,2,72,16,158,29,18,104,147,154,222,105,84,11,168,
-  212,121,50,32,27,221,121,133,248,123,85,234,186,232,195,175,226,20,145,24,25,23,0,4,
-  8,17,22,22,23,17,17,19,25,20,33,30,34,24,54,60,59,26,66,69,67,22,248,138,
-  254,141,245,195,133,207,23,166,21,100,203,171,2,103,37,9,8,97,62,151,68,52,250,108,
-  5,99,171,186,186,186,206,128,235,89,19,7,69,232,115,93,217,174,229,108,12,36,0,12,
-  88,30,165,148,228,24,221,87,136,87,16,75,50,174,100,171,97,244,235,141,61,132,203,103,
-  52,198,18,245,177,170,13,62,164,76,180,164,211,62,217,234,137,25,226,104,50,245,106,14,
-  204,107,95,191,78,15,142,234,237,58,172,122,247,134,243,66,182,251,43,47,17,53,247,81,
-  116,57,228,252,26,98,98,84,69,155,254,127,35,45,18,83,14,213,161,50,62,206,49,248,
-  155,58,10,42,131,1,122,124,61,203,255,4,7,68,111,245,89,247,187,54,248,206,9,178,
-  44,171,115,12,183,65,113,177,129,44,5,5,142,26,19,208,199,208,81,185,52,134,230,119,
-  129,236,25,86,246,72,226,68,238,254,220,120,45,207,245,171,32,116,206,235,208,6,19,140,
-  189,222,9,218,87,78,248,236,73,19,78,65,250,166,158,153,78,212,58,123,153,231,173,40,
-  47,99,103,169,188,57,3,56,20,86,74,211,250,101,220,161,105,160,192,74,140,160,171,189,
-  103,133,184,74,29,49,74,251,56,103,71,222,156,67,147,115,163,178,1,60,65,158,222,187,
-  79,179,92,109,152,169,52,243,62,215,106,205,104,192,17,239,91,96,166,141,88,63,181,87,
-  207,211,63,170,28,86,61,206,198,100,161,123,15,9,168,96,32,248,32,227,195,46,61,112,
-  118,233,174,153,255,24,94,29,122,240,240,107,144,11,107,160,66,93,184,250,67,17,197,106,
-  57,123,150,143,214,245,217,87,233,68,32,203,183,159,197,171,8,87,213,228,220,160,69,127,
-  6,161,47,239,70,198,147,135,244,15,163,144,129,47,51,130,19,236,16,235,87,94,18,99,
-  94,30,132,170,158,141,79,110,236,47,109,50,88,26,85,206,228,162,141,179,194,60,232,6,
-  37,137,84,46,137,78,220,92,249,12,150,251,42,174,169,126,212,76,215,134,75,97,26,41,
-  142,111,246,188,74,39,9,184,242,43,63,237,163,11,159,5,81,114,24,175,80,193,13,177,
-  202,228,185,249,197,3,90,52,12,252,30,218,44,31,172,103,19,187,105,42,146,219,156,124,
-  124,100,112,153,58,98,241,122,167,70,114,115,58,13,16,108,55,84,206,207,239,8,251,87,
-  17,61,186,21,85,125,137,146,226,167,23,0,4,6,20,19,21,15,48,59,68,34,16,48,
-  58,59,24,13,12,56,60,67,14,11,9,247,112,188,130,139,130,7,26,116,25,104,26,248,
-  175,87,243,200,169,35,101,194,70,199,158,212,204,224,250,236,51,198,159,127,82,228,89,9,
-  172,171,211,64,181,36,33,242,214,7,94,168,249,205,33,170,138,167,80,104,18,43,114,138,
-  220,223,246,26,62,242,181,206,247,104,19,223,197,155,194,167,122,234,82,161,122,183,225,234,
-  38,144,72,178,138,53,96,154,188,251,83,25,139,72,219,4,175,60,64,234,85,252,35,146,
-  225,159,36,74,125,85,135,248,132,165,6,133,3,241,162,97,109,183,214,208,14,202,220,112,
-  248,241,118,30,173,183,36,38,114,220,15,216,132,15,169,26,34,162,61,146,79,34,99,67,
-  69,120,86,188,143,86,53,14,186,100,127,148,65,216,151,84,236,18,10,138,189,87,12,139,
-  176,253,77,89,90,159,255,94,107,30,195,143,123,191,249,15,248,5,27,94,157,165,85,128,
-  66,244,77,86,172,188,125,43,152,40,124,24,141,81,252,184,162,176,8,52,255,213,134,118,
-  231,210,163,49,120,146,115,226,205,186,191,217,241,1,213,44,121,66,203,179,11,212,165,57,
-  208,45,158,133,132,231,184,114,142,72,199,239,129,70,121,7,107,175,14,27,126,64,18,250,
-  66,173,233,14,124,55,148,217,181,122,80,23,131,18,83,40,192,166,5,83,191,83,47,81,
-  103,88,30,4,13,230,66,166,79,199,161,63,43,144,37,114,0,124,240,173,92,183,90,62,
-  248,210,60,70,107,62,196,189,163,169,103,84,75,131,102,63,163,206,62,197,125,175,126,84,
-  211,43,30,20,244,196,50,133,42,153,141,104,194,62,101,42,114,196,202,221,25,125,120,103,
-  248,252,32,114,248,206,127,198,125,62,122,238,249,170,11,254,159,90,209,37,121,74,205,138,
-  241,29,8,246,41,192,153,246,248,102,162,52,189,14,115,201,187,251,17,50,73,213,249,20,
-  243,11,119,51,254,255,147,176,102,12,39,2,180,90,94,126,72,178,86,90,200,75,83,94,
-  102,219,158,46,52,122,131,215,141,95,141,148,212,49,207,72,10,150,174,10,90,57,204,48,
-  153,176,190,236,137,181,62,236,147,137,98,89,170,234,192,207,19,24,230,201,158,180,30,215,
-  90,147,239,80,16,46,119,132,216,171,26,194,3,46,122,225,105,47,238,85,160,216,21,112,
-  103,181,83,186,19,197,205,58,13,33,173,195,194,105,62,98,25,184,152,12,57,163,136,75,
-  130,208,160,129,7,90,146,187,219,224,79,254,22,0,1,0,6,10,11,19,20,21,45,46,
-  52,22,30,80,81,124,78,73,16,4,8,7,243,212,235,11,3,45,7,5,165,66,24,8,
-  241,62,221,198,245,247,49,58,18,207,22,169,17,24,217,236,14,148,210,111,240,144,243,129,
-  10,182,42,75,164,123,157,166,109,95,54,109,226,57,74,46,87,47,35,233,97,232,10,224,
-  42,241,75,174,149,11,12,210,254,213,223,195,145,69,33,94,70,199,203,152,183,9,148,161,
-  78,251,198,218,15,60,25,96,106,105,95,116,206,245,179,146,124,42,99,185,138,254,159,199,
-  200,134,101,160,185,243,95,53,84,55,94,116,49,38,247,50,118,105,144,211,50,207,93,81,
-  26,73,114,253,139,0,225,138,147,75,83,209,32,59,152,253,73,27,122,165,174,94,126,43,
-  142,135,238,220,163,182,82,239,75,238,196,75,86,128,223,177,115,78,35,208,68,172,131,122,
-  247,5,130,104,123,8,77,129,133,221,153,185,245,106,9,235,95,9,172,53,92,1,67,141,
-  156,164,113,51,124,173,53,39,163,150,246,48,172,229,25,187,92,148,117,138,188,62,186,144,
-  26,35,37,162,199,178,227,249,24,56,33,213,37,165,118,235,205,180,108,30,119,239,245,229,
-  253,66,88,4,121,5,39,80,60,61,191,196,12,78,139,54,195,57,155,31,67,166,247,252,
-  62,175,186,174,184,148,144,149,139,12,2,176,175,4,50,55,255,67,223,60,107,116,84,112,
-  26,172,27,235,20,235,119,107,112,212,200,7,177,6,234,223,207,194,145,170,112,244,176,17,
-  49,119,157,126,84,180,239,3,52,100,49,48,21,246,214,111,83,91,61,244,144,226,67,7,
-  141,129,250,186,106,99,122,28,100,114,143,131,134,91,141,103,247,1,164,190,204,47,230,69,
-  108,85,145,8,68,128,122,173,214,237,9,123,241,2,134,219,148,82,203,103,217,111,255,237,
-  208,138,207,104,30,108,212,225,132,58,190,194,108,50,61,84,28,12,188,174,50,231,206,0,
-  227,18,148,145,163,230,245,156,167,173,122,147,163,11,202,199,242,249,6,20,4,101,165,173,
-  141,26,180,116,142,91,30,144,238,44,106,224,191,242,252,220,25,147,9,217,173,59,253,179,
-  238,71,53,59,253,219,45,20,87,73,105,66,111,241,44,27,70,88,49,246,68,124,108,47,
-  213,230,47,100,56,65,244,196,36,4,123,7,242,69,113,148,175,49,162,220,86,194,248,237,
-  16,199,8,0,1,15,20,20,12,94,103,141,150,19,61,66,71,155,129,44,185,238,175,156,
-  175,21,116,16,6,237,171,227,59,145,195,182,210,122,57,51,199,115,96,180,136,205,119,67,
-  17,114,133,82,142,191,143,234,212,21,176,82,223,135,142,81,81,67,182,217,118,17,202,135,
-  146,30,198,232,118,81,141,191,240,106,103,58,236,94,170,103,131,86,42,73,234,126,146,166,
-  112,167,112,56,252,205,217,154,14,185,90,121,59,50,46,119,82,4,253,211,169,130,175,23,
-  67,221,147,130,104,144,125,215,190,116,152,86,11,121,37,202,250,2,35,50,129,36,204,143,
-  90,52,69,213,235,239,143,52,69,194,10,185,156,194,196,66,178,49,188,232,106,126,7,68,
-  34,239,122,55,83,49,202,165,52,248,203,220,243,140,236,137,231,57,130,48,94,228,100,108,
-  104,23,244,127,147,103,201,250,178,16,244,46,167,235,80,153,193,228,3,107,91,125,207,231,
-  140,207,153,46,140,38,218,46,133,140,126,129,27,128,78,58,150,24,86,29,243,135,94,106,
-  237,51,159,253,35,13,194,82,46,230,79,144,191,70,180,211,104,198,82,133,188,155,97,189,
-  231,34,239,237,129,65,66,252,70,200,78,103,189,57,188,227,84,110,202,239,23,137,111,98,
-  217,62,209,139,95,244,171,14,82,104,121,3,150,121,41,65,214,14,157,20,242,173,139,4,
-  54,207,202,74,66,191,58,200,116,132,63,114,134,30,97,100,254,142,25,71,191,254,144,249,
-  156,196,45,77,78,108,79,246,255,112,244,100,14,156,74,197,65,209,189,134,136,138,100,157,
-  194,13,166,201,254,168,76,14,0,71,209,27,255,72,153,2,160,206,121,222,203,43,19,153,
-  152,134,74,9,243,45,227,58,165,150,158,92,3,29,46,170,141,182,69,111,143,199,180,28,
-  94,230,107,129,250,84,191,202,75,202,52,9,145,41,1,215,7,186,116,30,75,211,174,89,
-  161,173,170,166,57,146,177,246,203,229,64,22,241,11,252,182,107,32,28,92,218,69,233,68,
-  98,151,27,246,161,14,107,86,94,102,89,205,186,81,90,27,177,76,193,240,119,43,222,249,
-  15,61,225,150,107,75,215,95,138,135,129,231,3,0,1,79,91,45,174,104,215,220,236,120,
-  2,166,97,78,147,143,237,61,14,102,235,199,149,27,151,62,200,231,119,90,6,172,237,19,
-  0,57,65,79,24,15,5,8,9,12,10,9,7,5,32,34,35,7,55,55,119,241,87,203,
-  70,242,132,135,13,233,171,11,162,41,208,173,110,199,245,101,177,168,70,153,177,11,20,92,
-  77,108,7,101,113,88,67,93,245,158,158,236,15,9,147,120,127,130,4,176,246,68,147,81,
-  161,1,102,103,68,224,193,9,6,198,222,136,132,102,63,60,31,103,228,4,35,117,132,244,
-  152,123,36,1,223,208,186,67,221,233,172,52,98,84,137,178,103,190,55,161,28,37,79,139,
-  146,51,124,44,35,82,44,192,223,188,59,180,19,185,248,120,122,145,163,224,190,119,130,99,
-  35,6,191,112,41,5,150,123,32,157,79,248,252,21,212,198,112,83,231,135,3,249,57,234,
-  176,215,178,11,201,74,208,179,220,122,60,237,114,77,181,83,194,0,172,69,167,116,16,214,
-  73,2,106,126,200,14,123,97,118,62,61,252,80,188,128,214,161,211,96,106,84,167,99,1,
-  5,96,180,218,93,139,237,72,244,82,174,120,176,48,109,105,161,90,255,106,201,112,141,20,
-  39,210,154,84,63,243,174,157,241,123,44,37,168,245,163,99,74,233,122,154,209,118,17,203,
-  25,201,224,158,50,234,216,53,96,71,244,16,119,43,87,197,82,169,205,166,147,13,232,202,
-  43,222,159,48,22,109,207,79,119,140,24,157,201,89,47,67,121,251,8,255,13,86,157,135,
-  198,32,158,54,122,117,68,61,110,13,73,7,235,237,186,167,12,44,172,142,200,82,82,227,
-  148,111,225,50,190,193,191,113,132,253,218,203,180,111,119,48,49,14,92,142,149,223,109,234,
-  251,101,40,7,85,193,235,246,195,115,97,85,128,112,105,206,19,213,120,219,154,164,121,102,
-  172,21,103,73,14,7,237,97,13,112,210,144,200,204,167,239,166,31,186,251,15,47,42,103,
-  82,76,121,62,140,101,122,43,105,107,155,84,58,164,224,13,71,230,101,127,11,198,181,184,
-  21,250,81,71,182,26,78,13,96,69,15,54,204,195,247,112,90,23,103,209,133,29,175,127,
-  178,140,107,193,165,61,81,168,86,11,218,189,49,69,108,26,213,91,68,234,106,7,25,87,
-  60,142,27,227,157,217,141,1,253,17,60,178,18,69,247,241,245,204,133,0,70,188,164,135,
-  121,171,48,191,192,152,88,27,37,215,91,209,132,104,5,250,140,132,43,71,48,231,153,228,
-  41,188,202,173,126,96,4,141,61,65,25,178,0,132,142,109,142,211,58,162,121,150,79,219,
-  176,174,154,28,147,180,114,129,61,28,18,164,54,232,198,136,130,56,132,215,144,225,15,150,
-  236,16,0,17,17,19,5,5,5,3,25,48,62,65,43,58,33,36,7,114,43,158,14,189,
-  238,73,176,202,59,145,75,66,239,77,29,235,145,46,127,42,10,160,33,99,105,240,94,181,
-  165,67,84,241,107,117,36,229,172,87,218,58,142,136,167,238,179,117,129,26,148,38,40,74,
-  78,155,145,191,42,121,91,75,235,120,33,144,127,110,218,203,171,75,26,98,219,124,48,199,
-  8,73,131,22,121,209,36,168,238,119,75,55,76,56,142,122,114,48,81,27,108,153,230,78,
-  180,166,96,234,106,22,135,192,124,71,95,52,253,73,10,215,199,234,166,164,200,66,51,184,
-  3,138,85,54,102,200,109,223,134,117,63,8,253,0,206,122,68,189,34,161,0,111,80,125,
-  23,9,122,195,252,56,43,106,182,9,24,174,74,228,232,255,242,225,66,157,0,13,0,1,
-  72,77,90,30,32,19,6,3,101,101,101,4,52,116,212,61,43,41,62,10,210,120,52,69,
-  239,159,176,183,154,90,54,196,107,152,197,203,16,17,237,189,209,142,96,137,0,167,227,25,
-  240,217,159,192,218,110,92,252,145,161,210,148,114,252,248,41,72,241,54,82,37,6,200,17,
-  79,102,91,212,179,63,38,50,70,167,214,125,252,140,210,27,237,142,86,213,45,34,191,13,
-  37,80,185,35,190,38,222,102,26,238,232,3,143,250,61,68,142,177,205,92,168,173,10,212,
-  111,143,224,144,185,185,225,126,187,236,151,102,11,186,109,68,226,226,23,181,192,180,90,180,
-  133,113,226,70,125,110,106,163,42,65,174,140,103,8,41,133,214,196,111,247,57,89,52,162,
-  156,124,239,171,52,252,234,43,26,39,182,174,73,163,219,55,75,88,193,197,65,63,87,191,
-  70,52,145,7,219,46,30,220,249,166,158,200,53,100,4,156,125,193,190,248,65,128,35,194,
-  167,11,187,43,255,255,236,4,41,198,0,19,0,1,17,21,27,37,59,63,45,34,33,42,
-  56,50,32,9,26,29,61,41,54,150,128,255,178,100,46,220,186,122,133,118,209,255,90,96,
-  153,243,132,249,142,46,94,146,27,9,119,97,20,130,142,78,180,236,159,84,191,191,9,246,
-  176,40,34,171,48,91,0,12,163,50,94,74,170,28,208,191,235,69,129,169,93,233,57,23,
-  86,48,28,4,215,209,114,214,158,59,117,115,51,64,123,39,101,141,11,63,88,210,7,191,
-  169,8,169,145,221,98,23,255,138,215,106,44,212,53,172,146,80,192,137,75,69,12,183,212,
-  25,72,30,165,228,206,1,33,204,232,27,158,159,178,26,49,131,163,139,245,43,200,8,227,
-  170,231,215,177,216,188,44,229,237,7,141,186,159,42,60,227,34,225,5,145,130,221,172,209,
-  248,49,64,144,118,99,48,94,231,198,224,90,237,18,134,31,114,197,15,179,113,240,140,40,
-  10,42,25,118,140,144,141,212,185,5,104,20,11,7,188,215,110,128,128,61,140,180,177,201,
-  61,143,254,221,149,179,28,92,150,183,242,122,54,30,99,139,214,179,79,28,103,251,147,55,
-  7,235,51,5,93,34,79,204,151,37,255,244,27,173,217,36,57,63,206,233,200,5,46,11,
-  77,211,4,206,29,224,163,38,71,238,194,234,141,160,80,249,25,148,10,101,187,142,108,48,
-  159,116,130,34,93,140,161,195,190,45,28,164,176,153,226,181,22,5,28,135,210,46,125,57,
-  56,130,72,114,204,70,187,216,22,253,254,243,182,74,196,242,23,255,115,115,70,43,33,143,
-  170,164,38,4,168,65,4,251,236,188,223,138,68,111,127,239,16,0,1,19,28,79,61,63,
-  13,21,33,51,68,52,35,35,64,62,54,134,160,239,177,123,121,85,180,205,150,227,27,146,
-  196,202,246,144,141,215,77,78,16,30,146,34,84,50,94,2,39,148,251,133,167,162,252,234,
-  43,27,146,72,57,35,111,239,155,120,236,205,92,21,209,162,45,236,200,9,38,221,10,11,
-  155,188,129,43,47,121,74,107,62,175,4,190,37,178,163,150,247,14,119,213,92,8,140,106,
-  61,72,236,55,203,38,77,83,41,58,239,216,91,16,17,113,78,21,0,3,1,5,3,3,
-  3,3,3,3,3,3,3,3,22,22,28,12,12,17,18,17,200,18,231,27,43,156,133,104,
-  156,1,247,226,17,65,211,138,69,68,104,185,133,147,109,227,46,135,101,246,16,39,130,217,
-  76,216,123,43,28,208,37,216,106,26,223,89,246,13,79,162,150,106,20,215,19,151,166,186,
-  98,7,210,120,177,187,15,48,177,123,196,3,45,107,108,220,79,10,40,119,211,90,215,52,
-  193,218,243,170,160,191,113,19,39,163,110,18,241,202,46,219,122,7,223,159,15,188,80,151,
-  216,124,131,29,241,92,75,188,124,204,130,124,234,36,92,106,8,241,179,71,173,84,102,199,
-  196,43,162,85,135,6,3,194,19,23,188,124,149,95,134,121,207,220,50,246,55,21,38,65,
-  63,102,20,36,131,139,94,127,102,200,124,180,152,156,202,24,157,215,223,132,31,26,251,242,
-  246,63,28,20,4,121,238,184,21,60,135,217,42,78,173,191,3,0,215,190,151,185,110,210,
-  100,220,125,177,26,52,46,137,80,189,39,211,101,246,139,176,6,120,55,124,181,30,232,21,
-  18,24,118,211,197,173,116,229,78,126,177,51,47,206,59,160,77,74,205,77,175,78,84,3,
-  252,228,74,139,202,141,72,44,149,210,166,41,231,65,217,157,104,31,185,130,60,156,15,241,
-  138,103,85,113,179,217,99,69,77,134,107,183,133,126,80,80,192,6,188,199,170,74,208,151,
-  239,176,197,153,213,200,91,41,61,130,34,251,225,53,130,37,52,204,28,103,216,239,100,183,
-  198,52,183,226,180,244,220,231,121,220,200,46,216,43,135,187,211,249,224,34,77,160,192,137,
-  140,29,124,15,25,148,131,124,234,209,10,230,55,87,15,20,231,114,127,38,180,239,172,157,
-  134,75,43,153,51,115,134,74,245,178,217,160,236,170,90,236,43,30,243,63,165,129,201,168,
-  218,60,92,25,65,124,251,39,16,7,239,193,96,20,41,171,20,222,224,108,167,47,118,180,
-  30,226,1,51,29,47,222,36,240,179,153,1,18,152,119,111,101,64,0,68,66,14,157,143,
-  23,72,82,124,50,118,91,242,158,177,194,110,232,238,80,29,148,69,18,191,139,83,117,18,
-  68,222,61,236,219,228,241,230,228,174,74,164,211,192,51,173,126,195,22,80,46,230,23,172,
-  78,191,77,2,155,200,234,168,129,8,30,86,236,61,186,232,102,202,39,80,134,36,233,226,
-  250,93,73,242,33,176,244,19,33,192,248,20,147,195,3,144,110,128,77,168,26,200,6,150,
-  154,77,184,159,220,158,204,156,95,36,204,235,60,252,92,158,186,153,199,51,103,233,230,98,
-  9,90,176,83,185,65,111,139,107,129,159,19,81,101,147,168,36,213,16,237,46,12,167,211,
-  232,134,165,172,159,169,249,169,157,47,131,95,17,84,242,114,102,167,179,35,243,235,198,24,
-  216,32,112,90,4,167,161,138,56,98,37,91,229,15,169,201,38,71,95,1,230,48,29,131,
-  87,212,219,71,178,252,191,120,136,29,139,152,33,131,20,47,57,63,89,251,0,20,209,208,
-  177,157,56,238,15,54,65,16,86,133,1,158,99,116,244,222,67,212,31,124,78,191,227,215,
-  202,189,184,218,76,213,240,148,152,82,140,50,107,96,194,165,228,139,134,142,98,77,209,5,
-  36,41,12,112,240,238,227,48,48,122,253,59,130,123,107,213,216,13,110,35,26,178,176,151,
-  8,108,171,31,96,148,36,8,0,29,29,31,8,8,8,3,36,232,215,85,113,246,93,117,
-  27,32,116,163,244,230,174,151,75,212,151,119,68,36,72,190,246,5,49,83,12,25,22,51,
-  27,15,184,17,196,123,161,74,2,168,49,236,32,10,75,191,22,117,11,224,128,57,161,216,
-  200,237,35,97,5,46,246,144,98,80,6,135,60,243,184,242,56,33,1,100,126,46,44,147,
-  167,36,6,87,78,15,21,25,144,245,9,218,46,187,200,218,19,0,32,38,42,17,9,10,
-  4,4,3,9,9,9,7,13,13,69,122,140,79,61,60,108,151,191,78,212,2,238,81,121,
-  69,94,151,169,31,244,97,255,68,228,18,73,97,251,137,96,178,21,152,56,215,167,163,252,
-  27,57,67,23,75,19,35,86,4,117,179,185,239,102,96,21,47,25,209,145,116,123,78,38,
-  226,245,241,252,254,93,21,79,43,216,246,65,157,77,252,102,155,60,3,69,149,124,241,171,
-  103,155,168,223,20,198,53,194,177,114,95,124,227,170,132,5,175,151,165,10,155,164,208,192,
-  111,142,33,219,4,67,142,62,7,200,9,159,29,74,36,240,176,57,88,45,55,30,115,81,
-  78,101,128,236,123,160,246,129,47,43,155,119,81,46,0,120,154,254,52,57,157,237,124,108,
-  144,149,89,64,236,169,93,162,181,149,70,28,216,127,58,144,126,169,115,253,142,197,187,216,
-  173,111,41,113,133,181,160,218,109,252,139,190,215,147,6,0,25,70,74,90,47,72,172,136,
-  104,255,255,118,8,116,210,165,172,59,97,154,163,228,201,97,65,199,102,204,206,58,65,225,
-  72,149,152,17,78,144,100,58,130,89,19,128,153,152,143,142,52,3,148,213,34,252,249,154,
-  226,119,4,39,34,205,174,91,123,245,131,91,65,8,93,19,53,68,239,35,45,137,111,7,
-  0,169,169,174,14,12,11,4,103,70,63,255,255,117,235,71,47,17,177,62,247,242,176,215,
-  113,244,126,250,249,130,53,160,212,154,35,136,113,83,68,162,32,118,138,133,244,247,50,147,
-  242,45,193,8,43,216,210,81,142,243,33,49,93,139,4,142,230,57,179,17,14,243,136,85,
-  196,240,22,35,202,101,165,165,221,65,183,127,19,217,8,0,109,109,112,102,102,101,3,3,
-  58,41,35,255,255,186,243,215,251,171,93,200,101,56,132,225,129,247,188,106,166,43,9,172,
-  103,123,252,126,159,205,138,84,172,120,183,27,216,60,178,157,74,60,19,75,38,247,107,40,
-  156,0,242,6,204,122,32,40,89,136,104,25,48,169,138,108,228,88,83,240,220,129,22,239,
-  70,242,58,231,41,2,17,234,201,114,66,117,108,95,188,255,189,202,55,211,3,0,91,160,
-  245,228,93,5,255,254,236,144,94,36,2,178,158,157,40,99,235,172,160,133,236,0,130,78,
-  230,58,124,218,191,38,211,96,226,208,22,34,130,228,111,211,30,158,140,80,249,87,231,246,
-  235,158,72,21,0,33,31,44,18,27,26,27,20,15,10,9,6,10,16,44,44,87,59,54,
-  4,9,61,151,230,205,93,170,109,136,225,148,0,252,81,153,35,41,81,201,146,182,87,7,
-  156,241,9,24,43,151,83,244,50,160,112,154,91,97,108,144,188,138,64,117,236,248,89,210,
-  134,45,78,154,116,62,116,137,93,248,232,198,89,20,17,64,250,15,33,252,34,214,141,42,
-  176,73,151,114,171,207,209,222,84,81,41,70,193,145,26,68,206,185,159,86,67,239,15,215,
-  103,255,246,190,94,104,132,121,124,8,117,63,195,33,164,129,66,125,25,128,0,146,41,82,
-  212,187,222,234,71,178,123,229,44,51,221,101,253,219,173,79,190,41,218,141,56,149,26,84,
-  43,248,87,244,64,43,236,28,77,147,207,70,44,120,49,235,222,208,137,178,66,151,30,229,
-  132,68,41,25,19,41,176,188,108,207,212,57,146,6,72,122,141,211,107,151,227,249,66,238,
-  246,148,190,166,173,156,12,114,133,44,171,83,71,231,64,136,107,208,179,190,10,55,20,0,
-  23,45,116,25,170,96,136,38,54,86,250,167,201,35,224,23,201,97,160,251,235,61,91,138,
-  205,200,69,176,228,131,134,17,15,240,147,98,191,173,45,248,10,37,154,138,34,63,109,125,
-  36,22,192,40,10,178,96,102,254,188,20,222,18,50,157,75,167,236,100,9,54,151,40,130,
-  198,3,85,223,94,167,156,209,167,34,146,20,94,136,248,59,65,95,102,225,17,63,103,196,
-  243,161,174,67,109,2,197,32,178,11,209,62,206,238,226,4,76,57,210,201,173,137,213,61,
-  198,106,172,255,199,7,4,161,171,234,239,168,29,94,111,80,143,136,22,174,152,87,6,14,
-  36,59,215,211,146,58,9,200,129,216,177,31,64,55,0,62,55,251,147,247,236,18,143,120,
-  102,217,236,85,7,128,38,136,205,36,110,105,17,164,207,18,240,38,35,135,82,86,96,43,
-  153,145,8,132,92,206,49,237,229,209,239,210,98,44,163,133,95,230,226,160,1,182,161,40,
-  135,63,222,9,219,228,62,180,138,57,241,249,216,34,10,53,186,157,182,125,66,110,17,147,
-  126,5,71,25,18,198,240,135,185,250,109,205,241,149,208,35,42,215,251,42,98,109,81,161,
-  175,88,161,218,55,245,48,87,114,3,19,248,146,70,64,15,75,125,233,199,104,181,201,216,
-  169,88,106,200,238,97,11,236,232,173,113,119,42,23,48,103,170,212,117,156,26,143,0,244,
-  247,84,169,126,243,214,92,135,151,202,108,225,160,105,163,211,27,229,206,244,224,90,78,95,
-  129,175,24,125,217,173,27,187,83,201,145,125,49,39,176,65,166,241,181,204,40,73,82,40,
-  67,110,170,81,31,203,29,249,38,134,53,146,109,221,118,113,229,11,4,11,42,141,208,220,
-  214,56,24,245,236,130,48,0,1,0,173,126,255,78,245,221,215,8,68,101,1,18,187,128,
-  245,129,226,45,236,93,30,95,102,63,18,2,239,35,202,167,47,111,58,52,230,143,47,1,
-  99,41,106,135,89,53,116,23,127,176,235,1,0,173,126,255,78,245,221,215,17,88,160,57,
-  178,8,128,19,37,59,60,105,20,189,223,199,7,194,141,243,40,255,249,110,97,81,65,193,
-  185,112,98,168,175,157,194,169,86,111,154,124,67,220,154,206,1,0,173,126,255,78,245,212,
-  111,248,73,245,135,79,109,62,215,150,7,121,246,23,252,196,117,243,114,142,47,131,39,169,
-  146,188,69,197,237,79,9,5,200,133,43,240,147,138,23,252,59,212,140,242,71,192,186,189,
-  1,0,173,126,255,78,245,221,208,26,169,241,235,234,215,3,184,55,204,35,6,249,253,135,
-  94,71,47,1,35,91,249,198,39,154,70,147,63,33,51,45,152,228,109,31,164,220,32,73,
-  28,135,99,203,65,209,245,234,47,46,112,76,212,79,0,1,0,173,126,255,78,245,221,208,
-  26,169,234,38,80,175,174,70,33,213,106,210,9,148,174,127,172,129,31,97,96,54,112,18,
-  60,224,197,243,210,11,220,39,64,243,185,182,255,128,45,43,3,20,150,102,36,185,184,226,
-  183,231,250,141,70,27,241,52,238,255,1,0,173,126,255,78,245,221,215,24,141,195,15,16,
-  228,244,63,50,67,230,248,81,252,0,168,238,222,204,245,51,180,71,27,202,68,136,110,252,
-  116,212,91,69,166,130,178,116,206,41,155,32,101,198,223,65,113,179,125,186,64,173,220,183,
-  42,146,160,241,1,0,173,126,255,78,245,221,208,19,186,53,109,120,55,190,91,82,88,246,
-  152,124,0,152,187,241,23,72,42,194,234,171,23,40,253,197,141,223,51,99,252,169,254,53,
-  226,43,65,148,32,226,217,31,88,188,9,5,196,85,4,163,248,252,175,101,56,247,168,89,
-  86,94,78,224,23,35,157,1,0,173,126,255,78,245,221,208,19,186,64,224,250,210,39,107,
-  203,181,23,80,181,174,87,51,184,188,110,88,128,10,249,224,10,231,175,40,53,241,28,202,
-  235,110,32,204,179,69,74,22,191,81,40,222,253,27,146,126,192,67,193,245,59,222,159,145,
-  71,251,155,81,151,13,181,8,131,97,38,52,19,146,1,0,173,126,255,78,245,212,117,235,
-  108,213,135,160,59,33,33,118,225,91,26,46,18,251,125,26,168,186,153,77,159,218,128,244,
-  85,224,27,63,120,69,245,245,43,246,51,155,148,123,107,40,106,230,73,227,140,219,68,180,
-  0,212,143,54,221,69,130,208,97,208,188,57,103,252,116,102,65,188,170,87,229,155,49,151,
-  31,162,58,121,23,0,58,85,100,64,39,36,30,33,32,20,12,7,13,13,15,17,38,51,
-  40,25,9,11,4,13,1,253,255,109,135,232,8,78,37,6,38,186,82,253,85,178,155,82,
-  246,129,18,211,99,154,115,195,154,54,27,200,236,220,171,199,34,163,40,87,187,185,119,222,
-  164,74,225,223,24,203,253,204,30,88,150,162,252,31,193,110,157,136,70,21,164,114,158,192,
-  54,183,149,164,75,113,1,143,200,24,135,216,239,175,68,56,75,65,46,110,41,104,28,232,
-  161,95,243,11,17,6,134,145,48,25,191,51,77,155,88,195,191,50,108,169,39,1,23,89,
-  40,174,250,99,129,177,30,16,30,79,50,137,147,19,165,194,252,228,156,133,178,225,191,231,
-  106,245,210,73,147,222,61,82,115,182,89,99,159,49,194,2,3,143,0,135,89,26,162,233,
-  102,128,17,64,151,231,53,160,163,98,247,79,158,114,116,180,153,43,81,165,184,105,201,185,
-  83,248,89,18,61,85,73,149,213,151,1,55,24,208,213,92,175,79,82,4,183,24,230,149,
-  255,192,44,114,0,194,215,43,240,230,117,5,249,3,14,121,67,191,98,54,30,66,15,152,
-  53,104,21,221,130,183,133,48,95,16,94,243,227,111,34,97,16,119,147,231,189,79,142,87,
-  223,155,85,209,248,104,125,33,36,223,212,108,217,139,4,199,98,2,34,213,240,128,182,56,
-  234,208,239,73,211,81,216,22,4,15,131,218,33,34,23,203,249,83,190,117,64,62,208,213,
-  221,178,13,72,136,255,248,122,142,213,116,180,227,54,50,98,116,163,211,117,64,224,90,215,
-  235,241,16,83,101,53,127,18,65,202,9,247,118,168,219,151,88,124,212,64,5,166,250,191,
-  78,119,23,204,202,55,68,74,114,112,157,39,154,175,249,132,64,59,10,161,199,191,188,6,
-  15,56,197,104,150,115,252,231,236,36,241,92,48,125,143,163,150,62,142,118,222,146,40,51,
-  211,191,116,195,181,87,1,42,147,14,219,220,185,5,94,234,237,29,73,244,223,13,173,20,
-  0,56,92,114,65,37,34,44,36,24,8,7,13,13,16,39,47,48,26,20,15,13,1,253,
-  255,91,81,31,235,116,117,48,58,2,172,33,175,206,153,249,5,204,101,81,187,212,78,129,
-  103,49,60,80,47,48,186,77,241,62,115,140,126,50,202,230,118,31,153,234,43,199,168,124,
-  133,212,82,228,47,193,87,8,236,255,183,254,232,209,167,11,115,92,100,211,4,191,111,209,
-  163,91,244,248,235,237,254,80,19,179,92,87,57,91,138,187,69,77,35,19,13,122,113,84,
-  112,7,15,41,172,183,3,236,87,199,136,106,111,11,131,153,84,11,27,25,189,253,10,64,
-  81,253,217,246,252,221,167,186,19,222,82,19,55,48,173,177,252,148,197,56,164,100,133,248,
-  31,56,172,157,126,59,52,156,125,1,187,37,247,255,122,0,137,52,177,100,185,74,177,84,
-  249,102,14,110,21,197,85,226,217,35,73,211,201,205,243,160,231,38,71,217,182,220,226,34,
-  240,25,38,119,234,51,244,196,47,136,214,242,129,142,6,212,220,174,8,51,243,140,130,132,
-  236,131,98,107,232,46,101,80,243,42,25,236,251,221,108,89,213,204,106,157,4,99,176,137,
-  165,147,186,5,135,1,141,60,79,196,76,252,88,154,0,3,5,198,77,112,238,57,159,105,
-  32,3,75,178,188,64,133,89,101,111,121,88,231,52,11,136,248,141,199,182,6,124,141,68,
-  1,227,106,112,216,227,220,155,37,53,130,227,56,232,75,57,144,39,126,156,90,199,102,38,
-  203,215,40,232,169,35,219,3,137,215,21,138,150,23,38,11,143,122,240,125,204,225,7,81,
-  240,210,7,6,227,110,225,246,9,163,163,144,181,87,143,57,194,86,159,12,69,86,87,127,
-  119,237,175,60,218,96,51,204,106,92,31,92,169,157,28,98,57,33,30,225,207,254,231,135,
-  4,91,22,254,32,35,214,191,80,44,186,99,42,166,247,163,145,115,157,212,63,200,1,86,
-  16,255,116,115,202,227,99,34,232,231,203,156,22,0,44,79,105,69,39,21,19,20,22,33,
-  32,27,23,17,29,22,29,24,28,31,25,15,13,1,253,255,91,150,73,245,146,130,178,154,
-  35,40,164,247,151,216,255,253,16,203,66,178,25,144,41,178,182,110,75,54,56,67,0,9,
-  247,224,10,37,148,20,209,98,170,207,116,89,37,235,25,178,10,232,78,111,226,5,108,248,
-  156,147,222,235,36,235,36,78,236,248,197,225,146,227,70,163,113,239,145,182,255,151,72,19,
-  112,93,119,213,150,153,129,207,59,203,85,202,197,53,219,170,174,109,213,111,239,7,66,167,
-  206,228,158,235,52,184,4,211,26,103,115,49,60,123,215,74,87,58,146,154,209,154,197,192,
-  187,151,72,221,182,253,12,40,13,76,41,69,180,71,249,176,179,125,147,148,242,229,177,87,
-  68,169,41,93,99,250,52,56,91,205,105,249,135,136,87,221,150,51,200,149,32,40,157,17,
-  118,73,35,87,211,157,141,182,89,69,23,195,216,104,184,164,227,54,22,33,210,99,173,203,
-  85,199,38,33,164,120,100,107,104,142,43,38,254,134,8,82,65,23,172,48,243,219,33,7,
-  163,169,57,65,12,255,153,73,17,217,39,109,194,15,164,0,42,189,218,117,185,172,143,14,
-  36,247,167,181,254,114,149,114,48,7,35,79,182,25,24,47,195,98,113,60,136,90,108,193,
-  155,235,104,228,131,197,158,75,125,14,19,126,244,101,210,122,31,225,103,50,53,106,121,113,
-  163,145,206,67,228,90,102,181,186,171,193,180,24,169,144,182,55,165,1,150,214,155,202,75,
-  187,142,45,81,36,190,13,48,130,29,145,33,213,240,118,3,199,32,125,14,132,137,151,132,
-  126,64,211,116,201,185,52,170,99,178,45,254,115,187,56,57,81,135,75,110,151,167,246,85,
-  23,136,105,142,63,133,197,2,12,165,166,97,200,60,69,21,28,0,241,82,220,35,146,85,
-  7,1,221,108,210,171,116,26,123,199,114,105,111,42,228,182,220,89,1,0,173,126,255,78,
-  246,107,72,139,184,80,33,190,71,151,148,88,225,223,101,253,153,128,227,201,132,33,160,16,
-  146,30,22,27,98,152,124,119,235,92,106,204,248,155,176,26,108,14,62,111,183,135,3,27,
-  1,0,245,126,255,6,245,221,215,8,68,101,1,19,150,154,225,172,93,209,42,82,100,137,
-  170,37,200,225,130,28,73,254,135,184,203,95,201,221,223,20,178,224,12,218,103,17,184,107,
-  1,0,245,126,255,6,245,221,215,17,88,160,65,33,139,140,74,97,254,8,232,6,150,176,
-  100,154,246,97,10,190,37,44,70,46,150,126,188,157,236,250,125,252,74,209,167,208,134,28,
-  71,111,149,1,0,245,126,255,6,245,212,111,248,73,245,135,241,148,155,15,46,62,156,60,
-  175,35,236,153,158,42,234,195,173,18,110,248,233,78,239,117,18,100,201,179,214,120,241,89,
-  17,49,235,229,127,36,187,123,227,1,0,245,126,255,6,245,221,208,26,169,241,235,237,18,
-  242,141,134,202,22,74,108,100,180,112,46,20,13,149,27,240,168,47,124,85,114,188,142,191,
-  150,214,150,228,56,60,129,124,98,208,69,55,115,149,8,43,9,48,179,165,84,52,1,0,
-  245,126,255,6,245,221,208,26,169,234,38,80,246,77,107,202,119,73,196,255,146,29,182,211,
-  231,54,17,192,206,142,120,176,77,33,135,233,245,118,50,128,251,92,150,15,69,8,230,242,
-  31,105,38,93,193,145,71,143,63,189,186,9,129,119,80,1,0,245,126,255,6,245,221,215,
-  24,141,208,160,95,41,95,48,56,214,253,136,110,225,254,171,83,106,199,251,214,0,33,61,
-  249,19,27,141,23,230,202,126,229,35,139,57,115,120,197,224,13,20,202,106,230,111,150,73,
-  67,204,73,17,155,196,87,156,1,0,245,126,255,6,245,221,208,19,186,53,109,121,38,55,
-  26,192,99,81,17,241,182,174,138,112,154,201,44,102,15,73,16,112,220,225,30,126,195,48,
-  8,75,156,250,38,171,250,69,212,30,83,4,105,87,38,155,226,20,240,119,88,204,181,154,
-  12,193,83,160,237,99,107,42,245,201,254,1,0,245,126,255,6,245,221,208,19,186,64,224,
-  255,159,45,8,5,185,14,124,116,208,112,109,111,144,126,190,234,164,85,208,154,91,88,86,
-  254,164,55,195,207,184,166,193,58,131,197,5,164,155,240,187,203,109,18,216,37,219,201,4,
-  133,59,226,63,159,40,96,238,28,251,38,133,238,130,180,193,131,1,0,245,126,255,6,245,
-  212,117,235,108,213,135,160,59,91,69,116,6,31,70,153,120,203,174,143,233,82,145,105,241,
-  176,76,249,209,81,189,232,28,170,190,104,112,166,228,147,56,213,148,182,134,28,242,111,57,
-  58,13,82,122,51,24,5,143,66,121,222,232,62,206,181,45,145,233,225,174,13,70,170,92,
-  106,70,234,204,189,23,0,26,53,86,95,71,49,35,32,35,20,18,30,25,27,7,14,16,
-  15,8,13,21,22,17,20,9,255,255,112,30,213,19,245,77,181,61,149,149,82,112,84,169,
-  254,108,212,162,123,109,31,62,31,94,58,11,96,140,71,187,250,230,150,231,171,107,17,53,
-  91,66,110,40,216,227,94,186,10,77,191,149,76,39,166,216,164,196,75,194,84,54,35,240,
-  117,182,48,127,247,191,95,207,0,152,205,70,127,237,33,114,49,45,124,242,108,130,28,27,
-  22,210,189,77,151,244,114,94,147,82,85,209,229,52,227,106,38,220,181,107,78,86,240,70,
-  241,46,68,202,246,73,61,27,176,182,130,26,102,90,75,214,89,214,164,129,255,16,229,9,
-  174,208,13,197,196,66,56,175,137,4,85,175,115,238,49,18,213,84,208,94,208,236,103,250,
-  146,188,132,50,63,29,194,16,13,103,72,83,54,101,66,205,123,35,192,172,252,127,98,37,
-  28,174,230,215,206,134,134,114,186,4,54,55,61,97,40,147,54,100,168,13,26,2,114,170,
-  77,221,88,128,105,69,18,39,176,121,61,91,48,52,191,191,43,104,252,89,219,113,105,146,
-  28,100,28,233,87,90,229,139,196,195,247,236,13,37,112,9,39,231,160,170,234,31,174,182,
-  213,49,164,95,205,255,146,236,84,30,149,92,27,83,146,146,218,154,198,53,44,236,5,165,
-  32,145,231,86,189,214,232,131,39,11,129,5,131,226,96,223,39,23,60,154,165,253,16,35,
-  161,18,99,152,193,181,24,140,167,158,144,54,242,29,4,94,4,128,112,108,194,127,79,134,
-  93,78,98,196,76,25,185,215,86,95,139,108,180,187,97,212,172,227,78,187,22,204,187,239,
-  19,89,220,110,188,189,157,50,54,22,50,69,254,232,190,241,240,100,148,225,200,121,213,82,
-  97,19,1,97,228,23,0,45,67,87,50,36,34,30,43,31,28,8,18,21,41,31,28,11,
-  21,21,21,15,22,20,26,9,255,255,94,234,121,233,67,143,241,229,74,67,53,206,86,8,
-  15,15,249,150,74,223,34,108,4,114,112,242,170,95,66,7,161,162,208,59,26,245,158,52,
-  49,198,64,39,23,13,34,14,250,38,191,212,19,45,22,71,205,180,54,180,120,236,187,225,
-  212,146,114,1,77,241,66,202,125,161,27,208,3,29,174,155,248,218,7,95,34,106,91,94,
-  98,79,15,137,98,37,92,229,54,133,231,163,233,233,119,234,37,199,80,89,147,172,40,43,
-  80,193,38,12,104,84,46,74,113,237,50,71,80,199,90,114,155,210,180,232,236,225,134,254,
-  7,20,94,69,119,221,186,231,253,244,105,101,36,92,155,206,224,180,246,88,69,32,106,91,
-  116,188,175,151,127,84,30,202,249,206,240,170,147,41,165,154,152,61,189,172,119,156,51,222,
-  11,162,174,95,41,213,3,54,103,122,133,50,238,171,21,56,104,177,101,184,17,97,2,243,
-  235,90,171,95,179,1,163,231,130,240,19,183,134,218,114,119,26,130,67,139,193,93,81,193,
-  232,222,41,246,193,152,253,1,148,230,225,207,242,189,215,29,53,197,7,51,18,157,246,153,
-  80,112,139,20,31,34,93,62,157,216,80,126,144,158,183,148,72,133,137,248,113,8,210,14,
-  69,172,23,246,89,71,60,165,80,13,248,0,157,231,18,200,125,241,231,158,80,216,181,66,
-  4,101,186,119,204,146,166,149,88,73,18,171,220,48,97,193,92,63,70,4,26,99,238,98,
-  68,243,116,173,184,9,78,140,134,99,104,111,248,2,137,148,96,208,236,17,221,22,53,161,
-  83,194,59,53,219,67,24,210,170,82,87,73,131,152,136,14,200,204,124,228,204,252,39,180,
-  161,197,40,30,172,150,56,195,190,57,35,23,235,128,128,111,98,168,21,30,54,106,78,121,
-  55,241,34,113,167,244,41,82,181,213,204,154,167,88,185,250,20,70,34,88,85,161,251,38,
-  223,213,170,196,133,29,50,171,103,0,243,38,65,246,91,152,192,22,0,2,25,57,106,88,
-  87,41,54,27,27,29,30,30,10,13,16,14,11,12,21,20,17,19,9,255,255,94,150,158,
-  144,32,162,132,139,46,56,97,158,30,173,219,33,219,190,132,130,186,215,252,134,12,221,157,
-  37,158,148,152,230,103,186,190,232,201,10,173,144,94,147,230,105,14,89,5,165,33,242,148,
-  133,106,13,51,78,184,99,121,42,223,86,228,188,205,29,202,184,208,8,187,81,171,92,51,
-  10,255,166,131,86,237,192,104,102,219,60,93,247,154,239,119,37,147,152,110,194,133,192,164,
-  252,234,5,20,178,88,148,234,76,50,191,18,26,194,156,169,213,198,202,161,246,87,45,164,
-  141,88,242,213,141,229,232,195,15,54,88,169,229,150,227,202,89,230,133,187,169,7,187,62,
-  84,81,230,229,89,181,52,226,183,86,11,224,137,184,77,69,183,84,36,103,109,152,209,46,
-  167,104,163,1,170,208,86,199,57,240,144,199,39,15,32,124,6,210,206,53,186,161,23,33,
-  22,107,234,211,122,44,241,200,38,199,22,43,84,179,153,119,56,102,62,133,74,35,23,20,
-  149,60,120,129,154,189,110,36,74,155,68,194,3,5,125,246,103,234,49,201,176,183,21,203,
-  183,209,183,22,14,192,102,227,108,188,214,135,216,32,145,67,166,57,79,172,60,23,222,153,
-  116,166,213,12,126,82,198,211,93,163,160,149,215,164,108,143,87,84,155,95,73,204,211,96,
-  86,220,131,255,128,195,178,11,119,136,198,228,93,145,180,122,139,207,124,220,149,222,158,175,
-  161,81,249,57,108,196,45,178,119,164,82,127,1,240,110,163,228,147,7,111,13,182,201,43,
-  16,213,8,113,182,217,121,89,62,20,29,62,215,25,23,134,30,16,219,74,202,23,52,12,
-  74,152,210,233,211,86,254,98,98,206,137,28,132,59,152,252,41,161,188,230,138,208,126,113,
-  149,56,207,226,245,94,128,187,189,124,107,120,85,22,11,176,30,14,254,210,142,135,149,237,
-  27,94,74,81,54,49,109,37,76,171,36,46,10,1,0,245,126,255,6,246,107,72,139,184,
-  80,33,190,71,152,34,181,180,159,35,117,130,138,232,191,179,236,135,126,123,103,150,118,91,
-  116,134,62,24,94,134,130,122,83,233,98,251,71,244,226,95,138,146,239,198,105,188,193,221,
-  1,0,159,126,255,92,245,221,215,8,68,101,1,19,150,167,100,19,43,18,154,186,213,31,
-  124,211,51,156,53,114,237,131,62,103,5,214,165,39,192,120,50,166,118,24,229,112,67,1,
-  0,159,126,255,92,245,221,215,17,88,160,65,33,212,220,116,117,216,89,27,37,44,17,135,
-  201,12,185,194,96,12,142,242,78,216,48,216,188,76,16,145,210,160,52,136,91,11,253,1,
-  0,159,126,255,92,245,212,111,248,73,245,135,241,166,35,146,245,34,102,115,152,124,151,1,
-  10,241,20,113,166,1,246,101,224,34,109,80,1,126,232,155,208,202,76,30,242,63,197,75,
-  41,0,1,0,159,126,255,92,245,221,208,26,169,241,235,237,19,17,52,44,167,162,73,105,
-  186,109,218,255,200,164,165,195,162,34,130,8,172,253,9,212,165,18,83,107,71,86,67,187,
-  70,167,194,104,162,49,27,96,73,232,1,0,159,126,255,92,245,221,208,26,169,234,38,80,
-  246,80,231,183,225,68,38,56,94,43,132,137,235,115,81,56,88,193,242,194,144,225,216,116,
-  10,255,181,11,123,199,47,143,19,143,51,145,35,87,159,212,229,21,47,244,32,1,0,159,
-  126,255,92,245,221,215,24,141,208,161,227,140,183,36,60,125,209,6,139,89,66,224,251,252,
-  102,41,169,95,64,130,166,154,90,22,172,25,61,54,131,146,90,30,80,203,225,129,96,45,
-  247,192,78,7,4,1,0,159,126,255,92,245,221,208,19,186,53,109,121,38,64,42,157,3,
-  137,232,163,155,5,252,147,107,241,38,77,234,147,88,36,178,72,85,40,106,244,139,141,151,
-  57,188,158,104,10,88,221,154,169,243,142,253,99,202,145,214,213,191,115,225,3,150,1,0,
-  159,126,255,92,245,221,208,19,186,64,224,255,159,98,57,90,174,58,140,194,239,185,226,139,
-  142,185,129,252,194,88,199,179,45,194,92,147,171,210,195,186,191,110,247,153,114,3,57,123,
-  9,122,13,2,169,137,205,10,110,76,102,104,38,238,213,90,32,1,0,159,126,255,92,245,
-  212,117,235,108,213,135,160,59,91,69,191,22,10,177,61,95,172,78,167,90,252,203,251,193,
-  83,34,218,57,189,43,34,176,24,9,202,77,144,216,121,104,144,173,84,96,89,65,251,97,
-  82,136,125,141,33,177,58,207,204,242,51,114,126,239,199,113,102,23,0,59,80,87,35,32,
-  39,35,20,20,19,16,11,11,13,20,22,26,41,48,46,25,24,16,20,1,253,255,110,5,
-  39,98,8,105,81,29,63,206,195,171,15,163,129,143,34,121,176,102,93,101,159,95,96,176,
-  250,32,27,238,229,254,91,244,175,136,13,89,41,91,208,252,64,158,223,191,2,255,82,121,
-  201,207,136,113,88,66,100,166,109,140,153,53,129,252,24,50,27,33,56,52,158,227,183,65,
-  105,182,108,214,66,20,70,230,102,248,14,242,31,190,104,17,24,219,49,174,13,102,91,243,
-  242,141,1,197,15,222,66,184,43,84,16,58,68,35,6,176,175,68,154,72,156,195,112,38,
-  119,213,20,132,30,15,38,180,240,242,250,20,243,91,160,68,121,23,9,58,239,162,45,229,
-  76,54,200,232,36,137,160,156,182,128,178,223,215,237,139,199,211,75,100,11,26,138,51,72,
-  15,207,13,164,186,141,235,66,200,178,70,182,45,117,39,31,146,38,72,4,14,3,2,239,
-  114,174,23,239,100,154,174,208,67,48,9,105,142,187,157,125,248,210,1,99,13,212,185,192,
-  127,92,137,48,133,228,142,76,91,249,92,116,151,157,205,103,34,8,122,10,132,73,195,45,
-  208,77,192,213,149,86,54,107,206,239,126,23,7,52,242,73,124,73,2,64,170,234,34,155,
-  162,237,27,252,14,179,143,209,46,105,18,226,121,174,213,115,61,181,89,168,154,48,58,68,
-  25,239,89,153,122,245,14,68,214,204,32,249,229,148,207,224,43,171,218,9,161,117,139,57,
-  221,196,189,26,108,25,89,88,45,218,251,249,23,165,80,163,89,123,244,22,26,89,87,128,
-  174,36,99,231,170,11,76,64,152,144,77,225,211,198,200,150,150,22,95,149,237,42,60,163,
-  249,160,156,70,165,35,73,155,131,52,163,205,50,245,27,243,7,90,107,243,58,142,55,225,
-  243,183,23,236,220,115,98,156,129,199,42,222,158,11,76,72,190,184,92,88,231,23,155,175,
-  125,21,91,201,147,237,128,67,215,125,113,72,184,147,185,40,37,9,55,57,236,56,121,233,
-  222,6,80,23,0,1,17,57,65,72,60,57,32,14,31,30,28,11,11,15,17,29,34,44,
-  35,36,27,23,19,1,253,255,91,239,119,154,242,136,69,186,118,112,188,236,78,85,196,85,
-  148,100,85,126,227,161,163,172,21,166,75,199,121,140,155,222,121,227,147,137,253,235,174,88,
-  5,31,112,231,166,113,229,58,179,192,247,90,29,181,235,216,195,106,93,40,109,34,230,48,
-  129,90,208,37,116,190,139,222,150,222,17,163,124,74,113,177,103,188,7,186,219,31,48,190,
-  242,15,112,191,137,176,207,238,230,91,101,36,189,113,135,7,98,47,202,90,183,88,95,90,
-  204,223,10,181,104,237,81,136,86,73,36,98,175,173,29,112,23,225,168,105,29,20,74,175,
-  11,32,123,199,216,75,142,193,28,24,56,101,107,150,10,26,105,175,3,84,246,7,91,94,
-  52,42,138,57,78,128,87,152,128,125,192,103,239,239,42,10,60,246,183,52,92,126,159,182,
-  197,18,121,139,220,20,52,57,34,186,239,110,43,72,168,7,101,177,228,58,83,53,177,138,
-  17,204,249,116,199,123,36,48,31,162,42,79,29,124,189,93,148,255,66,24,18,117,85,55,
-  124,117,130,228,251,91,105,126,147,56,247,191,62,246,242,125,194,247,199,11,27,89,24,245,
-  71,54,241,165,124,240,190,145,212,200,128,159,250,40,6,115,81,58,17,200,118,59,196,183,
-  166,224,26,16,93,158,11,231,134,219,43,92,137,130,134,202,177,186,219,133,193,93,188,55,
-  212,225,43,201,20,54,241,145,173,235,52,230,57,227,31,87,217,171,109,107,86,145,185,190,
-  197,48,189,224,67,119,40,123,43,163,245,175,165,130,57,114,32,218,154,47,148,176,182,37,
-  144,120,117,162,179,105,53,142,226,10,96,187,53,203,173,7,254,224,246,140,15,30,29,0,
-  218,97,135,207,112,189,160,101,202,213,148,15,156,252,58,77,28,128,237,239,237,222,209,15,
-  2,79,93,106,70,77,244,161,32,27,59,70,19,98,57,253,19,168,194,58,70,110,222,3,
-  156,114,202,212,81,43,20,0,67,69,121,59,57,11,30,31,33,22,22,30,36,46,36,21,
-  12,10,18,14,22,1,253,255,90,168,194,75,40,186,80,30,143,30,31,145,7,119,228,187,
-  234,136,96,8,90,51,142,38,162,8,22,43,252,148,179,60,61,157,25,21,119,8,187,176,
-  0,45,175,134,141,18,223,57,87,141,155,89,18,211,224,97,210,194,143,60,196,126,225,114,
-  79,232,118,178,32,191,198,66,249,39,185,209,29,133,33,195,174,214,6,85,132,119,195,245,
-  84,182,227,113,239,204,8,74,163,55,166,44,40,15,96,227,65,135,248,184,72,196,216,160,
-  15,81,247,84,40,87,183,178,125,114,226,176,255,63,61,172,67,84,255,17,128,254,101,228,
-  8,110,255,111,174,248,34,182,23,250,244,99,74,77,194,229,73,118,238,40,98,120,167,41,
-  223,72,51,164,178,116,159,155,135,138,150,123,24,229,10,132,28,66,182,58,201,38,120,113,
-  175,219,113,189,154,118,249,88,2,71,82,41,77,76,212,223,5,0,92,77,157,253,16,15,
-  190,147,120,67,33,9,219,255,197,15,193,1,250,194,206,244,18,230,26,12,66,146,216,231,
-  105,102,178,130,200,244,28,189,127,121,58,118,104,131,76,148,205,172,40,98,41,169,234,11,
-  118,4,176,148,157,94,240,62,140,30,253,241,16,83,130,153,37,99,95,222,141,167,252,6,
-  147,254,59,168,182,62,227,158,34,233,249,91,9,193,170,142,75,71,213,128,132,69,17,24,
-  167,39,35,237,65,201,37,10,174,39,62,62,50,181,42,91,189,101,54,199,99,14,35,201,
-  120,140,223,176,113,227,133,90,163,99,54,87,253,4,3,14,112,74,221,214,20,138,38,246,
-  111,133,83,131,109,6,57,145,240,127,247,141,41,5,192,186,204,46,170,139,80,124,211,159,
-  90,223,135,114,73,174,207,78,110,38,77,51,208,25,42,229,106,140,240,45,111,164,150,128,
-  1,142,123,240,151,193,204,76,113,228,132,40,217,62,108,61,189,144,206,98,12,51,70,1,
-  0,159,126,255,92,246,107,72,139,184,80,33,190,71,155,27,144,207,245,3,58,8,97,111,
-  247,120,27,62,211,103,41,54,184,125,85,247,82,252,221,249,34,175,133,219,107,146,23,231,
-  1,0,251,126,255,0,245,221,215,8,68,101,1,18,189,219,176,50,177,104,119,63,172,230,
-  194,62,220,9,124,218,108,11,66,167,135,73,134,108,109,230,147,188,71,188,89,14,249,181,
-  165,90,1,0,251,126,255,0,245,221,215,17,88,160,57,251,220,70,68,8,62,223,45,107,
-  231,78,115,237,125,173,190,206,43,143,121,174,127,196,253,216,53,240,1,220,46,76,113,50,
-  68,0,85,85,175,53,167,1,0,251,126,255,0,245,212,111,248,73,245,135,80,183,83,46,
-  31,82,117,137,222,63,95,146,44,223,10,206,114,210,65,210,66,109,64,66,110,138,158,79,
-  62,66,193,219,152,62,106,121,105,57,211,120,95,94,25,1,0,251,126,255,0,245,221,208,
-  26,169,241,235,234,244,158,159,134,156,254,162,174,86,182,32,91,145,122,161,206,87,127,28,
-  248,111,70,176,236,188,70,217,146,252,226,230,45,210,90,36,212,169,248,3,234,238,12,177,
-  86,240,187,30,182,1,0,251,126,255,0,245,221,208,26,169,234,38,80,176,143,110,253,128,
-  107,65,9,115,228,210,94,154,215,182,26,148,67,99,149,13,100,112,15,81,85,193,226,107,
-  210,17,82,30,222,100,27,122,245,189,182,237,238,86,132,249,139,238,90,117,143,180,110,155,
-  1,0,251,126,255,0,245,221,215,24,141,195,42,114,105,124,157,105,24,124,60,208,81,95,
-  48,116,172,187,11,193,136,45,177,132,146,198,169,9,76,80,27,73,133,16,200,196,151,211,
-  22,221,120,33,186,118,124,243,214,255,187,41,202,206,71,115,176,3,242,1,0,251,126,255,
-  0,245,221,208,19,186,53,109,120,58,173,163,202,242,0,52,130,13,119,2,101,158,61,154,
-  190,146,45,69,231,187,203,142,3,207,147,231,227,115,185,238,83,214,237,149,187,39,108,190,
-  244,123,196,184,162,90,168,187,228,155,228,158,67,23,149,100,53,196,195,81,124,175,106,51,
-  1,0,251,126,255,0,245,221,208,19,186,64,224,251,17,27,108,246,199,195,85,228,99,228,
-  131,32,3,75,128,147,2,38,121,198,133,185,125,64,131,206,109,223,76,61,171,64,61,68,
-  54,132,65,117,231,149,162,44,232,35,2,86,245,22,115,213,47,13,171,51,22,139,212,154,
-  78,250,3,80,166,107,209,51,1,0,251,126,255,0,245,212,117,235,108,213,135,160,59,33,
-  144,163,2,234,5,30,254,174,18,181,233,14,143,11,250,133,44,175,7,86,69,110,215,142,
-  119,169,55,49,35,255,151,170,230,106,183,19,174,129,97,155,149,212,56,107,227,247,236,160,
-  52,43,96,20,15,125,28,49,164,192,93,126,239,180,34,150,47,251,226,59,51,221,232,23,
-  0,1,24,57,98,82,62,23,14,15,22,32,30,26,19,12,17,27,43,49,40,28,15,12,
-  16,3,252,255,112,30,76,219,93,58,249,85,88,31,247,190,156,226,18,250,59,229,182,13,
-  81,227,117,129,142,93,62,6,3,123,187,112,21,94,118,114,223,136,168,30,197,134,164,121,
-  14,237,231,105,21,196,33,89,167,42,29,230,203,30,153,254,14,52,72,32,206,113,151,216,
-  9,248,216,93,190,11,56,229,254,109,214,159,43,73,109,12,62,124,153,189,195,34,138,73,
-  84,16,97,209,170,141,176,18,162,162,45,62,181,191,124,203,183,241,91,103,137,56,49,111,
-  221,171,111,187,85,89,142,210,28,191,255,40,221,159,119,129,74,204,160,177,47,33,180,50,
-  240,47,189,50,243,15,182,216,160,23,129,6,75,189,52,190,2,165,120,62,145,91,215,221,
-  108,174,154,27,102,142,175,214,28,38,135,24,191,113,229,244,247,251,125,114,62,118,171,206,
-  208,19,233,224,219,8,130,108,206,202,21,231,88,246,18,35,92,82,77,125,118,110,190,186,
-  246,135,183,59,114,48,147,35,9,194,188,228,99,137,209,14,237,88,224,9,174,80,74,5,
-  230,81,65,183,91,250,141,224,22,116,85,209,120,11,134,104,217,132,208,15,39,124,123,105,
-  156,167,92,210,59,0,207,227,67,224,142,7,191,213,17,158,187,136,223,59,151,170,157,63,
-  146,68,153,146,82,102,10,117,17,64,215,252,15,87,18,189,226,161,3,69,151,15,130,152,
-  110,89,250,212,145,107,167,51,218,211,190,29,132,12,250,166,36,137,254,50,19,92,41,209,
-  199,96,20,173,228,229,245,212,6,42,239,19,122,197,167,206,171,254,149,180,3,66,143,224,
-  149,7,207,186,182,230,140,175,201,241,139,107,213,51,215,254,163,74,241,150,157,60,60,49,
-  129,23,0,28,42,97,84,74,26,16,10,9,29,34,42,22,25,40,38,46,27,25,12,7,
-  9,7,15,3,252,255,94,234,121,233,76,31,134,99,46,63,77,175,100,29,212,99,66,222,
-  236,112,229,22,74,243,189,101,103,18,231,198,166,146,24,210,39,167,204,115,131,102,151,57,
-  111,157,252,85,250,162,83,172,243,200,152,66,120,193,249,212,115,166,253,112,233,213,210,8,
-  112,134,147,177,32,124,123,80,109,214,163,15,75,203,33,223,56,247,139,31,178,222,235,189,
-  162,161,104,85,41,174,202,162,172,79,248,247,204,93,105,184,61,197,91,7,11,91,29,37,
-  9,212,155,180,203,109,125,246,50,239,97,34,215,146,67,142,224,154,204,251,57,134,226,52,
-  126,33,92,33,104,73,53,179,156,29,90,221,207,144,241,37,67,35,119,85,127,224,195,0,
-  88,76,189,189,142,108,227,79,118,100,85,145,33,130,177,136,117,59,25,139,223,14,91,140,
-  153,15,216,3,13,38,191,184,163,247,120,9,252,238,251,13,200,191,22,131,116,202,91,249,
-  42,152,229,130,211,4,161,220,23,23,230,171,12,66,212,34,146,54,254,145,205,247,249,134,
-  74,229,168,184,87,133,206,236,69,6,29,120,226,22,199,226,159,243,130,184,255,94,183,252,
-  15,183,4,207,80,54,219,206,183,141,231,157,160,153,119,6,202,39,25,231,177,94,214,125,
-  194,16,204,193,161,159,182,191,171,104,130,34,193,146,79,38,134,191,248,80,155,175,127,15,
-  172,241,136,219,80,56,232,69,19,154,115,134,6,56,9,123,252,126,99,44,166,137,167,74,
-  110,116,253,30,130,250,150,236,224,247,216,255,58,255,154,157,101,243,168,247,207,196,144,136,
-  106,234,174,230,8,83,51,35,195,211,164,7,32,204,110,103,190,42,66,238,181,8,157,209,
-  133,84,94,129,207,9,172,167,158,127,44,215,147,232,200,125,207,41,58,160,190,23,0,1,
-  53,83,101,61,43,32,26,38,36,32,14,17,26,39,39,30,18,12,9,13,13,13,15,3,
-  252,255,94,225,34,177,209,202,129,150,131,202,97,57,21,100,132,75,189,55,102,158,104,46,
-  220,123,192,255,147,111,25,222,41,146,204,118,5,59,248,83,77,178,179,214,120,89,85,210,
-  140,10,46,54,123,201,31,19,253,191,63,176,3,250,143,99,42,67,3,191,80,200,195,130,
-  162,52,121,44,57,59,135,35,41,122,203,22,175,72,117,39,218,228,100,189,16,5,114,74,
-  61,201,184,205,169,169,99,176,48,117,226,8,64,167,144,61,74,231,220,88,48,176,100,0,
-  188,43,123,250,209,75,160,213,19,217,205,243,192,211,7,235,12,45,147,163,162,135,190,5,
-  110,226,104,223,245,250,96,21,66,198,239,38,217,120,45,160,210,249,131,12,0,8,223,203,
-  96,83,78,117,181,39,250,55,90,48,28,202,167,9,32,211,240,173,64,49,161,114,191,24,
-  218,20,161,113,197,61,94,15,195,96,49,194,153,6,32,47,170,177,178,183,60,219,184,16,
-  59,149,216,150,35,93,235,196,255,65,82,161,243,69,29,87,149,17,88,234,56,177,180,29,
-  152,85,49,58,111,52,24,105,144,29,58,183,228,181,55,91,141,48,165,45,68,210,52,141,
-  143,10,122,210,228,50,161,26,117,117,184,20,170,130,183,214,98,130,77,113,79,223,11,29,
-  176,204,84,136,73,2,76,218,164,104,244,25,122,59,32,49,147,50,18,63,118,136,113,158,
-  104,222,88,214,134,189,117,109,233,225,218,248,174,216,81,237,184,228,181,81,158,105,104,237,
-  90,156,193,105,239,114,34,235,145,94,199,103,145,79,175,23,170,123,60,149,21,243,45,128,
-  201,122,90,228,20,45,122,235,1,41,194,171,12,9,228,114,40,149,207,75,248,67,72,155,
-  81,8,94,233,52,151,236,12,245,182,199,229,84,222,146,45,173,114,36,183,167,63,104,31,
-  236,163,222,21,85,83,176,12,116,236,1,5,11,175,198,203,4,176,74,135,24,79,34,94,
-  171,32,168,200,174,225,151,70,20,53,251,109,7,102,197,4,34,62,202,0,170,38,215,131,
-  166,83,149,171,139,72,96,241,37,155,1,0,251,126,255,0,246,107,72,139,184,80,33,190,
-  71,155,27,144,207,175,207,158,197,19,55,92,175,97,110,223,186,70,126,193,247,196,83,33,
-  87,51,78,167,112,59,117,25,127,189,222,170,99,0,254,89,7,21,102,8,0,16,72,102,
-  174,125,129,44,47,40,21,2,246,195,239,235,16,219,75,232,117,220,148,238,139,160,237,120,
-  132,10,93,40,103,229,85,41,76,220,184,28,190,205,80,28,254,151,212,0,227,196,47,157,
-  18,45,49,129,59,225,106,147,241,253,237,131,250,132,243,171,68,253,56,129,106,72,169,118,
-  59,237,176,192,198,114,174,130,171,16,216,36,4,86,39,130,10,191,221,201,207,207,214,179,
-  188,250,167,124,60,136,183,163,71,192,167,235,116,75,192,92,78,88,241,254,11,41,111,53,
-  50,47,12,195,137,89,205,96,197,33,38,207,210,182,10,0,48,47,50,10,87,89,84,22,
-  84,93,113,32,12,195,58,250,47,97,66,244,207,37,228,33,5,140,151,143,122,7,63,251,
-  173,44,70,91,96,88,209,48,225,104,150,146,230,11,141,42,206,124,236,220,230,66,178,181,
-  163,101,120,131,45,73,124,16,37,65,109,237,165,102,214,215,230,129,125,104,9,1,111,64,
-  92,79,189,67,37,130,12,15,132,193,29,38,131,18,153,29,66,76,206,235,228,247,105,210,
-  234,72,74,74,172,9,120,138,71,201,255,105,25,72,220,21,45,62,210,255,197,43,36,122,
-  79,253,141,73,129,252,92,23,6,0,137,162,167,42,16,83,108,74,250,174,138,160,250,92,
-  73,69,89,194,86,114,159,51,146,119,146,27,55,113,183,232,85,188,199,44,134,4,85,153,
-  89,51,180,153,84,249,134,37,136,6,9,133,247,181,99,245,183,135,106,146,161,254,2,201,
-  218,200,201,209,251,231,205,215,84,220,247,122,167,209,162,137,68,236,176,171,93,193,255,88,
-  252,232,92,20,239,237,143,191,36,203,8,23,186,215,123,116,254,74,70,247,80,7,0,109,
-  107,188,102,102,45,23,75,22,10,174,46,84,206,88,181,139,188,86,121,227,61,162,143,7,
-  50,44,224,33,215,95,229,34,115,132,139,175,36,163,6,164,214,114,40,88,67,0,16,97,
-  199,243,109,21,249,19,252,16,180,164,68,217,74,114,5,103,188,154,231,36,93,41,78,210,
-  242,51,159,84,29,224,181,255,112,113,96,175,119,212,141,213,189,134,248,251,255,58,43,152,
-  59,248,50,136,190,233,16,170,41,247,34,213,16,28,6,0,66,65,92,41,90,102,180,98,
-  50,174,46,84,206,92,78,120,254,107,111,241,184,119,56,47,97,197,198,255,131,41,226,206,
-  64,156,147,123,132,166,40,80,201,222,197,113,224,160,93,99,157,223,74,7,249,126,236,181,
-  156,173,242,206,201,233,152,59,124,171,48,131,231,135,65,103,231,98,216,243,189,149,135,95,
-  38,6,81,37,150,64,64,50,30,33,6,0,89,106,187,113,103,24,85,44,33,241,139,218,
-  94,5,2,4,37,184,130,172,212,7,109,166,73,111,156,181,61,237,101,199,177,255,189,85,
-  111,85,85,90,54,224,155,159,116,150,116,239,128,17,79,43,21,243,237,136,128,129,0,28,
-  54,150,36,214,145,31,140,34,233,46,139,231,38,24,164,93,87,205,158,217,37,113,239,22,
-  168,0,10,188,239,36,85,74,108,32,26,231,228,120,241,236,3,196,50,139,6,0,82,81,
-  145,73,112,78,132,60,21,200,44,98,7,27,35,228,18,184,110,84,48,105,163,140,56,194,
-  159,253,242,216,201,89,82,238,83,229,80,170,34,58,222,70,171,46,132,44,57,103,242,229,
-  248,50,80,146,20,25,123,231,67,200,243,13,41,61,44,233,203,13,45,223,113,34,232,49,
-  192,81,99,228,221,11,217,126,211,220,40,205,110,161,247,110,112,173,126,191,220,36,210,189,
-  135,103,181,69,147,2,193,216,37,166,140,7,0,140,162,167,37,16,15,75,106,72,248,174,
-  138,160,250,92,133,155,106,23,131,166,51,160,206,79,128,22,220,113,112,27,222,192,46,29,
-  217,91,195,93,23,59,114,73,224,133,77,247,58,143,56,246,171,126,164,48,83,161,72,117,
-  208,76,218,200,213,190,95,37,71,199,170,47,45,160,61,153,109,126,59,35,186,68,115,207,
-  59,252,181,233,103,203,216,60,145,71,7,0,105,152,157,96,66,72,41,66,26,2,241,226,
-  213,117,48,197,185,130,31,24,35,139,57,21,22,204,116,124,223,133,114,177,31,88,87,183,
-  125,171,139,142,31,152,196,247,248,101,241,178,186,150,81,107,90,144,228,37,206,228,227,86,
-  130,234,212,159,67,185,62,148,224,230,6,86,31,123,48,206,32,119,104,43,43,51,248,178,
-  46,212,145,216,198,6,0,133,133,172,41,103,76,113,16,252,174,46,84,206,88,181,139,188,
-  86,121,227,63,118,162,46,142,202,89,85,17,1,155,188,41,180,174,0,166,175,40,207,88,
-  72,170,48,191,221,172,12,101,212,236,44,116,233,95,227,50,153,186,209,60,161,242,249,205,
-  160,48,17,150,0,147,224,50,15,132,15,25,124,171,241,24,127,17,91,136,142,225,170,237,
-  198,87,99,20,172,0,5,0,88,110,114,116,102,173,51,30,174,46,84,206,92,78,120,254,
-  107,111,134,196,211,212,124,223,76,157,75,218,85,212,36,181,218,247,178,8,219,235,31,99,
-  1,218,219,106,243,109,1,146,187,22,246,214,111,63,70,38,221,85,134,68,176,181,217,23,
-  194,114,226,40,70,163,124,234,41,43,21,253,194,184,87,213,97,52,130,237,215,137,255,52,
-  238,189,38,245,157,182,141,30,84,39,231,146,73,254,202,210,194,202,216,83,136,193,96,150,
-  104,246,168,27,235,161,227,117,216,58,5,0,79,146,153,118,68,134,58,28,241,139,218,94,
-  5,2,4,37,184,137,210,170,189,225,235,172,32,243,126,180,187,213,139,239,24,100,98,79,
-  128,190,65,22,239,232,161,56,196,18,38,169,107,24,13,223,253,237,205,62,94,75,13,196,
-  15,43,139,156,42,106,33,245,67,120,142,79,1,71,162,8,0,39,43,52,21,92,87,82,
-  22,132,113,89,195,45,59,222,59,33,207,7,20,185,48,210,59,123,214,254,16,18,75,182,
-  7,43,83,11,221,70,143,59,42,40,70,160,88,144,40,13,61,74,124,2,105,206,229,7,
-  215,142,34,187,95,190,126,150,109,29,164,116,228,171,165,175,139,187,35,195,74,138,70,69,
-  94,188,253,241,235,38,250,182,178,101,132,223,67,191,34,152,154,86,243,143,28,58,29,80,
-  128,76,74,250,6,0,131,133,163,42,43,84,114,76,253,174,46,84,206,88,181,139,188,86,
-  111,117,251,229,177,165,139,191,76,217,159,200,175,60,120,79,26,156,218,56,88,234,251,82,
-  5,78,96,183,56,190,151,165,181,212,218,29,114,138,108,49,242,124,169,191,122,223,239,53,
-  205,214,204,123,182,224,18,73,150,41,84,120,20,209,246,135,141,136,9,0,28,59,63,46,
-  15,33,23,68,55,174,111,96,195,45,59,222,59,33,207,7,20,185,48,210,59,127,244,57,
-  242,47,103,155,154,47,140,247,101,30,154,226,161,104,211,25,174,42,157,235,158,115,50,168,
-  142,114,101,103,243,153,110,16,33,237,11,158,185,3,119,64,154,180,90,157,71,80,134,242,
-  154,150,123,113,125,226,143,157,91,118,156,0,119,123,208,70,137,159,159,160,43,188,92,15,
-  90,223,24,56,116,167,152,56,10,225,197,125,114,7,0,111,111,116,97,101,100,28,72,39,
-  8,174,46,84,206,88,181,139,188,86,121,227,61,162,232,214,136,238,169,255,60,190,90,125,
-  168,137,196,75,253,58,128,81,119,21,175,54,51,228,141,175,165,205,249,60,222,136,255,73,
-  61,230,11,232,72,93,92,229,97,224,77,155,128,81,165,247,22,225,134,36,123,41,97,99,
-  183,140,218,206,54,228,46,143,110,57,118,232,207,137,46,27,7,0,145,153,175,31,70,66,
-  65,61,14,3,174,46,84,206,88,181,139,188,86,121,227,63,114,20,4,3,82,170,186,149,
-  143,141,162,196,60,53,15,169,47,151,221,159,189,220,181,172,178,126,94,175,47,125,90,53,
-  82,86,134,177,172,218,114,233,161,30,49,7,76,66,66,58,245,33,90,238,86,194,96,225,
-  124,228,88,86,15,148,23,36,42,19,109,68,153,117,104,195,192,126,185,197,7,0,143,187,
-  205,74,40,27,29,57,22,254,174,46,84,206,88,181,139,188,86,121,227,63,112,59,145,191,
-  197,3,14,47,51,98,6,111,215,3,18,58,218,190,74,170,50,96,147,200,205,137,3,186,
-  64,109,176,235,117,19,148,87,222,217,43,171,248,214,145,95,20,7,178,99,13,17,152,53,
-  243,246,25,96,237,234,250,240,231,223,19,13,253,44,60,8,237,62,83,30,48,46,226,29,
-  107,223,15,220,113,205,139,73,187,100,150,222,7,0,131,130,134,40,40,85,68,114,36,5,
-  174,46,84,206,88,181,139,188,86,121,227,61,162,110,20,146,32,100,34,42,17,170,179,172,
-  43,51,140,56,181,75,194,212,73,99,134,62,175,74,210,124,149,209,79,100,32,136,108,84,
-  130,86,158,24,164,82,130,164,121,153,108,210,187,126,80,9,80,19,103,226,117,178,240,211,
-  205,14,67,27,172,59,109,4,177,79,139,23,144,203,128,60,172,7,0,104,142,147,88,49,
-  73,35,93,35,17,174,46,84,206,88,181,139,188,86,121,227,61,162,134,74,205,107,182,72,
-  140,55,18,14,91,120,227,136,75,19,84,241,178,204,137,200,188,84,21,106,11,160,35,150,
-  216,148,195,115,105,86,50,121,38,19,2,123,44,204,97,38,57,196,55,60,211,248,217,128,
-  150,169,10,204,172,59,16,182,156,179,200,60,236,4,118,168,73,141,69,205,196,109,92,131,
-  148,63,210,204,25,102,6,0,157,193,196,68,32,47,62,28,1,174,46,84,206,88,181,139,
-  188,86,121,227,61,162,110,20,146,32,100,34,137,12,93,174,191,115,242,51,125,225,164,255,
-  56,124,107,13,113,51,48,69,106,24,3,34,203,74,254,88,146,92,175,50,45,106,125,97,
-  7,61,221,54,161,9,61,103,106,191,157,89,60,204,134,7,5,191,225,78,200,184,197,165,
-  215,139,246,10,200,224,180,11,74,169,108,156,131,225,231,178,6,0,78,78,81,28,74,137,
-  181,101,26,174,46,84,206,88,181,139,188,86,121,227,63,115,138,189,134,185,101,64,197,84,
-  114,246,84,5,207,99,53,214,200,13,102,81,28,98,74,157,143,227,86,48,182,101,248,47,
-  117,39,180,9,203,142,238,235,167,116,218,221,80,94,75,106,149,130,7,146,67,116,220,120,
-  204,103,131,248,134,2,231,140,251,54,185,23,88,6,237,107,182,14,114,246,163,36,60,247,
-  238,6,0,162,166,170,22,17,84,103,69,246,174,46,84,206,88,181,139,188,86,121,227,63,
-  118,162,48,24,56,184,21,1,175,207,119,19,133,5,118,101,216,56,118,233,34,29,211,96,
-  23,145,195,112,23,77,234,87,110,126,65,247,55,191,140,66,187,253,71,238,129,183,47,104,
-  178,252,197,170,124,3,218,244,69,80,70,125,212,119,31,135,101,130,145,216,222,143,114,168,
-  71,224,40,12,14,68,54,7,0,171,170,175,68,77,77,14,37,2,247,174,138,160,250,92,
-  133,155,106,23,131,166,51,160,206,79,128,40,16,153,12,240,38,188,233,21,71,226,234,244,
-  83,47,97,19,235,63,40,237,133,71,76,83,76,136,74,220,249,175,78,236,0,200,89,13,
-  213,156,196,62,145,42,84,131,74,142,98,4,181,217,106,208,82,123,78,101,49,74,87,18,
-  47,154,221,252,163,90,190,217,211,121,247,145,33,8,0,124,126,128,6,34,39,47,19,104,
-  78,67,195,58,250,47,97,66,244,207,37,228,33,5,140,151,143,122,7,63,251,172,192,78,
-  6,40,216,227,238,240,130,123,19,127,122,107,201,217,93,135,47,106,209,35,132,105,200,225,
-  243,130,253,160,212,117,146,43,225,239,4,111,231,153,45,244,117,81,112,133,186,249,53,39,
-  222,138,100,255,164,17,154,15,216,26,219,98,216,36,154,1,160,228,18,0,19,24,29,51,
-  57,69,36,61,64,59,24,7,8,15,15,13,31,51,77,41,14,126,102,238,15,113,188,160,
-  17,83,68,32,5,71,90,103,183,218,84,136,123,95,67,38,153,246,124,228,70,230,131,253,
-  9,82,72,76,101,173,106,150,126,91,180,243,129,110,168,100,54,19,7,5,239,203,108,204,
-  42,36,144,94,191,90,121,28,210,97,94,173,173,126,122,207,16,237,159,94,220,120,30,194,
-  204,255,168,26,81,90,73,228,91,248,139,113,178,24,163,37,213,95,52,17,243,157,2,174,
-  158,3,63,16,166,150,123,144,80,175,18,46,89,129,131,241,139,87,233,38,79,192,213,186,
-  31,11,242,124,207,128,204,194,161,23,147,165,196,227,233,223,231,186,66,59,22,220,17,172,
-  96,0,94,66,80,244,234,54,48,242,62,249,61,166,33,16,0,19,25,29,51,64,69,34,
-  27,20,16,27,32,82,63,64,33,56,41,14,122,110,62,15,112,111,220,107,241,138,2,135,
-  174,220,104,31,58,19,200,9,129,91,25,122,115,167,100,124,45,56,236,22,68,61,196,105,
-  233,124,94,37,149,179,246,132,189,109,168,121,157,88,124,127,11,161,133,197,199,206,205,232,
-  71,109,180,17,20,205,169,83,217,178,100,206,43,87,48,33,15,17,138,24,224,237,108,69,
-  41,213,145,115,129,167,150,102,165,181,205,224,30,38,200,168,199,58,120,141,37,218,121,249,
-  137,80,235,0,42,202,7,22,223,45,160,106,246,120,138,238,58,6,164,113,4,122,238,75,
-  231,83,56,241,107,92,13,156,81,192,74,90,234,188,239,82,42,121,188,246,246,75,119,89,
-  24,38,226,42,16,0,19,25,29,24,23,24,16,21,45,45,66,43,38,8,73,93,119,41,
-  14,113,254,6,29,132,148,32,75,16,72,139,246,161,121,127,121,77,254,252,59,55,101,41,
-  150,228,59,154,59,50,35,126,39,22,141,80,129,146,220,98,192,201,142,163,114,177,215,231,
-  116,99,200,60,239,140,147,47,222,148,75,134,224,14,0,111,40,15,15,187,137,86,170,123,
-  75,204,99,4,138,15,59,177,69,13,19,14,192,149,57,58,163,36,80,229,117,92,91,111,
-  114,170,194,212,20,220,230,158,168,53,242,206,95,4,197,255,72,96,89,125,243,219,203,231,
-  168,231,47,80,197,214,103,255,152,167,149,141,34,193,165,124,137,55,71,185,119,44,176,157,
-  80,63,76,40,88,13,114,22,171,235,42,92,186,36,177,198,93,18,0,19,24,29,51,48,
-  59,23,20,10,7,10,46,47,99,62,62,11,29,54,41,14,113,254,6,29,132,148,32,76,
-  218,49,138,56,68,215,6,24,199,194,232,26,7,19,72,125,128,147,165,26,17,40,84,235,
-  194,114,73,213,21,21,136,7,150,20,116,140,138,161,89,206,26,41,31,29,71,14,203,3,
-  48,223,161,61,54,51,147,150,58,212,123,7,118,148,71,203,186,139,125,12,245,146,90,142,
-  250,41,148,182,39,159,228,162,93,202,143,228,60,42,94,51,3,29,148,242,68,33,191,119,
-  39,192,142,9,102,61,136,6,36,229,196,62,72,71,115,193,191,56,139,24,56,4,2,5,
-  95,168,7,110,70,192,11,206,142,143,115,71,5,163,67,193,130,247,152,251,133,50,231,133,
-  6,90,200,105,77,57,114,50,230,91,189,75,163,36,129,194,221,147,15,0,19,22,29,46,
-  44,50,30,28,24,9,51,50,94,65,64,73,41,31,20,179,77,2,234,34,120,69,245,94,
-  9,183,122,151,215,232,191,15,16,7,16,94,3,222,133,242,49,90,249,19,78,199,141,198,
-  144,11,31,98,33,250,109,215,133,95,216,6,7,54,213,190,249,120,132,182,115,177,130,39,
-  2,104,247,163,247,55,217,30,186,1,245,236,79,50,230,191,145,252,117,68,118,186,69,29,
-  153,188,44,236,146,189,14,43,242,68,77,217,161,254,86,194,223,13,200,184,116,123,134,55,
-  58,183,227,9,252,27,194,42,35,13,20,232,67,237,145,25,164,87,206,52,255,63,77,40,
-  141,201,234,246,134,121,251,47,134,236,125,154,87,206,151,147,81,28,54,143,129,108,84,193,
-  222,4,0,1,24,69,100,6,186,147,240,47,107,222,35,242,198,154,240,206,123,201,68,167,
-  192,107,2,231,23,125,162,139,81,197,69,128,179,19,36,184,143,90,63,106,61,115,221,199,
-  146,31,153,30,234,75,217,61,242,111,143,192,36,66,248,151,52,102,22,29,195,90,87,223,
-  166,159,220,220,249,129,217,229,175,223,83,187,196,69,94,43,208,30,9,124,201,141,21,0,
-  0,255,3,12,27,27,18,36,39,43,11,8,19,18,18,20,21,49,78,84,55,71,143,63,
-  4,100,95,43,214,165,165,109,201,57,237,158,27,164,193,105,127,209,39,212,19,122,138,120,
-  239,28,54,26,92,204,154,39,166,51,226,211,225,198,117,2,130,149,230,34,16,177,219,128,
-  4,212,96,137,218,148,145,52,238,231,221,167,241,67,129,135,61,28,234,83,115,206,203,153,
-  33,33,94,155,247,20,94,17,1,84,149,252,29,116,98,125,235,213,117,145,42,54,75,177,
-  73,118,194,150,85,49,13,31,89,43,157,72,113,225,78,102,239,21,48,73,121,242,186,117,
-  20,0,1,0,3,12,28,29,22,16,15,30,23,30,30,54,52,49,37,62,55,39,71,143,
-  63,4,100,64,70,86,176,202,46,198,252,5,82,76,199,128,136,196,161,95,123,206,99,76,
-  225,32,160,216,142,225,39,219,67,223,104,140,105,110,53,240,250,80,183,192,119,2,180,176,
-  135,244,255,167,171,198,191,238,201,119,237,15,187,144,213,250,136,171,247,189,77,63,207,76,
-  111,205,205,78,121,104,205,212,106,14,66,226,205,196,123,122,16,34,228,133,184,173,136,212,
-  202,92,71,254,40,193,226,236,112,75,159,51,189,60,231,124,1,19,226,180,151,128,20,0,
-  1,0,3,12,23,62,58,52,19,20,24,20,53,49,89,55,50,8,14,13,61,129,49,4,
-  100,63,85,110,14,226,7,12,50,78,143,71,34,25,234,112,86,149,169,11,164,208,35,182,
-  20,222,76,150,157,161,14,32,121,62,255,54,108,177,167,234,106,203,93,165,57,175,141,251,
-  177,144,230,209,64,124,119,164,91,191,117,119,178,162,236,44,134,34,161,239,132,2,56,33,
-  164,30,122,45,6,27,94,229,132,73,198,206,105,43,100,200,210,100,155,125,105,104,233,90,
-  224,176,165,199,208,122,2,56,151,163,235,30,232,192,69,49,30,36,178,117,112,32,25,240,
-  170,41,68,216,241,21,0,0,255,3,4,11,12,15,17,47,43,35,7,10,12,22,23,67,
-  100,102,55,8,64,143,63,4,100,157,172,198,139,37,26,158,103,204,154,36,169,214,254,179,
-  251,71,143,203,150,160,134,231,152,48,226,247,179,65,141,237,99,230,200,73,67,52,121,1,
-  86,227,44,94,48,147,62,99,73,222,211,12,220,91,254,7,135,188,31,148,219,213,17,134,
-  50,233,181,11,146,254,240,87,22,70,109,87,127,33,125,111,78,205,143,120,234,215,114,169,
-  95,176,170,98,212,51,64,193,198,114,171,44,93,211,207,30,65,254,61,54,36,202,59,73,
-  247,125,220,20,249,44,183,21,252,24,65,21,0,1,0,6,7,10,9,8,7,12,20,43,
-  38,32,6,8,9,9,71,114,121,55,71,140,207,89,106,83,199,182,62,104,32,41,103,155,
-  37,131,208,232,234,55,179,143,72,104,122,137,137,134,48,100,233,220,207,85,40,172,13,241,
-  200,145,251,233,157,215,170,172,116,26,213,69,93,66,44,73,147,172,41,192,133,60,33,155,
-  180,222,194,190,114,65,135,116,159,243,217,196,202,16,234,65,95,230,230,102,226,175,111,41,
-  198,98,111,116,92,145,236,198,63,103,105,155,18,17,52,101,209,144,240,98,92,121,45,26,
-  188,177,255,242,211,221,243,95,24,25,232,112,146,252,152,77,0,21,0,0,255,3,13,20,
-  28,23,33,34,34,19,12,11,16,18,26,36,37,36,46,67,118,170,63,4,107,133,123,62,
-  93,207,116,111,136,189,216,105,185,0,134,37,67,147,121,180,77,255,171,174,8,188,89,19,
-  60,181,119,79,67,165,210,64,3,225,52,179,24,101,98,162,159,144,9,237,189,149,10,83,
-  93,70,99,66,118,207,130,23,194,146,161,99,215,9,204,185,142,52,220,231,59,248,22,251,
-  149,8,239,224,136,10,4,141,6,171,135,215,60,31,149,58,82,62,133,72,27,169,203,94,
-  163,115,67,206,106,21,0,0,255,3,8,10,10,13,18,24,16,9,7,12,26,25,27,30,
-  75,114,104,55,71,143,63,4,100,158,62,220,166,54,70,73,154,236,102,221,186,67,22,126,
-  124,4,236,4,77,237,113,244,172,212,70,77,17,188,145,59,171,127,142,134,242,20,165,3,
-  135,175,112,120,33,80,1,57,222,91,45,161,73,12,153,105,247,125,2,177,24,6,32,107,
-  33,217,111,29,26,63,73,125,34,80,196,88,194,135,237,32,18,136,81,244,88,211,18,181,
-  76,45,48,42,89,196,31,10,180,222,110,157,56,223,207,235,203,102,19,0,0,255,3,12,
-  28,62,59,47,30,50,46,30,4,21,26,30,55,49,57,63,142,49,4,100,63,85,110,14,
-  226,7,12,50,78,143,72,41,210,252,63,26,224,20,228,9,232,59,99,205,47,91,162,188,
-  122,151,22,21,158,89,224,218,245,79,219,115,225,37,109,236,113,127,54,235,175,206,215,216,
-  48,99,32,5,178,24,93,81,86,66,232,120,16,69,52,211,174,244,36,243,45,36,104,239,
-  11,81,25,203,149,169,23,9,190,35,23,203,200,82,43,199,27,2,178,36,251,214,5,160,
-  64,180,159,165,180,134,128,29,194,29,19,0,0,255,3,12,12,21,17,21,18,25,30,27,
-  22,31,62,67,95,68,55,71,143,63,4,100,127,32,213,118,222,175,79,25,111,185,169,214,
-  10,186,81,25,226,107,223,12,157,96,99,149,204,67,104,150,246,236,172,25,107,252,138,141,
-  86,119,141,72,131,218,249,107,193,194,189,81,120,156,216,119,154,120,92,226,13,40,6,228,
-  212,238,255,157,215,3,24,123,193,19,237,24,245,119,100,190,169,126,112,187,114,112,226,175,
-  66,124,46,180,144,16,196,51,147,73,139,127,232,102,128,205,70,21,153,29,99,203,184,170,
-  78,23,161,235,36,46,26,247,52,106,98,14,44,124,23,46,20,0,1,0,3,12,19,27,
-  19,16,8,8,22,27,29,18,26,27,67,100,103,55,71,143,63,4,100,96,5,12,93,19,
-  71,93,226,66,81,178,215,217,107,17,55,0,23,218,118,56,215,125,151,210,96,104,70,188,
-  156,97,77,47,223,129,57,106,239,230,219,16,236,187,184,208,187,90,60,85,163,8,125,253,
-  129,245,209,163,103,51,245,58,118,199,44,148,57,30,71,148,98,31,90,140,156,248,1,197,
-  105,236,48,149,216,202,234,208,235,35,92,193,196,45,138,248,24,84,220,209,93,14,135,132,
-  91,220,16,68,66,21,196,165,128,21,0,0,255,3,12,23,27,23,40,39,36,8,8,6,
-  6,14,18,65,58,57,47,50,109,151,63,4,100,95,43,214,165,165,109,201,57,237,158,27,
-  164,193,107,162,158,185,235,157,38,253,40,125,223,157,119,77,119,244,208,33,236,110,101,242,
-  0,173,43,179,162,78,80,84,133,127,209,203,238,31,61,39,48,152,221,28,131,171,134,22,
-  249,251,11,213,250,75,99,47,27,2,57,176,57,210,101,72,129,249,18,20,242,95,194,53,
-  158,192,67,201,91,190,4,1,119,186,34,77,186,116,32,83,210,64,188,151,127,151,93,201,
-  220,135,150,73,45,197,226,250,96,1,151,204,153,74,21,0,0,255,3,12,24,27,18,39,
-  38,38,9,8,8,21,23,33,49,90,81,55,10,71,143,63,4,100,95,43,214,165,165,109,
-  202,135,117,163,106,167,77,17,150,83,104,222,77,195,152,136,228,175,3,207,15,248,197,236,
-  196,122,242,233,198,186,242,239,91,22,87,53,199,92,74,36,57,233,73,166,18,161,241,167,
-  0,41,42,252,207,45,70,34,233,38,118,81,220,17,140,166,238,64,177,211,122,115,142,56,
-  79,61,141,176,118,122,227,57,56,31,137,22,163,196,69,116,153,76,249,21,147,203,132,65,
-  8,169,55,237,80,149,47,133,5,82,159,161,152,15,230,51,187,67,123,19,0,0,255,3,
-  12,13,23,17,50,43,41,12,22,25,20,13,48,94,95,55,71,143,63,4,100,126,125,238,
-  118,222,173,199,235,185,30,253,3,104,174,217,170,205,67,79,140,34,226,189,142,63,179,53,
-  22,249,142,109,52,13,139,118,58,163,26,230,105,200,215,245,136,151,20,201,217,139,27,244,
-  215,107,66,252,220,155,20,70,74,157,29,149,54,41,65,126,23,52,183,106,251,121,57,109,
-  180,238,185,79,231,87,217,75,213,143,190,74,154,66,4,161,66,78,16,85,190,70,176,110,
-  76,82,227,71,81,185,210,20,32,138,242,192,79,239,254,122,124,24,195,28,133,69,182,228,
-  62,135,59,169,20,0,1,0,3,12,28,58,52,39,16,22,20,13,4,7,28,28,48,73,
-  80,55,71,143,63,4,100,63,161,103,178,167,8,107,99,103,177,176,176,219,179,249,132,239,
-  221,40,187,1,232,74,97,84,46,64,101,158,242,156,45,30,219,191,31,205,158,83,173,239,
-  62,249,2,37,57,213,29,64,119,128,162,91,67,28,166,98,189,155,114,28,232,209,227,48,
-  146,33,137,204,11,55,188,156,97,241,90,23,255,215,234,58,2,235,236,137,79,12,11,174,
-  225,52,44,143,144,208,29,246,110,65,47,81,212,202,211,192,65,40,196,24,73,187,57,73,
-  53,156,136,171,174,51,73,219,94,203,12,22,0,0,255,3,12,28,29,22,15,14,12,20,
-  23,30,26,27,46,38,48,37,62,55,39,71,143,63,4,100,64,124,163,176,202,47,79,25,
-  111,185,169,214,10,188,23,154,173,192,114,210,77,255,155,75,44,222,2,72,153,100,34,192,
-  36,13,42,60,28,56,127,34,201,0,142,4,107,72,55,95,95,228,236,50,118,237,193,186,
-  203,94,163,125,205,253,14,235,121,187,64,166,34,109,153,78,196,94,10,39,120,128,157,42,
-  99,122,97,175,213,45,29,21,254,181,189,117,75,70,148,8,147,171,253,209,14,23,227,70,
-  63,18,146,135,89,151,180,236,72,51,203,156,163,162,165,32,43,229,176,195,7,192,203,2,
-  51,21,0,0,255,3,11,11,24,18,24,38,41,36,12,14,13,25,53,58,88,53,55,9,
-  71,143,63,4,100,126,180,59,118,222,174,80,6,181,142,250,237,175,163,136,2,104,245,141,
-  74,255,211,138,154,130,85,47,197,251,27,95,54,10,60,184,75,202,183,176,153,21,37,73,
-  120,45,14,168,48,191,178,226,78,62,41,128,213,100,157,136,153,224,1,123,54,105,132,36,
-  139,213,36,227,20,113,196,47,178,203,60,127,88,121,2,177,144,31,125,213,82,65,230,65,
-  189,108,176,52,15,224,221,233,128,19,186,236,118,17,217,250,141,97,122,5,34,202,183,234,
-  137,122,34,49,81,28,175,120,66,68,162,238,183,78,148,245,254,245,20,0,1,0,3,12,
-  28,29,22,16,15,30,23,30,26,27,46,53,64,68,55,39,71,143,63,4,100,64,70,86,
-  176,202,46,198,252,5,82,76,199,128,139,54,61,17,169,55,186,179,140,168,155,144,63,151,
-  51,85,79,136,62,195,43,62,140,215,8,31,238,158,116,27,51,128,232,20,245,96,81,12,
-  200,108,86,72,223,167,194,33,215,193,6,110,210,135,79,186,70,188,31,212,144,162,41,86,
-  138,39,106,130,213,98,250,28,52,134,196,95,107,231,48,79,141,53,23,0,0,254,3,12,
-  28,39,50,35,27,14,25,22,19,27,27,23,6,11,25,37,62,55,39,71,143,63,4,100,
-  63,217,188,176,202,45,198,117,206,195,61,3,104,177,126,120,70,240,36,24,149,69,253,54,
-  165,206,200,133,225,143,47,218,192,18,225,31,231,120,160,140,125,151,227,120,75,198,63,112,
-  195,60,48,56,215,59,133,86,1,217,131,24,76,3,54,219,184,56,140,193,156,16,192,22,
-  50,162,161,206,70,183,207,147,24,93,197,177,195,121,239,134,95,118,12,28,36,122,89,178,
-  22,0,0,255,3,12,28,29,31,29,33,25,18,22,21,14,31,31,32,11,23,37,64,55,
-  102,149,63,4,100,64,16,9,176,202,46,78,184,114,192,68,245,39,189,142,72,197,156,184,
-  104,206,218,74,206,30,13,186,13,72,221,87,185,77,107,216,70,53,167,59,48,101,79,27,
-  30,176,216,239,254,1,228,5,199,228,55,100,137,2,78,239,95,224,138,19,86,201,103,115,
-  248,209,244,7,31,186,238,64,219,176,21,222,5,113,91,88,250,243,99,39,171,139,218,237,
-  151,67,61,23,97,140,145,20,0,1,0,3,12,28,62,56,44,11,8,17,17,17,5,20,
-  21,48,78,84,55,71,143,63,4,100,63,85,110,14,226,7,17,155,70,143,71,34,25,234,
-  112,86,149,169,28,53,159,132,132,47,195,39,116,89,233,156,223,186,197,26,87,173,187,189,
-  68,252,58,152,186,193,60,250,255,225,123,54,111,119,153,140,115,46,210,81,178,238,81,0,
-  93,13,192,30,171,166,230,46,247,90,219,126,42,153,103,211,237,244,250,63,199,36,19,58,
-  79,132,13,89,148,118,197,210,240,99,6,129,39,7,110,223,47,46,136,33,105,57,206,149,
-  22,0,0,255,3,12,28,61,52,39,11,12,18,14,13,4,7,27,27,23,27,73,80,55,
-  71,143,63,4,100,63,161,103,178,167,8,110,23,227,177,176,176,212,196,37,142,191,125,241,
-  106,8,154,11,157,31,6,243,79,6,155,253,223,13,226,76,172,236,138,127,101,40,173,99,
-  77,169,16,195,53,111,219,85,177,38,6,198,81,170,54,193,188,25,159,228,184,218,186,25,
-  105,69,72,120,10,56,76,201,155,38,202,154,143,83,252,53,75,129,155,159,231,19,147,8,
-  10,236,52,235,182,22,0,0,255,3,8,10,10,13,18,24,17,13,7,11,8,21,19,26,
-  30,75,114,104,55,71,143,63,4,100,158,111,118,184,241,70,182,253,19,177,98,216,145,160,
-  198,226,140,205,117,50,6,89,9,172,235,26,86,245,47,20,175,220,247,95,196,69,18,29,
-  167,41,150,9,32,59,43,141,245,204,203,228,39,50,98,123,70,84,202,61,162,5,20,69,
-  121,240,197,58,170,1,26,93,67,87,99,142,176,243,163,120,224,112,208,216,83,183,88,63,
-  214,87,124,47,1,160,2,172,236,101,100,139,187,195,232,119,74,214,34,154,23,167,205,67,
-  68,129,202,217,133,242,4,189,25,124,90,242,20,0,1,0,3,6,11,16,23,51,46,38,
-  5,11,9,26,34,45,49,83,77,55,69,143,63,4,100,126,180,59,118,222,174,81,84,73,
-  142,250,239,224,175,136,6,111,88,77,137,128,144,61,199,197,102,209,238,235,17,166,73,160,
-  145,152,171,134,36,128,104,138,176,58,110,192,196,43,11,82,129,168,225,21,217,145,237,30,
-  62,232,73,34,185,68,85,229,195,75,81,99,180,192,109,85,156,36,163,251,140,254,95,105,
-  111,239,197,205,115,97,93,251,83,62,82,196,94,111,185,20,115,2,163,179,246,76,26,161,
-  132,118,72,179,5,20,63,142,42,88,180,166,182,16,22,0,0,255,3,8,10,10,13,18,
-  24,21,14,13,8,21,19,26,20,26,67,106,104,55,71,143,63,4,100,158,62,220,166,54,
-  70,73,154,236,102,221,186,67,23,43,20,11,79,135,2,211,179,236,174,75,189,14,44,17,
-  218,238,25,239,41,216,38,238,149,10,68,12,105,246,64,90,189,216,224,143,3,66,29,86,
-  110,23,217,101,59,123,250,37,122,68,104,32,144,124,230,159,86,127,137,81,161,9,116,25,
-  113,109,131,140,175,136,72,197,195,121,39,84,205,228,167,0,59,217,124,62,254,236,233,174,
-  178,51,197,200,191,33,164,230,126,169,45,91,234,104,1,201,28,52,143,63,173,12,13,20,
-  0,1,2,9,20,19,24,13,15,7,7,7,9,13,11,8,67,67,69,8,42,137,126,85,
-  33,189,227,70,16,153,244,224,39,240,211,1,170,139,134,195,88,237,154,144,233,217,227,143,
-  253,85,7,178,99,184,103,174,186,108,33,194,89,148,196,77,26,191,167,89,69,70,37,228,
-  23,55,119,64,137,63,244,222,113,122,156,189,129,44,159,192,160,1,92,104,244,150,69,100,
-  129,217,245,23,105,250,238,57,44,125,231,142,140,3,164,143,164,180,217,188,32,11,83,24,
-  69,162,199,175,186,9,80,40,80,128,122,129,146,233,247,109,182,9,58,65,58,230,8,231,
-  210,134,47,201,120,74,48,223,57,157,1,9,56,6,146,4,68,164,105,239,163,161,27,59,
-  147,251,102,3,127,173,73,154,182,33,173,45,119,42,223,231,88,242,214,36,77,106,254,218,
-  30,89,255,85,143,35,134,121,185,248,251,57,255,255,255,222,24,225,33,134,235,88,206,190,
-  147,84,52,132,78,9,0,171,113,151,32,135,237,178,219,15,97,227,61,3,224,98,168,245,
-  44,105,247,116,138,67,241,188,182,87,90,178,234,12,31,155,84,31,109,128,115,147,235,246,
-  84,59,202,248,250,52,93,202,203,144,217,27,224,215,158,168,146,63,229,9,16,239,176,111,
-  147,221,175,15,241,177,91,156,96,189,208,40,236,202,168,223,100,144,31,34,3,248,186,91,
-  61,100,214,198,231,161,82,233,62,106,180,10,102,250,235,169,13,16,112,174,209,58,188,51,
-  195,154,119,74,29,0,136,42,210,151,122,124,13,116,147,131,6,20,187,143,97,63,94,62,
-  197,70,163,49,110,131,219,213,148,62,46,198,126,140,163,230,73,23,46,102,89,203,93,213,
-  175,232,192,236,132,206,175,86,5,145,88,153,100,156,217,135,32,96,194,145,99,170,147,85,
-  223,106,115,247,47,97,160,28,7,200,27,63,52,113,221,29,123,101,193,239,185,252,187,141,
-  227,57,115,233,175,226,5,12,33,64,113,156,201,13,159,229,122,174,58,13,196,189,124,144,
-  69,97,245,37,139,230,59,162,195,236,5,164,129,65,234,103,27,28,216,97,178,34,65,89,
-  194,180,244,20,97,113,15,134,103,163,151,64,156,37,34,69,180,224,10,62,154,46,216,140,
-  110,141,229,243,140,188,56,158,202,129,79,161,232,122,62,159,205,255,193,24,74,158,23,122,
-  206,205,64,126,253,234,50,53,92,34,83,110,250,97,29,17,142,54,162,178,195,72,18,32,
-  10,140,57,189,99,188,211,16,247,246,229,48,214,34,208,106,161,61,90,227,198,60,164,116,
-  34,115,27,176,83,94,4,70,41,116,35,123,152,112,199,95,226,254,171,17,206,244,136,224,
-  104,255,116,212,57,190,172,45,14,8,195,161,147,10,150,20,153,61,247,243,228,143,54,195,
-  4,23,52,55,140,66,35,240,76,60,144,141,11,33,163,215,139,233,216,99,243,174,233,117,
-  105,53,161,173,53,52,176,115,148,190,21,247,230,25,158,162,229,162,188,199,19,235,157,188,
-  28,237,106,72,127,207,94,218,255,55,222,211,138,184,237,215,201,252,114,61,34,62,105,229,
-  98,55,136,178,7,31,199,101,164,157,8,160,50,225,214,153,17,78,49,237,254,2,121,56,
-  63,90,12,2,145,98,11,108,222,50,70,253,21,212,134,208,21,184,107,187,5,47,254,21,
-  219,200,143,240,21,157,166,224,8,21,253,100,154,199,216,167,142,139,122,108,24,98,150,219,
-  224,40,42,226,89,23,148,171,42,32,93,30,82,145,113,112,235,216,95,153,54,133,205,233,
-  219,196,254,250,100,17,150,163,57,163,29,196,64,154,181,146,194,46,250,85,253,159,64,215,
-  150,233,245,175,192,88,83,26,246,200,17,210,241,171,94,84,40,38,142,181,55,195,18,237,
-  254,74,180,137,53,97,205,228,189,222,41,216,170,44,163,174,91,233,243,180,80,235,72,39,
-  83,181,38,44,172,64,163,119,241,182,249,253,34,155,215,231,233,39,131,163,170,46,31,90,
-  49,211,187,183,130,215,111,50,68,105,113,240,240,169,201,128,18,63,196,56,64,95,97,51,
-  140,171,72,131,18,67,225,171,134,186,250,101,52,33,147,124,3,65,135,229,195,103,179,81,
-  171,228,168,131,185,4,91,199,160,60,190,9,47,65,201,170,22,5,111,144,241,103,98,50,
-  250,84,118,7,27,176,214,172,101,201,222,89,21,107,24,132,79,84,7,255,255,255,255,255,
-  151,54,206,196,19,0,1,2,6,9,12,12,9,9,11,45,58,75,80,66,88,49,64,28,
-  28,48,199,108,239,65,29,122,130,84,198,127,133,77,29,77,218,114,34,39,218,121,73,82,
-  64,165,104,183,98,222,218,230,154,151,11,5,145,136,180,115,93,75,200,112,208,124,185,209,
-  95,78,229,160,113,64,138,39,219,72,190,35,79,203,12,241,176,79,247,255,185,166,94,14,
-  90,8,150,95,45,180,130,251,32,100,185,168,73,85,33,40,146,88,64,107,148,30,24,191,
-  60,132,65,250,37,76,61,118,16,0,5,5,10,12,13,19,47,52,46,12,13,29,68,62,
-  88,68,116,58,112,220,216,226,5,190,148,176,93,255,119,154,132,239,135,224,31,52,202,29,
-  185,149,136,185,245,109,241,178,116,228,240,231,204,159,212,70,157,94,213,116,199,32,128,117,
-  133,41,10,230,90,128,200,228,90,254,205,4,79,100,171,115,127,23,0,0,254,3,3,3,
-  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,2,242,233,228,255,255,232,
-  29,71,185,203,106,187,80,136,129,189,189,255,20,148,222,93,65,120,39,14,33,119,208,208,
-  234,40,244,215,64,125,155,90,93,32,57,244,205,101,19,216,136,234,74,197,155,62,181,103,
-  219,60,225,30,88,86,136,20,8,122,151,100,60,79,69,38,125,177,13,134,105,48,102,80,
-  84,8,170,159,248,191,13,209,11,52,112,58,114,138,107,165,109,76,204,138,65,58,225,220,
-  250,67,89,250,172,204,151,11,231,156,34,24,12,69,155,162,245,26,232,150,16,230,94,224,
-  196,237,101,30,124,38,201,2,62,53,137,44,192,156,114,120,104,122,179,206,177,94,232,174,
-  238,178,126,219,241,29,215,88,134,188,239,224,79,109,192,239,138,213,210,101,237,226,78,239,
-  44,205,5,22,87,241,82,3,103,83,35,217,190,27,52,31,150,10,209,178,224,169,117,89,
-  74,244,39,222,100,241,167,7,121,60,122,113,141,148,15,69,12,202,18,141,255,136,134,73,
-  87,42,211,215,68,37,209,127,75,76,145,69,143,198,33,22,129,210,229,247,117,85,162,229,
-  42,210,218,66,16,90,164,234,183,16,90,20,26,79,179,86,220,123,99,24,7,45,198,142,
-  252,177,217,3,253,49,167,43,134,59,162,95,213,4,118,48,17,52,86,206,113,246,219,57,
-  160,248,162,44,203,219,119,170,17,70,113,65,191,227,205,21,20,102,113,27,213,248,71,95,
-  138,8,124,64,130,101,184,184,192,117,58,134,233,87,196,180,131,32,61,167,242,184,22,220,
-  43,16,59,102,223,152,101,8,170,48,117,160,238,239,68,71,3,71,203,195,70,95,2,135,
-  250,229,211,171,121,154,92,191,21,79,9,72,47,113,215,138,100,217,150,62,11,12,93,244,
-  23,226,137,40,178,160,164,39,181,204,59,89,153,8,204,220,17,106,36,149,238,164,202,8,
-  191,233,120,76,30,63,163,61,20,136,54,132,80,207,192,212,223,181,6,38,152,115,114,22,
-  134,88,19,133,229,244,255,102,4,204,159,145,92,226,100,183,124,115,11,32,217,160,81,71,
-  226,216,39,193,78,75,217,111,195,50,152,129,5,199,133,15,100,224,85,253,119,14,123,118,
-  211,60,81,0,148,43,136,74,148,134,242,90,133,155,206,56,65,15,12,137,42,116,76,61,
-  253,113,194,62,28,62,90,5,197,12,141,48,37,246,249,251,126,160,199,4,53,85,165,136,
-  226,6,111,156,206,11,182,44,118,31,199,200,31,161,240,5,173,107,57,115,172,128,244,17,
-  103,131,83,209,25,143,99,245,98,64,34,50,136,91,234,191,180,142,18,189,149,206,98,102,
-  131,50,194,44,110,203,219,133,99,40,114,2,199,184,148,181,206,227,94,9,110,73,65,68,
-  94,209,114,171,8,69,218,112,140,0,245,32,209,178,252,179,3,211,13,113,220,200,171,145,
-  171,149,1,229,57,206,225,53,125,90,237,240,16,155,215,182,193,124,222,72,201,226,160,77,
-  166,140,163,39,209,105,188,132,80,192,222,37,137,100,145,50,251,254,58,4,50,176,227,164,
-  94,117,225,59,102,111,208,194,173,70,36,44,197,50,86,233,157,19,194,212,112,183,31,78,
-  193,51,26,231,217,46,168,41,75,69,234,225,152,95,54,42,204,73,198,82,68,33,87,77,
-  86,145,127,210,35,106,72,14,255,186,77,155,48,188,141,204,188,136,93,195,172,232,5,125,
-  224,13,83,114,156,4,190,143,51,172,48,245,88,84,3,133,150,231,100,160,178,220,138,35,
-  122,84,64,104,5,9,123,181,101,216,58,115,83,239,186,18,124,225,33,143,17,84,106,55,
-  203,89,221,217,199,218,157,103,171,74,157,103,0,105,197,64,161,52,127,165,71,21,27,125,
-  93,186,2,91,56,66,151,151,53,105,231,245,121,27,233,253,97,0,154,95,141,244,159,9,
-  94,38,104,237,122,48,80,35,237,146,45,52,89,147,35,243,42,30,56,58,135,143,231,200,
-  191,122,2,246,48,169,87,42,143,106,127,133,111,140,81,180,182,222,199,116,102,220,114,37,
-  210,44,222,61,140,75,15,36,42,7,84,105,241,11,145,83,86,21,167,177,169,158,200,1,
-  59,174,127,36,203,215,139,59,223,7,210,77,78,121,174,45,52,137,19,16,4,163,241,193,
-  199,71,211,227,160,142,72,11,247,211,29,26,17,134,163,219,168,252,172,216,165,43,160,188,
-  22,118,232,55,26,159,92,8,97,142,189,110,168,19,29,53,255,91,170,237,51,116,247,88,
-  60,242,231,50,50,189,158,105,174,51,65,197,27,8,209,41,211,218,16,244,64,78,17,102,
-  92,6,146,255,201,73,146,218,151,9,210,170,171,56,137,171,119,185,205,246,60,223,209,82,
-  245,222,118,64,220,177,86,235,88,121,16,174,6,219,251,138,220,74,119,246,175,166,162,247,
-  168,16,88,251,27,212,151,124,38,63,155,105,127,87,53,112,195,242,8,155,50,186,51,3,
-  20,243,111,33,218,1,158,151,119,204,92,101,91,6,254,241,175,95,106,78,154,16,130,229,
-  241,8,110,117,32,218,62,88,220,77,255,143,5,100,88,188,101,169,237,38,217,149,47,86,
-  202,43,134,181,202,96,149,142,125,224,118,156,177,184,167,210,99,186,172,3,15,33,204,226,
-  1,20,210,93,127,238,83,89,14,20,136,36,107,112,189,210,28,103,225,109,137,186,107,141,
-  214,182,138,20,23,53,103,135,201,188,219,209,106,227,234,103,33,154,175,105,26,218,181,251,
-  229,81,23,215,29,251,46,211,42,233,1,115,2,196,12,59,36,21,146,186,149,80,188,181,
-  4,101,48,132,51,77,227,161,24,115,251,114,206,221,193,31,227,120,27,49,106,19,39,164,
-  151,28,147,185,53,136,143,127,165,229,100,245,215,254,26,195,197,119,206,228,201,156,227,5,
-  84,49,138,19,245,138,140,167,219,188,132,42,91,28,88,185,44,253,136,174,208,231,133,59,
-  80,200,172,239,130,188,198,104,193,27,17,199,89,164,225,152,174,103,67,68,248,248,177,190,
-  77,17,110,222,3,19,182,26,109,62,26,219,236,63,123,199,176,210,165,143,161,202,30,121,
-  93,116,93,162,224,202,28,111,251,127,31,89,122,72,217,121,241,234,238,149,200,211,48,54,
-  40,171,225,19,174,10,20,76,198,135,79,20,106,69,230,131,248,76,75,170,93,191,82,47,
-  73,67,172,249,197,233,124,129,122,1,24,166,168,225,127,163,76,154,82,254,98,193,183,25,
-  119,23,225,177,255,33,179,80,162,103,135,203,103,109,72,182,118,81,83,18,113,173,78,252,
-  13,246,63,137,71,238,155,70,188,69,143,172,91,226,37,88,148,51,68,233,66,153,34,93,
-  41,66,24,37,5,198,46,4,34,2,117,126,219,239,29,206,92,198,39,175,207,21,245,40,
-  230,65,251,175,190,150,221,68,197,179,174,128,190,94,254,36,4,32,226,147,169,22,229,18,
-  192,10,149,28,170,82,156,21,112,93,232,228,131,153,37,89,216,146,252,161,166,83,234,5,
-  200,153,103,10,11,228,69,101,63,204,70,148,211,158,71,61,180,193,162,32,38,178,235,7,
-  85,220,35,250,153,136,208,235,62,105,33,247,189,236,187,64,27,43,238,178,220,25,60,237,
-  44,53,147,173,177,168,9,27,126,10,22,145,22,136,205,213,25,83,215,108,224,228,208,222,
-  78,71,2,143,71,7,93,158,246,213,17,109,163,19,90,221,95,16,9,58,156,177,65,113,
-  237,211,143,217,236,5,217,32,72,145,137,22,168,28,245,147,80,132,239,75,30,224,70,48,
-  114,140,186,111,174,73,128,110,90,188,84,111,166,55,147,64,14,167,88,173,14,40,163,19,
-  105,128,235,165,129,82,56,182,248,153,24,180,13,52,170,12,240,95,208,55,189,182,140,80,
-  68,52,26,240,71,182,100,155,155,13,39,65,186,151,171,247,7,33,126,134,209,154,113,97,
-  149,140,6,46,120,230,48,43,192,111,255,181,167,155,252,118,80,247,249,243,218,48,43,65,
-  179,64,97,149,169,163,24,173,178,189,69,19,137,224,236,35,52,189,67,106,144,148,64,78,
-  221,42,150,66,216,40,242,224,63,94,204,46,40,74,205,137,63,78,144,102,49,21,163,144,
-  49,76,237,113,226,95,197,61,38,251,98,82,173,168,20,221,214,165,32,145,48,156,139,78,
-  231,161,0,183,213,217,117,240,67,121,157,230,158,168,5,180,231,175,203,7,76,90,74,217,
-  254,74,17,115,227,51,117,203,61,227,142,162,133,170,39,226,18,235,154,21,53,150,60,90,
-  105,150,61,77,126,89,66,219,137,156,112,121,41,18,194,76,39,247,247,67,97,152,238,100,
-  142,81,225,6,66,14,233,231,203,89,12,243,51,224,206,45,224,121,26,98,75,29,36,237,
-  77,236,97,39,241,211,104,98,88,82,57,190,132,54,90,160,56,112,147,142,72,250,35,4,
-  5,219,222,86,44,195,72,58,130,183,125,229,253,177,92,176,185,114,86,182,150,83,39,115,
-  162,97,69,239,232,147,99,74,40,226,206,252,38,180,93,20,205,202,79,243,34,23,178,196,
-  113,122,107,151,86,224,57,40,36,34,226,140,93,146,227,86,31,186,177,77,63,105,57,34,
-  227,27,89,15,106,221,223,18,237,135,214,78,222,92,128,64,215,199,39,198,145,103,240,48,
-  80,190,28,19,11,63,40,49,122,195,87,39,136,209,91,38,198,84,147,224,89,102,69,163,
-  107,9,117,175,141,106,164,158,125,139,127,139,7,21,200,197,150,211,129,210,129,70,20,93,
-  107,146,144,21,163,18,207,216,197,34,37,105,120,57,79,138,73,26,84,7,41,54,122,156,
-  164,153,141,85,213,122,114,113,50,203,196,61,52,7,116,61,124,185,50,119,254,85,58,169,
-  57,229,144,145,134,181,168,133,185,216,77,108,158,20,252,42,48,213,224,236,224,116,113,50,
-  93,111,79,6,223,109,235,172,187,61,153,130,200,43,114,89,234,64,30,103,73,65,102,6,
-  10,37,192,1,18,200,22,176,147,132,145,24,200,214,196,171,30,239,113,69,177,101,104,246,
-  55,85,64,87,245,208,25,119,161,245,245,80,196,166,56,18,31,184,252,111,69,84,1,178,
-  243,250,87,97,61,201,47,92,84,98,177,190,8,23,217,15,116,74,174,1,38,35,7,107,
-  117,200,230,184,238,94,158,147,108,204,204,119,124,247,20,180,163,192,142,22,139,198,215,78,
-  2,53,133,120,110,28,241,23,27,40,52,138,89,49,52,62,57,105,157,114,93,97,249,213,
-  189,65,249,179,31,117,241,215,97,229,71,154,141,101,97,250,33,221,245,110,31,235,82,48,
-  200,209,40,28,90,14,199,20,44,14,253,87,44,245,236,79,165,190,80,234,43,25,217,58,
-  61,253,184,174,200,89,194,107,139,109,220,45,129,189,189,216,56,38,37,9,68,62,77,204,
-  163,149,22,247,108,166,157,151,228,178,31,106,80,148,157,176,152,231,214,93,193,242,186,166,
-  0,207,136,83,131,173,232,231,97,161,2,110,88,255,49,62,230,43,40,75,174,226,94,238,
-  51,126,117,212,86,96,28,99,145,154,36,197,176,117,4,115,177,149,198,45,230,157,238,193,
-  26,69,88,18,118,244,57,110,53,225,231,253,212,84,27,48,132,91,191,25,58,253,137,251,
-  13,95,141,12,163,103,178,68,212,73,227,122,70,252,187,223,220,68,180,84,133,74,20,93,
-  159,214,23,121,253,2,151,133,242,24,135,75,135,183,128,88,142,21,32,62,215,149,148,87,
-  2,12,248,32,212,170,100,234,1,229,121,55,214,172,245,81,140,9,222,142,156,88,19,196,
-  185,33,143,58,174,74,33,155,48,236,25,11,127,2,131,155,212,120,164,192,138,215,55,255,
-  162,148,96,58,129,15,136,101,135,166,188,240,28,152,220,98,6,234,160,159,254,193,12,118,
-  167,253,5,12,183,84,98,252,243,220,44,73,18,50,90,200,225,246,130,108,213,210,145,175,
-  122,158,201,120,169,213,253,164,0,67,226,241,233,146,132,175,23,8,58,228,9,157,109,209,
-  155,202,61,159,110,75,80,35,51,47,244,82,127,176,96,43,252,216,145,31,144,113,181,167,
-  178,57,254,35,108,117,101,147,138,57,158,117,200,175,176,8,185,192,162,136,187,5,168,118,
-  204,46,215,123,194,200,21,197,106,147,84,168,190,255,192,85,73,142,88,127,17,117,16,217,
-  244,165,67,30,131,6,12,209,226,147,120,137,87,226,4,132,225,54,130,54,94,129,235,86,
-  207,26,60,34,123,114,93,66,130,77,151,225,205,67,80,48,194,40,121,228,201,132,133,86,
-  73,144,134,120,4,246,176,72,37,179,91,147,173,229,33,182,7,148,48,190,155,99,236,27,
-  196,69,7,70,30,61,29,179,149,205,215,97,54,3,229,45,13,210,32,173,32,139,137,64,
-  81,87,176,255,41,236,69,249,185,58,216,177,172,163,133,159,20,45,70,247,27,73,161,180,
-  212,46,149,5,246,30,125,246,152,201,68,32,245,149,208,240,74,198,162,146,244,127,224,26,
-  144,187,16,35,147,174,25,0,132,25,69,180,76,50,178,222,185,143,139,44,69,158,34,77,
-  105,163,228,184,83,76,45,122,194,168,174,207,3,13,11,6,240,145,189,15,67,140,16,52,
-  131,235,30,54,32,1,147,187,216,78,229,192,86,39,141,236,161,49,74,64,233,17,189,254,
-  121,254,0,0,0,0,
+const uint8_t art_blob[7548] = {
+  11,0,3,2,15,53,52,67,158,158,163,34,35,20,193,56,88,167,28,13,89,147,185,77,
+  235,149,125,50,150,176,52,110,77,87,4,116,163,153,128,212,13,149,246,224,127,130,67,23,
+  136,10,111,134,22,52,156,123,223,114,187,18,59,227,60,200,136,200,206,84,197,240,33,71,
+  107,50,103,39,228,0,32,0,3,4,15,50,51,42,7,6,6,4,6,11,18,18,20,13,
+  47,47,82,49,43,37,33,33,5,11,15,16,15,13,13,10,10,7,3,255,255,255,253,192,
+  56,201,138,225,233,218,97,222,72,60,51,161,170,131,185,237,61,167,173,241,59,8,176,46,
+  193,103,206,168,191,96,137,171,67,4,58,69,251,116,214,122,97,69,2,249,233,40,28,23,
+  219,220,0,117,0,212,45,31,25,117,50,26,76,56,150,85,43,37,66,30,96,170,72,69,
+  160,179,145,159,252,48,67,52,50,63,239,178,84,128,70,114,14,249,131,216,246,90,194,76,
+  55,237,139,185,81,226,127,43,0,3,1,15,50,51,42,7,5,5,3,3,20,21,22,10,
+  10,9,12,20,21,18,14,15,19,14,29,24,55,38,34,6,6,7,4,5,4,4,5,5,
+  15,31,33,25,10,7,3,255,255,255,229,234,204,245,34,146,43,241,2,104,215,223,20,132,
+  19,3,218,236,119,114,207,157,231,52,82,182,137,129,71,80,88,224,224,225,20,206,40,77,
+  147,181,59,19,140,151,219,90,4,146,24,90,74,130,164,175,108,32,84,45,249,10,97,231,
+  34,234,153,60,217,141,12,183,51,111,216,24,208,26,87,69,189,249,137,10,135,226,60,246,
+  72,50,90,38,64,3,229,233,160,33,49,51,106,219,115,109,193,157,228,192,167,255,69,132,
+  50,128,227,175,45,228,93,167,111,232,191,95,169,9,95,214,86,144,46,0,0,254,3,4,
+  4,12,11,16,23,39,34,19,6,12,21,21,27,21,23,16,26,24,20,7,13,13,13,24,
+  24,26,6,5,4,4,8,25,26,33,15,32,25,30,13,9,6,7,7,4,0,255,255,255,
+  244,147,5,204,143,226,216,32,204,39,49,183,238,173,121,197,213,234,38,16,209,5,247,193,
+  251,176,70,237,200,135,243,36,21,158,166,252,2,15,173,117,124,156,249,184,140,236,106,155,
+  249,224,199,168,157,170,68,35,49,81,22,185,81,8,224,134,71,146,250,82,154,166,124,19,
+  252,169,37,151,158,3,148,144,217,166,112,233,97,2,42,214,152,166,171,44,184,104,56,2,
+  60,176,202,225,17,225,253,96,46,156,162,213,184,107,190,97,103,45,102,98,86,217,173,12,
+  8,182,161,79,97,82,19,162,121,245,54,27,168,224,70,17,249,127,4,209,229,247,219,82,
+  108,244,130,130,19,125,78,190,111,252,222,120,32,4,101,117,25,245,99,45,90,114,55,118,
+  53,101,250,179,220,33,186,212,198,64,227,57,79,223,193,122,86,27,34,57,78,166,41,100,
+  163,66,149,22,38,188,194,81,154,83,72,205,212,153,1,121,167,101,91,129,131,203,112,198,
+  254,100,39,66,73,144,103,89,147,85,13,213,19,159,136,155,199,215,183,88,165,163,38,0,
+  3,2,15,50,51,42,7,6,6,5,4,6,7,9,13,12,11,10,10,9,42,54,55,17,
+  5,5,5,34,34,34,4,5,24,24,51,34,34,6,7,6,3,255,255,255,231,40,50,79,
+  15,125,142,191,106,232,20,98,86,17,188,237,247,174,24,44,52,224,17,167,165,62,229,52,
+  225,210,162,33,222,171,120,221,184,21,51,175,112,245,167,76,103,154,156,122,252,37,150,197,
+  195,57,158,98,176,55,234,151,77,253,217,242,247,152,246,136,105,249,20,102,148,177,46,242,
+  201,136,132,112,160,118,245,146,153,198,58,46,89,4,224,19,148,87,169,74,137,88,87,2,
+  59,25,194,86,206,233,71,160,117,66,145,114,179,91,68,78,101,240,129,210,13,0,125,40,
+  84,121,4,169,64,232,119,58,3,94,31,124,150,7,248,77,150,229,132,64,222,75,36,33,
+  244,250,244,33,83,158,163,160,108,149,4,199,53,161,124,96,109,106,44,210,180,154,82,165,
+  207,22,193,205,176,92,202,226,116,232,11,112,233,40,87,87,81,54,146,155,208,252,79,8,
+  244,197,83,190,62,154,58,132,82,122,219,202,119,123,87,75,194,134,73,76,238,125,5,177,
+  4,237,60,29,85,52,182,87,21,164,230,55,218,209,136,245,87,185,186,71,4,55,162,247,
+  173,171,231,146,90,137,197,29,222,139,65,10,209,18,44,121,217,155,33,74,174,211,81,44,
+  120,97,148,40,110,188,135,130,13,100,82,182,140,54,118,48,59,238,198,202,235,86,7,55,
+  199,87,143,254,0,160,225,104,42,144,76,14,109,203,160,114,25,0,3,2,15,53,52,53,
+  18,25,65,67,95,49,43,36,32,31,4,5,11,15,16,15,13,13,10,10,7,3,255,255,
+  255,229,118,240,78,210,101,50,85,148,70,15,219,19,252,254,250,100,147,59,199,253,200,24,
+  89,251,249,190,99,41,200,182,42,119,177,192,90,248,164,13,144,17,254,46,48,236,25,10,
+  76,176,9,123,213,240,119,248,81,138,89,69,170,230,155,52,158,145,203,183,97,116,113,87,
+  204,157,92,62,104,126,75,147,197,78,95,249,186,128,97,226,50,174,225,162,167,194,225,4,
+  109,236,11,80,104,221,246,177,134,2,109,164,241,237,13,88,231,181,175,192,169,245,183,109,
+  115,198,209,120,132,159,168,26,214,235,138,186,193,208,122,43,229,123,171,161,11,170,46,101,
+  114,69,19,70,121,240,163,118,121,38,0,3,2,15,50,51,42,7,5,5,3,3,4,8,
+  18,18,15,10,10,9,13,14,15,6,11,20,21,24,14,14,23,25,26,8,45,43,71,34,
+  36,10,7,3,255,255,255,253,134,198,36,164,84,178,254,35,255,137,54,182,98,104,193,38,
+  73,42,142,200,232,0,193,112,32,83,76,3,53,31,33,151,68,145,220,188,90,111,157,222,
+  162,71,175,150,126,94,80,157,39,2,66,114,33,142,49,23,127,248,147,56,152,170,29,4,
+  51,127,156,252,176,156,45,58,24,7,228,166,18,93,98,118,39,179,253,2,135,137,7,216,
+  251,62,117,51,197,241,227,221,236,243,9,128,237,247,35,247,50,221,190,22,71,88,108,58,
+  20,183,99,5,68,57,50,206,84,213,18,109,82,85,179,94,135,230,18,145,191,251,151,187,
+  95,87,93,247,236,189,208,11,83,220,33,101,175,180,143,162,220,140,32,163,44,0,3,2,
+  15,53,52,46,7,11,21,51,54,46,17,11,13,14,27,27,26,15,9,8,6,5,4,3,
+  4,14,24,23,15,5,5,3,4,5,11,15,16,10,9,10,12,10,10,7,3,255,255,255,
+  252,113,131,210,209,71,171,72,95,105,244,40,237,143,26,199,120,181,79,222,104,250,14,119,
+  245,236,75,203,47,147,38,167,21,43,67,239,135,44,100,202,119,164,230,236,124,202,42,22,
+  223,136,88,68,123,51,86,138,249,132,155,70,217,55,141,155,167,182,42,174,233,210,193,166,
+  152,237,40,144,219,118,69,73,28,221,121,148,201,110,139,53,246,1,12,9,138,253,101,169,
+  66,64,188,128,51,113,149,233,37,74,217,80,44,116,98,69,40,104,230,61,101,103,115,211,
+  41,0,3,2,15,51,51,42,4,5,6,10,9,19,27,31,23,12,7,5,5,11,21,21,
+  22,40,46,41,29,23,32,15,15,5,9,13,13,11,8,9,10,10,10,10,7,3,255,255,
+  255,250,1,91,75,69,28,236,7,41,187,96,193,102,179,183,167,66,73,96,66,1,7,208,
+  177,98,183,222,139,78,175,119,67,0,244,125,221,157,39,27,96,141,25,146,201,125,135,237,
+  2,96,8,74,201,139,46,3,75,60,114,247,5,144,48,165,54,254,1,3,237,56,246,246,
+  81,55,228,250,180,111,30,44,90,209,109,105,92,24,83,77,45,195,43,251,141,117,169,185,
+  169,11,236,22,40,241,153,2,133,191,166,149,235,63,49,30,118,175,177,195,82,141,214,240,
+  152,217,24,213,125,4,34,168,177,151,227,219,145,91,225,103,164,16,28,35,206,182,46,131,
+  190,127,15,11,118,91,128,119,157,39,96,241,20,0,3,3,15,53,52,53,18,19,14,75,
+  76,72,8,40,42,57,23,49,34,36,10,7,3,255,255,255,253,148,188,182,130,255,237,64,
+  76,102,65,12,145,254,44,83,127,145,193,166,13,13,1,74,56,87,23,49,240,41,159,31,
+  172,132,166,33,173,128,55,138,176,3,179,181,231,174,197,162,192,161,105,35,55,85,224,41,
+  22,32,186,132,141,99,49,0,17,98,128,89,24,241,209,209,117,253,75,224,146,227,149,247,
+  67,73,52,71,132,215,64,35,0,3,2,12,12,12,15,38,39,30,7,5,5,3,21,33,
+  37,26,19,21,14,14,10,20,32,66,60,44,9,5,5,8,8,36,34,36,10,7,3,255,
+  255,255,244,15,141,67,247,135,212,197,245,123,91,193,173,74,222,160,197,163,4,128,70,211,
+  56,120,230,107,144,222,193,66,232,63,196,128,220,238,147,1,212,43,7,208,154,124,24,149,
+  57,16,94,47,124,227,38,30,46,117,148,196,223,184,176,235,142,21,102,239,57,215,203,89,
+  234,80,198,53,84,5,206,139,144,251,20,110,225,112,88,240,136,202,75,80,38,219,111,111,
+  207,189,13,113,151,190,156,163,87,78,68,148,163,185,167,246,143,160,199,189,232,197,86,123,
+  121,137,138,163,53,115,223,135,108,122,255,248,108,10,49,21,63,138,175,236,236,7,16,184,
+  177,103,188,47,176,97,38,0,3,2,15,53,52,46,7,8,6,5,9,9,14,40,46,46,
+  28,27,24,12,8,8,11,35,36,32,12,11,11,5,3,3,3,4,4,33,34,36,10,7,
+  3,255,255,255,252,106,149,243,194,228,146,83,27,151,47,249,25,8,212,134,27,157,136,0,
+  125,82,91,125,124,191,14,127,116,77,166,189,236,174,236,98,162,27,155,156,13,185,237,243,
+  113,141,122,122,161,113,72,160,87,184,231,205,192,206,191,111,234,5,73,100,133,156,18,111,
+  156,21,116,110,153,83,217,69,2,40,172,94,238,101,190,176,98,9,212,254,173,218,126,230,
+  222,21,48,251,64,241,110,116,145,98,108,97,213,79,177,187,229,133,244,108,51,205,245,51,
+  100,77,63,151,88,191,192,66,9,181,39,134,242,210,213,112,225,143,234,246,42,174,119,53,
+  129,92,50,141,219,42,0,1,0,5,14,13,28,33,40,24,19,12,13,7,13,12,55,52,
+  54,12,28,41,38,20,5,5,20,31,30,14,4,5,6,9,11,11,8,5,8,7,10,8,
+  10,10,7,3,255,255,255,250,43,153,141,92,233,175,31,149,81,180,207,179,23,196,101,234,
+  181,114,232,67,245,173,75,72,74,25,86,118,69,26,220,168,106,104,189,124,54,215,17,113,
+  12,125,216,182,93,32,75,114,85,109,67,173,121,9,236,94,114,134,204,46,209,15,226,221,
+  3,85,252,183,22,56,71,75,43,206,125,223,122,194,178,190,19,48,172,87,194,68,148,224,
+  106,84,12,55,193,153,21,129,17,165,60,48,67,179,94,174,96,24,20,206,69,78,160,205,
+  101,247,71,77,90,153,211,253,214,182,175,230,22,109,137,14,250,133,170,30,27,1,101,28,
+  14,118,211,143,207,112,25,96,58,90,252,65,34,196,36,0,3,5,13,37,40,67,42,43,
+  22,45,48,37,37,42,46,45,33,29,6,6,14,15,13,7,6,6,7,7,7,5,5,5,
+  4,4,3,3,3,1,255,189,212,210,208,198,12,75,228,251,50,228,6,3,72,134,212,101,
+  251,220,75,20,161,168,184,153,4,78,117,125,227,238,177,38,242,126,241,97,125,94,142,219,
+  64,34,20,218,144,75,191,183,159,61,216,48,213,67,13,125,205,130,169,176,52,180,230,83,
+  0,74,183,159,252,77,173,84,187,241,237,162,128,223,106,211,138,215,152,240,0,176,231,10,
+  223,207,195,13,158,123,225,206,30,255,24,121,8,97,21,136,19,58,13,40,181,65,106,23,
+  255,69,101,177,2,241,12,110,66,216,5,162,110,77,113,124,25,44,141,205,147,216,196,175,
+  127,111,154,71,247,37,131,87,171,223,208,43,230,168,41,0,3,4,13,37,40,65,39,35,
+  9,9,8,8,8,7,3,4,6,7,6,6,8,10,11,8,7,4,6,14,14,12,24,26,
+  31,16,36,32,37,15,43,34,36,10,7,2,189,212,210,208,198,12,75,228,251,50,228,6,
+  3,72,134,212,101,251,219,245,199,242,27,49,230,3,193,240,177,94,20,83,21,15,122,201,
+  9,19,88,43,34,36,200,24,173,233,135,68,226,236,86,210,251,117,99,133,35,91,127,11,
+  88,206,44,106,8,16,88,122,155,9,128,63,3,252,148,104,96,229,8,64,202,230,61,112,
+  65,84,140,85,70,36,104,69,83,162,158,79,194,43,198,47,31,168,69,110,33,107,82,209,
+  196,225,239,173,66,242,194,2,164,6,180,47,190,170,190,91,174,77,142,103,127,50,155,169,
+  50,165,246,32,58,31,27,22,29,201,244,191,248,94,248,49,32,0,3,6,13,35,33,34,
+  40,40,35,12,47,56,49,35,26,38,18,21,36,34,30,5,5,13,12,13,7,11,11,10,
+  7,8,10,7,2,189,212,210,208,198,12,75,229,4,128,82,25,230,28,127,119,237,70,24,
+  193,91,233,181,7,146,241,248,198,252,236,84,254,172,69,91,163,160,57,77,231,241,161,250,
+  93,197,67,170,169,166,190,81,234,230,193,113,59,226,200,252,180,176,154,80,101,249,104,246,
+  149,61,119,34,85,60,154,242,131,69,6,206,220,83,25,111,216,121,236,47,49,63,62,58,
+  84,143,76,42,121,174,250,255,176,2,22,137,240,134,231,131,36,95,7,201,69,188,126,72,
+  86,57,62,203,101,148,29,4,244,93,174,223,107,63,13,107,26,167,4,14,50,0,0,255,
+  3,5,5,5,7,21,22,22,11,10,11,8,37,32,32,3,4,5,7,6,5,3,4,5,
+  5,5,4,4,5,5,23,57,62,44,38,36,38,10,7,5,7,7,12,8,18,24,26,18,
+  10,7,2,190,168,194,219,119,168,247,172,57,206,134,120,245,58,57,241,214,227,92,158,36,
+  114,145,134,15,107,212,115,84,20,241,84,132,86,235,219,189,145,17,119,159,23,46,177,53,
+  23,171,146,169,45,90,216,148,153,55,111,255,214,45,238,192,222,219,231,109,56,85,82,133,
+  37,27,237,177,130,217,144,82,137,11,249,183,150,169,187,195,84,100,240,100,41,202,194,10,
+  25,117,175,227,232,26,118,112,86,2,227,35,207,85,142,159,248,42,53,129,222,168,148,89,
+  86,112,235,4,27,52,37,23,52,48,11,229,188,77,65,223,39,52,51,249,130,173,19,213,
+  164,140,185,247,13,45,124,26,234,38,140,70,213,195,129,43,113,140,116,53,84,167,218,160,
+  101,211,67,3,21,181,220,31,84,160,59,226,54,104,77,92,30,148,214,65,223,32,172,156,
+  203,121,151,30,143,136,116,50,133,6,212,131,196,61,215,161,88,102,4,232,136,33,21,162,
+  1,192,240,173,63,102,233,23,188,224,35,138,83,226,28,17,107,232,37,141,218,14,31,255,
+  77,227,129,51,238,35,0,3,4,13,37,40,35,9,31,31,33,6,11,9,8,4,4,4,
+  4,4,8,8,67,63,66,7,7,21,21,29,16,20,12,36,34,36,10,7,2,189,212,210,
+  208,198,12,75,228,251,50,228,6,3,72,134,212,101,251,220,75,20,161,168,184,156,193,30,
+  13,172,118,79,23,244,180,163,66,116,9,150,198,194,157,236,124,195,23,93,108,55,159,201,
+  56,4,101,29,225,233,250,245,114,225,78,199,101,83,160,251,77,0,247,242,130,123,130,115,
+  65,207,136,207,192,10,92,36,101,49,99,57,203,121,36,185,9,30,144,168,179,82,246,209,
+  21,40,65,139,103,67,206,71,97,159,110,247,27,179,76,174,33,232,173,104,15,140,16,65,
+  26,209,187,7,97,108,21,86,32,199,24,76,77,45,225,194,89,119,193,233,113,51,17,139,
+  235,144,49,10,170,251,197,175,47,207,34,0,3,5,13,19,33,34,37,31,32,21,11,23,
+  42,45,26,13,35,35,45,19,22,17,18,19,10,9,5,5,5,5,3,32,34,36,10,7,
+  2,189,212,210,208,198,12,75,229,4,128,82,25,230,28,127,119,237,70,24,193,91,233,181,
+  7,146,241,246,171,28,89,17,40,49,104,235,143,226,107,70,109,244,142,124,172,188,221,120,
+  186,38,146,68,166,115,32,59,168,238,183,38,129,224,226,19,73,225,254,223,16,99,66,36,
+  65,133,8,220,91,187,34,217,11,123,190,228,96,116,207,106,218,193,16,8,121,88,159,15,
+  63,88,51,185,197,199,17,61,49,38,241,187,206,95,241,76,68,187,191,70,254,65,128,7,
+  183,226,156,57,211,151,100,29,136,169,168,219,195,128,150,98,21,238,249,234,44,186,252,246,
+  103,222,28,0,0,255,3,6,6,10,7,10,6,11,8,9,9,9,11,6,11,8,19,34,
+  35,67,55,132,89,110,34,36,10,7,2,191,126,210,167,62,72,118,170,244,101,47,84,205,
+  174,56,205,143,115,117,225,66,100,8,106,208,42,210,104,104,244,28,201,57,110,123,111,28,
+  147,202,138,226,40,192,120,143,38,80,255,88,222,15,14,16,198,185,92,233,252,110,115,218,
+  23,151,56,217,199,86,218,112,162,102,139,198,33,10,135,226,176,122,176,41,216,40,176,216,
+  192,179,30,97,181,13,116,33,174,49,129,178,120,169,92,93,96,235,89,189,94,174,40,224,
+  174,126,212,86,204,37,15,124,144,118,72,90,23,173,5,248,239,175,69,95,105,61,160,161,
+  33,49,185,99,64,214,163,185,253,35,135,70,3,148,207,104,49,217,185,210,43,118,154,3,
+  150,97,207,239,14,21,177,81,219,150,22,147,174,136,238,225,226,130,126,85,170,67,43,138,
+  55,184,222,238,250,145,134,218,28,74,49,39,191,124,110,144,208,52,14,200,143,145,218,7,
+  240,144,181,31,109,168,143,172,159,220,237,124,56,2,150,117,236,222,178,179,101,199,255,39,
+  221,53,46,0,3,3,13,37,40,67,42,48,25,26,16,22,30,36,23,15,15,14,19,11,
+  12,6,7,9,15,20,28,21,15,3,4,4,7,7,8,6,5,4,3,4,6,6,7,8,
+  10,10,10,7,2,189,212,210,208,198,12,75,228,251,50,228,6,3,72,134,212,101,251,220,
+  75,20,161,168,184,156,192,208,216,87,86,238,150,124,221,4,44,83,238,107,197,229,176,170,
+  29,252,45,107,104,26,220,200,158,71,21,129,143,245,199,172,121,40,166,131,154,204,190,116,
+  57,93,222,32,15,232,183,198,90,243,108,196,233,73,142,212,176,175,185,224,147,103,7,116,
+  168,233,249,169,110,60,185,46,19,234,149,12,235,119,116,102,28,118,251,229,91,218,58,225,
+  10,165,157,173,125,106,194,201,223,173,178,165,183,217,193,23,211,38,195,233,223,150,128,97,
+  94,101,4,197,50,243,125,90,100,243,237,203,137,9,221,34,174,56,91,95,28,117,178,218,
+  144,160,156,158,102,30,166,222,55,128,231,176,8,157,80,183,25,79,119,161,15,10,29,103,
+  29,200,105,170,154,40,172,155,35,49,31,48,103,145,218,15,15,86,175,234,199,197,236,21,
+  183,196,95,40,199,18,240,167,25,76,53,25,44,48,33,225,1,252,168,238,252,75,138,132,
+  54,114,39,135,52,80,139,225,50,42,217,207,125,116,231,82,203,97,172,78,118,33,82,223,
+  45,205,102,2,52,144,165,200,235,12,188,220,112,79,149,241,57,118,221,120,169,8,42,0,
+  3,4,13,28,29,24,7,4,4,4,3,4,5,5,33,32,32,4,5,21,45,54,60,35,
+  25,14,23,23,38,29,29,5,5,5,11,12,14,6,6,11,13,14,10,7,2,189,212,210,
+  208,198,12,75,229,32,108,17,231,55,104,83,252,119,83,40,217,176,132,244,132,168,89,184,
+  111,220,127,244,216,255,24,184,53,61,138,37,193,45,220,103,77,134,75,180,231,141,157,104,
+  74,46,244,104,43,83,99,254,217,233,234,238,7,29,125,218,197,47,50,251,45,171,234,170,
+  204,138,63,122,121,62,60,53,62,197,118,83,119,67,189,15,240,166,127,94,179,111,215,213,
+  19,77,24,163,140,30,209,161,101,90,134,95,235,22,171,33,155,250,65,48,9,248,173,82,
+  218,52,12,133,153,151,178,60,169,135,150,39,162,45,187,89,218,129,65,235,46,210,185,23,
+  0,3,3,13,37,40,66,42,48,17,16,4,8,7,8,8,13,12,55,96,96,78,34,36,
+  10,7,2,190,99,86,139,158,58,193,248,49,226,171,114,165,150,112,6,160,222,225,245,11,
+  24,29,194,62,229,37,81,2,24,91,194,4,233,161,190,101,208,152,169,84,7,145,38,128,
+  215,0,77,73,237,221,52,27,19,199,251,101,41,212,119,140,202,7,95,166,235,221,102,171,
+  106,240,231,38,46,249,87,203,123,99,128,236,34,42,69,105,226,206,149,122,211,131,16,85,
+  38,229,233,95,251,211,125,100,78,205,115,133,109,58,53,169,16,69,135,210,124,187,213,168,
+  218,5,179,54,127,28,187,192,97,2,166,22,68,244,171,92,228,103,46,211,160,123,12,88,
+  1,31,88,159,45,190,126,254,147,94,124,229,75,232,246,10,121,246,2,218,184,228,194,118,
+  116,97,194,9,254,43,85,56,146,19,92,245,168,20,41,19,167,6,140,208,203,91,107,45,
+  229,88,16,4,130,214,233,1,122,251,229,162,255,33,0,1,1,4,5,6,7,25,28,30,
+  14,13,10,7,12,17,17,9,4,4,3,10,12,15,12,12,14,28,49,111,93,99,34,36,
+  10,7,2,190,168,152,199,119,104,247,172,19,72,160,140,13,56,25,195,6,105,69,101,70,
+  238,138,178,145,77,22,160,61,230,20,46,139,109,214,234,179,255,32,155,61,61,34,174,152,
+  221,60,172,113,202,71,159,162,152,56,246,137,210,244,230,227,116,51,38,248,29,109,190,167,
+  114,185,144,138,102,136,244,239,170,86,83,196,101,68,90,28,192,50,250,40,87,88,142,96,
+  5,151,250,76,77,140,206,180,50,13,49,116,20,174,212,162,117,122,224,44,195,236,150,131,
+  219,217,162,94,26,43,81,204,68,84,211,225,114,100,241,203,230,84,16,136,108,175,130,81,
+  99,186,122,178,64,6,97,139,132,241,65,210,247,175,252,46,182,70,24,196,197,128,7,217,
+  220,114,126,15,254,204,160,136,190,5,223,131,200,55,101,230,168,4,94,94,183,145,107,97,
+  227,235,182,223,41,68,131,218,220,83,108,18,178,22,136,187,44,93,225,6,105,109,128,200,
+  149,191,220,126,221,45,224,220,116,137,179,212,14,87,88,131,1,1,248,137,154,143,8,250,
+  56,190,194,151,49,163,76,177,121,92,72,218,80,255,68,141,231,172,128,168,202,86,169,36,
+  0,3,7,11,20,22,25,14,18,14,45,34,41,11,12,5,7,10,10,9,8,10,11,10,
+  8,8,75,79,76,7,3,5,9,9,36,34,36,10,7,2,189,212,210,208,198,12,75,229,
+  4,136,242,217,230,28,127,119,237,70,24,193,91,233,181,5,61,215,239,188,106,242,117,202,
+  139,33,14,43,128,204,152,101,65,200,254,147,91,186,38,120,28,49,17,164,172,152,244,215,
+  109,97,209,86,96,71,82,64,142,115,106,60,2,175,185,104,208,44,17,77,243,138,84,194,
+  134,73,86,194,215,35,217,27,162,154,171,16,122,15,149,105,4,245,70,216,50,42,53,20,
+  94,254,86,176,7,36,199,78,1,87,193,210,49,202,43,231,91,179,142,62,124,17,130,4,
+  35,21,197,41,206,68,216,151,70,57,147,159,89,214,94,113,161,232,193,177,252,206,248,77,
+  9,68,73,37,90,97,165,134,84,74,203,67,22,254,57,116,45,252,68,61,102,104,33,237,
+  154,225,210,148,89,214,121,0,62,241,129,152,95,178,228,90,3,106,216,117,88,103,81,126,
+  117,216,58,216,231,93,140,33,84,213,69,129,136,98,9,147,45,116,250,245,124,242,190,109,
+  240,37,22,61,16,122,173,68,235,15,129,161,135,201,229,218,255,210,106,114,234,143,247,59,
+  230,209,131,208,99,247,211,104,124,87,0,1,254,4,4,6,6,5,4,7,9,10,8,11,
+  11,12,7,7,6,6,4,5,5,5,3,3,3,3,6,6,9,18,23,21,10,5,5,5,
+  7,6,8,6,6,7,9,13,9,7,6,7,7,8,7,8,12,13,12,4,3,6,6,7,
+  5,8,9,10,13,27,25,22,6,9,8,9,16,14,24,22,22,12,4,4,3,3,3,3,
+  5,7,10,7,2,189,247,197,214,76,184,61,249,182,210,97,181,77,182,30,5,193,251,121,
+  2,102,185,169,211,237,185,139,219,247,75,142,192,195,171,24,187,90,27,195,49,229,65,135,
+  140,155,14,38,89,5,174,69,230,228,180,121,58,163,79,255,113,115,202,17,226,216,245,199,
+  183,255,14,171,24,37,72,205,72,58,169,192,129,52,97,138,227,234,14,164,2,242,11,165,
+  18,10,254,74,63,219,137,88,80,165,224,116,212,234,62,203,191,168,215,78,172,23,38,15,
+  170,98,147,15,136,42,178,91,228,137,106,211,255,201,39,116,211,27,46,99,210,194,174,64,
+  40,30,18,106,17,225,219,32,138,139,98,5,215,186,187,125,253,214,194,97,64,114,20,173,
+  87,110,132,31,108,251,182,168,101,59,50,192,142,46,3,84,171,208,118,22,189,204,91,177,
+  90,54,146,135,58,170,232,34,166,138,137,130,179,28,231,173,201,67,119,54,232,81,56,223,
+  229,205,57,216,61,58,190,226,102,101,75,20,118,121,246,253,254,32,213,230,42,108,18,93,
+  89,253,143,47,116,254,146,136,150,226,133,208,175,172,232,35,224,236,173,155,135,213,84,36,
+  73,243,107,255,116,4,222,202,124,30,175,251,46,127,34,16,52,228,107,220,220,253,53,221,
+  27,32,0,1,2,9,10,13,20,20,16,4,6,16,44,45,36,21,19,59,73,103,71,44,
+  15,6,13,11,14,7,10,8,10,8,9,10,7,2,190,27,109,149,32,252,54,85,231,192,
+  66,83,115,231,28,41,174,32,146,98,224,177,102,40,10,102,209,208,183,24,132,20,183,54,
+  184,254,156,240,72,62,130,104,242,31,21,229,55,165,139,55,173,156,91,154,106,106,128,204,
+  172,182,243,189,110,0,34,165,105,92,253,118,48,239,189,244,244,181,132,96,35,129,12,94,
+  250,87,222,19,247,69,216,234,30,195,236,100,9,2,120,72,167,167,192,40,178,147,124,86,
+  16,148,133,56,166,231,47,248,193,147,106,238,65,195,195,72,53,186,97,221,72,84,230,210,
+  245,82,242,23,53,51,27,212,131,111,8,29,163,22,15,112,104,102,196,234,165,109,231,106,
+  168,117,38,100,188,54,76,78,211,108,143,124,53,45,222,166,86,200,240,5,0,175,174,177,
+  6,5,104,61,91,93,209,187,222,241,215,162,241,196,63,3,0,86,152,6,0,121,124,127,
+  7,3,2,137,253,60,90,134,107,134,246,9,207,101,108,98,136,103,15,5,0,109,108,111,
+  4,4,170,129,161,85,84,186,60,21,181,66,230,31,159,189,1,226,3,0,78,92,94,230,
+  144,110,217,3,201,135,110,38,210,121,122,104,5,0,175,174,177,6,5,108,50,236,131,181,
+  247,148,192,126,81,238,155,48,168,128,246,12,167,44,35,117,139,246,4,0,125,125,128,4,
+  161,101,133,241,108,72,213,186,54,176,125,105,60,91,19,24,201,93,108,188,3,0,110,109,
+  114,209,137,52,131,196,163,65,110,202,29,131,133,216,63,215,50,43,145,39,205,92,103,81,
+  178,4,0,78,92,94,16,192,105,197,176,53,239,245,31,113,185,24,62,207,35,58,4,39,
+  166,194,125,168,16,0,6,6,8,11,20,45,37,28,33,33,33,46,46,48,5,7,127,118,
+  110,247,248,179,80,145,237,45,188,215,240,27,210,24,3,87,31,239,237,190,236,149,141,250,
+  228,61,200,92,54,85,137,10,21,13,166,50,142,203,24,0,9,8,12,9,9,8,3,17,
+  17,17,4,4,4,3,4,6,7,12,10,9,3,14,57,56,191,139,134,255,185,73,67,153,
+  220,117,207,173,242,132,214,18,39,10,26,180,143,251,38,221,28,56,170,188,44,122,123,30,
+  220,226,162,202,72,190,40,189,26,198,189,87,109,16,125,220,130,227,74,94,35,91,13,0,
+  5,3,8,9,9,9,16,47,47,37,8,9,49,201,182,116,125,25,190,239,194,208,170,205,
+  164,83,221,169,238,245,220,31,78,69,158,8,7,53,201,203,92,65,249,187,146,185,202,27,
+  101,230,150,144,2,107,175,202,130,94,100,92,234,176,90,140,32,61,0,6,17,24,19,4,
+  37,38,40,19,18,16,3,3,3,6,6,11,8,8,3,3,3,3,4,4,29,30,30,7,
+  8,8,6,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,5,5,8,83,30,237,200,218,84,123,160,244,32,11,190,101,42,207,121,
+  171,62,48,252,26,35,45,102,121,233,189,87,113,191,207,191,19,120,58,164,212,51,126,76,
+  174,82,119,67,106,81,170,210,127,84,211,185,125,96,219,168,85,255,105,249,141,123,98,66,
+  135,104,70,228,104,15,146,93,61,156,26,255,186,95,126,247,87,106,77,11,44,159,196,89,
+  175,63,66,2,32,100,218,231,144,11,97,221,93,7,183,41,76,0,123,92,200,136,253,229,
+  80,124,3,227,6,51,113,234,127,130,44,73,68,38,151,199,103,42,128,72,56,244,173,252,
+  92,96,206,248,39,171,187,112,158,246,21,161,60,1,137,148,58,42,245,198,104,2,119,164,
+  166,43,15,122,13,214,159,64,149,163,197,236,183,1,224,188,79,246,153,46,75,89,205,95,
+  165,118,41,244,111,120,99,186,226,21,254,248,45,78,149,41,77,20,186,199,106,50,104,2,
+  171,65,87,79,108,105,63,73,24,214,243,243,235,196,147,79,199,12,252,98,104,157,68,151,
+  254,25,140,123,97,77,9,222,97,127,100,204,156,158,48,87,59,220,90,83,177,40,110,224,
+  116,7,35,208,209,92,217,140,42,13,133,32,96,126,161,163,89,227,6,232,74,40,160,166,
+  46,52,158,143,63,252,81,127,123,3,123,252,187,61,214,53,241,147,111,62,16,236,93,99,
+  170,236,192,177,95,84,42,217,30,80,247,247,89,96,71,174,69,60,13,107,55,252,0,103,
+  90,241,79,141,77,7,255,180,133,19,167,97,159,23,197,198,53,79,88,104,6,247,234,179,
+  115,57,97,52,41,97,255,131,132,39,123,246,168,9,103,232,28,162,177,88,30,66,200,108,
+  30,169,250,219,189,68,180,176,123,211,40,65,240,245,148,242,133,138,42,102,169,193,183,88,
+  36,0,180,157,227,88,165,224,197,65,70,78,15,27,163,254,162,112,15,224,155,60,134,121,
+  109,188,217,173,30,244,232,59,165,222,163,40,98,8,11,236,204,86,45,94,4,118,176,62,
+  222,80,125,169,254,29,139,222,71,159,229,25,100,99,205,60,165,44,221,142,52,224,138,149,
+  11,60,78,194,136,246,63,179,144,130,182,244,68,242,209,64,246,215,210,81,49,19,168,170,
+  141,26,140,203,1,50,127,14,156,122,76,126,217,207,215,224,21,51,108,227,138,208,246,194,
+  92,196,15,38,23,202,198,225,143,167,115,176,136,248,181,153,0,217,196,64,88,143,198,119,
+  61,4,193,116,116,89,70,99,106,31,105,191,230,18,237,109,45,99,44,227,18,223,88,93,
+  47,173,184,59,197,150,156,2,94,132,144,109,233,162,212,203,171,169,199,130,244,68,147,124,
+  140,99,223,228,62,43,249,133,173,25,103,182,76,149,161,202,219,252,4,122,88,184,163,65,
+  16,20,225,229,197,191,47,93,19,122,221,19,87,186,228,0,9,0,6,26,29,25,4,4,
+  3,33,36,234,172,205,181,255,217,30,252,150,243,134,192,167,129,145,160,142,41,225,93,167,
+  22,221,101,98,11,95,119,236,116,34,48,110,156,139,163,56,239,27,169,47,0,0,253,3,
+  3,3,3,3,3,3,3,5,6,6,4,3,3,3,3,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,4,5,6,5,6,6,6,4,2,205,198,69,87,
+  104,8,128,61,92,120,217,7,200,42,149,122,55,244,32,197,206,34,9,212,12,90,225,147,
+  2,171,118,24,54,170,251,107,178,104,74,59,11,251,29,238,189,35,53,158,92,150,131,55,
+  86,85,5,119,168,56,215,57,166,64,117,214,86,227,21,215,20,112,224,83,147,14,70,100,
+  75,233,149,42,96,194,49,221,25,182,7,165,216,144,61,94,18,197,205,204,204,103,201,50,
+  4,96,35,250,107,10,117,37,101,153,230,108,14,195,208,80,51,78,245,241,153,125,204,147,
+  47,7,234,204,25,107,28,53,133,19,253,218,15,180,122,139,160,12,71,209,116,133,199,254,
+  109,33,38,217,156,88,134,101,125,6,164,228,241,153,183,70,71,116,37,7,155,2,38,165,
+  209,155,226,250,237,207,177,35,231,147,134,220,128,177,144,250,98,164,31,36,27,239,248,58,
+  192,207,120,118,135,96,178,29,119,107,240,5,119,33,60,184,4,187,116,82,215,182,239,124,
+  34,115,231,36,240,76,250,248,27,11,60,72,126,154,70,82,69,134,104,142,161,76,191,239,
+  130,217,41,172,36,176,58,13,255,136,235,57,158,26,17,28,122,219,138,24,240,217,110,243,
+  168,126,182,92,74,230,112,249,92,3,67,185,232,238,13,163,59,202,221,127,106,170,43,134,
+  134,174,141,104,148,216,69,25,86,58,125,147,56,194,10,125,168,12,208,92,77,75,73,9,
+  43,83,90,244,201,197,97,97,67,239,145,9,132,115,22,151,225,194,228,210,1,33,170,176,
+  97,58,201,179,63,155,61,149,32,27,213,127,184,255,93,71,6,245,114,153,39,1,193,76,
+  174,40,124,43,141,213,183,46,107,144,115,210,147,122,160,120,238,47,184,153,215,70,238,222,
+  135,120,71,48,250,237,101,36,0,0,0,0,
 };
 
 const uint16_t art_pal[] = {
-  0x0000,0xFFFF,0xFFFD,0xFFFF,0xFFFF,0xFFFF,0xFFDC,0xFF39,0xFED7,0xFF22,0xFE6C,0xFFDF,0xFFDF,0xFFDE,0xF7BF,0xEFDF,0xF7BE,0xE7DF,0xEFBE,0xF79E,0xEF9E,0xEF7F,0xE77E,0xD77F,0xDF3E,0xFF9C,0xF79C,0xEF7D,0xE77E,0xE75D,0xDF5D,0xFF7A,0xF75A,0xEF3A,0xF795,0xEF75,0xFFAF,0xE734,0xF6FC,0xE6FE,0xDF1C,0xDF1C,0xDEFB,0xD6DB,0xD6FD,0xD6DB,0xD6DB,0xD6FD,0xDE9C,0xCE9B,0xF718,0xF6D7,0xE6F8,0xDED9,0xEE98,0xF658,0xDE98,0xF6D5,0xEED4,0xEE73,0xDE75,0xF6AD,0xDEF0,0xF64D,0xC73E,0xC71A,0xCEDD,0xC6BC,0xC6DD,0xCEBA,0xC69B,0xC65B,0xC659,0xCE76,0xCE3D,0xBE3A,0xBE3A,0xC639,0xB71A,0xBEDD,0xB6BE,0xB6B8,0xB67E,0xB65B,0xB67A,0xB677,0x9EBD,0x9E9E,0x9E5C,0x9E57,0x8E9B,0x963C,0x7EBD,0x7E5D,0xEE14,0xEDD6,0xDE12,0xDDD3,0xCE1B,0xC5F8,0xCE14,0xCDB3,0xF60E,0xFDEA,0xF5AD,0xF5AA,0xEDED,0xEDCD,0xE5CB,0xD5CD,0xB619,0xAE19,0xB5D9,0xADB7,0xAD96,0xA596,0xB5D5,0xB5D0,0xFD75,0xED55,0xF4F3,0xEC71,0xE4F3,0xBD56,0xB553,0xB4F7,0xB4F1,0xED4A,0xFD20,0xECCC,0xECC4,0xD54A,0xC52B,0xCCA8,0xB4AC,0x9E1B,0x9DD9,0x8E1C,0xA599,0x8D99,0x85F6,0x9DB6,0x9DB1,0xA575,0x8D73,0x9D38,0x9D35,0x8D36,0x94D6,0x84B6,0x9D30,0x850F,0x9CB0,0x84B1,0x6E1F,0x65DE,0x75D8,0x7579,0x7555,0x74F4,0x6CB6,0x5CD5,0x7CAE,0x7490,0x6CB2,0x4DB7,0x5512,0x4534,0x450F,0x2D3E,0x54B0,0x2CB9,0x04FF,0x04DE,0xFC2F,0xE433,0xF448,0xE446,0xEBD0,0xFB8C,0xE366,0xCC36,0xB42F,0xCC26,0xB448,0xBBB2,0xBBA6,0x8C73,0x7C51,0x7C51,0x7C53,0x8470,0x8432,0x8395,0x9C4D,0xA428,0x8C2C,0x9BCB,0x83CC,0x8B6A,0xFB0B,0xFAEA,0xE30B,0xB30C,0x8B12,0x9B0A,0xFAEA,0xFAAA,0xF2CA,0xEAA9,0xCACD,0xAAAC,0x82C9,0xF288,0xEA88,0xE9E7,0xD24B,0xB268,0xC1E7,0x6435,0x6C52,0x63F7,0x5BD2,0x6C4F,0x63F0,0x6B98,0x63B1,0x6390,0x5BAF,0x6B8D,0x542F,0x53F0,0x53D0,0x53CD,0x5391,0x538E,0x538D,0x3C73,0x4411,0x43B1,0x1458,0x1BD1,0x5B55,0x5B4D,0x534E,0x532E,0x4B4D,0x4B0D,0x4B0C,0x632B,0x4355,0x62EF,0x530D,0x42EF,0x5AAF,0x3A69,
-  0x0000,0xFFFF,0xFFFF,0xFFFF,0xFFDF,0xFFDE,0xFFDD,0xFF79,0xFF36,0xF7DF,0xDFBF,0xF79E,0xEF9F,0xEF9F,0xEF9F,0xEF9F,0xF77B,0xE77E,0xE77F,0xE75E,0xE75F,0xEF3C,0xDF3E,0xC77F,0xFEF6,0xF6D5,0xF6D4,0xF6D4,0xF6D4,0xF6F7,0xF6D4,0xE6FA,0xDED8,0xD6FC,0xC6FC,0xEE93,0xEE72,0xEE72,0xEE72,0xEE72,0xE695,0xEE73,0xEE51,0xDE53,0xE610,0xE610,0xDE11,0xE66E,0xE610,0xE610,0xE5D2,0xDDAE,0xDDAE,0xCE9C,0xBE5B,0xC65A,0xBE5B,0xBE5B,0xBE3A,0xBE3A,0xBE3B,0xBE3B,0xCE79,0xC65A,0xD677,0xDE32,0xD634,0xD634,0xD634,0xD614,0xCDF3,0xCDCE,0xB69A,0xB65B,0xA659,0xB65C,0xA65A,0xBE19,0xADF9,0xADD9,0x9E5A,0x8E3A,0x863A,0x8E19,0x7DD8,0xD5AF,0xD5AF,0xD5AF,0xD5B0,0xD58F,0xD58E,0xCD8E,0xC5AB,0xC5AA,0xC58A,0xC589,0xC589,0xCD6D,0xCD4D,0xCD6E,0xCD4D,0xC52E,0xC4EB,0xC4EB,0xAD98,0xB5B5,0xAD75,0xA596,0xA531,0xB54E,0xB54B,0xBD2D,0xBD0D,0xAD0C,0xAD0E,0xACEC,0xA598,0xA577,0x9576,0x9D58,0x9D56,0xA533,0x9D36,0x9D14,0x7D98,0x7DB8,0x7D97,0x7D97,0x7DB8,0x7597,0x957B,0x9559,0x9559,0x9534,0x8CF7,0x94F6,0x7D77,0x851A,0x7D35,0xD44C,0xBCEC,0xB4AB,0xB48A,0xA4ED,0xACEB,0xACAD,0xB48A,0xAC69,0xA4AE,0xA428,0xCBCB,0x9CCF,0x9CCF,0x9CCF,0xA4CD,0x9CCF,0x9CAD,0x9CAE,0x946D,0x9C4C,0x94F6,0x8CF7,0x8CF6,0x84D9,0x8CD6,0x84B7,0x7C96,0x7C96,0x7C76,0x7C76,0x7C76,0x94B0,0x84B3,0x7C76,0x8470,0x7C76,0x7C75,0x7472,0x8C6E,0x944D,0x8450,0x844F,0x7C54,0x7C50,0x842D,0x7C2F,0x7432,0x7C30,0x7433,0x7433,0x8C0C,0x840C,0x840C,0x8BCA,0x83CB,0x7412,0x73F0,0x7BCC,0x7BAB,0x73AB,0x7BAA,0x734B,0x5CD5,0x5CD5,0x5CD5,0x74DC,0x6CBD,0x647C,0x647B,0x6C9A,0x6493,0x6C72,0x647A,0x645B,0x6C55,0x6C37,0x643A,0x6419,0x5C17,0x5BF8,0x6C15,0x53F1,0x63D4,0x5BD6,0x63B3,0x63B3,0x5BB3,0x5B92,0x63B1,0x6392,0x636E,0x5BF7,0x5BD6,0x5BD7,0x5BB6,0x5BD4,0x5B95,0x5372,0x5B70,0x5B71,0x534E,0x5B4E,0x5B50,0x5B50,0x5331,0x532E,0x532D,0x532F,0x532F,0x532D,0x5310,0x530E,0x530D,0x52EF,0x4ACF,0x4AAF,
-  0x0000,0xFFFF,0xFFFF,0xFFFF,0xF7DF,0xF7DB,0xEFDF,0xEFDF,0xEF9F,0xF79B,0xE7BF,0xE77F,0xDFBE,0xDF9F,0xDF9F,0xDF7F,0xD77F,0xDF7F,0xDF7F,0xDF7F,0xDF7F,0xDF7F,0xCF7E,0xDF5E,0xDF5E,0xD77F,0xD75F,0xD75F,0xD75F,0xCF5E,0xE71D,0xDF1D,0xD73E,0xD71E,0xD6FC,0xCEFD,0xC6FD,0xCEDC,0xD69D,0xDEFB,0xD6DB,0xDE7B,0xC65A,0xEEF7,0xDE77,0xFE6D,0xE68F,0xE5D6,0xF5B3,0xDD97,0xCDF7,0xC594,0xED55,0xE553,0xCD3E,0xD535,0xF60F,0xDE32,0xDE10,0xF60A,0xF5C5,0xED6A,0xE52B,0xD5AF,0xD52C,0xBF3E,0xB6FD,0xAEBA,0xB69B,0xAE9B,0xC65B,0xC658,0xB67B,0xBE3A,0xBE3A,0xBE39,0xB639,0xB618,0xB5DB,0xADD5,0xBD9D,0xAD96,0xA597,0xA596,0xA597,0xBD79,0xAD39,0xAD77,0xA51B,0xAD95,0xB590,0xB532,0xBD0B,0x9F59,0x9EFB,0x969C,0x9E59,0x9658,0x961B,0x8E1C,0x9DF9,0x95F4,0xA5B7,0xA5B7,0x95B8,0x9557,0xA554,0x9537,0x9D10,0x865E,0x7E59,0x7E3D,0x75D8,0x7E4E,0x7558,0x6D9A,0x7518,0x7D71,0x7514,0x6637,0x65BA,0x5555,0x6536,0x3DBC,0x165F,0x3D5D,0x4535,0xE4D2,0xF4CB,0xD4F2,0xCCF4,0xD4D2,0xCCCA,0xB4BD,0xB49D,0xBC92,0xC4ED,0xBC8D,0xDC2F,0xCC51,0xBC56,0xBC2E,0xFBA8,0xDC29,0xB46A,0xB444,0xA4F7,0x9CBA,0x8CDA,0x8C78,0xA4D0,0x9492,0x9C70,0x84B3,0x8470,0xA414,0x9BD4,0xA42C,0xA40B,0x9BCA,0x8C32,0x83D4,0x940C,0x8BCB,0x74F7,0x6CB9,0x74B1,0x7C74,0x6C72,0x5CD6,0x5C77,0x5CD0,0x5C71,0x7C53,0x7452,0x6438,0x7BF4,0x63D5,0x7C50,0x6431,0x73CF,0x63F0,0x4CD7,0x3470,0x2CD3,0x2CCD,0x2490,0x2475,0x0C9C,0x04FF,0x04FF,0x4C13,0x4BB1,0x3432,0x33B1,0x0C5D,0x23D6,0x242B,0x1C0B,0x1BCA,0xF30A,0xD32B,0xF2EA,0xCAA5,0xAB3F,0xAB3A,0xBB6D,0xBB0B,0xF288,0xE247,0xE228,0xD288,0xD248,0xC28C,0xC247,0xA9E6,0xB9E6,0xA33B,0x8355,0x733D,0x7353,0xA32D,0x934B,0x9AEB,0x7B6B,0x7AEB,0xA2DD,0x925C,0x82B0,0x99C9,0xA185,0x6393,0x5B8F,0x634F,0x536E,0x532E,0x5310,0x4B0C,0x5B4B,0x4B51,0x436E,0x4B4D,0x3371,0x132F,0x5AD2,0x4AAF,0x4AF0,0x52CD,0x52EB,0x428B,0x5A79,0x4A16,0x5A4B,0x5A46,0x3A2B,0x3189,
-  0x0000,0xFFFF,0xFFFF,0xFFBD,0xFFBD,0xFFBD,0xFFBD,0xFFBC,0xFFBD,0xFFBC,0xFFBC,0xFF9C,0xFF9C,0xFF9C,0xFF9B,0xFF7B,0xFF3A,0xFF37,0xFF37,0xFF15,0xFEBA,0xFEF8,0xFEF5,0xFED4,0xFEB2,0xFE90,0xFE54,0xFDCF,0xFD75,0xEFFF,0xEFFF,0xEFFF,0xEFBF,0xEF9F,0xEF9E,0xFF7B,0xFF7B,0xE7DF,0xE7DF,0xE7DF,0xDFDF,0xEF7F,0xE77F,0xF77A,0xEF7D,0xEF7D,0xEF5D,0xF759,0xF739,0xE77F,0xE75E,0xE73E,0xE75F,0xE75E,0xE75E,0xDF3E,0xEF3C,0xE73C,0xEF1C,0xEF1A,0xF718,0xE73D,0xDF3E,0xDF1E,0xDF1E,0xEF17,0xEEF7,0xE6DA,0xDF1C,0xDF1E,0xDEFB,0xEE95,0xFE4E,0xE5B0,0xF588,0xD77F,0xD71E,0xD6FD,0xD6FC,0xDEDB,0xD6DB,0xD6BB,0xD6BA,0xD69A,0xD69A,0xCE9B,0xD67A,0xD56C,0xCE9B,0xCE7A,0xC65A,0xBE3A,0xC639,0xBE18,0xCD8F,0xBE37,0xBE19,0xB63A,0xB5F9,0xB5D8,0xB5D8,0xADB7,0xA596,0xA577,0xA577,0x967D,0xA597,0x9D75,0x9575,0x763F,0x4DBF,0x35BF,0x2D7F,0xDD4B,0xF4D3,0xD52A,0xFD23,0xED24,0xE4A2,0xD4E7,0xFD01,0xFD00,0xFCE0,0xFCA2,0xFC30,0xFC65,0xF405,0xDC49,0xDC87,0xD46A,0xCC43,0xAD31,0xA533,0xA557,0x9D16,0x9D36,0x9D14,0x9D16,0x9D16,0x9D16,0x9D16,0xB4B5,0x9515,0xB435,0x9C0F,0xCCC9,0xCCC9,0xCC86,0xCC62,0xCC82,0xCC63,0xC4A8,0x9C6C,0xB428,0xCC23,0xA44B,0x9C2D,0x9C2F,0xF3A9,0xF347,0xDBEB,0xABC4,0xA39A,0x9BAD,0x9B86,0x9BA4,0x9C0D,0x9B8F,0x9B8F,0xF32B,0xFAEA,0xFAEA,0xF28A,0xF1AC,0xE309,0xDAED,0xCAEA,0xC328,0xAB09,0xA30B,0x9AF3,0x92C8,0x9348,0xE289,0xCA09,0xC9C9,0xA2A8,0x9A8B,0xB1C9,0x928B,0x91EA,0x8533,0x94D5,0x8CD6,0x8CD6,0x8CB3,0x84B4,0x8494,0x7C53,0x946D,0x942F,0x93E5,0x6CD5,0x6C94,0x7C53,0x7C51,0x6450,0x63EF,0x5BD0,0x53CF,0x3BD1,0x1D5F,0x14FD,0x04DE,0x3436,0x3BD1,0x1459,0x73B1,0x6BB1,0x7B8E,0x7B2F,0x92EA,0x92EA,0x9348,0x7B26,0x6B87,0x8308,0x7B06,0x7AE7,0x7AE7,0x6AE7,0x63AE,0x6B8F,0x5BB0,0x5B68,0x3395,0x4373,0x532A,0x530D,0x6309,0x4B0C,0x3AF0,0x72CC,0x5ACA,0x5ACA,0x22CA,0x82B7,0x6A4C,0x6A8A,0x71EA,0x620A,0x3A0D,0x22CA,0x3229,0x3229,0x3A0C,
-  0x0000,0xFFFF,0xE79F,0xE77F,0xFFDE,0xF7BF,0xEFBF,0xEF9E,0xDF9E,0xFF9A,0xE79E,0xF7B7,0xF75B,0xEF7E,0xEF7E,0xE77E,0xE75F,0xE75D,0xE75D,0xDF5D,0xDF5E,0xFF37,0xFF35,0xFEF6,0xE73C,0xDF1D,0xDF3D,0xD71E,0xD73D,0xD71C,0xD71E,0xD71B,0xFED8,0xFED4,0xFEB2,0xEEBC,0xDEBD,0xEE94,0xFE90,0xF66E,0xFE4F,0xFE37,0xE63B,0xEE2E,0xF64A,0xFDB4,0xFD75,0xED96,0xEDCD,0xE58B,0xE56A,0xEE0A,0xEE07,0xEDA7,0xFD32,0xDD16,0xDD4A,0xD52A,0xE507,0xFD00,0xDD45,0xCF3D,0xD71D,0xC71D,0xCEDA,0xC6BC,0xC678,0xBE52,0xB67B,0xBE5B,0xBE59,0xBE39,0xC5FA,0xB65C,0xAE39,0xADF8,0xA5D8,0xA5D9,0xB599,0xAD5F,0xB557,0xACF6,0xBD94,0xAD12,0xA596,0xCD69,0xB4E9,0x8EBD,0x7635,0x95DB,0x75FA,0xA598,0xA591,0x8D95,0x6D94,0xA577,0x9D57,0x9556,0x9D55,0x8556,0x5530,0x9D36,0x951A,0x9CF9,0x9514,0xA514,0x9514,0x94EE,0x6D1A,0x7D17,0x5CD5,0x6D0F,0x55EF,0x5510,0x454D,0x54EF,0x44C9,0x3DBF,0x2D7F,0x2D1D,0x04FF,0xFCB0,0xE4D1,0xF450,0xEC8A,0xEC2E,0xEC0D,0xEC0A,0xEBE9,0xF34B,0xE345,0xC476,0x9C58,0xB416,0xAB91,0xAB75,0xD486,0xCC08,0xAC6B,0xB485,0xCB8A,0xBBC0,0xA3C6,0x7CBA,0x7C74,0x8CB0,0x8490,0x7490,0x845A,0x83D6,0x7410,0x73F1,0x6BF0,0x8B9C,0x83B2,0x83EE,0x8BCC,0x7BED,0x8BA9,0x8344,0xFAEA,0xDAE8,0xC30C,0xBAF2,0xBAC1,0xB2EA,0xD268,0xB2A6,0xBA49,0xA986,0xB165,0x932F,0x8AD4,0x92AE,0x7AF4,0x7B2A,0x6AC9,0xAA04,0x824F,0xA261,0x8A20,0x79C3,0x89A4,0x71E7,0x9124,0x8904,0x8124,0x5C99,0x5435,0x5491,0x641A,0x6BD1,0x640F,0x63B0,0x538C,0x638A,0x5B66,0x6B3E,0x5B54,0x5B2E,0x530E,0x5B4D,0x3C37,0x4C8E,0x3CAC,0x4B9C,0x43CE,0x0C37,0x3C49,0x33AD,0x23AE,0x4334,0x3331,0x530C,0x4B0C,0x2B48,0x2B26,0x52B8,0x62D3,0x62AC,0x4AEB,0x52AA,0x428A,0x6309,0x5ACA,0x5305,0x6267,0x42A4,0x3A89,0x4A69,0x3AB6,0x3AB5,0x3AB5,0x32CE,0x3252,0x2A4B,0x3A49,0x22A5,0x6A2F,0x69C8,0x620A,0x4A28,0x41C5,0x4207,0x31E3,0x2A10,0x29F0,0x29EF,0x618A,0x498B,0x5987,0x6180,0x5167,0x5922,0x4105,0x60C3,
-  0x0000,0x31C7,0x3478,0x426A,0x4ACB,0x4B0C,0x4B0C,0x4B0D,0x4B2D,0x532D,0x5BAF,0x7C51,0x7B2D,0x8DDB,0x8CD3,0xADF9,0xB4F4,0xD5D5,0xE6FB,0xFFBE,0xFFBE,0xFFDF,0xFFFF,0xFFFF,
+  0x0000,0xFFFF,0xFFDF,0xFFDD,0xFFBD,0xFFBC,0xFF9E,0xFFBD,0xF79F,0xFFBC,0xFF9A,0xFF9A,0xFF95,0xF77D,0xF7BF,0xEF9C,0xF79E,0xF776,0xEFBF,0xEFBF,0xE79E,0xF75E,0xF73B,0xFF58,0xE75B,0xDF7F,0xDF5F,0xD758,0xEF3F,0xFEFB,0xFEDB,0xFEF4,0xE73C,0xE71C,0xD73E,0xE6DE,0xFEB5,0xF6B2,0xDEB9,0xDEBE,0xDE9E,0xE6B4,0xFF2F,0xFF0F,0xF70B,0xF6D0,0xDE7E,0xD65E,0xE67B,0xEE74,0xF690,0xF68F,0xF64D,0xE66E,0xD77E,0xCF5D,0xCF5B,0xBF3A,0xD6FC,0xCE9E,0xC719,0xC6F9,0xCEF5,0xCE97,0xCE93,0xB6FA,0xAEFA,0xB6DA,0xB6B9,0xAEBA,0xB67A,0x9EBC,0x9E7A,0x8E7B,0xA698,0x867A,0x9E74,0xF639,0xDE38,0xD63C,0xD63D,0xCE5A,0xCE17,0xF630,0xE630,0xF62A,0xEE2A,0xD5F9,0xDDD8,0xEDF2,0xCDFB,0xF60F,0xEE0D,0xF5CF,0xF5EA,0xF5E7,0xF5C7,0xEDB4,0xD597,0xD594,0xED8E,0xCD8F,0xD539,0xED12,0xCD0E,0xF5A7,0xF567,0xE525,0xDD48,0xF4E8,0xDD05,0xD507,0xD4C5,0xECAF,0xCC72,0xF44F,0xE44C,0xDCA6,0xD484,0xCCA6,0xF446,0xE446,0xE3D1,0xEBCA,0xF405,0xC61A,0xBE1C,0xC5DA,0xC5D6,0xBDD8,0xBE34,0xB615,0xBDF3,0xA618,0x9E3A,0xA5DC,0xADF9,0xC5B8,0xBD99,0xB578,0xA579,0x9D96,0xC574,0xC54F,0xBD70,0xAD74,0x7E5F,0x7DBE,0x8DFA,0x8614,0x7D7A,0x5DF9,0x6E0F,0x6D99,0x558D,0x3578,0x2D59,0x454B,0x45AB,0xBD3B,0xC534,0xB537,0xAD18,0xACB7,0xA4F7,0xCCD3,0xC4AD,0xCCAA,0xACF0,0xBCCA,0xB491,0x9C4F,0xC466,0xB449,0xC423,0xA3EA,0xA3C9,0x94D4,0x7CF7,0x9494,0x9455,0x8C31,0x7C72,0x7411,0x7411,0x83D3,0x8BAD,0x5516,0x3D10,0x4C96,0x3499,0x2C79,0x3489,0x63F4,0x43FA,0x33D6,0x2C08,0xD32C,0xE30B,0xA34D,0x9348,0x8AF9,0x8AE7,0xDA89,0xDA2A,0xE226,0xDA09,0xD24B,0xC28C,0xD1C9,0xC188,0xA926,0xA127,0x7350,0x6B2E,0x6B2E,0x7B29,0x634F,0x6AF0,0x5ACE,0x6AEB,0x8257,0x62AD,0x530F,0x52AD,0x528F,0x4A8C,0x5A88,0x5A8D,0x524D,0x522C,0x5A49,0x4A2B,0x79F4,0x4A0A,0x41CA,0x4927,0x39AA,0x39A8,0x39A8,0x3169,0x3169,0x3168,0x3148,0x2928,0x2908,0x28E7,0x2926,0x2908,0x2B79,0x2926,0x2908,0x2106,0x20E5,0x18C5,
+  0x0000,0xFDE7,0xF5E7,0xF5E7,0xF5E7,0xF5E7,0xF5E7,0xF5E7,0xF5E7,0xCE9C,0xCE9C,0xCE7D,0xCE9C,0xCE9C,0xF5E7,0xF5E7,0xF5E7,0xF5E7,0xCDB9,0xCD78,0xCD77,0xCD16,0xDD0B,0xF5E7,0xDD47,0xD507,0xEDA7,0xF5E7,0xF5A7,0xF5A7,0xEDA7,0xED86,0xE566,0xE525,0xDD05,0xC6BC,0xC69C,0xC69C,0xC69C,0xB63A,0xAE5D,0xAE3D,0xB5DA,0xADDA,0xADB9,0xADB9,0xAD99,0xAD79,0xA63D,0xA5B9,0x6D9D,0x5E73,0x5E33,0x5E54,0x5E53,0x5E54,0x5E33,0x5D5E,0xCCD5,0xCCB4,0xCC94,0xBC2F,0xECE8,0xD4EA,0xD4A5,0xD4A5,0xC4A7,0xCC44,0xC423,0xC423,0xC423,0xC403,0xD390,0xE3A8,0xE363,0xDB63,0xBBE3,0xE363,0xE363,0xE363,0xBC2E,0xB467,0xABEC,0xAC27,0xAC07,0xA3CA,0x6CD5,0x6C55,0x7396,0x9387,0xA373,0xE343,0xE343,0xE343,0xE343,0xE343,0x9B52,0x9B32,0x92F5,0x92F5,0x92F1,0x92D0,0x8297,0x8297,0x72E7,0x6A87,0x22EA,0x22EA,0x22CA,0x22EA,0x22EA,0x22CA,0x1AE9,0x22EA,0x22EA,0x22CA,0xD22A,0xD1C9,0xD169,0xD168,0xD169,0xD169,0xD168,0xC969,0xC968,0xD169,0xD169,0xD168,0xD169,0xD169,0xD168,0x8276,0x8257,0x8257,0x7A76,0x7A55,0x7A57,0x7A57,0x7A56,0x7A37,0x7A37,0x7A37,0x7215,0x7234,0x71F4,0x69D4,0x6A12,0x61F1,0x61D2,0x61B2,0x5A47,0x59D0,0x51CF,0x59B0,0x41A8,0x5990,0x5990,0x518F,0x518E,0x516E,0x498D,0x496E,0x496D,0x416B,0x396B,0x394B,0x394B,0x394B,0x392B,0x3148,0x312A,0x2927,0x2127,0x3129,0x3129,0x2927,0x2927,0x2127,0x28E7,0x2908,0x2907,0x2907,0x2107,
+  0x0000,0xFF0D,0xFEED,0xFECD,0xFEAD,0xFEAC,0xFE8D,0xFE6C,0xFE4C,0xFE2C,0xFE0C,0xF5E7,0xF5E7,0xF5E7,0xF5E7,0xFDEC,0xFDCB,0xF5E7,0xF5E7,0xFDAB,0xFD8B,0xFD6B,0xEDA8,0xF5A7,0xE56A,0xF54B,0xF50B,0xF527,0xF4EA,0xF4CA,0xF4AA,0xF48A,0xF46A,0xF44A,0xD4CC,0xE3E8,0xB3D0,0xE3A8,0xDAE8,0xA372,0x9B50,0xDA89,0xD1E9,0x8A96,0xD1C9,0xD1C9,0xD1C9,0xD1C9,0x8257,0x7A77,0x7A37,0x7A37,0x7A37,0x5A47,0x496D,0x3148,0x2908,
 };
-const uint16_t art_pal_off[ART_NGROUPS] = {0,256,512,768,1024,1280};
-const int16_t art_tmpl_of_group[ART_NGROUPS] = {0,157,211,-1,-1,-1};
-const glyph_t font_small[99] = {{0,0,3},{0,1,2},{9,3,4},{36,5,6},{81,3,4},{108,3,4},{135,4,5},{171,1,2},{180,2,3},{198,2,3},{216,3,4},{243,3,4},{270,2,3},{288,3,4},{315,1,2},{324,3,4},{351,3,4},{378,3,4},{405,3,4},{432,3,4},{459,3,4},{486,3,4},{513,3,4},{540,3,4},{567,3,4},{594,3,4},{621,1,2},{630,2,3},{648,3,4},{675,3,4},{702,3,4},{729,3,4},{756,5,6},{801,3,4},{828,3,4},{855,3,4},{882,3,4},{909,3,4},{936,3,4},{963,3,4},{990,3,4},{1017,3,4},{1044,3,4},{1071,3,4},{1098,3,4},{1125,5,6},{1170,3,4},{1197,3,4},{1224,3,4},{1251,3,4},{1278,3,4},{1305,3,4},{1332,3,4},{1359,3,4},{1386,3,4},{1413,5,6},{1458,3,4},{1485,3,4},{1512,3,4},{1539,2,3},{1557,3,4},{1584,2,3},{1602,3,4},{1629,3,4},{1656,2,3},{1674,3,4},{1701,3,4},{1728,3,4},{1755,3,4},{1782,3,4},{1809,3,4},{1836,3,4},{1863,3,4},{1890,1,2},{1899,2,3},{1917,3,4},{1944,1,2},{1953,5,6},{1998,3,4},{2025,3,4},{2052,3,4},{2079,3,4},{2106,3,4},{2133,3,4},{2160,2,3},{2178,3,4},{2205,3,4},{2232,5,6},{2277,3,4},{2304,3,4},{2331,3,4},{2358,2,3},{2376,1,2},{2385,2,3},{2403,4,5},{2439,7,8},{2502,7,8},{2565,7,8},{2628,7,8}};
-const uint8_t font_small_bits[337] = {
-  95,6,0,24,64,193,7,5,31,20,92,172,209,17,7,193,17,27,73,108,64,25,224,35,
-  72,16,31,42,56,168,64,192,1,1,32,32,8,16,32,0,2,134,195,128,63,65,254,8,
-  249,3,36,79,146,39,65,146,252,121,128,224,207,147,36,121,254,36,201,19,32,206,3,27,
-  73,108,60,73,242,135,8,32,34,8,40,136,160,64,129,130,8,10,8,2,100,121,224,35,
-  72,151,42,30,252,36,240,243,39,137,13,31,65,130,252,9,226,227,79,146,32,127,18,4,
-  240,17,36,207,31,4,127,130,252,9,18,34,200,143,63,20,198,252,1,2,228,79,128,15,
-  1,252,252,9,224,199,71,16,31,127,18,24,240,17,198,203,159,4,118,140,36,137,17,224,
-  79,128,63,64,254,60,128,243,224,7,16,30,64,126,220,65,112,231,0,158,3,113,146,28,
-  249,19,100,0,7,48,65,254,8,8,32,0,16,32,64,1,4,144,160,130,231,15,17,28,
-  56,136,16,193,65,228,15,14,42,88,8,252,41,128,147,40,191,63,4,240,244,1,216,239,
-  15,4,54,127,248,16,224,67,0,15,31,2,120,112,16,193,193,159,8,14,28,68,248,243,
-  65,64,0,9,21,18,63,136,240,0,194,135,3,24,14,60,128,224,0,194,131,13,4,54,
-  60,129,242,35,67,133,137,143,36,127,146,248,128,128,0,2,2,4,28,188,188,241,194,1,
-  129,129,7,31,124,124,120,96,128,3,135,37,127,150,112,224,128,128,131,143,63,62,56,32,
-  0,
+const uint16_t art_pal_off[ART_NGROUPS] = {0,255,438};
+const int16_t art_tmpl_of_group[ART_NGROUPS] = {0,-1,-1};
+const glyph_t font_small[100] = {{0,3,3},{27,1,2},{36,3,4},{63,5,6},{108,5,6},{153,5,6},{198,5,6},{243,1,2},{252,2,3},{270,2,3},{288,3,4},{315,5,6},{360,2,3},{378,4,5},{414,1,2},{423,5,6},{468,5,6},{513,3,4},{540,5,6},{585,5,6},{630,5,6},{675,5,6},{720,5,6},{765,5,6},{810,5,6},{855,5,6},{900,1,2},{909,2,3},{927,4,5},{963,4,5},{999,4,5},{1035,5,6},{1080,5,6},{1125,5,6},{1170,5,6},{1215,5,6},{1260,5,6},{1305,5,6},{1350,5,6},{1395,5,6},{1440,5,6},{1485,3,4},{1512,5,6},{1557,5,6},{1602,5,6},{1647,5,6},{1692,5,6},{1737,5,6},{1782,5,6},{1827,5,6},{1872,5,6},{1917,5,6},{1962,5,6},{2007,5,6},{2052,5,6},{2097,5,6},{2142,5,6},{2187,5,6},{2232,5,6},{2277,2,3},{2295,5,6},{2340,2,3},{2358,5,6},{2403,4,5},{2439,2,3},{2457,4,5},{2493,4,5},{2529,4,5},{2565,4,5},{2601,4,5},{2637,4,5},{2673,4,5},{2709,4,5},{2745,1,2},{2754,3,4},{2781,4,5},{2817,2,3},{2835,5,6},{2880,4,5},{2916,4,5},{2952,4,5},{2988,4,5},{3024,3,4},{3051,4,5},{3087,3,4},{3114,4,5},{3150,5,6},{3195,5,6},{3240,4,5},{3276,4,5},{3312,4,5},{3348,3,4},{3375,1,2},{3384,3,4},{3411,5,6},{3456,7,8},{3519,7,8},{3582,7,8},{3645,7,8},{3708,8,9}};
+const uint8_t font_small_bits[473] = {
+  0,0,0,248,50,0,192,0,10,62,40,248,160,64,66,197,31,21,18,38,44,32,32,35,
+  134,134,18,45,36,160,24,224,35,72,16,31,10,8,40,128,0,129,15,4,8,128,192,32,
+  64,128,0,1,16,32,48,16,24,8,224,35,74,146,34,62,8,8,248,35,36,76,148,36,
+  70,130,36,73,146,196,6,6,10,18,254,64,56,81,164,72,145,28,60,148,36,73,2,35,
+  64,156,4,5,6,216,72,146,36,137,13,3,73,146,164,240,64,2,16,25,4,20,68,4,
+  161,64,129,2,133,32,34,40,32,16,16,32,75,2,3,62,130,116,169,226,192,79,130,4,
+  9,252,252,73,146,36,137,13,31,65,130,4,17,241,39,72,16,17,28,254,36,73,146,36,
+  200,159,4,9,18,4,240,17,36,73,18,61,127,16,32,64,240,39,200,159,32,32,128,4,
+  249,17,224,15,2,10,34,130,252,1,2,4,8,144,63,2,24,8,248,243,71,0,1,4,
+  127,124,4,9,18,196,199,159,4,9,18,24,240,17,36,74,8,47,127,18,100,72,97,196,
+  72,146,36,73,98,4,8,240,39,64,128,31,64,128,0,249,241,0,6,16,24,15,254,128,
+  192,0,226,207,24,10,8,40,140,25,64,0,15,129,1,97,162,36,41,50,228,79,144,0,
+  6,16,192,0,18,228,15,1,1,1,4,16,0,4,8,16,160,0,2,112,16,33,194,231,
+  15,17,34,56,112,16,33,66,4,7,17,34,127,112,80,161,130,133,128,159,2,1,112,16,
+  37,202,239,15,1,2,120,250,0,36,216,239,15,4,20,68,126,0,225,67,0,15,1,60,
+  124,8,16,192,131,131,8,17,28,252,137,16,193,129,131,8,17,254,124,16,16,64,66,133,
+  10,9,2,63,136,240,0,2,132,15,3,24,64,96,48,224,1,4,7,16,30,108,32,64,
+  96,195,3,40,80,126,100,168,80,97,130,192,70,144,63,65,108,32,192,64,0,1,2,2,
+  24,184,248,249,226,135,11,6,3,15,62,248,248,240,192,0,7,14,75,254,44,225,192,1,
+  1,7,31,127,124,112,64,192,65,68,144,42,73,170,4,249,3,
 };
 
-const glyph_t font_med[95] = {{0,0,4},{0,2,3},{24,5,6},{84,7,8},{168,5,6},{228,5,6},{288,9,10},{396,2,3},{420,4,5},{468,4,5},{516,5,6},{576,5,6},{636,2,3},{660,5,6},{720,2,3},{744,5,6},{804,5,6},{864,5,6},{924,5,6},{984,5,6},{1044,5,6},{1104,5,6},{1164,5,6},{1224,5,6},{1284,5,6},{1344,5,6},{1404,2,3},{1428,2,3},{1452,5,6},{1512,5,6},{1572,5,6},{1632,5,6},{1692,9,10},{1800,5,6},{1860,5,6},{1920,5,6},{1980,5,6},{2040,5,6},{2100,5,6},{2160,5,6},{2220,5,6},{2280,5,6},{2340,5,6},{2400,5,6},{2460,5,6},{2520,8,9},{2616,5,6},{2676,5,6},{2736,5,6},{2796,7,8},{2880,5,6},{2940,5,6},{3000,5,6},{3060,5,6},{3120,5,6},{3180,8,9},{3276,6,7},{3348,5,6},{3408,5,6},{3468,4,5},{3516,5,6},{3576,4,5},{3624,5,6},{3684,5,6},{3744,0,1},{3744,5,6},{3804,5,6},{3864,5,6},{3924,5,6},{3984,5,6},{4044,5,6},{4104,5,6},{4164,5,6},{4224,2,3},{4248,4,5},{4296,5,6},{4356,2,3},{4380,8,9},{4476,5,6},{4536,5,6},{4596,5,6},{4656,5,6},{4716,5,6},{4776,5,6},{4836,5,6},{4896,5,6},{4956,5,6},{5016,8,9},{5112,6,7},{5184,5,6},{5244,5,6},{5304,5,6},{5364,2,3},{5388,5,6},{5448,5,6}};
-const uint8_t font_med_bits[689] = {
-  191,241,27,1,48,0,0,16,0,3,192,3,255,241,31,60,240,31,255,193,3,204,224,13,
-  215,99,15,118,96,6,118,0,3,204,192,12,240,224,31,143,145,25,249,241,15,254,1,27,
-  144,17,0,3,224,63,255,23,96,1,22,96,1,246,127,254,211,0,15,96,0,15,208,0,
-  16,0,1,124,192,7,16,0,24,128,3,1,16,0,1,16,0,1,128,1,24,192,1,31,
-  120,240,0,3,224,15,255,17,24,255,225,15,130,33,24,255,241,31,128,33,28,227,17,31,
-  159,225,24,194,48,28,137,241,31,246,240,0,31,0,1,255,241,31,143,241,24,137,145,31,
-  241,224,15,255,145,24,251,33,15,1,16,31,249,241,1,15,96,15,255,145,24,255,97,15,
-  206,240,29,145,241,31,254,192,24,140,193,24,140,3,3,112,128,15,204,193,24,108,192,6,
-  108,192,6,108,192,24,204,129,15,112,0,3,2,48,0,177,241,0,14,224,7,254,48,28,
-  153,209,27,189,241,27,190,225,25,254,241,31,17,240,31,254,241,31,255,145,24,255,225,15,
-  254,240,31,129,17,24,129,241,31,255,17,24,255,225,15,254,240,31,137,145,24,129,225,31,
-  255,145,0,9,16,0,254,240,31,129,145,31,249,240,31,255,129,0,255,241,31,129,17,24,
-  255,241,31,129,17,12,193,17,24,255,241,15,255,241,31,24,240,31,231,241,15,255,1,24,
-  128,1,24,255,241,31,1,240,7,127,16,0,255,225,31,255,241,31,1,240,31,254,225,15,
-  255,17,24,255,225,15,255,241,31,17,240,1,14,224,15,255,17,24,193,241,15,254,1,24,
-  255,241,31,9,240,31,254,225,24,143,145,24,249,17,15,1,16,0,255,241,31,1,240,15,
-  255,1,24,255,241,15,127,240,15,192,241,15,127,240,15,255,1,24,248,129,31,128,241,31,
-  255,112,30,255,193,3,60,240,31,231,241,0,15,128,31,15,240,0,193,17,31,249,241,24,
-  131,241,127,255,23,96,1,54,0,15,224,1,240,1,28,1,22,96,255,247,127,6,96,0,
-  3,96,0,6,0,24,128,1,24,128,1,24,236,192,31,188,193,31,248,241,31,255,193,24,
-  252,129,15,248,192,31,140,193,24,140,129,15,252,193,24,255,241,31,248,192,31,188,193,27,
-  184,193,0,254,241,31,13,16,0,248,204,223,140,205,255,248,247,31,255,193,0,252,129,31,
-  253,209,31,0,12,192,253,223,127,255,241,31,60,192,31,216,241,31,255,193,31,252,193,0,
-  252,193,31,12,192,31,248,193,31,252,193,0,252,129,31,248,192,31,140,193,31,248,128,255,
-  252,207,24,252,129,15,248,192,31,140,193,255,248,207,31,252,129,0,12,192,0,152,193,27,
-  188,193,31,236,192,0,255,240,31,140,193,24,252,192,31,128,193,31,252,192,7,252,0,28,
-  252,192,7,252,192,31,128,129,31,248,1,24,252,193,15,140,193,28,248,128,15,204,193,24,
-  252,204,223,128,205,255,252,199,28,236,193,31,156,193,24,16,224,63,239,23,96,1,246,127,
-  255,23,96,1,246,126,254,3,1,16,128,0,24,0,3,16,0,
+const glyph_t font_med[95] = {{0,4,4},{48,2,3},{72,4,5},{120,6,7},{192,6,7},{264,6,7},{336,6,7},{408,2,3},{432,3,4},{468,3,4},{504,4,5},{552,6,7},{624,3,4},{660,5,6},{720,2,3},{744,6,7},{816,6,7},{888,4,5},{936,6,7},{1008,6,7},{1080,6,7},{1152,6,7},{1224,6,7},{1296,6,7},{1368,6,7},{1440,6,7},{1512,2,3},{1536,3,4},{1572,5,6},{1632,5,6},{1692,5,6},{1752,6,7},{1824,6,7},{1896,6,7},{1968,6,7},{2040,6,7},{2112,6,7},{2184,6,7},{2256,6,7},{2328,6,7},{2400,6,7},{2472,4,5},{2520,6,7},{2592,6,7},{2664,6,7},{2736,6,7},{2808,6,7},{2880,6,7},{2952,6,7},{3024,6,7},{3096,6,7},{3168,6,7},{3240,6,7},{3312,6,7},{3384,6,7},{3456,6,7},{3528,6,7},{3600,6,7},{3672,6,7},{3744,3,4},{3780,6,7},{3852,3,4},{3888,6,7},{3960,5,6},{4020,3,4},{4056,5,6},{4116,5,6},{4176,5,6},{4236,5,6},{4296,5,6},{4356,5,6},{4416,5,6},{4476,5,6},{4536,2,3},{4560,4,5},{4608,5,6},{4668,3,4},{4704,6,7},{4776,5,6},{4836,5,6},{4896,5,6},{4956,5,6},{5016,4,5},{5064,5,6},{5124,4,5},{5172,5,6},{5232,6,7},{5304,6,7},{5376,5,6},{5436,5,6},{5496,5,6},{5556,4,5},{5604,2,3},{5628,4,5},{5676,6,7}};
+const uint8_t font_med_bits[719] = {
+  0,0,0,0,0,0,63,241,19,7,112,0,7,112,0,40,224,15,254,224,15,254,128,2,
+  200,224,13,255,241,31,246,96,2,39,112,3,31,224,14,231,16,14,54,240,15,217,240,15,
+  246,0,13,7,112,0,254,240,31,1,17,16,255,225,15,22,224,1,30,96,1,32,0,2,
+  248,129,31,32,0,2,0,2,60,192,1,1,16,0,1,16,0,1,0,1,16,0,1,30,
+  240,224,1,15,16,0,254,240,31,49,145,17,255,225,15,8,224,0,255,241,31,6,113,28,
+  225,17,19,31,225,16,1,17,17,17,17,17,255,225,14,48,128,3,46,240,31,255,1,2,
+  207,240,28,9,145,16,249,17,15,248,224,31,23,17,17,241,1,14,1,16,30,241,145,1,
+  15,112,0,238,240,31,17,17,17,255,225,14,14,240,17,17,17,29,255,224,3,200,128,12,
+  0,130,60,200,1,1,56,224,14,199,17,16,40,128,2,40,128,2,40,16,16,199,225,14,
+  56,0,1,6,112,0,49,17,19,31,224,0,254,240,31,57,145,19,63,225,1,254,241,31,
+  17,16,1,255,225,31,255,241,31,17,17,17,255,225,14,254,240,31,1,17,16,199,97,12,
+  255,241,31,1,113,28,254,128,3,255,241,31,17,17,17,17,17,16,255,241,31,17,16,1,
+  17,16,0,254,240,31,17,17,17,247,97,31,255,241,31,16,0,1,255,241,31,1,241,31,
+  255,17,16,192,0,28,1,241,31,255,16,0,255,241,31,56,224,14,199,17,16,255,241,31,
+  0,1,16,0,1,16,255,241,31,30,224,1,255,241,31,255,241,31,14,128,1,255,241,31,
+  254,240,31,1,17,16,255,225,15,255,241,31,17,16,1,31,224,0,254,240,31,33,17,30,
+  255,225,19,255,241,31,49,16,15,223,225,16,14,241,17,17,17,17,241,17,14,1,16,0,
+  255,241,31,1,16,0,255,240,31,0,1,16,255,241,15,31,240,15,224,1,30,255,240,1,
+  255,241,31,240,0,15,255,241,31,199,241,30,56,128,3,239,113,28,7,240,0,248,129,31,
+  15,112,0,193,17,30,49,145,17,15,113,16,255,241,31,1,17,0,15,224,1,240,0,30,
+  0,17,16,255,241,31,8,224,0,7,112,0,14,128,0,0,2,32,0,2,32,0,18,0,
+  7,96,0,240,128,31,8,129,31,248,241,31,255,129,16,248,1,15,240,128,31,8,129,16,
+  8,1,15,248,129,16,255,241,31,240,128,31,40,129,19,48,129,0,254,241,31,9,16,0,
+  240,128,223,8,141,255,248,243,31,255,129,0,248,1,31,249,145,31,0,140,192,249,159,63,
+  255,241,31,240,128,29,8,241,15,255,1,16,248,129,31,248,129,31,248,1,31,248,129,31,
+  8,128,31,240,1,15,248,129,16,248,1,15,248,143,255,8,129,31,240,0,15,248,129,16,
+  248,143,255,248,129,31,24,128,0,16,129,19,40,129,30,200,128,0,255,240,31,8,129,15,
+  248,1,16,248,129,31,24,128,15,224,1,30,248,128,1,248,128,31,240,1,31,248,129,15,
+  216,129,31,32,128,31,216,129,15,248,13,208,248,143,63,200,129,30,40,129,19,24,1,1,
+  254,240,30,1,241,31,255,17,16,239,225,15,16,0,3,56,128,1,16,128,1,8,0,
 };
 
-const glyph_t font_large[95] = {{0,0,4},{0,2,3},{28,5,6},{98,7,8},{196,6,7},{280,6,7},{364,9,10},{490,2,3},{518,4,5},{574,4,5},{630,5,6},{700,6,7},{784,2,3},{812,6,7},{896,2,3},{924,6,7},{1008,6,7},{1092,6,7},{1176,6,7},{1260,6,7},{1344,6,7},{1428,6,7},{1512,6,7},{1596,6,7},{1680,6,7},{1764,6,7},{1848,2,3},{1876,2,3},{1904,5,6},{1974,6,7},{2058,5,6},{2128,6,7},{2212,9,10},{2338,6,7},{2422,6,7},{2506,6,7},{2590,6,7},{2674,6,7},{2758,6,7},{2842,6,7},{2926,6,7},{3010,6,7},{3094,6,7},{3178,6,7},{3262,6,7},{3346,8,9},{3458,6,7},{3542,6,7},{3626,6,7},{3710,7,8},{3808,6,7},{3892,6,7},{3976,6,7},{4060,6,7},{4144,6,7},{4228,8,9},{4340,7,8},{4438,6,7},{4522,6,7},{4606,4,5},{4662,6,7},{4746,4,5},{4802,6,7},{4886,6,7},{4970,0,1},{4970,6,7},{5054,6,7},{5138,6,7},{5222,6,7},{5306,6,7},{5390,6,7},{5474,6,7},{5558,6,7},{5642,2,3},{5670,4,5},{5726,6,7},{5810,2,3},{5838,8,9},{5950,6,7},{6034,6,7},{6118,6,7},{6202,6,7},{6286,6,7},{6370,6,7},{6454,6,7},{6538,6,7},{6622,6,7},{6706,8,9},{6818,7,8},{6916,6,7},{7000,6,7},{7084,5,6},{7154,2,3},{7182,5,6},{7252,6,7}};
-const uint8_t font_large_bits[917] = {
-  255,198,191,49,0,28,0,0,192,0,112,0,96,3,255,199,255,129,13,252,31,255,7,54,
-  128,51,240,13,111,207,219,195,62,48,7,140,1,115,0,14,192,1,56,3,198,0,62,248,
-  31,63,198,156,49,127,252,15,222,7,184,1,102,12,0,7,128,255,243,255,13,96,3,216,
-  0,54,128,253,127,254,207,6,240,1,56,0,31,192,6,0,6,128,1,248,1,126,0,6,
-  128,1,0,6,128,3,6,128,1,96,0,24,0,6,128,1,0,6,128,1,112,0,31,240,
-  1,31,240,1,28,0,254,195,255,49,96,12,24,255,135,255,96,96,24,24,255,199,255,1,
-  96,0,24,6,199,225,49,124,140,27,127,134,143,97,48,28,28,51,198,140,241,127,184,15,
-  63,192,31,0,6,128,1,255,199,255,241,99,252,24,51,198,140,49,127,140,15,254,195,255,
-  49,99,204,24,247,135,249,48,0,12,0,195,199,252,241,7,124,0,238,195,255,49,99,204,
-  24,255,135,251,224,51,252,29,99,198,152,241,127,248,15,24,6,134,129,97,96,56,192,0,
-  120,0,63,224,28,24,6,102,128,25,96,6,152,1,102,128,25,96,24,56,7,252,0,30,
-  0,3,6,192,1,48,110,204,27,63,128,7,192,31,248,15,7,199,156,177,111,108,27,255,
-  134,191,193,103,248,31,255,199,24,48,6,252,31,254,199,255,241,127,204,24,51,198,255,225,
-  61,248,15,255,199,128,49,96,12,24,3,198,255,241,127,12,24,3,198,255,225,63,248,15,
-  255,199,140,49,99,204,24,3,134,255,241,127,204,0,51,192,12,48,0,248,15,255,199,128,
-  49,99,204,31,243,195,255,241,127,192,0,48,192,255,241,127,12,24,3,198,255,241,127,12,
-  24,3,198,192,48,112,12,24,3,198,255,241,63,252,31,255,7,28,128,15,124,31,143,199,
-  255,240,127,0,24,0,6,128,1,96,252,31,255,199,0,240,31,252,7,3,192,255,225,127,
-  252,31,255,199,0,48,0,252,31,254,135,255,240,127,12,24,3,198,255,225,63,252,31,255,
-  199,24,48,6,252,1,62,128,255,240,127,12,24,3,199,255,224,127,0,24,255,199,255,49,
-  3,204,1,255,135,247,225,97,252,24,51,198,140,49,127,140,15,3,192,0,240,127,252,31,
-  3,192,0,240,63,252,31,0,6,128,241,127,252,15,255,193,255,0,112,0,28,255,195,127,
-  240,63,252,31,0,6,252,1,127,0,24,255,199,255,240,120,124,31,248,0,28,128,15,124,
-  31,143,199,7,240,3,192,31,240,199,15,240,1,12,28,195,199,252,241,103,124,24,7,198,
-  255,247,255,13,96,3,216,1,240,1,240,1,240,1,240,1,112,12,96,3,216,255,247,255,
-  49,0,14,192,1,112,0,56,0,12,0,128,1,96,0,24,0,6,128,1,96,96,14,216,
-  7,182,129,109,224,31,240,199,255,241,127,96,24,24,6,254,1,63,192,15,248,7,134,129,
-  97,96,24,24,6,252,128,127,96,24,24,198,255,241,127,192,15,248,7,182,129,109,224,27,
-  240,6,6,224,127,252,31,27,192,6,48,0,192,207,248,55,134,141,97,227,255,240,223,255,
-  241,127,96,0,24,0,254,1,127,236,31,251,7,0,12,0,239,255,251,223,255,241,127,96,
-  3,216,1,254,1,119,252,31,255,7,254,129,127,96,0,248,7,254,129,1,224,31,240,7,
-  254,129,127,96,0,24,0,254,1,127,192,15,248,7,134,129,97,224,31,240,3,252,143,255,
-  99,24,24,6,254,1,63,192,15,248,7,134,129,97,224,255,240,63,254,129,127,192,0,24,
-  0,6,128,1,192,25,248,6,182,129,109,96,31,152,3,6,240,63,252,31,24,6,134,129,
-  97,224,15,248,7,128,1,96,224,31,248,3,126,128,63,0,28,0,7,254,128,31,224,15,
-  248,7,128,1,127,192,31,0,6,254,129,63,96,24,56,7,252,0,30,192,15,56,7,134,
-  129,63,227,223,0,54,128,141,255,227,127,24,7,230,129,125,224,27,120,6,142,1,6,248,
-  63,191,223,0,54,128,253,127,255,223,0,54,128,253,126,254,15,24,0,6,192,0,112,0,
-  56,0,12,128,1,
+const glyph_t font_large[95] = {{0,5,5},{70,2,3},{98,5,6},{168,7,8},{266,7,8},{364,7,8},{462,7,8},{560,2,3},{588,3,4},{630,3,4},{672,5,6},{742,7,8},{840,3,4},{882,6,7},{966,2,3},{994,7,8},{1092,7,8},{1190,5,6},{1260,7,8},{1358,7,8},{1456,7,8},{1554,7,8},{1652,7,8},{1750,7,8},{1848,7,8},{1946,7,8},{2044,2,3},{2072,3,4},{2114,6,7},{2198,6,7},{2282,6,7},{2366,7,8},{2464,7,8},{2562,7,8},{2660,7,8},{2758,7,8},{2856,7,8},{2954,7,8},{3052,7,8},{3150,7,8},{3248,7,8},{3346,5,6},{3416,7,8},{3514,7,8},{3612,7,8},{3710,7,8},{3808,7,8},{3906,7,8},{4004,7,8},{4102,7,8},{4200,7,8},{4298,7,8},{4396,7,8},{4494,7,8},{4592,7,8},{4690,7,8},{4788,7,8},{4886,7,8},{4984,7,8},{5082,3,4},{5124,7,8},{5222,3,4},{5264,7,8},{5362,6,7},{5446,3,4},{5488,6,7},{5572,6,7},{5656,6,7},{5740,6,7},{5824,6,7},{5908,6,7},{5992,6,7},{6076,6,7},{6160,2,3},{6188,5,6},{6258,6,7},{6342,3,4},{6384,7,8},{6482,6,7},{6566,6,7},{6650,6,7},{6734,6,7},{6818,5,6},{6888,6,7},{6972,5,6},{7042,6,7},{7126,7,8},{7224,7,8},{7322,6,7},{7406,6,7},{7490,6,7},{7574,5,6},{7644,2,3},{7672,5,6},{7742,7,8}};
+const uint8_t font_large_bits[980] = {
+  0,0,0,0,0,0,0,0,192,191,241,111,60,0,15,0,0,240,0,60,0,144,0,127,
+  192,31,64,2,252,1,127,0,9,64,4,124,193,255,241,127,252,31,236,1,35,240,8,188,
+  3,127,0,4,192,25,60,6,131,1,59,240,31,204,5,115,193,127,192,30,128,5,15,192,
+  3,192,31,252,31,3,198,128,241,127,240,7,108,0,31,0,1,240,1,108,0,32,0,8,
+  192,31,240,7,252,1,8,0,2,0,8,192,3,112,128,1,96,0,24,0,6,128,1,96,
+  0,128,1,96,0,24,128,7,120,0,6,240,1,31,192,0,192,31,252,31,227,198,152,49,
+  103,252,31,252,1,4,192,1,48,0,255,199,255,193,96,60,28,131,199,160,49,110,252,25,
+  28,198,128,49,102,140,25,99,198,152,241,127,112,6,224,0,60,192,9,48,2,255,199,255,
+  1,8,124,4,31,199,132,49,97,76,24,243,199,120,0,31,240,31,111,198,152,49,102,140,
+  31,128,193,0,48,120,140,31,99,192,28,240,1,60,0,156,193,255,49,102,140,25,99,198,
+  255,193,25,112,0,127,198,152,49,102,140,29,255,1,63,0,17,64,4,0,8,196,3,113,
+  128,1,240,0,103,192,16,60,28,3,6,36,0,9,64,2,144,0,36,0,9,12,24,15,
+  7,103,0,9,192,3,96,0,3,240,0,140,27,227,198,184,241,7,112,0,252,193,255,49,
+  111,204,27,243,198,191,193,7,240,31,255,199,24,48,6,140,1,255,7,255,241,127,252,31,
+  99,198,152,49,102,252,31,156,1,127,240,127,12,24,3,198,128,241,112,48,4,255,199,255,
+  49,96,12,24,15,7,127,0,15,252,31,255,199,152,49,102,140,25,99,198,128,241,127,252,
+  31,99,192,24,48,6,140,1,3,0,127,240,127,140,25,99,198,152,241,126,176,31,255,199,
+  255,1,6,128,1,96,192,255,241,127,12,24,255,199,255,241,127,12,24,0,1,192,49,96,
+  12,24,255,199,127,48,0,252,31,255,7,60,0,9,112,6,15,199,128,241,127,252,31,0,
+  6,128,1,96,0,24,0,198,255,241,127,240,1,112,0,31,240,127,252,31,255,199,255,193,
+  1,64,0,112,192,255,241,127,240,7,255,199,128,49,96,12,24,255,7,127,240,127,252,31,
+  99,192,24,48,6,252,1,28,0,127,240,127,12,26,131,198,224,241,127,240,27,255,199,255,
+  49,14,140,3,227,193,223,193,97,112,24,127,198,152,49,102,140,25,227,199,96,48,0,12,
+  0,255,199,255,241,127,12,0,3,192,127,240,127,0,24,0,6,128,241,127,252,7,127,192,
+  127,0,120,0,24,128,199,127,240,7,252,31,255,7,120,0,14,128,7,255,199,255,241,112,
+  124,30,240,0,24,0,15,124,30,15,199,3,240,1,192,31,224,7,252,241,1,60,0,3,
+  199,224,49,110,140,25,115,198,135,241,96,252,31,255,199,128,49,0,124,0,124,0,24,0,
+  30,0,30,0,198,128,241,127,252,31,16,0,7,240,0,12,0,15,0,7,0,1,0,32,
+  0,8,0,2,128,0,32,0,200,0,240,0,48,0,224,1,252,1,97,64,24,240,7,252,
+  241,127,252,31,16,6,132,1,127,128,7,224,1,252,1,97,64,24,16,6,132,1,30,192,
+  31,16,6,132,241,127,252,31,224,1,252,1,105,64,26,240,6,184,1,1,240,31,255,199,
+  4,48,1,12,0,224,1,252,13,97,67,216,240,63,252,243,127,252,31,16,0,4,0,127,
+  128,31,243,199,252,1,0,67,192,16,240,252,63,255,252,31,255,7,120,0,22,192,29,16,
+  198,127,240,127,0,24,240,7,252,1,127,128,31,240,7,252,1,126,192,31,240,7,4,0,
+  1,192,31,224,7,120,0,127,64,24,16,6,252,1,30,192,255,240,63,132,1,97,192,31,
+  224,1,120,0,127,64,24,16,6,252,15,255,195,31,240,7,24,0,7,64,0,96,6,188,
+  1,105,64,26,144,7,68,0,1,252,7,255,193,255,1,97,192,7,240,7,128,1,96,192,
+  31,240,7,28,0,31,0,30,0,6,224,1,31,192,1,240,1,252,1,126,128,7,224,7,
+  252,1,31,192,29,240,7,32,0,8,192,31,112,7,124,0,127,3,216,0,54,252,15,255,
+  64,28,144,7,164,1,105,192,27,112,6,24,192,31,112,6,159,199,128,241,127,252,31,3,
+  198,231,193,25,240,7,96,0,56,0,15,192,1,96,0,24,0,7,64,0,
 };
 
-const glyph_t font_large_digits[10] = {{0,5,6},{70,5,6},{140,5,6},{210,5,6},{280,5,6},{350,5,6},{420,5,6},{490,5,6},{560,5,6},{630,5,6}};
-const uint8_t font_large_digits_bits[88] = {
-  254,195,255,49,96,252,31,254,131,129,97,96,252,31,255,7,128,97,112,28,30,195,199,159,
-  225,99,24,12,7,199,140,241,127,184,15,63,192,31,0,6,252,31,255,199,143,241,99,204,
-  24,243,199,248,224,63,252,31,51,198,253,97,62,12,0,195,199,252,241,7,124,0,238,195,
-  255,49,99,252,31,238,131,207,240,119,140,25,255,135,255,0,
+const glyph_t font_large_digits[10] = {{0,6,7},{84,4,5},{140,6,7},{224,6,7},{308,6,7},{392,6,7},{476,6,7},{560,6,7},{644,6,7},{728,6,7}};
+const uint8_t font_large_digits_bits[102] = {
+  252,193,255,49,110,204,25,255,7,127,0,1,112,0,255,199,255,193,96,60,28,131,199,184,
+  241,103,112,24,3,198,152,49,102,140,25,255,7,103,0,14,192,3,156,192,255,241,127,0,
+  2,31,193,199,49,97,76,24,243,199,120,0,31,240,31,111,198,152,49,126,0,6,3,192,
+  224,49,126,204,1,31,192,3,192,25,252,31,99,198,152,241,127,112,6,28,192,159,49,102,
+  140,29,255,1,63,0,
 };
 
diff --git a/games/balatro/src/assets.h b/games/balatro/src/assets.h
index 0f15b40..1167937 100644
--- a/games/balatro/src/assets.h
+++ b/games/balatro/src/assets.h
@@ -1,50 +1,30 @@
-/* Generated by tools/mkassets.py: do not edit. */
+/* Generated by tools/conformite/jokeria_art.py: do not edit. */
 #ifndef ASSETS_H
 #define ASSETS_H
 #include <stdint.h>
 
 #define ART_CW 35
 #define ART_CH 47
-#define ART_NSPRITES 385
-#define ART_NGROUPS 6
-#define ART_TMPL_JOKER 0
-#define ART_TMPL_CONS 157
-#define ART_TMPL_VOUCH 211
-#define ART_G_JOKER 0
-#define ART_G_CONS 1
-#define ART_G_VOUCH 2
-#define ART_G_DECK 3
-#define ART_G_MISC 4
-#define ART_G_LOGO 5
+#define ART_NSPRITES 41
+#define ART_NGROUPS 3
 #define SPR_TMPL_JOKER 0
 #define SPR_J 1
-#define SPR_JSOUL 151
-#define SPR_TMPL_CONS 157
-#define SPR_C 158
-#define SPR_SOULGEM 210
-#define SPR_TMPL_VOUCH 211
-#define SPR_V 212
-#define SPR_P 244
-#define SPR_E 259
-#define SPR_SEAL 269
-#define SPR_DEBUFF 273
-#define SPR_F 274
-#define SPR_B 326
-#define SPR_T 357
-#define SPR_SHOP 381
-#define SPR_STAKE 382
-#define SPR_CHIP 383
-#define SPR_LOGO 384
+#define SPR_PIP_S 27
+#define SPR_PIP_L 31
+#define SPR_FACE 35
+#define SPR_BACK 38
+#define SPR_COIN 39
+#define SPR_LOGO 40
 typedef struct { uint32_t off : 24, group : 8; uint8_t w, h; } art_sprite_t;
 extern const art_sprite_t art_sprites[ART_NSPRITES];
 extern const uint8_t art_blob[];
-extern const uint16_t art_pal[]; /* the groups' palettes, one after the other */
+extern const uint16_t art_pal[];
 extern const uint16_t art_pal_off[ART_NGROUPS];
 extern const int16_t art_tmpl_of_group[ART_NGROUPS];
 typedef struct { uint16_t off; uint8_t w, adv; } glyph_t;
 #define FONT_SMALL_H 9
 #define FONT_MED_H 12
 #define FONT_LARGE_H 14
-extern const glyph_t font_small[99], font_med[95], font_large[95], font_large_digits[10];
+extern const glyph_t font_small[100], font_med[95], font_large[95], font_large_digits[10];
 extern const uint8_t font_small_bits[], font_med_bits[], font_large_bits[], font_large_digits_bits[];
 #endif
diff --git a/games/balatro/src/bg.c b/games/balatro/src/bg.c
index e695d57..7dcd602 100644
--- a/games/balatro/src/bg.c
+++ b/games/balatro/src/bg.c
@@ -1,294 +1,44 @@
-/* Balatro's animated paint background: its two shaders ('background' in a
- * run, 'splash' on the title screen) evaluated on a coarse grid, then
- * interpolated per pixel and turned into colours through a table. The paint
- * value is smooth, so interpolating it before the colour mapping keeps the
- * sharp colour bands of the original. */
-#ifndef PROF_NOINLINE
-#define PROF_NOINLINE
-#endif
+/* Jokeria's background (see bg.h), drawn for it. */
 #include "bg.h"
-extern uint32_t g_bg_version;
-#include <string.h>
 
-#define GW (320 / BG_CELL + 1)
-#define GH (240 / BG_CELL + 1)
-
-/* One grid of paint values, refreshed a few rows per frame. Each pass
- * samples the shader a pixel off in a different direction and blends into
- * the grid: over a few passes this averages the paint over each cell, which
- * is what a smaller picture of the original looks like (no aliasing). */
-/* In a run the paint value is smooth, so the grid keeps values and colours
- * them per pixel (sharp bands). The title's swirl is much finer: there the
- * grid keeps colours, averaged over each cell, so it stays smooth. */
-static union {
-  uint8_t v[GH][GW]; /* run: paint value, 0..255 */
-  C c[GH][GW];       /* title: colour */
-} G_;
-#define grid G_.v
-#define cgrid G_.c
-static int next_row, pass;
-static uint8_t drow[2][GW];
-static int drow_y = -1;
-static float t_real, t_spin;
-static C lut[256];
-static float colours[3][3], contrast = 1, spin = 0, spin_target = 0;
-static int mode; /* 0 run, 1 title */
-static int lut_dirty = 1;
-static float target[3][3], contrast_target = 1;
-
-/* ------------------------------------------------------------ fast maths */
-#define PI 3.14159265f
-static float fsin(float x) {
-  /* reduce to [-pi, pi] */
-  float k = x * (1.0f / (2 * PI));
-  k = (float)(int)(k + (k >= 0 ? 0.5f : -0.5f));
-  x -= k * 2 * PI;
-  /* parabola approximation with a correction (max error ~0.001) */
-  float y = 1.27323954f * x - 0.405284735f * x * (x < 0 ? -x : x);
-  return 0.225f * (y * (y < 0 ? -y : y) - y) + y;
-}
-static float fcos(float x) { return fsin(x + PI / 2); }
-static float fatan2(float y, float x) {
-  float ax = x < 0 ? -x : x, ay = y < 0 ? -y : y;
-  float mx = ax > ay ? ax : ay, mn = ax > ay ? ay : ax;
-  if (mx == 0) return 0;
-  float a = mn / mx, s = a * a;
-  float r = ((-0.0464964749f * s + 0.15931422f) * s - 0.327622764f) * s * a + a;
-  if (ay > ax) r = PI / 2 - r;
-  if (x < 0) r = PI - r;
-  return y < 0 ? -r : r;
-}
-static float fsqrt(float x) { return __builtin_sqrtf(x); }
-static float fabsf_(float x) { return x < 0 ? -x : x; }
-static float fmaxf_(float a, float b) { return a > b ? a : b; }
-static float fminf_(float a, float b) { return a < b ? a : b; }
-
-/* the paint value at a screen point, 0..255 */
-static int paint(float sx, float sy) {
-  const float diag = 400.f;
-  float ux = (sx - 160.f) / diag, uy = (sy - 120.f) / diag;
-  float vx, vy, speed;
-  if (mode == 0) ux -= 0.12f;
-  float len = fsqrt(ux * ux + uy * uy);
-  if (mode == 0) {
-    float sp = t_spin * 0.5f * 0.2f + 302.2f;
-    float ang = fatan2(uy, ux) + sp - 0.5f * 20.f * (spin * len + (1.f - spin));
-    vx = len * fcos(ang) * 30.f;
-    vy = len * fsin(ang) * 30.f;
-    speed = t_real * 2.f;
-  } else {
-    float s = t_real * 0.4f, ms = fminf_(6.f, s);
-    float ang = fatan2(uy, ux) + (2.2f + 0.4f * ms) * len - 1.f - s * 0.05f - ms * s * 0.02f;
-    vx = len * fcos(ang) * 30.f;
-    vy = len * fsin(ang) * 30.f;
-    speed = t_real * 6.f * 0.4f + 1033.f;
-  }
-  float u2x = vx + vy, u2y = vx + vy;
-  for (int i = 0; i < 5; i++) {
-    float m = fsin(fmaxf_(vx, vy));
-    u2x += m + vx;
-    u2y += m + vy;
-    vx += 0.5f * fcos(5.1123314f + 0.353f * u2y + speed * 0.131121f);
-    vy += 0.5f * fsin(u2x - 0.113f * speed);
-    float d = fcos(vx + vy) - fsin(vx * 0.711f - vy);
-    vx -= d;
-    vy -= d;
-  }
-  float l = fsqrt(vx * vx + vy * vy), r;
-  if (mode == 0) {
-    float cm = 0.25f * contrast + 0.5f * spin + 1.2f;
-    r = fminf_(2.f, fmaxf_(0.f, l * 0.035f * cm)); /* 0..2 */
-  } else {
-    r = fminf_(2.f, fmaxf_(-2.f, 1.5f + l * 0.12f - 0.17f * 10.f));
-    if (r < 0.2f) r = (r - 0.2f) * 0.6f + 0.2f;
-    r = (r + 2.f) * 0.5f; /* -2..2 -> 0..2 */
-  }
-  int v = (int)(r * 127.5f + 0.5f);
-  return v < 0 ? 0 : v > 255 ? 255 : v;
-}
-
-static void make_lut(void) {
-  for (int i = 0; i < 256; i++) {
-    float r = i / 127.5f, out[3];
-    if (mode == 0) {
-      float cm = 0.25f * contrast + 0.5f * spin + 1.2f;
-      float c1p = fmaxf_(0.f, 1.f - cm * fabsf_(1.f - r));
-      float c2p = fmaxf_(0.f, 1.f - cm * fabsf_(r));
-      float c3p = 1.f - fminf_(1.f, c1p + c2p);
-      float k = 0.3f / contrast;
-      for (int j = 0; j < 3; j++)
-        out[j] = k * colours[0][j] + (1 - k) * (colours[0][j] * c1p + colours[1][j] * c2p + colours[2][j] * c3p);
-    } else {
-      float s = r * 2.f - 2.f; /* back to -2..2 */
-      float c1p = fmaxf_(0.f, 1.f - 2.f * fabsf_(1.f - s));
-      float c2p = fmaxf_(0.f, 1.f - 2.f * s);
-      float cb = 1.f - fminf_(1.f, c1p + c2p);
-      static const float red[3] = {0xFE / 255.f, 0x5F / 255.f, 0x55 / 255.f};
-      static const float blue[3] = {0x00, 0x9D / 255.f, 1.f};
-      static const float black[3] = {0.6f * 79 / 255.f, 0.6f * 99 / 255.f, 0.6f * 103 / 255.f};
-      float fl = fmaxf_(c1p, c2p) * 5.f - 4.4f;
-      if (fl < 0) fl = 0;
-      for (int j = 0; j < 3; j++) {
-        float v = red[j] * c1p + blue[j] * c2p + black[j] * cb;
-        out[j] = v * (1 - fl) + fl;
-      }
-    }
-    int R = (int)(fminf_(1.f, fmaxf_(0.f, out[0])) * 255.f + .5f);
-    int G = (int)(fminf_(1.f, fmaxf_(0.f, out[1])) * 255.f + .5f);
-    int B = (int)(fminf_(1.f, fmaxf_(0.f, out[2])) * 255.f + .5f);
-    lut[i] = RGB(R, G, B);
-  }
-  lut_dirty = 0;
-}
-
-void bg_mode(int m) {
-  if (m != mode) {
-    mode = m;
-    lut_dirty = 1;
-    bg_reset();
-  }
-}
-
-static void set3(float d[3], uint32_t hex, float k) {
-  d[0] = ((hex >> 16) & 255) / 255.f * k;
-  d[1] = ((hex >> 8) & 255) / 255.f * k;
-  d[2] = (hex & 255) / 255.f * k;
-}
-
-/* Balatro's ease_background_colour: special/tertiary colours are optional (0). */
-void bg_colours(uint32_t col, uint32_t special, uint32_t tertiary, float contr, float spin_amount, int instant) {
-  if (special && tertiary) {
-    set3(target[1], col, 1.f);
-    set3(target[0], special, 1.f);
-    set3(target[2], tertiary, 1.f);
-  } else {
-    set3(target[1], col, 1.3f);
-    set3(target[2], col, special ? 0.4f : 0.7f);
-    if (special) set3(target[0], special, 1.f);
-    else set3(target[0], col, 0.9f);
-  }
-  contrast_target = contr;
-  spin_target = spin_amount;
-  if (instant) {
-    memcpy(colours, target, sizeof colours);
-    contrast = contr;
-    spin = spin_amount;
-  }
-  lut_dirty = 1;
-}
-
-/* the title's colour for one cell: the average over it (4 samples) */
-static C cell_colour(int gx, int gy) {
-  static const int8_t o[4][2] = {{-1, -1}, {1, 1}, {1, -1}, {-1, 1}};
-  unsigned r = 2, g = 2, b = 2;
-  for (int k = 0; k < 4; k++) {
-    C c = lut[paint((float)(gx * BG_CELL + o[k][0]), (float)(gy * BG_CELL + o[k][1]))];
-    r += c >> 11, g += (c >> 5) & 63, b += c & 31;
-  }
-  return (C)((r >> 2) << 11 | (g >> 2) << 5 | (b >> 2));
-}
-
-void bg_reset(void) {
-  next_row = 0;
-  if (mode == 1 && t_real < 20) t_real = 20; /* the title's steady state */
-  if (lut_dirty) make_lut();
-  for (int y = 0; y < GH; y++)
-    for (int x = 0; x < GW; x++) {
-      if (mode == 1) cgrid[y][x] = cell_colour(x, y);
-      else grid[y][x] = (uint8_t)paint((float)(x * BG_CELL), (float)(y * BG_CELL));
+static int style, off;
+static C ca, cb;
+static uint8_t vig_x[320], vig_y[240];
+static int ready;
+
+static const uint32_t COLS[][2] = {
+    {0x3B1F5C, 0x2E1748}, /* title */
+    {0x1F3A4D, 0x183041}, /* a table */
+    {0x4A2A1A, 0x3A2014}, /* a Gold table */
+    {0x3A2150, 0x2D1940}, /* the shop */
+    {0x2A2230, 0x221B28}, /* lost */
+};
+
+void bg_set(int s) {
+  style = s;
+  ca = HEXC(COLS[s][0]), cb = HEXC(COLS[s][1]);
+  if (!ready) {
+    for (int x = 0; x < 320; x++) {
+      int d = x < 160 ? 160 - x : x - 159;
+      vig_x[x] = (uint8_t)(d > 100 ? (d - 100) / 8 : 0);
     }
-  drow_y = -1;
-}
-
-/* Advance the animation by dt seconds, computing up to `rows` grid rows. */
-void bg_update(float dt, int rows) {
-  t_real += dt;
-  t_spin += dt * spin;
-  /* ease colours like the game (0.6 s) */
-  float k = dt / 0.6f * 3.f;
-  if (k > 1) k = 1;
-  int moving = 0;
-  for (int i = 0; i < 3; i++)
-    for (int j = 0; j < 3; j++) {
-      float d = target[i][j] - colours[i][j];
-      if (d > 0.002f || d < -0.002f) moving = 1, colours[i][j] += d * k;
-      else colours[i][j] = target[i][j];
+    for (int y = 0; y < 240; y++) {
+      int d = y < 120 ? 120 - y : y - 119;
+      vig_y[y] = (uint8_t)(d > 70 ? (d - 70) / 7 : 0);
     }
-  float dc = contrast_target - contrast, ds = spin_target - spin;
-  if (dc > 0.01f || dc < -0.01f) moving = 1, contrast += dc * k;
-  else contrast = contrast_target;
-  if (ds > 0.001f || ds < -0.001f) moving = 1, spin += ds * (dt * 2.f > 1 ? 1 : dt * 2.f);
-  else spin = spin_target;
-  if (moving) lut_dirty = 1;
-  static const int8_t jit[4][2] = {{-1, -1}, {1, 1}, {1, -1}, {-1, 1}};
-  int did = rows > 0;
-  while (rows-- > 0) {
-    float jx = jit[pass & 3][0], jy = jit[pass & 3][1];
-    if (mode == 1) {
-      /* the title's swirl moves fast: no averaging over time, over space */
-      if (lut_dirty) make_lut();
-      C *row = cgrid[next_row];
-      for (int x = 0; x < GW; x++) row[x] = cell_colour(x, next_row);
-    } else {
-      uint8_t *row = grid[next_row];
-      for (int x = 0; x < GW; x++) {
-        int v = paint(x * BG_CELL + jx, next_row * BG_CELL + jy);
-        row[x] = (uint8_t)((row[x] * 3 + v + 2) >> 2);
-      }
-    }
-    if (++next_row == GH) next_row = 0, pass++;
+    ready = 1;
   }
-  drow_y = -1;
-  if (did || lut_dirty) g_bg_version++;
 }
 
-/* title: colours interpolated in both directions, the three channels at
- * once (RGB565 spread over 32 bits leaves room for the weights) */
-/* (BG_CELL is 4: four pixels per cell below) */
-#define SPREAD(c) (((uint32_t)(c) | (uint32_t)(c) << 16) & 0x07E0F81Fu)
-static void bg_row_colour(C *dst, int y) {
-  int gy = y / BG_CELL, fy = y % BG_CELL;
-  const C *r0 = cgrid[gy], *r1 = cgrid[gy + 1 < GH ? gy + 1 : gy];
-  uint32_t wa = BG_CELL - fy, wb = fy;
-  uint32_t a = SPREAD(r0[0]) * wa + SPREAD(r1[0]) * wb; /* x4 */
-  for (int gx = 0; gx < GW - 1; gx++) {
-    uint32_t b = SPREAD(r0[gx + 1]) * wa + SPREAD(r1[gx + 1]) * wb;
-    uint32_t p0 = a << 2, p1 = a * 3 + b, p2 = (a + b) << 1, p3 = a + b * 3; /* x16 */
-    p0 = (p0 >> 4) & 0x07E0F81Fu, p1 = (p1 >> 4) & 0x07E0F81Fu;
-    p2 = (p2 >> 4) & 0x07E0F81Fu, p3 = (p3 >> 4) & 0x07E0F81Fu;
-    dst[0] = (C)(p0 | p0 >> 16), dst[1] = (C)(p1 | p1 >> 16);
-    dst[2] = (C)(p2 | p2 >> 16), dst[3] = (C)(p3 | p3 >> 16);
-    dst += 4;
-    a = b;
-  }
-}
+void bg_update(int dt_ms) { off += dt_ms; }
+int bg_animated(void) { return style == BG_TITLE || style == BG_SHOP; }
 
-PROF_NOINLINE void bg_row(C *dst, int y, int x0, int x1) {
-  (void)x1;
-  if (lut_dirty) make_lut();
-  if (mode == 1) {
-    bg_row_colour(dst, y);
-    return;
-  }
-  int gy = y / BG_CELL, fy = y % BG_CELL;
-  if (gy != drow_y) {
-    int gy1 = gy + 1 < GH ? gy + 1 : gy;
-    memcpy(drow[0], grid[gy], GW);
-    memcpy(drow[1], grid[gy1], GW);
-    drow_y = gy;
-  }
-  const uint8_t *r0 = drow[0], *r1 = drow[1];
-  unsigned wa = BG_CELL - fy, wb = fy;
-  int g0 = x0 / BG_CELL; /* cells left of x0 are hidden */
-  dst += g0 * BG_CELL;
-  unsigned a = r0[g0] * wa + r1[g0] * wb;
-  for (int gx = g0; gx < GW - 1; gx++) {
-    unsigned b = r0[gx + 1] * wa + r1[gx + 1] * wb;
-    int acc = (int)a * BG_CELL, d = (int)b - (int)a;
-    for (int k = 0; k < BG_CELL; k++) {
-      *dst++ = lut[acc >> 4];
-      acc += d;
-    }
-    a = b;
+void bg_row(C *dst, int y, int x0, int x1) {
+  int shift = (bg_animated() ? off / 90 : 0) + (y >> 1);
+  int vy = vig_y[y];
+  for (int x = x0; x < x1; x++) {
+    C c = ((x + shift) & 31) < 16 ? ca : cb;
+    int v = vy + vig_x[x];
+    dst[x] = v ? shade565(c, v > 20 ? 20 : v) : c;
   }
 }
diff --git a/games/balatro/src/bg.h b/games/balatro/src/bg.h
index 031e877..6724d93 100644
--- a/games/balatro/src/bg.h
+++ b/games/balatro/src/bg.h
@@ -1,12 +1,12 @@
+/* Jokeria's background: the stripes of a big top, slowly moving, darker at the edges. */
 #ifndef BG_H
 #define BG_H
 #include <stdint.h>
 #include "gfx.h"
 
-#define BG_CELL 4
-void bg_mode(int title);
-void bg_colours(uint32_t col, uint32_t special, uint32_t tertiary, float contrast, float spin, int instant);
-void bg_reset(void);
-void bg_update(float dt, int rows);
+enum { BG_TITLE, BG_TABLE, BG_GOLD, BG_SHOP, BG_LOST };
+void bg_set(int style);
+void bg_update(int dt_ms);
+int bg_animated(void);
 void bg_row(C *dst, int y, int x0, int x1);
 #endif
diff --git a/games/balatro/src/game.c b/games/balatro/src/game.c
index a8dc4d0..a8382e5 100644
--- a/games/balatro/src/game.c
+++ b/games/balatro/src/game.c
@@ -1,1539 +1,552 @@
-/* The run: helpers, creating cards, blinds, the shop, booster packs and
- * tags (game.lua, common_events.lua, button_callbacks.lua, tag.lua). */
+/* Jokeria: the rules. See game.h. */
 #include "game.h"
-#include <eadk.h>
 #include <string.h>
-#include "ev.h"
-#include "jokers.h"
+#include "gfx.h"
 #include "util.h"
 
 run_t R;
+play_t P;
 
-const char *const rank_names[15] = {"", "", "2", "3", "4", "5", "6", "7", "8", "9", "10", T("Jack"), T("Queen"), T("King"), T("Ace")};
-const char *const suit_names[4] = {T("Spade"), T("Heart"), T("Club"), T("Diamond")};
-const char *const suit_names_plural[4] = {T("Spades"), T("Hearts"), T("Clubs"), T("Diamonds")};
-
-/* ------------------------------------------------------------------ rng */
+/* ------------------------------------------------------------------ random (xoshiro128**) */
 static uint32_t rotl(uint32_t x, int k) { return (x << k) | (x >> (32 - k)); }
-
 uint32_t rng_u32(void) {
-  uint32_t *s = R.rng;
-  uint32_t r = rotl(s[1] * 5, 7) * 9, t = s[1] << 9;
-  s[2] ^= s[0];
-  s[3] ^= s[1];
-  s[1] ^= s[2];
-  s[0] ^= s[3];
-  s[2] ^= t;
-  s[3] = rotl(s[3], 11);
+  uint32_t *s = R.rng, r = rotl(s[1] * 5, 7) * 9, t = s[1] << 9;
+  s[2] ^= s[0], s[3] ^= s[1], s[1] ^= s[2], s[0] ^= s[3], s[2] ^= t, s[3] = rotl(s[3], 11);
   return r;
 }
-float rng_f(void) { return (rng_u32() >> 8) * (1.0f / 16777216.0f); }
-int rng_int(int a, int b) {
-  if (b <= a) return a;
-  return a + (int)(rng_u32() % (uint32_t)(b - a + 1));
-}
-
-void rng_seed_str(const char *s) {
-  uint32_t h = 2166136261u;
-  for (int i = 0; s[i]; i++) h = (h ^ (uint8_t)s[i]) * 16777619u;
-  for (int i = 0; i < 4; i++) {
-    h += 0x9E3779B9u;
-    uint32_t z = h;
-    z = (z ^ (z >> 16)) * 0x85EBCA6Bu;
-    z = (z ^ (z >> 13)) * 0xC2B2AE35u;
-    R.rng[i] = z ^ (z >> 16);
-  }
-  if (!(R.rng[0] | R.rng[1] | R.rng[2] | R.rng[3])) R.rng[0] = 1;
-}
-
-void rng_new_seed(void) {
-  static const char alphabet[] = "123456789ABCDEFGHIJKLMNPQRSTUVWXYZ";
-  uint32_t r = eadk_random() ^ (uint32_t)eadk_timing_millis();
-  for (int i = 0; i < 8; i++) {
-    r = (r * 1664525u + 1013904223u) ^ eadk_random();
-    R.seed[i] = alphabet[(r >> 16) % 34];
-  }
-  R.seed[8] = 0;
-}
-
-float probs_normal(void) {
-  float p = 1;
-  for (int i = 0; i < R.njokers; i++)
-    if (R.jokers[i].id == J_OOPS && !(R.jokers[i].flags & JF_DEBUFF)) p *= 2;
-  return p;
-}
-int prob(float odds) { return rng_f() < probs_normal() / odds; }
-
-/* ------------------------------------------------------------------ queries */
-int has_joker(int id) {
-  int n = 0;
-  for (int i = 0; i < R.njokers; i++)
-    if (R.jokers[i].id == id && !(R.jokers[i].flags & JF_DEBUFF)) n++;
-  return n;
-}
-int has_voucher(int v) { return (R.vouchers >> v) & 1; }
-int card_chip_nominal(int rank) { return rank == 14 ? 11 : rank > 10 ? 10 : rank; }
-
-int card_get_id(int ci) {
-  const card_t *c = &R.cards[ci];
-  return c->enh == E_STONE ? -1 : c->rank;
-}
-
-int card_is_face(int ci, int from_boss) {
-  const card_t *c = &R.cards[ci];
-  if ((c->flags & CF_DEBUFF) && !from_boss) return 0;
-  int id = card_get_id(ci);
-  return (id == 11 || id == 12 || id == 13 || has_joker(J_PAREIDOLIA)) ? 1 : 0;
-}
-
-static int red(int s) { return s == S_HEARTS || s == S_DIAMONDS; }
-
-int card_is_suit(int ci, int suit, int bypass_debuff, int flush_calc) {
-  const card_t *c = &R.cards[ci];
-  if (flush_calc) {
-    if (c->enh == E_STONE) return 0;
-    if (c->enh == E_WILD && !(c->flags & CF_DEBUFF)) return 1;
-    if (has_joker(J_SMEARED) && red(c->suit) == red(suit)) return 1;
-    return c->suit == suit;
-  }
-  if ((c->flags & CF_DEBUFF) && !bypass_debuff) return 0;
-  if (c->enh == E_STONE) return 0;
-  if (c->enh == E_WILD) return 1;
-  if (has_joker(J_SMEARED) && red(c->suit) == red(suit)) return 1;
-  return c->suit == suit;
-}
-
-int hand_size(void) {
-  int n = 8 + R.hand_size_mod + R.temp_handsize;
-  n += has_voucher(V_PAINT_BRUSH) + has_voucher(V_PALETTE);
-  for (int i = 0; i < R.njokers; i++) {
-    joker_t *j = &R.jokers[i];
-    if (j->flags & JF_DEBUFF) continue;
-    switch (j->id) {
-      case J_JUGGLER: n += 1; break;
-      case J_TROUBADOUR: n += 2; break;
-      case J_TURTLE_BEAN: n += j->a; break;
-      case J_MERRY_ANDY: n -= 1; break;
-      case J_STUNTMAN: n -= 2; break;
-    }
-  }
-  if (R.phase == PH_ROUND && R.blind == BL_MANACLE && !R.blind_disabled) n -= 1;
-  return n < 0 ? 0 : n > MAXHAND ? MAXHAND : n;
-}
-
-/* round_resets.hands / discards: the base plus the jokers that change them */
-int round_hands(void) {
-  int n = R.base_hands;
-  for (int i = 0; i < R.njokers; i++)
-    if (R.jokers[i].id == J_TROUBADOUR && !(R.jokers[i].flags & JF_DEBUFF)) n -= 1;
-  return n < 1 ? 1 : n;
-}
-int round_discards(void) {
-  int n = R.base_discards;
-  for (int i = 0; i < R.njokers; i++) {
-    if (R.jokers[i].flags & JF_DEBUFF) continue;
-    if (R.jokers[i].id == J_DRUNKARD) n += 1;
-    if (R.jokers[i].id == J_MERRY_ANDY) n += 3;
-  }
-  return n < 0 ? 0 : n;
-}
-
-int joker_slots(void) {
-  int n = R.joker_slots;
-  for (int i = 0; i < R.njokers; i++) n += R.jokers[i].ed == ED_NEG;
-  return n;
-}
-int cons_slots(void) {
-  int n = R.cons_slots;
-  for (int i = 0; i < R.ncons; i++) n += R.cons[i].ed == ED_NEG;
-  return n;
-}
-
-static int edition_extra(int ed) {
-  static const uint8_t e[5] = {0, 2, 3, 5, 5};
-  return e[ed & 7];
-}
-static int cost_of(int base, int ed) {
-  int c = (base + edition_extra(ed)) * 2 + 1; /* (base + extra + 0.5) * 2 */
-  c = c * (100 - R.discount) / 200;
-  return c < 1 ? 1 : c;
-}
-static int cons_base_cost(int id) { return id >= C_FAMILIAR ? 4 : 3; }
-static int is_planet(int id) { return id >= C_MERCURY && id <= C_ERIS; }
-
-int joker_sell_value(const joker_t *j) {
-  int c = cost_of(joker_info[j->id].cost, j->ed) / 2;
-  return (c < 1 ? 1 : c) + j->extra_value;
-}
-int cons_sell_value(const cons_t *k) {
-  int cost = cost_of(cons_base_cost(k->id), k->ed);
-  if (is_planet(k->id) && has_joker(J_ASTRONOMER)) cost = 0;
-  int c = cost / 2;
-  return (c < 1 ? 1 : c) + k->extra_value;
-}
-
-int item_cost(const sitem_t *it) {
-  if (it->flags & 1) return 0;
-  switch (it->kind) {
-    case IT_JOKER: return cost_of(joker_info[it->id].cost, it->ed);
-    case IT_CONS:
-      if (is_planet(it->id) && has_joker(J_ASTRONOMER)) return 0;
-      return cost_of(cons_base_cost(it->id), it->ed);
-    case IT_CARD: return cost_of(1, it->card.ed);
-    case IT_VOUCHER: return cost_of(10, 0);
-    case IT_PACK:
-      if (it->id / 3 == PK_CELESTIAL && has_joker(J_ASTRONOMER)) return 0;
-      return cost_of(4 + 2 * (it->id % 3), 0);
-  }
-  return 0;
-}
-
-static const uint8_t hand_base[NHANDS][4] = {
-    /* s_chips/5, s_mult, l_chips/5, l_mult */
-    {32, 16, 10, 3}, {28, 14, 8, 4}, {24, 12, 7, 3}, {20, 8, 8, 4}, {12, 7, 6, 3}, {8, 4, 5, 2},
-    {7, 4, 3, 2},    {6, 4, 6, 3},   {6, 3, 4, 2},   {4, 2, 4, 1},  {2, 2, 3, 1},  {1, 1, 2, 1},
+int rng_int(int a, int b) { return a + (int)(rng_u32() % (uint32_t)(b - a + 1)); }
+
+/* ------------------------------------------------------------------ data */
+const joker_def_t JOKERS[NJOKERS] = {
+    {T("Street Busker"), T("\003+3\020 Multi and\n\002+10\020 Points"), 0, 4},
+    {T("Red Lantern"), T("Each scoring \004red\020 card\n(\200 or \202) gives \003+2\020 Multi"), 0, 4},
+    {T("Night Owl"), T("Each scoring \004black\020 card\n(\177 or \201) gives \002+12\020 Points"), 0, 4},
+    {T("Low Tide"), T("Each scoring card\nfrom \0042 to 5\020 gives\n\003+3\020 Multi"), 0, 4},
+    {T("Seven Seas"), T("Each scoring \0047\020\ngives \003+7\020 Multi"), 0, 5},
+    {T("Matchmaker"), T("\002+25\020 Points for each\nrank that appears\n\004twice or more\020 in the hand"), 0, 5},
+    {T("Tightrope"), T("\003+12\020 Multi if you\nplay exactly \0043 cards"), 0, 4},
+    {T("Penny Jar"), T("\003+1\020 Multi for every\n\0054 coins\020 you have"), 0, 5},
+    {T("Lucky Clover"), T("Each scoring \201 has\n\0041 chance in 3\020 to\ngive \0051 coin"), 0, 4},
+    {T("Stagehand"), T("Earn \0052 coins\020 at the\nend of each table"), 0, 5},
+    {T("Encore"), T("On the \004last hand\020\nof a table: \002+20\020\nPoints and \016x1.5\020 Multi"), 0, 5},
+    {T("Pickpocket"), T("Earn \0051 coin\020 for each\ndiscard of \0044 cards\020\nor more"), 0, 4},
+    {T("Ringmaster"), T("\016x1.5\020 Multi when\n\0045 cards\020 score"), 1, 6},
+    {T("Fire-Eater"), T("Gains \003+1\020 Multi each\ntime you play a\n\004Flush"), 1, 6},
+    {T("Strongman"), T("\016x3\020 Multi if every\nscoring card is a\n\004J, Q or K"), 1, 7},
+    {T("Carousel"), T("\003+0 to +10\020 Multi,\na new spin\neach hand"), 1, 5},
+    {T("Royal Court"), T("\016x2\020 Multi if a \004K\020\nand a \004Q\020 both score"), 1, 6},
+    {T("Ace Pilot"), T("Each scoring \004Ace\020\ngives \016x1.5\020 Multi"), 1, 7},
+    {T("Snowball"), T("Gains \002+10\020 Points\neach time you\n\004win a table"), 1, 6},
+    {T("The Twins"), T("\003+10\020 Multi on a\n\004Two Pair\020 or a\n\004Full House"), 1, 6},
+    {T("Lamplighter"), T("Each \202 left \004in your\nhand\020 gives \003+3\020 Multi"), 1, 6},
+    {T("Usurer"), T("Interest goes up\nto \0052 coins\020 more"), 1, 5},
+    {T("Grand Finale"), T("\016x3\020 Multi when you\nhave \004no discards\020 left"), 2, 8},
+    {T("Phoenix"), T("Lose a table: play\nit \004again\020, once.\nThen it flies away"), 2, 8},
+    {T("Prism"), T("\016x1\020 Multi, plus \016x0.5\020\nfor each \004suit\020\namong scoring cards"), 2, 8},
+    {T("Gambler"), T("\016x4\020 Multi, but\n\0041 chance in 4\020\nof \016x0.5\020 instead"), 2, 7},
 };
-double hand_chips(int h) {
-  double v = hand_base[h][0] * 5.0 + hand_base[h][2] * 5.0 * (R.hands[h].level - 1);
-  return v < 0 ? 0 : v;
-}
-double hand_mult(int h) {
-  double v = hand_base[h][1] + (double)hand_base[h][3] * (R.hands[h].level - 1);
-  return v < 1 ? 1 : v;
-}
-
-void level_up(int h, int amount, int src) {
-  int old = R.hands[h].level;
-  int lv = R.hands[h].level + amount;
-  R.hands[h].level = (int16_t)(lv < 0 ? 0 : lv > 32000 ? 32000 : lv);
-  ev_t *v = ev_push(EV_LEVELUP);
-  if (v) {
-    v->a = (uint16_t)h;
-    v->d = R.hands[h].level;
-    v->b = (uint8_t)(src >= 0 && src < R.njokers ? 1 : 0);
-    v->c = (uint8_t)(src >= 0 && src < R.njokers ? src : 0);
-    v->p.i = old;
-  }
-}
-
-double blind_amount(int ante) {
-  static const int amounts[8] = {300, 800, 2000, 5000, 11000, 20000, 35000, 50000};
-  if (ante < 1) return 100;
-  if (ante <= 8) return amounts[ante - 1];
-  /* endless: a*(b+(k*c)^d)^c, then rounded down to 2 significant digits */
-  double a = 50000, b = 1.6, k = 0.75, c = ante - 8, d = 1 + 0.2 * (ante - 8);
-  /* pow with doubles, by exp/log done with float precision where fine */
-  double kc = k * c, base;
-  {
-    /* (k*c)^d */
-    double r = 1, x = kc;
-    int di = (int)d;
-    double frac = d - di;
-    for (int i = 0; i < di; i++) r *= x;
-    if (frac > 0) {
-      /* x^frac = exp(frac*ln x) */
-      double lx = 0, y = x;
-      while (y > 2) y /= 2.718281828459045, lx += 1;
-      while (y < 0.5) y *= 2.718281828459045, lx -= 1;
-      double t = (y - 1) / (y + 1), t2 = t * t, s = 0, p = t;
-      for (int i = 1; i < 30; i += 2) s += p / i, p *= t2;
-      lx += 2 * s;
-      double ex = frac * lx, e = 1, term = 1;
-      for (int i = 1; i < 30; i++) term *= ex / i, e += term;
-      r *= e;
-    }
-    base = b + r;
-  }
-  double amt = a;
-  for (int i = 0; i < (int)c; i++) amt *= base;
-  if (amt > 1e300) return amt;
-  amt = dfloor(amt);
-  /* amount - amount % 10^(floor(log10(amount)) - 1) */
-  double p = 1;
-  while (p * 10 <= amt) p *= 10;
-  p /= 10;
-  if (p >= 1) amt = amt - (amt - dfloor(amt / p) * p);
-  return amt;
-}
-
-const char *blind_name(int b) { return text_get(TXT_BLIND + b, 0); }
-
-/* ------------------------------------------------------------------ cards */
-card_t random_card(void) {
-  card_t c = {0};
-  c.rank = (uint8_t)rng_int(2, 14);
-  c.suit = (uint8_t)rng_int(0, 3);
-  return c;
-}
-
-int random_enhancement(int no_stone) {
-  for (;;) {
-    int e = rng_int(E_BONUS, E_LUCKY);
-    if (!(no_stone && e == E_STONE)) return e;
-  }
-}
-
-void blind_debuff_card(int ci);
 
-/* no free slot left for a new playing card */
-static int deck_full(void) {
-  if (R.ncards_alloc < MAXCARDS) return 0;
-  for (int i = 0; i < R.ncards_alloc; i++)
-    if (!(R.cards[i].flags & CF_USED)) return 0;
-  return 1;
-}
-
-int add_card_to_deck(card_t c, int area) {
-  int ci = -1;
-  for (int i = 0; i < R.ncards_alloc; i++)
-    if (!(R.cards[i].flags & CF_USED)) {
-      ci = i;
-      break;
-    }
-  if (ci < 0) {
-    if (R.ncards_alloc >= MAXCARDS) return -1;
-    ci = R.ncards_alloc++;
-  }
-  c.flags = (uint8_t)((c.flags & CF_DOWN) | CF_USED);
-  R.cards[ci] = c;
-  blind_debuff_card(ci);
-  if (area == A_HAND && R.nhand < MAXHAND) {
-    R.sel[R.nhand] = 0;
-    R.hand[R.nhand++] = (uint8_t)ci;
-  } else {
-    /* into the deck at a random place */
-    int p = rng_int(0, R.ndeck);
-    for (int i = R.ndeck; i > p; i--) R.deck[i] = R.deck[i - 1];
-    R.deck[p] = (uint8_t)ci;
-    R.ndeck++;
-    area = A_DECK;
-  }
-  ev_card_set(ci);
-  ev_card(EV_CARD_MOVE, ci, area, 0);
-  return ci;
-}
-
-static void remove_from(uint8_t *arr, uint8_t *n, int ci) {
-  for (int i = 0; i < *n; i++)
-    if (arr[i] == ci) {
-      for (int k = i; k < *n - 1; k++) arr[k] = arr[k + 1];
-      (*n)--;
-      return;
-    }
-}
-
-void destroy_card(int ci) {
-  remove_from(R.deck, &R.ndeck, ci);
-  remove_from(R.discard, &R.ndiscard, ci);
-  remove_from(R.play, &R.nplay, ci);
-  for (int i = 0; i < R.nhand; i++)
-    if (R.hand[i] == ci) {
-      for (int k = i; k < R.nhand - 1; k++) R.hand[k] = R.hand[k + 1], R.sel[k] = R.sel[k + 1];
-      R.nhand--;
-      break;
-    }
-  R.cards[ci].flags = 0;
-}
-
-/* ------------------------------------------------------------------ pools */
-static int in_use_joker(int id) {
-  /* used_jokers: owned, or shown in the shop or a pack */
+static const char *const HAND_NAMES[NHANDS] = {T("High Card"), T("Pair"),       T("Two Pair"),
+                                               T("Three of a Kind"), T("Straight"), T("Flush"),
+                                               T("Full House"), T("Four of a Kind"), T("Straight Flush")};
+/* Points and Multi of each poker hand at level 1, then what each level adds */
+static const uint8_t BASE_PTS[NHANDS] = {4, 8, 18, 25, 32, 36, 45, 70, 120};
+static const uint8_t BASE_MULT[NHANDS] = {1, 2, 2, 3, 4, 4, 5, 6, 9};
+static const uint8_t LVL_PTS[NHANDS] = {8, 14, 16, 22, 28, 26, 30, 36, 45};
+static const uint8_t LVL_MULT[NHANDS] = {1, 1, 2, 2, 2, 2, 3, 3, 5};
+const char *hand_name(int h) { return HAND_NAMES[h]; }
+double hand_points(int h) { return BASE_PTS[h] + (double)LVL_PTS[h] * (R.level[h] - 1); }
+double hand_mult(int h) { return BASE_MULT[h] + (double)LVL_MULT[h] * (R.level[h] - 1); }
+
+static const char *const TWISTS[NTWISTS][2] = {
+    {T("The Clock"), T("Only 3 hands")},
+    {T("The Drought"), T("Only 1 discard")},
+    {T("The Weight"), T("6 cards in hand")},
+    {T("The Taxman"), T("Each discard costs 2 coins")},
+    {T("The Wind"), T("After each hand, a new hand\nis dealt from the whole deck")},
+    {T("The Tower"), T("The target is half again\nas high")},
+};
+const char *twist_name(int t) { return TWISTS[t][0]; }
+const char *twist_desc(int t) { return TWISTS[t][1]; }
+static const char *const TABLES[3] = {T("Bronze Table"), T("Silver Table"), T("Gold Table")};
+const char *table_name(int t) { return TABLES[t]; }
+
+static const uint32_t SALON_BASE[NSALONS] = {300, 800, 2000, 4500, 9500, 18000, 32000, 55000};
+double target_for(int salon, int table) {
+  double base;
+  if (salon <= NSALONS) base = SALON_BASE[salon - 1];
+  else {
+    base = SALON_BASE[NSALONS - 1];
+    for (int s = NSALONS; s < salon; s++) base *= 1.8;
+  }
+  static const float k[3] = {1.0f, 1.6f, 2.4f};
+  double t = base * k[table];
+  if (table == TB_GOLD && R.twist == TW_TOWER) t *= 1.5;
+  /* round to two significant figures and a bit */
+  double step = 10;
+  while (t / step > 100) step *= 10;
+  return (double)(long long)(t / step + 0.5) * step;
+}
+int table_reward(int table) { return table == TB_BRONZE ? 3 : table == TB_SILVER ? 4 : 6; }
+
+/* ------------------------------------------------------------------ helpers */
+static int has(int id) {
   for (int i = 0; i < R.njokers; i++)
     if (R.jokers[i].id == id) return 1;
-  for (int i = 0; i < R.nshop; i++)
-    if (R.shop[i].kind == IT_JOKER && R.shop[i].id == id) return 1;
-  if (R.phase == PH_PACK)
-    for (int i = 0; i < R.npack; i++)
-      if (R.pack[i].kind == IT_JOKER && R.pack[i].id == id) return 1;
   return 0;
 }
-static int in_use_cons(int id) {
-  for (int i = 0; i < R.ncons; i++)
-    if (R.cons[i].id == id) return 1;
-  for (int i = 0; i < R.nshop; i++)
-    if (R.shop[i].kind == IT_CONS && R.shop[i].id == id) return 1;
-  if (R.phase == PH_PACK)
-    for (int i = 0; i < R.npack; i++)
-      if (R.pack[i].kind == IT_CONS && R.pack[i].id == id) return 1;
-  return 0;
-}
-
-static int deck_has_enh(int enh) {
-  for (int i = 0; i < R.ncards_alloc; i++)
-    if ((R.cards[i].flags & CF_USED) && R.cards[i].enh == enh) return 1;
-  return 0;
-}
-
-int create_joker_id(int rarity, int legendary) {
-  if (legendary) rarity = 4;
-  if (rarity < 0) {
-    float r = rng_f();
-    rarity = r > 0.95f ? 3 : r > 0.7f ? 2 : 1;
-  }
-  int pool[150], n = 0, showman = has_joker(J_RING_MASTER);
-  for (int id = 0; id < N_JOKER; id++) {
-    if (joker_info[id].rarity != rarity) continue;
-    if (!showman && in_use_joker(id)) continue;
-    if (id == J_GROS_MICHEL && R.gros_michel_extinct) continue;
-    if (id == J_CAVENDISH && !R.gros_michel_extinct) continue;
-    if (id == J_STEEL_JOKER && !deck_has_enh(E_STEEL)) continue;
-    if (id == J_STONE && !deck_has_enh(E_STONE)) continue;
-    if (id == J_LUCKY_CAT && !deck_has_enh(E_LUCKY)) continue;
-    if (id == J_TICKET && !deck_has_enh(E_GOLD)) continue;
-    if (id == J_GLASS && !deck_has_enh(E_GLASS)) continue;
-    pool[n++] = id;
-  }
-  if (!n) return J_JOKER;
-  return pool[rng_int(0, n - 1)];
-}
-
-int create_cons_id(int set) {
-  int a = set == 0 ? C_FOOL : set == 1 ? C_MERCURY : C_FAMILIAR, b = set == 0 ? C_WORLD : set == 1 ? C_ERIS : C_CRYPTID;
-  int pool[24], n = 0, showman = has_joker(J_RING_MASTER);
-  static const uint8_t softlock_hand[3] = {H_FIVE_KIND, H_FLUSH_HOUSE, H_FLUSH_FIVE};
-  for (int id = a; id <= b; id++) {
-    if (!showman && in_use_cons(id)) continue;
-    if (id >= C_PLANET_X && id <= C_ERIS && R.hands[softlock_hand[id - C_PLANET_X]].played == 0) continue;
-    pool[n++] = id;
-  }
-  if (!n) return set == 0 ? C_STRENGTH : set == 1 ? C_PLUTO : C_INCANTATION;
-  return pool[rng_int(0, n - 1)];
-}
-
-/* soulable creation for packs: The Soul / Black Hole replace the card rarely */
-static int create_cons_soulable(int set) {
-  int showman = has_joker(J_RING_MASTER);
-  if ((set == 0 || set == 2) && (showman || !in_use_cons(C_SOUL)) && rng_f() > 0.997f) return C_SOUL;
-  if ((set == 1 || set == 2) && (showman || !in_use_cons(C_BLACK_HOLE)) && rng_f() > 0.997f) return C_BLACK_HOLE;
-  return create_cons_id(set);
-}
-
-int poll_edition(float mod, int no_neg, int guaranteed) {
-  float p = rng_f();
-  if (guaranteed) {
-    if (p > 1 - 0.003f * 25 && !no_neg) return ED_NEG;
-    if (p > 1 - 0.006f * 25) return ED_POLY;
-    if (p > 1 - 0.02f * 25) return ED_HOLO;
-    if (p > 1 - 0.04f * 25) return ED_FOIL;
-    return 0;
-  }
-  float er = R.edition_rate;
-  if (p > 1 - 0.003f * mod && !no_neg) return ED_NEG;
-  if (p > 1 - 0.006f * er * mod) return ED_POLY;
-  if (p > 1 - 0.02f * er * mod) return ED_HOLO;
-  if (p > 1 - 0.04f * er * mod) return ED_FOIL;
-  return 0;
-}
-
-int joker_new_uid(void) { return ++R.next_uid ? R.next_uid : ++R.next_uid; }
-
-void joker_on_added(joker_t *j) {
-  (void)j;
-  if (j->id == J_CHAOS) R.free_rerolls++;
-  if (j->id == J_DRUNKARD) R.discards_left += 1;
-  if (j->id == J_MERRY_ANDY) R.discards_left += 3;
-  if (j->id == J_CHICOT && R.phase == PH_ROUND && R.blind >= BL_OX && !R.blind_disabled) R.blind_disabled = 2;
-}
-
-void joker_add(int id, int ed, int silent) {
-  (void)silent;
-  if (R.njokers >= MAXJ) return;
-  joker_t *j = &R.jokers[R.njokers];
-  memset(j, 0, sizeof *j);
-  j->id = (uint8_t)id;
-  j->uid = (uint16_t)joker_new_uid();
-  joker_init(j);
-  j->ed = (uint8_t)(ed < 0 ? poll_edition(1, 0, 0) : ed);
-  R.njokers++;
-  joker_on_added(j);
-  ev_t *v = ev_push(EV_JOKER_ADD);
-  if (v) v->a = j->uid, v->b = j->id, v->c = j->ed, v->d = (int16_t)(R.njokers - 1);
-}
+static int gold_twist(int t) { return R.table == TB_GOLD && R.twist == t; }
+static int hand_size(void) { return gold_twist(TW_WEIGHT) ? 6 : 8; }
+static int max_hands(void) { return gold_twist(TW_CLOCK) ? 3 : 5; }
+static int max_discards(void) { return gold_twist(TW_DROUGHT) ? 1 : 3; }
 
-void joker_remove(int idx, int sold) {
-  if (idx < 0 || idx >= R.njokers) return;
-  joker_t *j = &R.jokers[idx];
-  ev_t *v = ev_push(EV_JOKER_REMOVE);
-  if (v) v->a = j->uid, v->b = (uint8_t)sold;
-  if (!(j->flags & JF_DEBUFF)) {
-    if (j->id == J_CHAOS && R.free_rerolls > 0) R.free_rerolls--;
-    if (j->id == J_DRUNKARD) R.discards_left = R.discards_left > 1 ? R.discards_left - 1 : 0;
-    if (j->id == J_MERRY_ANDY) R.discards_left = R.discards_left > 3 ? R.discards_left - 3 : 0;
-  }
-  for (int i = idx; i < R.njokers - 1; i++) R.jokers[i] = R.jokers[i + 1];
-  R.njokers--;
-}
-
-void add_cons(int id, int ed) {
-  if (R.ncons >= MAXCONS) return;
-  cons_t *c = &R.cons[R.ncons++];
-  c->id = (uint8_t)id;
-  c->ed = (uint8_t)ed;
-  c->uid = (uint16_t)joker_new_uid();
-  c->extra_value = 0;
-  ev_t *v = ev_push(EV_CONS_ADD);
-  if (v) v->a = c->uid, v->b = c->id, v->c = c->ed;
-}
-
-static void remove_cons(int idx) {
-  ev_t *v = ev_push(EV_CONS_REMOVE);
-  if (v) v->a = R.cons[idx].uid;
-  for (int i = idx; i < R.ncons - 1; i++) R.cons[i] = R.cons[i + 1];
-  R.ncons--;
-}
-
-/* ------------------------------------------------------------------ tags */
-int tag_for_skip(void) {
-  int pool[N_TAG], n = 0;
-  for (int t = 0; t < N_TAG; t++)
-    if (tag_info[t].min_ante <= R.ante) pool[n++] = t;
-  return pool[rng_int(0, n - 1)];
-}
-
-static int random_visible_hand(void) {
-  int pick[NHANDS], n = 0;
-  for (int h = 0; h < NHANDS; h++)
-    if (R.hands[h].visible) pick[n++] = h;
-  return pick[rng_int(0, n - 1)];
-}
-
-static void add_tag_orb(int t, int orb) {
-  /* Double Tag copies the next tag (not another Double Tag) */
-  int copies = 0;
-  for (int i = 0; i < R.ntags; i++)
-    if (R.tags[i] == TAG_DOUBLE && t != TAG_DOUBLE) {
-      for (int k = i; k < R.ntags - 1; k++) R.tags[k] = R.tags[k + 1], R.tag_orbital[k] = R.tag_orbital[k + 1];
-      R.ntags--;
-      i--;
-      copies++;
-    }
-  if (R.ntags < MAXTAGS) {
-    R.tags[R.ntags] = (uint8_t)t;
-    R.tag_orbital[R.ntags++] = (int8_t)orb;
-  }
-  for (int i = 0; i < copies; i++) {
-    ev_popup(TG_CENTER, 0, T("Double Tag"), PC_ATTN);
-    add_tag_orb(t, orb);
-  }
-}
-
-void add_tag(int t) { add_tag_orb(t, t == TAG_ORBITAL ? random_visible_hand() : -1); }
-
-static void tag_remove(int i) {
-  for (int k = i; k < R.ntags - 1; k++) R.tags[k] = R.tags[k + 1], R.tag_orbital[k] = R.tag_orbital[k + 1];
-  R.ntags--;
-}
-
-/* 'immediate' tags */
-static void tags_immediate(void) {
-  for (int i = 0; i < R.ntags; i++) {
-    int t = R.tags[i], done = 1;
-    switch (t) {
-      case TAG_TOP_UP:
-        for (int k = 0; k < 2; k++)
-          if (R.njokers < joker_slots()) joker_add(create_joker_id(1, 0), -1, 0);
-        break;
-      case TAG_SKIP: R.money += R.skips * 5; break;
-      case TAG_GARBAGE: R.money += R.unused_discards; break;
-      case TAG_HANDY: R.money += R.hands_played; break;
-      case TAG_ECONOMY: R.money += R.money > 40 ? 40 : R.money > 0 ? R.money : 0; break;
-      case TAG_ORBITAL: level_up(R.tag_orbital[i] >= 0 ? R.tag_orbital[i] : random_visible_hand(), 3, -1); break;
-      default: done = 0;
-    }
-    if (done) {
-      ev_money();
-      tag_remove(i);
-      i--;
-    }
-  }
-}
-
-/* 'new_blind_choice' tags: returns 1 if one applied (it may open a pack) */
-static int tags_new_blind_choice(void) {
-  for (int i = 0; i < R.ntags; i++) {
-    int t = R.tags[i];
-    int pk = -1;
-    switch (t) {
-      case TAG_CHARM: pk = PK_ARCANA * 3 + 2; break;
-      case TAG_METEOR: pk = PK_CELESTIAL * 3 + 2; break;
-      case TAG_ETHEREAL: pk = PK_SPECTRAL * 3; break;
-      case TAG_STANDARD: pk = PK_STANDARD * 3 + 2; break;
-      case TAG_BUFFOON: pk = PK_BUFFOON * 3 + 2; break;
-      case TAG_BOSS:
-        tag_remove(i);
-        R.boss_rerolled = 1;
-        {
-          int get_new_boss(void);
-          R.boss = (uint8_t)get_new_boss();
-        }
-        return 1;
-      default: continue;
-    }
-    tag_remove(i);
-    pack_open(pk / 3, pk % 3, 1);
-    return 1;
-  }
-  return 0;
-}
-
-/* ------------------------------------------------------------------ blinds */
-int get_new_boss(void) {
-  int eligible[N_BLIND], n = 0, min_use = 100;
-  int ante = R.ante < 1 ? 1 : R.ante;
-  for (int b = BL_OX; b < N_BLIND; b++) {
-    const blind_info_t *bi = &blind_info[b];
-    int ok;
-    if (!bi->showdown) ok = bi->min <= ante && (ante % WIN_ANTE != 0 || R.ante < 2);
-    else ok = R.ante % WIN_ANTE == 0 && R.ante >= 2;
-    if (ok && R.bosses_used[b] < min_use) min_use = R.bosses_used[b];
-    eligible[b] = ok;
-  }
-  for (int b = BL_OX; b < N_BLIND; b++)
-    if (eligible[b] && R.bosses_used[b] == min_use) eligible[n++] = b;
-  int boss = n ? eligible[rng_int(0, n - 1)] : BL_HOOK;
-  R.bosses_used[boss]++;
-  return boss;
-}
-
-static void reset_round_cards(void) {
-  /* reset_idol_card, reset_mail_rank, reset_ancient_card, reset_castle_card */
-  int valid[MAXCARDS], n = 0;
-  for (int i = 0; i < R.ncards_alloc; i++)
-    if ((R.cards[i].flags & CF_USED) && R.cards[i].enh != E_STONE) valid[n++] = i;
-  R.idol_rank = 14, R.idol_suit = S_SPADES, R.mail_rank = 14, R.castle_suit = S_SPADES;
-  if (n) {
-    int c = valid[rng_int(0, n - 1)];
-    R.idol_rank = R.cards[c].rank, R.idol_suit = R.cards[c].suit;
-    R.mail_rank = R.cards[valid[rng_int(0, n - 1)]].rank;
-    R.castle_suit = R.cards[valid[rng_int(0, n - 1)]].suit;
-  }
-  int s;
-  do s = rng_int(0, 3); while (s == R.ancient_suit);
-  R.ancient_suit = (uint8_t)s;
-}
-
-static void next_voucher(void) {
-  int pool[32], n = 0;
-  for (int v = 0; v < 32; v++) {
-    if (has_voucher(v)) continue;
-    if (v >= 16 && !has_voucher(v - 16)) continue;
-    pool[n++] = v;
-  }
-  R.shop_voucher = n ? (uint8_t)pool[rng_int(0, n - 1)] : (uint8_t)V_BLANK;
-}
-
-void blind_debuff_card(int ci) {
-  card_t *c = &R.cards[ci];
-  c->flags &= (uint8_t)~CF_DEBUFF;
-  if (R.phase != PH_ROUND || R.blind_disabled) return;
-  int s = -1;
-  switch (R.blind) {
-    case BL_CLUB: s = S_CLUBS; break;
-    case BL_GOAD: s = S_SPADES; break;
-    case BL_WINDOW: s = S_DIAMONDS; break;
-    case BL_HEAD: s = S_HEARTS; break;
-    case BL_PLANT:
-      if (card_is_face(ci, 1)) c->flags |= CF_DEBUFF;
-      return;
-    case BL_PILLAR:
-      if (c->flags & CF_PLAYED_ANTE) c->flags |= CF_DEBUFF;
-      return;
-    case BL_FINAL_LEAF: c->flags |= CF_DEBUFF; return;
+static void shuffle_deck(void) {
+  R.ndeck = NCARDS;
+  for (int i = 0; i < NCARDS; i++) R.deck[i] = (uint8_t)i;
+  for (int i = NCARDS - 1; i > 0; i--) {
+    int j = rng_int(0, i);
+    uint8_t t = R.deck[i];
+    R.deck[i] = R.deck[j], R.deck[j] = t;
   }
-  if (s >= 0 && card_is_suit(ci, s, 1, 0)) c->flags |= CF_DEBUFF;
-}
-
-void blind_debuff_all(void) {
-  for (int i = 0; i < R.ncards_alloc; i++)
-    if (R.cards[i].flags & CF_USED) blind_debuff_card(i);
-  for (int i = 0; i < R.ncards_alloc; i++)
-    if (R.cards[i].flags & CF_USED) ev_card_set(i);
 }
-
-/* Blind:disable */
-static void blind_disable(void) {
-  R.blind_disabled = 1;
-  for (int i = 0; i < R.njokers; i++)
-    if (R.jokers[i].flags & JF_DOWN) {
-      R.jokers[i].flags &= (uint8_t)~JF_DOWN;
-      ev_t *v = ev_push(EV_JOKER_SET);
-      if (v) v->a = R.jokers[i].uid, v->b = R.jokers[i].ed, v->c = R.jokers[i].flags;
-    }
-  if (R.blind == BL_WATER) R.discards_left += R.water_sub;
-  if (R.blind == BL_WHEEL || R.blind == BL_HOUSE || R.blind == BL_MARK || R.blind == BL_FISH)
-    for (int i = 0; i < R.nhand; i++) R.cards[R.hand[i]].flags &= (uint8_t)~CF_DOWN;
-  if (R.blind == BL_NEEDLE) R.hands_left += R.needle_sub;
-  if (R.blind == BL_WALL) R.blind_chips /= 2;
-  if (R.blind == BL_FINAL_BELL)
-    for (int i = 0; i < R.ncards_alloc; i++) R.cards[i].flags &= (uint8_t)~CF_FORCED;
-  if (R.blind == BL_FINAL_VESSEL) R.blind_chips /= 3;
-  if (R.blind == BL_FINAL_HEART)
-    for (int i = 0; i < R.njokers; i++) R.jokers[i].flags &= (uint8_t)~JF_DEBUFF;
-  blind_debuff_all();
-  ev_push(EV_BLIND_FLASH);
-  ev_sync();
-  if (R.blind == BL_MANACLE) {
-    extern void draw_phase(void);
-    /* one more card fits in the hand */
-    if (R.ndeck && R.nhand < hand_size()) {
-      int ci = R.deck[--R.ndeck];
-      R.sel[R.nhand] = 0;
-      R.hand[R.nhand++] = (uint8_t)ci;
-      ev_card(EV_CARD_MOVE, ci, A_HAND, 0);
-      sort_hand(R.sort_suit);
+static void draw_up(void) {
+  while (R.nhand < hand_size() && R.ndeck > 0) {
+    R.sel[R.nhand] = 0;
+    R.hand[R.nhand++] = R.deck[--R.ndeck];
+  }
+}
+
+/* ------------------------------------------------------------------ poker hands */
+int eval_hand(const uint8_t *ids, int n, uint8_t *scoring) {
+  int cnt[15] = {0}, suits[4] = {0};
+  for (int i = 0; i < n; i++) cnt[R.cards[ids[i]].rank]++, suits[R.cards[ids[i]].suit]++;
+  int flush = 0, straight = 0;
+  if (n == 5) {
+    for (int s = 0; s < 4; s++) flush |= suits[s] == 5;
+    int distinct = 0, lo = 15, hi = 0;
+    for (int r = 2; r <= 14; r++)
+      if (cnt[r]) distinct++, lo = r < lo ? r : lo, hi = r > hi ? r : hi;
+    if (distinct == 5 && (hi - lo == 4 || (cnt[14] && cnt[2] && cnt[3] && cnt[4] && cnt[5]))) straight = 1;
+  }
+  int four = 0, three = 0, pairs = 0;
+  for (int r = 2; r <= 14; r++) four += cnt[r] == 4, three += cnt[r] == 3, pairs += cnt[r] == 2;
+  int h;
+  if (straight && flush) h = H_STRAIGHT_FLUSH;
+  else if (four) h = H_FOUR;
+  else if (three && pairs) h = H_FULL;
+  else if (flush) h = H_FLUSH;
+  else if (straight) h = H_STRAIGHT;
+  else if (three) h = H_THREE;
+  else if (pairs >= 2) h = H_TWO_PAIR;
+  else if (pairs) h = H_PAIR;
+  else h = H_HIGH;
+  if (scoring) {
+    for (int i = 0; i < n; i++) {
+      int r = R.cards[ids[i]].rank;
+      scoring[i] = h == H_STRAIGHT_FLUSH || h == H_FLUSH || h == H_STRAIGHT || h == H_FULL ? 1 : cnt[r] >= 2;
     }
-  }
-}
-
-void apply_disable_request(void) {
-  if (R.blind_disabled == 2) blind_disable();
-}
-
-static void set_blind(int b) {
-  R.blind = (uint8_t)b;
-  R.blind_disabled = 0, R.blind_triggered = 0, R.blind_prepped = 1;
-  R.blind_hands = 0, R.mouth_hand = -1, R.water_sub = 0, R.needle_sub = 0;
-  R.blind_chips = blind_amount(R.ante) * blind_info[b].mult2 / 2.0;
-  R.chips = 0;
-  if (b == BL_FISH) R.blind_prepped = 0;
-  if (b == BL_WATER) {
-    R.water_sub = (int8_t)R.discards_left;
-    R.discards_left = 0;
-  }
-  if (b == BL_NEEDLE) {
-    R.needle_sub = (int8_t)(round_hands() - 1);
-    R.hands_left -= R.needle_sub;
-  }
-  if (b == BL_FINAL_ACORN && R.njokers) {
-    for (int i = 0; i < R.njokers; i++) R.jokers[i].flags |= JF_DOWN;
-    for (int i = R.njokers - 1; i > 0; i--) {
-      int k = rng_int(0, i);
-      joker_t t = R.jokers[i];
-      R.jokers[i] = R.jokers[k], R.jokers[k] = t;
+    if (h == H_HIGH && n > 0) {
+      int best = 0;
+      for (int i = 1; i < n; i++)
+        if (R.cards[ids[i]].rank > R.cards[ids[best]].rank) best = i;
+      scoring[best] = 1;
     }
-    ev_sync();
   }
-  blind_debuff_all();
+  return h;
 }
 
-void run_start_blind_select(void) {
-  R.phase = PH_BLIND_SELECT;
-  tags_new_blind_choice();
+int nselected(void) {
+  int n = 0;
+  for (int i = 0; i < R.nhand; i++) n += R.sel[i];
+  return n;
 }
-
-static void shuffle_deck(void) {
-  for (int i = R.ndeck - 1; i > 0; i--) {
-    int k = rng_int(0, i);
-    uint8_t t = R.deck[i];
-    R.deck[i] = R.deck[k], R.deck[k] = t;
-  }
+int preview_hand(void) {
+  uint8_t ids[MAXSEL];
+  int n = 0;
+  for (int i = 0; i < R.nhand; i++)
+    if (R.sel[i] && n < MAXSEL) ids[n++] = R.hand[i];
+  return n ? eval_hand(ids, n, 0) : -1;
 }
 
-void draw_phase(void);
-
-void blind_select(void) {
-  ev_reset();
-  int on = R.blind_on;
-  R.blind_state[on] = BS_CURRENT;
-  R.round++;
+/* ------------------------------------------------------------------ flow */
+void run_new(void) {
+  uint32_t seed[4];
+  memcpy(seed, R.rng, sizeof seed); /* keep the stream going from run to run */
+  memset(&R, 0, sizeof R);
+  memcpy(R.rng, seed, sizeof seed);
+  R.rng[0] ^= 0x9E3779B9u;
+  if (!(R.rng[0] | R.rng[1] | R.rng[2] | R.rng[3])) R.rng[0] = 1;
+  for (int i = 0; i < 8; i++) rng_u32();
+  for (int s = 0; s < 4; s++)
+    for (int r = 2; r <= 14; r++) R.cards[s * 13 + r - 2] = (card_t){(uint8_t)r, (uint8_t)s};
+  for (int h = 0; h < NHANDS; h++) R.level[h] = 1;
+  R.money = 5;
+  R.salon = 1;
+  R.table = TB_BRONZE;
+  R.twist = (uint8_t)rng_int(0, NTWISTS - 1);
+  R.twists_used = (uint8_t)(1 << R.twist);
+  R.phase = PH_TITLE_CARD;
+  R.target = target_for(R.salon, R.table);
+}
+
+void table_start(void) {
   R.phase = PH_ROUND;
-  /* new_round */
-  R.discards_left = (int16_t)round_discards();
-  R.hands_left = (int16_t)round_hands();
-  R.hands_played_round = 0, R.discards_used_round = 0, R.reroll_inc = 0;
-  for (int h = 0; h < NHANDS; h++) R.hands[h].played_round = 0;
-  for (int i = 0; i < R.ncards_alloc; i++) R.cards[i].flags &= (uint8_t)~(CF_DOWN | CF_FORCED);
-  R.free_rerolls = (int16_t)has_joker(J_CHAOS);
-  set_blind(on == 0 ? BL_SMALL : on == 1 ? BL_BIG : R.boss);
-  /* jokers when the blind is set */
-  for (int i = 0; i < R.njokers; i++) R.jokers[i].flags &= (uint8_t)~JF_SLICED;
-  for (int i = 0; i < R.njokers; i++) {
-    if (R.jokers[i].flags & JF_SLICED) continue;
-    cx_t cx = {0};
-    cx.kind = CX_SETTING_BLIND, cx.bp = -1, cx.boss = R.blind >= BL_OX;
-    eff_t e = {0};
-    if (jcalc(i, &cx, &e) && (e.has & EF_MSG) && e.msg && e.msg[0]) ev_popup(TG_JOKER, e.card, e.msg, e.col);
-    if (R.blind_disabled == 2) blind_disable();
-  }
-  for (int i = R.njokers - 1; i >= 0; i--)
-    if (R.jokers[i].flags & JF_SLICED) joker_remove(i, 0);
-  ev_t *v = ev_push(EV_HANDS);
-  if (v) v->a = (uint16_t)R.hands_left;
-  v = ev_push(EV_DISCARDS);
-  if (v) v->a = (uint16_t)R.discards_left;
+  R.target = target_for(R.salon, R.table);
+  R.score = 0;
+  R.hands_left = (int8_t)max_hands();
+  R.discards_left = (int8_t)max_discards();
+  R.hands_played = 0;
+  R.nhand = 0;
   shuffle_deck();
-  draw_phase();
+  draw_up();
+  sort_hand(0);
 }
 
-void blind_skip(void) {
-  ev_reset();
-  int on = R.blind_on;
-  if (on > 1) return;
-  R.skips++;
-  add_tag(R.skip_tag[on]);
-  R.blind_state[on] = BS_SKIPPED;
-  R.blind_on = (uint8_t)(on + 1);
-  R.blind_state[on + 1] = BS_SELECT;
-  cx_t cx = {0};
-  for (int i = 0; i < R.njokers; i++) {
-    cx.kind = CX_SKIP_BLIND, cx.bp = -1;
-    eff_t e = {0};
-    if (jcalc(i, &cx, &e) && (e.has & EF_MSG)) ev_popup(TG_JOKER, e.card, e.msg, e.col);
-  }
-  tags_immediate();
-  tags_new_blind_choice();
-  ev_sync();
+void sort_hand(int by_suit) {
+  for (int i = 1; i < R.nhand; i++)
+    for (int j = i; j > 0; j--) {
+      card_t a = R.cards[R.hand[j - 1]], b = R.cards[R.hand[j]];
+      int ka = by_suit ? a.suit * 16 + (15 - a.rank) : (15 - a.rank) * 4 + a.suit;
+      int kb = by_suit ? b.suit * 16 + (15 - b.rank) : (15 - b.rank) * 4 + b.suit;
+      if (ka <= kb) break;
+      uint8_t t = R.hand[j - 1], s = R.sel[j - 1];
+      R.hand[j - 1] = R.hand[j], R.sel[j - 1] = R.sel[j];
+      R.hand[j] = t, R.sel[j] = s;
+    }
 }
 
-void boss_reroll(void) {
-  ev_reset();
-  R.boss_rerolled = 1;
-  R.money -= 10;
-  R.boss = (uint8_t)get_new_boss();
-  ev_money();
-  ev_sync();
+static step_t *step(int kind, int who) {
+  if (P.nsteps >= MAXSTEPS) return &P.steps[MAXSTEPS - 1];
+  step_t *s = &P.steps[P.nsteps++];
+  memset(s, 0, sizeof *s);
+  s->kind = (uint8_t)kind, s->who = (uint8_t)who;
+  return s;
 }
 
-void game_over(void) {
-  R.phase = PH_GAMEOVER;
-  ev_sync();
+/* each Joker's effect on a scoring card */
+static void joker_on_card(int slot, int pos) {
+  const card_t *c = &R.cards[P.cards[pos]];
+  int red = c->suit == S_HEARTS || c->suit == S_DIAMONDS;
+  switch (R.jokers[slot].id) {
+    case J_RED_LANTERN:
+      if (red) step(ST_JOKER, slot)->mult = 2;
+      break;
+    case J_NIGHT_OWL:
+      if (!red) step(ST_JOKER, slot)->points = 12;
+      break;
+    case J_LOW_TIDE:
+      if (c->rank >= 2 && c->rank <= 5) step(ST_JOKER, slot)->mult = 3;
+      break;
+    case J_SEVEN_SEAS:
+      if (c->rank == 7) step(ST_JOKER, slot)->mult = 7;
+      break;
+    case J_CLOVER:
+      if (c->suit == S_CLUBS && rng_int(1, 3) == 1) step(ST_JOKER, slot)->money = 1;
+      break;
+    case J_ACE_PILOT:
+      if (c->rank == 14) step(ST_JOKER, slot)->xmult = 1.5f;
+      break;
+  }
 }
 
-/* after a won round: blind state, then the cash out numbers */
-void blind_defeat(void) {
-  int boss = R.blind >= BL_OX;
-  /* flip the jokers back */
-  for (int i = 0; i < R.njokers; i++)
-    if (R.jokers[i].flags & (JF_DOWN | JF_DEBUFF)) {
-      R.jokers[i].flags &= (uint8_t)~(JF_DOWN | JF_DEBUFF);
-      ev_t *v = ev_push(EV_JOKER_SET);
-      if (v) v->a = R.jokers[i].uid, v->b = R.jokers[i].ed, v->c = R.jokers[i].flags;
-    }
-  /* back to the deck */
-  for (int i = 0; i < R.ndiscard; i++) R.deck[R.ndeck++] = R.discard[i];
-  for (int i = 0; i < R.nhand; i++) R.deck[R.ndeck++] = R.hand[i];
-  for (int i = 0; i < R.nplay; i++) R.deck[R.ndeck++] = R.play[i];
-  R.ndiscard = R.nhand = R.nplay = 0;
-  for (int i = 0; i < R.ncards_alloc; i++) R.cards[i].flags &= (uint8_t)~(CF_DOWN | CF_FORCED | CF_DEBUFF);
-  int won_now = 0;
-  R.blind_state[R.blind_on] = BS_DEFEATED;
-  if (boss) {
-    if (R.ante == WIN_ANTE && !R.won) won_now = 1, R.won = 1;
-    R.ante++;
-    if (R.ante > R.max_ante_reached) R.max_ante_reached = R.ante;
-    next_voucher();
-    R.voucher_tag_extra = 0;
-    for (int i = 0; i < R.ncards_alloc; i++) R.cards[i].flags &= (uint8_t)~CF_PLAYED_ANTE;
-  } else {
-    R.blind_on++;
-    R.blind_state[R.blind_on] = BS_SELECT;
+int play_hand(void) {
+  int n = 0;
+  memset(&P, 0, sizeof P);
+  for (int i = 0; i < R.nhand; i++)
+    if (R.sel[i] && n < MAXSEL) P.cards[n++] = R.hand[i];
+  if (!n || R.hands_left <= 0) return 0;
+  P.ncards = (uint8_t)n;
+  int h = P.hand = eval_hand(P.cards, n, P.scoring);
+  P.points0 = hand_points(h), P.mult0 = hand_mult(h);
+  int nscore = 0, faces_only = 1, king = 0, queen = 0, suitmask = 0, ranks[15] = {0};
+  for (int i = 0; i < n; i++) {
+    if (!P.scoring[i]) continue;
+    const card_t *c = &R.cards[P.cards[i]];
+    nscore++;
+    if (c->rank < 11 || c->rank > 13) faces_only = 0;
+    king |= c->rank == 13, queen |= c->rank == 12;
+    suitmask |= 1 << c->suit;
+    ranks[c->rank]++;
+    step(ST_CARD, i)->points = c->rank;
+    for (int j = 0; j < R.njokers; j++) joker_on_card(j, i);
+  }
+  /* cards kept in hand */
+  for (int i = 0; i < R.nhand; i++) {
+    if (R.sel[i]) continue;
+    if (R.cards[R.hand[i]].suit == S_DIAMONDS)
+      for (int j = 0; j < R.njokers; j++)
+        if (R.jokers[j].id == J_LAMPLIGHTER) {
+          step_t *s = step(ST_HELD, i);
+          s->mult = 3;
+          s->money = (int8_t)-(j + 1); /* (the Joker shown with it) */
+        }
   }
-  R.temp_handsize = 0;
-  R.temp_reroll = -1;
-  reset_round_cards();
-  /* cash out */
-  R.cash_blind = blind_info[R.blind].dollars;
-  R.cash_hands = R.hands_left;
-  int per[MAXJ];
-  uint8_t ids[MAXJ];
-  R.ncash_joker = (uint8_t)jokers_dollar_bonus(per, ids);
-  for (int i = 0; i < R.ncash_joker; i++) R.cash_joker[i] = (int16_t)per[i], R.cash_joker_id[i] = ids[i];
-  R.cash_tag = 0;
-  if (boss)
-    for (int i = 0; i < R.ntags; i++)
-      if (R.tags[i] == TAG_INVESTMENT) {
-        R.cash_tag = 25;
-        tag_remove(i);
+  /* the Jokers themselves */
+  for (int j = 0; j < R.njokers; j++) {
+    joker_t *jk = &R.jokers[j];
+    step_t *s;
+    switch (jk->id) {
+      case J_BUSKER:
+        s = step(ST_JOKER, j), s->mult = 3, s->points = 10;
+        break;
+      case J_MATCHMAKER: {
+        int k = 0;
+        for (int r = 2; r <= 14; r++) k += ranks[r] >= 2;
+        if (k) step(ST_JOKER, j)->points = (int16_t)(25 * k);
         break;
       }
-  int interest = 0;
-  if (R.money >= 5) {
-    int k = R.money / 5, cap = R.interest_cap / 5, amount = 1 + has_joker(J_TO_THE_MOON);
-    interest = amount * (k < cap ? k : cap);
-  }
-  R.cash_interest = (int16_t)interest;
-  int total = R.cash_blind + R.cash_hands + R.cash_tag + R.cash_interest;
-  for (int i = 0; i < R.ncash_joker; i++) total += R.cash_joker[i];
-  R.cash_total = (int16_t)total;
-  R.phase = won_now ? PH_WIN : PH_CASHOUT;
-  ev_sync();
-}
-
-int jokers_dollar_bonus(int *per, uint8_t *ids) {
-  int n = 0;
-  for (int i = 0; i < R.njokers; i++) {
-    joker_t *j = &R.jokers[i];
-    if (j->flags & JF_DEBUFF) continue;
-    int d = 0;
-    switch (j->id) {
-      case J_GOLDEN: d = 4; break;
-      case J_CLOUD_9: {
-        int nines = 0;
-        for (int c = 0; c < R.ncards_alloc; c++)
-          if ((R.cards[c].flags & CF_USED) && card_get_id(c) == 9) nines++;
-        d = nines;
+      case J_TIGHTROPE:
+        if (n == 3) step(ST_JOKER, j)->mult = 12;
+        break;
+      case J_PENNY_JAR:
+        if (R.money >= 4) step(ST_JOKER, j)->mult = (float)(R.money / 4);
+        break;
+      case J_ENCORE:
+        if (R.hands_left == 1) s = step(ST_JOKER, j), s->points = 20, s->xmult = 1.5f;
+        break;
+      case J_RINGMASTER:
+        if (nscore == 5) step(ST_JOKER, j)->xmult = 1.5f;
+        break;
+      case J_FIRE_EATER:
+        if (h == H_FLUSH || h == H_STRAIGHT_FLUSH) jk->grow++;
+        if (jk->grow) step(ST_JOKER, j)->mult = jk->grow;
+        break;
+      case J_STRONGMAN:
+        if (nscore && faces_only) step(ST_JOKER, j)->xmult = 3;
+        break;
+      case J_CAROUSEL: {
+        int v = rng_int(0, 10);
+        if (v) step(ST_JOKER, j)->mult = (float)v;
         break;
       }
-      case J_ROCKET: d = j->a; break;
-      case J_SATELLITE: {
-        int p = 0;
-        for (int k = 0; k < 12; k++) p += (R.planets_used_mask >> k) & 1;
-        d = 1 * p;
+      case J_ROYAL_COURT:
+        if (king && queen) step(ST_JOKER, j)->xmult = 2;
+        break;
+      case J_SNOWBALL:
+        if (jk->grow) step(ST_JOKER, j)->points = jk->grow;
+        break;
+      case J_TWINS:
+        if (h == H_TWO_PAIR || h == H_FULL) step(ST_JOKER, j)->mult = 10;
+        break;
+      case J_GRAND_FINALE:
+        if (R.discards_left == 0) step(ST_JOKER, j)->xmult = 3;
+        break;
+      case J_PRISM: {
+        int k = 0;
+        for (int b = 0; b < 4; b++) k += (suitmask >> b) & 1;
+        if (k) step(ST_JOKER, j)->xmult = 1.0f + 0.5f * (float)k;
         break;
       }
-      case J_DELAYED_GRAT:
-        if (R.discards_used_round == 0 && R.discards_left > 0) d = R.discards_left * 2;
+      case J_GAMBLER:
+        step(ST_JOKER, j)->xmult = rng_int(1, 4) == 1 ? 0.5f : 4.0f;
         break;
     }
-    if (d > 0) per[n] = d, ids[n++] = (uint8_t)i;
-  }
-  return n;
-}
-
-void cash_out(void) {
-  ev_reset();
-  R.chips = 0;
-  R.money += R.cash_total;
-  ev_money();
-  R.hands_left = (int16_t)round_hands();
-  R.discards_left = (int16_t)round_discards();
-  if (R.blind_state[2] == BS_DEFEATED) {
-    R.skip_tag[0] = (uint8_t)tag_for_skip();
-    R.skip_tag[1] = (uint8_t)tag_for_skip();
-    R.blind_state[0] = BS_SELECT, R.blind_state[1] = BS_UPCOMING, R.blind_state[2] = BS_UPCOMING;
-    R.blind_on = 0;
-    R.boss = (uint8_t)get_new_boss();
-    R.boss_rerolled = 0;
   }
-  shop_enter();
-}
-
-void continue_endless(void) {
-  R.endless = 1;
-  R.phase = PH_CASHOUT;
+  /* add it all up */
+  double pts = P.points0, mult = P.mult0;
+  for (int i = 0; i < P.nsteps; i++) {
+    step_t *s = &P.steps[i];
+    pts += s->points;
+    mult += s->mult;
+    if (s->xmult > 0) mult *= s->xmult;
+  }
+  P.points = pts, P.mult = mult;
+  P.total = (double)(long long)(pts * mult);
+  step(ST_TOTAL, 0);
+  R.played[h] < 255 ? R.played[h]++ : 0;
+  return 1;
 }
 
-/* ------------------------------------------------------------------ shop */
-static void calc_reroll(int skip_increment) {
-  if (R.free_rerolls < 0) R.free_rerolls = 0;
-  if (R.free_rerolls > 0) {
-    R.reroll_cost = 0;
+void apply_play(void) {
+  for (int i = 0; i < P.nsteps; i++)
+    if (P.steps[i].money > 0) R.money += P.steps[i].money;
+  R.score += P.total;
+  if (P.total > R.best_hand) R.best_hand = P.total;
+  R.hands_left--;
+  R.hands_played++;
+  /* the played cards leave the hand */
+  int k = 0;
+  for (int i = 0; i < R.nhand; i++)
+    if (!R.sel[i]) R.hand[k] = R.hand[i], R.sel[k++] = 0;
+  R.nhand = (uint8_t)k;
+  if (R.score >= R.target) {
+    /* won: cash out */
+    R.tables_won++;
+    for (int j = 0; j < R.njokers; j++)
+      if (R.jokers[j].id == J_SNOWBALL) R.jokers[j].grow += 10;
+    R.cash_table = (int16_t)table_reward(R.table);
+    R.cash_hands = R.hands_left;
+    int cap = 4 + (has(J_USURER) ? 2 : 0), in = R.money / 10;
+    R.cash_interest = (int16_t)(in > cap ? cap : in);
+    R.cash_jokers = 0;
+    for (int j = 0; j < R.njokers; j++)
+      if (R.jokers[j].id == J_STAGEHAND) R.cash_jokers += 2;
+    R.phase = PH_CASH;
     return;
   }
-  if (!skip_increment) R.reroll_inc++;
-  R.reroll_cost = (int16_t)((R.temp_reroll >= 0 ? R.temp_reroll : R.reroll_base) + R.reroll_inc);
-}
-
-static void random_card_item(sitem_t *it, int enhanced) {
-  it->kind = IT_CARD;
-  it->card = random_card();
-  if (enhanced) it->card.enh = (uint8_t)random_enhancement(0);
-}
-
-/* store_joker_modify tags on a new shop joker */
-static void tags_modify(sitem_t *it) {
-  if (it->kind != IT_JOKER || it->ed) return;
-  for (int i = 0; i < R.ntags; i++) {
-    int t = R.tags[i], ed = t == TAG_FOIL ? ED_FOIL : t == TAG_HOLO ? ED_HOLO : t == TAG_POLYCHROME ? ED_POLY
-                                                     : t == TAG_NEGATIVE ? ED_NEG : 0;
-    if (!ed) continue;
-    it->ed = (uint8_t)ed;
-    it->flags |= 1;
-    tag_remove(i);
+  if (R.hands_left <= 0) {
+    for (int j = 0; j < R.njokers; j++)
+      if (R.jokers[j].id == J_PHOENIX) {
+        /* it flies away, and the table starts again */
+        for (int i = j; i < R.njokers - 1; i++) R.jokers[i] = R.jokers[i + 1];
+        R.njokers--;
+        R.phoenix_used++;
+        table_start();
+        return;
+      }
+    R.phase = PH_LOST;
     return;
   }
-}
-
-static void shop_card(sitem_t *it) {
-  memset(it, 0, sizeof *it);
-  it->uid = (uint16_t)joker_new_uid();
-  /* store_joker_create tags */
-  for (int i = 0; i < R.ntags; i++) {
-    int t = R.tags[i];
-    if (t == TAG_UNCOMMON || t == TAG_RARE) {
-      tag_remove(i);
-      int rare_owned = 0, n_rare = 0;
-      for (int id = 0; id < N_JOKER; id++) n_rare += joker_info[id].rarity == 3;
-      for (int k = 0; k < R.njokers; k++) rare_owned += joker_info[R.jokers[k].id].rarity == 3;
-      if (t == TAG_RARE && rare_owned >= n_rare) break;
-      it->kind = IT_JOKER;
-      it->id = (uint8_t)create_joker_id(t == TAG_RARE ? 3 : 2, 0);
-      it->ed = (uint8_t)poll_edition(1, 0, 0);
-      it->flags |= 1;
-      tags_modify(it);
-      return;
-    }
-  }
-  float total = 20 + R.tarot_rate + R.planet_rate + R.playing_card_rate + R.spectral_rate;
-  float p = rng_f() * total;
-  if ((p -= 20) < 0) {
-    it->kind = IT_JOKER;
-    it->id = (uint8_t)create_joker_id(-1, 0);
-    it->ed = (uint8_t)poll_edition(1, 0, 0);
-    tags_modify(it);
-  } else if ((p -= R.tarot_rate) < 0) {
-    it->kind = IT_CONS, it->id = (uint8_t)create_cons_id(0);
-  } else if ((p -= R.planet_rate) < 0) {
-    it->kind = IT_CONS, it->id = (uint8_t)create_cons_id(1);
-  } else if ((p -= R.playing_card_rate) < 0) {
-    random_card_item(it, has_voucher(V_ILLUSION) && rng_f() > 0.6f);
-    if (has_voucher(V_ILLUSION) && rng_f() > 0.8f) {
-      float e = rng_f();
-      it->card.ed = e > 0.85f ? ED_POLY : e > 0.5f ? ED_HOLO : ED_FOIL;
-    }
-  } else {
-    it->kind = IT_CONS, it->id = (uint8_t)create_cons_id(2);
-  }
-  if (it->kind == IT_JOKER && it->id == J_TODO_LIST) {
-    joker_t j = {0};
-    j.id = J_TODO_LIST;
-    joker_init(&j);
-    it->a = j.c;
+  if (gold_twist(TW_WIND)) {
+    R.nhand = 0;
+    shuffle_deck();
   }
+  draw_up();
 }
 
-static int pack_pick(void) {
-  /* get_pack: the first shop has a Buffoon Pack */
-  if (!R.first_shop_buffoon) {
-    R.first_shop_buffoon = 1;
-    return PK_BUFFOON * 3;
+int discard_hand(void) {
+  int n = nselected();
+  if (!n || R.discards_left <= 0) return 0;
+  if (gold_twist(TW_TAXMAN)) {
+    if (R.money < 2) return 0;
+    R.money -= 2;
   }
-  /* weights by kind and size, as in P_CENTERS */
-  static const float w[5][3] = {{4, 2, 0.5f}, {4, 2, 0.5f}, {4, 2, 0.5f}, {1.2f, 0.6f, 0.15f}, {0.6f, 0.3f, 0.07f}};
-  float tot = 0;
-  for (int k = 0; k < 5; k++)
-    for (int s = 0; s < 3; s++) tot += w[k][s];
-  float p = rng_f() * tot;
-  for (int k = 0; k < 5; k++)
-    for (int s = 0; s < 3; s++) {
-      p -= w[k][s];
-      if (p < 0) return k * 3 + s;
-    }
-  return 0;
+  if (n >= 4)
+    for (int j = 0; j < R.njokers; j++)
+      if (R.jokers[j].id == J_PICKPOCKET) R.money++;
+  R.discards_left--;
+  int k = 0;
+  for (int i = 0; i < R.nhand; i++)
+    if (!R.sel[i]) R.hand[k] = R.hand[i], R.sel[k++] = 0;
+  R.nhand = (uint8_t)k;
+  draw_up();
+  return 1;
 }
 
-void shop_enter(void) {
-  ev_reset();
+void cash_out(void) {
+  R.money += R.cash_table + R.cash_hands + R.cash_interest + R.cash_jokers;
   R.phase = PH_SHOP;
-  R.d6 = 0, R.coupon = 0;
-  R.temp_reroll = -1;
-  /* shop_start: D6 Tag */
-  for (int i = 0; i < R.ntags; i++)
-    if (R.tags[i] == TAG_D_SIX) {
-      tag_remove(i);
-      R.temp_reroll = 0;
-      R.d6 = 1;
-      break;
-    }
-  R.reroll_inc = 0;
-  calc_reroll(1);
-  R.nshop = 0;
-  for (int i = 0; i < R.shop_jokers_max && i < MAXSHOP; i++) shop_card(&R.shop[R.nshop++]);
-  R.nshop_v = 0;
-  if (R.shop_voucher != 0xFF) {
-    sitem_t *v = &R.shop_v[R.nshop_v++];
-    memset(v, 0, sizeof *v);
-    v->kind = IT_VOUCHER, v->id = R.shop_voucher, v->uid = (uint16_t)joker_new_uid();
-  }
-  R.nshop_p = 0;
-  for (int i = 0; i < 2; i++) {
-    sitem_t *p = &R.shop_p[R.nshop_p++];
-    memset(p, 0, sizeof *p);
-    p->kind = IT_PACK, p->id = (uint8_t)pack_pick(), p->uid = (uint16_t)joker_new_uid();
-  }
-  /* voucher_add: Voucher Tag */
-  for (int i = 0; i < R.ntags && R.nshop_v < 3; i++)
-    if (R.tags[i] == TAG_VOUCHER) {
-      tag_remove(i);
-      i--;
-      int pool[32], n = 0;
-      for (int v = 0; v < 32; v++) {
-        int in = has_voucher(v) || (v >= 16 && !has_voucher(v - 16));
-        for (int k = 0; k < R.nshop_v; k++) in |= R.shop_v[k].id == v;
-        if (!in) pool[n++] = v;
-      }
-      if (!n) continue;
-      sitem_t *v = &R.shop_v[R.nshop_v++];
-      memset(v, 0, sizeof *v);
-      v->kind = IT_VOUCHER, v->id = (uint8_t)pool[rng_int(0, n - 1)], v->uid = (uint16_t)joker_new_uid();
-      v->flags = 2; /* not the ante's voucher */
-    }
-  /* shop_final_pass: Coupon Tag */
-  for (int i = 0; i < R.ntags; i++)
-    if (R.tags[i] == TAG_COUPON) {
-      tag_remove(i);
-      R.coupon = 1;
-      for (int k = 0; k < R.nshop; k++) R.shop[k].flags |= 1;
-      for (int k = 0; k < R.nshop_p; k++) R.shop_p[k].flags |= 1;
-      break;
-    }
-  ev_sync();
+  R.rerolls = 0;
+  shop_fill();
 }
 
-void shop_leave(void) {
-  ev_reset();
-  cx_t cx = {0};
-  for (int i = 0; i < R.njokers; i++) {
-    cx.kind = CX_ENDING_SHOP, cx.bp = -1;
-    eff_t e = {0};
-    if (jcalc(i, &cx, &e) && (e.has & EF_MSG)) ev_popup(TG_JOKER, e.card, e.msg, e.col);
+/* ------------------------------------------------------------------ shop */
+static int owned_or_offered(int id) {
+  if (has(id)) return 1;
+  for (int i = 0; i < NSHOP; i++)
+    if (R.shop[i].kind == IT_JOKER && R.shop[i].id == id) return 1;
+  return 0;
+}
+static void shop_item(int i) {
+  item_t *it = &R.shop[i];
+  it->kind = IT_NONE;
+  if (rng_int(1, 10) <= 3) {
+    it->kind = IT_LESSON;
+    it->id = (uint8_t)rng_int(0, NHANDS - 1);
+    it->cost = 3;
+    return;
+  }
+  int roll = rng_int(1, 100), rarity = roll <= 65 ? 0 : roll <= 93 ? 1 : 2;
+  for (int tries = 0; tries < 60; tries++) {
+    int id = rng_int(0, NJOKERS - 1);
+    if (JOKERS[id].rarity != rarity && tries < 40) continue;
+    if (owned_or_offered(id)) continue;
+    it->kind = IT_JOKER, it->id = (uint8_t)id, it->cost = JOKERS[id].cost;
+    return;
   }
-  R.nshop = R.nshop_p = 0;
-  run_start_blind_select();
-  ev_sync();
+  it->kind = IT_LESSON, it->id = (uint8_t)rng_int(0, NHANDS - 1), it->cost = 3;
 }
-
-static int can_afford(int cost) {
-  int bankrupt = -20 * has_joker(J_CREDIT_CARD);
-  return cost == 0 || R.money - bankrupt - cost >= 0;
+void shop_fill(void) {
+  for (int i = 0; i < NSHOP; i++) R.shop[i].kind = IT_NONE;
+  for (int i = 0; i < NSHOP; i++) shop_item(i);
 }
-
+int reroll_cost(void) { return 2 + R.rerolls; }
 int shop_reroll(void) {
-  if (!can_afford(R.reroll_cost)) return 0;
-  ev_reset();
-  if (R.reroll_cost > 0) {
-    R.money -= R.reroll_cost;
-    ev_money();
-  }
-  int final_free = R.free_rerolls > 0;
-  R.free_rerolls = (int16_t)(R.free_rerolls > 0 ? R.free_rerolls - 1 : 0);
+  if (R.money < reroll_cost()) return 0;
+  R.money -= reroll_cost();
   R.rerolls++;
-  calc_reroll(final_free);
-  R.nshop = 0;
-  for (int i = 0; i < R.shop_jokers_max && i < MAXSHOP; i++) shop_card(&R.shop[R.nshop++]);
-  cx_t cx = {0};
-  for (int i = 0; i < R.njokers; i++) {
-    cx.kind = CX_REROLL, cx.bp = -1;
-    eff_t e = {0};
-    if (jcalc(i, &cx, &e) && (e.has & EF_MSG)) ev_popup(TG_JOKER, e.card, e.msg, e.col);
-  }
-  ev_sync();
+  shop_fill();
   return 1;
 }
-
-static void redeem(int v) {
-  R.vouchers |= 1u << v;
-  switch (v) {
-    case V_OVERSTOCK_NORM: case V_OVERSTOCK_PLUS:
-      R.shop_jokers_max++;
-      if (R.phase == PH_SHOP && R.nshop < MAXSHOP) shop_card(&R.shop[R.nshop++]);
-      break;
-    case V_TAROT_MERCHANT: R.tarot_rate = 4 * 2.4f; break;
-    case V_TAROT_TYCOON: R.tarot_rate = 4 * 8; break;
-    case V_PLANET_MERCHANT: R.planet_rate = 4 * 2.4f; break;
-    case V_PLANET_TYCOON: R.planet_rate = 4 * 8; break;
-    case V_HONE: R.edition_rate = 2; break;
-    case V_GLOW_UP: R.edition_rate = 4; break;
-    case V_MAGIC_TRICK: case V_ILLUSION: R.playing_card_rate = 4; break;
-    case V_CRYSTAL_BALL: R.cons_slots++; break;
-    case V_CLEARANCE_SALE: R.discount = 25; break;
-    case V_LIQUIDATION: R.discount = 50; break;
-    case V_REROLL_SURPLUS: case V_REROLL_GLUT:
-      R.reroll_base -= 2;
-      R.reroll_cost = (int16_t)(R.reroll_cost > 2 ? R.reroll_cost - 2 : 0);
-      break;
-    case V_SEED_MONEY: R.interest_cap = 50; break;
-    case V_MONEY_TREE: R.interest_cap = 100; break;
-    case V_GRABBER: case V_NACHO_TONG:
-      R.base_hands++;
-      R.hands_left++;
-      break;
-    case V_WASTEFUL: case V_RECYCLOMANCY:
-      R.base_discards++;
-      R.discards_left++;
-      break;
-    case V_ANTIMATTER: R.joker_slots++; break;
-    case V_HIEROGLYPH:
-      R.ante--;
-      R.base_hands--;
-      R.hands_left--;
-      break;
-    case V_PETROGLYPH:
-      R.ante--;
-      R.base_discards--;
-      R.discards_left--;
-      break;
-  }
-}
-
-int shop_buy(int area, int idx, int use_now) {
-  sitem_t *it = area == 0 ? &R.shop[idx] : area == 1 ? &R.shop_v[idx] : &R.shop_p[idx];
-  int cnt = area == 0 ? R.nshop : area == 1 ? R.nshop_v : R.nshop_p;
-  if (idx < 0 || idx >= cnt) return 0;
-  int cost = item_cost(it);
-  if (!can_afford(cost)) return 0;
-  if (!use_now) {
-    if (it->kind == IT_JOKER && (R.njokers >= joker_slots() + (it->ed == ED_NEG) || R.njokers >= MAXJ)) return 0;
-    if (it->kind == IT_CONS && (R.ncons >= cons_slots() + (it->ed == ED_NEG) || R.ncons >= MAXCONS)) return 0;
-  }
-  if (it->kind == IT_CARD && deck_full()) return 0;
-  ev_reset();
-  sitem_t copy = *it;
-  /* take it out of the shop */
-  if (area == 0) {
-    for (int i = idx; i < R.nshop - 1; i++) R.shop[i] = R.shop[i + 1];
-    R.nshop--;
-  } else if (area == 1) {
-    for (int i = idx; i < R.nshop_v - 1; i++) R.shop_v[i] = R.shop_v[i + 1];
-    R.nshop_v--;
+int shop_buy(int i) {
+  item_t *it = &R.shop[i];
+  if (it->kind == IT_NONE || R.money < it->cost) return 0;
+  if (it->kind == IT_JOKER) {
+    if (R.njokers >= MAXJ) return 0;
+    R.jokers[R.njokers++] = (joker_t){it->id, 0};
   } else {
-    for (int i = idx; i < R.nshop_p - 1; i++) R.shop_p[i] = R.shop_p[i + 1];
-    R.nshop_p--;
-  }
-  if (cost) {
-    R.money -= cost;
-    ev_money();
+    if (R.level[it->id] < 99) R.level[it->id]++;
   }
-  if (copy.kind != IT_PACK) R.cards_bought++;
-  switch (copy.kind) {
-    case IT_JOKER: {
-      joker_t *j = &R.jokers[R.njokers];
-      memset(j, 0, sizeof *j);
-      j->id = copy.id;
-      j->uid = copy.uid;
-      joker_init(j);
-      if (copy.id == J_TODO_LIST) j->c = (uint8_t)copy.a;
-      j->ed = copy.ed;
-      R.njokers++;
-      joker_on_added(j);
-      ev_t *v = ev_push(EV_JOKER_ADD);
-      if (v) v->a = j->uid, v->b = j->id, v->c = j->ed, v->d = (int16_t)(R.njokers - 1);
-      break;
-    }
-    case IT_CONS:
-      if (use_now) {
-        extern int use_cons_id(int id, int ed, int from);
-        use_cons_id(copy.id, copy.ed, 2);
-      } else {
-        cons_t *c = &R.cons[R.ncons++];
-        c->id = copy.id, c->ed = copy.ed, c->uid = copy.uid, c->extra_value = 0;
-        ev_t *v = ev_push(EV_CONS_ADD);
-        if (v) v->a = c->uid, v->b = c->id, v->c = c->ed;
-      }
-      break;
-    case IT_CARD: {
-      int ci = add_card_to_deck(copy.card, A_DECK);
-      (void)ci;
-      cx_t cx = {0};
-      cx.kind = CX_CARDS_ADDED, cx.bp = -1, cx.n = 1;
-      for (int i = 0; i < R.njokers; i++) {
-        eff_t e = {0};
-        jcalc(i, &cx, &e);
-      }
-      break;
-    }
-    case IT_VOUCHER:
-      if (!(copy.flags & 2)) R.shop_voucher = 0xFF;
-      redeem(copy.id);
-      break;
-    case IT_PACK: pack_open(copy.id / 3, copy.id % 3, 0); break;
-  }
-  ev_sync();
+  R.money -= it->cost;
+  it->kind = IT_NONE;
   return 1;
 }
-
-/* ------------------------------------------------------------------ packs */
-static const uint8_t pack_n[5][3] = {{3, 5, 5}, {3, 5, 5}, {3, 5, 5}, {2, 4, 4}, {2, 4, 4}};
-
-void pack_open(int kind, int size, int from_tag) {
-  R.pack_return = R.phase == PH_PACK ? R.pack_return : R.phase;
-  R.phase = PH_PACK;
-  R.pack_kind = (uint8_t)kind, R.pack_size = (uint8_t)size, R.pack_from_tag = (uint8_t)from_tag;
-  R.pack_picks = size == 2 ? 2 : 1;
-  R.npack = 0;
-  int n = pack_n[kind][size];
-  for (int i = 0; i < n; i++) {
-    sitem_t *it = &R.pack[R.npack++];
-    memset(it, 0, sizeof *it);
-    it->uid = (uint16_t)joker_new_uid();
-    switch (kind) {
-      case PK_ARCANA:
-        it->kind = IT_CONS;
-        if (has_voucher(V_OMEN_GLOBE) && rng_f() > 0.8f) it->id = (uint8_t)create_cons_soulable(2);
-        else it->id = (uint8_t)create_cons_soulable(0);
-        break;
-      case PK_CELESTIAL:
-        it->kind = IT_CONS;
-        if (has_voucher(V_TELESCOPE) && i == 0) {
-          int best = -1, tally = 0;
-          static const uint8_t order[12] = {H_FLUSH_FIVE, H_FLUSH_HOUSE, H_FIVE_KIND, H_STRAIGHT_FLUSH, H_FOUR_KIND,
-                                            H_FULL_HOUSE, H_FLUSH, H_STRAIGHT, H_THREE_KIND, H_TWO_PAIR, H_PAIR,
-                                            H_HIGH_CARD};
-          for (int k = 0; k < 12; k++)
-            if (R.hands[order[k]].visible && R.hands[order[k]].played > tally) tally = R.hands[order[k]].played, best = order[k];
-          static const uint8_t planet_of[12] = {C_ERIS, C_CERES, C_PLANET_X, C_NEPTUNE, C_MARS, C_EARTH, C_JUPITER,
-                                                C_SATURN, C_VENUS, C_URANUS, C_MERCURY, C_PLUTO};
-          it->id = (uint8_t)(best >= 0 ? planet_of[best] : create_cons_soulable(1));
-        } else
-          it->id = (uint8_t)create_cons_soulable(1);
-        break;
-      case PK_SPECTRAL:
-        it->kind = IT_CONS;
-        it->id = (uint8_t)create_cons_soulable(2);
-        break;
-      case PK_STANDARD: {
-        random_card_item(it, rng_f() > 0.6f);
-        it->card.ed = (uint8_t)poll_edition(2, 1, 0);
-        if (rng_f() > 1 - 0.02f * 10) {
-          float s = rng_f();
-          it->card.seal = s > 0.75f ? SEAL_RED : s > 0.5f ? SEAL_BLUE : s > 0.25f ? SEAL_GOLD : SEAL_PURPLE;
-        }
-        break;
-      }
-      case PK_BUFFOON:
-        it->kind = IT_JOKER;
-        it->id = (uint8_t)create_joker_id(-1, 0);
-        it->ed = (uint8_t)poll_edition(1, 0, 0);
-        break;
-    }
-  }
-  cx_t cx = {0};
-  for (int i = 0; i < R.njokers; i++) {
-    cx.kind = CX_OPEN_BOOSTER, cx.bp = -1;
-    eff_t e = {0};
-    jcalc(i, &cx, &e);
-  }
-  /* Arcana and Spectral packs let you use cards on your hand */
-  if (kind == PK_ARCANA || kind == PK_SPECTRAL) {
-    for (int i = R.ndeck - 1; i > 0; i--) {
-      int k = rng_int(0, i);
-      uint8_t t = R.deck[i];
-      R.deck[i] = R.deck[k], R.deck[k] = t;
-    }
-    int hs = hand_size();
-    while (R.nhand < hs && R.ndeck) {
-      int ci = R.deck[--R.ndeck];
-      R.sel[R.nhand] = 0;
-      R.hand[R.nhand++] = (uint8_t)ci;
-      ev_card(EV_CARD_MOVE, ci, A_HAND, 0);
-    }
-    sort_hand(R.sort_suit);
-  }
-  ev_sync();
-}
-
-void pack_close(void) {
-  /* the hand goes back into the deck */
-  for (int i = 0; i < R.nhand; i++) {
-    R.deck[R.ndeck++] = R.hand[i];
-    ev_card(EV_CARD_MOVE, R.hand[i], A_DECK, 0);
-  }
-  R.nhand = 0;
-  for (int i = 0; i < MAXHAND; i++) R.sel[i] = 0;
-  R.npack = 0;
-  R.phase = R.pack_return;
-  if (R.phase == PH_BLIND_SELECT) tags_new_blind_choice();
-  ev_sync();
-}
-
-void pack_skip(void) {
-  ev_reset();
-  cx_t cx = {0};
-  for (int i = 0; i < R.njokers; i++) {
-    cx.kind = CX_SKIPPING_BOOSTER, cx.bp = -1;
-    eff_t e = {0};
-    if (jcalc(i, &cx, &e) && (e.has & EF_MSG)) ev_popup(TG_JOKER, e.card, e.msg, e.col);
-  }
-  pack_close();
-}
-
-int pack_choose(int idx) {
-  if (idx < 0 || idx >= R.npack || R.pack_picks <= 0) return 0;
-  sitem_t *it = &R.pack[idx];
-  if (it->kind == IT_JOKER && ((R.njokers >= joker_slots() && it->ed != ED_NEG) || R.njokers >= MAXJ)) return 0;
-  if (it->kind == IT_CARD && deck_full()) return 0;
-  if (it->kind == IT_CONS) {
-    extern int cons_usable(int id, int in_pack);
-    if (!cons_usable(it->id, 1)) return 0;
-  }
-  ev_reset();
-  sitem_t copy = *it;
-  for (int i = idx; i < R.npack - 1; i++) R.pack[i] = R.pack[i + 1];
-  R.npack--;
-  switch (copy.kind) {
-    case IT_JOKER: {
-      joker_t *j = &R.jokers[R.njokers];
-      memset(j, 0, sizeof *j);
-      j->id = copy.id, j->uid = copy.uid;
-      joker_init(j);
-      j->ed = copy.ed;
-      R.njokers++;
-      joker_on_added(j);
-      ev_t *v = ev_push(EV_JOKER_ADD);
-      if (v) v->a = j->uid, v->b = j->id, v->c = j->ed, v->d = (int16_t)(R.njokers - 1);
-      break;
-    }
-    case IT_CARD: {
-      add_card_to_deck(copy.card, A_DECK);
-      cx_t cx = {0};
-      cx.kind = CX_CARDS_ADDED, cx.bp = -1, cx.n = 1;
-      for (int i = 0; i < R.njokers; i++) {
-        eff_t e = {0};
-        jcalc(i, &cx, &e);
-      }
-      break;
-    }
-    case IT_CONS: {
-      extern int use_cons_id(int id, int ed, int from);
-      use_cons_id(copy.id, copy.ed, 1);
-      break;
-    }
-  }
-  R.pack_picks--;
-  if (R.pack_picks <= 0 || R.npack == 0) pack_close();
-  else ev_sync();
-  return 1;
-}
-
-/* ------------------------------------------------------------------ selling, moving */
-int sell_joker(int idx) {
-  if (idx < 0 || idx >= R.njokers) return 0;
-  ev_reset();
-  int v = joker_sell_value(&R.jokers[idx]);
-  uint16_t uid = R.jokers[idx].uid;
-  /* selling_self (Luchador, Diet Cola, Invisible Joker) */
-  cx_t cx = {0};
-  cx.kind = CX_SELLING_SELF, cx.bp = -1;
-  eff_t e = {0};
-  int had = jcalc(idx, &cx, &e);
-  R.money += v;
-  ev_money();
-  char t[12];
-  t[0] = '$';
-  fmt_int(t + 1, v);
-  ev_popup(TG_JOKER, idx, t, PC_MONEY);
-  if (had && (e.has & EF_MSG)) ev_popup(TG_JOKER, idx, e.msg, e.col);
-  /* the index may have moved if a joker was added: find it again */
-  for (int i = 0; i < R.njokers; i++)
-    if (R.jokers[i].uid == uid) idx = i;
-  joker_remove(idx, 2);
-  apply_disable_request();
-  if (R.phase == PH_ROUND && R.blind == BL_FINAL_LEAF && !R.blind_disabled) blind_disable();
-  for (int i = 0; i < R.njokers; i++) {
-    cx_t c2 = {0};
-    c2.kind = CX_SELLING_CARD, c2.bp = -1;
-    eff_t e2 = {0};
-    if (jcalc(i, &c2, &e2) && (e2.has & EF_MSG)) ev_popup(TG_JOKER, e2.card, e2.msg, e2.col);
-  }
-  ev_sync();
-  return 1;
+int sell_value(int i) {
+  int v = JOKERS[R.jokers[i].id].cost / 2;
+  return v < 1 ? 1 : v;
 }
-
-int sell_cons(int idx) {
-  if (idx < 0 || idx >= R.ncons) return 0;
-  ev_reset();
-  int v = cons_sell_value(&R.cons[idx]);
-  R.money += v;
-  ev_money();
-  remove_cons(idx);
-  for (int i = 0; i < R.njokers; i++) {
-    cx_t c2 = {0};
-    c2.kind = CX_SELLING_CARD, c2.bp = -1;
-    eff_t e2 = {0};
-    if (jcalc(i, &c2, &e2) && (e2.has & EF_MSG)) ev_popup(TG_JOKER, e2.card, e2.msg, e2.col);
-  }
-  ev_sync();
+int sell_joker(int i) {
+  if (i < 0 || i >= R.njokers) return 0;
+  R.money += sell_value(i);
+  for (int k = i; k < R.njokers - 1; k++) R.jokers[k] = R.jokers[k + 1];
+  R.njokers--;
   return 1;
 }
-
 void move_joker(int from, int to) {
-  if (from < 0 || to < 0 || from >= R.njokers || to >= R.njokers || from == to) return;
+  if (from < 0 || to < 0 || from >= R.njokers || to >= R.njokers) return;
   joker_t t = R.jokers[from];
-  if (from < to)
-    for (int i = from; i < to; i++) R.jokers[i] = R.jokers[i + 1];
-  else
-    for (int i = from; i > to; i--) R.jokers[i] = R.jokers[i - 1];
-  R.jokers[to] = t;
+  R.jokers[from] = R.jokers[to], R.jokers[to] = t;
 }
 
-void move_hand_card(int from, int to) {
-  if (from < 0 || to < 0 || from >= R.nhand || to >= R.nhand || from == to) return;
-  uint8_t c = R.hand[from], s = R.sel[from];
-  if (from < to)
-    for (int i = from; i < to; i++) R.hand[i] = R.hand[i + 1], R.sel[i] = R.sel[i + 1];
-  else
-    for (int i = from; i > to; i--) R.hand[i] = R.hand[i - 1], R.sel[i] = R.sel[i - 1];
-  R.hand[to] = c, R.sel[to] = s;
-}
-
-int nselected(void) {
-  int n = 0;
-  for (int i = 0; i < R.nhand; i++) n += R.sel[i] != 0;
-  return n;
-}
-
-void toggle_select(int pos) {
-  if (pos < 0 || pos >= R.nhand) return;
-  if (R.cards[R.hand[pos]].flags & CF_FORCED) return; /* Cerulean Bell */
-  if (R.sel[pos]) R.sel[pos] = 0;
-  else if (nselected() < 5) R.sel[pos] = 1;
+void next_table(void) {
+  if (R.table < TB_GOLD) R.table++;
+  else {
+    if (R.salon == NSALONS && !R.endless) {
+      R.phase = PH_WON;
+      return;
+    }
+    R.salon++;
+    R.table = TB_BRONZE;
+    if ((R.twists_used & ((1 << NTWISTS) - 1)) == (1 << NTWISTS) - 1) R.twists_used = 0;
+    int t;
+    do t = rng_int(0, NTWISTS - 1);
+    while ((R.twists_used >> t) & 1);
+    R.twist = (uint8_t)t;
+    R.twists_used |= (uint8_t)(1 << t);
+  }
+  R.phase = PH_TITLE_CARD;
+  R.target = target_for(R.salon, R.table);
 }
 
-void sort_hand(int by_suit) {
-  /* Balatro: descending by rank (then suit), or by suit (then rank) */
-  static const uint8_t suitn[4] = {4, 3, 2, 1};
-  for (int a = 0; a < R.nhand; a++)
-    for (int b = a + 1; b < R.nhand; b++) {
-      const card_t *x = &R.cards[R.hand[a]], *y = &R.cards[R.hand[b]];
-      int kx, ky;
-      int nx = card_chip_nominal(x->rank) * 10 + (x->rank > 10 ? x->rank - 10 : 0);
-      int ny = card_chip_nominal(y->rank) * 10 + (y->rank > 10 ? y->rank - 10 : 0);
-      if (by_suit) kx = suitn[x->suit] * 1000 + nx, ky = suitn[y->suit] * 1000 + ny;
-      else kx = nx * 10 + suitn[x->suit], ky = ny * 10 + suitn[y->suit];
-      if (x->enh == E_STONE) kx = -100000 + kx;
-      if (y->enh == E_STONE) ky = -100000 + ky;
-      if (ky > kx) {
-        uint8_t t = R.hand[a];
-        R.hand[a] = R.hand[b], R.hand[b] = t;
-        t = R.sel[a], R.sel[a] = R.sel[b], R.sel[b] = t;
-      }
-    }
-  ev_push(EV_SORT);
+void continue_endless(void) {
+  R.endless = 1;
+  R.phase = PH_SHOP;
+  next_table();
 }
 
-/* ------------------------------------------------------------------ new run */
-void run_new(const char *seed) {
-  memset(&R, 0, sizeof R);
-  if (seed && seed[0]) {
-    for (int i = 0; i < 8 && seed[i]; i++) R.seed[i] = seed[i];
-  } else
-    rng_new_seed();
-  rng_seed_str(R.seed);
-  R.money = 4;
-  R.ante = 1;
-  R.round = 0;
-  R.base_hands = 4;
-  R.base_discards = 3 + 1; /* Red Deck: +1 discard every round */
-  R.joker_slots = 5;
-  R.cons_slots = 2;
-  R.interest_cap = 25;
-  R.reroll_base = 5;
-  R.shop_jokers_max = 2;
-  R.tarot_rate = 4, R.planet_rate = 4, R.spectral_rate = 0, R.playing_card_rate = 0, R.edition_rate = 1;
-  R.last_tarot_planet = -1;
-  R.temp_reroll = -1;
-  R.max_ante_reached = 1;
-  for (int h = 0; h < NHANDS; h++) {
-    R.hands[h].level = 1;
-    R.hands[h].visible = h >= H_STRAIGHT_FLUSH;
+static char *put_int(char *o, long v) {
+  char t[12];
+  int n = 0;
+  if (v < 0) *o++ = '-', v = -v;
+  do t[n++] = (char)('0' + v % 10), v /= 10;
+  while (v);
+  while (n) *o++ = t[--n];
+  *o = 0;
+  return o;
+}
+int joker_value(int slot, char *out) {
+  const joker_t *j = &R.jokers[slot];
+  char *o = out;
+  switch (j->id) {
+    case J_FIRE_EATER:
+      o = str_cat(o, "\003+"), o = put_int(o, j->grow), str_cat(o, T("\020 Multi"));
+      return 1;
+    case J_SNOWBALL:
+      o = str_cat(o, "\002+"), o = put_int(o, j->grow), str_cat(o, T("\020 Points"));
+      return 1;
+    case J_PENNY_JAR:
+      o = str_cat(o, "\003+"), o = put_int(o, R.money / 4), str_cat(o, T("\020 Multi"));
+      return 1;
   }
-  for (int s = 0; s < 4; s++)
-    for (int r = 2; r <= 14; r++) {
-      card_t c = {0};
-      c.rank = (uint8_t)r, c.suit = (uint8_t)s, c.flags = CF_USED;
-      R.cards[R.ncards_alloc] = c;
-      R.deck[R.ndeck++] = R.ncards_alloc++;
-    }
-  R.starting_deck = 52;
-  R.blind_state[0] = BS_SELECT, R.blind_state[1] = BS_UPCOMING, R.blind_state[2] = BS_UPCOMING;
-  R.boss = (uint8_t)get_new_boss();
-  R.skip_tag[0] = (uint8_t)tag_for_skip();
-  R.skip_tag[1] = (uint8_t)tag_for_skip();
-  next_voucher();
-  reset_round_cards();
-  R.phase = PH_BLIND_SELECT;
-  R.hands_left = (int16_t)round_hands();
-  R.discards_left = (int16_t)round_discards();
-  ev_reset();
-  ev_sync();
+  return 0;
 }
diff --git a/games/balatro/src/game.h b/games/balatro/src/game.h
index 1fbb41f..374ded3 100644
--- a/games/balatro/src/game.h
+++ b/games/balatro/src/game.h
@@ -1,265 +1,145 @@
-/* Game state and rules (no drawing). The rules follow Balatro's own code
- * (game.lua, card.lua, blind.lua, tag.lua, state_events.lua), ported to C.
- * Logic runs instantly and records what happened as events (ev.h) that the
- * interface then plays back with animations. */
+/* Jokeria: the rules (no drawing).
+ *
+ * A run is 8 salons of 3 tables each: Bronze, Silver and Gold. At each table
+ * you have a few hands and discards to reach a target score. A hand is up to
+ * 5 cards; its poker hand gives Points and Multi, each scoring card adds its
+ * rank to the Points, then the Jokers you own add their effects, left to right.
+ * Score of the hand = Points x Multi. Won tables pay coins, spent in the shop
+ * on Jokers and Lessons (a Lesson levels up one poker hand). The Gold table of
+ * each salon has a twist. Written for Jokeria (Calcade, 2026). */
 #ifndef GAME_H
 #define GAME_H
 #include <stdint.h>
-#include "../../common/np_text.h" /* T(): the texts players read */
-#include "data.h"
+#include "../../common/np_text.h"
 
-#define MAXCARDS 160
-#define MAXJ 20
-#define MAXCONS 10
-#define MAXHAND 30
-#define MAXTAGS 12
-#define MAXSHOP 6
-#define MAXPACK 5
-#define NHANDS 12
-#define WIN_ANTE 8
+#define NCARDS 52
+#define MAXHAND 10
+#define MAXSEL 5
+#define MAXJ 5
+#define NSHOP 2
+#define NSALONS 8
 
-/* suits: Balatro's order in 8BitDeck.png rows is H C D S; ours follows the
- * game's sort order (suit_nominal): Spades > Hearts > Clubs > Diamonds */
 enum { S_SPADES, S_HEARTS, S_CLUBS, S_DIAMONDS };
-enum { E_NONE, E_BONUS, E_MULT, E_WILD, E_GLASS, E_STEEL, E_STONE, E_GOLD, E_LUCKY };
-enum { ED_NONE, ED_FOIL, ED_HOLO, ED_POLY, ED_NEG };
-enum { SEAL_NONE, SEAL_GOLD, SEAL_RED, SEAL_BLUE, SEAL_PURPLE };
-/* poker hands, in Balatro's order (strongest first) */
-enum { H_FLUSH_FIVE, H_FLUSH_HOUSE, H_FIVE_KIND, H_STRAIGHT_FLUSH, H_FOUR_KIND, H_FULL_HOUSE, H_FLUSH, H_STRAIGHT,
-       H_THREE_KIND, H_TWO_PAIR, H_PAIR, H_HIGH_CARD };
+/* poker hands, weakest first */
+enum { H_HIGH, H_PAIR, H_TWO_PAIR, H_THREE, H_STRAIGHT, H_FLUSH, H_FULL, H_FOUR, H_STRAIGHT_FLUSH, NHANDS };
+enum { TB_BRONZE, TB_SILVER, TB_GOLD };
+enum { TW_CLOCK, TW_DROUGHT, TW_WEIGHT, TW_TAXMAN, TW_WIND, TW_TOWER, NTWISTS };
+enum { PH_TITLE_CARD, PH_ROUND, PH_CASH, PH_SHOP, PH_LOST, PH_WON };
+
+/* Jokers */
+enum {
+  J_BUSKER, J_RED_LANTERN, J_NIGHT_OWL, J_LOW_TIDE, J_SEVEN_SEAS, J_MATCHMAKER, J_TIGHTROPE, J_PENNY_JAR, J_CLOVER,
+  J_STAGEHAND, J_ENCORE, J_PICKPOCKET, J_RINGMASTER, J_FIRE_EATER, J_STRONGMAN, J_CAROUSEL, J_ROYAL_COURT,
+  J_ACE_PILOT, J_SNOWBALL, J_TWINS, J_LAMPLIGHTER, J_USURER, J_GRAND_FINALE, J_PHOENIX, J_PRISM, J_GAMBLER, NJOKERS
+};
+typedef struct {
+  const char *name, *desc;
+  uint8_t rarity; /* 0 common, 1 uncommon, 2 rare */
+  uint8_t cost;
+} joker_def_t;
+extern const joker_def_t JOKERS[NJOKERS];
 
-/* card flags */
-enum { CF_DEBUFF = 1, CF_DOWN = 2, CF_PLAYED_ANTE = 4, CF_FORCED = 8, CF_USED = 16, CF_SHATTER = 32, CF_DESTROY = 64,
-       CF_LUCKY = 128 };
 typedef struct {
   uint8_t rank; /* 2..14 */
-  uint8_t suit, enh, ed, seal, flags;
-  uint16_t perma; /* extra chips (Hiker) */
+  uint8_t suit;
 } card_t;
 
-/* joker flags */
-enum { JF_DEBUFF = 1, JF_DOWN = 2, JF_SLICED = 4 };
 typedef struct {
-  uint8_t id, ed, flags, c;
-  uint16_t uid;
-  int16_t extra_value;
-  int32_t a, b;
-  float x;
+  uint8_t id;
+  int16_t grow; /* what it has gained (Fire-Eater, Snowball) */
 } joker_t;
 
+/* shop items: a Joker, or a Lesson for a poker hand */
+enum { IT_NONE, IT_JOKER, IT_LESSON };
 typedef struct {
-  uint8_t id, ed;
-  uint16_t uid;
-  int16_t extra_value;
-} cons_t;
-
-/* areas */
-enum { A_DECK, A_HAND, A_PLAY, A_DISCARD, A_NONE };
-
-/* shop / pack items */
-enum { IT_NONE, IT_JOKER, IT_CONS, IT_CARD, IT_VOUCHER, IT_PACK };
-typedef struct {
-  uint8_t kind, id, ed, flags; /* flags: 1 = couponed (free) */
-  card_t card;                 /* for playing cards */
-  int16_t cost;
-  uint16_t uid;
-  int32_t a, b;                /* joker state preset (To Do List hand) */
-  float x;
-} sitem_t;
-
-/* packs: kind * 3 + size */
-enum { PK_ARCANA, PK_CELESTIAL, PK_STANDARD, PK_BUFFOON, PK_SPECTRAL };
-
-/* phases */
-enum { PH_BLIND_SELECT, PH_ROUND, PH_CASHOUT, PH_SHOP, PH_PACK, PH_GAMEOVER, PH_WIN };
-enum { BS_SELECT, BS_UPCOMING, BS_CURRENT, BS_DEFEATED, BS_SKIPPED };
-
-typedef struct {
-  int16_t level;
-  int16_t played, played_round;
-  uint8_t visible;
-} hand_t;
+  uint8_t kind, id, cost;
+} item_t;
 
 typedef struct {
-  /* run */
-  char seed[9];
   uint32_t rng[4];
   int32_t money;
-  int16_t ante, round;
-  uint8_t phase, won, endless;
-  uint8_t pack_return;  /* phase to go back to after a pack */
-  /* blinds */
-  uint8_t blind_state[3];  /* small, big, boss */
-  uint8_t boss;            /* boss blind id for this ante */
-  uint8_t skip_tag[2];     /* tags offered for skipping small / big */
-  uint8_t boss_rerolled;
-  uint8_t bosses_used[N_BLIND];
-  uint8_t blind;           /* current blind id (valid in round and cashout) */
-  uint8_t blind_on;        /* 0 small 1 big 2 boss: the one being played / next */
-  uint8_t blind_disabled, blind_triggered, blind_prepped;
-  uint16_t blind_hands;    /* The Eye: bit per hand type used */
-  int8_t mouth_hand;       /* The Mouth */
-  int8_t water_sub, needle_sub;
-  double chips;            /* round score */
-  double blind_chips;      /* target */
-  /* round */
-  int16_t hands_left, discards_left, hands_played_round, discards_used_round;
-  int16_t base_hands, base_discards, hand_size_mod, joker_slots, cons_slots;
-  int16_t temp_handsize;   /* Juggle Tag */
-  int16_t ecto_minus;
-  uint8_t sort_suit;
-  /* economy */
-  int16_t interest_cap, discount, reroll_base, reroll_cost, reroll_inc, free_rerolls, temp_reroll;
-  int16_t shop_jokers_max;
-  float tarot_rate, planet_rate, spectral_rate, playing_card_rate, edition_rate;
-  uint32_t vouchers;       /* bit per voucher */
-  uint8_t shop_voucher;    /* voucher offered this ante (0xFF none) */
-  uint8_t voucher_tag_extra; /* extra vouchers in the shop from Voucher Tags */
-  uint8_t d6, coupon;      /* shop tag effects applied */
-  /* global counters */
-  int32_t hands_played, skips, unused_discards, tarots_used;
-  uint16_t planets_used_mask;     /* Satellite: distinct planets */
-  int16_t starting_deck;
-  uint8_t last_hand;              /* last poker hand played (for Blue Seal) */
-  int8_t last_tarot_planet;       /* The Fool (-1 none) */
-  uint8_t gros_michel_extinct;
-  uint8_t most_played;
-  uint8_t first_shop_buffoon;
-  uint8_t idol_rank, idol_suit, mail_rank, ancient_suit, castle_suit;
-  uint16_t next_uid;
-  hand_t hands[NHANDS];
-  /* cards */
-  card_t cards[MAXCARDS];
-  uint8_t ncards_alloc;
-  uint8_t deck[MAXCARDS], hand[MAXHAND], play[8], discard[MAXCARDS];
-  uint8_t ndeck, nhand, nplay, ndiscard;
-  uint8_t sel[MAXHAND];    /* selected (highlighted) cards in hand, by hand position */
-  /* jokers and consumables */
+  uint8_t salon;   /* 1.. */
+  uint8_t table;   /* TB_* */
+  uint8_t phase;
+  uint8_t twist;   /* of this salon's Gold table */
+  uint8_t twists_used;
+  uint8_t endless;
+  double target, score;
+  int8_t hands_left, discards_left, hands_played;
+  uint8_t level[NHANDS];
+  uint8_t played[NHANDS];
+  /* cards: the deck is a shuffled list, the hand and the cards just played point into cards[] */
+  card_t cards[NCARDS];
+  uint8_t deck[NCARDS], ndeck;
+  uint8_t hand[MAXHAND], nhand;
+  uint8_t sel[MAXHAND];
   joker_t jokers[MAXJ];
   uint8_t njokers;
-  cons_t cons[MAXCONS];
-  uint8_t ncons;
-  /* tags */
-  uint8_t tags[MAXTAGS];
-  int8_t tag_orbital[MAXTAGS];
-  uint8_t ntags;
-  /* shop */
-  sitem_t shop[MAXSHOP];
-  uint8_t nshop;
-  sitem_t shop_v[3];
-  uint8_t nshop_v;
-  sitem_t shop_p[2];
-  uint8_t nshop_p;
-  /* pack being opened */
-  uint8_t pack_kind, pack_size, pack_picks, pack_from_tag;
-  sitem_t pack[MAXPACK];
-  uint8_t npack;
-  /* round eval (cash out) lines */
-  int16_t cash_blind, cash_hands, cash_interest, cash_total;
-  int16_t cash_joker[MAXJ];
-  uint8_t cash_joker_id[MAXJ], ncash_joker;
-  int16_t cash_tag;
-  /* stats */
+  uint8_t phoenix_used;
+  item_t shop[NSHOP];
+  uint8_t rerolls;
+  /* cash out */
+  int16_t cash_table, cash_hands, cash_interest, cash_jokers;
+  /* stats of the run */
   double best_hand;
-  int32_t cards_played, cards_discarded, cards_bought, rerolls;
-  int16_t max_ante_reached;
-  uint8_t end_marker;
+  uint16_t tables_won;
 } run_t;
-
 extern run_t R;
 
-/* ------------------------------------------------------------ rng */
-void rng_seed_str(const char *s);
-void rng_new_seed(void);
+/* The steps of a scored hand, played back by the interface */
+enum { ST_CARD, ST_HELD, ST_JOKER, ST_TOTAL };
+typedef struct {
+  uint8_t kind, who;    /* card position (in the play / the hand) or Joker slot */
+  int16_t points;       /* added to Points */
+  float mult;           /* added to Multi */
+  float xmult;          /* Multi times this (0: none) */
+  int8_t money;
+} step_t;
+#define MAXSTEPS 40
+typedef struct {
+  int hand;                       /* the poker hand */
+  uint8_t cards[MAXSEL], ncards;  /* the played cards (card ids) */
+  uint8_t scoring[MAXSEL];        /* 1 if that played card scores */
+  double points0, mult0;          /* the poker hand's own */
+  step_t steps[MAXSTEPS];
+  int nsteps;
+  double points, mult, total;
+} play_t;
+extern play_t P;
+
+/* random */
 uint32_t rng_u32(void);
-float rng_f(void);                 /* [0,1) */
-int rng_int(int a, int b);         /* [a,b] */
-int prob(float odds);              /* 1 in odds, scaled by Oops! All 6s */
-float probs_normal(void);
+int rng_int(int a, int b); /* [a, b] */
 
-/* ------------------------------------------------------------ helpers */
-int has_joker(int id);             /* count of non-debuffed */
-int has_voucher(int v);
-int card_chip_nominal(int rank);
-int card_is_face(int ci, int from_boss);
-int card_get_id(int ci);            /* rank or negative for stone */
-int card_is_suit(int ci, int suit, int bypass_debuff, int flush_calc);
-int hand_size(void);
-int joker_slots(void);
-int cons_slots(void);
-int joker_sell_value(const joker_t *j);
-int cons_sell_value(const cons_t *c);
-int item_cost(const sitem_t *it);
-double hand_chips(int h);
+/* poker hands */
+const char *hand_name(int h);
+double hand_points(int h);
 double hand_mult(int h);
-void level_up(int h, int amount, int anim_src);
-double blind_amount(int ante);
-const char *blind_name(int b);
-
-/* ------------------------------------------------------------ flow */
-void run_new(const char *seed);
-void run_start_blind_select(void);
-void blind_select(void);           /* play the blind on deck */
-void blind_skip(void);
-void boss_reroll(void);            /* Director's Cut / Retcon */
-int play_hand(void);               /* selected cards; returns 0 if nothing selected */
+int eval_hand(const uint8_t *ids, int n, uint8_t *scoring); /* the poker hand of those cards */
+int preview_hand(void);                                     /* of the selected cards, -1 none */
+const char *twist_name(int t);
+const char *twist_desc(int t);
+const char *table_name(int t);
+double target_for(int salon, int table);
+int table_reward(int table);
+
+/* flow */
+void run_new(void);
+void table_start(void);   /* from the title card of a table */
+int nselected(void);
+int play_hand(void);      /* scores the selected cards into P (the score is added by apply_play) */
+void apply_play(void);    /* after the animation: score, draw, win or lose */
 int discard_hand(void);
 void sort_hand(int by_suit);
-void toggle_select(int pos);       /* returns via R.sel */
-int nselected(void);
-void cash_out(void);
-void shop_enter(void);
-void shop_leave(void);
+void cash_out(void);      /* to the shop */
+void shop_fill(void);
+int shop_buy(int i);
 int shop_reroll(void);
-int shop_buy(int area, int idx, int use_now); /* area: 0 shop cards, 1 vouchers, 2 packs */
-void pack_open(int kind, int size, int from_tag);
-int pack_choose(int idx);
-void pack_skip(void);
-void pack_close(void);
-int sell_joker(int idx);
-int sell_cons(int idx);
-int use_cons(int idx);             /* 0 if it cannot be used now */
-int cons_can_use(int idx, int from_pack, int id);
+int reroll_cost(void);
+int sell_joker(int i);
+int sell_value(int i);
 void move_joker(int from, int to);
-void move_hand_card(int from, int to);
+void next_table(void);    /* from the shop */
 void continue_endless(void);
-
-/* joker engine (jokers.c) */
-void joker_add(int id, int ed, int silent);
-void joker_remove(int idx, int sold);
-void joker_on_added(joker_t *j);
-int joker_new_uid(void);
-void jokers_setting_blind(void);
-void jokers_first_hand_drawn(void);
-void jokers_end_of_round(int *saved);
-int jokers_dollar_bonus(int *per, uint8_t *ids);
-void jokers_simple_context(int ctx, int arg);
-enum { JC_SELL_CARD, JC_REROLL, JC_END_SHOP, JC_SKIP_BLIND, JC_SKIP_BOOSTER, JC_OPEN_BOOSTER, JC_BUY, JC_USE_CONS,
-       JC_CARDS_ADDED, JC_CARDS_REMOVED };
-
-/* creation */
-int create_joker_id(int rarity_force, int legendary);  /* rarity_force: -1 random */
-int create_cons_id(int set);    /* set: 0 tarot, 1 planet, 2 spectral */
-int poll_edition(float mod, int no_neg, int guaranteed);
-void add_cons(int id, int ed);
-int add_card_to_deck(card_t c, int area); /* returns card index */
-void destroy_card(int ci);
-card_t random_card(void);
-int random_enhancement(int no_stone);
-void add_tag(int t);
-int tag_for_skip(void);
-
-/* scoring (score.c) */
-typedef struct {
-  int hand;               /* poker hand type */
-  uint8_t scoring[8];     /* indices into R.play of scoring cards */
-  uint8_t nscoring;
-  uint16_t contains;      /* bit per hand type contained */
-} handinfo_t;
-void evaluate_hand(const uint8_t *cards, int n, handinfo_t *hi);
-int preview_hand(void);  /* poker hand of the selected cards, -1 if none */
-
-extern const char *const rank_names[15];
-extern const char *const suit_names[4];
-extern const char *const suit_names_plural[4];
+int joker_value(int slot, char *out); /* the current value shown in a description, 0 if none */
 #endif
diff --git a/games/balatro/src/gfx.c b/games/balatro/src/gfx.c
index bbcf957..7c6c957 100644
--- a/games/balatro/src/gfx.c
+++ b/games/balatro/src/gfx.c
@@ -11,14 +11,12 @@
 #include "art.h"
 #include "assets.h"
 #include "bg.h"
-#include "flame.h"
-#include "fx.h"
 
 #define SH 16      /* strip height */
 #define MAXI 360   /* items per frame */
 #define MAXCLIP 16
 
-enum { I_RECT, I_RRECT, I_SHADE, I_SPRITE, I_TEXT, I_HLINE, I_FLAME, I_RSQ };
+enum { I_RECT, I_RRECT, I_SHADE, I_SPRITE, I_TEXT, I_HLINE, I_RSQ };
 
 typedef struct {
   int16_t x, y, w, h;
@@ -154,11 +152,6 @@ PROF_NOINLINE static void draw_rsq(item_t *it, int y0, int ra, int rb, int cx0,
   }
 }
 
-void g_flame(int k, int x, int y, int w, int h, int top) {
-  if (!flame_on()) return;
-  item_t *it = add(I_FLAME, x, y, w, h);
-  if (it) it->a = (uint16_t)k, it->b = (uint16_t)top;
-}
 void g_sprite_wh(int id, int x, int y, int w, int h, int fx) {
   item_t *it = add(I_SPRITE, x, y, w, h);
   if (it) it->a = (uint16_t)id, it->fx = (uint8_t)fx, it->b = 0;
@@ -168,20 +161,20 @@ void g_sprite_wh(int id, int x, int y, int w, int h, int fx) {
 static const C code_col[17] = {
     0,
     0xFFFF,              /* 1 white */
-    HEXC(0x009DFF),      /* 2 chips */
-    HEXC(0xFE5F55),      /* 3 mult */
-    HEXC(0xFF9A00),      /* 4 attention */
-    HEXC(0xF3B958),      /* 5 money */
-    HEXC(0x4BC292),      /* 6 green */
-    HEXC(0x88888A),      /* 7 inactive */
-    HEXC(0xA782D1),      /* 8 tarot */
-    HEXC(0x13AFCE),      /* 9 planet */
+    HEXC(0xF5A623),      /* 2 points */
+    HEXC(0xE8457E),      /* 3 multi */
+    HEXC(0x1F9BB4),      /* 4 attention */
+    HEXC(0xD49A12),      /* 5 coins */
+    HEXC(0x63C26E),      /* 6 green */
+    HEXC(0x8E88A0),      /* 7 inactive */
+    HEXC(0x7FC8F8),      /* 8 lessons */
+    0,                   /* 9 */
     0,                   /* 10 newline */
-    HEXC(0x4584FA),      /* 11 spectral */
-    HEXC(0x4F6367),      /* 12 dark text */
+    0,                   /* 11 */
+    HEXC(0x3A3150),      /* 12 dark text */
     0,                   /* 13 */
-    0xFFFF,              /* 14 white on red badge */
-    HEXC(0x4CA893),      /* 15 edition */
+    0xFFFF,              /* 14 white on a badge */
+    0,                   /* 15 */
     0,                   /* 16 reset */
 };
 
@@ -348,7 +341,7 @@ static int textw(const char *s, int f, int one_line) {
       continue;
     }
 #endif
-    if (ch > (f & (T_LARGE | T_MED) ? 126 : 130)) ch = '?';
+    if (ch > (f & (T_LARGE | T_MED) ? 126 : 131)) ch = '?';
     w += advance(f, ch, glyph(f, ch, &bits));
   }
   if (badge) w += 2;
@@ -493,7 +486,7 @@ PROF_NOINLINE static void draw_text(item_t *it, int y0, int ra, int rb, int cx0,
           C *d = strip + (yy - y0) * 320;
           int a = x, b = x + bw;
           if (yy == by0 || yy == by1 - 1) a++, b--;
-          for (int xx = a < cx0 ? cx0 : a; xx < b && xx < cx1; xx++) d[xx] = HEXC(0xFE5F55);
+          for (int xx = a < cx0 ? cx0 : a; xx < b && xx < cx1; xx++) d[xx] = HEXC(0x9B3FD4);
         }
         x += 2 * sc;
         col = 0xFFFF;
@@ -507,7 +500,7 @@ PROF_NOINLINE static void draw_text(item_t *it, int y0, int ra, int rb, int cx0,
       continue;
     }
 #endif
-    if (ch > (f & (T_LARGE | T_MED) ? 126 : 130)) ch = '?';
+    if (ch > (f & (T_LARGE | T_MED) ? 126 : 131)) ch = '?';
     const uint8_t *b;
     const glyph_t *g = glyph(f, ch, &b);
     uint32_t bit;
@@ -553,8 +546,7 @@ PROF_NOINLINE static void draw_text(item_t *it, int y0, int ra, int rb, int cx0,
 
 /* ---------------------------------------------------------------- sprites */
 static C fx_pixel(C c, int fx, int x, int y, int w, int h, float seed) {
-  int ed = fx & FX_EDMASK;
-  if (ed) c = fx_edition(c, ed, x, y, w, h, seed);
+  (void)x, (void)y, (void)w, (void)h, (void)seed;
   if (fx & FX_GREY) {
     int l = ((c >> 11) * 2 + ((c >> 5) & 63) + (c & 31) * 2) / 5;
     c = (C)(l << 11 | (l * 2) << 5 | l);
@@ -675,10 +667,11 @@ static uint32_t frame_hash(void) {
   }
   for (int i = 0; i < strpos; i++) h = (h ^ (uint8_t)strbuf[i]) * 16777619u;
   for (int i = 0; i < nitems; i++)
-    if ((items[i].type == I_SPRITE && (items[i].fx & FX_EDMASK)) || items[i].type == I_FLAME) {
-      h ^= g_time / 33; /* animated editions and flames */
+    if (items[i].type == I_SPRITE && (items[i].fx & FX_PULSE)) {
+      h ^= g_time / 33; /* a pulsing sprite */
       break;
     }
+  if (bg_swirl && bg_animated()) h ^= g_time / 33;
   return h * 31 + (uint32_t)nitems;
 }
 
@@ -687,15 +680,10 @@ void g_end(void) {
   uint32_t h = frame_hash();
   if (h == last_hash) return;
   last_hash = h;
-  fx_frame(g_time);
   /* where each sprite is used last, so the cache can free it after */
   art_begin_frame();
   for (int i = 0; i < nitems; i++)
     if (items[i].type == I_SPRITE) art_use(items[i].a, items[i].y, items[i].y + items[i].h);
-  /* the flames' smoke, once for the frame (on the stack) */
-  uint16_t fgrid[2][FLAME_GR * FLAME_GC];
-  for (int i = 0; i < nitems; i++)
-    if (items[i].type == I_FLAME) flame_grid(items[i].a & 1, items[i].w, items[i].h, fgrid[items[i].a & 1]);
   for (int y0 = 0; y0 < 240; y0 += SH) {
     int y1 = y0 + SH;
     /* the sprites of this strip (decoded now if needed) */
@@ -720,9 +708,6 @@ void g_end(void) {
         case I_SPRITE: draw_sprite(it, y0, cy0, cy1, c[0], c[2]); break;
         case I_TEXT: draw_text(it, y0, cy0, cy1, c[0], c[2]); break;
         case I_RSQ: draw_rsq(it, y0, cy0, cy1, c[0], c[2]); break;
-        case I_FLAME:
-          flame_rows(it->a & 1, it->x, it->y, it->w, it->h, it->b, fgrid[it->a & 1], strip, y0, cy0, cy1, c[0], c[2]);
-          break;
       }
     }
     eadk_display_push_rect((eadk_rect_t){0, (uint16_t)y0, 320, SH}, strip);
diff --git a/games/balatro/src/gfx.h b/games/balatro/src/gfx.h
index 30781f6..e8c6753 100644
--- a/games/balatro/src/gfx.h
+++ b/games/balatro/src/gfx.h
@@ -7,9 +7,9 @@ typedef uint16_t C;
 #define RGB(r, g, b) ((C)((((r) & 0xF8) << 8) | (((g) & 0xFC) << 3) | ((b) >> 3)))
 #define HEXC(h) RGB(((h) >> 16) & 255, ((h) >> 8) & 255, (h) & 255)
 
-/* text flags. Sizes, after Balatro's hierarchy (all m6x11):
-   T_LARGE  11 pixel capitals: values (chips, mult, score, money), titles
-   T_MED     9 pixel capitals: names and headings (blind, poker hand, item)
+/* text flags. Sizes (Jokeria's own font, tools/conformite/jokeria_font.py):
+   T_LARGE  11 pixel capitals: values (points, multi, score, coins), titles
+   T_MED     9 pixel capitals: names and headings
    T_SMALL   7 pixel capitals: labels, buttons, descriptions */
 enum {
   T_SMALL = 0,
@@ -29,21 +29,18 @@ enum {
 #define XROWS (NP_TEXT_EXTRA ? 2 : 0)
 #define TXT_CJK (NP_TEXT_EXTRA && (unsigned char)T("Mult")[0] >= 0xE0)
 #define LINE_H (TXT_CJK ? 12 : 10) /* lines of the small size */
-/* inline colour codes in strings */
-#define TC_WHITE "\x01"
-#define TC_CHIPS "\x02"
-#define TC_MULT "\x03"
-#define TC_ATTN "\x04"
-#define TC_MONEY "\x05"
-#define TC_GREEN "\x06"
-#define TC_GREY "\x07"
-#define TC_TAROT "\x08"
-#define TC_PLANET "\x09"
-#define TC_SPECTRAL "\x0B"
-#define TC_DARK "\x0C"
-#define TC_XMULT "\x0E" /* white on a red badge until the next code */
-#define TC_EDITION "\x0F"
-#define TC_RESET "\x10" /* back to the item's colour */
+/* inline colour codes in strings (written as octal escapes in the texts: \002 and so on) */
+#define TC_WHITE "\001"
+#define TC_POINTS "\002"
+#define TC_MULT "\003"
+#define TC_ATTN "\004"
+#define TC_MONEY "\005"
+#define TC_GREEN "\006"
+#define TC_GREY "\007"
+#define TC_LESSON "\010"
+#define TC_DARK "\014"
+#define TC_XMULT "\016" /* white on a purple badge until the next code */
+#define TC_RESET "\020" /* back to the text's colour */
 /* suit symbols, small size only */
 #define SUIT_SPADE "\x7f"
 #define SUIT_HEART "\x80"
@@ -53,12 +50,8 @@ enum {
 /* sprite effects */
 enum {
   FX_NONE = 0,
-  FX_FOIL = 1,
-  FX_HOLO = 2,
-  FX_POLY = 3,
-  FX_NEG = 4,
-  FX_EDMASK = 7,
-  FX_DIM = 8,      /* darkened (debuffed, unaffordable) */
+  FX_PULSE = 1,    /* (animated: redrawn every frame) */
+  FX_DIM = 8,      /* darkened (unaffordable) */
   FX_FLIPX = 16,   /* mirrored */
   FX_WHITE = 32,   /* flat white (flash) */
   FX_SHADOW = 64,  /* flat translucent black (card shadow) */
@@ -76,7 +69,6 @@ void g_shade(int x, int y, int w, int h, int r, int alpha); /* darken, alpha 0..
 void g_sprite(int id, int x, int y, int fx, int scale); /* scale: 256 = 1 */
 void g_sprite_wh(int id, int x, int y, int w, int h, int fx);
 void g_rsquare(int cx, int cy, int hs, int angle, C c); /* angle: 64 = a quarter turn */
-void g_flame(int k, int x, int y, int w, int h, int top); /* 0 chips, 1 mult; thins out just under top */
 void g_text(const char *s, int x, int y, int flags, C c);
 int g_textw(const char *s, int flags);
 int g_cap(int flags);   /* height of the capitals */
diff --git a/games/balatro/src/icon.png b/games/balatro/src/icon.png
index 78b4fad393d13dd6bb2c3628f70f4a338c8a5f9b..710a7fbe3cfa8e1c33a8e23a8ff81e79535d1174 100644
GIT binary patch
delta 2058
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

literal 7286
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
Qga7~l07*qoM6N<$f(5N)!vFvP

diff --git a/games/balatro/src/main.c b/games/balatro/src/main.c
index cbb5ed9..e817158 100644
--- a/games/balatro/src/main.c
+++ b/games/balatro/src/main.c
@@ -1,4 +1,4 @@
-/* Balatro for NumWorks: the app, its screens and controls. */
+/* Jokeria for NumWorks: the app, its screens and controls (Calcade, 2026). */
 #include <eadk.h>
 #include <string.h>
 #include "../../common/epsilon_app.h"
@@ -6,34 +6,49 @@
 #include "art.h"
 #include "assets.h"
 #include "bg.h"
-#include "ev.h"
-#include "jokers.h"
+#include "game.h"
+#include "gfx.h"
 #include "save.h"
-#include "ui.h"
 #include "util.h"
 
 #ifdef __ELF__
-const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Balatro";
+const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Jokeria";
 const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
 #endif
 
-static np_jump_t leave;
-static int in_game, has_save;
+/* ------------------------------------------------------------ colours */
+#define C_INK HEXC(0x2A2140)
+#define C_PANEL HEXC(0x241B38)
+#define C_PANEL2 HEXC(0x32284C)
+#define C_EDGE HEXC(0x5A4A82)
+#define C_CREAM HEXC(0xFFF8E8)
+#define C_WHITE 0xFFFF
+#define C_GREY HEXC(0x8E88A0)
+#define C_POINTS HEXC(0xF5A623)
+#define C_MULT HEXC(0xE8457E)
+#define C_XMULT HEXC(0x9B3FD4)
+#define C_ATTN HEXC(0x6FD3E0)
+#define C_MONEY HEXC(0xF8DC5A)
+#define C_GREEN HEXC(0x63C26E)
+#define C_LESSON HEXC(0x7FC8F8)
+#define C_RED HEXC(0xE0504A)
+static const C SUIT_C[4] = {HEXC(0x28243C), HEXC(0xD22E48), HEXC(0x245C54), HEXC(0xE26C1E)};
+static const C RARITY_C[3] = {HEXC(0x5FB89A), HEXC(0x9A7FE0), HEXC(0xE8B040)};
 
 /* ------------------------------------------------------------ input */
 enum { K_LEFT, K_UP, K_DOWN, K_RIGHT, K_OK, K_BACK, K_HOME, K_ONOFF = 8, K_SHIFT = 12, K_ALPHA, K_XNT, K_VAR,
        K_TOOLBOX, K_BACKSPACE, K_EXE = 52 };
 static uint64_t keys, prev_keys;
 static int rep_key = -1, rep_t;
-static int pressed[64];
-static int buf_key[4], buf_age[4], nbuf; /* presses kept while busy */
+static uint8_t pressed[64];
+static np_jump_t leave;
+static int in_game, has_save;
 
+static void save_now(void) { save_write(in_game ? (R.phase != PH_LOST && R.phase != PH_WON) : has_save); }
 static void quit_now(void) {
-  if (in_game) save_write(R.phase != PH_GAMEOVER);
-  else save_write(has_save);
+  save_now();
   np_jump(leave);
 }
-
 static void poll_input(int dt) {
   prev_keys = keys;
   keys = eadk_keyboard_scan();
@@ -46,1479 +61,852 @@ static void poll_input(int dt) {
     }
   if (rep_key >= 0) {
     if (!((keys >> rep_key) & 1)) rep_key = -1;
-    else if ((rep_t -= dt) <= 0) {
-      pressed[rep_key] = 1;
-      rep_t = 90;
-    }
+    else if ((rep_t -= dt) <= 0) pressed[rep_key] = 1, rep_t = 90;
   }
 }
 static int held(int k) { return (keys >> k) & 1; }
+static int ok(void) { return pressed[K_OK] || pressed[K_EXE]; }
 
-/* ------------------------------------------------------------ screens */
+/* ------------------------------------------------------------ state of the interface */
 enum { SCR_TITLE, SCR_GAME };
-enum { OV_NONE, OV_OPTIONS, OV_RUNINFO, OV_DECK, OV_CREDITS, OV_HELP, OV_SETUP, OV_CONFIRM_NEW };
-static int screen = SCR_TITLE, overlay = OV_NONE, ov_sel, ov_tab;
-static int title_sel;
-static int menu_open = -1, menu_sel; /* action menu on the focused item */
-static int deny_t;                    /* "can't" feedback */
-
-enum { Z_HAND = 1, Z_JOKERS, Z_CONS, Z_BTN, Z_DECK, Z_SHOP, Z_BOTTOM, Z_SHOPBTN, Z_PACK, Z_SKIP };
-static int zone = Z_HAND, zi;
-static int focus_time, last_zone, last_zi; /* how long the focus stayed put */
-
-extern void layout_cards(int dt, int show_hand, int hand_y);
-extern void draw_jokers_row(int focus_j, int focus_c, int sel_j, int sel_c);
-extern void draw_hand_cards(int focus_h);
-extern void draw_play_cards(void);
-extern void draw_deck_pile(int focused);
-extern void draw_popups(void);
-extern int ui_hand_x(int i, int n);
-extern int blind_debuffs_hand(void);
-extern int cons_usable(int id, int in_pack);
-
-static void deny(void) { deny_t = 300; }
-static void autosave(void) { save_write(R.phase != PH_GAMEOVER); }
-
-static void bg_for_phase(void) {
-  if (screen == SCR_TITLE) {
-    bg_mode(1);
+enum { OV_NONE, OV_PAUSE, OV_INFO, OV_HELP, OV_CONFIRM };
+static int screen = SCR_TITLE, overlay, ov_sel, title_sel;
+enum { Z_HAND, Z_JOKERS, Z_SHOP, Z_BTN };
+static int zone, zi, sell_armed = -1, deny_t, by_suit;
+/* the scoring of a hand */
+static int anim, anim_step, anim_t, anim_count;
+static double shown_pts, shown_mult, shown_score;
+
+static void deny(void) { deny_t = 260; }
+
+/* ------------------------------------------------------------ drawing helpers */
+static void panel(int x, int y, int w, int h) {
+  g_rrect(x, y + 2, w, h, 6, C_INK);
+  g_rrect(x, y, w, h, 6, C_EDGE);
+  g_rrect(x + 1, y + 1, w - 2, h - 2, 5, C_PANEL);
+}
+static void badge(int x, int y, int w, int h, C c, const char *s) {
+  g_rrect(x, y + 1, w, h, 4, darken(c, 14));
+  g_rrect(x, y, w, h, 4, c);
+  int f = T_LARGE | T_COND;
+  if (g_textw(s, f) > w - 4) f = T_MED | T_COND;
+  if (g_textw(s, f) > w - 4) f = T_SMALL;
+  g_text_box(s, x, y, w, h, f, C_WHITE);
+}
+static void button(int x, int y, int w, int h, const char *label, C c, int focus) {
+  if (focus) g_rrect(x - 2, y - 2, w + 4, h + 4, 6, C_WHITE);
+  g_rrect(x, y + 2, w, h, 5, darken(c, 14));
+  g_rrect(x, y, w, h, 5, c);
+  g_text_box(label, x, y, w, h, T_MED | T_COND, C_WHITE);
+}
+static char *num(char *o, double v) { return fmt_commas(o, v); }
+static char tbuf[8][96];
+static int tb;
+static char *tmp(void) { return tbuf[tb++ & 7]; }
+
+/* the rank's label */
+static const char *rank_label(int r) {
+  static const char *const N[15] = {"", "", "2", "3", "4", "5", "6", "7", "8", "9", "10", T("J"), T("Q"), T("K"), T("A")};
+  return N[r];
+}
+static const char SUIT_CH[4][2] = {"\177", "\200", "\201", "\202"};
+
+#define CARD_W 33
+#define CARD_H 45
+static void draw_card(int id, int x, int y, int focus, int dim) {
+  const card_t *c = &R.cards[id];
+  C col = SUIT_C[c->suit];
+  if (focus) g_rrect(x - 2, y - 2, CARD_W + 4, CARD_H + 4, 5, C_ATTN);
+  g_rrect(x + 1, y + 2, CARD_W, CARD_H, 4, HEXC(0x140E20));
+  g_rrect(x, y, CARD_W, CARD_H, 4, C_INK);
+  g_rrect(x + 1, y + 1, CARD_W - 2, CARD_H - 2, 3, dim ? HEXC(0xB8B2C4) : C_CREAM);
+  g_text(rank_label(c->rank), x + 3, y + 3, T_MED | T_COND, col);
+  g_text(SUIT_CH[c->suit], x + 3, y + 14, T_SMALL, col);
+  if (c->rank >= 11 && c->rank <= 13) g_sprite(SPR_FACE + c->rank - 11, x + 12, y + 24, 0, 256);
+  else g_sprite(SPR_PIP_L + c->suit, x + 15, y + 22, 0, 256);
+  if (dim) g_shade(x, y, CARD_W, CARD_H, 4, 6);
+}
+static void draw_joker(int id, int x, int y, int focus, int fx) {
+  if (focus) g_rrect(x - 2, y - 2, ART_CW + 4, ART_CH + 4, 5, C_ATTN);
+  g_sprite(SPR_J + id, x + 1, y + 2, FX_SHADOW, 256);
+  g_sprite(SPR_J + id, x, y, fx, 256);
+  g_rrect(x + ART_CW / 2 - 4, y + ART_CH - 4, 8, 3, 1, RARITY_C[JOKERS[id].rarity]);
+}
+static void draw_lesson(int h, int x, int y, int focus) {
+  if (focus) g_rrect(x - 2, y - 2, ART_CW + 4, ART_CH + 4, 5, C_ATTN);
+  g_rrect(x + 1, y + 2, ART_CW, ART_CH, 4, HEXC(0x140E20));
+  g_rrect(x, y, ART_CW, ART_CH, 4, C_INK);
+  g_rrect(x + 1, y + 1, ART_CW - 2, ART_CH - 2, 3, HEXC(0x2E5F8A));
+  g_rrect(x + 3, y + 3, ART_CW - 6, ART_CH - 6, 2, HEXC(0x3E7FB0));
+  /* an open book */
+  g_rrect(x + 6, y + 9, 11, 14, 1, C_CREAM);
+  g_rrect(x + 18, y + 9, 11, 14, 1, C_CREAM);
+  for (int k = 0; k < 4; k++) g_rect(x + 8, y + 12 + k * 3, 7, 1, C_GREY), g_rect(x + 20, y + 12 + k * 3, 7, 1, C_GREY);
+  g_text(T("+1"), x + ART_CW / 2, y + 28, T_MED | T_CENTER, C_MONEY);
+  (void)h;
+}
+
+/* a description in a panel, with the item's name; returns nothing */
+static void tooltip(int x, int y, const char *name, const char *desc, const char *extra, C name_c) {
+  int w = g_textw(name, T_MED) + 12, dw = g_textw(desc, T_SMALL) + 12;
+  if (dw > w) w = dw;
+  if (extra && g_textw(extra, T_SMALL) + 12 > w) w = g_textw(extra, T_SMALL) + 12;
+  int h = 18 + g_pitch(T_SMALL) * g_lines(desc) + (extra ? g_pitch(T_SMALL) + 2 : 0) + 4;
+  if (x + w / 2 > 316) x = 316 - w / 2;
+  if (x - w / 2 < 4) x = 4 + w / 2;
+  if (y + h > 236) y = 236 - h;
+  if (y < 2) y = 2;
+  panel(x - w / 2, y, w, h);
+  g_text(name, x, y + 5, T_MED | T_CENTER, name_c);
+  g_rrect(x - w / 2 + 4, y + 17, w - 8, h - 21, 3, C_CREAM);
+  g_text(desc, x, y + 20, T_SMALL | T_CENTER, HEXC(0x3A3150));
+  if (extra) g_text(extra, x, y + 20 + g_pitch(T_SMALL) * g_lines(desc) + 1, T_SMALL | T_CENTER, HEXC(0x3A3150));
+}
+/* in the shop: the focused item's description, at the bottom of the screen */
+static int bottom_box;
+static void tooltip_at(int x, int y, const char *name, const char *desc, const char *extra, C name_c) {
+  if (!bottom_box) {
+    tooltip(x, y, name, desc, extra, name_c);
     return;
   }
-  bg_mode(0);
-  if (R.phase == PH_PACK) {
-    switch (R.pack_kind) {
-      case PK_ARCANA: bg_colours(0x8867A5, 0x2C3536, 0, 1.5f, 0, 0); break;
-      case PK_SPECTRAL: bg_colours(0x4584FA, 0x2C3536, 0, 2, 0, 0); break;
-      case PK_STANDARD: bg_colours(0x2C3536, 0xFE5F55, 0, 3, 0, 0); break;
-      case PK_BUFFOON: bg_colours(0xFF9A00, 0x374244, 0, 2, 0, 0); break;
-      default: bg_colours(0x374244, 0, 0, 3, 0, 0);
+  panel(4, 188, 312, 50);
+  g_text(name, 12, 194, T_MED, name_c);
+  if (extra) g_text(extra, 12, 210, T_SMALL, C_GREY);
+  g_rrect(124, 191, 188, 44, 3, C_CREAM);
+  g_text_box(desc, 124, 191, 188, 44, T_SMALL, HEXC(0x3A3150));
+}
+static void joker_tooltip(int slot_or_id, int owned, int x, int y) {
+  int id = owned ? R.jokers[slot_or_id].id : slot_or_id;
+  char *e = 0, *v = tmp();
+  if (owned && joker_value(slot_or_id, v)) {
+    char *t = tmp();
+    char *o = str_cat(t, T("(now "));
+    o = str_cat(o, v);
+    str_cat(o, ")");
+    e = t;
+  }
+  static const char *const RAR[3] = {T("Common"), T("Uncommon"), T("Rare")};
+  if (!e) e = (char *)RAR[JOKERS[id].rarity];
+  tooltip_at(x, y, JOKERS[id].name, JOKERS[id].desc, e, RARITY_C[JOKERS[id].rarity]);
+}
+static void lesson_tooltip(int h, int x, int y) {
+  char *d = tmp(), *o = d;
+  o = str_cat(o, T("Raises the level of\n\004"));
+  o = str_cat(o, hand_name(h));
+  o = str_cat(o, T("\020 by one:\n\002+"));
+  /* what one level adds */
+  int lv = R.level[h];
+  R.level[h]++;
+  double p1 = hand_points(h), m1 = hand_mult(h);
+  R.level[h] = (uint8_t)lv;
+  o = fmt_int(o, (long)(p1 - hand_points(h)));
+  o = str_cat(o, T("\020 Points, \003+"));
+  o = fmt_int(o, (long)(m1 - hand_mult(h)));
+  str_cat(o, T("\020 Multi"));
+  char *e = tmp(), *q = e;
+  q = str_cat(q, T("Now level "));
+  fmt_int(q, lv);
+  tooltip_at(x, y, T("Lesson"), d, e, C_LESSON);
+}
+
+/* ------------------------------------------------------------ the top of a table */
+static void draw_table_head(void) {
+  char *s;
+  panel(4, 4, 150, 38);
+  g_text(table_name(R.table), 12, 9, T_MED, R.table == TB_GOLD ? C_MONEY : R.table == TB_SILVER ? HEXC(0xD8DCE8) : HEXC(0xE0A070));
+  s = tmp();
+  if (R.table == TB_GOLD) {
+    char *o = str_cat(s, twist_name(R.twist));
+    (void)o;
+    g_text(s, 12, 25, T_SMALL, C_ATTN);
+  } else {
+    char *o = str_cat(s, T("Salon "));
+    o = fmt_int(o, R.salon);
+    if (R.salon <= NSALONS) str_cat(str_cat(o, " / "), "8");
+    g_text(s, 12, 25, T_SMALL, C_GREY);
+  }
+  panel(160, 4, 156, 38);
+  g_text(T("Target"), 168, 9, T_SMALL, C_GREY);
+  s = tmp();
+  num(s, R.target);
+  g_text(s, 308, 8, T_MED | T_RIGHT, C_RED);
+  g_text(T("Score"), 168, 25, T_SMALL, C_GREY);
+  s = tmp();
+  num(s, dfloor(shown_score));
+  g_text(s, 308, 23, T_LARGE | T_RIGHT | T_COND, C_WHITE);
+}
+
+static int joker_x(int i, int n) { return 160 - (n * 40 - 5) / 2 + i * 40; }
+static void draw_joker_row(int y, int focus_slot, int active_slot) {
+  for (int i = 0; i < MAXJ; i++) {
+    int x = joker_x(i, MAXJ);
+    if (i >= R.njokers) {
+      g_shade(x, y, ART_CW, ART_CH, 4, 8);
+      continue;
     }
+    int dy = i == active_slot ? -4 : 0;
+    draw_joker(R.jokers[i].id, x, y + dy, i == focus_slot, 0);
+  }
+}
+
+static void draw_bottom_bar(void) {
+  char *s;
+  panel(4, 212, 312, 26);
+  s = tmp();
+  str_cat(fmt_int(str_cat(s, T("Hands ")), R.hands_left), "");
+  g_text(s, 12, 220, T_MED | T_COND, C_POINTS);
+  s = tmp();
+  fmt_int(str_cat(s, T("Discards ")), R.discards_left);
+  g_text(s, 88, 220, T_MED | T_COND, C_MULT);
+  g_sprite(SPR_COIN, 186, 220, 0, 256);
+  s = tmp();
+  fmt_int(s, R.money);
+  g_text(s, 198, 220, T_MED | T_COND, C_MONEY);
+  s = tmp();
+  str_cat(fmt_int(str_cat(s, T("Deck ")), R.ndeck), "");
+  g_text(s, 308, 221, T_SMALL | T_RIGHT, C_GREY);
+}
+
+/* ------------------------------------------------------------ the round */
+static int hand_x(int i, int n) {
+  int sp = n <= 8 ? 37 : 296 / n;
+  return 160 - ((n - 1) * sp + CARD_W) / 2 + i * sp;
+}
+
+static void hand_line(int h, int y) {
+  /* the poker hand of the selection, its level, Points x Multi */
+  panel(4, y, 312, 30);
+  char *s = tmp();
+  if (h >= 0) {
+    g_text(hand_name(h), 12, y + 5, T_MED | T_COND, C_WHITE);
+    char *o = str_cat(s, T("level "));
+    fmt_int(o, R.level[h]);
+    g_text(s, 12, y + 18, T_SMALL, C_GREY);
+  } else
+    g_text(T("Pick up to 5 cards"), 12, y + 11, T_SMALL, C_GREY);
+  char *a = tmp(), *b = tmp();
+  if (anim) num(a, shown_pts), num(b, shown_mult);
+  else if (h >= 0) num(a, hand_points(h)), num(b, hand_mult(h));
+  else str_cat(a, "0"), str_cat(b, "0");
+  badge(186, y + 5, 56, 20, C_POINTS, a);
+  g_text("x", 248, y + 9, T_MED, C_WHITE);
+  badge(258, y + 5, 52, 20, C_MULT, b);
+}
+
+/* the popup of the current step */
+static void step_popup(const step_t *st, int x, int y) {
+  char *s = tmp(), *o = s;
+  C c = C_POINTS;
+  if (st->kind == ST_TOTAL) return;
+  if (st->xmult > 0) {
+    *o++ = 'x';
+    fmt_short(o, st->xmult);
+    c = C_XMULT;
+  } else if (st->points && st->mult) {
+    o = str_cat(o, "+");
+    o = fmt_int(o, st->points);
+    o = str_cat(o, " +");
+    fmt_short(o, st->mult);
+    c = C_MULT;
+  } else if (st->points) {
+    o = str_cat(o, "+");
+    fmt_int(o, st->points);
+  } else if (st->mult) {
+    o = str_cat(o, "+");
+    fmt_short(o, st->mult);
+    c = C_MULT;
+  } else if (st->money > 0) {
+    o = str_cat(o, "+");
+    fmt_int(o, st->money);
+    c = C_MONEY;
+  } else
     return;
-  }
-  int b = -1;
-  if (R.phase == PH_ROUND || R.phase == PH_CASHOUT) b = R.blind;
-  if (R.phase == PH_BLIND_SELECT) b = R.blind_on == 2 ? R.boss : BL_SMALL;
-  if (R.phase == PH_SHOP) b = BL_SMALL;
-  if (R.won && R.phase != PH_ROUND) {
-    bg_colours(0x4F6367, 0, 0, 1, 0, 0);
-    return;
-  }
-  if (b < BL_OX) bg_colours(0x50846E, 0, 0, 1, 0, 0);
-  else if (blind_info[b].showdown) bg_colours(0x009DFF, 0xFE5F55, 0x21282A, 3, 0.5f, 0);
-  else {
-    uint32_t c = blind_info[b].colour;
-    /* lighten(mix(boss, black, 0.3), 0.1) */
-    int r = ((c >> 16) & 255) * 3 / 10 + 0x37 * 7 / 10, g = ((c >> 8) & 255) * 3 / 10 + 0x42 * 7 / 10,
-        bl = (c & 255) * 3 / 10 + 0x44 * 7 / 10;
-    r += (255 - r) / 10, g += (255 - g) / 10, bl += (255 - bl) / 10;
-    bg_colours((uint32_t)(r << 16 | g << 8 | bl), c, 0, 2, R.phase == PH_ROUND ? 0.25f : 0, 0);
-  }
-}
-
-/* ------------------------------------------------------------ title */
-static int title_t;
-#define LOGO_CARD 316 /* the Ace fills the logo's height, as in the game */
-
-static void draw_title(void) {
-  int lx = 160 - 106, ly = 14 + (title_t < 600 ? (600 - title_t) / 30 : 0);
-  g_sprite(SPR_LOGO, lx, ly, 0, 256);
-  /* the Ace of Spades standing in for the logo's A, floating gently */
-  int bob = (int)((g_time / 140) % 24);
-  bob = bob < 12 ? bob / 4 : (24 - bob) / 4;
-  int cx = 160 - CW / 2, cy = ly + 46 - bob;
-  g_sprite(SPR_E + 1, cx + 2, cy + 3 + bob, FX_SHADOW, LOGO_CARD);
-  g_sprite(SPR_E + 1, cx, cy, 0, LOGO_CARD);
-  g_sprite(SPR_F + 3 * 13 + 12, cx, cy, 0, LOGO_CARD);
-  /* buttons, like the main menu (they make way for an open panel) */
-  if (overlay) return;
-  static const char *const lbl[4] = {T("PLAY"), T("OPTIONS"), T("QUIT"), T("CREDITS")};
-  static const C col[4] = {C_BLUE, C_ORANGE, C_RED, C_GREEN};
-  g_rrect(20, 195, 280, 42, 7, HEXC(0x1A2224));
-  g_rrect(21, 196, 278, 40, 6, HEXC(0x3A5055));
-  g_rrect(23, 198, 274, 36, 5, HEXC(0x2B3A3D));
-  for (int i = 0; i < 4; i++) {
-    int bw = i == 0 ? 80 : 58, bx = i == 0 ? 30 : 116 + (i - 1) * 60;
-    button(bx, 204, bw, 24, col[i], lbl[i], i == 0 ? T_LARGE : T_MED, title_sel == i, 1);
-  }
+  int w = g_textw(s, T_MED) + 8;
+  g_rrect(x - w / 2, y + 1, w, 15, 4, darken(c, 14));
+  g_rrect(x - w / 2, y, w, 15, 4, c);
+  g_text_box(s, x - w / 2, y, w, 15, T_MED, C_WHITE);
 }
 
-/* ------------------------------------------------------------ overlays */
-static void big_panel(int x, int y, int w, int h) {
-  g_shade(0, 0, 320, 240, 0, 14);
-  g_rrect(x - 2, y - 2, w + 4, h + 6, 7, HEXC(0x1A2224));
-  g_rrect(x, y, w, h, 6, HEXC(0x3A5055));
-  g_rrect(x + 3, y + 3, w - 6, h - 6, 5, HEXC(0x2B3A3D));
-}
+static int step_ms(void) { return (held(K_OK) || held(K_EXE) || S.fast) ? 160 : 420; }
 
-/* a panel's title, large, in the top 20 pixels of the panel */
-static void panel_title(const char *t, int x, int y, int w) { g_text_box(t, x, y + 3, w, 20, F_TITLE, C_WHITE); }
-
-static void tab_button(int x, int y, int w, const char *label, int on) {
-  if (on) g_rect(x + w / 2 - 3, y - 4, 6, 3, C_RED);
-  button(x, y, w, 15, on ? C_RED : HEXC(0x8C3B35), label, F_LABEL, 0, 1);
-}
-
-/* a deck or stake row: dark box, art on the left, name over a white box */
-static void setup_row(int y, int h, int bh) {
-  g_rrect(62, y + 1, 196, h, 5, HEXC(0x1A2224));
-  g_rrect(61, y, 196, h, 5, HEXC(0x1F2B2D));
-  g_rrect(106, y + 3, 148, h - 6, 4, HEXC(0x3A4B4E));
-  g_rrect(109, y + h - 4 - bh, 142, bh, 3, C_WHITE);
+static void apply_step(const step_t *st) {
+  shown_pts += st->points;
+  shown_mult += st->mult;
+  if (st->xmult > 0) shown_mult *= st->xmult;
 }
 
-static void draw_setup(void) {
-  big_panel(30, 10, 260, 214);
-  int ntabs = has_save ? 2 : 1;
-  tab_button(ntabs == 1 ? 128 : 94, 20, 64, T("New Run"), ov_tab == 0);
-  if (ntabs == 2) tab_button(162, 20, 64, T("Continue"), ov_tab == 1);
-  char t[64];
-  /* the deck: name, then its text or the run's numbers on white */
-  int bh = ov_tab == 0 ? 25 : 45;
-  setup_row(42, 68, bh);
-  g_sprite(SPR_E, 69, 53, FX_SHADOW, 256);
-  g_sprite(SPR_E, 67, 51, 0, 256);
-  int wy = 42 + 68 - 4 - bh; /* the white box */
-  g_text_box(T("Red Deck"), 106, 45, 148, wy - 45, F_NAME, C_WHITE);
-  if (ov_tab == 0)
-    g_text_box(T("\003+1\020 discard\nevery round"), 109, wy, 142, bh, F_TEXT, C_TEXT_DARK);
-  else {
-    static const char *const lab[4] = {T("Round"), T("Ante"), T("Money"), T("Best Hand")};
-    for (int i = 0; i < 4; i++) {
-      int yy = wy + 3 + i * 10;
-      g_text(lab[i], 170, yy, F_TEXT | T_RIGHT, C_TEXT_DARK);
-      g_text(":", 173, yy, F_TEXT, C_TEXT_DARK);
-      C c = i == 0 ? C_RED : i == 1 ? C_BLUE : i == 2 ? C_MONEY : C_RED;
-      if (i == 0) fmt_int(t, R.round);
-      else if (i == 1) fmt_int(t, R.ante);
-      else if (i == 2) fmt_money(t, R.money);
-      else fmt_commas(t, R.best_hand);
-      g_text(t, 178, yy, F_TEXT, c);
-    }
+static void anim_update(int dt) {
+  if (!anim) return;
+  anim_t += dt;
+  if (anim == 1) { /* the cards go up */
+    if (anim_t > 300) anim = 2, anim_t = 0, anim_step = -1, shown_pts = P.points0, shown_mult = P.mult0;
+    return;
   }
-  /* the stake */
-  setup_row(115, 38, 19);
-  g_sprite(SPR_STAKE, 76, 126, 0, 256);
-  g_text_box(T("White Stake"), 106, 117, 148, 13, F_NAME, C_WHITE);
-  g_text_box(T("Base Difficulty"), 109, 130, 142, 19, F_TEXT, C_TEXT_DARK);
-  if (ov_tab == 0) {
-    char *o = str_cat(t, T("Wins \004"));
-    o = fmt_int(o, S.wins);
-    o = str_cat(o, T("\001   Best Ante \004"));
-    o = fmt_int(o, S.best_ante > 0 ? S.best_ante : 0);
-    o = str_cat(o, T("\001   Best Hand \003"));
-    fmt_commas(o, S.best_hand);
-  } else {
-    char *o = str_cat(t, T("Seed \004"));
-    str_cat(o, R.seed);
+  if (anim == 2) {
+    if (anim_step < 0 || anim_t >= step_ms()) {
+      anim_step++;
+      anim_t = 0;
+      if (anim_step >= P.nsteps) anim = 3, anim_count = 0;
+      else if (P.steps[anim_step].kind != ST_TOTAL) apply_step(&P.steps[anim_step]);
+      else shown_pts = P.points, shown_mult = P.mult; /* (exactly the rules' numbers) */
+    }
+    return;
   }
-  g_text(t, 160, 159, F_LABEL | T_CENTER, C_WHITE);
-  button(106, 172, 108, 24, C_BLUE, ov_tab == 0 ? T("PLAY") : T("CONTINUE"), T_LARGE, ov_sel == 0, 1);
-  button(38, 202, 244, 16, C_ORANGE, T("Back"), T_MED, ov_sel == 1, 1);
-}
-
-static const char help_lines[] =
-    T("\004Arrows\020  move between cards, Jokers, buttons\n\004OK\020  select a card, or pick a Joker/item and\n     choose \006Sell\020, \003Use\020, \005Buy\020...\n\004EXE\020  \002Play Hand\020      \004DEL\020  \003Discard\020\n\004shift\020  sort the hand by rank or suit\n\004alpha\020 + \004left/right\020  move a Joker or card\n\004toolbox\020  Run Info      \004var\020  view deck\n\004back\020  back / Options     \004home\020  save, quit\nHold \004OK\020 or \004EXE\020 to speed up scoring.\n\nPlay poker hands: score = \002Chips\020 x \003Mult\020.\nBeat each Blind's score before your\nhands run out. Buy Jokers in the shop\nand beat the Ante 8 Boss Blind to win!");
-
-static void draw_help(void) {
-  big_panel(10, 6, 300, 228);
-  panel_title(T("How to play"), 10, 6, 300);
-  g_rrect(18, 30, 284, 172, 4, HEXC(0x1F2B2D));
-  g_text(help_lines, 160 - g_textw(help_lines, F_TEXT) / 2, 30 + (172 - g_lines(help_lines) * LINE_H + 3) / 2, F_TEXT, C_WHITE);
-  button(120, 208, 80, 18, C_ORANGE, T("Back"), T_MED, 1, 1);
-}
-
-static void draw_credits(void) {
-  big_panel(12, 10, 296, 220);
-  panel_title(T("Credits"), 12, 10, 296);
-  g_rrect(20, 34, 280, 166, 4, HEXC(0x1F2B2D));
-  g_text(T("Inspired by \004Balatro\020 by LocalThunk.\nNot affiliated with LocalThunk or Playstack.\n\nCard, Joker and interface art adapted\nfrom Balatro by LocalThunk.\nRules and card texts follow the game.\nFont: \004m6x11\020 by Daniel Linssen.\n\nMade by \004Mason Chen\020 as part of NumPlay.\n\nPlease support the original game!"),
-         160, 53, F_TEXT | T_CENTER, C_WHITE);
-  button(120, 206, 80, 18, C_ORANGE, T("Back"), T_MED, 1, 1);
-}
-
-enum { OPT_CONTINUE, OPT_SPEED, OPT_HELP, OPT_NEWRUN, OPT_MAINMENU, OPT_BACK };
-static const char *const opt_items[6] = {T("Continue"), T("Game Speed"), T("How to Play"), T("New Run"), T("Main Menu"), T("Back")};
-static const uint8_t opt_game[5] = {OPT_CONTINUE, OPT_SPEED, OPT_HELP, OPT_NEWRUN, OPT_MAINMENU};
-static const uint8_t opt_title[3] = {OPT_SPEED, OPT_HELP, OPT_BACK};
-static int opt_count(void) { return in_game ? 5 : 3; }
-static int opt_id(int i) { return in_game ? opt_game[i] : opt_title[i]; }
-static int opt_index(int id) {
-  for (int i = 0; i < opt_count(); i++)
-    if (opt_id(i) == id) return i;
-  return 0;
-}
-
-static void draw_options(void) {
-  int n = opt_count(), h = 32 + n * 28, y0 = 120 - h / 2;
-  big_panel(70, y0, 180, h);
-  panel_title(T("Options"), 70, y0, 180);
-  static const char *const sp[4] = {"0.5", "1", "2", "4"};
-  for (int i = 0; i < n; i++) {
-    int id = opt_id(i), y = y0 + 28 + i * 28;
-    C c = id == OPT_CONTINUE ? C_BLUE : id == OPT_SPEED || id == OPT_BACK ? C_ORANGE : id == OPT_HELP ? C_GREEN : C_RED;
-    if (id == OPT_SPEED) {
-      char t[24];
-      char *o = str_cat(t, T("Game Speed < "));
-      o = str_cat(o, sp[S.speed & 3]);
-      str_cat(o, " >");
-      button(84, y, 152, 21, c, t, T_MED, ov_sel == i, 1);
-    } else
-      button(84, y, 152, 21, c, opt_items[id], T_MED, ov_sel == i, 1);
+  if (anim == 3) { /* the total goes into the score */
+    double from = R.score, to = R.score + P.total;
+    int len = (held(K_OK) || held(K_EXE) || S.fast) ? 250 : 650;
+    anim_count += dt;
+    double t = anim_count >= len ? 1 : (double)anim_count / len;
+    shown_score = from + (to - from) * t;
+    if (anim_count >= len + 250) {
+      anim = 0;
+      apply_play();
+      shown_score = R.score;
+      zone = Z_HAND, zi = 0;
+      if (R.phase == PH_CASH || R.phase == PH_LOST || R.phase == PH_ROUND) save_now();
+      if (R.phase == PH_LOST || R.phase == PH_WON) {
+        if (R.salon > S.best_salon) S.best_salon = R.salon;
+        if (R.best_hand > S.best_hand) S.best_hand = R.best_hand;
+        save_now();
+      }
+    }
   }
 }
 
-static void draw_confirm_new(void) {
-  big_panel(60, 70, 200, 100);
-  panel_title(T("New run?"), 60, 70, 200);
-  g_text_box(T("The current run will be lost."), 60, 96, 200, 16, F_LABEL, HEXC(0xDDDDDD));
-  button(80, 126, 70, 24, C_RED, T("Yes"), T_MED, ov_sel == 0, 1);
-  button(170, 126, 70, 24, C_BLUE, T("No"), T_MED, ov_sel == 1, 1);
-}
-
-/* Run Info: poker hands, blinds, vouchers */
-static void draw_run_info(void) {
-  char t[40];
-  big_panel(6, 4, 308, 232);
-  static const char *const tabs[3] = {T("Poker Hands"), T("Blinds"), T("Vouchers")};
-  for (int i = 0; i < 3; i++) tab_button(40 + i * 82, 12, 76, tabs[i], ov_tab == i);
-  if (ov_tab == 0) {
-    static const uint8_t order[12] = {H_FLUSH_FIVE, H_FLUSH_HOUSE, H_FIVE_KIND, H_STRAIGHT_FLUSH, H_FOUR_KIND,
-                                      H_FULL_HOUSE, H_FLUSH, H_STRAIGHT, H_THREE_KIND, H_TWO_PAIR, H_PAIR,
-                                      H_HIGH_CARD};
-    int y = 34;
-    for (int k = 0; k < 12; k++) {
-      int h = order[k];
-      if (!R.hands[h].visible) continue;
-      int lv = R.hands[h].level;
-      static const uint32_t lvc[7] = {0xEFEFEF, 0x95ACFF, 0x65EFAF, 0xFAE37E, 0xFFC052, 0xF87D75, 0xCAA0EF};
-      C lc = HEXC(lvc[lv < 1 ? 0 : lv > 7 ? 6 : lv - 1]);
-      /* lvl | name | chips X mult | # played, as in the game */
-      g_rrect(14, y, 292, 16, 4, HEXC(0xDDE4E6));
-      g_rrect(16, y + 2, 34, 12, 3, lc);
-      fmt_int(str_cat(t, T("lvl.")), lv);
-      g_text_box(t, 16, y + 2, 34, 12, F_TEXT, C_TEXT_DARK);
-      g_text(hand_names[h], 56, y + 3, T_MED, C_TEXT_DARK);
-      g_rrect(172, y + 2, 42, 12, 3, C_BLUE);
-      fmt_commas(t, hand_chips(h));
-      g_text(t, 211, y + 3, text_fit(t, 38, T_MED) | T_RIGHT | T_SHADOW, C_WHITE);
-      g_text("X", 219, y + 3, T_MED | T_CENTER, C_RED);
-      g_rrect(224, y + 2, 42, 12, 3, C_RED);
-      fmt_commas(t, hand_mult(h));
-      g_text(t, 227, y + 3, text_fit(t, 38, T_MED) | T_SHADOW, C_WHITE);
-      g_text("#", 276, y + 3, T_MED, C_ATTN);
-      fmt_int(t, R.hands[h].played);
-      g_text(t, 301, y + 3, T_MED | T_RIGHT, C_TEXT_DARK);
-      y += 18;
+static void draw_round(void) {
+  draw_table_head();
+  int focus_j = zone == Z_JOKERS ? zi : -1, active_j = -1;
+  const step_t *st = anim == 2 && anim_step >= 0 && anim_step < P.nsteps ? &P.steps[anim_step] : 0;
+  if (st && st->kind == ST_JOKER) active_j = st->who;
+  if (st && st->kind == ST_HELD && st->money < 0) active_j = -st->money - 1;
+  draw_joker_row(48, anim ? -1 : focus_j, active_j);
+  if (anim) {
+    hand_line(P.hand, 98);
+    /* the played cards in the middle, the rest of the hand below */
+    for (int i = 0; i < P.ncards; i++) {
+      int x = hand_x(i, P.ncards), y = 134 - (P.scoring[i] ? 6 : 0);
+      if (anim == 1) y = 160 - (160 - y) * anim_t / 300;
+      int lit = st && st->kind == ST_CARD && st->who == i;
+      draw_card(P.cards[i], x, y - (lit ? 3 : 0), lit, !P.scoring[i]);
     }
-  } else if (ov_tab == 1) {
-    /* the columns end together, under the boss's text */
-    static char bd[80], bd2[96];
-    desc_text(bd, sizeof bd, TK_BLIND, R.boss, 0);
-    wrap_text(bd2, sizeof bd2, bd, 78, F_TEXT);
-    int colh = 131 + g_lines(bd2) * LINE_H + 5 + 4 - 34;
-    for (int k = 0; k < 3; k++) {
-      int b = k == 0 ? BL_SMALL : k == 1 ? BL_BIG : R.boss;
-      int x = 16 + k * 98, w = 92;
-      C main = k == 0 ? mix565(C_BLACK, C_BLUE, 19) : k == 1 ? mix565(C_BLACK, C_ORANGE, 19) : HEXC(blind_info[b].colour);
-      g_rrect(x, 34, w, colh, 5, mix565(main, C_BLACK, 16));
-      g_rrect(x + 3, 37, w - 6, 15, 3, readable(main, 0));
-      g_text_box(blind_name(b), x + 3, 37, w - 6, 15, text_fit(blind_name(b), w - 12, T_MED) | T_SHADOW, C_WHITE);
-      draw_blind_chip(b, x + w / 2 - 13, 57, 256);
-      g_rrect(x + 4, 88, w - 8, 38, 3, HEXC(0x1D2B2C));
-      g_text(T("Score at least"), x + w / 2, 91, F_LABEL | T_CENTER, C_WHITE);
-      char n[24];
-      int f = num_fit(n, blind_amount(R.ante) * blind_info[b].mult2 / 2, w - 14, T_LARGE);
-      g_text(n, x + w / 2, 101 + (11 - g_cap(f) + 1) / 2, f | T_CENTER | T_SHADOW, C_RED);
-      label_dollars(T("Reward:"), blind_info[b].dollars, x + w / 2, 116, w - 12);
-      if (b >= BL_OX) {
-        g_rrect(x + 4, 131, w - 8, g_lines(bd2) * LINE_H + 5, 3, C_WHITE);
-        g_text(bd2, x + w / 2, 134, F_TEXT | T_CENTER, C_TEXT_DARK);
-      }
+    int k = 0, n = R.nhand - P.ncards;
+    for (int i = 0; i < R.nhand; i++) {
+      if (R.sel[i]) continue;
+      int lit = st && st->kind == ST_HELD && st->who == i;
+      draw_card(R.hand[i], hand_x(k, n), 186 - (lit ? 8 : 0), lit, 0);
+      if (lit) step_popup(st, hand_x(k, n) + CARD_W / 2, 168);
+      k++;
+    }
+    if (st && st->kind == ST_CARD) {
+      int lit_x = hand_x(st->who, P.ncards) + CARD_W / 2;
+      step_popup(st, lit_x, 112);
+    } else if (st && st->kind == ST_JOKER) {
+      step_popup(st, joker_x(st->who, MAXJ) + ART_CW / 2, 86);
+      /* (Penny Jar, Carousel... are shown on the Joker; nothing on the cards) */
+    }
+    if (anim == 3) {
+      char *s = tmp();
+      num(s, P.total);
+      int w = g_textw(s, T_LARGE) + 16;
+      panel(160 - w / 2, 132, w, 26);
+      g_text_box(s, 160 - w / 2, 132, w, 26, T_LARGE, C_WHITE);
     }
   } else {
-    int n = 0;
-    for (int v = 0; v < 32; v++)
-      if (has_voucher(v)) {
-        int x = 20 + (n % 7) * 41, y = 36 + (n / 7) * 52;
-        g_sprite(SPR_V + v, x, y, 0, 256);
-        n++;
-      }
-    if (!n) g_text_box(T("No Vouchers redeemed yet"), 6, 100, 308, 30, F_NAME, C_WHITE);
-  }
-  g_text(T("left/right: tabs     back: close"), 160, 225, F_TEXT | T_CENTER, HEXC(0xBBBBBB));
-}
-
-/* View Deck: the cards by suit */
-static void draw_deck_view(void) {
-  char t[24];
-  big_panel(4, 4, 312, 232);
-  tab_button(96, 12, 62, T("Remaining"), ov_tab == 0);
-  tab_button(162, 12, 62, T("Full Deck"), ov_tab == 1);
-  static const uint8_t suit_order[4] = {S_SPADES, S_HEARTS, S_CLUBS, S_DIAMONDS};
-  int counts[4] = {0};
-  for (int s = 0; s < 4; s++) {
-    int y = 34 + s * 49;
-    int list[MAXCARDS], n = 0;
-    for (int r = 14; r >= 2; r--)
-      for (int i = 0; i < R.ncards_alloc; i++) {
-        const card_t *c = &R.cards[i];
-        if (!(c->flags & CF_USED) || c->suit != suit_order[s] || c->rank != r) continue;
-        int in_deck = 0;
-        for (int k = 0; k < R.ndeck; k++) in_deck |= R.deck[k] == i;
-        if (ov_tab == 0 && !in_deck && R.phase == PH_ROUND) continue;
-        list[n++] = i;
-      }
-    counts[s] = n;
-    int step = n > 1 ? (244 - CW) / (n - 1) : 0;
-    if (step > 18) step = 18;
-    for (int k = 0; k < n; k++) {
-      vcard_t v = {0};
-      const card_t *c = &R.cards[list[k]];
-      v.rank = c->rank, v.suit = c->suit, v.enh = c->enh, v.ed = c->ed, v.seal = c->seal;
-      draw_card(&v, 66 + k * step, y, 256, 0);
+    hand_line(preview_hand(), 98);
+    for (int i = 0; i < R.nhand; i++) {
+      int x = hand_x(i, R.nhand), y = 152 - (R.sel[i] ? 12 : 0);
+      if (zone == Z_HAND && zi == i && deny_t > 0) x += (deny_t / 40) & 1 ? 2 : -2;
+      draw_card(R.hand[i], x, y, zone == Z_HAND && zi == i, 0);
     }
   }
-  static const char *const sn[4] = {SUIT_SPADE, SUIT_HEART, SUIT_CLUB, SUIT_DIAMOND};
-  static const C sc[4] = {HEXC(0x3C4368), HEXC(0xF03464), HEXC(0x235955), HEXC(0xF06B3F)};
-  g_rrect(10, 32, 50, 196, 4, HEXC(0x1F2B2D));
-  for (int s = 0; s < 4; s++) {
-    int y = 34 + s * 49 + 16;
-    g_rrect(14, y + 1, 15, 15, 3, HEXC(0x0E181A));
-    g_rrect(14, y, 15, 15, 3, C_WHITE);
-    g_text(sn[s], 18, y + 4, T_SMALL, sc[s]);
-    fmt_int(t, counts[s]);
-    g_text_box(t, 30, y, 28, 15, F_VALUE, C_WHITE);
-  }
-}
-
-/* ------------------------------------------------------------ helpers */
-static int hand_focus(void) { return zone == Z_HAND ? zi : -1; }
-
-/* Play Hand, Sort Hand (Rank, Suit), Discard: under the hand, keys below */
-#define BTN_Y 205
-static void round_buttons(int show) {
-  if (!show) return;
-  int n = nselected();
-  int can_play = n > 0 && n <= 5 && !ui_busy(), can_disc = n > 0 && R.discards_left > 0 && !ui_busy();
-  int f = zone == Z_BTN ? zi : -1;
-  const int px = HAND_X, pw = 52, sx = px + pw + 4, sw = 59, dx = sx + sw + 4, dw = 52;
-  button(px, BTN_Y, pw, 22, C_BLUE, T("Play Hand"), F_LABEL, f == 0, can_play);
-  keycap(px + pw / 2, 229, "exe");
-  panel(sx, BTN_Y - 1, sw, 23, 4, HEXC(0x4F6367), 0);
-  g_text(T("Sort Hand"), sx + sw / 2, BTN_Y + 1, F_LABEL | T_CENTER, C_WHITE);
-  button(sx + 3, BTN_Y + 10, 25, 11, C_ORANGE, T("Rank"), F_LABEL, f == 1, 1);
-  button(sx + sw - 28, BTN_Y + 10, 25, 11, C_ORANGE, T("Suit"), F_LABEL, f == 2, 1);
-  keycap(sx + sw / 2, 229, "shift");
-  button(dx, BTN_Y, dw, 22, C_RED, T("Discard"), F_LABEL, f == 3, can_disc);
-  keycap(dx + dw / 2, 229, "del");
-}
-
-static void draw_focus_tooltip(void) {
-  if (ui_busy()) return;
-  if (zone == Z_JOKERS && zi < V.njokers && menu_open < 0) {
-    vitem_t *v = &V.jokers[zi];
-    if (v->flags & JF_DOWN) return;
-    const joker_t *j = zi < R.njokers ? &R.jokers[zi] : 0;
-    draw_tooltip_for(TK_JOKER, v->id, v->ed, j, (int)v->x, (int)v->y, CW);
-  } else if (zone == Z_CONS && zi < V.ncons && menu_open < 0) {
-    vitem_t *v = &V.cons[zi];
-    draw_tooltip_for(TK_CONS, v->id, v->ed, 0, (int)v->x, (int)v->y, CW);
-  } else if (zone == Z_HAND && zi < V.nhand) {
-    vcard_t *c = &V.cards[V.hand[zi]];
-    if (c->down) return;
-    int special = c->enh || c->seal || c->ed || (c->flags & CF_DEBUFF) || c->perma;
-    if (special || focus_time > 700) draw_tooltip_for(TK_CARD, 0, 0, c, (int)c->x, (int)c->y - 4, CW);
-  }
-}
-
-static int menu_items(int *kinds) {
-  int n = 0;
-  if (zone == Z_JOKERS) kinds[n++] = 1; /* sell */
-  if (zone == Z_CONS) {
-    kinds[n++] = 2; /* use */
-    kinds[n++] = 1; /* sell */
-  }
-  return n;
-}
-
-static void draw_menu(void) {
-  if (menu_open < 0 || (zone != Z_JOKERS && zone != Z_CONS)) return;
-  int kinds[4], n = menu_items(kinds);
-  vitem_t *v = zone == Z_JOKERS ? &V.jokers[menu_open] : &V.cons[menu_open];
-  /* on the card's right edge, as in the game (its left edge at the screen's
-     right), so the rows and panels under the card stay clear */
-  const int bw = 32;
-  int x = (int)v->x + CW - 3, y = ROW_Y + (n > 1 ? 3 : 10);
-  if (x + bw > 318) x = (int)v->x - bw + 3;
-  char t[20];
-  for (int i = 0; i < n; i++) {
-    int yy = y + i * 19;
-    if (kinds[i] == 1) {
-      int val = zone == Z_JOKERS ? joker_sell_value(&R.jokers[menu_open]) : cons_sell_value(&R.cons[menu_open]);
-      fmt_money(str_cat(t, T("SELL\n")), val);
-      button(x, yy, bw, 22, C_GREEN, t, F_LABEL, menu_sel == i, 1);
-    } else
-      button(x, yy, bw, 15, C_RED, T("USE"), F_LABEL, menu_sel == i, cons_usable(R.cons[menu_open].id, 0));
-    if (kinds[i] == 2) y -= 1;
-  }
-}
-
-static void clamp_focus(void) {
-  if (zone == Z_HAND && zi >= V.nhand) zi = V.nhand - 1;
-  if (zone == Z_JOKERS && zi >= V.njokers) zi = V.njokers - 1;
-  if (zone == Z_CONS && zi >= V.ncons) zi = V.ncons - 1;
-  if (zi < 0) zi = 0;
-  if (zone == Z_JOKERS && V.njokers == 0) zone = V.ncons ? Z_CONS : (R.phase == PH_SHOP ? Z_SHOPBTN : Z_HAND), zi = 0;
-  if (zone == Z_CONS && V.ncons == 0) zone = V.njokers ? Z_JOKERS : (R.phase == PH_SHOP ? Z_SHOPBTN : Z_HAND), zi = 0;
-  if (zone == Z_HAND && V.nhand == 0 && R.phase == PH_ROUND) zone = Z_BTN, zi = 0;
-}
-
-static int nearest_hand(int x) {
-  int best = 0, bd = 9999;
-  for (int i = 0; i < V.nhand; i++) {
-    int d = ui_hand_x(i, V.nhand) - x;
-    if (d < 0) d = -d;
-    if (d < bd) bd = d, best = i;
-  }
-  return best;
-}
-
-static int item_x(int z, int i) {
-  if (z == Z_JOKERS && i < V.njokers) return (int)V.jokers[i].x;
-  if (z == Z_CONS && i < V.ncons) return (int)V.cons[i].x;
-  if (z == Z_HAND && i < V.nhand) return ui_hand_x(i, V.nhand);
-  return 160;
-}
-
-/* left/right within the jokers and consumables row */
-static int row_nav(void) {
-  if (zone != Z_JOKERS && zone != Z_CONS) return 0;
-  int n = zone == Z_JOKERS ? V.njokers : V.ncons;
-  if (pressed[K_LEFT]) {
-    if (zi > 0) zi--;
-    else if (zone == Z_CONS && V.njokers) zone = Z_JOKERS, zi = V.njokers - 1;
-    return 1;
-  }
-  if (pressed[K_RIGHT]) {
-    if (zi < n - 1) zi++;
-    else if (zone == Z_JOKERS && V.ncons) zone = Z_CONS, zi = 0;
-    return 1;
-  }
-  return 0;
-}
-
-static void up_to_row(int x) {
-  if (!V.njokers && !V.ncons) return;
-  int best = 0, bd = 9999, bz = V.njokers ? Z_JOKERS : Z_CONS;
-  for (int i = 0; i < V.njokers; i++) {
-    int d = (int)V.jokers[i].x - x;
-    if (d < 0) d = -d;
-    if (d < bd) bd = d, best = i, bz = Z_JOKERS;
-  }
-  for (int i = 0; i < V.ncons; i++) {
-    int d = (int)V.cons[i].x - x;
-    if (d < 0) d = -d;
-    if (d < bd) bd = d, best = i, bz = Z_CONS;
+  draw_bottom_bar();
+  if (!anim && zone == Z_JOKERS && zi < R.njokers) joker_tooltip(zi, 1, joker_x(zi, MAXJ) + ART_CW / 2, 100);
+  if (!anim && zone == Z_HAND && R.nhand) {
+    g_text(T("EXE: play   \203: discard   shift: sort"), 160, 202, T_SMALL | T_CENTER, C_GREY);
   }
-  zone = bz, zi = best;
 }
 
-static void menu_input(void) {
-  int kinds[4], n = menu_items(kinds);
-  if (pressed[K_UP] && menu_sel > 0) menu_sel--;
-  if (pressed[K_DOWN] && menu_sel < n - 1) menu_sel++;
-  if (pressed[K_BACK] || pressed[K_LEFT] || pressed[K_RIGHT]) {
-    menu_open = -1;
+static void round_input(void) {
+  if (anim) return;
+  if (pressed[K_BACK]) {
+    overlay = OV_PAUSE, ov_sel = 0;
     return;
   }
-  if (pressed[K_OK] || pressed[K_EXE]) {
-    int ok = 0, k = kinds[menu_sel];
-    if (zone == Z_JOKERS && k == 1) ok = sell_joker(menu_open);
-    if (zone == Z_CONS && k == 1) ok = sell_cons(menu_open);
-    if (zone == Z_CONS && k == 2) ok = use_cons(menu_open);
-    if (!ok) deny();
-    else autosave();
-    menu_open = -1;
-  }
-}
-
-static void move_focused(int dir) {
   if (zone == Z_JOKERS) {
-    int to = zi + dir;
-    if (to >= 0 && to < R.njokers) {
-      move_joker(zi, to);
-      vitem_t t = V.jokers[zi];
-      V.jokers[zi] = V.jokers[to], V.jokers[to] = t;
-      zi = to;
-      autosave();
-    }
-  } else if (zone == Z_HAND) {
-    int to = zi + dir;
-    if (to >= 0 && to < R.nhand) {
-      move_hand_card(zi, to);
-      uint8_t t = V.hand[zi];
-      V.hand[zi] = V.hand[to], V.hand[to] = t;
-      zi = to;
-      autosave();
+    if (R.njokers == 0) zone = Z_HAND;
+    if (held(K_SHIFT) && (pressed[K_LEFT] || pressed[K_RIGHT])) {
+      int to = zi + (pressed[K_RIGHT] ? 1 : -1);
+      if (to >= 0 && to < R.njokers) move_joker(zi, to), zi = to;
+      return;
     }
-  }
-}
-
-static void do_sort(int by_suit) {
-  R.sort_suit = (uint8_t)by_suit;
-  sort_hand(R.sort_suit);
-  ev_reset();
-  ui_sync_all(0);
-  autosave();
-}
-
-/* ------------------------------------------------------------ round */
-static void round_input(void) {
-  if (menu_open >= 0) {
-    menu_input();
+    if (pressed[K_LEFT] && zi > 0) zi--;
+    if (pressed[K_RIGHT] && zi < R.njokers - 1) zi++;
+    if (pressed[K_DOWN] || pressed[K_OK]) zone = Z_HAND, zi = 0;
     return;
   }
-  if (held(K_ALPHA) && (pressed[K_LEFT] || pressed[K_RIGHT])) {
-    move_focused(pressed[K_LEFT] ? -1 : 1);
-    return;
+  if (pressed[K_LEFT] && zi > 0) zi--;
+  if (pressed[K_RIGHT] && zi < R.nhand - 1) zi++;
+  if (pressed[K_UP] && R.njokers) zone = Z_JOKERS, zi = 0;
+  if (zi >= R.nhand) zi = R.nhand ? R.nhand - 1 : 0;
+  if (pressed[K_OK] && R.nhand) {
+    if (R.sel[zi]) R.sel[zi] = 0;
+    else if (nselected() < MAXSEL) R.sel[zi] = 1;
+    else deny();
   }
+  if (pressed[K_SHIFT]) by_suit = !by_suit, sort_hand(by_suit);
   if (pressed[K_EXE]) {
-    if (!play_hand()) deny();
-    else zone = Z_HAND, autosave();
-    return;
+    if (play_hand()) anim = 1, anim_t = 0, shown_score = R.score;
+    else deny();
   }
   if (pressed[K_BACKSPACE]) {
-    if (!discard_hand()) deny();
-    else autosave();
-    return;
-  }
-  if (pressed[K_SHIFT]) {
-    do_sort(!R.sort_suit);
-    return;
-  }
-  if (row_nav()) return;
-  switch (zone) {
-    case Z_HAND:
-      if (pressed[K_LEFT] && zi > 0) zi--;
-      if (pressed[K_RIGHT]) {
-        if (zi < V.nhand - 1) zi++;
-        else zone = Z_DECK;
-      }
-      if (pressed[K_UP]) up_to_row(item_x(Z_HAND, zi));
-      if (pressed[K_DOWN]) zone = Z_BTN, zi = nselected() ? 0 : 1;
-      if (pressed[K_OK] && zi < R.nhand) {
-        int before = R.sel[zi];
-        toggle_select(zi);
-        if (before == R.sel[zi]) deny();
-        V.cards[R.hand[zi]].raise = R.sel[zi];
-        autosave();
-      }
-      if (pressed[K_BACK]) {
-        if (nselected()) {
-          for (int i = 0; i < R.nhand; i++)
-            if (!(R.cards[R.hand[i]].flags & CF_FORCED)) R.sel[i] = 0, V.cards[R.hand[i]].raise = 0;
-        } else
-          overlay = OV_OPTIONS, ov_sel = 0;
-      }
-      break;
-    case Z_DECK:
-      if (pressed[K_LEFT]) zone = Z_HAND, zi = V.nhand - 1;
-      if (pressed[K_UP]) up_to_row(300);
-      if (pressed[K_DOWN]) zone = Z_BTN, zi = 3;
-      if (pressed[K_OK]) overlay = OV_DECK, ov_tab = 0;
-      if (pressed[K_BACK]) overlay = OV_OPTIONS, ov_sel = 0;
-      break;
-    case Z_JOKERS: case Z_CONS:
-      if (pressed[K_DOWN]) zone = Z_HAND, zi = nearest_hand(item_x(zone, zi));
-      if (pressed[K_OK]) menu_open = zi, menu_sel = 0;
-      if (pressed[K_BACK]) zone = Z_HAND, zi = 0;
-      break;
-    case Z_BTN:
-      if (pressed[K_LEFT] && zi > 0) zi--;
-      if (pressed[K_RIGHT]) {
-        if (zi < 3) zi++;
-        else zone = Z_DECK;
-      }
-      if (pressed[K_UP]) zone = Z_HAND, zi = nearest_hand(HAND_X + 26 + zi * 57);
-      if (pressed[K_OK]) {
-        if (zi == 0) {
-          if (!play_hand()) deny();
-          else zone = Z_HAND, autosave();
-        } else if (zi == 3) {
-          if (!discard_hand()) deny();
-          else autosave();
-        } else
-          do_sort(zi == 2);
-      }
-      if (pressed[K_BACK]) overlay = OV_OPTIONS, ov_sel = 0;
-      break;
-    default: zone = Z_HAND, zi = 0;
-  }
-  clamp_focus();
-}
-
-static void draw_round(int dt, int show_buttons) {
-  layout_cards(dt, 1, HAND_Y);
-  draw_sidebar();
-  int fj = zone == Z_JOKERS ? zi : -1, fc = zone == Z_CONS ? zi : -1;
-  draw_jokers_row(fj, fc, zone == Z_JOKERS ? menu_open : -1, zone == Z_CONS ? menu_open : -1);
-  g_shade(HAND_X - 4, HAND_Y - 7, HAND_W + 8, CH + 15, 5, 7);
-  draw_deck_pile(zone == Z_DECK);
-  draw_play_cards();
-  draw_hand_cards(hand_focus());
-  char t[12];
-  char *o = fmt_int(t, V.nhand);
-  *o++ = '/';
-  fmt_int(o, hand_size());
-  g_text(t, HAND_X + HAND_W / 2, HAND_Y + CH + 3, F_LABEL | T_CENTER, C_WHITE);
-  if (show_buttons) round_buttons(!ui_busy() || V.nplay == 0);
-  /* the selected hand, shown in the hand box before playing it */
-  if (!ui_busy() && R.phase == PH_ROUND) {
-    int h = preview_hand();
-    if (h >= 0) {
-      V.hand_name = (int16_t)h, V.hand_level = R.hands[h].level;
-      V.chips = hand_chips(h), V.mult = hand_mult(h);
-      if (blind_debuffs_hand()) V.chips = 0, V.mult = 0;
+    if (discard_hand()) {
+      sort_hand(by_suit);
+      save_now();
     } else
-      V.hand_name = -1, V.chips = 0, V.mult = 0;
-    V.flame = 0;
-#ifndef __ELF__
-    /* simulator only: BALATRO_PREVIEW=hand shows that hand (screenshots) */
-    extern char *getenv(const char *);
-    const char *pv = getenv("BALATRO_PREVIEW");
-    if (pv) {
-      int ph = 0;
-      while (*pv >= '0' && *pv <= '9') ph = ph * 10 + *pv++ - '0';
-      ph %= NHANDS;
-      V.hand_name = (int16_t)ph, V.hand_level = R.hands[ph].level, V.chips = hand_chips(ph), V.mult = hand_mult(ph);
-    }
-#endif
+      deny();
   }
-  draw_menu();
-  draw_popups();
-  draw_focus_tooltip();
-}
-
-/* ------------------------------------------------------------ blind select */
-static int bs_buttons(int *kind) {
-  int n = 0;
-  kind[n++] = 0; /* select */
-  if (R.blind_on < 2) kind[n++] = 1; /* skip */
-  if (R.blind_on == 2 && (has_voucher(V_RETCON) || (has_voucher(V_DIRECTORS_CUT) && !R.boss_rerolled))) kind[n++] = 2;
-  return n;
 }
 
-static void draw_blind_select(int dt) {
-  layout_cards(dt, 0, HAND_Y);
-  draw_sidebar();
-  draw_jokers_row(zone == Z_JOKERS ? zi : -1, zone == Z_CONS ? zi : -1, zone == Z_JOKERS ? menu_open : -1,
-                  zone == Z_CONS ? menu_open : -1);
-  int kinds[3];
-  bs_buttons(kinds);
-  int tip_tag = -1, tip_x = 0, tip_y = 0;
-  /* three columns filling the play area, the one to play raised and outlined */
-  const int w = (AREA_W - 6) / 3, y = 66;
-  for (int k = 0; k < 3; k++) {
-    int b = k == 0 ? BL_SMALL : k == 1 ? BL_BIG : R.boss;
-    int x = AREA_X + k * (w + 3);
-    int on = k == R.blind_on;
-    int st = R.blind_state[k];
-    int yy = y + (on ? 0 : 12);
-    C main = k == 0 ? mix565(C_BLACK, C_BLUE, 19) : k == 1 ? mix565(C_BLACK, C_ORANGE, 19) : HEXC(blind_info[b].colour);
-    if (st == BS_DEFEATED || st == BS_SKIPPED) main = C_BLACK;
-    g_rrect(x - 2, yy - 2, w + 4, 184, 7, on ? C_WHITE : HEXC(0x1D2628));
-    g_rrect(x, yy, w, 180, 6, mix565(main, C_BLACK, 16));
-    const char *lab = st == BS_SELECT ? T("Select") : st == BS_DEFEATED ? T("Defeated") : st == BS_SKIPPED ? T("Skipped") : T("Upcoming");
-    int focused = on && zone == Z_BTN && kinds[zi] == 0;
-    button(x + 5, yy + 4, w - 10, 16, on ? C_ORANGE : HEXC(0x4F6367), lab, F_LABEL, focused, on);
-    /* the name: medium, smaller when it is long (the game shrinks it too) */
-    g_rrect(x + 1, yy + 24, w - 2, 15, 3, readable(main, 0));
-    const char *nm = blind_name(b);
-    g_text_box(nm, x + 1, yy + 24, w - 2, 15, text_fit(nm, w - 4, T_MED) | T_SHADOW, C_WHITE);
-    draw_blind_chip(b, x + w / 2 - 13, yy + 43, 256);
-    int dy = yy + 72;
-    if (b >= BL_OX) {
-      static char d[80], d2[96];
-      desc_text(d, sizeof d, TK_BLIND, b, 0);
-      wrap_text(d2, sizeof d2, d, w - 8, F_TEXT);
-      g_text(d2, x + w / 2, dy, F_LABEL | T_CENTER, C_WHITE);
-      dy += g_lines(d2) * LINE_H + 2;
-    }
-    g_rrect(x + 2, dy, w - 4, 38, 3, HEXC(0x1D2B2C));
-    g_text(T("Score at least"), x + w / 2, dy + 3, F_LABEL | T_CENTER, C_WHITE);
-    char n[24];
-    int f = num_fit(n, blind_amount(R.ante) * blind_info[b].mult2 / 2, w - 12, T_LARGE);
-    g_text(n, x + w / 2, dy + 13 + (11 - g_cap(f) + 1) / 2, f | T_CENTER | T_SHADOW, C_RED);
-    label_dollars(T("Reward:"), blind_info[b].dollars, x + w / 2, dy + 28, w - 8);
-    dy += 42;
-    if (k < 2) {
-      g_text(T("or"), x + w / 2, dy, F_LABEL | T_CENTER, C_WHITE);
-      int sf = on && zone == Z_BTN && kinds[zi] == 1;
-      int tag = R.skip_tag[k];
-      if (st == BS_SKIPPED || st == BS_DEFEATED) g_sprite(SPR_T + tag, x + w / 2 - 9, dy + 10, FX_GREY, 256);
-      else {
-        button(x + 4, dy + 11, w - 29, 17, on ? C_RED : HEXC(0x7A2F2A), T("Skip Blind"), F_LABEL, sf, on);
-        g_sprite(SPR_T + tag, x + w - 23, dy + 10, on ? 0 : FX_DIM, 256);
-      }
-      if (sf) tip_tag = tag, tip_x = x + w - 23, tip_y = dy + 10;
-    } else if (on && (has_voucher(V_RETCON) || (has_voucher(V_DIRECTORS_CUT) && !R.boss_rerolled))) {
-      int rf = zone == Z_BTN && kinds[zi] == 2;
-      button(x + 4, dy + 2, w - 8, 24, C_RED, T("Reroll Boss\n$10"), F_LABEL, rf, R.money >= 10);
-    }
-  }
-  draw_menu();
-  draw_popups();
-  if (!ui_busy() && tip_tag >= 0) {
-    int orb = -1;
-    draw_tooltip_for(TK_TAG, tip_tag, 0, &orb, tip_x, tip_y, 19);
+/* ------------------------------------------------------------ the title card of a table */
+static void draw_table_card(void) {
+  panel(40, 30, 240, 180);
+  C tc = R.table == TB_GOLD ? C_MONEY : R.table == TB_SILVER ? HEXC(0xD8DCE8) : HEXC(0xE0A070);
+  char *s = tmp();
+  char *o = str_cat(s, T("Salon "));
+  o = fmt_int(o, R.salon);
+  g_text(s, 160, 40, T_SMALL | T_CENTER, C_GREY);
+  g_text(table_name(R.table), 160, 54, T_LARGE | T_CENTER, tc);
+  /* the three tables of the salon */
+  for (int t = 0; t < 3; t++) {
+    int x = 104 + t * 40;
+    C c = t < R.table ? C_GREEN : t == R.table ? tc : C_EDGE;
+    g_rrect(x, 74, 32, 10, 3, c);
+  }
+  g_text(T("Score at least"), 160, 94, T_SMALL | T_CENTER, C_GREY);
+  s = tmp();
+  num(s, R.target);
+  g_text(s, 160, 106, T_LARGE | T_CENTER, C_RED);
+  s = tmp();
+  o = str_cat(s, T("Reward: "));
+  o = fmt_int(o, table_reward(R.table));
+  str_cat(o, T(" coins"));
+  g_text(s, 160, 126, T_SMALL | T_CENTER, C_MONEY);
+  if (R.table == TB_GOLD) {
+    g_rrect(56, 140, 208, 36, 4, HEXC(0x3E2A1A));
+    g_text(twist_name(R.twist), 160, 144, T_MED | T_CENTER, C_ATTN);
+    g_text(twist_desc(R.twist), 160, 158, T_SMALL | T_CENTER, C_WHITE);
+  } else {
+    char *t = tmp();
+    char *q = str_cat(t, T("Gold Table: "));
+    str_cat(q, twist_name(R.twist));
+    g_text(t, 160, 152, T_SMALL | T_CENTER, C_GREY);
   }
-  if (zone == Z_JOKERS || zone == Z_CONS) draw_focus_tooltip();
+  button(110, 184, 100, 20, T("Play"), C_GREEN, 1);
 }
-
-static void blind_select_input(void) {
-  int kinds[3], nb = bs_buttons(kinds);
-  if (zone == Z_JOKERS || zone == Z_CONS) {
-    if (menu_open >= 0) {
-      menu_input();
-      return;
-    }
-    if (held(K_ALPHA) && (pressed[K_LEFT] || pressed[K_RIGHT])) {
-      move_focused(pressed[K_LEFT] ? -1 : 1);
-      return;
-    }
-    if (row_nav()) return;
-    if (pressed[K_DOWN] || pressed[K_BACK]) zone = Z_BTN, zi = 0;
-    if (pressed[K_OK]) menu_open = zi, menu_sel = 0;
-    clamp_focus();
-    return;
-  }
-  zone = Z_BTN;
-  if (zi >= nb) zi = nb - 1;
-  if (pressed[K_DOWN] || pressed[K_RIGHT]) zi = (zi + 1) % nb;
-  if (pressed[K_LEFT]) zi = (zi + nb - 1) % nb;
-  if (pressed[K_UP]) {
-    if (zi == 0 && (V.njokers || V.ncons)) zone = V.njokers ? Z_JOKERS : Z_CONS, zi = 0;
-    else zi = (zi + nb - 1) % nb;
-  }
-  if (pressed[K_BACK]) overlay = OV_OPTIONS, ov_sel = 0;
-  if (pressed[K_OK] || pressed[K_EXE]) {
-    if (kinds[zi] == 0) {
-      blind_select();
-      zone = Z_HAND, zi = 0;
-    } else if (kinds[zi] == 1) {
-      blind_skip();
-      zi = 0;
-      if (R.phase == PH_PACK) zone = Z_PACK;
-    } else if (R.money >= 10)
-      boss_reroll();
-    else
-      deny();
-    autosave();
+static void table_card_input(void) {
+  if (pressed[K_BACK]) overlay = OV_PAUSE, ov_sel = 0;
+  else if (ok()) {
+    table_start();
+    shown_score = 0;
+    zone = Z_HAND, zi = 0;
+    by_suit = 0;
+    save_now();
   }
 }
 
 /* ------------------------------------------------------------ cash out */
-static int cash_t;
-
-static void dollar_row(char *t, int n) {
-  for (int i = 0; i < n && i < 12; i++) *t++ = '$';
-  *t = 0;
-}
-
-/* the round's earnings, one row at a time as in the game: a big number or
-   name on the left, its text, and the dollars on the right */
-static void draw_cashout(int dt) {
-  layout_cards(dt, 0, HAND_Y);
-  draw_sidebar();
-  draw_jokers_row(-1, -1, -1, -1);
-  char t[48];
-  int x = AREA_X + 3, w = AREA_W - 6, y = 64;
-  cash_t += dt;
-  /* the panel wraps its rows, as in the game */
-  int ph = 40 + 33 + (R.cash_hands > 0) * 16 + R.ncash_joker * 16 + (R.cash_tag ? 18 : 0) + (R.cash_interest ? 16 : 0) + 6;
-  if (ph > 174) ph = 174;
-  g_rrect(x - 2, y - 2, w + 4, ph + 4, 7, HEXC(0x1A2224));
-  g_rrect(x, y, w, ph, 6, HEXC(0x3A5055));
-  g_rrect(x + 3, y + 3, w - 6, ph - 6, 5, HEXC(0x2B3A3D));
-  fmt_money(str_cat(t, T("Cash Out: ")), R.cash_total);
-  button(x + 10, y + 8, w - 20, 24, C_ORANGE, t, T_LARGE, 1, 1);
-  int yy = y + 40, appear = 250;
-  const int lx = x + 8, rx = x + w - 8;
-  if (cash_t < appear) goto done;
-  draw_blind_chip(R.blind, lx - 2, yy, 256);
-  g_text(T("Score at least"), lx + 28, yy + 1, F_LABEL, C_WHITE);
-  {
-    char n[24];
-    int f = num_fit(n, R.blind_chips, rx - 40 - (lx + 42), T_LARGE);
-    g_sprite(SPR_CHIP, lx + 28, yy + 12, 0, 256);
-    g_text(n, lx + 42, yy + 12 + (11 - g_cap(f) + 1) / 2, f | T_SHADOW, C_RED);
-  }
-  dollar_row(t, R.cash_blind);
-  g_text(t, rx, yy + 10, F_NAME | T_RIGHT, C_MONEY);
-  yy += 31;
-  for (int d = lx; d < rx; d += 4) g_rect(d, yy - 2, 2, 1, HEXC(0x6A7D80));
-  yy += 2;
-  /* rows: 15 pixels each */
-  if (R.cash_hands > 0) {
-    if (cash_t < (appear += 300)) goto done;
-    fmt_int(t, R.cash_hands);
-    g_text(t, lx, yy, F_VALUE, C_BLUE);
-    g_text(T("Remaining Hands ($1 each)"), lx + 3 + g_textw(t, T_LARGE), yy + 4, F_LABEL, C_WHITE);
-    dollar_row(t, R.cash_hands);
-    g_text(t, rx, yy + 2, F_NAME | T_RIGHT, C_MONEY);
-    yy += 16;
-  }
-  for (int k = 0; k < R.ncash_joker; k++) {
-    if (cash_t < (appear += 300)) goto done;
-    int ji = R.cash_joker_id[k];
-    if (ji < R.njokers) g_text(text_get(TXT_JOKER + R.jokers[ji].id, 0), lx, yy + 2, F_NAME, C_ATTN);
-    dollar_row(t, R.cash_joker[k]);
-    g_text(t, rx, yy + 2, F_NAME | T_RIGHT, C_MONEY);
-    yy += 16;
-  }
-  if (R.cash_tag) {
-    if (cash_t < (appear += 300)) goto done;
-    g_sprite(SPR_T + TAG_INVESTMENT, lx - 2, yy - 2, 0, 256);
-    g_text(T("Defeat the Boss Blind"), lx + 20, yy + 4, F_LABEL, C_WHITE);
-    dollar_row(t, R.cash_tag);
-    g_text(t, rx, yy + 2, F_NAME | T_RIGHT, C_MONEY);
-    yy += 18;
-  }
-  if (R.cash_interest) {
-    if (cash_t < (appear += 300)) goto done;
-    int amt = 1 + has_joker(J_TO_THE_MOON);
-    fmt_int(t, R.cash_interest);
-    g_text(t, lx, yy, F_VALUE, C_ATTN);
-    int tx = lx + 3 + g_textw(t, T_LARGE);
-    char *o = fmt_int(t, amt);
-    o = str_cat(o, T(" interest per $5 ("));
-    o = fmt_int(o, R.interest_cap / 5 * amt);
-    str_cat(o, T(" max)"));
-    g_text(t, tx, yy + 4, F_LABEL, C_WHITE);
-    dollar_row(t, R.cash_interest);
-    g_text(t, rx, yy + 2, F_NAME | T_RIGHT, C_MONEY);
-    yy += 16;
-  }
-done:
-  draw_popups();
-}
-
-/* ------------------------------------------------------------ shop */
-#define SHOP_X AREA_X
-#define SHOP_Y 62
-#define SHOP_W AREA_W
-
-/* the shop cards, centred in their dark box (x + 68 .. right - 6) */
-static int shop_item_x(int i, int n) {
-  int area = SHOP_W - 74 - 8, step = n > 1 ? (area - CW) / (n - 1) : 0;
-  if (step > CW + 10) step = CW + 10;
-  int total = step * (n - 1) + CW;
-  return SHOP_X + 68 + 4 + (area - total) / 2 + i * step;
-}
-static int bottom_n(void) { return R.nshop_v + R.nshop_p; }
-/* vouchers in the left box (x + 4 .. + 92), packs in the right one */
-static int bottom_x(int i) {
-  if (i < R.nshop_v) return R.nshop_v == 1 ? SHOP_X + 4 + 50 - CW / 2 : SHOP_X + 22 + i * 24;
-  int np = R.nshop_p, bx = SHOP_X + 96, bw = SHOP_W - 100;
-  int step = CW + 12, total = step * (np - 1) + CW;
-  return bx + (bw - total) / 2 + (i - R.nshop_v) * step;
-}
-static sitem_t *bottom_item(int i) { return i < R.nshop_v ? &R.shop_v[i] : &R.shop_p[i - R.nshop_v]; }
-static int affordable(int cost) { return cost == 0 || R.money + 20 * has_joker(J_CREDIT_CARD) >= cost; }
-
-static void draw_shop(int dt) {
-  layout_cards(dt, 0, HAND_Y);
-  draw_sidebar();
-  int fj = zone == Z_JOKERS ? zi : -1, fc = zone == Z_CONS ? zi : -1;
-  draw_jokers_row(fj, fc, zone == Z_JOKERS ? menu_open : -1, zone == Z_CONS ? menu_open : -1);
-  int x = SHOP_X, y = SHOP_Y, w = SHOP_W;
-  g_rrect(x - 1, y - 1, w + 2, 180, 7, HEXC(0x1A2224));
-  g_rrect(x, y, w, 178, 6, C_RED);
-  g_rrect(x + 2, y + 2, w - 4, 174, 5, HEXC(0x3B4B4E));
-  char t[24];
-  int fb = zone == Z_SHOPBTN ? zi : -1;
-  button(x + 6, y + 6, 58, 36, C_RED, T("Next\nRound"), F_LABEL, fb == 0, 1);
-  /* Reroll: the word small, the price large */
-  int ok = affordable(R.reroll_cost);
-  button(x + 6, y + 46, 58, 36, C_GREEN, "", F_LABEL, fb == 1, ok);
-  int sx = x + 6 + (fb == 1 ? focus_shake : 0);
-  g_text(T("Reroll"), sx + 29, y + 50, F_LABEL | T_CENTER, ok ? C_WHITE : HEXC(0xBBBBBB));
-  fmt_money(t, R.reroll_cost);
-  g_text(t, sx + 29, y + 62, F_VALUE | T_CENTER, ok ? C_WHITE : HEXC(0xBBBBBB));
-  g_shade(x + 68, y + 6, w - 74, 76, 4, 10);
-  for (int i = 0; i < R.nshop; i++) {
-    int ix = shop_item_x(i, R.nshop), iy = y + 27;
-    int f = zone == Z_SHOP && zi == i;
-    draw_item(&R.shop[i], ix, iy - (f ? 4 : 0) - (menu_open == i && zone == Z_SHOP ? 3 : 0), 256, 0);
-  }
-  for (int i = 0; i < R.nshop; i++) { /* price tags stay on top of a lifted card */
-    int cost = item_cost(&R.shop[i]);
-    draw_price(shop_item_x(i, R.nshop) + CW / 2, y + 8, cost, affordable(cost));
-  }
-  /* the voucher box, its name along the left edge as in the game */
-  g_shade(x + 4, y + 88, 88, 84, 4, 10);
-  char *o = str_cat(t, T("ANTE "));
-  o = fmt_int(o, R.ante);
-  str_cat(o, T(" VOUCHER"));
-  g_text(t, x + 9, y + 130, T_SMALL | T_ROT | T_CENTER, HEXC(0x7D8E91));
-  g_shade(x + 96, y + 88, w - 100, 84, 4, 10);
-  for (int i = 0; i < bottom_n(); i++) {
-    sitem_t *it = bottom_item(i);
-    int ix = bottom_x(i), iy = y + 111;
-    int f = zone == Z_BOTTOM && zi == i;
-    draw_item(it, ix, iy - (f ? 4 : 0) - (menu_open == i && zone == Z_BOTTOM ? 3 : 0), 256, 0);
-  }
-  for (int i = 0; i < bottom_n(); i++) {
-    int cost = item_cost(bottom_item(i));
-    draw_price(bottom_x(i) + CW / 2, y + 92, cost, affordable(cost));
+static void cash_line(int y, const char *label, int v) {
+  g_text(label, 70, y, T_SMALL, C_WHITE);
+  char *s = tmp();
+  fmt_int(str_cat(s, "+"), v);
+  g_text(s, 250, y - 1, T_MED | T_RIGHT, C_MONEY);
+}
+static void draw_cash(void) {
+  draw_table_head();
+  panel(50, 50, 220, 160);
+  g_text(T("Table won!"), 160, 58, T_LARGE | T_CENTER, C_GREEN);
+  int y = 82;
+  cash_line(y, table_name(R.table), R.cash_table), y += 18;
+  if (R.cash_hands) cash_line(y, T("Hands left"), R.cash_hands), y += 18;
+  if (R.cash_interest) cash_line(y, T("Interest (1 per 10)"), R.cash_interest), y += 18;
+  if (R.cash_jokers) cash_line(y, JOKERS[J_STAGEHAND].name, R.cash_jokers), y += 18;
+  g_rect(66, y, 188, 1, C_EDGE);
+  cash_line(y + 6, T("Total"), R.cash_table + R.cash_hands + R.cash_interest + R.cash_jokers);
+  button(110, 182, 100, 20, T("Shop"), C_GREEN, 1);
+}
+
+/* ------------------------------------------------------------ the shop */
+static int shop_x(int i) { return 84 + i * 56; }
+static void draw_shop(void) {
+  panel(4, 4, 312, 30);
+  g_text(T("Shop"), 12, 11, T_LARGE, C_WHITE);
+  g_sprite(SPR_COIN, 248, 13, 0, 256);
+  char *s = tmp();
+  fmt_int(s, R.money);
+  g_text(s, 308, 11, T_LARGE | T_RIGHT, C_MONEY);
+  /* your Jokers: sell them from here */
+  draw_joker_row(42, zone == Z_JOKERS ? zi : -1, -1);
+  /* the items */
+  panel(60, 96, 200, 86);
+  for (int i = 0; i < NSHOP; i++) {
+    const item_t *it = &R.shop[i];
+    int x = shop_x(i), focus = zone == Z_SHOP && zi == i;
+    if (it->kind == IT_NONE) {
+      g_shade(x, 108, ART_CW, ART_CH, 4, 8);
+      g_text(T("Sold"), x + ART_CW / 2, 128, T_SMALL | T_CENTER, C_GREY);
+      continue;
+    }
+    int fx = R.money < it->cost ? FX_DIM : 0;
+    if (it->kind == IT_JOKER) draw_joker(it->id, x, 108, focus, fx);
+    else draw_lesson(it->id, x, 108, focus);
+    s = tmp();
+    fmt_int(s, it->cost);
+    g_rrect(x + 6, 160, 24, 14, 4, R.money < it->cost ? C_GREY : C_MONEY);
+    g_text_box(s, x + 6, 160, 24, 14, T_MED, C_INK);
+    if (it->kind == IT_LESSON) g_text(hand_name(it->id), x + ART_CW / 2, 98, T_SMALL | T_CENTER, C_LESSON);
+  }
+  /* the buttons */
+  s = tmp();
+  fmt_int(str_cat(s, T("Reroll ")), reroll_cost());
+  button(196, 112, 58, 22, s, R.money >= reroll_cost() ? C_GREEN : C_GREY, zone == Z_BTN && zi == 0);
+  button(196, 146, 58, 30, T("Next"), C_RED, zone == Z_BTN && zi == 1);
+  /* the focused item, below */
+  bottom_box = 1;
+  if (zone == Z_BTN) {
+    panel(4, 188, 312, 50);
+    g_text(zi == 0 ? T("New items for the shop") : T("On to the next table"), 160, 198, T_SMALL | T_CENTER, C_WHITE);
+    g_text(T("up: your Jokers (OK twice: sell; shift + arrows: order)"), 160, 216, T_SMALL | T_CENTER, C_GREY);
+  }
+  if (zone == Z_JOKERS && zi < R.njokers) {
+    char *e = tmp();
+    if (sell_armed == zi) {
+      char *o = str_cat(e, T("OK again: sell for "));
+      fmt_int(o, sell_value(zi));
+      tooltip_at(0, 0, JOKERS[R.jokers[zi].id].name, JOKERS[R.jokers[zi].id].desc, e, C_MONEY);
+    } else
+      joker_tooltip(zi, 1, joker_x(zi, MAXJ) + ART_CW / 2, 92);
   }
-  if (menu_open >= 0 && (zone == Z_SHOP || zone == Z_BOTTOM)) {
-    sitem_t *it = zone == Z_SHOP ? &R.shop[menu_open] : bottom_item(menu_open);
-    int ix = zone == Z_SHOP ? shop_item_x(menu_open, R.nshop) : bottom_x(menu_open);
-    int iy = zone == Z_SHOP ? y + 27 + CH - 4 : y + 111 + CH - 14;
-    const char *lab = it->kind == IT_VOUCHER ? T("REDEEM") : it->kind == IT_PACK ? T("OPEN") : T("BUY");
-    button(ix - 4, iy, 43, 15, C_GREEN, lab, F_LABEL, menu_sel == 0, affordable(item_cost(it)));
-    if (it->kind == IT_CONS)
-      button(ix - 4, iy + 18, 43, 22, C_RED, T("BUY\n& USE"), F_LABEL, menu_sel == 1, cons_usable(it->id, 1));
-  }
-  draw_menu();
-  draw_popups();
-  if (!ui_busy() && menu_open < 0) {
-    if (zone == Z_SHOP && zi < R.nshop) {
-      sitem_t *it = &R.shop[zi];
-      int ix = shop_item_x(zi, R.nshop);
-      if (it->kind == IT_JOKER) {
-        joker_t j = {0};
-        j.id = it->id;
-        joker_init(&j);
-        if (it->id == J_TODO_LIST) j.c = (uint8_t)it->a;
-        draw_tooltip_for(TK_JOKER, it->id, it->ed, &j, ix, y + 27, CW);
-      } else if (it->kind == IT_CONS)
-        draw_tooltip_for(TK_CONS, it->id, it->ed, 0, ix, y + 27, CW);
-      else if (it->kind == IT_CARD) {
-        vcard_t v = {0};
-        v.rank = it->card.rank, v.suit = it->card.suit, v.enh = it->card.enh, v.ed = it->card.ed, v.seal = it->card.seal;
-        draw_tooltip_for(TK_CARD, 0, 0, &v, ix, y + 27, CW);
-      }
-    } else if (zone == Z_BOTTOM && zi < bottom_n()) {
-      sitem_t *it = bottom_item(zi);
-      draw_tooltip_for(it->kind == IT_VOUCHER ? TK_VOUCHER : TK_PACK, it->id, 0, 0, bottom_x(zi), y + 111, CW);
-    } else if (zone == Z_JOKERS || zone == Z_CONS)
-      draw_focus_tooltip();
+  if (zone == Z_SHOP && R.shop[zi].kind == IT_JOKER) joker_tooltip(R.shop[zi].id, 0, shop_x(zi) + ART_CW / 2, 186 - 70);
+  if (zone == Z_SHOP && R.shop[zi].kind == IT_LESSON) lesson_tooltip(R.shop[zi].id, shop_x(zi) + ART_CW / 2, 186 - 62);
+  if (zone == Z_SHOP && R.shop[zi].kind == IT_NONE) {
+    panel(4, 188, 312, 50);
+    g_text(T("Sold"), 160, 206, T_SMALL | T_CENTER, C_GREY);
   }
+  bottom_box = 0;
 }
-
 static void shop_input(void) {
-  if (menu_open >= 0 && (zone == Z_JOKERS || zone == Z_CONS)) {
-    menu_input();
-    return;
-  }
-  if (menu_open >= 0) {
-    sitem_t *it = zone == Z_SHOP ? &R.shop[menu_open] : bottom_item(menu_open);
-    int n = it->kind == IT_CONS ? 2 : 1;
-    if (pressed[K_UP] && menu_sel > 0) menu_sel--;
-    if (pressed[K_DOWN] && menu_sel < n - 1) menu_sel++;
-    if (pressed[K_BACK] || pressed[K_LEFT] || pressed[K_RIGHT]) menu_open = -1;
-    else if (pressed[K_OK] || pressed[K_EXE]) {
-      int area = zone == Z_SHOP ? 0 : menu_open < R.nshop_v ? 1 : 2;
-      int idx = zone == Z_SHOP || menu_open < R.nshop_v ? menu_open : menu_open - R.nshop_v;
-      if (menu_sel == 1 && !cons_usable(it->id, 1)) deny();
-      else if (!shop_buy(area, idx, menu_sel == 1)) deny();
-      else {
-        autosave();
-        if (R.phase == PH_PACK) zone = Z_PACK, zi = 0;
-      }
-      menu_open = -1;
-    }
-    return;
-  }
-  if (held(K_ALPHA) && (pressed[K_LEFT] || pressed[K_RIGHT]) && zone == Z_JOKERS) {
-    move_focused(pressed[K_LEFT] ? -1 : 1);
-    return;
-  }
   if (pressed[K_BACK]) {
-    if (zone != Z_SHOPBTN) zone = Z_SHOPBTN, zi = 0;
-    else overlay = OV_OPTIONS, ov_sel = 0;
+    overlay = OV_PAUSE, ov_sel = 0;
     return;
   }
-  if (row_nav()) return;
-  switch (zone) {
-    case Z_SHOPBTN:
-      if (pressed[K_UP]) {
-        if (zi > 0) zi--;
-        else up_to_row(120);
-      }
-      if (pressed[K_DOWN]) {
-        if (zi < 1) zi++;
-        else if (bottom_n()) zone = Z_BOTTOM, zi = 0;
-      }
-      if (pressed[K_RIGHT]) {
-        if ((zi == 0 || !bottom_n()) && R.nshop) zone = Z_SHOP, zi = 0;
-        else if (bottom_n()) zone = Z_BOTTOM, zi = 0;
-      }
-      if (pressed[K_OK] || pressed[K_EXE]) {
-        if (zi == 0) {
-          shop_leave();
-          zone = R.phase == PH_PACK ? Z_PACK : Z_BTN, zi = 0;
-          autosave();
-        } else if (!shop_reroll()) deny();
-        else autosave();
-      }
-      break;
-    case Z_SHOP:
-      if (pressed[K_LEFT]) {
-        if (zi > 0) zi--;
-        else zone = Z_SHOPBTN, zi = 0;
-      }
-      if (pressed[K_RIGHT] && zi < R.nshop - 1) zi++;
-      if (pressed[K_UP]) up_to_row(item_x(Z_SHOP, 0));
-      if (pressed[K_DOWN]) {
-        if (bottom_n()) zone = Z_BOTTOM, zi = R.nshop_v < bottom_n() ? R.nshop_v : 0;
-        else zone = Z_SHOPBTN, zi = 1;
-      }
-      if ((pressed[K_OK] || pressed[K_EXE]) && zi < R.nshop) menu_open = zi, menu_sel = 0;
-      if (!R.nshop) zone = Z_SHOPBTN, zi = 0;
-      break;
-    case Z_BOTTOM:
-      if (pressed[K_LEFT]) {
-        if (zi > 0) zi--;
-        else zone = Z_SHOPBTN, zi = 1;
-      }
-      if (pressed[K_RIGHT] && zi < bottom_n() - 1) zi++;
-      if (pressed[K_UP]) {
-        if (R.nshop) zone = Z_SHOP, zi = 0;
-        else zone = Z_SHOPBTN, zi = 1;
-      }
-      if ((pressed[K_OK] || pressed[K_EXE]) && zi < bottom_n()) menu_open = zi, menu_sel = 0;
-      if (!bottom_n()) zone = Z_SHOPBTN, zi = 0;
-      break;
-    case Z_JOKERS: case Z_CONS:
-      if (pressed[K_DOWN]) zone = R.nshop ? Z_SHOP : Z_SHOPBTN, zi = 0;
-      if (pressed[K_OK]) menu_open = zi, menu_sel = 0;
-      break;
-    default: zone = Z_SHOPBTN, zi = 0;
-  }
-  clamp_focus();
-}
-
-/* ------------------------------------------------------------ packs */
-static int pack_x(int i) {
-  int n = R.npack, area = AREA_W, step = n > 1 ? (area - CW) / (n - 1) : 0;
-  if (step > CW + 8) step = CW + 8;
-  int total = step * (n - 1) + CW;
-  return AREA_X + (area - total) / 2 + i * step;
-}
-
-static void draw_pack(int dt) {
-  int with_hand = R.pack_kind == PK_ARCANA || R.pack_kind == PK_SPECTRAL;
-  layout_cards(dt, with_hand, HAND_Y + 18);
-  draw_sidebar();
-  draw_jokers_row(zone == Z_JOKERS ? zi : -1, zone == Z_CONS ? zi : -1, zone == Z_JOKERS ? menu_open : -1,
-                  zone == Z_CONS ? menu_open : -1);
-#if !NP_TEXT_EXTRA
-  static const char *const names[5] = {"Arcana Pack", "Celestial Pack", "Standard Pack", "Buffoon Pack",
-                                       "Spectral Pack"};
-  static const char *const sizes[3] = {"", "Jumbo ", "Mega "};
-#endif
-  int py = 70;
-  for (int i = 0; i < R.npack; i++) {
-    int f = zone == Z_PACK && zi == i;
-    draw_item(&R.pack[i], pack_x(i), py - (f ? 5 : 0), 256, 0);
-  }
-  /* the pack's name and how many to choose, Skip on the right */
-  int bw = 170, bx = AREA_X + (AREA_W - bw) / 2, by = with_hand ? 132 : 138, bh = 28;
-  panel(bx, by, bw, bh, 5, HEXC(0x2F3A3C), 2);
-  char t[32];
-#if NP_TEXT_EXTRA
-  /* (the packs' names among the texts: other languages put the size elsewhere) */
-  char *o = str_cat(t, text_get(TXT_EXTRA + 16 + R.pack_kind * 3 + R.pack_size, 0));
-#else
-  char *o = str_cat(t, sizes[R.pack_size]);
-  str_cat(o, names[R.pack_kind]);
-#endif
-  g_text(t, bx + 6, by + 4, text_fit(t, bw - 56, T_MED) | T_SHADOW, C_WHITE);
-  o = str_cat(t, T("Choose "));
-  fmt_int(o, R.pack_picks);
-  g_text(t, bx + 6, by + 17, F_LABEL, C_WHITE);
-  button(bx + bw - 42, by + 6, 36, 16, C_RED, T("Skip"), F_LABEL, zone == Z_SKIP, 1);
-  if (with_hand) draw_hand_cards(hand_focus());
-  draw_menu();
-  draw_popups();
-  if (!ui_busy() && menu_open < 0) {
-    if (zone == Z_PACK && zi < R.npack) {
-      sitem_t *it = &R.pack[zi];
-      int ix = pack_x(zi);
-      int ok = it->kind != IT_CONS || cons_usable(it->id, 1);
-      if (it->kind == IT_JOKER && R.njokers >= joker_slots() && it->ed != ED_NEG) ok = 0;
-      button(ix - 4, py + CH - 3, 43, 15, it->kind == IT_CONS ? C_RED : C_GREEN, it->kind == IT_CONS ? T("USE") : T("SELECT"),
-             F_LABEL, 1, ok);
-      if (it->kind == IT_JOKER) {
-        joker_t j = {0};
-        j.id = it->id;
-        joker_init(&j);
-        draw_tooltip_for(TK_JOKER, it->id, it->ed, &j, ix, py, CW);
-      } else if (it->kind == IT_CONS)
-        draw_tooltip_for(TK_CONS, it->id, it->ed, 0, ix, py, CW);
-      else {
-        vcard_t v = {0};
-        v.rank = it->card.rank, v.suit = it->card.suit, v.enh = it->card.enh, v.ed = it->card.ed, v.seal = it->card.seal;
-        draw_tooltip_for(TK_CARD, 0, 0, &v, ix, py, CW);
-      }
-    } else
-      draw_focus_tooltip();
-  }
-}
-
-static void pack_input(void) {
-  int with_hand = R.pack_kind == PK_ARCANA || R.pack_kind == PK_SPECTRAL;
-  if (menu_open >= 0) {
-    menu_input();
+  if (zone == Z_HAND) zone = Z_SHOP, zi = 0;
+  if (zone == Z_JOKERS) {
+    if (!R.njokers) {
+      zone = Z_SHOP, zi = 0;
+      return;
+    }
+    if (held(K_SHIFT) && (pressed[K_LEFT] || pressed[K_RIGHT])) {
+      int to = zi + (pressed[K_RIGHT] ? 1 : -1);
+      if (to >= 0 && to < R.njokers) move_joker(zi, to), zi = to, sell_armed = -1;
+      return;
+    }
+    if (pressed[K_LEFT] && zi > 0) zi--, sell_armed = -1;
+    if (pressed[K_RIGHT] && zi < R.njokers - 1) zi++, sell_armed = -1;
+    if (pressed[K_DOWN]) zone = Z_SHOP, zi = 0, sell_armed = -1;
+    if (ok()) {
+      if (sell_armed == zi) {
+        sell_joker(zi);
+        sell_armed = -1;
+        if (zi >= R.njokers) zi = R.njokers - 1;
+        if (zi < 0) zone = Z_SHOP, zi = 0;
+        save_now();
+      } else
+        sell_armed = zi;
+    }
     return;
   }
-  if (pressed[K_BACK]) {
-    zone = Z_SKIP;
+  if (zone == Z_SHOP) {
+    if (pressed[K_LEFT] && zi > 0) zi--;
+    if (pressed[K_RIGHT]) {
+      if (zi < NSHOP - 1) zi++;
+      else zone = Z_BTN, zi = 0;
+    }
+    if (pressed[K_UP] && R.njokers) zone = Z_JOKERS, zi = 0;
+    if (pressed[K_DOWN]) zone = Z_BTN, zi = 1;
+    if (ok()) {
+      if (shop_buy(zi)) save_now();
+      else deny();
+    }
     return;
   }
-  if (row_nav()) return;
-  switch (zone) {
-    case Z_PACK:
-      if (pressed[K_LEFT] && zi > 0) zi--;
-      if (pressed[K_RIGHT] && zi < R.npack - 1) zi++;
-      if (pressed[K_DOWN]) zone = Z_SKIP;
-      if (pressed[K_UP]) up_to_row(item_x(Z_PACK, zi));
-      if (pressed[K_OK] || pressed[K_EXE]) {
-        if (!pack_choose(zi)) deny();
-        else {
-          autosave();
-          if (R.phase != PH_PACK) zone = R.phase == PH_SHOP ? Z_SHOPBTN : Z_BTN, zi = 0;
-        }
-      }
-      break;
-    case Z_HAND:
-      if (held(K_ALPHA) && (pressed[K_LEFT] || pressed[K_RIGHT])) {
-        move_focused(pressed[K_LEFT] ? -1 : 1);
-        break;
-      }
-      if (pressed[K_LEFT] && zi > 0) zi--;
-      if (pressed[K_RIGHT] && zi < V.nhand - 1) zi++;
-      if (pressed[K_UP]) zone = Z_SKIP;
-      if (pressed[K_OK] && zi < R.nhand) {
-        toggle_select(zi);
-        V.cards[R.hand[zi]].raise = R.sel[zi];
-      }
-      break;
-    case Z_SKIP:
-      if (pressed[K_UP]) zone = Z_PACK, zi = 0;
-      if (pressed[K_DOWN] && with_hand) zone = Z_HAND, zi = 0;
-      if (pressed[K_OK] || pressed[K_EXE]) {
-        pack_skip();
-        autosave();
-        zone = R.phase == PH_SHOP ? Z_SHOPBTN : R.phase == PH_PACK ? Z_PACK : Z_BTN, zi = 0;
-      }
-      break;
-    case Z_JOKERS: case Z_CONS:
-      if (pressed[K_DOWN]) zone = Z_PACK, zi = 0;
-      if (pressed[K_OK]) menu_open = zi, menu_sel = 0;
-      break;
-    default: zone = Z_PACK, zi = 0;
+  /* buttons */
+  if (pressed[K_UP]) {
+    if (zi == 1) zi = 0;
+    else if (R.njokers) zone = Z_JOKERS, zi = 0;
+  }
+  if (pressed[K_DOWN] && zi == 0) zi = 1;
+  if (pressed[K_LEFT]) zone = Z_SHOP, zi = NSHOP - 1;
+  if (ok()) {
+    if (zi == 0) {
+      if (shop_reroll()) save_now();
+      else deny();
+    } else {
+      next_table();
+      zone = Z_HAND, zi = 0;
+      save_now();
+    }
   }
-  clamp_focus();
-}
-
-/* ------------------------------------------------------------ game over / win */
-static const char *const quips_lose[] = {T("Better luck\nnext time!"), T("Don't give up!"), T("So close!"),
-                                         T("The house\nalways wins...")};
-static const char *const quips_win[] = {T("You did it!"), T("Unbelievable!"), T("A true\ncard shark!")};
-
-static void stat_row(int x, int w, int y, const char *label, const char *value, C col) {
-  g_text(label, x + 14, y + 2, F_LABEL, C_WHITE);
-  g_text(value, x + w - 14, y, text_fit(value, w / 2, T_MED) | T_RIGHT | T_SHADOW, col);
 }
 
-static void draw_end(int win) {
-  char t[40];
-  draw_sidebar();
-  draw_jokers_row(-1, -1, -1, -1);
-  int x = AREA_X, w = AREA_W;
-  big_panel(x, 20, w, 216);
-  g_text_box(win ? T("YOU WIN!") : T("GAME OVER"), x, 26, w, 26, T_LARGE | T_X2 | T_SHADOW, win ? C_ATTN : C_RED);
-  draw_joker_sprite(J_JOKER, 0, x + 12, 56, 256, 0);
-  const char *q = win ? quips_win[R.round % 3] : quips_lose[R.round % 4];
-  panel(x + 54, 60, 104, 28, 5, C_WHITE, 1);
-  g_rect(x + 50, 70, 5, 4, C_WHITE);
-  g_text_box(q, x + 54, 60, 104, 28, F_TEXT, C_TEXT_DARK);
-  char *o = str_cat(t, T("Ante \004"));
-  o = fmt_int(o, win ? WIN_ANTE : R.ante);
-  o = str_cat(o, T("\001    Round \004"));
-  fmt_int(o, R.round);
-  g_text(t, x + 106, 93, F_LABEL | T_CENTER, C_WHITE);
-  int yy = 106;
-  g_rrect(x + 8, yy - 3, w - 16, 88, 4, HEXC(0x1F2B2D));
-  fmt_commas(t, R.best_hand);
-  stat_row(x, w, yy, T("Best Hand"), t, C_RED);
-  int mp = 0;
-  for (int h = 0; h < NHANDS; h++)
-    if (R.hands[h].played > R.hands[mp].played) mp = h;
-  stat_row(x, w, yy + 12, T("Most Played Hand"), R.hands[mp].played ? hand_names[mp] : "-", C_ATTN);
-  fmt_int(t, R.cards_played);
-  stat_row(x, w, yy + 24, T("Cards Played"), t, C_BLUE);
-  fmt_int(t, R.cards_discarded);
-  stat_row(x, w, yy + 36, T("Cards Discarded"), t, C_RED);
-  fmt_int(t, R.cards_bought);
-  stat_row(x, w, yy + 48, T("Cards Purchased"), t, C_MONEY);
-  fmt_int(t, R.rerolls);
-  stat_row(x, w, yy + 60, T("Times Rerolled"), t, C_GREEN);
-  stat_row(x, w, yy + 72, T("Seed"), R.seed, C_WHITE);
-  if (win) {
-    int bw = (w - 16 - 8) / 3;
-    button(x + 8, 196, bw, 30, C_ORANGE, T("Endless\nMode"), T_MED, ov_sel == 0, 1);
-    button(x + 12 + bw, 196, bw, 30, C_BLUE, T("New\nRun"), T_MED, ov_sel == 1, 1);
-    button(x + 16 + 2 * bw, 196, bw, 30, C_RED, T("Main\nMenu"), T_MED, ov_sel == 2, 1);
+/* ------------------------------------------------------------ the end */
+static void draw_end(int won) {
+  panel(40, 30, 240, 180);
+  g_text(won ? T("You won!") : T("Game over"), 160, 42, T_LARGE | T_X2 | T_CENTER, won ? C_MONEY : C_RED);
+  char *s = tmp();
+  char *o = str_cat(s, T("Salon "));
+  o = fmt_int(o, R.salon);
+  o = str_cat(o, ", ");
+  str_cat(o, table_name(R.table));
+  g_text(s, 160, 82, T_MED | T_CENTER, C_WHITE);
+  g_text(T("Best hand"), 70, 104, T_SMALL, C_GREY);
+  s = tmp();
+  num(s, R.best_hand);
+  g_text(s, 250, 102, T_MED | T_RIGHT, C_POINTS);
+  g_text(T("Tables won"), 70, 122, T_SMALL, C_GREY);
+  s = tmp();
+  fmt_int(s, R.tables_won);
+  g_text(s, 250, 120, T_MED | T_RIGHT, C_GREEN);
+  g_text(T("Best salon ever"), 70, 140, T_SMALL, C_GREY);
+  s = tmp();
+  fmt_int(s, S.best_salon);
+  g_text(s, 250, 138, T_MED | T_RIGHT, C_ATTN);
+  if (won) {
+    button(56, 178, 100, 22, T("Keep going"), C_GREEN, ov_sel == 0);
+    button(164, 178, 100, 22, T("New run"), C_RED, ov_sel == 1);
   } else {
-    int bw = (w - 16 - 6) / 2;
-    button(x + 8, 196, bw, 30, C_BLUE, T("New Run"), T_MED, ov_sel == 0, 1);
-    button(x + 14 + bw, 196, bw, 30, C_RED, T("Main Menu"), T_MED, ov_sel == 1, 1);
+    button(56, 178, 100, 22, T("New run"), C_GREEN, ov_sel == 0);
+    button(164, 178, 100, 22, T("Main menu"), C_RED, ov_sel == 1);
   }
 }
-
-static void start_new_run(void) {
-  run_new(0);
+static void start_run(void) {
+  run_new();
   S.runs++;
-  ev_reset();
-  memset(&V, 0, sizeof V);
-  ui_sync_all(1);
-  V.hand_name = -1;
-  zone = Z_BTN, zi = 0;
   in_game = 1, has_save = 1;
   screen = SCR_GAME;
-  overlay = OV_NONE;
-  autosave();
-}
-
-static void continue_run(void) {
-  ev_reset();
-  memset(&V, 0, sizeof V);
-  ui_sync_all(1);
-  V.hand_name = -1;
-  zone = R.phase == PH_ROUND ? Z_HAND : R.phase == PH_SHOP ? Z_SHOPBTN : R.phase == PH_PACK ? Z_PACK : Z_BTN;
-  zi = 0;
-  in_game = 1;
-  screen = SCR_GAME;
-  overlay = OV_NONE;
+  overlay = 0;
+  zone = Z_HAND, zi = 0;
+  shown_score = 0;
+  save_now();
 }
-
 static void to_title(void) {
-  if (in_game) save_write(R.phase != PH_GAMEOVER);
-  has_save = in_game ? R.phase != PH_GAMEOVER : has_save;
+  save_now();
+  has_save = R.phase != PH_LOST && R.phase != PH_WON && R.salon;
   in_game = 0;
   screen = SCR_TITLE;
-  overlay = OV_NONE;
-  title_sel = 0, title_t = 0;
+  overlay = 0;
+  title_sel = 0;
+}
+static void end_input(int won) {
+  if (pressed[K_LEFT]) ov_sel = 0;
+  if (pressed[K_RIGHT]) ov_sel = 1;
+  if (!ok()) return;
+  if (won && ov_sel == 0) {
+    S.wins++;
+    continue_endless();
+    save_now();
+  } else if ((won && ov_sel == 1) || (!won && ov_sel == 0)) {
+    if (won) S.wins++;
+    start_run();
+  } else
+    to_title();
+  ov_sel = 0;
 }
 
-static void end_input(int win) {
-  int n = win ? 3 : 2;
-  if (pressed[K_LEFT] || pressed[K_UP]) ov_sel = (ov_sel + n - 1) % n;
-  if (pressed[K_RIGHT] || pressed[K_DOWN]) ov_sel = (ov_sel + 1) % n;
-  if (pressed[K_OK] || pressed[K_EXE]) {
-    int a = win ? ov_sel : ov_sel + 1;
-    if (a == 0) {
-      continue_endless();
-      ev_reset();
-      ui_sync_all(0);
-      zone = Z_BTN, zi = 0;
-      autosave();
-    } else if (a == 1)
-      start_new_run();
-    else {
-      if (!win) {
-        in_game = 0, has_save = 0;
-        save_write(0);
-      }
-      to_title();
-    }
+/* ------------------------------------------------------------ overlays */
+static void draw_info(void) {
+  panel(10, 8, 300, 224);
+  g_text(T("Poker hands"), 160, 14, T_MED | T_CENTER, C_WHITE);
+  for (int h = NHANDS - 1, y = 32; h >= 0; h--, y += 21) {
+    g_rrect(18, y, 284, 18, 3, C_PANEL2);
+    g_text(hand_name(h), 24, y + 5, T_SMALL, C_WHITE);
+    char *s = tmp();
+    fmt_int(str_cat(s, T("lvl ")), R.level[h]);
+    g_text(s, 150, y + 5, T_SMALL, C_ATTN);
+    s = tmp();
+    num(s, hand_points(h));
+    badge(186, y + 2, 40, 14, C_POINTS, s);
+    s = tmp();
+    num(s, hand_mult(h));
+    badge(232, y + 2, 34, 14, C_MULT, s);
+    s = tmp();
+    fmt_int(str_cat(s, "#"), R.played[h]);
+    g_text(s, 296, y + 5, T_SMALL | T_RIGHT, C_GREY);
   }
 }
-
-/* ------------------------------------------------------------ overlays input */
+static void draw_help(void) {
+  panel(10, 8, 300, 224);
+  g_text(T("How to play"), 160, 14, T_MED | T_CENTER, C_WHITE);
+  static const char *const L[] = {
+      T("Reach the target score at each table."),
+      T("Pick up to 5 cards and play a poker hand:"),
+      T("\002Points\020 (the hand's, plus each scoring"),
+      T("card's rank) times \003Multi\020 is your score."),
+      T("Jokers add their effects, left to right."),
+      T("Won tables pay \005coins\020: buy Jokers and"),
+      T("Lessons in the shop. 8 salons to win."),
+      "",
+      T("Arrows: move     OK: pick a card"),
+      T("EXE: play the hand     \203: discard"),
+      T("shift: sort by rank or suit"),
+      T("shift + arrows: move a Joker"),
+      T("toolbox: poker hands     Back: menu"),
+      T("Home: save and quit"),
+  };
+  for (int i = 0; i < (int)(sizeof L / sizeof L[0]); i++) g_text(L[i], 20, 32 + i * 13, T_SMALL, C_WHITE);
+}
+static const char *const PAUSE_ITEMS[5] = {T("Resume"), T("Poker hands"), T("How to play"), T("New run"),
+                                           T("Main menu")};
+static void draw_pause(void) {
+  panel(80, 40, 160, 160);
+  g_text(T("Menu"), 160, 48, T_MED | T_CENTER, C_WHITE);
+  for (int i = 0; i < 5; i++) button(96, 66 + i * 26, 128, 20, PAUSE_ITEMS[i], i == 3 ? C_RED : C_EDGE, ov_sel == i);
+}
+static void draw_confirm(void) {
+  panel(60, 80, 200, 80);
+  g_text(T("Give up this run?"), 160, 92, T_MED | T_CENTER, C_WHITE);
+  button(76, 124, 76, 22, T("Yes"), C_RED, ov_sel == 0);
+  button(168, 124, 76, 22, T("No"), C_EDGE, ov_sel == 1);
+}
 static void overlay_input(void) {
-  switch (overlay) {
-    case OV_OPTIONS:
-      {
-        int n = opt_count();
-        if (ov_sel >= n) ov_sel = 0;
-        if (pressed[K_UP]) ov_sel = (ov_sel + n - 1) % n;
-        if (pressed[K_DOWN]) ov_sel = (ov_sel + 1) % n;
-      }
-      if (opt_id(ov_sel) == OPT_SPEED && (pressed[K_LEFT] || pressed[K_RIGHT])) {
-        S.speed = (uint8_t)((S.speed + (pressed[K_RIGHT] ? 1 : 3)) % 4);
-        save_write(in_game ? R.phase != PH_GAMEOVER : has_save);
-      }
-      if (pressed[K_BACK]) overlay = OV_NONE;
-      if (pressed[K_OK] || pressed[K_EXE]) {
-        switch (opt_id(ov_sel)) {
-          case OPT_CONTINUE: case OPT_BACK: overlay = OV_NONE; break;
-          case OPT_SPEED:
-            S.speed = (uint8_t)((S.speed + 1) % 4);
-            save_write(in_game ? R.phase != PH_GAMEOVER : has_save);
-            break;
-          case OPT_HELP: overlay = OV_HELP; break;
-          case OPT_NEWRUN: overlay = OV_CONFIRM_NEW, ov_sel = 1; break;
-          case OPT_MAINMENU: to_title(); break;
-        }
-      }
-      break;
-    case OV_CONFIRM_NEW:
-      if (pressed[K_LEFT] || pressed[K_RIGHT]) ov_sel ^= 1;
-      if (pressed[K_BACK]) overlay = OV_OPTIONS, ov_sel = opt_index(OPT_NEWRUN);
-      if (pressed[K_OK] || pressed[K_EXE]) {
-        if (ov_sel == 0) start_new_run();
-        else overlay = OV_OPTIONS, ov_sel = opt_index(OPT_NEWRUN);
-      }
-      break;
-    case OV_RUNINFO:
-      if (pressed[K_LEFT]) ov_tab = (ov_tab + 2) % 3;
-      if (pressed[K_RIGHT]) ov_tab = (ov_tab + 1) % 3;
-      if (pressed[K_BACK] || pressed[K_OK] || pressed[K_TOOLBOX]) overlay = OV_NONE;
-      break;
-    case OV_DECK:
-      if (pressed[K_LEFT] || pressed[K_RIGHT]) ov_tab ^= 1;
-      if (pressed[K_BACK] || pressed[K_OK] || pressed[K_VAR]) overlay = OV_NONE;
-      break;
-    case OV_HELP:
-      if (pressed[K_BACK] || pressed[K_OK] || pressed[K_EXE]) overlay = OV_OPTIONS, ov_sel = opt_index(OPT_HELP);
-      break;
-    case OV_CREDITS:
-      if (pressed[K_BACK] || pressed[K_OK] || pressed[K_EXE]) overlay = OV_NONE;
-      break;
-    case OV_SETUP:
-      if ((pressed[K_LEFT] || pressed[K_RIGHT]) && has_save) ov_tab ^= 1;
-      if (pressed[K_UP] || pressed[K_DOWN]) ov_sel ^= 1;
-      if (pressed[K_BACK]) overlay = OV_NONE;
-      else if (pressed[K_OK] || pressed[K_EXE]) {
-        if (ov_sel == 1) overlay = OV_NONE;
-        else if (ov_tab == 1 && has_save) continue_run();
-        else start_new_run();
-      }
-      break;
+  if (overlay == OV_INFO || overlay == OV_HELP) {
+    if (pressed[K_BACK] || ok() || pressed[K_TOOLBOX]) overlay = screen == SCR_GAME && overlay == OV_HELP ? OV_PAUSE : 0;
+    return;
+  }
+  if (overlay == OV_CONFIRM) {
+    if (pressed[K_LEFT]) ov_sel = 0;
+    if (pressed[K_RIGHT]) ov_sel = 1;
+    if (pressed[K_BACK]) overlay = OV_PAUSE, ov_sel = 3;
+    if (ok()) {
+      if (ov_sel == 0) start_run();
+      else overlay = OV_PAUSE, ov_sel = 3;
+    }
+    return;
+  }
+  /* the menu */
+  if (pressed[K_UP] && ov_sel > 0) ov_sel--;
+  if (pressed[K_DOWN] && ov_sel < 4) ov_sel++;
+  if (pressed[K_BACK]) overlay = 0;
+  if (ok()) {
+    switch (ov_sel) {
+      case 0: overlay = 0; break;
+      case 1: overlay = OV_INFO; break;
+      case 2: overlay = OV_HELP; break;
+      case 3: overlay = OV_CONFIRM, ov_sel = 1; break;
+      case 4: to_title(); break;
+    }
   }
 }
-
 static void draw_overlay(void) {
-  switch (overlay) {
-    case OV_OPTIONS: draw_options(); break;
-    case OV_RUNINFO: draw_run_info(); break;
-    case OV_DECK: draw_deck_view(); break;
-    case OV_HELP: draw_help(); break;
-    case OV_CREDITS: draw_credits(); break;
-    case OV_SETUP: draw_setup(); break;
-    case OV_CONFIRM_NEW: draw_confirm_new(); break;
-  }
+  if (!overlay) return;
+  g_shade(0, 0, 320, 240, 0, 14);
+  if (overlay == OV_PAUSE) draw_pause();
+  if (overlay == OV_INFO) draw_info();
+  if (overlay == OV_HELP) draw_help();
+  if (overlay == OV_CONFIRM) draw_confirm();
 }
 
-/* ------------------------------------------------------------ main */
-static int quit(void) {
-  save_write(in_game ? R.phase != PH_GAMEOVER : has_save);
-  return np_app_end();
+/* ------------------------------------------------------------ title */
+static int title_t;
+static const char *const TITLE_ITEMS[4] = {T("Continue"), T("New run"), T("How to play"), T("Quit")};
+static void draw_title(void) {
+  const art_sprite_t *l = &art_sprites[SPR_LOGO];
+  int bob = (title_t / 200) % 8;
+  bob = bob < 4 ? bob : 8 - bob;
+  g_sprite(SPR_LOGO, 160 - l->w / 2, 26 + bob / 2, 0, 256);
+  g_text(T("A poker game with Jokers"), 160, 84, T_SMALL | T_CENTER, C_ATTN);
+  /* a fan of cards */
+  static const uint8_t fan[5] = {12, 24, 0, 36, 51}; /* A spades, K hearts, (a Joker), Q clubs, A diamonds */
+  for (int i = 0; i < 5; i++) {
+    int x = 160 - 90 + i * 38, y = 102 + (i == 2 ? 0 : i == 1 || i == 3 ? 4 : 10);
+    if (i == 2) draw_joker(J_RINGMASTER, x, y, 0, 0);
+    else draw_card(fan[i], x, y, 0, 0);
+  }
+  for (int i = 0; i < 4; i++) {
+    int on = i != 0 || has_save;
+    button(24 + i * 70, 176, 64, 22, TITLE_ITEMS[i], !on ? C_GREY : i == 1 ? C_GREEN : i == 3 ? C_RED : C_EDGE,
+           title_sel == i);
+  }
+  char *s = tmp(), *o = s;
+  o = str_cat(o, T("Best salon "));
+  o = fmt_int(o, S.best_salon);
+  o = str_cat(o, T("   Best hand "));
+  num(o, S.best_hand);
+  g_text(s, 160, 210, T_SMALL | T_CENTER, C_GREY);
+  g_text(T("Jokeria, a Calcade game"), 160, 224, T_SMALL | T_CENTER, HEXC(0x6A6080));
+}
+static void title_input(void) {
+  if (pressed[K_LEFT] && title_sel > 0) title_sel--;
+  if (pressed[K_RIGHT] && title_sel < 3) title_sel++;
+  if (!ok()) return;
+  if (title_sel == 0) {
+    if (!has_save) {
+      deny();
+      return;
+    }
+    in_game = 1;
+    screen = SCR_GAME;
+    shown_score = R.score;
+    zone = R.phase == PH_SHOP ? Z_SHOP : Z_HAND, zi = 0;
+  } else if (title_sel == 1)
+    start_run();
+  else if (title_sel == 2)
+    overlay = OV_HELP;
+  else
+    quit_now();
 }
 
 #ifdef TEST_PHASE
-/* test builds only (make EXTRA=-DTEST_PHASE=...): start in a prepared state */
+/* test builds (make EXTRA=-DTEST_PHASE=n): 1 the shop, 2 a round with Jokers, 3 a Gold table */
 static void test_preset(void) {
-  run_new("TESTSEED");
-  R.money = 40;
-  static const uint8_t j[5] = {J_JOKER, J_FIBONACCI, J_BLUEPRINT, J_BARON, J_HOLOGRAM};
-  for (int i = 0; i < 5; i++) joker_add(j[i], i == 1 ? ED_POLY : i == 3 ? ED_FOIL : 0, 1);
-  add_cons(C_CHARIOT, 0);
-  add_cons(C_JUPITER, 0);
-#ifdef TEST_LEVEL
-  for (int h = 0; h < NHANDS; h++) R.hands[h].level = TEST_LEVEL;
-#endif
-  if (TEST_PHASE == 1) shop_enter();
-  if (TEST_PHASE == 2) pack_open(PK_ARCANA, 2, 0);
-  if (TEST_PHASE == 3) blind_select();
-  ev_reset();
-  has_save = 1;
-  continue_run();
+  run_new();
+  R.money = 30;
+  static const uint8_t j[5] = {J_BUSKER, J_RED_LANTERN, J_ACE_PILOT, J_PRISM, J_GAMBLER};
+  for (int i = 0; i < (TEST_PHASE == 1 ? 3 : 5); i++) R.jokers[R.njokers++] = (joker_t){j[i], 0};
+  if (TEST_PHASE == 1) cash_out();
+  if (TEST_PHASE == 2) table_start();
+  if (TEST_PHASE == 3) R.table = TB_GOLD, R.twist = TW_WIND, R.target = target_for(1, TB_GOLD);
+  in_game = 1, has_save = 1, screen = SCR_GAME;
+  zone = R.phase == PH_SHOP ? Z_SHOP : Z_HAND;
 }
 #endif
 
-#ifndef __ELF__
-#include <stdlib.h>
-/* simulator only: BALATRO_TEST starts a prepared run (for screenshots) */
-static void test_setup(void) {
-  const char *t = getenv("BALATRO_TEST");
-  if (!t) return;
-  run_new(getenv("BALATRO_SEED") ? getenv("BALATRO_SEED") : "TESTSEED");
-  R.money = atoi(t) > 0 ? atoi(t) : 50;
-  const char *j = getenv("BALATRO_JOKERS");
-  while (j && *j) {
-    int id = atoi(j), ed = 0;
-    while (*j && *j != ',') {
-      if (*j == 'f') ed = ED_FOIL;
-      if (*j == 'h') ed = ED_HOLO;
-      if (*j == 'p') ed = ED_POLY;
-      if (*j == 'n') ed = ED_NEG;
-      j++;
-    }
-    joker_add(id, ed, 1);
-    if (*j) j++;
-  }
-  const char *c = getenv("BALATRO_CONS");
-  while (c && *c) {
-    add_cons(atoi(c), 0);
-    while (*c && *c != ',') c++;
-    if (*c) c++;
-  }
-  const char *lv = getenv("BALATRO_LEVEL");
-  if (lv)
-    for (int h = 0; h < NHANDS; h++) R.hands[h].level = (int16_t)atoi(lv);
-  const char *an = getenv("BALATRO_ANTE");
-  if (an) R.ante = (int16_t)atoi(an);
-  const char *bo = getenv("BALATRO_BLINDON");
-  if (bo) {
-    R.blind_on = (uint8_t)atoi(bo);
-    for (int k = 0; k < R.blind_on; k++) R.blind_state[k] = BS_DEFEATED;
-    R.blind_state[R.blind_on] = BS_SELECT;
-  }
-  const char *bs = getenv("BALATRO_BOSS");
-  if (bs) R.boss = (uint8_t)atoi(bs);
-  const char *ph = getenv("BALATRO_PHASE");
-  if (ph && *ph == 's') shop_enter();
-  if (ph && *ph == 'p') pack_open(atoi(ph + 1) / 3, atoi(ph + 1) % 3, 0);
-  if (ph && *ph == 'r') blind_select();
-  /* BALATRO_HAND=13S,13H,...: the first cards in hand (rank 2-14, suit SHCD) */
-  const char *hd = getenv("BALATRO_HAND");
-  for (int i = 0; hd && *hd && i < R.nhand; i++) {
-    card_t *c = &R.cards[R.hand[i]];
-    c->rank = (uint8_t)atoi(hd);
-    while (*hd >= '0' && *hd <= '9') hd++;
-    c->suit = (uint8_t)(*hd == 'H' ? S_HEARTS : *hd == 'C' ? S_CLUBS : *hd == 'D' ? S_DIAMONDS : S_SPADES);
-    while (*hd && *hd != ',') hd++;
-    if (*hd) hd++;
-  }
-  ev_reset();
-  has_save = 1;
-  continue_run();
+static int quit(void) {
+  save_now();
+  return np_app_end();
 }
-#endif
 
 int main(void) {
   np_app_begin();
   if (np_save_jump(leave)) return quit();
   g_init();
   art_flush();
+  /* a seed from the clock, then from each run */
+  uint64_t t0 = eadk_timing_millis();
+  R.rng[0] = (uint32_t)t0 | 1, R.rng[1] = 0x6A09E667u ^ (uint32_t)(t0 >> 7), R.rng[2] = 0xBB67AE85u, R.rng[3] = 0x3C6EF372u;
+  uint32_t keep[4];
+  memcpy(keep, R.rng, sizeof keep);
   has_save = save_read();
-  bg_mode(1);
-  bg_reset();
-#ifndef __ELF__
-  test_setup();
-#endif
+  if (!has_save) {
+    memcpy(R.rng, keep, sizeof keep);
+    for (int k = 0; k < 4; k++)
+      for (int r = 2; r <= 14; r++) R.cards[k * 13 + r - 2] = (card_t){(uint8_t)r, (uint8_t)k};
+  }
+  title_sel = has_save ? 0 : 1;
 #ifdef TEST_PHASE
   test_preset();
 #endif
   uint64_t last = eadk_timing_millis();
-  int last_phase = -1, last_blind = -1, last_screen = -1, last_won = -1;
+  int last_bg = -1;
   for (;;) {
     uint64_t now = eadk_timing_millis();
     int dt = (int)(now - last);
@@ -1526,114 +914,63 @@ int main(void) {
     if (dt < 0) dt = 0;
     last = now;
     g_time = (uint32_t)now;
+    tb = 0;
     poll_input(dt);
-    if (held(K_OK) || held(K_EXE)) ui_hold_ms += dt;
-    else ui_hold_ms = 0;
     if (deny_t > 0) deny_t -= dt;
-    if (zone != last_zone || zi != last_zi) focus_time = 0, last_zone = zone, last_zi = zi;
-    else focus_time += dt;
-    focus_shake = deny_t > 0 ? ((deny_t / 50) & 1 ? 2 : -2) : 0;
-    if (screen == SCR_GAME && R.phase == PH_WIN && last_phase != PH_WIN && last_phase >= 0) {
-      S.wins++;
-      save_write(1);
-    }
-    if (screen != last_screen || (screen == SCR_GAME && (R.phase != last_phase || R.blind != last_blind || R.won != last_won))) {
-      bg_for_phase();
-      last_phase = R.phase, last_blind = R.blind, last_won = R.won;
-      cash_t = 0;
-      last_screen = screen;
-    }
+    int bgs = screen == SCR_TITLE ? BG_TITLE
+              : R.phase == PH_SHOP ? BG_SHOP
+              : R.phase == PH_LOST ? BG_LOST
+              : R.table == TB_GOLD ? BG_GOLD
+                                   : BG_TABLE;
+    if (bgs != last_bg) bg_set(bgs), last_bg = bgs;
+    bg_update(dt);
     g_begin();
     g_bg(1, 0);
     if (screen == SCR_TITLE) {
       title_t += dt;
-      draw_title();
       if (overlay) {
-        overlay_input();
-        draw_overlay();
+        if (pressed[K_BACK] || ok()) overlay = 0;
       } else {
-        if (pressed[K_LEFT]) title_sel = (title_sel + 3) % 4;
-        if (pressed[K_RIGHT]) title_sel = (title_sel + 1) % 4;
         if (pressed[K_BACK]) return quit();
-        if (pressed[K_OK] || pressed[K_EXE]) {
-          if (title_sel == 0) overlay = OV_SETUP, ov_tab = has_save ? 1 : 0, ov_sel = 0;
-          else if (title_sel == 1) overlay = OV_OPTIONS, ov_sel = 0;
-          else if (title_sel == 3) overlay = OV_CREDITS;
-          else return quit();
-        }
+        title_input();
+      }
+      draw_title();
+      if (overlay == OV_HELP) {
+        g_shade(0, 0, 320, 240, 0, 14);
+        draw_help();
       }
     } else {
-      ui_update(dt);
-      int busy = ui_busy();
-      /* taps made while cards are still moving are kept (a few, briefly) and
-         played back one per frame as soon as the game is ready; never
-         Play/Discard, never a key still held down */
-      static const uint8_t bufk[6] = {K_LEFT, K_UP, K_DOWN, K_RIGHT, K_OK, K_SHIFT};
-      if (busy && !overlay) {
-        for (int i = 0; i < nbuf; i++) buf_age[i] += dt;
-        for (int i = 0; i < 6; i++)
-          if (pressed[bufk[i]]) {
-            if (nbuf == 4) {
-              for (int k = 0; k < 3; k++) buf_key[k] = buf_key[k + 1], buf_age[k] = buf_age[k + 1];
-              nbuf--;
+      anim_update(dt);
+      if (overlay) overlay_input();
+      else if (pressed[K_TOOLBOX] && !anim) overlay = OV_INFO;
+      else switch (R.phase) {
+          case PH_TITLE_CARD: table_card_input(); break;
+          case PH_ROUND: round_input(); break;
+          case PH_CASH:
+            if (pressed[K_BACK]) overlay = OV_PAUSE, ov_sel = 0;
+            else if (ok()) {
+              cash_out();
+              zone = Z_SHOP, zi = 0;
+              save_now();
             }
-            buf_key[nbuf] = bufk[i], buf_age[nbuf++] = 0;
-          }
-      } else if (nbuf) {
-        int k = buf_key[0];
-        if (!overlay && buf_age[0] < 700 && !held(k)) pressed[k] = 1;
-        for (int i = 0; i < nbuf - 1; i++) buf_key[i] = buf_key[i + 1], buf_age[i] = buf_age[i + 1];
-        nbuf--;
-        if (overlay) nbuf = 0;
-      }
-      if (overlay) {
-        overlay_input();
-      } else if (!busy) {
-        if (pressed[K_TOOLBOX]) overlay = OV_RUNINFO, ov_tab = 0;
-        else if (pressed[K_VAR]) overlay = OV_DECK, ov_tab = 0;
-        else switch (R.phase) {
-            case PH_BLIND_SELECT: blind_select_input(); break;
-            case PH_ROUND: round_input(); break;
-            case PH_CASHOUT:
-              if (pressed[K_OK] || pressed[K_EXE]) {
-                cash_out();
-                zone = Z_SHOPBTN, zi = 0;
-                autosave();
-              } else if (pressed[K_BACK])
-                overlay = OV_OPTIONS, ov_sel = 0;
-              break;
-            case PH_SHOP: shop_input(); break;
-            case PH_PACK: pack_input(); break;
-            case PH_GAMEOVER: end_input(0); break;
-            case PH_WIN: end_input(1); break;
-          }
-      }
-      switch (R.phase) {
-        case PH_BLIND_SELECT:
-          if (busy && V.nhand) draw_round(dt, 0);
-          else draw_blind_select(dt);
-          break;
-        case PH_ROUND: draw_round(dt, 1); break;
-        case PH_CASHOUT:
-          if (busy) draw_round(dt, 0);
-          else draw_cashout(dt);
-          break;
-        case PH_SHOP: draw_shop(dt); break;
-        case PH_PACK: draw_pack(dt); break;
-        case PH_GAMEOVER:
-          if (busy) draw_round(dt, 0);
-          else draw_end(0);
-          break;
-        case PH_WIN:
-          if (busy) draw_round(dt, 0);
-          else draw_end(1);
-          break;
-      }
-      if (S.best_ante < R.max_ante_reached) S.best_ante = R.max_ante_reached;
-      if (R.best_hand > S.best_hand) S.best_hand = R.best_hand;
+            break;
+          case PH_SHOP: shop_input(); break;
+          case PH_LOST: end_input(0); break;
+          case PH_WON: end_input(1); break;
+        }
+      if (screen == SCR_GAME) switch (R.phase) {
+          case PH_TITLE_CARD: draw_table_card(); break;
+          case PH_ROUND: draw_round(); break;
+          case PH_CASH:
+            if (anim) draw_round();
+            else draw_cash();
+            break;
+          case PH_SHOP: draw_shop(); break;
+          case PH_LOST: draw_end(0); break;
+          case PH_WON: draw_end(1); break;
+        }
       draw_overlay();
     }
-    bg_update(dt / 1000.f, overlay == OV_RUNINFO || overlay == OV_DECK ? 0 : screen == SCR_TITLE ? (overlay ? 2 : 8) : 6);
     g_end();
     uint64_t spent = eadk_timing_millis() - now;
     if (spent < 30) eadk_timing_msleep((uint32_t)(30 - spent));
diff --git a/games/balatro/src/save.c b/games/balatro/src/save.c
index 9f12694..c56ca8d 100644
--- a/games/balatro/src/save.c
+++ b/games/balatro/src/save.c
@@ -1,71 +1,17 @@
-/* The save: one record, balatro.sav. A header, the settings and lifetime
- * stats, then the run (only the used parts of its arrays), and a checksum.
- * Anything that does not check out is ignored. */
-#include <stddef.h>
+/* Jokeria's save: one record, balatro.sav (the game's old file name, kept).
+ * A header, the settings and lifetime stats, the run if one is going, and a
+ * checksum. Anything that does not check out is ignored (older saves too). */
 #include <string.h>
 #include "../../common/epsilon_app.h"
 #include "../../common/epsilon_files.h"
 #include "game.h"
+#include "gfx.h"
 #include "save.h"
 
 static const char NAME[] = "balatro.sav";
-#define MAGIC 0xBA
-#define VERSION 1
-settings_t S = {1, 0, 0, 0, 0, 0};
-
-#include "gfx.h"
-static uint8_t *buf;
-static int bufsize;
-static int pos, len, reading, bad;
-
-static void blk(void *p, int n) {
-  if (bad || n < 0) return;
-  if (pos + n > bufsize || (reading && pos + n > len)) {
-    bad = 1;
-    return;
-  }
-  if (reading) memcpy(p, buf + pos, (size_t)n);
-  else memcpy(buf + pos, p, (size_t)n);
-  pos += n;
-}
-#define F(x) blk(&R.x, (int)sizeof R.x)
-#define A(x, n, max)            \
-  do {                          \
-    if ((n) > (max)) bad = 1;   \
-    blk(R.x, (int)sizeof R.x[0] * (n)); \
-  } while (0)
-
-static void sync_run(void) {
-  blk(&R, (int)offsetof(run_t, cards));
-  F(ncards_alloc);
-  A(cards, R.ncards_alloc, MAXCARDS);
-  F(ndeck);
-  A(deck, R.ndeck, MAXCARDS);
-  F(nhand);
-  A(hand, R.nhand, MAXHAND);
-  A(sel, R.nhand, MAXHAND);
-  F(nplay);
-  A(play, R.nplay, 8);
-  F(ndiscard);
-  A(discard, R.ndiscard, MAXCARDS);
-  F(njokers);
-  A(jokers, R.njokers, MAXJ);
-  F(ncons);
-  A(cons, R.ncons, MAXCONS);
-  F(ntags);
-  A(tags, R.ntags, MAXTAGS);
-  A(tag_orbital, R.ntags, MAXTAGS);
-  F(nshop);
-  A(shop, R.nshop, MAXSHOP);
-  F(nshop_v);
-  A(shop_v, R.nshop_v, 3);
-  F(nshop_p);
-  A(shop_p, R.nshop_p, 2);
-  F(pack_kind), F(pack_size), F(pack_picks), F(pack_from_tag);
-  F(npack);
-  A(pack, R.npack, MAXPACK);
-  blk(&R.cash_blind, (int)(offsetof(run_t, end_marker) - offsetof(run_t, cash_blind)));
-}
+#define MAGIC 0x4A /* J */
+#define VERSION 2
+settings_t S;
 
 static uint32_t sum(const uint8_t *p, int n) {
   uint32_t h = 2166136261u;
@@ -74,53 +20,36 @@ static uint32_t sum(const uint8_t *p, int n) {
 }
 
 void save_write(int with_run) {
-  buf = g_scratch(&bufsize);
-  pos = 0, reading = 0, bad = 0;
-  uint8_t head[3] = {MAGIC, VERSION, (uint8_t)(with_run ? 1 : 0)};
-  blk(head, 3);
-  blk(&S, (int)sizeof S);
-  if (with_run) sync_run();
-  if (bad) return;
-  uint32_t h = sum(buf, pos);
-  blk(&h, 4);
-  if (bad) return;
-  ef_write(NAME, buf, (uint32_t)pos);
+  int size;
+  uint8_t *buf = g_scratch(&size);
+  int n = 3 + (int)sizeof S + (with_run ? (int)sizeof R : 0);
+  if (n + 4 > size) return;
+  buf[0] = MAGIC, buf[1] = VERSION, buf[2] = (uint8_t)(with_run ? 1 : 0);
+  memcpy(buf + 3, &S, sizeof S);
+  if (with_run) memcpy(buf + 3 + sizeof S, &R, sizeof R);
+  uint32_t h = sum(buf, n);
+  memcpy(buf + n, &h, 4);
+  ef_write(NAME, buf, (uint32_t)(n + 4));
 }
 
-/* returns 1 if a run was restored into R */
 int save_read(void) {
   uint32_t n = 0;
   const uint8_t *p = ef_read(NAME, &n);
-  buf = g_scratch(&bufsize);
-  if (!p || n < 3 + sizeof S + 4 || n > (uint32_t)bufsize) return 0;
-  memcpy(buf, p, n);
-  len = (int)n;
+  if (!p || n < 3 + sizeof S + 4 || p[0] != MAGIC || p[1] != VERSION) return 0;
   uint32_t h;
-  memcpy(&h, buf + n - 4, 4);
-  if (buf[0] != MAGIC || buf[1] != VERSION || sum(buf, (int)n - 4) != h) return 0;
-  pos = 3, reading = 1, bad = 0;
-  settings_t s2;
-  blk(&s2, (int)sizeof s2);
-  if (bad) return 0;
-  if (s2.speed > 3) s2.speed = 1;
-  S = s2;
-  if (!buf[2]) return 0;
-  memset(&R, 0, sizeof R);
-  sync_run();
-  if (bad || pos != len - 4 || R.phase > PH_WIN || R.njokers > MAXJ || R.ncons > MAXCONS) {
-    memset(&R, 0, sizeof R);
-    return 0;
-  }
-  /* indices must point at used cards */
-  for (int i = 0; i < R.ndeck; i++)
-    if (R.deck[i] >= R.ncards_alloc) bad = 1;
-  for (int i = 0; i < R.nhand; i++)
-    if (R.hand[i] >= R.ncards_alloc) bad = 1;
-  for (int i = 0; i < R.nplay; i++)
-    if (R.play[i] >= R.ncards_alloc) bad = 1;
-  for (int i = 0; i < R.ndiscard; i++)
-    if (R.discard[i] >= R.ncards_alloc) bad = 1;
-  if (bad || R.ncards_alloc > MAXCARDS) {
+  memcpy(&h, p + n - 4, 4);
+  if (sum(p, (int)n - 4) != h) return 0;
+  memcpy(&S, p + 3, sizeof S);
+  if (!p[2] || n != 3 + sizeof S + sizeof R + 4) return 0;
+  memcpy(&R, p + 3 + sizeof S, sizeof R);
+  /* a run that makes sense, or none */
+  int bad = R.nhand > MAXHAND || R.ndeck > NCARDS || R.njokers > MAXJ || R.phase > PH_WON || R.table > TB_GOLD ||
+            R.twist >= NTWISTS || !R.salon;
+  for (int i = 0; i < R.nhand && !bad; i++) bad = R.hand[i] >= NCARDS;
+  for (int i = 0; i < R.ndeck && !bad; i++) bad = R.deck[i] >= NCARDS;
+  for (int i = 0; i < R.njokers && !bad; i++) bad = R.jokers[i].id >= NJOKERS;
+  for (int i = 0; i < NSHOP && !bad; i++) bad = R.shop[i].kind > IT_LESSON || R.shop[i].id >= NJOKERS;
+  if (bad) {
     memset(&R, 0, sizeof R);
     return 0;
   }
diff --git a/games/balatro/src/save.h b/games/balatro/src/save.h
index 8bc727f..a7b7057 100644
--- a/games/balatro/src/save.h
+++ b/games/balatro/src/save.h
@@ -2,13 +2,12 @@
 #define SAVE_H
 #include <stdint.h>
 typedef struct {
-  uint8_t speed;      /* 0: x0.5, 1: x1, 2: x2, 3: x4 */
-  uint8_t pad;
-  int16_t best_ante;
-  int32_t wins, runs;
+  uint8_t fast;        /* quicker scoring */
+  uint8_t best_salon;
+  uint16_t wins, runs;
   double best_hand;
 } settings_t;
 extern settings_t S;
 void save_write(int with_run);
-int save_read(void);
+int save_read(void); /* 1 if a run was restored into R */
 #endif
diff --git a/games/balatro/src/util.c b/games/balatro/src/util.c
index 295c03d..967d02b 100644
--- a/games/balatro/src/util.c
+++ b/games/balatro/src/util.c
@@ -44,7 +44,7 @@ static char *commas_ll(char *o, unsigned long long v) {
 }
 
 char *fmt_commas(char *o, double v) {
-  if (v != v || v > 1.7e308) return str_cat(o, "naneinf");
+  if (v != v || v > 1.7e308) return str_cat(o, "?");
   if (v < 0) {
     *o++ = '-';
     v = -v;
diff --git a/games/balatro/src/util.h b/games/balatro/src/util.h
index 98767cf..89983ee 100644
--- a/games/balatro/src/util.h
+++ b/games/balatro/src/util.h
@@ -3,7 +3,7 @@
 #include <stdint.h>
 
 char *fmt_int(char *o, long v);            /* plain integer */
-char *fmt_commas(char *o, double v);       /* Balatro's number_format */
+char *fmt_commas(char *o, double v);       /* 1,234,567, or 1.234e15 when very big */
 char *fmt_short(char *o, double v);        /* Lua's tostring for small values: 1.5, 2, 0.25 */
 char *str_cat(char *o, const char *s);
 int str_len(const char *s);
diff --git a/games/blockblast/README.md b/games/blockblast/README.md
index 9f14efd..5831c41 100644
--- a/games/blockblast/README.md
+++ b/games/blockblast/README.md
@@ -1,8 +1,11 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Block Boom**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de Block Blast! (Hungry Studio) : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Block Boom">
+
 # Block Blast
 
 Fit the blocks on the 8×8 board; fill a row or a column and it blasts away. Hungry Studio's puzzle for the NumWorks calculator, playing and looking like the phone game.
 
-<img src="docs/shot.png" width="320" alt="A game of Block Blast: a red T block in hand would complete the bottom row">
 
 - **Three blocks at a time**, placed in any order. None of them turns, and new ones come when all three are down.
 - **The game's 41 blocks**: lines of 1 to 5, squares, rectangles, corners, L, T, S and Z shapes and diagonals, each one coming as often as it does in the app.
diff --git a/games/blockblast/docs/calcade.png b/games/blockblast/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..75d2a2802970407e1eb7a537a75a92f63352d817
GIT binary patch
literal 7689
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
VV8-?|@QW9ut7WKJdD|}H{{RCUjVS;C

literal 0
HcmV?d00001

diff --git a/games/blockblast/src/icon.png b/games/blockblast/src/icon.png
index 8868ff0267cdcc11dc8b7ea804bcef3f2a2c1bae..dd0551407bb5b75c4e37479e8e779873a02d912d 100644
GIT binary patch
delta 1221
zcmV;$1UmbS8rTVtBYy;+Nkl<Zc%1E;J&znk5Qd-X?wQ@Q&pvE~157|hf`mj!Vi7oW
zLJBb{A-@13egc00B#4MiU<b&O1ro?0?7+rCXUk`NpL?u#=cBs_X6JNw_RjR|VdP!*
zl}0*gyQ<&!s(Y%cd*scxKOh1sB9vu`s*)rLsv2YW3_=Ka?|(_tbY>p_MNvqSB#mQS
zi;vl7fAOff$+Q8}#J$X-j$^7w(=d46@C@(c;^tLYjU)Wcv>)ae2Rfd&EEfi~xJ8Lt
z4Tb+f<Q6SzHFV)4x3F*`Q>&LF5D`R#5CTE<M75;?ffMY9$=q%BF3<B$#L~p!5EN;s
z>ZXwbNiBIc#(#O=S)2f>iWtGGB4yDy-Z|G+J6A}oV`KLTpI`Zuk1oH@=D=f(jUy%C
zec;@h<LZyU@x!$*`Qp+go;)4mOoyGJigT9TVa6xdukzuARdSvFKaO6Oh#(I9W{Pb0
zICD<1k+!Ok^kC=yfM2iO#;Ic^PgqTpN}Le2M#UIHR(~>jxQ7I#Zw*Fuy0|!HHA}!M
z`ww6|4D`=fw4`x)sw&pPqn%A|eSf>sU?CeRV^#WnMMK>5A!KZ?Z&DN`7$K+<nj+Up
z+yutKXan|t1}$jWdx8l3vT=vhDb`x>AO`#hvV9<L^HD`@@N|#h1154Q&m^vz45V&^
z+lUDyseglzAAQTp<T33&5D+7sUb8ccgUKY36KTWVcu`pBB)$|kuULwkS1h!+nNq>Q
zL1CSzBJ$kS-w-q^pL9<ooyDmtMidbtFLUrFLY$&hHiw0X2wpv+?E<UvQ<2z0l+NN5
z5rebBcQ?P`&qsfdroGnQPF1nS@a~0oFk%QO)_+(wwjQ&yw}mq<sy|fVwcaXV4(f*{
ztN3OWL4m$Yxq9;k_tt;s%*t6b_y}Xc`-1yBcfp=!#ia~)pYZqICTHE`LL`ER0(tqA
zezJ-~=o`T_70%vAkOP7boJvmd)lc8Drl(OOJRWULmPs3_YB{ZE1GfE$HMhanUKx0g
zlYcSsJ-L7=S=eQ-EV(zzDH=Ko7eZXWQFXx<E${NmsUDeEM7s6TPJ{x_`q*=QkdXzA
z3D|RZ!2K-avj;`v>)y59an-OQ?2j|vTRY3;S6A6B0<KFF4fKt0XP9$iFy!Oc&$C^6
zTt{^R1XXU0{=(XXrn3MSd(fj3$HNfVE`Le}Wx#geRg2p%Jy}q;ijv)qKA;v?Kh2#+
z=Tu;*qF6ogb~>>$lXIooKK7`hMwM3M0<zE*%2M3CVkvH3u@pD2Sc;ohEXB<$I@gu~
z@RP!|3$(U7{Pzr3t99WV11D80-a5QG|9}-EtWA2Iu7&f85l$N+mC8pT{*Lc}2Y-jU
z0cmWNMJ~Q|rJlRhX&wS^B$o53qwLsdDqs<YKCoAMF7}hoJ`Q{-+#TlxF^%HtYvb1F
zi3s9756Zwp6g2KY?iejlMS`-O&+4Os6GJln%3G>29lmA&=ouk(X7;Zce4tdJcLE;(
zS?+1$epq_c-cza#Ju9#Jg>n)fEj~C<d^{EW*Y|_}HjeOrUY?s*fzR-swj=9-^YGDI
j=MT7#8@`MpTUXdWAD{h$q)e~J00000NkvXXu0mjfafMZ?

delta 3338
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
UDq$k700000NkvXXt^-0~f+ga=f&c&j

diff --git a/games/blockblast/src/main.c b/games/blockblast/src/main.c
index 97e77c0..a1ac4a3 100644
--- a/games/blockblast/src/main.c
+++ b/games/blockblast/src/main.c
@@ -1,9 +1,10 @@
-/* Block Blast: fit the blocks on the 8 x 8 board; fill a row or a column and it clears.
+/* Block Boom (modifié par Calcade le 19 octobre 2026 : nom et couleurs à lui ; avant : « Block Blast »):
+ * fit the blocks on the 8 x 8 board; fill a row or a column and it clears.
  *
  * Hungry Studio's puzzle as it plays on phones: three blocks at a time, placed in any order,
  * none of them turns; full rows and columns clear together, clearing again within three blocks
  * keeps a combo going, and the game ends when none of the blocks left fits. Its 41 blocks, how
- * often each one comes, its scoring and its colours follow what players measured from the app.
+ * often each one comes and its scoring follow what players measured from the app.
  *
  * Inside NumPlay it draws with the launcher's strips, shapes and fonts (launcher/src/gfx.c) and
  * saves through its file functions, so the game is only its rules and its screen. On its own
@@ -20,7 +21,7 @@
 #include "../../common/epsilon_files.h"
 #define np_file_read ef_read
 #define np_file_write ef_write
-const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Block Blast";
+const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Block Boom";
 const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
 void np_push(int x, int y, int w, int h, const color_t *px) {
   eadk_display_push_rect((eadk_rect_t){(uint16_t)x, (uint16_t)y, (uint16_t)w, (uint16_t)h}, px);
@@ -72,7 +73,7 @@ static const uint32_t pieces[] = {
     for (int r = (int)b_ / 5, c = (int)b_ % 5, o_ = (int32_t)m_ < 0; o_; o_ = 0)
 
 /* blue, orange, green, purple, yellow, cyan, red, and grey for what can't go anywhere */
-static const uint32_t faces[9] = {0, 0x345CEF, 0xF35C17, 0x28CB30, 0x9655E5, 0xFBD008, 0x19C4F0, 0xD53D38, 0x737A9C};
+static const uint32_t faces[9] = {0, 0x5B6CFF, 0xFF8A3D, 0x3DDC97, 0xC86BFA, 0xFFD166, 0x2EC4E6, 0xFF5D73, 0x737A9C}; /* (Calcade : ses couleurs) */
 static color_t shade[9][5]; /* bottom, right, left, top, face */
 
 /* blockblast.sav: the best score, and the game in progress (kept as it is played) */
diff --git a/games/breakout/README.md b/games/breakout/README.md
index 7cf20bd..d760bfc 100644
--- a/games/breakout/README.md
+++ b/games/breakout/README.md
@@ -1,8 +1,11 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Brick Breaker / Casse-briques**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de le Block Breaker de Google : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Brick Breaker / Casse-briques">
+
 # Block Breaker
 
 Google's Block Breaker, the brick breaker you get when you search for "block breaker", on the NumWorks calculator: the dark pixel-art field, seven bricks across in blue, red, yellow and green, bricks that hold a power-up, the big white ball and paddle, your lives as circles and the score in segments. Wall after wall, each one a little faster.
 
-<img src="docs/shot.png" width="320" alt="The first wall, with its power-up bricks">
 
 - **Google's first wall,** then eleven more of the same kind, and after that they come round again, faster, with power-ups in new places.
 - **Power-up bricks,** each with its sign:
diff --git a/games/breakout/docs/calcade.png b/games/breakout/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..06c2b839497994552c4974e36c37bff646b88980
GIT binary patch
literal 2624
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

literal 0
HcmV?d00001

diff --git a/games/breakout/lang/fr.txt b/games/breakout/lang/fr.txt
index a15dcd0..623eb0b 100644
--- a/games/breakout/lang/fr.txt
+++ b/games/breakout/lang/fr.txt
@@ -3,7 +3,7 @@ LV 	NIV
 SLOW	LENTE
 NORMAL	NORMALE
 FAST	RAPIDE
-BLOCK BREAKER	CASSE-BRIQUES
+BRICK BREAKER	CASSE-BRIQUES
 PLAY	JOUER
 SETTINGS	RÉGLAGES
 < LEVEL 	< NIVEAU 
diff --git a/games/breakout/lang/zh.txt b/games/breakout/lang/zh.txt
index fb25c45..e34a7f7 100644
--- a/games/breakout/lang/zh.txt
+++ b/games/breakout/lang/zh.txt
@@ -3,7 +3,7 @@ LV 	关卡
 SLOW	慢
 NORMAL	正常
 FAST	快
-BLOCK BREAKER	打砖块
+BRICK BREAKER	打砖块
 PLAY	开始
 SETTINGS	设置
 < LEVEL 	< 第 
diff --git a/games/breakout/src/icon.png b/games/breakout/src/icon.png
index b624f7f744b164b5f50e5ee7367cbb0455d3d38f..7f0a093e70292741ea59aa88634a6a16613e531a 100644
GIT binary patch
delta 1803
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

delta 3355
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

diff --git a/games/breakout/src/main.c b/games/breakout/src/main.c
index ff0e277..323f63c 100644
--- a/games/breakout/src/main.c
+++ b/games/breakout/src/main.c
@@ -1,4 +1,5 @@
-/* Block Breaker: Google's brick breaker (the game in Search) for the NumWorks
+/* Brick Breaker (modifié par Calcade le 19 octobre 2026 : ses couleurs, son premier mur et son nom ; avant :
+ * l'aspect du Block Breaker de Google), a brick breaker for the NumWorks
  * calculator. The dark pixel-art field, seven bricks across in Google's blue,
  * red, yellow and green, bricks that hold a power-up (TNT, an extra ball,
  * three balls, a wider paddle, a fireball, a laser), the big white ball and
@@ -17,7 +18,7 @@
 #include "../../common/np_text.h"
 
 #ifdef __ELF__ /* app name and API level, for the calculator's installer */
-const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Block Breaker";
+const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Brick Breaker";
 const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
 #endif
 
@@ -26,7 +27,7 @@ const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level")))
 typedef uint16_t color;
 #define RGB(c) (color)((((c) >> 8) & 0xF800) | (((c) >> 5) & 0x07E0) | (((c) >> 3) & 0x1F))
 #define WHITE 0xFFFF
-#define BG RGB(0x1C181F)   /* Google's night */
+#define BG RGB(0x101A33)   /* a deep night blue (Calcade) */
 #define GREY RGB(0x8E8A92) /* the score */
 #define DIM RGB(0x555257)
 #define PALE RGB(0xC9C6CC)
@@ -67,21 +68,21 @@ static color mix(color f, color b, int a) {
 }
 
 /* ------------------------------------------------------------------ bricks */
-/* Google's four colors: the face, the rim, and the icon of a power-up */
+/* four colors (Calcade: the game's own): the face, the rim, and the icon of a power-up */
 static const color BRICK[4][3] = {
-  {RGB(0x5784E6), RGB(0x4B70C3), RGB(0x375491)}, /* blue */
-  {RGB(0xCA423E), RGB(0xAB3934), RGB(0x7E2622)}, /* red */
-  {RGB(0xECC444), RGB(0xC7A63A), RGB(0x8E7420)}, /* yellow */
-  {RGB(0x3B854B), RGB(0x326F3F), RGB(0x1F4A2A)}, /* green */
+  {RGB(0x8E6CF0), RGB(0x7353CF), RGB(0x4E3496)}, /* violet */
+  {RGB(0xFF7A5C), RGB(0xD95E42), RGB(0x9C3D28)}, /* coral */
+  {RGB(0xFFC145), RGB(0xD9A032), RGB(0x9C701A)}, /* amber */
+  {RGB(0x2EC4B6), RGB(0x22A194), RGB(0x146B62)}, /* teal */
 };
 enum { U_NONE, U_TNT, U_LIFE, U_MULTI, U_WIDE, U_FIRE, U_LASER, NU };
 
 /* The walls, 7 x 7 at most: '.' nothing, 'b' 'r' 'y' 'g' a brick of that
    color, '#' a brick in the row's color (blue, red, yellow, green, then
    again), and a power-up in the row's color: T TNT, + a ball, o three balls,
-   w a wider paddle, f a fireball, l a laser. The first is Google's. */
+   w a wider paddle, f a fireball, l a laser. (Calcade: the first wall is the game's own.) */
 static const char *const WALLS[][ROWS] = {
-  {"#T####+", "##+##wT", "#####o#", "###o###"},
+  {"##T#+##", "#o###w#", "###T###", "+##o##T"},
   {"..#w#..", ".##T##.", "###+###", "o#####o", ".#####.", "..###.."},
   {"#.#.#.#", "T#o#l#T", "#.#.#.#", ".#.#.#.", "#.#f#.#"},
   {"bbbbbbb", "r.....r", "r.yTy.r", "r.ywy.r", "r.....r", "ggg+ggg"},
@@ -469,9 +470,9 @@ static void keys_hint(int y) {
 }
 
 static void logo(int y) {
-  /* BLOCK BREAKER in bricks of Google's four colors */
+  /* the name in bricks of the game's four colors */
 #if NP_TEXT_EXTRA /* (another language's name: its letters, a space skips a color as there) */
-  const char *name = T("BLOCK BREAKER");
+  const char *name = T("BRICK BREAKER");
   int w = -3, x, c = 0;
   for (const char *s = name; *s;) w += np_utf8(&s) >= 0x2E80 ? 38 : 18;
   x = 160 - w / 2;
@@ -491,7 +492,7 @@ static void logo(int y) {
     x += 18;
   }
 #else
-  static const char name[] = "BLOCK BREAKER";
+  static const char name[] = "BRICK BREAKER";
   int x0 = 160 - 13 * 18 / 2 + 2;
   if (!seen(x0 - 2, y - 2, 13 * 18 + 4, 28)) return;
   for (int n = 0; n < 13; n++) {
diff --git a/games/buckshot/.gitignore b/games/buckshot/.gitignore
index ab21ce1..93caf43 100644
--- a/games/buckshot/.gitignore
+++ b/games/buckshot/.gitignore
@@ -1,5 +1,5 @@
 output/
 __pycache__/
-# Scenes and sprites rendered from the original game: inputs of tools/pack.py,
-# kept out of the repository. src/assets.c holds the art the app uses.
+# The pictures drawn by tools/conformite/chevrotine_art.py (NumPlay's root): inputs of tools/pack.py,
+# made again from the script. src/assets.c holds the art the app uses.
 assets/
diff --git a/games/buckshot/Makefile b/games/buckshot/Makefile
index e1e53c8..ccf3643 100644
--- a/games/buckshot/Makefile
+++ b/games/buckshot/Makefile
@@ -1,4 +1,5 @@
-# Buckshot: Buckshot Roulette for the NumWorks calculator (part of NumPlay).
+# Chevrotine (games/buckshot): a shotgun duel for the NumWorks calculator (part of NumPlay).
+# Calcade, 19 octobre 2026 : pictures by ../../tools/conformite/chevrotine_art.py, then `make assets`.
 #   make          build output/buckshot.nwa
 #   make run      install on a connected calculator
 #   make check    link the app like the calculator does, print the installed size
diff --git a/games/buckshot/README.md b/games/buckshot/README.md
index b9e92f8..5a3f64d 100644
--- a/games/buckshot/README.md
+++ b/games/buckshot/README.md
@@ -1,79 +1,65 @@
-> **Buckshot Roulette is part of [NumPlay](../../README.md)**, every NumWorks game in one app. Get it with all the others, or on its own as `BuckshotRoulette.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest).
+> **Calcade, 19 octobre 2026 :** ce jeu s'appelait « Buckshot Roulette » et reprenait les images, le
+> scénario, les répliques, les règles chiffrées et la logique du croupier du jeu de Mike Klubnika. Il est
+> devenu **Chevrotine** : un univers à lui (une fête foraine la nuit, un adversaire automate), des images
+> dessinées par un script (`tools/conformite/chevrotine_art.py` à la racine de NumPlay), une histoire et des
+> textes réécrits, ses propres règles chiffrées, sa propre façon de jouer pour l'adversaire et des polices
+> libres. Le dossier garde son nom `buckshot` (et la sauvegarde `buckshot.sav`) pour NumPlay.
 
-<p align="center">
-  <img src="docs/icon.png" width="84" alt="Buckshot Roulette icon">
-</p>
-
-<h1 align="center">Buckshot Roulette</h1>
+> **Chevrotine is part of [NumPlay](../../README.md)**, every NumWorks game in one app.
 
 <p align="center">
-  <b>Buckshot Roulette for the NumWorks N0120 calculator.</b><br>
-  You, the Dealer, and a shotgun loaded in a hidden order.
+  <img src="docs/icon.png" width="84" alt="Chevrotine icon">
 </p>
 
+<h1 align="center">Chevrotine</h1>
+
 <p align="center">
-  <a href="https://github.com/Mason363/NumPlay/releases/latest/download/BuckshotRoulette.nwa"><b>Download BuckshotRoulette.nwa</b></a>
-  &nbsp;·&nbsp; <a href="#controls">Controls</a>
+  <b>A shotgun duel against the Automaton of the fair, for the NumWorks N0120 calculator.</b><br>
+  You, a brass automaton in a top hat, and a lever-action shotgun loaded in a hidden order.
 </p>
 
 <p align="center">
-  <img src="docs/hero.gif" width="640" alt="The magnifying glass, a shot at the Dealer, and his turn">
+  <img src="docs/calcade.png" width="320" alt="Chevrotine">
 </p>
 
 ## Highlights
 
-* **The whole game:** wake up in the bathroom, walk to the club's back room, sign the waiver and face the Dealer over three rounds. Lose in round 1 or 2 and the defibrillator brings you back. Lose in round 3 and you are dead.
-* **Every item:** hand saw, magnifying glass, beer, cigarettes and handcuffs, plus the burner phone, inverter, adrenaline and expired medicine in Double or Nothing.
-* **The real rules:** the same loads, charges, item limits and wire cuts as the original, and a Dealer who decides the way he does there.
-* **Double or Nothing:** pop the pills after beating the game once. Keep doubling your winnings or walk away. Your best run is kept.
-* **The original's look:** every picture is rendered from the game's own scenes, with its dithered, low-color style. The Dealer looms over the table, and every item he or you use plays out with the game's own animations, down to him turning the barrel on you.
-* **Pick up where you left off:** quit at any time and continue the same turn later. What is done is done: quitting in the middle of a shot never takes it back.
-
-<table>
-  <tr>
-    <td align="center"><img src="docs/title.png" width="390" alt="Title"><br><sub>Title</sub></td>
-    <td align="center"><img src="docs/waiver.png" width="390" alt="Signing the waiver"><br><sub>Please sign the waiver</sub></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/shells.png" width="390" alt="The load"><br><sub>The shells of each load, shown before they go in</sub></td>
-    <td align="center"><img src="docs/items.png" width="390" alt="Items on the table"><br><sub>Your items, his, and both sides' charges at the top</sub></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/aim.png" width="390" alt="Aiming"><br><sub>Up for the Dealer, Down for yourself</sub></td>
-    <td align="center"><img src="docs/dealer.png" width="390" alt="The Dealer aiming at you"><br><sub>His turn: the barrel turned on you</sub></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/glass.png" width="390" alt="The Dealer using the magnifying glass"><br><sub>Every item he uses, as in the game</sub></td>
-    <td align="center"><img src="docs/charges.png" width="390" alt="Charges"><br><sub>The charge display</sub></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/ending.png" width="390" alt="The briefcase"><br><sub>Win, and the cash comes down onto the table</sub></td>
-    <td align="center"><img src="docs/heaven.png" width="390" alt="Heaven"><br><sub>Lose the final round and it is over</sub></td>
-  </tr>
-</table>
+* **A night at the fair:** wake up in your caravan, walk down the alley to the striped tent, sign the
+  Automaton's contract on his punching machine, and duel him over three rounds. Lose round 1 or 2 and he
+  winds you back up with his big key. Lose round 3 and the show is over.
+* **Nine tricks:** black powder, monocle, oil can, cup of tea, chain, odd elixir, crystal ball, thief's
+  glove and mirror.
+* **A candle for each side:** every live shell blows out a flame. In the last round, a candle down to one
+  flame turns blue and can no longer be relit.
+* **An opponent who counts:** the Automaton keeps track of the shells, weighs his items and shoots at you
+  when a live shell is likelier.
+* **Double or Quit:** play the gold token after beating the game once. Keep doubling your coins or walk away.
+* **Pick up where you left off:** quit at any time and continue the same turn later.
 
 ## How to play
 
-The shotgun holds a mix of live (red) and blank (blue) shells, loaded in a hidden order. On your turn, use as many items as you like, then take the shotgun and shoot the Dealer or yourself. A live shell costs a charge. Shooting yourself with a blank keeps your turn. Whoever runs out of charges loses the round.
-
-In round 3 the defibrillators are cut once you are down to your last charges: no more healing, and the next hit is fatal.
+The shotgun holds live (red) and blank (blue) shells, loaded in a hidden order. On your turn, use as many
+items as you like, then take the shotgun and shoot the Automaton or yourself. A live shell blows out a
+flame. Shooting yourself with a blank keeps your turn. Whoever runs out of flames loses the round.
 
 ## Controls
 
 | Key | Action |
 |---|---|
-| Arrows | Move between your items and the shotgun; go up to the Dealer's items to read them |
+| Arrows | Move between your items and the shotgun; go up to the Automaton's items to read them |
 | OK or EXE | Use the item, pick up the shotgun, fire |
-| Up / Down | With the shotgun: aim at the Dealer / at yourself |
-| Letter keys (with or without Alpha) or arrows | Type your name on the waiver (EXE signs) |
+| Up / Down | With the shotgun: aim at the Automaton / at yourself |
+| Letter keys (with or without Alpha) or arrows | Type your name on the contract (EXE signs) |
 | Back | Pause menu (resume, or back to the main menu) |
 | Home | Save and quit |
 
 ## Credits
 
-Inspired by Buckshot Roulette by Mike Klubnika. Not affiliated with Mike Klubnika or Critical Reflex.
-
-* Every picture is rendered from Buckshot Roulette's own scenes, models and textures, which are the work of Mike Klubnika, through the Open Buckshot Roulette project (1503Dev).
-* Fonts: Fake Receipt by Ray Larabie (Typodermic Fonts) and Dot Matrix by Dionaea.
+* Game by Mason Chen as part of NumPlay (GPL v3).
+* Chevrotine's pictures, story, texts and rules by Calcade (19 October 2026); every picture is drawn by
+  `tools/conformite/chevrotine_art.py`.
+* Fonts: Nunito (The Nunito Project Authors) and Archivo (The Archivo Project Authors), SIL Open Font
+  License 1.1 (`LICENSES/` at NumPlay's root).
 
-Made by Mason Chen as part of NumPlay.
+A duel game in the spirit of shotgun roulette games; it uses nothing from Buckshot Roulette (Mike Klubnika,
+Critical Reflex) and is not affiliated with them.
diff --git a/games/buckshot/docs/calcade.png b/games/buckshot/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1462914e7c5c64310706d97a046c545b987c4d7
GIT binary patch
literal 15138
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
Q4FCWD07*qoM6N<$g1)hS9smFU

literal 0
HcmV?d00001

diff --git a/games/buckshot/docs/icon.png b/games/buckshot/docs/icon.png
index 79edc74e64b975eebb9e43a0d9e792b8df87109a..e75808947cbe4d001dc4eae81fb77d1bf6e9dbe8 100644
GIT binary patch
literal 5908
zcmXw7WmweB+x@M8C?TQJB_Rk%gVG>KNUwyn0V3V7bSOwjhe}K5uJi&+h;*~S(x5bp
zgut@G!tM*t|9U^n%%{1onS0KebIu*Dud7Z;#zY1H0HvmeD)@4Bxg2gcu3yfCk58!q
zfNow>RoM`dwVQ38$YST+8?rdzId5rSWLd=xvzbkH8cdH94t*b+nPT|IP3M~0{W8v{
z{Dpl*dFP?AHSA#iq;jRCkHAwN?hhZh<z|eX_zhXKHAv=3qMPQ@ZNrk{A`<K7EG>QN
zWm{y$gZh6;m#8m_x7M~a>moOc?3!^q_+}g~WHVUdBgI_3qY3Ec{!%NbW0-jlP0Aod
z)k@D1)rlpl++}Vi$!ni%*E}J;rS#(gAkr$5HZzCkAOp4pFre>kAzT2BK|Xu^nIOQs
zabNai!rKB+JDcXkm-Np)I#*jk=;NvzT(gf$_%0s6k)!$M#J`Tu%etg4ST2f!fk>Ph
zEpAtVvYiH`jp|9b_Bb9V7s@P6MU+*U>re4=`QIbQF+6@gr)Bl|hSzLL%2IXaqEH9h
z$p^r7wq_?AAn84o2wjECg7P&IMGLv=SJJ{z8nra`TwcY&_p6sj%q^`bmBs}?BCT#r
zp=Qq$rIsr})M~%;sgffk3Pi-X)mal{=a$Azz?gENlAr4Sh~xFP1-)K`d~f+7KY%j+
zcpFz`O+HKl=<*+u$CtDw;UT)efsW=d3_B_09l?(6<H<ga;(oqf=7g=5=nB#k4P{n1
z(+r&;FJS`?R2c1**FM@kV%c8a0#XslL=SBkYMeeyF@<MIh*_B66Q<*@jZtJEMb-CS
za<v4x^yQ6&n)%=oMgA_I$s68fGv?o-xJ_1bUBHoc{&?ukXo!c47;@+7n7?&UcQF0S
z)p7%X3Ex=)u=)S3rFw$H_R~xktS$O&x=>xdrMyB%>!T&CW@z~|7U)=8fKySchLQgo
zi})&-<U~Bp)QNM@nKhPA8nGZNqccs^RCX%s8;~*ZWk#x)BtBO^Gf7ZIS8~XSbXcP)
zZ~MBrIgy95OR0pa=~IFDyTeF<z1F`90NboUU+sPx7gYTLn@@Y|QGqKF-(6h$Es^O;
zNznbby@=zcu@&XwkgrP<&EHvavzSTqmMVGYW)~FMhXA*O<6uBey--WV=11B*eXM_w
zx*uQXn+1&%yXuBY(p#*`U?oc|Uneyi^JAS>Xx8SAUuMiBKx8X=X@=sdFbmk;L#b#`
zB0;tQj4_O4dv~_#M$jOpj<~k|`kNu~J0wK5Lj{LFj5c=lL`xqkoHtWpLE2M`qeLHM
zIy?Iw-SD=#9?7SopP{W7o!?!Zh{~mq4d&)rGI=l|eCFR~>G~JvTaX^{)?IY+hmKQi
z-*)F&fslWx{Kvm-fFB|0S!3Apxm?E%6f!-W$OX0Q&$QZVA<Z-7b0Ix=UyQcj<GCo+
zCEKb>YBzLgnB0L;RMTg$M10rG{N+MgN~eWYiihX$jJoGjZMlwb(ZnqY^4M!dUHFn8
z4%a$;@X0ZybGr3tX{E5Rr_SV;N6D9ojMP6FUh}8Y=ii&QFn{C=`vnE#G!Wzl9Loag
z7759lsv|mp@)~b<sZi>MvOv+1cea+!<{69WE*FUjL&R%)clb?@E{vdG()%w3M#~<o
z(_wpZCG$7T`A5$P;qbIJJ@sy@qsi6B1y`3TtK}mieq~qD7{`*5uU)Pk5cpH6a6oF*
zn|!urs`@q$CFf_wqTHYLoBCy@?1ehbBajZkGGyNz^Lo^d!GNMg0vP|>KUItuwTJrS
zf^x&$O3XSk-_4H41;o7;)+}agfPXH`{LIs)iw;=3+L6v*5D%&o{kkirBNbj5l$zY;
zv;b!ehFg7m(cG}vcc_Iv%JiCbsnt;<w%HEY-cPzjoW1+{Z_ebnJVD{vqLUm;7p`-U
z9X(yGLaDC$;eN(9h=9sqJ2rbyh=92oR1t=KSX^jO5N^ud-1R-nwWfrsPSM_U-iRFR
z^k7_k1+E>GV2Th(hsLQF>pBwH{FiOzpXz?5tmlefqaWdXq*5+1;K06WLi4DU>qOEv
zE@d*X?s&{op1k$NaRYtgnvpbAvzHNUJFvmDQ)_wrI5Vu~cnO88%ZkbJPZnx6v|la#
z#<k_3M~&^7A_D&D8jKG9vZXg&tesCw^$lX*ULJioxIw#}E4|{M+N_l(fI1$|{VeBl
z?;%ekr#fr@WMu@p-P0*v&+fNHMv}8H=C1p<llD9qbSoXa$&34HuUzv^+Sh$BHhcPv
ztw!+@58z_MCa|N=r=dQ%g?^h{H3{L6_YZ)#66SUR%G7^)Q70#|)?{L)&_b;6zhrOm
z67}m(m~oDvgH-j#6@8xD^%ZQ5+WSx9;cP`m97gvyT?Sn<DY>bfDo^<VWo|#4VU5Ef
zH0AHGlq9cL*ZWl|-+3WoR~Zvp;fRsFjR%}o&N;*{wQDnU|Al`?XC1faGuCI~plO77
z!?efC!M!Z*^3Oz9oS>A~1`~FiPBqjer86olk4iug+qdjM33GC^gEaD?UiGsy|Lo^s
zpSE3xhwT+*eCzb5_#R-9GyHMWcj}kB;Um#<%b$cXro}<ZYyD>o08!3C+birdU_jS;
z#eXq>eXd>IMS9y_#*WRdnir!~*u6^rG1PcHE4^fa+M)2SH(8D4;^#2#iJg^uKJG<>
zD2l{7o`#d+T)o6sv(hD*Vn-C|j{tq252VR4?G{4+A$xMQhL3gX&Q>22k_Hp`yOGEZ
za$*Y<XY{VirO`1v+>3s~SVkhiVz|Z9o%+g4u|*{tYo|YXQm|_MWbvC|q=+{9xliyn
zj&ydtRwi2$bnd4USCYIBGcQ$iB4b`Ft|RjoYTDGVs-AAh$i?@dTTt@$R6I=RS!+U4
zK8L%GGCFTEusZQhx!5Ka8+|M(T7Y3;eoKC*99OeE4Pq)iX8ce*+8->=_l38Wxk<OY
zbx-)ku85{_ekH=!x&3^<VxR$>99)IkT`SyjboA~qHD?(=374xl5-Xtl{G|Lf*my(<
zg?+bfu{N3FwRGVghT^@+RT0jMtBC*9rSo1a*>y$~q@>(R%%j&V<^x6>@&h;P7Y6zg
z4-!v{w<A2VBiV9~Ccuu#6sAFFO<_No<ofRNatk}}+=b2J?C?DA_pfi7$qIT4^v2%^
z*NxXQ>L3Ij$^bpQ>+qcz+tRZ1d=WFBDj1K!RS9n4;XEcCNk`AY34gQd1n-oQbeohp
z_*m^7MVfcjxb5g9GvM?HhjL>BqZNF#)-5U(D5GR-wd}+C4*d#CnPQcT!~vB?R}>C&
z6E+9AFb9<mw_Xb2KVhKsB(}R$w76m52^haim)d}gQN1D_LPDy><GNY(A(Q$Rx46(m
z&f;Tn@i^jE%O>t=X*Yeu4H*7O;YhKodlb6;Ih}!d;>GY|2mZyME{U-+&Sq85A5f4}
zV*DY<u<Bd|qK^J(t~n*hD+Zqvy}6@#+|ZEfF73l<yu63Gt=`1bgu|MoJ@k#L;n-to
zSz+WC6ODKt<~|<1lh3iHQG;-6n`u!SZUS?+oUZ4zX7;9VR2_2!auhs{;MUsdJuSXs
zkX4J9cQEG{bDE~u6jOdPBl6_lIFqa|#;POUO)nR88?L`30;~9$EKXyHSX63U(y&%<
zlDd=pL=CMc6TkjVLHE1fFMuI0bbDh83)Yb|L-q~?wt)cIoa_l(J!d%~fx#X=0WDt3
zX)ZQ<Ey0W&H8TrV3*6CRwb=?}LN9)+ZntKwKfX*H860RP$S5B3C8f60TnlZ$ZuYQ=
z+>sx->}>uNw$Pv>$eV=rz0JFJ8ho6r7BEcaL2h3rmi9hrqij1XOmN_g?W*)bnV$>`
zzC5}s5pSTrp=7G(W=jlXryEqOE|nT;{&enO3K{oQyc^py*h}(S{r*~KEx8B&tfDaE
z^iLMY>49?f2dBiM@PC~uw6aIlRIPNO;|A5AK2Z$52-&?Ay)=gnM|5sa43G<hbpx)D
z#o$h_J7Jw==AY)H(cNKhtM*({RM(}|KbFNLXs^3~7l8X@L-Jtr{HW7hHo73k<<Y_m
zf!?C_9oH73&=&kZ6~N-CXC72KU34*;1ECGw58Q)+AbY>GfWW^=^dLBa%8IlD4T>9x
zu_1$$%{0-OGQ(U0_EHVM#wc%}$Y07ZUp;l>koUEk(oElbI&H4l6rcKHjgX_?Ou!zY
zRvvJg50(UqYP?Q=>jmBnEwMhQ1J;u{{_uW8H>d4bVD<t)|5Dm<EP(7lCv)Zv<XcQr
zW8jNKI7SCX`fG4M2|P9WCuQdAe!H9Y2s2IBSA06A8JU)b^n&h4UCC{;4P%)O<^9<P
z(=K?Gx#~0AX0J_LHr4q!DF}X=o(&A`#IP?1Y%v21kVPrLC7}IZzd{h97kFGS?VQft
zjE=_zvxidJ{;gO<O**XQ$eeiDuvhAVzPqhH1Qrfk+KD>EL+~X43zEmowatn%nYV`*
ztmoza;7XUADkLc79kWAGXs|#f3|10A0&0phsd34EaUY5R7j`OGQlihYY2_vN2Ql&T
z0s0N2tk-@yw}j{k<%#l5Dck%0;u-Ialp+IvRO`NmoJ1frlIR}4JxbYJFigELvdk{`
zs^V}|HW`+2f5!SgX^6tv3M78#Yxm~0s`;0xSFT}JZZGQyA%U+h-1#Ao%NI$Y4;J*F
zeWH>mTJjcBn`IaoVb_Xj!wv*L-TT8>ohT?6l?pHC#ElNcC`?ZZ=9#4qd11g@@NW%$
z#U}!CT)WyZrx8u5kuLY&KXh5Bn#9Qao7(<UxLyAR5-ZodqV~QJYs@_zp1gKzyyD@(
z8$b?zqy|V?)N77B-*_QN=6a5#Z@b=s!gP{XOi2PP5Hn+Gh2wuApzo(`3BUn{M0v~E
z%)02C#(9|ET2MV)?i>bGLT|w4e2O%R?oM%)l+cHakYBKQUc##Td60j0sMP#S%+5})
zGCOc*GR0}P!ie#QRI+?4UTaj5q+<_90&4%;woIH?DA|s`aMS}tP6tAW4$Rv*lX@?4
z^R8MTa$P|$<OBvVEZzf`6B=3ohF+A0<hE(U@@bbf;I>9eAnF)-$m!g+ec}kb8yem^
zdKe!?-r({ce8sL<S80Q_DQ2<Gy_pBnB#muqHU4<~?@eGvivJ8*#x;8FU~8Er@kC}4
zMbW2mUT;l1IEWC;9geT)qVwCK`K_r4G4-f!KmVaf{7Z5_m=yTwddD%ukbZt6i2z{=
zRavH+-z=utUWT@GKRG(HZe<Q78jUiP_B&6M9~WEhIQ@3@H#+0tf@bz4S@0l4n)Or6
zo7UrjJ3wzwgfDR!yk|Tv9AOSib1uvJlx(Iy+PFS$Bv3<Ob*1G#G2#LH6GnN|*3w{j
zB0w>CjlI6zj0DDiG25gGnZxZZ-Rgi5YHZTu+0TW561}K8w9Vv{MDy7Hcy-tey`4Bf
z`NAbA2+UQ?lRZF~sO6N*$uPJW(&}L}6AJUYUD=sP`L32R!+MFo@dVo+=G$tT=!>I#
z{a!Bk*>USOW0RF~nD~sa$qYib5GA|B(eP~0@}0J$@d%=;6k-Kt*O@rAYP{EIglGSz
z#kRiw;4n)lX{c6mHa$aYP&O8<%yCgpuq=@qD(CM)OmpVc4|Qf8j(~<oJ*SW>q&3+&
z>FMaK7aqY&r}_UgVd+di5DRB#+tPEI-2)}GT5lYNF=B;S_KatLtY3#7n_g(ROeBql
z%_$9%REO=se?Xc|W!4BYAC5O?bEE2H3TVbjrUf+~SmoY}fJuZ)yR>hOX9=0hkh^DN
z;_FDyvvzh$dY;KxKU`d*_FvbqUWts`ILz;#>+_&^mj1A?!EpDZ9n#T8Bl&3h7Foi)
zPXuIvYNWhT31<oK*pcemrI*jR4A!4@%MA;^=DbB6ct|r&tk}~xmP<e!)F1<G?1K$k
zU%f+28{<}`UFYs0H|}zIu&a1vkepJE6Oo>M=(Y4rJLoJ>PmV&o5YXSa{QF{Pe7~8z
z6YMg0&GhqI(R=8u9C1evrc=DFW#6qA_b*brHScs+JHy;T7c!JDDLewT>%)p${rpw>
z@5nfprf~TD{B+HG^$X!x2GswqDGfUI<v%fIGw{+5NkB{S2%~dt&1xr7q5dzcxri!=
zk4;?C`Jnr)d0dld6|?h#%ugm+E>VxZF%%UpxZLS&)*xD5;bzt9sFmjQ`!V3~_qz!{
zZJd-W7rrgJzaD@XGYg{VP140*dZqi`OU7%y7a>bfzDkb5owHQ>ZU_M&e`arFC8kHL
z-+k)(i`$MDbCjJER&soIZLszhMdl)~&^l%|TGe!~o0((N-V4{NoDmDe`m)O}G)j}E
zlK%3|H%AkAt<o7%w^KUbha4kRbF-zn&TN~w!O)O+w5@DE)-5ZXq~y=XOT1|1+>WpY
z9jFjo0A8*r&WhwR1LKiU9gKqo@4Fkw;`=<L0q+V73k1@h>eYDPypHQO@X1DN71b!&
z<mrvfi<ElnA=ZML4Om9YqS(d;VBN`w;N8uCGorhVEV<^1!9lC$CPZ$>QBlN2$;Z4k
z-Z#K^Ehp+G-$^UR)5dm#f4f7E?)K44*RD|-US}tHEEC}MD0DNuf#`#QoOz4e9vw&}
z*__%&HygngdMeG>6p_D1on=aG?>-#Lu{S0xL2q{9mf2Xk<Xh46ub0R(n$^H&j@aXX
z_wdW8JTHNsv!C(H)SP7`{LO7-?p);%LxJPkc?Yy{XnI02*|d8goa-J)c`}gXWt(Zp
zo&S<_2=1r6C*Znto|ACd-5Hn$b@mxFX?5|J#3uMQRUbkH5I<nCY?88E$l0#SF6H>>
z?~J{P5dI4tA&oRlPx!%OUJ-0(exqVbL5;z7ec+4Z>chG%_Y&q6yG*MwZ<<Pl5`i(R
z3D;n$fTdKz-v!U>obtkeo1_E>_t}jOs$RVFt^bbU>rp~_Fqs5X03B>R#0HY(flCzt
zee7lsVA7ozRl3?c5|h?QW2!&uQJ7{FWOQ3TttJDi8bD%JwBTvxZVuSSy`f-LMyH~m
z?~zRn>)&nijz{T@&kf!~k2jF1-;XF)pnvR<1KU|Mt+LNd2*3L_KLgKlBxUmK{?x@>
z3D6ewZ=4tS6L6J}4s%u>u)m~lAp-)a_JgQ@Rhj$r-*ov4TD(?8<Bqa`%85w(sk=Kx
zbMjE<7^1wVB7ZVESNUfe8!<dtp>vKiighlNkc7G$L&mFP%%+2Co9E+hXBwA)MeoP+
zr~j;_{fcO~2X^MUvxYMO!zAWk&C-|E$_Q`jZTq{$<!iLSBfCbvh_KNWNsQ(TXnj<5
zsQLSoL}l*18w&dhHWbPV%el0+tg2ayXQJ5u?;x5~GF?b0HR&(ie8|n9Gg-LT8>mA4
z97$t7l}4dODGiPAgEyBWIydk$4mnI(bn?YUhqs(&1$U*i(nm|pUO1$C<c$gNdpcb2
zfAK}3mGDK)&QG0K`Vk9V&bEY;t;UWzZ3|tukv^=u;wXG<B56eM?zom-!4#{Pw}5!u
zNr2d!N_GvIH=TSk9Oi^ofNGa8wCW*uD*x%qBzlV|4Sbf5-ITv|5SFQU!mXslVM~?2
zbpgC$Sh}WPspoX96xGWb8Ux+mE$5v^VNa&^*DJgjx1t=6us!jzX-NJR%Eu7c!4ihK
zE5z6GDRppwW<y-0p)~~ap>Do;1VJ7idV!Gy5Ek@S5~4zM$-B9P{NqN^D(t=!aol1^
zLvbZnUtC5w;<XOC`cvtosc=+L(MA=`#n61<osN6{RyneP3@?$4Ar!wdg#(MO+a1-(
hvs(VXGW2-*#i&>30o-rpF1y`;=2Kl&=#!V>{|6Fe(oX;Y

literal 4172
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

diff --git a/games/buckshot/lang/fr.txt b/games/buckshot/lang/fr.txt
index ed32915..d1ea1a7 100644
--- a/games/buckshot/lang/fr.txt
+++ b/games/buckshot/lang/fr.txt
@@ -1,102 +1,98 @@
-# Buckshot Roulette in French: the English text as in the source, a tab, the translation (see tools/lang.py).
+# Chevrotine (games/buckshot) in French: the English text as in the source, a tab, the translation (see tools/lang.py).
 # The game's fonts are capitals only (accents drawn over them): translations in capitals. Hints and
 # dialogue: 45 small letters across at most; the statistics' labels keep 20 letters.
-HAND SAW	SCIE À MAIN
-MAGNIFYING GLASS	LOUPE
-BEER	BIÈRE
-CIGARETTE PACK	PAQUET DE CIGARETTES
-HANDCUFFS	MENOTTES
-EXPIRED MEDICINE	MÉDICAMENT PÉRIMÉ
-BURNER PHONE	TÉLÉPHONE JETABLE
-ADRENALINE	ADRÉNALINE
-INVERTER	INVERSEUR
-SHOTGUN DEALS 2 DAMAGE.	LE FUSIL INFLIGE 2 DÉGÂTS.
-CHECK THE CURRENT ROUND\nIN THE CHAMBER.	VOIS LA CARTOUCHE ACTUELLE\nDANS LA CHAMBRE.
-RACKS THE SHOTGUN.\nEJECTS CURRENT SHELL.	ARME LE FUSIL.\nÉJECTE LA CARTOUCHE ACTUELLE.
-TAKES THE EDGE OFF.\nREGAIN 1 CHARGE.	ÇA SOULAGE.\nREGAGNE 1 CHARGE.
-DEALER SKIPS THE\nNEXT TURN.	LE CROUPIER PASSE\nSON PROCHAIN TOUR.
-50% CHANCE TO REGAIN 2 CHARGES.\nIF NOT, LOSE 1 CHARGE.	50 % DE CHANCES DE REGAGNER 2 CHARGES.\nSINON, PERDS 1 CHARGE.
-A MYSTERIOUS VOICE GIVES\nYOU INSIGHT FROM THE FUTURE.	UNE VOIX MYSTÉRIEUSE TE RÉVÈLE\nUN APERÇU DE L'AVENIR.
-STEAL AN ITEM AND\nUSE IT IMMEDIATELY.	VOLE UN OBJET ET\nUTILISE-LE AUSSITÔT.
-SWAPS THE POLARITY OF THE\nCURRENT SHELL IN THE CHAMBER.	INVERSE LA POLARITÉ DE LA\nCARTOUCHE DANS LA CHAMBRE.
+ONE LITTLE FLAME LEFT ...	PLUS QU'UNE PETITE FLAMME ...
+HMM. I SEE ...	HMM. JE VOIS ...
+UP: HIM   DOWN: YOU   OK: FIRE	HAUT : LUI   BAS : TOI   OK : TIRER
+A BLUE FLAME ...\nIT WILL NOT COME BACK.	UNE FLAMME BLEUE ...\nELLE NE REVIENDRA PAS.
+IN THEY GO, ONE BY ONE ...\nNO PEEKING.	UNE PAR UNE, ELLES ENTRENT ...\nINTERDIT DE REGARDER.
+AND NOW, WHICH ONE COMES FIRST?\nNOBODY KNOWS.	ET MAINTENANT, LAQUELLE D'ABORD ?\nPERSONNE NE LE SAIT.
+BLACK POWDER	POUDRE NOIRE
+MONOCLE	MONOCLE
+OIL CAN	BURETTE D'HUILE
+CUP OF TEA	TASSE DE THÉ
+CHAIN	CHAÎNE
+ODD ELIXIR	ÉLIXIR DOUTEUX
+CRYSTAL BALL	BOULE DE CRISTAL
+THIEF'S GLOVE	GANT DU VOLEUR
+MIRROR	MIROIR
+THE NEXT SHOT\nHITS TWICE AS HARD.	LE PROCHAIN TIR\nFRAPPE DEUX FOIS PLUS FORT.
+A LOOK AT THE SHELL\nWAITING IN THE CHAMBER.	UN COUP D'ŒIL À LA CARTOUCHE\nQUI ATTEND DANS LA CHAMBRE.
+WORKS THE LEVER:\nTHE SHELL IN THE CHAMBER FLIES OUT.	ACTIONNE LE LEVIER :\nLA CARTOUCHE DE LA CHAMBRE SAUTE.
+A WARM SIP.\nONE FLAME COMES BACK.	UNE GORGÉE BIEN CHAUDE.\nUNE FLAMME REVIENT.
+HE LOSES\nHIS NEXT TURN.	IL PERD\nSON PROCHAIN TOUR.
+HEADS: TWO FLAMES BACK.\nTAILS: ONE FLAME LOST.	PILE : DEUX FLAMMES REVIENNENT.\nFACE : UNE FLAMME S'ÉTEINT.
+SHOWS ONE OF THE\nSHELLS STILL TO COME.	MONTRE UNE DES\nCARTOUCHES À VENIR.
+TAKE ONE OF HIS ITEMS\nAND USE IT AT ONCE.	PRENDS UN DE SES OBJETS\nET SERS-T'EN AUSSITÔT.
+TURNS THE SHELL IN THE\nCHAMBER INTO ITS OPPOSITE.	CHANGE LA CARTOUCHE DE LA\nCHAMBRE EN SON CONTRAIRE.
 SHOTGUN	FUSIL
-SHOOTING YOURSELF WITH A BLANK\nSKIPS THE DEALER'S TURN.	TE TIRER DESSUS À BLANC\nFAIT PASSER LE TOUR DU CROUPIER.
-THE DEALER'S ITEM   DOWN: BACK	L'OBJET DU CROUPIER   BAS : RETOUR
+A BLANK ON YOURSELF:\nYOU PLAY AGAIN.	UNE VIDE SUR TOI :\nTU REJOUES.
+HIS ITEM   DOWN: BACK	SON OBJET   BAS : RETOUR
 OK: USE   BACK: PAUSE	OK : UTILISER   RETOUR : PAUSE
 OK: STEAL	OK : VOLER
-SECOND SHELL ...	DEUXIÈME CARTOUCHE ...
-THIRD SHELL ...	TROISIÈME CARTOUCHE ...
-FOURTH SHELL ...	QUATRIÈME CARTOUCHE ...
-FIFTH SHELL ...	CINQUIÈME CARTOUCHE ...
-SIXTH SHELL ...	SIXIÈME CARTOUCHE ...
-SEVENTH SHELL ...	SEPTIÈME CARTOUCHE ...
-HOW UNFORTUNATE ...	PAS DE CHANCE ...
-\n... LIVE ROUND.	\n... BALLE RÉELLE.
-\n... BLANK.	\n... À BLANC.
-LET'S MAKE THIS A LITTLE\nMORE INTERESTING ...	RENDONS ÇA UN PEU\nPLUS INTÉRESSANT ...
+THE BALL STAYS DARK ...	LA BOULE RESTE SOMBRE ...
+THE MIST CLEARS: SHELL 	LA BRUME SE LÈVE : CARTOUCHE 
+\nIS LIVE.	\nPLEINE.
+\nIS BLANK.	\nVIDE.
+A FEW TRICKS TO SPICE\nUP THE SHOW ...	QUELQUES TOURS POUR\nPIMENTER LE SPECTACLE ...
+ ITEM EACH.	 OBJET CHACUN.
  ITEMS EACH.	 OBJETS CHACUN.
-MORE ITEMS BEFORE\nEVERY LOAD.	PLUS D'OBJETS AVANT\nCHAQUE CHARGEMENT.
-4 ITEMS EACH.	4 OBJETS CHACUN.
+AND A FEW MORE\nBEFORE EACH LOAD.	ET QUELQUES AUTRES\nAVANT CHAQUE CHARGEMENT.
+THREE TRICKS EACH, NOW.	TROIS TOURS CHACUN, MAINTENANT.
 OK: TAKE AN ITEM	OK : PRENDRE UN OBJET
-OUT OF SPACE.	PLUS DE PLACE.
+NO MORE ROOM ON YOUR SIDE.	PLUS DE PLACE DE TON CÔTÉ.
+THAT ONE GOES BACK IN THE BOX.	CELUI-LÀ RETOURNE DANS LA CAISSE.
 OK: PLACE	OK : POSER
-THE RULES ARE SIMPLE:	LES RÈGLES SONT SIMPLES :
-SHOOTING YOURSELF WITH\nA BLANK SKIPS MY TURN.	TE TIRER DESSUS À BLANC\nME FAIT PASSER MON TOUR.
-SHOOTING THE DEALER WITH\nA LIVE TAKES THEIR LIFE.	TIRER SUR LE CROUPIER AVEC\nUNE BALLE RÉELLE LUI ÔTE LA VIE.
-WE WILL PLAY A SERIES\nOF ROUNDS ...	NOUS JOUERONS UNE SÉRIE\nDE MANCHES ...
-UNTIL WE REACH\nTHE FINAL SHOWDOWN.	JUSQU'À LA\nCONFRONTATION FINALE.
-THERE, WE WILL DANCE ON\nTHE EDGE OF LIFE AND DEATH.	LÀ, NOUS DANSERONS AU BORD\nDE LA VIE ET DE LA MORT.
-WIN, AND WALK AWAY WITH\n400,000$ IN CASH.	GAGNE, ET REPARS AVEC\n400 000 $ EN LIQUIDE.
-LOSE, AND WE SELL YOUR\nMANGLED CORPSE FOR PROFIT.	PERDS, ET NOUS VENDRONS\nTON CADAVRE MUTILÉ.
-SHALL WE BEGIN?	ON COMMENCE ?
- LIVE ROUND. 	 BALLE RÉELLE. 
- LIVE ROUNDS. 	 BALLES RÉELLES. 
- BLANK.	 À BLANC.
- BLANKS.	 À BLANC.
-YOU KNOW THE DRILL.	TU CONNAIS LA CHANSON.
-LONG LAST, WE ARRIVE\nAT THE FINAL SHOWDOWN.	ENFIN, NOUS VOILÀ À LA\nCONFRONTATION FINALE.
-NO MORE DEFIBRILLATORS.\nNO MORE BLOOD TRANSFUSIONS.	PLUS DE DÉFIBRILLATEURS.\nPLUS DE TRANSFUSIONS.
-NOW, ME AND YOU, WE ARE DANCING\nON THE EDGE OF LIFE AND DEATH.	MAINTENANT, TOI ET MOI, NOUS DANSONS\nAU BORD DE LA VIE ET DE LA MORT.
-I BETTER NOT\nSEE YOU AGAIN.	J'ESPÈRE NE PLUS\nJAMAIS TE REVOIR.
-CAREFUL, NOW ...	PRUDENCE ...
-VERY INTERESTING ...	TRÈS INTÉRESSANT ...
-UP: DEALER   DOWN: YOU   OK: FIRE	HAUT : CROUPIER   BAS : TOI   OK : TIRER
-ARE YOU READY?	ES-TU PRÊT ?
-I INSERT THE SHELLS\nIN AN UNKNOWN ORDER.	J'INSÈRE LES CARTOUCHES\nDANS UN ORDRE INCONNU.
-THEY ENTER THE CHAMBER\nIN A HIDDEN SEQUENCE.	ELLES ENTRENT DANS LA CHAMBRE\nDANS UN ORDRE CACHÉ.
-CONSUME PILLS?	LES PILULES ?
+WELCOME TO MY LITTLE SHOW.	BIENVENUE DANS MON PETIT SPECTACLE.
+ONE GUN. RED SHELLS ARE LIVE,\nBLUE ONES ARE BLANKS.	UN FUSIL. LES CARTOUCHES ROUGES SONT\nPLEINES, LES BLEUES SONT VIDES.
+YOUR TURN: AIM AT ME,\nOR AT YOURSELF.	À TON TOUR : VISE-MOI,\nOU VISE-TOI.
+A BLANK ON YOURSELF?\nYOU PLAY AGAIN.	UNE VIDE SUR TOI ?\nTU REJOUES.
+A LIVE ONE BLOWS OUT\nA FLAME OF YOUR CANDLE.	UNE PLEINE SOUFFLE\nUNE FLAMME DE TA BOUGIE.
+NO FLAMES LEFT,\nAND THE ROUND IS LOST.	PLUS DE FLAMMES,\nET LA MANCHE EST PERDUE.
+WIN THREE ROUNDS,\nAND THE CHEST IS YOURS.	GAGNE TROIS MANCHES,\nET LE COFFRE EST À TOI.
+LOSE, AND YOU STAY HERE\nAS MY NEW SPARE PART.	PERDS, ET TU RESTES ICI\nCOMME PIÈCE DE RECHANGE.
+LET THE SHOW BEGIN!	QUE LE SPECTACLE COMMENCE !
+LIVE: 	PLEINES : 
+   BLANK: 	   VIDES : 
+YOU KNOW HOW IT GOES.	TU CONNAIS LA CHANSON.
+THE LAST ROUND.\nTHE BEST PART OF THE SHOW.	LA DERNIÈRE MANCHE.\nLE CLOU DU SPECTACLE.
+FROM NOW ON, A CANDLE DOWN TO\nONE FLAME TURNS BLUE ...	DÉSORMAIS, UNE BOUGIE RÉDUITE À\nUNE FLAMME DEVIENT BLEUE ...
+... AND NOTHING CAN\nLIGHT IT BACK UP.	... ET RIEN NE PEUT\nLA RALLUMER.
+BACK FOR MORE?\nVERY WELL.	TU EN REDEMANDES ?\nTRÈS BIEN.
+RESUME	REPRENDRE
+MAIN MENU	MENU PRINCIPAL
+PAUSED	PAUSE
+CHEVROTINE: A SHOTGUN DUEL\nAGAINST THE AUTOMATON OF THE FAIR.\n\nORIGINAL GAME BY MASON CHEN.\nPICTURES, STORY AND RULES\nBY CALCADE, DRAWN BY A SCRIPT.\nFONTS: NUNITO AND ARCHIVO\n(SIL OPEN FONT LICENSE 1.1).\n\nA DUEL GAME IN THE SPIRIT OF\nSHOTGUN ROULETTE GAMES.	CHEVROTINE : UN DUEL AU FUSIL\nCONTRE L'AUTOMATE DE LA FÊTE FORAINE.\n\nJEU D'ORIGINE DE MASON CHEN.\nIMAGES, HISTOIRE ET RÈGLES\nPAR CALCADE, DESSINÉES PAR UN SCRIPT.\nPOLICES : NUNITO ET ARCHIVO\n(SIL OPEN FONT LICENSE 1.1).\n\nUN JEU DE DUEL DANS L'ESPRIT\nDES ROULETTES AU FUSIL.
+CREDITS	CRÉDITS
+BEST DOUBLE OR QUIT: 	MEILLEUR QUITTE OU DOUBLE : 
+CONTINUE	CONTINUER
+START	JOUER
+EXIT	QUITTER
+YOU	TOI
+ WINS!	 GAGNE !
+PLAY THE GOLD TOKEN?	JOUER LE JETON D'OR ?
 YES	OUI
 NO	NON
 LEFT/RIGHT: CHOOSE   OK: INTERACT	GAUCHE/DROITE : CHOISIR   OK : AGIR
 OK: OPEN THE DOOR	OK : OUVRIR LA PORTE
+OK: ENTER THE TENT	OK : ENTRER SOUS LA TENTE
 ARROWS+OK OR LETTER KEYS  EXE: SIGN	FLÈCHES+OK OU LETTRES  EXE : SIGNER
-PLEASE SIGN THE WAIVER.	SIGNE LA DÉCHARGE, S'IL TE PLAÎT.
-GET UP, 	DEBOUT, 
+A NEW PLAYER! SIGN HERE, PLEASE.	UN NOUVEAU JOUEUR ! SIGNE ICI, JE TE PRIE.
+UP YOU GET, 	DEBOUT, 
 !	 !
-YOU'RE LUCKY IT LEFT YOU\nWITH A CHARGE!	TU AS DE LA CHANCE, IL T'A\nLAISSÉ UNE CHARGE !
-THE NIGHT IS YOUNG.	LA NUIT EST JEUNE.
-WELCOME BACK.	BON RETOUR.
-YOU ARE DEAD	TU ES MORT
-RETRY	RÉESSAYER
-EXIT	QUITTER
-DOUBLE OR\nNOTHING?	QUITTE OU\nDOUBLE ?
+TICK ... TOCK ...\nI WOUND YOU BACK UP.	TIC ... TAC ...\nJE T'AI REMONTÉ.
+THE SHOW GOES ON.	LE SPECTACLE CONTINUE.
+BACK ALREADY? GOOD.	DÉJÀ DE RETOUR ? PARFAIT.
+THE SHOW IS OVER	LE SPECTACLE EST FINI
+RETRY	REJOUER
+DOUBLE\nOR QUIT?	QUITTE\nOU DOUBLE ?
 LEFT/RIGHT: CHOOSE   OK: PRESS	GAUCHE/DROITE : CHOISIR   OK : APPUYER
-SHOTS FIRED ........	COUPS TIRÉS ........
-ROUNDS BEAT ........	MANCHES GAGNÉES ....
-SHELLS EJECTED .....	DOUILLES ÉJECTÉES ..
-DOORS KICKED .......	PORTES ENFONCÉES ...
-CIGARETTES SMOKED ..	CIGARETTES FUMÉES ..
-ML OF BEER DRANK ...	ML DE BIÈRE BUS ....
-CONGRATULATIONS, 	FÉLICITATIONS, 
-TOTAL CASH: 	GAIN TOTAL : 
-\"DOUBLE OR NOTHING\" UNLOCKED!	\"QUITTE OU DOUBLE\" DÉBLOQUÉ !
-YOU	TOI
- WINS!	 GAGNE !
-RESUME	REPRENDRE
-MAIN MENU	MENU PRINCIPAL
-PAUSED	PAUSE
-INSPIRED BY BUCKSHOT ROULETTE\nBY MIKE KLUBNIKA.\nNOT AFFILIATED WITH MIKE KLUBNIKA\nOR CRITICAL REFLEX.\n\nEVERY PICTURE IS RENDERED FROM THE\nGAME'S OWN SCENES, MODELS AND TEXTURES\nBY MIKE KLUBNIKA, THROUGH THE OPEN\nBUCKSHOT ROULETTE PROJECT (1503DEV).\nFONTS: FAKE RECEIPT BY RAY LARABIE,\nDOT MATRIX BY DIONAEA.\n\nMADE BY MASON CHEN AS PART OF NUMPLAY.	INSPIRÉ DE BUCKSHOT ROULETTE\nDE MIKE KLUBNIKA.\nSANS LIEN AVEC MIKE KLUBNIKA\nNI CRITICAL REFLEX.\n\nCHAQUE IMAGE EST RENDUE À PARTIR DES\nSCÈNES, MODÈLES ET TEXTURES DU JEU\nDE MIKE KLUBNIKA, VIA LE PROJET OUVERT\nBUCKSHOT ROULETTE (1503DEV).\nPOLICES : FAKE RECEIPT DE RAY LARABIE,\nDOT MATRIX DE DIONAEA.\n\nFAIT PAR MASON CHEN POUR NUMPLAY.
-CREDITS	CRÉDITS
-BEST DOUBLE OR NOTHING: 	MEILLEUR QUITTE OU DOUBLE : 
-CONTINUE	CONTINUER
-START	COMMENCER
+LIVE SHOTS .........	TIRS PLEINS ........
+ROUNDS WON .........	MANCHES GAGNÉES ....
+SHELLS SPENT .......	CARTOUCHES TIRÉES ..
+TIMES WOUND UP .....	FOIS REMONTÉ .......
+CUPS OF TEA ........	TASSES DE THÉ ......
+ML OF OIL ..........	ML D'HUILE .........
+WELL PLAYED, 	BIEN JOUÉ, 
+COINS: 	PIÈCES : 
+\"DOUBLE OR QUIT\" UNLOCKED!	« QUITTE OU DOUBLE » DÉBLOQUÉ !
diff --git a/games/buckshot/lang/zh.txt b/games/buckshot/lang/zh.txt
index a113efe..30b9913 100644
--- a/games/buckshot/lang/zh.txt
+++ b/games/buckshot/lang/zh.txt
@@ -1,102 +1,98 @@
-# Buckshot Roulette in Chinese: the English text as in the source, a tab, the translation (see tools/lang.py).
+# Chevrotine (games/buckshot) in Chinese: the English text as in the source, a tab, the translation (see tools/lang.py).
 # Chinese letters come from the 12-pixel font (a small letter of the game is 7 pixels wide). The
 # statistics' labels are four letters and 12 dots, as wide as the English 20 letters.
-HAND SAW	手锯
-MAGNIFYING GLASS	放大镜
-BEER	啤酒
-CIGARETTE PACK	香烟
-HANDCUFFS	手铐
-EXPIRED MEDICINE	过期药物
-BURNER PHONE	一次性手机
-ADRENALINE	肾上腺素
-INVERTER	逆转器
-SHOTGUN DEALS 2 DAMAGE.	霰弹枪造成2点伤害。
-CHECK THE CURRENT ROUND\nIN THE CHAMBER.	查看枪膛中\n当前的子弹。
-RACKS THE SHOTGUN.\nEJECTS CURRENT SHELL.	拉动霰弹枪。\n退出当前的子弹。
-TAKES THE EDGE OFF.\nREGAIN 1 CHARGE.	放松一下。\n恢复1点电量。
-DEALER SKIPS THE\nNEXT TURN.	荷官跳过\n下一回合。
-50% CHANCE TO REGAIN 2 CHARGES.\nIF NOT, LOSE 1 CHARGE.	50%几率恢复2点电量。\n否则失去1点电量。
-A MYSTERIOUS VOICE GIVES\nYOU INSIGHT FROM THE FUTURE.	神秘的声音\n为你揭示未来。
-STEAL AN ITEM AND\nUSE IT IMMEDIATELY.	偷取一件道具\n并立即使用。
-SWAPS THE POLARITY OF THE\nCURRENT SHELL IN THE CHAMBER.	改变枪膛中\n当前子弹的极性。
+ONE LITTLE FLAME LEFT ...	只剩一小簇火苗了……
+HMM. I SEE ...	嗯，我看到了……
+UP: HIM   DOWN: YOU   OK: FIRE	上：他   下：你   OK：开枪
+A BLUE FLAME ...\nIT WILL NOT COME BACK.	蓝色的火苗……\n它不会再回来了。
+IN THEY GO, ONE BY ONE ...\nNO PEEKING.	一颗一颗装进去……\n不许偷看。
+AND NOW, WHICH ONE COMES FIRST?\nNOBODY KNOWS.	现在，哪颗先来？\n谁也不知道。
+BLACK POWDER	黑火药
+MONOCLE	单片眼镜
+OIL CAN	油壶
+CUP OF TEA	一杯茶
+CHAIN	铁链
+ODD ELIXIR	怪药水
+CRYSTAL BALL	水晶球
+THIEF'S GLOVE	小偷手套
+MIRROR	镜子
+THE NEXT SHOT\nHITS TWICE AS HARD.	下一枪\n威力加倍。
+A LOOK AT THE SHELL\nWAITING IN THE CHAMBER.	看一眼\n膛里的那颗弹。
+WORKS THE LEVER:\nTHE SHELL IN THE CHAMBER FLIES OUT.	拉动杠杆：\n膛里的弹飞出去。
+A WARM SIP.\nONE FLAME COMES BACK.	热乎乎的一口。\n回来一簇火苗。
+HE LOSES\nHIS NEXT TURN.	他失去\n下一回合。
+HEADS: TWO FLAMES BACK.\nTAILS: ONE FLAME LOST.	正面：回来两簇火苗。\n反面：熄灭一簇。
+SHOWS ONE OF THE\nSHELLS STILL TO COME.	显示一颗\n之后的弹。
+TAKE ONE OF HIS ITEMS\nAND USE IT AT ONCE.	拿走他的一件道具\n并马上使用。
+TURNS THE SHELL IN THE\nCHAMBER INTO ITS OPPOSITE.	把膛里的弹\n变成相反的。
 SHOTGUN	霰弹枪
-SHOOTING YOURSELF WITH A BLANK\nSKIPS THE DEALER'S TURN.	用空包弹射击自己\n可以跳过荷官的回合。
-THE DEALER'S ITEM   DOWN: BACK	荷官的道具   下：返回
+A BLANK ON YOURSELF:\nYOU PLAY AGAIN.	对自己打出空弹：\n你再来一次。
+HIS ITEM   DOWN: BACK	他的道具   下：返回
 OK: USE   BACK: PAUSE	OK：使用   返回：暂停
-OK: STEAL	OK：偷取
-SECOND SHELL ...	第二发 ...
-THIRD SHELL ...	第三发 ...
-FOURTH SHELL ...	第四发 ...
-FIFTH SHELL ...	第五发 ...
-SIXTH SHELL ...	第六发 ...
-SEVENTH SHELL ...	第七发 ...
-HOW UNFORTUNATE ...	真不走运 ...
-\n... LIVE ROUND.	\n... 实弹。
-\n... BLANK.	\n... 空包弹。
-LET'S MAKE THIS A LITTLE\nMORE INTERESTING ...	让我们来点\n更有趣的 ...
- ITEMS EACH.	件道具，每人一份。
-MORE ITEMS BEFORE\nEVERY LOAD.	每次装弹前\n会有更多道具。
-4 ITEMS EACH.	每人4件道具。
-OK: TAKE AN ITEM	OK：拿取道具
-OUT OF SPACE.	没有空间了。
-OK: PLACE	OK：放置
-THE RULES ARE SIMPLE:	规则很简单：
-SHOOTING YOURSELF WITH\nA BLANK SKIPS MY TURN.	用空包弹射击自己\n会跳过我的回合。
-SHOOTING THE DEALER WITH\nA LIVE TAKES THEIR LIFE.	用实弹射击荷官\n会夺走他的生命。
-WE WILL PLAY A SERIES\nOF ROUNDS ...	我们会进行\n几个回合 ...
-UNTIL WE REACH\nTHE FINAL SHOWDOWN.	直到\n最终决战。
-THERE, WE WILL DANCE ON\nTHE EDGE OF LIFE AND DEATH.	在那里，我们将在\n生死边缘起舞。
-WIN, AND WALK AWAY WITH\n400,000$ IN CASH.	赢了，你就能带着\n400,000$现金离开。
-LOSE, AND WE SELL YOUR\nMANGLED CORPSE FOR PROFIT.	输了，我们就把你\n残缺的尸体卖掉。
-SHALL WE BEGIN?	开始吧？
- LIVE ROUND. 	发实弹，
- LIVE ROUNDS. 	发实弹，
- BLANK.	发空包弹。
- BLANKS.	发空包弹。
-YOU KNOW THE DRILL.	你知道规矩。
-LONG LAST, WE ARRIVE\nAT THE FINAL SHOWDOWN.	终于，我们来到了\n最终决战。
-NO MORE DEFIBRILLATORS.\nNO MORE BLOOD TRANSFUSIONS.	没有除颤器了。\n也没有输血了。
-NOW, ME AND YOU, WE ARE DANCING\nON THE EDGE OF LIFE AND DEATH.	现在，你我\n在生死边缘起舞。
-I BETTER NOT\nSEE YOU AGAIN.	我可不想\n再见到你。
-CAREFUL, NOW ...	小心点 ...
-VERY INTERESTING ...	很有意思 ...
-UP: DEALER   DOWN: YOU   OK: FIRE	上：荷官   下：你   OK：开枪
-ARE YOU READY?	准备好了吗？
-I INSERT THE SHELLS\nIN AN UNKNOWN ORDER.	我以未知的顺序\n装入子弹。
-THEY ENTER THE CHAMBER\nIN A HIDDEN SEQUENCE.	它们以隐藏的顺序\n进入枪膛。
-CONSUME PILLS?	吃下药丸？
+OK: STEAL	OK：偷
+THE BALL STAYS DARK ...	水晶球一片漆黑……
+THE MIST CLEARS: SHELL 	雾散了：第
+\nIS LIVE.	颗\n是实弹。
+\nIS BLANK.	颗\n是空弹。
+A FEW TRICKS TO SPICE\nUP THE SHOW ...	来点小把戏\n让表演更精彩……
+ ITEM EACH.	 件道具。
+ ITEMS EACH.	 件道具。
+AND A FEW MORE\nBEFORE EACH LOAD.	每次装弹前\n还会再来几件。
+THREE TRICKS EACH, NOW.	现在每人三件。
+OK: TAKE AN ITEM	OK：拿一件道具
+NO MORE ROOM ON YOUR SIDE.	你这边放不下了。
+THAT ONE GOES BACK IN THE BOX.	这件放回箱子里。
+OK: PLACE	OK：放下
+WELCOME TO MY LITTLE SHOW.	欢迎来看我的小表演。
+ONE GUN. RED SHELLS ARE LIVE,\nBLUE ONES ARE BLANKS.	一把枪。红色是实弹，\n蓝色是空弹。
+YOUR TURN: AIM AT ME,\nOR AT YOURSELF.	轮到你：瞄准我，\n或者瞄准你自己。
+A BLANK ON YOURSELF?\nYOU PLAY AGAIN.	对自己打出空弹？\n你再来一次。
+A LIVE ONE BLOWS OUT\nA FLAME OF YOUR CANDLE.	实弹会吹灭\n你蜡烛的一簇火苗。
+NO FLAMES LEFT,\nAND THE ROUND IS LOST.	火苗全灭，\n这一局就输了。
+WIN THREE ROUNDS,\nAND THE CHEST IS YOURS.	赢下三局，\n宝箱就归你。
+LOSE, AND YOU STAY HERE\nAS MY NEW SPARE PART.	输了，你就留下来\n当我的备用零件。
+LET THE SHOW BEGIN!	表演开始！
+LIVE: 	实弹：
+   BLANK: 	   空弹：
+YOU KNOW HOW IT GOES.	规矩你都懂。
+THE LAST ROUND.\nTHE BEST PART OF THE SHOW.	最后一局。\n表演的高潮。
+FROM NOW ON, A CANDLE DOWN TO\nONE FLAME TURNS BLUE ...	从现在起，只剩一簇火苗的\n蜡烛会变成蓝色……
+... AND NOTHING CAN\nLIGHT IT BACK UP.	……什么也无法\n再把它点亮。
+BACK FOR MORE?\nVERY WELL.	还想再来？\n很好。
+RESUME	继续
+MAIN MENU	主菜单
+PAUSED	暂停
+CHEVROTINE: A SHOTGUN DUEL\nAGAINST THE AUTOMATON OF THE FAIR.\n\nORIGINAL GAME BY MASON CHEN.\nPICTURES, STORY AND RULES\nBY CALCADE, DRAWN BY A SCRIPT.\nFONTS: NUNITO AND ARCHIVO\n(SIL OPEN FONT LICENSE 1.1).\n\nA DUEL GAME IN THE SPIRIT OF\nSHOTGUN ROULETTE GAMES.	霰弹决斗：与游乐场\n自动人偶的霰弹枪对决。\n\n原作：MASON CHEN。\n图画、故事和规则\n由 CALCADE 用脚本绘制编写。\n字体：NUNITO 和 ARCHIVO\n(SIL OPEN FONT LICENSE 1.1)。\n\n一款霰弹枪轮盘\n风格的决斗游戏。
+CREDITS	制作人员
+BEST DOUBLE OR QUIT: 	加倍或离开最佳：
+CONTINUE	继续
+START	开始
+EXIT	退出
+YOU	你
+ WINS!	 获胜！
+PLAY THE GOLD TOKEN?	使用金币筹码？
 YES	是
 NO	否
 LEFT/RIGHT: CHOOSE   OK: INTERACT	左/右：选择   OK：互动
 OK: OPEN THE DOOR	OK：开门
-ARROWS+OK OR LETTER KEYS  EXE: SIGN	方向键+OK或字母键  EXE：签名
-PLEASE SIGN THE WAIVER.	请签署免责书。
-GET UP, 	起来，
+OK: ENTER THE TENT	OK：走进帐篷
+ARROWS+OK OR LETTER KEYS  EXE: SIGN	方向键+OK 或字母键  EXE：签名
+A NEW PLAYER! SIGN HERE, PLEASE.	新玩家！请在这里签名。
+UP YOU GET, 	起来吧，
 !	！
-YOU'RE LUCKY IT LEFT YOU\nWITH A CHARGE!	你很幸运，它给你\n留了一点电量！
-THE NIGHT IS YOUNG.	夜还长着呢。
-WELCOME BACK.	欢迎回来。
-YOU ARE DEAD	你死了
-RETRY	重试
-EXIT	退出
-DOUBLE OR\nNOTHING?	加倍\n或全无？
+TICK ... TOCK ...\nI WOUND YOU BACK UP.	滴……答……\n我给你上好了发条。
+THE SHOW GOES ON.	表演继续。
+BACK ALREADY? GOOD.	这么快就回来了？很好。
+THE SHOW IS OVER	表演结束了
+RETRY	重来
+DOUBLE\nOR QUIT?	加倍\n还是离开？
 LEFT/RIGHT: CHOOSE   OK: PRESS	左/右：选择   OK：按下
-SHOTS FIRED ........	开枪次数 ............
-ROUNDS BEAT ........	获胜回合 ............
-SHELLS EJECTED .....	退出弹壳 ............
-DOORS KICKED .......	踢开的门 ............
-CIGARETTES SMOKED ..	抽掉香烟 ............
-ML OF BEER DRANK ...	啤酒毫升 ............
-CONGRATULATIONS, 	恭喜你，
-TOTAL CASH: 	现金总计：
-\"DOUBLE OR NOTHING\" UNLOCKED!	\"加倍或全无\"已解锁！
-YOU	你
- WINS!	获胜！
-RESUME	继续
-MAIN MENU	主菜单
-PAUSED	已暂停
-INSPIRED BY BUCKSHOT ROULETTE\nBY MIKE KLUBNIKA.\nNOT AFFILIATED WITH MIKE KLUBNIKA\nOR CRITICAL REFLEX.\n\nEVERY PICTURE IS RENDERED FROM THE\nGAME'S OWN SCENES, MODELS AND TEXTURES\nBY MIKE KLUBNIKA, THROUGH THE OPEN\nBUCKSHOT ROULETTE PROJECT (1503DEV).\nFONTS: FAKE RECEIPT BY RAY LARABIE,\nDOT MATRIX BY DIONAEA.\n\nMADE BY MASON CHEN AS PART OF NUMPLAY.	灵感来自MIKE KLUBNIKA的\nBUCKSHOT ROULETTE。\n与MIKE KLUBNIKA及\nCRITICAL REFLEX无关。\n\n所有画面均由游戏本身的\n场景、模型和贴图渲染，\n来自MIKE KLUBNIKA的开源项目\nBUCKSHOT ROULETTE (1503DEV)。\n字体：RAY LARABIE的FAKE RECEIPT，\nDIONAEA的DOT MATRIX。\n\n由MASON CHEN为NUMPLAY制作。
-CREDITS	制作者
-BEST DOUBLE OR NOTHING: 	加倍或全无最佳成绩：
-CONTINUE	继续游戏
-START	开始游戏
+LIVE SHOTS .........	实弹命中 ............
+ROUNDS WON .........	获胜局数 ............
+SHELLS SPENT .......	用掉的弹 ............
+TIMES WOUND UP .....	上发条次 ............
+CUPS OF TEA ........	喝茶杯数 ............
+ML OF OIL ..........	用油毫升 ............
+WELL PLAYED, 	打得好，
+COINS: 	金币：
+\"DOUBLE OR QUIT\" UNLOCKED!	“加倍或离开”已解锁！
diff --git a/games/buckshot/src/anim.c b/games/buckshot/src/anim.c
index 3c76422..ed375a7 100644
--- a/games/buckshot/src/anim.c
+++ b/games/buckshot/src/anim.c
@@ -1,7 +1,7 @@
-/* The animations of the match: key frames rendered from the original's own
- * animations (the player's hands in the table view, the Dealer's in his
- * view), timed like the original. Every action is already settled in the
- * match state when its animation plays (see game.c). */
+/* The animations of the match: a few key frames (your hands in the table
+ * view, the Automaton in his), drawn by tools/conformite/chevrotine_art.py.
+ * Every action is already settled in the match state when its animation
+ * plays (see game.c). */
 #include "scene.h"
 #include "story.h"
 #include <eadk.h>
@@ -36,7 +36,7 @@ static void p_done(void) {
   T.gun_on_table = 1;
 }
 
-/* the Dealer's hands, in his view */
+/* the Automaton's hands, in his view */
 static void d_pose(int img, int ms) {
   T.d.pose = img;
   frame(ms);
@@ -50,17 +50,17 @@ static void careful(void) {
   if (G.hp[0] == 1 && !G.wire[0] && !G.careful_said) {
     G.careful_said = 1;
     view_dealer();
-    say(T("CAREFUL, NOW ..."), 2500);
+    say(T("ONE LITTLE FLAME LEFT ..."), 2500);
   }
 }
 
-/* after a change of charges: look at the display */
+/* after a change of flames: look at the candle board */
 static void show_charges(void) {
   health_view(-1, 1400);
   careful();
 }
 
-/* the screen goes dark: hit by a live round */
+/* the screen goes dark: hit by a live shell */
 static void player_down(int ended) {
   gfx_light(256, 0, 200);
   gfx_present();
@@ -78,7 +78,7 @@ static void player_down(int ended) {
   show_charges();
 }
 
-/* the Dealer is thrown back into the dark */
+/* the Automaton is knocked back into the dark */
 static void dealer_down(int ended) {
   view_dealer();
   T.gun_on_table = 0;
@@ -129,7 +129,7 @@ static void player_item(int it, const act_t *a) {
       p_raise(IMG_P_SAW0, 600);
       p_pose(IMG_P_SAW1, 1000);
       p_done();
-      frame(400); /* the barrel, sawn off */
+      frame(400); /* the barrel, glowing */
       break;
     case IT_GLASS:
       p_raise(IMG_P_MAG0, 500);
@@ -157,7 +157,7 @@ static void player_item(int it, const act_t *a) {
       show_charges();
       break;
     case IT_CUFFS:
-      /* the Dealer holds out his wrists */
+      /* the chain around the Automaton's wrists */
       frame(300);
       view_dealer();
       T.d.pose = IMG_D_GETCUFF;
@@ -225,7 +225,7 @@ static void dealer_item(int it, const act_t *a) {
     case IT_GLASS:
       d_pose(IMG_D_MAG0, 600);
       d_pose(IMG_D_MAG1, 900);
-      say(T("VERY INTERESTING ..."), 1800);
+      say(T("HMM. I SEE ..."), 1800);
       d_done();
       break;
     case IT_BEER:
@@ -248,7 +248,7 @@ static void dealer_item(int it, const act_t *a) {
       d_pose(IMG_D_CUFFS0, 600);
       d_pose(IMG_D_CUFFS1, 600);
       d_done();
-      /* your wrists */
+      /* the chain around your wrists */
       view_table();
       frame(200);
       for (int k = 0; k < 4; k++) {
@@ -314,7 +314,7 @@ int anim_player_aim(void) {
   T.pose = IMG_P_HOLD;
   T.lbl = 1;
   for (;;) {
-    T.hint = T("UP: DEALER   DOWN: YOU   OK: FIRE");
+    T.hint = T("UP: HIM   DOWN: YOU   OK: FIRE");
     table_show();
     int k;
     while ((k = idle_key()) < 0) {}
@@ -367,7 +367,7 @@ void anim_dealer_shot(int self, int live, int dmg, int ended) {
   d_pose(IMG_D_GUN_LIFT, 220);
   d_pose(IMG_D_GUN_LOAD, 800);
   if (self) {
-    /* the barrel under his own chin */
+    /* the barrel against his own eye */
     d_pose(IMG_D_GUN_AIMS0, 300);
     d_pose(dmg == 2 ? IMG_D_GUN_AIMS_SAW : IMG_D_GUN_AIMS, 1900);
   } else {
@@ -434,18 +434,10 @@ void anim_dealer_cuffed(int broke) {
 void anim_wire_cut(int side, int say_it) {
   view_dealer();
   frame(1200);
-  if (say_it) say(T("ARE YOU READY?"), 3000);
+  if (say_it) say(T("A BLUE FLAME ...\nIT WILL NOT COME BACK."), 3000);
   wire_cut(side);
 }
 
-void anim_god_waiver(void) {
-  T.hint = 0;
-  view_table();
-  T.pose = IMG_P_GOD;
-  frame(2800);
-  T.pose = -1;
-}
-
 /* ---------------------------------------------------------------- loading */
 
 void anim_dealer_load(int n, int told, int fast) {
@@ -454,7 +446,7 @@ void anim_dealer_load(int n, int told, int fast) {
   T.gun_on_table = 0;
   d_pose(IMG_D_GUN_LIFT, 220);
   d_pose(IMG_D_GUN_LOAD, 700);
-  if (told >= 0) say(told == 0 ? T("I INSERT THE SHELLS\nIN AN UNKNOWN ORDER.") : T("THEY ENTER THE CHAMBER\nIN A HIDDEN SEQUENCE."), 3000);
+  if (told >= 0) say(told == 0 ? T("IN THEY GO, ONE BY ONE ...\nNO PEEKING.") : T("AND NOW, WHICH ONE COMES FIRST?\nNOBODY KNOWS."), 3000);
   for (int i = 0; i < n; i++) {
     d_pose(IMG_D_GUN_LOAD1, fast ? 110 : 200);
     d_pose(IMG_D_GUN_LOAD, fast ? 60 : 120);
diff --git a/games/buckshot/src/assets.c b/games/buckshot/src/assets.c
index 13eaa55..697d398 100644
--- a/games/buckshot/src/assets.c
+++ b/games/buckshot/src/assets.c
@@ -2,7157 +2,3256 @@
 #include "assets.h"
 const img_t art_img[IMG_COUNT + 1] = {
   {0, 0, 320, 240, 0},
-  {0, 0, 320, 240, 7117},
-  {0, 0, 320, 240, 12254},
-  {0, 0, 320, 240, 17067},
-  {0, 0, 320, 240, 26412},
-  {0, 0, 320, 240, 35411},
-  {0, 0, 320, 240, 39708},
-  {0, 0, 320, 240, 48628},
-  {0, 0, 320, 240, 51217},
-  {0, 0, 320, 240, 56602},
-  {0, 0, 320, 240, 62239},
-  {0, 0, 320, 240, 65716},
-  {14, 18, 128, 67, 68901},
-  {0, 105, 320, 135, 69436},
-  {0, 153, 320, 62, 71953},
-  {107, 116, 76, 121, 73511},
-  {107, 120, 76, 117, 74227},
-  {83, 90, 144, 150, 74928},
-  {51, 120, 93, 120, 76383},
-  {120, 62, 73, 18, 77018},
-  {139, 65, 37, 23, 77198},
-  {128, 8, 59, 60, 77449},
-  {129, 10, 58, 59, 78072},
-  {129, 12, 58, 59, 78675},
-  {129, 10, 58, 59, 78072},
-  {17, 158, 44, 51, 79274},
-  {63, 160, 44, 51, 79274},
-  {5, 202, 44, 37, 79748},
-  {58, 203, 44, 37, 79748},
-  {205, 160, 44, 51, 79274},
-  {251, 159, 44, 51, 79274},
-  {231, 203, 44, 37, 79748},
-  {285, 203, 44, 37, 79748},
-  {72, 103, 38, 21, 80067},
-  {99, 103, 38, 21, 80067},
-  {53, 118, 50, 27, 80265},
-  {84, 118, 50, 27, 80265},
-  {180, 103, 38, 21, 80067},
-  {208, 104, 38, 21, 80067},
-  {180, 118, 50, 27, 80265},
-  {213, 118, 50, 27, 80265},
-  {24, 158, 46, 52, 80499},
-  {68, 159, 46, 52, 80499},
-  {0, 200, 53, 40, 80917},
-  {54, 200, 53, 40, 80917},
-  {207, 158, 46, 52, 80499},
-  {251, 157, 46, 52, 80499},
-  {224, 200, 53, 40, 80917},
-  {276, 199, 53, 40, 80917},
-  {70, 81, 194, 43, 81347},
-  {92, 82, 194, 43, 81347},
-  {55, 119, 47, 28, 81569},
-  {87, 119, 47, 28, 81569},
-  {174, 83, 194, 43, 81347},
-  {202, 83, 194, 43, 81347},
-  {184, 120, 47, 28, 81569},
-  {217, 120, 47, 28, 81569},
-  {2, 80, 97, 147, 81813},
-  {52, 83, 97, 147, 81813},
-  {-29, 104, 75, 128, 83109},
-  {24, 116, 75, 128, 83109},
-  {192, 86, 97, 147, 81813},
-  {246, 79, 97, 147, 81813},
-  {234, 112, 75, 128, 83109},
-  {274, 57, 75, 128, 83109},
-  {78, 81, 35, 35, 84261},
-  {111, 83, 35, 35, 84261},
-  {57, 92, 39, 63, 84587},
-  {94, 89, 39, 63, 84587},
-  {177, 81, 35, 35, 84261},
-  {206, 80, 35, 35, 84261},
-  {180, 79, 39, 63, 84587},
-  {210, 83, 39, 63, 84587},
-  {19, 156, 49, 49, 85108},
-  {67, 157, 49, 49, 85108},
-  {-5, 207, 53, 35, 85531},
-  {48, 206, 53, 35, 85531},
-  {205, 158, 49, 49, 85108},
-  {251, 157, 49, 49, 85108},
-  {226, 205, 53, 35, 85531},
-  {278, 203, 53, 35, 85531},
-  {82, 102, 24, 20, 85830},
-  {110, 102, 24, 20, 85830},
-  {67, 116, 28, 28, 85958},
-  {99, 116, 28, 28, 85958},
-  {189, 102, 24, 20, 85830},
-  {217, 102, 24, 20, 85830},
-  {194, 115, 28, 28, 85958},
-  {226, 115, 28, 28, 85958},
-  {16, 159, 54, 50, 86134},
-  {61, 159, 54, 50, 86134},
-  {-6, 199, 63, 39, 86740},
-  {40, 201, 63, 39, 86740},
-  {201, 160, 54, 50, 86134},
-  {247, 159, 54, 50, 86134},
-  {215, 201, 63, 39, 86740},
-  {265, 200, 63, 39, 86740},
-  {79, 105, 30, 19, 87276},
-  {106, 105, 30, 19, 87276},
-  {65, 120, 37, 24, 87464},
-  {95, 120, 37, 24, 87464},
-  {191, 104, 30, 19, 87276},
-  {215, 106, 30, 19, 87276},
-  {192, 121, 37, 24, 87464},
-  {224, 120, 37, 24, 87464},
-  {15, 155, 57, 51, 87697},
-  {62, 156, 57, 51, 87697},
-  {-6, 200, 65, 38, 88540},
-  {43, 202, 65, 38, 88540},
-  {200, 157, 57, 51, 87697},
-  {246, 156, 57, 51, 87697},
-  {214, 202, 65, 38, 88540},
-  {267, 201, 65, 38, 88540},
-  {77, 102, 29, 22, 89299},
-  {105, 102, 29, 22, 89299},
-  {61, 118, 39, 27, 89518},
-  {93, 118, 39, 27, 89518},
-  {185, 102, 29, 22, 89299},
-  {211, 102, 29, 22, 89299},
-  {188, 117, 39, 27, 89518},
-  {220, 117, 39, 27, 89518},
-  {21, 163, 42, 38, 89844},
-  {68, 164, 42, 38, 89844},
-  {-3, 212, 45, 27, 90189},
-  {51, 213, 45, 27, 90189},
-  {207, 165, 42, 38, 89844},
-  {253, 164, 42, 38, 89844},
-  {229, 213, 45, 27, 90189},
-  {283, 210, 45, 27, 90189},
-  {79, 105, 21, 17, 90402},
-  {107, 105, 21, 17, 90402},
-  {64, 121, 26, 21, 90516},
-  {95, 120, 26, 21, 90516},
-  {194, 103, 21, 17, 90402},
-  {215, 105, 21, 17, 90402},
-  {192, 120, 26, 21, 90516},
-  {224, 120, 26, 21, 90516},
-  {9, 153, 69, 55, 90663},
-  {56, 154, 69, 55, 90663},
-  {-16, 194, 62, 44, 91230},
-  {36, 195, 62, 44, 91230},
-  {194, 154, 69, 55, 90663},
-  {240, 153, 69, 55, 90663},
-  {208, 196, 62, 44, 91230},
-  {263, 195, 62, 44, 91230},
-  {73, 99, 39, 25, 91673},
-  {101, 99, 39, 25, 91673},
-  {57, 116, 49, 30, 91909},
-  {89, 116, 49, 30, 91909},
-  {181, 100, 39, 25, 91673},
-  {209, 100, 39, 25, 91673},
-  {186, 115, 49, 30, 91909},
-  {217, 117, 49, 30, 91909},
-  {18, 158, 53, 48, 92188},
-  {66, 159, 53, 48, 92188},
-  {-7, 203, 58, 36, 92844},
-  {45, 204, 58, 36, 92844},
-  {204, 160, 53, 48, 92188},
-  {250, 159, 53, 48, 92188},
-  {217, 204, 58, 36, 92844},
-  {271, 203, 58, 36, 92844},
-  {78, 102, 27, 20, 93421},
-  {105, 102, 27, 20, 93421},
-  {62, 119, 34, 26, 93608},
-  {94, 119, 34, 26, 93608},
-  {186, 102, 27, 20, 93421},
-  {213, 102, 27, 20, 93421},
-  {189, 119, 34, 26, 93608},
-  {222, 118, 34, 26, 93608},
-  {30, 151, 59, 30, 93888},
-  {70, 151, 59, 30, 93888},
-  {0, 173, 75, 43, 94233},
-  {47, 173, 75, 43, 94233},
-  {189, 152, 59, 30, 93888},
-  {228, 152, 59, 30, 93888},
-  {194, 173, 75, 43, 94233},
-  {242, 173, 75, 43, 94233},
-  {30, 152, 57, 30, 94644},
-  {72, 152, 57, 30, 94644},
-  {0, 174, 72, 44, 94993},
-  {48, 174, 72, 44, 94993},
-  {192, 153, 57, 30, 94644},
-  {232, 153, 57, 30, 94644},
-  {197, 175, 72, 44, 94993},
-  {247, 175, 72, 44, 94993},
-  {42, 119, 51, 50, 95458},
-  {90, 122, 51, 50, 95458},
-  {2, 136, 61, 95, 95985},
-  {59, 130, 61, 95, 95985},
-  {186, 118, 51, 50, 95458},
-  {226, 117, 51, 50, 95458},
-  {186, 115, 61, 95, 95985},
-  {231, 120, 61, 95, 95985},
-  {46, 148, 34, 30, 96959},
-  {87, 148, 34, 30, 96959},
-  {20, 171, 42, 42, 97170},
-  {69, 171, 42, 42, 97170},
-  {202, 147, 34, 30, 96959},
-  {242, 147, 34, 30, 96959},
-  {212, 169, 42, 42, 97170},
-  {260, 169, 42, 42, 97170},
-  {42, 151, 45, 31, 97463},
-  {81, 151, 45, 31, 97463},
-  {14, 176, 58, 39, 97833},
-  {60, 176, 58, 39, 97833},
-  {201, 152, 45, 31, 97463},
-  {240, 152, 45, 31, 97463},
-  {208, 177, 58, 39, 97833},
-  {256, 177, 58, 39, 97833},
-  {37, 151, 45, 29, 98355},
-  {78, 151, 45, 29, 98355},
-  {6, 174, 61, 42, 98776},
-  {54, 173, 61, 42, 98776},
-  {195, 151, 45, 29, 98355},
-  {234, 151, 45, 29, 98355},
-  {199, 172, 61, 42, 98776},
-  {247, 172, 61, 42, 98776},
-  {43, 154, 30, 23, 99464},
-  {84, 154, 30, 23, 99464},
-  {16, 178, 37, 32, 99654},
-  {64, 178, 37, 32, 99654},
-  {202, 154, 30, 23, 99464},
-  {241, 154, 30, 23, 99464},
-  {210, 177, 37, 32, 99654},
-  {258, 177, 37, 32, 99654},
-  {32, 147, 60, 34, 99908},
-  {72, 147, 60, 34, 99908},
-  {2, 170, 75, 49, 100313},
-  {50, 170, 75, 49, 100313},
-  {190, 148, 60, 34, 99908},
-  {230, 148, 60, 34, 99908},
-  {196, 170, 75, 49, 100313},
-  {245, 171, 75, 49, 100313},
-  {39, 151, 41, 29, 100851},
-  {79, 151, 41, 29, 100851},
-  {11, 175, 54, 41, 101205},
-  {59, 175, 54, 41, 101205},
-  {196, 151, 41, 29, 100851},
-  {237, 151, 41, 29, 100851},
-  {204, 174, 54, 41, 101205},
-  {253, 174, 54, 41, 101205},
-  {130, 164, 69, 76, 101759},
-  {130, 178, 65, 62, 102393},
-  {118, 24, 78, 77, 102957},
-  {106, 93, 99, 24, 103856},
-  {136, 64, 48, 9, 104143},
-  {106, 23, 99, 105, 104222},
-  {80, 24, 125, 93, 105744},
-  {106, 23, 99, 100, 107140},
-  {106, 23, 99, 99, 108506},
-  {118, 24, 87, 92, 109850},
-  {106, 19, 103, 210, 110726},
-  {106, 23, 102, 98, 112737},
-  {106, 24, 143, 112, 114158},
-  {106, 24, 99, 111, 115556},
-  {106, 65, 99, 52, 116778},
-  {106, 24, 99, 107, 117335},
-  {106, 24, 105, 99, 118800},
-  {105, 24, 87, 113, 120404},
-  {85, 24, 107, 150, 121718},
-  {106, 23, 115, 129, 123485},
-  {106, 23, 108, 167, 125230},
-  {101, 23, 97, 157, 127255},
-  {106, 23, 108, 115, 129143},
-  {106, 24, 99, 109, 130714},
-  {106, 40, 79, 77, 132097},
-  {106, 23, 92, 94, 132892},
-  {104, 24, 101, 113, 134235},
-  {106, 83, 111, 157, 135166},
-  {106, 88, 111, 152, 136258},
-  {106, 77, 99, 163, 137338},
-  {106, 63, 99, 177, 138216},
-  {106, 77, 99, 163, 139253},
-  {106, 37, 99, 203, 140316},
-  {106, 63, 99, 177, 138216},
-  {106, 77, 99, 163, 141455},
-  {106, 54, 99, 186, 142528},
-  {45, 75, 186, 165, 143703},
-  {106, 31, 99, 86, 146181},
-  {106, 44, 99, 73, 146731},
-  {121, 111, 12, 28, 147090},
-  {121, 111, 12, 28, 147183},
-  {108, 18, 212, 222, 147251},
-  {108, 18, 212, 222, 149351},
-  {98, 54, 123, 92, 151385},
-  {69, 61, 181, 160, 151920},
-  {69, 17, 181, 204, 153724},
-  {0, 0, 316, 240, 156506},
-  {128, 122, 64, 22, 158775},
-  {173, 80, 128, 160, 159280},
-  {173, 166, 38, 68, 160841},
-  {0, 0, 320, 240, 161197},
-  {67, 0, 197, 240, 163210},
-  {0, 0, 320, 240, 172769},
-  {104, 92, 94, 61, 216225},
-  {50, 92, 148, 85, 216591},
-  {138, 64, 97, 176, 175691},
-  {134, 83, 92, 157, 176906},
-  {62, 0, 258, 240, 177433},
-  {105, 96, 91, 134, 180143},
-  {12, 0, 295, 129, 182226},
-  {96, 60, 99, 140, 186161},
-  {110, 106, 79, 134, 187796},
-  {177, 34, 53, 162, 189260},
-  {154, 54, 85, 152, 190926},
-  {99, 76, 136, 109, 192613},
-  {57, 88, 173, 82, 195063},
-  {154, 73, 37, 131, 197114},
-  {163, 83, 49, 126, 197861},
-  {64, 36, 225, 204, 198644},
-  {224, 52, 27, 28, 202288},
-  {224, 52, 27, 28, 202444},
-  {14, 91, 294, 79, 202547},
-  {23, 126, 18, 37, 203305},
-  {45, 126, 18, 37, 203505},
-  {67, 126, 18, 37, 203699},
-  {88, 126, 19, 38, 203888},
-  {110, 126, 19, 37, 204082},
-  {132, 126, 18, 37, 204270},
-  {281, 126, 18, 37, 204459},
-  {259, 126, 18, 37, 204662},
-  {237, 126, 19, 37, 204851},
-  {215, 126, 19, 38, 205041},
-  {194, 126, 18, 37, 205234},
-  {172, 126, 18, 37, 205422},
-  {23, 126, 18, 33, 205617},
-  {44, 126, 19, 33, 205816},
-  {281, 126, 18, 33, 206010},
-  {259, 126, 18, 33, 206210},
-  {94, 92, 120, 74, 206406},
-  {104, 143, 12, 13, 207889},
-  {146, 143, 13, 13, 207927},
-  {189, 143, 13, 13, 207965},
-  {178, 92, 36, 40, 208004},
-  {104, 143, 12, 13, 207889},
-  {146, 143, 13, 13, 207927},
-  {189, 143, 13, 13, 207965},
-  {165, 87, 135, 82, 208322},
-  {18, 90, 134, 77, 209713},
-  {283, 126, 24, 25, 210741},
-  {281, 132, 5, 5, 210835},
-  {283, 133, 4, 5, 210853},
-  {285, 135, 3, 4, 210867},
-  {286, 137, 4, 4, 210879},
-  {287, 138, 5, 4, 210894},
-  {289, 140, 4, 4, 210910},
-  {301, 151, 4, 5, 210926},
-  {299, 149, 4, 4, 210944},
-  {297, 148, 4, 4, 210960},
-  {295, 145, 5, 5, 210975},
-  {294, 143, 5, 5, 210991},
-  {291, 142, 5, 5, 211008},
-  {95, 113, 49, 50, 211027},
-  {95, 113, 49, 50, 211545},
-  {117, 104, 46, 43, 212007},
-  {117, 104, 46, 43, 212390},
-  {138, 94, 44, 40, 212794},
-  {138, 94, 44, 40, 213136},
-  {151, 86, 47, 39, 213495},
-  {151, 86, 47, 39, 213809},
-  {171, 79, 43, 34, 214155},
-  {171, 77, 43, 36, 214429},
-  {180, 72, 46, 32, 214723},
-  {180, 71, 46, 33, 214984},
-  {197, 66, 40, 29, 215258},
-  {197, 66, 40, 29, 215471},
-  {209, 61, 40, 27, 215694},
-  {208, 61, 41, 27, 215909},
-  {90, 142, 17, 18, 216120},
-  {0, 0, 0, 0, 216901},
+  {0, 0, 320, 240, 2002},
+  {0, 0, 320, 240, 3109},
+  {0, 0, 320, 240, 4714},
+  {0, 0, 320, 240, 5884},
+  {0, 0, 320, 240, 8849},
+  {0, 0, 320, 240, 9683},
+  {0, 0, 320, 240, 10946},
+  {0, 0, 320, 240, 12717},
+  {0, 0, 320, 240, 13936},
+  {0, 0, 320, 240, 16405},
+  {0, 0, 320, 240, 18755},
+  {14, 23, 155, 41, 19348},
+  {4, 98, 315, 141, 19830},
+  {18, 142, 289, 73, 19919},
+  {114, 121, 68, 113, 19972},
+  {114, 114, 68, 120, 20373},
+  {88, 98, 144, 124, 20774},
+  {44, 219, 136, 17, 21250},
+  {117, 64, 86, 36, 21444},
+  {117, 58, 86, 41, 21720},
+  {118, 0, 84, 88, 22053},
+  {118, 0, 84, 88, 22553},
+  {119, 0, 82, 88, 23050},
+  {118, 0, 84, 88, 22553},
+  {29, 161, 31, 34, 23547},
+  {77, 162, 31, 34, 23547},
+  {9, 202, 33, 36, 23697},
+  {60, 202, 33, 36, 23697},
+  {215, 162, 31, 34, 23547},
+  {262, 161, 31, 34, 23547},
+  {232, 202, 33, 36, 23697},
+  {283, 202, 33, 36, 23697},
+  {89, 100, 15, 16, 23852},
+  {115, 100, 15, 16, 23852},
+  {78, 116, 18, 19, 23930},
+  {107, 116, 18, 19, 23930},
+  {194, 100, 15, 16, 23852},
+  {220, 100, 15, 16, 23852},
+  {199, 116, 18, 19, 23930},
+  {228, 116, 18, 19, 23930},
+  {27, 165, 33, 30, 24016},
+  {75, 166, 33, 30, 24016},
+  {7, 206, 35, 33, 24227},
+  {58, 206, 35, 33, 24227},
+  {213, 166, 33, 30, 24016},
+  {260, 165, 33, 30, 24016},
+  {230, 206, 35, 33, 24227},
+  {281, 206, 35, 33, 24227},
+  {88, 102, 16, 14, 24449},
+  {114, 102, 16, 14, 24449},
+  {77, 118, 19, 17, 24538},
+  {106, 118, 19, 17, 24538},
+  {193, 102, 16, 14, 24449},
+  {219, 102, 16, 14, 24449},
+  {198, 118, 19, 17, 24538},
+  {227, 118, 19, 17, 24538},
+  {22, 161, 40, 34, 24655},
+  {70, 162, 40, 34, 24655},
+  {2, 201, 42, 37, 24801},
+  {53, 201, 42, 37, 24801},
+  {208, 162, 40, 34, 24655},
+  {255, 161, 40, 34, 24655},
+  {225, 201, 42, 37, 24801},
+  {276, 201, 42, 37, 24801},
+  {86, 100, 19, 16, 24942},
+  {112, 100, 19, 16, 24942},
+  {74, 115, 23, 20, 25022},
+  {103, 115, 23, 20, 25022},
+  {191, 100, 19, 16, 24942},
+  {217, 100, 19, 16, 24942},
+  {195, 115, 23, 20, 25022},
+  {224, 115, 23, 20, 25022},
+  {24, 160, 38, 35, 25116},
+  {72, 161, 38, 35, 25116},
+  {4, 201, 40, 37, 25282},
+  {55, 201, 40, 37, 25282},
+  {210, 161, 38, 35, 25116},
+  {257, 160, 38, 35, 25116},
+  {227, 201, 40, 37, 25282},
+  {278, 201, 40, 37, 25282},
+  {87, 100, 18, 16, 25462},
+  {113, 100, 18, 16, 25462},
+  {76, 115, 20, 20, 25545},
+  {105, 115, 20, 20, 25545},
+  {192, 100, 18, 16, 25462},
+  {218, 100, 18, 16, 25462},
+  {197, 115, 20, 20, 25545},
+  {226, 115, 20, 20, 25545},
+  {25, 170, 35, 25, 25646},
+  {73, 171, 35, 25, 25646},
+  {4, 211, 38, 27, 25799},
+  {55, 211, 38, 27, 25799},
+  {211, 171, 35, 25, 25646},
+  {258, 170, 35, 25, 25646},
+  {227, 211, 38, 27, 25799},
+  {278, 211, 38, 27, 25799},
+  {87, 104, 17, 12, 25956},
+  {113, 104, 17, 12, 25956},
+  {76, 121, 20, 14, 26026},
+  {105, 121, 20, 14, 26026},
+  {192, 104, 17, 12, 25956},
+  {218, 104, 17, 12, 25956},
+  {197, 121, 20, 14, 26026},
+  {226, 121, 20, 14, 26026},
+  {30, 163, 30, 32, 26106},
+  {78, 164, 30, 32, 26106},
+  {10, 204, 32, 34, 26228},
+  {61, 204, 32, 34, 26228},
+  {216, 164, 30, 32, 26106},
+  {263, 163, 30, 32, 26106},
+  {233, 204, 32, 34, 26228},
+  {284, 204, 32, 34, 26228},
+  {90, 101, 14, 15, 26362},
+  {116, 101, 14, 15, 26362},
+  {79, 117, 17, 18, 26428},
+  {108, 117, 17, 18, 26428},
+  {195, 101, 14, 15, 26362},
+  {221, 101, 14, 15, 26362},
+  {200, 117, 17, 18, 26428},
+  {229, 117, 17, 18, 26428},
+  {29, 164, 31, 31, 26509},
+  {77, 165, 31, 31, 26509},
+  {9, 204, 33, 34, 26664},
+  {60, 204, 33, 34, 26664},
+  {215, 165, 31, 31, 26509},
+  {262, 164, 31, 31, 26509},
+  {232, 204, 33, 34, 26664},
+  {283, 204, 33, 34, 26664},
+  {89, 101, 15, 15, 26828},
+  {115, 101, 15, 15, 26828},
+  {78, 117, 18, 18, 26901},
+  {107, 117, 18, 18, 26901},
+  {194, 101, 15, 15, 26828},
+  {220, 101, 15, 15, 26828},
+  {199, 117, 18, 18, 26901},
+  {228, 117, 18, 18, 26901},
+  {30, 161, 31, 34, 26993},
+  {78, 162, 31, 34, 26993},
+  {10, 201, 34, 37, 27099},
+  {61, 201, 34, 37, 27099},
+  {216, 162, 31, 34, 26993},
+  {263, 161, 31, 34, 26993},
+  {233, 201, 34, 37, 27099},
+  {284, 201, 34, 37, 27099},
+  {90, 99, 15, 17, 27208},
+  {116, 99, 15, 17, 27208},
+  {79, 115, 17, 20, 27262},
+  {108, 115, 17, 20, 27262},
+  {195, 99, 15, 17, 27208},
+  {221, 99, 15, 17, 27208},
+  {200, 115, 17, 20, 27262},
+  {229, 115, 17, 20, 27262},
+  {30, 162, 30, 33, 27328},
+  {78, 163, 30, 33, 27328},
+  {10, 203, 32, 36, 27471},
+  {61, 203, 32, 36, 27471},
+  {216, 163, 30, 33, 27328},
+  {263, 162, 30, 33, 27328},
+  {233, 203, 32, 36, 27471},
+  {284, 203, 32, 36, 27471},
+  {90, 100, 14, 17, 27628},
+  {116, 100, 14, 17, 27628},
+  {79, 116, 17, 19, 27702},
+  {108, 116, 17, 19, 27702},
+  {195, 100, 14, 17, 27628},
+  {221, 100, 14, 17, 27628},
+  {200, 116, 17, 19, 27702},
+  {229, 116, 17, 19, 27702},
+  {55, 147, 24, 26, 27792},
+  {93, 147, 24, 26, 27792},
+  {31, 176, 29, 32, 27912},
+  {79, 176, 29, 32, 27912},
+  {207, 147, 24, 26, 27792},
+  {245, 147, 24, 26, 27792},
+  {219, 176, 29, 32, 27912},
+  {269, 176, 29, 32, 27912},
+  {54, 150, 25, 23, 28052},
+  {92, 150, 25, 23, 28052},
+  {29, 180, 31, 28, 28206},
+  {77, 180, 31, 28, 28206},
+  {206, 150, 25, 23, 28052},
+  {244, 150, 25, 23, 28052},
+  {217, 180, 31, 28, 28206},
+  {267, 180, 31, 28, 28206},
+  {50, 147, 31, 26, 28398},
+  {88, 147, 31, 26, 28398},
+  {24, 176, 38, 32, 28515},
+  {72, 176, 38, 32, 28515},
+  {202, 147, 31, 26, 28398},
+  {240, 147, 31, 26, 28398},
+  {212, 176, 38, 32, 28515},
+  {262, 176, 38, 32, 28515},
+  {52, 146, 28, 27, 28655},
+  {90, 146, 28, 27, 28655},
+  {26, 175, 36, 33, 28779},
+  {74, 175, 36, 33, 28779},
+  {204, 146, 28, 27, 28655},
+  {242, 146, 28, 27, 28655},
+  {214, 175, 36, 33, 28779},
+  {264, 175, 36, 33, 28779},
+  {52, 154, 27, 19, 28946},
+  {90, 154, 27, 19, 28946},
+  {27, 185, 33, 23, 29061},
+  {75, 185, 33, 23, 29061},
+  {204, 154, 27, 19, 28946},
+  {242, 154, 27, 19, 28946},
+  {215, 185, 33, 23, 29061},
+  {265, 185, 33, 23, 29061},
+  {56, 149, 23, 24, 29195},
+  {94, 149, 23, 24, 29195},
+  {32, 178, 28, 30, 29288},
+  {80, 178, 28, 30, 29288},
+  {208, 149, 23, 24, 29195},
+  {246, 149, 23, 24, 29195},
+  {220, 178, 28, 30, 29288},
+  {270, 178, 28, 30, 29288},
+  {55, 149, 24, 24, 29408},
+  {93, 149, 24, 24, 29408},
+  {31, 178, 29, 30, 29527},
+  {79, 178, 29, 30, 29527},
+  {207, 149, 24, 24, 29408},
+  {245, 149, 24, 24, 29408},
+  {219, 178, 29, 30, 29527},
+  {269, 178, 29, 30, 29527},
+  {56, 146, 24, 27, 29683},
+  {94, 146, 24, 27, 29683},
+  {32, 175, 29, 33, 29763},
+  {80, 175, 29, 33, 29763},
+  {208, 146, 24, 27, 29683},
+  {246, 146, 24, 27, 29683},
+  {220, 175, 29, 33, 29763},
+  {270, 175, 29, 33, 29763},
+  {56, 148, 23, 26, 29856},
+  {94, 148, 23, 26, 29856},
+  {32, 177, 28, 32, 29978},
+  {80, 177, 28, 32, 29978},
+  {208, 148, 23, 26, 29856},
+  {246, 148, 23, 26, 29856},
+  {220, 177, 28, 32, 29978},
+  {270, 177, 28, 32, 29978},
+  {108, 191, 111, 34, 30119},
+  {108, 189, 119, 36, 30444},
+  {100, 0, 116, 138, 30791},
+  {104, 90, 108, 63, 31478},
+  {159, 48, 14, 14, 31880},
+  {100, 0, 116, 144, 31917},
+  {100, 0, 116, 138, 32875},
+  {100, 0, 131, 146, 33936},
+  {100, 0, 118, 146, 35014},
+  {100, 0, 128, 146, 36139},
+  {100, 0, 119, 179, 37251},
+  {100, 0, 116, 138, 38572},
+  {104, 0, 121, 138, 39706},
+  {100, 0, 124, 146, 40923},
+  {104, 0, 124, 146, 42035},
+  {100, 0, 119, 146, 43378},
+  {104, 0, 127, 146, 44433},
+  {100, 0, 121, 146, 45760},
+  {100, 0, 116, 188, 46907},
+  {100, 0, 122, 146, 48105},
+  {93, 0, 123, 162, 49231},
+  {93, 0, 123, 163, 50531},
+  {100, 0, 118, 146, 51774},
+  {93, 0, 123, 162, 52896},
+  {100, 0, 118, 146, 54215},
+  {100, 0, 118, 146, 55344},
+  {89, 30, 140, 135, 56313},
+  {100, 0, 119, 148, 57499},
+  {100, 0, 119, 148, 58649},
+  {100, 0, 116, 167, 59859},
+  {100, 0, 116, 148, 61055},
+  {100, 0, 119, 144, 62320},
+  {91, 0, 128, 148, 63464},
+  {100, 0, 116, 148, 64793},
+  {100, 0, 116, 177, 66069},
+  {100, 0, 116, 157, 67311},
+  {100, 0, 118, 183, 68589},
+  {97, 0, 111, 138, 69907},
+  {93, 0, 110, 138, 70780},
+  {207, 88, 15, 15, 71677},
+  {207, 88, 15, 15, 71739},
+  {103, 90, 88, 150, 71795},
+  {103, 77, 91, 163, 72386},
+  {114, 30, 92, 56, 72995},
+  {114, 120, 92, 56, 73067},
+  {114, 98, 92, 78, 73139},
+  {99, 115, 190, 125, 73271},
+  {145, 103, 31, 41, 74260},
+  {136, 66, 184, 174, 74386},
+  {128, 56, 192, 184, 75521},
+  {74, 167, 211, 73, 76698},
+  {0, 106, 320, 134, 77441},
+  {113, 135, 74, 34, 91921},
+  {113, 135, 74, 34, 92021},
+  {142, 93, 133, 147, 78635},
+  {161, 101, 115, 139, 79280},
+  {60, 59, 197, 181, 79679},
+  {138, 92, 135, 148, 80809},
+  {57, 78, 198, 162, 81121},
+  {142, 94, 129, 146, 82150},
+  {100, 90, 164, 150, 82616},
+  {161, 91, 118, 149, 83114},
+  {119, 56, 158, 184, 83574},
+  {153, 100, 114, 140, 84139},
+  {113, 58, 151, 182, 84461},
+  {167, 90, 106, 150, 85078},
+  {143, 73, 149, 167, 85340},
+  {60, 57, 195, 183, 85611},
+  {228, 58, 25, 23, 86702},
+  {228, 58, 25, 23, 86810},
+  {16, 91, 288, 78, 86916},
+  {14, 120, 20, 40, 87029},
+  {36, 120, 20, 40, 87122},
+  {58, 120, 20, 40, 87215},
+  {80, 120, 20, 40, 87308},
+  {102, 120, 20, 40, 87401},
+  {124, 120, 20, 40, 87494},
+  {286, 120, 20, 40, 87587},
+  {264, 120, 20, 40, 87680},
+  {242, 120, 20, 40, 87773},
+  {220, 120, 20, 40, 87866},
+  {198, 120, 20, 40, 87959},
+  {176, 120, 20, 40, 88052},
+  {14, 120, 20, 40, 88145},
+  {36, 120, 20, 40, 88221},
+  {286, 120, 20, 40, 88297},
+  {264, 120, 20, 40, 88373},
+  {90, 94, 124, 58, 88449},
+  {104, 142, 8, 8, 88992},
+  {148, 142, 8, 8, 89006},
+  {192, 142, 8, 8, 89020},
+  {181, 97, 30, 30, 89034},
+  {104, 142, 8, 8, 89186},
+  {148, 142, 8, 8, 89200},
+  {192, 142, 8, 8, 89214},
+  {168, 112, 136, 56, 89228},
+  {16, 112, 136, 56, 89986},
+  {282, 128, 24, 28, 90744},
+  {285, 131, 2, 5, 90775},
+  {288, 131, 2, 5, 90780},
+  {292, 131, 2, 5, 90785},
+  {295, 131, 2, 5, 90790},
+  {298, 131, 3, 5, 90795},
+  {302, 131, 2, 5, 90801},
+  {285, 141, 2, 5, 90806},
+  {288, 141, 2, 5, 90811},
+  {292, 141, 2, 5, 90816},
+  {295, 141, 2, 5, 90821},
+  {298, 141, 3, 5, 90826},
+  {302, 141, 2, 5, 90832},
+  {46, 102, 16, 36, 90837},
+  {46, 102, 16, 36, 90895},
+  {76, 102, 16, 36, 90958},
+  {76, 102, 16, 36, 91016},
+  {106, 102, 16, 36, 91079},
+  {106, 102, 16, 36, 91137},
+  {136, 102, 16, 36, 91200},
+  {136, 102, 16, 36, 91258},
+  {166, 102, 16, 36, 91321},
+  {166, 102, 16, 36, 91379},
+  {196, 102, 16, 36, 91442},
+  {196, 102, 16, 36, 91500},
+  {226, 102, 16, 36, 91563},
+  {226, 102, 16, 36, 91621},
+  {256, 102, 16, 36, 91684},
+  {256, 102, 16, 36, 91742},
+  {88, 140, 20, 20, 91805},
+  {0, 0, 0, 0, 92116},
 };
-const uint32_t art_pal[PAL_COUNT] = {0x0,0x0,0xffffff,0x929292,0x242424,0xdb2424,0x2449db,0xdbffdb,0xffdb6d,0x24,0x240000,0x2400,0x240024,0x2424,0x242400,0x490024,0x492400,0x6d0024,0x242449,0x4924,0x492424,0x4949,0x244924,0x492449,0x6d2424,0x244949,0x6d2449,0x494924,0x246d24,0x494949,0x6d4924,0x922449,0x246d49,0x496d24,0x6d4949,0x496d49,0x924949,0x6d6d49,0x92496d,0xb64949,0x6d6d6d,0x499249,0x926d49,0xb6496d,0x49926d,0x926d6d,0x6d9249,0x6d926d,0xb66d6d,0x92926d,0xdb6d6d,0x6db66d,0xb6926d,0x92b66d,0xb69292,0xdb926d,0x92b692,0xb6b66d,0xdb9292,0xb6b692,0xb6b6b6,0x92db92,0xdbb692,0xdbb6b6,0xb6db92,0xffb692,0xb6dbb6,0xffb6b6,0xdbdb92,0xdbdbb6,0xdbdbdb,0xffdbb6,0xdbffb6,0xffdbdb,0xffffb6,0xffffdb};
-const int16_t slot_rect[2][8][4] = {{{10,154,70,51},{60,156,67,51},{-3,210,54,33},{30,204,84,39},{202,155,55,55},{250,156,51,50},{223,202,59,41},{260,76,63,167}},{{79,99,30,26},{105,99,34,25},{64,113,34,34},{94,112,38,35},{181,98,38,26},{208,98,38,26},{187,114,42,30},{216,112,46,33}}};
-const int16_t dslot_rect[8][4] = {{43,145,40,36},{82,145,46,35},{17,168,48,48},{64,166,50,50},{193,144,51,36},{231,145,52,36},{202,168,61,46},{248,169,63,45}};
+const uint32_t art_pal[PAL_COUNT] = {0x0,0x0,0xffffff,0x929292,0x242424,0xdb2424,0x2449db,0xdbffdb,0xffdb6d,0x160c22,0xe1228,0x300a16,0x1a161e,0x28160e,0xa2226,0x28143a,0x1e222a,0x561224,0x10363a,0x1e284c,0x462816,0x462e10,0x3e1e54,0x184c4e,0x801e32,0x14505a,0x3a404e,0x6a4022,0x582c70,0x504c5c,0x784836,0x286864,0x78541e,0xc8282c,0xac3442,0x78428c,0x3c60aa,0x926034,0x626a7c,0x46963c,0xb0802e,0x967e60,0xb07456,0x28aab4,0x965adc,0xf06e28,0xbe6e78,0xf06056,0x82c85a,0x78a0dc,0x96a0b2,0xdeb050,0xe2a884,0xceb892,0xf0aa82,0x96c8d2,0xc8a0fa,0xffc450,0xfade96,0x96faf0,0xf0e2c4};
+const int16_t slot_rect[2][8][4] = {{{21,157,44,41},{69,158,44,41},{1,198,46,43},{52,198,46,43},{207,158,44,41},{254,157,44,41},{224,198,46,43},{275,198,46,43}},{{84,97,24,22},{110,97,24,22},{73,112,26,26},{102,112,26,26},{189,97,24,22},{215,97,24,22},{194,112,26,26},{223,112,26,26}}};
+const int16_t dslot_rect[8][4] = {{49,143,34,33},{87,143,34,33},{23,172,42,39},{71,172,42,39},{201,143,34,33},{239,143,34,33},{211,172,42,39},{261,172,42,39}};
 const uint8_t art_data[] = {
-4,225,95,233,153,31,142,71,34,40,143,156,103,87,232,232,135,231,184,144,57,228,63,3,113,86,234,20,225,234,136,123,
-60,206,207,12,233,189,64,174,40,179,52,245,154,226,93,250,79,240,252,71,154,116,132,107,246,134,34,25,15,224,84,114,
-126,28,238,44,136,238,246,66,197,186,236,155,50,194,240,57,106,249,118,202,154,210,69,190,92,115,180,29,3,0,14,169,
-136,145,33,70,26,243,149,8,8,232,229,63,11,179,18,14,102,137,42,43,67,12,90,169,128,220,118,243,64,89,138,49,
-142,175,194,245,75,251,113,70,116,207,170,228,208,70,173,240,54,80,57,25,198,95,60,53,114,77,223,186,242,1,237,175,
-152,238,94,244,244,193,224,49,255,131,68,226,19,81,48,19,210,112,100,140,141,95,214,213,94,171,160,46,209,103,139,22,
-143,69,119,199,149,247,1,43,153,234,64,183,106,111,130,125,187,161,163,151,40,99,212,82,71,179,195,129,143,64,67,245,
-197,213,240,40,31,84,145,224,105,181,88,226,215,51,187,9,242,78,13,83,127,117,16,228,45,91,41,180,137,217,35,124,
-161,93,214,239,185,244,156,110,217,193,167,181,187,128,151,206,29,111,164,51,133,37,178,203,195,33,198,145,75,66,31,51,
-198,151,166,16,213,26,31,216,171,21,229,222,15,237,76,228,231,75,230,251,145,248,159,243,254,158,149,164,127,86,13,105,
-164,103,5,134,62,60,149,99,216,203,185,179,255,140,77,82,139,22,17,147,57,77,62,255,55,44,236,103,174,238,92,18,
-249,194,154,62,102,194,254,146,86,17,139,164,171,77,63,171,48,145,53,60,58,102,79,164,194,68,153,48,125,116,21,245,
-185,21,115,250,184,176,112,22,63,181,74,100,25,56,143,92,171,62,174,78,12,50,71,203,210,239,180,207,186,192,108,20,
-98,192,8,119,195,195,31,207,162,227,180,120,158,3,40,141,37,154,132,137,132,248,181,159,122,200,68,13,231,95,23,48,
-240,69,162,82,194,27,229,72,155,230,4,64,148,125,85,100,183,223,196,52,92,155,97,47,39,41,23,176,143,221,95,144,
-108,217,106,104,10,247,205,28,106,184,28,8,7,169,236,134,211,34,78,63,241,100,154,144,121,120,197,80,32,94,194,193,
-121,20,231,233,216,252,133,126,222,215,73,65,158,231,170,136,78,110,148,34,120,56,237,202,136,47,183,119,30,233,144,206,
-75,111,215,11,146,214,248,157,50,182,63,100,25,66,98,213,104,188,83,213,71,87,235,34,46,245,81,109,25,31,95,248,
-182,55,36,71,171,81,82,119,173,108,55,136,180,242,51,236,76,55,62,87,123,222,156,79,2,22,13,26,4,62,37,116,
-209,194,213,47,200,154,168,201,11,186,228,99,17,218,244,203,81,241,16,125,231,143,164,204,102,138,12,194,85,250,126,19,
-169,130,146,28,51,179,3,148,239,71,45,172,252,63,97,81,194,236,163,20,62,235,227,249,183,44,130,143,109,37,145,18,
-29,42,207,200,248,205,84,182,140,146,234,248,135,133,42,104,19,229,94,192,144,255,242,152,141,79,19,113,34,101,77,123,
-16,22,170,176,61,114,166,0,143,198,127,2,218,173,82,16,111,190,117,89,12,68,15,197,114,69,55,202,231,54,137,94,
-167,183,239,136,40,127,225,132,90,234,35,219,16,17,72,172,171,43,9,243,196,84,188,229,233,32,245,116,9,46,45,137,
-152,157,16,65,7,207,88,171,92,165,54,246,113,250,122,172,131,47,102,91,121,247,238,220,209,237,106,175,135,207,200,78,
-108,236,80,126,120,188,233,122,103,67,234,204,84,206,247,185,133,237,41,222,207,44,2,131,113,75,238,7,20,42,190,203,
-97,156,201,61,116,75,87,208,159,97,219,235,86,143,231,242,235,173,222,178,23,223,235,164,242,127,195,224,104,184,44,232,
-100,236,233,155,254,216,189,228,155,157,83,254,49,219,185,162,79,101,124,32,17,122,212,191,135,132,150,38,111,90,219,134,
-174,123,21,185,84,106,144,119,98,4,139,119,116,191,123,18,223,171,29,183,187,1,52,94,158,94,82,81,81,177,253,76,
-84,255,117,231,79,236,251,161,73,31,113,201,188,74,100,250,19,86,158,239,10,124,63,87,149,211,10,111,192,51,172,129,
-79,79,38,124,210,34,224,60,59,117,111,162,216,167,138,156,128,64,10,80,201,70,216,62,37,211,82,3,47,146,175,236,
-89,122,29,143,31,240,234,72,249,66,92,82,7,128,137,77,5,38,156,245,114,15,128,182,216,34,38,253,126,188,185,68,
-200,126,17,178,176,32,171,149,69,114,153,120,155,101,28,213,54,0,188,158,128,98,168,229,230,40,141,81,108,20,16,76,
-165,199,43,176,185,121,95,159,33,193,92,143,252,5,43,66,132,217,160,6,129,222,187,209,128,147,108,10,93,153,98,228,
-130,205,50,29,24,235,17,43,79,198,35,160,25,86,93,173,162,117,182,227,49,79,158,189,158,42,48,98,56,249,200,6,
-32,122,89,39,255,223,2,204,193,225,36,228,186,51,57,194,46,109,123,132,128,214,106,76,186,81,36,129,246,155,112,240,
-142,110,111,90,139,149,118,63,197,178,148,160,30,155,52,12,235,248,172,172,250,223,121,57,213,72,20,32,42,66,199,128,
-251,220,210,252,197,127,225,173,133,178,250,101,174,160,167,255,201,125,230,113,84,7,98,133,102,148,13,62,4,78,26,83,
-11,114,30,150,150,205,247,6,178,176,78,138,97,252,108,152,34,192,47,13,224,9,184,254,54,27,70,173,181,27,46,217,
-62,141,93,3,49,126,191,43,164,254,211,175,67,26,61,217,81,47,69,170,161,233,100,66,78,13,169,53,217,240,63,161,
-253,51,223,140,226,217,60,124,155,108,48,69,121,171,184,43,13,239,82,181,171,39,111,182,82,107,242,105,211,198,197,12,
-44,66,107,84,164,50,89,208,224,185,251,53,16,250,186,219,114,36,106,148,61,27,131,116,205,59,28,15,188,89,218,16,
-146,93,25,129,126,200,237,84,38,202,194,47,112,51,19,56,214,140,155,16,64,61,28,142,203,163,244,82,233,49,119,130,
-229,88,54,223,212,214,95,179,26,87,246,99,143,243,58,111,216,166,35,233,98,253,168,29,179,230,18,61,45,154,122,173,
-21,248,245,48,15,216,184,28,142,145,173,252,243,58,178,37,104,206,91,105,235,226,154,6,146,221,33,191,67,195,119,67,
-105,186,203,153,85,194,56,17,135,174,224,4,226,51,116,123,24,85,113,14,3,170,184,127,3,90,220,236,38,46,165,31,
-155,183,240,232,82,144,153,0,70,86,239,72,57,26,98,64,145,162,184,207,254,236,155,109,243,120,47,153,99,108,206,104,
-176,126,160,3,125,216,188,183,226,58,188,154,146,138,32,26,29,205,0,40,151,232,184,45,233,146,90,114,93,60,163,37,
-239,251,143,135,166,118,147,105,41,193,210,180,149,209,238,79,97,24,230,233,91,46,241,250,185,217,10,8,134,144,120,206,
-229,113,49,206,98,84,150,207,214,204,59,57,65,51,174,115,40,164,157,49,171,14,116,119,67,3,199,32,122,53,145,130,
-196,247,42,63,18,26,177,13,120,164,50,43,181,215,173,30,91,69,166,147,51,208,239,217,5,235,233,148,156,54,249,160,
-38,116,72,86,218,200,249,145,154,169,212,6,63,230,227,100,170,227,4,87,137,145,58,53,195,247,39,189,217,225,18,51,
-137,6,141,70,164,2,169,220,25,233,125,184,66,95,49,225,79,79,48,78,112,166,251,176,158,222,159,250,2,171,212,83,
-220,172,186,97,132,133,246,108,105,152,155,73,250,150,219,190,64,83,241,105,124,159,158,11,83,136,12,157,66,166,146,253,
-76,35,34,210,133,200,186,18,142,196,23,252,39,204,97,220,126,116,112,192,129,182,100,231,190,25,17,0,201,221,81,128,
-191,8,225,101,169,62,218,158,125,159,53,152,112,63,233,185,213,231,220,96,167,139,42,179,161,148,37,16,170,230,130,29,
-80,169,212,177,234,5,99,135,110,93,200,237,102,185,230,147,181,165,85,101,182,77,155,214,4,173,90,102,219,117,59,9,
-155,247,191,177,154,150,164,172,231,38,250,214,122,0,134,48,30,161,10,133,107,24,251,197,119,162,67,166,213,140,51,177,
-159,194,210,176,105,194,29,31,122,50,140,253,8,208,67,6,176,236,40,203,254,106,244,30,136,41,167,156,51,199,228,220,
-220,60,175,6,98,231,141,76,184,246,166,241,93,186,226,169,86,137,6,112,87,196,168,138,166,62,82,169,186,236,143,237,
-58,248,89,37,183,186,145,204,128,167,40,22,60,204,117,61,33,163,173,20,203,24,99,224,100,178,134,130,200,81,31,201,
-47,14,243,135,2,230,198,235,37,197,174,211,253,81,15,222,150,75,22,26,208,229,95,146,75,104,47,140,39,100,223,163,
-114,214,216,229,96,89,68,13,110,206,172,232,41,251,197,47,197,121,63,186,251,250,233,68,253,19,115,71,228,123,145,88,
-47,87,157,81,17,72,28,40,247,246,181,14,148,58,186,10,186,170,110,58,23,227,250,97,97,216,140,105,94,57,159,231,
-198,172,205,144,207,43,33,126,243,139,142,79,96,46,121,129,74,218,203,110,78,26,17,147,200,115,147,247,25,168,250,112,
-232,202,71,15,79,58,77,228,210,59,192,105,156,193,225,5,64,225,204,28,20,171,3,183,109,144,98,144,197,154,199,41,
-169,238,64,205,185,147,141,18,110,34,177,176,30,119,175,5,171,191,1,5,117,139,146,41,152,240,141,154,80,157,92,14,
-198,8,152,253,201,95,137,18,230,136,161,36,207,206,143,74,87,228,96,47,174,142,52,100,69,160,48,106,240,11,225,106,
-231,91,50,241,2,102,18,123,46,197,170,85,120,208,93,235,101,231,10,47,19,45,199,107,178,186,74,194,37,50,65,82,
-65,218,189,201,71,251,68,66,201,153,178,153,75,98,82,100,23,14,69,205,77,119,51,171,211,241,180,51,37,211,205,235,
-43,45,252,29,8,234,10,125,92,96,200,236,129,83,75,1,18,104,41,132,196,35,227,0,37,150,225,169,185,232,91,189,
-125,149,238,238,127,250,134,12,148,84,160,78,186,3,94,102,74,122,41,226,225,219,123,1,193,214,153,208,156,98,172,146,
-218,80,72,169,181,70,216,158,137,59,189,22,63,168,198,149,57,85,111,237,97,160,252,0,205,254,203,116,80,180,64,100,
-118,92,49,217,122,185,106,248,153,61,240,254,140,11,155,218,220,153,57,21,140,125,60,90,97,159,179,126,125,137,139,103,
-206,91,174,110,208,219,36,3,253,55,236,184,108,222,34,67,0,167,111,176,225,56,75,113,249,254,5,31,24,14,166,249,
-124,3,127,244,189,36,107,26,24,61,88,251,33,40,77,113,24,82,58,154,113,217,40,123,54,41,118,18,232,146,186,162,
-173,84,137,30,41,243,25,201,239,110,150,3,233,171,18,222,45,212,112,191,184,95,241,235,202,133,43,74,69,142,224,51,
-124,206,251,232,204,241,152,227,169,198,10,155,4,37,153,93,68,77,201,211,39,167,5,199,119,240,215,99,33,249,162,176,
-87,185,209,170,181,147,111,9,20,244,118,64,219,155,74,227,136,164,216,39,190,120,146,240,179,7,52,98,43,152,217,141,
-20,232,43,4,151,109,141,191,210,132,152,57,66,75,41,80,121,213,7,120,132,14,243,223,99,57,247,38,42,197,132,14,
-112,173,185,52,102,29,119,140,94,81,152,214,82,137,199,135,224,39,133,107,6,185,142,160,188,166,212,64,71,10,215,255,
-6,39,199,242,150,105,221,232,97,67,227,224,47,132,33,94,146,3,197,41,149,22,77,51,87,159,240,141,164,96,113,155,
-135,235,40,121,162,183,153,171,200,129,13,85,248,64,187,78,55,48,32,53,86,255,120,23,22,135,242,230,243,243,223,172,
-235,141,251,156,25,109,254,220,244,26,57,94,21,154,107,71,238,205,120,82,166,232,66,42,224,110,252,73,126,205,165,116,
-1,240,20,184,99,209,127,156,98,96,110,245,220,141,217,124,163,1,124,13,105,173,223,213,167,105,129,238,51,152,153,130,
-10,66,24,209,200,3,202,115,41,156,220,194,123,153,140,100,142,110,163,92,25,113,103,189,13,168,248,33,20,252,192,243,
-159,135,185,137,202,119,144,68,8,207,215,242,105,123,64,203,87,175,128,255,160,138,109,101,148,118,170,112,252,204,126,140,
-156,105,74,54,230,11,25,134,132,8,222,40,239,57,125,99,191,53,227,144,40,165,141,8,56,215,242,29,241,13,44,24,
-71,67,142,157,116,197,151,120,254,150,8,143,120,194,148,12,181,35,240,56,91,79,167,235,61,10,230,223,50,190,142,40,
-17,186,2,229,221,70,34,105,157,235,52,163,228,66,90,59,196,0,43,37,253,49,4,129,137,149,168,226,62,236,201,22,
-229,199,7,224,222,232,254,15,171,192,12,78,250,37,19,233,138,174,67,222,251,112,124,40,114,93,122,147,235,244,34,121,
-188,4,66,140,46,96,164,196,80,3,31,19,92,27,116,129,89,165,162,124,38,238,216,134,15,86,66,67,121,18,6,196,
-13,56,211,254,39,102,157,172,220,178,115,60,78,48,120,9,126,159,224,209,187,58,134,42,187,219,172,40,225,206,36,231,
-215,78,36,141,32,43,173,45,178,5,101,173,229,27,62,234,174,229,90,52,145,137,197,118,211,38,47,139,76,178,135,87,
-79,182,214,2,229,217,236,89,157,153,75,73,71,67,176,100,72,215,235,225,111,31,74,57,234,127,63,202,206,136,4,237,
-159,224,107,120,109,143,135,38,231,19,202,94,70,21,175,181,43,41,27,242,143,51,26,151,146,126,61,188,145,192,87,109,
-77,81,155,207,98,197,214,58,117,215,155,222,220,236,3,141,193,213,110,18,202,62,137,20,238,118,98,176,185,141,234,186,
-193,176,98,1,207,145,116,102,172,175,130,247,87,182,5,250,8,74,102,97,81,125,62,159,136,197,205,115,214,99,86,131,
-101,23,44,150,46,198,171,224,78,138,64,236,39,92,205,172,53,112,35,238,19,182,81,113,79,201,195,16,14,121,141,204,
-3,170,238,111,142,49,179,93,234,179,132,83,12,94,233,40,117,164,44,43,140,192,228,249,240,97,180,55,104,35,115,225,
-55,137,115,155,155,95,130,231,228,53,80,167,46,107,241,45,159,14,94,116,61,220,198,148,55,200,213,187,78,1,68,255,
-136,9,90,158,73,104,87,84,112,171,169,172,160,23,38,140,187,26,152,205,128,103,67,114,151,9,101,228,147,100,84,2,
-160,160,140,248,128,4,81,170,123,199,107,157,0,65,187,153,143,57,179,109,209,79,4,55,77,126,54,194,81,233,140,121,
-201,95,83,140,112,103,190,227,87,247,250,122,198,249,230,93,197,171,226,78,14,246,56,248,79,108,253,187,25,143,109,97,
-148,187,136,192,226,128,182,89,196,129,134,74,67,254,28,192,200,169,94,160,239,81,78,83,53,252,180,30,50,152,194,237,
-183,161,42,66,173,54,210,195,60,236,47,68,27,92,53,171,17,145,196,214,240,6,52,197,68,128,1,117,172,29,141,176,
-228,36,164,65,93,122,247,185,39,205,174,121,140,251,43,226,189,121,142,175,222,31,192,103,106,115,67,5,88,239,164,169,
-188,75,95,71,71,185,7,6,139,100,78,33,69,67,218,175,60,187,136,251,174,133,250,56,252,135,9,147,57,184,128,253,
-188,240,57,21,226,28,5,3,190,28,168,25,234,196,169,107,218,48,197,217,230,212,47,148,159,227,115,181,64,224,138,178,
-18,120,81,27,86,64,19,151,38,54,118,57,239,107,23,12,101,109,80,164,237,66,193,55,251,36,58,200,180,0,86,94,
-103,32,87,205,110,58,225,130,31,122,163,240,30,72,213,181,109,147,205,211,74,199,122,81,240,175,132,255,190,0,195,56,
-75,240,133,37,208,173,114,181,153,218,58,240,217,1,30,15,174,230,139,12,81,97,193,142,227,45,47,74,254,27,44,67,
-131,70,253,12,62,108,39,121,239,75,225,62,37,85,215,192,67,147,253,108,6,112,109,218,137,193,229,179,122,180,105,191,
-58,165,135,68,76,40,44,168,235,131,129,224,219,167,75,244,155,253,105,8,14,130,226,200,144,101,169,224,62,135,53,248,
-18,4,124,34,94,138,123,21,6,123,175,14,102,164,33,203,127,70,227,39,104,216,85,85,85,198,98,139,181,211,7,137,
-61,121,228,115,120,243,97,94,156,120,220,91,212,68,132,187,80,74,91,124,119,15,241,78,83,69,221,63,122,23,45,240,
-12,179,8,58,12,234,169,229,187,83,188,156,142,126,247,164,57,175,216,4,14,126,38,194,231,216,238,98,32,204,239,182,
-154,39,40,93,38,237,71,178,135,142,179,245,148,168,225,203,187,66,170,18,44,160,110,225,102,28,98,154,38,99,226,78,
-23,1,220,187,231,145,70,123,24,203,96,21,136,141,213,46,117,199,21,154,242,124,154,59,54,67,55,177,251,57,181,178,
-249,254,226,141,59,224,12,151,47,50,27,63,49,243,232,179,50,151,101,126,49,148,67,252,12,130,194,253,244,60,121,254,
-86,4,180,34,70,42,32,86,249,190,0,19,145,50,28,125,64,71,199,96,48,124,14,39,148,28,143,120,12,92,173,215,
-236,86,7,1,112,79,137,145,86,158,18,73,203,73,106,22,183,163,3,70,10,235,87,17,247,217,93,214,168,69,215,36,
-214,171,1,127,130,194,63,90,252,243,104,183,46,58,251,128,198,243,164,50,143,215,125,81,56,245,77,144,210,73,140,96,
-224,55,213,52,13,209,246,109,34,49,146,82,19,3,87,113,52,51,166,152,20,40,42,194,182,3,145,237,9,116,42,165,
-88,210,116,63,170,149,160,90,84,184,209,147,229,16,129,36,34,209,153,70,76,208,75,85,36,144,113,150,219,206,151,139,
-110,118,200,33,35,12,119,109,188,234,15,107,225,162,172,153,243,180,119,167,7,64,14,92,247,116,114,0,124,88,114,172,
-60,174,191,20,103,150,11,202,169,231,75,91,246,194,213,106,244,80,207,179,20,93,79,30,114,139,239,108,116,152,63,44,
-52,124,72,221,160,88,85,102,83,229,194,131,107,160,57,222,116,100,18,102,66,217,64,170,16,174,147,209,219,41,187,182,
-215,243,65,208,151,183,196,233,210,244,136,51,219,7,171,58,12,68,55,164,73,201,244,12,245,224,137,46,229,4,137,205,
-30,224,67,52,73,202,204,224,84,28,249,98,102,170,174,242,199,25,120,226,201,121,37,11,247,173,84,180,84,102,159,119,
-35,170,228,188,43,218,59,141,85,171,249,69,59,61,155,48,141,166,179,125,109,118,175,29,14,182,56,36,220,112,208,182,
-195,27,25,208,50,102,37,115,11,104,16,36,253,187,254,32,64,166,254,219,79,36,121,156,38,61,239,128,91,243,162,66,
-67,198,208,134,80,11,132,84,198,101,241,204,38,78,1,118,205,53,90,6,63,180,226,3,155,188,50,26,175,152,59,20,
-10,59,30,22,153,216,0,243,51,20,181,209,213,60,22,46,207,123,247,172,47,83,41,4,99,153,43,203,39,255,105,214,
-138,250,87,153,58,159,99,109,240,155,220,50,85,133,216,251,16,132,107,38,122,244,210,183,52,238,171,107,37,105,12,56,
-100,82,239,145,208,193,82,242,138,25,188,223,139,53,222,132,164,159,246,23,184,84,243,121,5,174,185,241,235,89,39,72,
-106,209,67,181,116,43,69,251,37,97,211,166,70,181,216,1,32,207,17,95,87,191,101,81,58,216,128,198,185,15,109,21,
-121,212,232,174,199,40,230,21,164,64,52,168,229,92,197,4,35,44,112,93,81,76,209,254,153,105,222,73,21,59,237,64,
-43,78,59,53,194,161,195,118,38,36,208,96,40,49,206,174,96,32,145,46,9,42,126,242,35,113,139,33,209,82,150,192,
-161,74,154,183,207,51,193,135,56,147,249,215,50,93,161,13,221,42,184,146,229,224,91,192,23,222,255,183,18,116,228,36,
-14,96,35,6,158,213,205,200,106,89,229,250,47,228,35,247,167,124,80,119,226,10,229,178,221,190,45,70,23,138,61,148,
-118,98,224,216,152,85,44,90,136,1,130,110,132,50,119,125,185,110,8,126,107,96,139,27,44,27,162,230,30,158,15,186,
-137,200,136,193,130,190,148,75,15,111,17,149,137,234,182,121,59,50,50,9,135,56,47,190,73,249,216,68,2,153,198,100,
-21,100,243,225,221,42,7,155,241,73,175,64,127,130,44,58,3,135,93,84,115,134,128,129,56,68,83,250,187,123,243,126,
-10,217,21,249,32,209,125,198,94,167,157,179,242,67,56,198,82,213,94,213,83,107,79,137,23,216,78,69,26,131,89,22,
-22,75,218,84,39,11,47,0,55,225,250,186,75,148,113,232,116,237,21,255,18,192,110,2,4,125,12,168,225,67,67,153,
-11,74,98,74,109,162,233,90,70,32,65,184,65,12,60,60,170,234,120,56,87,125,10,163,124,197,50,45,82,3,105,138,
-206,101,178,12,210,64,185,238,182,204,154,78,50,40,88,140,52,176,210,154,152,215,167,137,242,158,117,151,126,205,24,221,
-233,202,188,188,226,25,40,248,3,115,111,160,78,118,140,235,194,197,71,200,184,134,16,63,85,146,122,119,27,167,158,78,
-162,11,218,168,52,195,235,13,29,222,211,215,45,185,197,144,114,162,99,156,34,221,3,136,147,252,76,92,122,190,46,197,
-162,243,251,181,70,250,250,220,13,132,99,188,39,97,56,152,148,186,74,46,29,38,102,229,83,105,239,124,189,172,28,62,
-38,132,195,210,66,190,61,29,89,13,65,59,107,60,85,180,47,238,158,237,235,18,163,68,240,223,216,82,134,234,248,87,
-251,22,67,90,208,110,112,76,153,110,3,212,39,24,184,238,150,182,125,6,167,219,161,50,180,113,21,163,193,185,145,50,
-76,227,36,211,30,115,171,98,70,78,44,13,88,45,209,81,151,115,203,114,123,1,253,89,250,70,77,101,215,59,245,184,
-183,38,53,220,148,136,25,251,108,188,111,55,156,43,6,194,66,164,1,14,34,101,109,68,235,32,139,148,118,177,101,153,
-46,147,214,207,202,130,19,115,94,86,190,96,149,150,57,154,120,42,242,51,165,11,46,96,222,57,92,20,42,149,42,213,
-249,54,88,30,99,188,52,108,240,183,222,50,110,86,4,116,21,154,226,30,179,243,77,147,110,243,231,66,56,69,105,97,
-90,247,208,161,2,253,112,156,252,162,247,87,239,70,33,65,38,128,91,52,11,20,236,3,54,129,171,244,241,238,172,130,
-183,217,165,212,75,111,114,109,215,222,65,188,88,104,177,140,66,106,119,231,122,178,205,106,160,45,79,157,180,70,144,24,
-31,67,233,116,238,161,190,224,182,205,208,3,66,225,29,70,2,38,131,161,233,179,170,97,200,84,139,28,106,22,11,161,
-85,85,239,5,243,44,109,31,193,8,232,83,248,136,137,41,165,231,75,88,137,177,165,170,172,205,182,17,255,54,71,163,
-182,55,8,125,226,76,205,213,166,138,95,8,89,118,121,250,103,194,170,187,242,217,109,23,75,143,168,188,242,48,191,66,
-186,13,75,216,30,79,139,248,197,98,247,131,215,220,211,168,215,189,222,251,165,243,11,80,42,196,59,29,173,40,201,45,
-216,109,12,87,223,234,182,146,205,255,217,125,93,177,198,89,98,19,121,161,121,45,173,179,28,147,182,165,114,211,160,51,
-192,43,95,68,123,56,148,139,162,244,252,91,9,141,241,129,111,175,207,183,37,245,244,23,37,170,81,210,213,164,240,201,
-236,176,61,157,152,182,233,63,65,115,132,106,21,183,82,48,136,14,18,186,38,92,131,119,245,178,188,20,190,56,184,210,
-17,67,187,20,169,91,88,214,6,45,225,82,99,62,3,120,44,124,57,226,158,33,212,193,182,168,134,117,5,21,125,145,
-67,217,227,246,193,241,196,192,221,226,8,83,98,185,94,237,62,154,96,179,4,245,21,253,137,118,221,5,191,222,177,167,
-163,105,118,210,189,216,5,118,238,232,192,33,190,127,195,69,243,8,55,155,139,213,89,110,15,37,172,90,13,184,221,175,
-225,207,164,159,89,216,144,89,8,3,91,91,163,102,5,103,60,46,232,235,74,18,132,29,179,11,234,167,91,44,193,169,
-11,80,207,105,123,5,82,213,60,97,220,40,198,73,235,145,222,197,19,38,46,92,92,128,123,181,224,12,16,151,149,14,
-50,15,231,33,150,195,113,235,119,98,146,148,28,159,39,248,3,162,16,229,180,175,125,217,72,12,145,30,159,51,252,202,
-5,229,50,201,171,146,122,84,64,77,89,98,116,20,61,253,73,177,96,160,249,160,139,78,199,110,90,156,120,11,239,239,
-243,244,87,208,93,13,52,144,95,58,120,201,235,230,241,127,93,61,128,171,248,48,128,225,11,103,33,60,123,202,174,95,
-2,247,249,79,165,117,54,29,95,250,220,39,44,99,67,53,199,157,168,184,185,153,199,234,235,32,138,155,164,76,234,165,
-41,76,215,210,118,41,158,58,119,205,197,125,98,29,109,223,70,56,98,17,186,100,191,42,224,193,25,100,182,151,71,84,
-144,135,172,105,179,121,15,64,33,197,14,142,26,65,58,142,160,20,144,139,43,103,185,195,84,181,194,2,217,242,197,59,
-47,204,173,247,224,215,77,163,189,168,52,230,13,230,42,249,115,234,236,159,163,36,126,236,190,207,131,127,222,119,239,93,
-84,195,242,213,230,170,106,30,191,197,242,224,106,86,245,238,27,20,216,45,225,225,19,90,45,108,178,160,132,174,185,154,
-214,36,85,253,226,244,245,153,93,77,170,250,120,133,220,159,33,150,174,49,59,110,62,33,186,211,98,238,138,161,135,249,
-116,230,231,109,71,153,3,235,130,2,46,106,75,11,13,188,99,83,96,182,58,173,108,23,181,69,187,85,217,137,203,115,
-38,229,150,162,78,106,123,41,81,96,16,127,252,60,82,189,57,119,215,15,80,89,197,229,229,143,253,34,247,31,115,109,
-35,27,95,213,85,238,110,73,179,133,197,234,122,82,148,142,221,115,186,44,163,36,211,231,113,19,237,228,165,124,89,36,
-62,153,199,151,192,140,217,56,8,126,13,150,217,216,141,201,3,177,143,248,108,118,111,86,101,118,185,123,121,135,154,27,
-19,72,98,152,178,239,8,166,143,16,5,215,237,16,240,233,215,211,79,25,91,128,171,130,136,66,222,22,31,18,48,144,
-11,138,234,150,189,247,255,251,147,28,160,42,134,149,186,57,144,75,83,15,84,73,117,96,206,207,159,143,99,181,61,240,
-215,74,43,97,104,62,231,158,180,244,218,220,208,116,49,132,56,153,227,221,45,13,88,203,172,70,161,200,29,132,37,162,
-63,188,84,166,88,76,78,71,205,136,77,14,54,219,177,11,6,207,168,168,123,76,54,123,197,118,17,228,144,240,17,49,
-10,70,136,238,3,248,20,102,35,86,42,136,52,44,224,241,28,175,146,248,79,112,160,135,158,200,130,173,22,129,230,0,
-92,202,216,223,212,165,165,221,193,42,135,213,51,5,95,146,60,51,177,147,104,223,12,54,91,19,125,21,151,71,194,78,
-55,215,31,10,110,240,198,30,115,77,234,40,212,103,6,250,30,30,247,87,211,191,9,161,225,192,109,235,221,20,21,86,
-12,61,144,91,208,242,168,114,244,199,43,222,255,186,161,49,119,10,33,0,53,173,95,23,8,189,14,6,46,84,75,46,
-56,180,121,15,75,180,170,153,195,171,109,206,41,6,18,81,182,8,143,155,163,119,8,217,219,19,118,57,213,93,219,190,
-61,59,221,15,57,41,50,171,154,146,121,63,166,241,87,61,110,250,45,213,30,60,188,53,58,165,4,89,79,194,1,118,
-61,135,102,102,30,239,54,6,19,111,35,232,205,5,122,178,43,107,27,60,121,19,76,79,121,233,130,23,219,11,20,96,
-190,15,115,101,102,237,244,86,215,41,99,244,57,229,73,241,101,208,9,184,176,112,253,92,165,170,0,205,162,127,128,196,
-117,240,31,49,202,130,177,108,27,238,76,145,64,202,90,154,95,185,34,238,185,155,186,94,99,105,94,42,173,20,49,243,
-160,42,189,41,78,176,141,126,59,212,171,124,252,55,72,93,111,30,27,82,227,90,158,21,197,52,122,198,29,140,241,222,
-95,138,4,182,146,135,39,53,4,224,209,253,139,178,196,246,127,25,98,230,85,155,145,107,44,22,90,235,36,183,42,252,
-232,214,91,73,48,244,32,32,159,5,111,156,221,92,241,5,156,227,7,11,201,194,79,44,148,14,186,66,249,94,8,156,
-63,140,188,102,176,247,219,124,240,129,181,234,31,249,23,222,37,95,64,242,63,133,22,229,48,187,180,201,211,169,6,242,
-103,189,189,71,238,210,130,179,52,171,50,130,216,249,82,212,148,223,12,84,119,80,183,151,61,24,161,0,157,116,215,77,
-231,217,241,126,175,29,77,215,19,52,173,57,33,119,211,164,61,38,86,158,8,53,33,229,131,90,143,144,182,67,239,199,
-175,27,221,214,235,222,128,109,40,151,253,228,164,172,34,245,201,176,119,173,238,202,169,6,161,6,174,6,53,220,104,211,
-117,47,249,116,117,17,37,111,198,99,161,165,108,22,253,106,106,150,232,175,144,98,202,185,169,119,147,130,165,185,181,219,
-144,255,213,65,200,8,23,85,98,64,33,42,210,170,254,101,83,182,172,241,168,165,89,249,194,183,212,163,99,115,186,233,
-252,254,181,37,49,165,183,169,58,129,40,56,99,195,149,156,241,101,77,228,132,86,221,207,165,252,140,205,146,228,230,184,
-168,163,194,194,147,184,56,188,211,253,233,77,246,167,96,67,202,91,109,212,83,52,55,130,114,129,59,78,131,53,8,162,
-0,125,105,210,30,243,34,62,14,241,253,12,142,161,111,49,153,32,61,105,14,103,201,207,88,234,64,91,245,93,218,250,
-173,135,255,88,77,72,213,187,246,42,80,31,20,189,181,235,175,30,84,80,97,251,248,157,255,160,138,214,244,12,64,175,
-4,235,66,150,72,145,123,193,131,179,104,152,131,4,11,103,74,199,16,111,84,211,94,251,182,228,38,59,46,192,166,118,
-241,180,14,201,236,68,98,79,116,135,191,106,12,246,24,97,134,141,72,37,119,245,84,202,191,211,79,5,122,85,112,14,
-89,144,190,105,121,88,75,149,164,115,131,224,35,35,230,219,77,156,238,147,148,94,184,23,20,215,131,154,231,101,117,236,
-143,60,53,2,188,95,195,179,166,110,198,94,67,239,30,23,140,182,133,148,114,75,205,30,59,208,157,40,70,110,207,23,
-216,229,72,42,179,220,163,245,203,43,208,135,106,213,213,234,212,84,133,21,132,45,229,69,1,89,50,47,113,58,114,173,
-54,229,133,122,133,133,28,29,219,225,178,46,194,107,76,94,182,81,143,235,96,184,76,115,136,17,205,193,60,109,102,96,
-170,4,144,44,61,210,179,22,234,38,250,181,181,252,161,168,248,0,215,124,79,57,179,174,232,235,78,96,255,104,229,209,
-237,241,194,25,234,19,165,61,216,233,244,143,31,0,186,113,69,77,233,193,140,60,216,213,229,25,117,171,162,177,49,250,
-88,160,160,166,82,13,146,73,27,167,103,171,38,0,53,75,149,142,28,91,110,47,157,49,130,161,111,28,88,201,133,26,
-167,207,239,0,81,0,7,136,2,123,50,115,136,198,104,159,76,226,194,153,168,27,96,247,113,158,51,181,218,220,159,70,
-52,87,214,35,106,89,207,196,161,138,89,166,111,39,102,221,68,146,148,79,2,107,169,161,154,234,14,107,66,115,191,21,
-243,132,73,103,227,183,247,19,236,75,120,213,161,242,153,102,41,228,210,75,45,185,174,135,121,55,245,81,103,156,32,41,
-121,5,227,118,213,6,127,235,185,2,71,67,57,14,197,33,202,159,191,185,19,223,100,79,163,39,242,193,21,165,149,90,
-215,211,175,233,28,104,156,52,222,97,87,114,57,111,127,188,92,77,214,157,132,73,68,95,179,175,115,198,130,236,193,113,
-86,16,221,207,155,113,205,45,93,29,17,81,81,67,132,243,130,216,164,140,159,143,31,198,18,137,166,202,141,74,207,250,
-237,154,149,42,11,23,9,187,161,156,190,50,101,72,17,29,109,108,67,153,0,182,49,47,37,17,50,219,115,82,131,51,
-167,76,127,59,19,91,156,0,254,34,172,249,123,208,174,132,53,144,12,181,153,142,246,44,98,28,234,41,173,250,249,189,
-59,30,86,134,177,79,68,95,73,33,133,163,184,238,167,78,109,190,108,216,16,177,229,76,159,37,239,141,173,224,178,92,
-212,16,241,20,56,90,110,234,139,51,153,178,200,56,83,97,154,14,128,196,173,19,251,165,214,197,158,140,64,38,241,253,
-240,124,20,190,62,10,29,59,89,236,255,115,221,99,244,220,132,16,34,246,110,156,200,51,36,32,32,147,32,212,80,120,
-178,182,99,125,131,239,225,28,142,181,88,131,85,129,227,119,224,240,237,174,69,253,159,28,212,41,13,82,227,245,216,78,
-154,7,192,251,26,138,11,67,153,65,191,18,156,155,90,29,212,7,127,234,231,172,240,161,223,215,231,19,241,221,124,101,
-96,133,196,81,44,253,89,14,159,90,110,28,54,81,171,230,199,47,58,232,88,177,249,209,102,9,91,37,32,44,96,135,
-86,191,97,180,163,87,44,144,106,206,207,184,60,133,205,149,149,186,35,47,255,239,134,151,172,172,146,19,171,23,139,128,
-112,113,34,8,113,192,125,193,18,18,82,150,78,140,20,33,202,30,84,213,121,107,22,67,144,244,246,145,147,176,247,254,
-113,79,44,200,163,181,106,42,71,29,45,50,2,87,110,230,138,244,8,246,175,203,211,15,104,190,61,195,183,208,114,125,
-242,125,69,142,252,232,146,220,61,129,128,93,12,197,143,114,138,149,65,75,5,241,166,216,188,216,173,208,127,84,244,136,
-37,112,146,250,63,107,3,195,54,66,186,162,42,212,152,215,197,145,2,20,2,14,186,119,100,137,32,30,178,57,79,126,
-105,92,166,84,88,175,72,246,46,81,65,206,18,208,75,104,7,67,11,254,238,24,128,88,239,48,35,182,161,72,191,40,
-103,23,41,55,210,231,43,94,186,72,7,226,94,94,200,225,162,150,230,254,156,47,211,217,203,40,166,189,42,172,166,58,
-136,185,33,220,85,76,203,223,130,71,23,250,212,160,213,196,33,90,115,164,175,44,230,169,162,126,196,50,180,136,234,90,
-147,237,195,173,112,3,164,21,129,82,117,229,15,228,1,214,103,55,43,31,176,144,143,150,66,130,185,245,208,97,242,185,
-252,223,65,114,15,115,211,164,240,193,126,114,209,53,75,156,151,180,67,3,246,163,75,135,123,53,37,59,219,122,93,165,
-223,102,139,105,58,171,211,245,86,126,202,215,205,75,152,165,94,48,174,200,178,149,151,119,65,120,149,160,152,6,145,75,
-228,116,146,72,212,36,245,154,173,152,241,85,120,160,231,0,110,238,157,82,47,176,75,229,74,76,138,71,83,166,216,63,
-88,187,28,150,190,148,233,70,162,56,60,144,242,188,121,46,88,158,83,159,154,231,246,190,68,162,163,110,22,24,60,227,
-131,90,80,85,157,134,38,168,191,191,113,52,7,83,204,20,222,1,235,220,109,37,27,59,241,34,8,93,5,151,191,9,
-181,108,86,98,168,81,137,144,62,218,209,137,107,196,12,149,26,57,222,202,97,126,179,178,175,74,182,195,68,104,188,114,
-108,131,169,84,153,25,116,186,66,43,104,190,202,140,60,234,5,143,120,206,145,2,44,127,204,197,91,49,242,178,255,210,
-47,11,129,161,227,161,119,145,139,22,143,149,85,160,205,127,199,216,250,202,129,42,156,253,96,223,89,0,72,222,103,203,
-228,201,184,240,171,16,225,16,201,167,208,147,73,31,220,146,55,122,126,225,98,79,249,115,159,117,224,90,47,17,114,243,
-241,217,136,155,139,149,71,30,179,128,71,116,17,232,199,44,174,175,172,90,96,25,109,43,60,141,108,60,125,120,88,88,
-91,239,35,131,180,253,72,35,117,233,17,137,196,128,0,209,81,166,114,212,67,80,69,189,39,236,170,165,31,14,143,49,
-71,112,210,150,171,34,139,111,101,156,168,0,205,194,231,77,96,156,173,158,34,106,63,213,81,241,239,122,108,57,16,79,
-249,240,62,97,176,11,3,41,83,172,80,41,121,31,29,53,253,229,233,82,40,119,47,132,206,194,171,5,130,48,205,65,
-1,9,184,71,72,110,196,117,31,34,94,209,26,106,76,213,0,9,132,89,115,189,110,43,80,51,30,242,181,214,85,32,
-255,125,190,187,164,115,77,109,32,66,231,139,25,7,139,212,150,86,139,197,94,189,248,88,55,94,89,250,225,66,9,167,
-142,164,143,144,83,101,63,73,31,48,56,108,9,50,157,50,190,152,174,225,13,52,141,82,62,34,96,88,210,44,174,110,
-160,138,207,4,111,48,253,160,67,16,158,20,240,16,131,181,87,60,41,17,138,2,87,231,15,9,14,3,129,98,206,137,
-229,137,12,109,232,149,33,193,157,160,106,64,185,226,63,113,145,232,214,178,220,43,166,95,111,162,86,61,101,235,239,32,
-248,121,237,76,255,46,97,63,6,8,228,113,171,132,58,31,105,223,196,255,204,225,84,26,140,97,126,229,90,19,155,106,
-8,104,24,166,106,250,173,94,11,215,24,49,126,142,246,157,114,187,126,60,180,236,213,227,221,41,75,18,99,247,142,150,
-102,134,22,248,18,72,0,247,159,95,81,230,3,118,119,152,148,79,24,175,251,24,173,40,17,216,112,20,163,153,29,116,
-88,143,185,161,36,175,124,45,124,39,100,158,36,139,209,176,181,204,31,91,236,243,35,65,53,100,133,224,69,23,95,51,
-31,206,127,209,249,45,171,138,165,225,98,150,213,32,33,146,137,64,175,168,187,108,228,180,100,113,14,22,159,175,126,26,
-96,158,86,113,249,192,75,219,207,204,244,138,97,211,69,186,65,198,24,230,113,254,144,73,145,31,183,176,175,44,97,73,
-218,81,155,135,247,221,236,20,45,116,211,87,100,95,56,5,201,205,5,200,173,135,142,236,106,102,217,43,63,87,217,107,
-139,126,64,163,30,10,62,48,42,115,147,101,158,225,115,159,200,139,126,183,131,53,24,41,248,252,171,156,183,244,183,62,
-114,126,73,35,156,95,75,228,72,98,61,248,37,150,30,245,135,44,49,49,229,194,221,42,202,249,27,167,103,155,4,155,
-102,106,2,50,103,157,14,67,192,6,176,54,136,127,236,41,22,214,199,156,145,238,214,193,27,145,251,108,188,52,140,134,
-224,188,116,150,254,95,203,29,116,234,58,159,224,159,104,172,218,188,162,108,250,241,245,232,159,55,154,123,243,92,127,229,
-154,123,213,207,250,164,238,123,48,44,210,51,90,225,53,50,135,61,249,205,200,155,110,210,230,160,182,220,24,2,161,19,
-107,32,95,248,21,189,220,94,238,185,239,122,212,229,38,217,87,33,118,1,57,27,19,223,178,108,196,164,174,213,124,78,
-93,189,45,168,178,129,176,155,27,21,182,197,21,33,217,2,66,99,29,65,48,110,225,64,153,1,87,149,113,136,234,107,
-88,216,208,143,20,22,130,217,180,169,240,215,246,179,215,158,145,210,44,35,52,84,65,147,219,46,36,86,36,181,158,81,
-46,85,45,98,71,111,157,193,102,211,108,158,231,157,111,49,221,22,215,60,138,120,50,161,88,182,140,61,51,117,16,225,
-112,131,55,20,79,47,171,73,169,56,234,185,22,206,22,138,45,210,204,173,163,223,157,60,104,220,96,193,213,109,24,238,
-183,181,52,214,37,156,96,147,111,185,210,81,176,114,126,4,70,189,77,56,98,197,132,197,99,155,57,31,69,147,254,173,
-212,28,155,9,224,43,223,185,118,218,83,112,137,162,186,7,49,242,176,110,143,81,61,239,153,2,30,10,55,212,100,209,
-132,163,217,26,160,227,59,217,112,69,242,215,44,41,136,215,226,246,172,118,223,237,107,18,76,252,185,203,222,8,25,17,
-183,27,7,236,36,146,197,64,126,161,33,5,231,7,220,11,242,20,39,71,187,172,6,89,238,176,9,111,250,216,200,203,
-74,45,36,108,25,168,136,39,131,101,25,164,11,73,89,134,127,110,145,122,21,194,135,106,209,109,195,74,214,144,27,253,
-211,50,236,110,131,232,120,192,35,130,132,54,93,196,239,42,246,116,220,161,121,30,49,183,154,174,129,144,56,182,6,114,
-100,249,234,111,158,243,84,100,104,178,64,29,86,193,76,175,5,107,110,60,254,190,110,215,97,174,52,70,223,213,106,44,
-103,90,16,209,210,105,159,30,181,12,10,55,3,10,91,21,143,165,2,185,247,145,45,79,182,119,152,251,22,108,13,65,
-163,197,78,44,162,91,209,229,17,148,217,148,61,248,217,123,215,80,87,145,146,200,61,218,108,157,99,3,54,58,231,58,
-96,42,169,166,58,117,110,34,120,204,38,81,158,0,143,147,233,34,230,204,25,168,127,78,244,208,219,74,167,89,94,50,
-142,247,129,17,4,41,138,153,79,15,157,184,192,241,230,248,126,235,61,138,52,123,199,195,65,101,158,74,78,209,4,195,
-49,30,231,118,161,168,234,42,175,107,174,210,197,112,203,34,80,78,88,235,35,24,196,62,115,234,74,188,3,59,145,16,
-150,64,205,166,216,10,59,208,92,205,191,74,52,160,82,166,70,109,95,133,105,78,110,7,7,64,171,25,100,180,31,112,
-196,4,57,7,26,170,155,149,251,226,223,28,149,164,235,231,99,250,57,36,61,129,74,219,11,226,156,147,64,86,54,61,
-235,37,106,234,240,105,253,210,5,53,39,44,218,24,8,166,94,154,8,102,212,40,82,212,3,165,170,198,128,146,16,129,
-98,78,110,255,217,8,254,100,114,129,93,164,135,87,217,63,199,31,154,70,106,214,23,56,153,174,239,189,229,128,243,104,
-17,11,231,72,68,196,123,189,135,201,161,160,0,20,34,171,123,55,3,60,134,223,173,9,221,11,117,252,113,126,246,137,
-121,155,122,228,86,52,126,248,148,145,63,191,191,178,104,90,106,98,9,0,84,93,186,162,11,15,4,46,135,115,196,240,
-41,44,133,107,1,101,153,88,246,160,131,171,150,160,135,216,179,185,236,123,155,102,32,39,184,254,156,159,170,91,16,104,
-242,196,212,247,172,38,182,179,82,180,159,183,88,5,186,136,206,219,26,19,220,8,251,60,165,113,95,251,81,89,94,243,
-78,34,165,195,123,54,71,159,125,189,173,132,136,40,243,130,59,146,223,18,209,115,251,2,253,188,43,242,83,88,221,199,
-65,228,79,214,96,46,112,34,51,28,195,243,134,251,114,91,120,77,76,193,245,21,14,161,133,110,104,72,202,174,218,227,
-62,239,201,136,251,35,83,208,103,155,73,35,137,228,71,226,204,104,184,89,96,123,206,19,114,12,214,170,169,64,181,24,
-41,190,1,184,143,164,253,100,8,173,30,150,234,133,143,91,221,19,249,81,205,18,22,2,185,253,165,128,49,42,196,246,
-86,13,177,28,115,180,148,211,8,203,128,20,110,26,122,164,97,239,54,71,154,115,174,175,144,139,6,154,87,173,217,4,
-8,159,22,72,34,33,37,207,75,244,88,250,81,214,198,178,19,185,122,245,97,164,54,11,157,147,215,109,31,163,45,121,
-203,45,88,213,156,53,11,83,179,27,199,128,140,175,22,254,239,45,130,18,163,169,201,68,203,207,246,189,140,77,143,128,
-193,197,247,126,102,114,64,243,241,93,212,116,0,206,176,140,129,245,150,209,121,114,94,60,61,19,168,36,175,153,201,133,
-171,187,248,192,183,41,89,70,225,224,128,19,133,86,13,154,236,20,80,210,214,165,241,13,156,231,245,91,133,49,11,196,
-127,136,184,95,181,51,157,145,9,156,24,1,201,139,223,118,239,66,229,221,58,188,134,99,228,172,77,76,175,57,60,37,
-135,2,22,14,128,117,211,255,207,62,114,92,42,224,196,48,37,97,221,187,113,140,199,252,121,7,186,174,8,218,124,218,
-97,237,189,135,109,45,153,247,99,209,12,140,52,222,43,217,234,219,102,51,199,69,213,163,95,217,22,109,42,96,161,195,
-108,100,75,182,54,218,89,62,223,164,224,108,208,123,99,31,117,11,13,71,87,15,14,28,234,54,144,109,124,32,177,14,
-239,76,129,178,165,217,253,75,40,192,83,100,251,153,199,213,102,182,139,51,111,53,140,121,219,20,119,53,185,193,236,113,
-126,183,180,11,82,13,58,170,65,174,124,51,201,245,164,69,202,11,60,167,242,225,48,144,158,19,178,72,55,70,122,154,
-21,66,196,135,217,225,250,161,100,2,73,57,110,9,213,55,190,11,42,165,55,241,141,117,190,4,24,255,105,99,217,147,
-190,114,183,215,76,33,123,154,108,49,171,188,98,188,63,168,72,87,222,132,137,98,67,222,77,99,155,130,241,117,111,225,
-179,131,1,29,134,26,21,218,234,52,84,230,138,61,213,178,221,236,209,106,250,32,24,2,103,144,56,237,27,119,178,242,
-234,243,33,113,205,130,203,61,155,168,22,109,227,42,94,83,153,52,217,208,98,127,14,115,52,48,162,16,149,162,225,167,
-217,195,34,145,223,245,252,255,72,38,98,246,208,0,101,42,136,95,165,43,223,125,180,188,31,183,196,138,236,166,143,108,
-24,189,196,107,34,202,200,219,174,120,76,225,23,33,4,153,109,11,166,137,236,213,215,8,168,182,147,131,47,98,1,204,
-177,243,143,198,94,94,159,250,238,174,61,211,32,91,133,236,29,154,136,239,182,146,239,54,90,56,155,213,138,114,156,81,
-128,177,199,237,103,26,156,167,37,242,223,3,143,147,211,233,64,184,183,216,161,82,234,10,223,4,41,4,84,195,84,14,
-165,30,255,149,211,15,48,152,209,214,99,123,185,38,221,168,115,87,18,133,64,175,221,17,232,51,55,240,58,235,43,201,
-87,75,78,177,40,246,185,171,64,171,234,214,103,163,100,211,46,247,138,131,149,213,118,146,121,138,210,146,244,82,255,60,
-188,77,169,103,67,121,235,29,89,91,166,24,17,102,141,200,170,12,34,241,215,237,179,87,62,107,243,105,92,34,187,5,
-72,138,200,197,46,102,112,104,73,115,112,211,213,28,193,240,66,220,142,101,135,49,134,219,214,99,67,171,229,48,139,51,
-188,179,19,218,173,90,244,36,49,175,24,41,235,141,185,23,63,50,20,34,3,165,83,173,0,171,84,182,246,76,216,164,
-96,80,8,112,88,249,64,242,67,193,167,62,197,62,209,116,69,136,28,121,223,210,146,209,219,34,141,222,100,105,85,76,
-201,189,21,244,192,205,200,160,245,110,176,181,223,106,84,87,233,140,38,220,28,251,199,158,170,121,167,67,63,204,215,222,
-170,192,83,35,71,173,160,108,251,120,106,179,183,172,5,105,151,176,117,115,116,106,78,213,194,202,6,195,34,165,77,49,
-124,95,164,33,49,250,7,234,57,117,113,158,255,170,169,30,252,71,249,188,140,101,235,69,222,202,105,208,159,213,16,210,
-138,45,74,250,15,135,104,241,87,230,187,163,89,177,194,128,60,187,65,180,134,15,143,233,223,217,119,3,50,240,238,107,
-240,157,220,28,146,8,111,142,227,100,213,184,11,48,105,110,178,240,124,45,182,184,220,244,119,169,43,24,220,148,55,92,
-37,40,109,35,144,9,92,140,238,203,96,113,77,226,111,53,76,247,202,42,182,106,218,100,168,96,44,245,185,67,135,70,
-160,200,127,176,194,136,174,60,194,207,159,92,160,58,133,80,222,238,217,80,159,145,194,136,1,89,114,66,188,177,240,6,
-104,126,224,207,90,190,145,13,108,5,131,130,231,186,35,201,221,60,83,103,172,90,184,59,123,9,241,159,37,101,187,133,
-192,189,139,171,17,0,189,130,183,51,113,221,124,237,33,238,180,133,189,154,149,243,41,94,42,238,165,118,217,193,186,235,
-250,67,86,145,31,28,160,100,34,89,208,113,188,76,21,229,85,92,55,188,82,174,215,255,78,217,229,52,224,133,157,121,
-10,220,187,96,97,187,239,231,90,166,180,4,230,151,67,122,104,249,253,29,121,72,149,173,252,140,28,164,55,124,159,32,
-1,159,254,136,215,128,50,218,6,112,43,53,168,171,242,194,206,72,14,200,228,222,169,163,142,45,180,251,210,10,62,150,
-27,128,108,220,44,154,29,12,235,249,231,83,219,178,221,21,131,150,162,81,12,209,210,78,254,96,221,125,10,69,121,111,
-124,17,245,70,168,171,129,9,201,55,192,58,62,4,101,215,223,217,214,109,231,84,77,83,184,134,17,31,24,127,229,122,
-48,30,153,26,132,85,228,131,239,123,174,207,59,141,190,55,163,90,80,15,245,193,5,199,205,59,194,68,28,37,109,34,
-197,62,91,222,175,36,175,160,236,157,61,181,6,112,76,187,173,76,66,164,96,226,60,25,191,72,128,92,222,238,18,102,
-247,24,16,49,240,225,137,74,106,166,249,255,91,64,91,254,159,191,6,113,9,74,135,83,52,113,54,108,63,185,152,122,
-232,1,25,60,143,76,217,205,213,220,117,144,71,119,41,235,211,70,37,144,123,77,70,195,111,169,227,114,48,191,136,230,
-68,250,254,252,40,36,194,70,74,60,78,159,180,146,16,249,128,100,229,82,24,126,118,147,188,24,211,245,57,178,155,107,
-215,23,94,252,183,57,142,67,5,100,113,54,161,23,146,142,46,45,52,191,172,244,74,4,206,131,85,48,151,151,43,150,
-69,207,94,41,185,119,17,164,27,38,157,104,248,196,46,238,163,29,174,125,86,230,91,1,10,226,37,211,42,20,30,36,
-16,5,155,196,117,8,12,177,172,177,18,15,73,234,65,103,17,20,88,92,58,85,34,195,26,231,19,37,121,139,217,2,
-152,181,140,244,151,219,209,141,186,227,127,223,22,235,45,115,53,223,157,32,29,17,92,171,72,237,127,117,234,26,6,207,
-168,140,130,8,80,10,61,133,63,255,154,62,192,128,122,99,150,68,117,224,254,76,58,28,13,122,123,138,138,16,203,170,
-55,174,42,62,172,118,49,124,218,220,140,11,15,74,197,17,82,81,196,177,16,151,149,37,202,191,38,239,24,65,60,65,
-61,30,25,96,152,255,165,234,26,202,37,12,29,165,205,153,187,54,196,188,126,66,16,248,58,6,91,230,27,180,205,225,
-192,216,166,125,65,250,249,122,139,4,148,254,224,12,19,131,80,212,104,67,83,112,204,231,148,123,132,148,57,218,29,6,
-196,51,94,34,169,6,185,199,11,163,147,91,7,85,60,131,89,147,158,149,249,109,61,21,199,121,230,88,169,136,76,136,
-242,200,23,145,112,149,132,209,253,43,17,221,220,189,119,206,130,77,187,178,153,43,26,213,248,237,85,9,117,156,192,51,
-209,53,65,3,131,73,84,64,108,105,247,63,49,203,102,114,98,114,127,227,181,113,51,107,128,234,235,7,90,59,222,113,
-181,97,178,35,126,21,26,22,247,180,164,122,157,77,115,141,0,255,95,64,102,17,124,110,30,8,168,38,159,114,93,207,
-63,135,169,135,121,29,226,194,51,136,23,19,45,35,227,148,231,66,237,62,47,225,58,161,91,199,52,57,132,68,129,214,
-65,134,103,111,186,171,111,156,79,23,82,153,127,112,82,133,247,13,204,83,239,182,17,36,52,15,146,76,125,46,105,115,
-66,237,30,162,251,151,15,112,181,128,137,24,82,148,215,84,204,96,148,206,180,81,198,196,44,36,170,134,235,197,100,16,
-50,122,127,20,39,131,188,211,214,177,88,44,243,152,159,70,222,70,117,218,243,69,207,157,164,39,237,251,2,232,53,159,
-22,178,255,3,4,28,77,88,110,48,81,216,99,130,227,148,137,162,83,4,160,91,252,79,140,176,53,13,43,197,57,36,
-106,121,237,44,75,188,199,126,226,181,177,121,86,132,248,217,6,184,93,65,172,107,12,241,138,207,241,106,218,56,101,105,
-241,18,83,45,132,138,189,123,78,4,234,215,2,121,70,158,63,132,38,181,164,126,149,28,195,39,110,76,94,82,178,17,
-158,189,103,144,93,60,75,53,122,137,144,133,55,251,180,24,24,137,194,237,137,241,214,167,151,142,36,107,243,210,15,204,
-107,26,120,79,108,206,228,77,177,111,100,107,145,0,140,47,129,99,57,40,71,18,132,136,183,32,97,158,72,38,247,139,
-107,204,31,2,152,229,175,33,148,131,128,177,184,53,239,24,70,199,148,50,232,68,244,131,196,248,54,89,190,195,171,36,
-243,31,224,168,161,120,6,252,150,98,230,18,248,186,239,126,192,91,156,219,5,234,208,83,57,125,221,156,52,106,103,171,
-188,24,2,138,253,121,108,201,79,159,27,179,191,144,248,123,131,125,186,244,109,152,42,148,216,180,55,141,103,239,233,110,
-253,176,183,53,132,64,23,250,166,73,87,23,101,165,189,14,241,46,112,185,29,217,219,222,144,77,41,2,210,169,237,189,
-86,7,210,98,71,112,249,139,6,173,183,251,99,174,211,158,250,241,21,222,229,29,221,117,218,15,101,241,117,199,80,76,
-215,175,192,196,153,87,118,77,114,101,115,176,242,90,199,161,183,30,133,25,107,11,203,5,113,235,7,181,96,124,60,147,
-143,166,94,199,215,128,88,23,67,214,210,12,154,5,147,124,190,108,211,179,94,27,65,127,169,134,174,163,135,135,39,236,
-90,137,68,94,59,32,154,69,174,176,190,114,44,188,54,82,241,0,107,72,135,192,38,194,64,228,207,17,60,132,193,192,
-47,95,175,20,43,88,18,101,86,125,192,211,216,190,82,242,212,184,33,174,87,150,7,110,121,6,155,119,110,214,153,231,
-164,90,188,236,132,113,139,204,164,205,202,70,117,34,160,222,120,245,14,84,9,172,197,46,201,94,26,21,78,83,155,57,
-127,144,37,208,26,231,80,201,52,31,197,125,187,202,227,99,130,223,168,200,246,205,66,95,30,97,123,66,14,170,40,202,
-209,164,46,174,201,26,215,117,16,107,55,36,240,227,167,90,28,28,179,6,147,83,59,247,142,129,224,12,179,100,89,149,
-63,156,87,115,199,157,183,203,222,84,83,81,150,34,57,150,40,11,163,12,197,85,163,54,107,9,37,234,121,72,210,220,
-72,225,80,245,0,197,32,35,217,109,39,143,88,203,177,34,159,163,198,113,239,229,12,193,114,214,56,190,34,12,246,66,
-176,27,246,99,252,252,67,165,40,95,197,44,242,151,184,251,150,40,178,232,97,33,152,194,48,48,63,120,60,198,128,40,
-4,203,41,44,136,30,255,119,254,165,66,125,221,195,238,158,115,250,189,158,171,122,142,107,68,99,129,200,75,213,109,23,
-232,29,197,189,61,135,26,128,200,4,110,189,209,47,119,163,81,10,104,29,51,2,58,208,37,115,135,73,25,0,20,251,
-234,157,243,110,232,138,89,47,34,186,232,22,73,13,98,201,31,222,151,27,56,19,158,25,165,150,116,139,56,66,242,129,
-16,219,237,254,110,38,162,104,205,47,222,199,210,150,92,1,125,118,93,104,137,237,145,53,173,235,187,32,66,96,84,169,
-68,177,97,72,46,176,14,66,30,213,191,164,69,42,203,45,54,64,239,241,173,21,116,64,139,6,171,211,91,89,248,99,
-82,26,215,119,211,222,74,8,38,182,74,172,205,254,172,146,58,109,47,118,105,205,138,61,99,254,182,58,69,168,224,72,
-19,7,98,193,240,182,47,183,140,254,178,190,63,151,26,164,202,47,163,6,12,106,41,188,63,22,190,121,38,184,220,75,
-107,128,168,95,55,187,76,110,148,252,3,85,98,164,19,242,195,99,219,183,66,99,8,37,65,89,169,87,46,184,128,62,
-245,82,134,213,242,98,114,186,109,96,67,211,162,61,178,190,90,8,205,180,190,149,212,218,18,105,220,247,132,91,23,63,
-135,47,179,176,15,202,136,33,243,143,101,169,44,217,98,242,198,13,44,196,125,168,39,128,210,116,41,158,66,222,117,250,
-41,186,125,218,117,106,253,36,213,12,82,118,27,213,80,59,7,226,13,33,33,15,243,214,40,188,113,62,65,234,229,67,
-51,88,7,183,36,106,209,22,127,153,195,203,177,107,220,48,82,231,198,230,65,154,147,242,213,109,138,111,27,229,207,23,
-242,185,0,197,94,137,74,43,76,231,118,104,13,204,31,252,53,99,120,80,34,22,222,42,185,9,35,43,127,159,40,233,
-102,13,5,244,21,6,231,41,7,68,140,57,130,57,200,203,156,88,131,21,157,202,176,19,152,110,167,227,14,136,82,113,
-109,197,157,95,227,252,161,16,109,147,29,121,211,27,53,207,86,79,101,165,217,254,245,243,181,181,92,213,207,252,167,126,
-22,172,180,25,187,23,249,223,202,172,232,142,41,197,33,104,117,109,90,51,31,144,70,21,243,241,174,196,117,8,72,153,
-59,217,76,166,29,90,32,72,245,51,211,244,128,125,17,125,236,76,133,173,197,36,151,236,217,237,53,133,15,160,197,4,
-55,189,144,6,190,194,231,77,46,249,154,186,6,64,108,73,95,127,78,208,236,68,238,125,175,101,162,62,5,70,6,39,
-52,158,193,111,108,217,24,216,22,157,167,98,114,83,121,116,16,132,210,88,56,83,184,242,83,233,174,69,132,46,112,234,
-254,152,27,236,17,26,137,70,56,43,26,138,51,75,241,235,107,235,148,125,63,190,83,138,166,89,45,126,91,245,237,32,
-107,253,192,127,31,184,192,88,130,62,81,36,211,141,104,21,96,222,17,139,170,4,228,120,239,83,40,167,63,84,189,143,
-160,59,162,196,218,48,149,153,138,68,83,71,198,211,152,90,10,106,228,88,254,106,175,16,240,74,193,167,155,193,6,127,
-177,7,104,33,45,30,205,128,30,57,142,40,67,86,183,67,66,143,232,213,246,71,87,12,64,179,229,199,96,228,91,189,
-150,23,234,185,158,199,188,206,14,246,140,209,73,190,236,189,114,210,182,163,224,6,251,108,78,61,4,108,10,125,100,139,
-223,41,160,5,52,16,7,93,74,210,76,236,208,216,101,49,222,110,42,0,245,9,94,233,190,226,121,179,118,137,44,196,
-149,135,38,168,236,90,35,141,91,226,87,193,212,178,246,226,78,100,159,55,181,242,35,43,43,98,77,153,18,119,71,211,
-230,91,173,57,74,7,42,255,40,203,148,59,98,55,36,193,5,93,48,252,166,180,215,26,97,193,205,145,239,19,134,101,
-86,146,1,121,151,46,242,69,141,61,183,46,119,4,14,241,249,193,181,133,208,42,192,78,209,172,87,73,77,25,39,48,
-1,217,189,5,37,1,210,229,193,98,86,101,229,120,251,112,255,3,212,151,58,35,241,23,48,253,95,21,168,230,174,186,
-2,95,150,42,247,171,149,93,180,198,239,229,111,63,199,45,42,173,163,66,33,114,223,120,80,79,136,170,35,152,235,129,
-52,193,134,186,181,105,1,142,183,13,150,113,229,141,137,30,13,21,75,147,159,158,40,64,145,124,130,2,211,169,67,111,
-68,83,214,135,250,150,1,199,64,243,91,144,77,244,62,116,55,185,213,2,134,172,15,152,254,162,173,32,215,72,12,229,
-236,170,21,117,56,159,208,206,168,246,40,37,85,36,233,220,172,201,6,23,34,89,11,54,236,196,105,158,230,115,159,8,
-176,241,11,224,254,113,20,30,0,135,82,23,67,118,149,41,233,144,109,118,229,175,12,208,40,50,118,156,54,173,3,66,
-177,193,128,54,174,50,58,144,21,129,138,56,212,167,205,93,84,118,106,41,162,242,209,232,234,229,33,250,120,170,239,175,
-236,216,159,108,219,23,170,22,130,231,1,5,91,54,18,153,128,173,208,98,168,13,226,201,254,91,135,3,152,96,181,130,
-71,244,98,108,115,42,49,91,254,177,25,92,29,15,137,196,60,219,122,12,4,99,66,86,122,112,249,22,32,55,18,220,
-185,67,8,22,48,51,105,135,119,185,80,231,100,146,3,194,103,65,124,89,154,184,198,148,254,169,183,72,87,150,104,16,
-95,148,147,215,153,251,75,253,74,143,28,166,221,211,27,61,149,68,234,62,193,28,235,206,254,13,25,165,165,219,108,217,
-17,222,66,58,63,111,59,81,86,111,89,19,168,106,77,88,245,96,228,156,45,189,124,81,155,93,124,148,170,119,115,138,
-239,165,240,1,238,211,220,194,217,130,165,234,189,129,174,95,114,196,199,83,235,125,252,135,100,189,2,39,250,62,115,240,
-225,190,100,137,200,236,20,154,211,145,144,246,19,58,33,160,180,121,251,146,185,204,44,189,92,14,225,22,230,106,209,95,
-224,59,134,193,211,119,66,251,137,162,116,92,221,14,92,4,24,181,60,215,99,247,114,121,187,126,1,144,240,180,78,78,
-217,67,147,253,68,14,80,16,235,90,25,30,219,140,125,18,203,30,60,237,79,58,125,253,254,111,159,242,194,147,239,52,
-185,22,192,9,53,157,159,168,249,143,127,148,129,43,4,208,182,87,49,89,134,153,88,67,104,180,0,150,153,104,28,218,
-63,97,132,236,47,84,173,3,196,68,93,233,218,130,139,104,52,119,235,169,12,193,14,137,31,20,63,64,131,212,41,241,
-1,125,38,128,58,18,200,191,175,63,126,174,188,232,212,109,155,203,3,1,154,169,106,245,105,94,171,242,137,12,110,159,
-8,201,59,23,51,189,189,219,55,168,2,198,167,203,48,26,10,195,152,228,202,162,239,60,206,111,103,10,62,96,64,70,
-58,180,249,228,45,228,55,188,29,8,218,253,19,178,86,177,39,99,30,91,245,93,178,38,187,226,56,197,180,147,213,197,
-27,149,184,27,0,203,68,60,174,144,0,205,236,216,108,251,133,110,45,168,122,203,51,9,241,68,197,154,49,245,170,67,
-208,51,129,22,39,188,38,92,14,232,112,60,196,152,187,252,201,28,166,229,97,222,135,212,32,231,106,217,128,215,76,207,
-157,77,30,161,91,20,62,61,92,227,153,94,88,42,109,50,6,244,222,12,170,215,4,108,89,168,217,13,121,13,56,186,
-185,127,50,191,147,136,178,54,121,105,69,58,180,119,230,227,30,34,143,80,151,163,115,188,51,44,32,32,242,132,99,166,
-88,190,252,70,184,255,156,101,18,201,151,155,73,255,30,226,174,63,202,237,255,111,34,51,5,133,113,70,246,242,235,157,
-3,22,25,38,12,71,37,141,88,168,21,162,58,180,144,194,114,67,106,165,44,161,29,81,19,209,101,179,219,41,189,199,
-164,145,45,35,248,144,18,145,138,243,195,54,43,51,42,165,200,81,204,61,26,21,163,146,1,120,55,131,80,61,141,96,
-135,91,33,91,220,212,178,148,119,142,131,115,65,225,4,138,165,85,192,190,37,81,159,43,11,199,2,76,41,70,223,250,
-249,243,230,60,211,235,31,88,127,125,88,211,167,231,71,27,201,33,44,89,107,80,194,65,164,213,17,226,187,114,248,208,
-66,6,133,183,4,208,98,75,181,253,52,25,100,191,223,191,79,19,26,125,189,195,251,110,35,156,183,177,20,198,83,175,
-219,227,202,245,113,183,69,227,131,253,85,38,232,83,119,43,161,77,84,64,40,42,127,27,231,152,125,30,14,233,138,208,
-252,41,186,80,222,72,117,110,117,131,128,125,110,171,113,63,23,160,197,211,149,232,164,232,33,5,26,178,48,62,43,177,
-12,31,198,97,229,28,180,166,63,225,164,229,220,201,84,84,106,188,173,197,56,175,5,23,204,154,106,135,146,246,29,74,
-217,230,229,131,225,42,192,246,252,246,87,58,208,252,20,201,141,247,13,68,56,146,140,97,145,192,143,197,102,113,17,181,
-246,89,207,114,110,39,177,250,199,12,168,61,34,126,225,163,174,185,211,143,47,185,14,78,69,251,54,15,133,131,146,102,
-181,51,183,202,151,125,129,175,36,214,163,12,29,203,42,117,222,226,234,10,240,242,154,186,249,124,32,3,26,112,140,64,
-114,21,248,158,2,156,32,99,175,52,70,8,73,102,181,167,7,146,7,219,138,85,41,202,248,64,194,109,70,126,62,189,
-234,213,172,66,222,175,5,241,247,219,21,213,57,146,147,135,187,37,98,93,103,157,186,11,31,240,63,182,9,242,102,24,
-56,110,57,52,39,103,5,112,247,220,150,227,113,105,240,19,241,145,209,224,194,112,67,120,170,18,174,53,219,142,180,9,
-9,111,121,183,42,114,236,126,111,39,151,46,46,165,37,86,64,158,139,138,165,117,158,6,35,227,55,157,34,20,96,51,
-132,214,197,219,117,122,124,197,4,58,174,220,121,214,27,55,164,168,17,149,64,132,86,228,111,27,164,32,25,98,102,30,
-118,163,58,45,118,92,127,114,22,216,235,78,3,121,112,216,54,7,35,63,195,14,110,208,164,139,166,229,105,185,255,159,
-44,154,139,144,202,175,157,122,241,45,156,131,95,191,180,34,128,111,246,116,178,144,171,62,98,231,177,172,35,149,21,15,
-129,58,252,25,4,220,177,152,94,42,70,174,121,61,252,162,40,195,136,40,115,11,154,152,158,104,45,177,183,86,127,75,
-100,29,237,50,241,87,146,79,61,36,205,172,93,120,68,254,1,3,248,184,107,114,57,122,75,226,134,16,229,221,112,107,
-11,127,180,114,180,22,29,135,122,216,181,75,97,232,49,43,142,208,82,209,166,120,182,8,77,197,201,15,16,185,130,30,
-3,241,221,30,235,253,89,26,134,169,36,188,53,227,179,229,213,83,228,29,226,109,207,213,201,62,234,25,28,238,83,2,
-161,173,255,97,203,132,176,92,226,92,109,153,133,211,102,111,162,202,248,34,39,188,12,224,231,203,86,155,193,63,158,154,
-229,115,184,246,138,119,153,111,102,14,129,168,217,246,203,24,217,51,66,197,87,132,116,40,61,205,23,183,66,212,119,82,
-95,81,6,254,173,72,72,164,229,210,107,162,122,203,60,26,35,111,233,49,61,22,191,255,133,164,7,209,216,137,28,28,
-90,172,51,143,224,162,78,177,247,235,214,117,145,59,104,161,0,166,64,31,172,27,223,146,89,253,49,199,30,5,49,90,
-245,69,60,64,187,28,178,36,25,134,61,174,136,107,102,96,173,199,192,158,234,246,220,244,215,142,143,94,37,127,187,173,
-142,162,178,245,100,99,119,197,206,109,194,72,87,46,56,206,241,70,138,202,200,134,196,133,118,144,22,91,69,72,23,229,
-245,241,97,196,83,145,84,198,46,189,118,167,198,43,247,241,159,210,165,37,9,5,95,185,12,230,132,184,56,27,72,127,
-165,97,173,65,39,237,60,124,44,42,133,229,237,159,84,61,32,249,94,191,160,233,170,249,108,200,99,51,251,166,213,88,
-115,61,9,44,6,98,226,139,219,54,35,223,10,199,208,34,77,251,252,230,132,79,80,25,157,76,136,27,206,104,163,158,
-138,215,110,225,129,188,217,1,181,99,233,24,105,102,147,165,160,119,10,63,102,117,202,149,140,208,9,170,63,16,45,140,
-36,236,160,115,240,91,30,204,77,220,154,40,252,146,231,159,250,79,240,166,118,12,253,216,176,69,247,3,169,202,60,140,
-229,129,253,246,81,83,19,181,72,46,214,132,224,20,52,34,192,182,29,85,46,104,243,181,181,201,220,131,194,140,186,225,
-65,38,180,23,183,85,224,15,70,73,93,75,175,0,159,119,29,192,214,173,101,210,1,72,174,96,137,196,125,148,49,21,
-37,250,240,175,206,91,135,130,28,48,74,97,14,146,220,167,242,137,157,104,135,71,209,237,181,198,168,214,232,236,238,54,
-193,149,202,89,69,104,170,12,72,189,30,142,248,37,106,148,37,133,70,202,26,22,119,5,107,226,79,118,43,253,19,3,
-160,250,7,195,188,0,73,17,101,189,75,99,202,131,16,237,166,189,252,177,67,137,96,78,49,63,117,157,232,207,40,221,
-57,71,60,12,134,22,59,91,246,191,175,167,107,225,214,224,233,182,173,11,104,166,166,238,145,114,140,5,196,240,28,174,
-14,66,80,140,25,208,106,117,7,71,48,238,182,172,228,10,224,49,106,104,14,63,129,10,6,192,38,185,211,50,180,188,
-214,118,235,117,149,54,175,19,206,188,57,145,215,3,75,109,189,169,17,133,121,224,161,108,234,217,25,241,52,56,207,19,
-14,215,96,88,138,81,170,146,36,166,153,164,158,200,79,146,83,189,119,51,176,128,240,192,199,141,236,239,172,200,63,3,
-126,231,215,32,88,247,202,19,129,50,151,45,108,225,32,230,233,175,71,84,210,111,230,124,11,226,153,219,160,16,166,186,
-47,59,150,56,163,52,48,59,24,165,113,34,161,16,81,246,1,178,194,71,98,34,40,114,36,37,84,206,236,44,8,171,
-48,105,253,51,135,17,202,15,80,97,73,119,182,170,239,196,95,219,90,201,116,207,83,202,184,33,166,46,11,13,42,100,
-188,13,193,151,149,95,202,91,241,127,109,209,45,209,60,158,142,244,58,237,109,25,19,92,113,8,134,22,63,7,148,58,
-133,47,173,166,168,174,248,55,151,179,79,104,119,236,151,42,175,5,206,211,221,11,122,232,35,201,218,49,129,90,179,211,
-222,111,248,10,1,164,64,87,190,19,67,111,209,102,53,209,175,150,0,139,182,34,163,58,153,172,31,120,153,64,220,14,
-68,54,34,82,133,72,181,74,254,23,71,86,199,115,94,169,132,191,143,33,64,8,12,123,99,19,109,30,163,129,81,195,
-206,228,248,17,48,133,19,97,32,233,29,63,40,14,59,115,35,235,194,169,6,180,123,142,204,199,148,189,75,192,81,112,
-11,80,93,55,66,83,40,249,74,208,15,16,57,61,217,69,179,3,32,175,237,187,93,251,184,83,133,75,58,112,150,222,
-131,151,55,94,206,75,241,87,203,39,140,29,68,89,216,7,136,28,149,208,77,79,89,84,216,177,234,102,30,26,19,233,
-38,83,9,220,56,239,59,212,111,115,245,211,196,202,131,26,67,224,48,59,205,90,11,60,90,147,100,249,202,228,56,121,
-8,72,106,220,170,67,251,24,164,108,35,42,247,72,134,35,199,74,228,2,150,78,16,75,93,248,214,114,5,7,20,230,
-76,164,205,143,101,175,174,93,57,21,180,165,97,83,208,57,238,29,78,197,84,244,32,200,4,209,84,214,233,116,215,206,
-89,182,69,1,220,226,125,4,43,75,231,45,77,30,119,170,240,127,56,48,134,27,202,170,142,158,49,69,242,179,102,33,
-194,3,212,60,108,21,162,96,7,124,9,214,77,18,218,180,29,80,85,98,78,11,30,91,234,208,117,199,167,162,38,21,
-190,147,171,129,198,149,122,104,209,191,159,115,237,93,91,29,190,219,144,171,244,125,206,159,111,160,198,141,26,95,25,213,
-53,147,90,199,173,232,112,234,184,115,170,100,107,148,167,72,41,140,23,152,45,95,249,5,110,89,195,75,178,177,169,149,
-146,137,164,50,41,202,223,87,139,158,198,27,44,23,29,15,142,169,58,31,181,18,85,254,46,31,199,198,49,13,177,52,
-30,131,248,219,159,244,140,69,41,197,120,22,50,86,246,236,21,54,201,252,57,11,95,161,212,148,210,26,84,202,246,69,
-173,100,129,121,140,196,119,41,221,34,229,112,20,182,243,97,242,9,208,246,180,47,132,1,59,137,101,167,136,10,113,171,
-241,78,182,204,7,142,74,65,48,217,72,24,236,176,150,15,237,124,236,246,92,92,42,117,133,15,31,46,30,112,82,59,
-127,8,55,53,229,25,171,35,127,32,114,58,143,93,210,239,107,110,126,32,177,48,175,196,9,52,66,127,182,188,49,22,
-23,84,21,205,252,39,187,246,81,147,124,160,108,84,191,204,2,20,216,121,146,112,168,30,85,233,221,82,247,4,22,214,
-2,172,101,127,237,219,126,99,177,71,154,228,178,251,85,210,119,158,53,248,48,148,79,147,144,243,54,167,209,155,147,94,
-238,77,244,52,86,49,142,54,78,164,27,165,52,35,156,136,189,79,160,253,153,186,139,42,160,132,213,195,7,21,33,195,
-65,177,33,66,50,200,202,78,140,133,154,181,101,204,2,116,43,38,156,164,16,72,249,101,165,201,246,178,230,134,166,232,
-46,31,133,41,57,153,76,2,106,107,148,87,219,16,249,135,109,99,222,14,63,214,196,148,191,143,112,37,233,162,104,128,
-87,152,61,196,245,231,226,102,112,246,185,251,169,54,224,255,185,15,195,154,235,64,191,192,224,20,59,141,119,109,78,52,
-235,125,240,55,70,198,152,226,93,91,179,200,99,185,20,76,163,175,173,8,222,11,58,182,11,174,129,69,124,137,38,52,
-60,32,215,140,103,218,208,240,8,189,167,163,100,67,74,100,33,250,48,5,159,147,53,70,110,82,149,227,55,15,185,181,
-252,251,236,205,235,181,81,130,160,201,184,96,53,25,98,75,207,218,108,73,228,18,112,116,214,92,144,96,194,161,148,131,
-17,68,230,173,252,147,81,125,189,44,206,111,88,72,38,10,71,62,26,35,11,161,172,237,95,19,217,136,38,54,131,144,
-202,105,56,48,6,226,199,40,56,9,248,39,253,27,149,58,240,30,7,155,77,165,78,44,186,127,174,75,164,161,174,217,
-45,179,254,94,168,86,64,70,217,126,86,49,221,118,20,127,94,112,38,197,115,211,48,93,224,204,219,137,156,232,171,147,
-145,125,131,67,83,52,44,181,204,11,228,218,84,55,121,183,24,60,60,182,169,0,86,166,23,191,205,185,234,202,185,250,
-197,163,25,241,184,209,29,250,210,38,111,231,208,253,237,118,165,119,144,78,204,42,182,83,196,108,187,17,169,150,226,229,
-213,33,174,33,203,15,61,118,119,201,147,124,15,244,133,146,106,49,187,242,107,21,19,35,76,3,223,114,136,117,171,130,
-126,32,66,140,109,78,111,101,99,92,178,87,55,181,125,234,90,155,195,55,255,56,112,53,58,163,216,73,96,217,84,79,
-160,190,23,100,54,190,209,179,179,244,92,243,181,112,14,125,150,119,16,105,247,147,227,247,54,204,92,57,115,103,130,199,
-177,115,168,166,9,236,29,42,234,7,2,22,175,111,179,62,251,175,24,164,58,140,121,246,113,210,128,38,66,7,18,28,
-163,195,156,204,87,93,214,201,248,92,109,232,153,34,166,79,176,5,31,45,190,46,102,235,122,247,80,54,56,126,146,107,
-165,166,169,236,152,191,151,150,16,177,186,113,103,211,163,64,25,211,55,141,112,33,45,180,250,183,43,5,131,126,37,31,
-211,96,75,84,105,221,242,14,83,220,22,125,167,143,148,91,247,180,45,198,116,54,33,96,230,172,129,106,114,54,120,149,
-180,32,226,12,151,136,245,108,169,177,4,101,191,151,117,73,0,114,150,17,73,211,141,238,90,151,46,141,153,66,38,61,
-112,49,169,38,132,203,85,251,115,11,34,29,238,155,253,209,244,118,229,35,215,251,190,179,1,248,122,183,159,80,178,16,
-81,203,102,227,170,137,255,254,55,105,86,248,135,216,207,254,228,113,202,211,177,176,122,251,63,14,36,96,242,153,52,120,
-124,102,119,69,7,252,21,148,118,216,50,227,133,31,201,54,58,139,151,17,28,236,86,90,28,80,163,191,162,96,169,89,
-179,182,198,119,33,62,195,59,132,77,144,97,48,224,96,181,184,174,90,52,150,182,252,105,224,13,7,21,127,29,158,38,
-155,143,119,22,249,102,114,118,170,205,64,128,18,240,131,12,230,134,40,50,90,214,205,83,255,184,234,44,217,135,74,73,
-239,211,188,91,145,130,157,62,165,243,129,145,123,59,36,163,12,103,26,33,98,238,111,43,103,81,225,22,67,221,81,27,
-22,119,112,203,141,104,54,201,214,121,107,108,213,198,18,199,161,221,132,234,49,229,70,219,75,187,136,20,189,71,23,126,
-75,208,69,63,239,238,94,193,53,6,230,245,194,115,1,23,33,83,39,70,135,129,88,218,179,139,25,78,19,142,108,36,
-227,21,58,113,93,7,34,30,226,115,165,62,136,143,90,121,119,60,67,154,190,27,143,138,225,156,58,235,25,93,112,232,
-204,202,221,33,87,12,15,112,110,192,130,138,33,18,123,155,142,160,92,105,23,243,223,75,234,26,245,235,29,205,95,38,
-60,181,77,58,82,232,234,190,161,66,168,223,75,173,242,217,115,39,182,7,193,71,182,89,112,160,90,252,125,227,37,225,
-176,194,218,154,58,156,132,200,251,154,192,24,188,19,234,238,177,107,112,173,227,215,70,113,12,30,147,56,243,100,41,226,
-236,63,208,52,130,36,92,70,41,181,153,4,255,245,101,227,126,154,103,199,119,15,33,43,9,128,97,248,95,31,173,85,
-52,93,45,94,1,241,84,56,84,239,188,138,132,3,58,150,9,249,204,120,143,61,163,181,101,121,99,59,8,165,212,219,
-13,210,15,250,193,156,148,222,32,55,198,111,64,172,0,43,221,126,105,34,230,41,134,152,91,194,215,70,200,127,153,80,
-120,54,230,126,93,108,211,188,198,150,41,33,183,215,235,252,196,128,28,219,133,156,98,14,42,253,246,240,38,204,10,113,
-70,155,7,247,64,66,51,219,76,3,190,147,15,99,112,90,199,33,119,131,149,105,228,5,108,171,203,7,19,130,185,54,
-131,51,100,80,239,33,60,70,189,209,238,11,27,173,60,120,208,212,16,5,142,105,1,234,24,191,118,150,72,76,44,219,
-79,198,199,173,198,86,195,201,87,179,208,217,226,130,64,107,58,173,128,202,203,100,98,31,112,31,58,58,233,109,1,203,
-250,124,95,88,104,32,155,70,74,210,121,157,178,215,3,198,64,113,116,45,87,219,227,167,82,61,148,23,244,146,237,177,
-237,118,145,159,143,92,18,250,212,230,133,224,220,104,159,117,172,116,89,158,58,150,77,122,235,189,58,91,185,170,180,66,
-92,168,203,14,119,0,43,109,249,170,244,57,124,236,167,21,141,102,16,254,67,120,126,221,152,62,111,141,232,4,95,202,
-242,231,214,229,146,211,76,120,106,64,120,48,82,90,157,38,35,16,84,172,252,211,94,31,216,159,137,39,76,158,247,9,
-192,241,29,60,235,65,201,214,234,230,208,183,40,54,226,180,87,88,242,65,100,254,165,154,116,51,175,74,247,80,68,42,
-172,109,120,119,159,28,97,167,239,157,82,34,25,195,126,129,136,67,5,110,209,183,238,134,239,219,166,14,153,175,196,141,
-190,95,145,5,205,232,130,95,72,112,166,18,15,61,195,206,230,210,28,14,197,88,146,23,119,29,143,110,249,67,197,238,
-28,52,139,181,124,64,211,164,218,113,90,172,150,64,239,69,34,212,134,165,5,86,197,130,121,94,83,12,237,197,25,48,
-199,218,223,175,50,64,79,6,121,181,92,157,104,254,200,18,203,171,9,82,201,254,37,207,169,130,109,170,11,54,186,27,
-146,210,31,80,114,26,193,202,70,174,14,31,21,117,55,241,64,205,12,246,25,78,193,243,157,35,116,179,132,171,98,125,
-7,17,194,140,9,150,157,217,21,90,35,23,3,207,206,248,109,100,235,90,123,226,33,30,231,201,18,132,96,112,208,62,
-147,52,170,50,180,161,95,207,111,44,164,35,116,51,109,224,33,78,90,189,255,112,137,105,94,107,154,215,41,87,70,35,
-26,253,3,229,219,163,69,48,245,159,76,31,253,90,199,240,244,55,192,81,239,29,83,26,64,226,177,56,117,175,59,168,
-204,25,199,97,213,104,116,159,89,193,169,26,76,152,232,211,166,1,121,98,103,166,196,48,48,232,199,50,126,3,11,120,
-175,241,159,204,96,131,236,158,209,130,49,253,174,29,89,205,118,115,72,139,188,241,203,244,212,16,26,21,142,176,243,207,
-53,29,164,106,67,108,145,242,23,221,17,177,73,20,162,106,233,97,101,9,73,9,93,200,16,80,195,122,12,136,230,184,
-73,207,245,192,114,29,82,98,252,211,8,98,200,136,123,197,246,155,201,51,100,245,184,2,224,55,46,248,22,20,119,200,
-25,94,122,113,98,249,126,53,49,88,70,151,47,130,201,154,9,114,4,149,97,128,226,220,64,230,60,41,179,205,188,144,
-101,84,156,108,181,32,194,145,147,245,83,159,134,4,80,154,46,172,194,105,190,74,106,81,139,219,13,146,53,210,207,176,
-224,18,138,57,124,111,3,124,145,235,170,198,206,58,215,90,227,84,227,123,155,217,92,119,194,45,91,249,207,21,168,97,
-120,60,60,27,157,70,203,24,185,91,15,250,60,233,220,118,86,39,54,188,92,133,73,190,23,209,218,146,243,190,232,19,
-117,17,64,146,85,158,144,79,163,210,27,77,158,134,113,210,255,41,87,21,116,234,57,119,126,110,52,22,187,185,0,45,
-227,202,249,178,104,44,149,85,201,98,21,176,120,173,209,248,182,56,127,142,128,159,120,230,185,191,147,81,119,192,238,44,
-52,81,245,120,76,208,53,89,15,28,110,35,210,241,3,36,18,206,231,216,142,181,63,151,50,142,236,109,170,79,163,243,
-28,188,178,67,191,106,210,145,216,79,16,232,55,249,155,76,126,41,167,168,159,65,222,132,182,140,250,238,184,198,45,112,
-130,245,220,57,75,200,250,239,221,137,172,75,14,49,160,191,143,176,67,238,11,101,36,218,95,224,252,87,26,206,149,174,
-30,6,75,239,186,120,232,32,153,100,252,161,170,139,92,239,87,245,55,204,88,243,121,128,204,235,209,246,213,197,185,167,
-204,153,12,103,193,132,202,221,229,168,176,173,98,110,61,175,207,140,147,44,252,88,147,222,202,63,111,180,199,20,67,151,
-133,20,245,51,67,81,41,11,135,79,147,86,62,5,75,180,212,135,84,253,21,142,70,72,21,43,144,178,16,162,32,209,
-66,204,241,145,189,149,246,8,45,91,214,191,34,60,41,207,162,125,93,38,124,125,252,241,12,81,18,253,61,200,166,113,
-3,20,130,220,151,187,81,184,6,15,87,159,169,246,229,14,160,224,33,49,166,48,49,22,129,0,21,82,166,216,59,237,
-136,67,188,103,176,64,69,233,160,177,105,4,226,89,241,105,152,34,7,9,17,57,12,229,23,37,17,106,133,86,49,35,
-164,210,231,54,247,30,168,121,56,161,159,5,120,2,241,224,209,194,148,77,232,76,19,251,26,51,78,212,199,183,39,48,
-49,68,185,61,32,233,151,183,33,55,50,194,167,24,217,58,19,232,14,21,145,146,154,145,171,79,194,48,3,190,73,42,
-221,225,48,162,2,83,237,192,60,69,152,50,22,220,121,117,162,194,239,144,225,83,36,102,16,40,207,169,91,140,124,89,
-87,224,61,16,94,239,80,236,236,200,198,142,174,199,178,170,117,35,2,141,180,156,36,206,50,182,127,162,35,230,93,224,
-122,181,90,13,137,16,109,181,136,231,245,159,173,10,193,150,204,207,235,205,233,103,37,73,66,255,205,55,199,58,23,69,
-78,116,89,203,54,117,225,194,239,255,58,136,177,222,35,108,187,17,225,9,147,156,2,231,45,100,166,227,207,175,62,3,
-225,82,28,85,186,240,44,195,146,249,1,243,136,104,111,181,245,55,148,169,217,240,145,8,242,161,149,50,232,202,109,123,
-131,239,254,116,58,19,245,180,237,207,245,106,84,114,192,190,61,253,83,6,215,183,177,119,53,118,24,243,35,192,237,180,
-235,191,224,136,60,252,194,144,194,66,6,230,137,119,82,58,65,143,76,201,175,134,201,169,195,105,7,223,48,205,182,50,
-189,92,45,95,4,63,121,222,108,82,248,31,186,167,19,204,60,41,235,146,178,90,239,132,137,121,27,93,213,139,55,254,
-172,102,70,85,104,20,130,227,229,220,63,64,215,156,24,37,160,81,145,25,190,123,146,83,186,185,233,160,129,54,185,248,
-90,161,29,156,61,252,173,37,131,232,23,212,103,144,76,60,5,64,212,235,217,143,241,173,47,63,187,99,241,9,235,194,
-237,89,210,206,14,123,228,194,155,185,127,35,100,21,161,27,247,44,80,46,148,252,211,43,117,15,74,78,3,0,39,18,
-105,65,57,250,174,71,53,140,166,21,249,53,89,221,91,249,99,44,152,64,155,26,124,221,204,42,41,9,20,164,88,173,
-175,4,223,153,121,34,70,226,204,86,110,208,164,37,87,28,155,44,130,176,166,171,197,51,181,195,16,6,104,131,92,171,
-193,55,2,142,171,51,70,23,171,172,124,15,209,155,164,86,194,53,4,22,190,115,95,162,246,138,116,33,87,174,58,135,
-157,158,146,72,63,45,98,170,49,158,39,245,75,113,249,232,55,191,61,57,122,95,164,249,86,123,159,228,220,110,107,121,
-51,61,70,126,236,25,73,129,79,125,74,71,173,238,109,47,4,79,176,237,173,123,105,117,1,181,42,126,109,117,251,30,
-14,20,7,117,184,238,134,72,162,153,37,112,72,42,57,152,46,243,79,189,122,44,250,189,16,72,103,63,54,249,237,51,
-172,67,101,229,255,55,156,186,146,147,126,24,92,166,137,175,146,27,140,13,25,246,24,210,121,221,25,222,146,100,243,188,
-86,41,254,64,76,240,9,23,119,40,198,97,80,184,79,211,187,208,76,158,92,19,226,173,249,212,35,254,140,245,51,148,
-140,39,138,214,226,233,197,129,140,145,248,244,210,202,144,2,164,177,95,195,117,237,6,88,88,8,146,140,66,155,109,103,
-192,131,73,35,52,173,136,111,254,63,225,175,132,147,192,69,240,208,160,217,106,99,190,0,214,20,231,145,43,169,226,158,
-14,241,56,185,36,129,81,229,76,164,60,118,186,202,6,78,40,93,155,1,166,193,117,157,184,162,236,10,68,249,28,186,
-115,203,63,217,198,42,67,170,149,95,213,26,204,116,76,244,225,86,245,236,174,19,232,84,183,235,99,252,21,37,112,145,
-251,188,17,150,135,100,60,219,38,232,17,203,158,108,168,12,190,238,213,127,206,113,20,98,226,105,133,88,31,111,36,25,
-179,227,217,80,128,39,73,211,66,2,23,73,101,142,236,174,92,73,3,83,76,87,231,241,114,68,247,41,110,184,138,156,
-222,247,232,218,62,166,178,50,27,243,180,146,253,88,176,170,238,199,16,240,216,129,188,110,205,200,37,80,227,91,28,179,
-108,121,211,23,232,90,67,152,205,190,239,242,250,215,102,53,153,125,225,199,85,12,230,32,170,132,36,107,178,255,109,170,
-244,121,241,159,112,221,167,2,43,30,63,138,243,7,61,37,99,173,199,92,121,115,199,57,166,200,226,39,133,24,163,62,
-115,192,23,51,217,238,149,7,94,215,104,238,40,211,67,31,244,248,57,2,6,215,128,193,2,128,22,218,86,247,4,5,
-117,143,209,111,103,191,128,191,235,131,162,37,128,188,198,60,141,94,115,28,215,15,31,243,7,139,32,214,54,128,87,168,
-252,207,55,213,123,27,65,90,221,250,100,189,7,224,62,244,20,249,190,134,11,217,47,167,36,96,169,169,190,243,140,77,
-231,211,195,212,82,208,132,199,230,211,77,121,22,24,209,243,118,92,61,34,70,132,189,26,120,48,48,222,251,224,116,34,
-172,147,45,132,221,91,99,239,69,189,30,197,242,49,63,139,142,39,177,2,75,161,226,127,160,148,126,88,32,245,158,223,
-138,155,97,136,150,66,116,163,86,51,150,241,233,103,176,157,66,85,6,105,156,188,247,46,66,226,247,199,250,213,139,0,
-87,65,141,134,39,176,176,243,132,66,104,140,54,220,210,158,159,126,174,188,245,219,235,156,168,56,90,45,80,133,228,152,
-76,84,103,134,234,34,12,215,96,120,93,38,84,95,84,184,213,45,248,42,60,96,222,154,234,28,76,204,102,58,196,49,
-77,26,218,97,105,75,183,63,211,173,210,86,137,179,108,254,74,136,30,96,123,239,63,155,214,10,13,97,98,252,216,130,
-82,39,11,80,104,78,235,184,42,170,9,64,216,197,22,37,170,55,154,215,21,92,81,91,237,102,208,195,251,106,161,80,
-230,205,187,121,67,70,43,218,33,215,207,57,192,63,192,192,105,86,15,82,56,251,30,52,210,232,231,97,179,232,137,56,
-249,230,43,69,68,48,199,59,233,16,154,1,234,175,201,42,202,184,211,60,234,216,23,30,115,16,52,52,70,146,33,200,
-145,14,99,84,129,153,137,221,93,139,78,235,93,167,52,101,159,79,216,27,138,185,31,21,223,41,185,155,51,83,212,33,
-119,124,40,94,107,205,158,132,202,183,217,115,0,163,50,16,51,178,215,84,21,65,212,207,24,144,187,111,156,4,127,170,
-175,152,14,102,145,248,91,100,213,150,34,192,10,6,117,138,164,199,48,98,21,47,221,195,214,211,201,84,12,142,53,174,
-87,190,102,78,123,32,11,31,47,235,227,160,37,215,166,213,90,150,121,58,72,247,245,223,161,124,133,79,178,4,168,243,
-205,29,118,189,31,173,227,141,218,247,229,106,0,98,213,179,64,235,225,237,211,213,79,188,129,62,196,75,84,235,219,9,
-29,101,130,108,205,206,15,178,87,236,220,121,215,126,251,140,111,38,132,98,30,116,240,92,146,24,203,50,35,142,126,139,
-89,10,181,177,94,164,196,174,241,124,109,152,137,179,141,225,97,4,27,174,27,53,62,136,59,23,41,180,59,250,110,66,
-27,6,171,109,112,200,236,34,126,0,214,235,231,171,81,158,255,6,168,183,31,50,121,50,34,231,251,213,114,152,163,144,
-193,133,34,171,237,34,26,161,209,16,160,113,164,143,64,255,199,218,128,74,30,191,242,176,56,39,91,203,16,31,96,235,
-16,214,9,241,188,112,157,23,132,26,200,166,154,183,192,94,197,138,227,137,58,78,248,118,25,191,249,216,43,74,211,16,
-172,236,159,124,162,254,26,141,68,153,153,89,220,6,154,254,250,149,154,197,229,161,171,153,110,158,231,68,64,211,126,77,
-76,6,188,123,166,1,199,79,175,255,140,164,14,129,189,231,20,173,94,29,119,80,23,118,31,9,254,119,212,11,28,166,
-57,6,242,146,17,225,228,254,207,3,127,115,246,192,203,179,221,243,203,108,230,196,210,27,249,47,155,30,24,237,25,217,
-161,34,181,43,159,154,192,87,249,189,185,32,234,169,217,231,243,85,22,237,151,53,42,210,120,2,93,195,81,171,127,234,
-237,87,163,239,1,247,224,20,131,31,177,245,168,253,44,14,76,111,128,11,147,144,103,78,239,142,67,164,168,120,120,126,
-218,204,17,37,48,32,160,81,7,230,32,166,149,232,241,212,146,9,111,128,202,248,101,74,163,81,107,246,232,19,118,58,
-17,229,133,132,39,205,105,173,12,231,44,175,145,65,242,77,91,94,129,102,19,153,181,123,81,107,12,236,194,89,95,119,
-55,142,177,78,92,111,227,141,60,112,223,174,59,199,168,44,150,1,11,17,119,253,242,8,104,14,211,39,205,76,83,236,
-83,166,180,45,84,187,60,92,205,154,75,188,60,50,0,74,171,132,188,126,219,155,65,114,107,112,133,161,57,50,163,240,
-164,107,197,196,213,125,150,130,218,141,203,25,185,155,21,98,140,130,203,218,119,244,216,74,143,175,246,213,35,105,131,57,
-201,4,204,104,190,235,146,61,139,95,204,183,24,241,3,110,163,60,109,53,6,148,89,196,136,56,104,203,175,167,91,46,
-255,177,90,71,215,219,176,37,31,146,82,252,164,222,185,232,168,58,219,168,243,153,11,41,131,158,119,91,162,162,35,22,
-127,248,152,76,145,115,196,193,67,113,132,78,57,77,93,115,11,199,140,245,222,50,41,10,176,58,131,210,246,220,168,234,
-16,103,182,142,215,236,191,182,65,84,219,35,229,84,252,65,216,245,42,124,85,214,190,182,193,39,7,124,111,128,206,175,
-149,88,74,185,73,3,190,182,21,75,255,43,67,108,169,252,149,144,215,57,131,68,109,85,115,113,154,147,94,192,121,159,
-153,205,144,36,20,103,210,236,29,200,81,245,201,219,87,38,192,118,71,82,206,57,72,49,105,42,203,255,52,183,238,120,
-33,64,90,30,244,31,93,203,79,25,38,85,252,111,12,36,190,7,212,235,94,68,226,181,135,223,46,67,107,243,124,125,
-119,238,89,130,109,234,231,78,159,36,108,42,65,106,65,131,149,33,67,17,177,41,139,143,157,223,126,179,90,199,191,237,
-123,145,172,128,116,177,52,49,252,136,22,5,69,131,69,46,216,131,249,173,32,244,54,192,16,232,141,83,208,99,133,251,
-95,194,37,174,88,242,206,131,3,165,98,20,116,170,213,237,94,240,247,60,105,124,238,141,33,173,186,240,249,64,217,62,
-84,157,111,113,3,131,168,171,74,240,201,68,57,246,243,235,105,224,137,168,94,134,173,44,246,245,0,162,107,23,177,220,
-133,71,160,1,32,200,222,89,160,35,106,68,53,32,166,252,48,42,237,0,169,25,154,42,153,26,58,201,105,186,42,214,
-85,90,230,66,33,170,16,39,218,136,82,52,251,134,131,200,87,57,87,142,145,26,202,137,218,182,38,153,43,28,93,169,
-161,81,232,141,229,50,142,128,74,177,33,61,178,191,125,69,172,72,181,93,41,195,155,25,143,209,45,121,160,193,253,26,
-121,178,25,203,141,57,241,156,132,253,235,188,134,65,81,242,231,119,112,246,26,72,99,15,36,250,125,189,194,142,210,38,
-143,164,120,16,118,111,48,153,26,42,0,233,78,17,99,20,233,75,137,38,20,211,92,6,224,169,55,74,39,42,21,187,
-175,248,111,55,226,70,5,179,189,244,76,16,135,23,39,144,109,148,64,199,77,235,121,50,16,247,49,50,24,117,43,43,
-22,115,54,153,128,244,224,113,11,152,29,209,249,167,182,28,121,58,247,105,6,255,110,125,149,245,228,210,140,131,102,241,
-178,235,251,149,186,164,209,166,128,142,67,46,79,178,97,186,237,154,127,63,196,127,80,166,152,187,11,212,106,59,58,209,
-253,30,15,98,180,173,131,56,196,2,248,224,51,142,51,190,67,110,221,27,238,207,98,147,50,240,62,89,85,60,123,6,
-252,91,56,112,52,232,104,86,13,185,190,240,21,81,208,170,252,241,145,28,160,50,191,186,59,90,91,120,244,167,207,23,
-123,239,195,205,25,89,133,72,42,211,219,81,90,110,203,209,158,190,188,73,133,132,141,176,38,41,114,177,33,138,166,158,
-158,44,85,82,178,134,6,71,26,229,185,254,230,183,97,47,82,120,26,221,33,54,55,148,66,7,194,174,176,239,32,227,
-87,124,20,224,153,213,190,42,50,143,159,35,158,40,12,103,32,101,102,62,29,101,138,77,209,54,189,69,55,20,239,147,
-54,19,231,90,183,183,230,65,194,170,161,98,125,50,9,90,5,11,208,69,159,247,23,136,217,61,11,78,107,84,170,8,
-118,8,122,82,143,250,233,117,189,165,44,128,145,198,139,111,38,42,160,245,38,223,125,217,45,149,98,9,45,23,99,211,
-149,97,76,56,241,238,184,205,225,205,193,3,77,99,97,4,198,220,120,23,218,131,238,71,139,79,99,117,241,58,44,26,
-222,178,100,1,240,107,10,147,38,78,188,133,16,61,29,222,94,145,222,105,82,230,245,128,72,91,71,36,129,193,112,174,
-213,59,66,102,106,79,156,237,175,118,6,179,19,85,163,192,214,53,98,71,143,18,46,25,116,153,205,194,200,130,54,247,
-159,142,99,46,117,55,214,31,110,187,103,103,229,198,169,234,25,144,150,237,158,200,104,253,193,57,237,47,222,134,130,72,
-229,42,227,247,197,145,155,130,172,97,140,137,147,142,198,163,199,215,109,126,191,171,7,60,13,243,126,228,197,106,121,120,
-128,126,45,240,179,25,224,207,88,174,218,192,200,12,166,71,28,170,193,6,40,86,197,166,25,205,77,74,134,24,90,37,
-175,43,163,149,114,33,26,209,170,73,39,185,231,98,56,144,117,192,96,164,65,25,226,13,173,178,193,6,43,153,231,83,
-51,60,172,133,145,198,144,69,220,238,172,225,205,48,177,153,153,19,249,36,140,215,219,99,68,200,236,4,10,163,10,67,
-67,94,252,56,93,111,119,188,238,44,62,0,92,240,38,247,176,15,6,230,60,169,222,226,73,100,187,32,190,61,43,118,
-226,167,11,45,92,148,185,146,38,101,86,161,24,123,31,176,81,157,146,198,28,239,252,77,219,231,200,96,12,83,182,166,
-244,202,193,206,2,48,202,9,6,15,2,200,207,121,68,123,54,200,3,97,144,164,189,162,165,160,236,25,128,239,231,232,
-174,52,26,84,70,170,140,207,186,74,65,252,86,243,185,147,175,144,43,107,134,195,73,200,233,106,99,97,210,73,178,149,
-55,138,27,55,123,226,118,189,61,79,139,82,191,172,151,54,83,240,214,75,120,179,234,86,108,153,250,245,90,168,40,173,
-191,235,140,72,79,74,162,237,119,15,125,130,238,80,181,200,221,167,184,167,177,26,77,225,211,176,163,27,229,187,125,247,
-204,83,124,192,184,46,93,112,59,134,231,36,120,245,4,169,234,136,143,27,86,242,10,245,156,143,147,142,241,97,32,26,
-94,64,139,118,254,143,174,131,88,128,15,229,38,180,252,26,1,208,63,100,158,195,246,223,69,226,125,25,81,148,134,229,
-242,68,181,2,78,199,33,233,247,207,155,223,168,238,131,229,96,39,157,205,52,183,86,11,144,252,42,213,67,247,19,71,
-143,32,227,108,138,46,169,103,110,32,136,165,183,145,109,112,154,53,225,253,88,191,232,184,0,23,86,34,88,72,128,99,
-36,169,175,104,71,35,190,24,73,65,52,122,50,210,2,15,41,142,202,11,93,240,93,116,220,167,132,190,253,241,32,108,
-78,214,233,13,139,109,220,177,106,177,225,139,168,108,148,29,119,95,46,197,99,132,175,194,93,244,69,112,129,187,71,119,
-141,74,248,159,122,248,131,85,236,40,226,120,241,77,222,130,65,78,241,50,90,7,224,243,3,225,110,133,221,4,183,97,
-5,196,220,157,91,255,225,84,51,244,13,41,29,77,214,61,110,117,34,59,140,156,21,240,154,199,3,80,8,81,207,160,
-142,31,15,47,92,245,246,224,47,42,51,149,241,218,35,204,54,48,126,207,43,155,227,255,216,127,177,66,156,130,188,69,
-7,137,101,215,94,157,203,218,102,208,73,36,166,45,18,82,107,7,31,47,201,132,5,68,233,94,208,152,50,156,94,249,
-171,61,209,134,248,252,168,195,68,173,218,216,96,102,96,193,96,143,70,95,19,9,102,242,102,243,132,171,44,43,42,59,
-157,144,62,157,200,177,50,166,204,78,208,152,157,116,210,236,127,8,220,203,188,179,167,127,169,73,202,224,181,213,214,203,
-41,20,160,112,106,13,30,80,17,180,107,102,141,203,69,60,149,133,230,68,91,28,228,40,227,71,2,197,216,152,171,53,
-88,58,249,135,28,85,211,16,85,164,117,187,37,199,43,59,226,201,104,250,74,73,237,152,180,124,243,252,107,142,164,243,
-166,231,174,94,55,220,97,228,134,177,184,176,111,7,98,217,110,201,244,58,124,31,105,188,138,139,120,116,249,238,225,152,
-239,34,156,223,124,148,251,18,193,1,120,56,54,107,209,177,33,115,34,89,162,5,197,166,95,98,210,12,68,56,190,192,
-115,142,189,170,251,173,99,89,180,133,121,11,253,114,228,229,240,23,125,187,169,224,41,67,142,156,11,105,111,144,216,236,
-113,55,53,250,189,10,111,20,117,195,142,95,165,220,135,94,164,71,239,22,65,235,106,170,202,212,124,240,252,211,181,12,
-37,211,168,230,245,74,1,93,41,191,35,46,140,244,45,246,25,53,244,62,190,178,110,62,1,255,59,115,228,139,43,72,
-83,42,116,57,101,234,65,222,102,234,35,194,101,207,22,32,247,116,212,8,229,145,13,26,3,244,2,93,69,21,149,133,
-227,18,77,92,37,164,108,12,144,210,193,163,58,138,131,201,182,251,67,186,28,1,247,24,173,123,202,45,9,233,71,147,
-69,159,64,150,141,34,113,228,20,173,49,133,72,77,220,138,232,178,31,197,35,132,126,144,181,127,152,114,1,69,236,49,
-10,228,168,45,166,45,186,234,187,215,251,176,72,222,42,243,116,92,209,181,82,175,149,9,49,165,91,42,30,156,204,35,
-226,13,121,141,184,44,147,224,231,22,255,0,43,141,97,62,98,128,16,214,241,17,203,149,167,63,8,149,96,27,119,83,
-57,183,13,246,220,132,60,187,246,113,71,134,113,205,200,55,252,227,72,180,38,187,74,81,102,162,179,186,129,82,140,18,
-204,144,118,15,72,21,80,70,208,242,87,46,56,200,234,9,91,248,149,201,229,98,8,139,254,160,192,145,93,110,41,248,
-224,68,14,23,242,92,80,29,206,49,111,27,223,197,169,84,240,165,226,42,66,23,149,244,86,164,205,116,166,100,211,121,
-51,113,255,7,168,6,152,88,43,58,215,222,104,157,62,221,227,14,232,214,194,166,208,15,81,51,155,180,201,173,178,53,
-138,114,105,134,163,199,119,178,192,114,2,137,147,29,46,24,198,225,83,138,62,28,117,111,199,20,202,32,147,16,182,133,
-198,172,215,26,109,29,119,78,89,194,116,24,172,69,84,78,85,101,178,109,126,193,21,213,16,75,156,24,213,20,127,179,
-130,129,178,226,122,35,76,49,174,37,151,90,143,241,54,4,245,66,242,142,14,126,159,22,117,206,228,45,211,175,198,13,
-235,127,134,199,33,17,145,18,53,119,49,183,212,20,50,22,128,214,6,152,172,222,167,172,160,175,190,11,221,32,95,234,
-242,140,181,45,208,69,25,159,0,241,35,210,150,233,225,150,108,9,186,82,18,156,3,53,25,69,230,161,174,163,207,91,
-56,172,219,53,74,230,18,22,16,131,138,44,225,38,114,122,86,17,211,183,189,213,202,238,205,184,149,8,9,54,252,50,
-29,5,220,204,27,71,216,202,43,123,129,100,2,164,197,255,73,163,30,2,245,102,233,5,90,164,9,246,47,20,23,27,
-59,149,242,102,109,254,92,31,41,119,185,91,87,68,207,169,3,205,113,45,167,76,204,142,66,85,55,13,29,52,159,235,
-183,177,109,68,139,6,79,244,221,92,247,85,248,80,29,81,164,168,110,227,54,237,183,121,68,181,106,116,156,32,133,209,
-95,225,2,142,167,84,25,115,187,98,133,255,3,173,86,67,206,195,164,100,85,106,213,153,101,158,248,140,42,176,85,173,
-83,157,95,65,200,13,176,81,21,222,100,239,10,228,111,203,141,15,156,249,207,123,168,201,114,108,237,48,58,42,72,190,
-209,13,65,88,233,188,93,235,187,128,86,241,101,114,212,35,24,235,57,110,146,219,253,162,34,36,151,53,71,171,153,27,
-104,93,184,245,137,184,113,82,116,14,182,40,117,138,27,98,170,196,22,137,132,202,138,136,169,13,60,204,130,197,30,101,
-169,167,236,164,13,191,8,13,216,74,160,102,46,243,98,4,19,64,108,234,163,215,237,227,67,217,105,123,82,7,92,116,
-226,136,214,70,233,226,41,77,77,223,58,217,124,103,90,147,237,92,20,255,117,114,190,185,1,203,113,67,11,156,193,7,
-235,242,5,120,232,41,108,73,38,132,31,174,105,191,96,79,22,29,220,232,15,36,229,76,121,150,242,35,163,190,150,217,
-201,9,245,182,247,233,154,9,170,132,38,102,111,225,187,132,10,243,188,9,123,139,176,249,36,168,252,149,194,125,49,79,
-43,119,147,105,54,177,21,227,42,159,219,32,93,186,18,67,22,182,76,22,118,83,238,200,139,16,92,79,102,114,130,116,
-77,245,83,213,200,73,164,155,63,83,34,168,120,178,191,174,44,248,253,138,8,87,130,131,171,141,26,127,36,69,234,206,
-179,252,37,254,137,120,39,15,77,129,178,219,58,190,159,111,176,123,116,118,109,94,134,204,115,66,115,72,150,33,69,24,
-202,195,235,107,100,42,106,112,197,70,43,244,217,152,15,46,222,60,93,102,107,146,231,189,74,88,201,215,9,177,221,226,
-253,234,181,206,124,69,7,22,214,56,95,81,94,218,181,194,89,150,17,169,166,120,93,64,178,104,156,221,136,147,3,18,
-214,168,188,6,2,241,237,44,104,119,100,61,136,233,228,248,206,253,195,237,88,193,152,154,207,176,238,87,67,59,213,161,
-164,236,88,3,3,197,46,22,239,92,126,241,173,89,86,150,142,198,151,80,24,118,2,157,229,22,216,253,102,121,75,183,
-144,172,19,149,61,148,11,208,140,174,135,97,12,57,132,59,69,39,29,163,110,37,112,28,223,50,140,111,206,84,31,27,
-168,3,152,195,247,207,108,170,44,241,251,112,226,135,235,44,85,45,74,54,131,198,6,126,134,2,206,135,38,182,112,245,
-5,137,199,125,220,110,9,63,90,96,56,49,187,4,80,143,173,87,62,247,251,173,86,29,178,49,157,56,121,103,123,186,
-87,179,234,237,62,195,242,74,179,74,196,213,185,11,98,97,77,114,12,179,114,100,137,74,233,134,6,23,169,122,46,254,
-26,234,156,189,137,121,192,65,128,178,94,239,104,62,248,226,64,110,112,108,131,123,71,53,233,108,199,245,82,137,218,24,
-233,40,235,128,16,138,21,69,94,46,240,37,185,170,2,141,55,239,107,69,6,244,85,1,61,211,182,169,225,17,144,76,
-1,66,185,160,82,67,93,204,204,1,0,54,158,252,91,164,130,253,253,96,142,232,61,96,62,54,99,39,32,68,149,196,
-218,62,36,46,167,43,70,228,221,149,27,112,62,205,251,113,167,26,237,159,154,94,209,103,64,9,103,76,184,31,35,6,
-86,69,22,219,173,110,199,245,82,172,70,184,97,96,241,172,28,100,69,26,200,40,52,226,163,31,112,149,173,77,12,147,
-233,245,126,99,84,152,98,14,172,177,239,134,32,229,26,112,1,242,190,34,229,9,167,213,69,208,82,150,13,190,127,124,
-19,34,135,24,40,22,87,111,231,11,84,16,168,112,218,225,74,49,38,245,230,6,100,240,61,97,28,98,124,144,93,132,
-7,94,183,197,86,150,37,94,169,78,163,2,251,38,166,146,156,18,56,249,156,174,100,140,150,30,139,151,161,49,72,25,
-42,212,237,38,162,183,172,246,79,197,54,167,239,103,236,17,121,44,242,82,7,81,70,171,25,58,95,173,27,194,136,226,
-216,134,249,135,254,182,139,34,171,189,17,226,170,40,170,32,216,213,221,254,182,195,142,187,162,146,58,219,214,205,100,115,
-218,143,84,30,221,21,161,92,216,42,42,199,80,207,101,9,84,39,74,1,7,219,124,127,44,13,16,179,139,35,39,144,
-18,183,44,216,66,142,41,137,222,75,244,219,96,227,181,168,178,131,178,139,217,159,147,39,202,88,219,137,8,190,196,100,
-62,76,158,185,169,57,133,238,228,62,241,234,207,16,235,232,151,136,51,109,136,248,204,221,34,217,117,142,142,218,159,225,
-223,181,135,232,0,241,160,191,85,140,15,199,184,207,38,116,180,37,65,106,68,249,156,139,179,175,243,90,168,72,71,153,
-73,39,105,172,85,183,190,25,200,188,1,167,98,0,71,127,73,50,155,39,170,3,117,115,72,153,134,157,81,32,115,140,
-52,140,95,120,6,209,249,49,68,121,72,32,199,166,135,243,151,138,226,236,0,22,48,170,225,160,139,103,45,175,231,8,
-246,218,116,141,86,243,249,170,99,226,244,117,172,52,47,126,194,24,133,53,143,220,218,163,170,200,68,25,70,14,116,237,
-155,182,142,154,158,247,90,225,166,126,81,242,1,72,27,169,106,188,194,195,198,141,73,174,116,208,201,136,41,43,187,210,
-112,8,227,31,51,100,73,79,216,61,104,193,193,239,99,146,106,191,134,64,45,178,181,37,226,207,53,68,93,229,90,97,
-81,186,227,106,162,164,158,35,137,118,111,66,58,133,195,125,74,171,27,158,171,246,151,153,16,195,20,41,213,61,163,188,
-140,104,43,22,132,203,242,23,161,160,88,165,142,234,22,163,57,120,120,158,179,227,77,30,70,37,108,85,175,158,73,147,
-72,18,225,55,144,62,161,101,39,210,35,47,224,104,191,153,0,45,146,250,112,137,176,67,194,86,252,197,49,12,35,184,
-164,135,136,222,163,17,196,212,127,120,252,103,104,220,96,235,125,194,255,12,185,111,194,250,122,246,194,30,71,130,144,86,
-117,70,44,15,106,249,42,243,198,186,250,44,247,254,24,178,154,59,225,196,18,164,69,174,94,9,45,21,64,243,71,218,
-92,105,117,111,226,125,199,55,83,231,201,54,105,215,46,221,165,193,36,74,208,248,56,28,6,189,241,95,19,59,218,133,
-236,188,83,248,209,92,158,69,54,15,106,127,20,203,138,163,130,232,168,88,167,110,167,155,142,16,120,147,86,77,156,206,
-96,244,54,52,157,144,132,230,44,243,77,105,205,21,52,22,1,43,38,97,148,54,114,12,112,71,175,136,164,179,54,45,
-101,123,28,142,214,149,37,8,150,244,51,8,225,230,70,126,199,215,29,58,225,27,6,128,111,130,109,240,140,183,63,232,
-5,11,70,125,18,77,252,132,77,35,216,73,95,180,191,31,207,102,36,160,2,191,37,44,86,129,56,90,85,102,4,50,
-70,34,95,49,4,0,119,130,15,245,64,94,7,250,61,61,61,80,167,179,159,212,193,65,119,231,113,154,145,217,143,254,
-20,105,232,221,57,149,233,154,241,183,248,133,206,55,160,57,42,233,169,5,70,103,233,20,116,164,90,211,106,90,1,226,
-170,209,116,224,219,246,181,185,29,163,62,194,49,207,80,137,81,84,41,204,145,152,63,208,1,107,76,172,99,21,80,236,
-35,20,164,47,243,177,15,220,60,202,219,57,179,202,19,128,60,152,213,47,22,58,107,79,142,246,66,77,10,196,226,117,
-205,66,202,73,89,154,196,148,209,10,185,169,56,10,215,177,96,55,19,13,217,159,153,197,86,253,139,176,121,254,146,111,
-187,111,53,147,166,104,179,25,229,174,186,231,71,71,206,122,52,149,132,163,183,199,193,47,68,45,229,131,117,109,40,232,
-111,94,160,240,165,128,70,139,235,184,98,201,136,63,121,16,225,83,30,4,192,219,224,109,78,88,123,47,117,75,140,150,
-122,2,191,95,100,121,222,225,25,1,86,103,241,192,66,167,238,182,17,236,152,171,37,247,181,200,107,69,17,225,50,116,
-105,87,102,178,186,22,56,117,90,83,233,185,52,198,230,2,105,112,35,106,218,141,233,172,245,132,170,75,58,127,159,147,
-16,122,224,87,120,37,32,219,247,170,62,142,68,62,165,27,199,158,160,81,228,167,46,37,54,244,19,150,94,149,50,199,
-103,240,137,230,42,56,82,249,254,37,93,244,75,212,86,66,30,117,239,195,82,196,61,173,182,32,23,156,11,151,191,170,
-241,219,176,94,29,155,205,67,165,36,188,63,198,43,177,116,48,104,151,182,66,17,81,226,63,227,84,55,51,33,26,86,
-192,61,34,106,96,154,244,243,86,152,253,53,75,204,55,85,8,234,35,191,174,73,131,188,4,163,210,196,53,88,254,148,
-252,170,71,213,55,193,32,93,161,166,115,28,247,98,210,132,118,52,114,216,193,155,228,52,192,45,8,122,16,160,156,50,
-173,80,31,231,225,67,118,153,80,97,92,17,66,199,137,95,14,203,67,176,188,249,190,69,123,213,131,36,78,212,59,116,
-245,76,248,157,39,98,83,56,73,65,142,87,149,188,6,230,170,219,105,100,73,150,236,148,128,111,109,24,142,35,34,231,
-81,235,239,182,101,71,165,18,173,248,191,186,26,179,200,212,221,158,122,44,90,215,12,89,234,51,167,18,208,219,231,247,
-231,249,131,184,104,253,163,61,225,53,157,143,82,0,86,85,99,6,0,21,121,233,210,132,209,214,168,87,60,83,177,29,
-3,10,143,120,218,141,251,137,118,238,1,73,252,248,2,185,76,181,140,179,56,117,38,39,128,43,182,40,246,182,188,254,
-176,177,149,56,60,250,232,133,99,82,77,88,239,187,204,76,222,55,211,56,128,16,119,48,132,86,139,217,148,143,230,134,
-105,0,231,36,140,31,211,255,153,15,55,43,123,129,220,210,140,127,38,121,69,62,84,72,99,205,238,154,76,100,244,76,
-24,84,86,72,27,25,194,230,176,207,140,62,118,157,207,198,135,204,224,22,136,112,71,105,255,19,68,36,166,107,122,149,
-4,108,71,215,198,12,25,84,166,101,210,220,30,89,2,51,91,216,148,118,156,201,235,241,5,82,229,242,106,9,254,166,
-21,174,107,41,249,0,3,61,26,34,209,44,130,80,3,183,184,221,127,83,193,11,87,95,155,169,185,207,221,44,23,53,
-22,77,15,63,236,126,64,21,112,120,196,150,180,130,38,171,126,188,35,70,94,197,189,148,164,88,201,192,247,171,241,251,
-194,137,205,13,83,196,169,30,92,106,156,160,170,14,144,232,4,202,12,195,196,165,204,129,223,94,255,208,37,51,239,126,
-125,160,48,60,198,200,54,164,0,85,71,246,108,137,189,104,238,183,64,165,208,240,116,18,185,53,254,241,34,107,67,40,
-16,73,248,190,79,165,35,198,72,234,15,108,172,80,243,209,107,47,187,210,82,80,219,107,93,113,178,22,108,203,198,210,
-251,51,197,159,159,28,61,1,90,182,191,222,10,103,251,29,114,219,143,209,29,21,103,163,220,187,101,17,73,51,118,121,
-179,220,145,119,171,237,143,170,52,84,158,59,122,122,77,18,47,158,9,28,32,161,44,86,38,84,147,11,145,162,119,192,
-191,189,109,93,109,236,21,128,3,247,145,7,190,206,130,114,152,162,112,207,9,139,20,19,129,201,97,156,200,181,208,81,
-210,146,7,239,223,39,43,106,250,14,47,63,22,178,151,113,233,195,93,206,143,181,239,219,207,223,180,50,233,61,246,78,
-234,169,118,2,95,27,162,75,241,59,42,85,107,11,23,99,172,217,134,219,168,194,24,255,49,71,244,21,196,136,237,192,
-27,30,102,190,26,146,49,201,184,8,93,244,89,90,149,46,7,167,7,89,98,155,185,94,77,143,159,153,247,45,101,64,
-167,188,162,98,49,221,100,204,229,192,162,219,207,199,247,204,44,186,235,170,100,81,172,225,219,188,100,1,27,234,42,119,
-186,20,73,58,148,135,162,23,203,90,17,141,140,75,112,97,170,213,247,74,236,178,27,163,121,46,152,174,140,181,175,58,
-183,133,226,51,97,129,102,190,169,30,57,92,85,207,241,99,248,92,207,167,140,62,207,65,90,6,55,240,77,68,9,197,
-104,205,19,198,247,222,213,125,185,224,145,236,70,188,99,27,65,145,141,162,52,206,65,232,78,61,244,21,121,133,89,41,
-194,11,126,179,219,246,117,99,123,198,30,128,115,157,198,230,16,94,215,192,25,250,246,242,228,48,234,113,164,20,225,139,
-244,164,49,147,1,25,231,156,238,212,224,139,142,130,34,108,95,231,189,17,128,25,152,183,232,56,63,171,224,143,174,146,
-68,3,248,234,28,164,224,17,19,95,115,78,124,254,148,154,152,144,66,31,54,131,160,235,167,229,242,255,239,149,92,160,
-195,106,94,24,51,211,47,145,210,78,230,172,27,162,181,158,235,227,254,66,89,216,142,25,74,60,228,37,122,61,249,51,
-162,63,8,17,216,49,55,155,187,206,53,27,107,72,70,29,138,36,58,141,186,154,158,164,44,2,110,139,124,74,130,243,
-232,153,51,136,114,102,88,92,89,147,255,81,61,73,207,117,0,168,152,178,221,142,19,117,240,13,234,36,55,239,11,231,
-105,78,36,137,234,214,95,238,167,42,226,75,130,118,120,144,30,37,102,45,7,204,183,89,146,248,181,157,36,242,211,217,
-11,40,221,164,145,138,236,70,13,176,28,133,0,46,251,222,72,178,195,228,28,236,246,99,13,29,18,151,165,2,153,193,
-229,144,227,210,108,166,181,79,144,161,227,79,211,80,242,154,132,250,215,12,251,159,108,101,190,124,238,47,240,55,65,227,
-43,11,167,155,251,70,49,104,148,165,192,111,241,67,134,65,123,21,126,229,100,32,94,96,159,102,25,177,197,18,149,178,
-27,206,108,53,16,68,78,192,218,233,22,207,28,16,165,58,140,212,218,247,71,50,35,226,110,119,62,98,252,69,236,42,
-110,214,87,71,183,110,92,223,194,131,173,236,163,195,226,11,69,34,11,204,236,79,73,136,183,61,193,100,7,97,214,222,
-223,137,240,130,44,162,180,34,221,25,202,241,110,183,9,163,110,199,141,70,71,136,71,202,98,93,9,18,97,144,126,165,
-180,167,109,169,6,144,155,253,45,62,20,19,107,185,136,200,41,230,91,191,85,211,18,88,59,83,30,55,253,156,47,157,
-155,249,63,93,176,0,56,38,51,144,208,123,218,204,48,32,27,96,177,19,10,134,170,249,161,96,231,155,41,138,187,213,
-154,249,224,20,78,10,247,72,212,76,136,53,240,125,27,147,242,86,213,121,71,33,43,220,211,4,36,182,84,41,233,221,
-224,34,180,207,45,39,63,144,135,101,179,176,208,72,44,37,145,252,240,144,175,101,249,72,191,36,188,212,79,194,103,34,
-212,73,43,177,9,81,250,139,144,94,56,37,173,124,162,12,178,206,168,230,255,42,66,132,155,114,108,26,105,246,199,24,
-248,172,127,41,142,212,6,165,34,201,179,54,54,50,80,123,13,223,21,106,188,7,53,129,86,237,15,23,84,212,94,86,
-227,129,45,59,232,223,184,227,202,71,23,123,225,238,236,246,55,133,13,91,109,127,83,21,191,224,65,156,207,185,188,157,
-130,78,140,49,201,211,252,145,52,158,229,115,91,48,58,247,188,97,98,151,253,40,177,109,133,118,142,173,155,173,189,56,
-8,123,58,107,107,85,80,27,3,184,174,164,108,6,21,137,49,139,44,16,151,139,248,108,129,47,136,233,237,118,73,117,
-132,250,166,17,118,169,17,56,11,251,104,212,22,122,82,53,238,123,233,61,159,9,13,78,150,232,76,188,164,80,218,121,
-4,127,107,74,214,110,10,217,134,247,103,44,199,104,136,209,176,193,17,177,140,19,171,209,81,130,94,88,232,165,228,115,
-81,221,116,195,80,18,53,100,157,166,224,155,197,75,52,225,81,118,49,20,90,140,226,123,123,86,146,124,163,176,64,59,
-138,28,87,55,253,150,100,105,189,203,136,47,151,215,153,20,4,103,32,162,186,254,45,247,135,249,146,24,1,216,129,47,
-46,16,171,90,1,177,155,14,166,150,236,90,173,128,8,116,245,57,158,68,121,228,196,6,67,107,15,1,87,179,198,73,
-99,72,237,169,136,234,230,150,210,32,3,69,199,57,237,183,104,98,93,237,17,177,160,231,37,134,69,243,30,10,254,158,
-40,79,77,168,71,155,193,131,248,237,224,163,4,253,104,82,233,215,157,75,106,50,199,65,105,227,64,90,149,182,165,42,
-117,46,65,210,39,64,114,166,116,203,7,98,158,163,124,5,210,239,108,51,254,165,93,205,5,28,71,230,72,124,130,131,
-26,39,212,31,115,29,127,167,200,122,199,72,87,141,3,177,53,105,140,162,204,136,31,50,32,56,168,45,221,1,161,190,
-110,105,127,186,15,95,205,42,12,106,176,40,72,64,254,88,197,32,236,227,86,151,131,65,196,177,9,43,67,28,204,130,
-215,91,90,227,200,53,93,192,195,24,155,218,232,84,158,184,13,60,182,58,159,166,7,54,221,223,69,192,41,197,195,64,
-124,215,40,88,37,196,247,247,255,20,117,208,132,179,37,89,32,192,90,243,247,49,175,126,196,5,71,104,102,139,179,238,
-178,53,249,41,221,23,236,208,73,226,69,55,121,115,245,2,221,35,219,27,178,191,44,97,165,170,227,205,70,117,188,116,
-75,88,193,149,13,180,84,146,4,15,60,188,30,68,39,250,187,50,103,170,24,55,234,9,55,175,212,200,165,24,104,155,
-223,97,229,87,206,235,54,249,228,89,56,54,96,165,123,30,252,154,148,89,44,88,239,150,88,51,163,207,73,236,133,203,
-96,169,177,236,44,27,9,222,22,125,0,9,220,69,9,36,122,204,40,65,56,212,210,146,46,187,35,186,37,92,206,224,
-137,45,24,29,228,195,36,140,109,186,113,210,170,5,33,96,139,186,221,91,146,178,158,95,32,38,63,24,187,240,15,195,
-176,127,20,140,8,73,169,142,155,248,210,50,223,253,114,16,157,81,58,247,194,77,119,40,178,197,67,77,112,112,190,109,
-194,128,178,226,89,216,59,134,14,41,196,156,78,246,172,46,229,104,16,228,101,134,39,125,25,3,183,86,170,195,76,191,
-23,64,23,169,241,242,165,181,70,32,197,163,42,57,210,104,227,126,179,192,227,170,180,5,226,211,191,127,174,133,83,155,
-73,208,49,40,211,204,189,215,204,220,32,130,73,78,71,229,70,152,112,149,243,147,91,228,60,106,181,102,252,165,163,50,
-96,46,245,223,123,73,248,74,179,238,0,137,72,112,182,24,167,83,14,222,166,152,21,110,103,22,153,66,153,235,68,9,
-191,79,216,88,17,42,64,253,108,87,180,248,222,152,26,177,63,131,110,94,151,180,5,236,41,175,59,79,83,183,223,144,
-252,45,25,58,34,151,10,164,187,182,196,69,97,95,96,131,163,94,49,60,6,9,104,162,89,251,43,146,0,202,202,45,
-165,140,52,141,17,207,202,246,178,110,223,49,197,208,51,173,35,111,144,112,252,19,36,204,72,37,66,156,227,126,83,216,
-226,161,178,45,250,123,56,129,108,232,251,229,10,71,103,121,251,213,202,220,21,218,152,150,22,236,152,179,23,135,150,145,
-127,171,142,156,54,101,221,54,78,159,178,91,201,238,193,54,90,23,87,211,18,55,208,214,75,46,122,82,174,92,14,68,
-67,89,114,108,10,22,21,114,33,59,82,151,8,208,185,131,199,48,241,181,126,69,195,131,10,245,33,162,110,154,210,193,
-53,98,160,120,7,33,183,193,70,105,7,209,159,67,78,192,7,155,119,233,43,188,241,39,193,19,83,132,119,213,27,123,
-45,164,59,238,54,43,14,221,184,140,116,83,138,206,51,245,245,181,81,34,97,81,131,237,185,146,115,255,226,209,61,94,
-36,188,180,208,195,14,187,245,46,240,51,67,26,11,6,36,230,243,1,228,106,211,96,29,55,42,242,25,169,49,196,105,
-85,116,146,245,101,182,255,8,202,72,72,86,55,4,120,251,151,227,82,69,163,20,110,90,200,215,23,19,201,208,141,15,
-16,100,15,89,66,83,246,36,77,244,148,248,93,40,27,192,227,173,73,203,223,184,184,199,221,91,2,229,22,73,116,174,
-236,127,112,212,151,120,219,170,222,239,83,40,204,251,228,245,180,121,88,208,218,184,105,101,74,175,109,32,107,200,232,49,
-26,58,141,62,141,129,1,224,151,200,214,186,204,183,206,182,251,42,120,63,91,57,246,188,121,220,35,83,232,34,99,113,
-65,210,142,22,133,217,217,117,171,150,204,79,2,101,241,114,49,161,23,46,100,15,65,236,184,230,126,205,208,158,54,205,
-198,99,129,210,36,112,248,103,35,3,51,212,18,81,23,16,209,93,238,195,71,39,204,233,236,245,96,59,233,228,61,77,
-63,180,247,150,69,75,212,217,7,28,253,185,185,226,7,198,164,87,55,202,78,166,234,101,63,12,108,235,110,215,157,156,
-106,142,94,247,247,129,46,34,68,141,27,104,159,153,126,131,193,10,64,175,41,47,26,162,97,72,108,195,28,21,77,103,
-37,158,174,5,218,78,201,197,97,205,95,40,60,26,217,225,201,4,11,219,130,195,96,189,31,117,220,63,31,147,24,110,
-217,245,237,45,60,6,142,143,51,42,47,145,11,167,223,155,62,169,155,71,218,54,219,253,252,50,251,113,143,13,41,79,
-31,245,155,70,209,8,9,9,227,155,87,212,249,65,146,191,5,185,95,250,57,143,78,121,132,153,38,145,149,98,228,68,
-217,25,40,100,50,6,165,14,101,55,30,235,140,197,1,91,10,16,145,105,4,29,45,241,6,120,136,243,175,41,205,101,
-147,32,174,122,98,238,147,135,113,165,4,152,203,158,70,50,133,130,234,253,114,237,247,104,245,63,126,114,211,127,233,83,
-189,83,78,47,26,149,37,8,82,138,146,181,172,230,229,254,202,192,163,185,172,248,209,238,161,111,5,52,8,14,47,91,
-250,35,147,241,43,29,239,46,26,0,125,128,169,189,5,114,227,194,2,21,141,102,233,39,64,230,155,36,168,116,209,253,
-5,58,53,153,70,5,85,5,246,17,7,66,135,30,15,191,152,127,80,230,58,134,145,171,58,107,199,141,219,40,49,130,
-91,39,123,41,226,239,114,141,203,159,9,68,212,71,163,95,158,127,233,157,216,128,143,20,226,21,40,30,205,181,181,182,
-86,46,240,205,25,190,173,103,118,66,55,140,17,181,195,39,192,205,122,3,160,148,238,244,180,80,169,187,138,105,187,161,
-96,240,228,31,93,246,145,217,138,202,59,184,216,38,110,199,207,62,3,94,102,236,254,17,193,45,129,112,67,57,68,132,
-98,170,36,181,137,22,34,140,173,125,33,207,240,122,83,30,169,198,128,79,238,118,123,205,49,147,215,30,58,61,194,23,
-32,210,178,204,207,152,32,202,14,103,198,161,94,78,12,151,77,57,233,69,233,211,68,148,164,205,80,201,149,190,101,109,
-111,176,100,244,80,238,97,146,167,43,99,17,225,92,253,78,42,74,94,88,106,63,105,247,8,193,225,152,113,37,17,133,
-109,152,165,227,82,123,12,70,139,70,134,163,142,60,158,155,172,154,58,128,132,1,192,49,28,187,69,231,29,234,62,62,
-72,82,52,214,246,36,163,39,169,177,52,100,68,4,171,172,82,161,99,52,79,255,123,51,91,215,162,66,139,212,166,170,
-101,114,179,83,223,199,92,216,157,160,169,225,157,142,185,51,34,66,55,103,229,4,120,110,178,160,35,50,205,110,146,209,
-124,196,165,16,59,98,158,117,26,243,85,133,164,80,94,238,17,218,139,7,190,111,74,215,157,78,31,89,209,135,221,26,
-46,209,242,121,149,192,69,77,225,107,178,192,73,85,186,160,18,19,65,158,81,19,236,250,63,100,204,83,113,36,252,82,
-178,70,17,45,157,248,137,34,88,44,125,233,1,232,39,136,226,36,127,62,99,196,154,29,189,170,198,207,69,95,149,88,
-76,51,61,191,244,172,1,132,247,127,217,122,109,45,82,36,118,102,211,97,125,5,238,64,252,199,94,177,226,79,122,204,
-115,221,48,195,137,77,230,192,59,81,139,85,185,59,169,57,52,214,211,180,165,76,77,82,139,65,60,43,87,214,245,35,
-26,3,47,42,132,185,165,137,24,229,135,238,168,3,170,132,166,81,130,94,36,62,21,66,223,181,171,30,164,21,186,22,
-244,96,125,167,16,171,15,26,6,144,125,120,207,74,91,165,70,122,150,238,52,131,75,37,209,237,227,19,62,148,186,222,
-250,148,34,56,12,252,48,153,0,56,81,95,254,95,30,150,70,139,112,175,235,109,251,136,212,117,234,66,188,148,238,149,
-31,189,236,196,165,143,117,1,234,21,203,86,23,65,218,82,161,8,230,161,7,64,127,47,6,242,187,25,191,165,160,70,
-185,84,17,216,154,199,25,141,189,233,236,86,37,113,57,109,199,161,46,74,134,79,220,108,97,79,118,175,225,137,134,192,
-119,180,224,169,93,111,141,16,53,228,58,5,196,49,149,137,85,194,225,30,82,163,145,90,199,194,5,82,125,177,174,90,
-210,200,147,212,65,116,83,1,62,23,151,54,28,250,20,83,236,233,5,5,21,5,237,163,99,226,206,135,25,55,239,28,
-37,149,198,221,126,207,35,94,98,58,146,58,39,131,15,164,66,147,161,52,14,157,136,24,179,127,85,52,87,180,198,231,
-112,43,189,113,74,117,65,71,83,25,199,68,241,81,180,136,103,105,156,70,68,47,219,122,205,112,234,169,168,216,132,1,
-16,130,132,26,228,251,195,175,136,209,221,107,29,75,243,118,84,197,223,159,22,195,163,94,95,205,106,115,58,218,198,159,
-78,216,221,140,139,3,109,217,202,54,242,82,41,118,68,246,18,184,196,180,242,136,23,166,244,14,213,234,173,148,253,251,
-12,140,184,45,203,155,141,55,99,32,155,32,14,167,192,91,176,25,51,179,98,9,111,3,169,8,63,177,8,186,196,111,
-129,10,147,101,114,114,128,82,85,78,229,0,32,5,137,199,210,232,228,234,81,199,155,215,222,156,235,13,222,206,231,158,
-202,76,214,132,127,182,149,238,253,157,115,229,126,181,193,246,12,149,139,110,14,232,213,2,143,144,166,104,56,112,104,154,
-252,164,192,190,203,32,234,220,195,78,65,89,31,14,143,151,81,78,49,197,50,87,95,53,255,109,129,99,45,11,121,212,
-122,77,140,41,113,110,143,147,35,142,18,211,54,64,178,162,131,182,247,144,160,111,27,173,166,69,35,76,25,18,131,83,
-44,34,130,176,230,91,150,181,97,70,19,144,118,180,250,19,36,172,37,203,179,80,179,243,105,255,224,211,142,100,108,237,
-86,228,40,5,195,86,108,59,193,77,234,89,54,155,186,157,201,30,36,88,132,168,242,30,174,15,161,130,125,151,168,140,
-159,83,244,176,65,167,71,221,222,101,133,43,54,120,33,5,136,206,149,35,153,207,76,154,218,3,231,87,181,96,158,150,
-167,254,149,170,76,163,17,124,127,179,161,209,97,107,60,113,103,233,104,94,184,97,252,19,175,165,81,59,234,252,224,127,
-202,52,22,181,81,178,62,83,149,210,216,231,238,75,54,112,53,181,9,37,188,5,220,130,35,18,190,124,239,115,195,101,
-106,86,255,3,205,13,219,153,139,11,158,35,48,146,193,70,129,163,20,203,71,128,120,62,192,110,244,12,223,94,221,212,
-227,43,139,12,163,235,127,117,67,78,254,159,236,197,45,22,166,253,88,45,245,164,121,226,173,160,133,173,79,197,108,77,
-143,35,200,180,144,10,89,84,198,93,44,88,157,248,32,24,215,123,59,104,54,246,157,184,127,34,44,181,33,44,194,37,
-128,159,12,89,75,163,160,83,126,143,134,115,52,20,173,149,198,253,136,51,66,139,195,6,40,153,95,40,26,178,24,175,
-74,14,229,143,24,221,222,175,148,170,226,25,55,115,122,66,233,251,2,26,241,87,5,154,1,61,89,69,7,30,4,87,
-150,39,79,20,130,1,88,166,253,227,221,163,195,187,160,9,65,169,72,220,170,145,76,196,141,195,144,219,73,58,69,184,
-108,121,64,8,172,26,84,253,185,199,197,212,9,219,63,146,219,250,201,105,108,125,31,139,25,224,176,129,236,246,71,47,
-31,242,95,200,28,138,58,183,230,104,114,236,89,6,187,41,176,239,142,243,241,200,9,145,168,81,224,15,184,243,1,22,
-66,91,141,61,163,67,198,219,47,61,18,240,8,230,177,15,13,88,24,134,79,134,191,111,238,91,159,14,28,163,195,235,
-15,87,37,34,255,46,110,230,72,24,85,99,252,154,70,149,92,43,236,3,14,93,240,212,175,167,175,240,53,117,143,172,
-34,149,246,195,182,203,236,218,62,116,6,182,154,185,48,195,233,84,203,105,62,220,69,1,68,101,194,87,101,241,163,94,
-156,160,192,109,125,211,217,84,30,230,199,183,119,16,214,99,166,9,112,143,239,153,16,60,132,120,166,42,172,147,180,199,
-27,154,1,49,13,198,113,57,239,33,222,71,182,47,184,246,91,23,135,228,132,243,207,76,149,120,75,1,124,196,212,139,
-220,54,78,89,91,51,139,129,50,99,109,50,209,94,247,171,31,137,194,241,121,171,53,81,169,96,158,22,205,6,18,50,
-142,52,18,51,84,91,89,180,108,195,174,214,5,11,123,68,17,123,79,232,38,148,242,65,157,70,191,69,90,171,210,156,
-120,187,197,90,129,163,180,148,27,54,103,237,28,217,224,247,143,67,233,27,56,147,135,250,138,145,101,38,55,133,135,47,
-82,80,160,66,234,31,17,169,172,74,140,151,98,141,113,32,220,180,160,165,216,153,162,43,67,214,205,39,137,92,189,46,
-186,213,103,187,60,191,119,237,206,85,101,74,61,130,199,201,213,219,159,164,178,117,121,202,106,252,245,22,165,30,184,108,
-134,46,30,63,208,239,236,199,247,110,204,11,239,177,175,71,163,114,226,236,56,134,155,108,130,122,193,10,104,134,66,28,
-30,103,248,201,227,127,74,90,194,167,96,111,205,212,149,152,229,171,93,222,28,16,74,110,78,149,177,173,195,169,248,48,
-217,187,250,179,240,53,228,158,190,147,61,11,172,19,142,153,78,53,101,150,64,189,77,106,199,161,249,212,253,203,174,255,
-13,38,230,172,189,170,146,159,208,176,26,56,189,1,106,193,19,253,234,193,182,129,224,30,187,188,202,84,138,46,63,165,
-177,5,242,199,179,140,208,52,37,7,79,204,71,85,43,99,196,219,62,244,189,147,151,38,130,184,6,201,23,53,18,106,
-35,240,188,71,34,77,159,50,50,74,91,250,123,240,129,255,99,145,18,8,185,206,237,244,160,72,120,230,14,249,196,187,
-27,65,185,244,193,170,87,12,234,127,57,177,240,74,255,50,127,25,26,48,156,151,193,208,192,145,165,74,101,143,103,133,
-175,240,142,82,99,161,151,246,94,46,217,9,218,236,25,190,157,108,47,93,48,124,119,124,88,140,91,18,72,76,225,154,
-212,238,165,150,44,183,93,137,74,105,166,14,31,236,250,153,179,11,97,28,227,254,121,193,239,123,62,182,57,99,48,40,
-213,128,77,230,80,89,140,207,53,248,80,46,41,126,40,100,23,108,19,87,147,47,196,66,169,196,208,108,126,31,149,121,
-95,109,156,193,108,175,61,9,3,238,115,32,67,173,205,203,226,226,45,93,84,62,79,52,172,227,110,19,163,189,10,140,
-28,72,132,143,9,139,162,69,172,180,67,149,67,180,55,48,7,213,204,142,84,174,113,121,174,247,131,33,253,180,40,114,
-240,219,39,114,116,22,225,134,116,85,27,182,114,49,51,178,181,6,122,171,81,207,73,124,5,43,112,126,193,98,156,165,
-2,195,33,67,16,130,96,233,19,24,128,140,191,72,136,223,143,211,235,49,91,70,115,122,40,233,35,189,20,46,125,107,
-59,221,241,157,122,110,22,22,98,204,226,138,43,151,19,18,40,2,7,7,40,137,80,149,149,170,22,108,143,40,45,241,
-9,38,255,181,234,111,25,22,235,162,174,187,248,116,212,112,121,32,9,222,122,135,227,168,62,84,152,62,99,36,131,181,
-187,85,112,227,207,107,138,211,61,36,196,197,32,191,190,100,31,61,97,60,88,17,8,12,206,212,204,216,74,179,40,75,
-8,96,142,222,42,151,229,29,19,169,246,60,204,240,88,203,252,50,32,214,234,72,30,28,49,73,93,15,93,213,135,179,
-213,68,140,101,27,51,84,42,18,180,168,15,88,199,131,197,99,7,210,154,48,249,80,134,249,69,236,23,188,228,255,26,
-127,152,185,7,255,80,162,32,135,103,239,117,228,27,215,20,165,248,122,158,175,77,11,65,32,92,207,142,241,236,120,51,
-198,131,226,83,75,107,54,224,118,131,78,234,44,44,23,98,99,132,191,63,155,150,138,67,52,33,170,25,10,63,27,69,
-151,6,74,194,185,39,202,71,160,131,85,119,86,94,194,54,248,40,238,58,168,63,101,129,127,98,145,24,58,161,99,194,
-58,86,240,45,218,12,90,110,209,239,55,52,253,39,193,210,82,110,52,224,110,85,239,35,117,32,150,117,123,51,103,212,
-194,65,95,148,15,142,32,227,251,219,202,8,94,173,138,127,214,90,225,191,123,238,157,236,58,43,237,56,86,169,23,126,
-178,188,46,238,60,193,252,131,192,15,183,26,6,208,24,242,20,193,115,115,173,163,26,123,36,146,10,80,241,80,96,28,
-68,171,172,128,22,201,125,131,63,44,67,42,55,61,247,0,147,194,185,143,51,217,6,188,243,142,218,158,210,66,113,17,
-53,156,26,108,170,251,192,108,189,41,77,51,176,191,169,138,134,87,45,67,21,71,195,22,61,56,206,111,165,241,103,138,
-82,234,234,18,78,193,70,108,245,220,146,56,250,167,117,12,129,102,129,26,174,66,222,245,50,80,24,13,100,205,143,212,
-15,125,81,38,14,112,9,7,187,35,126,18,130,189,160,157,233,82,153,0,215,186,108,100,70,125,62,61,4,141,22,22,
-146,253,243,225,252,98,208,35,4,27,98,190,102,140,115,211,146,30,175,172,245,26,30,130,217,78,6,156,92,40,203,249,
-218,46,153,188,246,50,198,190,91,222,39,80,112,62,3,67,226,246,245,33,97,192,13,214,79,95,234,12,12,129,103,110,
-5,241,228,134,43,54,42,98,195,68,179,179,158,125,235,169,139,93,101,156,37,40,42,195,35,143,130,235,128,136,46,120,
-78,20,140,172,34,9,76,34,106,26,183,202,125,238,222,147,235,69,2,235,25,0,0,254,215,152,125,128,136,237,143,52,
-163,190,98,141,134,27,47,46,178,64,71,145,235,203,204,203,162,246,117,114,21,184,155,84,8,99,153,58,178,89,254,76,
-86,162,24,36,46,193,202,191,219,28,52,71,108,117,37,247,147,74,156,63,149,4,4,208,211,121,211,148,207,5,49,37,
-141,148,252,70,192,170,208,226,192,239,20,122,91,216,30,176,81,182,176,207,193,153,47,64,52,242,157,212,236,234,1,32,
-247,100,73,236,189,238,168,135,37,142,75,108,168,159,27,243,202,157,194,85,91,238,132,190,42,46,253,59,226,126,70,56,
-102,165,139,142,252,67,208,59,52,167,106,172,244,35,66,229,44,176,24,254,220,204,49,209,39,244,151,112,5,189,195,171,
-124,242,112,173,117,169,108,231,131,113,92,49,173,186,243,188,154,229,94,29,238,52,218,177,57,198,74,7,19,31,145,87,
-153,245,155,113,249,238,77,65,4,87,9,107,245,184,123,88,25,88,76,19,166,27,148,171,73,211,154,46,124,228,134,49,
-60,46,230,111,92,109,131,170,136,156,9,104,140,25,96,12,185,96,50,23,82,89,171,183,177,223,98,226,108,234,94,125,
-39,28,201,235,93,1,172,27,63,177,121,193,15,197,37,135,125,150,113,82,97,171,222,21,213,155,38,34,32,206,177,187,
-236,28,200,169,23,187,90,25,147,179,42,240,3,90,225,54,46,191,4,2,133,205,5,161,185,174,217,147,106,237,67,88,
-56,40,27,0,101,21,73,223,131,141,77,85,61,63,229,59,177,86,219,144,234,154,164,95,170,108,65,1,178,121,227,0,
-0,117,121,29,59,84,255,81,31,117,218,25,215,166,47,87,17,81,67,83,202,123,24,99,4,80,104,154,217,191,162,26,
-211,6,92,35,224,82,97,219,169,42,55,2,59,108,211,221,101,245,117,201,86,119,164,32,59,238,104,36,29,140,103,199,
-185,184,106,157,239,195,48,146,116,122,128,206,23,152,215,235,214,73,162,185,31,203,246,26,170,123,116,199,140,183,175,1,
-23,14,215,22,41,187,212,244,154,29,34,229,29,40,192,89,88,225,186,136,6,26,85,66,43,7,185,72,125,253,16,252,
-251,126,21,180,172,207,131,225,198,142,96,25,22,171,16,173,110,30,103,7,99,187,56,89,193,77,102,179,160,229,38,95,
-244,16,110,150,181,144,131,181,199,210,195,223,10,144,206,227,210,86,105,223,11,162,173,144,41,217,76,52,247,82,104,167,
-179,33,185,140,86,42,220,17,180,134,179,188,142,230,178,106,171,137,220,41,252,7,23,99,251,136,30,134,54,37,227,190,
-142,205,125,14,48,203,4,207,89,238,87,158,39,185,210,163,43,245,158,81,24,197,22,106,180,230,222,127,248,74,52,140,
-213,211,185,206,19,193,21,114,252,238,100,254,20,102,212,116,190,156,53,37,53,59,46,174,185,237,14,168,83,119,219,140,
-245,77,59,237,128,92,255,148,254,53,73,193,24,169,241,16,76,2,37,2,247,10,116,229,193,103,96,191,117,29,222,62,
-18,230,175,60,249,17,240,38,58,59,3,175,228,202,64,247,49,185,10,248,113,2,233,188,204,244,21,254,247,248,63,225,
-176,80,92,215,95,159,162,116,228,216,47,50,88,180,141,169,1,133,2,237,172,34,249,165,203,197,197,7,161,89,184,93,
-223,133,69,184,126,32,50,167,240,226,197,76,243,89,197,196,16,198,90,44,245,201,45,32,220,78,225,220,55,155,180,48,
-178,129,35,253,214,133,250,91,92,32,171,57,167,198,143,170,58,179,50,150,141,184,144,209,119,6,87,192,196,146,148,213,
-179,146,214,104,228,255,209,90,6,170,33,200,82,97,229,215,68,193,35,1,145,138,109,8,158,188,54,148,218,168,110,21,
-124,96,114,128,160,155,43,7,51,3,82,217,225,23,231,45,91,2,54,19,37,130,18,163,129,216,209,127,26,153,156,137,
-101,118,203,84,182,195,92,57,9,171,215,187,148,6,110,24,182,199,70,9,221,242,241,221,49,113,245,125,195,245,230,226,
-255,100,8,230,72,152,51,115,19,139,21,78,248,86,255,158,154,247,142,23,139,112,156,89,215,234,245,11,117,117,1,36,
-225,10,247,173,89,172,234,73,68,36,68,254,48,147,253,93,50,245,182,251,135,51,231,187,99,123,97,150,37,107,149,216,
-121,103,12,220,220,239,137,52,47,165,113,107,247,193,20,26,56,224,200,150,154,36,101,231,45,198,167,167,167,224,169,21,
-102,130,243,62,61,112,121,147,190,138,239,174,115,87,112,100,59,249,186,163,56,151,74,84,17,112,89,169,166,255,138,238,
-39,204,187,241,40,175,22,234,142,168,133,229,176,167,173,102,1,190,62,53,106,166,186,18,107,168,150,11,154,32,24,188,
-94,200,219,239,232,245,71,169,153,6,191,242,79,143,197,102,3,50,113,51,5,244,96,160,37,19,187,118,116,116,45,131,
-162,68,32,58,144,107,132,226,168,22,204,139,43,194,37,17,8,90,216,160,52,180,127,168,139,242,7,13,177,90,96,128,
-105,61,47,54,232,105,42,18,181,222,187,111,106,172,246,48,106,225,94,21,85,199,136,186,111,149,176,228,9,20,65,163,
-155,232,46,176,84,196,43,13,34,53,216,24,74,133,145,89,180,92,135,170,99,218,41,39,130,63,231,243,38,250,52,25,
-208,235,71,96,47,114,201,245,165,241,210,49,65,255,87,141,113,213,24,200,240,189,239,56,50,66,16,41,7,251,125,63,
-82,32,1,139,102,118,246,121,42,0,60,99,130,85,180,188,11,245,225,210,120,129,174,27,56,27,18,90,137,200,107,26,
-214,70,95,101,30,131,227,128,194,224,132,84,112,251,172,7,65,254,52,50,204,119,129,182,251,128,4,91,124,173,15,248,
-43,118,170,109,113,122,32,54,176,61,28,12,43,249,230,63,91,8,58,73,229,119,203,102,17,138,118,214,78,93,122,118,
-67,128,121,156,54,76,176,184,239,34,222,124,23,193,9,64,58,220,250,127,90,95,142,96,180,182,191,124,185,150,34,81,
-225,235,225,223,10,2,11,61,2,98,169,250,183,45,244,119,188,233,195,181,86,15,254,123,63,54,181,68,108,92,85,214,
-19,44,21,248,59,166,78,147,241,148,20,38,56,44,208,59,80,53,190,250,247,95,49,143,97,185,38,145,148,237,195,83,
-205,8,231,219,73,83,96,5,149,64,152,38,218,170,58,60,216,3,2,180,75,23,12,102,179,218,56,114,63,98,9,198,
-232,185,172,206,20,253,41,90,46,190,164,61,28,137,4,189,156,197,143,75,47,135,79,77,7,198,1,40,31,227,201,158,
-83,240,242,135,153,250,65,169,76,209,42,32,211,153,6,157,120,18,164,118,156,68,175,220,249,186,237,238,244,159,48,232,
-23,147,190,196,159,66,217,8,253,69,93,211,82,25,27,225,92,136,49,217,211,8,9,227,48,35,86,207,82,232,181,74,
-203,159,12,30,203,97,221,171,194,49,49,38,90,63,208,4,174,54,127,47,30,118,124,190,130,222,254,72,145,97,108,140,
-205,222,249,207,127,87,47,58,155,225,201,151,169,242,0,222,19,212,189,180,221,106,171,59,216,66,5,164,176,84,218,205,
-50,150,212,19,184,114,22,158,127,119,254,124,51,85,207,125,72,210,118,183,235,56,165,192,219,118,222,28,12,88,199,93,
-252,126,112,65,77,94,125,15,42,134,143,191,98,16,32,78,148,183,23,195,98,2,76,151,152,98,169,142,204,9,49,145,
-11,191,176,151,136,162,24,54,165,45,234,9,174,189,254,226,9,47,157,160,190,226,151,249,242,236,177,180,73,147,83,69,
-114,115,15,107,224,47,238,3,18,7,21,241,126,240,208,176,187,99,181,35,65,164,205,55,12,83,133,15,165,47,8,74,
-235,121,161,44,83,11,46,242,226,136,159,175,38,212,224,26,183,78,27,165,25,233,105,200,211,130,31,202,169,186,64,147,
-119,138,201,135,241,230,199,173,206,27,15,164,18,100,127,176,117,96,56,150,69,35,76,65,179,96,162,193,215,227,83,234,
-126,51,176,217,118,124,86,102,6,132,205,74,143,40,116,104,19,16,86,233,97,92,147,189,103,191,252,18,201,57,210,188,
-77,85,107,209,249,11,134,134,16,143,229,49,160,248,30,249,80,12,254,49,164,187,106,188,100,115,221,100,196,119,70,103,
-229,172,50,165,179,115,35,19,222,250,195,200,96,132,66,247,195,114,175,193,187,200,158,72,183,99,119,117,174,201,241,136,
-217,100,180,118,49,147,3,3,173,12,182,188,166,248,127,14,80,63,160,223,200,81,250,16,108,193,80,71,38,22,143,96,
-129,86,199,102,182,103,23,181,146,252,21,111,47,189,177,138,186,63,33,2,149,195,11,10,2,158,44,84,69,97,162,146,
-163,231,122,146,115,142,166,31,74,111,102,80,209,109,152,34,37,224,60,113,129,56,126,196,198,85,94,136,220,110,207,136,
-143,239,77,114,242,251,102,28,248,186,49,48,88,201,148,178,17,41,201,99,155,8,225,154,211,57,15,38,11,234,131,241,
-211,7,11,86,184,93,99,245,195,117,198,47,57,138,213,148,129,20,69,175,82,135,200,210,116,174,156,136,234,197,228,230,
-159,133,233,255,84,203,236,95,120,27,67,117,16,12,86,134,204,46,192,188,221,208,182,60,52,84,41,156,98,163,32,35,
-9,138,185,58,228,120,209,74,137,234,180,237,109,73,21,19,111,146,61,14,13,174,28,4,199,239,155,3,24,1,93,29,
-164,115,67,183,62,140,89,30,209,138,128,51,28,122,1,239,121,31,75,229,164,36,22,149,10,32,119,168,62,224,240,78,
-163,202,6,195,189,168,18,243,114,69,117,115,203,207,227,166,50,45,150,46,143,241,33,41,135,84,248,199,24,233,110,88,
-38,191,216,90,211,105,223,230,146,203,126,81,170,192,182,218,125,137,95,172,170,21,174,123,92,181,237,193,109,82,142,68,
-202,14,4,48,66,5,51,16,160,68,103,17,136,15,178,84,211,221,51,153,154,174,182,174,149,81,14,81,146,120,253,147,
-69,221,193,208,60,234,229,71,194,63,56,227,51,211,67,143,222,106,54,127,197,124,58,201,10,104,180,203,159,209,34,141,
-98,132,92,225,162,135,126,68,155,102,178,176,183,161,42,23,162,114,225,87,3,69,178,159,109,155,58,205,158,11,134,216,
-40,184,150,163,113,176,82,34,70,154,189,155,151,156,255,237,153,236,56,63,191,124,209,94,174,255,116,245,120,31,83,185,
-137,10,63,64,201,249,36,45,169,9,17,169,172,224,159,58,119,78,16,186,207,254,196,7,46,231,132,163,131,134,117,167,
-160,150,24,11,143,123,144,173,194,32,218,235,248,0,225,225,158,48,229,99,119,197,118,142,87,51,140,125,138,238,154,170,
-220,156,56,180,4,100,151,191,220,86,8,202,173,38,51,121,192,181,208,218,30,19,46,191,49,64,140,29,125,90,137,236,
-214,85,46,102,76,154,70,205,118,60,233,149,84,209,71,225,132,125,142,92,53,240,205,70,38,56,41,98,242,206,77,151,
-214,144,233,195,91,94,190,51,93,140,133,120,227,51,36,61,223,252,123,241,61,112,156,39,192,116,23,40,233,27,104,231,
-2,53,78,44,75,31,235,91,248,151,32,162,50,27,152,36,36,37,201,4,132,109,19,74,182,148,9,186,187,76,172,200,
-42,251,81,169,42,87,171,8,32,174,62,59,231,98,156,59,54,179,112,35,49,169,198,139,106,12,228,78,103,41,241,200,
-79,127,165,211,164,103,159,206,234,7,214,70,142,102,213,177,178,187,161,86,248,109,50,181,129,119,4,11,16,33,251,72,
-42,128,25,154,27,158,169,122,143,250,52,35,195,51,185,6,134,218,115,125,42,96,218,109,21,115,248,36,114,179,92,57,
-86,83,203,77,242,247,140,234,110,132,9,48,36,249,225,223,81,252,15,198,176,72,157,6,131,29,0,178,14,190,95,181,
-93,219,110,8,9,197,108,129,92,227,19,132,139,61,104,81,134,163,199,166,130,41,73,84,37,122,133,104,170,205,2,73,
-178,94,113,105,155,133,30,163,53,13,96,104,255,252,14,166,54,163,200,232,111,229,142,22,115,255,50,141,54,104,149,75,
-41,11,190,132,94,89,122,219,219,223,155,98,168,249,157,29,166,117,80,203,182,199,72,38,250,249,141,209,13,151,162,245,
-124,149,37,115,11,59,5,72,167,187,47,217,113,12,153,154,195,138,187,197,64,98,59,1,82,130,243,192,97,238,136,56,
-129,8,253,224,220,21,56,100,64,57,172,236,109,124,78,200,106,166,95,206,255,57,177,22,127,165,211,62,86,185,0,28,
-134,65,26,147,58,173,195,151,196,37,86,235,79,169,55,63,190,238,125,225,238,219,225,203,107,11,140,99,205,141,163,177,
-2,70,223,144,219,82,46,214,23,27,40,102,114,172,190,189,21,98,241,203,100,153,71,45,179,114,71,40,203,190,23,165,
-208,117,224,35,87,205,253,3,235,63,160,34,125,84,144,190,221,13,78,109,212,32,120,185,9,77,181,32,117,42,60,142,
-248,251,65,181,1,169,156,40,245,155,145,81,136,5,198,160,161,170,46,23,229,178,96,222,240,223,92,48,231,59,87,60,
-29,214,82,181,89,88,232,12,181,201,206,94,178,33,46,10,209,202,73,102,177,109,67,94,86,94,166,33,148,233,75,219,
-250,89,66,89,171,84,113,20,155,187,244,99,223,235,31,48,206,230,113,108,103,28,72,72,76,96,128,4,206,2,4,35,
-244,24,164,189,124,54,182,171,58,99,145,51,214,201,250,28,5,89,180,145,178,175,223,172,160,246,249,37,87,201,25,222,
-61,35,185,146,213,171,17,247,218,235,86,94,120,253,216,90,204,214,87,184,75,11,208,209,226,250,199,194,149,12,78,218,
-187,163,186,63,5,29,60,94,7,133,205,206,170,184,160,94,156,1,160,126,253,181,239,7,157,70,122,35,38,213,220,82,
-65,234,164,140,134,238,13,179,81,29,88,196,53,42,12,163,91,156,4,37,67,198,211,177,64,127,19,80,251,75,235,130,
-97,159,134,12,90,30,254,174,150,104,135,227,57,222,86,249,192,219,94,95,242,93,246,177,120,31,218,191,166,63,162,58,
-189,6,47,141,248,30,123,205,74,133,13,241,248,6,38,181,177,0,235,68,145,61,71,99,207,247,95,90,184,56,230,73,
-38,158,214,105,175,185,219,38,193,111,80,178,158,254,216,181,137,119,211,255,144,19,219,8,80,248,102,45,213,237,168,217,
-81,80,87,138,142,126,164,215,99,29,146,227,11,248,218,245,51,131,185,61,86,228,76,67,147,134,111,69,40,125,87,186,
-47,87,200,136,180,209,190,52,233,141,132,52,83,214,232,209,233,180,108,102,235,199,88,228,238,215,136,55,135,79,14,132,
-25,167,238,197,64,2,60,30,255,51,151,99,57,22,9,48,227,107,52,94,199,64,147,78,52,157,244,25,104,156,96,201,
-252,46,226,50,69,43,57,84,217,71,187,240,82,22,82,240,128,223,249,163,1,6,241,20,94,100,19,185,149,127,28,88,
-172,75,46,39,113,20,135,116,81,50,122,66,249,124,207,200,208,156,6,221,136,73,15,13,99,176,5,42,124,126,135,205,
-181,37,120,109,62,203,185,250,9,139,130,225,251,163,5,8,26,210,83,34,8,63,169,10,169,97,59,68,167,19,93,145,
-62,241,214,10,23,241,152,105,96,21,65,242,114,187,44,22,179,209,81,11,1,135,145,77,131,200,130,143,194,101,111,59,
-98,78,247,47,113,106,96,42,76,10,203,127,250,154,68,239,210,56,128,244,56,112,79,136,208,49,62,168,239,230,180,8,
-170,110,168,20,170,89,143,23,43,5,202,172,77,251,152,4,187,222,179,18,4,4,186,173,245,135,11,135,184,115,75,242,
-53,1,99,184,230,191,70,208,138,168,223,81,48,117,190,173,212,20,106,72,118,134,90,172,217,179,177,54,206,50,118,136,
-97,146,154,72,126,235,13,154,22,44,44,62,204,14,241,111,2,5,125,82,74,145,77,72,29,85,14,16,118,104,162,188,
-166,186,165,215,70,167,196,155,52,213,91,12,157,195,131,253,172,20,4,182,77,205,203,51,152,100,187,112,91,160,107,204,
-180,184,233,28,102,36,101,142,46,210,89,16,238,27,25,245,77,119,199,181,177,119,112,42,96,20,150,140,218,225,178,124,
-53,36,120,18,204,172,78,59,83,23,48,214,156,224,251,118,0,51,234,7,154,68,91,41,61,39,45,161,201,242,253,76,
-42,132,146,225,127,67,227,160,129,177,201,247,1,29,33,192,181,150,130,59,205,200,88,136,244,32,207,95,183,172,236,236,
-96,73,247,70,5,208,174,239,155,72,248,153,182,8,228,84,175,152,197,91,223,83,233,184,128,203,194,126,0,28,58,210,
-230,240,14,199,15,8,161,99,163,187,47,2,136,144,3,199,175,81,215,112,154,178,157,214,130,153,196,255,224,237,106,64,
-185,221,53,114,179,36,119,64,96,191,148,194,52,209,244,10,208,112,85,187,229,134,88,150,82,243,74,92,113,11,81,201,
-155,39,8,184,172,235,77,150,255,9,107,248,202,169,153,91,22,24,212,56,122,13,138,183,55,19,197,47,47,29,163,13,
-115,92,171,84,78,98,237,150,151,152,155,82,252,93,16,254,24,60,131,10,205,212,11,148,207,176,14,124,223,230,2,26,
-40,213,144,74,35,162,171,107,178,79,71,126,116,122,135,201,47,13,11,70,117,215,172,118,140,75,254,163,250,101,52,97,
-23,222,137,175,40,85,180,183,87,156,124,66,97,31,17,144,85,131,191,226,128,153,103,129,204,186,203,170,120,63,127,95,
-236,21,82,200,251,250,14,210,161,94,101,244,17,56,52,192,119,164,244,246,176,128,0,216,40,88,252,82,141,112,55,169,
-220,143,112,40,210,230,177,222,223,137,214,98,165,67,141,46,229,165,208,119,134,150,186,216,113,238,33,45,94,159,47,99,
-46,115,248,40,122,29,214,121,163,85,39,96,228,81,187,117,139,99,37,252,134,189,104,111,47,159,94,8,74,217,98,34,
-200,112,169,19,64,168,197,27,118,221,231,13,53,180,5,240,128,61,116,8,139,214,165,46,220,202,49,180,133,128,146,209,
-216,4,210,74,46,217,205,92,119,243,151,103,216,216,193,70,225,145,78,131,106,158,67,68,11,12,187,198,238,54,223,213,
-230,115,78,239,57,86,159,156,161,205,32,152,120,32,50,215,227,40,212,152,204,68,0,80,41,103,223,68,145,194,141,107,
-224,185,137,31,3,21,77,72,186,75,78,55,225,55,38,75,174,33,119,80,227,128,148,12,254,27,73,60,97,232,103,250,
-14,254,228,206,98,120,193,146,118,56,237,155,205,179,89,193,195,5,188,67,34,40,209,3,26,137,233,87,144,209,60,29,
-105,80,191,85,51,9,190,215,218,211,37,176,5,42,215,130,246,242,109,56,246,195,176,180,163,63,11,35,17,246,83,202,
-201,0,152,14,96,67,44,178,248,101,24,62,161,111,127,13,253,137,77,92,70,29,20,223,210,125,25,116,173,181,84,146,
-13,133,176,198,87,40,244,11,127,26,51,224,98,164,205,123,133,188,75,194,38,241,157,212,234,23,167,204,197,14,12,242,
-168,124,75,148,38,76,75,207,70,114,7,106,31,7,215,215,224,92,181,240,162,179,250,95,90,1,244,153,99,77,199,145,
-63,135,118,130,144,83,106,114,236,162,155,76,121,24,171,194,103,8,133,152,104,91,24,98,165,225,13,184,218,139,137,10,
-172,60,37,38,52,206,6,221,79,111,197,19,27,187,6,101,185,7,98,48,16,56,220,235,173,246,33,41,65,110,102,232,
-97,36,141,221,80,101,159,202,42,28,218,62,250,27,96,37,127,243,112,255,127,0,73,67,221,172,195,224,222,118,43,114,
-172,151,117,217,186,167,214,214,71,84,236,219,135,41,219,86,233,201,82,3,105,237,224,250,107,120,185,125,104,165,182,124,
-202,102,103,218,37,201,54,102,244,57,80,253,68,241,156,59,80,93,137,33,79,245,50,2,214,123,242,174,151,48,100,21,
-63,243,83,241,30,67,127,254,236,186,62,121,64,118,60,184,81,159,134,204,253,55,217,111,167,122,105,69,42,102,25,189,
-57,137,8,21,57,234,182,35,224,179,151,50,126,125,78,77,123,80,104,49,93,126,11,120,215,166,15,173,57,255,65,11,
-116,127,198,37,76,67,200,210,214,194,228,62,1,10,50,67,109,6,191,42,59,92,222,176,167,249,190,124,122,223,222,226,
-72,88,87,48,169,36,157,199,67,201,100,143,65,66,184,189,99,149,24,225,175,106,118,60,20,8,33,56,247,109,201,208,
-39,109,221,190,221,106,211,178,147,135,222,88,170,76,231,222,55,102,211,26,106,26,134,224,163,125,133,188,174,80,73,202,
-150,36,146,87,180,19,143,176,52,178,44,172,27,74,165,48,143,254,27,101,125,78,197,243,79,1,60,31,182,45,145,214,
-125,79,4,166,75,11,63,119,243,254,24,217,171,240,230,174,57,244,252,75,167,92,27,135,232,107,195,33,234,76,104,0,
-183,128,94,31,200,177,235,77,108,252,79,241,37,200,2,255,163,97,207,57,54,97,40,228,52,239,114,18,24,182,244,83,
-157,188,254,161,106,75,102,121,212,206,153,132,59,141,178,44,143,50,167,201,14,169,195,218,45,129,3,210,138,16,100,189,
-197,113,70,224,49,81,222,198,131,209,117,104,99,43,177,27,29,34,231,108,64,136,185,17,86,220,189,245,157,115,63,90,
-165,120,69,113,16,193,26,227,38,84,0,155,110,101,250,0,155,235,97,167,181,147,202,178,45,114,170,144,1,25,49,116,
-83,88,247,203,53,171,205,153,92,195,90,170,176,3,83,102,69,144,228,96,83,245,44,207,197,134,155,209,235,217,215,241,
-154,177,100,245,163,226,98,44,151,234,206,230,111,233,209,147,85,252,145,234,34,26,159,46,116,129,251,155,89,224,204,46,
-167,237,183,248,251,143,209,246,22,75,62,139,210,85,180,137,76,248,32,124,75,199,139,249,200,13,190,61,1,112,226,221,
-51,83,2,136,136,19,142,14,85,132,120,190,182,251,161,155,123,123,134,20,255,213,47,192,204,47,214,42,20,12,31,31,
-202,24,138,177,77,231,7,93,95,189,133,81,37,71,42,49,202,214,225,44,187,214,89,68,40,153,253,216,138,83,253,69,
-189,246,198,77,223,60,192,93,18,38,234,175,23,139,203,134,142,129,212,57,20,93,32,253,111,59,165,106,139,74,143,21,
-61,239,159,183,199,231,5,186,105,201,207,184,226,229,51,61,60,81,19,21,247,80,183,144,12,76,156,0,208,21,55,40,
-100,19,73,236,89,135,26,101,175,189,65,94,70,134,250,223,156,92,22,85,137,74,158,37,94,98,2,9,21,134,246,227,
-98,205,12,180,224,207,46,243,246,204,136,14,90,49,132,30,109,46,80,209,178,226,93,136,187,155,43,110,31,41,41,122,
-200,29,239,235,62,225,91,93,50,116,178,191,95,231,169,54,243,42,202,135,200,129,173,194,76,119,218,87,127,195,211,186,
-15,193,101,247,200,229,153,119,241,114,57,163,134,107,16,231,56,243,63,186,79,104,108,208,32,217,181,24,166,63,144,217,
-76,66,160,205,84,89,21,155,167,14,6,109,235,227,25,182,196,32,207,84,240,138,43,254,229,193,210,244,32,146,194,102,
-20,177,188,122,56,124,197,154,232,94,63,61,89,187,116,26,129,170,141,40,252,199,117,61,5,166,35,122,104,24,59,60,
-150,255,88,221,173,237,32,39,96,222,186,60,149,60,244,59,39,157,173,245,128,110,22,102,199,97,166,107,173,112,12,114,
-210,26,39,109,186,20,79,217,170,83,7,54,212,27,2,224,53,108,70,206,110,248,160,132,43,176,166,42,74,54,71,251,
-247,105,152,65,66,241,103,19,58,219,230,180,99,190,41,29,13,52,221,16,57,198,144,40,10,117,163,94,93,203,122,186,
-25,40,134,37,163,139,26,172,241,217,195,188,92,104,27,45,6,19,73,0,187,197,116,19,96,58,93,25,147,145,149,141,
-102,183,76,177,43,81,185,41,185,19,129,229,248,1,27,249,144,16,24,195,193,214,78,12,21,45,210,82,231,125,135,126,
-50,255,115,193,0,20,151,175,164,97,61,151,158,129,142,166,200,176,140,247,216,67,93,204,39,201,45,39,135,86,221,204,
-108,11,100,16,164,197,40,181,241,250,227,182,42,30,234,205,242,37,188,90,197,222,5,67,63,173,164,191,171,91,226,239,
-197,99,243,147,129,65,255,59,29,7,188,204,202,114,120,169,73,105,160,47,232,231,195,216,62,143,85,188,84,193,253,79,
-14,219,36,211,105,125,10,27,195,238,138,177,163,25,124,59,204,176,153,101,171,172,3,200,138,154,19,214,190,73,115,220,
-81,38,1,106,34,114,254,22,2,84,192,237,92,57,255,235,73,251,105,41,147,46,199,134,88,140,211,200,185,231,131,228,
-82,143,106,116,165,64,96,27,230,150,182,215,196,121,28,22,140,231,239,39,253,166,216,244,44,138,107,93,35,80,47,75,
-53,237,7,187,50,177,184,30,19,172,92,90,237,16,101,13,251,3,180,181,233,39,51,130,179,60,182,34,167,47,175,139,
-56,10,52,42,228,30,201,158,214,218,143,5,146,114,159,158,217,58,191,160,122,116,160,191,170,202,96,22,12,137,41,204,
-210,5,189,37,132,209,238,3,11,23,187,181,174,94,151,91,51,106,220,241,172,142,69,205,133,60,1,171,60,138,186,9,
-69,105,8,25,91,184,222,7,31,21,7,90,207,222,225,31,96,140,178,129,170,82,12,38,33,194,194,17,95,8,103,169,
-112,123,202,184,184,159,31,187,28,140,161,181,82,225,90,193,243,244,222,47,53,61,155,4,144,159,65,50,78,73,4,6,
-243,123,98,250,183,181,77,196,246,164,43,24,34,63,128,122,86,96,182,205,76,149,80,177,67,23,164,6,37,212,212,214,
-205,239,127,248,2,8,76,63,234,91,238,195,148,132,35,227,210,199,239,41,105,168,52,80,146,65,5,179,255,56,176,220,
-176,125,116,209,217,21,170,247,53,166,247,165,199,158,143,27,41,185,31,149,86,222,251,226,112,94,75,251,66,146,3,178,
-91,87,97,17,131,85,232,204,52,106,131,174,1,106,218,35,71,95,175,54,174,182,195,228,53,231,157,78,218,58,116,242,
-51,240,168,18,234,249,68,190,32,222,172,74,99,110,240,164,78,49,21,192,14,106,72,110,219,68,215,100,89,16,59,112,
-186,235,140,0,137,111,122,249,170,147,169,92,190,158,222,153,228,24,239,230,193,99,169,86,62,42,218,82,156,5,103,160,
-51,208,189,234,214,59,136,96,124,79,124,99,197,56,121,27,50,135,82,197,65,103,219,252,194,36,65,227,225,7,62,147,
-253,163,72,128,86,0,25,208,235,250,52,43,8,96,80,222,101,167,215,217,209,215,182,51,60,6,94,187,69,58,254,230,
-175,101,14,106,228,141,2,44,168,6,201,198,79,204,58,150,122,203,115,104,111,65,197,18,178,228,31,161,22,153,77,184,
-201,161,224,100,154,228,240,178,152,2,185,43,25,148,144,220,32,71,227,232,178,136,5,139,20,208,248,68,113,117,150,51,
-204,135,211,246,239,128,22,179,60,12,129,121,73,33,17,241,169,74,21,255,79,188,220,95,44,139,71,174,43,249,131,8,
-172,97,242,89,223,88,88,133,85,142,234,117,74,238,210,233,70,94,53,108,243,121,198,47,80,141,251,85,149,13,63,103,
-230,224,138,160,94,71,21,145,100,112,48,173,161,80,25,183,222,248,126,72,65,252,184,43,193,155,227,222,62,79,114,148,
-144,158,200,206,112,139,90,221,108,115,28,139,125,100,73,110,111,8,119,235,7,181,176,40,209,17,192,231,47,26,220,30,
-204,185,127,182,225,43,122,43,202,172,192,175,65,94,214,52,97,33,245,40,51,242,33,192,77,20,135,198,220,114,157,68,
-19,128,18,151,215,90,184,18,150,129,20,101,89,1,36,105,157,243,203,97,16,105,199,14,73,43,253,209,230,51,7,124,
-255,90,34,168,170,35,135,52,238,142,248,93,133,232,129,46,20,27,200,152,155,202,218,49,112,250,98,61,1,17,162,154,
-3,110,148,230,225,28,34,131,171,149,23,143,2,109,218,238,102,63,92,134,19,58,51,215,160,82,46,195,169,96,193,119,
-67,211,240,206,102,45,162,208,10,62,137,192,37,36,203,30,19,227,71,34,215,242,216,239,21,212,87,107,138,243,103,142,
-245,74,250,106,72,52,137,207,216,10,180,56,237,206,100,236,195,249,205,164,236,11,91,214,50,206,14,179,155,46,28,162,
-185,84,231,12,153,75,108,30,168,236,229,187,89,72,174,181,105,231,0,58,243,70,163,162,5,91,79,161,98,142,69,243,
-92,55,164,84,101,80,233,19,185,65,227,211,49,134,214,212,32,116,2,240,106,223,51,185,5,10,83,190,34,209,104,23,
-129,86,115,83,152,155,84,126,152,103,181,128,68,28,26,78,119,142,244,120,16,139,51,101,68,43,76,163,69,154,251,73,
-83,182,90,169,17,23,21,1,171,222,48,177,169,183,97,217,221,196,244,211,65,176,211,190,131,58,94,109,117,40,185,155,
-143,147,240,64,192,16,95,68,227,6,109,34,216,98,124,235,160,216,38,208,212,199,16,72,253,241,77,226,218,36,3,208,
-101,111,118,152,232,148,19,88,125,184,82,92,59,230,164,65,103,182,107,192,212,84,150,147,87,207,108,38,30,52,213,164,
-247,110,167,242,131,58,109,19,234,236,255,113,80,47,118,68,253,70,11,188,190,121,212,236,51,180,124,198,131,109,223,169,
-237,89,36,194,215,87,63,208,186,103,84,85,254,200,136,38,221,45,221,142,46,226,252,182,173,156,239,233,155,79,254,130,
-236,123,150,228,32,210,97,250,190,29,74,20,24,213,144,169,213,241,89,229,146,156,130,52,19,233,0,92,120,85,60,212,
-249,28,125,111,65,111,239,100,234,111,26,39,29,250,80,1,91,173,135,238,242,246,172,26,42,239,0,26,168,248,121,9,
-135,67,173,22,56,45,13,184,151,168,245,59,46,148,61,77,55,14,175,175,122,189,89,148,51,113,237,149,237,71,62,228,
-252,109,97,242,143,140,170,55,31,137,41,181,32,157,53,77,190,90,97,99,152,12,165,53,89,79,164,126,145,216,136,123,
-18,46,197,27,101,147,204,204,100,12,252,10,209,6,157,198,72,160,101,39,183,252,137,2,74,18,23,89,40,217,139,90,
-47,125,226,151,127,240,159,122,106,171,94,135,61,130,43,204,23,246,57,165,138,32,245,172,250,163,164,67,226,180,98,237,
-174,126,157,228,109,125,129,168,130,230,13,171,64,82,2,13,28,101,155,136,75,202,3,141,158,136,81,243,74,180,4,233,
-100,190,11,211,66,127,96,68,18,62,112,143,108,135,240,205,64,15,189,7,67,191,238,29,76,117,131,54,47,194,171,141,
-231,80,37,155,66,154,122,135,190,10,168,161,241,51,226,205,250,154,173,184,167,151,59,111,243,40,2,43,252,99,164,104,
-237,154,56,227,169,155,57,215,124,226,118,96,216,93,78,184,198,114,195,205,156,113,11,22,37,225,78,211,247,92,235,193,
-203,45,252,117,228,210,182,212,109,55,232,218,161,70,69,190,169,92,164,189,196,157,237,120,77,85,225,145,60,24,204,112,
-163,53,62,224,31,26,157,14,79,114,200,79,70,182,232,151,76,42,222,121,215,32,33,106,116,50,156,36,17,212,62,39,
-135,170,207,60,197,64,43,213,99,106,193,84,247,6,85,117,142,188,22,157,205,206,124,255,119,24,164,215,26,59,182,214,
-81,208,237,32,85,159,233,183,165,141,197,112,149,113,157,169,122,165,236,142,134,0,82,164,146,189,216,106,213,251,64,220,
-47,193,85,185,45,231,131,11,148,83,254,147,149,207,146,99,153,209,131,209,225,206,41,65,39,173,250,69,119,139,202,144,
-18,171,194,27,168,37,163,208,63,226,0,207,182,36,184,32,239,239,144,11,95,77,40,157,12,173,240,106,17,59,142,105,
-195,82,56,222,146,74,251,14,170,245,161,111,135,113,183,241,229,197,40,84,98,41,207,222,243,65,216,233,28,245,161,176,
-179,91,244,115,149,111,34,153,45,24,100,110,201,96,124,210,2,120,183,10,212,84,173,77,46,138,42,186,141,33,20,83,
-148,207,228,115,9,10,10,38,94,117,192,8,130,51,93,207,34,204,221,7,52,23,30,255,95,84,48,180,252,108,86,23,
-121,207,126,253,74,72,31,247,78,27,53,115,134,229,111,250,202,228,87,191,20,120,103,251,191,216,223,96,46,17,43,226,
-139,11,155,204,93,107,210,145,167,181,56,154,89,164,153,220,178,44,111,70,56,218,43,27,201,40,225,239,65,159,159,239,
-224,10,0,201,3,140,60,209,244,17,131,37,175,219,96,3,179,253,3,171,4,96,26,167,222,241,178,93,206,18,173,243,
-186,0,94,218,209,15,128,1,238,47,67,51,49,58,218,81,15,230,255,139,41,174,69,206,166,124,146,63,198,164,180,101,
-69,192,102,2,135,57,241,83,122,13,237,164,255,136,174,106,85,45,48,3,207,13,21,178,54,135,241,138,51,101,5,106,
-64,137,77,236,0,146,193,88,102,122,200,5,115,136,3,250,74,226,242,145,149,187,252,153,81,207,74,153,104,208,215,172,
-104,103,53,10,48,236,117,51,40,247,137,84,97,35,176,254,80,238,103,61,155,196,239,166,145,203,237,237,91,146,185,215,
-141,222,198,199,83,87,225,187,200,234,182,90,19,237,16,168,221,106,239,225,73,211,231,39,165,177,131,25,22,140,195,234,
-67,92,20,111,100,109,31,33,79,252,197,150,184,158,176,186,236,129,20,23,63,220,203,73,127,32,174,58,127,50,127,18,
-91,168,16,65,161,237,70,113,208,186,26,203,60,211,70,155,75,246,228,2,148,235,109,148,234,161,206,5,96,252,166,91,
-13,61,97,160,255,235,30,173,36,79,212,51,24,123,134,248,44,10,107,229,134,252,204,210,63,12,222,58,130,175,209,249,
-252,128,221,86,36,178,61,42,181,111,228,58,179,235,7,245,0,96,129,101,35,253,84,36,184,87,207,143,107,209,255,143,
-26,15,229,74,235,16,255,195,83,100,19,172,54,204,74,72,253,251,105,13,251,110,137,23,244,115,227,197,39,63,54,13,
-151,237,237,65,27,153,238,175,134,150,135,248,100,133,176,217,79,184,19,18,192,112,86,147,237,117,154,94,21,73,167,166,
-113,108,70,81,172,89,127,118,193,35,54,148,131,101,245,193,133,45,170,244,210,237,79,245,225,82,61,226,140,74,222,46,
-86,244,240,41,82,171,197,89,250,133,118,22,98,60,101,46,233,250,74,176,206,179,253,76,79,5,32,132,205,219,214,231,
-40,240,177,253,240,87,28,162,103,7,105,203,10,206,21,155,248,181,207,148,80,169,160,105,168,252,123,220,41,43,106,226,
-205,47,69,2,23,198,98,19,204,24,52,48,189,185,250,24,156,147,239,198,79,96,94,219,7,251,225,80,170,241,141,148,
-188,121,234,24,25,232,31,163,231,185,13,172,225,214,187,95,197,2,97,177,27,58,55,18,202,129,182,123,213,157,20,45,
-29,158,24,208,245,198,71,110,210,74,142,4,18,79,138,225,233,239,207,52,2,97,175,209,244,25,249,172,118,173,248,198,
-6,143,80,58,81,15,133,114,165,47,247,215,170,160,255,90,242,2,142,134,120,135,156,144,117,232,71,150,70,196,164,129,
-114,12,237,139,135,219,40,222,197,53,90,79,183,182,9,109,188,21,191,200,237,8,168,237,181,97,36,56,198,150,244,248,
-252,148,211,22,101,203,220,107,120,60,51,117,17,188,178,188,124,59,44,42,32,239,81,183,113,114,115,198,142,58,206,0,
-23,199,118,174,192,10,70,205,109,198,152,215,44,224,210,138,88,115,186,34,122,255,106,136,51,150,16,44,140,247,187,254,
-248,7,54,223,127,248,242,10,42,75,2,100,145,224,182,105,177,142,126,224,123,1,141,179,124,252,139,70,231,173,159,17,
-149,150,92,3,244,55,231,78,69,166,147,173,41,222,20,79,110,116,208,15,146,39,129,162,36,221,162,74,131,233,245,205,
-125,249,98,174,124,206,74,58,227,108,203,104,37,72,2,230,25,44,252,48,96,91,219,27,107,250,195,87,81,235,39,103,
-207,113,49,44,183,99,64,45,92,106,95,207,229,239,177,67,117,185,100,82,184,229,47,132,32,139,113,129,154,102,36,227,
-3,165,125,92,37,19,92,85,47,166,222,2,236,226,197,92,45,104,198,60,49,30,145,47,104,26,243,244,96,46,0,55,
-198,21,230,223,25,177,213,158,148,235,233,64,220,233,149,47,3,247,132,157,61,189,135,82,39,137,43,130,201,159,241,111,
-193,103,130,115,136,175,125,49,135,33,72,158,72,52,214,71,87,97,133,129,114,55,148,103,142,230,73,241,71,108,226,253,
-163,119,62,164,179,140,207,172,32,215,122,139,30,41,244,108,218,14,167,220,170,140,197,243,97,77,53,248,148,87,148,177,
-240,76,171,69,54,113,71,27,13,250,221,87,64,3,255,159,170,0,72,124,224,103,175,240,115,125,117,239,143,35,118,159,
-35,250,81,60,68,41,155,177,200,169,115,20,120,81,140,52,154,202,210,102,47,37,96,97,5,21,17,183,190,5,201,238,
-246,167,25,163,91,5,119,103,155,175,61,67,30,166,40,197,146,159,231,104,99,85,92,17,116,59,149,243,71,137,240,254,
-62,222,63,180,46,147,79,150,63,112,123,220,162,178,154,53,185,196,6,188,249,21,215,83,127,203,67,102,12,9,180,245,
-30,186,94,119,225,252,89,213,57,83,164,103,173,57,21,167,180,3,12,147,143,188,213,66,168,65,188,242,125,101,151,179,
-243,130,187,135,198,234,80,188,135,252,144,103,254,173,173,241,147,73,234,184,167,72,42,101,167,184,216,78,219,208,88,39,
-84,227,207,157,2,50,209,72,110,132,89,106,205,188,200,143,96,121,74,21,9,30,172,122,128,200,168,89,114,184,249,133,
-96,36,8,146,33,229,234,202,8,204,172,164,13,87,48,81,248,85,84,207,193,69,51,71,151,135,115,131,239,248,37,150,
-50,83,239,216,198,110,48,252,128,80,223,202,77,214,132,182,220,127,106,70,131,58,140,84,102,179,41,99,124,61,32,100,
-95,1,139,161,2,22,162,177,131,113,178,243,201,111,221,63,220,234,14,157,132,253,226,161,238,90,118,14,138,248,227,65,
-118,224,2,26,152,84,221,39,231,29,134,252,196,0,238,53,92,95,148,155,243,139,208,251,117,200,243,8,217,156,114,164,
-78,144,59,215,162,166,191,36,76,222,236,93,16,67,64,210,59,60,227,143,23,213,5,19,211,106,92,50,126,143,242,175,
-76,114,224,238,79,92,224,129,231,137,218,200,137,165,150,183,166,219,227,110,214,101,189,50,146,111,21,29,243,14,246,215,
-247,86,65,50,169,232,94,64,105,200,11,157,81,86,116,33,133,103,34,6,248,11,193,95,131,147,81,90,253,253,199,101,
-176,51,217,58,173,126,55,145,184,65,50,39,197,232,237,240,2,86,173,165,187,104,220,138,13,32,216,154,202,184,124,128,
-49,6,27,123,166,23,99,120,219,65,44,31,60,51,145,8,94,231,249,19,179,52,224,131,253,148,123,200,182,105,40,13,
-162,41,30,115,67,99,20,194,2,145,84,232,17,211,35,103,248,198,71,179,160,121,145,255,232,66,0,99,116,245,217,70,
-55,123,31,106,252,188,140,130,178,201,162,192,123,28,180,169,188,85,227,182,120,123,107,84,191,220,201,149,30,92,18,41,
-148,6,18,134,249,215,131,79,56,251,200,21,79,17,160,156,109,173,145,73,9,198,225,199,249,151,245,109,223,213,121,165,
-174,239,125,72,193,52,147,198,8,203,152,129,155,114,11,209,247,222,196,216,228,59,151,106,81,45,227,178,30,224,151,130,
-40,12,175,225,240,89,206,88,123,40,111,121,222,7,125,115,213,245,207,240,187,14,183,67,158,88,57,81,118,50,194,244,
-105,219,205,242,203,177,88,51,220,83,140,227,205,143,189,30,177,148,16,96,246,112,105,133,232,57,102,183,102,128,47,119,
-101,180,251,218,61,38,36,33,208,67,178,141,85,220,239,230,224,31,46,128,222,219,43,186,70,160,78,228,125,83,26,122,
-46,241,244,171,205,223,135,138,17,205,191,191,54,77,80,34,82,187,109,135,71,248,249,222,242,95,9,3,153,161,96,222,
-94,108,176,243,163,177,93,22,170,24,228,109,97,126,71,118,76,226,174,247,127,65,33,21,73,73,159,69,121,212,168,50,
-96,191,91,247,67,35,128,213,212,103,113,32,230,246,250,3,100,92,198,203,91,234,81,156,96,30,28,75,134,158,185,233,
-226,238,98,210,50,146,194,183,127,45,13,127,150,215,220,4,150,120,77,120,51,166,156,138,207,181,154,65,24,143,221,212,
-35,50,219,139,195,111,105,135,255,238,93,98,115,118,76,164,182,204,0,248,239,233,41,32,99,160,236,26,4,210,82,61,
-127,209,94,145,67,51,235,249,132,135,232,156,185,112,156,92,137,36,161,112,55,240,165,97,19,143,19,235,42,98,52,123,
-172,98,51,140,77,54,70,82,158,28,134,31,118,3,115,108,226,181,156,226,183,140,185,234,21,147,111,165,1,255,240,128,
-163,130,117,9,168,19,226,205,135,57,181,229,127,62,233,164,182,62,48,100,106,20,49,90,216,82,217,127,230,125,38,38,
-141,29,28,255,124,146,201,50,81,179,20,51,110,81,243,22,74,60,88,130,14,107,64,79,226,114,219,185,178,34,115,179,
-236,173,66,184,177,125,138,19,44,252,131,56,194,15,233,165,104,160,151,252,109,46,179,140,129,126,223,224,198,63,46,65,
-125,161,240,28,176,214,247,89,115,57,99,6,164,66,140,13,122,221,120,228,41,8,105,137,106,166,54,245,100,203,154,157,
-84,233,112,74,136,157,163,104,136,58,238,2,47,165,31,247,236,161,67,149,166,80,240,19,180,247,40,237,20,89,92,76,
-76,210,127,225,70,174,138,179,214,239,186,169,111,197,247,68,171,3,174,38,191,239,196,187,12,224,150,37,132,138,226,108,
-13,54,106,222,29,164,170,213,230,230,126,183,68,113,250,210,93,144,180,165,0,173,208,239,19,142,216,236,255,201,85,221,
-95,153,63,15,91,55,113,62,157,62,130,119,45,95,99,150,166,127,124,16,69,144,16,31,137,30,28,64,216,57,245,247,
-31,132,43,215,114,46,56,14,86,243,229,49,190,93,250,253,171,23,254,141,39,123,89,13,220,169,66,73,172,223,211,230,
-62,18,211,165,137,159,222,105,251,19,14,73,189,139,124,255,39,142,4,60,110,23,108,157,78,182,2,71,5,44,147,101,
-26,139,147,140,15,195,26,83,14,191,210,77,13,148,227,204,240,21,85,193,241,1,244,189,177,86,120,60,202,251,203,112,
-188,226,155,128,215,100,32,173,6,38,37,60,122,206,58,11,223,97,34,26,207,140,16,216,110,182,220,171,45,145,245,109,
-7,88,27,167,135,1,155,209,240,178,58,79,33,3,172,196,234,222,7,240,145,170,54,253,92,159,101,185,232,155,228,25,
-246,238,74,177,116,127,248,208,147,159,215,202,238,229,171,175,73,31,29,19,3,13,165,112,138,27,19,194,59,232,21,124,
-59,162,73,55,13,22,153,139,126,76,207,223,33,48,21,34,63,2,204,78,116,253,70,131,247,125,242,241,214,238,207,200,
-153,193,43,173,19,58,233,47,35,120,152,225,78,189,45,138,98,53,148,100,48,60,119,87,127,153,18,145,71,222,158,229,
-89,166,147,1,145,48,93,49,191,80,72,241,108,226,108,215,41,244,205,67,167,114,92,231,204,23,35,154,74,0,172,239,
-228,215,187,113,10,207,55,178,90,103,23,82,254,235,208,80,178,110,64,225,93,33,238,93,157,224,131,5,170,53,121,159,
-142,57,18,124,26,93,243,198,26,211,249,67,11,236,26,220,249,249,43,156,135,214,6,193,60,44,231,37,40,224,106,246,
-14,214,215,103,151,185,163,7,217,100,34,82,49,48,131,152,98,97,246,174,77,115,170,8,124,159,165,178,250,209,55,210,
-245,195,33,14,70,58,21,66,137,23,178,51,223,60,235,203,91,131,37,63,113,231,68,101,71,148,245,240,48,57,151,191,
-171,124,150,44,237,188,38,53,182,85,99,203,166,103,157,52,253,25,117,204,52,98,182,231,148,46,28,100,37,180,189,171,
-67,193,126,99,42,81,198,185,19,109,126,0,117,139,59,113,134,16,208,255,132,49,251,73,208,38,65,193,146,40,28,238,
-161,67,92,166,37,246,71,156,117,148,61,13,34,49,140,64,127,58,78,241,56,83,232,138,16,241,250,83,181,20,192,242,
-63,159,51,50,63,240,81,131,96,113,154,37,36,26,162,247,17,194,35,200,9,190,102,157,213,103,224,236,218,57,72,238,
-37,10,100,224,164,190,168,172,0,42,230,10,32,171,160,33,129,168,93,213,161,6,105,176,82,116,38,11,39,125,255,215,
-249,74,152,164,193,128,204,128,17,36,224,166,104,56,152,74,120,172,23,34,25,67,65,205,146,7,151,228,36,13,195,245,
-41,101,204,17,159,129,7,121,137,70,103,95,158,60,96,40,66,157,159,20,19,237,241,4,140,18,245,87,58,211,103,184,
-125,125,133,89,28,68,68,47,127,109,75,139,99,201,51,119,208,25,156,45,155,199,156,234,32,36,173,207,69,93,90,41,
-32,22,211,99,36,225,25,52,143,161,89,31,18,186,174,62,164,5,82,103,177,228,240,216,4,211,254,128,90,227,52,60,
-131,120,112,64,211,133,117,100,91,163,253,97,106,82,237,142,45,153,221,95,225,74,204,36,29,151,109,242,247,249,44,149,
-111,140,119,218,247,90,81,221,73,98,119,97,80,113,251,4,7,12,170,167,235,3,25,16,97,133,96,145,200,15,167,80,
-225,167,8,216,173,133,99,219,129,175,77,170,194,62,125,244,199,100,183,54,203,217,68,145,166,56,246,177,17,85,201,96,
-60,18,116,122,177,3,91,81,226,181,159,132,26,129,40,231,213,79,244,88,62,238,50,179,190,21,211,68,61,87,98,102,
-197,207,7,55,55,83,250,94,49,193,132,46,131,5,9,63,48,212,231,80,101,76,155,36,190,145,64,171,217,61,198,67,
-227,101,195,154,155,212,183,8,20,148,147,224,125,225,172,116,167,60,181,23,152,131,149,170,75,180,45,42,98,208,163,57,
-23,250,121,170,17,237,101,33,112,158,240,152,140,170,21,245,114,218,45,93,66,225,70,9,69,29,66,14,36,28,186,235,
-155,43,111,79,155,136,132,37,243,189,23,219,2,246,201,214,100,118,144,108,0,1,252,104,67,103,159,160,117,76,119,72,
-131,103,175,32,223,139,196,45,140,115,225,74,90,116,174,223,167,125,200,102,22,70,82,200,245,220,236,2,17,141,149,131,
-183,237,139,122,215,95,9,216,26,178,78,16,189,133,209,131,147,84,92,52,155,13,154,61,0,66,178,195,71,32,202,127,
-245,101,45,37,69,205,96,188,67,205,57,16,8,54,64,30,20,24,62,250,103,193,7,105,62,104,109,93,138,214,104,69,
-107,124,55,214,190,145,94,7,151,147,48,131,22,68,227,191,6,39,160,251,16,32,16,64,24,151,86,165,225,255,127,204,
-171,5,219,132,79,150,41,195,97,115,2,201,16,26,175,200,140,255,116,0,223,51,253,235,213,105,19,119,71,190,226,204,
-143,218,74,229,121,145,244,229,157,221,215,172,15,176,54,23,222,80,128,64,125,0,238,65,166,121,53,108,135,210,157,90,
-147,126,197,227,182,188,245,84,111,114,85,64,154,119,233,54,152,169,54,171,38,13,46,73,62,80,122,82,38,133,7,1,
-211,231,205,32,227,234,170,3,60,248,103,35,118,141,51,2,249,221,70,219,65,236,71,40,142,35,88,115,45,193,16,116,
-20,76,233,208,133,238,108,50,93,236,39,222,168,164,26,7,65,69,212,206,254,224,61,22,142,57,161,55,135,105,44,112,
-149,12,80,150,184,66,18,174,156,135,99,178,90,67,89,109,212,161,16,149,165,71,16,220,178,217,96,190,64,10,138,63,
-80,233,89,221,84,128,101,101,39,166,94,22,61,5,193,188,160,220,85,233,128,90,234,36,94,188,154,240,223,79,132,45,
-169,21,155,233,177,203,44,144,0,244,129,255,249,66,142,105,46,111,41,125,239,7,121,129,238,138,228,134,166,190,123,83,
-84,109,59,18,140,23,68,241,225,24,234,193,39,59,20,85,124,124,64,183,125,40,127,211,126,82,210,16,131,76,5,34,
-128,216,51,100,67,139,235,247,85,129,53,72,105,214,170,232,219,196,189,164,199,2,105,60,37,225,57,220,14,146,51,87,
-173,175,10,117,178,97,170,144,66,26,228,76,187,126,104,138,7,214,46,235,246,70,169,45,253,70,115,53,225,181,100,182,
-144,211,9,99,221,71,253,91,115,185,36,235,144,29,79,238,15,7,205,185,204,223,255,113,220,195,157,18,66,248,47,126,
-28,78,79,198,249,55,253,248,175,132,235,22,250,227,202,12,187,255,120,231,0,173,11,31,145,49,105,124,29,146,225,252,
-95,166,203,222,222,98,22,214,232,103,194,99,67,39,44,250,41,131,150,158,147,196,116,134,170,144,151,167,34,14,92,107,
-215,59,226,171,75,161,203,58,76,6,104,239,95,48,144,204,198,22,89,111,190,157,42,116,151,39,12,145,81,180,133,206,
-35,156,235,89,237,142,130,89,44,33,216,114,253,31,35,163,63,76,29,8,12,191,126,190,104,0,150,248,47,66,192,7,
-35,94,53,150,236,154,126,205,159,69,252,190,67,217,86,24,230,95,179,200,120,174,241,147,95,85,144,73,93,247,211,45,
-60,140,13,88,177,111,203,39,36,92,135,22,142,86,6,204,207,12,94,59,134,207,204,68,204,74,129,102,177,50,61,248,
-116,143,22,38,9,51,198,164,69,179,122,124,244,127,231,88,106,162,192,50,156,197,107,217,32,142,16,30,115,123,42,28,
-94,170,200,192,45,78,33,123,216,168,221,224,177,223,23,236,99,60,150,67,137,59,120,224,235,87,252,4,105,79,59,227,
-34,117,63,99,218,121,23,220,171,8,90,245,207,89,121,49,213,72,148,45,83,22,17,109,143,156,7,128,195,48,190,56,
-204,98,182,200,159,145,75,206,181,148,11,68,54,16,206,170,3,9,176,56,38,55,33,217,220,134,136,84,131,193,180,143,
-251,6,188,66,220,234,196,38,42,37,72,182,49,113,150,15,136,78,63,108,199,88,35,134,67,147,208,82,192,178,97,205,
-208,187,52,247,224,225,212,79,44,140,35,27,151,167,28,226,34,164,71,20,57,212,22,64,57,179,136,84,191,65,65,40,
-252,196,225,51,145,208,49,83,143,212,42,199,126,85,174,212,173,137,246,126,114,35,8,198,4,13,64,4,26,107,9,239,
-67,212,64,48,143,170,158,222,185,94,228,158,169,212,63,91,96,163,19,136,44,123,139,243,255,244,93,133,9,83,89,214,
-47,129,206,101,46,245,214,146,141,43,182,207,168,5,115,253,82,203,153,168,50,107,252,69,23,17,138,128,17,202,241,158,
-172,1,158,138,26,13,191,183,140,80,149,167,107,160,0,117,223,142,236,101,186,80,52,54,68,192,106,170,49,122,251,31,
-127,102,91,143,100,151,135,155,68,159,98,251,46,168,183,223,107,181,157,106,187,251,100,173,199,16,4,146,214,54,180,127,
-122,215,21,190,129,82,123,157,214,52,161,178,146,100,126,219,67,76,180,238,35,115,20,11,241,114,45,78,244,14,81,182,
-107,252,126,32,231,88,254,2,83,195,140,190,154,26,127,96,224,221,133,26,83,9,188,213,87,14,135,187,225,58,204,106,
-43,143,141,177,76,214,74,242,62,198,16,177,48,162,72,112,55,247,46,138,56,168,145,57,13,115,197,66,137,120,212,203,
-103,93,198,74,91,156,194,124,154,230,127,50,63,111,42,116,138,223,27,215,62,132,133,164,240,19,82,126,15,64,157,55,
-218,46,16,187,152,89,122,152,7,222,142,139,217,172,38,46,219,157,178,247,149,117,90,141,62,228,86,206,105,44,139,18,
-152,67,95,19,210,208,119,215,158,43,39,19,82,231,122,214,119,251,234,11,238,108,37,135,255,232,43,76,216,94,43,59,
-162,61,33,113,246,154,182,74,181,160,35,144,103,146,171,147,79,251,24,20,162,181,221,86,166,247,164,102,85,8,114,104,
-29,40,72,148,128,53,4,227,59,154,198,121,208,118,192,74,216,107,178,191,126,200,49,134,172,25,167,88,124,207,120,190,
-164,109,66,41,181,11,59,47,169,224,158,164,220,192,160,26,154,244,107,23,233,112,52,95,121,129,121,19,63,28,65,249,
-8,203,128,183,181,215,78,103,245,130,116,36,199,84,200,141,7,104,157,15,83,164,52,171,172,110,246,70,33,39,113,90,
-211,68,117,199,214,180,255,36,145,197,32,30,3,138,146,5,86,192,13,172,148,17,18,22,116,175,15,63,195,183,159,110,
-90,122,92,93,82,184,143,134,107,179,116,243,68,61,1,20,56,20,12,214,251,12,231,222,101,240,175,192,203,113,252,214,
-92,160,27,188,211,44,15,152,202,72,229,191,36,6,13,230,135,127,44,210,165,19,24,118,79,180,148,180,166,164,213,227,
-156,240,22,99,183,184,80,64,222,118,176,169,203,82,163,192,184,185,17,102,12,182,76,223,44,113,182,244,168,45,23,34,
-142,207,57,255,54,1,33,131,218,162,45,238,86,199,16,108,32,168,108,52,109,104,202,112,14,145,85,216,121,70,201,30,
-23,57,9,192,97,225,1,237,116,123,171,76,186,233,18,160,15,117,198,129,87,104,200,81,205,72,99,149,31,170,249,192,
-180,27,193,180,201,57,150,240,227,179,23,139,200,111,250,135,133,232,251,103,146,64,42,79,179,64,87,28,135,206,191,107,
-230,234,233,122,229,162,182,137,247,233,208,95,236,28,174,108,219,21,164,5,155,242,45,203,36,158,15,229,12,15,207,164,
-78,43,128,1,35,49,131,91,167,134,227,240,46,172,77,103,187,104,196,180,132,222,118,179,118,20,58,128,214,224,176,191,
-22,121,40,218,213,0,250,52,247,10,10,149,156,86,24,207,51,253,154,92,90,4,190,105,72,20,222,86,233,24,168,25,
-81,236,204,21,214,211,71,201,236,90,202,14,42,147,42,144,129,79,116,81,98,221,235,83,88,255,138,178,216,73,223,160,
-50,106,165,241,111,3,51,43,156,194,117,21,28,63,85,209,40,212,226,67,101,49,40,31,43,110,136,114,120,77,63,246,
-196,123,17,24,100,79,69,183,173,115,172,98,50,251,227,132,47,118,21,53,218,48,127,159,177,93,214,173,46,198,108,155,
-130,148,183,126,233,207,232,245,192,120,96,162,181,47,132,11,210,139,1,223,47,199,15,29,128,242,93,232,143,123,185,42,
-144,16,113,3,118,173,104,154,93,225,45,103,96,76,156,245,197,118,61,2,13,189,41,51,137,180,173,72,175,65,246,238,
-148,133,146,199,139,195,118,144,175,166,70,14,47,76,61,239,130,34,200,52,105,229,158,230,113,6,141,104,235,52,16,153,
-11,38,59,22,121,49,136,164,25,42,201,166,64,172,13,21,202,232,192,55,12,250,91,71,33,222,75,75,138,83,85,176,
-22,79,241,201,16,190,235,5,16,19,149,243,193,89,39,53,34,91,46,148,35,125,52,229,10,61,215,80,165,62,213,185,
-232,74,42,15,22,200,92,188,242,60,162,26,85,2,44,103,93,49,247,72,145,123,39,71,34,135,25,250,54,91,47,78,
-91,39,191,67,228,213,30,108,80,72,118,210,193,74,241,158,12,49,155,10,213,237,192,11,26,202,196,124,176,230,236,133,
-188,30,172,165,97,158,164,133,112,241,29,136,250,74,177,233,81,100,75,78,233,32,76,242,21,75,14,11,133,218,48,130,
-28,206,113,28,19,33,228,116,146,134,53,98,114,145,165,94,20,46,196,217,63,119,70,55,89,217,109,0,33,250,30,226,
-186,111,58,66,187,106,83,138,247,98,252,212,199,108,151,140,123,243,229,61,88,23,146,86,91,22,73,1,227,114,12,116,
-112,145,121,247,32,122,10,189,199,148,62,88,86,93,161,30,166,149,108,179,211,232,55,18,201,176,101,238,163,58,173,51,
-223,160,159,94,157,120,64,148,186,142,219,135,225,91,98,131,35,42,125,47,41,36,31,221,152,38,174,236,156,9,74,79,
-99,109,244,182,158,183,95,165,122,12,185,97,168,193,180,16,213,240,67,165,104,49,204,228,65,47,246,215,230,176,160,45,
-159,65,73,218,23,106,49,104,122,230,99,215,205,233,96,247,175,2,180,227,10,3,46,218,237,58,254,19,142,97,152,241,
-174,218,250,11,247,45,128,138,225,235,223,78,146,168,39,243,229,59,195,93,140,213,4,114,216,150,162,120,62,57,171,230,
-123,15,36,92,30,206,45,11,41,114,103,55,244,229,215,254,79,177,14,240,52,47,180,185,30,68,3,237,201,68,1,89,
-99,154,57,127,80,10,203,81,220,44,20,156,109,176,34,239,33,239,96,142,221,82,15,247,142,209,104,29,182,19,184,13,
-225,39,115,115,133,112,195,44,6,102,195,138,239,52,167,142,170,13,80,84,179,60,39,214,236,140,101,248,235,210,194,180,
-187,156,198,219,249,110,74,9,90,201,155,64,70,159,221,141,1,140,242,17,54,187,51,19,3,117,43,178,171,130,197,163,
-84,42,69,94,158,78,31,211,236,203,19,128,207,227,81,252,229,247,73,146,132,213,223,13,146,168,134,64,38,48,141,197,
-26,36,128,79,11,142,7,79,44,52,111,74,4,133,1,252,159,112,11,78,50,31,153,80,51,57,252,142,156,51,42,149,
-239,128,238,167,207,230,113,213,74,134,64,31,163,141,109,156,147,30,213,252,206,170,233,155,38,255,31,244,91,193,246,37,
-160,101,92,116,230,71,136,203,245,118,203,170,249,181,15,122,159,17,104,163,106,145,124,23,114,20,240,115,110,40,145,202,
-54,95,236,185,162,157,181,198,106,10,244,50,4,112,24,211,114,170,138,22,206,230,16,237,234,110,169,203,84,186,49,166,
-93,68,198,92,114,213,190,118,169,41,123,168,92,215,136,248,166,106,189,208,210,80,241,117,17,231,50,180,19,171,234,170,
-11,170,132,77,111,223,224,164,60,21,211,47,178,171,78,39,222,125,138,148,251,192,29,69,201,197,197,38,189,24,79,24,
-182,20,250,197,174,49,196,240,126,45,79,219,32,159,104,73,162,218,40,172,65,0,64,210,144,197,38,116,206,205,40,164,
-32,113,197,31,98,76,149,143,251,51,101,230,162,12,16,192,143,195,159,6,238,154,67,70,44,100,198,111,3,30,181,230,
-219,41,158,243,229,56,106,199,254,155,27,226,134,174,224,166,223,72,52,127,107,44,102,208,79,192,188,61,62,172,158,208,
-39,108,242,137,169,224,158,7,225,81,39,173,224,85,96,252,159,44,27,217,127,231,199,48,7,112,31,52,81,162,86,214,
-200,131,106,7,137,21,126,196,119,123,44,0,246,124,122,191,123,53,188,79,0,204,125,203,107,217,172,128,231,8,100,40,
-55,0,1,73,163,108,45,120,33,180,120,126,48,13,50,96,114,142,213,131,97,7,122,116,192,122,197,17,138,138,12,24,
-239,9,92,201,52,39,18,194,211,18,3,1,200,171,111,131,163,117,179,100,108,67,137,56,48,171,11,61,61,190,193,208,
-17,3,245,165,17,178,70,80,211,107,128,161,103,114,133,207,21,230,139,165,195,17,227,95,3,243,50,203,3,83,174,216,
-195,207,43,59,194,185,53,211,28,107,253,97,139,204,14,110,155,107,174,141,199,255,222,152,184,186,14,6,115,132,108,189,
-48,217,230,102,27,175,49,126,228,249,181,208,7,32,178,218,192,203,207,73,109,129,156,48,103,207,29,68,116,194,110,112,
-49,224,157,6,183,13,162,169,96,69,15,234,35,48,220,163,23,93,196,41,231,113,93,64,148,48,89,17,60,140,214,124,
-235,138,113,61,245,242,146,159,195,152,203,110,65,139,61,67,49,43,193,209,82,160,118,176,88,166,240,126,141,57,33,148,
-24,193,74,227,219,6,87,213,101,223,196,30,0,42,228,225,202,101,70,219,214,169,180,228,226,243,30,17,214,57,135,22,
-129,147,122,151,141,235,159,46,99,81,159,7,231,254,249,159,234,4,129,90,4,30,137,7,171,111,84,74,71,159,34,232,
-49,191,51,30,123,243,28,50,12,79,15,92,2,150,38,249,222,168,229,81,5,99,87,92,87,164,41,39,105,22,58,41,
-74,152,29,227,246,240,124,195,138,237,235,3,254,77,219,82,38,80,104,191,82,176,27,126,74,214,120,98,132,208,149,37,
-1,20,54,1,94,110,201,169,27,144,2,84,28,2,108,154,157,158,127,106,200,249,196,123,1,182,55,42,151,138,130,210,
-8,77,103,184,195,109,176,228,250,25,74,175,60,182,19,176,73,13,133,32,192,78,219,188,216,44,230,135,152,168,173,159,
-92,17,224,156,84,137,53,79,234,147,56,120,189,164,160,131,51,36,160,138,124,114,189,72,146,201,195,171,145,153,152,160,
-73,236,87,24,113,201,235,96,85,37,17,236,200,183,89,76,87,125,50,213,248,25,216,231,82,0,140,75,229,106,71,156,
-85,13,221,50,144,98,165,239,162,196,76,199,243,185,57,171,105,13,100,103,115,233,36,238,88,7,196,154,211,131,238,146,
-194,254,198,59,235,28,48,98,57,190,251,196,24,121,79,74,247,74,240,71,133,215,65,30,134,142,204,38,82,238,156,222,
-205,241,25,88,205,93,37,211,118,255,87,124,59,78,124,144,203,7,190,50,114,198,161,2,99,182,228,148,168,17,83,145,
-116,199,118,23,97,109,112,112,63,244,15,62,250,15,57,148,96,49,20,8,229,92,251,127,115,59,94,125,201,25,65,76,
-184,81,223,100,187,138,5,103,103,228,132,206,169,77,224,141,63,197,204,135,104,10,232,21,163,133,75,118,44,164,82,172,
-78,42,15,253,167,24,166,111,200,109,155,21,76,114,253,251,94,247,51,48,127,167,246,157,75,75,98,147,236,84,138,78,
-25,215,155,209,243,211,121,151,154,61,115,96,152,253,149,199,216,89,127,61,212,23,12,210,84,135,41,250,68,213,74,21,
-66,183,169,16,176,222,119,225,163,21,31,53,189,247,165,92,238,174,221,13,40,155,202,216,151,112,204,143,253,118,223,210,
-168,100,173,25,111,136,223,157,78,37,26,131,57,112,9,226,227,97,136,54,243,25,17,76,217,233,99,222,28,125,245,215,
-162,254,105,9,114,9,55,228,90,224,4,168,69,219,70,59,179,86,14,86,75,227,204,184,95,88,215,182,23,37,42,169,
-116,147,160,187,188,158,215,141,28,174,174,4,201,190,239,136,184,92,79,236,181,146,163,245,150,100,219,180,17,67,95,142,
-240,193,210,207,212,129,44,84,173,157,94,80,66,43,172,93,32,236,51,229,7,162,246,66,48,140,70,117,103,200,79,197,
-216,164,135,139,197,88,103,58,12,186,224,40,251,38,194,98,93,171,116,77,31,189,48,100,52,22,153,83,62,6,157,116,
-130,234,16,86,94,187,123,167,177,231,51,70,174,115,75,188,12,239,251,208,88,241,8,43,167,216,4,78,127,253,178,177,
-102,37,7,79,190,47,188,98,65,73,154,28,248,224,254,2,191,128,42,154,140,23,14,191,72,215,177,196,89,200,189,246,
-177,78,122,193,178,248,238,201,155,252,219,129,190,81,14,58,172,191,18,141,33,126,243,182,202,44,22,1,202,46,240,179,
-204,57,192,212,184,229,30,150,227,53,171,254,25,228,144,253,124,98,69,105,58,250,230,128,209,60,124,232,40,24,91,130,
-226,224,62,143,83,159,143,74,248,175,87,242,118,88,30,16,9,254,78,161,112,205,96,15,129,231,156,69,196,164,139,176,
-225,215,124,235,49,128,45,105,125,219,4,191,98,231,158,187,228,225,123,43,232,116,118,201,38,45,158,249,47,118,64,224,
-184,72,72,20,242,192,121,183,210,176,69,238,248,49,17,245,156,139,49,228,217,92,32,33,60,106,172,244,90,146,206,81,
-75,172,156,56,140,168,154,137,58,142,55,206,253,250,117,71,80,130,31,190,122,6,0,206,201,181,42,192,85,123,17,56,
-7,2,155,255,119,243,106,31,151,5,156,202,31,49,77,70,1,140,50,51,180,74,86,28,231,160,127,65,99,187,144,187,
-154,88,34,184,132,152,247,40,58,37,113,91,67,4,221,250,232,254,150,218,213,2,120,153,209,15,249,97,92,93,2,235,
-249,203,116,83,255,98,251,250,91,208,50,103,46,212,170,219,194,189,143,135,35,218,47,125,62,180,158,80,70,143,66,25,
-251,59,109,79,111,217,18,141,113,107,2,27,7,39,175,161,62,156,115,99,116,16,169,60,181,16,253,210,94,14,39,171,
-9,70,69,138,244,199,221,82,233,127,144,74,66,247,166,110,75,83,253,68,147,31,41,47,231,32,85,120,247,227,135,105,
-103,23,91,124,57,178,166,184,98,29,7,147,41,75,36,33,239,43,43,36,113,81,24,242,93,5,31,198,244,128,165,47,
-104,217,158,233,62,47,217,170,128,72,165,57,99,235,194,196,103,93,171,125,212,238,43,190,109,61,158,30,204,52,161,161,
-194,149,120,235,225,94,2,166,121,255,252,197,206,152,139,143,65,126,76,51,125,30,80,211,58,163,168,180,15,38,29,175,
-13,57,84,148,139,183,59,63,134,185,165,37,130,203,7,168,34,230,171,90,110,80,148,73,111,39,51,82,17,59,9,236,
-157,15,105,22,110,97,8,112,30,158,166,122,196,43,130,4,51,215,173,30,192,220,150,110,128,23,190,176,180,105,36,151,
-237,113,53,241,248,205,240,8,240,39,82,122,105,175,194,251,47,92,89,195,225,30,147,254,128,43,175,60,44,214,57,187,
-170,70,249,26,37,10,116,123,14,161,254,238,186,18,8,69,8,50,255,197,131,66,206,31,162,75,94,10,17,213,117,210,
-100,181,8,203,140,74,1,13,0,94,130,162,196,209,216,28,184,98,70,68,42,255,138,226,121,17,184,120,31,7,72,245,
-147,17,19,94,183,25,148,89,232,1,215,153,165,186,211,92,120,83,248,108,178,137,208,109,187,137,115,112,166,223,72,233,
-68,221,195,10,4,29,186,93,27,235,11,220,232,255,254,167,57,176,204,159,129,150,207,94,237,223,62,59,230,14,106,115,
-15,244,73,116,199,29,93,193,90,108,124,245,243,26,67,9,23,145,155,1,236,238,17,120,208,42,144,195,122,131,172,15,
-91,149,80,69,15,75,83,181,0,239,156,84,94,210,148,20,102,162,196,205,63,63,253,118,107,69,138,185,98,60,251,97,
-147,102,121,36,27,172,101,166,235,63,34,119,233,158,55,130,54,187,1,191,201,118,150,97,239,243,106,153,6,207,251,231,
-180,71,153,85,88,42,213,249,147,103,105,129,193,33,105,160,2,125,59,170,30,186,97,167,178,15,145,65,16,196,183,122,
-181,69,243,86,253,125,78,30,246,42,78,117,22,249,52,195,171,185,42,246,117,175,213,236,144,123,183,233,43,120,197,228,
-89,83,90,138,216,18,128,236,111,187,27,158,11,39,206,86,172,171,202,42,229,198,14,151,14,26,18,248,225,97,48,229,
-41,39,64,49,231,205,156,167,245,221,139,215,61,182,86,215,203,186,201,142,177,99,223,54,125,139,80,33,23,56,223,9,
-198,164,198,71,109,43,133,124,36,147,94,16,64,246,26,165,41,22,202,42,41,30,79,204,27,76,175,69,237,82,120,21,
-231,115,138,47,189,179,88,20,152,128,102,160,50,19,141,78,60,39,241,167,182,115,101,87,72,244,103,106,101,132,242,134,
-108,71,222,239,109,85,189,59,40,99,34,51,186,46,244,155,66,182,98,94,29,68,158,218,242,232,40,25,46,149,139,178,
-95,5,122,107,182,6,68,45,69,104,65,83,60,30,119,165,238,152,164,43,105,249,42,131,23,124,60,75,55,72,205,94,
-153,87,149,92,97,255,238,93,120,67,238,206,31,91,219,178,72,0,33,47,189,67,44,42,71,95,2,133,58,96,166,239,
-157,61,248,75,201,136,12,33,66,47,174,208,21,117,90,81,189,42,187,238,253,249,82,166,170,85,249,126,2,235,6,191,
-122,19,23,84,116,136,212,135,38,246,160,109,113,205,64,76,166,41,6,192,172,77,116,210,125,195,110,0,93,29,6,13,
-140,12,214,107,203,59,101,44,39,0,209,0,183,50,163,131,26,231,135,122,153,77,141,235,114,156,199,201,119,79,170,114,
-69,254,96,197,255,157,150,129,249,31,242,221,236,162,174,121,238,254,13,242,8,200,53,227,77,84,100,231,52,215,166,62,
-31,33,97,202,139,249,66,111,244,73,104,90,212,13,189,177,238,128,82,77,90,242,184,219,224,163,189,244,123,8,67,110,
-101,44,144,0,180,235,7,30,207,6,65,226,84,228,128,234,121,24,139,77,181,51,112,158,65,147,188,220,24,99,9,99,
-214,18,233,46,162,149,153,75,54,137,169,77,227,234,247,92,170,150,179,161,88,127,145,229,9,168,69,179,88,121,61,220,
-123,132,90,79,33,224,149,46,244,233,72,215,86,103,134,9,153,230,42,161,53,75,242,98,246,125,205,108,117,118,67,181,
-82,19,132,44,207,84,189,22,227,56,214,194,117,167,121,2,163,221,241,62,175,18,247,185,96,104,253,232,31,93,51,239,
-30,229,102,96,191,248,173,82,196,248,116,6,6,248,103,209,195,127,99,1,130,100,112,39,146,97,237,5,197,114,128,5,
-21,240,239,4,97,2,180,82,243,132,216,78,62,242,225,200,194,31,196,64,58,208,147,125,83,61,33,151,101,105,14,176,
-163,31,181,39,39,155,32,99,161,37,169,77,230,113,5,155,253,246,162,249,9,127,3,198,159,19,255,252,247,123,143,171,
-119,71,198,161,123,114,234,146,4,196,145,4,229,180,145,31,18,233,228,11,53,13,154,111,195,177,164,125,16,166,102,59,
-245,37,8,193,35,64,175,3,149,95,157,189,162,161,95,7,50,198,179,59,205,49,32,248,213,29,127,234,126,201,53,194,
-204,63,197,14,185,100,66,15,23,195,255,103,89,33,137,183,221,107,104,39,91,188,118,220,107,36,127,247,197,133,158,129,
-36,180,188,244,194,172,195,91,108,113,38,25,208,178,40,36,198,116,147,190,208,232,239,99,97,41,223,214,113,0,118,188,
-137,63,70,118,230,183,19,228,209,22,25,105,108,150,69,41,104,135,111,167,234,84,33,7,39,179,222,219,92,7,253,62,
-50,94,162,181,232,254,156,188,143,175,219,109,14,132,154,193,3,198,255,61,142,218,63,147,64,211,255,83,91,4,182,150,
-200,14,117,209,241,79,130,167,131,192,106,233,136,90,76,187,75,216,82,125,179,243,215,42,22,45,38,67,221,253,66,144,
-205,31,32,79,137,132,10,115,234,214,189,5,52,94,97,132,197,155,222,236,249,46,83,152,65,226,136,108,133,0,45,144,
-222,136,197,44,253,0,217,255,38,242,161,254,143,37,237,6,24,113,71,235,236,82,204,197,120,23,202,216,152,83,226,32,
-199,226,227,150,249,122,137,199,120,116,72,67,206,114,46,64,136,255,208,13,178,60,151,203,211,66,238,66,96,69,97,201,
-82,156,136,188,59,157,228,27,61,173,21,255,115,209,226,218,216,220,125,88,164,117,131,190,213,64,207,219,42,179,196,255,
-111,196,207,20,11,184,7,8,168,134,101,108,65,230,198,22,21,30,119,39,236,179,43,112,118,19,86,135,102,40,11,77,
-200,135,206,199,183,253,33,184,150,0,128,175,202,68,78,158,235,130,129,82,255,135,200,165,103,155,220,140,70,200,68,140,
-181,213,18,38,12,180,178,94,91,21,171,200,90,0,231,147,101,140,242,233,197,133,56,131,39,120,173,123,180,121,71,152,
-154,243,195,246,49,148,202,84,161,200,19,14,110,184,19,68,144,118,227,107,53,53,147,167,116,224,185,237,240,164,214,40,
-28,149,245,53,208,175,150,87,149,43,49,74,134,86,245,206,51,122,155,67,80,73,225,58,254,212,187,98,116,157,56,251,
-165,236,18,32,191,148,184,28,139,9,10,190,33,133,21,24,166,176,37,3,217,136,53,182,17,76,189,202,74,185,6,103,
-128,179,86,94,172,202,55,116,116,217,127,228,12,131,238,201,39,2,143,59,27,98,53,219,178,177,222,10,71,27,108,62,
-226,187,121,34,138,18,141,25,237,2,169,250,171,2,139,115,141,253,207,77,213,215,160,81,0,193,63,18,140,150,2,145,
-225,198,190,6,49,133,193,151,108,96,130,146,238,197,217,172,91,41,112,31,158,165,46,196,171,255,82,179,77,216,59,53,
-246,162,151,14,108,209,160,236,229,149,33,231,27,118,182,4,7,206,98,139,51,220,99,137,22,7,9,202,44,140,44,112,
-75,58,134,44,186,158,47,1,25,159,12,197,36,116,230,250,164,232,216,105,60,33,230,138,132,1,236,10,197,218,13,197,
-92,31,232,126,47,197,247,151,22,223,149,202,183,57,114,114,207,156,37,196,8,95,125,106,244,207,178,224,34,246,189,103,
-235,173,3,157,234,90,60,209,113,28,189,79,114,161,144,216,112,245,163,164,158,43,222,77,4,99,29,155,123,50,14,79,
-195,114,103,72,2,149,53,44,30,162,198,30,227,158,75,189,188,127,78,72,204,180,252,13,220,107,1,160,66,173,121,68,
-139,132,131,23,194,69,116,233,25,183,109,38,171,135,252,188,171,127,187,207,157,91,13,203,26,117,58,240,187,47,31,201,
-111,55,164,33,227,165,140,33,165,110,29,88,52,233,86,162,86,226,143,47,254,186,227,45,152,21,158,8,114,149,167,123,
-71,79,95,109,174,10,167,140,61,128,200,28,176,72,173,204,69,52,221,35,185,249,36,110,9,123,162,206,89,85,118,233,
-210,4,107,197,125,244,222,218,209,57,164,111,89,55,31,6,88,235,188,89,4,187,246,11,35,209,89,237,138,219,89,25,
-13,87,49,153,17,190,79,208,220,53,223,55,2,180,195,41,168,101,62,60,159,18,79,32,178,246,155,112,126,157,15,124,
-253,122,104,19,113,16,34,146,79,97,48,199,25,172,182,40,132,152,144,51,139,252,213,92,110,72,230,34,181,11,169,108,
-205,98,35,92,199,243,107,246,142,136,145,126,214,176,144,185,179,197,78,96,214,140,68,14,125,198,26,218,143,206,39,195,
-217,243,121,37,80,95,9,105,30,84,230,39,21,244,62,35,52,237,190,212,128,142,158,173,252,212,58,180,107,232,232,214,
-127,75,191,17,159,210,206,213,229,26,81,246,202,27,101,6,154,118,148,123,146,89,58,70,90,182,248,249,228,243,194,75,
-90,193,225,212,10,105,103,234,208,17,94,195,51,45,166,111,205,150,113,105,201,77,42,207,49,53,6,16,108,137,190,4,
-35,45,249,196,199,216,23,31,76,125,38,172,59,165,253,64,195,220,233,235,202,32,25,109,253,176,97,132,13,105,254,145,
-140,131,122,85,56,204,212,181,248,199,139,175,191,136,189,165,156,97,141,176,192,11,243,231,54,142,190,156,46,13,137,12,
-222,217,97,210,224,22,145,159,146,143,56,142,38,169,67,226,140,194,223,122,128,200,183,219,76,63,189,251,126,32,219,94,
-27,238,165,112,45,97,8,164,162,171,203,238,161,114,210,40,74,53,60,6,82,206,193,2,84,99,15,99,141,141,66,187,
-180,134,121,202,184,95,124,215,238,6,181,44,129,224,164,218,44,158,102,188,242,161,34,209,95,165,204,46,252,229,208,208,
-0,207,192,79,155,183,119,246,16,117,159,224,118,213,39,68,45,115,183,161,49,84,99,251,183,115,147,1,191,1,96,181,
-164,160,71,153,111,187,136,143,0,184,240,183,162,247,207,52,105,127,253,93,14,219,128,1,93,122,0,157,207,202,63,212,
-58,38,233,29,22,11,214,16,95,38,183,201,72,230,189,148,55,80,70,136,174,241,155,41,183,188,135,208,150,88,25,212,
-180,232,37,10,78,124,100,210,17,8,237,175,197,47,159,238,197,116,232,253,57,45,32,88,226,40,220,136,58,34,79,231,
-65,217,35,231,66,88,42,41,242,183,20,47,93,161,142,218,197,3,4,168,129,63,29,158,165,142,86,53,129,47,167,118,
-98,255,63,181,54,232,209,88,166,13,144,244,191,12,84,199,23,93,203,76,45,172,187,140,166,24,123,37,94,205,97,9,
-47,234,200,32,226,125,11,87,72,87,128,27,3,67,244,205,33,136,88,104,156,53,27,97,36,146,57,119,89,9,75,153,
-77,14,155,33,100,188,132,45,139,139,205,49,110,7,110,225,140,81,94,191,92,195,144,215,87,248,124,135,253,210,70,120,
-105,237,211,101,170,175,135,67,7,101,180,122,110,142,155,10,130,253,145,224,190,119,230,218,8,127,101,244,104,120,42,186,
-44,54,5,137,169,60,5,126,69,231,107,91,35,28,197,232,79,211,186,92,240,72,134,245,155,84,135,247,231,109,83,200,
-188,6,118,131,170,225,39,21,27,122,108,214,68,213,55,236,49,5,206,246,189,232,191,227,49,201,174,184,239,151,56,157,
-66,203,253,84,238,88,253,187,127,160,129,198,82,180,186,216,146,124,246,50,50,0,80,151,84,144,105,235,77,228,192,231,
-47,166,254,140,237,254,180,243,232,10,129,225,185,143,248,230,196,221,198,148,179,55,245,247,203,32,192,56,12,58,118,74,
-194,198,92,118,255,184,202,132,166,208,86,167,123,176,4,245,185,159,13,138,187,148,114,172,177,217,164,21,14,34,252,113,
-210,28,116,151,160,201,197,29,193,141,237,191,229,237,164,202,23,14,191,12,71,10,35,43,43,172,242,70,226,32,195,130,
-180,221,123,205,116,3,233,195,111,170,173,91,241,7,1,31,176,176,119,86,171,23,219,123,153,221,237,98,14,53,225,67,
-210,154,115,174,214,141,91,228,18,194,108,249,12,129,3,21,141,82,218,16,215,239,215,55,35,75,179,251,86,147,66,202,
-76,77,192,126,178,151,144,254,103,208,211,156,224,237,119,112,19,131,37,222,46,170,221,26,183,141,37,181,65,13,218,241,
-141,77,150,122,132,129,74,67,122,165,113,82,51,135,108,147,127,94,16,126,25,209,149,29,191,34,110,222,151,200,219,135,
-71,211,42,10,179,113,41,158,119,152,108,215,46,194,135,122,148,65,38,179,82,141,168,197,194,157,141,89,132,149,227,168,
-30,5,35,107,208,250,40,229,196,217,98,130,1,118,142,244,206,41,86,143,246,128,101,112,126,224,49,201,9,168,6,133,
-152,13,95,165,130,43,219,178,155,11,46,49,122,207,34,84,51,36,167,76,118,233,95,21,31,196,241,96,135,118,33,97,
-119,161,26,199,79,129,143,26,85,23,197,235,1,12,225,11,151,81,22,254,126,109,124,220,166,56,9,149,145,133,66,191,
-4,142,58,131,250,92,216,103,175,248,150,199,183,177,166,230,14,63,210,237,2,79,15,35,88,45,17,65,39,61,62,193,
-155,202,125,233,133,250,95,205,30,255,201,154,120,131,140,70,28,208,5,65,219,156,87,163,180,23,142,58,22,75,70,238,
-42,13,198,106,252,254,142,15,217,153,18,170,70,139,172,150,72,59,215,146,172,171,19,102,148,21,56,192,110,255,203,73,
-154,9,240,60,168,150,168,164,59,133,118,174,172,246,72,17,191,70,79,226,96,129,106,134,78,225,64,100,228,223,123,26,
-184,150,19,176,254,240,77,130,14,191,95,220,175,215,197,9,35,173,234,112,167,20,222,143,135,206,146,66,107,7,12,11,
-126,187,126,168,36,185,182,244,246,60,90,221,36,155,226,105,147,30,101,80,56,80,199,53,204,134,163,100,178,49,223,232,
-209,168,199,90,107,186,27,222,204,215,132,102,42,238,16,88,152,217,174,244,151,84,30,196,36,79,75,173,175,102,13,93,
-55,16,96,238,106,70,104,2,119,215,231,225,217,95,149,182,219,60,30,211,35,159,212,66,220,179,141,73,233,33,12,107,
-29,185,212,77,48,37,38,145,253,148,5,179,171,121,32,249,184,237,253,72,235,102,232,245,181,33,178,230,145,233,44,158,
-196,137,119,161,23,148,151,205,178,131,238,114,110,209,45,61,40,115,108,64,133,156,216,44,102,79,76,86,171,62,68,35,
-5,178,252,51,38,1,113,216,31,86,50,179,204,158,4,83,58,73,69,40,165,16,180,176,165,106,41,2,106,236,223,237,
-85,37,127,87,173,94,230,139,163,62,198,97,210,82,73,29,17,43,34,71,193,15,184,68,107,226,84,108,85,149,163,158,
-248,213,169,134,208,57,237,168,118,50,145,4,68,60,98,191,195,71,232,246,159,200,40,135,132,234,25,157,159,22,170,26,
-27,234,157,89,148,244,66,251,240,92,153,90,27,11,132,193,111,29,163,156,240,121,246,97,163,150,76,174,55,238,74,89,
-255,119,112,224,3,220,13,64,240,232,163,181,19,198,176,191,115,244,241,100,66,34,19,123,58,243,106,78,189,138,118,239,
-190,103,38,25,9,52,3,59,225,91,169,179,201,254,35,26,4,169,79,163,20,255,239,38,64,132,197,211,68,6,204,179,
-249,5,152,243,28,8,82,25,229,196,193,33,251,232,234,252,89,152,154,100,174,235,137,182,237,153,158,28,250,238,242,141,
-164,226,50,99,44,115,103,65,11,198,195,77,252,142,48,10,169,221,123,202,220,117,16,73,199,168,87,233,59,142,161,148,
-201,124,232,215,14,167,33,217,92,116,187,166,123,120,205,229,109,255,61,210,132,209,78,90,168,41,156,221,234,70,234,84,
-234,139,29,231,125,127,48,18,94,185,134,248,179,230,85,18,177,192,195,197,185,253,7,195,78,90,187,158,241,22,106,175,
-110,8,116,1,228,61,33,149,86,171,166,38,125,60,214,134,124,225,224,206,227,11,130,159,133,1,150,218,167,244,15,98,
-71,153,234,59,62,96,32,56,71,158,68,204,192,88,247,243,1,137,46,196,151,185,141,65,254,165,142,5,152,166,215,183,
-19,222,202,66,147,162,68,239,232,108,73,224,63,162,110,47,218,182,140,28,201,60,178,156,21,92,208,107,192,25,243,211,
-69,71,230,33,21,27,42,240,23,180,68,80,177,133,74,85,48,223,145,232,25,173,45,243,189,73,200,220,91,197,213,183,
-78,107,123,188,217,4,57,17,190,100,244,207,2,117,107,105,55,111,201,90,255,52,132,185,129,22,134,16,23,235,123,249,
-213,43,149,244,192,121,167,247,222,8,225,222,147,98,201,165,147,137,236,87,236,153,67,155,95,118,240,235,141,129,32,77,
-186,247,69,52,241,53,198,61,9,141,78,211,3,128,3,162,37,150,28,85,95,154,62,252,179,15,69,144,139,73,42,205,
-125,144,200,101,95,216,254,46,118,210,241,143,17,146,115,254,70,64,125,152,99,234,250,113,214,214,149,204,239,240,128,29,
-63,73,186,187,204,96,22,131,206,62,156,32,46,86,135,4,219,140,10,92,181,155,236,252,80,120,192,118,98,230,141,189,
-199,217,163,103,165,190,192,169,34,253,91,120,81,11,65,81,198,89,234,24,5,96,246,159,136,151,31,41,83,113,60,187,
-74,109,252,62,126,61,205,111,180,52,136,162,157,91,91,82,122,209,223,166,42,206,10,125,81,6,161,4,19,232,20,46,
-74,220,125,184,139,146,87,250,243,87,5,44,120,192,7,84,185,198,12,233,58,59,247,62,20,207,139,174,92,59,204,220,
-8,31,78,203,82,23,254,64,34,17,68,220,5,161,85,122,103,24,74,139,86,130,79,79,58,229,54,72,157,170,55,151,
-220,38,50,37,10,248,211,47,51,180,209,140,25,232,150,136,64,210,234,84,67,213,199,131,244,127,182,128,220,51,16,17,
-52,216,173,72,49,194,36,233,231,123,54,251,238,55,209,58,203,52,179,120,254,156,85,43,232,241,199,43,101,142,112,126,
-220,49,80,79,10,191,41,48,198,115,173,78,137,106,209,173,104,79,96,107,50,43,125,80,24,186,62,16,123,173,113,176,
-255,24,100,83,199,235,12,26,152,156,85,58,156,238,243,21,243,31,214,75,28,184,67,199,186,138,56,221,100,246,192,85,
-219,220,7,161,60,28,99,162,116,57,30,196,77,106,188,90,236,41,156,109,77,88,153,133,124,68,115,254,50,175,69,90,
-0,233,148,99,130,204,132,175,29,136,182,109,20,235,195,102,184,20,95,2,212,0,192,144,14,233,100,151,220,69,131,189,
-191,91,242,26,231,44,40,236,148,217,60,207,60,122,200,92,127,96,96,76,125,32,77,193,193,111,174,211,68,77,249,15,
-207,238,128,41,184,142,28,106,9,175,13,3,254,251,117,32,114,75,18,124,117,61,12,217,112,130,157,141,92,252,131,177,
-254,255,233,52,67,112,155,32,155,82,214,203,23,184,49,112,195,16,52,169,120,42,74,148,101,245,247,166,69,78,214,12,
-158,22,23,70,1,169,119,120,119,242,235,67,31,26,49,105,32,89,201,184,19,114,232,157,221,152,196,59,196,243,12,75,
-197,26,239,196,126,20,177,112,60,124,26,27,89,88,151,150,254,167,159,193,6,37,192,82,74,57,61,120,5,205,109,152,
-17,143,31,59,165,69,147,142,144,227,196,35,47,30,135,79,214,25,1,154,248,145,81,113,165,29,240,163,243,194,117,192,
-51,87,26,18,90,44,66,169,97,75,72,200,19,18,169,45,204,9,174,164,95,8,165,191,109,255,227,88,175,111,60,135,
-172,13,38,125,65,162,153,148,223,46,19,41,126,114,205,90,163,41,164,176,151,99,66,97,50,49,233,204,147,28,118,70,
-235,3,111,83,123,172,50,108,4,162,184,119,35,248,152,242,43,62,154,49,137,135,204,153,155,229,164,31,190,32,92,10,
-193,188,133,81,77,2,221,75,70,228,81,79,48,146,34,11,223,251,186,226,6,181,235,239,209,175,250,170,178,38,2,141,
-26,28,89,88,128,248,159,115,44,161,147,174,191,213,71,31,105,102,192,213,203,107,98,80,68,37,20,190,21,152,112,191,
-211,174,33,159,148,108,151,43,87,176,17,39,46,123,176,86,120,21,69,91,164,96,187,179,112,24,195,24,172,11,66,238,
-108,60,207,18,41,161,212,160,144,11,162,143,71,165,53,119,18,216,193,241,170,78,134,241,54,47,104,87,203,70,58,229,
-27,210,200,146,29,28,46,131,143,249,41,41,114,44,209,61,187,173,71,212,199,210,163,101,178,3,161,156,172,3,15,230,
-39,30,44,72,55,120,158,167,197,179,56,200,96,192,47,121,194,17,102,121,205,168,169,214,110,205,67,126,11,135,70,95,
-29,192,214,175,76,75,117,48,6,52,198,125,75,158,61,114,253,60,86,6,38,93,9,117,252,227,15,205,109,112,116,91,
-144,113,111,200,107,206,223,129,158,220,205,73,99,194,186,161,235,184,133,173,222,17,182,170,125,121,127,133,3,246,61,75,
-189,145,55,30,109,72,54,178,91,172,157,77,91,104,78,237,146,102,221,200,141,181,154,138,155,214,81,102,151,186,141,252,
-215,229,170,169,90,105,236,62,221,110,64,214,209,2,174,73,41,187,230,3,253,20,67,192,238,201,232,126,11,187,197,246,
-61,198,89,102,82,170,193,62,38,164,122,251,174,157,155,121,234,71,76,252,61,64,82,100,13,192,77,82,56,177,37,38,
-211,163,168,98,209,12,227,212,61,223,130,68,248,245,207,49,38,221,87,134,233,134,91,112,8,114,31,201,213,194,43,227,
-205,131,229,193,135,160,12,164,0,19,50,188,33,0,160,182,147,92,164,90,223,173,186,229,197,191,148,144,151,194,180,196,
-242,15,169,8,124,181,131,208,187,216,253,144,181,53,225,117,238,40,99,27,97,76,106,81,21,242,200,57,115,45,138,98,
-132,1,37,86,105,37,149,36,218,156,241,130,47,36,218,247,250,182,20,152,191,113,208,198,94,153,17,204,103,131,61,128,
-224,61,181,49,27,239,5,186,120,3,12,4,119,156,181,189,224,242,10,21,16,82,5,180,13,79,143,51,203,125,255,221,
-176,202,20,170,37,122,60,99,218,30,230,67,38,36,129,41,253,74,25,39,24,162,183,137,58,192,59,235,175,31,6,6,
-144,69,213,234,125,185,153,111,94,52,163,40,85,27,19,40,4,186,222,124,203,218,133,138,15,169,175,215,157,77,100,1,
-253,208,112,58,7,251,69,101,187,28,98,11,79,208,121,19,149,111,141,58,248,140,161,234,0,176,230,101,249,132,158,127,
-192,149,234,45,85,8,165,232,136,96,113,20,90,10,21,51,196,252,177,124,23,55,198,187,156,39,179,19,130,244,232,53,
-250,15,144,64,71,179,153,210,180,121,180,233,222,50,219,2,1,162,160,74,225,114,88,193,80,247,80,189,103,132,9,125,
-45,2,197,123,111,43,220,222,11,57,59,144,218,140,135,98,235,172,241,16,148,68,220,15,34,26,166,241,98,196,118,41,
-142,56,36,87,130,135,133,241,159,139,190,62,35,143,210,54,163,25,82,141,173,27,45,228,140,34,243,98,119,82,225,230,
-77,171,130,87,251,15,223,169,133,39,36,136,132,137,237,200,149,191,31,236,105,214,121,53,253,72,45,184,148,135,34,197,
-32,162,197,228,17,114,53,118,99,30,78,188,54,232,176,180,101,161,116,247,184,74,193,48,216,89,37,112,39,58,118,70,
-75,81,135,247,41,32,13,40,192,128,36,163,81,93,24,158,171,81,113,3,169,219,194,7,194,192,238,72,254,215,88,223,
-26,117,206,114,128,193,239,91,227,94,140,212,113,104,210,58,3,113,162,141,61,47,250,130,59,178,71,98,169,178,89,192,
-9,227,115,131,47,42,118,162,158,49,56,65,128,166,86,132,103,183,8,109,87,206,28,81,68,114,61,77,83,214,229,243,
-77,50,182,91,170,143,231,11,181,95,117,208,10,253,151,27,19,229,162,65,47,181,131,58,125,84,93,5,65,43,157,168,
-115,37,174,138,233,149,225,113,117,118,113,249,156,32,230,246,166,190,144,31,78,252,83,24,239,30,58,253,252,80,248,194,
-143,14,32,145,182,111,24,75,128,188,176,85,159,89,31,165,236,253,190,50,64,134,60,91,234,242,33,185,61,171,143,87,
-87,110,63,104,180,67,97,77,136,50,116,157,159,161,5,243,198,162,202,7,159,123,28,245,195,123,26,93,62,37,145,251,
-200,36,158,18,64,154,82,51,177,137,117,229,205,81,28,155,160,203,233,147,124,0,240,56,111,15,182,93,150,132,74,58,
-50,55,165,203,54,103,51,197,133,40,131,187,220,56,155,73,198,199,23,117,31,235,5,15,204,119,72,113,61,89,236,176,
-154,158,157,128,211,152,253,39,171,209,54,117,60,211,180,170,9,198,175,131,35,215,71,55,185,1,126,193,242,22,255,191,
-33,34,65,73,211,56,222,82,126,138,137,193,77,20,0,5,198,64,183,238,126,213,38,140,81,40,30,195,99,86,150,67,
-74,223,39,167,227,45,175,43,217,169,43,12,13,29,56,189,147,61,108,61,6,195,243,14,60,47,253,7,145,180,164,80,
-103,135,176,20,76,87,70,204,205,114,108,46,177,166,121,206,249,216,59,151,126,179,36,148,183,137,184,195,53,39,1,156,
-15,39,228,147,190,116,209,84,94,93,113,244,176,159,240,243,15,113,213,57,71,9,66,72,117,235,144,182,83,46,123,178,
-57,53,24,38,38,88,216,109,159,250,251,141,105,216,138,175,221,129,227,150,159,176,138,76,49,44,85,176,13,133,101,202,
-24,152,162,6,110,139,145,39,251,79,206,71,243,38,131,5,227,108,58,252,37,134,128,17,196,68,55,139,31,37,78,172,
-158,149,88,159,69,125,171,251,202,211,46,27,132,17,88,96,52,50,228,188,101,134,214,114,192,91,29,214,29,189,154,217,
-164,6,236,148,211,24,231,115,111,45,221,157,92,26,117,162,205,60,39,234,149,149,103,161,128,94,76,46,36,121,126,239,
-74,254,131,211,43,0,28,57,18,224,204,67,128,255,17,150,224,80,154,179,163,30,248,135,96,245,152,195,101,205,219,38,
-117,6,150,244,171,48,174,58,144,202,149,181,44,196,252,167,136,21,187,139,252,204,194,213,224,85,74,5,85,163,246,104,
-64,38,224,90,166,187,18,205,183,137,200,231,253,191,208,29,33,168,186,251,115,124,160,17,41,18,195,60,19,47,228,218,
-14,101,253,18,57,17,90,246,199,210,93,132,165,191,67,248,156,84,14,148,29,93,114,127,167,120,195,23,78,195,24,218,
-214,195,22,100,39,156,67,155,0,0,12,34,155,176,250,88,221,211,89,44,175,118,151,105,35,143,164,48,188,22,166,121,
-242,3,94,195,0,119,140,167,241,229,37,106,134,99,172,196,146,45,162,141,243,82,55,102,46,116,73,26,206,16,120,157,
-202,169,115,13,213,245,68,192,113,159,119,237,239,204,247,5,42,227,203,189,165,119,223,42,96,172,212,204,198,132,75,9,
-252,39,61,1,132,255,27,231,73,57,137,243,112,104,217,158,117,254,31,18,130,39,183,21,162,244,33,27,33,76,227,208,
-200,108,167,201,12,133,188,73,35,162,144,48,106,183,235,213,120,151,184,184,88,36,188,205,213,8,42,59,187,181,98,194,
-139,95,235,125,77,76,121,161,164,143,65,68,72,219,222,248,195,58,70,83,240,106,181,127,251,213,198,123,47,191,74,215,
-42,42,236,99,88,196,223,167,102,121,188,199,131,204,132,227,81,224,178,111,196,1,28,90,25,76,19,183,16,23,78,177,
-128,172,226,158,212,85,233,14,137,255,126,19,67,46,68,60,126,122,245,152,178,98,204,56,184,209,45,222,212,70,172,181,
-36,101,58,188,237,121,105,58,91,211,46,93,185,234,102,57,198,194,58,209,81,251,160,202,102,60,211,121,203,161,222,164,
-197,182,206,102,35,195,255,231,166,2,136,7,182,185,192,162,28,3,159,25,200,35,211,241,180,154,102,157,222,229,185,223,
-203,67,136,235,101,201,250,179,69,87,186,32,53,199,194,245,151,189,124,72,177,1,133,155,26,84,38,81,77,42,193,27,
-17,54,27,164,232,183,130,12,23,36,127,219,221,40,170,119,194,217,90,172,86,231,84,110,176,42,129,130,232,193,130,193,
-236,135,139,118,111,211,208,254,180,44,32,231,240,34,219,253,92,26,158,113,205,118,186,245,235,20,137,78,25,143,122,187,
-168,196,246,94,229,151,215,198,177,1,250,237,237,29,172,24,41,95,37,245,244,96,236,187,230,216,238,251,154,195,73,240,
-3,189,155,185,58,43,219,184,49,101,6,132,214,156,99,140,116,65,15,127,118,221,251,171,69,192,34,48,33,4,108,130,
-67,178,252,53,248,8,108,197,8,170,32,159,79,219,76,56,196,213,232,160,55,176,2,233,118,144,215,213,121,219,121,108,
-203,126,145,164,184,67,97,167,124,169,167,175,111,193,11,234,10,118,131,94,70,139,42,200,234,196,71,223,158,23,148,49,
-158,31,250,235,205,83,97,202,40,99,25,195,139,130,36,154,86,179,234,98,237,214,193,85,24,239,14,226,114,3,211,249,
-88,90,154,213,47,111,233,168,188,121,43,22,101,207,36,123,45,75,51,227,217,248,68,31,255,41,37,238,24,38,25,81,
-68,4,116,84,39,238,7,212,50,187,208,226,159,160,41,207,107,234,222,93,103,36,120,118,231,63,58,60,212,64,77,59,
-95,135,160,252,171,46,41,173,30,218,156,219,134,88,4,125,192,252,8,112,182,202,113,132,76,233,214,154,89,140,23,13,
-124,26,218,173,234,97,177,38,202,166,185,103,55,196,44,188,247,162,8,67,243,87,26,220,200,90,189,102,171,198,225,78,
-252,206,31,134,123,223,58,94,32,101,16,205,158,108,253,225,41,39,171,90,71,248,143,39,158,209,112,19,157,55,123,123,
-93,149,239,33,84,155,60,40,245,56,12,19,116,148,105,123,190,139,107,1,60,106,190,90,22,230,56,191,254,108,4,10,
-2,30,81,87,232,221,227,59,4,86,142,42,45,235,165,185,114,250,54,170,81,169,158,224,219,121,122,231,158,50,32,248,
-234,43,52,85,113,172,215,105,36,45,109,201,233,162,159,151,99,181,247,17,190,170,142,174,21,80,144,161,183,143,27,94,
-206,241,33,74,183,244,253,67,230,148,74,77,42,143,188,214,87,13,213,217,44,168,17,213,1,95,62,27,226,213,134,69,
-236,130,241,28,75,176,163,114,7,246,212,90,31,244,129,91,165,203,37,17,145,203,75,209,35,109,239,226,98,120,240,29,
-181,125,81,23,190,92,23,119,36,27,112,91,34,151,128,90,57,168,147,249,217,35,103,245,198,169,171,80,169,152,165,230,
-5,49,188,152,157,243,157,206,22,119,5,164,139,198,148,35,194,46,201,179,130,233,174,48,197,19,184,151,131,103,23,6,
-210,187,53,101,220,147,101,136,126,61,113,83,32,109,141,99,193,244,190,179,20,115,23,206,117,195,49,70,56,107,60,233,
-69,232,166,173,3,244,75,213,107,197,145,87,186,243,155,247,232,217,145,153,45,96,77,249,3,54,34,83,1,113,10,59,
-222,207,7,233,58,15,75,4,71,203,72,126,92,4,58,236,146,248,126,157,226,164,124,134,85,244,62,222,35,215,138,24,
-222,66,229,57,77,198,239,193,6,129,14,128,209,212,122,3,146,119,188,71,186,192,180,236,252,76,25,115,241,159,16,147,
-234,234,125,224,243,165,30,150,173,54,42,248,143,217,200,216,116,39,50,173,175,206,34,154,245,56,84,115,138,82,55,59,
-98,203,76,57,216,98,225,99,53,88,31,118,231,193,12,63,98,19,106,30,100,31,219,242,75,7,221,190,244,56,48,253,
-254,87,97,42,34,228,230,12,159,162,214,163,173,200,63,55,178,15,221,58,250,100,218,47,217,7,221,76,132,197,254,132,
-157,43,76,67,113,70,212,226,42,161,42,23,19,35,166,236,93,24,45,66,252,85,174,25,26,139,84,175,99,52,164,208,
-81,173,238,33,139,140,213,180,133,10,19,136,81,61,65,219,216,230,224,115,204,197,97,1,131,188,30,230,42,169,164,47,
-75,180,169,27,42,130,84,23,97,158,237,252,187,154,0,146,20,139,59,228,65,103,119,8,135,198,45,244,4,239,187,64,
-80,73,66,34,61,149,235,66,78,32,8,28,17,28,11,182,25,78,88,49,182,227,37,100,44,243,173,78,75,196,48,122,
-209,123,184,163,129,60,243,2,33,153,97,43,106,252,220,96,129,20,137,53,61,206,219,41,97,224,71,118,239,59,41,144,
-231,142,251,60,156,127,202,138,114,181,99,117,185,133,1,130,237,81,221,252,146,146,164,65,116,162,122,36,214,160,246,241,
-205,165,58,219,212,229,186,180,89,138,183,183,99,107,194,33,79,219,108,98,202,187,83,109,81,209,54,241,163,32,197,199,
-115,198,143,210,89,25,4,74,128,82,192,82,220,94,76,189,177,251,248,226,146,244,40,39,213,173,176,17,102,181,222,47,
-212,230,81,93,252,134,88,4,117,34,101,13,234,218,224,88,107,190,18,121,31,9,254,208,50,54,195,218,91,59,202,116,
-48,97,126,81,202,167,217,156,125,78,24,100,16,29,15,75,54,93,112,117,176,47,182,162,247,98,186,15,192,204,68,152,
-157,86,1,28,139,85,223,71,135,19,175,211,150,225,42,227,174,89,184,96,39,207,153,227,116,241,98,103,169,60,43,246,
-206,190,88,119,55,176,148,176,214,211,27,0,254,82,235,194,240,224,37,136,164,140,161,137,110,39,187,74,36,57,176,225,
-244,90,127,246,109,212,158,81,198,66,213,171,209,171,6,98,73,107,234,176,100,190,36,1,166,16,207,1,248,42,236,213,
-190,116,123,71,126,36,251,23,186,74,127,222,151,109,114,156,191,208,64,146,126,66,174,86,19,69,170,235,79,48,28,179,
-68,242,14,81,100,16,111,242,113,127,244,145,221,236,160,74,74,158,96,159,221,214,44,28,201,204,86,92,1,232,111,96,
-105,146,110,4,80,129,100,251,58,120,250,78,92,204,254,61,77,9,212,206,218,73,178,190,216,193,66,122,108,217,177,122,
-80,179,90,41,237,141,9,4,110,203,208,6,167,214,211,20,12,85,97,84,96,195,179,99,15,25,172,220,24,103,89,128,
-182,194,91,230,175,27,33,142,193,8,37,129,73,199,242,48,131,61,226,85,123,84,208,101,46,162,59,30,155,70,146,72,
-134,124,104,121,254,180,190,201,71,76,33,111,209,163,46,80,21,205,189,192,144,218,250,209,29,244,170,215,149,221,217,149,
-41,126,58,199,228,48,30,115,185,64,64,89,54,156,161,157,55,215,23,124,157,137,44,64,17,22,167,206,245,192,36,30,
-25,176,241,162,119,142,128,237,82,218,199,208,110,255,90,10,130,132,7,41,106,240,255,143,99,49,10,94,36,114,105,74,
-38,152,244,56,189,7,176,57,104,122,81,253,150,60,47,175,50,123,115,85,76,170,187,223,125,77,247,218,62,231,249,236,
-116,111,241,87,122,79,0,1,52,33,188,214,17,80,12,42,128,105,7,39,32,92,93,206,96,244,218,60,91,26,5,216,
-242,225,18,185,109,237,73,178,247,30,77,217,129,221,155,110,20,141,231,177,62,164,189,245,86,151,229,190,139,226,196,206,
-37,212,60,132,167,46,83,203,163,222,76,211,145,89,243,115,30,185,171,67,134,155,59,158,120,133,116,203,196,137,199,128,
-75,116,236,9,105,197,80,143,48,193,15,240,230,169,185,179,54,239,241,144,82,98,173,141,105,104,230,96,167,217,88,47,
-135,92,118,77,126,134,81,226,217,95,166,156,247,135,96,46,13,140,190,230,13,1,70,68,103,122,96,0,185,143,43,131,
-183,228,199,232,101,247,23,30,67,197,242,234,202,223,246,45,56,246,109,131,14,210,62,139,1,207,71,232,233,61,10,36,
-223,228,93,90,254,162,150,114,173,23,206,154,232,23,199,152,97,125,249,225,102,46,219,123,40,168,121,40,64,137,110,30,
-226,84,56,251,108,29,207,77,119,164,27,48,91,120,49,26,18,143,46,139,21,0,195,28,54,182,71,114,38,50,110,24,
-205,185,56,104,2,23,40,76,162,231,149,1,150,158,66,81,150,197,90,101,6,72,48,7,183,23,134,181,40,76,60,144,
-122,108,48,59,47,95,213,185,192,126,19,23,142,184,235,42,198,203,17,209,19,130,218,138,205,218,47,44,117,102,72,174,
-174,26,212,31,19,255,185,14,174,149,25,68,64,222,252,55,84,30,246,209,169,232,168,221,215,76,52,10,102,27,154,195,
-3,113,51,105,38,120,220,17,43,49,176,194,10,127,50,161,2,40,243,84,194,216,24,196,218,219,248,111,20,98,165,96,
-125,212,70,52,143,174,231,52,51,106,70,58,206,198,253,122,12,74,18,88,111,169,111,71,226,29,223,26,138,88,127,206,
-63,98,124,177,121,136,211,92,61,77,184,232,218,65,229,220,92,222,128,136,65,47,245,188,3,30,6,130,179,155,201,180,
-142,193,149,161,41,155,4,215,255,252,150,63,211,216,126,118,193,58,94,253,164,12,215,219,96,157,101,226,81,103,4,17,
-173,80,211,240,247,33,250,172,242,19,223,68,68,109,184,64,234,245,25,48,163,26,219,21,150,160,53,74,100,195,44,44,
-49,50,95,63,112,103,245,76,50,55,26,215,157,164,231,38,246,237,146,13,8,241,151,191,185,103,255,186,150,218,56,34,
-98,80,36,195,120,158,167,31,252,194,252,123,180,79,147,106,62,195,218,201,173,11,168,255,0,130,43,30,247,43,159,25,
-161,244,6,221,91,31,130,71,253,77,53,130,10,161,34,39,193,177,141,55,235,219,208,212,118,100,188,227,146,210,209,61,
-221,112,201,159,55,253,35,7,184,134,251,152,161,171,24,97,30,18,161,56,135,33,4,225,11,15,127,166,175,137,19,98,
-148,3,232,95,89,133,124,45,229,45,170,111,91,71,167,204,181,219,36,113,70,176,243,129,83,109,9,130,249,213,237,112,
-248,80,31,96,212,82,137,32,214,109,154,187,175,240,129,9,136,166,125,136,16,48,18,196,82,108,141,225,39,222,134,40,
-182,130,196,175,248,97,175,49,119,239,22,238,191,172,178,223,155,99,187,47,17,201,98,46,131,28,17,67,190,17,142,17,
-42,173,7,237,62,159,127,97,190,167,47,39,75,39,150,209,113,215,36,175,126,192,67,160,108,19,158,62,77,25,52,177,
-68,40,240,154,92,141,97,86,126,174,238,193,178,190,210,32,158,148,48,217,198,188,110,22,106,235,72,45,192,53,217,226,
-112,10,16,61,173,225,73,177,143,235,200,48,234,11,99,101,130,50,40,131,200,108,2,8,229,61,13,106,181,171,157,31,
-167,207,156,133,102,212,196,213,67,77,210,59,85,213,124,16,145,148,144,194,157,114,32,105,6,72,202,161,241,4,149,246,
-104,147,57,149,4,46,158,124,149,140,6,235,111,223,168,3,240,111,83,183,187,214,221,102,46,171,70,144,103,62,68,131,
-123,77,46,234,217,95,41,253,22,234,192,29,167,45,128,112,68,243,142,77,144,248,47,214,135,144,32,47,211,180,82,204,
-133,111,105,230,83,73,208,180,118,124,201,196,112,172,173,201,180,200,223,148,123,47,45,168,156,245,212,243,43,254,100,204,
-35,153,3,83,221,195,184,223,153,67,204,217,255,197,194,13,61,69,235,77,10,123,25,4,234,147,98,160,148,38,36,143,
-251,211,99,180,68,216,156,100,181,210,184,59,90,251,93,245,245,182,141,48,137,193,101,136,189,25,241,100,114,105,60,88,
-205,96,188,205,221,229,176,242,62,124,252,193,15,157,169,104,44,71,233,226,54,192,86,248,213,20,208,208,234,130,151,173,
-81,238,175,72,197,130,77,143,167,222,112,110,109,116,173,235,66,115,25,15,91,55,229,23,72,16,152,207,247,213,17,91,
-223,39,92,116,216,38,246,161,7,215,241,185,134,26,164,44,71,127,33,145,146,99,133,229,36,53,194,138,174,95,243,208,
-156,101,100,171,136,191,172,75,16,240,22,12,66,153,63,34,114,180,177,88,158,218,45,5,220,49,215,83,239,28,197,129,
-46,57,23,139,41,44,179,194,199,152,118,108,255,23,52,162,95,195,144,121,28,54,143,182,69,67,181,170,194,150,182,52,
-177,118,224,23,128,133,82,5,99,116,110,149,3,250,149,143,103,37,80,14,48,96,44,10,106,49,5,248,152,235,190,231,
-204,47,209,137,143,226,156,117,252,206,232,37,222,164,94,5,215,248,215,60,166,57,241,142,192,9,156,100,155,73,102,55,
-114,171,116,225,101,247,125,236,209,222,130,58,63,148,103,89,108,209,180,162,185,245,104,144,222,54,107,87,112,175,238,92,
-99,78,163,50,78,121,145,202,12,74,63,137,182,34,174,203,224,26,104,124,236,138,134,72,2,63,81,28,224,58,6,255,
-41,12,254,217,144,80,61,230,242,126,66,141,183,236,238,111,178,253,159,129,47,209,148,158,9,102,177,194,91,48,221,79,
-177,83,214,169,241,5,44,240,21,129,56,238,2,89,181,222,65,221,25,139,52,236,66,179,28,225,239,10,177,83,154,120,
-94,68,209,184,167,118,156,106,215,233,130,3,18,175,94,115,53,69,55,125,122,92,184,173,225,168,234,216,143,183,150,203,
-75,159,72,28,64,195,174,102,133,66,237,242,93,44,195,67,9,57,209,230,235,142,183,16,0,32,7,143,173,50,150,1,
-166,116,179,42,1,157,117,99,80,155,141,98,18,230,161,81,72,55,52,130,143,210,201,130,221,61,23,101,102,132,207,101,
-174,174,106,75,156,163,58,131,180,93,244,192,60,101,212,66,117,20,200,47,131,127,115,89,56,83,145,164,38,201,154,156,
-213,202,194,155,152,179,236,3,127,249,100,66,47,188,194,21,155,159,211,176,137,161,158,229,145,21,87,179,247,167,183,142,
-250,197,204,111,196,74,209,44,244,180,131,189,49,150,93,119,81,55,161,72,58,155,69,212,68,94,76,184,112,155,57,29,
-165,5,123,164,230,229,238,143,23,252,206,29,0,162,48,251,179,195,186,84,76,52,250,62,82,103,155,253,25,187,203,127,
-144,156,186,166,97,181,26,149,62,194,230,224,14,167,232,74,139,120,71,207,223,81,4,149,249,75,178,67,32,255,17,74,
-180,43,229,26,249,249,59,81,137,210,240,169,98,85,22,61,65,113,84,204,189,181,115,191,243,37,169,95,68,20,218,187,
-161,15,56,104,53,134,41,77,63,170,18,118,120,71,79,209,183,206,194,151,169,14,74,200,131,49,58,136,244,129,30,242,
-174,250,202,81,149,154,248,113,103,150,181,72,154,61,242,200,180,255,75,124,174,211,112,5,40,140,130,14,49,24,255,251,
-150,126,121,200,166,237,19,217,154,35,69,64,84,238,35,100,81,21,178,63,220,154,85,53,126,180,59,82,54,214,99,212,
-68,87,245,161,151,148,75,244,255,253,242,254,114,156,18,44,188,42,240,115,236,25,214,8,242,208,53,188,227,202,25,9,
-58,93,127,13,149,39,40,197,13,46,218,16,98,113,206,199,3,191,194,137,42,236,13,203,167,122,250,81,236,188,170,246,
-186,155,159,25,22,117,144,151,87,62,197,205,91,73,157,153,189,238,248,170,190,29,228,111,249,33,211,13,96,69,197,143,
-4,202,182,153,151,108,65,36,151,246,229,72,245,84,239,88,122,155,55,117,236,58,147,233,211,120,140,185,238,203,209,224,
-79,131,154,24,239,136,142,153,248,11,246,91,118,230,110,237,133,154,212,56,159,186,210,216,170,47,217,107,245,94,76,214,
-162,113,102,122,141,54,192,79,21,73,191,62,95,70,76,169,32,19,100,21,8,199,40,2,99,120,8,67,20,60,237,37,
-2,81,73,123,74,85,26,191,22,103,47,224,109,132,167,213,152,50,236,158,204,62,46,187,64,130,180,90,44,255,1,149,
-194,39,146,68,60,155,114,38,124,23,45,53,48,45,213,232,123,118,151,12,80,196,161,222,106,1,251,167,125,67,246,199,
-130,177,190,74,42,91,250,4,125,114,138,156,208,114,26,37,147,33,14,197,209,64,217,250,38,204,83,33,250,189,75,137,
-140,255,197,209,67,208,45,106,137,234,109,236,37,232,96,46,96,58,64,87,8,75,182,117,199,115,23,51,211,150,215,248,
-212,112,138,187,34,165,138,174,148,59,85,188,6,90,180,242,233,60,22,193,226,112,230,190,112,52,122,5,161,224,141,174,
-191,237,75,26,176,22,87,128,225,103,238,119,12,231,148,85,104,205,82,187,76,187,151,62,231,8,29,121,42,100,95,221,
-204,90,37,47,84,92,52,145,5,42,20,53,28,120,247,32,7,76,55,26,19,121,37,235,67,150,173,14,73,157,57,236,
-225,222,28,148,116,94,252,24,49,100,33,177,154,246,193,57,84,15,3,71,70,148,104,82,145,246,184,80,39,126,62,176,
-158,194,21,170,183,75,9,209,167,68,50,221,169,109,78,142,36,0,165,70,199,63,167,205,187,130,98,192,205,93,28,70,
-182,154,151,108,75,3,129,91,248,48,66,95,191,186,176,39,173,222,101,174,191,183,163,64,166,83,64,88,172,16,14,81,
-90,204,130,170,222,197,21,103,170,238,188,19,227,251,205,108,13,39,16,130,84,196,42,32,93,194,48,3,138,119,128,23,
-209,243,227,65,89,47,49,162,189,212,44,91,34,228,34,9,105,39,89,75,79,19,155,203,44,166,210,235,39,39,123,191,
-6,184,69,37,187,150,151,92,242,223,143,218,52,69,191,99,251,42,69,82,134,207,78,38,130,71,134,16,57,121,55,144,
-156,151,177,152,49,44,202,49,82,207,158,84,7,162,167,128,146,246,211,94,231,38,154,142,44,183,243,142,175,68,93,1,
-17,141,244,8,173,174,58,186,189,136,207,194,164,199,150,28,213,42,48,200,148,243,115,33,139,30,109,197,33,32,125,23,
-36,141,41,63,133,202,72,25,28,139,213,211,161,227,138,129,225,41,26,229,98,123,3,192,36,103,193,41,196,39,212,228,
-162,195,223,176,174,240,21,67,70,60,199,236,174,179,66,232,81,162,19,117,75,190,15,251,123,120,35,191,10,20,174,75,
-132,200,163,39,144,119,112,103,221,106,240,112,124,182,191,138,34,61,190,228,169,106,207,164,199,76,24,1,143,119,121,231,
-5,226,14,109,179,135,155,39,227,185,174,56,134,235,130,13,138,249,55,9,119,234,128,239,110,164,91,73,228,3,180,108,
-132,132,105,45,118,57,101,220,243,160,137,188,10,92,185,79,238,175,206,226,210,25,135,107,182,24,142,27,228,189,205,32,
-50,34,131,17,231,254,218,30,182,154,226,134,145,114,113,71,249,65,243,136,134,134,66,64,59,155,233,162,97,67,188,82,
-47,153,121,184,242,184,211,130,241,32,209,143,50,224,87,87,193,172,209,76,19,40,247,73,141,168,143,190,230,6,139,220,
-32,221,101,240,148,9,246,250,40,121,197,101,218,140,89,69,22,193,105,7,164,224,105,159,137,74,230,118,247,149,154,30,
-203,206,101,140,113,81,143,188,241,10,114,0,249,47,138,122,192,205,20,99,20,58,29,90,201,103,12,76,108,201,204,99,
-118,146,43,173,100,36,251,20,141,123,222,160,102,6,207,180,210,231,156,78,128,28,142,103,82,220,233,85,13,88,84,102,
-100,235,178,84,196,205,248,19,10,245,142,30,160,110,149,72,239,72,166,184,45,166,206,204,174,43,71,157,221,78,83,101,
-74,34,105,113,29,188,165,250,116,168,50,203,8,196,159,245,2,59,177,73,51,32,27,86,127,141,137,254,241,15,251,98,
-57,212,215,54,97,42,117,228,90,207,25,230,80,150,18,170,191,200,230,151,174,240,7,95,201,204,175,49,180,166,50,62,
-68,221,228,91,88,114,174,225,11,170,147,171,225,106,58,82,174,161,248,124,21,149,25,160,122,135,144,0,181,236,163,6,
-249,219,199,206,76,18,30,244,170,186,222,193,214,169,174,75,6,157,143,161,53,214,126,130,56,192,147,97,41,199,29,204,
-141,24,249,146,57,223,130,24,71,178,27,155,79,239,218,213,221,160,99,194,166,156,188,96,49,12,173,58,195,105,120,150,
-37,190,236,185,38,147,31,97,209,218,226,190,117,111,187,21,252,40,167,11,96,55,88,46,163,9,140,213,0,247,103,182,
-211,88,240,67,65,95,113,228,147,108,9,8,226,94,138,189,105,91,182,8,211,188,211,53,146,245,207,153,218,88,80,110,
-176,242,215,159,112,66,155,22,49,82,174,38,240,187,224,190,117,22,112,112,240,171,37,132,28,7,214,63,179,103,44,189,
-145,0,178,41,239,144,3,189,156,31,178,126,223,145,16,100,41,89,28,30,130,55,231,142,117,28,78,79,151,25,70,71,
-71,201,181,37,43,156,106,249,227,92,68,239,120,57,50,40,192,233,35,226,55,21,164,39,154,66,158,195,26,47,133,79,
-234,240,225,188,129,250,32,162,6,71,149,197,182,174,206,33,168,248,110,217,196,182,96,53,8,251,232,86,3,33,171,4,
-94,113,167,9,224,53,164,8,210,63,216,229,144,255,38,231,159,105,47,54,155,151,6,246,254,175,18,35,163,32,178,141,
-175,69,94,64,38,124,77,95,165,78,75,151,226,61,108,2,145,87,36,132,135,87,217,197,7,108,155,29,9,82,125,251,
-147,225,198,94,221,154,82,237,175,154,7,146,150,29,12,228,88,43,219,22,79,211,214,156,42,205,5,227,209,195,232,234,
-73,192,175,181,178,203,86,195,113,122,103,107,13,205,116,109,64,49,189,70,89,66,99,182,70,24,98,9,140,95,203,198,
-54,177,10,110,60,29,112,213,186,122,218,88,17,47,153,216,216,183,195,29,20,226,78,17,239,81,4,94,221,63,151,179,
-97,89,25,186,148,147,211,229,144,221,7,10,213,255,17,150,236,228,207,153,218,252,36,228,216,189,92,106,133,91,200,86,
-201,103,194,7,172,164,74,214,254,49,13,48,205,175,80,221,85,197,120,102,144,148,17,165,53,60,209,224,135,156,163,3,
-194,223,106,15,190,58,160,197,226,107,70,58,222,224,61,213,244,158,206,81,191,31,80,152,214,25,143,192,19,23,238,51,
-26,132,31,115,49,151,130,171,185,191,115,70,224,169,25,23,40,194,77,67,124,83,162,253,124,185,246,219,8,171,97,241,
-184,18,19,206,189,181,74,93,58,155,170,115,54,186,210,234,148,138,236,164,191,80,91,217,128,188,100,44,127,107,56,253,
-62,218,94,252,103,95,75,67,154,71,214,142,56,249,131,35,180,100,129,66,168,10,87,55,92,135,188,111,74,174,13,63,
-220,82,217,127,54,242,56,149,4,4,50,250,181,9,205,4,147,227,192,191,102,153,192,233,102,76,222,106,81,87,202,98,
-86,188,2,244,191,245,21,132,30,158,129,80,37,136,208,95,222,66,171,111,240,168,31,214,0,120,27,255,223,186,116,215,
-115,46,49,250,81,178,244,97,6,168,133,156,15,56,131,251,57,3,5,73,249,63,147,220,134,248,102,29,208,46,36,218,
-12,240,40,50,185,172,205,7,43,113,25,138,160,70,232,12,110,53,220,154,185,95,157,116,154,26,242,240,153,187,192,106,
-77,20,180,252,113,130,234,184,246,138,183,179,22,252,103,98,104,183,173,250,169,233,68,199,209,238,204,11,109,29,211,253,
-26,19,45,170,201,215,174,93,61,35,223,234,251,126,90,92,180,206,253,102,233,96,40,116,7,124,130,63,116,218,241,89,
-81,33,232,225,84,38,181,87,32,6,97,129,108,156,137,15,231,101,19,162,173,57,21,70,54,65,179,22,122,236,32,102,
-179,148,24,219,14,86,180,202,9,244,91,166,158,2,65,56,94,72,147,203,57,101,234,231,63,222,134,18,211,175,61,242,
-133,42,181,25,224,54,104,198,43,177,84,235,201,41,79,180,127,42,12,29,98,78,8,146,106,39,120,72,107,183,146,106,
-224,217,146,87,141,25,87,85,157,101,112,125,191,207,12,194,71,31,187,116,204,40,16,42,255,150,82,37,85,211,40,43,
-166,126,15,74,13,254,141,54,242,140,225,120,99,99,89,47,250,82,159,174,59,60,53,242,229,24,171,161,125,22,216,31,
-245,246,191,239,145,151,251,214,8,232,197,47,204,249,146,160,153,192,3,69,243,54,94,105,233,111,157,71,88,172,126,192,
-209,149,31,241,43,161,64,105,82,248,213,151,24,72,231,248,102,232,206,252,196,134,252,187,79,102,210,55,152,11,213,148,
-25,81,174,106,201,175,119,41,174,178,154,140,185,160,153,246,99,114,251,185,136,255,192,4,37,149,227,34,70,219,84,37,
-232,89,6,3,241,154,231,198,206,216,13,145,107,19,72,94,126,214,98,156,55,99,167,58,184,231,117,112,171,11,215,159,
-229,51,99,222,35,234,224,65,40,243,70,5,48,90,99,18,55,135,113,134,213,14,31,34,81,55,237,197,164,46,127,216,
-163,53,161,248,76,40,56,233,86,130,18,90,26,217,25,40,59,147,140,95,216,133,9,64,92,232,129,116,4,69,207,131,
-125,176,172,79,118,222,33,98,61,202,237,68,172,79,17,184,38,226,122,30,29,89,242,254,25,104,49,168,218,95,24,43,
-165,205,234,121,79,238,113,78,20,17,26,41,112,13,166,52,50,39,56,132,130,83,203,55,198,66,160,141,103,7,50,101,
-100,213,157,169,158,152,26,174,78,147,64,215,35,50,206,127,229,90,219,29,194,170,116,225,166,104,36,35,159,144,199,150,
-168,225,212,189,43,223,175,100,111,182,126,221,149,179,238,24,138,159,230,150,12,60,3,171,191,249,32,189,113,89,60,163,
-59,205,189,250,139,185,89,46,224,147,11,211,156,6,18,248,70,79,227,134,252,70,120,182,206,157,39,114,19,108,100,74,
-190,136,77,171,155,82,60,0,105,152,69,105,119,49,17,37,177,29,28,201,24,29,10,223,204,112,183,198,208,14,147,157,
-132,255,37,86,32,3,133,238,134,199,155,147,178,114,173,253,247,126,146,62,194,14,221,130,81,44,29,147,246,238,157,199,
-218,91,169,235,237,182,227,2,115,15,250,31,38,172,254,242,199,151,164,122,228,11,123,10,149,182,193,199,77,93,111,31,
-123,124,228,135,3,66,45,52,71,203,118,35,75,184,40,122,70,195,229,97,55,44,24,118,178,42,9,134,117,183,24,66,
-19,29,80,164,17,95,158,93,232,210,181,69,220,125,148,123,88,156,150,27,33,24,69,42,186,173,130,82,199,100,54,60,
-55,39,149,4,166,204,247,63,222,255,233,143,180,97,57,210,159,48,48,208,3,180,86,8,12,255,156,211,63,149,21,192,
-204,192,224,245,254,13,253,29,179,200,170,38,79,172,93,227,65,45,172,100,53,141,150,79,42,50,26,126,232,26,139,112,
-223,255,233,251,121,132,255,183,155,66,83,49,149,254,14,80,28,18,210,86,84,198,166,107,160,156,137,36,91,214,217,17,
-157,247,169,37,187,221,247,90,159,191,240,125,121,51,175,61,92,4,67,201,122,253,107,143,178,97,189,202,131,31,105,218,
-211,93,177,233,41,164,15,29,171,55,8,8,160,40,94,93,186,107,218,8,218,4,135,251,197,12,239,213,227,6,254,209,
-98,169,229,45,152,186,227,77,153,205,146,22,216,6,202,34,216,140,79,199,93,237,249,148,11,190,106,175,162,146,92,118,
-0,236,140,43,104,207,64,180,233,13,200,23,7,238,138,176,148,109,1,243,171,142,7,227,35,173,89,173,247,20,205,146,
-208,180,73,81,1,114,157,188,93,181,67,199,158,154,236,47,123,200,24,145,218,80,70,233,133,49,228,196,32,157,150,221,
-202,121,91,44,46,240,95,146,71,240,37,15,68,132,248,56,254,250,144,37,104,107,222,38,235,64,154,150,211,14,183,243,
-8,28,65,104,96,15,100,16,37,0,9,119,173,243,134,148,24,190,84,88,51,7,101,88,39,108,242,142,130,234,149,62,
-45,227,71,148,93,160,6,47,40,41,209,19,183,86,199,247,98,144,71,62,212,11,51,172,7,105,1,66,179,14,23,123,
-94,122,83,53,90,15,90,220,46,87,139,110,9,235,55,161,173,86,120,89,54,215,222,186,203,23,206,136,193,188,167,243,
-163,6,158,98,37,57,241,154,2,100,117,126,236,88,87,221,174,127,188,126,8,202,178,177,167,155,185,12,176,19,197,4,
-206,209,40,59,188,196,5,124,9,98,169,36,125,229,169,36,131,70,121,191,64,173,115,126,6,101,2,232,228,134,135,51,
-126,120,73,80,87,197,169,1,113,112,224,131,110,1,182,228,131,74,23,148,21,84,71,135,138,68,220,133,176,89,181,25,
-156,84,121,125,115,50,254,255,0,42,95,76,184,118,167,9,91,248,161,168,133,103,234,105,46,125,187,27,64,104,35,106,
-165,199,125,253,63,104,24,250,179,93,57,114,204,15,74,196,176,8,110,129,104,146,149,161,61,10,228,161,213,58,68,109,
-66,26,33,125,234,219,146,245,162,149,71,239,236,239,191,7,64,72,59,31,234,116,192,209,235,8,74,254,29,230,209,105,
-42,43,141,236,242,41,187,236,156,176,18,138,135,251,218,19,110,3,165,229,14,181,10,79,56,253,65,187,172,224,212,112,
-59,99,149,248,127,244,96,244,137,53,75,127,158,90,222,239,96,129,164,16,252,90,152,91,130,171,207,73,97,194,15,237,
-106,247,92,16,77,25,168,239,57,42,69,246,229,177,106,230,196,160,80,3,182,34,43,93,240,40,15,205,169,3,239,89,
-5,156,31,95,119,130,234,30,207,56,18,148,176,216,213,126,144,185,14,189,115,225,180,239,245,147,233,212,106,35,191,171,
-18,200,199,212,229,141,37,254,188,254,210,27,251,155,58,220,6,87,76,24,186,192,216,56,5,40,103,255,251,167,217,175,
-229,242,75,16,70,65,116,24,238,187,171,92,124,222,200,207,130,225,185,98,216,122,84,159,161,161,147,37,35,52,4,228,
-97,166,173,130,222,114,233,138,157,176,94,252,121,98,192,16,133,45,65,254,245,222,39,217,237,144,0,116,156,171,149,16,
-88,143,220,38,3,27,46,158,46,142,209,224,39,209,214,41,94,137,194,160,165,17,128,11,125,118,118,134,5,121,169,131,
-225,31,20,14,200,249,57,159,105,69,9,66,189,108,208,254,26,87,159,203,92,45,153,233,126,145,65,239,50,194,56,101,
-198,201,112,103,32,198,201,128,211,92,177,95,161,231,73,118,219,165,157,140,116,209,70,101,179,213,120,38,253,124,119,126,
-62,17,136,209,33,148,177,152,252,19,86,59,12,92,5,36,234,190,82,146,133,73,208,252,49,214,39,95,175,15,192,158,
-149,153,62,190,77,18,209,34,61,223,26,181,152,45,14,34,219,129,210,170,22,250,66,174,82,48,203,83,98,113,17,187,
-20,4,50,20,159,232,160,183,157,40,129,201,232,63,174,63,110,132,12,187,71,201,252,51,160,50,34,1,215,24,81,27,
-148,48,99,154,36,94,175,89,129,160,163,227,154,121,141,103,33,237,196,84,207,141,170,6,73,251,156,145,15,180,26,42,
-104,228,111,132,109,132,132,52,232,180,143,241,48,32,92,45,135,209,90,53,114,251,162,196,68,34,207,179,69,182,1,46,
-140,195,93,117,52,66,221,95,24,29,251,253,229,212,221,80,90,88,245,168,194,111,171,136,10,32,35,114,192,60,195,72,
-239,80,129,183,8,241,91,229,229,205,144,230,238,96,98,144,98,90,141,170,9,215,210,88,85,0,95,232,104,25,110,67,
-123,11,6,128,214,209,168,215,233,249,26,192,37,49,34,226,121,32,128,101,186,151,12,132,168,105,79,4,130,6,244,80,
-190,72,233,5,97,182,57,202,69,211,110,27,166,117,207,185,221,173,136,2,195,150,108,126,153,92,131,149,124,200,14,64,
-165,31,165,20,82,233,165,203,1,224,64,102,102,25,0,123,236,123,68,205,123,76,131,215,115,160,12,101,185,5,13,31,
-179,135,168,240,161,202,2,14,160,172,160,233,96,189,240,173,131,76,234,149,179,99,156,138,41,214,229,55,252,26,73,218,
-40,68,229,224,185,144,152,157,225,2,178,160,150,202,0,97,208,73,132,169,209,165,184,5,105,132,208,166,12,88,15,209,
-251,52,171,130,76,113,159,243,7,65,146,214,175,85,222,214,162,127,159,201,72,151,104,216,30,92,6,206,222,236,198,19,
-66,154,106,225,190,23,151,254,252,28,248,37,16,24,18,244,137,158,192,97,223,78,223,139,140,150,219,161,87,16,133,108,
-182,232,106,216,144,165,216,54,59,139,34,247,91,29,249,140,130,158,232,86,64,86,197,128,125,115,94,41,11,99,168,81,
-74,140,118,177,163,32,83,239,136,218,116,113,61,138,86,178,32,23,115,226,166,176,131,54,246,123,79,217,230,134,188,7,
-108,176,133,1,152,61,238,10,233,85,119,147,2,193,253,235,101,174,187,166,72,126,157,133,110,183,11,88,127,63,129,219,
-162,125,226,17,45,132,51,105,117,65,185,146,236,144,107,2,230,147,5,175,30,49,37,238,234,207,246,15,13,166,171,114,
-175,133,124,226,106,63,163,157,147,82,251,149,16,11,193,9,166,6,148,139,172,178,219,226,70,143,217,31,103,158,179,218,
-52,73,90,252,163,65,207,233,29,201,75,214,35,132,97,184,17,79,30,11,226,204,98,67,65,235,176,69,25,81,250,59,
-12,3,220,67,56,165,6,226,101,24,35,179,4,41,250,116,84,7,162,145,88,209,11,159,90,177,192,47,206,138,118,57,
-31,86,22,207,101,202,78,120,155,195,197,132,137,52,140,120,6,96,185,212,219,250,36,216,150,221,221,21,180,45,121,83,
-155,103,97,72,12,201,82,66,212,209,210,60,165,61,135,34,93,239,97,180,213,1,180,79,33,182,157,218,61,80,201,92,
-64,234,38,235,228,154,212,67,179,130,68,233,202,8,5,50,200,204,169,84,43,91,214,129,161,224,41,44,185,1,102,120,
-118,85,169,119,54,10,184,40,6,27,229,60,45,227,18,183,155,16,5,204,196,118,99,192,7,227,20,162,201,150,142,20,
-238,194,159,39,204,182,162,1,139,156,171,158,180,107,114,78,67,201,206,122,58,85,147,239,255,23,245,35,222,102,47,91,
-27,58,166,110,240,179,11,78,70,204,178,29,63,186,113,230,55,116,74,122,29,104,216,42,155,117,245,91,220,79,16,139,
-136,237,24,44,101,78,36,25,153,78,214,108,215,224,244,139,57,149,163,164,70,195,23,197,246,114,191,194,219,83,179,183,
-139,87,68,97,59,242,196,254,159,154,175,29,79,143,137,126,135,27,77,167,139,208,186,248,62,200,163,69,26,254,178,195,
-243,20,220,62,78,117,232,228,163,20,130,244,155,201,21,152,213,248,179,121,204,247,223,96,193,152,130,171,222,9,8,104,
-129,83,66,207,115,66,221,227,132,146,142,191,162,109,56,86,125,37,143,62,41,206,93,117,117,28,182,132,238,144,109,130,
-87,95,36,217,145,76,74,183,20,73,170,4,87,134,222,173,20,16,14,123,249,240,181,11,10,129,73,6,240,72,152,128,
-219,178,115,58,155,135,224,181,136,48,29,162,45,184,182,249,71,226,115,24,212,105,46,250,157,71,33,40,84,205,194,58,
-46,188,84,177,116,27,110,132,175,206,187,249,247,172,176,252,46,92,83,245,187,46,8,63,157,165,129,15,107,102,244,104,
-175,115,242,158,149,229,241,124,22,199,68,27,37,178,164,173,234,167,210,140,131,79,39,98,140,119,145,112,48,66,15,27,
-111,181,94,85,33,69,183,8,102,49,9,152,14,10,41,246,98,137,238,33,26,115,178,149,243,84,183,141,75,49,182,151,
-174,16,220,206,229,38,206,29,37,139,218,211,153,143,31,43,64,105,159,4,137,68,76,129,15,205,47,31,251,248,116,203,
-91,226,241,198,24,228,192,252,26,122,11,75,245,120,200,103,210,133,19,253,50,23,154,90,211,193,196,72,236,115,241,117,
-208,20,73,27,144,192,24,96,245,178,224,136,142,114,190,246,24,132,56,126,122,178,196,232,202,191,195,254,27,17,209,246,
-58,39,159,170,34,37,209,15,79,37,138,30,193,128,200,237,146,137,44,213,230,117,228,250,59,215,18,201,146,166,236,51,
-152,196,21,175,80,245,237,31,122,17,232,67,70,177,38,182,168,106,226,110,53,242,160,226,12,214,138,193,151,232,95,198,
-16,98,228,144,205,192,138,172,193,172,130,70,229,160,110,147,227,133,28,2,72,108,54,92,108,157,154,228,162,12,183,190,
-113,145,228,53,159,176,181,77,93,187,161,227,200,54,185,37,130,235,96,216,97,127,19,29,38,183,92,134,244,28,237,90,
-245,141,93,66,241,114,175,123,139,208,54,71,4,134,46,200,38,54,188,186,246,196,96,217,22,97,245,92,104,112,83,204,
-213,100,223,21,1,129,116,43,152,162,154,111,8,37,166,233,193,118,83,88,0,212,31,187,68,67,105,93,211,231,62,218,
-118,95,252,213,153,26,133,198,53,255,28,241,107,237,228,12,242,98,229,224,234,54,99,178,188,189,69,7,7,234,68,132,
-175,12,69,230,252,31,65,244,190,75,27,10,186,126,95,68,38,135,226,101,7,23,6,179,124,111,155,115,116,81,35,214,
-53,174,157,30,29,42,182,227,97,125,71,248,241,161,147,253,192,236,184,182,69,78,58,221,58,178,33,186,93,28,57,226,
-254,123,214,230,194,3,168,193,255,134,15,153,161,221,214,79,32,255,8,199,115,27,148,41,192,209,227,169,12,157,140,226,
-242,49,181,105,11,0,7,82,53,69,237,225,88,9,162,51,191,210,39,209,103,96,147,179,168,28,123,173,81,29,97,83,
-157,145,122,63,54,82,199,232,219,140,227,140,9,159,106,102,239,8,249,198,17,34,144,164,227,146,1,6,6,174,226,156,
-161,179,202,87,158,199,234,155,195,231,199,95,214,117,172,93,215,16,202,150,121,19,74,159,94,52,72,98,191,83,254,125,
-128,19,186,61,186,210,0,20,142,199,247,36,254,167,165,93,13,76,187,49,170,3,103,252,50,206,111,96,6,162,133,243,
-249,109,75,148,12,188,55,123,169,178,120,146,165,221,253,71,2,119,46,162,237,93,4,172,244,173,251,193,197,232,84,93,
-193,154,118,181,242,169,167,92,179,203,13,181,112,103,12,223,110,135,169,18,225,54,125,224,144,57,226,101,133,119,130,119,
-237,115,242,227,22,151,36,184,141,88,9,127,144,9,188,25,64,171,55,197,197,8,247,94,36,165,188,91,204,133,15,160,
-56,8,104,54,63,201,181,55,21,236,253,73,158,114,113,252,17,45,78,191,81,16,25,1,72,85,12,143,193,198,212,100,
-203,54,226,254,109,61,131,16,200,100,194,238,56,199,220,114,212,124,197,239,125,149,234,179,9,244,209,53,120,0,45,16,
-220,191,28,75,22,255,231,175,213,185,83,75,81,55,155,113,98,85,28,5,168,71,39,248,232,27,76,74,228,146,4,122,
-16,14,246,36,108,92,5,207,178,65,205,1,251,122,98,195,223,172,3,26,98,252,12,152,178,90,233,224,150,222,145,15,
-127,232,39,57,95,35,223,237,9,204,106,245,34,35,211,14,44,94,12,105,240,100,207,105,71,29,180,12,128,86,166,65,
-23,97,177,114,51,211,39,189,196,91,216,3,83,177,126,11,10,68,202,51,254,250,84,201,237,93,32,70,86,180,88,113,
-216,174,144,100,91,190,254,92,126,152,21,88,22,159,189,101,171,41,110,38,134,249,122,36,75,1,186,189,88,151,220,8,
-30,122,224,101,141,39,22,25,139,48,149,33,99,146,20,11,24,223,118,248,226,33,60,15,156,78,144,204,200,91,50,238,
-25,199,227,50,19,105,69,35,204,239,204,47,40,122,3,221,138,100,188,155,219,160,124,240,129,196,111,5,234,51,52,200,
-213,249,51,181,40,50,199,88,45,35,193,94,2,107,6,220,137,209,158,177,157,206,177,99,8,28,188,91,32,1,91,112,
-84,220,118,234,91,195,194,117,34,117,39,106,3,193,232,14,131,66,119,89,192,140,44,189,199,246,69,86,194,109,63,143,
-210,123,80,64,158,0,37,211,46,47,27,191,224,168,186,128,92,86,87,0,67,144,143,102,40,30,70,5,123,81,141,45,
-186,111,228,71,83,102,226,19,22,163,236,49,45,52,196,250,95,10,227,234,70,77,216,208,182,126,174,62,250,175,151,184,
-109,56,71,159,143,95,205,201,0,162,187,206,130,145,226,80,16,182,118,117,239,18,12,27,145,190,123,165,113,151,239,194,
-247,147,11,194,130,243,219,221,94,252,123,147,221,180,106,233,180,176,10,169,171,199,74,140,37,58,208,139,248,190,65,253,
-41,253,203,15,156,45,123,140,178,28,229,26,16,31,131,218,89,2,234,144,150,212,194,77,25,129,37,45,239,227,129,3,
-17,153,67,135,186,121,93,177,229,222,62,148,195,206,116,122,103,253,122,246,72,85,253,97,50,162,151,16,9,88,102,13,
-197,8,139,84,103,85,63,219,15,74,99,190,237,2,178,92,30,197,180,181,199,159,237,94,157,61,248,97,244,184,116,244,
-22,96,113,52,45,140,249,246,18,206,107,180,195,15,85,110,131,217,253,10,53,197,130,142,249,131,203,75,226,255,90,241,
-175,22,219,192,164,168,221,173,221,74,77,66,133,73,67,183,77,10,249,6,242,235,49,56,165,36,70,202,24,135,177,99,
-216,231,238,71,125,135,148,180,142,165,116,182,134,79,212,115,35,95,18,145,228,178,254,136,139,221,28,73,127,251,5,68,
-67,5,192,68,147,87,71,126,190,46,92,250,215,125,180,185,161,242,104,58,43,32,36,225,82,25,13,202,129,127,213,160,
-73,165,194,99,110,169,140,174,187,168,7,22,94,207,247,35,231,220,137,148,112,62,184,210,171,242,108,29,39,26,186,99,
-101,50,109,131,187,236,57,226,227,134,125,81,86,176,210,244,213,141,119,103,58,156,227,178,159,93,134,103,201,152,245,113,
-233,95,116,149,100,208,210,161,176,114,179,236,79,194,32,86,151,15,191,125,225,167,157,151,225,216,255,33,226,13,28,204,
-173,170,32,137,2,239,242,251,1,48,167,67,116,97,123,148,245,18,11,74,185,246,215,203,240,121,148,94,187,77,198,15,
-131,1,150,83,177,175,23,62,74,88,218,144,250,173,195,171,252,87,152,78,49,125,240,116,15,59,158,112,7,199,94,217,
-242,54,11,50,157,194,96,113,221,22,62,104,3,193,28,222,114,109,109,140,239,26,14,97,72,20,2,180,155,121,94,154,
-219,118,164,161,108,115,239,72,105,20,167,104,17,204,226,140,217,87,128,217,66,144,107,166,207,28,91,211,26,10,67,10,
-218,32,150,86,229,226,244,214,129,146,187,194,126,179,12,6,219,34,9,1,32,39,252,137,89,37,61,195,193,142,152,228,
-237,229,138,157,106,105,246,106,136,66,93,0,10,66,99,221,213,22,187,181,78,25,204,203,94,172,224,86,52,218,247,205,
-181,233,244,214,83,185,206,237,72,15,246,51,98,86,154,138,80,222,61,214,93,119,70,58,3,171,244,24,104,154,47,76,
-9,146,35,241,71,201,91,209,146,223,0,101,221,41,242,216,155,118,82,139,116,82,214,156,47,85,9,24,197,76,71,43,
-130,44,159,182,148,42,0,253,5,236,20,54,106,236,232,108,62,119,111,29,128,235,227,93,129,245,92,75,163,55,99,220,
-74,155,41,99,234,19,65,243,83,119,7,52,68,24,165,187,160,224,184,92,5,74,35,177,255,246,106,231,205,125,81,112,
-110,87,89,211,169,106,106,61,141,156,155,185,136,248,137,50,189,36,101,140,115,199,237,215,66,253,197,78,71,105,115,110,
-225,236,21,32,47,180,107,176,226,242,83,94,179,80,221,22,136,11,163,254,96,170,85,187,139,189,151,117,77,140,75,22,
-186,142,162,136,13,86,89,72,140,15,181,0,109,82,58,96,184,204,13,23,108,164,161,173,6,0,29,130,149,177,34,34,
-38,106,93,196,39,54,91,71,10,40,55,227,86,224,189,122,17,121,133,40,241,231,84,139,92,13,60,40,206,54,34,189,
-247,16,128,49,107,136,228,27,233,46,209,13,214,139,207,174,249,57,96,145,23,118,12,244,146,101,133,212,138,141,98,192,
-147,106,80,196,37,68,187,67,125,174,70,104,0,172,104,214,89,64,199,2,244,64,150,206,96,223,218,31,97,196,171,145,
-19,226,37,27,69,97,48,210,237,129,184,23,161,134,171,149,181,175,245,63,133,243,125,237,128,30,154,73,34,95,251,6,
-155,136,82,135,30,166,181,44,33,185,252,213,160,100,245,44,96,237,234,92,74,145,55,127,59,20,199,196,182,2,89,140,
-148,114,167,173,30,244,112,96,89,187,187,220,238,124,63,168,185,154,70,193,86,190,0,3,4,83,222,192,255,177,79,138,
-124,5,221,40,216,52,14,78,42,164,27,50,169,248,123,124,104,69,26,215,193,187,251,88,139,234,204,48,33,47,238,167,
-255,164,211,235,147,187,77,163,140,252,38,104,132,165,188,117,71,25,14,150,226,216,68,31,129,217,220,138,226,138,187,142,
-34,200,44,89,22,68,254,6,65,193,215,40,41,203,222,52,187,240,205,233,90,213,193,17,8,133,212,37,79,64,251,58,
-236,9,248,213,92,214,238,233,94,183,205,240,37,6,188,149,147,253,232,95,78,93,111,185,224,213,108,118,235,141,38,234,
-77,173,10,227,51,130,4,111,188,233,97,143,6,165,134,204,41,170,35,165,112,58,152,22,122,28,172,161,61,252,232,41,
-199,169,107,8,93,123,169,150,96,15,109,221,252,117,196,80,2,142,249,47,95,47,104,244,195,221,82,227,24,220,42,152,
-1,199,210,157,88,44,9,85,173,107,62,152,154,100,127,38,198,107,145,181,11,117,187,199,73,69,6,112,198,227,205,13,
-225,203,233,30,23,119,104,108,88,99,76,72,78,166,82,80,28,245,206,101,80,171,255,75,188,6,192,101,118,45,15,127,
-204,38,110,62,106,10,232,219,181,212,202,75,82,163,235,87,69,130,139,135,88,5,65,157,233,179,75,212,230,113,158,189,
-193,250,49,154,174,77,153,184,174,233,17,191,129,5,213,123,59,121,140,233,151,47,104,152,149,107,190,133,155,61,40,218,
-182,120,159,63,113,194,144,227,11,240,68,116,27,73,151,37,47,230,1,6,96,135,180,177,14,4,244,205,244,20,25,57,
-156,78,196,2,194,91,165,44,167,169,199,223,183,224,82,44,74,148,148,53,229,175,126,180,120,74,72,184,62,178,217,24,
-160,157,18,231,216,169,74,61,208,88,157,116,179,124,64,33,109,197,166,121,94,174,219,1,221,228,70,138,215,163,116,90,
-136,50,125,98,41,160,129,154,21,50,49,56,59,206,38,66,72,176,176,234,64,80,178,252,46,217,6,116,154,82,89,170,
-167,11,122,79,78,253,109,120,182,165,223,230,12,235,6,94,23,215,58,140,95,179,238,227,19,11,211,203,213,84,90,98,
-85,55,31,245,219,108,9,191,33,205,115,54,219,50,241,49,228,39,246,76,168,101,50,123,123,164,76,230,35,1,17,148,
-97,162,242,252,17,9,197,199,141,170,56,83,86,135,242,142,192,228,68,157,135,232,123,211,250,90,199,215,200,30,230,212,
-25,120,191,162,10,83,128,114,1,112,212,215,20,210,193,143,229,116,213,0,220,142,89,145,5,255,67,22,221,243,150,175,
-149,62,124,149,136,177,219,145,78,106,79,42,18,222,233,81,179,242,196,199,214,159,215,49,208,45,65,9,173,218,204,160,
-188,171,139,145,103,125,226,111,51,72,189,2,187,145,16,59,225,78,69,163,73,140,68,68,34,199,160,53,241,95,251,136,
-126,164,210,130,31,25,41,225,255,81,104,16,73,113,25,230,35,23,194,218,161,91,122,249,47,21,122,93,240,9,145,61,
-74,31,187,11,209,66,188,6,182,24,239,97,166,245,135,96,201,154,54,75,225,99,210,221,233,114,149,110,24,131,10,174,
-85,137,232,237,82,82,80,30,60,233,46,218,57,88,228,116,51,246,6,110,46,108,191,219,21,49,91,161,48,0,116,4,
-255,245,20,202,242,61,101,228,28,39,9,249,227,156,48,103,11,102,100,156,113,206,105,36,95,9,30,218,12,147,129,73,
-225,46,165,179,167,182,69,168,32,86,92,165,119,236,92,177,145,6,203,135,77,56,129,70,159,86,173,180,140,129,227,228,
-75,253,195,132,228,137,120,254,138,14,194,117,116,42,160,162,143,74,153,240,40,18,185,230,69,109,234,169,154,216,4,127,
-218,236,56,253,243,113,171,128,143,146,25,33,63,252,145,140,227,220,144,59,235,148,124,23,252,214,55,58,91,250,7,17,
-237,143,120,218,236,132,99,185,81,229,87,40,67,220,137,55,228,171,90,166,60,211,173,24,60,217,51,12,253,130,102,4,
-175,230,194,213,103,85,116,45,156,221,252,22,108,3,146,107,121,204,202,252,151,37,125,93,178,79,105,202,55,219,115,113,
-149,188,48,13,62,17,215,153,136,54,55,53,237,119,21,118,71,68,55,146,203,39,153,34,37,154,149,15,115,80,31,50,
-81,45,124,65,180,121,145,210,156,11,57,166,115,167,176,48,165,5,169,173,47,194,203,121,116,37,193,161,242,156,108,174,
-1,178,73,55,198,98,170,131,114,177,249,248,150,227,168,104,122,138,121,248,20,143,222,180,77,13,184,127,188,45,129,205,
-144,177,207,96,53,197,57,147,77,5,5,161,174,251,191,0,246,232,114,2,249,71,128,195,37,92,58,166,240,131,187,26,
-219,24,48,7,182,44,75,197,120,33,97,24,255,127,206,124,8,179,193,64,46,70,162,211,180,20,5,79,204,141,46,109,
-3,130,150,214,98,208,9,212,85,194,71,192,197,0,125,206,124,48,63,157,152,113,87,143,29,99,74,5,44,3,37,61,
-1,195,155,193,179,115,25,167,125,74,58,86,159,5,182,169,190,28,207,199,97,141,183,152,71,26,88,252,28,137,194,2,
-51,162,159,96,211,3,24,20,92,95,34,68,116,21,75,25,132,20,84,61,124,65,215,115,121,2,121,211,241,79,85,15,
-21,134,240,179,206,5,104,45,211,90,172,41,97,67,187,36,128,230,234,245,148,197,164,114,224,47,220,190,159,47,127,50,
-89,2,17,46,128,245,150,197,217,169,168,191,150,194,36,70,242,9,196,163,235,7,145,187,232,254,243,9,190,14,156,97,
-8,4,65,47,9,195,106,191,233,191,45,108,41,247,112,205,47,49,241,223,230,195,24,153,206,87,39,77,96,238,89,91,
-193,31,180,111,45,187,181,28,109,56,234,100,195,132,89,125,215,118,35,117,4,237,50,206,191,27,254,190,238,169,99,149,
-48,116,208,30,193,251,117,65,221,248,189,136,236,94,149,81,237,25,92,208,255,123,170,61,152,176,192,224,4,253,144,41,
-96,193,9,171,244,20,166,183,202,35,231,222,181,57,127,119,219,79,193,64,146,146,100,69,72,204,87,151,206,115,254,86,
-217,22,231,255,116,71,99,162,10,202,176,239,200,108,66,209,196,76,191,66,37,33,225,179,100,230,52,5,188,125,128,190,
-72,239,184,91,150,181,20,43,3,192,103,193,70,146,218,18,100,60,155,55,35,100,24,250,216,199,244,185,91,98,105,104,
-239,172,74,40,107,139,77,151,145,192,40,33,100,226,32,145,87,86,131,183,41,191,69,8,10,41,208,225,101,118,193,58,
-173,220,46,233,94,138,60,218,242,220,141,252,38,191,120,137,14,65,123,186,104,60,185,43,255,208,68,105,16,128,61,93,
-144,27,98,178,200,2,91,68,112,240,146,149,79,163,130,49,202,241,145,97,60,159,127,66,58,7,206,6,250,126,125,24,
-128,74,143,43,255,80,211,83,45,207,0,223,4,83,207,104,1,182,166,219,132,165,57,102,40,164,209,255,126,118,199,183,
-210,250,111,70,40,37,179,179,134,135,159,107,34,134,196,156,219,154,126,45,192,255,116,184,57,224,209,118,57,61,231,63,
-56,152,216,136,0,148,75,223,11,185,101,26,180,47,158,51,58,95,170,103,253,224,150,215,74,199,191,178,134,238,229,219,
-179,159,35,90,128,35,218,172,98,187,209,74,145,110,62,179,47,79,7,68,189,90,150,37,229,229,228,39,101,11,157,41,
-32,119,158,254,191,122,73,169,12,128,136,121,53,120,140,68,193,104,113,105,114,33,15,57,202,183,61,0,127,96,202,113,
-186,140,123,181,68,174,55,88,47,130,150,54,71,116,10,148,90,179,160,226,176,22,21,183,212,105,160,101,58,39,139,209,
-21,122,112,105,194,17,183,128,69,223,255,207,6,32,140,201,92,229,68,44,208,225,69,241,116,199,183,206,170,83,168,68,
-225,107,213,143,73,50,71,19,37,50,194,91,75,104,69,17,254,121,226,110,173,254,175,15,54,129,73,45,54,213,115,203,
-166,205,145,26,247,58,49,208,121,132,144,100,56,142,209,251,237,245,129,141,129,140,214,229,133,231,183,23,73,193,78,74,
-18,30,211,183,143,169,125,250,133,198,130,177,227,155,103,14,75,124,138,103,33,52,152,169,55,127,106,151,35,94,62,93,
-96,32,54,233,59,98,51,248,83,75,120,201,11,60,14,122,203,85,180,199,43,204,197,67,243,232,234,145,1,228,255,215,
-218,202,252,62,67,144,199,75,14,7,34,88,0,31,153,42,98,32,39,211,63,53,104,136,244,174,43,126,242,6,67,17,
-255,98,238,128,47,127,252,175,220,15,58,220,207,72,154,50,133,7,17,119,248,245,181,68,31,135,159,61,131,38,100,253,
-219,97,74,158,185,113,156,47,18,119,101,127,37,138,123,171,120,167,103,93,18,3,27,64,32,162,65,198,168,41,148,53,
-244,96,195,142,17,52,247,34,170,50,183,6,198,250,212,84,231,74,236,38,72,241,83,13,134,120,52,236,9,88,196,78,
-245,249,54,100,213,189,54,115,203,246,198,58,254,166,85,137,90,68,8,233,77,143,138,117,240,174,133,137,41,237,199,183,
-223,46,176,116,14,206,4,158,217,81,77,23,41,50,83,27,215,137,225,187,162,39,125,152,25,38,50,51,121,246,5,37,
-139,46,44,59,101,254,203,79,252,226,36,196,136,196,37,234,201,94,150,10,69,110,101,142,65,101,128,254,105,168,86,47,
-237,73,101,171,144,248,150,135,20,205,49,105,238,245,98,189,43,122,84,253,22,1,212,79,161,30,93,100,5,54,120,5,
-212,113,201,31,75,45,249,8,89,136,218,12,147,168,59,37,57,19,106,158,147,252,67,255,73,63,106,42,105,234,37,193,
-159,106,16,3,35,21,159,193,129,31,87,111,42,110,255,205,237,141,142,38,24,24,140,102,44,68,24,84,182,72,92,161,
-86,53,162,129,91,216,129,86,141,50,193,50,137,21,135,37,215,249,116,84,63,210,144,254,81,95,144,180,133,234,77,217,
-185,212,86,25,102,113,113,150,45,169,70,2,98,237,194,106,60,153,146,184,38,51,180,67,112,30,86,1,237,229,190,146,
-52,158,238,150,113,198,226,204,3,190,110,112,42,173,111,110,214,48,170,7,239,1,174,240,185,145,81,61,130,60,120,45,
-49,214,225,237,77,176,31,129,201,128,110,47,61,232,129,31,142,198,88,134,42,249,51,234,167,111,4,142,169,71,237,54,
-87,211,14,124,58,39,185,192,61,121,153,79,208,136,140,109,217,155,130,161,233,127,54,1,236,51,82,179,78,211,45,212,
-237,1,247,121,9,139,12,220,240,199,55,227,64,90,107,28,233,68,60,64,5,83,224,169,169,48,63,86,112,193,175,212,
-118,32,121,177,194,171,190,71,227,2,118,44,98,90,66,72,224,159,153,128,93,62,161,104,132,169,206,242,118,122,214,74,
-119,101,173,241,54,162,107,175,142,251,36,178,74,210,38,104,153,137,102,179,37,144,147,138,19,140,94,153,88,19,152,167,
-25,168,49,5,41,27,210,49,41,244,118,35,58,180,114,198,14,126,21,202,51,117,168,208,147,73,135,224,32,117,29,233,
-35,109,151,135,48,70,232,167,116,196,118,6,236,115,51,206,143,115,116,200,239,220,168,7,103,185,51,43,231,191,6,171,
-246,222,79,167,162,150,20,128,211,253,191,186,168,224,219,100,17,75,122,57,59,29,249,57,24,93,236,221,89,176,40,231,
-29,168,243,166,136,68,90,60,46,58,110,244,162,251,209,0,107,53,170,165,125,229,0,254,211,25,92,160,152,10,103,59,
-193,45,159,105,173,254,56,251,40,123,22,30,94,34,182,200,94,180,9,8,7,129,149,98,146,63,175,141,68,70,240,98,
-7,233,158,220,153,128,27,66,214,82,65,159,46,170,236,156,48,204,115,154,38,30,20,61,24,48,109,162,211,92,197,120,
-232,5,148,236,111,154,96,222,94,99,40,116,109,67,206,65,112,61,253,72,29,125,48,198,237,83,168,125,20,110,17,56,
-218,178,202,166,154,223,29,131,213,4,79,165,196,228,44,11,241,37,251,12,59,46,96,141,162,198,6,94,37,53,121,185,
-211,126,174,152,5,109,181,187,197,231,168,152,169,45,164,51,161,135,222,55,240,48,156,199,110,33,111,182,38,255,122,60,
-207,184,133,231,100,195,97,42,163,28,216,115,86,175,204,254,205,219,51,103,96,233,247,211,98,47,147,232,30,73,34,134,
-0,163,131,15,29,45,168,103,253,120,238,145,190,37,153,215,120,206,116,165,246,244,84,237,10,237,107,36,214,150,206,158,
-236,33,79,141,144,105,153,96,179,154,13,65,240,184,181,76,103,36,167,185,91,180,40,9,207,5,139,172,23,200,190,15,
-114,115,79,158,152,21,240,39,65,112,64,144,21,123,151,181,30,90,121,16,252,69,137,1,155,223,239,100,158,50,88,251,
-203,229,105,135,222,185,217,12,178,3,238,58,194,171,95,83,15,151,168,113,204,253,195,155,141,47,48,1,173,203,8,238,
-138,84,9,117,101,81,223,209,83,170,111,115,89,82,67,108,255,206,97,182,108,231,181,14,166,173,183,213,241,113,10,191,
-41,180,212,147,94,37,161,0,223,246,45,29,226,140,99,191,211,16,126,146,208,238,152,202,80,97,240,21,62,143,137,69,
-131,216,16,168,2,169,245,201,127,65,243,47,103,157,211,47,159,178,252,53,255,196,230,221,99,31,133,24,180,126,123,128,
-49,206,201,165,42,222,7,212,45,63,56,30,37,239,76,11,211,102,26,93,239,29,40,127,143,139,139,41,19,226,95,74,
-135,229,229,166,84,173,192,189,133,174,197,235,50,161,18,12,17,26,107,238,158,183,179,208,6,233,48,79,67,6,22,224,
-141,3,184,137,235,42,222,9,150,231,163,162,83,187,12,74,181,82,253,43,207,80,177,77,96,146,183,138,238,240,160,124,
-165,98,117,29,228,227,111,191,66,202,1,210,155,79,208,163,155,3,153,134,123,39,41,150,144,133,30,17,143,98,68,195,
-251,227,77,226,4,126,98,42,14,254,121,120,99,255,78,106,73,42,215,82,239,83,90,76,176,27,53,11,34,16,241,219,
-131,183,234,112,163,200,9,30,239,96,105,0,62,179,103,45,52,129,162,223,11,211,86,221,181,232,239,52,131,151,177,31,
-101,39,155,206,182,39,28,193,227,80,8,34,63,133,244,18,186,111,53,104,180,184,130,56,12,215,189,83,131,162,36,52,
-72,218,121,22,89,14,16,243,248,79,64,76,45,41,32,83,121,43,26,241,7,252,193,201,73,123,246,128,146,127,80,235,
-127,93,112,224,254,156,81,125,119,37,176,141,82,239,109,30,224,15,155,49,11,45,12,154,240,138,81,237,248,93,15,214,
-122,246,23,35,153,192,47,69,23,41,87,231,159,143,108,14,165,204,84,44,186,71,22,16,10,41,183,190,209,29,48,7,
-202,94,190,190,11,248,30,181,157,87,146,44,28,105,235,187,164,130,2,1,82,10,98,240,25,47,102,174,56,138,46,202,
-96,190,223,199,204,49,103,113,40,73,69,223,206,168,227,206,119,123,66,204,220,58,65,228,128,149,103,108,80,130,33,28,
-192,109,126,211,124,175,146,227,36,152,233,132,20,222,57,157,63,245,147,59,161,183,222,144,3,114,118,91,239,152,201,25,
-191,242,110,189,18,120,136,114,133,145,187,210,132,36,26,152,238,226,177,9,69,173,161,56,199,94,207,10,152,27,4,204,
-61,210,109,235,249,239,92,197,80,7,185,174,15,75,15,46,169,69,67,7,148,12,18,253,92,209,127,128,35,74,241,215,
-109,208,169,178,205,146,112,235,121,241,167,66,23,254,246,247,141,139,100,252,162,105,146,245,219,96,234,115,110,25,138,115,
-99,218,66,229,165,131,202,36,238,235,120,18,41,3,141,113,80,33,95,32,222,154,188,196,88,247,147,22,86,44,97,235,
-75,124,47,37,148,245,183,137,132,235,230,243,30,80,139,152,172,42,133,8,103,174,72,245,62,48,171,50,222,124,92,61,
-57,228,189,103,76,215,154,225,104,205,50,186,95,10,197,187,105,219,116,156,78,219,230,207,242,39,68,8,143,254,224,61,
-176,1,232,168,170,190,199,144,212,87,3,106,163,157,8,58,100,149,89,159,220,186,177,114,164,182,124,114,220,28,151,132,
-170,241,232,81,81,1,216,239,101,131,202,47,179,185,178,218,228,7,47,175,230,147,191,190,30,227,134,168,223,181,137,197,
-8,152,117,201,42,67,90,237,189,129,226,167,176,38,236,97,62,160,94,83,58,198,35,241,56,254,108,28,245,14,196,84,
-163,243,248,72,7,42,248,103,169,47,253,81,106,91,134,128,189,213,124,65,232,54,100,176,236,130,225,22,22,193,122,156,
-99,195,77,225,66,211,85,76,38,246,216,219,141,29,151,143,210,27,112,153,240,253,132,197,15,58,198,129,41,22,34,223,
-53,150,61,101,237,186,203,113,200,231,195,72,17,241,174,90,58,177,18,144,62,64,242,228,219,144,2,70,249,240,116,248,
-71,13,92,48,165,112,129,71,185,56,111,222,31,19,41,26,94,217,187,156,80,159,98,15,107,145,59,141,69,162,137,161,
-208,78,130,148,66,41,116,75,41,205,227,177,208,29,113,116,5,42,191,168,175,172,161,104,156,149,108,172,209,131,139,51,
-22,44,85,9,254,86,209,12,65,185,192,228,49,250,87,158,230,251,241,235,191,49,153,0,75,22,235,176,218,173,244,47,
-36,175,49,0,219,96,220,154,130,226,26,171,71,172,179,98,183,164,155,19,140,110,110,41,40,114,194,199,0,28,97,103,
-123,136,133,82,208,255,75,113,181,254,186,68,55,37,132,212,41,12,41,118,227,73,39,177,123,132,151,74,35,84,74,211,
-164,9,143,147,227,31,73,95,204,239,30,109,215,217,169,124,101,89,131,222,172,111,226,255,166,61,78,71,168,101,99,193,
-255,13,48,105,141,70,146,211,116,106,86,7,177,242,45,216,237,132,247,172,98,174,165,164,181,206,72,199,238,235,77,131,
-145,224,5,84,82,5,120,227,198,141,247,140,11,73,77,152,91,174,200,219,159,128,41,137,63,36,240,169,164,175,222,196,
-201,187,152,191,111,121,156,123,67,93,88,10,230,63,200,36,108,234,93,241,197,69,165,8,11,146,190,170,157,57,94,35,
-67,251,0,215,231,227,215,124,102,79,115,115,186,247,72,115,24,109,236,223,103,75,94,33,233,14,192,123,30,89,94,243,
-180,217,180,6,142,208,24,57,249,174,198,3,124,127,61,138,147,77,186,139,58,36,55,85,22,157,78,200,160,176,63,91,
-52,9,174,185,182,173,47,153,238,31,199,115,33,110,42,203,71,38,230,67,76,86,217,171,237,90,120,246,81,112,93,237,
-103,30,29,104,147,213,28,221,24,254,54,207,147,77,191,33,185,78,163,85,14,254,181,24,112,64,160,103,185,227,209,56,
-60,53,239,92,180,196,58,203,190,28,133,207,184,57,237,14,44,220,60,62,206,239,48,7,165,221,195,231,237,60,141,37,
-158,220,206,65,200,29,99,246,80,235,26,216,41,19,50,90,1,9,210,4,246,73,180,174,5,118,92,196,105,180,236,80,
-27,212,7,11,42,142,114,206,190,28,89,158,152,21,228,33,212,171,230,152,125,47,57,153,226,86,141,18,153,108,101,123,
-142,144,143,174,75,181,56,134,142,73,43,248,77,249,146,205,63,157,215,236,79,67,130,114,198,232,247,10,191,172,29,144,
-156,170,127,92,10,109,69,79,84,183,164,6,16,174,21,175,68,172,179,248,207,132,222,148,75,193,56,22,238,30,153,86,
-152,166,243,33,10,152,144,204,147,236,113,149,187,136,88,77,231,86,22,54,163,100,179,86,32,97,11,117,7,24,120,90,
-220,42,68,116,65,210,252,138,10,84,173,105,59,68,87,202,161,149,92,207,68,116,146,111,191,123,162,200,194,66,207,101,
-52,112,153,129,80,14,123,213,74,72,106,203,175,77,119,242,249,78,125,218,240,87,63,118,212,84,207,98,112,237,77,252,
-237,156,186,56,47,82,173,107,48,20,6,90,9,50,46,136,109,69,21,119,165,120,151,179,205,242,213,171,252,119,222,208,
-8,250,171,118,71,124,210,220,240,217,110,116,17,212,104,136,194,183,73,38,77,210,76,10,97,2,116,122,185,160,83,88,
-3,69,155,250,215,176,81,255,82,134,151,135,33,116,182,127,252,156,45,51,8,235,226,203,92,149,195,30,108,222,32,36,
-197,202,60,195,76,246,202,196,111,216,163,153,206,97,227,33,164,245,131,231,61,76,42,160,249,28,20,102,143,126,151,47,
-128,144,216,49,10,150,30,22,91,90,37,173,255,172,170,111,184,64,45,174,186,107,59,160,251,73,14,45,45,144,140,175,
-155,179,199,38,83,17,174,18,147,30,206,102,72,148,162,222,75,227,43,74,191,12,199,235,135,151,192,94,79,61,188,231,
-21,227,127,251,156,251,173,160,220,247,191,250,127,140,109,61,116,116,233,19,180,15,152,223,190,212,179,167,175,170,144,242,
-206,155,158,195,22,13,193,162,231,76,30,38,140,43,35,138,225,54,189,142,219,135,223,6,100,178,31,69,200,78,105,18,
-57,46,15,17,133,43,126,118,75,184,7,217,64,143,170,30,129,38,243,144,185,4,144,139,28,155,141,68,140,16,50,112,
-18,154,144,47,84,47,31,173,60,71,91,121,48,244,42,181,53,64,38,163,162,209,53,99,67,130,120,229,237,51,115,72,
-134,154,127,205,253,159,193,170,143,47,2,234,114,97,212,22,255,141,178,54,226,213,44,187,61,126,23,241,116,183,57,97,
-153,54,234,118,196,214,119,65,207,120,58,138,114,32,215,187,150,215,54,96,105,154,29,28,225,215,13,224,145,47,99,24,
-40,230,214,88,40,115,86,150,120,117,59,24,54,54,110,85,107,95,44,111,75,97,4,129,195,196,174,45,220,206,155,43,
-250,253,61,44,193,109,195,248,126,164,254,73,121,188,178,122,44,26,6,112,205,21,69,39,157,69,136,60,52,18,229,195,
-22,84,192,80,218,117,79,213,1,238,85,172,141,218,15,48,105,197,173,64,249,204,229,104,195,205,145,144,117,201,223,113,
-165,19,122,148,173,21,141,85,252,30,80,247,43,183,80,202,51,111,165,160,27,232,0,123,20,72,207,24,43,90,26,134,
-152,118,44,174,49,24,18,83,139,110,206,1,255,244,67,140,0,10,170,128,186,222,61,91,2,0,35,114,13,118,74,88,
-26,118,134,244,35,107,125,6,162,8,247,206,31,187,51,117,146,250,120,98,243,93,60,132,246,162,121,191,213,11,79,117,
-181,117,124,197,1,168,33,124,173,213,249,135,94,50,187,205,254,10,58,21,61,108,127,151,146,160,48,215,47,186,75,235,
-137,126,165,146,225,123,68,5,121,251,223,190,109,139,130,210,29,91,222,82,212,101,148,63,230,201,52,131,217,148,192,39,
-109,133,150,157,231,115,95,206,233,238,119,99,112,160,172,66,56,142,92,18,162,80,217,170,214,85,218,223,204,170,99,223,
-137,11,69,137,60,23,102,41,147,14,227,89,132,85,85,245,57,73,174,177,248,227,72,234,252,47,241,185,222,198,80,47,
-249,84,4,177,216,230,111,85,197,194,159,218,39,0,165,7,9,232,205,49,4,56,64,169,67,52,165,209,238,214,72,51,
-60,35,18,236,35,178,81,220,125,32,185,127,190,120,47,241,72,59,236,59,187,218,136,49,116,50,24,16,47,147,70,204,
-54,177,198,39,80,171,123,224,1,48,150,106,224,4,99,246,109,250,237,70,211,165,167,187,156,123,52,111,49,29,185,74,
-187,139,77,143,11,208,24,84,45,159,161,178,28,60,86,243,74,70,138,252,153,94,44,239,47,197,190,188,136,193,11,75,
-167,53,6,185,244,0,60,108,30,223,223,238,98,172,144,244,77,50,31,129,105,194,123,47,243,31,54,122,57,159,13,161,
-88,247,142,187,53,20,137,171,216,76,59,186,52,34,207,115,31,29,118,234,194,203,177,90,40,64,205,15,191,75,197,187,
-62,77,246,99,47,134,66,29,12,241,215,189,88,130,238,67,254,229,188,185,74,88,154,218,217,49,127,101,239,38,125,155,
-123,128,206,173,202,80,154,1,218,241,122,63,205,53,51,32,186,240,26,120,79,173,162,55,138,162,101,169,157,113,24,125,
-200,99,80,137,199,187,95,57,187,10,96,18,246,162,125,239,123,138,99,210,200,152,244,93,149,255,231,70,117,11,220,78,
-6,84,83,213,48,29,75,153,152,154,215,183,177,163,43,145,115,215,30,156,6,110,128,240,43,83,158,40,94,36,192,73,
-135,185,238,116,161,94,112,99,12,75,101,146,183,29,108,255,246,209,245,66,72,26,89,39,110,208,151,58,112,22,200,139,
-169,167,118,29,184,70,157,224,194,144,196,185,248,203,116,216,98,207,211,119,87,167,243,202,124,123,96,190,208,110,121,210,
-27,206,34,194,71,236,120,85,124,95,0,191,89,32,205,74,106,133,246,67,153,140,85,179,143,185,119,12,188,42,124,82,
-0,52,222,82,109,70,128,79,43,31,4,200,64,182,192,106,233,5,168,127,157,226,36,43,110,212,139,53,196,144,5,68,
-157,44,8,199,230,19,6,141,173,168,174,5,184,31,2,14,52,238,67,145,115,77,240,207,69,122,220,204,236,113,161,252,
-98,201,41,109,232,92,189,70,161,23,188,194,164,188,155,215,236,67,232,188,241,195,132,213,64,144,253,88,184,126,61,157,
-111,3,233,80,34,101,121,40,191,25,182,222,97,52,244,117,42,238,94,12,140,48,164,239,217,228,48,145,85,252,35,1,
-240,148,133,86,85,3,252,164,22,202,112,120,54,151,88,4,219,140,211,62,76,54,43,227,61,42,72,166,227,196,251,242,
-158,7,53,163,39,23,193,170,171,95,27,169,189,49,248,102,48,103,165,186,172,185,59,83,44,88,10,37,181,55,1,185,
-95,246,20,7,38,20,12,78,34,222,206,45,146,103,238,77,161,25,19,175,154,147,116,194,175,193,122,100,81,195,249,29,
-83,103,138,35,94,83,190,188,124,38,87,84,223,55,160,33,147,18,152,132,208,151,150,233,172,137,99,60,167,24,84,229,
-237,172,146,213,154,203,224,5,191,241,161,175,177,41,13,97,236,34,122,220,48,115,123,162,66,62,87,250,101,14,183,212,
-116,175,38,96,191,83,220,178,125,224,218,61,41,117,74,61,78,226,190,23,131,201,145,5,248,54,170,75,201,160,128,151,
-151,96,179,162,186,159,53,161,111,109,51,186,225,113,226,224,95,124,4,94,205,228,18,119,10,169,5,62,138,154,144,57,
-138,200,156,19,78,207,184,250,167,170,134,191,217,226,23,97,234,142,14,120,138,177,121,20,211,97,157,55,1,148,246,206,
-172,40,110,217,137,230,124,251,49,194,49,236,45,53,53,94,38,22,255,122,221,75,221,179,34,68,108,46,26,218,44,71,
-14,189,225,65,206,14,60,227,90,174,106,252,135,137,121,223,146,255,50,236,100,229,229,90,74,102,182,146,93,48,211,174,
-195,55,113,63,107,103,177,10,219,79,90,198,138,55,60,210,49,34,149,165,127,196,53,187,150,161,104,64,30,50,147,142,
-186,176,61,169,27,244,196,70,235,63,148,242,131,239,194,170,8,138,195,140,161,127,158,2,219,198,236,39,38,126,132,122,
-222,69,194,253,102,215,192,85,27,18,63,40,79,163,158,13,98,178,51,96,104,158,85,173,128,172,242,182,221,84,111,227,
-187,47,178,160,233,185,130,250,221,200,28,162,2,102,134,9,115,150,70,200,136,245,7,28,254,251,12,75,234,80,102,198,
-146,20,130,109,247,141,148,165,123,254,177,3,13,185,43,144,124,144,112,93,143,51,58,47,193,27,41,166,40,225,128,22,
-92,203,103,47,47,48,30,171,171,216,173,248,6,217,160,242,1,64,61,164,178,240,202,161,210,155,78,127,84,182,152,8,
-140,138,144,120,103,83,207,29,52,68,95,179,110,233,54,164,242,78,182,225,129,137,215,97,154,79,184,128,168,152,130,130,
-36,177,132,0,51,15,157,189,199,135,242,65,217,31,56,226,170,127,68,235,163,11,134,31,79,100,180,133,121,254,42,179,
-227,38,180,168,172,43,247,112,223,121,226,107,187,12,99,199,155,123,123,137,54,205,164,193,0,232,81,104,100,94,22,71,
-177,152,211,85,240,87,113,166,111,89,85,208,80,100,200,237,154,137,251,230,158,134,150,31,29,55,100,116,202,57,117,110,
-77,123,9,69,201,148,221,237,72,62,198,53,238,188,28,245,83,19,84,27,228,175,164,17,14,79,134,159,165,204,177,75,
-76,118,253,83,152,4,249,7,109,248,167,145,161,74,105,3,42,52,48,97,1,208,218,141,242,30,177,217,22,127,104,183,
-146,158,251,25,94,149,244,81,192,226,91,194,171,204,193,247,109,220,113,214,32,130,22,113,149,141,254,36,69,240,82,12,
-175,169,155,48,85,189,138,78,93,128,90,140,78,81,35,89,81,238,104,26,181,188,224,15,37,223,242,177,80,184,251,135,
-117,73,170,62,194,59,118,253,133,42,126,31,119,39,239,103,253,126,55,205,243,216,94,84,161,104,234,22,88,86,214,211,
-255,33,46,106,53,128,163,77,60,242,93,94,171,200,31,63,141,124,67,170,84,239,72,117,30,154,213,111,18,232,230,110,
-32,39,225,233,209,235,42,110,124,195,24,128,194,148,115,139,128,240,198,99,126,85,238,240,62,124,241,68,136,30,186,144,
-236,72,117,249,45,137,73,62,78,55,6,136,76,209,57,136,17,213,172,99,82,128,244,47,73,136,123,211,105,42,165,18,
-55,244,154,234,201,160,83,148,25,182,192,28,101,156,127,111,71,248,245,69,251,26,124,74,164,24,24,1,110,43,243,144,
-219,202,195,150,18,92,108,168,220,200,12,81,213,18,148,113,238,210,106,116,55,151,1,148,127,240,23,192,84,214,9,237,
-246,112,69,202,152,189,3,170,80,131,129,47,4,156,12,10,24,199,48,228,190,218,242,231,182,154,150,2,146,20,113,216,
-44,195,113,135,46,166,230,103,133,22,187,99,173,127,237,25,90,242,168,72,122,47,0,84,0,231,27,112,104,161,22,63,
-219,16,175,236,133,208,70,2,185,95,132,237,178,200,82,191,125,165,17,155,208,114,208,101,131,124,79,140,121,186,114,226,
-216,178,203,128,219,164,8,238,86,19,106,76,69,221,241,172,42,241,79,71,149,254,218,185,57,109,78,65,230,185,64,71,
-81,106,103,91,4,126,102,179,53,133,156,16,137,32,37,38,195,7,81,192,151,187,82,227,89,212,179,3,180,130,193,167,
-218,74,242,80,65,26,188,135,52,66,95,134,132,58,76,190,74,40,104,117,23,39,27,175,122,74,180,1,20,42,104,228,
-157,6,67,131,245,102,168,239,147,1,54,105,103,207,57,89,101,72,68,224,144,177,35,207,133,197,235,165,149,56,210,30,
-252,174,222,15,76,235,113,160,204,164,171,49,254,217,162,140,96,128,33,185,180,109,138,174,87,184,45,243,128,55,125,7,
-242,85,71,36,171,217,171,170,138,165,22,241,46,197,63,115,129,192,116,200,14,127,143,23,61,206,240,218,184,74,220,255,
-135,108,184,70,94,169,195,74,20,103,170,2,254,61,241,169,167,127,87,195,191,65,127,23,13,166,149,212,88,101,123,132,
-0,129,129,189,57,237,97,234,229,252,195,9,164,204,222,46,232,112,147,128,196,113,132,80,226,168,160,39,53,176,254,237,
-199,228,31,88,165,179,217,238,109,105,251,55,60,222,21,248,234,152,91,182,173,224,215,211,239,184,180,196,196,198,248,186,
-47,31,119,90,35,14,63,243,27,215,169,187,237,105,234,102,172,30,135,142,5,58,51,17,77,240,173,216,55,25,56,39,
-234,36,140,104,221,186,46,69,30,135,75,199,245,235,123,181,69,247,88,45,65,94,117,242,7,221,245,148,147,107,142,255,
-64,73,54,2,204,214,149,84,122,74,245,158,96,18,19,50,56,182,84,202,164,8,154,85,231,244,51,137,166,177,204,179,
-18,169,74,231,33,134,200,200,227,137,211,200,211,1,131,200,62,119,40,164,30,136,12,238,219,67,168,110,99,248,169,255,
-68,66,163,63,205,194,240,156,137,196,241,223,152,55,25,246,182,66,248,33,131,222,232,227,204,102,216,193,58,73,102,220,
-29,68,71,218,114,86,179,75,122,141,228,47,122,213,41,220,211,73,106,117,91,100,189,151,172,249,171,140,19,205,254,8,
-182,39,192,198,18,93,187,48,171,123,198,227,218,32,126,195,187,61,155,211,247,131,26,237,32,182,47,172,123,130,224,94,
-96,50,181,136,11,233,246,195,197,120,201,241,231,90,84,55,199,111,237,153,199,113,151,208,123,137,70,8,111,97,214,152,
-71,22,21,196,71,26,73,60,208,137,246,117,57,116,250,175,155,133,52,63,144,135,130,21,57,214,202,150,106,63,195,18,
-207,249,23,221,55,244,92,151,216,147,200,43,168,158,224,202,219,251,227,106,20,254,181,131,252,166,253,40,249,80,11,229,
-193,242,44,158,6,255,250,179,23,106,135,172,2,156,158,81,239,60,15,138,25,57,209,221,174,213,137,41,79,11,40,58,
-6,101,10,91,75,88,160,197,184,159,156,37,106,19,249,58,117,4,95,132,82,214,65,116,214,138,189,142,96,17,89,65,
-110,105,138,136,99,38,210,252,212,118,7,237,240,120,159,196,22,148,232,178,104,177,210,44,63,210,55,181,31,27,23,88,
-96,210,220,243,92,107,17,46,165,8,199,104,221,18,141,103,137,228,166,189,183,190,173,60,121,193,144,48,108,33,56,248,
-169,74,133,196,150,86,139,242,190,182,70,209,17,72,232,153,254,165,186,52,249,11,180,193,36,132,48,64,238,234,255,50,
-90,251,100,46,237,146,194,74,197,86,194,84,211,199,95,106,225,78,187,150,236,80,81,28,233,76,10,121,54,127,32,150,
-69,249,231,35,106,254,252,139,4,194,245,40,82,235,24,41,145,127,69,92,18,72,2,52,183,236,228,151,59,213,150,40,
-218,60,51,113,43,51,57,62,82,41,66,175,6,104,47,102,88,36,155,30,94,125,212,211,56,145,211,165,10,111,51,1,
-234,160,186,190,16,155,235,61,75,101,34,233,214,194,194,171,243,67,16,132,89,203,136,76,153,206,34,84,80,130,9,52,
-2,231,134,158,65,37,202,44,217,2,12,108,244,210,129,137,210,105,240,173,37,166,166,92,72,90,152,148,233,86,208,145,
-174,76,48,156,154,195,54,159,154,110,253,208,41,154,106,157,40,231,30,224,144,99,128,194,56,2,234,182,81,69,121,249,
-238,1,192,143,103,53,38,34,217,162,186,204,217,96,132,151,96,177,150,64,93,155,37,235,66,167,211,126,205,86,178,251,
-212,217,156,172,17,41,204,144,200,74,103,197,97,232,67,133,88,93,203,12,182,23,198,207,77,137,108,56,53,116,50,129,
-221,126,184,33,197,17,129,116,83,129,97,235,80,125,123,149,61,177,158,33,29,127,249,89,93,132,237,193,252,18,104,132,
-28,164,99,236,123,53,39,115,155,123,10,183,243,0,36,0,247,222,207,184,155,248,215,151,20,90,171,186,110,123,65,201,
-97,253,128,126,85,86,56,55,62,119,187,173,196,172,252,186,44,2,236,155,61,63,165,112,169,20,244,251,186,251,37,21,
-17,60,77,167,123,71,103,26,214,131,210,204,42,183,49,88,248,190,98,181,15,88,42,218,238,230,41,219,255,253,191,17,
-86,193,165,67,187,255,55,94,154,55,200,35,184,43,194,119,38,1,202,57,180,41,224,168,154,233,13,37,71,96,181,46,
-16,237,210,96,7,229,35,237,237,139,14,249,106,183,79,19,166,5,179,38,83,189,152,42,104,38,114,116,243,126,129,151,
-30,85,201,230,1,73,251,178,47,202,246,21,33,140,214,71,248,149,25,107,15,77,29,94,224,223,224,5,35,82,77,5,
-61,228,121,80,230,64,175,118,211,11,75,186,19,216,26,214,213,62,102,115,76,238,219,172,146,188,47,84,30,182,83,10,
-165,243,93,22,224,25,234,99,199,14,137,9,192,224,225,50,228,202,13,234,253,138,30,225,200,64,116,118,152,158,225,126,
-137,197,169,241,237,16,17,90,16,100,19,20,253,80,170,9,130,91,81,29,32,8,86,246,62,112,133,236,139,68,254,208,
-189,3,224,162,144,38,175,195,141,166,138,141,157,46,147,54,76,58,54,117,174,245,217,37,231,81,141,73,121,69,115,36,
-195,44,84,21,102,149,34,149,36,235,223,70,55,49,136,151,163,3,25,81,240,69,144,164,133,215,70,184,47,64,82,255,
-229,165,136,187,131,248,50,227,148,178,82,18,13,167,57,230,231,202,71,23,158,63,78,247,11,99,110,145,149,178,165,38,
-153,228,0,71,230,92,12,43,93,87,104,163,156,55,59,10,20,222,192,119,94,153,236,30,68,21,6,135,95,206,145,242,
-249,19,231,148,18,22,251,113,82,159,187,24,95,114,186,210,234,178,226,192,35,24,12,134,31,134,252,207,63,161,239,252,
-9,182,181,250,176,50,214,95,93,181,177,108,104,36,209,19,168,42,54,63,147,142,86,218,65,100,100,255,191,213,38,16,
-144,89,236,232,85,6,183,103,190,67,98,65,93,75,145,39,14,16,26,161,241,14,102,131,242,109,48,118,128,218,68,82,
-156,218,209,225,169,108,215,103,210,221,115,244,5,126,80,32,228,145,221,77,78,183,18,222,192,173,240,64,98,119,16,13,
-149,3,207,76,173,44,77,195,25,208,189,68,179,9,224,0,224,112,137,49,215,77,125,91,238,228,88,179,14,55,14,27,
-213,142,168,99,0,172,229,109,161,111,137,99,71,132,122,94,75,7,26,180,5,98,23,138,227,79,156,150,73,35,121,130,
-246,200,62,111,232,241,232,51,209,213,116,14,39,188,164,230,47,152,97,144,3,138,214,162,76,95,82,83,140,50,187,15,
-166,48,250,202,30,65,24,143,212,136,237,242,248,33,204,145,45,190,165,245,35,253,15,27,93,131,240,181,71,12,132,172,
-74,131,48,173,197,180,124,17,60,88,137,91,34,119,7,160,101,102,78,28,222,132,15,117,242,142,61,54,187,81,63,147,
-209,220,151,35,82,114,237,224,164,66,159,251,118,1,26,132,191,238,52,27,74,132,236,70,54,252,146,14,34,37,58,8,
-100,111,66,116,209,20,119,143,2,166,178,54,61,1,188,144,208,4,136,39,63,116,10,218,224,220,38,53,92,243,179,245,
-125,211,163,149,255,53,221,252,174,135,189,60,187,234,23,65,74,96,220,246,212,9,82,139,43,124,181,109,80,247,234,1,
-124,58,89,150,137,90,67,125,80,85,66,21,50,208,171,146,83,86,58,127,226,60,250,17,178,194,33,98,168,216,186,224,
-110,17,152,188,126,163,8,45,170,115,30,128,13,178,192,167,72,190,118,52,123,189,82,205,89,31,223,205,112,115,223,49,
-111,23,247,17,39,22,167,109,137,160,46,0,204,239,48,47,220,64,217,159,251,52,163,125,67,228,199,66,60,18,49,42,
-255,255,255,247,238,172,125,75,33,246,158,190,114,59,207,78,72,151,155,215,198,198,142,152,130,144,68,149,3,195,177,198,
-69,189,199,18,46,49,37,197,235,184,29,248,96,87,98,193,209,12,113,199,244,112,192,235,31,175,89,240,219,97,252,232,
-176,133,98,79,232,159,55,82,227,178,49,70,235,211,226,48,151,218,101,80,120,45,20,166,9,63,17,90,239,145,7,73,
-16,137,104,205,159,87,196,154,149,44,194,247,249,78,70,164,164,91,57,102,50,169,164,31,252,163,38,223,158,89,86,158,
-42,233,124,250,212,196,65,68,7,137,251,124,39,72,75,243,178,242,217,43,247,239,42,51,172,255,239,91,213,210,148,210,
-90,50,227,248,144,248,20,11,130,231,253,88,116,225,67,36,155,141,110,108,61,145,0,121,29,185,200,139,180,98,71,158,
-77,209,63,75,65,1,228,85,170,206,115,182,50,47,33,168,83,4,23,107,164,118,157,7,130,105,33,175,153,120,143,145,
-220,47,121,89,243,28,24,120,231,193,92,141,116,139,192,130,9,251,77,22,98,249,190,150,105,36,222,181,139,202,2,169,
-188,23,161,35,94,225,26,242,121,135,5,3,192,143,180,140,238,150,194,109,208,29,153,221,39,197,30,145,243,212,48,177,
-147,216,75,188,54,10,195,43,60,141,120,121,166,242,19,204,239,116,189,114,63,131,220,58,246,40,158,181,64,195,36,88,
-162,202,158,103,62,204,116,41,55,100,130,174,28,233,189,60,200,29,91,247,34,229,172,127,222,89,153,132,157,47,154,255,
-150,248,17,158,15,215,29,37,104,110,223,201,199,168,243,222,57,119,177,165,150,182,72,171,215,44,205,44,187,82,35,88,
-145,136,225,53,208,234,62,44,15,86,139,4,197,246,202,188,167,209,114,102,110,123,89,251,30,251,201,150,229,128,166,30,
-191,169,108,159,50,179,128,175,89,226,95,150,70,17,181,248,35,8,165,50,132,228,163,109,227,127,150,81,98,29,67,207,
-141,28,219,222,200,203,116,52,12,26,252,222,75,123,196,68,87,221,78,74,34,88,16,161,194,87,101,225,25,164,162,43,
-167,220,222,91,151,239,15,106,218,230,240,169,80,171,131,18,76,203,249,127,33,135,110,203,105,48,168,91,133,139,42,134,
-255,183,51,110,164,180,47,93,186,125,25,49,108,201,4,160,218,116,148,41,113,232,106,34,6,67,198,146,229,141,71,144,
-145,61,13,1,247,242,120,60,59,59,214,70,120,102,186,189,26,74,65,21,254,145,32,162,237,120,43,83,226,16,70,163,
-170,163,73,195,175,119,129,119,153,250,57,129,208,113,103,95,250,192,211,87,184,250,19,69,255,38,152,88,173,194,115,74,
-71,34,85,158,4,237,142,190,40,113,237,60,90,102,181,55,69,240,71,41,82,74,26,150,46,108,193,150,211,100,206,130,
-182,122,150,45,127,187,155,192,89,105,27,181,216,16,203,103,252,42,102,6,21,23,169,69,40,209,234,186,100,139,204,4,
-231,23,67,234,202,66,0,29,237,194,72,242,94,37,198,254,138,193,104,129,147,58,51,181,148,40,85,58,137,165,167,222,
-107,32,176,147,196,132,191,114,131,229,142,220,71,80,198,197,214,53,136,207,231,154,30,49,123,252,93,75,60,189,86,70,
-94,89,166,8,59,24,33,48,31,73,77,88,151,229,244,154,21,0,154,154,172,80,25,234,13,81,68,110,11,184,84,191,
-74,237,198,91,39,47,138,214,183,168,34,211,27,132,36,140,49,35,246,166,196,8,238,9,94,62,247,20,241,101,168,225,
-64,136,5,229,14,147,243,82,149,27,125,23,61,194,142,223,11,150,156,208,119,151,108,188,115,216,81,81,71,34,158,50,
-41,197,17,12,167,21,255,52,175,150,61,67,161,157,6,0,56,180,131,53,67,248,165,174,179,75,150,110,125,85,237,161,
-28,163,222,193,134,37,194,34,31,72,22,33,34,237,157,14,210,9,60,60,226,250,132,142,104,46,34,127,148,181,77,86,
-210,152,103,44,185,237,219,238,25,197,71,182,58,73,180,155,191,11,122,187,222,131,171,232,57,80,219,217,106,58,51,117,
-127,244,39,229,98,101,103,115,80,87,254,35,188,75,193,73,209,136,214,83,99,231,60,112,117,34,146,177,10,55,79,172,
-139,166,54,240,38,215,15,29,198,69,120,93,142,101,191,34,171,162,230,157,132,222,6,125,172,130,251,83,111,226,130,82,
-41,109,115,122,209,202,151,61,146,28,204,251,43,175,46,0,139,76,100,15,233,1,87,44,2,74,120,248,23,217,112,91,
-108,136,94,37,175,41,76,207,147,112,61,216,41,117,93,28,117,34,143,7,245,84,61,248,237,22,65,160,220,141,21,53,
-115,164,93,160,235,124,249,186,237,195,82,207,129,248,251,211,200,213,152,195,66,218,222,39,202,19,154,187,230,31,99,172,
-18,218,154,145,245,161,73,230,37,127,80,200,209,237,36,174,137,207,30,215,213,124,190,122,24,72,131,242,73,10,101,251,
-192,72,58,94,125,11,234,81,150,193,238,119,46,241,26,232,241,250,114,226,72,105,192,7,230,235,166,5,56,165,119,214,
-19,116,117,160,60,239,231,198,238,19,7,12,208,186,134,0,96,174,21,199,74,39,66,43,187,122,104,38,74,105,116,192,
-255,255,146,2,98,60,97,187,204,2,194,2,251,136,5,92,214,154,52,154,74,99,2,89,237,212,18,182,178,57,145,112,
-103,203,62,97,116,132,230,80,5,10,147,171,55,105,110,28,68,142,238,191,225,73,77,205,46,248,228,59,245,135,18,22,
-252,215,196,14,121,158,99,25,216,44,169,165,143,127,18,100,31,230,195,20,119,56,1,95,115,218,185,89,49,87,5,99,
-61,24,19,55,248,193,144,237,219,60,65,142,199,119,228,236,40,244,107,244,165,174,81,49,68,24,223,218,233,77,132,253,
-122,172,185,153,138,81,165,50,110,220,213,152,56,219,39,167,58,205,65,50,238,72,150,19,146,3,128,38,22,130,181,207,
-89,167,136,51,65,155,216,202,13,181,34,239,121,140,119,42,115,115,116,182,83,225,202,234,216,248,31,196,246,89,237,0,
-252,66,88,70,103,248,248,8,211,34,75,23,4,23,97,245,81,20,25,95,50,54,90,123,123,105,9,45,243,252,185,119,
-108,125,219,39,66,175,59,102,209,228,13,68,43,54,184,3,238,246,186,128,79,199,101,175,245,198,147,145,107,106,214,48,
-2,216,8,235,63,221,227,10,76,61,179,245,38,85,208,87,13,234,6,66,161,67,84,92,199,185,154,112,168,13,140,11,
-94,228,183,136,121,26,105,242,193,61,182,244,25,25,128,47,157,2,72,80,227,94,63,135,76,35,12,186,45,183,80,188,
-61,48,133,62,252,105,133,51,117,55,43,0,49,62,28,43,236,68,221,39,78,202,64,56,250,155,254,234,1,241,6,104,
-23,231,181,240,158,27,237,149,165,15,71,186,173,241,153,210,35,206,125,5,172,227,167,239,9,198,100,255,28,56,146,88,
-65,110,119,124,135,92,56,103,134,255,47,156,253,141,27,92,133,16,156,139,88,215,196,68,170,225,88,215,175,109,170,242,
-234,120,50,146,79,242,149,120,210,92,114,221,137,6,37,112,68,240,101,101,11,163,75,235,176,128,158,216,154,121,68,254,
-197,109,128,78,155,215,203,238,204,51,201,54,169,183,185,209,194,132,216,29,12,175,34,61,31,225,195,188,125,166,32,4,
-105,186,104,33,45,79,59,171,62,187,88,239,46,1,69,106,103,221,236,163,30,69,144,190,237,248,30,233,19,30,124,94,
-10,169,113,211,211,180,91,132,168,75,88,116,185,3,86,105,59,255,253,199,74,249,125,160,157,76,205,118,158,44,227,185,
-13,252,243,240,141,203,170,23,39,63,241,201,109,243,138,14,189,33,197,197,39,248,218,1,245,231,85,110,27,13,15,233,
-132,44,159,114,215,125,90,26,123,175,113,6,25,26,166,182,139,62,94,187,105,128,92,0,94,134,147,222,8,172,81,236,
-165,235,204,64,170,151,155,246,21,148,140,51,129,105,244,99,147,190,217,241,47,119,82,140,169,66,237,51,53,205,127,23,
-32,2,218,73,99,157,253,29,152,103,252,101,156,178,155,217,84,4,44,65,143,72,150,89,208,211,93,191,32,127,254,167,
-71,254,248,237,24,51,240,244,90,250,177,59,182,104,20,220,156,82,240,222,24,89,224,117,219,201,185,242,52,222,77,70,
-147,60,111,10,65,74,8,53,250,91,182,196,112,113,43,220,0,214,54,203,65,25,69,167,218,244,153,1,76,94,47,28,
-105,195,191,84,4,253,4,45,71,3,94,181,162,64,205,185,252,194,65,208,2,104,119,229,189,127,57,75,94,136,110,200,
-238,251,220,44,246,151,104,62,125,249,207,183,163,161,190,10,96,102,122,104,169,198,213,162,58,129,196,136,138,97,162,38,
-100,219,208,107,178,112,93,128,191,56,108,77,82,52,176,166,129,107,203,215,114,171,164,173,137,170,195,191,200,164,87,158,
-7,30,52,227,206,76,246,89,7,245,49,202,124,98,175,29,139,251,234,245,227,23,58,83,93,6,158,136,233,81,141,178,
-236,107,150,38,106,112,131,12,89,17,184,125,249,175,198,164,40,40,128,201,248,83,30,130,38,15,59,155,2,178,236,115,
-194,88,189,215,191,17,146,231,8,106,38,98,44,93,168,55,51,62,129,1,125,1,224,63,67,249,248,180,173,112,140,239,
-38,157,170,210,20,137,196,36,196,116,50,204,14,101,158,112,152,193,73,30,225,172,8,120,145,183,51,15,59,5,223,73,
-231,116,80,169,185,17,195,205,43,6,162,73,74,159,104,167,114,132,39,199,183,201,110,27,150,215,14,177,188,75,155,226,
-188,244,91,244,76,63,138,189,44,107,104,18,74,64,166,235,11,23,223,124,63,41,185,168,154,112,230,238,31,9,146,95,
-172,15,23,163,90,97,192,54,110,35,172,5,188,177,104,153,246,115,179,137,178,154,11,109,156,135,14,214,189,179,156,47,
-142,162,233,140,238,158,116,93,75,166,222,150,248,88,178,51,64,240,226,113,172,231,135,38,65,189,175,38,250,177,66,236,
-34,128,25,94,55,190,204,189,39,96,221,213,182,196,125,210,106,21,245,252,171,156,185,41,102,191,33,68,216,3,142,250,
-186,65,5,250,59,32,246,153,170,55,253,67,192,35,151,247,45,16,108,225,47,128,183,173,1,144,189,85,4,112,227,97,
-83,164,231,45,79,191,104,47,127,213,43,15,107,190,165,246,169,187,174,178,247,141,233,192,30,92,74,24,34,207,131,171,
-62,181,239,56,159,205,101,240,129,98,198,250,147,150,87,243,13,181,106,246,96,148,173,78,147,87,44,37,32,58,219,254,
-143,166,41,190,194,45,33,172,137,163,161,72,140,34,54,27,161,135,171,218,218,216,163,10,18,248,62,44,194,103,124,1,
-96,236,114,221,173,50,234,200,165,117,134,100,236,206,118,95,80,107,43,248,9,14,99,20,232,222,126,45,130,154,141,49,
-114,139,145,232,3,87,94,134,90,59,15,185,199,68,52,88,246,34,57,0,237,41,67,42,22,134,24,230,161,7,70,76,
-93,229,108,36,24,145,200,120,238,109,62,24,191,12,176,89,145,171,204,76,96,157,40,125,255,156,40,68,78,120,201,233,
-71,215,247,36,181,151,165,75,58,60,143,226,78,179,48,69,154,111,42,122,116,140,224,38,214,190,129,140,60,45,200,234,
-3,158,206,249,195,205,186,232,199,73,128,133,58,97,93,215,251,254,244,204,38,44,166,101,252,250,111,197,30,60,151,209,
-60,8,80,168,11,54,80,217,245,182,173,174,20,101,253,252,211,238,75,85,146,24,24,179,233,164,31,222,149,77,213,8,
-78,147,236,250,155,207,239,83,89,113,11,78,246,36,17,17,88,117,178,101,2,16,45,78,191,28,236,230,108,213,142,38,
-41,181,136,50,161,192,56,153,55,98,120,83,94,239,75,178,191,49,232,89,190,213,140,219,148,97,254,113,248,243,75,86,
-233,177,168,247,164,154,83,33,159,172,184,94,168,133,117,31,58,106,138,96,118,52,245,37,78,233,98,110,7,126,149,82,
-218,57,38,186,135,14,41,35,132,187,178,224,122,190,195,224,175,180,22,194,7,68,172,58,206,94,227,8,52,183,244,71,
-177,200,242,35,27,248,148,144,155,88,168,63,75,172,254,169,167,52,169,150,255,151,102,249,46,204,115,67,220,72,154,24,
-105,114,164,78,36,249,252,121,180,208,204,219,210,57,198,77,198,171,43,161,145,72,113,201,162,109,114,199,79,74,223,47,
-22,145,176,10,249,55,183,250,117,5,50,235,244,243,16,39,96,242,47,26,111,136,11,231,155,56,84,154,150,93,61,58,
-61,79,230,49,241,229,220,74,254,153,140,93,53,138,113,186,50,210,88,87,223,168,246,221,156,73,90,187,28,8,74,65,
-29,113,113,92,160,136,190,29,154,84,64,21,9,167,201,46,120,22,184,205,202,184,138,91,193,29,14,64,233,195,164,65,
-238,27,201,46,125,35,95,115,211,24,142,173,240,242,44,100,193,145,134,95,81,152,151,36,56,93,28,114,143,26,79,153,
-130,134,109,163,66,242,156,102,182,45,144,179,143,187,152,194,62,128,180,97,218,200,88,139,162,47,215,78,42,194,107,172,
-170,33,22,119,34,170,68,83,24,44,234,55,60,113,126,61,117,188,216,244,63,18,18,176,190,194,55,130,97,156,164,85,
-207,237,46,224,222,84,115,141,87,164,113,114,231,34,108,166,46,120,87,31,111,27,98,147,184,136,200,78,22,80,168,120,
-212,214,183,184,97,66,17,125,202,218,107,214,36,102,47,71,60,253,204,59,136,97,175,250,114,215,228,122,106,219,161,147,
-69,112,10,209,244,185,76,106,22,148,97,36,180,191,69,11,173,160,145,224,70,64,39,8,221,51,7,12,45,101,181,229,
-176,58,96,89,145,178,34,114,168,52,36,178,234,139,9,192,79,190,28,60,180,16,228,151,147,149,131,230,209,63,63,110,
-171,200,106,158,130,108,24,237,36,85,23,251,204,72,150,88,116,229,35,33,204,87,152,195,83,142,69,206,66,3,129,50,
-83,14,99,210,125,15,176,32,209,244,88,205,20,190,93,201,213,227,97,216,85,134,179,89,214,246,72,21,53,130,150,180,
-101,74,13,109,181,190,79,227,214,103,31,220,35,228,224,160,36,230,10,199,69,200,105,227,121,54,183,34,119,120,89,67,
-125,14,217,56,169,36,151,251,82,212,138,71,175,118,206,237,14,36,68,30,98,178,77,134,170,55,94,110,8,39,237,109,
-162,8,27,33,231,21,250,255,253,70,17,168,183,14,113,114,235,11,25,182,178,77,160,136,45,97,184,205,220,16,254,110,
-18,178,113,5,10,64,223,112,170,178,87,49,211,58,166,195,1,11,55,252,94,54,3,250,201,174,70,204,45,208,215,129,
-63,234,76,219,237,48,250,24,231,38,99,79,181,206,202,72,28,91,202,169,74,17,61,15,20,250,25,234,76,15,17,11,
-247,230,170,247,228,166,160,79,236,50,236,167,46,175,175,203,218,170,67,3,10,251,245,231,36,42,114,49,87,156,239,164,
-178,34,47,214,122,105,179,13,220,157,197,178,111,100,194,115,96,135,155,239,138,169,15,40,215,45,210,90,63,177,2,38,
-82,226,172,103,128,22,74,152,6,29,2,95,133,118,155,85,158,55,237,2,2,48,48,141,49,29,14,93,193,177,83,227,
-237,28,88,145,62,16,255,252,103,193,103,30,10,189,43,237,44,20,160,68,89,214,65,235,145,23,162,81,238,19,79,18,
-12,79,89,249,89,211,177,84,152,204,40,41,154,223,2,234,95,227,77,23,234,206,212,167,136,143,147,236,192,122,5,246,
-99,176,28,252,126,83,138,81,117,103,129,195,135,58,40,192,2,15,195,28,20,104,133,196,195,190,49,47,196,85,166,176,
-21,114,120,28,50,100,121,136,228,120,126,114,113,53,222,62,87,117,237,205,146,65,178,65,12,17,206,150,0,93,88,168,
-198,58,189,196,105,227,104,125,236,197,201,250,122,156,170,208,11,54,250,137,64,219,139,49,187,229,179,23,222,235,248,62,
-197,185,100,136,39,214,96,180,94,192,212,233,104,204,75,172,182,94,234,59,220,28,242,14,206,26,38,21,230,84,29,92,
-209,110,250,184,95,164,74,34,114,222,199,192,248,167,73,90,135,240,167,9,216,33,130,177,29,42,122,225,214,30,70,6,
-155,106,230,91,98,34,59,161,237,245,175,19,121,86,223,223,231,148,89,148,19,149,106,197,147,234,141,35,134,10,23,2,
-249,90,233,248,46,162,91,25,184,19,0,143,239,103,74,4,134,190,71,10,143,1,159,104,21,255,145,32,246,96,125,108,
-87,3,72,120,91,228,117,1,187,243,49,69,115,200,111,37,166,14,7,0,223,131,108,220,112,26,224,171,157,88,138,135,
-24,195,78,22,218,244,172,3,189,22,76,254,83,230,62,164,119,114,165,158,85,98,115,41,248,131,226,41,127,106,101,236,
-138,218,53,123,88,97,105,58,122,30,56,218,44,159,255,211,168,225,141,232,150,163,191,206,254,20,150,238,224,155,152,206,
-9,76,153,158,47,214,189,245,109,134,70,191,15,7,92,8,95,164,212,58,33,155,244,159,161,96,53,119,83,40,129,119,
-202,119,215,28,67,200,99,45,3,238,146,149,45,181,41,146,68,34,187,208,50,138,168,30,182,43,220,218,35,79,83,181,
-63,32,7,105,196,117,243,155,75,127,31,171,240,228,241,184,9,4,31,20,165,48,254,169,115,149,141,223,65,49,210,137,
-71,84,183,180,217,40,222,0,7,201,236,248,205,228,194,174,24,194,248,78,175,89,57,113,187,169,18,213,13,79,99,11,
-119,202,3,225,222,61,66,250,132,3,39,219,165,129,115,202,54,128,255,255,253,52,37,165,236,130,138,113,96,5,239,173,
-89,25,232,175,193,178,223,123,135,93,227,141,181,117,142,58,53,229,92,91,73,108,252,79,99,157,237,219,171,93,44,1,
-103,188,197,59,237,131,68,95,66,206,23,72,224,159,99,64,121,133,28,160,185,172,18,29,53,177,84,152,46,58,46,5,
-111,139,67,51,158,242,128,113,122,240,163,182,165,254,26,222,84,27,186,81,185,58,171,13,133,150,200,26,80,145,111,25,
-42,215,193,12,172,195,40,130,167,75,90,165,29,226,9,80,138,230,16,127,212,100,235,192,26,236,229,121,118,154,141,151,
-44,90,176,37,191,63,108,132,204,109,73,43,53,144,50,115,124,142,47,87,243,72,181,8,5,255,12,153,60,230,152,151,
-98,116,167,232,170,22,118,173,61,2,67,65,203,248,182,158,8,205,177,87,254,242,0,155,182,209,38,24,234,123,11,170,
-175,203,130,156,149,81,20,3,110,48,247,210,133,237,221,5,151,175,187,24,93,87,216,15,36,0,110,62,242,243,231,91,
-203,215,70,103,40,229,94,134,138,201,122,10,61,33,1,121,26,229,200,26,147,174,90,54,181,117,0,99,91,100,202,220,
-94,197,207,165,163,104,21,74,239,136,99,231,138,133,16,210,9,146,123,157,104,52,81,57,13,100,206,87,116,247,12,227,
-90,4,179,211,68,131,232,231,211,166,228,25,30,176,84,35,87,123,195,221,98,39,37,147,205,142,206,148,112,164,10,40,
-132,7,28,220,226,139,226,208,83,98,128,34,114,29,64,160,71,40,85,236,134,152,34,175,130,85,8,120,63,227,182,252,
-146,6,148,87,24,163,123,130,24,200,75,133,189,188,23,173,144,43,207,13,218,211,133,57,134,28,74,246,52,167,180,113,
-158,8,31,229,11,5,191,192,114,231,123,156,19,121,208,89,223,111,182,180,165,171,133,18,143,255,128,210,36,99,213,151,
-73,229,180,223,43,104,91,79,244,21,151,248,130,141,118,74,142,0,152,212,145,168,100,250,152,117,49,233,117,125,13,200,
-66,145,216,27,105,130,60,189,196,173,71,173,4,26,122,67,85,200,126,192,156,40,222,243,15,95,199,38,96,95,127,61,
-136,151,3,222,229,144,153,48,77,43,114,112,152,150,204,75,206,142,197,240,218,33,195,161,41,93,228,247,102,214,97,15,
-120,51,242,34,45,133,21,34,54,100,58,150,143,70,125,210,40,10,214,138,7,125,86,115,87,235,245,179,134,39,74,79,
-86,78,179,103,72,172,23,84,213,75,192,85,10,145,23,141,3,34,36,97,164,82,84,233,9,52,23,231,5,10,213,54,
-94,91,39,194,101,70,39,4,174,102,65,118,10,148,27,112,208,179,88,246,144,182,6,69,87,42,4,234,238,113,117,184,
-202,181,98,95,8,113,154,125,59,9,11,53,132,116,200,184,188,210,86,43,96,67,166,162,12,38,95,4,138,96,60,126,
-114,223,110,137,244,201,163,44,255,208,159,52,193,213,231,67,232,33,191,2,114,133,2,83,139,203,209,122,129,35,71,229,
-74,52,16,178,62,240,184,179,160,107,224,218,159,7,18,247,255,253,68,219,138,122,68,124,34,5,93,126,100,146,119,217,
-57,103,124,54,78,64,249,81,241,89,113,148,247,254,67,208,254,223,232,30,113,162,36,207,68,43,37,126,215,68,88,211,
-128,41,255,180,117,183,132,89,39,58,107,149,77,148,154,131,120,116,11,186,69,228,222,130,78,183,92,51,16,179,211,255,
-166,242,133,213,232,4,187,207,188,21,31,241,203,108,9,231,155,18,30,105,7,164,212,36,221,247,44,149,243,105,224,143,
-185,66,133,118,5,179,188,160,37,96,137,117,208,207,176,83,13,121,195,78,85,118,224,198,90,79,175,152,2,78,219,94,
-11,178,144,189,7,190,245,120,176,91,215,7,51,65,155,239,134,185,145,158,222,19,131,62,189,246,35,87,76,73,69,60,
-107,41,130,97,114,75,101,141,218,187,117,243,133,185,234,84,30,145,45,126,10,105,232,120,166,164,124,90,205,9,43,238,
-21,218,239,160,104,109,238,198,52,56,135,187,218,102,133,89,33,13,35,163,146,109,217,205,9,47,153,235,208,201,83,124,
-45,255,176,242,177,141,22,164,94,191,78,70,51,186,60,253,250,205,89,119,177,177,23,90,228,62,250,183,5,10,68,6,
-130,134,118,119,68,131,169,147,18,217,96,87,120,77,25,221,137,100,152,86,187,138,34,198,44,100,32,142,198,171,149,30,
-255,64,86,152,59,10,117,10,121,46,75,187,65,62,42,75,135,209,16,117,76,254,231,40,47,222,48,245,141,78,106,77,
-37,234,67,2,105,250,177,118,218,134,163,88,239,20,44,199,186,156,219,50,213,230,185,146,238,242,52,229,144,187,24,33,
-39,193,54,237,37,128,191,108,253,155,175,63,14,153,87,103,223,3,178,37,16,230,203,118,242,63,171,246,24,220,251,218,
-219,213,32,179,0,62,19,81,57,154,218,218,113,103,6,218,85,93,57,112,64,80,40,99,119,171,251,27,126,243,139,68,
-83,205,132,143,245,165,12,176,36,29,192,241,8,186,52,105,185,79,1,226,18,210,161,160,223,244,243,143,241,140,56,78,
-104,207,87,137,146,204,24,253,199,138,123,234,7,98,7,111,4,186,250,20,148,233,107,200,17,122,144,159,164,7,43,193,
-39,95,4,243,120,55,140,196,213,252,246,58,167,204,206,254,156,5,250,108,8,7,159,96,107,69,189,251,184,205,80,205,
-74,96,171,219,94,138,153,64,13,28,140,223,80,200,148,85,176,154,134,14,107,92,168,187,55,15,196,213,15,228,103,185,
-113,233,84,98,249,202,207,173,95,192,214,227,6,37,101,155,121,49,176,131,161,96,108,69,67,79,71,51,70,218,43,221,
-192,177,81,140,47,112,145,132,131,198,255,123,145,71,7,229,226,207,32,40,243,165,26,178,34,16,49,67,2,146,140,138,
-168,207,166,125,77,36,51,7,36,63,136,206,171,166,44,112,143,11,180,115,46,171,157,133,67,79,75,3,186,209,134,238,
-148,35,114,74,212,152,8,148,11,76,79,244,235,110,41,189,190,95,150,174,145,122,255,15,189,37,90,160,181,85,99,195,
-251,51,46,161,56,35,93,113,132,50,124,131,215,126,34,150,101,9,49,126,129,74,118,6,137,74,181,90,126,19,56,173,
-150,159,192,111,138,230,244,150,123,111,65,40,175,46,173,195,130,77,239,147,80,97,204,203,112,123,34,52,238,57,240,21,
-138,249,104,170,150,132,74,157,183,111,61,62,237,54,200,163,29,160,238,0,74,34,235,11,183,226,201,43,12,108,203,153,
-222,14,79,109,124,244,68,13,203,189,99,249,85,183,66,214,237,80,34,176,239,170,65,146,106,102,242,11,97,238,54,238,
-197,3,227,111,146,213,30,166,60,30,246,187,174,148,144,205,125,55,125,103,77,211,195,153,18,4,69,253,244,23,163,34,
-190,133,48,70,96,87,179,178,249,24,146,204,25,192,180,208,112,204,125,215,90,242,187,87,6,121,235,148,105,50,103,1,
-116,78,152,85,86,38,104,121,38,32,45,241,33,188,171,54,92,167,118,129,199,41,11,77,232,255,7,255,86,70,139,222,
-71,145,128,130,113,225,114,29,232,33,45,125,167,3,100,61,241,157,90,70,140,44,254,159,87,100,53,145,138,104,240,237,
-152,9,166,61,192,81,62,95,79,110,144,117,22,150,193,27,223,234,228,35,198,71,44,200,119,51,252,72,181,187,120,210,
-187,33,153,35,144,240,143,83,127,229,197,108,4,104,16,119,31,117,220,235,72,40,52,59,243,140,253,158,53,97,36,112,
-33,200,134,113,6,77,79,163,145,202,180,69,221,247,94,82,155,103,46,28,92,83,208,143,119,138,14,104,76,248,134,53,
-63,7,2,187,130,206,252,139,203,254,58,211,33,169,85,158,99,244,139,65,227,221,187,124,87,185,68,18,50,120,72,29,
-41,0,95,73,88,151,230,147,223,93,42,3,46,102,48,129,208,247,188,232,219,250,71,153,241,95,20,170,204,1,98,249,
-42,245,33,176,212,63,247,200,64,40,210,232,187,173,5,244,210,153,61,83,80,35,56,93,6,54,170,250,38,150,79,74,
-81,198,67,120,100,8,172,181,136,133,147,247,143,204,23,100,247,12,182,45,240,141,33,183,185,215,224,250,200,239,116,203,
-93,206,127,88,177,138,1,76,2,117,11,118,39,27,207,6,200,40,137,206,144,248,46,210,179,197,37,192,183,96,32,245,
-131,178,121,199,86,65,158,110,248,237,118,34,25,58,241,66,72,34,244,149,206,183,142,189,168,111,123,128,162,157,160,164,
-132,116,109,12,175,11,54,115,26,171,96,182,73,27,119,138,185,168,121,218,13,129,228,16,107,12,118,238,52,77,2,88,
-173,119,229,203,56,121,147,189,219,89,121,149,191,233,212,235,51,205,6,121,10,182,64,84,22,67,58,82,168,122,119,174,
-237,186,216,244,67,128,51,187,100,59,135,6,15,19,162,121,227,54,16,253,105,105,137,217,89,19,112,146,220,107,90,246,
-69,170,209,51,114,0,200,149,164,95,155,172,181,142,35,33,52,190,233,16,174,15,131,221,65,127,102,41,235,66,153,73,
-70,254,108,245,111,242,63,51,239,114,236,108,237,181,40,61,19,190,38,73,250,26,7,132,165,137,233,243,118,244,161,105,
-72,138,127,98,201,221,222,115,70,137,98,185,226,156,230,138,33,37,142,90,197,98,53,21,246,139,244,20,73,239,159,18,
-195,115,123,231,149,56,204,70,114,235,172,149,205,15,139,94,215,165,188,123,29,112,176,99,184,16,72,224,21,184,94,255,
-252,203,176,173,235,27,131,124,31,107,181,81,101,199,195,81,171,194,196,19,201,232,178,254,113,43,108,148,50,117,7,121,
-13,179,42,2,4,7,14,199,132,75,13,53,64,15,141,215,115,81,107,4,163,212,35,92,8,251,227,79,39,122,166,106,
-98,58,71,44,161,139,142,50,190,150,200,242,37,105,227,152,199,75,102,58,217,44,233,189,9,14,48,250,121,113,137,248,
-115,34,211,107,233,224,162,66,46,20,182,43,249,207,140,21,214,87,38,230,89,143,163,76,15,213,147,235,37,249,159,90,
-34,113,216,132,136,201,193,164,16,214,216,170,146,38,65,248,179,115,17,249,205,168,59,44,51,221,239,0,155,25,60,147,
-126,11,189,39,225,228,148,1,93,119,63,170,211,55,92,33,248,161,200,147,238,186,7,28,160,12,224,199,4,223,49,138,
-149,6,9,55,141,48,191,76,187,154,193,99,135,1,140,147,5,216,167,4,255,91,208,22,185,227,12,18,201,97,126,89,
-156,210,108,56,40,94,5,83,159,119,217,65,99,124,61,219,212,35,6,172,192,10,77,112,88,118,162,163,91,33,247,112,
-123,156,233,62,78,36,34,102,211,144,58,103,200,150,121,141,253,7,9,13,53,17,232,104,139,104,130,208,35,57,236,26,
-84,228,3,63,78,188,115,9,249,60,93,237,99,63,174,15,249,215,45,43,101,24,198,248,218,22,27,172,26,199,219,103,
-63,239,114,11,157,83,120,223,136,86,146,10,227,149,57,241,29,46,100,65,211,97,39,186,26,238,80,198,78,60,204,127,
-213,223,63,114,30,175,131,228,146,230,107,235,81,61,10,126,20,125,41,148,20,13,249,198,164,13,39,207,23,170,150,109,
-52,194,119,27,251,171,26,72,211,48,15,219,99,101,97,18,252,109,16,37,65,250,49,64,20,172,201,80,65,7,181,101,
-69,192,172,95,193,243,123,117,118,103,176,106,59,169,160,70,180,64,6,108,253,225,212,21,164,2,196,192,202,186,87,205,
-206,99,104,104,68,125,33,248,111,12,232,134,154,221,96,0,132,225,80,220,219,142,233,139,228,160,240,97,23,108,85,193,
-78,230,4,84,126,102,122,88,189,165,167,152,46,70,96,80,217,23,133,115,40,156,101,232,160,25,88,183,21,94,90,72,
-8,216,145,65,255,250,192,31,212,163,113,80,14,46,108,81,157,181,235,117,100,104,139,43,162,185,199,96,31,34,111,68,
-117,90,47,204,171,23,70,107,113,47,51,213,136,10,28,93,170,64,136,157,54,208,164,144,213,157,209,212,78,35,210,100,
-95,194,254,105,41,31,173,16,12,243,118,211,13,28,43,74,59,208,108,39,18,141,203,38,77,184,38,221,69,216,217,114,
-108,163,236,234,167,30,79,217,66,68,176,233,251,151,5,203,160,52,206,220,24,48,17,21,184,0,255,253,2,144,170,228,
-178,181,45,148,58,143,168,98,57,53,238,69,193,186,92,89,149,35,46,15,75,170,85,41,227,74,39,51,14,118,96,206,
-186,29,48,250,235,200,201,56,43,39,183,182,190,154,90,68,194,212,245,202,158,43,55,157,17,255,38,107,189,102,24,91,
-14,82,100,231,194,246,114,108,104,135,43,195,97,66,61,153,196,57,40,136,27,219,235,181,216,5,101,64,97,138,92,253,
-210,205,204,113,89,171,205,154,29,204,80,169,71,200,228,138,135,45,42,170,50,176,200,207,82,26,105,153,89,24,101,234,
-4,50,5,0,171,253,183,230,123,188,111,205,133,197,4,4,140,206,79,56,4,181,193,179,68,9,81,230,25,112,137,20,
-203,40,170,250,165,130,0,26,66,64,34,9,240,184,255,188,208,190,39,19,198,197,179,159,231,17,209,113,94,83,52,129,
-166,36,152,85,212,30,187,135,135,53,66,249,75,217,45,64,201,138,119,29,201,101,34,68,143,5,232,129,154,254,66,86,
-7,66,83,180,5,2,6,199,243,39,27,227,188,117,83,195,38,139,95,7,61,66,152,109,59,4,100,85,112,77,57,121,
-117,3,203,42,226,246,32,220,134,6,166,155,245,146,187,162,158,120,178,194,229,141,58,119,72,187,10,91,217,22,6,216,
-239,82,37,25,75,33,66,141,39,87,183,2,47,54,222,15,220,158,21,136,210,160,159,207,216,233,65,3,33,170,133,120,
-162,153,248,153,203,179,95,37,24,63,154,173,136,38,118,116,95,143,125,216,133,42,54,125,128,113,102,138,131,22,92,171,
-5,104,27,22,132,91,144,102,46,1,225,102,211,109,215,77,118,99,225,141,210,35,228,240,231,176,175,57,149,169,223,50,
-12,44,177,9,110,82,231,87,26,194,32,53,24,66,139,2,171,209,25,251,115,155,219,223,20,254,35,73,89,228,90,146,
-126,176,96,118,11,94,99,225,197,255,243,126,228,136,177,223,177,27,125,55,231,235,71,160,200,100,251,142,138,185,65,144,
-63,108,33,0,34,56,66,223,206,0,46,209,157,221,231,122,151,158,172,203,12,80,202,210,221,139,208,20,57,205,15,233,
-253,252,203,25,140,187,91,183,42,12,58,242,194,57,253,233,14,82,136,46,212,162,30,46,52,115,52,173,176,19,211,114,
-157,127,111,21,222,169,166,102,184,158,58,178,251,151,143,204,9,9,127,163,197,141,235,77,13,186,152,111,105,153,5,126,
-225,52,143,194,141,32,176,170,205,109,44,15,134,188,89,119,148,186,182,102,77,5,86,211,213,40,19,133,215,141,219,166,
-174,74,197,66,32,244,26,95,233,190,147,33,201,164,245,205,125,149,152,79,87,122,205,56,180,254,236,96,240,104,79,88,
-100,187,236,6,108,82,79,77,32,162,45,4,100,81,32,87,110,189,236,145,239,235,146,81,3,142,112,105,175,245,203,57,
-17,187,141,209,117,197,32,164,81,37,98,47,75,48,181,154,169,110,167,48,131,130,247,162,26,57,243,21,132,91,227,50,
-255,171,137,155,136,146,83,183,147,16,199,116,8,239,199,245,73,169,217,236,157,231,105,43,172,148,79,201,60,188,24,100,
-182,107,72,102,101,206,45,199,135,36,145,171,220,0,148,175,16,193,84,112,26,227,223,185,83,14,174,136,20,74,194,126,
-158,71,195,200,230,105,218,34,203,208,29,180,80,29,194,110,205,35,233,48,113,111,230,184,223,55,164,112,44,210,142,224,
-3,102,203,76,224,72,228,13,180,254,180,179,211,0,105,213,11,128,17,210,143,186,206,43,96,41,74,28,187,167,199,78,
-47,232,150,221,112,214,69,201,63,234,46,156,254,161,29,82,4,93,1,62,192,130,133,107,12,88,171,92,221,158,100,162,
-132,114,179,164,255,164,243,108,61,1,188,43,249,230,235,156,49,62,156,61,232,51,166,81,31,177,152,218,11,63,170,202,
-252,60,29,118,240,161,168,97,22,165,9,137,86,19,191,31,226,227,211,117,8,113,70,189,229,157,164,108,167,182,234,44,
-132,73,190,20,20,89,30,85,250,242,85,228,216,174,141,38,142,25,195,217,230,214,8,184,2,175,102,122,88,34,253,39,
-186,56,30,215,106,230,94,169,243,69,247,181,197,49,150,128,78,149,10,50,25,226,39,211,8,10,32,83,44,59,213,248,
-123,120,6,95,184,27,237,27,80,94,241,38,61,22,230,123,14,24,230,101,52,47,236,108,124,228,116,204,195,171,224,98,
-156,68,29,105,33,233,163,44,194,131,80,43,211,98,154,51,239,197,231,62,130,244,144,48,40,114,122,237,43,128,87,123,
-55,203,88,102,97,51,229,140,183,120,9,182,218,188,193,27,98,187,231,193,93,10,216,125,255,235,240,245,116,188,130,4,
-241,54,174,62,152,114,229,59,14,105,191,132,108,60,255,130,131,168,141,84,129,35,147,162,43,176,90,216,47,186,247,144,
-77,115,136,42,114,234,185,65,51,231,136,79,19,205,59,140,137,18,45,181,234,165,35,177,149,157,227,12,98,203,242,156,
-166,22,175,45,148,160,78,104,2,18,241,82,176,23,131,20,128,210,238,172,35,2,133,239,218,231,75,28,70,177,204,151,
-204,169,172,254,120,181,39,92,103,50,18,103,163,32,127,40,153,61,218,77,248,133,137,166,175,138,179,145,143,25,161,142,
-235,101,32,178,54,212,155,80,189,49,144,150,64,125,31,52,19,231,156,174,36,130,10,248,4,201,38,226,207,251,138,25,
-36,147,86,156,248,110,233,250,79,92,239,242,133,93,3,171,24,110,225,204,179,47,196,196,244,231,69,164,117,106,75,51,
-237,251,71,128,107,87,200,45,200,76,108,125,18,207,93,81,90,146,105,94,48,232,235,126,216,57,2,13,249,38,197,173,
-38,119,180,10,0,88,30,4,59,141,28,134,84,35,39,46,125,205,193,101,131,165,115,239,36,210,203,195,176,19,197,149,
-4,114,243,42,192,149,70,74,13,151,15,68,147,211,35,161,208,124,124,250,84,50,247,248,133,234,71,236,45,15,226,112,
-33,210,26,191,18,93,87,7,90,247,22,190,24,110,193,94,26,56,139,238,164,142,196,75,66,171,18,82,142,158,122,162,
-221,176,85,144,185,238,68,192,189,99,57,217,89,54,73,28,110,25,130,61,9,177,166,129,210,180,63,44,53,103,164,38,
-211,161,122,250,204,182,118,247,52,146,139,0,191,204,1,145,150,118,94,255,91,122,124,199,163,206,195,12,254,52,9,146,
-105,124,199,147,150,242,10,10,14,177,203,82,40,57,34,217,110,36,30,187,156,95,29,131,32,75,166,97,242,221,60,26,
-14,9,20,176,255,91,13,22,32,193,171,233,190,59,145,37,254,21,174,82,26,122,148,53,186,161,158,143,132,69,21,114,
-122,87,47,20,45,102,61,108,173,172,198,16,47,105,7,48,175,25,72,237,37,134,157,49,24,232,226,118,22,9,121,17,
-252,147,180,9,173,19,1,140,78,2,57,32,180,225,191,89,226,171,156,247,112,148,255,148,143,224,231,196,66,163,115,201,
-14,101,48,220,208,57,193,215,144,101,123,32,49,227,105,112,231,8,163,67,90,221,11,173,63,44,101,200,166,169,192,246,
-124,130,2,81,71,151,217,30,225,220,118,247,45,130,124,105,132,229,168,252,120,165,76,3,99,222,243,132,49,61,157,188,
-232,217,192,117,70,85,131,245,213,41,129,200,18,234,0,68,115,140,211,255,229,126,119,202,207,17,59,239,9,80,248,88,
-54,57,129,185,181,206,51,112,157,201,220,19,127,161,212,69,192,53,79,12,207,140,254,51,231,83,77,98,65,81,159,9,
-140,243,91,171,220,248,29,230,160,54,84,213,253,132,105,137,45,44,160,213,139,92,64,127,45,14,101,162,44,103,20,206,
-159,77,80,161,151,78,251,238,78,246,56,57,225,36,88,170,191,144,23,170,227,161,224,76,30,183,59,4,198,0,161,38,
-150,111,161,87,254,123,175,43,152,169,237,196,236,97,150,155,212,84,71,185,130,70,157,122,22,34,145,63,78,215,82,13,
-14,196,171,92,98,86,149,53,5,64,31,141,66,47,62,118,23,13,161,96,164,199,166,197,12,104,218,173,217,37,139,211,
-141,143,187,186,190,56,131,200,46,36,140,214,185,219,91,186,195,155,238,171,140,180,215,134,204,91,193,100,130,149,21,190,
-7,243,196,36,155,242,136,113,56,225,32,156,115,111,218,122,42,128,201,111,116,210,68,199,249,136,230,170,59,75,88,34,
-236,228,195,78,101,219,99,159,33,206,124,206,201,178,78,21,106,123,109,125,126,246,139,240,186,243,205,23,144,157,221,149,
-126,60,88,9,71,128,111,58,136,23,232,196,106,104,138,122,177,184,182,114,111,68,134,16,76,223,16,62,25,31,125,105,
-252,151,64,5,120,168,88,199,172,115,189,66,17,28,174,20,64,144,215,38,221,255,178,123,15,134,197,158,170,163,192,192,
-253,216,212,33,3,34,131,87,176,40,105,90,65,88,214,8,212,62,167,193,54,234,188,194,28,162,190,202,42,252,150,126,
-76,105,217,16,231,47,124,124,226,185,73,46,247,143,145,140,170,188,154,93,80,95,198,247,59,233,27,204,100,167,17,220,
-94,66,29,146,239,253,200,112,255,147,204,64,162,228,10,216,67,21,136,81,219,222,220,238,204,212,83,248,19,72,173,68,
-127,73,36,45,26,201,141,164,96,206,92,76,20,16,1,7,46,65,79,29,229,170,139,66,173,148,7,211,100,161,37,255,
-98,8,109,114,250,171,98,174,181,209,59,187,35,101,237,188,34,158,181,117,251,71,70,13,129,57,96,43,38,179,52,155,
-81,203,176,93,179,120,191,231,47,151,77,202,32,84,66,205,127,144,133,43,229,248,0,103,93,108,127,243,177,93,233,51,
-104,196,120,86,91,135,142,10,11,250,72,234,156,254,141,159,201,141,117,113,245,110,128,13,191,112,16,121,200,145,19,251,
-81,10,75,206,201,244,42,184,56,140,236,41,36,56,152,160,238,207,224,239,244,108,50,244,90,118,71,197,125,155,184,201,
-201,190,58,153,164,215,14,244,30,102,255,249,133,147,34,45,79,198,204,67,73,248,107,242,218,145,243,185,209,247,120,157,
-150,11,213,116,59,125,86,51,148,173,50,24,222,28,9,238,40,17,83,147,33,119,184,147,68,232,91,187,192,163,142,115,
-171,244,80,167,255,214,69,89,136,106,113,92,18,237,182,101,13,79,52,83,160,98,75,82,182,138,125,127,43,114,67,72,
-46,60,4,180,143,217,59,137,162,206,13,103,119,6,139,18,144,222,254,170,242,177,89,35,250,132,36,196,119,99,87,7,
-113,137,193,246,204,69,20,138,28,197,20,50,99,203,39,100,52,145,49,5,59,153,114,171,3,233,28,145,182,73,207,254,
-219,163,188,238,133,170,145,213,144,179,31,66,248,92,94,251,255,173,188,120,178,87,200,29,162,131,173,46,132,214,172,229,
-242,64,75,159,189,190,140,13,159,52,212,207,5,188,55,54,13,255,45,156,38,152,78,76,94,208,43,182,125,140,3,114,
-92,1,85,126,104,46,224,45,19,27,9,48,55,103,60,203,78,134,19,9,243,29,182,222,105,132,244,30,122,59,51,89,
-252,42,136,82,230,99,59,14,59,166,11,190,116,161,30,52,78,185,150,44,165,99,68,38,83,36,132,6,165,3,97,81,
-10,73,137,186,16,76,172,66,137,128,59,52,21,118,168,42,46,124,233,202,32,227,120,206,18,232,206,201,173,210,175,252,
-121,59,192,2,183,170,217,135,75,141,139,226,196,221,186,88,157,210,162,236,163,191,53,218,38,189,48,48,225,252,255,43,
-77,82,191,4,1,193,83,216,78,227,11,18,114,48,11,209,162,99,52,67,147,76,176,150,244,9,62,108,65,26,32,60,
-15,115,63,72,175,25,41,112,185,146,151,198,25,137,209,55,77,91,35,15,196,180,11,216,87,58,215,229,154,58,164,112,
-78,55,155,223,119,41,132,8,59,250,185,58,164,139,236,78,213,91,104,183,50,4,206,100,1,221,110,9,122,150,218,95,
-65,17,93,43,126,198,13,8,123,37,245,213,72,129,129,140,9,18,108,49,193,228,213,216,8,45,15,56,154,218,68,213,
-73,84,58,234,255,246,21,93,145,120,186,104,11,119,9,238,154,135,88,34,196,147,121,225,106,53,102,245,200,201,3,78,
-218,85,135,132,161,184,110,118,139,63,37,92,106,156,195,174,96,99,142,29,70,218,228,209,110,120,249,234,79,114,49,12,
-188,251,29,191,178,210,177,155,230,68,72,251,214,14,229,81,224,74,140,227,248,87,10,117,163,50,108,23,91,82,215,77,
-81,172,169,172,138,89,20,199,22,152,190,42,4,126,204,67,155,173,41,224,20,15,109,101,67,193,131,243,75,240,18,162,
-34,60,244,114,225,98,179,255,34,114,209,136,126,8,64,24,121,5,218,228,213,219,94,206,4,38,118,51,226,76,218,26,
-90,43,14,4,19,115,101,208,212,185,78,26,15,23,200,73,218,53,239,61,222,7,57,68,243,92,129,55,17,188,22,38,
-140,58,43,132,128,101,25,61,84,92,104,4,173,224,45,233,66,244,33,179,34,221,62,101,138,206,8,238,153,255,193,253,
-228,119,48,237,235,234,237,77,146,160,125,215,73,30,212,212,115,21,14,242,111,144,179,57,114,107,209,63,37,232,233,204,
-49,80,81,218,154,4,176,223,29,196,68,1,121,178,185,193,58,59,240,174,103,10,139,102,142,183,39,187,142,62,64,41,
-193,152,117,5,236,53,218,233,49,176,115,107,188,241,244,119,89,178,216,155,87,66,147,22,200,147,100,99,17,242,149,14,
-76,7,176,255,247,122,156,19,74,68,204,137,37,90,120,92,60,113,60,109,239,81,118,82,166,123,22,81,13,192,108,3,
-225,113,186,191,182,116,93,102,43,92,247,130,119,16,159,201,200,165,4,162,39,169,123,26,227,81,190,40,2,133,52,108,
-65,26,60,5,123,10,160,69,162,174,233,30,39,97,55,253,16,124,199,69,187,184,37,207,194,63,25,171,71,101,70,1,
-27,180,89,14,89,165,239,58,16,96,42,42,241,150,195,63,85,167,28,116,149,21,40,19,174,90,215,86,64,68,32,48,
-228,110,165,54,45,253,189,16,161,223,255,109,248,72,84,225,42,3,119,122,29,4,47,34,190,10,116,101,81,154,184,183,
-195,24,30,228,17,5,100,93,210,166,64,37,184,152,17,27,18,202,47,98,109,252,127,116,131,246,200,225,71,61,215,83,
-193,149,166,187,73,218,151,130,189,255,250,254,193,168,227,75,255,135,62,153,60,18,201,151,111,110,214,189,149,21,166,152,
-190,28,126,238,173,183,131,5,9,241,210,65,12,214,116,82,106,243,243,6,129,82,223,180,30,222,113,168,19,141,46,194,
-0,162,151,62,128,143,166,140,65,61,19,201,131,255,130,240,108,66,226,144,222,184,62,28,130,252,97,171,29,131,94,252,
-109,50,156,239,246,69,148,182,251,176,113,176,172,63,173,98,210,1,248,10,232,164,177,226,243,144,116,145,73,97,63,22,
-47,189,36,114,54,17,145,38,49,220,220,37,165,67,242,240,196,196,81,227,90,249,120,155,5,64,207,24,39,1,52,245,
-35,83,136,50,250,27,246,96,181,121,62,121,116,223,203,115,104,168,9,205,8,189,119,78,61,163,153,50,234,58,190,245,
-197,6,75,77,34,28,52,164,90,53,19,36,77,5,38,51,188,237,159,59,103,178,10,160,242,140,120,127,64,50,87,163,
-84,191,83,69,251,167,103,140,128,127,186,67,75,34,123,177,149,77,141,255,194,183,235,187,171,70,5,244,133,219,202,217,
-83,159,207,25,178,136,168,117,130,183,202,72,132,208,94,157,179,60,141,52,194,156,157,139,54,93,144,223,226,99,205,133,
-54,141,158,228,48,150,81,50,211,71,165,116,147,31,50,171,206,18,170,143,244,17,33,224,181,39,61,196,40,142,99,42,
-195,208,100,187,237,91,251,180,145,143,65,90,140,13,141,19,78,94,118,155,140,5,161,111,148,136,129,18,241,194,22,81,
-76,181,61,189,51,138,80,42,167,19,218,52,37,115,62,55,10,223,128,187,109,87,61,19,118,102,53,29,48,121,125,203,
-7,63,22,248,76,237,53,1,241,3,22,240,207,84,102,127,109,164,45,121,3,168,78,187,201,253,196,250,79,217,239,221,
-49,209,95,132,124,91,0,55,41,206,245,198,119,229,25,73,164,16,68,15,96,191,52,222,81,230,64,206,254,77,169,42,
-76,221,145,236,113,12,106,112,71,7,217,212,35,138,30,128,204,219,28,245,118,71,103,46,28,94,205,62,103,16,56,193,
-245,144,59,94,78,12,134,120,52,181,143,7,17,5,22,146,90,0,191,13,231,33,157,185,23,219,82,14,114,106,40,135,
-92,143,30,212,124,97,151,121,80,164,159,218,104,26,1,22,124,150,205,204,57,193,160,155,142,6,67,249,34,177,97,57,
-155,143,63,247,20,69,123,103,128,92,19,191,152,192,231,157,91,66,160,226,183,148,195,178,43,170,231,250,30,235,112,208,
-193,44,87,134,178,123,64,233,25,7,76,95,7,11,139,254,85,25,232,193,70,205,206,87,108,136,193,92,36,228,194,142,
-164,38,151,193,174,72,103,127,148,138,240,24,149,231,59,158,175,10,73,134,93,13,93,173,22,80,41,7,70,125,35,2,
-39,166,140,195,12,17,226,32,20,249,69,72,140,151,44,49,8,110,180,81,101,255,233,248,42,129,121,50,227,154,193,247,
-169,188,181,153,173,39,102,179,156,52,98,173,113,173,175,98,158,174,23,63,35,150,80,98,146,62,145,206,19,23,216,239,
-63,111,64,239,76,218,196,122,235,123,12,4,54,133,190,80,76,76,229,246,110,175,223,153,148,100,188,178,221,47,179,0,
-102,251,139,87,158,181,164,34,143,169,165,149,9,124,73,8,93,208,2,193,127,142,178,201,71,35,153,180,204,40,26,66,
-6,232,167,118,194,135,154,238,41,125,234,89,80,225,160,227,204,164,83,39,191,249,178,208,43,177,63,43,215,244,221,200,
-161,128,110,78,24,219,202,64,188,241,225,164,55,234,187,254,205,68,40,147,76,14,54,66,213,45,243,67,165,56,158,82,
-150,199,127,216,163,59,16,140,83,161,167,234,168,96,82,155,98,153,153,218,29,242,127,252,252,53,194,245,62,223,152,244,
-202,8,48,218,198,221,146,126,121,36,227,175,105,14,184,160,91,89,201,209,92,221,213,4,217,37,7,24,214,83,236,65,
-204,16,154,191,79,153,162,226,170,26,243,249,247,174,17,97,133,146,128,162,217,99,240,45,212,20,159,133,228,7,238,105,
-109,176,123,95,195,150,5,252,132,37,161,54,243,161,193,161,60,1,124,101,181,61,229,85,90,249,63,144,111,205,216,130,
-138,195,141,193,233,117,211,76,225,229,153,40,94,68,48,198,21,139,189,49,159,86,123,146,202,183,0,239,54,101,164,19,
-63,248,63,16,164,225,34,164,127,88,194,224,216,124,225,0,186,157,176,213,65,247,103,13,206,219,39,189,199,76,120,143,
-59,36,123,69,79,170,234,94,2,145,211,70,210,152,74,171,255,252,202,196,242,60,86,117,77,105,224,91,236,82,217,34,
-28,130,61,33,207,220,113,103,55,146,40,4,88,132,157,117,1,14,50,154,149,23,58,16,187,183,172,45,189,116,17,221,
-231,108,94,255,254,76,157,12,247,241,8,242,152,159,182,19,230,148,91,120,219,140,131,242,30,31,172,6,75,206,104,182,
-156,39,113,249,149,46,119,51,218,10,165,124,16,182,76,46,53,28,44,193,234,135,141,62,169,245,161,208,116,81,34,102,
-7,39,145,189,228,91,191,228,68,153,5,101,24,119,169,3,248,52,196,57,78,124,34,166,135,39,202,186,184,152,213,153,
-159,127,137,170,31,182,189,181,239,9,246,64,206,110,68,134,44,131,251,105,145,104,226,228,89,6,159,170,38,144,226,47,
-143,39,230,83,249,87,50,34,1,114,255,245,53,80,158,131,30,182,202,206,133,84,75,14,200,67,206,72,55,133,153,135,
-243,45,83,10,80,159,195,182,53,249,159,196,34,202,193,87,217,60,229,147,32,199,150,222,249,122,27,41,41,161,156,31,
-202,133,130,110,128,229,231,19,81,193,197,242,191,220,35,238,141,171,65,155,67,246,183,157,90,244,176,7,190,25,162,104,
-185,255,250,254,188,169,174,247,22,133,211,241,139,94,71,103,241,65,55,125,51,52,241,150,225,63,2,81,161,181,93,201,
-40,137,106,55,165,117,128,135,216,198,243,195,236,141,112,19,232,15,245,28,216,64,204,4,188,80,5,191,15,164,210,253,
-9,186,177,7,238,218,255,73,88,178,210,237,4,180,29,17,126,34,228,86,163,215,146,228,53,51,155,178,225,137,84,107,
-1,39,205,200,207,157,224,168,254,63,193,30,11,176,33,81,227,115,241,248,100,118,233,254,144,82,12,191,153,224,49,208,
-24,174,210,189,124,220,230,96,74,39,64,254,32,120,7,54,253,122,225,222,221,72,91,182,193,54,72,107,129,180,220,104,
-239,159,168,129,89,58,53,45,38,58,98,137,252,62,76,118,234,183,29,145,150,247,241,204,202,40,196,208,94,21,197,190,
-17,38,189,74,38,130,221,207,114,165,1,100,143,180,246,99,6,114,75,195,217,101,246,71,149,216,197,144,117,70,37,244,
-105,119,60,83,4,156,82,191,97,253,29,227,245,116,7,217,80,181,232,132,216,255,253,125,145,44,195,18,113,200,72,231,
-230,38,23,177,255,180,106,115,171,16,7,228,2,129,74,167,57,246,54,201,67,189,181,130,52,151,75,7,136,132,125,247,
-196,157,174,224,39,254,255,200,20,50,151,148,76,58,18,184,133,59,124,183,131,243,200,28,5,220,75,116,168,30,238,216,
-248,205,158,42,190,227,113,175,107,3,166,225,202,114,141,149,232,77,228,29,205,25,52,8,152,15,8,166,75,159,117,233,
-53,70,179,57,222,218,147,115,10,97,210,141,133,115,15,205,36,41,74,195,101,117,92,91,23,244,35,166,119,157,243,119,
-13,88,34,119,70,44,209,213,169,247,247,136,112,99,193,214,139,20,181,143,124,209,23,143,21,223,22,247,8,184,196,37,
-121,226,218,189,154,121,228,168,187,197,21,212,163,221,46,18,170,99,165,29,237,56,241,233,192,228,209,26,180,176,29,63,
-39,44,64,48,78,179,202,87,155,252,255,107,31,2,255,18,165,44,92,133,27,206,239,186,41,24,18,135,147,139,57,247,
-89,242,205,106,204,162,12,62,2,188,206,69,221,33,9,153,87,96,64,90,21,241,89,192,188,58,32,188,82,18,201,94,
-75,249,185,46,209,56,35,159,233,44,181,6,141,170,3,8,23,13,122,109,100,158,198,216,21,21,3,74,245,56,49,150,
-239,211,30,135,253,215,222,116,14,48,41,157,255,86,253,57,111,253,61,74,32,26,66,30,92,182,182,10,12,153,94,122,
-193,151,77,50,67,173,137,182,168,33,200,110,237,47,149,50,131,215,11,210,174,101,56,242,33,86,170,106,45,162,81,193,
-82,251,86,28,112,237,201,124,46,54,106,82,91,154,181,142,38,132,224,149,48,189,72,225,119,7,116,68,127,231,44,74,
-94,221,59,221,178,179,74,123,51,137,236,56,227,179,73,39,164,110,85,176,95,66,72,173,126,43,136,73,48,39,89,18,
-181,15,222,79,32,17,21,174,188,40,119,169,60,36,67,153,35,234,38,220,175,208,193,125,74,89,129,156,219,22,169,209,
-121,221,21,173,96,32,66,216,196,235,128,22,50,135,150,66,23,73,226,113,73,137,176,3,10,158,210,81,134,88,177,145,
-243,104,61,253,91,42,130,107,97,53,171,181,28,58,37,228,20,195,76,115,49,237,21,182,113,11,46,158,215,234,165,240,
-20,122,143,36,207,14,140,72,146,220,106,231,13,105,143,240,75,12,178,212,165,152,113,159,127,95,231,38,191,125,186,23,
-241,123,233,146,137,235,46,136,5,235,235,126,243,80,44,167,111,205,23,110,233,24,45,178,70,131,11,197,89,238,157,17,
-171,184,235,254,55,57,205,186,120,27,253,140,31,34,32,55,191,135,70,73,24,60,112,30,221,132,242,199,8,6,241,161,
-133,105,76,136,145,223,115,157,117,125,43,130,104,143,121,164,11,63,178,252,230,194,160,238,198,78,166,105,74,69,34,40,
-173,17,185,248,99,152,236,169,208,118,245,48,100,171,48,189,26,243,107,147,251,46,227,187,180,221,57,247,68,88,224,119,
-14,54,34,42,203,36,123,141,126,14,74,132,211,147,4,251,69,50,74,15,30,224,20,143,16,177,13,202,10,86,164,5,
-55,195,36,138,52,232,207,238,7,143,27,35,241,34,225,105,109,120,21,127,17,131,74,93,188,152,45,221,207,190,177,51,
-64,7,25,200,172,255,214,132,123,165,194,210,50,220,9,237,249,140,242,166,139,222,30,44,105,219,54,234,228,35,84,241,
-219,101,91,90,165,108,30,191,190,177,91,205,108,203,207,180,63,198,187,165,236,204,13,170,75,68,191,45,89,93,191,115,
-245,217,35,238,110,189,200,18,97,253,66,23,70,91,91,37,245,71,179,106,219,154,30,196,217,73,186,54,245,105,177,213,
-49,83,123,218,117,161,231,159,67,183,210,58,105,157,95,212,195,218,142,152,18,68,159,14,134,15,220,246,99,58,15,250,
-240,9,219,42,165,205,86,249,128,97,140,130,215,95,83,60,57,3,80,39,252,173,215,118,146,124,70,196,209,218,23,162,
-254,5,80,203,47,172,3,207,125,68,81,166,250,29,214,74,78,54,96,218,76,241,173,63,206,56,44,247,2,71,177,18,
-96,98,191,108,204,134,240,81,192,252,123,186,123,171,212,23,245,225,11,184,64,207,92,208,193,43,119,17,231,234,73,214,
-35,126,86,183,225,59,120,163,108,9,63,111,20,1,69,157,97,121,72,50,61,112,197,46,119,177,174,164,82,171,24,46,
-149,42,107,93,200,242,39,166,29,99,208,168,155,247,159,100,4,135,71,217,107,195,213,121,142,173,50,43,249,242,98,240,
-53,248,99,127,127,239,179,11,111,49,239,81,250,106,99,10,180,82,237,129,140,206,146,146,243,69,30,144,248,115,93,150,
-144,249,69,228,103,235,229,33,155,253,47,204,224,176,110,44,156,218,67,49,187,14,88,187,212,224,160,59,251,221,126,29,
-202,67,248,230,233,219,120,235,241,21,201,66,213,111,244,20,89,191,137,108,152,204,169,45,159,23,139,62,194,162,182,134,
-149,39,81,249,14,91,115,185,234,205,78,208,208,60,104,107,83,66,158,141,47,41,168,65,33,146,117,102,187,162,126,225,
-195,33,144,153,120,29,239,139,111,152,207,249,50,56,49,60,105,107,56,67,123,114,102,165,184,172,164,217,203,30,2,170,
-224,221,180,200,23,146,236,159,202,237,140,142,98,225,133,0,123,130,45,143,23,240,171,140,173,224,203,238,139,42,43,64,
-54,37,173,169,147,167,161,10,233,3,32,34,90,217,198,135,150,187,236,64,41,79,169,213,243,234,230,55,219,171,235,54,
-137,212,94,79,13,248,175,168,147,125,135,9,202,159,241,83,53,142,121,59,160,60,90,235,7,231,126,76,23,231,123,73,
-143,162,222,5,79,255,245,192,77,36,30,171,40,100,145,198,12,121,34,242,250,184,48,81,235,186,244,69,83,57,210,205,
-222,116,39,38,21,215,111,22,176,164,19,134,131,43,104,56,28,22,181,233,241,9,253,112,31,32,213,221,206,24,213,33,
-12,213,19,18,145,252,19,16,35,50,92,193,221,190,36,83,22,74,226,11,9,169,124,171,219,30,35,253,65,9,217,237,
-119,47,238,59,67,52,183,109,143,175,94,49,196,40,204,251,5,200,18,229,8,136,209,231,159,102,194,72,28,194,93,230,
-246,39,227,93,214,216,102,63,183,63,49,42,30,193,133,249,207,41,84,26,160,115,157,135,68,208,111,232,90,135,192,203,
-111,82,145,184,45,124,55,155,174,63,177,13,198,110,210,239,226,93,1,24,123,167,94,180,45,56,124,18,70,97,125,90,
-229,102,99,96,226,35,227,151,235,12,245,147,249,252,215,150,178,248,141,58,14,125,215,167,251,120,110,213,210,22,42,177,
-215,89,150,134,226,123,81,194,195,204,32,157,123,16,250,109,216,244,170,37,10,27,245,245,164,196,215,215,238,152,143,163,
-53,242,236,120,197,102,47,135,35,112,249,77,251,71,222,119,69,219,22,119,238,104,200,250,230,209,234,81,245,170,129,209,
-232,10,52,106,109,177,227,206,44,181,32,210,2,145,179,27,118,190,10,128,105,226,118,113,29,141,44,82,82,196,200,102,
-115,112,226,159,255,88,43,192,50,40,2,1,92,2,64,64,145,116,2,225,153,118,207,149,46,87,54,21,47,162,145,181,
-243,101,21,144,6,144,108,9,155,59,162,173,142,199,100,40,254,67,101,31,239,174,109,20,197,206,71,87,233,198,160,32,
-251,81,218,179,169,110,47,233,163,245,249,87,180,136,132,41,114,161,190,194,59,104,180,38,97,161,16,200,55,57,240,127,
-195,14,189,139,132,0,214,201,243,101,149,177,180,97,101,121,123,22,125,205,39,220,235,227,215,207,240,114,115,109,102,188,
-156,220,1,62,25,39,198,72,12,74,14,31,22,170,76,108,59,23,176,252,120,163,129,158,18,254,250,161,229,120,62,161,
-133,168,240,180,206,133,88,229,20,56,16,56,64,168,221,90,177,130,237,92,87,18,73,123,247,140,5,2,130,190,60,94,
-117,115,234,76,173,156,199,206,221,182,169,21,59,91,130,41,143,254,19,43,223,209,195,5,126,205,30,37,215,83,187,68,
-255,247,177,76,121,90,186,20,214,45,112,174,108,11,220,75,1,191,66,238,181,27,217,7,0,117,103,157,95,235,166,152,
-244,76,116,189,47,241,195,45,119,162,139,248,102,130,72,219,5,237,156,153,11,8,97,175,215,222,149,166,153,205,191,52,
-51,247,190,9,85,208,150,22,22,63,129,40,238,100,140,149,8,237,198,10,245,45,118,213,174,128,83,114,116,247,31,99,
-86,215,94,13,151,217,143,159,111,173,109,109,255,173,110,46,213,223,31,188,13,29,119,171,116,132,3,41,242,125,179,58,
-25,255,7,214,68,149,40,74,239,47,58,213,78,7,95,184,125,217,247,231,230,132,5,18,175,68,204,170,91,49,220,22,
-212,193,151,230,88,172,80,8,185,191,3,180,223,106,30,148,133,173,7,32,132,52,225,116,107,179,112,182,133,175,255,61,
-113,79,114,127,181,163,253,186,52,82,132,47,96,225,127,89,194,186,108,26,33,237,224,151,212,11,6,214,51,229,80,252,
-194,79,81,99,141,201,2,180,231,197,86,71,99,156,186,98,224,39,204,93,199,129,214,231,146,76,236,192,38,214,190,53,
-74,185,61,31,90,38,108,247,38,9,39,224,251,76,89,169,40,254,169,1,171,129,247,146,118,21,202,0,42,115,229,148,
-184,69,82,34,205,26,140,70,208,235,118,14,123,38,98,94,4,246,153,218,155,107,9,42,244,2,226,58,100,105,214,35,
-106,33,133,197,239,227,134,205,224,252,134,170,151,124,148,204,173,138,96,135,246,5,80,106,42,56,86,233,175,47,125,113,
-239,96,152,164,4,215,41,208,141,12,70,35,25,251,42,170,37,42,219,216,140,95,217,117,55,154,235,69,221,46,104,255,
-173,32,20,114,39,168,215,59,190,7,253,27,150,33,97,110,255,111,76,129,87,166,12,218,166,146,5,231,25,40,7,60,
-84,149,14,217,73,73,240,82,230,163,140,205,46,87,94,31,8,201,252,158,230,114,177,82,22,135,10,39,89,108,149,167,
-207,161,104,162,120,233,1,222,7,49,178,134,18,230,64,237,202,24,120,74,196,244,51,228,89,188,241,58,43,4,200,120,
-34,241,23,227,195,25,94,236,210,227,101,107,27,167,82,45,153,12,19,8,193,86,239,109,182,210,124,65,84,211,247,72,
-128,233,211,167,208,108,125,38,225,161,81,236,209,20,251,135,255,146,191,230,243,125,24,246,121,63,188,163,87,176,241,153,
-86,86,74,194,62,107,240,78,146,24,179,241,111,20,108,254,148,74,195,242,171,175,175,82,197,175,224,110,138,77,250,229,
-3,101,112,1,157,104,77,158,247,141,167,243,201,152,123,60,29,155,240,248,152,55,0,192,132,31,49,247,183,46,53,19,
-150,84,17,219,91,245,73,8,79,141,173,220,59,123,96,180,250,33,148,253,20,253,146,203,13,94,191,26,204,199,13,155,
-185,89,142,1,144,226,189,148,107,187,207,42,224,35,187,144,119,210,136,192,135,67,163,11,230,169,254,57,99,161,147,36,
-35,99,26,161,187,195,131,199,112,73,178,13,131,81,124,250,174,117,62,71,147,215,69,254,52,30,12,201,212,152,38,213,
-109,191,37,198,34,110,91,55,194,40,249,245,52,206,195,103,94,63,229,62,236,188,249,214,1,69,87,249,80,107,249,155,
-83,111,22,25,54,235,173,15,151,151,162,190,172,206,247,208,127,116,93,227,221,165,83,166,199,27,154,94,102,106,184,31,
-191,78,160,80,79,74,191,219,231,167,221,239,178,75,97,56,105,184,218,210,121,203,57,69,58,156,183,198,59,156,53,95,
-137,254,211,84,28,5,151,185,62,155,239,218,222,30,191,86,19,46,152,237,160,132,108,66,128,42,17,246,109,238,96,177,
-204,144,227,225,112,126,229,235,147,154,49,2,202,161,49,229,119,180,218,255,109,6,248,203,190,49,254,178,218,63,17,21,
-115,215,164,85,113,218,67,16,178,78,136,130,81,95,96,167,190,54,226,29,99,86,68,22,20,172,147,204,31,10,16,65,
-146,228,48,145,1,202,191,132,1,199,58,74,106,63,27,156,232,142,223,106,138,126,16,220,157,30,69,147,185,245,235,239,
-15,248,44,237,109,90,56,169,253,51,7,255,211,43,61,93,43,155,233,162,229,38,248,128,153,233,158,33,133,150,243,43,
-247,221,85,81,82,68,3,150,53,8,240,232,88,243,143,194,35,44,201,53,167,4,138,154,113,46,225,9,82,183,122,170,
-60,131,150,198,101,103,151,202,252,160,75,108,254,157,242,192,23,14,102,148,6,35,127,21,247,90,50,150,30,132,86,7,
-48,213,1,127,220,77,76,168,66,65,113,226,157,12,186,246,73,247,39,112,18,176,211,214,32,213,42,107,107,44,33,27,
-178,167,193,54,215,141,39,6,5,194,193,60,5,203,144,46,170,34,221,66,243,141,218,58,58,244,225,29,154,53,172,9,
-79,92,67,7,220,177,143,52,10,198,96,50,38,164,43,161,90,169,143,182,38,103,85,57,138,41,123,133,208,159,116,147,
-188,57,217,197,103,255,45,49,14,119,205,111,233,189,241,198,252,34,231,114,17,118,198,92,212,225,126,74,66,84,255,140,
-0,26,107,186,208,74,150,55,78,235,182,78,173,192,167,52,60,11,166,210,17,105,197,79,233,107,212,119,169,231,110,209,
-52,107,188,215,47,159,116,143,87,121,172,186,56,72,53,239,57,63,190,21,75,194,158,194,148,137,0,70,157,114,241,180,
-61,102,231,1,8,168,141,74,107,194,194,189,254,21,43,100,226,148,150,33,216,11,178,34,6,192,215,75,240,13,165,119,
-195,207,211,5,127,82,112,166,19,79,157,43,110,70,194,29,174,125,69,74,3,198,41,91,110,125,242,16,92,118,178,31,
-211,62,96,251,3,212,252,87,167,147,102,239,37,42,17,148,31,144,153,89,6,118,225,7,195,0,98,232,37,98,15,132,
-86,148,88,105,47,8,0,189,5,195,161,158,235,144,197,208,207,44,238,52,243,49,0,27,89,124,226,252,113,14,142,86,
-78,156,118,192,55,31,150,227,224,27,37,179,200,41,213,71,227,115,172,189,74,155,16,84,114,162,135,181,7,241,38,166,
-27,119,233,190,80,199,201,181,3,178,28,84,184,73,221,12,205,228,5,9,62,6,17,133,9,196,62,104,162,77,51,245,
-211,159,154,196,93,136,217,219,136,155,161,115,154,1,148,168,51,220,222,191,25,115,244,197,88,109,134,5,80,196,11,255,
-103,49,84,216,102,145,52,222,158,58,186,96,127,91,117,58,217,70,255,153,255,214,189,246,88,90,43,152,79,46,16,52,
-110,216,135,222,137,78,217,49,246,139,226,118,59,229,139,195,238,134,191,210,101,214,65,167,229,133,49,51,70,111,201,243,
-62,230,34,47,249,165,238,35,173,159,20,180,219,23,251,109,82,46,237,172,147,94,145,168,235,243,48,70,128,160,193,108,
-224,165,85,19,67,40,43,244,33,58,136,214,140,234,206,158,3,85,220,41,169,123,245,153,92,207,247,187,47,70,49,136,
-230,235,204,23,15,53,252,114,156,196,186,3,10,2,196,209,162,64,66,102,192,199,210,218,187,61,145,90,147,222,213,151,
-98,103,43,31,23,199,200,160,73,32,36,230,235,117,9,135,128,196,4,236,241,96,124,202,175,212,3,160,222,63,215,123,
-104,41,216,174,182,118,172,228,63,75,188,32,111,158,118,94,54,83,64,120,15,118,79,80,107,155,120,158,240,237,69,53,
-254,170,59,111,13,39,139,38,242,100,45,92,220,236,244,234,82,192,75,82,141,219,15,226,214,1,149,152,63,110,193,79,
-219,97,105,227,89,12,149,143,10,84,202,233,51,215,15,248,67,193,152,142,54,232,36,218,254,88,220,52,121,161,158,242,
-59,83,240,81,52,173,101,168,53,105,164,158,174,11,207,120,165,184,211,31,251,142,139,240,180,223,248,137,246,159,111,5,
-207,12,46,135,156,196,252,199,48,129,224,189,49,131,153,112,171,47,199,48,178,90,78,25,190,194,114,170,27,210,203,68,
-10,158,164,44,140,98,240,115,63,188,127,135,185,59,179,172,206,119,36,43,15,200,137,120,180,250,46,203,16,29,129,196,
-121,42,69,164,161,253,137,195,73,180,217,201,144,59,71,222,196,255,107,30,163,135,40,207,23,254,223,192,6,148,193,167,
-197,39,209,202,63,8,219,237,91,64,120,163,153,100,4,65,224,83,82,88,114,166,205,187,173,251,100,255,226,175,14,236,
-234,42,230,62,122,164,208,189,163,203,226,170,86,97,139,77,26,150,208,141,71,31,18,237,75,75,106,216,13,80,168,137,
-245,139,119,99,42,200,207,14,199,192,123,60,2,34,244,23,75,55,160,185,197,19,10,207,60,111,24,25,222,31,17,22,
-230,194,91,123,138,101,217,154,77,136,181,95,15,194,200,40,247,61,234,45,81,64,139,182,183,75,210,251,167,64,227,235,
-53,2,191,94,49,221,6,196,37,145,34,244,200,205,230,121,84,39,129,31,95,53,90,241,203,205,199,254,164,170,194,16,
-58,97,156,180,167,14,192,5,228,145,135,9,107,71,200,20,183,111,150,101,223,37,222,221,41,151,89,222,252,191,246,140,
-58,170,248,125,147,5,251,78,198,198,57,238,13,86,171,71,113,203,224,143,255,134,29,19,150,242,245,242,196,69,8,82,
-188,81,182,153,140,64,114,140,85,79,36,247,110,48,19,79,240,47,165,45,223,16,27,106,212,235,96,154,143,89,54,134,
-197,22,254,19,209,2,223,8,161,41,143,235,200,162,148,63,10,70,17,3,12,241,72,215,98,185,223,237,85,60,171,71,
-16,106,54,98,235,102,34,13,71,250,185,248,165,149,91,149,82,110,73,163,39,178,252,181,61,79,223,88,211,146,222,228,
-8,92,218,181,102,155,255,19,200,46,134,20,192,106,11,241,182,160,108,132,93,79,52,232,236,28,240,49,91,101,36,205,
-57,44,7,120,158,241,75,30,60,11,32,203,135,46,120,62,22,90,218,183,204,62,123,17,57,199,44,71,172,30,225,54,
-206,168,255,134,116,202,231,218,239,217,68,196,200,100,181,106,194,98,155,136,253,251,63,187,170,7,117,65,232,80,206,183,
-167,119,5,208,220,86,36,6,84,185,174,252,64,111,42,147,95,67,5,174,223,248,19,242,163,96,109,216,38,142,4,254,
-158,46,142,226,79,108,250,20,110,213,190,20,15,84,62,251,75,51,4,107,139,45,216,193,135,148,122,133,254,111,239,37,
-58,32,24,139,206,219,93,5,212,29,174,63,143,100,89,211,145,175,33,132,73,142,96,134,158,221,39,238,239,134,251,167,
-9,250,40,22,172,83,39,189,142,242,80,127,174,242,17,40,83,134,241,45,41,180,70,163,224,68,97,252,69,120,93,100,
-26,118,195,130,40,122,135,77,218,165,189,175,244,39,128,222,121,170,13,211,219,214,213,187,248,216,23,203,98,212,153,124,
-253,0,30,215,52,164,57,119,81,111,226,97,234,122,173,251,8,214,67,117,72,240,101,246,39,219,57,154,134,46,106,47,
-15,137,238,230,168,114,47,200,43,109,131,95,145,72,30,195,1,212,12,190,129,196,255,240,253,96,34,92,53,215,51,77,
-224,115,121,12,126,6,73,147,191,61,181,21,137,167,133,232,138,155,157,114,171,157,193,191,38,217,158,77,182,224,95,245,
-9,210,73,215,62,49,167,156,177,204,196,8,67,140,169,158,149,53,125,167,123,206,186,129,84,250,70,79,7,10,186,2,
-47,252,180,236,140,207,171,178,124,127,163,249,100,251,235,163,183,100,92,162,230,225,51,175,14,145,195,124,19,103,84,203,
-238,147,70,255,60,36,87,203,183,147,86,43,183,137,27,34,171,160,204,214,61,75,39,232,217,69,75,88,158,161,75,76,
-180,98,119,250,0,164,105,60,82,94,218,201,17,210,122,100,138,107,243,137,133,119,235,183,15,56,245,44,92,3,184,212,
-29,48,153,80,153,35,222,42,149,130,84,100,37,155,4,46,223,75,240,119,66,148,5,59,200,47,31,158,157,165,208,68,
-137,154,41,217,116,144,248,48,243,244,182,87,203,169,72,174,72,223,32,229,145,159,215,190,220,103,128,111,7,15,209,113,
-13,179,212,181,36,83,243,78,238,199,226,111,110,29,71,58,239,134,11,199,105,176,183,100,1,41,32,32,8,250,125,186,
-102,132,174,208,65,104,53,245,100,131,180,0,254,154,76,136,110,39,85,108,134,15,69,201,72,13,161,163,133,57,180,16,
-70,232,26,111,137,44,230,103,234,224,137,104,226,228,96,227,13,183,58,48,194,218,112,216,17,179,227,52,15,141,130,115,
-162,69,18,104,62,245,97,22,134,232,64,244,223,213,220,203,169,197,38,76,203,72,88,18,161,99,22,83,126,23,35,191,
-166,227,126,159,204,183,52,6,150,39,104,109,24,98,217,179,43,43,232,45,17,140,74,110,16,185,126,33,26,252,191,76,
-188,135,131,197,182,76,12,54,59,229,146,18,115,34,195,68,163,40,127,40,206,34,201,133,104,187,172,110,251,200,107,33,
-70,150,130,43,216,226,199,98,35,220,80,250,103,177,189,232,58,149,51,226,62,1,80,44,201,28,131,252,11,201,111,239,
-96,128,139,68,56,143,165,77,167,14,215,4,15,50,233,133,229,223,153,230,60,24,114,11,198,220,193,72,155,86,188,196,
-139,224,100,97,173,161,74,209,100,253,163,45,160,90,224,13,188,152,194,22,107,22,224,235,242,142,183,76,46,98,27,167,
-180,254,36,56,35,128,65,95,86,154,100,198,49,198,249,82,233,242,91,18,87,112,92,181,57,235,106,245,77,129,7,144,
-188,53,109,108,107,37,86,99,27,205,140,233,20,140,60,69,164,199,107,195,134,5,255,45,25,228,156,140,216,118,192,51,
-172,215,253,112,82,105,179,69,106,66,110,67,136,91,28,202,162,113,207,38,255,247,122,133,32,107,188,202,212,64,158,95,
-133,63,115,225,68,91,92,1,42,255,244,0,73,85,178,197,118,227,3,178,12,159,171,214,116,215,242,55,9,244,22,246,
-205,133,10,225,240,134,232,189,9,13,9,131,37,132,122,1,19,198,220,96,243,6,34,60,47,76,34,192,142,77,75,182,
-93,249,16,101,233,141,74,99,90,22,108,239,178,28,113,175,115,62,41,30,182,21,175,38,227,236,26,148,210,78,251,182,
-229,198,175,93,82,160,159,136,236,149,49,246,39,156,212,115,111,170,232,209,219,155,174,69,78,21,79,242,249,36,108,206,
-226,17,237,125,213,67,116,121,185,148,149,224,191,255,240,120,11,33,172,212,225,108,201,167,225,9,178,248,63,161,139,145,
-251,139,59,143,140,15,56,20,108,151,66,167,254,65,86,52,193,0,222,192,97,41,24,233,76,40,48,21,65,91,154,93,
-201,167,51,42,199,119,86,11,107,117,75,37,62,85,58,22,151,177,58,18,104,69,194,87,27,61,114,23,188,72,102,191,
-138,136,105,210,103,195,167,20,233,157,66,248,4,55,99,93,194,95,91,93,89,196,187,121,114,140,195,22,107,10,37,95,
-213,212,112,117,103,218,237,209,7,203,60,159,19,163,214,51,96,198,172,156,235,0,125,246,16,214,237,95,92,82,161,142,
-130,130,187,105,88,254,243,175,74,234,163,28,230,4,100,26,14,107,17,116,140,124,101,127,115,206,35,201,226,88,196,56,
-54,232,99,0,3,230,223,97,70,88,11,92,67,253,122,32,57,125,12,50,108,252,234,41,180,142,156,216,13,91,202,112,
-100,177,41,168,92,211,71,35,170,12,8,64,102,30,96,44,39,77,121,182,173,191,230,40,210,228,196,4,230,245,4,142,
-167,183,242,222,54,30,206,185,249,104,129,26,4,217,169,236,3,1,11,234,48,194,196,248,136,229,206,11,9,57,104,152,
-65,230,69,38,36,242,122,86,3,112,90,55,149,10,75,74,157,19,77,71,12,128,31,248,115,142,103,43,108,5,146,81,
-154,147,133,189,253,226,59,19,186,92,240,113,6,228,98,102,36,113,66,16,189,69,102,220,188,253,57,213,110,36,71,172,
-126,190,220,6,218,145,109,252,201,171,185,159,43,254,252,240,7,158,6,201,51,32,163,75,27,128,207,138,75,44,157,225,
-78,192,46,136,154,60,69,57,204,141,119,242,255,126,97,40,213,17,111,150,98,48,182,215,25,22,241,216,169,118,38,253,
-223,64,130,220,166,246,192,221,27,78,120,106,167,173,102,47,184,43,84,120,6,252,181,91,17,88,8,117,158,47,25,247,
-201,184,164,29,215,174,153,90,39,132,240,149,84,6,247,102,131,85,90,37,164,60,102,207,155,138,179,10,233,176,12,233,
-75,157,15,33,152,159,113,131,186,105,0,229,37,208,255,200,246,185,54,238,33,13,239,9,14,121,238,97,193,85,82,94,
-160,52,68,71,113,119,213,38,145,67,100,39,188,144,166,170,12,195,40,5,89,11,66,212,53,73,91,51,98,92,62,88,
-167,165,41,168,105,204,101,114,118,64,17,249,89,134,110,228,13,45,250,17,170,131,102,239,234,168,143,216,167,26,247,254,
-199,21,179,255,138,250,131,207,255,243,232,168,138,169,26,152,62,237,184,194,52,103,121,179,110,164,59,99,198,255,102,33,
-167,193,16,181,190,136,191,109,75,105,132,131,8,107,215,52,74,35,80,27,82,110,217,49,254,131,154,35,206,59,137,129,
-148,44,108,215,138,60,211,229,96,231,155,55,182,232,200,126,75,217,25,196,151,117,108,56,157,95,58,138,68,231,251,51,
-161,6,101,194,151,202,7,36,200,41,160,252,116,149,42,140,125,90,252,72,139,198,114,46,153,10,19,228,100,90,245,169,
-31,251,26,38,234,142,123,144,49,90,67,133,173,69,32,117,129,174,92,180,71,247,240,163,65,59,157,132,94,238,127,97,
-42,56,233,31,213,242,104,145,128,63,149,40,202,198,217,53,63,220,70,189,246,166,2,40,29,81,0,130,74,50,162,48,
-39,34,86,30,94,145,8,25,9,227,107,53,229,33,117,114,224,21,202,140,239,43,33,220,168,39,62,234,243,2,108,104,
-173,69,141,167,104,144,138,0,25,115,99,229,147,187,109,203,87,254,198,245,225,100,194,137,136,128,169,102,199,179,113,44,
-103,182,38,189,43,51,72,193,49,201,13,232,105,36,38,254,245,11,233,222,49,141,214,45,232,127,120,90,27,118,66,191,
-189,150,4,177,70,220,223,237,238,52,101,202,99,69,85,202,16,95,67,97,77,204,95,237,110,82,108,139,12,120,78,11,
-134,46,170,220,135,17,225,216,225,21,78,217,98,233,250,113,215,134,210,60,203,138,71,179,249,216,75,70,121,187,207,94,
-168,97,123,35,163,118,153,210,84,177,56,158,139,235,248,212,34,250,23,33,65,138,180,176,32,97,197,185,74,153,159,108,
-145,199,227,239,116,212,116,39,198,214,95,24,193,17,46,192,253,224,79,22,199,156,83,208,138,15,99,46,173,175,131,222,
-33,84,86,32,25,67,38,4,156,81,51,150,154,150,103,195,26,145,190,190,66,87,179,80,100,230,244,50,161,62,141,74,
-58,250,47,8,50,142,244,236,121,224,162,85,219,199,243,218,0,65,253,122,141,75,238,178,53,11,80,139,197,132,182,141,
-121,20,175,79,110,115,177,113,240,125,222,75,219,16,2,9,1,153,136,116,152,0,128,66,122,73,140,11,194,49,130,210,
-186,6,221,147,160,141,172,182,8,4,182,82,80,166,199,165,107,29,255,1,156,38,236,190,201,202,175,130,13,204,150,64,
-92,186,82,127,167,119,33,83,208,26,248,70,98,122,104,170,224,62,91,38,197,30,43,138,226,23,214,255,76,232,192,41,
-44,145,194,117,202,93,122,235,235,137,127,130,235,25,226,208,1,21,45,132,29,174,207,169,207,180,152,192,54,34,47,239,
-248,118,22,231,222,163,99,167,104,140,99,101,69,3,124,245,182,182,229,99,49,252,6,160,157,194,112,39,69,214,152,88,
-249,212,78,67,78,177,235,98,71,145,187,221,238,230,238,172,101,98,90,247,76,133,177,88,195,217,28,165,196,114,51,14,
-104,231,129,35,142,204,180,170,80,0,41,203,13,239,21,209,94,30,221,147,140,241,229,130,191,30,248,6,14,192,121,67,
-110,159,241,107,85,50,228,82,8,159,65,226,224,139,90,112,161,247,194,215,141,156,245,131,89,13,100,232,83,224,109,130,
-36,58,75,111,181,189,76,134,20,136,33,38,33,93,156,141,199,208,145,173,144,107,12,87,121,130,138,230,180,35,178,178,
-160,70,41,254,89,107,55,99,38,234,97,233,161,179,220,208,228,172,126,15,129,76,57,156,140,192,172,116,26,235,39,1,
-102,42,232,156,200,26,78,41,96,158,74,26,116,47,123,198,99,25,210,227,140,22,8,0,237,228,180,43,125,38,223,208,
-102,139,190,67,199,46,58,7,150,56,169,15,159,125,210,211,204,207,28,143,62,114,177,131,199,92,96,162,50,249,181,250,
-245,174,211,196,13,92,124,214,97,253,242,5,77,237,64,215,176,87,233,166,135,28,82,74,77,149,154,182,17,137,138,144,
-85,214,3,21,84,249,172,193,87,7,232,201,160,88,158,75,228,16,232,207,1,179,10,54,203,83,74,173,192,196,50,231,
-251,231,47,180,3,113,175,154,172,154,152,30,255,197,173,110,62,216,55,81,235,62,98,216,135,171,180,206,224,143,99,101,
-116,208,91,198,11,61,25,73,204,86,109,40,192,239,74,120,178,70,38,62,2,35,202,77,201,80,83,226,57,139,168,87,
-21,167,64,80,48,124,202,210,242,99,46,41,26,209,114,201,66,69,244,115,144,141,76,18,149,210,57,53,214,175,167,61,
-129,34,195,63,186,6,250,43,31,163,194,90,31,8,36,242,166,70,202,150,105,230,223,99,82,220,130,76,155,30,99,90,
-89,203,187,123,155,241,98,105,188,42,173,204,231,116,95,210,254,44,7,148,122,82,164,86,88,110,79,181,255,155,64,91,
-117,130,80,92,62,138,51,98,206,167,50,15,243,251,113,117,84,97,145,185,139,167,133,99,58,232,129,63,182,186,102,249,
-10,113,218,38,171,175,8,196,76,92,114,137,177,209,26,164,138,177,150,200,53,106,255,22,251,70,17,139,165,46,0,21,
-81,95,98,207,42,34,206,32,6,64,139,69,86,195,254,40,34,111,38,201,101,176,70,47,95,23,137,81,208,100,244,172,
-215,196,115,205,216,46,142,3,124,123,113,100,219,236,99,199,30,203,105,60,46,238,6,144,19,94,23,200,88,150,201,177,
-201,18,120,106,248,184,235,82,86,190,220,255,218,50,81,11,11,7,119,100,242,44,184,7,30,18,69,210,71,203,94,178,
-95,87,166,91,141,94,223,198,122,14,154,43,76,64,125,49,48,38,92,226,29,245,95,104,61,159,31,22,68,10,123,128,
-225,177,143,172,34,49,197,20,208,232,255,30,231,201,207,182,137,28,78,31,126,212,34,230,206,58,145,150,26,174,150,151,
-22,247,147,98,219,52,139,86,211,141,229,211,84,73,152,44,215,78,225,58,219,96,117,172,0,255,35,44,249,180,71,45,
-237,8,172,169,133,252,23,76,201,95,154,41,243,232,5,221,196,212,36,50,148,131,92,224,133,230,168,223,220,50,161,25,
-203,151,80,214,67,5,20,199,187,94,82,164,137,101,162,80,2,138,146,251,121,120,56,178,144,139,222,7,64,110,124,10,
-33,140,62,57,50,166,153,194,174,50,248,20,20,101,34,67,140,79,213,122,92,225,34,153,61,55,38,232,157,39,203,162,
-67,7,252,124,114,87,91,237,129,69,7,140,251,112,38,96,243,47,71,124,54,201,44,119,215,206,0,52,93,223,221,15,
-69,57,202,89,246,244,14,131,138,230,172,150,174,245,182,57,89,177,219,203,206,217,105,228,24,193,247,142,184,4,172,218,
-156,156,113,103,27,74,133,113,148,35,95,24,197,53,128,196,24,221,204,22,186,131,40,41,132,133,16,183,16,22,72,187,
-141,133,253,198,4,215,180,188,56,159,242,0,15,118,51,170,239,203,92,37,13,239,220,11,59,179,39,43,199,84,225,172,
-91,70,74,244,114,2,165,90,178,214,54,247,230,226,252,1,145,87,209,20,187,108,231,132,208,104,182,73,43,85,252,10,
-221,185,91,146,164,154,240,171,21,235,129,90,113,124,161,252,47,4,150,38,216,40,77,226,163,90,204,172,15,171,110,144,
-47,126,248,165,130,164,45,55,126,24,130,45,85,46,46,191,67,229,85,128,95,62,96,102,217,196,75,41,66,91,129,120,
-102,195,62,196,218,69,173,90,130,11,46,65,68,173,113,136,69,38,76,146,14,243,1,82,228,72,252,230,115,127,192,167,
-145,194,176,167,213,145,192,23,243,13,17,149,218,71,42,97,41,188,208,197,135,195,186,100,52,111,10,251,163,13,18,54,
-216,204,144,95,60,6,40,190,159,16,189,12,115,39,236,185,146,58,236,13,238,195,204,143,155,19,174,42,84,113,229,212,
-250,248,164,76,88,235,195,75,221,143,187,8,54,81,59,91,151,111,4,5,73,147,177,47,193,99,169,0,223,37,196,159,
-209,237,163,50,129,165,77,46,171,203,99,84,157,132,122,248,109,23,76,68,16,172,52,24,195,83,253,12,119,138,6,74,
-146,136,39,21,6,201,30,172,112,238,52,185,201,24,220,170,102,14,201,255,240,216,110,101,138,49,205,222,155,176,178,112,
-104,93,170,145,145,161,39,36,136,251,47,147,173,240,128,4,124,243,74,243,102,98,142,241,175,134,84,198,13,24,96,90,
-145,139,10,107,189,254,36,208,144,180,6,141,252,81,128,18,155,171,238,57,144,169,186,56,44,251,45,235,199,216,59,96,
-108,136,28,89,95,117,177,249,25,210,59,140,212,92,168,123,167,166,31,239,136,233,201,145,9,49,35,9,72,73,102,119,
-53,144,131,163,241,81,128,142,14,185,193,128,248,21,94,197,126,240,167,161,211,142,247,188,36,80,34,178,183,45,98,7,
-95,147,23,1,64,36,103,89,203,61,42,129,224,167,97,59,181,6,152,100,38,128,237,133,132,169,24,17,80,236,225,27,
-210,133,89,27,197,191,122,27,209,4,190,223,143,237,251,244,201,28,243,82,249,86,101,206,100,72,122,2,141,101,187,51,
-167,73,178,23,225,25,46,164,216,89,202,29,131,3,255,246,207,13,97,183,84,182,136,74,116,89,190,244,98,188,165,165,
-68,89,147,26,113,160,245,38,30,52,219,120,17,181,218,78,166,162,188,50,44,100,26,54,216,56,226,231,64,226,206,250,
-140,105,32,92,102,207,198,173,43,13,125,124,157,67,247,13,240,216,206,12,49,190,85,122,101,255,43,15,164,86,188,41,
-249,22,234,207,230,221,111,52,215,33,167,39,159,96,92,25,222,148,160,3,44,222,177,52,138,168,179,83,15,118,21,80,
-55,100,23,62,241,170,34,104,94,35,178,59,7,234,11,164,47,15,35,156,48,12,137,141,158,76,216,212,154,12,65,39,
-126,177,7,165,222,65,101,245,195,42,239,88,218,69,5,50,195,172,54,66,122,225,138,176,154,111,72,31,24,33,98,189,
-60,193,221,227,31,59,199,231,163,240,153,22,86,193,85,251,147,93,111,123,67,206,7,130,19,69,236,251,140,84,198,22,
-123,138,215,106,9,140,11,232,109,30,33,114,84,248,32,85,133,105,135,37,47,4,122,165,204,108,208,118,193,249,210,120,
-243,140,38,245,107,179,61,238,146,165,178,239,84,134,39,189,254,39,139,102,209,29,3,177,244,61,25,6,108,43,230,251,
-238,58,196,205,62,171,26,14,119,61,17,65,98,136,117,85,46,113,117,35,62,30,89,33,241,250,73,118,66,213,246,139,
-1,218,49,34,147,82,64,196,126,171,39,29,126,114,6,182,193,198,91,121,255,192,231,11,126,76,78,76,7,138,46,147,
-84,127,137,123,240,220,225,223,208,111,252,135,112,232,232,96,67,144,115,210,45,210,36,197,28,231,185,105,145,125,93,6,
-10,185,164,171,142,13,42,43,229,54,54,28,117,254,104,18,248,5,110,88,12,155,49,11,4,173,94,169,43,126,155,190,
-54,16,117,10,7,127,135,155,213,146,115,189,101,1,60,99,130,188,203,157,52,169,48,197,48,15,144,196,104,217,108,152,
-137,162,145,229,102,18,172,58,180,50,0,241,64,141,200,161,128,90,206,244,92,235,34,27,231,69,125,142,73,118,27,37,
-134,181,186,195,98,45,105,26,24,53,113,23,242,13,168,8,163,85,117,93,25,70,253,74,251,112,202,61,228,213,3,6,
-254,60,63,184,110,133,45,226,73,97,177,226,14,149,92,252,152,124,63,102,222,52,245,208,181,178,216,236,147,60,251,131,
-216,134,0,131,194,247,190,240,34,205,188,201,191,200,163,65,236,51,255,115,121,156,65,114,145,25,114,246,177,158,173,17,
-92,163,104,12,101,12,86,113,16,166,208,155,6,179,99,246,191,247,243,218,253,98,18,119,140,206,11,166,241,29,208,197,
-91,66,158,251,113,47,109,162,62,11,52,132,156,211,12,54,191,164,250,243,188,212,172,118,51,214,69,189,228,224,76,69,
-74,102,111,203,34,48,88,143,170,19,243,254,178,28,155,178,14,103,81,59,247,127,250,59,137,24,248,92,102,37,222,41,
-114,106,63,152,48,24,53,142,73,204,168,192,135,255,81,250,70,93,22,125,69,210,239,138,185,152,16,113,151,199,79,251,
-128,57,45,68,93,246,200,249,45,91,170,115,170,141,74,82,155,206,70,165,14,153,121,81,166,196,20,149,142,188,231,80,
-72,167,108,122,58,61,125,111,128,85,173,172,9,248,71,119,59,175,240,113,122,251,74,51,162,189,177,67,37,42,222,167,
-154,87,95,11,81,154,161,135,48,95,198,216,12,23,38,87,112,230,107,110,219,68,135,238,49,146,241,154,144,179,135,111,
-93,77,228,187,159,29,11,67,43,201,238,204,15,66,227,187,185,54,207,217,10,97,138,234,63,24,63,170,113,63,128,123,
-50,247,10,74,190,144,240,84,53,91,218,194,203,102,157,49,130,173,14,35,141,239,22,103,150,252,147,21,54,115,117,220,
-253,114,109,139,245,89,178,96,127,30,9,50,248,135,116,172,65,0,227,0,102,211,199,4,43,177,175,244,26,165,27,218,
-90,144,255,84,2,102,46,92,46,153,89,43,77,124,226,118,47,66,52,11,193,58,6,115,27,171,205,53,169,116,138,72,
-63,240,71,45,90,239,191,225,67,143,231,166,37,58,66,206,40,133,160,242,215,4,252,202,170,160,191,108,162,87,12,60,
-51,135,55,204,165,146,160,15,163,184,168,105,46,242,27,72,127,39,187,235,183,113,238,190,50,208,99,25,189,18,12,26,
-1,26,95,225,160,69,54,254,180,102,200,9,207,148,240,161,201,240,224,70,255,178,99,178,27,88,228,59,235,159,157,209,
-85,12,100,108,173,125,7,167,167,88,26,38,215,252,177,254,144,100,135,105,82,255,157,189,106,120,238,41,65,68,105,71,
-54,48,0,164,173,246,208,168,48,240,33,84,226,55,241,195,164,233,98,204,20,136,139,23,240,159,179,249,87,3,61,208,
-103,99,219,10,224,6,178,32,46,250,224,38,30,4,49,3,148,58,6,237,53,172,87,185,79,206,145,7,154,150,46,166,
-147,140,212,16,40,48,208,136,186,120,225,4,250,100,26,199,55,151,93,109,95,145,95,231,201,223,85,196,235,223,93,196,
-102,84,192,222,81,15,217,255,193,207,121,144,16,6,173,143,44,206,94,236,57,243,132,221,57,33,108,210,7,38,120,21,
-221,129,106,137,253,137,39,210,86,67,11,16,96,242,3,250,41,119,68,197,67,103,82,87,18,123,38,233,144,147,32,208,
-22,18,75,114,101,15,78,69,228,93,153,48,22,238,22,217,85,230,56,137,42,140,223,99,22,228,231,114,109,237,48,149,
-102,3,203,40,154,137,162,14,210,163,229,123,161,224,80,166,14,47,67,212,80,122,224,46,137,244,110,135,121,90,56,33,
-228,155,140,177,219,26,168,146,172,127,159,243,127,181,72,126,165,236,82,131,71,247,118,247,59,45,217,7,129,185,4,252,
-101,130,57,236,24,115,40,214,132,179,189,72,100,134,128,131,180,99,246,139,37,136,84,131,159,50,179,109,124,225,188,245,
-72,117,71,187,137,82,233,221,154,186,120,255,200,156,88,104,180,214,104,58,76,146,181,211,251,217,83,192,140,35,210,241,
-127,224,62,170,2,40,181,33,204,227,97,224,106,213,133,75,247,14,223,70,102,0,3,86,53,174,44,75,60,25,128,192,
-183,213,149,82,184,188,248,223,56,141,211,11,29,37,113,172,4,166,224,112,10,51,101,244,237,55,62,194,233,115,67,60,
-10,189,191,167,29,69,150,229,119,64,191,122,92,85,201,67,48,155,157,50,60,118,64,81,149,163,5,132,133,38,90,91,
-225,96,151,37,56,45,69,78,103,82,74,125,100,82,47,153,24,5,246,46,155,233,73,152,184,145,200,138,144,27,234,247,
-176,167,184,116,184,212,159,33,88,204,111,219,229,124,177,10,23,72,146,35,119,93,57,225,153,210,245,97,31,197,103,195,
-157,149,202,243,128,192,65,245,58,146,21,20,244,169,39,77,227,45,105,45,103,191,224,104,205,208,236,88,204,113,6,47,
-7,29,130,135,204,27,38,248,31,52,209,230,222,88,196,71,10,10,211,4,20,27,236,237,141,41,90,124,39,98,63,156,
-13,193,1,255,202,189,148,103,80,152,66,85,242,9,147,133,107,216,29,66,225,246,119,0,168,67,244,82,66,124,161,164,
-41,3,92,230,51,94,215,199,65,185,77,114,6,222,241,251,53,109,234,124,117,3,47,241,16,194,147,22,95,13,175,67,
-169,185,42,229,89,39,221,39,30,0,105,122,138,237,106,152,178,209,27,158,70,22,192,103,51,147,107,167,244,111,57,0,
-173,115,184,104,147,131,134,194,38,207,102,58,8,32,101,81,204,117,199,191,15,172,43,177,59,33,239,148,205,166,253,95,
-236,201,208,7,215,98,100,245,126,149,231,68,178,202,95,67,250,236,153,185,80,57,14,131,125,48,190,154,138,18,165,98,
-239,192,98,166,79,156,124,164,237,240,191,215,247,130,10,227,240,77,190,66,179,86,147,170,208,170,51,22,91,241,81,29,
-184,179,219,199,200,196,196,98,235,215,255,94,214,157,4,54,228,5,202,206,31,28,100,137,5,54,54,161,52,9,74,5,
-48,75,214,138,38,10,42,133,79,219,6,176,97,30,96,209,206,232,91,74,198,159,104,175,124,115,39,101,1,240,135,107,
-15,108,16,196,104,115,180,183,36,184,118,145,176,241,210,15,38,211,33,102,255,64,80,100,178,215,138,86,97,190,129,208,
-220,78,55,81,210,222,235,11,94,19,196,225,8,93,165,189,25,62,247,150,146,222,225,221,248,121,223,187,66,143,178,26,
-108,164,227,22,233,81,187,192,127,118,96,125,38,105,29,168,162,90,171,93,222,238,98,216,175,132,24,163,182,252,38,132,
-168,124,111,163,228,248,171,167,144,50,221,175,165,49,178,205,151,116,85,47,164,93,249,90,62,226,82,150,104,14,199,13,
-181,237,231,4,19,10,53,246,157,53,112,39,109,42,7,172,132,23,193,38,146,42,100,217,83,131,43,117,24,43,179,192,
-68,47,237,247,47,51,165,219,99,173,240,130,12,175,150,98,209,209,199,88,31,143,19,219,213,181,49,183,22,113,232,44,
-99,220,146,223,160,36,136,155,243,108,225,69,217,169,208,169,4,167,169,180,131,202,5,65,149,125,111,146,153,254,23,39,
-111,79,183,27,133,205,130,223,231,221,38,27,38,231,211,103,107,205,43,196,165,154,105,251,59,184,129,71,144,169,129,243,
-89,224,91,167,108,146,163,48,248,8,3,44,188,16,194,22,123,214,168,175,40,5,43,250,176,208,245,147,100,193,139,253,
-183,123,112,60,212,64,219,122,238,103,202,171,15,144,192,229,238,30,113,28,178,25,128,243,216,255,247,100,22,244,105,36,
-120,164,240,223,74,0,17,91,79,140,244,82,127,174,164,104,47,233,223,229,241,39,129,227,133,20,58,217,43,234,24,154,
-186,9,40,219,80,28,14,121,83,240,153,4,176,243,197,144,230,49,172,110,210,130,111,38,19,255,115,239,53,122,55,96,
-227,140,114,63,226,164,243,21,94,6,160,63,185,104,203,120,218,140,87,229,86,148,118,226,219,121,140,183,115,234,24,94,
-200,190,241,139,246,92,30,70,45,186,32,160,250,10,39,83,243,19,44,114,222,58,70,10,237,29,161,34,204,106,229,204,
-2,206,32,166,151,249,237,16,205,117,166,89,205,221,220,159,206,131,38,122,251,112,187,84,67,74,247,219,140,206,200,198,
-164,167,158,72,191,135,240,59,196,233,49,169,14,23,150,114,115,186,178,172,19,242,130,59,139,110,5,14,94,159,63,93,
-153,7,0,154,34,118,130,191,147,150,12,134,234,173,51,223,183,229,103,4,230,131,77,112,170,58,201,124,130,154,151,244,
-76,202,0,153,164,255,250,129,110,101,206,31,168,76,129,31,92,222,250,95,68,160,46,23,225,243,229,90,172,116,147,12,
-78,144,59,141,131,6,217,201,32,74,58,28,42,69,105,48,19,217,223,39,239,243,209,0,225,136,192,94,35,245,61,92,
-164,69,187,64,42,44,178,206,101,246,163,37,187,181,79,2,135,161,103,56,9,151,75,44,76,51,57,165,178,91,154,31,
-209,203,130,232,204,248,240,38,168,31,146,244,31,77,122,248,236,15,178,24,21,26,240,97,142,17,223,31,51,171,94,60,
-168,32,97,222,97,158,107,109,97,21,183,9,159,104,40,132,69,128,235,114,22,131,119,18,111,6,70,43,168,150,6,38,
-226,12,33,45,192,212,87,64,159,157,161,223,173,53,118,55,85,235,7,160,187,208,41,127,91,46,195,246,147,136,161,176,
-184,157,203,100,224,248,219,200,61,12,255,98,103,167,119,131,192,252,19,8,246,193,12,96,237,84,136,141,245,253,49,118,
-162,160,159,80,207,80,85,211,8,220,174,143,156,177,232,51,2,129,160,64,17,214,34,187,244,112,152,220,127,128,47,155,
-81,63,217,154,118,192,112,97,221,252,63,100,105,205,84,114,112,17,59,96,97,55,239,141,13,175,204,235,255,233,248,39,
-244,79,61,52,183,243,34,139,204,213,85,5,14,219,229,25,52,251,185,65,158,104,44,2,247,179,31,209,158,145,86,181,
-14,6,117,41,190,236,171,103,110,93,38,5,55,173,49,54,163,76,156,149,12,60,211,222,21,225,25,131,43,4,147,210,
-239,145,97,211,246,111,164,66,138,120,131,145,241,169,153,178,178,65,226,226,250,162,128,120,24,17,118,21,21,233,231,229,
-19,61,71,240,79,119,148,244,205,202,116,166,83,45,95,99,207,74,131,235,137,3,16,161,124,253,17,80,71,146,227,154,
-96,166,32,23,17,118,187,119,13,50,111,154,246,158,174,22,135,193,232,111,16,33,199,146,42,113,11,254,113,30,233,42,
-250,246,8,29,7,77,228,92,204,22,189,14,50,121,91,99,49,150,72,15,66,144,118,139,190,206,159,116,133,60,73,200,
-60,166,168,233,77,234,227,57,128,7,113,87,15,61,95,201,90,31,203,141,217,112,139,7,213,135,82,200,139,236,234,23,
-241,243,185,35,214,206,199,166,102,81,63,123,230,182,54,81,213,168,148,166,5,243,152,74,231,182,222,39,198,160,125,199,
-250,97,97,119,47,50,41,107,127,65,224,71,94,50,79,254,152,69,130,89,125,250,133,126,127,198,253,0,75,71,3,63,
-236,117,27,232,158,106,252,159,248,17,52,27,118,246,108,33,61,105,101,60,19,251,223,88,184,224,137,142,110,157,119,149,
-99,172,210,15,184,55,224,245,87,37,29,229,187,43,11,155,158,22,203,29,62,120,232,202,38,212,194,142,241,240,146,5,
-229,234,37,37,114,198,179,101,119,38,166,102,20,240,240,114,97,252,88,132,217,21,146,243,112,9,238,99,140,82,43,247,
-153,212,225,132,37,115,150,203,161,202,110,181,23,232,10,86,161,2,241,24,3,69,138,229,159,163,145,233,167,191,204,191,
-114,204,168,214,30,137,130,103,96,96,38,173,114,255,201,151,143,20,149,60,46,94,145,50,6,84,230,247,85,2,252,253,
-152,214,164,207,21,48,23,20,33,9,192,33,220,8,120,108,218,212,36,94,33,97,91,23,230,217,239,45,215,45,93,118,
-0,115,82,90,41,79,195,141,139,222,111,82,110,165,39,91,205,173,54,123,38,11,18,93,165,52,232,122,250,33,227,162,
-118,224,102,195,10,138,77,215,76,94,144,140,213,10,58,168,29,186,255,235,46,17,85,159,39,155,183,97,93,107,86,75,
-1,95,32,27,41,185,103,108,226,83,135,121,81,100,200,34,59,117,158,182,121,39,58,181,252,237,5,240,220,247,190,197,
-111,196,122,104,246,98,12,105,53,220,254,93,183,185,129,24,71,78,173,12,87,193,232,54,31,254,202,31,152,235,100,213,
-51,85,71,175,35,68,253,75,40,111,109,126,26,142,115,231,211,158,132,16,144,69,13,51,224,117,104,190,88,40,229,134,
-255,244,153,47,119,174,60,246,96,151,175,124,255,213,75,62,204,189,65,41,58,96,1,214,173,153,11,80,71,110,195,253,
-131,125,122,189,215,77,49,254,112,143,172,116,37,194,251,236,87,90,27,4,38,83,88,23,46,105,28,140,163,196,208,57,
-41,50,207,220,217,228,93,179,95,151,83,126,226,250,80,153,127,138,84,72,108,183,156,28,250,234,191,14,201,90,217,46,
-221,49,145,167,19,11,14,142,220,92,236,59,59,176,144,80,83,112,247,170,118,143,103,152,65,60,253,158,174,249,17,248,
-91,124,169,83,127,12,29,39,224,255,26,7,240,199,229,69,7,233,234,99,148,207,42,156,140,113,8,193,185,251,91,116,
-121,218,17,64,118,39,191,97,9,30,38,199,93,173,237,109,169,82,108,233,253,155,117,66,244,111,227,17,89,205,174,137,
-173,153,112,67,222,156,13,205,58,24,238,124,97,29,212,35,29,109,108,187,245,210,120,255,190,245,212,93,188,84,212,213,
-77,244,40,76,164,47,174,16,7,90,105,26,184,12,130,53,162,16,86,181,86,232,228,9,67,132,14,86,18,79,146,177,
-164,76,84,33,53,138,174,57,129,212,114,9,61,97,82,89,225,117,206,154,198,241,199,219,116,38,166,136,238,111,198,140,
-223,153,13,38,180,96,219,157,72,156,25,11,233,216,187,38,139,195,111,163,106,83,192,24,156,157,205,181,89,147,74,120,
-237,25,164,28,249,136,218,224,11,220,209,34,162,188,16,205,94,208,118,4,37,172,175,157,132,111,144,158,183,3,171,197,
-162,2,44,170,120,183,252,158,56,90,137,98,187,140,226,21,16,149,133,253,52,221,32,189,128,38,253,5,143,52,202,43,
-132,146,141,119,125,236,147,106,254,104,245,196,254,209,98,209,251,106,234,63,251,198,233,191,249,213,204,90,165,213,178,67,
-10,169,92,144,243,228,90,38,3,62,45,155,9,43,97,124,231,63,119,71,89,98,231,18,98,100,156,226,185,116,8,213,
-84,243,87,39,232,178,142,122,232,62,60,13,196,207,90,99,103,95,173,59,66,154,246,36,212,94,206,70,129,145,64,217,
-213,212,145,119,176,151,135,207,65,151,146,99,242,224,107,6,69,250,211,156,5,88,246,244,163,24,229,84,49,91,104,170,
-111,236,154,4,145,119,64,225,143,95,254,77,212,165,249,112,39,24,216,79,151,170,8,117,232,61,177,133,249,118,8,28,
-26,177,202,251,5,170,66,254,95,6,39,200,1,175,55,157,19,133,206,139,59,204,158,225,109,92,97,250,21,238,116,207,
-26,179,135,83,234,178,143,36,68,37,123,186,213,255,236,146,213,11,106,13,163,15,121,151,132,145,210,220,121,192,71,4,
-221,44,241,123,211,98,133,237,15,207,102,174,27,154,232,216,67,221,130,49,242,179,185,1,212,26,155,83,145,83,80,211,
-249,175,195,151,135,46,235,16,237,217,107,132,124,51,68,230,246,208,41,212,184,43,81,211,52,154,78,35,105,202,11,111,
-57,26,72,29,59,56,8,248,57,199,96,81,84,137,104,27,159,164,184,167,40,31,222,44,53,166,141,46,138,227,179,11,
-118,1,222,92,182,250,148,46,208,191,50,110,226,51,92,123,234,119,9,224,233,180,76,12,76,255,204,11,190,189,51,96,
-253,56,142,80,19,233,209,32,158,32,62,230,25,215,144,211,205,150,205,238,133,83,69,128,180,161,189,34,172,139,135,227,
-85,70,248,202,192,91,255,65,253,110,173,48,47,84,216,177,206,18,20,33,208,238,126,167,97,123,192,238,154,110,11,195,
-52,206,95,71,125,191,125,208,117,23,99,227,92,20,87,198,110,198,141,105,50,217,102,246,96,51,163,167,59,178,136,74,
-239,93,152,125,52,77,5,47,252,89,231,97,89,184,204,97,180,210,50,75,200,94,203,88,172,168,31,109,158,45,213,145,
-215,61,77,66,25,59,171,249,103,150,236,131,222,164,92,239,1,226,141,125,223,75,33,198,86,53,2,157,38,190,111,32,
-245,239,150,215,235,184,220,90,143,219,170,228,61,142,21,114,238,165,232,44,58,232,0,40,41,14,226,173,248,241,89,93,
-9,131,34,157,61,131,79,179,152,19,227,139,106,53,177,108,14,104,194,75,167,225,56,69,47,179,125,146,41,250,179,177,
-135,152,116,90,156,202,53,29,52,108,75,236,183,164,158,163,162,108,35,45,25,97,68,45,194,151,19,120,31,95,250,21,
-76,251,142,40,18,30,192,239,246,233,140,12,136,234,50,156,110,162,234,254,46,254,196,55,89,90,185,203,207,131,186,102,
-25,3,104,169,91,226,123,118,31,241,94,26,160,75,18,235,13,138,126,53,185,39,185,75,79,5,60,127,55,246,173,213,
-255,250,254,131,98,44,234,88,123,47,56,215,151,43,65,180,146,222,235,144,212,122,224,223,85,183,157,216,86,170,84,214,
-198,199,248,212,215,69,109,201,104,127,204,199,37,147,8,9,75,210,127,245,246,130,39,182,127,118,57,144,132,127,222,86,
-208,188,11,134,65,98,125,246,15,234,100,69,186,118,149,153,35,171,74,149,220,247,123,160,109,229,254,72,8,134,175,83,
-249,43,193,128,117,193,14,60,11,230,166,87,161,74,9,95,73,68,30,210,112,155,207,104,157,121,101,239,73,74,91,1,
-104,191,188,197,79,242,18,53,50,209,186,31,227,54,170,57,134,154,218,6,172,66,224,207,11,182,44,105,182,229,139,254,
-19,22,180,19,86,66,5,122,8,131,56,221,128,187,158,145,28,229,17,54,13,95,247,147,160,96,148,158,243,36,50,77,
-106,209,111,69,241,19,9,52,165,165,162,241,102,200,144,183,217,31,153,42,145,235,250,111,228,219,157,213,249,6,186,235,
-5,139,33,212,163,176,116,225,142,19,52,219,189,204,204,156,206,175,101,127,49,123,68,196,124,145,180,71,112,0,132,253,
-82,229,15,233,34,254,58,130,111,41,61,185,184,246,222,177,72,125,136,168,74,62,111,20,32,49,82,113,19,126,56,40,
-32,32,82,71,122,230,25,237,13,95,78,167,185,64,221,191,37,214,152,181,213,190,46,254,3,165,70,218,60,230,123,44,
-53,2,111,104,4,36,255,82,226,175,0,29,163,0,226,3,194,164,247,195,46,214,223,236,145,255,253,45,202,122,5,37,
-241,110,6,74,99,241,14,123,26,19,206,125,22,20,177,140,9,8,209,137,146,15,229,249,21,250,229,87,135,196,169,120,
-80,17,240,214,233,7,79,175,93,187,168,85,134,90,140,5,7,108,175,54,202,233,77,233,114,244,8,2,20,92,41,230,
-117,192,231,252,180,252,228,223,244,35,0,231,153,31,237,252,188,72,106,17,137,161,125,124,219,73,142,156,230,92,138,206,
-191,89,245,109,117,116,83,249,133,238,159,80,198,233,248,21,195,106,15,93,68,14,87,189,209,0,79,26,128,11,91,159,
-174,163,99,100,196,117,49,140,42,206,215,39,242,68,14,32,145,15,163,28,221,90,24,9,202,189,231,65,50,186,162,84,
-138,35,114,9,221,75,110,134,0,41,94,33,141,84,60,102,56,54,212,127,70,127,23,7,99,255,173,207,81,96,68,213,
-145,50,70,160,223,214,101,238,191,238,7,40,43,48,203,147,174,192,254,45,138,244,172,220,69,155,6,65,87,163,122,122,
-82,91,67,186,203,219,194,4,41,26,63,192,14,221,99,48,148,59,208,81,90,177,129,9,13,242,56,139,13,191,130,130,
-80,108,46,225,53,137,32,51,26,154,107,4,211,166,122,175,209,0,230,76,122,108,190,50,161,81,143,13,218,108,187,39,
-73,122,32,117,32,39,72,97,235,2,190,104,66,107,92,182,157,166,152,60,174,6,72,54,80,219,47,201,153,92,169,76,
-56,172,87,236,35,255,185,51,170,230,210,170,252,213,25,123,206,112,119,147,183,40,118,120,67,195,121,135,64,106,98,215,
-206,115,10,103,171,0,226,215,74,12,225,30,106,88,146,88,55,21,253,172,49,52,131,201,133,121,192,93,116,237,118,172,
-159,103,146,119,86,165,147,76,42,142,101,218,189,107,219,14,175,216,40,98,255,252,100,10,221,204,24,211,31,77,39,96,
-119,167,73,57,67,241,17,231,4,56,212,76,63,227,87,36,130,34,21,98,30,78,165,173,92,141,89,0,40,132,63,221,
-109,163,236,65,204,234,32,44,232,252,137,107,92,7,85,33,1,46,228,46,63,30,26,79,179,73,16,131,69,223,228,69,
-225,30,239,95,61,169,71,26,137,224,83,238,211,128,87,82,4,102,126,141,178,115,156,118,50,38,102,4,229,33,204,231,
-160,0,173,81,117,38,145,60,42,6,100,139,108,137,39,70,162,194,200,249,113,140,131,200,201,35,13,194,242,248,143,147,
-149,33,94,133,151,242,139,28,224,139,180,47,244,222,241,247,67,190,83,163,81,181,164,241,19,206,218,95,191,171,87,122,
-235,206,99,112,6,239,23,237,85,81,16,2,251,169,227,241,142,40,135,60,54,200,184,122,108,131,49,33,135,30,224,58,
-217,6,170,73,30,97,178,115,216,64,14,95,73,209,157,8,120,125,92,132,9,103,67,180,81,192,33,31,25,193,25,26,
-17,219,141,254,202,134,230,70,250,5,131,109,123,135,17,159,196,120,219,235,18,194,179,171,48,51,173,250,93,234,130,149,
-27,57,60,239,36,206,3,33,197,184,159,37,43,247,171,70,203,232,65,32,86,212,252,242,52,109,193,209,168,77,92,93,
-148,242,189,21,209,231,177,136,42,114,186,211,82,3,182,151,88,82,211,182,42,86,60,43,67,80,99,95,25,22,125,148,
-242,23,90,54,64,93,108,191,23,165,97,36,244,102,153,158,219,255,253,38,162,153,182,214,111,108,13,153,154,90,117,34,
-73,31,37,165,77,171,201,229,86,102,139,75,74,147,153,199,136,97,19,14,146,7,140,47,96,56,231,5,156,184,118,8,
-5,184,19,129,236,176,89,172,38,227,192,111,40,115,215,58,148,20,1,104,79,118,240,154,143,7,123,114,25,253,210,220,
-150,102,207,55,34,122,25,134,29,189,118,0,107,14,139,73,168,207,39,0,83,79,66,26,51,173,157,197,213,137,170,211,
-204,115,130,115,250,217,94,205,84,158,43,140,61,244,172,6,163,151,134,42,145,164,183,52,50,52,134,222,19,178,66,119,
-244,32,90,241,188,74,170,162,210,232,40,35,218,145,41,170,26,197,1,68,156,92,1,60,167,103,104,196,53,94,61,96,
-203,197,76,194,156,134,86,138,79,177,134,242,142,200,205,23,213,162,180,72,27,148,91,49,46,0,3,197,244,4,71,22,
-16,38,18,51,220,39,250,122,142,51,75,252,39,226,255,82,221,115,217,53,238,68,110,63,214,125,151,9,4,96,196,26,
-183,110,242,68,231,121,83,226,216,202,65,108,89,71,116,178,183,148,236,148,186,6,55,197,130,9,134,149,216,216,49,165,
-124,41,199,39,210,95,237,75,75,214,126,157,155,37,75,178,195,151,61,214,199,83,145,112,119,98,17,20,131,188,16,191,
-254,241,145,187,59,36,169,192,74,180,228,141,185,63,40,35,191,208,104,201,158,119,114,114,96,7,220,110,97,9,14,219,
-58,186,161,0,143,251,242,153,43,39,57,165,64,54,61,239,19,155,82,147,252,80,220,250,193,232,254,156,197,178,12,127,
-89,111,34,110,17,95,1,55,135,135,135,11,168,109,61,239,56,10,163,175,60,32,208,102,234,252,147,220,26,123,48,63,
-250,73,145,247,13,144,185,189,82,25,174,155,31,247,197,193,208,188,121,59,116,149,120,170,82,103,133,233,107,59,245,153,
-180,110,64,169,137,43,184,215,97,231,188,234,78,222,172,129,210,217,217,25,62,2,111,251,5,130,153,153,24,129,1,234,
-215,162,254,162,94,204,167,180,37,239,174,241,179,6,165,148,67,73,228,184,41,21,97,204,63,16,6,194,103,141,124,249,
-219,123,78,96,55,243,230,214,59,50,61,141,197,80,254,130,196,201,209,0,236,245,197,177,196,145,66,155,250,124,217,29,
-7,59,14,103,204,32,34,242,141,43,159,118,185,72,155,188,212,68,48,4,107,206,31,109,18,103,240,28,121,94,92,202,
-84,223,166,92,21,143,114,229,194,251,153,155,167,101,238,182,131,114,156,43,101,31,27,127,141,158,255,233,219,21,69,216,
-113,25,168,188,140,148,112,102,132,233,235,192,207,185,245,44,253,126,73,138,214,132,69,224,159,191,66,104,250,210,171,73,
-90,113,104,247,51,86,65,57,158,212,122,132,172,57,46,15,137,234,40,195,102,99,240,27,203,226,58,241,138,192,56,151,
-216,152,105,166,192,25,234,183,8,135,142,1,7,95,125,122,103,201,16,149,91,220,126,244,72,93,77,102,47,84,2,9,
-66,72,78,205,91,211,19,123,185,246,126,73,123,102,162,126,225,138,223,173,11,63,134,109,9,115,133,134,241,184,124,85,
-169,28,91,140,112,104,190,42,236,67,150,78,71,6,194,35,97,28,187,251,160,80,165,149,39,187,242,227,31,49,41,233,
-98,229,73,31,126,61,205,24,174,76,50,37,20,113,226,207,115,143,102,174,131,166,195,143,146,163,220,204,33,136,20,176,
-47,89,95,99,14,161,36,39,237,222,231,155,100,189,9,150,16,156,24,134,121,252,7,14,182,34,73,130,195,89,23,226,
-30,183,193,36,193,78,242,59,240,115,99,71,177,208,87,232,107,15,199,117,182,166,8,155,166,116,90,36,40,141,130,0,
-216,143,150,85,254,121,202,17,228,219,226,57,222,81,36,250,28,160,29,30,73,7,94,177,157,230,225,61,154,242,106,67,
-161,30,1,105,24,143,112,30,13,28,182,47,113,13,56,141,140,54,60,96,97,31,116,84,70,245,14,251,166,208,127,245,
-153,174,254,113,60,245,147,195,145,64,127,89,196,194,152,83,204,43,140,89,39,249,91,218,15,36,237,41,183,189,89,117,
-27,255,57,144,189,117,225,37,107,145,92,120,167,0,138,47,117,44,32,165,130,107,183,118,48,149,111,28,175,174,176,64,
-71,28,241,120,230,253,189,173,123,235,213,145,195,189,156,164,88,255,243,133,235,2,217,172,221,164,152,158,16,161,145,239,
-72,29,209,254,252,125,98,140,5,155,138,125,79,248,147,203,62,58,135,187,88,67,69,26,161,165,54,173,35,211,227,231,
-31,12,81,42,130,236,169,136,93,218,80,106,145,157,224,196,230,161,111,29,140,43,126,41,205,6,130,176,194,190,44,22,
-237,121,197,96,60,145,28,135,207,167,111,74,199,126,186,212,187,86,239,195,169,236,116,75,238,218,217,102,147,253,157,247,
-243,248,100,192,56,85,119,36,157,7,247,169,11,191,21,253,220,83,84,141,183,86,85,26,87,200,172,204,114,0,203,33,
-127,97,38,246,69,116,154,93,180,254,27,21,84,41,158,169,3,4,232,112,192,99,197,74,117,89,93,155,154,25,96,218,
-30,98,10,247,84,128,95,153,97,192,193,15,117,152,23,151,70,103,242,77,194,208,94,168,223,247,196,93,71,210,215,176,
-26,177,31,22,218,14,250,64,191,2,222,204,218,39,78,207,113,182,58,100,247,50,255,135,113,108,67,151,100,175,223,54,
-145,218,133,38,243,199,229,75,81,64,69,108,9,32,29,36,187,71,108,11,82,23,46,143,43,192,52,184,142,169,165,25,
-37,253,241,205,138,101,78,251,174,31,164,153,85,73,192,50,189,21,1,81,19,222,174,48,107,67,57,248,84,42,156,111,
-119,30,132,226,227,231,220,192,250,22,112,239,153,10,169,218,75,153,205,169,16,38,139,55,112,27,7,249,234,18,42,230,
-54,88,60,236,72,187,132,193,98,217,198,199,47,99,57,27,182,52,108,147,153,255,77,220,17,109,208,70,5,144,213,34,
-165,92,7,249,13,152,123,116,68,191,159,12,73,220,190,2,164,149,245,209,233,49,127,192,92,87,41,38,227,41,162,184,
-94,41,52,29,68,0,18,70,68,159,129,156,119,45,68,120,16,121,82,36,189,206,164,88,100,68,144,75,152,3,186,95,
-193,117,55,4,110,108,126,82,227,210,150,202,166,8,35,243,110,170,110,116,205,52,30,247,1,50,201,150,219,164,204,27,
-53,52,166,47,51,14,84,90,192,105,230,141,60,22,110,162,179,39,164,160,226,205,75,159,67,66,187,145,56,174,111,200,
-53,245,81,37,128,129,69,247,68,119,25,3,34,75,106,71,191,47,150,175,87,232,103,126,19,235,72,209,79,235,254,150,
-130,130,163,237,179,5,241,249,84,237,222,53,62,224,48,135,156,195,168,212,25,146,142,54,110,181,243,52,46,33,249,119,
-118,212,36,24,97,186,127,137,223,227,184,156,19,174,202,99,120,90,7,187,65,212,53,35,190,196,1,75,122,174,93,182,
-17,113,104,67,54,23,162,153,185,113,224,80,5,163,189,172,222,185,104,45,43,27,60,0,1,199,14,111,177,220,182,126,
-65,78,35,20,222,228,20,160,236,12,151,253,2,88,158,253,160,37,92,86,118,227,111,206,125,37,101,82,68,1,238,31,
-38,178,191,147,58,218,46,83,199,35,67,58,27,138,66,82,92,153,132,194,72,156,193,155,76,37,128,165,174,49,112,248,
-219,127,202,99,68,7,253,227,25,87,148,133,105,165,33,98,249,85,207,114,32,46,86,52,194,248,58,163,32,93,151,109,
-2,170,68,224,1,27,121,244,250,76,138,230,195,171,41,205,232,68,8,112,34,248,195,114,70,90,9,56,46,166,245,218,
-131,39,23,96,245,143,248,88,23,7,165,239,2,170,17,135,105,216,208,117,169,11,116,11,106,43,246,69,220,173,36,22,
-144,228,33,87,242,117,140,203,15,180,110,34,252,57,40,119,237,204,27,117,100,127,198,20,251,227,5,110,177,95,111,169,
-21,243,169,76,182,17,112,187,138,211,120,246,206,10,136,96,199,1,176,213,216,8,231,124,74,67,103,132,165,87,183,156,
-205,67,55,14,137,202,201,87,186,239,157,81,61,169,54,208,79,124,0,166,82,246,203,94,219,158,120,114,107,114,205,201,
-94,202,49,11,212,209,226,239,248,171,33,20,21,11,154,214,235,127,179,226,211,54,97,249,10,175,184,76,115,21,206,69,
-200,207,131,111,63,23,77,209,183,29,111,211,183,170,127,126,158,234,100,211,145,182,142,7,46,217,208,177,78,94,153,90,
-222,233,140,99,247,95,85,131,97,83,207,87,51,57,74,151,190,94,156,207,203,227,168,246,24,249,72,222,72,205,30,255,
-236,112,116,47,239,45,46,133,77,206,70,101,42,191,153,121,130,177,244,252,253,157,2,234,166,122,170,32,159,254,67,82,
-45,99,209,109,164,254,61,227,240,34,136,179,21,114,215,178,113,90,205,102,74,177,13,61,15,168,156,36,126,14,154,171,
-127,53,151,184,225,137,37,70,154,106,174,90,217,109,47,127,145,162,69,146,196,241,188,27,47,234,188,147,173,225,205,116,
-26,232,77,173,109,45,5,60,229,5,245,214,86,224,92,227,62,220,226,67,240,32,110,125,36,85,192,235,226,207,189,150,
-76,5,96,192,138,232,123,110,16,196,16,230,233,119,68,63,76,88,135,23,11,65,241,230,141,123,239,106,122,104,234,206,
-46,54,108,21,212,129,163,44,106,122,32,239,229,225,220,12,198,26,172,7,214,39,60,203,22,164,104,22,127,118,115,140,
-201,89,131,127,245,213,115,194,101,30,129,203,149,152,227,80,58,182,255,156,138,23,239,16,249,102,71,114,189,221,104,60,
-30,201,217,240,61,91,152,10,229,187,58,62,44,203,43,83,252,221,178,42,10,189,108,252,75,242,20,106,246,92,225,159,
-42,54,137,219,150,62,180,110,28,107,10,216,106,32,182,76,250,217,1,64,156,61,158,250,84,19,4,154,89,88,6,103,
-46,103,15,19,67,78,1,16,210,148,57,247,133,177,77,116,82,165,232,246,25,253,219,66,1,145,9,88,121,86,248,187,
-220,168,183,18,165,42,17,23,242,240,218,134,209,70,120,233,43,59,190,64,43,138,57,200,95,136,190,184,151,54,208,255,
-110,243,100,177,170,44,169,239,109,65,192,154,117,187,218,242,13,0,240,31,127,204,33,230,97,138,146,230,230,204,211,26,
-161,86,19,235,44,248,144,93,176,30,78,158,27,190,210,143,255,84,234,237,167,201,67,17,62,167,147,176,12,24,165,158,
-146,129,52,84,240,132,4,9,240,100,203,82,120,40,92,31,206,118,103,146,4,200,241,142,106,34,103,122,52,30,219,165,
-208,144,94,98,73,255,121,30,64,85,120,29,16,183,64,12,165,186,140,27,122,50,59,52,116,176,52,204,111,67,217,253,
-236,188,246,68,117,132,65,151,244,169,167,61,82,14,255,184,76,30,30,159,111,187,57,255,244,247,84,230,122,125,23,147,
-141,128,220,175,46,94,187,106,195,51,143,252,53,38,248,97,51,64,154,93,154,42,66,48,196,2,183,25,227,100,214,185,
-210,254,51,37,254,41,83,238,201,3,202,75,99,158,125,71,157,116,64,46,132,174,170,136,97,236,196,1,226,163,9,8,
-243,249,62,111,246,214,89,230,61,106,3,6,81,43,248,12,87,216,24,239,251,155,254,61,237,32,151,137,208,106,181,49,
-213,9,31,155,70,3,194,207,73,234,52,76,254,112,106,71,183,41,109,186,246,30,196,25,123,129,202,136,67,109,112,237,
-76,108,124,35,222,104,169,194,103,28,86,24,156,112,5,209,239,128,231,0,185,229,38,218,114,128,108,124,21,186,44,65,
-245,55,155,199,7,249,139,102,190,82,237,149,46,134,16,174,9,168,111,231,183,209,109,95,38,150,237,245,21,213,223,44,
-146,181,90,152,92,97,34,113,245,200,189,94,87,43,77,116,145,54,131,185,235,35,47,24,5,36,46,221,208,148,183,221,
-120,72,229,123,173,170,217,9,210,59,9,38,42,139,145,151,150,63,120,234,175,187,9,249,185,169,110,174,216,4,205,73,
-49,141,167,1,230,67,124,142,196,198,132,231,189,71,38,43,122,218,59,240,23,184,11,131,200,241,37,79,88,185,32,80,
-19,203,173,170,241,228,104,212,71,239,147,83,34,80,48,167,96,197,149,230,82,87,73,55,22,191,177,174,251,99,216,141,
-247,174,70,107,23,146,216,128,188,207,80,84,88,203,219,127,248,145,2,236,17,198,191,8,34,170,218,117,228,195,61,20,
-211,135,179,172,218,206,217,164,235,255,251,1,240,98,119,130,67,241,58,205,77,168,30,203,65,94,201,143,104,153,16,134,
-24,189,42,9,179,123,69,160,160,249,233,223,45,62,26,242,68,180,22,120,25,238,126,123,6,4,232,214,197,62,165,210,
-129,99,236,174,51,43,27,133,127,180,96,104,118,133,255,58,247,66,214,186,24,78,140,32,27,69,144,241,182,141,146,137,
-90,122,39,61,157,234,219,60,171,93,239,54,125,252,173,196,232,0,116,105,75,8,236,135,80,41,149,58,210,15,220,233,
-215,25,21,160,61,191,175,194,237,152,132,135,170,74,234,177,102,13,253,4,219,66,42,180,220,141,151,242,112,35,228,200,
-160,147,44,133,251,22,171,25,250,155,184,121,220,205,188,22,242,71,57,114,213,98,65,92,172,19,199,7,13,11,193,46,
-161,17,212,154,91,218,111,75,78,135,90,120,39,208,135,210,234,139,74,186,48,205,86,133,98,129,183,91,225,178,228,201,
-2,40,132,209,20,127,174,180,230,169,96,101,8,3,69,234,200,23,135,64,19,141,200,34,117,150,45,58,108,54,149,114,
-195,100,47,216,62,145,254,92,175,205,98,178,83,125,5,20,11,148,47,46,213,163,38,60,253,108,147,200,107,233,248,7,
-247,198,132,176,91,133,100,13,145,30,75,168,174,79,9,118,157,55,0,224,34,32,141,166,167,243,19,161,238,95,42,194,
-79,188,142,172,212,48,195,179,142,23,26,166,68,172,45,94,201,233,25,174,129,204,81,112,171,238,22,135,131,95,100,241,
-32,140,185,117,151,63,117,126,21,155,177,243,88,177,17,41,46,209,246,55,160,26,73,11,33,11,108,235,190,56,125,236,
-235,220,79,39,249,203,149,9,119,46,200,45,166,127,163,144,79,188,254,29,45,200,43,118,107,176,93,174,132,126,167,37,
-212,133,65,159,5,17,195,215,89,186,108,168,117,140,121,197,157,111,116,48,132,103,114,241,210,155,61,154,203,170,61,69,
-101,194,203,118,91,178,99,162,46,157,33,196,61,81,243,21,1,162,95,143,68,64,249,200,24,31,90,98,61,226,102,232,
-241,143,213,108,135,133,249,97,164,83,125,163,243,239,161,167,157,124,122,60,83,45,199,239,163,152,155,78,70,154,255,239,
-165,246,128,102,219,37,114,156,2,121,99,148,5,12,190,33,64,244,14,255,248,24,228,19,213,116,206,166,239,131,149,121,
-238,57,228,94,69,78,68,107,31,63,172,54,131,66,154,210,156,184,141,0,129,130,73,229,1,2,95,238,97,155,110,170,
-233,175,19,96,214,193,70,135,208,15,110,22,233,237,252,77,59,237,4,90,232,235,12,45,217,203,167,191,187,119,252,230,
-250,44,33,117,29,246,185,168,34,189,163,73,199,226,151,120,167,133,84,157,188,37,90,171,1,109,132,9,67,236,41,96,
-136,141,150,103,162,71,130,105,98,34,245,227,166,226,84,69,221,1,21,122,197,205,184,106,104,249,177,25,144,35,22,133,
-89,94,28,36,76,78,222,201,188,205,216,80,196,147,158,220,248,40,249,46,216,129,254,49,166,114,199,200,195,215,71,222,
-110,52,81,206,220,190,53,172,214,152,125,141,215,43,210,143,82,60,40,127,254,2,127,255,168,197,173,193,27,119,131,239,
-236,106,20,17,101,116,237,105,178,239,25,120,97,140,132,100,133,179,117,90,139,88,26,123,135,17,103,124,88,56,248,246,
-183,119,76,62,4,110,254,105,37,103,111,151,163,190,158,35,120,136,243,78,39,63,100,174,122,34,69,180,106,114,6,168,
-125,100,202,103,159,167,43,194,229,100,70,167,62,46,41,101,16,57,20,125,50,199,244,195,165,217,205,172,178,127,157,226,
-245,86,173,16,104,95,212,76,177,220,181,144,159,89,137,185,92,0,91,186,70,238,151,117,120,26,229,95,163,203,21,52,
-6,135,255,177,51,21,26,185,62,187,7,117,174,32,246,62,128,198,194,222,64,89,158,195,161,53,171,73,69,139,72,52,
-183,85,175,182,173,46,118,125,246,197,67,193,38,48,78,151,178,102,87,215,157,177,108,107,240,119,117,135,154,195,240,13,
-104,191,25,24,152,226,51,182,64,91,201,36,39,49,78,234,234,3,142,57,251,64,217,192,255,252,98,201,47,55,242,2,
-163,83,47,41,232,88,121,115,199,66,55,14,78,155,248,191,242,207,164,48,200,159,42,246,127,58,193,109,187,104,85,152,
-194,24,170,50,103,80,175,114,180,132,8,53,201,131,111,27,245,216,124,30,12,179,139,56,18,130,153,129,219,46,52,133,
-162,39,90,188,32,210,20,97,20,74,164,132,78,212,230,254,146,102,240,157,231,238,100,239,42,251,17,45,128,127,3,220,
-50,143,255,231,223,101,132,94,121,123,99,56,12,201,255,79,60,15,95,78,48,52,99,83,45,179,65,84,116,225,149,253,
-194,121,223,53,217,222,80,140,116,142,39,226,171,152,119,196,230,212,176,189,68,87,89,107,123,127,82,8,47,162,52,120,
-120,194,184,80,60,45,94,228,163,75,176,59,156,183,53,235,143,223,213,230,159,109,88,194,246,134,90,128,155,215,103,146,
-230,92,100,32,32,251,199,179,24,246,196,43,85,149,98,44,95,127,162,78,73,3,255,249,72,189,233,2,205,66,189,18,
-57,203,41,197,189,114,108,50,62,201,116,247,93,33,21,199,212,60,44,165,167,246,195,253,210,250,62,23,87,122,172,84,
-104,120,50,213,251,230,161,38,106,166,203,70,42,152,67,117,153,240,166,139,66,252,247,59,222,75,220,213,147,16,109,216,
-88,18,27,129,54,234,237,247,35,166,107,209,63,129,177,128,60,127,249,66,161,64,126,246,37,178,51,92,136,26,152,194,
-207,15,49,13,214,232,133,185,63,32,251,216,226,225,216,41,36,210,236,88,9,161,137,16,148,118,160,225,175,87,9,245,
-40,14,18,8,206,173,220,3,211,53,205,157,166,15,42,61,92,120,32,184,16,159,122,111,86,155,27,154,111,253,54,207,
-255,135,220,111,19,39,98,64,77,120,63,29,37,159,190,198,186,197,50,46,35,54,206,59,1,240,6,85,244,177,84,69,
-83,119,77,23,248,11,199,98,229,207,172,62,240,125,49,155,28,199,157,110,211,16,252,183,85,196,131,38,135,156,64,3,
-12,100,106,174,131,44,226,212,175,52,157,172,140,164,14,177,28,28,110,8,213,49,169,167,4,230,137,49,228,115,91,21,
-137,157,78,153,40,117,65,106,1,224,86,61,56,201,3,112,245,231,219,147,57,42,155,107,77,152,46,77,21,47,114,94,
-42,255,113,60,12,125,165,99,248,93,203,73,75,149,37,222,103,117,57,228,132,84,239,79,142,113,7,84,147,245,211,27,
-113,247,47,8,13,70,33,183,83,172,48,100,142,150,6,67,36,144,124,160,187,238,150,254,171,226,126,16,71,244,206,79,
-91,46,245,220,148,232,2,117,120,47,156,229,225,126,180,144,230,24,106,5,21,206,45,1,173,86,103,45,185,45,182,114,
-150,109,171,109,20,15,188,238,204,3,62,241,251,244,44,112,100,12,246,104,113,62,65,254,7,18,23,24,109,208,194,99,
-16,35,12,86,102,175,134,200,52,221,87,6,34,48,215,225,187,158,91,137,212,80,91,253,197,247,52,61,149,35,243,56,
-142,228,220,161,122,21,29,246,255,213,70,137,34,242,35,228,29,82,107,71,171,179,148,219,82,229,165,221,155,49,124,168,
-78,113,135,10,136,239,73,249,120,26,172,50,148,168,17,175,205,241,218,73,3,17,230,45,167,120,41,177,177,207,238,174,
-202,209,205,112,76,14,226,144,120,112,124,2,167,21,44,123,74,153,2,59,215,66,206,21,237,70,74,244,60,164,240,189,
-158,29,17,9,173,168,183,116,161,107,198,206,11,153,49,61,126,77,210,240,69,19,26,244,164,241,180,6,61,183,52,115,
-151,24,116,79,50,52,145,172,28,62,62,106,224,35,9,17,211,186,53,172,73,100,76,151,22,69,8,192,201,134,143,114,
-95,84,37,201,248,170,135,4,39,149,130,79,210,38,133,237,163,110,158,88,194,133,145,5,31,161,224,103,183,241,159,151,
-145,188,229,140,249,144,255,242,172,43,241,3,70,138,28,254,99,33,156,244,8,47,16,0,173,228,78,15,244,196,74,241,
-225,193,162,101,134,110,187,101,173,26,23,1,66,160,202,206,192,70,229,133,255,10,207,199,236,79,36,57,164,81,129,248,
-120,112,113,154,144,87,61,5,129,67,24,14,68,73,81,44,46,65,61,40,53,62,204,207,54,48,192,44,195,103,145,95,
-88,108,192,118,40,58,19,130,200,180,216,176,126,107,129,231,50,106,224,144,211,82,210,238,118,59,130,181,117,33,138,19,
-230,242,230,29,135,49,132,23,174,225,191,253,27,33,138,227,230,129,216,219,142,164,92,81,232,136,237,107,211,76,138,37,
-3,179,151,167,191,178,221,167,167,103,173,117,24,171,55,214,1,252,107,224,137,144,216,254,3,138,148,6,39,86,26,238,
-44,140,163,25,161,0,140,151,190,141,64,55,178,185,64,37,135,32,230,50,43,255,37,139,40,194,194,43,207,157,243,28,
-117,253,94,184,178,171,36,246,205,156,219,235,60,110,94,85,66,242,17,179,57,47,182,41,249,213,204,208,62,209,72,101,
-121,22,218,23,255,252,93,44,78,143,196,95,114,173,149,19,145,153,162,212,149,227,153,13,7,110,46,76,167,8,75,192,
-244,16,220,19,9,110,66,87,204,0,27,22,239,69,123,121,169,225,254,40,140,4,160,254,119,170,10,34,74,49,95,14,
-206,12,0,91,243,145,22,126,68,210,43,18,19,146,171,60,142,144,214,246,212,176,235,101,58,119,233,155,54,108,198,69,
-175,63,64,104,138,89,5,83,109,112,178,246,141,231,57,95,170,13,104,223,184,202,52,139,82,138,156,209,107,199,178,22,
-171,118,77,13,250,9,143,246,16,10,222,58,54,82,64,26,108,26,169,206,83,232,121,255,161,0,190,212,194,59,227,201,
-90,144,242,203,96,26,231,219,164,34,174,223,110,236,175,159,31,178,203,241,241,125,207,189,14,69,99,154,136,231,53,111,
-24,21,37,114,231,178,35,241,95,115,217,187,86,79,86,14,241,83,150,202,241,244,93,31,18,103,62,54,22,161,153,179,
-133,157,228,135,251,223,174,221,11,163,95,210,126,199,208,113,143,102,79,81,116,65,230,94,183,238,132,130,161,101,226,204,
-146,74,204,202,225,242,147,37,212,7,239,200,91,48,91,89,205,4,155,142,249,13,178,137,175,68,30,107,55,253,22,74,
-185,189,108,249,78,50,118,17,108,217,219,170,28,194,104,39,49,168,233,80,240,20,179,166,166,67,107,213,148,235,108,170,
-116,168,4,45,58,241,194,43,118,53,45,246,9,57,186,178,150,30,247,157,72,195,182,240,229,44,145,250,238,226,134,33,
-170,123,123,169,205,120,153,220,174,185,183,192,171,198,8,72,189,187,89,165,249,163,226,188,239,117,154,38,128,160,28,25,
-14,189,187,179,91,168,12,138,121,91,191,133,17,70,226,124,175,242,195,177,183,254,88,131,169,255,253,23,31,18,114,7,
-223,139,89,137,145,107,93,240,117,129,248,82,235,171,71,206,103,214,120,166,106,106,212,6,226,176,78,244,81,158,82,87,
-243,65,34,82,117,218,159,29,16,123,241,189,223,222,179,15,161,185,96,215,253,229,99,60,169,59,171,69,234,123,187,110,
-19,228,32,231,254,220,215,237,27,93,92,242,66,45,217,117,174,236,245,222,244,124,249,224,96,228,123,100,35,97,112,175,
-60,235,41,40,193,229,239,147,19,141,249,238,83,39,121,247,77,33,216,181,174,195,237,116,205,135,114,82,152,133,35,31,
-124,98,204,110,43,34,12,224,235,175,115,132,228,144,118,59,50,30,92,216,107,255,239,249,7,22,6,231,114,178,233,84,
-147,106,117,141,207,171,78,217,0,160,81,172,137,207,72,113,97,107,178,157,43,34,15,195,215,164,14,231,53,243,98,220,
-139,214,121,151,182,132,14,157,86,127,21,206,20,38,108,18,62,41,102,194,250,214,93,170,18,3,204,215,9,148,212,33,
-49,12,52,49,167,100,147,14,107,44,180,58,130,41,54,17,127,101,26,179,60,162,54,59,133,134,181,36,185,144,223,163,
-215,104,81,239,3,211,189,70,3,178,132,186,10,33,249,171,240,140,243,13,238,103,0,119,142,81,200,48,161,96,137,149,
-8,5,213,43,117,219,196,116,65,186,152,127,74,54,223,134,17,43,175,44,139,220,214,77,140,27,249,31,188,91,32,135,
-216,105,71,251,155,218,23,160,95,182,2,142,238,69,239,8,224,45,246,149,9,76,33,83,36,157,81,254,97,47,215,243,
-172,214,27,66,199,254,248,193,1,248,59,93,229,187,155,184,54,155,73,23,195,72,70,184,54,54,72,179,54,107,221,73,
-108,155,22,51,54,249,98,147,240,121,165,69,94,253,60,204,83,72,187,209,83,237,218,122,88,155,170,39,169,254,33,29,
-48,119,232,147,176,252,195,122,240,214,90,214,204,39,69,108,182,109,202,129,106,153,231,252,212,237,3,101,229,249,178,229,
-131,86,192,28,213,182,119,12,158,65,60,142,37,203,235,193,29,107,205,66,176,227,164,182,206,196,9,18,153,196,35,166,
-49,163,221,217,37,234,116,164,212,231,160,169,247,153,96,11,104,21,189,214,75,163,95,188,75,68,8,89,196,137,160,13,
-243,50,61,102,146,56,228,19,41,73,215,192,40,134,154,99,217,65,88,255,247,121,235,247,48,165,15,80,160,7,165,29,
-216,59,5,180,151,228,189,1,249,133,63,106,38,68,236,166,145,98,62,147,40,81,190,234,235,39,187,222,64,120,47,73,
-244,32,3,129,224,108,208,95,25,47,76,141,167,21,159,137,126,106,146,151,180,214,52,138,1,40,206,243,45,232,122,93,
-126,216,89,54,72,218,221,68,195,234,73,106,254,153,230,38,197,75,106,171,13,70,146,54,230,52,150,220,241,38,232,36,
-221,7,229,234,199,91,36,205,114,176,198,197,191,141,84,234,135,35,174,143,154,188,107,70,126,136,109,130,228,245,126,248,
-48,251,223,16,184,247,6,183,49,40,128,228,163,59,221,198,32,198,187,205,71,109,54,80,105,71,198,163,218,210,89,223,
-25,174,242,29,100,210,215,68,30,171,116,235,205,23,31,110,186,181,8,244,158,227,147,137,164,157,10,76,141,127,170,86,
-104,186,61,187,189,148,209,15,2,17,14,167,28,74,165,7,191,180,43,153,17,59,218,55,18,57,13,50,83,91,224,201,
-61,72,204,47,253,159,12,83,15,146,217,118,31,25,112,102,142,153,106,39,231,221,158,225,191,108,165,147,228,185,233,165,
-177,29,94,10,94,41,93,218,42,146,113,222,94,141,128,248,166,74,52,123,244,54,149,202,83,5,98,229,40,115,217,253,
-12,60,179,12,184,244,71,185,42,17,180,35,161,225,116,86,129,153,150,176,44,12,179,203,203,173,77,142,232,93,210,32,
-241,137,169,232,176,123,143,25,239,181,133,121,68,11,161,114,97,112,173,188,106,255,249,139,135,189,111,23,172,37,61,31,
-152,129,248,101,187,120,221,38,100,187,10,33,109,128,145,107,196,169,215,19,32,161,221,50,26,227,232,243,90,157,15,80,
-62,161,75,231,147,173,204,159,41,0,94,140,40,109,210,215,100,182,54,97,126,89,73,194,250,50,33,25,142,16,130,116,
-14,194,208,65,189,153,79,221,84,144,237,154,166,171,9,41,11,203,212,242,151,101,140,224,85,183,199,140,90,65,57,22,
-209,16,35,43,254,57,245,84,77,1,255,193,50,47,110,191,80,240,130,47,82,61,255,162,203,39,45,248,13,159,118,198,
-176,23,68,221,102,159,45,3,233,188,5,214,114,89,185,124,8,200,26,253,215,79,115,23,213,10,139,110,137,7,136,178,
-228,158,51,61,134,3,60,167,100,201,9,81,160,101,111,252,12,19,186,77,49,224,133,39,210,202,28,48,198,46,219,108,
-5,99,208,43,65,162,243,252,217,220,200,167,52,126,91,144,62,58,193,36,155,10,59,253,188,114,139,116,144,133,137,241,
-15,154,18,168,159,177,160,35,93,233,168,222,245,174,219,235,238,97,109,9,15,99,37,44,122,235,108,17,109,164,111,254,
-99,52,238,93,37,34,34,122,67,247,106,241,224,216,217,158,66,238,14,29,75,71,49,182,123,21,52,221,11,88,236,28,
-250,217,236,62,56,160,57,131,97,239,179,53,66,194,64,136,178,197,24,133,62,131,42,53,102,142,234,147,198,159,144,2,
-201,151,170,187,59,89,254,18,124,33,15,229,76,124,16,66,213,166,233,10,164,46,84,123,68,65,181,60,14,150,227,208,
-142,86,192,0,145,112,58,62,37,220,133,118,14,250,213,139,47,118,65,12,166,44,251,178,220,100,255,107,185,61,154,152,
-165,246,248,76,89,111,217,71,33,40,155,83,158,58,185,142,53,152,245,158,178,215,252,148,174,3,16,65,162,84,103,230,
-203,61,240,255,240,0,110,126,126,233,90,69,15,25,224,50,188,87,201,58,109,193,102,183,172,135,33,211,84,69,177,150,
-72,27,107,64,200,14,20,50,78,21,178,155,240,210,59,26,127,241,6,68,170,239,104,37,188,16,84,223,117,89,160,219,
-75,73,194,229,234,234,94,18,201,245,112,243,29,106,61,201,250,10,138,31,88,150,95,52,5,206,162,250,67,231,104,33,
-24,19,25,94,112,9,34,182,169,147,218,167,122,60,98,11,5,129,49,199,125,25,82,27,55,214,134,69,152,67,239,255,
-253,13,93,238,187,154,56,32,106,210,152,147,107,109,189,163,18,32,221,38,34,192,186,207,13,132,120,209,68,38,151,192,
-14,137,151,168,154,94,124,49,186,103,0,250,153,31,188,229,129,69,104,243,105,222,175,16,129,162,89,0,181,56,78,180,
-146,214,50,238,217,146,231,1,153,11,236,189,107,24,77,27,57,218,125,215,56,131,48,74,22,43,42,216,187,125,150,243,
-17,101,12,94,90,167,141,28,229,89,97,87,231,250,133,34,80,80,136,125,115,122,135,142,135,158,160,22,211,106,154,38,
-155,133,39,211,159,57,247,155,99,33,135,191,254,64,43,103,47,210,45,85,57,120,37,139,175,94,25,3,123,72,58,108,
-29,148,15,48,93,135,12,170,37,145,97,157,122,139,207,241,50,179,56,63,231,61,202,220,48,63,14,10,117,247,212,40,
-219,20,110,249,147,166,194,31,84,223,246,82,205,172,159,92,80,18,122,63,26,203,121,34,81,163,200,126,164,204,59,93,
-78,135,182,203,83,192,26,86,206,105,0,103,109,33,210,198,6,108,19,10,244,61,14,56,13,19,211,188,252,15,31,161,
-211,8,218,105,247,164,35,63,117,89,105,8,21,60,13,96,31,92,147,126,68,44,176,102,240,76,205,176,221,253,34,23,
-83,223,41,99,41,186,30,193,216,36,82,88,75,164,38,131,239,19,68,174,113,158,22,17,108,133,38,62,36,61,56,226,
-106,168,29,115,140,51,2,182,114,54,115,129,9,119,199,215,81,187,27,75,57,153,159,243,127,160,255,65,173,40,126,230,
-98,214,168,164,109,75,194,3,248,227,37,163,167,100,40,192,159,79,162,176,21,209,166,61,209,174,183,253,78,189,24,35,
-63,243,214,114,185,222,184,177,29,203,126,165,167,111,163,249,180,198,151,168,15,76,22,43,111,169,210,95,93,179,80,195,
-107,255,4,114,99,198,113,242,9,230,3,36,106,172,85,198,82,111,100,193,247,170,186,231,211,161,113,79,198,254,24,0,
-127,14,230,180,223,202,23,181,229,62,102,190,135,223,99,21,111,61,151,197,109,52,85,189,99,114,117,66,52,106,195,79,
-101,197,244,50,14,169,51,210,104,142,97,241,167,114,176,197,181,134,40,131,99,24,201,220,1,88,18,178,217,169,132,47,
-236,149,78,21,194,65,76,189,52,46,67,162,25,238,219,104,107,20,245,46,159,222,217,196,139,12,1,82,107,218,252,50,
-207,94,149,112,11,153,252,252,137,29,144,70,84,126,248,87,194,74,149,119,169,84,191,149,85,117,114,82,112,206,179,35,
-209,196,255,20,164,181,213,51,153,141,189,186,20,74,155,83,50,111,148,2,103,231,255,249,49,99,35,232,124,246,191,113,
-181,90,107,178,87,51,185,49,18,17,249,110,34,242,197,228,165,164,43,26,75,138,39,10,223,255,252,23,104,245,60,111,
-96,118,151,95,123,110,242,177,214,154,78,51,162,129,33,123,84,181,247,68,5,225,13,5,153,82,0,223,170,22,206,18,
-232,215,225,32,123,235,3,23,195,60,48,81,137,146,64,184,191,166,36,241,195,22,116,35,181,228,90,110,174,177,86,47,
-234,223,118,212,232,177,6,51,119,96,194,235,130,252,167,37,216,44,17,4,238,176,190,115,114,107,24,232,254,162,255,3,
-77,185,4,62,227,47,42,234,197,46,206,144,27,72,146,122,23,136,225,74,212,90,16,124,199,47,49,151,36,251,157,32,
-246,99,230,151,171,97,137,133,86,105,22,114,236,250,147,67,220,42,115,48,19,77,185,138,182,83,169,200,206,39,253,41,
-186,107,65,197,31,12,231,65,224,169,155,221,208,151,192,195,134,33,77,191,57,241,28,170,10,142,68,17,233,166,23,33,
-241,70,240,129,234,30,0,144,201,236,217,108,120,227,203,241,154,245,22,211,229,228,184,246,235,90,35,17,176,143,64,203,
-202,146,169,108,79,193,88,172,37,187,35,136,199,65,7,85,70,164,43,42,229,45,33,206,164,7,100,24,43,155,71,255,
-38,21,75,123,14,106,25,181,206,166,160,58,152,68,44,0,171,152,163,219,213,154,138,12,209,224,8,75,112,211,31,179,
-80,70,203,50,76,222,178,219,28,37,101,122,147,208,148,170,18,150,38,58,127,163,149,111,212,27,249,15,8,85,88,149,
-24,38,244,125,173,121,55,216,58,156,193,225,99,136,72,119,128,56,208,124,239,41,247,245,132,154,141,242,104,45,88,72,
-224,145,214,137,153,82,229,159,195,112,67,56,198,62,125,64,214,70,224,224,158,217,241,97,164,119,93,163,63,35,87,20,
-52,203,236,228,217,79,244,206,248,51,37,11,164,161,63,138,231,3,139,106,35,189,69,63,120,93,130,11,186,139,158,96,
-105,63,7,142,146,203,187,120,97,90,96,172,200,2,4,129,225,253,167,159,106,203,206,232,139,34,1,53,9,255,243,247,
-30,134,91,20,42,17,172,62,209,253,250,72,158,141,137,94,58,234,213,31,112,46,146,67,22,39,18,196,130,95,227,252,
-94,164,232,32,212,23,55,214,174,79,173,64,25,125,136,225,121,7,70,21,169,138,245,25,57,204,186,29,66,0,184,25,
-173,119,61,150,69,237,243,247,235,71,87,143,177,146,161,188,130,187,36,87,5,203,20,173,100,113,29,56,180,18,164,35,
-70,214,248,40,67,125,79,248,144,161,59,194,118,255,249,203,147,51,212,244,235,22,22,237,40,183,56,245,227,220,229,177,
-241,203,159,211,125,195,6,49,116,239,123,42,216,14,137,141,14,204,209,245,11,24,213,32,244,74,69,190,237,70,127,161,
-173,190,18,142,70,211,145,104,238,163,143,243,55,205,84,222,99,59,121,112,81,20,157,119,234,236,79,45,214,115,79,36,
-31,85,62,175,58,33,191,253,253,64,247,185,138,142,123,153,89,46,177,194,241,191,239,90,194,222,136,241,17,206,141,80,
-57,63,194,227,44,104,135,120,241,11,252,45,33,88,197,23,225,213,249,71,16,225,94,81,165,149,134,202,154,180,22,219,
-17,119,171,233,184,204,138,104,119,67,171,65,165,189,61,225,85,187,249,209,205,135,124,9,63,203,94,22,200,148,23,126,
-132,49,177,135,203,252,221,1,145,197,221,27,67,128,226,67,145,106,72,28,155,14,89,98,144,197,35,19,129,139,73,150,
-205,120,165,239,179,175,122,204,5,130,76,47,108,28,200,45,219,225,38,140,17,250,248,124,123,10,192,10,198,191,232,246,
-141,242,141,188,9,219,207,223,7,236,200,131,57,131,43,11,108,32,162,142,1,126,69,82,213,164,95,54,180,113,137,176,
-163,233,21,167,219,250,39,178,75,228,158,99,111,87,119,133,27,161,234,86,94,126,126,234,93,135,19,119,145,33,80,250,
-199,227,46,116,208,236,142,82,250,129,151,47,191,173,108,194,129,116,10,31,188,65,81,43,104,48,108,4,56,130,27,21,
-243,126,72,140,157,167,62,242,143,130,36,93,18,99,83,69,52,60,203,85,119,149,211,204,130,113,223,89,157,244,173,250,
-193,174,54,118,222,124,115,76,0,198,44,184,135,95,215,61,71,163,30,224,232,31,247,149,237,163,210,191,47,159,179,13,
-195,9,64,176,42,36,6,120,189,194,166,97,4,43,203,94,62,151,88,98,173,53,99,4,166,159,80,97,201,150,97,96,
-132,118,150,209,54,147,38,55,46,60,43,154,34,198,252,115,89,62,189,64,222,29,55,18,238,229,176,1,134,200,22,101,
-56,67,53,95,65,150,170,248,254,87,31,3,137,187,183,189,196,2,0,127,117,226,36,179,235,166,174,23,150,13,20,172,
-186,5,61,83,60,171,129,227,143,74,75,28,248,27,197,189,231,230,21,57,156,133,17,188,161,38,75,53,32,76,173,196,
-59,132,246,2,205,27,217,29,232,130,212,18,36,253,13,57,138,107,146,255,218,112,86,36,87,61,188,194,130,40,247,23,
-240,6,176,110,192,213,184,231,152,255,95,246,210,125,224,178,214,97,65,93,136,237,254,185,115,3,138,213,6,70,191,207,
-229,105,27,49,177,17,188,147,82,46,106,154,164,82,155,232,108,85,230,106,157,115,25,94,183,102,56,225,127,27,130,184,
-240,166,48,47,4,216,28,31,221,77,21,44,130,157,1,111,153,160,171,35,52,63,33,25,64,64,228,87,3,52,27,80,
-143,83,154,86,228,180,105,187,117,107,16,161,234,133,128,234,236,44,35,162,68,168,87,16,207,5,13,42,115,156,177,141,
-124,2,41,203,48,2,81,242,104,167,31,195,207,32,223,167,182,167,134,159,21,166,227,179,5,131,106,187,147,69,164,104,
-197,193,234,152,84,162,111,17,249,55,154,154,82,91,145,33,47,86,229,117,192,12,5,70,154,10,216,196,138,221,2,71,
-146,64,110,146,22,19,194,10,7,157,168,111,209,2,183,146,199,240,0,169,233,183,117,251,209,120,14,88,215,189,153,23,
-250,237,188,102,46,79,127,10,179,172,39,198,153,115,121,53,254,246,254,101,246,253,74,186,217,246,62,105,237,163,212,37,
-181,150,149,87,87,32,179,162,230,18,184,234,219,137,2,219,140,61,182,44,161,17,38,142,69,164,234,69,41,244,170,4,
-253,232,255,132,79,155,126,109,91,239,168,190,74,62,140,166,220,87,150,245,80,50,54,130,222,159,253,132,142,93,97,50,
-14,235,176,134,116,233,254,123,88,114,139,130,120,202,139,170,255,253,125,56,244,173,165,254,80,236,217,188,136,187,23,179,
-69,18,223,249,35,193,186,44,115,77,175,0,197,138,134,63,2,59,20,55,62,151,5,201,212,63,247,42,237,195,253,237,
-251,12,141,93,75,6,68,230,52,96,113,231,192,22,100,136,237,204,217,112,88,32,123,120,4,111,254,39,168,80,219,37,
-94,156,100,181,238,17,49,91,21,87,55,38,160,225,22,131,134,5,9,52,18,231,194,152,44,135,191,237,152,93,73,169,
-136,253,178,116,94,225,177,238,56,61,16,203,252,84,67,227,26,38,241,151,100,34,35,88,107,254,62,154,125,136,204,50,
-96,135,251,173,31,85,52,158,12,89,93,115,54,191,114,253,83,66,141,38,20,76,0,225,216,144,67,53,245,238,145,215,
-71,186,184,250,61,217,6,214,67,254,255,192,226,203,102,52,44,53,189,103,22,100,141,158,247,146,250,210,84,70,174,22,
-177,220,55,44,254,119,105,168,138,151,81,107,72,141,56,17,242,29,230,176,252,152,158,193,21,244,158,97,3,84,179,91,
-77,195,18,195,99,43,80,58,236,106,72,227,148,82,31,76,217,59,72,202,68,112,12,248,71,152,124,228,153,214,164,122,
-252,45,127,15,40,219,150,69,242,75,190,11,64,124,201,222,141,17,235,83,209,67,58,50,194,62,214,99,162,122,183,139,
-142,210,98,100,11,32,185,35,65,190,151,171,116,195,70,11,255,236,178,122,136,61,102,203,122,43,16,49,42,89,110,215,
-133,206,48,99,11,109,168,220,195,143,163,140,252,104,21,195,127,224,40,184,1,240,22,58,127,77,198,49,40,140,255,251,
-241,217,197,53,213,109,221,73,242,6,81,196,52,8,156,92,236,254,179,39,209,197,248,224,222,85,40,193,120,43,100,135,
-85,84,233,24,203,103,206,244,42,225,99,154,158,241,189,134,130,177,16,79,206,238,163,249,148,52,207,142,64,186,132,174,
-110,142,115,199,239,141,167,206,52,132,132,43,249,156,70,19,57,151,179,0,236,220,34,23,198,118,61,105,111,135,222,83,
-149,140,162,28,207,23,46,210,116,130,156,229,16,228,10,83,41,209,253,82,76,169,71,160,129,205,246,218,44,38,210,209,
-70,49,127,56,30,125,107,201,13,245,224,27,145,21,143,93,25,79,92,165,102,55,203,213,253,94,43,54,220,138,171,244,
-120,59,128,217,109,27,72,58,43,233,243,118,40,188,207,36,200,97,197,179,175,66,199,241,71,169,229,210,175,253,225,205,
-242,222,125,133,154,183,192,245,70,146,80,126,75,208,116,20,158,124,186,146,150,115,62,31,188,39,228,58,69,5,94,212,
-242,171,175,190,194,37,198,173,86,221,86,9,177,28,140,184,247,67,224,163,123,77,58,161,144,154,109,12,184,237,35,162,
-93,57,128,81,214,153,175,26,210,39,180,60,7,175,19,198,159,186,119,97,140,153,206,42,57,138,41,151,99,180,88,201,
-247,98,50,157,166,130,86,32,206,91,180,82,168,149,16,199,195,137,116,99,59,187,111,136,22,114,210,115,155,14,0,196,
-145,58,15,234,11,95,56,94,7,249,183,144,157,239,193,41,86,167,149,153,23,92,96,116,32,219,39,246,162,251,217,140,
-248,73,208,44,205,191,80,81,135,71,14,110,249,222,220,1,83,45,126,102,206,110,114,236,208,201,160,247,207,225,161,125,
-115,203,130,171,29,113,83,28,3,114,117,64,185,162,120,48,7,5,26,109,165,196,136,182,188,238,162,127,28,117,198,108,
-90,95,210,164,79,45,233,219,240,96,76,218,38,125,9,54,52,89,234,40,254,219,99,229,179,205,219,203,164,155,123,76,
-128,192,123,32,249,235,102,226,93,42,200,131,90,49,87,128,30,226,75,37,189,134,110,122,79,127,97,197,152,95,108,154,
-247,95,184,64,15,188,104,146,85,103,146,129,28,140,238,21,114,141,177,76,126,113,146,167,170,163,200,77,176,76,247,82,
-161,117,6,33,250,6,151,67,238,18,100,89,58,62,160,66,243,188,63,104,123,92,15,181,31,93,12,231,215,172,57,57,
-104,71,188,207,210,248,70,175,225,202,218,143,18,211,227,61,139,90,94,180,192,218,248,137,129,239,189,114,199,102,49,226,
-250,59,199,162,15,188,110,111,117,247,15,240,180,173,144,199,99,2,9,131,247,120,158,116,60,19,226,208,242,199,97,132,
-249,127,167,39,91,159,22,9,129,70,187,145,121,49,198,47,208,170,216,61,215,160,83,177,122,179,205,192,27,123,158,163,
-37,62,8,75,111,231,142,27,105,120,33,54,77,9,28,194,148,107,225,126,191,220,138,26,105,242,247,168,155,112,96,191,
-79,240,133,92,216,214,71,13,32,76,227,224,172,14,229,182,68,110,183,249,27,34,123,3,8,241,14,125,98,195,8,23,
-71,232,191,72,19,151,98,71,9,206,250,124,123,147,43,160,24,15,117,94,89,39,129,84,57,224,102,161,118,13,223,102,
-8,43,208,222,11,34,230,119,128,239,173,127,17,49,111,196,115,93,101,188,84,117,237,114,52,143,158,219,32,164,134,226,
-85,163,248,74,164,9,5,228,156,173,251,48,11,47,20,76,218,1,251,126,168,108,92,111,43,40,133,86,188,242,193,81,
-44,98,103,115,66,81,129,242,100,1,208,240,18,89,251,126,83,9,52,191,174,70,92,111,165,188,253,12,109,26,93,111,
-253,117,238,244,145,150,231,19,165,10,229,204,66,238,137,111,119,72,167,187,8,220,32,250,207,241,68,104,197,149,229,205,
-197,7,238,34,251,60,78,17,15,150,67,161,218,116,47,201,213,239,60,78,211,158,62,187,113,201,53,33,6,8,91,239,
-122,210,84,145,40,127,122,63,232,174,250,116,230,16,149,113,69,48,6,139,255,183,6,206,91,227,10,128,103,61,182,142,
-231,229,27,193,40,143,37,237,137,98,151,61,182,43,79,8,204,123,135,18,143,33,133,197,193,175,23,160,97,216,107,188,
-22,18,253,132,195,150,192,254,67,55,255,218,218,121,69,233,36,5,58,82,75,16,69,14,74,199,70,219,222,202,19,211,
-174,187,39,187,74,16,11,181,58,140,199,127,145,110,170,121,161,99,181,103,119,188,93,27,118,14,227,73,165,142,61,169,
-214,185,174,109,104,57,103,41,28,174,240,76,81,208,244,24,145,169,58,214,141,32,250,178,36,9,104,45,214,143,34,194,
-207,133,38,48,109,3,189,46,74,130,155,110,107,141,215,220,202,147,228,120,41,245,188,101,229,105,149,1,44,125,50,200,
-124,41,113,143,224,13,73,9,161,181,113,142,118,121,229,254,17,182,137,73,44,214,239,25,89,23,154,54,13,38,31,95,
-185,163,6,218,81,200,218,67,196,68,84,254,173,115,240,162,60,164,4,79,128,244,131,13,37,34,170,64,161,3,115,187,
-86,251,227,32,238,170,105,78,89,177,28,178,40,19,117,110,251,68,200,79,25,162,170,84,37,143,248,135,40,94,251,117,
-61,58,160,107,60,1,53,144,169,55,194,30,174,9,39,181,189,220,77,0,5,233,16,175,88,176,174,152,218,170,138,121,
-97,12,173,209,103,168,172,195,188,247,14,183,192,152,251,106,94,66,180,146,142,239,205,227,252,255,155,194,79,242,238,112,
-177,126,30,56,59,254,51,33,65,204,119,248,244,204,101,117,122,37,53,231,71,172,62,41,124,47,183,212,68,69,68,89,
-74,217,218,209,187,221,64,38,140,48,247,71,202,58,120,84,27,183,76,160,237,144,36,164,160,192,47,104,103,234,97,232,
-195,226,42,211,201,94,150,94,151,183,103,60,204,30,126,136,156,61,90,223,179,128,171,148,6,186,52,199,220,182,156,131,
-212,72,134,40,138,90,16,78,23,201,208,237,245,200,105,115,96,208,105,245,13,224,5,90,237,79,53,45,110,20,132,97,
-199,214,224,201,53,167,57,19,82,6,116,49,67,210,192,164,91,56,76,34,216,119,250,70,123,104,69,208,103,225,128,176,
-18,77,26,225,201,73,125,214,96,115,44,197,180,75,210,77,55,146,205,156,121,225,120,188,214,104,224,239,67,20,100,100,
-171,115,66,251,150,176,83,205,88,242,156,134,131,80,210,155,153,184,250,68,188,32,182,6,173,231,128,198,176,157,115,112,
-81,233,39,163,87,86,65,252,108,97,121,113,166,146,216,84,7,22,240,123,9,188,5,193,198,34,217,211,60,13,69,22,
-5,79,235,93,33,62,100,235,95,112,64,71,72,86,219,45,255,253,88,166,82,236,143,45,129,111,192,212,80,71,215,148,
-159,219,246,117,154,25,195,75,231,163,8,36,175,179,210,141,73,178,188,51,164,40,194,180,13,157,148,72,216,65,1,99,
-130,27,211,240,235,118,102,30,198,67,41,129,56,172,125,84,166,167,70,250,23,97,38,110,252,50,0,52,163,191,174,133,
-225,63,250,138,114,18,29,194,149,58,111,89,23,38,91,162,100,77,53,171,130,223,254,197,92,167,220,201,3,102,111,115,
-172,140,44,78,26,112,227,85,196,12,201,249,10,156,41,183,38,235,82,145,253,217,21,126,51,238,36,245,232,11,186,9,
-181,198,81,161,123,170,46,169,55,151,117,55,94,165,218,149,1,252,207,251,33,57,40,125,40,12,164,223,81,30,168,81,
-194,94,102,204,50,77,225,196,84,217,149,204,218,33,92,244,253,80,231,141,56,160,157,181,159,173,3,127,133,94,212,204,
-7,48,141,233,96,209,227,203,206,70,193,33,14,81,160,155,167,121,112,21,64,71,242,171,250,219,98,89,202,17,41,172,
-34,61,86,249,208,253,254,56,54,156,20,135,59,173,57,92,238,198,10,30,110,171,20,141,239,215,162,117,172,72,113,140,
-143,204,77,39,191,229,171,74,93,194,59,156,0,160,213,45,128,113,79,119,175,108,84,155,180,23,5,235,45,57,218,141,
-197,56,206,168,249,235,121,75,214,250,133,174,180,38,216,98,23,148,23,131,34,26,172,173,31,119,125,208,127,34,164,158,
-232,105,75,106,209,36,92,51,184,67,8,45,113,111,246,218,73,79,120,85,64,25,29,209,177,78,249,4,217,25,0,34,
-47,213,165,20,68,91,89,15,53,37,231,122,186,77,228,231,92,70,239,95,253,74,178,240,6,99,124,175,68,187,39,220,
-162,145,162,232,51,194,208,183,49,79,211,64,7,206,232,235,124,212,163,40,23,47,241,78,81,32,193,242,36,59,242,68,
-31,85,234,135,202,246,241,11,48,44,119,167,120,110,185,78,139,105,76,173,191,213,208,218,19,183,15,138,56,27,139,90,
-24,64,31,87,44,169,1,127,83,11,145,132,165,4,198,99,30,82,0,188,121,69,17,175,52,76,220,68,243,252,35,6,
-209,149,59,115,138,184,189,147,55,92,75,182,183,110,230,171,64,200,173,148,7,83,242,170,176,46,226,232,227,106,223,4,
-230,127,11,201,90,106,186,5,124,73,50,44,188,27,172,128,242,231,157,23,64,130,70,35,195,40,180,24,134,30,100,155,
-134,140,21,106,50,6,253,1,62,196,237,157,28,160,40,153,8,179,116,114,111,170,9,228,146,189,234,19,180,90,28,64,
-20,226,168,47,204,113,226,231,196,32,166,250,252,140,55,198,221,106,218,205,7,39,0,22,173,55,206,158,17,47,108,230,
-235,5,107,102,16,214,240,79,173,49,144,224,103,125,90,101,84,186,248,170,177,28,194,175,231,146,115,200,133,158,178,173,
-122,156,65,73,229,12,69,125,149,197,248,64,88,13,237,128,69,77,207,127,123,9,247,206,221,167,28,212,180,219,145,32,
-113,145,131,191,232,0,148,18,170,63,213,221,2,49,101,101,100,220,68,251,23,11,10,20,215,145,215,255,97,158,237,62,
-11,17,224,83,126,170,31,60,73,143,136,13,66,174,148,48,14,118,174,249,169,191,238,241,158,147,48,63,129,127,189,90,
-185,172,141,107,100,184,14,167,178,13,113,227,125,134,66,232,76,227,111,99,121,214,201,115,79,172,34,197,11,116,183,21,
-111,191,0,147,143,29,31,42,6,32,98,219,25,186,98,246,242,192,72,255,8,86,14,114,183,212,93,72,18,143,141,91,
-41,113,104,139,116,190,76,55,75,79,171,163,12,218,206,30,93,139,70,119,255,32,79,153,208,91,42,90,36,73,218,41,
-97,132,42,191,174,182,62,145,242,95,207,52,157,35,181,136,112,245,237,248,34,213,160,197,158,13,182,162,73,161,37,161,
-126,37,125,146,140,69,173,177,128,59,189,118,66,171,209,150,61,85,77,174,226,234,66,205,128,127,234,238,219,112,160,252,
-181,21,32,251,108,233,58,31,157,136,116,161,136,158,149,96,254,35,151,198,16,65,96,232,36,226,162,233,237,255,29,232,
-150,136,61,163,196,205,19,89,207,117,34,218,240,5,58,98,125,7,32,19,224,43,10,59,66,28,203,22,204,59,208,88,
-107,39,100,1,115,231,146,195,88,0,156,139,95,43,91,148,87,160,111,242,234,206,197,53,171,183,66,65,232,201,154,141,
-3,167,215,181,243,225,207,10,54,130,124,9,71,111,89,213,165,131,215,175,39,65,55,115,233,101,3,182,24,109,130,2,
-33,173,2,23,6,108,246,245,202,20,68,48,10,127,174,77,136,101,232,47,89,61,154,65,121,56,106,250,252,12,47,197,
-207,56,97,116,106,255,106,113,237,222,149,225,10,124,234,59,73,47,237,144,107,101,113,18,155,225,250,138,243,109,102,137,
-253,238,216,14,24,71,203,164,203,147,49,239,229,166,91,18,36,119,62,124,36,47,121,108,65,141,108,80,129,208,197,134,
-102,14,195,155,115,158,131,161,132,148,110,111,0,18,186,231,106,160,134,164,195,187,103,126,220,158,114,6,60,74,213,133,
-77,109,44,50,94,96,128,100,35,249,169,102,147,236,73,137,214,68,241,27,15,89,239,85,175,34,4,127,109,61,125,221,
-185,80,213,9,113,236,5,144,208,207,78,26,162,179,252,12,180,28,4,224,129,157,121,96,6,165,114,222,1,113,118,217,
-133,121,230,157,111,68,116,216,214,189,213,171,243,31,96,60,192,21,242,123,152,181,124,216,89,210,201,145,160,193,235,200,
-174,186,241,208,214,214,70,227,224,149,51,32,20,213,41,68,216,183,79,140,63,67,22,81,74,18,24,83,247,43,34,188,
-99,99,210,98,214,29,71,44,235,51,205,13,143,101,98,17,196,182,230,150,158,203,81,204,206,146,138,171,180,43,19,246,
-245,122,20,188,161,161,249,87,148,157,56,54,178,217,31,247,128,43,183,125,23,169,106,139,156,96,135,176,202,118,187,102,
-92,8,80,135,35,112,71,131,139,151,74,32,223,160,148,67,69,185,12,183,184,175,29,88,11,231,242,3,250,94,82,77,
-43,103,161,96,255,252,69,118,112,26,133,161,135,90,181,110,4,192,128,117,250,39,57,218,247,230,162,110,254,26,116,6,
-127,190,148,91,165,129,0,14,178,46,5,165,156,200,233,255,235,208,33,76,253,92,22,31,203,222,20,234,128,189,104,4,
-97,118,9,244,230,0,148,128,164,66,47,225,107,252,2,91,213,12,92,61,174,222,84,47,217,15,233,31,79,168,241,184,
-23,167,200,60,234,184,167,6,137,245,131,84,66,22,94,65,49,128,199,167,12,0,203,55,206,83,8,3,217,100,218,198,
-182,179,240,217,116,185,183,181,231,247,175,47,136,55,208,77,132,205,198,228,129,118,98,159,39,254,80,1,171,80,184,229,
-1,24,115,248,151,225,16,191,248,124,99,211,163,178,57,54,41,114,39,211,193,206,59,29,129,7,246,163,226,162,100,37,
-56,168,202,62,149,250,52,188,174,161,253,247,85,56,109,106,55,139,210,187,125,228,9,111,1,120,111,3,240,169,154,149,
-114,108,0,36,53,18,74,94,94,74,251,162,98,46,24,6,148,180,188,200,153,94,155,64,21,194,73,6,207,218,77,172,
-23,11,22,58,198,3,38,3,84,111,10,126,16,217,146,63,93,182,33,249,248,173,52,72,164,168,59,82,21,176,32,255,
-197,69,42,158,211,155,105,205,168,185,196,32,160,219,65,84,159,22,54,23,42,188,249,125,195,142,184,70,36,224,115,32,
-232,45,112,94,61,72,57,177,104,151,240,168,232,240,251,242,162,77,40,218,216,8,238,118,169,70,164,238,180,165,250,200,
-167,252,215,187,203,83,250,175,122,26,109,164,210,26,195,187,82,70,127,224,224,110,225,147,172,127,76,73,187,135,127,148,
-120,16,162,229,178,65,255,128,75,48,147,100,109,98,137,124,140,11,168,66,5,190,119,205,19,198,251,187,86,8,29,72,
-44,42,13,133,223,189,207,216,200,182,34,195,165,156,65,155,61,48,110,2,239,40,22,166,21,177,159,171,38,154,128,106,
-242,23,48,34,163,109,129,147,145,161,50,158,22,237,112,25,197,126,218,124,47,121,218,100,196,176,229,57,94,255,205,34,
-107,115,114,162,57,146,107,19,127,78,53,34,42,242,17,127,151,62,220,215,116,210,231,177,247,129,226,224,145,149,38,155,
-168,213,229,78,245,234,46,71,51,234,146,121,107,241,218,72,4,93,124,210,237,217,215,142,174,250,56,183,199,57,173,36,
-227,48,101,105,206,192,10,106,4,74,194,19,174,255,29,106,61,83,68,29,247,63,79,122,52,51,101,209,154,172,194,106,
-180,141,194,38,80,60,86,75,217,213,114,51,19,178,144,178,227,167,108,184,123,175,180,96,226,9,60,53,217,42,60,22,
-228,115,217,221,72,189,227,7,223,71,22,39,33,80,210,75,208,109,28,117,130,34,63,246,156,187,19,236,237,155,99,160,
-225,109,18,37,249,95,171,177,159,130,40,87,48,53,18,11,89,158,3,131,43,18,153,254,238,186,194,171,113,31,241,13,
-202,248,28,37,30,24,253,229,68,24,34,45,224,64,233,5,36,194,59,173,11,217,171,40,181,20,128,224,65,88,103,14,
-90,114,177,227,194,190,125,252,137,151,72,144,250,164,70,89,159,44,57,36,248,98,225,210,210,124,34,190,207,163,43,136,
-229,222,114,162,171,79,152,184,65,148,217,203,145,195,196,195,127,157,214,61,158,34,233,229,81,64,133,83,213,159,162,83,
-183,75,72,86,63,186,111,5,86,215,139,64,188,174,215,225,190,126,204,167,186,183,9,184,59,80,135,93,152,185,141,57,
-46,156,121,228,124,225,197,180,61,130,183,143,69,11,120,208,250,222,147,131,148,124,45,77,123,224,92,112,16,107,160,243,
-185,84,252,169,161,47,49,157,117,213,143,201,97,123,207,134,99,37,232,59,30,184,110,112,125,130,238,173,134,122,197,137,
-0,91,127,128,116,118,238,43,148,243,4,65,220,9,90,3,134,174,212,161,193,251,92,132,132,182,111,109,65,162,84,85,
-209,103,15,119,23,147,212,60,6,125,178,87,28,182,82,132,28,190,52,198,186,31,127,223,32,154,40,91,83,63,19,140,
-249,4,2,68,176,89,12,74,253,76,165,137,185,69,192,27,24,105,240,185,192,191,129,11,107,36,142,112,39,141,198,43,
-184,128,127,163,72,107,9,164,114,205,101,27,86,46,195,157,15,192,50,37,115,10,56,45,249,147,83,169,117,39,31,208,
-229,7,7,75,140,66,118,36,35,201,0,171,208,231,120,221,245,84,230,9,244,246,94,158,247,57,39,85,95,142,188,83,
-130,85,230,239,222,39,218,38,245,57,15,111,95,33,195,245,72,208,15,149,216,98,216,50,197,16,98,230,26,34,162,94,
-188,229,170,118,166,193,186,133,168,71,77,98,73,163,138,248,230,82,99,154,39,100,100,120,143,101,41,144,82,153,242,22,
-15,5,123,131,107,153,195,227,9,73,172,199,99,210,160,254,233,230,85,50,177,249,71,4,221,186,81,61,243,32,82,28,
-235,148,254,22,24,61,191,110,62,38,97,44,49,24,184,207,11,68,120,120,222,108,55,3,40,69,241,28,106,96,65,6,
-143,22,14,108,86,218,186,211,49,196,151,162,161,207,116,232,72,244,130,96,154,54,23,213,233,197,73,46,202,120,239,24,
-142,110,62,93,102,108,1,161,117,145,60,66,110,88,119,41,223,100,61,196,154,71,224,181,193,156,88,244,72,217,87,153,
-55,238,99,133,209,9,167,157,98,215,204,189,210,174,142,181,144,28,132,142,59,219,126,91,174,132,27,104,185,133,235,254,
-103,26,15,207,14,35,43,10,209,188,217,240,21,98,248,97,78,169,31,245,142,251,169,216,72,83,41,118,171,207,225,217,
-78,118,186,140,119,168,63,115,191,96,220,80,234,209,22,69,241,236,68,109,203,137,98,182,177,246,153,104,64,51,35,64,
-118,200,198,178,187,110,48,25,213,234,140,43,2,143,124,92,55,26,22,138,150,245,188,62,130,42,201,219,145,176,231,248,
-98,72,113,121,181,119,123,133,162,85,233,145,233,229,121,185,87,190,37,100,130,170,116,155,225,88,255,252,92,171,232,112,
-222,108,53,62,225,59,97,155,143,188,208,0,58,218,16,109,229,254,100,75,172,179,178,226,105,245,156,71,205,7,138,37,
-36,159,25,243,170,71,104,155,112,179,226,207,181,61,199,88,110,218,17,181,202,65,152,227,225,138,53,60,164,156,134,171,
-17,126,193,173,47,217,147,183,165,151,170,102,198,186,15,195,8,96,99,246,102,99,215,95,43,155,238,222,112,115,53,244,
-171,245,100,132,46,135,19,255,132,13,61,62,235,138,64,10,113,176,216,120,203,200,41,108,114,67,107,228,252,233,74,105,
-90,128,125,16,21,228,66,1,143,99,224,196,19,250,230,186,130,87,77,114,195,95,169,28,203,39,237,167,209,162,112,3,
-122,29,244,78,220,247,216,64,171,115,179,153,208,248,73,132,245,182,190,189,162,242,90,195,9,177,218,50,125,6,219,45,
-240,160,14,202,33,245,78,128,217,16,26,176,55,14,163,91,150,235,174,208,108,18,74,182,207,132,196,28,126,194,132,115,
-200,145,89,19,222,82,58,77,219,245,119,84,187,105,210,96,84,154,33,194,157,95,159,5,155,77,85,247,41,252,68,197,
-79,165,233,48,147,113,98,105,195,237,55,250,43,203,27,204,30,41,217,142,234,250,212,147,170,193,219,90,53,58,46,137,
-8,146,88,210,128,59,80,233,247,37,182,173,8,49,151,44,60,109,66,185,132,11,75,4,55,227,6,238,146,252,98,19,
-7,252,189,14,116,5,88,247,103,41,67,15,61,172,30,145,230,186,46,225,46,161,32,225,108,243,79,152,23,45,205,198,
-152,151,68,22,21,0,236,94,227,191,20,243,116,184,65,50,10,47,238,125,59,108,196,196,13,127,39,15,229,184,200,79,
-68,7,226,19,161,138,218,134,114,211,124,50,45,148,209,81,200,103,24,225,35,214,160,96,167,66,242,195,252,18,245,2,
-243,204,69,49,169,103,244,21,204,67,70,253,255,22,118,212,172,165,104,179,209,116,129,200,177,205,139,23,32,43,177,117,
-233,17,55,48,104,187,49,94,7,224,96,244,209,230,160,74,109,41,191,15,253,220,72,204,73,18,211,17,31,85,91,10,
-74,152,215,83,8,47,48,10,146,134,150,246,19,136,154,29,174,203,210,58,189,238,120,41,191,88,41,238,50,150,185,174,
-170,34,16,95,29,121,249,120,37,96,170,35,14,47,137,248,23,211,120,89,181,62,211,42,250,202,33,34,216,29,173,52,
-66,72,15,7,250,230,155,250,190,43,177,51,245,70,121,114,57,167,40,91,226,204,189,167,148,28,245,188,12,204,101,48,
-22,187,33,148,178,188,88,179,155,218,72,118,156,76,207,23,39,191,190,117,189,55,180,112,144,0,189,221,1,181,194,10,
-240,167,130,89,6,248,228,159,207,3,44,100,246,21,231,164,180,71,125,19,115,168,147,157,178,77,118,171,165,253,165,109,
-16,189,66,11,49,76,183,128,254,232,163,196,29,17,172,222,15,55,220,185,163,188,30,2,160,67,229,168,123,226,213,228,
-252,46,135,35,186,22,16,216,153,27,227,23,201,94,61,97,150,58,109,202,60,193,42,228,15,226,10,127,214,128,85,223,
-166,209,241,94,208,75,161,235,227,172,76,228,244,69,71,240,32,147,20,124,202,79,251,108,35,143,21,193,15,93,172,69,
-199,136,191,240,217,232,8,219,65,160,46,61,202,158,27,196,214,154,130,104,58,213,166,180,234,39,116,8,178,14,111,146,
-136,253,219,14,74,171,124,178,174,124,199,9,230,212,91,119,161,95,96,94,246,23,240,80,151,235,150,65,155,123,29,88,
-224,43,33,63,30,132,28,156,200,233,255,144,153,55,183,247,145,131,87,94,86,215,197,188,14,15,202,124,129,204,188,49,
-79,242,49,31,182,126,246,94,113,33,111,195,10,29,221,113,230,90,31,156,152,64,110,188,172,9,191,8,207,115,62,7,
-209,63,182,235,4,248,181,8,46,164,237,74,189,55,112,216,104,66,35,148,172,217,142,106,108,193,149,161,98,114,152,110,
-47,196,74,109,218,197,200,98,114,251,121,163,198,159,22,78,143,56,3,210,21,158,245,232,192,178,80,138,171,80,49,64,
-231,40,193,203,133,115,246,68,152,182,140,46,196,156,77,27,207,76,22,207,168,44,23,37,199,39,152,47,9,111,135,9,
-94,144,153,29,240,227,175,247,206,144,189,225,13,99,27,97,74,65,206,27,87,10,58,236,187,46,81,251,65,216,78,114,
-43,141,65,46,212,220,18,116,165,151,116,196,26,235,189,124,190,216,101,159,140,32,187,25,167,80,175,152,179,247,212,127,
-47,199,78,89,248,31,173,239,139,91,6,232,243,150,220,42,178,167,134,251,55,112,79,184,85,27,28,36,175,93,102,223,
-118,209,189,126,40,27,218,196,235,105,196,53,216,110,225,233,7,218,62,120,149,60,57,48,133,123,0,130,50,136,47,249,
-239,161,13,54,157,64,157,58,221,58,213,51,100,237,131,26,123,148,235,202,212,104,129,199,151,85,121,126,2,181,147,17,
-193,62,132,208,9,180,75,101,246,253,65,99,27,41,234,113,234,79,196,209,229,80,83,251,81,151,95,103,155,5,66,214,
-241,136,234,92,60,45,12,24,33,220,6,87,118,84,70,11,243,116,227,224,8,97,60,82,244,220,60,9,119,137,253,43,
-125,114,132,255,192,153,161,220,81,145,180,43,255,139,80,126,5,68,127,110,97,247,175,186,118,148,180,225,60,214,246,129,
-5,61,117,163,139,40,226,253,45,33,147,214,93,141,167,137,0,121,224,172,99,85,152,86,163,72,205,106,223,35,181,174,
-104,244,240,192,226,234,1,246,215,56,9,61,208,26,156,118,134,4,102,131,157,84,133,24,41,183,54,195,10,56,225,54,
-14,176,144,195,180,192,246,4,206,236,234,255,39,38,188,118,199,157,56,42,152,4,6,195,253,158,131,0,189,116,16,185,
-29,57,138,65,39,36,149,236,201,226,143,93,196,80,165,248,189,168,83,221,117,229,5,18,162,97,255,249,203,194,205,221,
-133,152,16,203,144,179,231,1,24,20,134,38,99,76,247,170,70,6,161,172,152,123,250,78,159,202,232,253,70,222,250,239,
-82,240,0,190,236,40,251,190,57,159,235,254,34,136,7,52,85,58,34,169,4,156,128,189,89,161,249,148,229,236,131,59,
-241,191,128,83,114,207,90,134,93,186,42,139,138,242,88,235,36,149,147,251,231,109,202,106,222,118,202,149,223,217,26,24,
-207,252,216,122,153,43,5,89,159,86,165,243,75,188,175,45,108,221,41,180,130,130,109,249,135,204,145,221,148,77,106,148,
-50,63,162,84,144,124,135,212,68,89,25,52,223,175,213,112,2,102,235,249,163,47,36,45,146,48,12,164,0,143,216,233,
-169,219,30,44,46,192,56,171,209,155,236,206,66,110,44,170,198,63,34,178,247,40,22,174,168,15,252,57,0,186,52,238,
-45,82,172,176,205,140,34,55,239,153,221,53,124,67,137,113,201,211,69,40,94,209,7,209,196,45,60,67,22,43,114,119,
-15,82,235,244,43,221,164,107,29,159,227,69,231,195,41,141,30,216,178,239,247,181,153,179,145,236,247,131,169,197,167,193,
-73,83,166,68,212,203,199,176,153,13,29,112,94,49,185,36,230,127,165,123,190,43,68,243,236,48,143,134,33,198,136,58,
-64,231,131,179,158,67,178,191,149,222,225,162,82,207,79,128,74,229,97,142,82,171,117,161,143,193,31,216,35,61,105,250,
-192,177,62,252,197,215,246,120,131,253,156,166,35,236,194,88,248,158,23,198,58,72,165,107,99,35,93,108,142,95,39,91,
-21,22,152,197,202,226,18,52,8,157,82,152,2,90,124,59,199,182,101,212,238,219,148,92,76,145,2,59,54,254,122,211,
-136,51,221,88,148,194,174,134,250,244,103,7,40,119,123,86,127,211,48,9,207,201,8,189,35,137,70,246,133,134,12,110,
-178,14,184,244,173,10,139,200,50,181,131,94,60,74,123,75,100,128,191,52,56,174,188,148,96,201,96,120,41,172,142,57,
-111,92,20,187,108,21,8,217,61,207,198,136,248,144,149,58,146,215,179,170,103,5,126,34,72,3,225,168,24,143,244,243,
-82,157,125,190,132,51,186,58,0,217,149,153,202,122,250,229,17,56,0,247,247,10,17,67,208,252,201,4,57,255,94,146,
-185,29,177,133,92,45,97,233,28,33,89,18,32,29,207,75,216,106,215,173,163,181,233,82,88,79,51,112,164,158,157,237,
-136,57,202,53,246,179,44,138,166,83,52,118,226,46,199,157,38,63,96,21,255,204,192,227,168,110,198,77,3,154,120,236,
-204,243,252,154,235,48,75,64,72,121,236,162,211,140,88,225,211,80,42,100,79,240,164,177,244,211,159,143,179,17,109,180,
-198,242,180,197,47,20,210,237,240,4,67,43,244,226,236,77,20,29,13,11,113,122,42,30,233,3,246,133,154,90,244,87,
-78,156,207,149,40,44,160,98,233,75,199,14,101,41,101,101,253,243,112,174,35,68,7,20,48,84,203,125,163,127,157,60,
-253,69,139,182,244,50,61,50,73,97,34,175,235,234,228,191,24,7,94,188,25,228,20,12,43,4,242,234,62,79,199,238,
-117,55,176,1,15,4,252,145,14,52,84,54,66,127,82,232,47,197,179,88,48,183,225,124,35,83,199,200,148,85,75,98,
-152,103,163,212,193,234,159,20,12,164,8,106,237,227,218,130,155,134,92,211,67,161,3,66,39,63,253,74,247,250,44,89,
-45,53,21,167,93,113,115,235,159,43,234,180,88,99,185,202,51,87,206,116,109,36,239,221,166,136,18,202,253,149,244,187,
-168,135,230,47,241,52,195,86,206,121,221,27,54,88,27,190,98,129,70,194,148,108,196,180,211,209,34,194,184,57,195,43,
-106,64,20,4,247,238,230,189,70,85,101,78,50,10,150,111,229,84,219,31,228,131,5,92,47,128,15,77,196,130,105,205,
-18,106,186,246,7,243,255,251,38,9,134,164,73,94,236,232,60,227,19,192,75,105,201,11,187,159,232,143,27,243,31,83,
-68,203,102,137,173,147,20,115,28,129,201,159,172,8,55,124,216,7,254,229,193,173,236,150,160,114,176,180,25,89,102,180,
-29,203,162,18,14,161,87,224,103,160,30,103,248,213,250,161,161,49,149,85,25,112,155,27,12,95,164,35,94,168,239,227,
-157,0,127,208,180,237,83,127,234,4,76,13,159,168,167,241,47,191,147,141,151,119,21,233,68,187,26,156,145,133,122,49,
-79,78,170,81,37,143,171,242,251,241,238,234,197,35,137,230,244,201,247,126,30,153,53,154,97,239,151,97,198,103,48,92,
-78,103,133,97,84,144,93,48,234,117,191,87,196,246,236,77,239,181,61,123,250,97,74,184,23,169,25,23,6,41,2,30,
-211,116,159,153,160,33,6,190,168,119,138,43,254,69,113,83,178,120,207,39,229,134,247,116,196,192,171,18,131,155,33,43,
-211,65,91,77,231,97,124,152,99,244,158,57,82,117,152,176,247,128,8,10,0,4,103,150,151,109,21,199,13,122,39,163,
-63,67,191,25,11,238,43,84,84,19,214,204,22,176,65,175,28,20,240,84,60,41,206,104,240,225,59,67,72,32,205,190,
-43,59,254,182,96,166,11,21,240,159,57,92,79,198,222,97,86,235,154,155,134,180,73,131,110,189,192,20,126,94,94,77,
-142,24,218,157,219,191,182,118,154,227,228,225,51,111,11,68,120,192,249,220,191,12,241,92,70,181,242,56,200,138,165,7,
-190,198,102,2,184,105,130,248,132,88,115,235,133,86,61,188,124,73,234,35,108,177,252,136,170,208,245,116,78,48,157,27,
-113,176,129,111,241,197,6,255,231,189,95,152,207,114,181,216,248,17,168,60,160,45,157,213,92,60,48,101,99,12,69,196,
-187,66,47,122,43,213,189,29,135,15,240,240,156,193,55,159,232,235,36,96,32,80,99,180,164,106,9,40,243,99,129,26,
-147,255,190,0,238,166,213,235,102,196,121,15,5,47,126,111,18,170,209,170,13,96,82,120,135,171,254,19,115,239,255,116,
-144,58,185,58,59,25,59,126,198,234,212,45,124,23,71,3,77,243,204,212,137,179,64,42,75,59,97,52,88,81,182,56,
-85,65,95,250,82,62,49,173,218,217,167,77,215,253,8,135,161,174,188,255,135,164,124,173,98,22,166,105,32,29,121,166,
-174,44,241,139,78,131,110,2,15,114,87,109,242,116,235,177,75,199,121,183,95,73,198,78,24,206,185,208,192,147,246,247,
-229,54,78,185,155,45,127,15,155,81,63,152,57,7,246,19,72,222,31,74,231,197,141,95,145,140,122,214,88,18,236,163,
-8,94,168,132,16,234,77,189,47,30,117,166,207,9,157,104,74,159,199,90,231,181,99,127,39,195,144,11,103,198,121,190,
-85,249,158,124,251,2,212,212,69,231,89,169,180,35,13,207,19,218,124,233,12,232,224,223,236,36,21,126,93,25,32,144,
-136,157,186,29,170,167,85,230,254,202,85,56,57,20,224,135,80,131,230,227,33,59,154,122,76,0,125,203,208,208,205,164,
-85,240,209,244,54,187,14,20,90,224,206,66,156,142,128,164,60,141,72,213,173,4,190,114,173,94,58,223,112,117,227,242,
-224,188,126,23,239,82,138,155,192,88,43,138,206,13,248,51,176,215,47,187,223,106,201,116,5,78,22,57,152,58,87,9,
-241,14,72,30,160,77,237,122,192,236,26,38,235,236,128,131,49,121,111,21,13,165,210,67,253,98,199,211,45,167,233,77,
-107,65,98,56,181,127,124,126,148,179,187,126,79,123,175,231,86,189,196,28,19,205,130,33,112,183,107,193,61,147,211,54,
-124,18,132,202,18,51,173,28,137,191,199,7,239,106,76,40,35,253,12,29,156,116,172,25,97,173,60,35,114,194,96,120,
-219,112,95,166,81,203,170,164,9,221,255,18,224,45,255,0,12,175,17,34,0,227,106,57,168,64,50,204,100,44,111,41,
-93,0,168,246,208,68,237,2,205,80,166,28,78,40,109,222,213,82,65,125,249,86,21,130,120,252,150,78,54,125,216,207,
-106,221,70,178,154,49,166,196,232,29,208,103,35,131,59,155,175,138,115,176,141,105,115,169,95,218,127,233,109,244,180,200,
-105,174,241,53,152,9,151,106,145,252,45,69,107,78,154,41,52,184,107,67,167,181,54,145,128,60,83,72,26,204,252,25,
-56,172,228,121,130,85,46,103,100,196,146,59,148,252,171,141,172,110,41,239,218,252,31,192,129,238,21,128,67,152,142,89,
-231,158,30,131,141,144,158,149,179,174,17,48,198,217,125,175,250,22,184,244,130,253,223,218,18,87,230,243,166,140,138,205,
-242,122,223,40,232,209,149,67,240,122,245,249,218,151,234,139,218,28,172,32,14,76,198,10,246,242,56,199,169,119,126,231,
-206,86,121,150,177,174,184,94,173,60,2,42,208,47,135,231,17,28,172,157,160,205,229,77,168,241,224,157,38,238,1,82,
-120,246,37,96,177,45,10,37,157,185,182,10,174,105,23,223,253,204,13,84,43,129,127,15,194,186,115,237,124,236,240,205,
-152,164,179,102,103,202,177,255,75,23,139,196,244,59,244,0,200,248,44,158,220,52,10,30,115,102,202,80,255,133,97,204,
-37,236,47,133,152,246,221,106,226,226,154,215,237,208,23,204,208,191,245,93,139,213,147,158,136,63,146,162,215,86,118,115,
-0,45,88,138,167,176,198,195,98,57,189,65,9,69,211,225,35,147,9,27,247,34,192,222,119,223,234,40,184,85,236,173,
-85,44,176,31,236,59,82,29,171,21,74,66,201,199,227,50,227,51,161,148,160,252,89,165,161,59,72,92,8,149,65,63,
-150,146,136,74,48,247,73,250,182,255,245,250,240,111,252,210,197,230,130,206,10,5,207,223,186,213,198,183,182,84,232,52,
-156,60,71,190,24,48,1,56,18,215,241,249,125,41,226,52,221,223,56,88,227,173,24,79,131,3,235,116,184,244,62,251,
-112,196,51,92,222,166,43,167,53,175,127,151,231,68,210,28,156,238,203,218,234,107,246,203,228,152,104,177,17,31,67,67,
-250,36,205,31,255,2,57,78,174,65,244,168,142,29,147,255,159,37,74,150,80,145,202,226,238,36,174,123,108,156,124,223,
-3,71,40,151,225,228,241,222,163,212,146,164,72,194,8,194,210,117,160,73,113,206,77,6,69,104,85,188,252,83,144,154,
-185,2,53,186,244,78,94,150,15,238,133,224,63,115,226,29,185,121,24,147,138,100,191,142,103,177,179,189,60,4,5,124,
-80,29,4,195,241,89,92,77,80,203,48,70,46,49,244,27,107,177,47,128,87,93,165,20,91,23,203,208,212,20,150,134,
-250,87,246,183,181,164,225,33,41,159,13,63,238,135,245,40,112,101,124,39,168,209,150,78,138,31,154,181,4,80,40,163,
-128,235,16,242,71,102,183,45,201,212,63,31,251,252,138,143,231,30,183,174,28,204,161,189,90,77,218,3,222,96,249,219,
-21,174,208,23,170,163,151,209,243,224,36,23,4,43,234,64,209,121,99,58,111,69,235,184,52,104,171,76,190,21,116,35,
-11,35,125,233,225,222,162,206,155,246,179,179,127,48,72,116,57,171,63,218,122,36,203,243,6,156,160,176,31,197,202,231,
-85,111,85,64,230,222,184,154,195,97,112,18,35,90,66,115,204,33,19,20,20,11,6,107,47,227,141,45,115,168,134,0,
-124,80,248,151,243,208,106,49,182,16,244,170,5,195,22,84,203,180,87,48,113,37,202,238,212,209,241,98,100,52,143,133,
-162,225,29,208,164,146,175,26,177,252,7,72,196,74,140,132,247,35,77,200,54,129,118,152,52,100,29,0,249,11,135,118,
-18,75,78,77,65,224,206,175,85,130,61,81,208,140,96,46,92,232,93,165,160,26,202,204,49,164,213,219,68,224,89,212,
-14,32,147,38,41,190,82,48,246,11,207,73,64,104,35,50,40,138,99,219,156,41,140,47,161,136,78,212,1,0,137,133,
-191,83,84,144,160,177,167,238,54,179,169,247,36,134,70,55,117,217,151,156,148,214,188,12,214,35,248,83,212,245,241,190,
-137,89,109,201,169,226,172,121,168,252,252,14,122,208,245,218,110,251,171,199,209,86,82,109,25,54,167,44,217,81,154,111,
-234,200,16,25,173,214,142,185,42,26,160,93,57,134,108,130,102,115,178,191,91,54,228,197,106,156,219,97,114,119,212,130,
-231,156,141,198,32,199,118,145,166,173,108,242,223,18,254,252,252,237,14,16,176,49,87,85,38,152,217,158,187,82,192,6,
-236,84,80,200,31,137,98,85,217,161,172,156,98,18,169,39,182,41,144,32,229,69,255,211,62,151,161,250,95,244,45,30,
-157,16,123,110,64,184,61,220,170,74,40,137,22,222,242,113,237,18,206,40,130,45,228,103,99,184,108,164,160,150,130,218,
-164,167,8,198,121,194,223,230,12,72,130,242,53,48,119,188,142,225,129,191,188,19,142,226,225,43,103,230,9,211,79,112,
-36,255,251,134,210,119,5,251,107,42,221,208,213,114,103,33,254,182,216,103,38,158,199,72,11,83,180,67,100,185,52,203,
-179,9,211,81,86,35,4,141,160,47,193,72,50,69,70,252,96,236,22,61,33,19,241,49,145,209,255,125,171,188,235,84,
-115,233,228,211,220,241,126,156,233,25,241,134,209,197,168,78,21,127,76,252,12,165,80,89,205,164,25,104,46,1,35,182,
-223,90,9,58,115,21,60,159,72,4,56,215,30,180,9,61,81,85,133,163,220,156,227,80,216,70,206,152,50,236,225,157,
-80,132,228,175,11,229,74,180,30,199,41,143,31,235,251,11,152,201,233,106,192,59,24,77,39,196,50,109,146,90,67,164,
-208,245,16,6,7,210,172,249,138,186,6,194,176,27,178,194,147,167,162,168,183,9,4,142,125,24,88,249,17,72,202,182,
-32,22,160,156,213,7,17,78,82,13,37,131,125,157,27,17,134,223,17,187,15,89,95,102,54,188,56,251,85,108,56,41,
-215,30,172,1,58,93,229,201,61,112,211,150,208,224,23,197,183,200,77,45,113,223,6,43,234,46,90,206,114,140,201,120,
-252,69,27,171,87,7,148,29,26,135,95,40,167,149,27,164,86,47,31,174,126,97,50,7,119,166,215,250,157,146,198,210,
-22,61,254,61,70,106,75,53,38,38,116,52,41,13,184,254,11,74,177,62,205,144,30,177,122,225,64,124,13,166,249,28,
-104,21,185,75,157,92,163,142,233,66,226,200,145,182,220,104,127,250,70,211,62,107,114,205,58,4,124,61,225,221,134,187,
-161,133,23,10,148,137,140,178,241,14,228,105,255,23,146,2,147,152,57,94,129,251,90,229,9,206,150,13,157,12,13,252,
-89,204,72,51,37,204,38,6,138,207,62,223,198,1,253,135,248,230,196,238,232,95,147,72,81,202,152,223,108,24,192,63,
-100,217,26,205,61,177,54,181,12,189,140,25,214,188,45,91,15,61,165,68,6,176,241,73,6,168,42,68,86,157,34,163,
-71,130,60,120,2,17,76,216,74,223,40,93,31,28,50,191,30,223,158,210,183,250,186,223,51,229,105,171,162,201,143,109,
-254,170,180,5,99,81,27,236,45,198,248,20,111,229,108,109,3,56,66,76,42,76,243,163,147,135,151,159,235,126,38,161,
-125,29,232,131,45,123,161,41,181,86,233,14,80,196,138,172,241,49,143,205,45,84,215,99,193,113,233,203,148,59,138,92,
-30,191,80,13,11,134,87,158,62,197,61,253,38,197,4,70,141,31,8,163,163,178,19,8,231,15,77,169,91,45,55,49,
-49,76,100,104,221,246,75,233,78,191,31,93,62,197,100,173,241,9,241,175,125,21,78,243,120,157,15,178,163,178,190,45,
-198,35,50,2,216,39,31,252,77,226,224,181,90,253,200,201,139,43,186,236,226,235,241,230,95,241,78,157,74,105,183,68,
-178,211,51,229,97,139,92,40,88,106,134,234,73,95,116,244,154,229,179,205,43,23,112,106,219,53,126,119,210,75,83,8,
-116,135,60,93,152,197,38,220,32,239,222,143,69,141,124,87,238,128,60,11,86,155,18,12,44,27,167,211,41,4,38,182,
-57,6,180,82,216,27,127,45,235,126,21,205,147,102,73,33,104,0,133,60,28,160,164,103,192,70,26,211,113,210,228,121,
-226,73,35,255,8,204,52,157,21,49,32,44,32,174,51,56,41,251,155,9,15,123,254,170,97,77,43,33,80,133,32,3,
-45,41,216,169,38,177,71,6,142,95,83,160,48,116,104,152,34,88,22,161,42,25,27,233,25,78,55,177,52,21,90,154,
-181,28,9,13,105,193,190,59,10,95,189,53,165,36,136,215,2,218,145,111,218,221,216,112,141,215,205,32,112,59,63,186,
-49,98,18,185,140,55,17,124,144,72,99,211,56,8,242,218,29,49,26,118,22,205,156,121,150,64,25,153,81,14,124,66,
-78,204,170,136,245,75,66,236,14,226,22,47,206,51,63,36,254,225,68,203,145,47,205,73,231,22,145,191,10,11,65,148,
-152,12,250,201,182,159,45,110,232,84,192,159,179,203,217,92,51,29,139,226,76,30,125,255,255,153,221,93,111,226,95,249,
-132,32,36,196,220,94,199,230,70,51,210,13,184,224,77,111,160,43,72,80,141,204,201,168,24,71,192,220,104,129,239,184,
-240,179,222,226,103,196,55,197,97,248,97,178,83,199,52,206,95,63,21,235,184,88,4,28,13,251,3,59,195,120,195,110,
-118,251,198,169,105,244,230,190,57,222,250,216,220,97,169,30,244,141,28,148,135,149,176,154,232,147,31,107,141,67,176,13,
-238,106,233,193,45,177,165,18,197,30,223,79,110,254,42,77,150,179,237,198,110,195,215,122,85,104,104,220,241,250,193,164,
-6,122,247,85,14,25,86,39,20,167,121,255,193,132,96,129,12,66,27,156,234,239,92,248,251,11,150,32,96,209,231,69,
-10,15,35,51,192,60,159,12,123,152,70,135,182,200,51,70,154,187,100,80,76,61,232,127,93,204,20,79,62,228,180,225,
-212,65,255,38,167,10,91,208,197,116,72,2,90,155,251,79,254,91,35,9,96,213,24,36,113,189,249,66,200,155,14,251,
-252,225,253,1,54,243,57,56,11,60,164,158,160,247,130,198,177,37,171,25,222,149,2,75,38,140,133,125,47,96,193,123,
-191,16,215,74,87,219,143,199,131,190,97,157,34,103,117,94,161,56,87,191,87,26,30,44,141,115,12,217,237,218,132,147,
-97,40,178,211,18,108,131,93,41,54,89,14,218,209,109,185,139,207,201,98,137,146,176,105,189,95,4,22,3,187,35,39,
-221,151,155,137,6,22,118,67,144,163,215,14,126,89,119,165,115,231,117,186,229,66,171,246,52,238,111,36,56,184,144,253,
-6,89,185,216,95,72,151,126,107,64,165,6,49,71,30,251,191,125,7,204,70,246,157,25,67,213,252,19,114,75,2,152,
-141,226,192,93,141,187,254,39,72,146,224,252,158,18,150,111,168,195,81,184,98,0,245,201,173,180,29,93,196,198,1,73,
-37,128,30,124,132,130,162,132,169,90,11,46,30,42,143,215,239,72,110,41,240,131,171,43,82,131,7,152,61,58,145,18,
-41,112,40,166,16,77,28,2,110,226,222,176,120,99,7,86,80,9,216,85,220,84,184,137,14,147,134,133,227,160,162,138,
-212,94,238,22,89,135,29,124,170,67,38,7,241,194,255,251,211,24,123,131,200,176,63,180,252,107,28,73,48,128,60,44,
-216,166,178,69,162,144,53,219,252,15,107,55,159,79,131,26,5,113,29,116,180,211,209,123,222,219,170,97,126,194,147,41,
-82,36,27,20,36,110,18,46,218,140,162,142,82,171,66,74,17,232,45,31,56,219,192,134,46,176,90,121,33,201,242,134,
-246,121,127,129,53,101,16,98,146,162,64,90,125,43,69,251,222,180,75,58,135,60,90,155,165,16,184,73,184,242,23,34,
-183,5,116,81,56,185,208,16,215,158,153,207,211,107,156,93,37,99,138,204,55,53,97,44,57,212,197,84,166,236,22,112,
-181,167,60,196,123,106,201,187,135,78,251,149,146,245,30,116,83,130,156,234,249,32,96,183,159,153,34,47,213,14,229,26,
-71,167,229,34,88,126,242,176,153,66,62,151,148,85,252,106,23,190,36,146,169,175,105,124,114,235,20,104,68,180,153,126,
-164,219,34,189,38,156,163,72,115,56,56,126,194,92,186,242,23,171,123,115,244,58,158,14,208,229,146,16,76,125,87,201,
-8,8,206,20,3,238,38,113,82,209,45,92,73,177,67,37,198,206,225,229,88,81,108,205,224,199,155,95,88,214,141,94,
-16,165,11,212,14,226,111,72,199,253,35,205,250,109,102,185,62,179,174,45,155,150,23,35,74,165,129,116,64,168,188,113,
-8,28,67,217,22,101,150,145,27,213,141,249,220,95,167,70,78,58,127,80,184,31,105,51,255,182,56,142,56,185,14,188,
-181,131,55,148,221,17,54,28,59,42,212,160,108,86,13,144,124,211,224,32,210,93,179,221,240,130,125,65,123,180,254,246,
-202,214,71,94,70,59,55,21,69,78,203,127,80,163,182,10,189,180,90,120,162,67,94,217,158,186,89,35,247,91,225,141,
-217,93,243,69,108,40,181,134,2,31,210,188,100,3,9,79,27,134,205,105,179,202,43,36,241,158,5,214,15,43,121,198,
-165,249,108,189,104,1,226,191,74,229,205,207,233,24,211,183,109,207,109,114,106,63,104,10,53,242,169,107,178,33,140,168,
-59,115,149,219,76,94,211,28,127,169,107,13,99,178,20,253,87,148,171,20,167,30,45,6,43,193,203,1,46,202,99,27,
-43,62,88,149,218,245,147,105,121,191,143,97,70,59,107,221,177,27,14,154,170,160,166,97,122,68,47,64,74,112,7,72,
-161,157,96,245,62,140,66,4,67,41,174,158,68,106,226,151,176,18,146,71,159,255,214,169,159,73,39,154,239,191,55,52,
-14,195,241,61,181,154,202,80,7,112,27,38,142,225,65,182,23,194,76,20,56,27,120,60,171,74,62,81,85,59,45,127,
-70,135,234,142,36,7,238,129,240,91,39,232,75,128,9,143,213,174,214,241,182,225,150,178,187,72,80,222,149,37,8,2,
-76,85,20,102,190,71,7,44,36,97,66,163,102,244,109,144,56,160,74,199,81,181,248,9,75,180,139,251,225,169,113,23,
-174,186,220,45,78,199,7,239,196,153,92,10,16,216,107,139,199,4,231,63,88,213,212,143,36,237,251,104,110,135,184,222,
-112,46,141,119,207,192,44,47,163,40,188,246,76,67,242,18,13,139,172,203,141,164,213,170,224,137,28,26,59,52,171,83,
-148,247,179,92,102,86,45,76,207,209,26,184,127,85,9,1,123,20,49,105,115,248,173,42,77,1,141,182,132,174,60,44,
-45,242,136,202,132,157,87,89,36,181,160,18,142,57,46,106,231,194,99,224,25,91,219,113,182,161,121,250,38,16,189,250,
-144,46,43,125,100,149,216,112,142,59,206,245,32,53,121,249,44,119,248,159,99,1,198,232,32,115,20,187,136,28,175,83,
-200,166,244,189,109,230,187,221,232,27,120,178,134,239,194,71,190,138,247,206,193,204,134,36,59,185,118,127,49,199,171,76,
-174,178,91,82,16,198,107,28,228,22,31,1,247,1,194,226,11,5,144,173,206,172,108,38,143,164,4,133,29,45,28,253,
-180,70,189,120,130,253,139,222,107,80,43,39,219,180,204,240,98,77,109,126,175,206,163,253,95,78,16,254,22,56,247,181,
-210,220,210,14,246,54,69,238,194,115,250,81,204,52,246,229,169,171,237,142,140,141,88,114,173,44,253,80,12,82,118,127,
-207,142,146,43,205,195,142,206,33,34,203,179,46,239,195,130,229,232,38,190,108,70,175,247,99,145,110,216,251,53,182,251,
-170,73,81,131,60,27,214,188,148,254,180,193,147,190,122,165,248,223,156,86,208,245,115,231,184,119,92,36,217,125,7,101,
-166,145,7,34,182,12,238,155,210,162,98,45,233,48,143,95,127,110,93,86,113,55,133,239,242,46,50,160,69,250,187,197,
-59,116,163,205,133,76,139,242,25,65,41,251,97,70,237,201,133,149,23,6,215,17,105,41,192,203,87,254,198,11,27,97,
-230,243,20,52,144,194,118,243,31,244,178,237,5,218,16,252,90,137,209,124,81,93,8,100,135,103,250,161,117,146,89,130,
-1,109,112,196,20,171,174,153,60,103,68,222,138,128,79,39,54,135,131,120,145,216,221,171,44,44,239,167,55,201,224,75,
-5,77,140,72,87,247,65,195,83,70,233,14,177,227,12,154,187,66,0,47,161,96,110,51,150,215,251,178,103,7,72,177,
-137,155,147,234,50,81,50,18,84,219,67,245,155,76,11,91,150,15,0,229,214,60,253,72,236,205,193,12,62,205,159,215,
-88,22,124,114,178,178,12,70,118,130,223,231,77,67,197,196,154,101,125,185,65,204,121,17,60,41,244,89,95,97,53,250,
-148,225,239,120,64,162,83,251,208,80,25,160,22,188,147,62,123,221,139,81,145,28,149,231,182,210,96,140,104,142,44,144,
-200,43,198,223,173,158,79,19,2,165,136,98,223,150,188,241,7,180,23,82,198,40,146,173,153,18,3,159,77,71,252,218,
-218,9,28,237,138,155,240,77,101,72,16,225,59,29,188,201,147,7,133,74,106,105,86,70,40,52,40,182,220,242,26,140,
-185,230,10,63,238,67,115,68,238,113,221,27,120,175,187,30,218,196,18,35,132,21,9,175,17,164,115,79,129,158,84,3,
-108,107,128,73,86,192,155,135,125,21,105,143,169,43,3,63,129,187,148,111,159,69,107,147,93,201,252,122,159,149,244,160,
-68,126,184,83,255,251,244,23,56,43,103,224,136,150,154,215,40,19,215,89,134,98,14,220,29,152,255,9,48,113,198,187,
-229,164,159,131,124,26,61,236,130,44,11,183,85,39,20,103,242,168,76,181,181,14,32,126,98,155,92,8,200,69,100,143,
-68,199,226,71,184,123,214,104,130,201,111,94,252,229,209,247,87,132,136,251,123,107,38,133,106,60,85,20,156,42,90,142,
-76,230,53,122,136,161,251,235,44,84,129,232,80,30,54,142,12,163,188,61,18,54,27,74,22,99,210,200,87,86,219,231,
-86,192,235,16,54,179,170,136,106,48,35,47,91,110,233,101,121,82,5,117,25,140,64,151,253,236,253,236,182,91,102,77,
-38,54,81,40,23,240,60,41,253,72,136,159,203,74,188,201,121,89,183,218,119,45,88,78,236,178,2,176,227,89,247,188,
-253,110,1,207,134,92,46,2,7,20,74,197,113,143,162,246,75,150,138,234,17,62,34,132,203,227,26,14,128,101,147,135,
-228,140,96,178,180,69,233,225,2,151,57,124,197,12,40,231,109,163,174,118,246,76,206,72,168,6,70,65,194,150,105,227,
-214,42,51,7,177,59,223,177,241,160,237,18,229,101,76,246,206,69,205,161,81,221,3,204,215,47,59,57,99,48,64,216,
-144,213,141,194,138,141,50,79,1,174,8,58,148,90,149,241,128,3,55,254,104,243,88,233,97,55,99,194,69,86,117,246,
-242,89,96,190,185,66,19,79,41,102,87,211,75,175,105,254,104,81,204,46,115,141,124,39,235,19,224,54,24,244,194,161,
-0,199,1,134,206,144,236,55,145,102,74,44,208,211,93,187,190,79,164,13,218,94,227,73,105,64,137,209,231,100,223,104,
-216,141,165,139,40,139,81,76,176,54,212,91,91,57,129,114,101,52,92,128,232,219,10,209,109,109,173,213,72,64,9,64,
-245,216,46,202,179,90,92,132,106,246,83,255,98,159,32,201,27,19,163,125,227,122,137,126,47,25,113,244,222,216,159,4,
-170,237,215,44,75,244,150,210,238,205,210,189,237,111,142,110,30,166,9,246,180,32,127,133,82,157,187,111,127,116,239,14,
-241,193,230,190,46,227,77,181,111,6,61,236,137,244,12,122,186,48,192,97,198,147,75,223,43,225,188,251,125,55,66,188,
-77,1,17,42,94,59,187,69,29,96,68,71,141,175,172,187,100,203,35,128,236,150,142,208,10,52,3,247,109,22,70,244,
-73,198,18,137,61,18,250,46,104,149,37,33,17,240,77,133,23,169,108,152,81,197,88,111,168,190,150,3,91,67,136,139,
-214,255,120,236,149,146,133,161,103,111,244,223,70,123,219,248,97,78,158,10,252,19,227,2,125,60,42,149,160,151,238,223,
-120,224,142,152,153,197,212,78,121,149,205,176,0,21,23,173,106,8,11,110,237,211,91,230,131,252,196,20,60,61,184,171,
-207,171,185,231,185,244,254,20,126,178,158,184,113,245,224,111,94,3,208,209,74,248,66,175,223,177,175,235,83,190,215,243,
-224,242,230,101,156,133,74,253,4,221,1,5,65,63,104,50,137,186,222,78,219,139,74,147,109,231,191,25,46,76,115,193,
-18,17,103,237,20,237,137,105,205,28,202,153,200,122,232,15,144,228,102,200,19,159,101,195,114,203,96,97,247,164,206,97,
-242,8,123,197,194,17,181,118,56,135,240,66,200,2,205,33,197,94,63,66,144,188,109,162,87,47,201,243,3,219,84,215,
-81,179,91,28,168,168,161,205,37,124,74,187,158,10,203,14,26,50,255,184,127,82,199,55,180,156,60,24,59,100,252,212,
-225,211,159,104,13,159,20,222,198,175,16,169,71,206,13,75,118,239,253,123,2,101,13,134,62,208,25,56,203,35,192,164,
-150,19,126,22,152,197,220,77,67,146,131,226,48,19,22,113,139,139,28,18,124,217,198,55,121,240,139,178,17,99,16,99,
-58,88,17,0,90,97,56,6,117,237,233,183,33,104,239,162,57,214,193,16,6,153,108,134,105,0,56,47,245,160,39,239,
-220,110,151,123,79,176,255,207,211,137,79,13,222,29,16,210,236,93,68,223,177,247,194,237,239,22,178,51,237,234,227,64,
-175,86,214,36,228,221,44,114,27,141,240,140,75,19,220,182,213,95,155,142,241,170,38,12,213,231,1,88,124,63,60,242,
-193,181,37,143,24,62,153,114,90,23,82,14,45,91,152,90,119,248,130,122,28,236,0,245,244,127,176,123,175,204,111,136,
-88,254,124,228,188,110,247,127,44,205,45,94,34,107,110,224,106,238,70,91,250,76,188,125,80,88,27,196,214,243,13,69,
-35,182,69,176,150,160,175,12,150,155,51,125,169,18,148,3,40,140,44,135,70,236,116,26,193,88,14,206,220,89,159,176,
-243,241,89,120,86,224,176,223,228,49,139,24,251,26,248,37,99,183,204,112,108,26,52,108,84,196,198,195,131,210,61,183,
-33,24,128,80,149,30,0,126,166,201,17,54,42,244,170,40,227,232,231,103,98,39,249,245,119,128,77,79,254,15,185,200,
-241,214,220,227,246,86,36,113,14,135,213,70,207,89,15,211,228,152,179,207,242,106,202,31,171,138,143,206,27,134,185,100,
-188,27,79,41,106,236,10,12,219,160,252,152,232,5,150,25,11,50,127,179,135,243,44,78,138,134,144,159,69,161,83,90,
-228,75,149,84,107,93,193,62,0,255,235,243,172,209,92,247,207,55,181,243,121,100,40,177,80,146,236,214,209,91,195,190,
-55,45,21,102,191,50,88,100,127,238,255,252,25,47,74,125,123,197,26,245,203,70,149,171,161,108,156,248,104,16,247,110,
-31,2,64,163,188,27,46,142,149,98,190,190,145,9,79,227,22,1,67,81,100,191,129,146,245,7,55,201,113,165,39,237,
-16,172,228,99,114,215,207,205,239,182,173,230,143,166,89,35,186,177,193,253,22,25,230,165,196,99,126,245,102,185,201,130,
-76,172,218,219,250,175,242,36,220,200,177,56,157,129,160,106,23,215,212,19,117,97,249,47,101,212,206,57,207,244,45,199,
-14,17,227,210,55,136,109,182,182,218,185,75,164,230,81,148,28,81,198,215,92,225,90,173,114,23,3,132,103,79,56,247,
-217,55,201,76,236,180,211,4,36,218,18,73,83,3,28,192,237,1,64,248,184,59,151,50,254,55,170,9,53,158,160,28,
-62,42,190,72,48,157,126,177,92,117,236,71,98,114,106,150,7,157,168,29,164,162,45,198,25,5,74,156,80,222,194,117,
-6,1,155,128,3,92,249,97,195,53,132,38,162,238,167,207,12,219,234,249,94,62,40,102,183,254,60,10,52,222,53,184,
-20,123,161,188,155,82,112,60,207,32,109,138,105,125,7,197,104,195,50,138,183,250,226,5,81,148,56,128,251,178,232,41,
-115,78,225,42,71,155,240,118,118,217,171,166,206,227,1,226,203,170,159,128,201,34,1,122,106,230,157,115,255,105,85,118,
-170,190,113,192,47,173,84,114,125,73,18,80,12,141,197,156,118,231,10,68,119,21,9,70,1,216,38,144,37,82,161,69,
-53,238,59,125,63,123,250,0,157,22,71,130,23,251,122,160,158,181,239,41,46,227,227,64,200,102,112,106,194,133,8,163,
-109,218,86,84,255,176,136,200,195,205,229,23,8,216,110,131,159,222,198,116,119,25,2,174,241,40,208,180,252,131,1,105,
-116,181,7,93,88,75,17,90,144,182,73,33,54,220,100,53,150,132,156,209,83,45,31,245,109,209,124,75,68,47,253,16,
-208,230,137,239,253,197,75,76,164,17,175,36,46,44,208,85,62,142,53,213,36,105,219,139,51,235,247,245,93,40,136,92,
-202,97,111,111,32,127,147,88,248,177,69,120,127,179,128,44,209,30,145,63,246,69,155,175,166,122,133,242,28,239,169,202,
-161,11,220,109,211,29,101,90,129,163,225,182,177,64,164,243,55,210,156,177,174,158,203,33,39,139,17,101,106,116,73,170,
-80,75,51,138,68,123,120,202,152,163,189,232,191,251,112,196,49,17,214,68,72,182,29,255,252,44,37,56,255,196,17,226,
-154,215,0,23,233,43,170,239,196,181,120,18,16,153,178,10,240,192,70,106,191,62,107,210,36,48,189,243,41,210,151,2,
-180,185,46,81,11,158,207,181,42,225,88,72,225,97,52,232,79,36,52,158,151,125,77,147,80,131,104,136,99,168,255,248,
-247,127,141,124,9,36,87,121,19,126,87,63,102,225,99,112,146,138,131,170,126,33,186,186,86,61,179,217,102,13,20,64,
-208,16,133,193,73,148,181,121,224,96,161,215,46,196,188,62,245,200,39,139,214,185,71,242,170,224,87,184,248,161,188,168,
-189,3,198,141,232,203,234,175,64,202,94,247,108,12,112,125,82,70,233,220,122,222,191,40,57,78,255,202,241,13,46,255,
-2,110,250,38,242,188,150,23,25,130,153,36,81,47,216,239,67,74,218,23,5,237,147,14,81,140,34,252,248,17,101,76,
-135,63,230,123,95,39,238,16,161,208,80,240,60,38,48,15,221,116,185,37,111,58,40,78,87,0,54,85,136,158,233,219,
-122,152,102,125,123,36,189,211,100,195,89,163,173,98,247,9,20,198,213,37,195,77,229,87,90,115,17,129,248,200,119,157,
-196,77,38,29,161,27,161,24,43,59,86,181,220,66,248,166,154,187,67,162,21,127,212,30,117,16,217,206,244,87,224,158,
-173,11,181,35,213,197,199,235,125,191,33,68,225,152,189,36,1,33,130,145,228,91,166,12,6,181,122,23,137,2,116,12,
-77,6,99,247,104,42,204,206,150,56,250,92,220,40,139,133,252,100,152,175,2,241,34,162,54,238,153,175,128,22,253,124,
-200,229,33,49,167,109,193,126,69,202,167,156,75,7,153,199,110,193,6,120,186,172,252,203,70,35,96,170,154,157,7,27,
-40,104,129,226,48,81,34,168,120,161,237,120,53,198,157,253,177,248,53,239,121,13,235,78,128,223,65,12,236,101,107,215,
-88,240,12,23,55,5,233,76,70,93,177,3,76,75,197,116,108,39,14,235,150,203,192,64,100,245,112,140,64,186,197,31,
-43,166,164,72,133,21,166,91,68,25,61,154,159,48,32,24,100,239,238,216,10,208,118,243,188,70,254,208,166,173,122,143,
-54,28,189,184,214,19,154,9,217,103,217,225,108,58,150,27,20,222,202,249,105,151,40,105,237,156,60,22,90,224,52,149,
-162,181,176,71,219,176,147,252,185,90,74,222,95,148,55,92,178,15,204,59,199,169,206,179,100,244,195,241,189,128,65,153,
-109,119,21,211,222,206,69,255,123,89,38,188,124,230,107,95,81,145,90,74,119,131,152,228,1,38,25,22,103,59,20,33,
-240,172,181,69,214,239,45,158,140,2,165,121,100,77,25,92,17,48,191,157,82,123,79,243,124,35,27,117,72,76,131,203,
-153,216,207,156,236,64,204,253,165,97,174,16,37,65,28,44,200,181,185,45,133,128,252,96,143,69,118,237,78,0,162,171,
-186,66,49,207,55,83,231,3,192,89,124,122,197,114,233,69,69,243,97,110,233,97,161,68,142,43,168,137,174,79,182,244,
-152,74,6,230,186,152,21,41,216,203,55,189,151,53,4,158,96,123,94,39,41,130,199,148,227,216,160,119,245,169,56,98,
-186,37,63,26,251,216,8,35,247,223,70,5,198,218,116,139,163,240,251,148,119,152,200,142,42,244,153,251,182,40,34,79,
-250,19,114,183,130,131,159,245,151,61,146,92,3,119,214,107,68,42,203,71,219,61,75,53,100,84,113,116,242,17,174,112,
-87,41,142,98,148,184,116,40,245,169,82,23,177,209,76,159,71,158,194,182,140,6,196,228,111,60,240,71,102,81,104,119,
-236,74,115,71,96,20,241,116,12,204,88,111,215,241,70,170,232,81,56,163,24,13,243,163,2,144,14,205,78,26,233,81,
-0,214,3,57,134,172,252,204,184,255,70,23,143,138,200,2,82,84,224,190,51,80,42,121,252,89,196,225,83,253,16,52,
-89,192,116,19,111,213,244,101,10,66,250,142,7,199,164,185,90,238,153,209,141,97,218,135,10,221,171,55,83,227,82,63,
-69,210,19,223,45,6,87,215,226,65,153,90,242,140,30,35,148,187,219,64,209,105,237,204,107,90,230,164,51,81,98,4,
-204,175,238,246,157,22,138,39,30,54,7,72,39,107,65,233,215,34,130,44,83,145,21,186,218,235,99,63,196,34,244,132,
-35,97,223,25,225,110,181,134,159,73,5,158,98,63,184,215,220,46,75,248,14,140,211,7,202,13,142,234,103,89,216,50,
-79,37,248,2,73,165,82,252,105,232,113,31,91,14,34,210,113,25,197,2,30,7,40,60,100,174,20,220,249,151,24,186,
-17,14,156,216,50,173,95,124,167,231,37,145,212,70,183,215,158,210,250,196,244,162,11,206,113,216,178,75,228,225,1,53,
-31,117,90,55,138,79,196,46,54,210,167,184,176,228,218,108,42,193,43,200,186,159,239,183,50,220,124,180,205,202,7,58,
-80,51,30,164,191,172,138,210,179,189,6,107,72,97,211,169,124,26,49,68,100,26,249,98,247,5,34,19,45,218,8,199,
-68,22,245,44,195,105,80,153,227,46,242,200,148,13,177,98,70,178,164,246,241,68,165,193,114,70,211,125,147,232,219,143,
-118,242,33,120,136,239,143,84,112,182,131,10,78,185,12,195,95,240,12,204,24,40,250,84,5,165,205,140,20,250,91,111,
-189,61,147,75,85,121,146,236,211,54,11,11,235,90,102,116,166,107,53,104,47,118,110,187,11,19,175,80,22,111,171,129,
-201,35,188,138,87,110,32,100,212,33,169,108,170,155,34,126,152,151,224,37,130,227,250,150,151,143,88,10,189,8,177,126,
-180,253,42,124,91,219,46,79,144,121,60,255,32,36,78,245,114,164,79,34,202,137,129,214,199,226,64,37,48,188,201,27,
-225,97,27,188,135,104,43,200,100,181,235,201,88,212,48,73,67,40,79,109,173,231,212,236,63,1,203,91,45,241,109,235,
-50,127,160,228,3,247,104,113,102,147,227,138,37,162,79,126,44,181,112,41,142,145,97,144,212,179,170,251,163,226,137,7,
-165,142,213,237,247,156,207,164,127,192,247,238,238,188,19,148,106,252,201,96,112,131,45,139,59,129,99,224,93,169,32,59,
-185,67,117,10,108,75,184,102,37,127,116,89,3,26,229,202,165,45,195,219,162,37,161,149,118,103,54,30,161,34,237,42,
-151,28,184,82,101,143,192,65,161,96,132,32,31,173,209,6,98,129,167,19,106,10,189,57,164,91,181,53,250,195,79,109,
-123,117,144,128,28,146,30,38,151,68,165,83,79,239,248,8,255,252,44,45,186,33,168,171,122,13,15,231,67,10,124,150,
-144,119,199,200,123,85,235,23,47,224,84,118,214,227,250,228,105,4,174,88,238,163,101,87,29,165,175,47,176,159,13,227,
-176,107,80,255,28,110,63,105,38,107,133,45,251,155,138,45,50,83,202,181,56,210,190,38,189,238,184,224,158,210,38,210,
-141,109,216,170,20,53,197,63,56,27,243,63,243,224,193,70,79,26,138,224,107,53,141,160,136,23,190,52,184,165,38,33,
-236,88,175,8,215,96,13,128,93,210,22,116,200,25,156,238,247,245,117,106,119,26,233,50,211,55,190,167,23,92,31,199,
-221,168,40,132,187,198,20,152,134,73,22,82,95,73,227,56,103,4,57,115,61,252,167,28,57,104,136,40,8,205,52,148,
-105,222,162,202,38,72,227,37,26,137,67,91,61,192,113,231,161,78,140,140,17,130,176,182,37,183,62,102,160,16,135,62,
-244,86,187,21,168,246,118,22,158,140,190,60,45,194,127,19,43,226,247,196,42,172,121,87,224,135,159,204,73,108,98,210,
-235,175,135,226,71,149,6,243,176,232,46,219,215,32,34,160,106,74,6,131,235,147,16,204,245,39,242,88,220,76,10,142,
-133,84,111,201,221,161,44,138,72,174,87,246,143,21,255,200,65,176,101,171,70,158,157,191,140,231,80,49,220,152,75,150,
-102,55,93,247,80,240,178,193,169,86,224,133,33,61,22,18,69,226,82,76,162,136,225,131,225,208,134,40,107,241,118,209,
-115,1,244,254,222,4,79,227,143,224,112,91,191,94,189,200,73,67,27,101,255,118,172,58,55,166,200,38,4,237,132,69,
-57,198,255,176,51,91,210,21,92,145,231,52,141,79,255,11,3,104,23,213,190,131,41,1,184,92,193,214,238,232,186,246,
-124,177,174,119,174,153,102,215,13,72,100,109,87,190,165,251,11,209,35,160,214,26,5,156,233,63,217,170,4,163,187,18,
-142,159,89,205,246,118,31,107,181,64,55,219,68,83,170,49,215,251,211,63,158,48,16,132,52,2,64,248,42,67,104,74,
-78,219,4,154,24,203,138,65,36,120,113,117,148,225,213,3,211,73,158,35,64,6,39,5,192,49,95,23,121,16,175,23,
-28,214,244,123,104,97,99,75,56,169,92,143,108,25,33,7,82,178,136,233,149,107,72,180,210,20,52,198,105,234,156,228,
-227,46,110,200,167,63,213,19,81,189,216,99,157,113,192,123,67,241,219,204,221,35,226,195,82,124,235,61,56,189,179,240,
-60,71,84,255,28,1,3,73,120,44,206,42,0,67,238,239,215,86,138,150,27,77,57,77,199,52,249,223,224,228,3,204,
-136,229,68,180,230,250,158,69,130,132,208,69,203,25,253,188,228,100,215,128,48,49,176,74,40,206,52,48,57,111,26,161,
-206,197,194,201,151,118,82,33,165,64,244,19,85,237,144,117,251,200,98,253,55,43,195,53,111,120,22,139,29,124,94,2,
-147,119,70,193,166,6,180,223,42,16,8,58,217,224,113,150,77,88,199,139,34,157,74,160,49,238,164,55,8,78,18,245,
-35,213,47,222,167,44,225,42,22,229,222,186,145,163,36,232,112,128,243,88,43,20,90,9,28,104,27,204,86,193,92,67,
-230,199,195,215,26,120,40,217,95,225,187,92,27,176,24,140,127,113,122,191,131,251,179,182,249,146,14,13,130,20,140,237,
-109,213,179,88,129,41,214,209,86,133,245,13,202,157,39,217,75,162,30,218,223,255,200,178,78,56,239,54,126,71,73,77,
-57,76,94,55,159,97,25,126,26,228,20,87,135,132,78,161,4,133,136,157,233,110,122,183,143,97,167,107,226,204,132,47,
-15,192,30,61,2,117,19,109,75,117,71,214,213,21,26,170,161,180,49,112,44,83,122,38,82,215,94,185,46,114,7,136,
-110,47,52,199,214,85,2,67,60,20,48,49,93,255,210,12,198,66,230,65,41,73,109,127,134,68,216,184,26,117,56,2,
-161,103,121,101,209,132,223,205,156,220,234,27,157,48,67,89,134,163,224,180,34,227,89,168,176,7,66,25,139,0,223,226,
-153,138,111,96,70,49,6,223,232,222,12,133,228,47,103,71,66,162,123,49,247,134,155,111,3,216,237,37,226,59,232,122,
-100,65,91,113,29,131,32,36,123,146,163,76,26,254,80,168,252,143,176,119,52,108,55,13,32,220,109,176,192,192,195,49,
-119,212,114,218,242,139,47,126,29,50,232,34,121,9,128,91,8,128,30,98,41,86,90,191,193,107,3,187,136,49,205,11,
-60,113,203,139,76,112,160,60,198,160,100,234,121,150,179,205,35,102,205,56,40,227,173,13,77,19,121,69,179,91,236,37,
-90,198,139,174,141,54,198,111,167,219,243,101,77,167,7,212,122,116,6,146,123,207,107,255,138,45,253,103,57,171,61,241,
-124,144,82,6,86,133,189,253,128,23,110,168,199,50,232,16,133,33,146,87,131,207,22,70,213,195,41,87,162,9,212,81,
-69,68,105,98,233,42,41,203,214,132,52,129,84,128,41,219,120,158,26,18,175,168,193,27,12,50,124,244,100,62,227,97,
-64,37,15,79,59,93,214,243,82,224,205,246,0,27,175,116,109,133,216,224,129,97,24,86,131,111,229,57,120,170,75,99,
-18,178,72,142,44,33,206,238,132,244,163,61,130,16,100,30,5,37,92,183,104,66,157,173,5,39,182,137,238,225,75,187,
-54,2,216,135,247,8,76,235,36,36,241,249,111,96,2,214,229,164,189,170,38,207,84,45,136,117,40,157,242,2,34,142,
-4,179,235,69,105,255,59,111,181,98,222,61,43,198,173,99,125,126,45,5,151,87,95,119,77,216,29,20,181,14,126,7,
-205,211,178,210,92,7,189,198,134,197,81,150,130,213,194,62,220,47,141,185,54,198,13,82,176,74,255,72,47,241,10,108,
-245,234,168,53,19,10,102,214,218,30,178,32,219,50,156,154,155,109,88,100,59,106,121,60,249,41,131,216,182,59,252,40,
-101,192,121,40,133,245,107,43,174,88,49,21,23,206,138,223,101,103,204,87,152,170,33,212,19,187,244,157,88,160,80,138,
-38,233,195,146,55,116,28,251,74,225,138,107,57,60,127,86,185,128,157,18,188,23,154,66,52,188,175,97,193,185,24,42,
-56,4,133,240,132,253,61,242,130,205,141,190,191,146,240,116,29,131,211,66,159,194,27,246,220,181,120,14,48,60,72,233,
-127,182,182,76,58,62,133,27,63,36,82,197,147,70,26,29,146,164,211,245,27,250,78,203,106,91,254,210,159,146,53,236,
-4,95,36,191,53,104,177,4,9,25,53,60,22,105,135,46,36,242,230,129,115,177,235,244,54,253,88,57,191,24,57,176,
-0,198,76,27,161,233,69,161,252,159,160,246,136,54,219,97,158,77,7,26,205,254,165,186,8,218,206,229,132,170,181,219,
-74,1,161,20,195,144,161,254,43,76,162,157,189,71,254,10,194,27,76,194,8,1,194,59,114,2,11,237,119,92,245,159,
-207,171,86,67,164,121,6,158,91,46,81,81,2,140,86,100,130,13,163,187,54,186,237,126,155,229,167,220,201,204,175,143,
-147,70,169,97,0,159,107,30,204,187,254,140,106,73,137,36,130,196,86,250,255,251,172,70,136,159,101,74,49,156,77,109,
-182,84,222,0,248,128,180,204,16,246,150,175,76,65,194,16,113,254,232,155,38,191,188,99,126,128,116,151,162,9,31,215,
-190,226,55,153,12,124,190,145,250,227,45,185,146,104,119,153,131,81,63,48,242,189,2,106,228,236,120,167,34,114,0,177,
-55,239,34,162,229,47,60,209,244,226,89,35,234,209,41,123,111,137,171,96,54,204,207,220,85,81,116,136,174,109,88,54,
-233,152,5,158,81,119,68,73,69,19,87,52,105,138,148,224,72,241,75,251,158,41,156,242,54,20,163,92,121,164,26,89,
-67,146,5,234,104,208,104,41,4,2,213,222,47,120,63,164,160,157,23,16,84,13,188,47,116,180,98,67,119,114,215,209,
-79,58,250,106,129,11,45,120,67,126,13,143,51,128,66,56,225,126,36,175,186,118,223,134,58,212,109,83,102,113,165,75,
-1,243,141,4,119,138,182,104,126,206,5,170,112,38,203,229,63,140,19,143,80,89,202,17,84,79,188,215,8,182,74,155,
-180,34,17,243,142,226,87,150,239,10,83,45,7,182,232,27,8,201,254,94,14,156,151,82,155,31,142,137,176,99,99,181,
-127,99,55,155,171,21,23,187,73,212,227,27,25,24,135,130,73,57,133,64,121,203,16,162,29,52,253,49,100,47,82,234,
-219,209,158,80,113,211,161,145,168,167,189,121,56,227,109,179,17,26,121,237,198,100,1,109,175,51,214,226,30,201,35,158,
-190,13,214,47,177,239,5,112,248,152,7,249,24,105,221,143,48,125,71,47,67,7,147,99,171,104,150,50,146,111,254,117,
-145,38,108,92,32,105,44,127,198,110,174,0,16,71,154,59,202,110,142,200,84,66,97,71,84,214,54,121,77,14,68,92,
-159,71,137,32,11,49,154,135,182,35,192,187,29,246,82,185,201,244,0,58,10,238,208,37,18,229,96,50,105,22,215,90,
-100,212,16,35,193,214,214,225,143,227,71,224,190,133,145,99,53,7,224,242,47,232,75,135,25,214,157,186,244,88,90,89,
-43,12,242,180,249,149,106,37,187,80,250,127,52,43,146,116,84,94,108,230,252,99,58,180,96,8,175,112,204,7,2,137,
-37,67,40,233,111,59,143,85,128,123,77,33,134,49,179,63,155,166,68,243,122,144,136,106,232,79,7,156,10,182,159,93,
-183,166,227,126,23,15,227,165,179,56,196,94,131,42,220,121,104,216,216,163,132,165,136,220,210,55,233,72,153,221,209,22,
-241,152,49,187,57,213,177,169,202,90,103,250,248,205,145,119,151,82,21,229,247,242,12,5,215,71,61,13,20,241,95,191,
-168,213,17,221,22,198,18,159,153,112,69,252,83,200,43,67,183,46,60,138,217,193,208,221,141,86,45,57,107,89,56,24,
-231,6,95,106,133,142,137,25,96,165,233,81,178,209,219,245,206,77,198,245,137,152,75,224,254,206,250,249,121,41,72,76,
-5,114,27,105,79,49,192,234,231,173,125,254,54,159,25,225,111,201,8,185,186,5,117,145,154,26,142,94,68,54,89,202,
-131,224,244,73,21,154,102,101,37,45,243,161,58,188,247,99,147,26,21,76,183,107,177,35,212,124,250,72,63,252,147,144,
-108,83,214,89,250,23,40,252,217,15,31,58,170,87,153,190,19,254,80,214,67,160,74,218,79,71,137,120,22,79,43,75,
-240,194,186,186,225,186,100,31,237,139,175,122,64,143,100,61,227,226,98,127,214,10,145,187,22,121,243,30,69,95,177,172,
-166,40,210,208,161,147,56,181,92,201,77,63,57,108,203,133,30,124,68,125,152,185,186,66,152,122,220,94,189,39,85,239,
-77,24,195,184,125,75,134,92,200,47,248,249,15,12,203,242,59,240,200,241,95,85,183,107,65,54,110,207,171,109,99,50,
-175,116,9,27,81,229,67,4,177,167,217,246,138,154,90,158,220,99,127,60,177,195,99,73,169,240,1,173,109,212,242,255,
-37,206,142,134,115,230,233,144,0,205,46,185,124,150,41,219,246,88,54,60,24,203,182,194,43,70,8,96,189,85,102,126,
-19,154,14,155,27,149,120,7,1,236,63,145,103,193,9,83,243,122,80,142,107,96,112,216,175,86,15,103,10,251,149,29,
-150,141,42,96,186,198,47,156,185,221,253,185,109,102,103,0,133,75,21,9,143,105,86,217,154,120,232,121,64,102,253,176,
-58,78,190,83,135,243,225,61,151,80,169,166,239,20,132,142,103,144,220,226,247,133,247,255,190,242,112,175,77,73,77,251,
-51,166,4,227,10,191,55,6,174,118,92,44,0,58,241,39,122,21,118,202,140,251,18,17,213,120,159,115,68,5,198,57,
-73,233,120,88,175,198,170,186,6,219,110,221,12,212,140,15,177,208,234,127,156,180,225,137,120,14,97,164,144,85,254,107,
-38,40,253,159,166,127,10,60,146,119,164,108,151,49,81,5,88,135,14,117,106,208,244,208,113,112,24,153,43,6,176,67,
-229,220,5,155,184,41,229,64,190,228,126,71,126,155,42,117,233,255,188,222,133,152,64,242,164,59,110,195,243,8,194,58,
-17,253,60,215,123,117,177,77,235,158,154,3,48,171,36,137,188,215,157,174,165,142,156,24,78,205,190,161,43,87,149,127,
-66,206,171,9,83,60,103,73,5,123,175,152,156,25,9,11,61,152,35,107,170,98,28,39,27,20,217,35,252,213,224,77,
-92,47,183,72,236,10,50,223,41,156,1,215,245,39,213,27,151,219,214,36,53,76,95,89,221,40,114,142,14,55,166,218,
-223,200,216,244,251,51,205,145,53,10,13,225,233,183,13,231,180,153,102,133,160,20,48,189,59,54,151,17,218,90,197,147,
-13,125,245,178,127,175,225,42,253,235,48,60,110,134,178,190,186,46,166,200,187,187,129,150,251,9,63,70,133,214,28,148,
-201,4,6,36,62,86,208,104,217,193,178,160,84,254,137,61,101,29,223,230,156,114,255,253,20,74,159,218,47,194,88,212,
-108,246,229,197,54,218,250,201,99,135,112,180,32,131,10,133,25,95,246,181,147,251,3,30,198,140,228,216,157,220,253,72,
-27,207,236,125,120,220,54,219,218,198,51,34,15,233,189,106,85,138,34,81,184,212,85,97,48,96,171,134,228,126,235,93,
-165,153,204,176,241,190,41,82,154,32,180,104,198,249,16,192,224,126,239,175,235,125,132,232,147,64,170,105,138,182,188,78,
-56,83,94,0,89,248,247,78,172,144,48,0,242,210,69,144,83,35,52,30,181,98,208,18,252,123,111,240,85,129,81,128,
-123,198,247,216,37,20,211,157,168,63,159,117,162,253,213,102,9,9,42,87,106,35,182,176,162,196,153,82,237,32,143,132,
-231,28,105,61,221,208,9,166,28,107,26,205,213,155,69,87,249,86,194,73,159,204,192,91,24,152,138,230,32,63,4,46,
-198,159,127,66,90,109,106,187,236,203,142,229,255,213,214,112,63,131,27,33,8,20,120,236,109,26,155,148,249,56,142,174,
-42,96,2,137,54,149,131,165,212,59,183,200,242,248,99,180,126,17,140,46,88,21,7,96,24,177,100,249,150,227,47,254,
-1,193,116,59,192,236,133,196,143,244,117,154,177,224,124,227,95,218,244,177,186,140,137,19,175,148,237,147,248,66,45,222,
-111,59,163,198,169,112,35,54,102,136,21,109,207,92,170,213,167,254,163,144,167,227,31,232,117,22,173,240,234,51,6,222,
-11,153,232,106,250,222,128,177,51,221,29,108,42,191,162,106,128,222,30,127,186,178,159,250,135,114,60,253,79,219,140,219,
-162,45,148,226,150,81,185,245,112,42,196,189,108,252,0,171,206,231,221,64,202,249,74,6,250,86,63,127,58,130,70,139,
-3,19,214,99,7,72,152,176,127,15,13,253,103,88,239,34,112,142,219,126,86,21,179,27,242,122,225,152,222,94,171,200,
-52,239,65,218,132,207,145,166,53,33,65,142,101,172,229,84,182,63,12,47,161,211,154,213,12,231,52,183,227,173,228,192,
-254,55,161,70,207,77,31,18,99,175,44,167,210,195,86,19,249,6,113,148,217,12,246,110,105,134,216,208,196,116,67,221,
-181,205,37,235,53,111,119,146,4,154,26,133,129,37,192,122,249,135,5,21,112,135,198,175,175,79,218,16,220,133,112,222,
-26,207,39,66,62,184,176,232,63,7,228,157,235,219,245,145,229,138,211,99,237,26,37,96,174,59,140,230,169,23,103,42,
-18,168,88,74,132,91,148,49,252,227,229,94,181,40,20,141,66,138,170,105,229,109,187,24,235,18,177,176,6,170,84,26,
-117,60,84,87,27,220,78,228,142,9,231,58,15,67,85,88,147,135,120,95,99,27,216,247,85,174,179,126,226,210,215,202,
-169,226,173,164,72,19,63,41,157,4,128,76,142,51,44,149,28,28,179,104,76,109,48,32,67,179,10,191,76,68,103,212,
-145,183,124,145,234,39,146,151,252,235,75,255,100,47,228,62,38,182,157,40,227,51,166,52,173,240,64,205,65,175,20,53,
-217,117,69,222,183,132,27,143,180,220,245,193,34,140,209,90,47,138,1,104,108,37,86,81,74,36,245,184,105,31,11,103,
-0,29,47,153,118,70,60,171,183,103,107,203,109,41,209,194,7,64,162,114,28,79,183,88,78,146,95,67,27,45,32,59,
-86,1,15,135,130,23,223,197,3,163,156,172,84,73,123,87,72,97,128,148,6,196,176,207,4,83,15,149,108,133,232,230,
-145,215,200,77,61,102,222,2,63,46,38,86,233,30,113,173,165,102,201,185,12,218,216,120,192,233,58,60,98,149,51,217,
-217,160,188,63,2,212,81,151,213,1,105,76,56,32,104,170,227,15,212,164,27,10,235,1,206,39,26,239,132,123,97,169,
-191,67,222,184,203,185,220,70,155,75,55,215,39,227,81,208,138,73,191,140,28,129,204,170,215,65,99,132,39,113,239,46,
-49,36,144,218,188,2,16,16,138,230,146,236,101,90,214,57,165,190,130,104,173,79,200,214,225,102,113,156,136,138,245,120,
-190,116,164,230,21,155,58,199,228,134,163,162,209,91,6,128,188,129,88,161,83,191,249,5,56,5,90,170,209,190,179,13,
-184,175,59,174,1,217,130,44,187,28,253,219,45,170,50,18,21,143,196,208,181,155,6,185,245,97,236,188,198,212,255,62,
-99,91,153,7,85,202,0,175,191,196,28,127,191,211,102,78,35,110,35,160,7,160,152,186,209,133,242,91,115,143,247,110,
-186,3,31,65,212,77,163,131,166,27,119,196,127,9,36,14,49,139,173,210,254,135,247,241,4,203,120,9,102,34,210,201,
-125,52,255,208,42,246,159,51,93,67,223,84,209,119,23,235,80,120,132,193,0,217,31,248,110,37,140,181,106,115,199,163,
-158,200,18,89,244,147,95,193,7,63,68,72,26,64,211,170,124,73,153,173,65,219,238,20,61,42,136,4,108,27,66,45,
-206,146,52,129,179,177,133,125,215,25,218,191,242,215,4,21,78,76,249,232,28,133,147,205,3,67,67,20,87,157,116,217,
-102,14,108,178,111,15,77,45,105,109,34,132,164,166,250,236,124,146,34,82,114,111,89,73,198,136,68,66,71,236,109,42,
-135,9,8,63,202,88,26,97,8,77,11,119,27,227,43,61,250,75,144,170,62,74,43,161,192,55,108,195,217,42,183,165,
-213,91,8,130,177,219,139,215,187,34,73,7,163,110,99,110,215,114,38,187,118,251,57,235,61,141,124,223,119,164,70,190,
-108,187,39,245,117,99,175,222,236,11,121,132,84,21,133,18,50,95,72,40,82,106,124,46,37,97,225,101,231,75,176,193,
-190,111,251,177,179,25,83,107,69,48,255,70,43,78,64,222,14,47,213,173,35,22,100,46,204,14,80,232,249,12,139,150,
-40,219,99,160,137,42,71,175,254,83,196,90,214,132,55,140,79,70,240,199,108,243,209,39,215,100,114,62,28,22,59,182,
-224,74,25,240,217,37,98,88,6,105,109,50,219,81,189,163,226,77,0,141,75,223,158,219,14,12,53,97,200,68,195,64,
-121,135,168,57,14,31,15,76,56,147,151,128,255,100,156,208,171,36,237,107,150,27,26,230,126,178,241,253,112,157,143,45,
-32,172,155,112,116,10,81,37,134,166,142,246,69,126,242,51,84,111,198,12,76,113,151,0,164,159,245,111,101,195,242,57,
-13,213,181,41,139,69,62,184,164,10,40,106,96,81,62,60,252,98,74,207,17,84,82,250,158,162,181,95,134,1,172,94,
-152,139,234,172,16,191,137,131,78,62,132,188,100,39,215,88,186,94,74,178,176,35,122,232,167,79,122,250,60,5,203,48,
-27,97,167,182,85,239,232,50,32,8,142,157,23,1,217,86,105,47,203,149,226,182,195,129,3,177,64,77,18,164,53,204,
-150,133,151,1,124,197,102,87,31,111,221,152,149,28,113,193,166,194,132,157,5,175,10,170,90,248,114,64,32,32,79,85,
-230,92,174,189,83,212,58,251,63,232,14,243,5,182,41,199,19,229,242,120,202,232,169,105,225,155,178,173,20,202,109,96,
-21,165,17,29,63,250,107,49,236,136,58,209,148,4,50,14,58,139,204,190,3,143,63,80,71,78,241,139,37,232,125,139,
-200,27,23,192,81,11,183,97,8,94,44,250,146,49,34,106,9,245,218,238,39,121,215,93,87,50,196,86,24,47,138,47,
-134,193,203,99,140,202,200,123,122,155,127,162,49,94,28,27,240,73,202,130,115,1,162,112,158,161,142,237,162,187,73,120,
-236,217,92,76,114,76,26,191,76,124,159,157,81,235,244,53,153,176,0,207,90,125,57,140,165,156,231,128,109,145,191,237,
-209,237,32,57,199,38,36,194,186,223,148,152,54,176,211,168,156,84,32,47,51,10,221,238,222,83,85,191,43,241,80,179,
-233,25,68,6,157,101,201,17,101,74,173,159,175,61,9,231,189,124,217,139,11,105,98,232,255,115,233,154,22,255,252,71,
-37,134,84,48,154,6,189,60,91,47,208,232,190,48,29,236,196,114,123,144,165,177,234,228,84,228,65,82,158,128,243,188,
-107,88,74,249,10,104,72,115,150,227,118,252,78,18,139,62,157,252,103,60,155,190,14,73,229,25,3,55,134,202,40,116,
-77,180,81,225,4,170,111,112,90,241,39,144,10,211,12,132,79,126,76,102,120,162,219,195,75,48,181,21,93,218,18,19,
-115,131,29,128,151,44,194,175,109,11,181,161,234,242,248,152,225,164,55,101,35,75,92,180,39,79,115,206,35,71,190,181,
-241,64,223,74,223,162,107,42,142,233,74,154,4,28,115,82,213,120,74,1,239,46,184,97,131,53,249,254,113,81,213,117,
-59,59,39,25,119,72,40,16,80,45,208,148,81,204,209,48,71,43,176,56,79,87,68,165,181,84,34,3,36,40,208,222,
-1,235,54,82,118,46,75,0,116,28,213,193,16,169,228,249,9,17,212,122,124,156,98,137,133,57,60,46,209,66,47,45,
-250,185,3,184,136,88,178,173,81,215,52,31,214,253,206,75,137,49,96,79,138,254,244,217,110,51,115,238,18,123,147,57,
-87,5,9,143,43,126,33,127,47,193,47,226,90,59,238,31,37,48,61,46,20,126,165,33,30,39,230,187,204,205,87,59,
-118,85,219,151,23,32,247,35,60,25,55,113,58,225,204,174,35,43,162,166,96,254,251,30,22,21,231,109,41,155,193,120,
-100,177,31,245,8,162,74,56,50,59,136,111,234,254,134,95,148,157,17,133,249,124,64,223,64,81,11,176,198,250,246,133,
-181,74,188,247,31,152,100,107,117,77,33,67,115,161,95,198,108,77,211,155,183,69,20,67,129,176,40,176,172,32,191,184,
-39,197,63,249,27,28,182,223,107,138,56,154,47,177,97,53,168,191,179,207,196,30,173,229,48,152,172,208,214,151,132,223,
-244,29,78,36,17,59,231,75,113,66,145,63,122,151,33,18,157,85,234,154,233,231,152,65,44,238,109,168,178,118,73,56,
-192,159,188,142,60,209,61,203,68,20,218,41,94,12,220,228,240,12,138,118,63,183,155,70,13,219,145,55,155,71,247,168,
-98,67,35,64,19,189,149,157,179,227,94,122,182,65,56,152,162,64,48,92,208,184,62,77,50,224,11,108,249,80,27,87,
-118,36,224,233,198,61,248,155,31,186,137,249,122,33,224,100,162,180,178,127,189,46,233,156,200,185,124,205,160,90,135,60,
-255,73,221,106,252,30,150,250,36,224,21,152,236,159,26,241,30,45,54,164,52,27,168,188,214,10,36,128,9,159,40,60,
-141,240,210,244,166,7,175,18,126,234,190,128,51,150,150,184,34,228,81,223,19,91,23,206,18,198,253,216,100,225,70,54,
-177,99,160,146,251,178,187,115,25,146,3,244,76,179,123,77,249,78,224,20,98,108,249,195,206,154,80,184,229,123,15,245,
-237,69,121,201,248,211,88,177,192,76,59,35,26,38,170,105,16,91,29,174,125,32,137,254,107,244,71,64,26,110,254,143,
-216,151,228,197,102,103,190,191,111,164,27,77,85,48,169,43,147,2,239,183,136,115,249,90,84,209,85,17,151,31,235,61,
-248,58,110,17,174,242,190,153,93,174,169,213,212,232,156,156,54,178,57,88,39,251,232,92,138,145,189,178,251,165,135,137,
-226,218,34,244,68,7,25,11,56,125,226,210,188,56,249,119,84,185,61,32,150,26,200,226,88,153,183,250,169,37,106,197,
-67,178,188,12,110,170,181,109,230,187,215,12,80,61,15,186,193,194,3,157,215,255,30,99,22,169,162,194,228,233,46,140,
-128,3,203,124,196,83,86,223,146,187,134,210,212,235,183,123,252,242,137,77,15,213,205,187,77,125,22,111,17,10,204,140,
-130,165,111,176,134,214,236,80,76,23,66,227,79,232,30,41,186,57,20,201,201,202,199,105,126,160,162,217,55,22,108,163,
-211,74,221,199,251,151,191,173,51,126,1,132,198,159,78,84,237,158,234,55,211,189,15,242,7,156,241,194,145,72,165,154,
-33,142,221,50,123,203,224,171,105,34,95,107,201,48,23,128,183,20,168,39,38,110,169,74,250,98,109,63,20,129,73,139,
-104,186,29,114,161,238,194,233,206,135,103,205,8,105,155,64,94,81,99,190,239,88,237,173,84,32,65,69,31,162,220,239,
-110,81,164,5,130,177,188,137,217,178,167,57,204,174,71,18,255,20,157,190,85,248,75,58,70,134,253,53,42,146,133,114,
-90,90,114,214,199,161,119,211,4,247,180,132,130,183,247,125,59,90,98,1,225,53,15,69,127,37,82,49,28,8,59,176,
-72,91,244,44,58,66,33,161,176,155,141,101,62,10,59,225,171,177,46,108,69,216,18,151,99,87,225,176,253,78,32,210,
-230,183,26,59,117,229,115,154,51,102,186,3,83,206,224,112,49,200,184,27,69,120,193,204,191,6,234,92,78,174,92,92,
-61,145,21,254,49,133,174,194,171,35,176,68,153,60,118,37,26,27,228,97,153,23,81,178,150,186,17,141,116,67,96,92,
-139,209,192,225,177,107,68,236,112,111,233,137,156,110,38,20,164,76,200,150,132,230,153,2,201,53,227,161,213,182,208,108,
-88,146,13,157,70,75,25,79,178,210,56,192,28,201,150,117,170,164,164,36,146,57,253,61,35,95,18,169,175,80,5,235,
-73,107,247,102,96,253,48,151,136,231,253,52,53,153,155,175,86,198,255,224,115,208,86,65,183,152,160,175,240,116,212,43,
-64,202,141,196,38,75,140,90,248,129,157,60,177,44,214,147,191,183,172,213,225,16,218,44,251,98,46,153,247,18,63,213,
-47,30,231,187,121,162,147,239,4,161,233,245,173,152,216,57,60,64,33,213,229,62,215,58,119,127,208,110,61,169,163,206,
-196,133,23,118,156,76,224,101,216,158,19,151,193,66,255,188,247,2,151,167,178,183,59,202,111,49,10,193,11,123,91,42,
-203,240,56,56,198,179,61,93,255,112,140,170,107,247,7,253,180,147,67,246,253,77,215,201,185,62,102,102,230,148,186,220,
-205,54,84,252,75,216,35,80,247,96,10,76,2,139,41,213,218,245,128,38,167,250,196,158,179,140,146,123,16,209,100,218,
-19,75,138,16,9,92,46,168,212,102,149,26,243,186,44,171,251,143,15,106,227,25,33,173,97,202,9,139,180,150,206,158,
-81,127,224,108,92,191,40,81,33,221,237,209,31,131,59,242,32,109,158,115,52,0,60,117,156,27,207,82,105,189,9,244,
-219,250,174,4,6,204,8,33,209,19,41,139,91,92,88,147,175,112,124,101,88,140,84,94,5,40,174,79,146,129,69,187,
-252,166,127,108,22,255,130,29,216,221,111,83,41,221,245,89,125,47,38,53,6,193,33,47,21,25,165,210,49,201,79,200,
-22,180,240,54,184,5,54,140,229,148,87,189,8,78,210,224,84,165,160,233,119,4,214,67,243,81,209,158,74,109,20,9,
-19,172,14,141,227,109,224,57,253,251,175,130,189,16,163,96,146,46,157,74,24,200,2,114,117,180,21,46,111,140,11,47,
-23,42,192,222,24,125,217,47,248,36,248,166,197,1,116,54,176,96,193,167,5,31,164,221,198,139,58,133,129,192,242,88,
-148,25,179,232,173,139,58,1,175,44,37,93,146,250,62,133,108,38,174,246,82,68,190,35,42,176,127,144,71,228,66,118,
-20,230,170,7,145,250,185,115,53,77,209,245,186,138,245,142,217,195,50,91,215,25,56,31,5,101,81,199,51,22,60,218,
-250,218,94,57,233,21,82,99,96,64,147,22,199,171,95,55,250,174,99,38,25,72,194,192,238,141,112,174,133,247,72,90,
-166,216,214,171,155,116,90,88,179,82,147,116,83,62,255,28,72,0,156,8,227,26,145,9,82,166,116,30,220,238,209,21,
-54,164,20,5,200,58,104,50,100,44,244,19,70,99,255,252,71,37,134,83,121,128,167,14,207,229,78,22,111,131,45,189,
-90,104,56,244,161,68,159,145,239,58,171,232,103,52,71,52,139,244,162,239,225,210,64,7,242,234,67,53,136,204,176,247,
-214,222,236,156,77,70,103,97,61,184,34,139,197,54,97,226,161,206,201,115,50,147,88,218,163,231,170,112,63,61,112,111,
-121,182,182,176,119,104,139,165,60,17,137,236,90,154,132,79,190,29,114,101,16,81,32,123,191,239,65,104,184,205,232,1,
-84,180,125,146,80,225,231,109,57,143,145,222,198,171,89,239,75,147,226,186,189,27,9,63,6,61,121,242,155,157,86,175,
-69,135,100,65,12,97,215,126,37,162,90,144,173,128,43,98,40,141,238,36,186,86,170,130,80,175,156,212,188,173,42,66,
-104,127,142,129,23,54,43,117,165,4,146,50,31,199,226,56,38,205,41,185,246,204,229,246,48,107,157,166,153,217,181,94,
-218,47,105,202,235,55,131,232,156,167,59,237,37,147,32,59,85,47,38,137,155,234,169,237,8,96,118,11,248,117,170,150,
-198,125,26,120,119,234,17,232,236,206,191,156,164,227,185,82,149,153,161,36,77,146,150,1,136,182,115,206,99,15,56,9,
-106,148,62,124,49,232,95,157,38,243,44,194,20,187,48,185,104,201,155,64,28,1,11,66,110,84,171,49,82,165,219,128,
-36,57,205,132,39,93,254,186,181,172,114,95,153,224,171,126,28,97,185,29,98,65,69,201,222,19,198,84,138,148,87,246,
-96,221,12,80,97,230,209,216,150,57,145,165,34,193,120,189,246,168,198,196,194,21,214,201,149,249,41,34,26,3,78,12,
-229,66,11,161,13,154,207,0,214,82,128,112,112,187,34,64,114,148,104,140,133,50,178,232,115,0,75,165,175,10,195,233,
-217,254,51,63,137,35,210,210,124,153,202,250,84,180,135,210,51,75,175,151,130,46,135,195,202,78,54,211,97,6,18,210,
-224,5,211,177,122,13,138,16,199,187,36,232,27,27,143,130,151,47,96,132,53,101,207,235,119,195,14,243,217,180,16,168,
-247,11,122,154,120,67,132,12,93,168,36,111,176,4,254,76,28,61,241,110,204,218,27,182,80,174,204,51,173,222,159,254,
-233,132,140,120,252,213,40,154,146,253,53,183,51,105,219,3,39,53,61,80,153,195,127,244,175,195,228,125,208,22,4,54,
-199,230,91,76,49,124,34,0,57,198,55,33,246,148,12,49,151,228,243,157,109,254,26,85,189,117,84,5,205,102,188,234,
-236,81,129,28,16,50,37,157,105,57,199,151,49,54,197,9,36,187,58,197,22,51,69,2,229,189,121,125,176,62,110,191,
-192,40,178,12,132,126,102,199,115,181,169,63,206,115,58,152,90,9,160,210,25,17,119,30,104,68,131,184,13,128,161,159,
-125,253,150,91,6,35,0,238,242,72,108,16,154,69,224,24,95,9,28,187,69,12,25,45,31,52,174,118,179,173,18,86,
-208,167,232,118,153,100,140,226,250,175,77,163,218,192,43,16,93,211,250,86,47,164,9,14,61,45,225,28,76,156,3,200,
-2,20,27,40,214,16,209,122,193,202,83,125,62,38,129,77,206,229,26,138,64,215,161,12,128,73,12,158,25,150,253,100,
-75,230,72,205,207,36,24,255,146,102,116,187,35,128,42,76,23,178,246,1,220,20,23,89,194,97,116,194,245,229,9,38,
-134,140,198,47,57,227,58,248,134,137,53,133,47,111,30,238,66,65,221,107,92,10,175,158,14,248,123,79,21,84,246,59,
-99,87,125,242,201,23,53,44,41,107,199,87,121,226,248,181,154,145,109,217,52,176,61,33,62,171,198,82,18,59,68,244,
-91,218,196,94,224,107,61,32,158,189,113,61,53,250,53,122,71,207,126,12,135,245,56,42,128,85,114,41,4,238,181,216,
-125,237,45,142,99,206,244,51,97,0,137,197,134,101,217,162,73,51,221,209,113,60,40,204,56,190,211,232,238,24,182,98,
-219,82,222,202,145,53,113,11,64,90,70,186,147,118,153,253,192,219,129,103,108,93,209,181,198,198,238,136,39,249,13,170,
-35,189,215,51,109,132,171,79,186,78,197,202,198,233,236,149,12,180,106,6,188,163,78,7,163,21,93,234,49,225,120,238,
-141,7,50,199,160,33,194,153,34,28,128,58,119,193,31,76,204,117,245,40,81,99,251,30,191,151,206,11,201,112,86,16,
-226,116,152,243,80,143,22,244,175,105,38,26,191,49,236,186,244,165,173,119,37,116,3,21,35,52,199,229,185,197,15,53,
-237,6,246,87,17,138,65,22,65,9,112,115,50,105,196,66,70,41,235,124,21,37,240,32,9,60,168,179,115,24,144,37,
-173,123,103,136,24,196,156,196,210,17,237,188,41,205,225,76,149,152,178,36,10,242,174,199,241,15,3,105,255,96,201,186,
-210,123,18,38,100,34,70,99,182,147,107,31,220,169,227,136,178,174,222,87,195,146,130,172,2,223,84,254,235,125,106,28,
-54,190,48,12,245,197,180,224,126,53,60,1,87,30,6,110,189,121,144,75,19,30,60,112,72,135,101,13,177,135,15,78,
-206,83,46,247,122,243,163,205,99,72,155,141,21,88,130,59,154,35,126,226,1,32,22,83,186,111,128,160,223,244,182,163,
-198,52,57,210,155,64,7,79,0,165,188,5,74,108,119,93,242,218,64,96,117,179,97,164,166,143,104,87,227,2,119,148,
-14,243,5,152,246,133,106,207,111,74,207,149,224,145,188,101,2,159,160,93,159,186,250,231,129,16,102,32,8,102,205,169,
-215,208,66,24,112,90,56,189,14,126,146,65,20,25,123,136,112,78,195,170,62,230,166,66,212,204,146,106,111,214,148,117,
-220,67,47,58,212,117,236,103,12,190,79,160,12,39,36,134,221,89,209,244,195,236,31,22,2,73,43,86,138,111,32,209,
-66,5,11,179,66,218,17,160,124,254,170,54,207,160,149,180,70,51,171,50,49,167,166,225,23,97,46,224,34,186,78,227,
-223,181,75,120,156,77,95,239,199,194,251,98,197,18,64,109,236,122,1,234,176,145,205,33,218,70,244,121,218,107,36,110,
-53,9,52,188,30,29,52,148,8,144,165,25,33,147,122,71,17,170,188,80,218,251,197,116,150,68,175,134,171,175,91,73,
-31,105,59,151,143,189,100,168,173,148,105,138,80,140,140,36,179,121,168,140,33,223,165,139,235,237,172,195,115,68,68,94,
-118,205,159,248,150,174,219,34,17,66,140,74,179,33,96,213,5,4,63,233,119,255,102,183,142,180,128,154,18,136,170,116,
-144,18,158,225,125,72,58,163,163,244,61,83,208,36,221,246,226,37,95,133,220,251,40,154,127,58,125,242,140,35,113,9,
-247,209,73,158,79,195,211,109,59,217,187,74,235,15,201,233,198,77,177,176,41,161,10,229,241,38,248,210,38,122,54,117,
-69,156,86,232,183,50,155,193,30,203,255,190,106,80,106,103,104,156,194,244,246,16,99,132,161,41,211,61,69,126,22,80,
-199,175,139,230,144,68,249,162,218,34,11,206,82,175,46,135,222,139,40,50,216,105,238,17,26,56,78,238,231,208,125,70,
-183,82,233,201,229,147,67,235,249,178,96,187,161,104,120,27,24,149,197,246,24,128,156,62,0,208,105,66,176,1,77,68,
-193,118,1,77,111,65,239,72,122,91,16,239,84,95,127,19,112,162,187,37,146,121,42,118,103,83,60,173,99,189,15,49,
-14,122,78,139,18,73,92,11,215,101,171,4,175,245,147,109,96,128,237,148,188,27,50,106,63,72,122,201,233,41,70,155,
-13,62,99,251,133,185,215,219,39,48,88,160,36,134,108,121,216,8,42,183,129,97,105,46,247,163,210,152,63,236,92,158,
-41,115,198,123,14,60,114,186,102,193,190,96,84,227,9,173,250,154,247,136,83,171,225,236,45,163,59,57,186,231,229,6,
-33,158,211,14,244,117,152,6,31,100,159,136,192,207,180,241,131,57,232,162,99,192,241,128,189,93,205,144,212,121,100,41,
-253,202,47,89,202,224,78,1,14,28,147,3,33,141,48,131,96,86,40,237,9,228,180,75,56,106,58,11,146,16,191,251,
-52,101,74,232,233,82,46,137,167,96,203,166,181,66,151,166,75,138,156,75,227,1,184,214,183,49,134,94,219,166,148,66,
-161,210,229,162,231,23,243,21,46,5,34,130,186,15,177,99,230,234,50,80,234,230,41,141,136,128,190,183,102,157,48,243,
-42,65,112,205,69,180,46,91,255,202,28,150,87,145,158,195,45,176,0,69,130,220,162,118,3,204,35,199,223,0,113,28,
-127,237,187,245,137,239,179,188,2,192,169,235,24,24,254,126,129,135,156,93,79,101,132,186,231,100,128,0,169,60,74,89,
-253,219,0,242,213,210,223,185,20,52,251,152,19,239,100,242,96,65,221,207,87,210,35,212,34,77,182,146,242,129,148,209,
-40,178,113,15,114,167,74,180,52,15,20,126,242,107,229,247,27,58,204,154,8,127,106,246,107,104,100,195,56,200,17,155,
-173,88,68,35,255,106,239,141,3,29,119,57,169,49,186,40,186,103,7,251,233,243,159,255,252,114,10,162,163,237,5,16,
-226,79,64,199,14,149,139,177,68,247,8,38,67,213,82,160,92,9,221,77,181,174,136,255,226,115,205,97,216,35,149,119,
-66,215,143,231,117,151,174,193,109,106,31,87,90,213,192,163,58,4,71,81,117,241,7,83,134,81,135,23,76,60,65,135,
-93,148,174,55,63,109,31,28,16,61,167,144,12,195,71,238,65,146,33,131,149,31,180,186,44,214,76,227,99,98,36,106,
-150,44,245,109,138,122,37,168,135,15,212,121,3,234,0,246,118,154,72,180,214,164,132,160,37,17,124,229,200,160,232,213,
-161,28,177,40,108,139,51,28,223,129,7,1,245,142,217,157,117,209,40,131,213,244,152,16,4,126,255,41,127,89,184,202,
-238,129,16,104,185,181,223,193,179,12,82,31,162,96,19,143,60,219,42,170,52,81,216,24,152,75,67,40,116,218,100,170,
-246,64,23,51,228,35,231,98,75,110,200,129,44,241,36,7,220,171,103,189,168,37,40,106,106,205,29,111,248,1,70,122,
-190,102,102,46,90,211,120,53,199,175,103,5,138,193,224,166,201,233,8,65,184,166,67,222,109,76,79,86,178,56,192,112,
-168,60,190,112,180,5,172,241,216,230,171,26,124,71,135,198,80,8,240,160,162,153,181,107,11,82,106,30,12,251,240,212,
-62,126,155,250,119,91,11,20,8,23,164,255,133,247,228,12,185,26,80,42,255,232,33,210,64,115,40,248,216,175,169,127,
-16,195,67,216,103,17,196,19,136,171,207,8,15,253,159,52,129,5,145,120,47,71,255,32,236,204,109,112,127,75,56,30,
-154,18,53,213,232,199,60,77,77,32,18,192,206,150,224,198,209,105,209,105,220,21,169,100,19,31,245,189,43,56,176,28,
-219,214,119,119,93,101,200,255,133,194,141,96,43,38,216,74,104,223,95,54,119,62,57,231,84,240,149,229,201,111,172,104,
-1,3,65,122,212,77,22,165,97,124,155,123,49,94,138,236,103,225,40,254,152,201,63,88,181,116,143,49,45,92,73,85,
-100,156,39,72,213,187,50,85,224,19,149,5,79,26,190,194,219,54,123,173,105,164,106,51,47,135,77,28,225,144,199,111,
-43,85,16,245,179,122,43,55,66,80,13,8,93,128,129,84,170,141,109,6,113,48,2,182,9,40,137,221,83,210,217,18,
-137,34,135,75,7,132,85,139,20,191,54,34,144,7,145,140,37,69,225,105,79,254,95,110,3,74,59,104,154,61,42,66,
-80,85,171,53,68,130,20,233,172,167,34,148,170,188,254,195,208,177,255,129,98,14,244,128,6,200,34,216,92,141,80,77,
-126,127,7,90,177,234,115,168,139,207,186,76,224,112,68,73,214,222,250,119,224,111,193,170,155,217,65,22,105,84,223,38,
-94,93,8,232,204,64,198,165,44,137,129,131,115,19,35,46,224,112,230,106,178,147,128,121,65,178,241,71,156,205,195,229,
-44,150,206,234,215,167,243,93,21,27,81,174,152,142,95,208,9,66,18,201,58,51,119,62,188,59,12,109,120,19,252,34,
-32,200,131,214,97,125,227,11,242,135,92,195,83,118,81,62,231,116,14,195,60,251,180,72,239,0,186,218,160,141,118,128,
-136,18,29,67,202,185,20,251,23,175,193,90,255,229,240,15,215,196,187,3,243,203,121,249,74,210,9,235,20,167,133,38,
-20,63,13,149,8,90,75,91,81,184,96,110,50,214,253,125,159,131,219,231,4,216,130,136,76,215,128,22,99,40,229,76,
-188,3,33,40,190,37,198,214,162,170,96,171,46,149,23,244,227,154,125,141,64,2,184,4,113,169,104,132,96,173,240,173,
-1,12,116,34,208,25,12,74,121,28,50,104,131,42,232,96,188,101,216,137,40,97,245,106,233,97,92,169,226,230,22,142,
-5,175,129,35,144,233,130,246,244,143,247,175,72,182,218,27,174,14,215,223,37,162,15,115,30,115,235,38,135,132,211,189,
-51,249,114,28,63,195,252,190,188,233,84,113,119,88,60,246,126,42,210,154,158,115,169,173,132,170,178,173,130,219,82,67,
-142,30,245,250,0,125,119,139,196,189,164,96,255,247,218,234,28,190,130,54,10,176,190,255,217,39,145,37,252,93,128,176,
-199,71,207,161,124,123,63,21,249,154,83,151,15,46,182,108,70,106,166,227,236,133,167,25,63,178,246,102,215,173,56,183,
-252,7,240,178,249,47,134,81,17,0,11,159,237,74,119,33,129,215,239,127,92,250,242,54,151,231,220,184,28,91,43,18,
-50,236,60,153,112,103,91,223,5,155,64,115,103,95,93,191,165,231,111,181,6,196,160,50,13,103,186,187,167,19,135,120,
-160,144,42,69,145,34,75,112,163,96,127,84,200,72,103,169,102,103,71,26,179,186,241,71,70,53,91,106,200,201,10,8,
-225,161,242,27,34,197,71,147,175,151,37,21,241,172,159,227,46,41,42,147,49,187,111,42,148,95,237,176,79,6,242,144,
-239,136,227,218,65,20,18,9,67,54,205,220,73,25,221,177,75,29,61,218,230,219,147,33,170,225,130,212,126,67,169,226,
-179,128,64,164,33,88,33,24,130,205,154,187,151,133,18,184,128,117,63,188,101,94,164,134,207,83,101,21,237,48,65,28,
-217,232,216,153,185,110,85,107,97,152,135,240,101,165,100,75,153,222,54,231,251,240,193,236,95,30,30,83,9,252,118,63,
-68,18,56,2,178,182,25,60,116,194,169,157,107,145,105,59,68,24,175,86,82,251,85,226,181,140,116,49,211,2,138,33,
-177,95,85,4,71,232,115,71,201,155,132,168,221,140,189,29,167,168,3,91,244,103,47,203,162,183,128,197,22,99,253,176,
-187,16,144,180,250,231,37,172,244,202,45,201,45,37,120,208,11,186,181,30,165,19,246,251,54,184,68,130,84,101,180,145,
-69,15,122,170,86,104,208,151,0,148,242,75,127,111,10,70,198,246,44,148,85,165,87,192,179,138,17,53,182,18,187,223,
-75,3,181,182,210,173,252,1,163,163,130,180,198,185,5,236,7,107,122,229,244,79,121,115,230,192,17,137,25,112,9,169,
-67,154,172,235,204,198,212,215,221,90,127,27,31,30,6,239,83,246,255,116,126,111,202,194,210,172,129,0,28,241,131,201,
-181,224,21,109,48,181,74,224,116,216,119,102,148,41,48,28,158,191,29,76,78,52,125,124,249,185,123,102,62,160,82,151,
-4,160,204,11,160,220,154,125,75,3,138,145,158,52,250,154,218,182,196,238,11,28,230,243,57,71,110,238,150,144,28,197,
-152,120,58,90,70,73,69,99,40,69,98,162,28,100,90,59,149,133,139,205,184,181,87,217,73,37,86,41,69,151,188,27,
-7,90,237,131,226,164,164,207,233,220,57,163,13,90,40,3,63,59,167,12,22,124,85,209,28,241,89,219,196,205,115,14,
-253,136,163,115,85,140,85,238,70,176,162,23,3,25,18,235,165,107,49,6,113,75,164,136,238,184,4,124,6,184,145,185,
-7,250,59,221,162,252,221,252,45,185,61,56,70,47,152,20,204,137,239,165,78,184,216,66,115,37,53,31,93,30,2,164,
-37,246,81,153,94,116,215,67,225,213,37,55,52,140,99,51,131,86,176,37,236,144,113,66,206,248,212,218,177,27,123,227,
-236,157,30,234,88,98,58,84,214,140,244,234,85,65,138,8,163,170,120,153,97,73,73,110,104,148,241,194,247,38,245,69,
-59,218,216,2,132,201,238,203,48,71,217,42,187,36,80,227,23,174,198,176,91,1,193,136,168,9,224,68,249,252,58,143,
-74,0,230,212,163,149,67,157,145,232,94,16,68,206,190,11,3,251,157,32,64,24,198,225,30,156,182,57,118,115,126,120,
-90,128,33,128,4,100,164,182,81,138,177,23,51,251,184,8,224,86,122,36,171,250,186,22,80,51,188,184,23,121,146,86,
-112,2,47,181,54,251,33,54,253,248,59,253,161,172,44,66,216,104,45,85,139,69,176,7,17,113,210,162,36,90,31,103,
-57,31,167,7,208,30,187,7,8,113,252,176,88,25,94,151,217,56,63,77,146,152,36,82,167,139,200,186,78,88,241,84,
-43,249,139,13,203,78,12,61,74,247,19,232,110,106,20,29,179,168,51,86,44,152,60,230,207,119,100,131,177,105,94,151,
-107,229,54,73,73,140,234,26,176,37,23,159,46,16,167,146,87,79,158,39,195,183,146,2,14,150,206,38,174,160,32,173,
-91,228,78,172,200,196,211,231,241,183,46,60,179,190,142,224,199,92,30,109,169,101,7,255,251,241,217,199,90,207,136,143,
-52,138,231,199,173,184,109,213,5,85,38,152,191,219,48,98,59,12,231,123,78,227,61,97,181,169,252,61,233,36,86,121,
-40,26,111,84,199,185,255,246,47,245,250,150,61,16,121,61,88,152,31,24,202,50,66,93,36,226,114,209,243,229,127,57,
-47,138,236,251,214,137,236,58,147,248,92,144,65,182,163,79,156,80,70,191,208,128,153,157,120,11,254,51,23,29,117,253,
-46,31,185,147,189,212,149,112,41,156,58,133,210,112,122,31,234,79,180,75,221,102,190,183,73,125,215,207,69,253,145,106,
-63,95,237,56,250,72,43,94,150,40,81,26,83,8,151,126,28,97,202,113,151,225,181,64,178,128,111,111,113,4,153,99,
-132,249,154,73,23,181,98,182,47,88,1,170,111,27,141,165,220,99,61,130,239,22,130,64,99,62,99,121,53,245,103,0,
-230,195,216,228,61,39,215,253,191,152,213,247,187,5,214,93,245,171,40,88,172,87,210,0,214,154,103,67,35,164,123,140,
-3,130,169,142,221,174,77,34,184,43,133,63,157,30,184,156,94,242,186,59,21,185,113,76,49,85,206,169,216,47,126,147,
-123,33,64,193,175,233,109,95,193,207,4,178,57,24,43,217,165,89,78,62,65,139,88,170,142,94,12,201,99,95,19,207,
-116,231,198,230,18,187,192,178,201,1,137,73,242,2,165,253,19,125,191,249,223,50,192,95,31,72,122,114,185,174,255,249,
-253,61,120,148,159,1,76,17,244,245,138,175,203,177,44,28,212,122,51,35,182,68,174,107,208,172,13,6,101,211,221,85,
-86,71,206,168,255,203,69,38,127,191,112,103,212,217,238,42,119,55,130,162,27,113,70,137,139,90,236,81,143,2,235,210,
-188,115,92,231,39,43,51,213,224,204,68,11,6,148,38,141,27,152,85,92,15,51,111,238,97,138,160,135,186,29,129,148,
-15,238,203,62,15,101,145,221,71,122,149,73,223,86,172,79,118,94,159,72,31,99,4,91,165,210,66,54,169,4,9,81,
-92,59,222,248,247,252,192,103,35,179,84,40,255,112,127,52,172,48,23,58,222,110,175,104,185,77,60,222,18,134,141,61,
-59,71,166,252,18,81,203,146,24,75,67,130,153,198,100,21,218,19,156,2,232,230,205,134,1,95,171,74,71,60,7,129,
-177,90,75,88,195,215,93,93,54,143,218,145,232,35,159,131,194,6,210,249,33,156,171,117,47,182,236,107,130,148,135,55,
-187,30,166,87,117,168,94,137,195,130,47,75,44,175,12,172,57,123,128,229,196,33,105,154,151,235,136,175,33,9,101,16,
-215,160,211,192,147,213,178,205,84,165,112,89,146,173,174,96,28,178,212,52,214,47,164,195,60,254,50,26,0,69,240,47,
-181,66,196,30,156,213,239,248,63,250,239,173,211,5,35,71,1,123,1,75,76,123,87,73,40,227,69,205,219,144,19,190,
-17,29,41,57,92,44,190,79,53,69,245,37,43,202,149,181,152,224,208,131,4,59,16,58,221,198,253,214,33,64,97,77,
-201,124,82,70,124,165,114,213,88,217,54,223,133,216,18,170,90,239,234,71,101,209,14,43,228,134,136,61,180,195,136,51,
-2,116,69,200,219,154,34,71,149,142,149,207,71,152,107,235,83,84,221,71,79,190,207,141,17,220,218,189,138,250,65,209,
-252,185,102,178,1,70,87,46,89,78,183,82,174,137,150,62,235,234,217,190,47,144,46,89,23,196,47,247,120,45,213,182,
-214,211,250,50,242,193,10,58,113,17,210,127,96,210,65,47,222,4,193,158,154,211,253,123,15,167,132,151,9,47,77,209,
-173,60,177,74,164,59,60,106,74,151,252,56,253,154,246,66,136,34,146,27,148,223,85,147,6,56,22,249,4,24,44,25,
-231,165,96,178,236,85,216,7,93,57,0,45,54,96,157,55,79,62,211,159,99,168,148,125,11,84,97,97,90,111,231,228,
-113,45,30,191,47,90,225,235,246,96,85,50,248,129,156,25,206,175,179,70,114,181,150,15,60,137,192,65,101,96,101,5,
-13,59,108,147,199,186,91,142,46,102,174,178,66,187,5,71,157,37,68,33,46,57,162,196,62,82,60,224,117,110,122,99,
-150,143,209,102,103,227,233,242,123,8,85,172,60,94,222,91,15,223,207,20,186,14,100,137,151,179,172,119,198,151,150,60,
-185,239,68,62,151,123,75,157,50,116,166,241,94,203,29,146,234,183,167,153,253,5,137,131,68,61,128,241,146,36,94,130,
-120,114,139,233,112,169,20,254,194,161,202,189,182,226,232,166,109,26,55,209,34,221,127,252,59,203,235,25,90,249,121,251,
-53,127,197,104,199,202,97,125,234,5,34,127,174,248,161,7,152,146,165,98,57,58,110,19,117,147,56,146,178,164,163,54,
-166,0,237,117,31,193,17,111,19,240,131,158,234,18,189,178,102,210,128,10,97,10,235,172,28,137,97,28,83,150,142,1,
-175,24,148,228,7,99,149,83,178,9,54,75,16,44,162,230,86,49,114,115,52,118,252,101,193,150,35,153,103,73,212,81,
-205,90,91,138,98,251,246,231,65,31,17,219,197,135,67,95,234,7,185,54,250,31,8,175,40,42,254,9,63,110,106,155,
-161,237,14,234,214,253,141,141,24,153,102,235,103,232,89,26,119,30,254,72,230,131,161,226,94,7,110,76,165,65,17,133,
-254,96,64,196,212,33,49,25,35,223,86,72,128,219,68,174,121,221,225,245,132,106,99,229,221,21,140,234,113,227,47,3,
-190,169,244,79,54,243,215,124,43,42,41,218,76,113,101,39,225,59,34,95,92,147,32,209,85,216,177,70,184,35,12,225,
-146,17,84,197,92,217,108,96,21,31,252,51,171,118,98,162,122,190,231,8,135,253,136,92,201,114,14,31,255,202,107,39,
-37,133,241,251,110,84,103,161,90,236,92,166,137,28,242,244,23,90,139,154,17,197,24,212,242,230,117,198,130,42,19,254,
-173,29,153,223,131,164,134,49,111,106,120,13,126,164,241,58,13,38,171,9,57,56,179,192,201,21,246,242,199,105,60,84,
-227,51,89,50,191,182,177,84,142,11,108,83,2,96,39,154,151,37,232,7,139,209,9,140,46,148,78,62,140,52,70,101,
-223,204,193,0,66,249,242,187,20,80,142,149,183,11,132,10,184,123,158,135,65,98,190,242,43,86,86,219,110,54,109,143,
-245,240,25,206,99,131,60,24,141,163,144,140,68,185,200,128,163,243,105,224,199,87,210,66,115,43,1,135,90,32,14,5,
-130,50,182,184,99,164,5,228,186,85,21,92,40,109,136,191,21,157,114,124,222,98,98,236,33,235,144,38,185,233,69,45,
-229,101,159,200,132,170,106,12,152,175,232,242,150,72,223,29,246,152,26,186,26,17,6,144,220,251,84,128,33,220,100,27,
-1,156,135,240,60,103,251,224,125,247,139,99,208,122,238,221,51,79,19,155,212,105,207,83,156,206,121,60,147,94,98,145,
-65,101,180,15,92,138,40,58,250,212,159,116,150,252,244,158,181,42,143,152,140,248,206,77,164,148,255,252,16,64,240,231,
-207,246,139,143,152,70,95,151,42,173,56,207,79,219,111,14,128,194,46,44,170,219,175,230,82,233,169,212,58,103,63,40,
-186,61,17,151,97,88,15,19,62,207,161,5,0,20,165,78,50,76,170,146,9,118,30,233,21,226,78,101,169,93,218,231,
-174,223,194,63,52,142,89,89,182,30,100,68,251,165,102,180,240,247,160,207,198,13,164,37,181,83,21,32,189,141,142,32,
-3,76,193,65,140,105,117,189,108,152,24,40,67,51,158,34,39,15,50,124,251,74,160,191,120,151,28,54,94,91,151,183,
-252,71,245,18,117,83,13,166,144,250,87,44,212,128,223,100,253,85,153,81,246,168,2,99,217,89,248,185,243,215,82,206,
-14,220,23,39,67,182,21,249,167,40,138,219,218,83,15,232,77,244,183,149,170,212,9,234,85,218,226,27,25,9,231,38,
-155,159,22,230,194,57,77,5,97,192,215,231,189,155,70,47,32,204,45,186,66,234,220,18,88,32,101,115,33,187,242,121,
-53,222,18,155,198,186,215,75,43,248,146,52,26,40,209,146,50,12,99,67,188,146,204,99,239,170,116,112,186,2,203,123,
-150,154,209,252,243,102,222,195,185,52,7,245,197,137,131,105,17,73,57,56,43,246,218,181,56,127,217,225,136,74,34,26,
-180,197,99,86,199,45,180,152,68,164,7,49,230,91,22,63,10,154,140,56,236,29,100,125,164,154,143,2,215,192,223,195,
-132,253,173,127,25,188,63,121,61,70,142,210,109,231,105,230,59,75,156,172,238,144,24,212,221,240,228,1,45,120,115,81,
-39,221,97,180,38,104,106,249,145,139,185,30,174,155,54,22,99,22,164,171,33,78,131,95,115,162,208,192,60,229,63,7,
-205,221,132,90,138,249,52,22,231,163,89,115,233,158,201,103,26,29,146,199,58,251,143,164,30,235,227,226,219,176,173,217,
-89,251,163,117,210,250,136,141,231,52,121,250,217,76,160,143,67,183,241,254,128,217,135,166,85,115,96,105,55,221,88,97,
-194,100,15,31,90,194,184,4,177,110,129,56,4,201,171,61,46,235,54,16,248,54,164,198,253,145,222,98,57,232,93,47,
-49,174,96,255,165,88,96,192,188,225,127,162,115,95,133,82,131,228,49,89,156,45,150,39,67,46,220,2,212,66,134,125,
-43,47,164,221,10,154,129,191,103,171,47,227,1,206,39,154,250,137,4,103,63,201,252,201,25,149,183,254,99,171,154,245,
-196,191,134,36,208,171,115,233,133,115,140,171,254,29,239,115,195,6,34,210,36,117,204,14,249,250,224,16,17,92,50,28,
-97,30,132,75,31,31,100,120,64,148,238,31,104,164,199,214,143,31,219,167,174,187,206,42,157,127,24,52,55,141,180,148,
-149,102,5,225,69,197,124,213,109,88,187,15,3,210,38,225,208,119,62,41,6,82,106,204,39,143,155,158,47,6,109,62,
-93,220,237,144,176,172,150,48,81,246,171,14,94,243,119,142,175,56,155,33,81,153,103,8,253,245,88,117,137,67,142,132,
-200,250,206,208,106,9,243,91,125,104,142,204,83,245,78,83,139,150,222,202,34,27,37,206,122,95,223,20,117,236,245,32,
-108,212,57,105,0,198,96,121,154,110,89,239,119,155,158,110,159,30,228,251,21,12,30,142,188,66,48,202,57,151,28,90,
-110,189,222,111,87,54,227,68,77,25,104,46,105,242,228,76,10,38,221,57,32,152,106,205,170,170,15,201,46,204,161,67,
-117,73,19,181,112,167,173,229,190,137,18,55,169,186,96,156,150,88,187,116,137,235,67,22,92,104,203,107,151,101,150,24,
-26,207,80,92,128,233,152,236,104,91,27,152,253,86,46,242,201,28,221,83,213,17,8,181,32,76,25,96,112,155,201,203,
-243,97,48,209,8,168,235,117,113,140,73,201,92,25,26,242,1,154,95,242,118,242,184,111,195,93,155,135,103,67,184,33,
-193,32,60,74,66,96,51,39,184,67,136,63,62,57,231,26,42,193,87,248,191,241,57,153,6,185,175,228,197,127,83,34,
-152,117,119,150,147,130,144,58,21,138,31,31,148,181,31,10,226,142,45,68,153,97,20,254,45,133,235,51,128,64,214,50,
-85,243,115,86,75,38,213,183,75,213,11,189,149,208,31,67,185,12,237,36,128,127,13,84,248,90,3,186,247,182,54,189,
-97,108,95,237,179,28,202,84,196,165,249,98,111,35,152,153,156,17,254,254,235,40,206,173,150,160,246,37,41,23,151,193,
-91,81,114,105,22,224,245,8,61,238,161,55,142,189,133,158,207,201,204,187,120,8,79,175,56,4,98,225,60,87,125,222,
-179,7,186,42,214,112,27,63,103,24,25,239,204,113,187,41,147,43,235,178,154,47,205,224,255,170,205,47,39,55,244,49,
-197,158,62,108,34,127,110,178,51,99,7,183,253,138,93,108,131,122,249,135,213,141,0,31,76,208,66,145,74,246,203,41,
-65,127,127,129,47,89,21,156,239,57,255,1,28,201,106,45,35,174,5,46,92,182,240,27,164,244,252,38,228,111,101,1,
-175,188,120,207,253,170,223,68,254,193,9,118,151,163,236,234,199,75,120,153,46,12,220,184,161,150,206,239,35,63,163,152,
-162,239,175,183,99,115,102,12,144,234,155,79,138,107,215,161,39,27,49,241,235,45,3,238,156,100,8,151,156,195,12,157,
-54,65,43,135,228,17,108,196,53,66,206,15,184,230,182,65,156,233,167,213,29,224,139,194,30,0,91,110,23,236,76,139,
-138,188,128,246,212,116,168,241,125,17,204,227,50,48,134,54,157,178,253,255,214,115,184,114,245,159,41,248,38,147,58,228,
-121,171,133,214,191,113,139,240,229,205,178,51,251,242,80,72,211,158,136,235,227,254,64,139,165,223,74,202,105,38,27,242,
-246,20,2,65,182,253,110,138,186,179,223,65,95,237,111,164,158,138,130,184,80,160,108,176,149,251,56,44,80,236,209,197,
-30,39,107,14,60,30,0,142,182,214,151,255,5,49,237,228,80,161,37,79,163,7,210,46,76,195,135,249,182,115,247,30,
-218,193,94,2,85,110,13,115,170,247,218,132,41,245,72,220,46,103,146,15,183,81,241,42,155,59,192,131,59,151,23,213,
-238,255,250,239,26,159,17,38,182,26,10,169,111,229,71,170,225,135,66,36,107,108,44,176,0,111,139,31,145,26,255,76,
-114,149,9,68,253,8,87,78,176,174,91,139,44,129,165,132,223,165,228,13,76,129,40,124,131,243,85,32,230,9,61,222,
-20,244,141,174,240,45,2,245,210,186,144,51,85,123,172,148,102,18,248,231,159,182,36,18,16,193,97,188,168,236,92,243,
-134,96,215,15,203,130,135,63,135,214,194,187,104,198,119,101,109,209,96,127,73,224,176,67,219,44,70,121,229,69,211,189,
-180,133,101,227,1,83,107,111,199,187,4,101,107,219,98,175,227,245,215,168,180,159,184,215,193,56,214,217,104,14,251,128,
-46,188,93,159,174,70,154,183,145,222,179,85,113,27,202,179,105,223,125,161,212,178,126,149,117,81,161,169,209,220,115,161,
-73,170,43,185,219,199,245,251,23,90,99,188,141,65,64,78,117,207,88,58,110,204,201,176,194,17,157,87,166,220,241,180,
-50,127,182,65,186,16,16,113,97,154,29,248,143,23,0,142,82,121,114,2,250,42,42,190,83,250,53,231,149,128,212,92,
-54,250,133,152,166,239,202,164,207,221,239,186,17,96,121,152,249,26,154,82,155,117,13,162,188,50,17,228,150,216,185,66,
-29,163,183,148,93,237,54,216,1,226,142,213,181,198,184,113,24,88,99,167,160,198,58,86,45,81,220,145,190,190,197,61,
-217,132,59,46,210,13,231,86,158,202,74,201,252,147,5,251,61,31,236,55,112,157,159,194,120,234,165,58,15,47,37,184,
-217,62,117,196,12,130,50,159,2,196,172,52,232,18,169,4,151,108,245,191,251,172,101,169,87,202,87,33,226,239,96,72,
-244,91,60,183,101,160,26,191,251,201,0,141,126,224,36,178,23,36,215,75,127,140,200,179,39,104,242,129,181,31,149,177,
-208,27,128,194,148,30,10,30,41,206,59,227,221,206,24,140,74,187,186,218,12,148,68,180,121,238,34,64,206,233,25,18,
-99,127,167,101,4,91,66,85,86,141,189,251,178,188,21,237,201,180,53,155,216,3,30,12,133,235,235,216,3,223,145,170,
-246,100,144,9,113,83,7,126,154,76,201,164,106,132,30,108,7,229,99,0,42,169,79,194,217,147,172,25,143,72,66,169,
-65,212,224,177,179,100,43,2,179,82,42,37,49,187,234,164,22,43,30,44,50,21,143,211,219,81,167,79,1,177,137,63,
-56,121,18,71,165,10,135,117,187,15,148,129,90,192,49,99,106,152,184,155,54,95,246,12,196,19,114,86,206,212,206,179,
-167,211,234,151,127,148,169,227,251,181,209,189,210,83,237,247,117,13,195,172,247,112,172,137,179,142,216,41,229,189,184,217,
-45,126,97,21,208,143,0,58,61,80,147,35,76,0,83,150,104,209,148,6,247,177,24,190,60,199,96,39,247,139,185,199,
-181,106,65,29,206,239,207,9,93,237,63,182,100,103,227,167,162,152,58,142,223,46,74,156,222,53,131,234,73,129,254,147,
-52,226,76,216,180,184,77,248,122,102,136,56,14,8,141,97,51,43,123,15,71,22,19,63,125,166,162,182,25,93,157,215,
-222,221,78,184,168,200,52,115,123,61,184,95,168,7,228,86,164,119,245,188,204,88,191,237,5,125,65,228,4,205,87,141,
-105,15,1,254,126,1,52,109,103,174,74,131,33,77,84,32,219,149,138,191,76,215,73,86,140,101,51,80,48,136,153,138,
-42,181,184,5,246,95,151,115,142,136,150,70,83,203,201,13,26,41,146,148,196,150,225,61,168,68,108,197,255,252,69,98,
-154,177,15,107,146,230,227,134,17,118,210,163,72,177,63,170,92,237,223,99,218,171,181,170,193,103,19,59,71,153,203,116,
-110,221,117,42,240,106,34,172,179,115,136,102,84,155,205,245,194,35,210,17,21,18,216,40,156,159,32,138,72,103,52,35,
-224,22,21,35,39,203,204,240,92,212,148,72,184,80,26,165,72,105,129,103,43,4,182,67,243,146,93,109,159,167,148,214,
-119,166,132,23,100,164,144,55,114,10,82,10,185,233,124,189,91,18,3,107,29,213,98,146,148,191,63,142,235,68,231,174,
-122,13,209,42,94,75,208,186,81,228,9,207,201,249,240,70,243,59,115,143,207,184,130,188,169,63,62,31,180,64,40,156,
-79,205,234,10,27,224,189,52,2,4,1,165,207,133,37,28,71,214,37,129,94,118,242,196,236,242,103,147,1,3,249,180,
-172,235,175,112,255,125,239,27,49,141,180,236,98,242,2,178,7,203,141,126,18,97,203,187,177,149,72,113,87,226,3,45,
-103,237,51,31,174,13,243,75,102,182,142,239,56,189,141,150,1,160,30,40,231,180,196,215,254,93,215,91,103,24,77,171,
-73,234,10,245,169,231,108,28,214,174,54,233,140,31,39,43,31,252,233,210,169,87,169,1,31,12,193,83,37,140,144,50,
-122,197,55,240,232,177,38,124,122,94,8,166,189,226,117,10,223,121,193,235,202,159,109,30,131,251,250,183,49,59,0,102,
-148,127,254,56,254,242,112,247,220,186,236,241,90,149,97,160,228,116,12,78,202,50,250,102,171,10,150,167,193,129,209,135,
-161,237,93,119,229,108,177,73,124,159,10,137,98,96,164,146,164,7,158,120,97,136,95,80,206,205,169,54,132,109,75,8,
-222,93,247,59,252,63,223,35,133,118,252,85,3,231,9,197,46,66,51,249,78,36,83,21,213,89,233,229,254,201,169,245,
-139,91,198,26,105,129,153,246,222,109,245,184,91,55,147,10,173,207,205,9,170,146,30,234,129,186,218,178,75,103,209,208,
-127,148,185,130,220,133,67,175,169,146,98,149,237,128,21,77,101,173,86,211,1,187,53,81,41,229,61,213,110,55,93,248,
-34,98,132,175,102,249,26,247,77,213,254,94,19,100,38,177,167,11,62,171,206,210,7,224,42,34,229,34,102,30,109,83,
-189,0,202,118,221,85,63,109,225,103,196,232,189,74,235,249,125,171,83,252,245,118,244,152,222,254,29,108,107,180,237,27,
-105,124,233,171,7,196,195,231,103,99,37,241,183,92,118,24,92,83,225,246,51,174,177,94,92,51,235,110,75,239,143,19,
-50,200,16,50,202,18,60,163,178,244,191,176,39,71,210,237,236,62,55,203,107,98,203,10,206,6,141,220,68,150,116,3,
-192,238,94,176,245,65,98,104,218,251,27,14,165,93,110,232,46,3,204,171,120,36,45,222,161,5,158,170,246,219,90,125,
-248,6,8,17,27,121,254,44,2,165,131,219,207,34,1,133,192,71,237,56,71,253,42,124,69,54,97,237,76,8,82,74,
-165,30,94,249,98,159,169,236,54,40,43,202,26,16,205,171,149,3,171,199,9,29,150,206,93,176,143,46,163,21,135,27,
-124,199,127,30,249,189,233,213,38,153,18,87,110,116,201,57,12,87,195,157,221,81,141,243,135,62,55,169,25,218,248,70,
-105,6,254,170,47,213,156,182,77,148,152,43,70,227,5,167,1,79,155,219,102,165,102,106,247,51,148,178,203,187,41,67,
-230,15,182,202,131,49,188,65,162,211,22,43,88,224,118,22,220,148,67,192,67,9,118,71,7,126,170,108,233,249,165,118,
-149,82,132,200,75,100,169,70,236,166,134,230,229,117,232,71,167,160,248,12,91,244,245,181,127,92,89,252,116,60,216,6,
-23,174,234,204,164,217,116,206,27,175,122,104,247,183,66,229,135,158,167,35,10,10,210,115,222,156,72,138,34,47,226,197,
-23,142,185,246,180,48,191,36,170,130,157,125,154,51,7,5,132,7,80,35,106,180,176,12,203,240,230,137,193,140,39,102,
-45,80,221,191,166,197,145,99,101,19,111,37,129,131,154,252,25,112,89,85,238,243,211,18,66,116,214,209,15,125,106,164,
-249,118,93,28,62,35,235,14,65,7,120,35,49,35,248,115,70,100,31,104,181,91,190,131,175,244,0,205,145,200,109,177,
-51,174,81,115,225,45,209,134,234,89,45,104,92,241,109,247,1,51,225,112,181,249,133,14,48,136,211,164,25,57,61,80,
-241,176,233,151,167,225,192,104,149,1,169,254,116,94,104,135,41,42,217,125,55,157,46,181,57,95,80,92,84,177,184,68,
-108,39,232,243,93,226,201,162,150,183,4,101,156,180,252,200,179,132,213,64,174,47,223,68,26,220,177,21,209,17,251,248,
-88,8,158,127,93,112,41,33,107,124,111,32,19,54,162,206,244,180,70,44,165,231,205,182,32,113,11,16,46,117,237,100,
-93,157,0,68,87,50,40,39,2,195,246,221,194,197,96,56,104,107,241,167,156,174,194,51,239,129,182,96,91,127,126,61,
-80,97,65,108,7,78,254,27,115,38,193,89,3,82,23,55,252,80,86,206,184,191,82,1,54,196,109,148,141,57,220,0,
-116,129,10,13,237,136,38,44,28,159,71,236,44,206,229,120,227,182,190,89,136,198,131,71,147,21,12,90,57,172,162,228,
-74,116,239,238,48,101,19,198,7,221,120,24,230,39,190,203,79,133,171,104,136,41,245,116,118,143,154,221,16,31,109,70,
-121,185,82,38,77,133,234,31,75,72,140,233,122,229,122,68,151,71,4,84,76,49,20,70,16,91,22,2,169,204,85,252,
-180,189,8,51,167,81,169,219,229,198,88,157,255,137,33,104,0,198,82,60,147,132,168,16,215,178,182,73,211,131,204,194,
-214,193,146,37,11,186,6,16,246,73,205,213,57,39,130,241,174,166,36,125,3,109,99,108,61,226,53,85,193,30,250,55,
-213,197,180,219,250,246,190,165,209,233,0,96,32,6,103,208,154,16,130,43,77,221,47,27,162,139,100,255,252,92,204,2,
-16,107,174,222,212,33,79,182,208,255,255,186,76,144,255,144,236,81,83,241,82,107,105,234,93,61,229,41,149,33,81,36,
-106,126,131,139,31,222,104,20,215,44,108,178,190,89,176,154,226,176,76,222,195,25,153,98,179,126,168,250,209,102,187,13,
-217,83,151,178,161,117,120,63,23,229,172,221,112,98,175,240,25,186,36,53,142,51,108,128,213,93,235,80,10,17,120,220,
-102,242,25,80,206,175,151,203,105,24,92,87,197,127,28,27,121,81,197,58,81,115,208,176,175,116,186,191,252,192,243,73,
-153,69,141,11,181,164,180,190,2,20,112,15,64,114,131,177,160,100,49,229,194,12,80,100,251,104,125,132,190,103,27,119,
-33,156,239,191,8,107,246,215,251,169,48,223,68,142,145,214,52,140,197,37,50,64,253,103,212,161,115,190,139,195,155,161,
-3,59,80,159,27,49,210,167,255,192,153,215,90,252,202,139,170,203,17,123,205,237,44,204,147,18,9,16,248,77,27,164,
-75,147,85,43,226,200,95,173,44,240,195,157,61,152,128,33,218,148,77,190,72,52,152,7,70,68,144,233,102,96,118,129,
-244,162,196,83,216,105,58,65,106,216,234,238,76,105,75,195,210,85,246,234,104,185,59,144,139,136,78,70,250,207,95,223,
-22,118,63,186,79,177,146,196,251,128,235,89,241,38,141,160,11,156,217,227,68,87,128,70,66,241,8,230,237,246,242,223,
-3,117,173,227,32,6,115,224,123,16,116,43,34,32,18,95,2,251,66,254,141,144,216,117,148,29,24,27,20,178,1,181,
-112,255,123,200,92,202,156,98,93,43,46,3,74,78,218,92,224,255,126,125,175,195,136,161,158,153,146,61,30,16,119,106,
-6,180,253,255,159,251,193,14,50,244,189,129,154,247,242,248,196,163,195,31,42,101,59,214,244,22,115,6,23,53,12,139,
-118,197,31,220,197,51,158,166,36,102,16,149,107,181,230,177,201,23,10,209,176,50,54,194,30,251,21,239,61,41,151,96,
-142,195,57,3,83,63,219,179,208,54,250,99,218,213,122,254,80,203,101,219,94,32,226,232,52,250,86,50,91,9,186,53,
-73,243,31,177,95,202,21,108,88,142,134,234,104,176,56,231,200,148,166,60,133,165,81,93,157,39,242,200,230,114,104,246,
-27,30,51,22,52,92,18,43,2,77,29,91,104,243,166,72,84,93,150,246,7,64,62,205,87,123,19,172,62,42,207,114,
-223,143,187,199,15,148,134,198,90,236,179,9,198,115,13,42,188,171,160,114,77,191,95,23,117,13,111,233,120,63,201,56,
-106,222,235,101,229,36,154,255,80,147,206,158,219,10,51,100,37,184,86,251,153,79,12,239,96,103,100,33,211,122,228,203,
-124,180,243,87,188,37,48,230,178,72,203,241,164,33,225,208,222,144,255,235,107,18,58,177,46,193,5,58,115,232,102,113,
-2,117,14,68,10,54,158,58,200,54,150,229,49,210,46,9,174,135,28,7,87,198,83,95,24,122,33,154,22,93,7,228,
-2,106,221,168,162,51,238,206,124,60,255,252,63,129,224,169,119,182,233,252,202,88,113,152,2,195,173,216,122,227,132,185,
-35,65,119,138,72,246,248,48,99,54,51,101,149,170,210,135,223,248,151,47,7,244,234,53,209,172,46,16,125,80,165,123,
-61,196,233,43,208,199,92,20,243,0,53,92,204,196,196,34,64,172,223,224,37,225,203,23,158,158,114,79,36,196,145,226,
-162,225,118,100,194,216,128,6,28,143,143,182,142,174,8,207,199,224,101,6,187,146,86,108,235,133,158,138,253,91,33,87,
-154,70,15,224,126,194,128,210,76,192,69,212,55,3,137,72,21,138,199,166,72,189,93,31,253,141,213,151,92,60,182,238,
-74,120,208,164,234,136,82,11,228,5,25,43,248,217,187,4,183,157,160,111,174,254,13,246,43,68,223,69,108,178,175,139,
-236,114,35,85,67,89,110,10,9,184,183,121,191,95,8,168,168,6,161,4,16,84,60,141,177,106,88,14,45,162,105,53,
-118,240,215,24,10,129,241,206,56,86,155,68,150,22,81,136,242,209,23,141,90,166,119,92,92,131,228,132,144,117,255,252,
-18,50,106,189,245,233,47,241,8,57,172,13,3,81,65,229,205,91,167,56,130,70,168,104,214,151,251,248,213,68,97,209,
-149,50,112,199,253,68,221,208,199,53,220,8,70,65,145,111,220,132,189,42,138,33,55,184,93,238,121,198,230,35,241,140,
-204,235,183,214,94,128,20,155,191,38,252,242,29,93,8,8,7,121,172,209,178,236,208,25,10,146,240,46,22,119,120,65,
-140,191,137,206,252,27,21,230,165,226,200,192,93,89,82,98,54,196,122,247,232,16,239,95,184,105,162,188,151,102,4,61,
-242,80,22,167,247,161,103,47,12,213,115,72,165,15,41,228,45,77,114,94,73,12,21,228,232,104,147,98,213,105,28,94,
-128,174,137,192,190,137,240,18,231,108,69,117,103,151,20,167,36,113,147,144,57,44,64,196,162,65,198,187,35,89,243,182,
-25,236,27,243,99,204,116,121,108,72,228,2,249,48,14,107,57,120,5,178,190,97,159,73,75,185,224,96,150,153,32,51,
-40,249,131,252,229,165,50,40,126,254,67,108,131,194,161,115,33,53,41,24,219,161,66,216,54,126,22,79,237,90,151,236,
-228,40,175,225,123,113,204,136,13,120,120,84,110,41,151,208,8,186,238,223,3,73,62,208,179,123,31,110,199,121,170,121,
-18,115,55,4,229,176,171,193,193,242,49,192,131,115,12,159,111,188,27,121,214,80,136,213,180,19,53,55,151,135,27,76,
-209,106,40,13,203,253,254,255,53,178,6,234,101,230,128,165,136,80,231,14,201,30,100,141,222,211,70,187,107,159,20,104,
-57,67,86,191,98,86,165,240,246,72,159,247,237,63,232,52,210,139,85,240,184,59,88,199,31,24,139,216,94,150,3,176,
-138,64,82,215,170,29,235,169,101,234,109,45,95,80,0,245,97,162,124,118,156,32,227,194,165,250,180,228,187,13,222,193,
-72,248,92,22,31,108,192,187,174,231,237,24,183,62,247,100,178,201,165,126,189,45,66,72,147,136,108,235,178,212,253,196,
-46,49,164,222,61,124,201,25,246,5,240,237,197,170,55,165,33,51,164,248,165,53,241,96,64,105,73,50,26,31,17,148,
-60,117,90,173,142,33,4,108,242,210,106,18,111,78,52,207,14,181,155,227,166,247,190,143,107,236,54,123,18,163,229,23,
-199,115,46,147,15,177,98,65,49,47,30,131,88,253,55,52,196,190,180,74,132,196,111,146,90,49,201,202,134,70,154,137,
-44,120,113,36,112,66,147,198,104,193,221,152,254,156,117,252,165,162,147,176,68,11,80,68,252,61,82,18,69,240,71,53,
-25,231,144,189,159,175,167,47,201,120,23,218,22,41,149,162,123,249,206,142,137,122,98,91,9,206,167,16,27,142,136,253,
-126,72,121,110,72,25,144,190,7,229,153,231,74,197,196,143,165,131,50,10,75,125,218,77,144,119,176,148,125,129,243,190,
-181,123,239,149,153,90,56,169,191,141,1,248,239,16,209,53,153,83,104,252,209,37,3,91,114,37,104,72,165,203,193,82,
-30,86,132,88,29,204,186,183,69,193,71,186,165,121,68,151,109,231,218,251,45,255,57,113,186,255,250,214,189,160,43,242,
-235,55,164,56,237,59,100,29,214,93,52,221,247,40,2,121,59,234,29,100,105,102,102,6,193,24,247,178,229,106,62,61,
-212,45,109,215,172,196,136,210,7,99,137,230,219,129,107,6,223,107,146,31,148,237,123,205,93,155,245,97,30,255,245,158,
-225,50,51,129,161,106,23,0,247,230,79,196,194,97,31,241,149,182,57,6,145,101,178,189,51,157,40,84,234,235,43,223,
-65,29,232,217,100,32,126,200,75,250,193,5,114,9,194,234,42,147,40,157,82,161,150,240,48,187,223,23,220,141,78,0,
-0,212,253,113,106,24,116,195,68,121,56,125,211,117,237,198,150,16,184,9,205,93,204,209,248,152,250,107,76,251,189,53,
-52,246,227,233,15,172,65,29,64,3,44,136,3,171,84,130,36,154,196,180,220,20,12,45,179,72,166,42,148,167,249,82,
-192,224,77,220,175,148,241,201,13,65,115,193,104,152,71,63,192,161,112,196,129,56,254,40,219,4,134,15,0,38,110,53,
-74,224,55,45,157,58,250,154,246,96,37,200,153,137,204,197,183,87,8,134,154,63,207,215,5,109,175,205,136,176,127,230,
-241,53,25,162,19,206,77,79,88,52,22,55,109,83,92,45,248,24,216,25,224,136,22,69,21,131,226,148,133,206,153,173,
-183,100,105,107,27,16,194,147,239,104,25,23,239,43,110,202,53,119,75,89,245,7,126,237,233,205,252,154,97,215,86,5,
-181,54,140,245,186,98,78,66,87,87,230,25,168,57,11,224,57,255,206,239,155,208,138,107,170,18,30,157,121,29,150,117,
-114,113,226,156,255,224,242,144,212,43,27,106,197,70,26,244,102,41,221,38,179,206,210,145,138,159,165,9,71,58,245,166,
-0,111,255,253,43,156,175,244,152,218,139,82,100,254,225,123,114,146,214,215,118,174,247,167,190,9,158,150,15,29,52,179,
-74,167,254,85,86,120,168,219,164,90,142,110,3,122,56,59,65,66,176,11,138,90,162,68,8,54,220,195,240,149,30,145,
-83,186,147,186,5,144,120,20,40,92,247,162,92,25,5,239,198,33,196,24,12,43,241,108,62,32,81,167,186,106,55,255,
-108,82,95,152,167,23,106,53,61,174,75,49,193,179,56,178,0,59,178,18,18,91,112,3,136,135,163,76,43,226,108,195,
-233,198,212,84,221,195,101,138,37,127,157,176,33,64,174,118,166,202,18,84,93,10,63,158,46,135,200,247,48,172,250,227,
-121,120,225,228,116,195,13,91,0,191,177,66,189,95,106,87,107,57,79,129,150,32,131,211,97,161,183,187,18,87,186,29,
-98,208,141,133,205,138,158,69,157,26,170,95,182,191,167,115,213,105,52,209,58,109,180,198,154,42,115,140,112,121,191,36,
-123,129,250,180,98,0,41,64,167,200,112,155,160,223,22,27,184,120,94,105,183,136,174,152,255,54,26,179,23,111,10,249,
-122,73,191,59,255,98,149,41,7,146,143,251,188,65,95,38,12,63,86,246,40,106,119,4,91,57,35,86,97,122,127,0,
-220,214,81,153,11,163,65,191,195,173,18,117,45,35,107,234,15,40,134,200,104,218,188,171,5,211,73,174,71,137,6,206,
-162,101,91,166,112,23,218,197,126,34,216,39,128,75,88,126,192,242,37,95,79,23,55,98,39,111,214,93,140,165,190,82,
-63,77,35,155,229,146,60,188,175,155,18,25,239,243,120,222,38,236,154,36,22,58,54,165,6,241,146,207,191,44,93,144,
-66,221,17,54,88,15,209,127,50,224,238,236,24,95,144,234,125,169,137,106,127,141,6,230,176,84,101,161,63,202,69,233,
-246,50,27,111,66,246,137,148,174,121,253,20,140,189,227,19,219,128,43,210,233,88,74,196,118,127,204,68,113,134,80,117,
-106,22,33,153,78,81,21,160,211,113,186,49,48,33,152,212,179,142,166,107,123,214,35,29,47,111,240,141,24,121,98,109,
-170,29,239,216,35,32,61,187,180,253,171,128,90,1,111,58,162,235,20,46,144,209,88,52,252,178,86,26,166,186,254,143,
-232,8,196,135,59,13,77,219,210,117,75,203,100,100,111,145,115,254,191,230,154,213,194,157,20,57,52,6,15,29,170,100,
-158,86,66,218,79,46,24,160,83,250,211,116,215,142,98,45,170,220,61,6,171,83,163,57,56,213,37,210,189,19,32,222,
-219,195,94,99,81,112,110,98,12,199,239,238,83,19,166,103,92,5,74,63,123,14,53,15,244,215,6,102,180,222,113,100,
-252,246,20,63,120,26,172,50,83,183,50,24,212,62,158,169,250,94,162,228,145,201,120,77,93,251,115,207,149,118,182,65,
-130,116,242,55,175,147,105,146,126,73,91,35,9,211,47,96,163,146,220,191,76,124,20,181,48,102,204,254,220,56,247,87,
-80,139,51,218,47,102,175,17,98,162,85,179,184,172,210,196,241,201,23,243,17,69,102,112,15,131,142,187,166,164,12,140,
-67,222,133,206,223,15,84,140,210,206,58,244,194,210,141,149,192,185,165,254,178,98,234,118,73,169,245,6,115,195,32,205,
-24,186,192,76,253,219,225,122,163,183,12,65,22,90,163,112,249,24,191,15,187,39,82,253,48,164,5,56,25,218,71,196,
-2,239,30,157,170,239,84,98,49,247,210,123,39,149,249,196,203,99,0,247,52,137,150,186,160,209,113,222,54,35,179,129,
-227,208,112,7,95,21,16,132,24,123,217,192,210,238,64,226,14,145,26,95,107,130,99,64,2,135,144,179,20,32,18,126,
-162,1,9,37,71,250,225,83,31,28,130,240,163,112,59,234,123,112,8,215,77,143,42,241,73,146,124,132,1,125,181,125,
-224,115,28,152,88,111,56,103,52,53,142,216,210,252,38,143,248,251,176,156,167,96,81,44,11,73,125,32,206,122,128,132,
-153,144,52,72,198,157,162,140,223,40,136,27,133,137,24,7,95,73,242,24,106,190,69,203,136,58,178,10,15,67,195,187,
-37,50,94,87,101,75,218,5,187,148,147,241,35,55,21,227,253,35,118,9,85,234,168,253,126,139,239,47,20,145,105,234,
-133,202,151,86,3,113,192,162,108,44,58,152,226,132,134,176,218,32,117,149,116,130,18,182,132,8,184,70,160,201,10,36,
-214,41,10,182,238,114,135,13,48,105,39,44,188,111,195,51,160,130,224,250,129,18,26,65,139,17,116,236,143,5,176,228,
-76,111,83,139,90,109,43,113,99,7,21,17,8,162,223,155,157,124,206,112,123,159,198,238,240,67,34,119,176,138,61,119,
-25,241,156,23,230,238,156,130,234,157,183,10,187,64,237,84,241,99,224,223,4,93,86,229,71,82,255,252,169,244,208,225,
-179,245,63,250,239,126,99,186,217,3,182,73,238,122,99,27,252,170,163,140,12,62,154,219,136,149,112,30,254,25,95,68,
-145,217,150,112,69,235,135,53,244,128,126,26,11,147,203,12,116,15,233,56,9,99,92,231,208,237,63,193,107,66,14,149,
-208,166,194,176,7,177,65,137,90,82,127,141,32,201,198,164,187,5,108,136,185,116,84,103,115,74,6,36,228,216,22,248,
-160,233,165,9,149,199,174,120,103,172,205,175,36,78,21,117,165,161,99,250,146,42,148,38,235,70,145,193,167,73,14,132,
-10,230,4,186,41,218,47,73,204,13,30,21,27,17,163,146,113,150,31,104,150,8,129,61,197,111,215,115,0,93,56,9,
-57,83,210,165,116,219,55,162,27,107,65,185,49,25,136,19,140,36,41,22,144,68,199,124,125,178,41,35,191,12,53,219,
-78,122,28,218,85,199,69,56,37,188,39,17,148,1,98,68,136,171,229,196,112,162,17,4,71,1,140,228,92,117,236,192,
-117,128,233,83,144,29,98,92,200,84,118,152,206,177,30,143,88,193,245,172,42,183,64,113,199,148,102,50,162,132,244,142,
-181,239,52,137,243,11,233,223,15,10,177,53,204,137,93,151,131,184,44,50,14,4,14,21,71,133,248,2,79,194,227,25,
-146,254,76,235,45,239,219,137,1,62,191,50,255,210,203,135,135,133,36,17,214,99,38,232,143,75,23,25,130,117,21,2,
-231,158,20,89,23,68,81,175,180,199,186,206,185,223,55,73,69,67,185,191,95,175,31,135,67,130,92,218,194,91,130,30,
-65,210,89,137,16,213,105,130,206,97,218,128,249,172,217,188,247,12,189,25,101,105,82,153,202,68,235,197,244,187,148,210,
-122,163,28,69,54,193,6,100,183,45,113,110,186,90,100,113,167,243,112,112,28,183,130,58,231,255,49,134,50,163,130,127,
-112,114,118,78,98,110,245,249,200,71,224,158,25,9,57,242,134,89,129,16,119,202,62,227,95,176,76,201,79,63,139,41,
-142,102,33,77,199,150,246,42,147,166,93,137,108,68,2,226,224,67,132,30,148,79,17,21,228,66,142,133,128,117,61,136,
-85,220,255,9,41,148,0,250,29,98,197,158,170,156,53,63,158,177,4,10,188,194,66,105,146,136,166,95,149,226,70,129,
-89,48,247,11,67,202,196,188,9,154,97,0,28,131,116,1,187,55,228,1,165,206,242,191,98,112,89,46,4,48,25,103,
-161,60,38,164,248,77,138,186,47,161,22,45,227,53,80,175,178,189,247,131,106,92,236,154,25,75,160,81,54,117,212,41,
-168,31,93,59,148,204,221,63,93,150,25,127,106,146,201,225,208,34,8,140,132,167,132,106,135,217,87,170,137,0,48,88,
-249,5,91,128,209,201,102,95,93,14,95,83,239,163,195,135,198,230,244,10,71,66,119,97,211,51,198,20,139,151,58,175,
-226,66,109,192,41,16,224,242,72,170,225,16,178,120,225,252,29,228,37,135,110,68,20,211,58,241,199,80,43,84,164,30,
-225,238,171,186,127,253,100,43,96,234,190,59,76,191,169,144,15,145,253,243,110,96,168,172,230,213,108,55,131,138,237,87,
-131,161,249,217,90,247,116,228,238,47,16,82,96,124,80,25,141,165,118,30,124,164,201,221,184,159,139,140,83,251,190,1,
-237,152,59,3,94,230,118,54,219,221,243,168,231,2,21,230,125,159,173,149,127,195,196,202,30,213,86,32,253,181,117,91,
-172,181,176,114,9,140,137,227,173,76,104,202,171,61,73,31,24,212,20,126,16,176,166,77,195,232,58,65,66,171,24,136,
-143,148,249,224,4,216,150,33,220,233,43,248,47,22,84,4,215,127,154,100,232,149,55,193,176,158,205,187,139,15,232,77,
-4,183,119,119,72,214,69,16,130,55,87,57,11,211,153,177,6,112,1,146,126,46,83,110,6,232,160,225,27,150,48,120,
-98,139,202,134,177,113,221,185,255,253,22,105,183,132,130,186,54,98,245,155,240,228,104,98,251,85,110,208,30,73,41,213,
-195,177,90,162,252,198,102,67,3,39,232,188,158,43,190,138,195,50,22,213,11,150,69,229,127,109,219,130,152,12,252,173,
-150,111,101,74,41,122,67,226,151,251,148,63,94,164,26,14,114,198,236,149,25,90,115,254,63,118,240,154,94,242,95,107,
-36,62,189,42,222,191,105,153,118,254,242,14,188,97,173,37,143,94,215,48,79,34,201,118,136,174,112,232,20,8,6,244,
-209,206,172,135,185,73,222,115,64,177,114,202,144,161,228,96,191,234,6,33,75,251,83,104,193,58,158,185,251,243,174,134,
-81,95,68,85,26,243,135,24,12,129,210,59,14,144,48,11,152,39,131,124,150,57,120,206,210,159,28,130,27,159,190,162,
-5,131,220,224,247,182,166,154,28,206,165,88,140,135,31,109,42,75,192,27,243,113,169,227,124,247,248,224,114,121,243,38,
-44,120,219,226,87,135,254,118,114,131,146,79,210,151,236,27,163,24,247,158,66,46,23,191,78,16,27,229,235,22,126,137,
-202,73,150,36,17,129,94,82,171,75,255,15,13,201,193,237,151,16,210,103,43,192,40,17,39,128,80,12,140,192,127,134,
-0,152,227,211,203,54,119,221,48,75,72,218,183,3,177,120,176,221,85,185,78,6,137,149,213,73,171,56,89,42,207,47,
-112,29,238,36,152,140,198,54,29,159,128,224,88,127,191,28,69,58,157,119,230,66,69,22,63,248,69,10,173,16,213,137,
-63,233,100,108,254,84,106,86,65,147,94,183,86,87,52,117,55,52,178,54,34,228,79,185,228,191,168,214,142,137,75,107,
-68,79,50,2,223,194,37,183,97,124,56,118,71,62,88,134,232,199,178,246,97,54,71,219,8,72,105,2,97,237,166,87,
-88,120,169,86,202,168,55,67,122,227,156,78,209,196,209,62,73,16,101,80,91,208,87,128,96,232,155,30,67,111,85,102,
-113,131,36,5,244,155,248,52,30,169,115,253,34,96,177,18,28,105,206,41,232,76,70,240,226,185,70,174,226,33,215,129,
-7,136,250,200,106,61,139,147,18,32,174,143,158,188,21,231,204,237,151,177,227,1,21,46,64,164,39,123,33,71,88,43,
-42,254,184,184,248,192,174,130,254,49,211,23,58,91,28,221,177,92,91,194,208,69,239,56,4,119,190,97,248,217,206,5,
-6,3,187,215,73,212,119,249,176,243,119,180,127,136,213,124,204,187,29,216,216,201,60,160,143,32,219,143,195,110,91,121,
-224,29,169,255,209,222,170,15,58,136,178,76,126,43,58,69,148,202,190,93,29,174,25,143,119,222,89,185,114,93,24,30,
-59,164,48,143,134,237,100,113,40,91,212,113,59,138,155,175,69,15,85,237,85,202,62,85,224,102,138,36,72,145,64,45,
-173,219,101,235,61,152,163,198,210,191,227,17,83,38,48,81,55,118,88,207,136,237,22,48,188,199,30,190,43,234,177,175,
-255,155,15,13,31,99,81,179,203,108,36,63,64,50,78,95,124,28,29,95,194,168,116,246,162,198,47,38,112,178,146,70,
-176,175,100,8,148,210,160,239,234,37,203,73,221,230,37,199,36,255,246,6,159,117,108,11,251,217,36,138,38,87,8,62,
-252,67,5,165,162,139,212,125,160,187,33,198,41,37,142,50,100,61,44,101,105,114,159,50,238,25,36,241,32,5,68,194,
-253,103,246,152,153,82,87,153,183,212,185,142,14,190,214,117,150,54,22,57,128,162,140,104,144,187,157,25,123,81,128,59,
-73,37,249,140,100,54,71,83,129,172,209,210,114,119,183,203,183,11,138,183,66,226,168,36,121,226,223,30,224,89,122,9,
-5,102,130,191,209,68,154,212,143,99,241,172,111,71,180,184,125,170,29,43,181,3,126,237,203,130,85,48,90,13,138,214,
-182,101,226,248,118,233,181,18,212,109,11,208,30,109,222,246,171,37,7,67,24,206,194,197,44,61,79,251,115,133,254,165,
-11,133,230,191,105,176,10,86,16,218,161,151,143,233,174,115,108,203,40,21,175,45,204,179,40,64,207,10,200,3,232,55,
-219,126,22,23,208,27,10,38,176,31,136,101,44,48,191,9,216,238,116,83,111,118,15,123,99,126,227,10,82,207,106,71,
-238,74,16,39,69,206,46,96,77,130,172,175,166,65,195,230,213,86,226,250,249,186,77,250,171,66,82,140,192,185,239,174,
-180,132,49,73,69,215,131,146,38,147,207,74,6,103,106,136,120,207,87,2,142,27,126,163,29,164,190,50,151,0,84,112,
-75,41,46,93,136,99,197,158,70,177,134,141,56,206,173,58,177,240,41,77,46,255,252,169,244,208,225,179,245,63,250,249,
-52,46,120,82,113,102,227,117,75,173,19,139,147,114,30,103,179,14,93,0,31,160,61,96,78,238,4,207,194,158,104,38,
-91,223,169,5,44,165,160,73,53,130,137,200,75,203,141,109,148,90,199,56,89,117,74,92,64,164,237,114,243,238,133,132,
-75,195,119,162,249,78,144,70,133,6,90,45,35,130,137,71,56,243,119,97,104,85,1,150,161,236,71,1,239,44,46,188,
-183,74,86,208,74,172,129,145,192,79,169,0,0,67,203,115,100,91,197,219,214,39,216,58,12,228,232,165,83,56,32,174,
-104,102,164,196,129,56,220,150,149,17,111,86,142,79,5,68,248,202,136,255,105,71,94,244,162,179,93,171,133,249,40,59,
-214,96,239,100,181,15,138,197,111,97,29,152,71,239,76,62,140,130,241,219,34,61,97,78,155,246,196,173,214,218,114,57,
-109,65,67,85,176,1,145,205,55,90,225,72,18,165,153,120,100,246,207,154,115,17,147,233,45,60,217,153,107,42,125,107,
-90,208,3,103,148,55,179,36,166,226,197,152,167,77,225,88,193,71,120,61,52,48,67,91,209,173,21,224,83,90,198,69,
-62,206,59,111,71,110,155,76,126,110,88,133,92,15,15,54,174,86,125,104,62,92,85,217,132,110,57,189,29,137,7,105,
-182,157,24,248,175,192,80,254,27,110,188,22,25,95,54,202,6,156,246,47,119,93,149,241,79,195,188,77,80,215,116,151,
-83,169,213,86,113,249,7,34,196,225,227,165,17,135,202,82,152,238,118,66,113,60,232,3,219,83,142,124,134,98,134,209,
-199,230,191,86,235,180,100,39,217,74,154,191,113,108,127,166,184,82,60,131,30,75,219,25,70,252,52,253,119,219,108,224,
-90,221,27,142,31,3,242,168,14,29,143,176,108,162,21,76,17,116,68,2,95,184,154,192,28,6,118,63,171,33,244,128,
-159,6,164,53,221,110,87,141,247,141,53,145,97,128,171,16,238,32,227,67,14,28,26,128,86,134,194,104,174,185,234,157,
-62,131,62,214,195,114,68,29,224,179,224,216,198,77,173,207,171,89,225,17,227,30,31,244,45,212,99,108,34,120,235,69,
-76,40,239,11,77,53,45,145,121,38,209,23,219,158,158,77,120,86,234,36,11,1,60,163,61,192,25,223,143,214,181,53,
-39,227,130,162,230,40,242,181,109,147,141,235,172,164,3,215,148,5,2,190,127,240,189,199,105,204,110,123,87,225,61,70,
-6,26,192,102,243,115,199,179,197,140,17,79,37,149,221,102,224,28,46,163,13,15,155,25,139,226,56,69,219,177,13,25,
-119,43,179,197,93,241,3,220,215,156,159,101,73,186,138,188,195,34,175,142,18,127,252,27,0,205,53,97,124,246,14,237,
-53,164,90,251,50,144,214,112,199,176,113,241,25,139,202,96,107,253,125,181,9,67,79,15,67,35,168,189,106,159,72,40,
-42,133,61,120,45,162,57,218,48,146,91,161,117,123,107,121,239,145,210,17,197,174,216,241,26,45,240,235,221,171,4,2,
-237,53,182,210,112,131,10,181,250,113,73,61,159,235,142,11,250,45,137,43,26,48,11,199,176,4,203,24,158,36,42,245,
-140,118,199,92,211,107,39,13,160,66,154,97,122,217,137,0,252,76,159,5,216,237,216,217,131,204,106,102,160,54,85,150,
-5,81,23,218,182,133,123,188,173,3,18,228,140,196,251,117,74,15,109,164,43,225,68,242,124,82,252,124,199,57,198,247,
-59,248,147,174,144,35,123,46,178,35,75,155,21,11,145,240,150,76,87,32,240,41,21,54,14,79,213,10,95,57,56,160,
-223,61,254,162,213,254,183,209,153,203,57,146,98,55,14,251,171,91,174,110,170,80,114,229,199,78,227,241,32,76,126,209,
-57,3,90,83,244,200,254,59,79,122,107,161,95,69,93,83,86,210,70,87,20,168,229,27,103,6,29,174,7,170,73,182,
-222,197,223,122,7,90,29,212,163,47,251,91,123,114,78,125,94,79,46,125,60,217,148,87,122,80,193,241,103,93,56,192,
-194,219,82,13,112,179,63,107,228,82,211,135,43,159,163,177,225,65,99,6,44,59,51,169,38,139,14,163,34,5,101,142,
-50,138,154,213,246,135,40,148,62,149,18,203,16,112,149,30,207,107,28,25,77,226,199,3,50,209,213,4,6,83,41,133,
-45,239,80,35,148,197,17,195,172,253,205,99,166,203,31,120,70,83,196,197,10,34,77,62,108,59,116,42,132,181,191,147,
-241,212,197,49,113,248,195,177,73,167,86,30,255,59,35,113,52,40,199,46,180,191,49,223,171,95,72,62,152,227,187,55,
-200,7,132,194,244,172,80,157,206,95,221,122,14,118,51,133,156,0,105,217,97,20,90,225,33,22,56,120,255,253,116,120,
-135,159,174,11,53,221,224,49,223,229,112,247,220,179,88,77,186,214,139,72,72,173,87,22,171,4,15,237,247,237,71,220,
-89,234,30,39,18,41,48,4,223,218,87,212,59,3,241,75,24,207,134,217,46,137,34,253,70,178,29,94,192,136,49,79,
-142,202,17,35,112,248,155,208,87,13,114,99,26,253,248,57,250,47,227,17,189,120,60,126,190,11,94,33,84,153,91,10,
-127,152,219,49,52,188,98,231,166,64,48,120,25,156,78,245,215,210,77,143,101,147,92,34,7,248,124,19,32,23,97,236,
-163,173,231,138,70,160,101,98,254,234,178,36,171,97,162,165,8,9,238,130,229,225,29,130,63,2,36,99,155,115,129,227,
-52,51,22,71,14,139,24,161,132,228,205,56,138,83,95,223,234,145,8,229,236,83,245,209,129,77,130,186,226,204,194,152,
-102,71,49,16,215,34,41,209,11,24,69,103,22,201,100,130,0,252,215,48,173,244,31,124,248,89,97,2,218,166,83,41,
-126,200,45,237,15,123,248,252,67,230,99,71,168,142,151,73,49,178,190,100,146,93,139,38,237,49,37,40,138,41,166,88,
-74,209,203,105,186,171,38,103,151,18,184,34,27,229,191,160,165,70,91,2,175,102,139,72,39,114,197,85,60,109,233,153,
-10,100,229,69,54,71,33,219,204,42,212,161,172,196,169,148,108,149,129,223,68,43,72,74,89,220,64,92,234,119,98,182,
-144,101,62,70,15,63,227,183,135,126,51,75,42,21,93,92,164,237,26,34,50,242,110,214,254,202,160,144,15,94,245,64,
-45,158,117,96,213,63,144,10,152,5,35,84,111,176,14,165,201,8,84,150,95,30,217,20,251,183,230,50,31,254,244,187,
-28,133,210,107,40,188,79,255,233,220,34,98,231,225,109,32,247,132,199,222,30,159,130,125,61,225,251,67,180,45,81,23,
-13,146,113,214,44,226,6,245,89,59,21,204,131,149,53,164,235,116,129,109,98,57,249,4,156,70,67,244,35,249,179,192,
-141,57,240,47,104,118,113,75,179,118,222,253,99,207,233,254,171,177,58,43,213,228,153,0,42,147,164,30,145,21,208,189,
-145,13,72,110,141,124,155,59,218,249,195,41,196,33,141,29,200,0,126,168,42,8,195,151,112,91,207,187,146,125,73,189,
-200,163,37,238,0,35,250,25,105,132,181,226,75,224,194,87,168,21,53,66,188,105,29,71,188,106,70,7,98,173,78,208,
-105,84,111,95,196,61,109,230,29,125,238,199,220,27,191,168,241,78,118,63,124,212,71,116,25,169,32,142,128,15,46,155,
-39,128,142,162,42,122,2,19,74,152,30,32,229,86,131,206,92,123,37,113,14,202,226,161,232,237,189,59,71,19,166,201,
-126,235,58,60,255,144,93,111,93,180,62,159,27,182,121,5,76,37,166,104,218,89,158,162,195,5,188,136,184,237,212,208,
-183,127,190,109,76,5,217,195,80,206,64,53,146,99,127,162,181,111,119,245,123,58,46,140,137,68,159,232,31,5,55,87,
-70,211,101,148,65,254,249,199,226,200,73,16,68,159,137,248,78,12,85,212,229,248,193,141,207,187,3,90,69,187,208,8,
-69,237,142,90,17,201,224,196,246,151,166,29,154,51,132,251,117,2,210,14,62,182,69,189,123,163,118,90,213,176,224,139,
-120,195,161,60,243,171,55,225,138,32,45,232,75,172,200,124,195,190,67,47,193,64,128,152,214,239,160,175,121,213,11,141,
-253,65,49,63,81,1,43,209,226,188,124,33,255,129,126,251,214,81,182,93,214,215,85,15,255,52,149,179,222,109,104,50,
-21,78,254,86,207,55,50,223,197,116,0,189,226,64,164,13,15,65,218,63,153,224,78,78,236,112,179,183,0,225,51,91,
-148,196,192,63,68,128,183,82,234,234,84,195,227,211,172,7,110,34,58,31,60,208,210,76,55,205,55,30,174,246,87,60,
-151,12,176,30,194,29,28,92,56,250,125,119,43,152,8,218,87,52,237,178,86,115,173,234,252,30,13,213,8,121,237,164,
-111,124,144,105,104,11,149,137,100,38,85,188,176,139,191,77,118,23,32,44,6,43,129,23,64,168,103,113,186,150,205,11,
-229,10,97,179,224,180,227,210,195,134,24,12,88,183,22,157,202,176,56,138,75,223,16,31,166,66,133,90,163,150,172,66,
-213,98,176,143,96,183,44,212,184,102,138,26,88,242,82,198,76,76,153,232,41,167,190,107,142,224,143,160,127,236,107,31,
-74,99,137,14,10,75,126,234,12,232,93,150,60,164,174,154,223,43,51,174,214,33,244,43,251,189,2,36,148,21,5,191,
-239,223,65,45,89,66,204,20,197,25,116,39,226,227,160,91,45,186,51,73,10,18,189,104,60,102,61,247,91,242,58,241,
-138,29,163,112,110,77,175,137,12,8,0,70,28,108,250,123,16,60,43,250,10,140,196,251,70,150,17,139,8,27,169,115,
-140,106,134,146,158,173,137,137,44,110,5,233,225,221,217,175,217,111,85,132,87,7,248,171,106,91,165,158,6,66,237,131,
-159,8,124,182,176,214,77,31,118,122,23,40,28,243,99,255,252,169,244,208,225,179,251,102,58,191,182,253,6,139,41,158,
-77,220,97,235,237,232,208,78,154,104,44,241,145,26,166,199,31,106,241,121,178,53,167,138,143,4,156,235,113,51,213,46,
-54,12,23,194,220,237,125,238,147,185,150,51,137,62,105,48,130,59,119,158,65,147,49,59,96,90,209,109,237,26,29,225,
-56,206,232,125,2,140,37,193,142,228,34,206,199,128,226,100,58,146,135,138,141,78,56,171,39,3,191,22,40,167,212,122,
-64,235,3,237,45,192,136,106,30,61,185,64,72,46,55,112,223,180,11,172,246,198,63,225,110,164,106,24,146,229,66,180,
-80,2,231,237,146,92,16,74,143,156,117,22,252,213,107,17,123,208,82,92,82,213,152,200,173,126,41,106,231,239,66,26,
-122,154,120,44,187,75,248,79,132,70,191,144,89,168,146,119,37,166,233,36,200,160,55,214,6,44,9,120,10,137,153,160,
-140,244,175,180,203,55,193,42,72,39,73,93,30,18,113,46,94,217,212,112,70,131,136,123,21,122,228,253,5,225,120,230,
-105,35,145,161,254,10,213,10,52,204,100,122,253,175,217,51,139,232,151,7,11,238,22,81,13,46,33,94,200,130,168,99,
-28,193,14,223,95,203,186,174,69,110,3,18,208,60,123,87,213,171,237,36,160,140,73,183,93,92,250,9,249,92,235,31,
-94,229,232,214,46,12,132,165,82,108,147,107,96,137,39,210,29,192,56,54,101,15,236,7,234,111,109,4,209,79,222,234,
-138,169,97,34,69,91,94,66,123,58,110,92,161,46,159,156,169,11,219,27,81,77,41,38,103,32,88,28,204,60,233,68,
-201,100,50,127,66,163,51,140,81,44,88,121,253,15,207,15,117,214,73,22,173,224,187,241,30,221,117,2,246,93,137,63,
-207,51,144,51,175,92,178,55,102,182,78,249,113,49,105,97,9,111,161,5,228,178,150,85,251,252,156,141,39,206,240,68,
-239,232,196,87,114,119,190,34,238,104,97,178,144,101,116,46,34,21,194,37,153,228,55,98,202,86,81,133,166,255,243,110,
-238,11,38,155,185,120,94,13,234,115,141,91,41,44,131,199,236,33,126,59,120,0,19,108,224,101,65,82,48,4,96,76,
-231,69,63,228,196,195,185,252,245,34,210,181,193,47,1,1,162,110,69,167,79,107,109,163,120,104,117,237,157,168,24,198,
-30,248,188,65,141,81,103,62,84,55,199,10,174,175,34,116,202,166,252,60,9,159,1,200,50,232,11,195,181,234,212,36,
-69,200,10,51,127,195,148,52,216,68,87,9,174,78,220,57,105,34,192,221,113,20,200,49,45,100,53,74,58,195,210,170,
-43,210,160,213,119,161,70,64,81,60,34,5,32,180,92,185,224,158,36,46,237,246,88,243,226,246,168,55,51,8,70,2,
-4,149,39,37,101,251,72,155,55,250,190,138,237,143,96,84,242,103,114,99,18,194,82,74,142,55,114,239,125,71,60,19,
-132,147,150,252,48,82,217,3,171,1,40,170,68,211,42,53,68,246,219,62,233,253,244,50,198,68,105,216,139,154,109,233,
-225,123,142,58,195,206,200,32,230,17,163,178,121,7,222,213,28,88,70,237,40,237,186,154,70,46,73,188,91,192,111,36,
-208,203,125,245,129,215,139,47,68,142,164,8,27,222,125,222,206,247,100,183,61,232,37,84,248,74,183,233,36,37,206,87,
-243,103,136,22,168,202,116,213,40,127,173,7,103,130,74,188,186,205,198,53,45,127,214,94,251,64,136,223,85,84,1,31,
-167,167,109,47,77,26,37,193,204,115,29,157,55,17,213,117,245,217,238,51,83,134,49,197,34,94,226,103,100,148,209,32,
-185,101,11,92,195,174,34,112,204,219,5,57,43,47,24,183,220,213,178,90,237,53,240,127,32,61,200,229,110,133,66,123,
-6,26,117,22,236,34,7,46,46,3,184,168,162,71,219,254,122,43,76,224,41,108,203,105,217,56,15,213,229,35,100,105,
-229,74,113,31,21,30,197,84,196,170,28,248,219,156,18,145,233,96,7,223,246,248,193,128,54,35,78,5,219,200,14,71,
-69,75,35,46,114,117,198,65,3,126,211,206,3,244,232,86,223,246,209,143,221,34,124,254,89,50,175,13,94,108,201,218,
-172,129,22,93,90,221,24,221,118,97,84,36,91,11,35,230,87,217,86,27,120,47,240,96,101,201,151,21,29,242,153,49,
-77,1,146,24,130,105,237,136,18,11,165,141,238,152,44,27,155,182,185,157,54,108,217,191,161,249,126,97,25,76,201,151,
-29,197,193,241,182,133,128,63,134,148,241,27,255,196,241,226,98,124,39,224,35,149,20,218,0,20,70,119,254,57,224,203,
-217,154,46,0,44,74,165,107,135,142,41,12,110,116,170,246,86,176,57,51,107,88,64,127,82,63,120,27,52,105,143,92,
-255,253,134,232,239,144,150,133,25,113,240,192,74,110,210,71,38,50,107,161,108,116,21,131,143,206,82,37,23,44,191,129,
-43,3,20,144,200,252,200,136,155,46,214,5,228,190,9,107,163,179,118,85,14,134,89,105,211,184,202,94,28,20,246,184,
-169,9,90,231,73,142,188,121,128,151,251,84,55,236,9,145,23,77,162,47,17,126,206,193,132,83,195,199,53,21,103,232,
-236,110,168,73,82,80,50,88,28,76,191,192,54,239,231,17,87,60,104,59,146,123,55,68,123,105,77,58,249,145,54,84,
-12,159,179,237,85,69,195,1,114,100,82,46,221,245,34,129,48,54,105,239,200,208,59,70,233,222,24,71,68,11,45,202,
-181,67,247,230,145,110,229,173,68,145,41,0,48,99,203,165,11,10,114,185,33,157,131,228,153,241,156,31,230,120,243,198,
-250,139,242,197,51,23,80,132,180,150,177,190,83,10,27,219,51,181,11,157,128,239,122,195,213,82,144,57,69,85,90,157,
-6,201,120,94,18,74,149,37,79,127,188,67,199,97,69,93,211,1,50,6,233,37,216,63,157,216,50,150,100,212,71,216,
-53,231,105,48,63,193,103,22,62,251,69,89,241,122,54,191,118,220,65,84,41,1,223,141,72,203,1,5,11,223,192,211,
-1,224,98,78,51,38,48,69,77,188,95,37,221,69,5,66,155,24,29,145,59,185,91,38,248,227,107,149,157,88,192,255,
-91,16,94,82,167,220,56,79,69,130,247,4,190,162,87,225,199,54,39,237,64,223,77,81,135,210,198,253,70,46,141,125,
-8,251,172,132,158,5,140,193,46,29,177,208,7,68,211,97,141,121,73,65,113,242,81,211,116,6,206,40,91,91,108,87,
-221,7,194,130,204,222,214,172,205,59,216,211,95,110,7,8,42,206,212,144,33,242,242,208,44,209,67,228,184,200,175,60,
-185,35,181,52,254,40,151,214,105,16,124,80,104,203,77,179,246,127,55,142,247,92,60,114,104,24,15,34,133,254,183,234,
-52,94,250,152,247,80,175,127,37,92,97,143,126,43,66,221,147,240,153,65,145,148,95,223,114,95,212,11,103,253,30,157,
-176,226,157,249,41,173,137,225,189,223,51,24,235,205,222,188,198,62,184,216,210,191,93,27,109,14,82,8,25,97,243,92,
-122,176,19,224,23,115,8,102,27,111,190,8,165,131,10,35,53,235,5,254,249,239,45,111,85,238,192,24,174,223,218,138,
-236,71,200,65,251,227,162,158,76,122,208,118,60,233,230,213,244,95,239,156,40,129,197,234,127,238,124,60,140,216,251,116,
-135,79,13,20,7,102,206,198,227,3,83,137,107,35,10,168,59,53,233,54,176,30,233,100,47,8,175,0,222,181,16,46,
-71,247,227,38,49,121,155,86,226,81,154,180,89,24,117,56,107,247,246,220,192,242,199,237,27,16,133,233,95,45,121,242,
-212,47,151,229,77,71,0,240,99,162,15,96,11,111,75,255,53,111,215,18,7,194,165,229,136,131,200,230,38,60,107,68,
-142,10,100,135,219,46,125,88,167,121,2,2,199,130,103,32,81,189,81,175,234,163,67,125,9,173,42,40,184,241,132,203,
-134,140,220,224,242,248,51,212,48,139,250,71,170,123,216,30,179,202,199,122,125,125,231,99,245,152,49,92,85,64,245,53,
-108,65,146,22,181,227,34,63,75,89,51,20,28,225,118,173,50,71,105,138,179,177,192,116,11,230,91,205,69,221,209,31,
-159,250,132,192,229,223,250,133,196,251,219,181,184,27,195,170,180,20,116,92,247,217,14,83,45,211,206,80,41,76,148,95,
-222,146,255,199,234,8,79,102,6,222,239,56,61,102,19,80,231,252,16,168,0,81,19,139,143,9,136,127,166,96,237,198,
-40,28,61,96,115,138,201,115,88,22,197,132,144,247,157,49,106,43,113,97,54,197,214,194,53,162,81,81,209,209,173,219,
-143,183,167,210,70,220,170,164,214,155,101,216,175,188,11,34,3,164,57,28,69,94,201,169,17,190,193,199,93,129,184,106,
-75,230,190,49,102,229,127,180,198,17,48,216,183,110,169,143,178,48,180,198,235,137,108,95,5,222,101,69,50,88,228,199,
-176,86,145,88,248,116,29,60,239,165,136,91,74,251,56,220,9,57,16,135,31,7,18,156,68,177,70,80,167,30,82,22,
-146,28,75,7,121,70,251,169,131,254,25,89,106,224,223,50,2,51,36,243,174,155,243,227,161,158,157,79,51,189,3,102,
-163,16,242,207,67,73,40,151,139,195,198,45,199,50,136,161,42,49,30,11,111,31,67,124,148,99,211,54,60,131,89,21,
-72,163,166,20,192,42,50,10,97,30,161,227,55,173,226,0,235,132,79,123,122,118,253,206,73,44,223,234,53,211,164,55,
-135,42,192,101,51,231,62,130,90,8,238,223,74,90,91,139,74,4,133,84,109,174,177,186,177,236,236,175,220,127,73,244,
-175,198,218,152,27,179,112,185,253,39,45,13,186,95,41,206,106,252,55,119,199,77,19,12,0,20,51,74,190,49,181,68,
-61,214,161,57,176,164,102,165,105,198,191,11,201,248,113,225,77,48,129,36,181,59,91,86,7,132,53,228,138,24,226,9,
-47,119,115,25,148,91,4,215,90,75,107,198,52,99,113,127,135,210,70,23,229,15,162,255,253,205,50,14,175,179,11,136,
-247,109,99,54,213,217,78,5,202,62,172,169,86,189,123,231,20,146,63,106,155,192,31,117,176,150,219,108,88,191,232,89,
-183,227,35,85,246,105,38,202,246,11,94,136,35,28,52,52,106,40,56,200,125,78,253,21,46,170,97,188,201,253,79,7,
-146,34,116,15,233,53,254,210,18,45,47,191,196,253,98,70,15,205,157,198,188,109,15,51,78,93,205,104,197,208,103,85,
-176,203,1,42,112,133,138,59,136,117,61,60,84,201,84,190,203,11,247,234,135,70,203,200,238,72,152,64,227,3,84,214,
-9,219,86,174,129,149,103,97,249,16,86,226,120,252,115,209,58,107,247,105,117,199,55,93,208,140,155,8,65,95,201,211,
-81,238,128,101,105,178,189,194,255,116,34,198,100,181,68,179,205,147,193,181,203,34,109,62,11,207,184,95,67,81,99,50,
-244,38,26,240,170,186,203,75,192,201,233,149,63,198,133,207,45,22,204,143,230,47,103,178,133,220,96,24,166,238,169,119,
-243,120,68,103,254,62,70,23,14,74,49,188,231,138,1,1,134,226,27,186,139,201,25,45,198,204,68,190,47,249,214,111,
-176,172,188,37,60,40,133,164,77,24,93,36,129,204,24,252,239,124,65,247,84,190,41,173,204,55,140,7,27,151,41,215,
-19,88,251,219,219,169,108,99,83,235,192,175,67,134,104,175,174,8,31,88,138,177,251,131,78,183,73,254,59,57,217,16,
-247,229,115,77,220,70,98,93,201,193,185,37,114,1,89,61,149,1,174,195,28,243,220,244,68,91,107,144,51,190,246,128,
-46,145,183,207,60,26,242,187,113,248,234,245,172,139,230,64,71,177,203,137,56,8,184,167,54,218,132,79,52,168,176,130,
-152,35,114,34,214,60,214,53,9,177,254,91,21,44,226,190,103,36,141,133,152,195,38,143,166,56,88,239,177,198,155,196,
-123,3,59,200,51,122,169,28,226,139,108,252,206,47,75,90,112,83,153,158,238,2,3,224,183,93,67,37,234,113,51,110,
-210,199,67,189,25,92,188,167,190,38,241,58,176,44,208,66,149,1,114,253,234,99,150,168,57,238,155,167,113,224,230,176,
-130,138,122,112,187,49,254,250,159,33,212,250,237,240,115,144,223,217,123,18,66,155,195,113,104,18,183,31,250,70,66,96,
-203,169,109,194,170,3,27,21,204,173,109,112,192,134,77,203,130,101,115,163,57,63,166,106,18,137,76,244,229,49,3,153,
-151,132,105,230,96,219,42,14,119,208,13,243,229,49,131,242,121,226,48,231,53,182,182,100,10,2,179,7,237,206,23,219,
-39,188,145,195,107,172,69,137,255,54,67,208,28,165,106,159,200,113,207,152,99,105,105,6,135,40,189,147,2,169,139,55,
-193,107,217,223,221,149,219,59,240,30,237,18,252,95,177,81,146,164,246,226,133,180,194,88,15,136,20,1,255,170,227,45,
-154,242,91,229,230,183,179,210,232,200,16,65,184,193,51,180,251,198,213,44,30,140,1,72,225,122,12,253,50,231,124,185,
-43,142,117,129,64,135,111,84,200,35,147,148,74,80,170,79,23,239,231,201,1,194,64,234,216,110,109,107,191,127,231,39,
-163,225,147,4,228,83,98,139,79,226,2,19,14,178,158,126,88,35,28,25,50,56,102,192,172,79,136,205,190,238,44,84,
-1,168,116,72,118,172,225,221,129,116,51,187,186,89,121,60,145,84,175,88,153,129,94,83,173,30,255,40,247,157,29,225,
-62,180,18,72,185,14,195,156,23,191,34,40,138,66,121,83,151,143,117,138,144,21,239,196,200,0,157,204,48,29,47,187,
-225,63,68,115,78,165,182,183,124,255,220,5,237,12,48,71,0,20,250,225,144,218,24,111,96,185,75,11,143,10,20,18,
-82,177,48,75,26,162,137,163,135,137,141,112,223,78,95,54,227,236,225,189,209,183,109,115,225,95,108,123,169,155,96,80,
-101,40,81,40,187,235,72,157,62,110,220,233,166,62,152,56,116,168,162,72,170,94,4,95,60,36,54,170,36,234,137,50,
-214,35,58,79,252,159,247,98,7,254,156,196,138,0,247,49,10,61,80,81,66,61,182,148,225,13,215,176,6,98,219,237,
-43,120,74,104,86,247,149,93,79,15,0,88,103,53,244,202,19,249,200,89,113,72,113,199,127,215,87,60,190,151,193,237,
-255,78,80,170,119,243,149,190,128,209,105,34,126,39,7,231,220,68,245,213,244,19,68,90,64,122,198,122,142,231,252,10,
-143,92,37,135,38,26,72,232,150,185,198,167,45,166,202,197,155,10,113,134,147,36,179,176,59,118,164,10,23,57,122,128,
-89,38,136,5,198,181,26,215,167,153,165,228,69,3,247,2,126,63,44,94,103,166,52,120,202,92,196,209,5,178,64,83,
-100,188,106,31,2,228,228,223,84,167,10,44,141,16,248,49,235,226,107,212,40,123,41,211,118,85,232,247,202,161,165,110,
-0,243,253,127,3,202,228,253,139,121,140,191,36,250,29,117,138,209,12,77,102,168,198,32,110,63,102,69,122,204,246,172,
-178,140,205,30,83,166,207,78,61,235,79,231,17,36,210,33,11,47,217,62,243,80,184,240,146,37,27,70,139,42,250,143,
-22,217,58,57,116,105,125,93,101,166,200,140,214,81,6,233,26,177,98,132,71,117,35,165,150,59,229,95,167,167,253,36,
-148,51,73,220,144,199,63,116,104,230,36,0,184,202,72,218,9,68,38,232,74,18,14,98,33,93,19,245,29,244,23,9,
-235,135,98,33,251,236,129,42,255,199,186,167,68,222,101,186,157,183,190,142,76,35,150,154,130,187,169,92,74,190,244,89,
-91,123,9,25,163,43,3,221,250,59,109,90,4,233,101,109,62,239,59,190,174,102,9,129,98,120,38,240,139,24,118,154,
-129,252,89,251,228,146,158,243,89,38,217,7,44,51,167,200,80,235,201,121,157,208,136,20,174,158,210,10,255,133,63,26,
-159,82,204,28,108,200,134,110,202,91,234,206,216,238,180,14,184,194,163,136,37,153,211,69,185,122,149,42,156,174,169,227,
-138,106,178,27,63,38,133,121,159,200,172,101,206,171,52,65,179,232,185,120,206,65,132,202,172,196,68,3,68,138,235,79,
-72,207,196,123,114,153,27,130,7,138,30,53,184,35,182,213,200,17,88,163,78,142,125,231,241,151,245,97,247,213,78,142,
-162,15,176,113,18,151,221,56,167,85,111,91,0,236,1,84,157,238,244,121,83,124,17,105,193,42,217,114,234,220,189,35,
-208,245,186,255,110,133,244,88,92,28,37,73,22,21,11,14,195,179,1,249,186,35,122,109,222,208,201,11,51,110,219,82,
-157,169,156,219,128,98,191,79,111,145,71,33,130,117,69,159,134,63,80,58,6,154,72,226,5,152,186,100,159,121,160,27,
-61,27,81,253,191,3,197,89,228,108,16,160,183,237,57,88,34,33,199,163,225,41,209,97,251,51,229,204,9,5,227,2,
-70,135,224,252,40,52,59,86,248,160,122,225,241,174,178,43,49,84,101,139,125,45,62,252,87,144,157,148,179,65,158,118,
-103,232,32,214,233,198,238,52,165,50,216,154,15,26,88,69,201,249,7,84,63,113,174,201,7,139,184,136,74,134,55,246,
-64,113,56,7,164,223,37,215,14,216,54,206,225,32,226,58,32,84,227,167,164,29,46,222,92,217,25,100,134,248,42,219,
-138,194,144,239,85,5,2,212,140,176,143,109,203,68,45,228,168,205,91,149,121,31,108,59,202,110,187,151,72,115,167,17,
-136,91,249,83,69,150,238,177,126,22,152,253,102,252,143,249,79,219,111,233,181,154,106,251,40,88,240,171,100,126,227,130,
-182,21,205,203,211,66,165,47,199,223,45,32,177,133,206,155,70,187,221,181,197,140,104,124,101,254,59,208,26,111,37,219,
-247,69,250,25,45,170,139,234,20,47,254,233,16,4,202,237,106,71,253,112,168,191,86,81,228,165,67,56,223,42,110,200,
-247,120,39,67,151,181,113,15,21,95,230,164,176,26,202,28,193,176,114,244,192,223,89,233,208,205,193,167,78,10,106,163,
-163,32,229,84,193,143,173,169,249,210,110,199,234,207,80,4,95,79,225,138,24,21,40,11,158,44,123,251,186,226,213,185,
-73,99,147,69,97,106,58,4,140,221,71,117,251,6,15,224,249,52,184,171,214,92,8,5,129,55,104,63,114,23,195,122,
-192,105,16,163,213,9,239,120,87,78,25,87,156,71,1,162,197,195,150,85,250,242,49,116,69,116,140,20,144,47,142,125,
-98,166,41,29,143,27,255,118,75,98,214,241,112,73,187,225,252,9,86,240,70,57,75,20,27,236,237,230,54,11,245,128,
-234,237,190,127,73,96,3,126,9,221,116,67,252,5,225,229,191,111,245,64,241,24,75,161,39,194,75,33,239,145,85,53,
-0,57,46,232,24,106,131,192,89,238,79,129,120,70,15,196,87,146,63,248,58,95,120,106,75,71,236,212,143,122,60,154,
-15,20,114,153,79,201,54,226,226,30,46,8,77,66,134,69,106,45,79,6,6,39,255,199,3,126,249,7,53,193,58,178,
-126,243,142,30,79,175,72,72,190,118,185,223,116,193,68,116,208,130,6,130,170,223,160,17,64,169,76,221,122,214,201,113,
-46,248,105,124,151,150,219,147,138,153,202,106,105,215,89,93,231,73,161,188,17,203,125,196,186,114,239,12,178,220,2,96,
-151,239,69,39,109,180,41,12,28,161,128,176,122,52,138,142,204,183,230,166,211,110,226,105,53,223,208,16,104,54,69,198,
-194,121,159,250,244,52,175,8,37,191,236,201,87,125,252,55,207,185,234,154,98,249,13,30,19,100,231,169,190,93,228,197,
-47,17,189,153,181,37,144,17,104,180,130,58,20,62,32,193,194,152,190,110,116,196,243,34,51,14,242,106,245,157,224,42,
-119,130,131,86,79,7,5,136,244,174,158,70,192,160,65,62,10,28,177,215,155,79,158,26,28,3,1,249,80,63,213,175,
-64,225,6,152,199,207,83,219,168,162,121,109,48,70,30,40,227,179,47,20,170,144,61,81,209,253,252,130,30,217,145,61,
-151,254,93,73,1,132,68,76,106,162,119,250,252,40,202,228,69,204,63,126,136,66,80,201,120,71,90,6,38,124,47,142,
-50,132,240,211,32,117,148,199,75,110,193,199,236,40,243,198,3,161,135,248,132,85,13,223,176,107,206,60,177,189,182,179,
-201,236,114,203,26,94,82,156,207,85,221,62,100,87,243,232,123,136,210,0,19,71,128,36,10,215,165,92,58,78,193,49,
-248,1,77,72,221,73,255,166,158,9,165,109,142,118,142,212,163,39,210,72,196,8,90,151,179,34,236,208,220,119,246,173,
-229,4,239,78,5,10,49,208,26,169,188,104,165,79,99,206,173,109,11,177,237,181,5,27,70,134,219,75,219,106,250,99,
-39,111,42,211,45,189,94,93,97,184,86,24,5,180,185,239,49,10,11,193,226,190,178,70,0,128,92,58,75,88,76,79,
-54,19,228,68,75,234,10,16,25,49,91,203,140,149,96,193,114,128,106,37,111,14,17,221,179,4,31,141,230,45,103,151,
-137,28,58,184,191,255,251,39,3,180,95,155,227,9,36,11,54,168,164,179,10,87,23,21,177,65,254,137,54,186,192,219,
-166,46,69,170,60,11,200,250,36,244,112,141,130,189,74,159,68,42,108,199,151,93,219,183,87,192,185,165,213,95,132,163,
-191,140,102,149,34,47,123,197,72,221,26,29,6,46,187,186,226,191,107,138,213,77,127,81,237,226,69,168,147,229,186,227,
-68,92,116,65,98,4,50,28,176,115,141,120,104,160,132,79,87,250,47,171,142,130,194,252,39,142,93,193,81,115,122,59,
-117,220,116,173,29,253,178,190,13,11,177,250,51,33,196,156,131,13,175,171,234,218,232,241,156,54,228,154,15,137,170,216,
-124,151,201,67,7,111,103,26,219,154,114,87,190,211,20,190,235,18,188,103,40,17,253,253,83,141,152,6,110,91,43,250,
-108,53,244,227,189,221,104,23,28,34,233,46,199,86,81,226,98,76,204,165,225,41,250,22,169,213,146,16,188,209,95,206,
-209,147,171,174,24,226,122,238,27,112,211,246,224,23,203,246,128,41,109,48,193,27,182,130,124,9,214,126,109,245,167,210,
-209,64,236,61,225,70,100,98,232,68,236,164,140,87,233,23,190,84,8,187,139,179,116,30,115,139,252,113,238,176,173,78,
-254,241,54,134,51,29,236,100,73,151,38,194,85,144,194,28,91,28,195,209,239,125,205,21,14,228,46,118,204,159,113,234,
-67,94,172,57,3,18,42,47,100,17,147,0,160,235,134,143,199,134,229,93,9,103,78,102,248,82,236,47,30,188,226,194,
-45,155,39,207,62,236,96,79,251,38,183,51,156,182,168,129,251,143,214,168,46,178,82,91,79,218,103,234,96,52,179,134,
-222,249,58,65,148,225,24,149,57,102,20,99,157,2,63,112,79,169,123,233,179,12,43,135,10,133,53,38,228,91,231,41,
-235,2,185,34,211,190,124,123,207,170,30,1,188,93,21,40,169,129,3,175,253,229,240,185,247,232,129,227,36,232,214,3,
-252,202,127,72,26,88,117,210,134,96,179,146,82,86,49,219,174,195,219,224,208,40,73,144,59,103,5,253,82,118,250,93,
-87,25,22,140,164,27,181,99,229,195,55,33,15,109,92,78,203,212,117,159,149,72,182,43,209,95,150,110,155,2,44,39,
-104,16,182,197,207,48,65,200,163,206,23,175,241,113,149,58,86,230,58,40,137,20,1,71,178,82,100,53,35,162,244,70,
-38,95,80,187,135,147,208,72,195,137,156,255,252,115,108,245,47,63,237,252,24,213,30,99,12,78,134,53,161,7,44,68,
-236,71,28,160,17,84,39,100,63,107,227,107,218,36,40,138,141,116,22,150,177,46,64,27,48,63,42,19,12,175,120,47,
-64,94,101,107,183,157,120,83,88,216,181,211,213,115,216,215,20,113,222,95,49,233,20,38,162,210,1,51,15,25,52,254,
-242,171,158,39,5,21,132,18,63,172,29,98,184,71,114,49,2,162,150,223,219,14,43,157,85,216,0,74,223,26,245,223,
-184,11,140,208,154,165,64,149,149,36,30,181,86,128,25,15,1,100,172,217,84,92,220,72,205,172,193,149,184,212,146,137,
-164,135,28,26,119,83,55,50,251,117,191,84,211,38,152,191,110,124,5,191,35,208,58,129,140,66,140,172,160,190,70,82,
-222,118,108,35,12,62,179,238,8,201,56,91,186,227,241,211,106,187,100,212,173,240,212,43,184,71,240,204,123,31,12,12,
-227,8,65,100,189,126,203,198,144,88,200,195,16,31,215,81,58,125,47,170,198,4,154,159,174,143,248,190,159,73,14,136,
-133,34,54,229,82,140,173,150,12,11,135,191,17,7,43,174,128,38,213,56,130,133,92,32,137,142,145,28,237,241,63,241,
-91,203,103,229,47,108,178,104,76,175,10,28,245,32,8,37,210,50,151,219,8,232,135,0,51,137,125,178,31,73,138,50,
-68,235,102,98,234,44,8,112,127,48,123,244,138,175,2,133,14,100,244,235,210,171,46,247,242,52,71,65,144,143,194,208,
-19,253,117,200,156,233,10,13,57,10,197,181,140,82,23,96,78,62,222,134,200,82,198,214,215,219,211,60,196,191,99,53,
-60,226,150,25,221,102,119,116,48,58,177,213,8,157,129,33,169,78,13,122,234,148,154,71,242,74,72,250,27,242,57,11,
-108,51,178,132,164,20,116,242,72,170,210,248,170,5,22,248,20,241,147,231,238,185,218,161,232,84,234,163,243,45,6,236,
-9,112,144,227,150,213,46,53,131,159,174,79,237,54,146,222,134,200,82,198,214,215,219,211,60,196,191,99,53,60,226,150,
-25,221,102,119,127,158,120,89,178,75,34,187,141,28,169,76,159,152,42,147,215,235,162,209,129,67,131,230,190,242,23,55,
-248,76,64,202,147,238,100,191,54,64,128,190,21,121,160,170,139,108,206,255,253,127,179,144,32,189,14,169,229,255,242,40,
-130,172,13,208,179,127,255,239,99,143,69,54,176,58,86,159,217,222,247,2,168,139,124,23,204,149,82,95,45,228,249,94,
-218,127,193,117,15,74,236,255,59,46,173,99,59,243,76,31,186,205,214,219,206,89,118,179,221,121,232,210,81,208,158,114,
-170,156,160,45,57,204,205,131,205,83,255,226,233,138,108,46,44,249,76,4,15,213,199,157,162,5,237,244,245,227,204,228,
-75,111,9,79,86,228,111,245,216,84,57,145,233,157,35,196,215,195,180,197,205,101,26,216,129,70,79,156,239,14,59,46,
-147,70,122,26,151,197,193,228,17,217,46,21,174,167,71,129,112,169,143,108,178,83,48,135,171,15,54,16,148,114,111,181,
-218,202,1,252,79,111,189,107,205,84,50,206,219,181,168,72,152,91,30,172,135,30,196,189,235,144,99,108,197,122,200,11,
-227,109,211,119,180,47,26,56,225,53,51,190,107,185,95,131,141,28,177,128,111,211,148,182,11,6,241,64,242,121,200,97,
-194,214,149,110,141,77,164,182,194,230,231,0,238,3,165,208,29,183,62,104,71,112,17,61,114,6,49,221,218,49,89,184,
-185,55,237,111,149,177,211,13,58,230,75,103,245,102,99,14,143,91,16,103,136,135,123,48,191,81,228,203,48,116,155,246,
-233,66,55,174,147,123,199,115,28,233,211,180,188,221,177,40,115,168,222,135,61,23,49,110,123,57,69,32,94,184,9,21,
-245,19,24,238,93,10,246,122,134,0,70,98,7,220,42,99,51,72,135,27,58,128,177,225,74,56,99,176,13,144,51,93,
-219,233,207,43,82,165,112,49,131,221,235,178,143,204,115,224,25,86,235,250,144,230,164,40,60,108,41,60,48,208,80,249,
-57,48,24,87,67,210,30,54,154,220,133,212,115,131,7,115,249,2,149,170,106,168,166,42,95,166,194,74,25,151,12,93,
-57,178,80,19,233,70,30,32,135,240,233,242,81,249,167,11,94,103,193,222,185,171,7,32,129,164,114,127,251,13,168,235,
-191,124,56,13,197,181,198,80,184,68,243,252,255,246,145,192,212,44,62,45,124,132,217,60,243,217,161,110,101,41,89,98,
-10,234,44,78,231,80,82,104,93,189,104,156,130,83,100,142,101,173,247,137,242,24,83,199,216,237,91,169,31,222,173,61,
-184,119,71,202,163,162,22,24,245,137,178,244,108,65,196,80,159,131,21,42,210,13,237,66,64,28,169,63,209,248,83,198,
-242,84,192,254,179,81,226,139,179,219,141,94,90,26,205,203,228,89,40,179,71,159,149,39,93,142,217,135,115,24,123,48,
-112,19,150,235,240,49,203,172,249,2,160,162,0,156,13,30,156,53,186,111,121,16,173,162,225,248,43,72,236,141,183,136,
-0,20,227,22,132,5,135,148,251,149,132,114,252,4,10,141,154,46,48,198,95,17,226,228,85,57,105,135,237,125,238,167,
-9,253,11,219,20,146,57,178,46,35,44,102,202,83,89,7,71,149,24,11,122,170,119,240,22,69,125,71,134,225,198,248,
-157,119,22,171,246,8,145,4,3,221,51,125,205,231,234,223,132,254,248,225,235,219,210,181,53,135,242,78,157,236,15,222,
-109,65,187,30,127,20,56,255,75,221,194,106,244,224,101,100,205,100,146,103,95,121,43,94,12,148,145,8,98,209,254,60,
-103,102,57,21,132,71,232,248,71,59,212,44,3,205,168,143,172,35,251,29,37,16,75,192,35,147,22,216,255,26,95,169,
-1,136,75,126,98,104,183,91,167,76,134,49,31,90,240,233,136,95,102,208,141,59,137,160,230,63,10,239,111,174,88,134,
-210,229,183,243,41,218,28,13,125,121,176,131,218,130,40,87,233,154,88,192,158,88,106,23,54,118,242,126,252,101,190,81,
-140,85,76,95,53,250,178,219,112,20,95,224,140,96,89,93,135,17,21,146,28,239,74,23,21,175,91,94,225,77,112,44,
-147,253,7,140,209,171,199,82,241,85,117,215,128,206,199,191,65,119,33,54,40,158,92,21,135,88,111,246,228,157,183,145,
-209,154,236,249,123,97,4,247,171,16,156,1,2,213,50,177,183,167,43,169,253,150,197,161,130,212,222,98,248,228,178,42,
-130,252,108,212,72,228,5,61,34,58,82,156,156,103,220,25,217,211,208,79,223,97,132,220,235,37,86,157,3,84,148,174,
-173,121,89,54,154,193,192,162,182,205,79,222,253,9,227,156,179,119,83,35,4,8,60,36,177,24,54,114,164,14,229,25,
-26,196,192,32,228,144,1,157,89,67,253,211,205,87,153,161,196,220,122,72,59,72,228,18,245,218,4,20,41,79,28,236,
-79,214,108,9,60,167,36,96,32,163,22,163,164,201,7,135,173,122,142,25,229,129,130,203,52,105,181,104,67,175,55,78,
-164,166,111,135,169,147,66,164,243,107,115,220,163,241,255,154,133,58,93,43,201,156,214,199,76,48,13,155,189,42,49,17,
-133,108,124,115,156,105,219,113,18,245,142,217,247,10,226,80,193,70,81,195,35,86,36,149,97,177,15,77,2,55,2,173,
-142,47,42,207,172,213,187,48,223,144,157,41,149,58,180,159,15,133,232,171,241,226,126,111,81,122,181,238,58,146,51,98,
-197,21,46,48,67,194,221,149,153,18,143,85,181,39,140,161,183,21,173,55,13,157,250,82,9,91,235,149,136,21,69,68,
-4,197,252,5,91,195,219,230,193,1,192,51,182,141,145,186,137,109,146,250,147,206,163,146,12,169,158,2,52,159,147,29,
-132,190,79,175,183,77,41,225,73,223,139,67,188,194,225,25,65,93,125,131,234,58,115,130,233,115,90,209,74,68,174,149,
-78,158,232,199,228,192,139,139,159,161,22,243,88,30,189,62,196,7,30,119,176,242,196,76,1,8,142,222,20,174,32,174,
-49,12,164,94,200,199,165,123,111,213,200,25,21,181,18,33,161,147,34,6,227,7,172,168,133,216,202,133,95,230,38,227,
-204,127,77,61,101,234,22,128,46,130,189,235,23,100,71,3,128,158,108,12,97,95,132,24,234,97,113,72,64,145,62,171,
-127,134,184,116,211,7,56,183,233,251,43,154,236,92,134,160,30,188,202,149,22,153,207,55,190,218,116,44,247,16,167,113,
-105,172,176,218,255,46,178,46,151,233,208,232,17,231,29,198,74,244,219,194,254,24,108,17,252,201,137,25,193,182,137,1,
-164,10,133,51,130,108,75,70,21,24,194,145,36,4,122,38,144,225,57,134,127,139,176,235,10,117,134,103,8,50,161,152,
-160,148,229,253,168,61,118,110,93,97,75,126,159,111,32,222,221,186,237,248,42,215,59,127,29,33,103,41,156,24,106,181,
-205,75,108,46,155,91,172,172,52,81,97,106,47,32,254,78,207,73,243,218,212,198,86,22,134,244,226,254,123,176,163,218,
-62,40,152,224,183,221,2,232,206,179,6,74,122,196,225,109,18,80,238,118,137,227,183,87,78,212,35,148,83,50,253,190,
-242,184,245,173,7,163,37,173,94,241,5,202,41,232,219,245,74,3,21,194,118,72,237,85,189,4,189,151,233,153,237,216,
-183,100,52,206,106,189,89,191,79,199,255,27,192,168,152,249,98,166,196,62,147,223,63,130,206,72,213,55,134,88,27,109,
-52,147,184,132,233,127,223,176,225,159,22,114,105,126,171,86,72,211,138,208,49,129,34,61,50,146,97,37,174,3,179,53,
-109,177,40,3,145,66,207,61,95,237,158,52,86,71,103,87,186,164,203,222,46,227,130,185,141,112,218,164,89,233,118,230,
-172,164,107,236,159,226,41,60,209,146,73,64,110,6,207,204,203,197,40,61,60,1,139,235,9,124,3,179,88,255,109,114,
-124,0,79,152,28,9,29,205,13,241,229,235,52,220,62,164,11,245,18,178,139,27,131,53,229,145,163,240,174,6,223,244,
-79,184,29,54,84,126,5,106,172,72,111,148,168,249,38,169,35,3,39,57,192,245,187,55,242,63,31,202,12,37,7,171,
-71,117,221,33,239,104,103,206,118,116,82,161,160,245,217,251,110,120,182,151,3,60,146,16,212,84,213,83,143,32,142,161,
-196,11,224,231,22,155,114,14,112,60,212,199,79,146,104,22,238,139,89,38,238,51,176,182,176,212,108,186,139,143,44,97,
-223,26,234,89,38,49,184,92,191,66,63,3,138,162,252,61,55,223,32,210,57,245,227,195,42,52,231,58,59,226,122,213,
-107,72,38,200,20,67,174,47,24,121,210,107,251,230,174,214,32,170,71,57,180,214,214,61,238,249,102,138,78,157,111,222,
-211,107,167,165,152,146,168,37,13,57,79,5,201,110,97,176,251,72,91,153,107,247,176,131,11,225,4,161,6,221,203,7,
-204,218,116,50,235,69,218,208,149,214,73,149,78,249,100,100,56,8,93,173,99,205,229,182,5,245,131,59,66,183,155,198,
-117,227,101,93,49,135,120,140,190,182,115,195,250,92,182,194,111,244,212,29,167,205,227,218,127,71,85,43,89,48,241,242,
-109,98,182,153,132,75,32,44,45,69,62,185,62,219,44,253,164,145,164,218,86,162,102,228,163,45,180,197,251,167,250,11,
-234,117,85,113,211,157,175,72,168,34,114,207,193,85,242,26,242,35,169,210,43,119,186,148,129,22,105,164,41,181,172,30,
-56,115,10,125,201,48,9,199,105,2,59,30,143,151,156,16,206,53,37,48,116,162,236,183,58,30,34,133,95,102,36,123,
-165,216,236,163,193,69,187,255,253,127,179,144,32,189,14,169,229,255,242,40,130,172,13,208,179,127,255,239,99,143,69,54,
-176,58,86,159,217,222,247,2,168,139,124,23,204,149,82,95,45,228,249,94,218,127,193,117,15,74,236,255,59,46,173,99,
-59,243,76,31,186,205,214,219,206,89,118,179,221,121,232,210,81,208,158,114,170,156,160,45,57,204,205,131,205,83,255,226,
-233,138,108,46,44,249,76,4,15,213,199,157,162,5,237,244,245,227,204,228,75,111,9,79,86,228,111,245,216,84,57,145,
-233,157,35,196,215,195,180,197,205,101,26,216,129,70,79,156,239,14,59,46,147,70,122,26,151,197,193,228,17,217,46,21,
-174,167,71,129,112,169,143,108,178,83,48,135,171,15,54,16,148,114,111,181,218,202,1,252,79,111,189,107,205,84,50,206,
-219,181,168,72,152,91,30,172,135,30,196,189,235,144,99,108,197,122,200,11,227,109,211,119,180,47,26,56,225,53,51,190,
-107,185,95,131,141,28,177,128,111,211,148,182,11,6,241,64,242,121,200,97,194,214,149,110,141,77,164,182,194,230,231,0,
-238,3,165,208,29,183,62,104,71,112,17,61,114,6,49,221,218,49,89,184,185,55,237,111,149,177,211,13,58,230,75,103,
-245,102,99,14,143,91,16,103,136,135,123,48,191,81,228,203,48,116,155,246,233,66,55,174,147,123,199,115,28,233,211,180,
-188,221,177,40,115,168,222,135,61,23,49,110,123,57,69,32,94,184,9,21,245,19,24,238,93,10,246,122,134,0,70,98,
-7,220,42,99,51,72,135,27,58,128,177,225,74,56,99,176,13,144,51,93,219,233,207,43,82,165,112,49,131,221,235,178,
-143,204,115,224,25,86,235,250,144,230,164,40,60,108,41,60,48,208,80,249,57,48,24,87,67,210,30,54,154,220,133,212,
-115,131,7,115,249,2,149,170,106,168,166,42,95,166,194,74,25,151,12,93,57,178,80,19,233,70,30,32,135,240,233,242,
-81,249,167,11,94,103,193,222,185,171,7,32,129,164,114,127,251,13,168,235,191,124,56,13,197,181,198,80,184,68,243,252,
-255,246,145,192,212,44,62,45,124,132,217,60,243,217,161,110,101,41,89,98,10,234,44,78,231,80,82,104,93,189,104,156,
-130,83,100,142,101,173,247,137,242,24,83,199,216,237,91,169,31,222,173,61,184,119,71,202,163,162,22,24,245,137,178,244,
-108,65,196,80,159,131,21,42,210,13,237,66,64,28,169,63,209,248,83,198,242,84,192,254,179,81,226,139,179,219,141,94,
-90,26,205,203,228,89,40,179,71,159,149,39,93,142,217,135,115,24,123,48,112,19,150,235,240,49,203,172,249,2,160,162,
-0,156,13,30,156,53,186,111,121,16,173,162,225,248,43,72,236,141,183,136,0,20,227,22,132,5,135,148,251,149,132,114,
-252,4,10,141,154,46,48,198,95,17,226,228,85,57,105,135,237,125,238,167,9,253,11,219,20,146,57,178,46,35,44,102,
-202,83,89,7,71,149,24,11,122,170,119,240,22,69,125,71,134,225,198,248,157,119,22,171,246,8,145,4,3,221,51,125,
-205,231,234,223,132,254,248,225,235,219,210,181,53,135,242,78,157,236,15,222,109,65,187,30,127,20,56,255,75,221,194,106,
-244,224,101,100,205,100,146,103,95,121,43,94,12,148,145,8,98,209,254,60,103,102,57,21,132,71,232,248,71,59,212,44,
-3,205,168,143,172,35,251,29,37,16,75,192,35,147,22,216,255,26,95,169,1,136,75,126,98,104,183,91,167,76,134,49,
-31,90,240,233,136,95,102,208,141,59,137,160,230,63,10,239,111,174,88,134,210,229,183,243,41,218,28,13,125,121,176,131,
-218,130,40,87,233,154,88,192,158,88,106,23,54,118,242,126,252,101,190,81,140,85,76,95,53,250,178,219,112,20,95,224,
-140,96,89,93,135,17,21,146,28,239,74,23,21,175,91,94,225,77,112,44,147,253,7,140,209,171,199,82,241,85,117,215,
-128,206,199,191,65,119,33,54,217,92,3,171,168,64,124,228,74,16,107,43,240,147,16,50,100,62,164,97,246,219,67,110,
-92,203,3,153,208,124,87,35,142,61,137,186,39,51,217,116,215,151,150,51,243,68,80,9,203,221,7,74,64,236,141,118,
-248,232,149,60,32,98,47,180,24,133,30,43,205,167,149,200,80,131,18,41,184,15,134,51,78,255,215,49,197,158,172,165,
-194,174,139,220,53,145,133,162,110,8,118,143,30,185,92,231,222,153,209,73,16,12,106,229,215,182,53,247,44,108,74,93,
-128,249,2,244,9,247,127,88,106,65,174,213,41,194,241,105,166,95,145,153,128,116,218,146,217,172,157,204,249,174,248,209,
-79,4,23,222,241,105,218,44,19,182,178,205,66,28,166,159,13,72,70,226,150,120,134,12,186,131,34,27,22,226,90,73,
-197,42,198,60,192,23,113,12,4,20,113,45,240,118,207,145,110,75,117,84,222,29,191,42,207,61,145,152,51,203,62,221,
-242,178,227,132,116,151,89,122,217,90,5,155,251,113,220,138,144,65,216,88,72,207,228,242,217,118,119,65,226,214,238,129,
-191,254,211,223,245,101,81,74,115,249,162,49,36,12,134,21,29,44,222,12,162,189,215,181,189,195,61,18,192,41,52,6,
-155,216,50,150,71,229,135,158,136,10,221,244,73,199,66,243,173,163,207,29,81,136,196,58,84,165,24,157,10,216,151,111,
-105,28,39,47,217,159,91,93,38,229,78,132,198,75,159,107,141,243,81,171,102,156,174,29,28,159,217,235,249,1,147,5,
-198,18,19,100,7,50,152,184,169,16,7,128,225,99,253,119,240,160,93,214,235,106,197,169,20,44,129,205,61,71,191,183,
-161,43,80,168,49,90,89,52,241,48,162,17,133,43,18,57,87,207,132,129,27,195,222,29,218,121,187,206,61,190,63,136,
-107,95,156,185,148,58,29,83,78,125,105,128,40,39,202,186,42,208,101,212,37,92,169,164,69,204,85,85,117,8,173,156,
-218,23,144,4,212,14,9,186,27,62,30,180,74,6,94,180,129,12,185,209,213,20,196,141,245,179,15,118,235,90,37,71,
-230,176,181,54,162,212,61,144,28,235,230,96,3,255,236,222,235,149,46,214,82,120,211,152,154,25,131,160,229,81,12,87,
-61,92,10,36,217,194,28,21,207,185,244,26,40,140,2,227,203,203,236,225,183,46,0,12,141,65,221,247,163,50,168,59,
-16,198,187,43,32,73,233,183,83,82,88,100,174,230,98,181,138,14,19,37,8,173,92,207,245,220,252,169,249,161,62,248,
-83,247,58,78,193,194,78,92,55,97,183,16,192,112,92,13,119,4,87,250,248,243,123,141,81,71,246,4,22,201,133,29,
-8,212,245,209,227,104,14,62,45,38,121,107,196,24,253,14,145,150,74,105,167,130,163,149,27,192,85,5,137,215,121,102,
-157,144,213,226,225,224,121,51,194,210,214,155,114,72,251,231,40,62,229,221,84,127,184,22,57,152,120,216,81,27,125,160,
-231,130,58,241,78,183,115,231,165,104,64,195,217,58,216,123,125,86,162,46,68,105,191,99,133,164,190,28,125,206,177,28,
-30,153,180,107,21,240,221,65,72,239,172,28,102,132,95,138,67,219,217,38,176,12,177,12,236,34,51,65,158,243,254,202,
-240,1,228,50,99,146,35,83,85,120,22,198,181,217,161,164,37,148,12,46,107,101,5,189,130,212,120,58,68,219,254,136,
-84,255,2,123,255,126,131,16,244,23,101,22,228,109,173,196,96,246,17,230,157,183,192,248,132,176,53,132,158,59,222,19,
-26,28,209,122,137,164,191,28,13,110,107,7,175,135,120,57,182,112,160,55,163,43,221,71,155,170,48,142,203,4,19,215,
-53,215,202,209,249,25,120,183,205,92,227,147,11,166,4,32,90,209,89,63,26,187,221,237,247,200,223,7,70,128,96,189,
-213,156,175,107,245,194,11,7,135,223,82,53,148,85,1,115,47,46,252,166,175,222,38,213,27,103,171,226,158,221,24,24,
-87,117,247,40,108,38,212,212,174,90,205,52,215,181,148,153,187,244,135,227,162,147,53,9,126,17,10,222,195,208,156,248,
-215,88,140,241,80,80,114,109,102,150,100,73,219,222,214,213,67,226,73,96,35,53,182,154,195,182,151,214,239,43,241,242,
-112,3,9,38,21,97,195,159,156,95,153,119,134,206,72,203,186,164,84,202,212,201,13,8,128,116,123,71,4,238,64,52,
-186,91,31,249,138,173,241,8,17,74,67,17,241,196,252,251,252,254,193,191,202,208,222,226,65,183,75,43,201,174,253,134,
-178,152,192,156,252,167,51,30,210,239,226,103,235,145,204,6,70,51,147,146,135,195,131,40,208,43,178,228,100,219,73,107,
-249,154,140,214,249,236,242,117,165,29,49,243,244,103,236,178,219,232,117,255,127,97,163,237,3,210,125,77,255,142,167,130,
-112,0,122,249,91,82,54,28,2,13,221,242,168,233,85,125,105,85,183,136,19,24,33,34,37,63,215,220,75,47,35,107,
-157,29,231,98,119,179,26,60,110,89,222,245,246,163,172,202,168,61,34,64,158,69,68,60,151,255,252,212,154,194,188,207,
-169,226,51,154,143,84,170,119,69,199,93,117,106,113,24,100,63,197,215,127,209,163,145,174,184,204,89,213,72,120,174,28,
-187,156,159,147,90,220,128,178,13,154,18,39,42,114,100,66,132,105,112,163,72,183,217,224,66,80,73,12,252,251,161,78,
-238,21,195,162,92,182,8,33,123,39,102,197,118,135,226,59,207,190,39,180,121,227,217,189,112,220,181,175,155,106,32,208,
-1,129,112,176,227,184,249,236,145,155,28,77,41,48,153,50,223,223,200,150,149,194,94,112,219,10,43,120,220,151,118,177,
-118,93,228,92,189,138,247,246,225,32,61,85,149,252,15,50,165,160,204,197,0,243,101,101,34,102,50,190,226,94,63,251,
-164,109,165,92,237,209,64,175,230,93,60,166,123,92,228,33,79,58,204,232,156,19,122,28,109,110,103,64,135,198,189,248,
-189,241,40,155,61,64,65,10,170,182,73,197,134,61,215,82,48,7,49,232,242,4,82,91,223,236,25,16,217,65,230,123,
-108,79,54,47,147,2,127,90,242,215,225,177,81,135,241,143,240,113,138,187,169,112,31,113,98,187,70,70,211,39,111,220,
-129,98,74,130,67,92,218,103,241,18,71,164,39,103,189,214,195,169,43,28,179,190,44,174,18,117,168,78,96,201,252,153,
-154,102,104,228,24,31,237,168,25,231,250,34,62,151,168,234,2,215,107,227,37,73,116,173,184,131,200,70,35,129,23,117,
-113,122,216,36,135,75,205,242,83,99,73,90,30,192,124,184,24,33,148,187,124,177,91,65,90,46,41,81,66,170,141,173,
-48,67,64,5,210,239,0,125,145,175,85,88,20,72,224,185,94,160,216,156,224,44,190,105,144,118,214,13,232,184,94,249,
-27,226,149,117,168,177,117,169,43,229,194,102,8,101,232,153,102,144,87,80,192,134,86,59,73,50,202,109,28,134,198,136,
-136,85,151,176,205,173,38,80,74,166,124,83,171,210,233,100,89,25,216,53,30,33,86,83,28,227,76,62,197,201,147,122,
-34,252,181,34,163,42,163,35,91,248,211,11,39,182,100,154,105,146,69,187,140,247,226,134,22,119,251,94,26,94,230,242,
-128,248,43,109,41,169,27,26,34,244,231,221,149,20,64,108,246,139,168,89,56,73,237,240,21,69,73,216,96,129,221,62,
-96,63,248,64,36,153,154,109,233,39,240,109,160,144,64,143,255,253,122,159,231,118,235,50,107,92,178,122,242,44,141,248,
-247,32,38,184,12,86,130,130,103,23,219,16,69,120,30,242,121,74,190,156,80,241,41,105,116,26,48,238,120,16,75,38,
-206,55,15,71,63,132,57,86,132,41,47,196,147,41,139,59,63,147,7,183,171,168,172,238,98,84,154,33,82,97,124,31,
-165,161,102,19,3,167,1,15,236,109,219,128,231,191,91,32,218,244,59,53,75,70,79,89,219,231,29,0,244,202,200,67,
-92,255,185,220,144,17,224,191,196,42,238,103,179,115,130,242,186,117,77,207,194,51,183,147,18,239,220,220,133,227,171,81,
-3,127,211,32,210,43,230,30,196,67,247,158,49,108,39,109,209,29,74,28,136,55,251,62,181,230,224,166,180,72,118,6,
-7,149,0,119,179,162,31,121,177,232,226,141,157,77,53,8,147,169,96,171,25,69,171,209,188,190,140,116,225,195,72,218,
-95,197,51,67,224,240,5,146,112,132,176,64,15,250,254,249,246,111,66,99,40,224,220,5,181,121,166,248,210,243,72,214,
-116,246,17,121,220,115,62,191,44,232,171,104,247,104,138,201,35,14,101,131,90,130,152,108,62,141,55,38,230,209,17,151,
-166,13,188,25,131,129,107,187,84,121,253,89,34,212,65,155,74,190,165,225,248,84,5,133,5,224,57,32,146,118,104,246,
-24,206,100,226,196,99,131,125,19,187,48,89,255,232,200,244,225,116,132,11,20,52,155,117,221,68,92,239,65,30,205,63,
-166,166,7,103,254,74,216,55,57,246,114,29,249,157,82,254,130,6,151,145,123,34,64,174,113,31,157,198,251,20,134,172,
-86,196,239,26,111,56,169,246,236,131,128,139,89,147,147,225,175,28,7,192,189,161,235,15,73,143,43,5,191,12,36,178,
-189,239,115,96,11,241,245,250,187,161,37,232,106,80,50,40,135,119,222,30,103,99,169,107,237,187,81,202,26,213,71,183,
-120,219,104,187,80,185,142,99,181,45,32,0,18,240,170,175,88,95,202,4,246,121,169,126,73,114,205,176,53,63,8,148,
-253,157,14,64,140,194,19,235,117,245,83,97,10,57,72,52,249,247,155,2,196,203,143,177,51,163,182,215,75,122,249,189,
-117,3,213,118,72,155,84,243,110,39,215,105,19,202,233,87,61,245,236,17,187,151,58,148,195,102,213,35,198,97,113,140,
-29,19,60,84,98,218,190,97,180,12,14,28,59,124,30,108,91,128,77,242,188,143,97,142,184,123,94,56,95,255,201,64,
-100,142,177,185,203,229,140,86,169,191,210,161,41,216,192,41,223,219,154,162,216,174,99,10,159,243,78,142,122,96,77,157,
-100,42,16,125,51,238,192,239,138,128,248,202,190,97,128,25,196,236,53,28,216,203,92,212,96,124,59,119,89,133,179,81,
-239,125,56,139,176,188,32,86,101,88,143,240,190,205,136,43,171,188,93,53,122,181,41,7,124,56,230,99,33,13,56,178,
-195,235,52,192,59,72,211,148,147,189,246,78,245,94,69,104,151,47,227,7,56,143,46,138,211,235,123,231,203,97,107,144,
-171,157,123,228,28,227,42,86,222,146,98,18,192,60,205,23,166,191,126,51,93,203,210,103,158,171,15,186,137,203,29,219,
-173,238,135,232,187,147,153,174,2,217,252,192,147,168,141,56,150,91,8,161,183,97,211,188,251,159,16,68,20,155,196,86,
-167,213,62,191,147,170,240,44,188,209,221,38,78,211,97,172,120,76,100,133,195,61,147,62,167,142,246,206,154,25,79,55,
-196,188,234,113,13,121,133,57,228,253,11,4,103,103,63,88,76,197,91,102,40,62,121,69,194,249,97,204,232,161,138,156,
-114,220,108,57,117,236,133,69,133,78,211,241,62,175,102,49,172,99,90,191,46,108,18,120,18,79,250,204,158,180,80,173,
-99,216,36,208,192,7,1,114,118,31,94,141,65,199,211,169,54,144,109,23,16,100,210,190,18,97,4,3,112,225,96,11,
-222,66,174,164,179,180,178,168,206,202,153,162,92,99,253,138,1,187,25,227,43,209,254,17,241,111,124,211,135,161,10,159,
-23,169,177,147,6,59,10,196,218,15,133,198,235,150,111,41,90,204,105,11,199,184,31,245,225,51,211,47,59,95,146,22,
-186,235,151,63,31,228,2,93,88,143,130,136,107,162,68,43,95,98,254,17,204,201,216,41,179,36,84,245,217,206,145,93,
-240,244,12,209,43,178,126,48,48,110,53,44,4,201,33,150,134,185,10,193,26,64,115,6,169,252,178,194,38,163,138,32,
-128,222,34,97,209,250,78,251,209,153,110,7,45,20,12,136,193,134,253,139,51,164,123,136,43,92,210,145,221,206,11,186,
-22,224,68,119,43,240,25,40,109,95,30,160,180,20,175,198,1,50,37,66,196,173,254,91,229,18,165,161,100,158,83,106,
-38,239,239,191,199,29,205,107,255,231,153,0,16,21,40,44,165,21,40,234,38,153,24,152,232,210,0,15,88,205,155,27,
-173,105,201,223,251,62,33,174,9,211,112,52,28,75,252,15,242,185,119,145,133,251,128,120,232,217,195,94,197,80,26,35,
-170,142,122,251,221,188,203,136,62,34,52,35,18,50,195,19,183,212,209,26,27,65,60,75,248,90,90,117,143,250,0,230,
-218,210,94,189,171,227,3,242,43,96,221,56,94,196,73,224,2,113,86,97,74,142,247,117,250,8,195,51,59,192,194,32,
-2,69,71,96,36,37,73,116,158,199,66,68,45,91,162,48,74,151,252,115,209,50,123,100,99,50,163,166,253,63,165,219,
-37,60,118,171,193,33,7,108,137,112,34,10,182,101,61,55,217,253,59,237,178,97,7,124,54,73,106,103,98,177,134,231,
-120,32,67,83,34,24,154,112,7,115,43,120,83,70,228,209,241,34,178,229,67,93,51,160,183,224,174,174,115,248,36,64,
-13,248,149,223,226,171,160,141,219,149,38,191,141,33,147,43,22,208,162,57,226,171,113,65,249,34,183,39,127,133,92,226,
-199,186,56,49,240,40,184,66,2,23,74,227,212,148,157,15,22,249,219,213,130,159,93,86,165,160,48,244,90,33,122,230,
-69,210,239,113,99,181,148,82,197,136,186,98,102,9,157,13,57,21,220,152,154,176,50,44,220,95,240,26,79,94,27,197,
-255,246,180,52,81,41,214,89,35,187,66,195,121,158,63,99,11,188,107,84,118,158,166,39,104,208,180,205,104,205,220,254,
-83,170,47,192,56,253,18,99,197,220,47,192,216,38,53,139,189,25,160,47,219,186,192,126,3,122,222,111,80,105,169,18,
-43,194,0,175,57,40,16,95,98,122,178,181,97,89,235,172,157,96,193,134,86,79,103,49,81,117,227,90,198,159,25,213,
-5,157,149,240,180,150,149,225,16,193,185,177,68,132,220,237,230,253,198,132,207,250,52,71,170,237,135,103,163,215,183,244,
-37,72,166,175,112,61,104,178,58,251,101,120,213,30,63,12,77,99,96,185,236,75,50,137,144,47,114,109,101,104,181,168,
-89,80,242,145,48,70,182,153,163,189,193,232,197,38,165,228,98,239,190,101,177,191,97,232,244,238,79,249,113,197,48,77,
-144,98,7,116,183,123,117,221,155,249,196,42,38,179,12,139,159,198,60,11,155,245,253,161,68,76,18,188,187,88,23,238,
-99,91,38,64,244,100,53,67,212,36,247,146,143,113,86,249,35,180,57,51,207,118,86,162,19,191,153,181,193,212,30,43,
-226,239,11,43,103,203,189,151,176,47,220,244,35,123,137,89,118,25,83,146,69,108,51,228,13,121,131,133,48,34,11,5,
-179,74,69,12,66,65,91,135,99,134,64,210,250,179,92,222,65,95,169,106,172,232,249,218,157,212,30,67,244,25,43,131,
-229,225,5,221,124,90,125,119,162,132,204,58,45,250,96,197,24,4,14,234,186,69,5,186,103,138,44,115,254,77,10,73,
-182,110,100,103,254,186,226,80,162,61,22,117,223,151,69,28,60,165,88,208,158,44,44,83,87,65,53,32,88,53,95,117,
-219,80,114,184,83,109,29,63,254,57,121,22,111,183,36,181,46,31,225,246,45,59,170,22,207,140,85,109,255,253,244,208,
-241,109,153,204,56,147,48,81,139,218,62,126,209,32,168,215,249,158,54,124,85,191,48,36,150,198,163,133,79,242,191,122,
-166,186,93,199,213,66,58,29,214,65,46,60,80,162,111,208,187,212,11,219,94,85,151,24,27,200,170,87,12,30,44,13,
-248,56,234,216,206,9,19,53,84,98,120,174,111,252,154,154,111,180,152,157,82,21,25,219,245,117,184,5,212,184,88,192,
-169,2,51,95,195,92,158,109,193,52,82,169,111,40,6,134,65,39,169,8,48,210,73,7,161,225,239,241,61,214,78,70,
-185,123,153,241,22,130,156,182,165,67,123,30,237,2,81,113,244,20,160,114,241,104,31,44,189,233,121,114,4,79,95,130,
-0,65,136,170,134,146,176,242,34,211,219,155,178,154,189,84,174,35,38,199,153,250,87,205,168,229,100,165,54,59,65,22,
-140,223,144,196,1,223,164,10,99,200,119,193,9,239,151,54,34,151,205,107,122,137,192,44,84,245,25,55,144,185,240,170,
-73,45,94,34,74,42,128,210,109,60,149,177,153,229,183,45,154,171,211,216,36,178,52,24,194,199,230,80,159,13,208,100,
-45,99,211,235,3,68,97,44,28,63,48,71,214,131,78,7,36,36,228,217,218,215,63,80,170,210,1,32,61,137,137,19,
-78,167,228,88,46,189,103,156,181,107,100,59,232,50,44,236,143,86,88,180,15,86,39,119,28,84,14,242,68,120,142,250,
-211,247,45,174,94,132,212,96,235,51,183,221,54,158,216,202,55,123,113,244,12,83,232,150,210,175,244,6,3,227,26,241,
-160,59,120,132,255,159,52,76,236,223,234,192,24,12,68,75,41,119,26,74,137,65,39,217,53,221,194,53,60,248,1,161,
-225,140,130,62,226,79,44,39,22,60,101,87,121,126,33,124,105,52,60,128,182,40,6,97,199,79,8,127,153,150,186,16,
-186,47,62,230,85,129,100,117,42,23,23,220,85,112,128,206,148,222,165,148,199,180,241,10,73,188,179,1,167,224,97,30,
-62,217,175,227,95,94,17,151,26,88,182,85,86,128,4,120,190,230,170,26,75,145,190,175,17,79,249,147,54,4,153,239,
-109,251,233,60,207,60,59,141,229,34,51,225,108,231,45,236,225,123,225,65,44,96,181,176,176,250,163,69,126,113,92,83,
-97,185,134,91,77,197,171,208,185,118,233,112,111,8,8,191,136,139,183,145,180,165,100,245,98,78,81,146,181,75,128,216,
-222,234,121,70,51,216,241,135,95,198,169,74,114,226,86,166,26,42,247,79,76,49,110,41,223,238,24,35,185,151,187,188,
-232,1,199,116,10,192,158,163,16,4,119,85,116,74,36,90,176,16,103,12,193,93,82,19,17,167,252,144,120,113,194,2,
-22,154,122,128,182,78,46,232,212,24,206,4,131,208,8,243,4,34,59,167,48,199,97,102,221,186,67,215,37,210,132,176,
-73,233,155,7,86,179,199,61,115,182,156,184,137,143,48,3,94,68,61,139,32,29,179,43,49,33,3,79,191,201,32,153,
-221,57,136,209,169,201,22,172,254,101,20,36,61,96,101,221,185,254,193,195,13,245,30,37,187,99,54,52,71,5,209,233,
-230,240,84,232,189,163,242,173,226,177,19,236,123,181,6,6,221,90,62,2,46,4,122,205,90,187,211,198,227,156,51,3,
-38,214,18,25,7,148,173,187,60,39,165,87,198,59,155,171,25,146,102,173,51,161,144,168,241,11,255,41,24,195,240,191,
-6,103,105,192,209,39,87,238,8,107,250,180,52,77,128,127,116,254,5,107,127,31,112,71,169,239,252,116,136,76,228,140,
-50,140,33,2,201,46,109,67,23,121,7,221,99,10,213,153,104,233,220,4,89,86,36,163,2,62,120,92,133,51,194,131,
-44,227,149,79,20,132,186,158,180,148,208,156,207,78,78,24,152,31,37,40,224,102,147,169,92,15,44,153,70,241,29,132,
-105,250,166,237,53,144,73,154,6,12,75,160,224,168,200,146,211,200,36,184,196,0,20,205,243,183,204,29,25,189,184,146,
-146,101,148,232,40,255,117,160,30,66,58,0,235,179,153,48,80,191,57,63,66,127,103,16,47,51,52,64,179,44,119,109,
-156,47,156,20,103,116,210,172,234,244,69,235,182,161,195,204,230,160,55,167,222,64,152,43,119,133,189,21,66,148,255,63,
-53,78,122,54,170,170,200,252,146,240,188,128,191,31,24,16,189,235,213,210,233,221,25,150,182,131,68,251,249,43,11,142,
-142,128,151,194,253,169,127,150,86,58,246,231,27,121,235,234,104,195,224,115,17,227,209,28,24,11,125,4,55,122,160,217,
-64,128,186,189,244,14,98,198,37,112,38,90,76,113,147,78,198,6,22,13,220,18,211,241,117,45,56,42,60,226,174,201,
-213,174,32,251,231,94,254,204,236,97,65,59,153,187,234,214,45,92,44,29,24,163,246,42,253,144,246,146,97,182,199,87,
-134,188,11,222,209,7,231,245,70,141,200,140,232,230,5,106,45,160,74,90,131,206,25,47,4,223,86,69,3,105,241,54,
-31,133,189,193,108,235,22,9,198,6,91,56,89,56,108,253,81,230,191,147,127,222,203,109,151,79,192,6,172,109,221,21,
-21,126,231,58,0,198,89,217,244,178,28,169,220,231,73,59,70,124,4,224,86,168,16,175,26,113,13,74,70,250,1,235,
-139,50,76,18,252,192,158,61,201,41,13,197,134,18,129,44,145,95,229,175,183,149,5,154,197,149,11,20,40,13,148,205,
-149,147,103,216,196,14,55,49,135,4,220,110,35,141,167,33,219,3,185,65,2,248,166,147,115,245,176,225,31,246,101,136,
-4,117,158,169,6,77,192,156,192,232,217,45,106,77,18,97,207,170,65,93,7,123,75,158,191,131,119,109,197,45,67,67,
-78,222,71,95,194,85,55,39,55,251,148,190,126,39,160,139,219,14,250,21,72,203,45,103,154,74,247,250,94,209,187,158,
-210,0,228,179,41,196,104,243,185,242,64,4,38,242,145,89,247,33,199,49,101,6,91,230,146,112,45,125,70,76,227,86,
-20,111,122,255,79,22,196,45,64,96,41,176,214,42,75,133,203,226,54,134,59,207,116,34,77,146,242,97,218,125,58,111,
-221,202,74,31,241,161,77,148,193,109,56,104,72,45,241,36,230,211,238,82,83,51,250,30,226,248,251,159,27,94,15,163,
-209,150,235,29,144,108,129,196,149,233,221,91,145,6,106,160,142,174,137,27,71,16,35,242,146,156,172,64,220,61,63,49,
-130,80,191,144,165,91,86,6,142,202,149,153,82,148,77,125,38,107,2,178,19,17,183,155,139,90,127,46,145,206,247,41,
-20,142,224,49,95,11,227,72,64,49,190,37,50,162,94,6,175,79,160,117,40,17,14,97,1,80,24,9,131,235,118,172,
-115,189,211,127,209,33,96,180,45,168,5,193,139,130,54,35,162,207,254,243,224,189,80,135,235,8,186,33,106,207,81,160,
-166,244,200,205,195,248,221,159,194,0,55,150,189,128,185,12,26,12,71,174,243,71,91,29,233,110,239,15,174,172,171,21,
-194,195,147,176,60,18,4,6,141,56,43,215,240,106,54,165,242,116,175,93,197,0,124,163,252,51,40,200,75,87,163,86,
-28,254,43,117,239,42,95,21,97,109,236,165,151,68,150,16,52,10,222,209,148,14,190,163,114,24,160,200,0,17,109,18,
-253,133,254,123,221,58,209,39,158,161,53,75,237,175,217,130,102,80,225,142,81,164,132,110,105,166,241,134,164,122,190,189,
-212,229,199,210,128,191,44,235,191,144,55,93,153,141,180,79,8,15,96,205,210,160,213,180,166,76,255,164,254,83,247,139,
-74,55,143,226,211,127,16,69,90,33,60,3,180,90,236,59,157,248,148,24,90,226,115,62,28,125,187,185,101,51,222,125,
-125,165,112,41,210,141,225,198,10,167,200,212,107,170,72,86,218,71,93,149,52,243,168,198,187,79,223,122,88,243,30,239,
-187,40,29,175,7,32,60,244,5,244,203,158,31,21,29,56,223,239,101,224,3,241,52,139,118,135,21,37,233,77,13,0,
-254,191,102,79,114,146,118,221,135,187,84,16,122,213,14,215,233,102,0,172,155,210,63,233,3,179,204,27,128,252,92,127,
-205,131,80,90,180,43,196,42,17,121,223,241,88,194,30,254,163,153,51,27,153,15,241,197,18,138,52,5,21,194,5,216,
-71,26,39,0,27,102,40,231,32,51,62,184,212,202,184,115,1,111,149,50,5,201,58,224,230,199,199,165,170,43,53,59,
-208,194,22,240,166,112,62,253,172,83,152,186,191,10,121,58,204,172,242,128,69,12,40,3,175,219,242,214,130,218,97,220,
-252,117,220,32,215,244,32,53,1,252,65,55,189,241,196,104,64,48,10,61,92,156,25,192,204,235,155,212,181,147,184,142,
-167,140,232,92,200,213,243,76,129,180,27,46,223,151,132,80,127,24,151,235,255,38,101,152,175,79,62,189,23,41,96,153,
-2,229,216,135,16,58,250,152,52,168,46,141,34,87,216,23,54,60,101,87,105,144,142,26,217,4,169,52,132,202,184,76,
-53,189,72,146,144,221,56,130,101,48,68,57,161,167,240,75,25,66,225,105,248,88,107,16,207,218,20,131,37,25,158,95,
-37,48,22,160,213,113,144,149,241,163,24,154,35,109,133,95,207,90,1,65,2,94,65,236,211,181,127,47,198,63,60,180,
-179,220,76,53,17,71,98,196,114,206,239,94,133,124,205,171,166,237,29,138,200,176,153,39,130,224,144,225,137,102,63,25,
-131,76,189,156,102,76,1,231,4,236,30,155,34,226,210,184,162,7,246,70,96,16,99,17,202,188,158,227,230,64,227,31,
-152,75,132,107,197,124,233,22,207,59,132,146,255,146,213,185,153,123,222,147,11,225,198,178,220,98,34,21,219,28,220,3,
-84,93,223,101,171,245,6,82,249,147,108,102,43,54,37,226,185,33,18,97,20,193,147,137,61,137,144,186,248,103,13,216,
-33,45,113,70,89,90,19,17,4,38,143,176,97,93,196,221,198,117,6,54,203,179,248,196,58,43,237,51,89,255,9,185,
-105,115,222,234,192,237,158,170,162,156,51,39,137,107,38,14,235,240,186,85,80,200,83,110,81,59,48,114,30,190,122,87,
-46,217,142,216,249,39,238,197,215,42,22,159,228,81,11,132,174,108,238,102,179,28,228,9,47,227,238,31,197,42,214,42,
-158,109,114,140,128,200,166,228,74,77,1,227,176,122,164,8,129,168,183,13,81,166,7,246,32,1,130,112,5,190,214,245,
-240,208,8,58,242,208,227,212,1,26,85,92,84,181,12,22,15,169,77,238,161,3,236,4,244,116,243,176,202,210,102,133,
-3,201,74,164,229,250,85,42,3,38,234,158,240,130,141,23,182,59,149,82,78,191,104,96,90,56,148,151,182,102,243,162,
-163,87,58,225,98,231,33,109,43,98,238,13,51,237,141,57,89,97,152,210,30,22,198,131,223,87,218,49,58,200,168,5,
-145,67,38,83,245,105,23,121,78,114,15,115,163,229,205,55,221,8,131,180,148,136,233,211,130,38,9,244,203,30,97,172,
-109,65,216,137,60,66,165,50,15,6,160,77,78,2,195,92,4,169,9,229,91,100,210,87,252,76,192,160,150,181,28,103,
-62,234,140,101,39,248,226,173,170,87,71,72,36,227,196,50,161,170,39,29,0,179,217,144,238,22,40,195,20,39,222,240,
-178,131,155,118,18,167,141,246,168,177,212,52,65,244,115,230,183,255,107,84,179,23,38,65,223,27,249,25,167,31,101,69,
-69,191,165,206,17,120,251,144,20,156,176,120,59,226,206,180,176,130,202,111,228,153,190,56,219,31,100,196,246,112,211,190,
-7,11,252,4,254,214,194,249,165,13,26,14,254,124,7,232,114,32,170,22,67,167,217,131,255,99,169,133,207,24,226,216,
-221,176,15,19,115,215,174,24,241,175,255,148,128,68,246,80,211,164,254,238,160,228,200,111,161,188,122,246,201,52,116,246,
-95,225,25,32,205,89,197,99,163,205,10,71,190,47,83,121,165,171,82,103,128,241,112,167,224,174,29,63,131,25,82,67,
-38,206,58,152,229,225,10,183,132,252,97,16,107,152,220,206,176,151,118,81,211,202,9,232,104,227,11,100,125,68,21,176,
-240,81,230,34,7,125,12,118,103,182,169,17,142,11,147,162,2,78,130,112,166,40,133,125,231,180,250,252,173,21,7,198,
-179,111,123,213,17,245,240,91,200,31,51,2,74,233,79,125,77,26,66,113,109,40,210,212,22,69,4,245,134,71,73,99,
-138,175,44,93,164,231,160,14,230,243,46,117,192,31,12,206,189,59,220,132,195,253,233,64,44,11,85,103,234,233,185,202,
-141,175,96,250,27,125,111,46,233,216,9,3,194,166,226,192,201,22,22,206,22,95,148,172,8,25,96,162,186,98,160,57,
-28,131,123,182,15,71,239,178,202,172,20,157,184,120,10,189,36,37,179,51,212,76,227,197,205,72,57,59,222,209,159,172,
-227,160,100,30,149,79,170,77,74,88,71,169,92,28,2,40,62,144,205,149,122,182,148,125,238,118,127,24,37,110,108,158,
-68,198,192,171,141,204,40,155,120,183,247,212,85,12,243,23,9,166,132,85,87,3,110,53,67,246,5,86,2,234,158,180,
-183,254,196,28,191,22,95,214,0,173,149,189,136,11,25,128,34,81,218,187,22,28,183,217,179,216,139,165,238,186,139,67,
-71,164,221,175,130,72,214,70,17,204,16,189,168,8,198,83,75,39,22,245,66,59,10,180,194,153,75,51,243,214,18,203,
-33,33,202,37,126,10,92,181,135,159,15,50,82,173,183,161,19,247,10,80,142,45,221,63,233,31,162,164,52,61,25,214,
-245,99,17,241,79,105,133,33,115,5,10,53,212,130,237,51,141,75,95,163,180,177,103,189,203,250,112,103,5,111,5,7,
-40,230,87,51,205,168,31,172,181,110,122,118,231,23,64,96,163,190,79,195,61,23,122,95,246,82,250,6,132,252,98,173,
-61,92,123,107,246,170,217,119,113,71,107,125,10,58,197,91,131,61,89,215,106,142,66,198,243,225,48,46,192,5,18,204,
-124,174,100,78,213,121,43,145,32,195,197,2,111,211,38,153,108,8,181,73,248,232,168,135,82,115,208,171,174,68,234,103,
-231,135,161,130,8,80,247,220,100,78,57,20,10,129,182,64,173,124,184,110,50,133,155,171,112,132,103,54,84,253,81,159,
-69,179,231,69,98,166,97,238,43,98,83,110,7,252,27,161,13,126,14,207,226,16,20,126,92,177,15,25,67,249,210,229,
-56,162,85,252,173,26,241,72,134,150,65,147,160,176,180,210,51,25,77,0,52,96,24,168,57,149,102,140,234,145,6,93,
-150,98,22,88,183,177,161,241,54,206,29,123,49,180,218,48,147,13,39,76,24,11,232,147,77,217,3,58,223,254,106,127,
-10,69,74,103,30,11,70,62,85,72,145,130,219,4,70,250,179,102,245,152,241,112,212,207,120,11,177,239,167,86,187,36,
-249,156,111,113,129,16,97,139,206,118,199,149,58,115,216,169,191,255,155,166,58,239,243,49,56,30,157,204,117,11,22,240,
-195,153,247,169,241,0,133,75,191,40,22,192,167,68,237,61,83,215,10,94,52,64,26,122,238,109,255,130,56,9,44,169,
-99,163,209,228,122,232,128,166,92,176,51,171,96,152,31,117,165,255,13,229,89,19,153,22,30,88,234,29,191,20,244,194,
-79,235,22,124,40,52,212,229,110,53,175,41,51,170,107,171,248,193,9,155,58,8,42,143,115,233,19,163,28,208,30,70,
-225,109,197,15,55,4,185,88,86,86,12,64,153,45,157,211,9,219,73,170,96,243,141,20,159,94,96,26,110,217,32,197,
-41,208,70,89,127,192,30,228,164,7,139,68,106,211,238,117,232,7,235,75,173,186,167,1,19,231,173,119,31,140,139,108,
-51,61,1,115,205,156,166,130,5,177,217,238,105,164,24,241,203,235,237,87,61,232,28,72,255,175,219,101,101,251,98,197,
-188,124,111,239,142,20,161,69,57,210,40,84,149,208,89,38,231,174,191,207,178,106,116,181,81,187,150,149,236,124,157,128,
-104,163,194,185,118,12,35,133,236,21,231,130,88,239,201,1,193,99,130,138,105,250,24,69,217,68,67,152,119,111,235,76,
-92,241,26,174,142,24,62,64,152,37,10,65,141,83,156,170,185,239,162,213,61,86,106,21,138,174,197,236,105,32,127,135,
-47,31,133,184,84,59,191,146,198,176,24,191,182,150,190,123,26,137,254,1,12,206,195,36,65,62,229,64,104,154,73,239,
-112,204,31,182,125,212,72,43,232,97,239,89,192,172,179,186,106,121,203,22,155,34,7,53,221,130,250,94,75,35,208,7,
-59,66,237,227,183,98,218,86,31,27,197,227,202,15,154,39,153,43,157,91,174,195,204,96,142,143,20,233,83,82,89,31,
-222,72,239,195,48,192,158,176,239,36,7,180,167,58,141,180,124,13,127,60,133,205,197,137,174,67,139,248,162,1,51,55,
-8,179,0,205,62,77,120,216,158,111,103,234,53,234,193,91,210,26,222,114,96,164,38,241,113,123,194,111,116,36,6,66,
-96,205,235,252,239,197,135,153,44,58,157,64,132,53,194,241,70,198,242,195,86,40,131,98,197,42,223,27,33,53,160,146,
-17,31,129,208,20,125,217,251,177,174,164,212,119,118,91,220,84,104,241,9,21,238,41,126,58,49,143,39,151,149,95,200,
-73,146,205,5,196,130,52,51,120,90,84,132,247,188,183,101,61,202,105,133,157,34,106,234,117,194,178,251,57,208,161,227,
-244,213,6,198,27,110,160,92,180,115,20,122,99,148,226,86,54,167,128,37,199,14,125,128,237,61,5,72,74,140,21,99,
-102,249,133,110,203,51,145,0,3,248,173,241,238,9,221,31,25,24,141,217,69,207,176,24,49,149,180,103,54,168,87,223,
-183,82,168,240,139,98,243,4,13,246,242,125,148,219,51,43,85,229,172,167,17,37,217,103,19,152,169,220,59,108,7,133,
-83,217,133,144,143,183,128,203,50,189,132,123,53,251,245,131,48,21,18,215,95,171,93,185,58,160,9,225,175,121,41,183,
-30,229,58,35,70,141,47,195,51,131,219,73,43,50,237,193,232,127,201,190,7,160,67,139,211,193,244,27,104,126,129,82,
-92,44,33,188,25,85,101,134,99,186,239,97,55,92,204,154,86,150,93,242,104,239,137,180,21,31,123,49,47,168,154,68,
-237,223,235,93,200,153,125,208,125,153,215,87,231,6,169,141,203,190,215,124,240,3,14,186,70,207,128,42,245,222,48,225,
-64,242,18,178,7,84,233,130,91,47,216,148,213,176,18,251,238,159,80,222,21,79,200,241,28,245,230,243,82,219,72,163,
-197,52,209,140,53,204,53,216,6,187,205,205,190,77,249,242,26,54,168,120,130,23,180,222,202,160,20,95,74,243,107,246,
-129,119,217,201,223,84,202,192,24,179,81,253,244,170,62,101,194,49,65,62,118,160,123,162,247,133,140,71,10,52,156,155,
-63,65,69,116,194,142,173,203,205,191,42,2,57,218,237,224,80,39,4,144,11,122,255,12,187,23,67,239,33,42,169,30,
-85,86,151,145,159,52,155,109,44,86,195,206,57,176,200,176,87,87,179,248,76,142,60,163,174,129,75,186,137,93,216,108,
-158,203,221,244,67,6,172,94,142,3,212,119,136,1,73,171,54,118,10,49,244,241,55,138,158,87,70,92,21,91,223,0,
-140,218,215,42,43,129,172,138,178,255,90,41,229,14,234,202,132,154,170,54,49,150,182,126,91,45,201,65,210,105,105,87,
-232,175,150,129,18,125,245,109,71,46,242,230,147,137,229,85,28,247,230,208,50,64,111,221,87,119,147,149,88,249,120,39,
-249,79,41,232,16,167,37,5,237,195,139,144,196,219,137,47,4,70,43,114,145,2,240,73,220,25,233,33,26,167,116,214,
-173,95,81,94,61,74,40,120,78,137,127,246,249,232,192,110,105,147,101,102,179,38,178,131,197,215,129,32,187,92,120,178,
-202,163,160,14,100,60,250,9,130,67,77,43,48,2,146,207,70,154,29,234,115,3,232,228,134,177,126,213,188,188,240,96,
-191,153,196,38,188,193,173,11,77,79,206,116,113,178,225,132,232,99,55,208,79,67,151,143,232,210,14,127,236,124,0,149,
-176,103,110,72,123,159,250,28,182,144,146,104,6,6,71,218,246,178,79,236,251,154,99,127,197,138,147,84,156,50,81,93,
-28,117,119,199,212,11,167,105,214,178,56,177,242,100,207,103,234,19,130,60,33,138,145,3,42,83,34,231,199,43,183,41,
-148,189,161,44,132,210,129,58,43,54,9,143,15,231,125,157,107,105,114,68,112,160,107,145,187,190,143,139,254,87,216,210,
-153,180,177,85,206,62,128,235,134,83,251,95,27,5,74,199,242,229,151,236,59,23,227,228,78,144,188,77,131,141,133,103,
-214,4,108,25,92,92,159,59,85,140,85,254,218,62,78,5,47,5,11,251,194,167,56,217,204,224,186,43,45,40,168,232,
-100,204,149,103,222,75,125,78,3,218,118,172,63,251,185,84,146,36,146,251,147,89,109,121,33,38,50,253,126,5,211,189,
-156,150,127,89,162,162,65,125,115,55,30,104,20,82,9,70,59,92,57,200,148,23,229,93,93,220,211,163,183,110,87,245,
-141,164,82,86,60,250,115,134,63,176,139,77,100,217,196,60,175,162,80,23,5,136,30,187,185,219,221,133,175,41,32,201,
-67,63,93,151,88,127,222,246,35,80,101,103,237,44,167,74,77,79,20,167,157,116,218,232,129,135,180,69,246,230,122,93,
-110,197,189,156,77,149,64,186,111,244,106,11,22,227,179,28,221,158,143,249,8,15,233,105,55,201,160,103,132,72,184,34,
-184,238,167,198,151,53,172,167,111,112,71,131,40,159,145,114,63,157,142,172,128,7,139,29,104,122,179,173,133,207,10,86,
-100,160,85,84,90,168,75,244,93,213,82,93,13,29,48,76,175,137,167,14,236,65,217,169,88,187,243,197,174,104,145,235,
-68,180,57,129,92,48,129,94,238,63,8,98,59,238,217,176,57,214,158,174,43,19,43,191,210,253,54,131,67,127,223,34,
-140,57,162,119,251,92,195,37,110,87,94,189,101,140,193,211,220,121,227,96,69,16,165,31,65,33,86,1,246,89,28,17,
-226,128,81,219,252,106,241,119,220,217,99,100,141,3,222,148,36,146,215,231,125,205,172,89,105,69,132,147,239,142,59,110,
-71,239,194,42,65,7,47,9,137,220,33,148,25,250,157,236,22,237,38,71,238,26,186,116,65,193,208,221,113,217,170,21,
-119,19,62,32,99,235,127,80,12,116,216,72,149,215,11,12,242,53,244,67,238,100,104,250,49,194,85,165,247,204,227,4,
-179,238,99,183,9,194,11,49,187,76,160,163,161,209,176,121,86,120,255,191,85,137,33,146,193,168,147,194,190,242,197,252,
-178,16,34,55,162,205,164,207,172,227,59,167,120,162,246,82,109,35,141,84,218,144,218,58,162,56,224,135,32,153,58,40,
-180,25,228,243,0,233,3,153,190,205,40,181,68,24,116,86,145,163,235,207,206,105,34,176,5,71,214,4,76,49,153,52,
-239,235,62,91,230,55,228,112,234,203,156,42,251,255,232,94,181,179,52,195,232,98,200,26,178,238,69,67,164,97,150,220,
-65,171,215,242,235,212,131,233,195,130,239,160,95,53,144,0,177,75,219,193,239,14,145,148,152,189,160,177,188,15,143,192,
-169,43,126,99,155,231,251,212,200,254,41,5,64,35,127,45,213,140,246,76,169,32,3,42,145,112,134,66,78,124,110,6,
-43,105,142,27,239,125,204,223,189,235,19,35,112,149,110,36,32,253,126,156,131,181,40,148,237,79,40,1,48,139,187,182,
-104,210,61,102,118,212,30,142,150,16,189,184,248,125,127,158,115,188,130,80,18,71,126,217,26,219,58,150,13,21,188,32,
-128,92,240,173,135,93,124,203,147,208,146,93,23,52,32,84,217,44,219,6,107,213,3,122,151,231,210,117,103,13,10,64,
-45,179,120,168,112,186,35,74,93,35,75,12,56,102,151,126,49,90,163,203,219,86,178,239,71,130,64,176,242,222,245,98,
-116,24,236,47,127,189,84,210,92,201,244,125,88,192,138,71,87,230,139,35,144,197,139,69,36,156,107,28,180,192,129,225,
-116,219,247,195,77,96,95,150,147,100,77,81,121,242,152,16,59,144,60,140,112,22,200,208,143,10,59,231,217,255,210,174,
-75,149,145,13,45,127,96,216,69,225,20,11,73,61,76,133,19,234,168,3,171,42,120,10,154,75,42,2,70,92,115,100,
-192,54,227,250,54,116,157,2,190,193,124,156,95,147,112,120,124,44,200,174,80,248,70,224,116,42,96,173,122,11,205,87,
-168,248,230,153,12,253,196,69,125,239,10,129,163,198,114,39,247,180,70,32,129,45,220,152,76,45,140,145,28,113,211,183,
-246,70,157,218,135,190,213,221,164,47,174,77,189,0,235,0,255,253,79,210,63,50,36,56,31,142,41,191,204,162,102,192,
-241,96,228,189,121,199,69,161,55,56,10,72,202,65,86,89,117,137,56,143,224,230,122,172,104,179,69,126,74,40,249,201,
-126,71,122,101,141,0,255,9,172,122,188,10,54,167,251,103,228,245,179,63,105,141,49,189,57,109,42,178,64,86,173,154,
-192,185,108,8,84,129,151,61,76,38,68,128,87,11,147,134,34,93,109,71,151,117,35,225,198,93,186,223,11,35,180,173,
-23,224,188,219,84,129,92,209,11,224,140,20,228,109,177,16,34,202,49,193,18,121,73,31,93,171,7,52,93,94,2,141,
-122,68,117,61,9,249,39,34,176,116,92,233,28,175,131,106,8,253,84,209,106,88,197,252,232,208,161,237,235,248,251,34,
-93,7,182,187,202,189,52,220,107,202,120,9,2,211,44,42,206,244,186,91,62,134,231,37,99,55,65,72,193,169,250,201,
-132,190,37,81,102,7,211,60,46,106,151,92,230,75,61,176,83,0,58,234,0,128,156,188,12,27,1,220,192,168,171,145,
-229,242,25,221,157,136,67,136,101,42,110,103,174,70,238,134,114,75,69,84,157,57,150,77,102,146,144,110,140,237,51,96,
-52,236,27,204,203,67,12,156,91,107,18,228,55,41,95,77,131,174,2,141,218,190,159,32,142,195,195,196,215,208,4,188,
-25,209,172,168,216,111,39,137,36,223,155,180,49,154,68,39,130,142,214,0,161,228,253,166,231,66,150,34,93,46,243,194,
-90,215,167,144,175,68,92,72,179,82,208,254,207,171,139,210,200,148,178,175,156,108,57,71,0,229,209,76,201,199,0,95,
-214,190,69,160,217,100,92,99,78,126,3,54,162,152,205,110,238,84,186,152,144,203,152,178,136,142,124,40,117,70,20,35,
-115,124,51,86,184,44,44,230,84,170,76,240,41,147,140,237,94,8,55,44,233,186,181,239,79,127,180,213,228,225,177,151,
-135,246,112,152,248,23,93,44,66,117,68,110,26,153,112,251,48,132,191,146,178,41,180,191,137,159,105,159,252,56,54,13,
-231,5,97,34,0,28,68,168,100,242,73,45,105,41,22,166,12,66,51,62,159,11,230,159,246,95,122,197,85,127,79,131,
-172,5,132,184,135,213,169,42,21,73,76,72,221,157,103,187,34,114,122,130,122,237,29,0,8,198,156,227,6,34,217,117,
-11,238,37,188,132,51,231,178,127,90,60,89,65,228,183,159,43,83,160,176,154,93,184,171,233,71,49,40,209,124,158,0,
-235,220,76,248,187,210,142,231,237,93,188,240,87,84,107,245,44,242,198,123,64,1,193,232,48,76,64,107,106,98,64,47,
-2,1,154,90,20,92,159,254,162,209,32,161,107,129,113,110,17,198,203,11,183,53,126,215,61,78,18,58,8,24,134,182,
-244,140,169,177,56,231,238,79,32,93,47,158,135,155,100,8,220,184,114,117,236,107,120,75,176,228,0,224,202,40,24,33,
-91,124,204,186,185,203,184,88,149,4,25,79,12,4,45,8,158,155,192,219,176,133,238,72,23,166,70,229,228,88,215,191,
-255,108,69,245,202,209,207,197,12,84,4,52,197,2,169,245,165,85,0,182,201,207,244,214,114,47,114,15,114,74,229,59,
-164,58,31,12,102,55,40,129,100,83,102,99,187,51,251,25,185,151,236,133,33,47,227,159,241,241,32,100,139,103,113,207,
-118,191,107,13,24,227,219,138,91,94,85,182,159,61,92,76,93,255,194,103,244,187,209,250,190,86,39,61,97,250,69,218,
-244,134,179,17,74,94,86,101,143,216,148,157,113,119,165,152,97,54,121,135,170,44,172,38,113,238,226,110,154,190,89,56,
-58,179,113,250,26,224,140,125,81,87,186,93,85,154,144,84,133,142,193,251,115,192,207,86,114,185,103,125,100,163,158,206,
-246,130,19,48,221,165,46,153,216,149,186,93,177,100,249,200,165,73,167,116,0,226,93,251,240,247,101,197,58,142,48,7,
-137,32,90,127,53,46,192,255,78,213,210,157,241,104,195,70,156,198,90,80,82,227,96,167,178,152,82,255,48,203,210,201,
-124,212,22,67,134,118,122,245,245,71,16,27,40,99,95,111,126,23,101,18,172,184,196,169,21,50,54,38,43,160,121,187,
-30,48,114,211,170,47,33,176,248,112,127,168,194,190,104,179,45,28,120,69,226,36,51,3,4,24,104,95,30,116,51,207,
-95,95,164,167,226,70,13,123,157,7,138,211,192,55,6,142,30,251,58,75,235,3,219,4,144,165,150,46,14,198,248,225,
-97,84,97,61,180,220,18,221,152,203,15,193,116,68,79,62,177,75,39,13,105,17,128,230,245,120,144,143,173,87,69,169,
-142,45,127,115,215,239,109,141,116,255,235,153,48,249,55,72,246,19,108,182,172,27,255,46,180,162,43,113,180,23,243,230,
-127,162,161,22,139,194,166,162,98,74,129,12,112,2,45,226,91,29,20,171,146,222,211,25,5,53,2,149,29,46,176,224,
-131,65,237,167,52,133,145,36,232,135,187,189,254,231,241,175,123,16,174,201,63,64,51,218,51,9,77,78,30,127,39,224,
-149,49,201,8,112,220,160,99,98,130,97,146,164,178,11,252,194,139,238,223,93,196,167,209,39,39,49,8,111,132,29,238,
-220,44,12,236,40,48,29,108,12,152,239,2,30,107,202,217,149,242,176,117,237,38,165,41,239,121,220,3,101,58,90,255,
-174,138,114,20,57,119,35,135,171,149,106,110,219,127,117,54,116,112,219,148,7,86,119,12,103,225,48,34,44,102,196,29,
-38,123,136,152,51,84,105,31,207,81,68,248,254,192,243,202,139,125,103,231,245,213,50,237,219,105,75,232,47,124,20,184,
-123,32,116,149,247,121,34,55,253,186,52,238,120,47,243,139,254,48,210,149,105,86,251,13,150,124,252,34,233,178,223,171,
-42,221,91,82,94,62,113,191,3,129,149,32,21,54,50,139,68,106,45,76,239,189,6,138,22,206,250,121,55,230,48,91,
-132,96,153,7,126,154,54,184,94,212,123,23,203,243,126,197,240,230,40,175,11,233,97,110,175,143,216,243,156,144,215,46,
-245,25,16,38,84,207,68,224,201,135,26,204,164,194,7,46,84,13,28,179,78,247,58,65,59,8,105,7,230,9,26,251,
-224,38,80,32,232,128,60,226,109,153,239,89,212,134,196,171,6,35,86,90,229,150,145,112,120,191,178,216,190,149,212,28,
-222,27,160,110,76,230,62,198,34,165,194,123,18,58,222,109,3,43,233,222,149,59,206,139,107,215,199,252,199,87,188,174,
-170,14,199,169,73,215,72,226,209,35,47,132,73,187,203,104,62,211,157,218,19,238,247,221,235,7,218,147,159,184,148,87,
-219,149,170,53,44,19,5,31,170,234,244,52,21,87,128,236,34,113,64,92,139,40,187,246,16,92,114,199,252,111,50,213,
-56,12,69,10,155,217,77,249,84,194,153,247,17,233,65,217,73,215,204,57,11,251,36,203,128,122,133,136,116,39,191,215,
-110,13,12,155,67,11,0,152,140,255,226,50,189,187,155,136,201,235,77,100,31,201,213,133,114,33,223,11,113,233,83,53,
-108,111,206,210,190,39,246,198,208,65,10,106,242,199,154,183,215,113,37,180,153,56,249,7,232,202,111,167,201,147,81,180,
-59,226,66,25,51,76,24,37,32,193,198,247,118,127,167,138,52,18,177,223,117,61,123,234,235,136,111,206,133,245,37,157,
-200,238,69,1,29,125,180,128,231,165,253,46,202,87,123,16,88,170,202,45,99,117,132,114,19,131,86,152,45,106,195,145,
-94,136,86,65,38,43,225,153,64,143,228,208,1,251,235,197,166,124,134,158,228,143,249,212,53,228,30,72,171,36,155,35,
-153,82,249,90,24,62,18,116,58,180,122,95,166,112,141,97,153,127,8,123,0,142,61,210,224,217,202,33,18,181,183,32,
-222,109,112,16,244,157,92,255,207,244,140,125,236,116,249,84,135,206,28,66,238,217,217,33,57,200,39,118,234,160,176,194,
-189,17,5,92,233,0,181,46,10,131,62,85,59,16,54,61,7,15,105,120,227,158,138,79,242,61,246,101,14,209,77,118,
-176,240,40,100,206,16,79,194,208,57,143,101,91,50,232,163,64,29,19,155,239,126,44,239,240,224,142,171,42,64,7,168,
-146,212,85,2,232,197,250,41,142,250,242,112,199,57,135,191,163,243,68,64,68,128,196,130,10,5,228,60,74,172,49,221,
-32,8,186,182,187,220,211,109,82,102,133,182,75,211,59,20,4,4,72,210,48,146,235,92,73,183,52,1,226,133,34,224,
-36,169,234,121,27,122,208,29,33,72,182,181,230,4,245,134,71,73,99,146,126,111,75,180,140,154,13,215,192,245,41,23,
-165,185,195,70,240,92,145,2,85,119,190,15,200,140,73,140,122,195,160,39,78,76,57,141,19,50,52,201,103,132,149,101,
-236,201,27,126,88,187,207,140,114,155,109,85,13,242,252,226,52,168,109,155,127,218,28,60,169,82,132,0,75,86,149,164,
-43,145,10,125,76,180,60,144,247,251,182,27,68,81,252,254,78,121,195,197,230,90,187,7,156,201,114,199,178,18,45,248,
-47,63,135,180,80,117,127,190,195,254,221,253,109,112,95,230,98,193,34,77,74,83,57,107,84,144,248,2,147,84,140,123,
-42,99,218,16,189,182,186,58,244,235,58,249,82,73,65,136,73,65,131,202,253,79,114,81,130,54,16,181,97,241,52,244,
-26,142,84,82,168,52,252,99,37,85,111,168,251,198,15,120,188,28,25,30,200,94,55,252,134,77,45,114,180,92,106,47,
-154,134,124,89,97,8,11,83,193,180,132,97,159,178,104,4,96,214,23,200,4,226,104,117,214,64,32,177,40,150,213,54,
-87,36,97,154,168,57,246,126,114,134,87,229,231,224,46,68,165,162,118,222,133,166,8,23,134,56,160,129,127,103,68,150,
-175,50,210,200,143,203,106,203,115,112,206,177,133,108,68,199,43,234,22,31,73,217,63,18,82,214,85,176,45,30,59,209,
-128,44,19,89,241,26,238,145,204,116,160,136,91,233,165,39,248,2,59,142,225,58,75,21,133,226,135,169,12,239,232,2,
-123,144,220,175,139,56,1,219,218,159,23,130,183,205,112,251,93,32,199,196,208,249,78,85,12,81,137,239,206,133,45,95,
-101,152,185,63,159,177,230,128,88,39,66,59,57,21,58,55,115,4,188,207,21,243,47,126,204,21,158,228,242,55,126,9,
-215,32,47,69,67,246,241,134,64,73,19,29,177,20,231,214,179,238,90,168,45,88,148,189,78,147,123,59,21,253,153,206,
-204,110,154,173,218,91,247,226,184,65,165,52,59,82,26,84,15,181,240,63,93,192,249,129,231,104,241,177,6,24,87,83,
-35,21,72,153,59,35,66,202,172,172,19,44,29,152,14,254,140,136,30,29,115,9,154,147,175,239,17,214,220,248,234,134,
-188,40,227,33,148,76,67,122,249,84,240,172,168,154,181,15,176,123,68,43,227,104,33,199,173,115,43,225,21,47,59,192,
-129,251,216,244,13,11,89,114,30,224,102,226,100,213,158,126,119,52,159,213,136,182,167,226,212,189,218,19,90,136,14,140,
-106,134,22,68,139,7,231,180,86,164,123,56,0,193,36,214,36,20,44,145,190,18,249,191,243,98,110,219,247,8,240,67,
-93,192,133,39,6,55,40,214,246,2,47,76,117,67,48,208,140,227,102,151,176,98,24,191,194,19,229,62,156,21,8,224,
-25,138,253,220,223,183,141,102,179,139,164,140,72,50,27,186,18,28,250,244,215,120,116,229,37,204,210,43,7,33,150,192,
-183,246,115,211,119,200,7,69,172,59,229,69,161,83,94,12,5,32,146,248,198,14,90,99,255,83,111,44,210,103,254,212,
-187,162,121,72,14,13,108,106,111,218,70,253,154,120,250,131,181,151,164,162,117,115,144,48,27,98,124,7,109,246,112,147,
-79,52,199,8,16,41,57,123,87,25,23,103,71,48,146,90,216,148,207,252,175,223,3,52,230,130,67,11,245,180,94,222,
-14,150,26,225,21,106,123,16,74,43,219,67,128,102,161,156,81,254,171,65,17,205,126,218,126,25,141,69,8,110,98,165,
-76,182,219,48,108,171,255,122,208,97,163,113,18,223,123,70,100,29,43,164,66,42,95,115,62,145,88,147,139,78,69,253,
-233,115,64,227,206,105,205,68,234,138,12,103,239,245,11,120,173,21,172,150,137,229,165,147,146,142,216,215,37,148,75,218,
-120,117,108,207,162,140,218,190,150,3,241,61,205,91,200,28,74,181,171,180,7,130,50,184,181,61,75,225,182,177,23,9,
-51,146,222,160,78,238,167,208,119,56,239,151,55,44,226,175,2,138,193,40,203,133,141,184,53,176,152,203,63,13,32,240,
-31,236,237,80,205,71,85,138,199,35,47,153,211,13,101,93,148,250,190,254,127,255,238,150,132,65,204,178,138,237,239,10,
-111,36,4,99,69,33,199,178,254,216,216,98,130,146,28,171,244,34,211,36,72,201,17,73,113,30,156,118,117,195,245,97,
-138,216,21,144,55,245,106,170,185,184,252,150,171,163,38,20,190,7,204,208,235,105,235,158,212,56,96,115,65,164,133,118,
-122,178,150,48,57,100,70,160,216,221,138,226,122,143,154,101,39,191,38,107,41,165,196,97,113,149,118,90,96,37,245,249,
-133,122,248,153,57,237,167,50,231,141,8,36,54,245,130,240,183,179,247,255,17,126,70,240,69,146,224,227,249,190,200,216,
-41,158,14,0,104,93,30,223,16,37,194,152,27,111,86,117,101,80,168,185,212,28,1,93,138,199,156,110,130,182,97,101,
-132,54,51,83,62,51,84,119,189,68,72,26,17,64,135,142,122,148,239,65,210,148,243,130,25,35,184,93,109,191,216,45,
-84,15,90,226,23,236,78,120,145,155,192,29,151,68,20,209,191,124,215,50,100,114,78,122,61,242,226,122,219,129,3,92,
-69,124,31,78,176,197,251,196,166,181,214,245,130,124,120,99,157,17,12,135,242,217,135,147,80,159,198,97,43,235,177,161,
-146,158,70,0,31,79,172,154,120,144,1,129,151,181,92,47,216,176,117,191,116,157,64,254,226,60,67,30,205,33,186,193,
-13,151,108,149,117,184,52,123,89,202,203,4,12,151,146,167,79,221,28,133,166,204,127,106,84,244,160,223,170,31,48,143,
-77,196,177,162,150,39,0,123,251,10,193,208,191,239,172,163,247,17,93,48,115,48,178,82,40,130,45,161,156,242,30,237,
-13,18,119,235,48,48,137,112,193,2,191,215,164,91,231,191,29,152,76,88,57,11,227,13,254,228,67,137,158,4,159,130,
-109,144,224,178,34,251,124,26,126,231,124,92,33,230,149,55,5,37,186,184,48,24,142,123,187,238,203,161,134,198,56,64,
-209,97,233,111,123,248,237,151,144,215,73,84,208,113,43,165,84,79,248,232,245,117,173,197,205,5,184,82,122,217,154,2,
-48,96,105,23,167,116,77,165,104,17,181,17,153,226,105,28,18,39,115,254,24,219,180,228,13,244,89,4,140,143,100,22,
-71,84,146,246,51,10,200,158,229,180,12,131,38,112,171,20,63,188,182,160,16,174,162,20,201,255,101,119,107,205,163,0,
-210,77,142,5,155,183,5,139,41,21,232,25,183,113,209,107,78,62,240,161,88,134,246,171,163,117,84,88,163,248,27,158,
-161,178,103,212,157,56,136,39,168,176,156,157,179,131,34,8,41,207,96,162,114,228,205,228,241,147,52,74,170,162,62,252,
-162,130,193,96,253,22,193,211,92,109,37,189,86,127,234,43,157,203,96,112,160,30,86,229,0,120,250,78,199,197,198,159,
-10,86,90,230,247,204,135,147,11,176,254,72,191,229,187,120,230,209,79,234,23,64,10,232,92,46,192,177,54,158,122,48,
-83,126,106,212,250,0,176,40,48,50,179,102,254,47,43,161,85,238,99,108,19,76,167,175,182,234,116,103,53,176,234,189,
-110,195,145,222,187,219,95,203,92,218,162,130,77,42,142,118,114,28,173,218,44,206,229,244,114,228,110,231,158,213,127,208,
-153,86,24,165,102,182,110,64,244,187,183,16,247,252,39,192,211,16,27,114,201,139,100,41,95,141,137,116,251,103,92,103,
-181,250,88,151,100,230,106,10,188,45,182,61,183,69,253,122,130,16,104,10,56,160,127,158,203,207,12,215,29,25,82,17,
-14,234,43,72,193,106,82,99,50,23,201,42,104,151,65,202,124,5,69,112,152,215,54,248,62,92,213,62,149,12,1,126,
-195,88,163,220,211,221,216,117,129,92,35,192,112,180,216,102,28,217,79,240,65,121,5,86,89,151,57,122,100,244,202,107,
-208,156,64,249,49,243,41,120,68,95,158,2,80,239,80,25,98,23,5,178,146,20,91,43,155,46,15,101,203,241,130,122,
-27,26,87,155,191,149,51,64,17,248,121,7,23,14,168,230,213,71,59,177,11,160,201,151,222,137,40,194,235,187,170,102,
-121,99,156,95,135,115,187,163,142,226,126,9,4,239,178,0,82,165,163,154,28,19,155,10,50,92,26,252,137,93,160,43,
-138,15,245,201,148,35,57,106,26,31,217,245,207,29,244,58,220,67,208,113,14,73,127,119,108,111,193,161,1,110,230,163,
-227,3,145,41,188,37,24,129,171,150,215,210,118,241,13,231,243,236,157,68,94,64,142,226,82,105,104,101,24,181,144,234,
-175,125,109,191,107,26,120,179,133,125,140,241,75,163,255,62,132,43,143,176,14,209,120,94,192,214,104,30,107,1,22,126,
-133,87,115,80,66,85,254,96,54,44,78,124,93,78,229,72,222,188,125,6,78,147,57,18,62,24,67,39,136,33,89,52,
-33,57,142,251,78,93,43,47,247,8,255,154,95,124,123,2,141,163,23,148,95,57,220,200,114,181,212,214,141,213,104,132,
-93,244,163,68,144,36,150,165,149,123,100,106,212,42,125,30,128,211,92,170,27,125,246,16,163,74,92,202,200,69,213,104,
-173,227,45,5,57,54,247,228,97,3,117,99,34,43,130,79,221,243,161,200,129,233,177,168,217,9,206,89,200,26,135,35,
-146,103,160,172,54,49,72,53,74,66,38,194,4,115,37,10,192,75,237,203,172,43,206,62,53,98,201,165,172,82,85,101,
-43,189,161,135,229,129,243,227,48,38,56,131,73,21,228,94,208,110,221,61,216,89,44,246,215,92,196,46,190,149,80,242,
-134,222,141,81,225,63,23,21,148,210,248,71,180,12,51,245,162,188,211,21,163,155,42,172,80,56,104,123,211,77,92,247,
-53,44,50,162,114,62,245,122,111,14,2,5,175,180,206,83,235,40,58,9,197,249,247,96,73,53,167,175,174,196,197,59,
-178,253,32,43,91,46,30,253,226,106,81,104,254,8,160,198,2,206,148,47,251,104,186,56,224,221,184,137,1,229,41,69,
-171,158,175,105,140,74,214,115,105,167,111,185,104,18,12,7,245,46,215,200,17,184,23,40,42,146,4,3,114,13,34,12,
-168,156,149,79,234,144,157,39,155,139,41,108,216,82,221,208,229,26,182,108,173,82,38,47,255,21,170,200,216,37,22,43,
-125,59,175,111,53,12,51,111,109,209,22,107,53,33,6,49,174,253,117,239,89,171,81,162,56,226,2,148,34,216,63,224,
-39,209,207,244,61,247,178,11,157,7,70,71,11,112,121,165,217,53,52,104,107,199,118,164,56,208,55,242,127,206,26,155,
-181,35,161,35,67,217,117,74,255,99,142,232,68,153,19,69,233,245,174,125,249,227,200,61,233,218,227,141,254,24,130,62,
-115,138,234,205,219,27,4,132,20,28,200,145,170,150,164,43,64,52,22,34,91,238,34,189,68,135,61,158,2,255,252,84,
-185,0,176,138,171,141,134,47,227,249,17,212,142,75,9,187,46,172,230,183,11,249,53,168,40,206,144,147,49,58,236,5,
-41,193,167,129,243,106,64,35,248,20,131,172,45,233,79,41,226,210,111,40,17,214,39,0,196,158,237,104,80,164,130,123,
-252,122,14,161,156,225,30,223,68,219,24,69,126,93,6,9,37,11,189,114,85,155,87,36,27,150,233,209,201,237,96,27,
-173,25,241,150,41,128,74,55,137,24,118,133,110,213,146,214,157,206,162,132,44,51,77,20,7,245,143,177,34,150,157,27,
-21,135,164,138,136,33,133,135,5,51,27,93,210,98,201,224,213,238,204,51,145,206,79,122,249,82,72,205,209,235,255,44,
-163,165,51,213,85,8,188,137,149,17,77,72,109,133,46,112,182,113,19,203,49,76,226,32,90,44,156,9,230,109,126,67,
-148,12,154,239,247,193,131,11,5,229,147,36,137,75,134,224,67,65,114,143,156,158,78,168,222,205,239,133,208,164,159,223,
-205,67,76,203,241,197,99,16,99,18,80,2,2,34,34,168,159,234,168,140,117,216,198,214,37,134,229,225,136,42,29,13,
-34,146,144,71,27,76,41,148,32,128,223,77,5,128,247,94,224,250,182,73,179,65,237,208,148,51,243,244,99,135,187,69,
-188,102,147,159,205,126,219,219,40,195,9,205,58,178,204,39,210,123,32,50,54,18,188,189,68,245,217,156,197,131,86,179,
-164,44,197,138,11,14,2,43,34,62,129,148,125,80,178,128,178,87,63,39,207,157,172,179,81,108,82,222,30,168,230,49,
-42,41,110,92,67,92,197,232,48,201,137,72,254,98,86,75,158,229,222,73,24,120,170,227,155,96,177,59,139,195,77,220,
-209,221,129,185,18,79,197,224,174,16,205,254,234,68,40,81,173,184,62,138,56,231,158,120,205,128,109,206,6,134,208,137,
-23,247,154,252,112,103,11,102,207,29,62,149,151,183,76,190,47,32,29,109,85,100,62,45,15,146,185,142,188,20,192,161,
-41,93,154,191,62,60,2,169,100,47,255,85,111,164,30,245,131,108,199,38,149,224,80,166,92,220,78,217,140,217,131,120,
-133,28,18,217,249,65,31,67,118,227,124,135,77,200,74,207,122,69,89,94,124,32,12,151,167,113,253,222,163,121,18,93,
-184,193,104,30,46,31,168,124,59,121,77,232,118,68,114,185,124,214,7,216,47,209,185,11,195,217,54,37,193,18,95,108,
-35,173,211,82,133,33,238,222,30,124,238,112,254,226,178,153,114,204,33,249,64,204,83,199,76,249,108,253,131,198,86,168,
-117,249,135,43,27,24,13,15,54,234,220,66,206,233,255,79,177,190,248,22,170,104,69,243,127,64,185,42,161,86,122,196,
-170,188,33,59,60,201,174,212,227,138,140,9,221,172,108,137,102,251,203,105,64,251,36,119,243,208,121,180,166,120,142,167,
-237,137,95,175,253,55,206,187,77,131,66,37,193,117,152,229,147,105,165,72,237,56,69,104,181,148,89,47,77,32,143,230,
-8,235,9,114,171,97,229,133,39,27,242,232,81,69,63,148,189,51,95,157,1,115,38,112,61,101,245,54,216,74,55,172,
-236,201,22,51,215,103,124,155,181,62,78,91,212,75,64,252,184,118,17,177,214,119,191,61,25,140,80,102,2,132,198,56,
-12,25,74,132,190,114,204,120,130,59,226,200,170,170,212,0,198,99,255,67,86,106,50,164,228,100,12,122,151,253,119,146,
-112,30,174,89,14,0,209,133,88,142,247,95,137,132,172,214,157,69,222,255,151,231,126,29,36,189,15,4,191,100,4,36,
-135,207,12,48,248,125,102,173,129,241,236,199,98,160,146,21,201,162,16,239,189,152,105,160,222,41,118,70,138,172,218,245,
-140,192,114,200,25,6,30,55,123,13,108,72,153,8,125,213,227,148,133,155,80,26,89,187,53,29,31,14,5,38,185,165,
-209,76,140,163,25,148,103,142,85,108,94,190,194,78,199,200,80,153,20,190,136,10,64,81,47,122,184,13,192,212,206,57,
-235,171,52,81,159,231,72,114,86,143,56,193,86,237,147,157,136,87,245,55,138,112,52,104,132,138,40,253,144,52,14,180,
-60,209,113,224,215,99,202,135,78,129,234,198,212,102,146,225,59,109,81,111,23,202,53,248,23,110,41,240,167,221,131,28,
-85,253,120,158,71,2,202,70,174,21,104,129,237,245,90,18,255,189,113,166,136,16,21,242,144,236,15,97,232,144,112,216,
-83,80,85,88,69,62,94,144,4,209,38,214,14,148,78,79,80,217,140,70,93,81,207,177,84,103,89,176,31,180,252,197,
-124,180,193,29,42,107,174,60,45,38,223,26,153,157,102,201,35,19,42,110,96,242,60,158,58,219,50,232,128,10,160,2,
-123,137,190,95,129,62,218,195,172,177,36,79,31,234,49,232,66,139,24,169,249,54,168,89,226,44,121,36,47,103,158,105,
-201,190,185,90,37,56,141,78,61,25,205,143,216,175,46,138,183,179,116,130,127,148,42,222,126,133,182,225,210,91,226,235,
-31,128,184,178,250,223,129,156,189,113,77,38,227,147,133,97,52,177,6,178,10,88,46,87,232,93,168,87,45,80,89,97,
-36,202,69,187,202,145,234,51,239,80,141,210,222,145,250,141,186,106,174,191,89,209,109,50,232,123,57,50,51,22,227,87,
-176,146,101,246,110,89,161,3,101,69,203,113,74,69,243,248,158,83,220,32,254,36,56,198,51,254,38,56,35,48,63,119,
-114,113,195,126,40,240,114,10,107,101,154,207,122,72,8,213,50,59,165,22,236,244,59,69,176,197,183,237,3,92,230,68,
-230,156,87,80,212,184,117,104,114,242,112,20,114,146,254,250,126,242,0,174,144,212,20,25,62,34,150,51,196,10,113,60,
-129,214,25,184,218,191,210,24,237,148,87,3,241,176,104,127,169,132,215,44,69,12,245,231,57,103,105,183,179,155,31,36,
-40,79,95,173,250,195,234,184,151,72,80,206,144,144,150,224,59,201,122,4,22,199,117,186,148,209,41,160,49,251,117,90,
-85,227,58,251,236,15,192,83,211,161,74,57,212,233,85,106,3,19,12,207,91,185,75,28,125,13,97,190,50,89,50,196,
-129,84,19,93,238,255,48,185,243,237,26,12,114,253,176,1,134,164,146,86,86,187,226,173,103,238,104,178,70,126,148,105,
-93,169,218,76,182,123,111,174,119,28,171,249,4,106,108,228,187,207,131,159,18,215,228,88,176,213,102,69,52,223,136,249,
-49,22,88,207,215,32,164,82,251,125,155,225,27,82,1,105,204,252,134,23,101,205,148,217,32,204,86,70,122,26,117,201,
-156,89,136,63,231,140,96,231,198,229,248,71,97,134,144,40,83,142,116,126,154,184,137,34,114,153,46,158,157,163,122,54,
-183,97,140,136,12,95,183,12,57,14,218,35,60,142,118,35,31,97,237,212,42,58,91,151,168,195,55,173,97,40,174,70,
-89,28,81,144,5,215,231,126,247,59,175,231,67,172,1,17,229,155,122,133,194,215,19,87,133,60,19,240,120,224,92,225,
-72,79,47,152,73,78,29,182,29,33,5,176,111,176,164,229,4,128,213,154,122,49,166,135,143,78,163,191,180,166,245,83,
-198,158,121,163,139,211,243,104,192,98,79,199,39,116,187,156,239,11,201,209,142,170,188,62,101,150,202,168,16,29,83,237,
-119,152,94,192,160,137,159,71,211,18,108,154,34,59,117,169,50,188,232,227,239,221,161,12,117,112,127,135,77,218,11,157,
-89,135,151,45,200,184,85,205,122,135,33,168,191,43,178,239,67,236,160,186,242,133,74,83,37,200,212,68,14,24,147,110,
-147,70,130,145,247,137,49,71,218,219,125,96,102,38,231,98,42,242,93,187,103,190,140,228,242,11,3,238,61,62,217,124,
-9,244,8,148,45,97,56,169,48,174,205,214,73,43,68,53,125,86,86,129,102,200,155,67,236,90,180,123,121,204,184,254,
-145,57,34,109,4,109,84,237,239,61,208,82,221,34,25,3,76,156,197,130,139,34,93,124,95,197,59,105,95,36,185,10,
-154,254,1,70,134,211,102,212,183,41,98,167,5,7,121,183,124,154,176,50,96,22,238,181,220,42,130,239,99,149,248,247,
-31,74,21,92,61,205,147,130,203,252,166,192,149,192,204,78,251,26,154,35,157,149,58,19,120,83,120,116,99,4,69,174,
-129,245,34,39,214,225,15,0,205,223,81,17,140,21,43,83,141,15,138,15,163,229,204,72,108,135,65,185,63,20,244,159,
-138,94,195,91,97,23,14,152,111,4,88,41,210,98,216,182,192,4,218,86,208,186,66,79,231,78,70,199,15,254,38,82,
-217,233,128,205,41,67,115,1,70,169,29,234,236,67,119,212,161,124,17,235,177,218,132,35,69,91,130,196,30,153,85,38,
-186,140,231,31,144,6,242,249,223,72,82,108,147,169,115,238,170,187,61,76,197,89,144,104,66,76,123,3,143,63,148,45,
-248,83,229,62,197,22,245,127,102,226,111,149,156,232,71,154,153,34,129,109,194,93,199,152,56,5,94,248,234,142,255,24,
-240,170,210,252,143,133,237,131,86,56,93,90,61,204,226,211,245,190,95,201,126,162,10,26,50,230,230,15,164,48,77,248,
-147,7,35,35,216,106,104,15,113,224,73,194,3,84,26,31,126,28,46,174,47,32,213,70,94,219,249,130,222,173,129,46,
-197,82,157,122,186,199,202,134,157,132,212,7,25,95,39,171,94,57,187,152,27,135,169,255,62,251,60,70,248,229,160,121,
-232,29,123,176,136,170,128,61,33,232,45,21,221,142,108,170,101,144,15,249,85,87,0,159,212,244,22,222,52,103,190,9,
-153,79,163,182,13,229,80,203,25,23,171,24,37,197,205,200,114,211,249,47,84,177,61,12,83,145,213,40,189,253,81,114,
-66,181,49,69,154,1,230,123,67,66,145,54,184,189,196,178,66,38,184,124,102,8,217,235,147,212,185,246,228,199,13,133,
-216,179,128,85,19,62,52,25,108,3,234,209,241,179,128,248,148,15,75,214,115,16,35,123,99,227,197,240,48,130,188,109,
-213,238,183,32,151,234,191,34,79,135,165,27,73,5,183,151,105,137,206,51,149,132,76,12,64,173,225,147,63,174,187,236,
-59,173,42,91,24,210,147,153,78,188,66,234,28,141,180,184,159,137,128,231,232,216,249,169,179,80,30,233,123,117,78,191,
-115,1,195,112,112,180,24,162,53,242,0,219,194,39,243,38,161,189,37,14,11,16,219,179,50,50,177,205,177,47,116,243,
-11,159,122,89,233,13,163,95,209,146,216,132,79,6,36,71,188,52,154,61,28,131,11,52,158,230,106,105,38,252,152,140,
-237,202,69,200,154,7,202,164,108,204,231,202,161,168,205,232,8,214,144,194,114,18,189,85,49,248,78,231,136,9,222,118,
-99,190,196,111,204,215,95,74,49,250,165,126,252,0,152,38,52,103,241,26,78,107,91,162,6,197,204,89,49,128,43,247,
-216,106,164,236,139,224,62,55,51,1,211,206,17,129,20,147,217,93,90,103,100,107,214,190,198,61,136,230,249,125,201,23,
-231,88,71,138,97,211,242,41,2,21,76,45,96,58,101,190,108,13,51,97,48,200,101,122,19,185,244,53,200,1,195,76,
-219,81,82,154,210,107,118,98,198,103,189,130,156,246,129,129,160,84,161,5,45,197,235,14,181,186,21,122,220,6,1,170,
-197,89,187,19,215,69,87,19,193,225,137,35,7,122,137,45,122,26,33,46,98,166,252,16,205,71,190,140,237,171,10,129,
-55,176,239,231,246,126,54,180,252,220,195,103,121,99,233,132,230,122,134,59,92,253,243,247,7,187,73,67,11,61,71,77,
-151,255,53,54,11,193,153,153,137,181,228,224,36,218,78,72,22,127,62,225,6,36,227,132,13,89,56,254,52,254,87,29,
-244,193,255,55,143,129,48,188,247,172,132,253,58,11,188,124,5,88,254,58,132,26,105,235,119,72,87,74,85,223,212,81,
-198,143,243,41,27,165,144,87,169,195,55,165,217,130,106,15,223,105,30,14,190,179,189,130,27,31,171,96,3,247,133,109,
-13,83,246,165,58,119,205,59,98,141,238,163,116,200,232,196,74,155,90,203,194,13,11,82,64,94,224,231,131,29,208,87,
-126,161,160,123,23,139,66,166,106,244,180,103,21,44,76,219,1,46,95,217,233,166,230,200,252,57,242,191,13,139,2,125,
-32,95,89,136,247,207,16,53,203,160,110,226,78,113,109,9,77,75,101,114,109,73,172,16,182,211,191,225,27,140,37,238,
-75,46,170,50,7,174,129,95,15,39,116,251,55,208,193,113,213,133,196,94,243,74,44,239,123,110,172,183,58,185,8,228,
-229,87,236,228,112,186,49,145,144,181,181,31,228,250,200,254,247,152,156,226,212,192,63,99,207,112,0,67,10,197,37,185,
-237,245,160,13,228,142,134,34,9,116,26,130,221,84,158,22,50,182,115,245,88,174,190,235,149,88,196,165,203,66,1,251,
-129,143,108,183,70,156,254,34,114,169,37,210,227,152,75,187,231,104,132,117,172,206,163,216,59,20,244,100,236,29,36,172,
-12,9,148,245,64,188,125,173,31,124,233,64,88,72,32,61,48,146,103,31,167,34,68,250,175,252,152,151,176,35,113,72,
-179,220,102,50,243,182,146,231,71,41,154,92,2,227,155,0,36,96,206,111,135,16,186,246,133,126,241,232,36,146,89,240,
-159,21,61,22,89,255,95,28,84,206,244,228,182,218,55,81,28,96,242,221,211,156,20,25,247,94,170,91,16,42,177,41,
-231,53,94,14,103,195,235,141,92,171,72,249,67,211,80,200,203,105,56,129,73,173,161,240,113,171,39,79,101,83,249,30,
-104,129,181,9,102,251,170,7,156,66,255,134,67,110,220,73,78,220,147,15,15,222,62,86,251,105,140,252,167,150,147,162,
-141,199,180,222,159,62,228,42,57,201,152,90,172,139,6,219,83,137,4,39,93,132,155,205,156,77,246,149,26,207,110,241,
-120,92,152,216,185,114,238,120,150,115,98,93,187,107,184,230,93,176,139,120,239,7,229,172,126,7,209,215,74,204,196,198,
-120,179,80,40,56,136,17,9,109,48,207,24,252,71,60,32,22,196,171,153,241,99,106,43,17,92,185,13,119,162,164,17,
-151,62,61,28,182,65,134,116,151,147,207,170,25,135,116,83,181,191,122,100,214,31,52,148,231,76,15,225,246,249,158,44,
-13,248,149,46,62,212,237,2,212,179,83,8,112,130,206,4,212,161,177,238,212,162,0,21,200,93,9,26,152,199,198,79,
-180,169,253,104,153,81,35,46,196,163,139,233,81,131,47,197,177,83,120,108,233,62,55,76,109,146,199,246,2,148,232,93,
-66,159,238,113,157,245,139,0,11,70,23,86,142,253,48,188,0,25,0,80,39,150,112,229,231,111,53,168,49,6,144,189,
-217,49,185,77,219,94,104,167,37,71,47,168,52,110,118,233,143,107,224,35,218,107,185,194,249,42,236,107,190,35,56,143,
-32,94,230,46,69,164,218,196,126,168,19,12,19,37,7,164,210,78,251,148,190,231,23,90,131,93,45,69,151,115,87,80,
-148,150,126,4,146,149,188,50,220,64,231,183,118,100,17,16,235,46,206,149,123,79,145,31,108,96,163,7,222,118,212,120,
-22,41,50,132,206,138,11,88,246,114,12,210,146,41,113,177,217,158,187,202,214,185,234,192,240,97,116,135,91,181,5,130,
-247,221,64,11,39,205,197,42,16,168,140,189,204,189,252,200,18,27,144,252,155,232,2,222,18,13,68,42,188,152,199,194,
-212,128,154,190,245,206,13,7,162,179,25,94,223,26,30,215,41,57,34,37,59,198,88,126,220,131,72,46,68,164,204,36,
-123,187,127,250,132,115,240,254,255,37,221,28,115,138,245,98,73,128,249,11,252,18,148,140,254,157,244,177,24,37,150,117,
-128,7,77,23,135,33,10,216,42,160,179,219,93,158,217,107,189,216,187,133,169,187,189,4,113,74,172,30,158,15,6,89,
-197,69,13,129,209,75,169,236,238,48,227,220,63,210,184,63,13,168,8,101,143,123,104,243,230,121,226,65,118,211,18,168,
-252,237,93,69,110,65,233,41,67,34,83,10,250,171,163,190,143,161,124,68,87,185,225,81,189,55,71,125,241,241,245,40,
-250,148,69,183,136,41,55,79,6,196,20,213,81,14,72,230,93,185,35,64,133,61,239,3,77,41,11,251,149,29,55,176,
-71,211,26,139,206,75,241,33,50,62,76,144,95,68,210,215,65,142,209,204,169,118,165,212,25,57,237,70,6,245,155,226,
-135,206,237,223,181,129,173,140,253,177,85,186,63,135,58,127,163,29,127,43,116,243,157,252,129,225,88,71,161,149,138,78,
-46,65,199,166,173,56,25,128,30,19,102,113,121,212,89,237,129,211,92,173,222,198,197,15,3,210,82,221,35,198,200,9,
-36,153,200,34,130,206,4,169,84,187,25,150,132,137,88,194,166,25,243,35,20,117,254,78,217,175,234,220,238,213,24,63,
-97,168,14,247,145,230,217,231,35,108,190,96,45,191,242,38,87,182,219,146,227,61,33,96,41,67,58,125,81,150,85,92,
-222,170,201,87,93,79,234,250,167,253,239,29,151,4,44,223,55,132,215,19,100,108,235,157,152,56,40,76,205,212,106,158,
-240,119,248,185,100,201,200,111,27,151,171,28,171,246,4,156,176,231,192,98,64,248,189,48,241,180,86,228,120,6,154,109,
-207,118,139,236,165,132,81,247,221,121,1,39,34,86,79,238,60,106,80,93,22,66,141,42,245,54,64,196,33,38,158,61,
-86,167,63,38,169,27,132,64,66,36,223,124,10,39,177,21,97,21,243,97,28,43,10,219,202,100,146,188,75,246,205,29,
-174,7,154,42,195,27,18,110,186,118,32,132,85,244,17,131,232,105,67,183,72,10,132,223,241,223,45,47,55,249,207,175,
-22,183,238,127,73,147,204,56,210,242,135,75,30,141,127,243,184,240,77,153,58,46,104,109,34,253,28,234,181,244,168,115,
-149,181,86,220,219,173,229,103,120,210,35,93,11,192,104,54,114,6,45,120,248,115,59,4,119,7,186,63,200,239,118,240,
-254,80,200,121,77,199,133,115,183,166,40,252,3,19,192,118,198,222,155,17,214,131,19,252,72,149,32,65,209,86,187,186,
-108,133,195,222,175,88,36,128,4,103,1,161,99,6,15,42,16,38,212,40,251,216,8,26,39,183,245,97,111,228,185,144,
-209,94,250,98,31,2,188,45,183,238,142,149,97,255,224,172,225,207,184,201,97,151,154,55,124,121,165,108,48,91,148,2,
-33,82,208,250,0,208,250,136,192,178,157,25,2,58,19,197,0,17,250,180,23,251,82,201,18,203,145,66,156,159,50,62,
-44,112,52,77,192,89,47,88,99,149,196,194,213,245,214,195,205,231,62,78,127,157,247,124,59,165,195,45,194,206,67,6,
-160,57,18,223,177,213,15,97,120,67,181,160,164,10,159,175,168,227,105,3,208,6,27,200,111,58,184,33,13,153,140,191,
-160,14,164,245,28,148,189,164,12,224,207,240,147,131,9,18,76,231,78,72,212,24,218,63,244,102,7,167,243,165,171,24,
-73,247,5,9,153,4,200,161,191,128,7,89,232,233,137,88,58,81,64,39,16,201,145,42,203,148,0,40,12,124,52,7,
-139,165,80,139,194,68,37,61,7,142,66,128,120,55,253,197,105,21,213,220,46,118,244,221,46,146,45,167,151,4,193,216,
-179,199,128,105,129,246,6,171,226,180,126,115,188,47,103,103,170,84,245,141,26,132,124,124,47,217,217,215,15,247,6,245,
-210,13,118,149,124,208,110,81,131,169,145,168,16,119,170,200,53,205,254,243,109,183,184,24,115,46,251,221,129,38,227,80,
-27,204,173,44,125,4,161,79,46,76,102,142,146,88,165,136,54,141,133,131,122,173,235,127,61,239,96,42,203,204,27,111,
-203,101,245,106,161,160,44,138,251,235,177,120,201,165,178,239,60,202,40,127,189,211,136,86,86,159,46,155,170,241,140,165,
-129,181,200,58,220,165,70,205,91,177,242,11,233,135,49,187,166,194,75,97,221,197,8,253,95,64,87,62,16,32,56,210,
-176,44,51,106,13,26,119,32,100,88,15,228,194,40,218,241,101,29,72,68,30,94,241,102,70,81,105,148,41,88,62,113,
-101,37,178,207,79,146,91,244,58,143,245,43,128,252,35,14,87,206,93,237,201,47,48,188,151,58,111,234,205,241,65,200,
-11,121,59,119,38,172,108,3,237,28,34,62,86,219,246,131,130,89,106,126,195,177,228,153,241,225,101,182,54,34,139,84,
-196,70,100,89,31,64,178,240,234,174,91,176,232,166,25,81,60,38,94,120,97,216,178,18,80,42,104,77,204,225,220,225,
-112,98,132,210,58,68,162,70,104,166,3,154,0,101,230,240,232,197,20,238,74,250,244,147,68,229,176,19,181,30,101,114,
-42,56,7,88,154,70,163,169,96,247,212,31,71,224,159,168,153,125,37,172,25,78,114,60,126,168,78,77,156,185,144,36,
-124,18,68,32,198,150,0,219,109,112,8,163,101,89,245,102,66,222,152,97,232,27,52,208,20,132,75,102,18,56,97,143,
-173,63,227,51,3,24,228,57,90,121,114,130,252,79,164,250,140,141,67,84,149,227,44,53,165,162,186,179,195,3,238,84,
-51,9,45,116,168,133,130,187,250,238,150,112,180,168,167,140,118,71,139,59,250,21,145,221,44,127,144,178,81,201,109,242,
-250,117,131,60,107,189,179,1,254,56,139,148,115,139,222,255,5,52,185,196,16,191,95,236,68,164,149,4,133,89,141,235,
-110,39,177,27,204,211,11,254,54,24,234,26,127,48,55,110,211,246,18,68,157,151,219,181,83,180,40,73,187,142,39,5,
-102,92,193,144,210,230,142,1,59,91,110,238,145,199,79,216,107,216,79,182,26,21,203,144,83,6,79,68,61,56,113,250,
-187,50,66,140,242,247,28,148,134,143,85,246,85,176,198,134,166,252,38,136,49,42,123,102,196,32,23,180,17,10,60,58,
-103,137,102,11,144,19,97,157,105,191,168,156,116,114,35,98,111,40,195,93,59,53,82,253,84,167,208,192,132,60,18,159,
-157,98,45,64,201,219,66,97,5,150,211,221,145,116,219,82,96,67,189,212,89,136,16,15,63,10,2,92,76,250,54,191,
-176,245,133,68,253,31,159,138,75,201,157,156,219,246,16,125,52,218,93,93,16,176,50,112,179,185,240,191,85,90,209,183,
-108,68,183,232,199,70,130,187,199,77,11,97,12,145,241,159,227,171,120,43,7,207,247,109,218,209,131,100,140,106,245,206,
-182,133,90,113,238,69,104,87,120,250,130,39,195,18,227,131,125,52,228,207,64,152,24,174,239,4,152,50,83,49,72,113,
-214,227,63,231,163,68,28,185,226,207,26,217,169,137,74,200,79,82,20,44,102,96,188,27,242,127,128,141,113,191,92,207,
-96,232,170,223,67,45,1,62,117,67,168,215,241,48,186,40,178,67,23,25,11,182,223,166,198,100,172,2,18,247,105,215,
-203,44,71,229,222,8,193,83,88,63,119,180,229,100,244,53,148,61,115,68,158,227,239,236,123,201,205,77,171,185,150,223,
-229,75,158,40,215,74,124,115,98,103,109,35,91,199,67,217,218,10,85,63,162,139,246,68,194,50,209,123,180,163,34,151,
-110,195,139,136,142,221,48,47,81,49,143,133,134,152,192,0,0,141,193,35,248,9,98,224,6,140,203,121,123,247,185,172,
-87,86,226,177,148,134,230,240,207,227,122,60,235,89,3,2,123,233,227,165,52,24,150,208,39,140,179,131,12,245,99,247,
-152,108,227,83,153,2,200,173,83,14,85,101,78,3,129,196,207,137,55,63,66,218,108,199,48,7,17,125,26,18,129,148,
-72,7,46,94,159,188,110,38,68,145,205,27,200,109,215,111,93,150,238,160,244,46,72,44,85,231,158,8,114,200,195,152,
-218,2,45,231,125,17,152,42,19,3,177,216,255,13,254,205,238,112,214,133,247,196,202,13,137,239,246,4,36,36,124,252,
-170,66,55,124,202,70,97,189,125,61,219,239,158,167,138,195,188,147,95,110,148,237,160,82,18,114,212,29,224,20,181,188,
-83,121,191,58,123,186,159,149,178,238,175,237,61,219,232,121,53,51,98,166,168,178,37,46,199,171,203,172,188,245,89,228,
-132,159,171,33,166,127,150,224,14,44,112,87,254,231,152,182,16,233,169,10,137,240,9,202,17,225,194,96,183,205,153,173,
-69,75,85,9,78,206,56,163,126,177,46,217,158,209,250,200,53,51,233,8,248,27,15,133,193,178,66,245,176,138,52,132,
-137,71,65,136,60,180,7,211,196,44,236,89,11,56,174,66,20,5,185,130,148,59,168,75,23,227,51,67,173,137,228,177,
-123,35,10,141,63,65,221,189,236,218,129,112,6,249,144,144,205,47,160,56,98,149,109,153,4,29,43,109,92,47,220,229,
-17,6,206,238,99,88,96,76,4,227,140,127,54,160,75,84,54,155,202,131,229,73,159,97,77,239,17,54,33,71,153,170,
-166,126,74,203,109,127,106,170,193,213,144,78,1,22,201,199,133,135,138,198,4,202,140,118,154,61,56,122,5,82,37,41,
-87,134,165,235,223,251,140,40,238,232,154,119,104,47,106,6,190,185,84,106,202,126,211,86,65,247,239,96,243,151,91,108,
-127,111,77,250,93,111,84,70,47,164,40,152,243,46,8,184,79,219,230,167,189,149,133,198,224,187,32,141,2,33,109,119,
-150,70,236,134,79,160,212,176,210,96,168,219,94,156,237,139,175,96,81,153,36,223,147,183,206,52,239,74,45,61,240,182,
-175,110,41,112,73,54,174,13,12,26,118,114,211,126,250,236,84,72,188,10,66,36,209,214,34,248,241,235,141,130,243,207,
-73,58,209,204,232,216,20,78,196,200,190,178,116,205,24,52,74,53,26,33,180,19,120,92,6,189,182,15,214,83,190,53,
-220,154,52,248,133,30,167,101,147,123,9,129,192,211,191,38,122,19,30,144,153,68,99,39,4,78,83,224,30,99,176,85,
-158,24,122,26,226,12,180,88,44,250,246,67,4,29,252,80,20,187,174,4,171,156,153,141,248,168,37,128,43,87,96,57,
-76,24,18,150,15,192,67,206,138,254,130,149,62,201,70,59,24,125,101,44,170,95,252,127,7,116,22,93,203,37,73,89,
-207,14,240,128,253,6,160,70,221,97,186,103,64,171,212,216,217,69,138,165,148,201,243,75,132,96,65,71,101,18,6,167,
-104,64,101,48,8,207,66,105,82,102,181,170,223,3,154,78,86,248,159,244,253,109,66,146,69,146,106,153,158,161,199,241,
-128,165,54,168,163,219,84,171,140,185,13,48,49,105,109,88,163,48,129,116,115,143,171,107,91,20,97,89,15,171,110,20,
-248,216,225,228,214,124,165,244,81,72,171,59,245,131,52,233,151,223,234,51,80,105,74,251,216,88,85,176,35,238,97,117,
-242,176,74,220,123,48,70,122,185,110,77,11,139,122,94,109,136,188,118,136,19,31,69,44,202,75,11,31,52,132,1,221,
-227,132,76,232,114,200,19,252,6,121,28,22,66,199,131,87,250,4,19,249,85,182,93,116,189,237,247,28,24,11,155,248,
-169,206,22,147,42,95,91,211,189,212,229,153,52,123,35,191,250,140,130,111,73,135,185,146,65,249,162,205,162,122,89,185,
-244,51,46,25,228,44,127,114,152,255,4,42,101,176,151,4,137,28,132,167,77,205,124,254,234,77,180,174,255,79,111,159,
-188,128,137,21,34,55,11,165,100,168,69,189,245,165,45,222,53,156,191,80,30,155,209,17,101,138,238,187,45,190,2,44,
-145,39,60,186,61,242,1,199,217,173,20,125,197,27,5,43,212,157,240,98,82,168,233,67,204,221,140,61,0,255,145,252,
-126,9,235,253,99,145,214,95,87,246,83,50,58,194,63,208,242,107,69,167,42,55,196,198,120,193,112,17,127,171,7,115,
-175,250,102,150,174,52,57,224,215,119,179,228,62,181,19,79,6,102,52,57,41,50,228,95,143,183,28,70,99,111,169,73,
-171,13,197,125,81,100,20,164,238,197,3,40,251,58,13,218,29,220,16,113,41,99,110,24,120,125,213,176,145,0,160,75,
-151,237,41,191,75,60,218,171,186,42,125,206,101,87,159,180,235,62,173,175,70,209,129,220,201,96,173,34,229,45,190,26,
-166,215,88,140,163,20,70,221,72,244,168,134,56,208,186,208,76,159,167,225,237,248,250,149,230,218,237,105,106,27,158,133,
-164,60,218,57,82,96,178,189,121,90,193,205,159,225,149,69,248,187,51,59,111,210,7,25,44,174,122,41,95,42,224,31,
-114,253,255,133,73,140,32,122,31,28,44,176,184,150,105,134,199,2,74,40,97,69,1,172,191,201,82,58,79,245,251,9,
-180,236,128,15,94,71,189,54,54,218,19,253,185,10,83,78,6,143,88,1,29,117,1,231,101,255,39,247,98,192,142,231,
-152,26,233,58,20,195,34,62,35,249,191,74,180,218,162,210,244,134,99,38,99,23,204,55,171,174,75,15,180,221,149,143,
-106,71,127,28,63,28,144,7,253,41,23,235,29,45,252,11,4,130,57,233,29,59,166,172,126,132,143,42,1,209,48,251,
-238,48,139,139,139,204,216,142,52,73,17,207,125,42,52,130,252,50,194,203,134,33,228,16,163,18,168,48,96,120,1,193,
-156,234,200,211,93,253,159,24,218,183,178,116,38,199,255,247,86,160,156,51,196,250,236,136,69,32,92,127,171,206,82,224,
-13,41,72,48,128,170,25,43,114,88,131,42,59,150,157,10,191,194,90,49,156,255,108,49,3,74,42,231,200,194,107,200,
-17,67,91,82,189,254,103,117,230,204,117,0,194,97,12,238,75,8,243,83,19,159,57,60,150,156,203,40,17,240,184,151,
-116,94,244,204,70,244,250,204,34,134,78,131,179,53,3,112,143,66,248,113,173,212,49,98,147,217,237,168,94,215,68,87,
-98,81,116,199,94,155,218,228,190,112,219,45,200,210,33,231,234,249,0,143,76,254,137,10,18,27,54,42,74,134,97,232,
-215,172,9,34,210,203,148,158,230,94,221,135,74,47,57,216,196,30,152,151,207,217,244,52,44,192,136,141,105,197,167,148,
-116,16,32,226,64,243,52,141,8,127,4,1,19,99,99,162,114,147,174,135,200,176,64,67,241,206,53,218,95,104,228,72,
-18,209,2,169,49,167,64,209,10,20,31,106,133,234,104,145,46,38,13,153,214,95,129,209,125,30,246,62,195,203,180,242,
-58,2,182,154,133,47,48,212,172,113,255,134,97,95,1,85,240,42,13,55,233,178,182,57,178,157,124,41,103,130,223,37,
-241,24,108,80,134,209,25,162,232,106,99,47,113,135,166,30,81,79,36,135,238,169,211,16,185,248,238,143,20,12,105,122,
-233,178,66,137,104,76,81,60,180,67,24,30,52,255,172,195,163,42,81,16,246,110,26,66,79,129,34,69,8,63,234,145,
-236,97,89,206,201,222,12,54,111,88,101,140,252,111,163,165,24,181,63,118,245,125,116,75,228,157,153,239,41,191,185,89,
-18,48,245,86,54,211,247,20,155,97,249,116,85,17,240,166,89,129,153,37,178,169,163,69,255,70,11,235,207,102,83,40,
-232,119,66,246,118,68,13,60,223,167,242,191,119,91,89,166,29,186,106,14,102,85,230,204,240,238,202,94,62,17,216,201,
-81,229,50,63,233,28,239,151,222,21,220,111,121,149,117,70,234,74,96,98,6,114,212,57,138,124,48,125,93,18,204,25,
-210,69,55,200,227,137,236,12,200,194,123,120,225,187,45,89,27,198,92,82,235,80,206,86,27,237,78,145,226,245,176,123,
-159,36,171,107,126,189,165,68,169,35,112,124,93,189,110,52,57,57,35,115,251,153,153,142,14,113,16,97,59,216,211,179,
-46,231,215,129,90,168,0,27,237,69,44,60,119,59,91,45,139,100,96,120,120,222,241,37,47,189,34,77,51,245,222,177,
-11,89,146,219,145,67,140,146,24,52,196,204,57,232,93,47,222,199,61,209,192,49,230,2,149,19,45,207,159,207,201,19,
-131,122,25,105,121,169,192,229,248,190,72,230,219,169,239,141,199,245,34,151,227,214,41,17,98,210,113,251,171,120,226,73,
-75,188,41,25,88,65,238,225,145,33,240,56,169,179,43,241,122,144,245,81,42,75,212,51,179,166,169,58,180,63,171,227,
-65,238,75,9,66,18,53,242,95,174,246,84,175,215,12,67,132,146,17,97,103,149,235,227,132,83,6,32,228,234,186,128,
-49,228,31,130,180,22,163,22,207,175,62,161,22,119,234,221,154,9,137,161,80,192,249,139,182,0,1,110,173,165,186,211,
-14,223,86,22,121,219,142,233,127,243,124,112,72,206,106,202,121,130,198,106,127,136,108,131,78,70,66,144,254,60,148,36,
-168,25,34,100,105,208,200,238,153,12,138,39,78,196,227,23,170,45,207,137,41,209,205,60,105,108,69,166,122,213,249,140,
-145,99,131,157,129,113,124,97,111,34,17,75,249,107,32,9,203,189,13,5,69,130,121,44,222,171,80,134,42,119,30,170,
-202,127,203,92,23,89,89,61,184,4,109,14,59,2,80,26,231,48,174,60,164,43,219,167,99,191,30,206,239,199,102,109,
-238,22,115,122,231,249,79,183,34,238,48,161,22,241,192,195,181,27,31,193,187,29,117,204,237,56,230,56,210,124,155,158,
-136,49,217,221,11,77,84,29,59,30,233,244,168,232,40,196,206,161,22,56,52,228,210,115,88,58,97,35,85,40,186,53,
-44,197,21,209,203,124,203,104,61,77,164,210,132,171,72,127,203,122,90,88,39,99,71,224,248,42,101,206,147,243,117,21,
-214,127,34,106,40,75,2,128,92,88,116,121,76,132,36,134,177,109,240,115,87,93,45,176,97,37,74,169,148,222,192,37,
-23,68,61,247,136,78,18,8,41,21,142,243,196,87,195,255,166,126,44,222,58,157,128,214,148,169,154,124,34,4,75,13,
-230,252,66,216,237,2,149,116,217,124,190,57,57,179,34,122,187,198,152,6,120,35,97,21,7,122,97,226,200,96,143,53,
-245,174,229,213,91,75,50,205,104,71,19,124,182,164,103,136,159,83,230,169,195,13,121,103,158,13,189,197,147,129,0,69,
-156,80,8,243,14,61,125,229,185,30,160,200,81,148,72,3,226,2,186,171,160,211,153,64,60,243,216,94,31,40,77,112,
-28,249,161,252,96,236,166,183,255,161,191,121,167,69,232,73,252,240,55,24,253,214,107,207,65,200,171,198,187,176,157,208,
-221,45,140,221,36,155,192,35,98,137,239,224,58,87,241,43,87,101,114,251,25,198,9,174,157,209,151,222,159,54,131,136,
-31,248,23,112,27,120,60,50,151,56,198,99,68,197,151,52,98,208,137,42,247,168,232,69,127,195,156,224,7,39,196,31,
-122,31,9,53,96,159,46,157,96,232,68,182,104,155,247,94,39,90,189,43,189,250,239,103,202,240,137,154,26,251,81,222,
-227,51,81,153,206,133,6,161,219,203,107,53,201,102,174,246,204,6,252,6,180,255,233,113,146,133,24,252,114,253,141,224,
-14,202,177,194,67,238,20,37,217,88,164,20,148,154,248,227,98,200,17,156,115,115,14,9,168,130,234,67,187,61,18,242,
-155,31,92,100,190,42,211,7,32,3,52,85,73,120,26,130,165,45,37,130,60,72,186,85,230,26,152,93,152,49,84,29,
-76,35,201,251,136,103,26,78,219,59,167,17,246,65,152,76,177,37,100,249,240,45,133,135,42,195,191,198,96,219,34,98,
-218,1,133,234,185,160,130,145,124,224,188,194,87,161,99,92,15,164,87,136,87,36,201,93,205,39,140,197,37,171,245,7,
-181,111,32,131,218,129,110,249,200,199,150,107,81,236,157,8,135,141,199,21,125,66,221,10,171,14,7,161,225,145,11,214,
-26,36,110,197,132,199,251,127,162,70,86,50,164,2,154,201,167,224,10,44,195,214,163,198,62,121,42,146,247,36,16,107,
-95,199,125,173,235,20,199,132,183,181,176,31,236,117,34,196,74,180,149,80,124,246,88,87,151,6,124,198,107,119,121,63,
-158,93,157,88,23,164,219,218,207,87,169,68,152,148,7,134,11,242,45,167,2,53,149,210,122,120,63,150,172,190,204,178,
-207,50,178,38,60,116,227,108,175,197,77,124,242,237,11,176,232,213,134,75,41,136,3,181,92,60,139,77,86,174,96,142,
-14,175,159,39,82,198,132,208,2,52,144,180,87,130,179,119,131,213,43,254,102,24,100,49,68,22,214,4,73,17,1,252,
-30,125,15,141,110,120,27,235,163,20,35,100,243,40,216,142,37,186,34,123,115,220,57,206,23,1,32,238,162,126,51,243,
-89,109,145,181,81,64,150,75,195,5,161,56,9,105,82,145,217,19,103,115,106,100,234,216,54,234,135,90,136,64,141,118,
-202,176,40,146,102,121,187,71,251,47,155,214,88,41,188,201,92,186,205,49,182,220,248,221,100,203,68,248,33,222,159,225,
-123,140,73,206,71,221,200,164,229,136,171,237,201,179,12,129,197,226,163,41,138,171,182,13,13,229,175,158,64,81,235,170,
-105,112,247,9,134,44,1,146,129,168,142,69,34,113,44,99,20,55,180,237,176,126,101,73,243,71,207,215,162,102,148,103,
-205,2,19,201,121,178,44,173,13,166,206,74,243,209,215,34,65,5,139,103,72,82,182,134,59,37,192,162,175,18,194,210,
-89,168,74,174,172,56,77,236,27,95,239,203,255,102,27,105,122,201,241,1,242,49,142,169,89,212,87,163,205,249,47,141,
-147,0,15,180,182,102,176,65,203,58,177,4,169,249,121,232,254,53,216,225,58,177,240,142,190,77,217,7,189,157,70,107,
-196,117,89,28,59,58,93,74,179,255,204,24,58,206,153,190,157,59,110,121,156,148,45,243,161,224,60,231,83,104,200,181,
-58,227,188,251,224,36,227,143,129,128,252,207,181,171,239,201,52,193,154,148,175,10,120,116,79,127,208,133,119,98,84,44,
-98,252,112,16,50,86,212,170,174,21,51,36,239,166,36,92,202,6,77,223,169,227,141,145,32,69,159,180,116,104,187,118,
-198,17,255,35,70,44,156,230,149,169,208,7,164,95,147,179,186,41,45,16,134,55,194,135,16,58,133,8,93,188,164,218,
-175,236,24,51,230,50,179,167,76,70,108,139,0,186,205,149,249,75,125,228,78,41,209,169,190,132,225,11,170,37,198,29,
-161,67,106,187,239,172,109,118,1,176,59,65,239,139,2,245,58,90,156,217,55,228,81,98,243,120,75,59,139,63,163,49,
-25,233,151,17,31,42,45,121,137,96,82,114,180,25,124,35,129,252,17,9,47,226,248,248,165,211,244,176,163,138,229,133,
-26,56,32,158,194,121,149,50,166,222,89,202,200,169,124,75,105,156,138,56,143,61,40,175,160,65,210,174,23,50,193,21,
-221,22,114,140,82,57,190,251,249,196,248,149,242,141,188,208,135,177,191,75,144,167,100,52,75,206,58,173,221,252,198,154,
-48,56,151,72,24,50,68,12,147,246,216,17,168,253,118,167,203,84,40,159,169,203,67,186,45,119,0,236,17,104,66,153,
-68,163,254,219,11,149,198,162,51,12,122,90,90,221,41,14,237,58,190,18,75,162,121,88,254,27,214,100,158,44,200,228,
-13,182,85,102,47,199,68,9,117,46,87,164,250,63,7,111,29,162,128,135,30,48,234,82,183,74,157,174,192,240,29,0,
-137,222,239,26,11,222,23,213,189,13,24,108,224,91,89,193,66,26,9,67,110,128,8,252,164,11,37,230,4,106,187,180,
-86,184,130,68,140,69,41,131,161,174,130,195,191,79,122,166,99,177,195,173,30,162,38,151,231,75,255,121,230,229,76,255,
-92,33,60,95,17,2,73,118,234,146,195,144,1,251,12,254,173,157,121,81,63,131,115,242,115,19,68,240,57,129,202,211,
-154,241,191,37,103,72,52,149,36,58,142,222,218,157,116,160,13,162,150,11,14,137,253,38,39,232,169,98,106,48,58,50,
-77,143,181,239,144,166,89,190,205,237,37,102,67,66,106,225,37,63,180,194,184,108,131,232,72,30,232,229,10,82,187,217,
-133,149,97,198,22,34,155,202,136,17,219,65,22,59,96,120,112,209,176,253,164,143,255,34,188,108,153,211,238,71,100,73,
-83,242,211,197,140,28,14,173,161,51,23,34,140,115,48,200,218,53,146,215,53,148,195,56,204,79,190,158,125,40,151,203,
-62,214,187,80,142,101,135,225,159,192,20,224,229,172,238,178,19,211,232,214,146,52,133,177,233,249,31,153,72,108,59,200,
-99,171,19,192,213,182,248,223,141,122,255,18,247,235,125,60,74,108,155,207,123,187,57,217,128,87,150,48,210,226,154,29,
-87,202,35,170,6,197,89,11,5,211,145,4,223,107,19,129,56,39,171,125,171,182,71,181,12,191,60,165,213,250,49,219,
-126,45,226,253,217,114,207,184,174,28,102,200,131,121,180,159,59,77,193,190,61,200,26,122,203,209,51,125,234,183,205,133,
-249,255,254,186,18,249,87,223,186,150,134,194,243,227,228,192,2,31,166,112,243,200,148,238,183,59,27,239,221,167,188,129,
-191,174,209,60,0,162,252,230,125,56,107,70,81,75,143,170,87,92,224,226,155,60,30,3,8,170,32,192,6,69,220,180,
-20,195,228,170,242,197,71,132,16,159,235,2,88,148,47,14,248,67,34,110,231,53,0,44,96,133,7,110,29,4,211,225,
-212,218,16,140,144,202,172,6,132,120,106,117,132,38,79,49,37,174,135,201,199,55,217,123,0,17,133,213,79,162,116,17,
-134,236,23,126,54,237,92,208,132,115,185,74,0,174,243,139,211,187,170,69,195,252,93,167,194,162,92,118,105,136,15,147,
-1,139,57,24,41,154,195,58,68,40,135,14,88,222,187,26,78,156,2,198,177,47,100,19,12,198,240,225,4,5,52,184,
-223,36,74,62,167,36,65,12,145,162,124,234,111,126,229,87,17,185,43,107,37,252,109,71,23,246,181,244,180,194,188,84,
-31,158,202,226,69,27,50,62,19,76,50,40,73,160,201,134,211,1,69,222,71,148,125,0,229,129,193,110,48,168,81,80,
-209,89,205,22,108,77,27,93,4,233,173,56,218,22,64,126,212,243,182,214,41,125,247,136,18,25,1,45,240,58,101,217,
-251,218,53,224,13,43,112,197,16,57,243,81,54,57,21,215,208,142,40,48,98,178,220,185,203,178,217,106,192,39,243,22,
-169,138,45,13,233,23,146,254,200,2,89,214,18,159,195,146,79,63,118,144,82,97,149,185,4,44,48,69,199,205,27,195,
-190,133,198,85,181,72,109,51,212,134,9,104,178,184,103,196,147,42,160,54,143,171,116,144,182,201,157,123,25,156,68,68,
-104,159,186,216,139,251,125,128,47,56,172,51,213,43,165,26,82,91,137,103,242,172,68,94,250,108,80,177,138,7,232,95,
-220,55,192,12,175,121,210,125,9,160,241,125,199,211,42,119,185,140,9,96,56,25,70,160,20,100,128,4,255,222,198,72,
-92,50,119,251,185,57,83,25,192,56,42,165,78,94,32,216,54,88,91,224,148,105,114,123,116,8,209,89,184,133,68,232,
-112,147,216,43,236,127,151,232,120,65,183,83,176,29,98,125,200,63,217,88,185,249,47,208,2,38,207,82,222,57,239,242,
-216,80,95,168,140,136,224,94,63,197,60,164,222,151,154,99,1,245,118,215,234,165,48,29,189,14,84,211,164,58,211,9,
-21,192,47,225,68,109,35,221,250,187,52,208,164,147,19,173,220,120,53,57,128,186,148,26,82,240,34,246,195,207,98,243,
-207,113,20,126,11,146,210,229,244,153,14,142,75,79,175,202,22,55,250,112,32,23,234,120,110,167,235,6,177,13,113,165,
-123,237,8,136,163,83,172,99,89,228,193,38,117,176,30,120,121,79,227,150,64,234,159,77,116,63,143,199,212,141,179,36,
-15,83,114,159,110,141,222,92,224,205,71,166,214,217,252,16,66,51,56,180,216,35,8,250,67,130,51,14,50,130,170,133,
-74,26,30,115,34,35,177,234,12,24,176,51,104,77,117,91,249,144,77,176,107,227,214,196,247,69,197,9,236,32,39,47,
-198,210,207,181,192,232,76,61,213,173,209,79,143,124,248,241,9,60,91,203,101,41,75,56,244,112,132,182,2,204,0,91,
-224,241,128,35,95,166,124,203,224,135,251,153,35,234,151,52,205,228,127,13,166,201,77,113,22,106,124,139,112,58,250,191,
-202,73,163,9,72,43,118,101,213,14,217,151,121,177,198,139,168,213,117,142,84,128,137,61,149,88,238,196,92,131,171,199,
-123,19,127,87,54,218,201,165,37,214,243,74,46,187,101,231,37,241,89,192,44,214,124,101,86,225,119,81,137,162,145,37,
-120,156,179,38,172,31,254,52,117,38,227,166,154,148,219,92,136,154,132,105,194,95,164,22,121,140,182,51,19,13,57,57,
-73,177,67,64,77,148,247,209,232,251,207,60,201,177,145,151,75,131,152,195,240,26,83,61,109,44,189,139,26,66,232,105,
-11,203,169,36,142,184,59,2,65,55,66,10,60,67,198,141,4,126,186,52,199,33,121,21,195,4,86,188,167,169,95,157,
-113,120,198,166,99,198,2,135,137,64,1,148,82,68,225,84,55,209,243,99,173,115,14,127,53,210,147,133,206,175,250,11,
-44,58,105,166,117,10,169,211,206,1,240,7,137,199,253,248,47,89,18,244,208,154,170,43,152,206,156,190,181,135,197,104,
-145,28,238,231,69,103,79,129,2,248,139,194,178,138,83,134,202,123,163,37,199,20,74,238,55,19,129,212,61,150,110,75,
-247,85,79,115,127,224,4,62,172,251,66,111,119,157,66,226,198,143,88,206,162,203,95,154,141,22,99,143,122,107,200,17,
-106,16,241,232,155,95,153,106,234,8,168,32,214,196,223,190,151,144,114,147,181,206,31,63,102,91,33,76,42,50,245,47,
-81,189,229,192,49,45,126,61,186,124,120,226,185,40,154,8,81,165,229,130,208,1,81,121,228,132,29,15,159,89,20,47,
-11,94,122,0,16,39,31,196,233,201,252,57,121,149,222,145,7,241,175,97,134,208,32,226,67,97,97,47,157,78,101,203,
-157,11,126,178,133,137,22,59,239,141,25,238,248,241,58,142,228,76,35,207,214,232,70,56,57,103,105,238,159,156,162,141,
-154,219,55,91,186,128,170,198,3,129,161,159,169,63,194,33,90,184,57,250,251,100,75,250,3,249,39,75,155,204,73,49,
-194,98,160,151,69,100,234,116,83,237,141,76,3,238,194,152,44,232,94,116,225,125,171,187,136,47,106,242,190,185,189,161,
-81,79,46,244,10,11,167,253,28,42,153,165,186,16,134,179,183,222,254,91,56,112,165,254,103,155,212,88,13,61,213,183,
-206,145,44,107,149,79,130,210,227,108,158,198,1,182,5,127,150,1,91,132,177,41,118,119,200,36,173,239,3,113,103,140,
-49,224,166,253,218,232,162,30,80,96,193,14,20,166,13,76,248,151,155,226,229,233,20,220,125,146,122,171,142,78,218,82,
-248,28,216,105,37,66,68,78,106,41,196,68,25,207,78,222,172,104,35,76,19,238,27,149,37,244,110,32,51,241,13,168,
-1,180,63,18,93,145,136,13,127,32,225,233,244,99,240,45,237,197,53,80,149,43,23,223,155,69,110,9,248,29,138,11,
-109,54,83,117,247,112,211,25,64,32,197,164,33,5,84,249,191,118,247,165,44,69,22,16,110,201,217,87,101,202,81,150,
-78,49,73,203,96,68,77,40,43,83,102,74,96,137,32,30,162,80,225,239,195,199,228,146,234,17,64,137,182,61,40,184,
-154,176,153,47,249,94,4,64,24,232,151,62,48,199,184,216,163,46,236,196,80,131,130,165,104,111,135,243,17,11,225,227,
-10,107,119,106,56,203,175,197,58,136,34,3,146,170,187,32,162,126,76,175,53,128,86,78,250,222,27,183,152,202,186,236,
-120,133,82,217,7,7,19,20,252,244,234,177,246,39,144,91,147,238,210,193,101,128,109,145,12,115,214,18,22,216,144,173,
-208,96,8,172,205,232,46,44,176,100,217,176,176,100,139,248,231,77,119,5,74,6,199,41,101,222,175,126,165,152,69,123,
-179,178,226,232,146,203,117,25,141,108,99,209,108,244,64,171,103,251,254,111,132,22,110,57,167,234,103,129,177,110,166,72,
-236,6,123,4,129,86,35,174,187,228,184,35,16,127,198,207,210,167,114,200,101,101,136,153,111,132,141,177,174,30,110,56,
-80,90,38,2,91,140,130,135,230,54,175,213,11,50,67,199,36,148,33,88,102,49,192,130,115,227,164,124,232,168,9,29,
-132,47,232,152,196,113,195,50,221,82,95,251,109,206,11,77,107,238,86,254,146,69,245,61,152,117,29,67,65,227,44,254,
-4,37,110,113,135,96,214,138,247,102,36,14,188,34,97,209,10,104,219,185,5,138,97,78,82,157,183,121,73,242,179,236,
-25,230,202,217,240,76,55,134,208,234,167,213,196,252,195,245,226,85,152,116,93,5,43,168,122,128,54,158,205,142,70,173,
-29,253,77,246,60,156,196,85,87,96,9,114,179,198,201,146,186,50,238,139,16,160,107,159,126,27,32,77,237,2,86,203,
-85,9,203,24,22,183,61,150,245,134,1,235,48,23,175,115,4,237,113,232,179,43,250,5,53,255,247,254,166,70,61,225,
-185,230,170,194,3,170,125,52,93,243,149,39,161,224,109,191,228,142,192,255,234,195,29,206,96,175,9,9,247,216,208,109,
-184,170,226,133,204,6,239,91,116,165,86,134,144,136,24,140,6,121,177,148,103,21,21,245,62,97,146,92,150,84,221,164,
-157,37,33,192,44,44,247,235,207,15,140,103,206,101,156,176,117,31,158,181,186,158,48,80,108,91,11,59,117,202,182,56,
-248,54,108,210,142,117,60,98,167,173,83,45,194,22,162,190,157,226,154,118,236,40,7,1,205,36,96,35,64,234,221,133,
-21,89,229,28,226,244,98,91,175,68,249,161,83,55,46,230,34,161,14,169,114,30,54,202,70,238,191,243,91,150,220,251,
-240,65,162,156,114,189,141,40,107,64,1,153,136,131,71,154,65,35,244,166,55,31,248,67,91,25,149,144,106,136,101,244,
-180,187,150,192,217,160,132,159,213,206,9,103,210,122,129,241,108,128,141,196,199,211,153,83,53,130,66,23,193,138,142,10,
-15,33,13,19,82,68,68,105,73,109,14,20,221,202,124,103,87,131,154,221,212,127,131,106,63,28,25,255,94,129,43,182,
-219,255,169,223,23,120,185,81,216,114,179,195,1,253,87,204,103,234,187,103,200,58,66,38,188,235,150,72,94,102,46,48,
-82,62,145,192,100,85,137,36,75,46,248,12,208,45,164,200,202,222,254,189,9,144,43,177,24,81,4,11,51,94,131,7,
-104,55,187,72,167,159,184,45,230,85,227,35,112,13,126,53,91,87,197,40,237,89,77,21,123,144,122,117,94,179,205,192,
-193,116,141,19,91,121,150,124,219,112,102,147,125,81,117,202,238,50,227,65,29,32,121,19,163,183,29,88,88,189,185,86,
-13,246,241,34,193,136,81,227,165,38,146,30,2,188,219,155,255,214,178,101,151,47,212,79,17,109,132,231,150,175,236,18,
-87,152,138,138,154,195,110,11,123,105,157,189,220,228,64,128,162,195,122,102,5,39,44,38,17,178,217,36,36,119,213,94,
-109,19,206,8,233,51,218,188,249,158,200,71,205,161,2,47,82,238,153,92,244,11,145,97,100,0,5,193,193,223,179,89,
-179,163,247,161,132,84,146,218,196,25,120,73,176,133,5,167,146,183,2,70,107,47,81,97,135,218,92,243,111,204,105,13,
-149,10,81,193,133,164,77,191,247,45,135,39,95,5,69,129,213,113,17,223,245,189,90,60,55,11,211,106,15,92,65,182,
-243,3,236,232,121,144,98,222,59,97,134,85,48,154,149,38,211,179,252,25,177,252,182,211,216,128,105,46,225,25,168,238,
-175,83,239,45,200,190,91,129,17,149,216,229,193,169,219,125,159,20,90,237,197,77,128,49,79,62,78,136,223,217,70,25,
-224,219,190,85,133,56,243,101,75,161,233,13,60,139,111,141,175,190,67,42,74,119,26,85,208,66,136,82,141,250,251,21,
-242,64,86,184,13,113,99,56,186,29,156,104,210,93,184,114,58,209,106,37,254,165,249,118,71,101,10,103,51,63,231,2,
-120,201,5,35,88,13,105,202,130,250,37,210,135,49,46,175,30,241,65,255,182,192,253,188,181,71,47,1,200,51,90,207,
-4,48,64,146,251,253,222,43,191,233,7,124,90,71,213,90,180,155,10,179,74,131,235,174,143,172,116,204,81,33,115,112,
-223,198,25,152,36,97,241,234,130,249,56,149,205,184,136,71,99,25,183,62,124,145,189,101,226,116,175,147,181,83,17,211,
-71,203,39,149,199,107,218,103,136,49,86,25,204,183,16,24,165,222,253,139,33,95,183,164,183,131,166,54,182,216,183,109,
-99,20,107,166,241,242,32,139,95,173,95,103,113,63,203,149,90,204,223,142,186,42,8,87,170,203,58,85,113,167,13,126,
-35,54,66,204,153,99,239,8,169,250,38,46,204,177,201,177,25,246,253,147,254,44,153,62,52,195,219,242,249,41,215,191,
-236,146,80,118,152,124,242,0,51,210,28,18,227,158,234,131,184,144,223,209,207,206,47,150,26,202,204,224,126,101,37,66,
-39,45,207,227,40,241,194,96,94,236,151,219,35,142,222,114,78,250,2,114,53,160,150,69,89,244,105,119,35,95,52,246,
-176,165,141,158,21,100,101,90,245,136,47,180,85,130,118,142,111,118,210,160,154,235,70,236,240,16,183,77,9,48,25,249,
-72,214,169,212,188,193,184,89,244,117,88,165,232,130,148,78,214,16,3,4,61,175,61,131,211,79,118,64,221,216,131,62,
-235,118,66,197,47,102,197,9,119,165,195,214,121,43,126,176,57,169,127,134,246,56,23,67,2,159,210,64,156,120,34,44,
-178,169,76,140,42,44,65,168,40,38,237,70,85,84,242,146,217,48,195,50,72,224,192,66,84,173,242,57,135,220,221,222,
-16,79,18,254,228,162,60,21,55,71,211,255,252,47,227,166,59,72,152,226,75,135,210,88,179,237,41,125,154,102,9,63,
-86,113,109,118,153,158,108,225,108,13,241,31,215,178,179,215,103,53,86,230,119,132,195,176,106,48,116,148,159,204,140,7,
-126,91,245,208,186,165,91,83,228,31,98,170,45,166,189,58,207,39,220,209,178,91,116,134,21,244,224,9,24,16,60,239,
-195,167,120,122,123,43,175,106,191,235,132,58,3,187,210,57,64,229,166,77,211,3,36,133,228,236,166,117,48,87,110,75,
-19,78,49,115,9,196,200,13,88,180,45,42,14,33,31,79,112,242,28,59,182,214,172,193,123,249,43,224,2,96,231,15,
-70,75,97,175,135,178,253,52,70,254,83,122,222,90,87,105,184,32,189,120,125,12,30,55,85,178,78,69,52,197,53,141,
-132,58,237,15,138,254,177,78,227,99,109,232,62,18,176,54,231,32,35,226,198,163,211,144,125,13,235,9,226,12,102,118,
-79,165,176,213,47,151,80,7,190,198,146,154,227,225,27,228,194,61,86,198,50,46,9,161,7,212,193,149,12,214,5,209,
-187,26,166,33,149,165,108,94,67,151,215,8,6,244,62,22,161,225,73,22,46,19,129,188,7,94,118,175,220,83,51,210,
-17,148,80,135,169,233,211,6,24,221,31,37,149,145,46,174,201,138,23,106,186,242,5,30,92,50,147,164,132,156,111,14,
-176,230,234,246,217,158,120,155,103,220,145,50,52,83,194,40,250,40,167,48,102,105,246,79,168,195,156,74,164,156,236,95,
-57,204,105,99,253,82,88,52,233,78,156,114,57,121,227,243,169,240,217,211,116,37,15,191,68,225,200,220,66,30,4,45,
-255,5,242,74,25,119,236,180,210,13,107,24,172,129,162,219,172,5,15,39,161,88,213,210,25,42,73,177,134,125,239,56,
-215,148,191,173,2,17,161,15,19,34,165,77,1,39,204,168,251,173,204,241,157,191,186,60,41,19,63,205,55,135,84,247,
-109,63,165,110,250,66,9,166,99,163,61,80,51,167,46,116,161,207,12,228,12,239,17,0,13,59,198,222,28,205,0,71,
-152,8,0,184,55,34,42,148,169,175,79,160,219,221,167,42,210,21,98,45,121,70,237,181,254,115,94,243,192,4,175,202,
-48,122,66,166,60,183,110,34,124,156,132,224,68,43,55,178,27,62,24,233,232,39,36,95,251,138,217,242,26,189,22,77,
-154,131,193,106,171,13,60,34,222,193,100,60,129,1,235,222,106,23,205,107,35,185,29,50,17,235,176,109,148,13,115,96,
-212,21,110,219,15,115,9,127,63,221,218,229,131,236,140,7,186,243,53,68,74,115,186,80,227,30,127,114,79,126,164,147,
-69,218,37,114,23,152,139,243,68,16,92,109,152,209,126,95,108,75,253,23,91,63,53,151,153,236,58,30,10,235,69,28,
-240,249,187,22,85,156,153,238,202,206,235,173,130,98,207,115,222,56,174,215,133,78,180,23,167,200,43,81,218,101,214,133,
-53,118,134,76,9,21,104,36,93,19,229,161,19,151,189,124,112,76,10,159,159,251,24,35,103,162,186,140,150,16,143,223,
-190,0,166,175,35,122,98,118,118,37,146,11,134,34,32,249,4,221,197,79,75,33,6,214,68,241,190,13,194,152,204,207,
-122,73,102,91,93,109,56,206,57,190,151,38,116,43,140,67,66,98,122,42,228,122,130,168,225,126,117,137,73,211,132,118,
-6,36,182,206,75,195,226,61,110,228,53,46,5,225,236,149,92,215,150,216,128,100,187,121,121,7,222,169,178,220,206,128,
-35,48,38,57,75,176,233,129,116,210,125,36,44,56,145,158,49,231,157,155,130,121,51,177,156,123,5,168,245,202,119,253,
-192,78,249,237,120,123,202,240,246,191,201,154,43,189,229,222,97,9,109,179,189,162,187,232,86,146,84,59,9,24,92,63,
-150,6,149,60,141,221,187,93,18,177,179,22,195,232,247,93,77,242,101,110,223,165,237,238,25,140,144,49,36,143,207,72,
-151,206,135,52,113,138,78,36,70,67,120,128,15,103,34,58,115,217,54,132,230,98,33,114,100,216,72,197,51,252,73,22,
-157,167,46,71,51,211,101,58,28,159,52,9,84,31,15,224,109,118,104,215,143,137,43,216,101,180,16,35,207,176,227,82,
-75,176,73,106,84,135,65,255,168,45,187,121,69,28,111,110,183,160,95,6,62,141,18,176,181,88,170,53,1,215,211,63,
-60,66,7,209,7,40,239,90,10,222,139,45,114,145,252,153,89,70,52,165,82,246,186,230,80,68,130,211,46,22,21,1,
-15,60,91,82,54,51,13,37,248,25,81,19,55,37,118,125,11,73,184,244,155,167,51,61,50,190,198,114,170,110,153,111,
-240,170,149,171,50,221,225,139,216,242,207,202,73,108,191,35,24,1,223,85,85,49,100,153,30,160,136,19,221,69,170,123,
-157,241,27,153,2,222,128,7,232,184,234,79,31,169,118,207,39,28,229,33,134,2,144,84,206,33,65,206,6,98,158,164,
-24,210,245,216,229,182,175,25,141,120,203,15,167,185,11,8,116,96,204,75,159,52,244,155,50,94,61,190,176,7,248,252,
-12,200,175,239,155,149,4,224,66,175,185,92,87,37,225,240,58,117,76,232,198,218,180,16,77,178,151,76,130,47,157,79,
-103,83,127,220,162,71,235,208,161,187,200,93,102,23,189,19,84,130,89,255,85,96,250,67,234,150,109,129,37,253,123,167,
-14,240,238,161,27,204,18,125,38,68,130,17,29,9,2,139,236,106,33,63,211,24,77,211,247,173,154,243,56,211,1,136,
-120,73,220,91,70,20,153,188,121,8,99,245,231,210,204,102,202,1,82,164,41,125,37,14,116,53,132,28,52,151,2,187,
-92,209,215,17,104,236,59,58,114,160,176,13,160,123,238,43,175,141,247,21,19,93,110,145,195,9,166,189,36,226,203,198,
-120,59,96,190,127,211,15,85,244,247,177,149,182,90,2,49,69,136,231,133,162,250,147,152,240,110,193,182,121,242,101,178,
-46,248,193,96,125,124,113,17,156,228,140,165,57,182,176,215,137,228,208,194,231,155,76,225,63,166,90,61,7,176,160,218,
-141,201,243,242,37,186,253,213,18,88,156,222,33,77,98,118,174,69,171,163,93,201,144,167,141,75,207,216,101,147,169,181,
-224,254,64,141,205,183,112,211,104,113,30,28,78,188,231,167,31,30,73,94,197,198,44,162,80,193,2,191,224,153,220,169,
-110,138,148,59,173,73,79,224,13,140,114,176,96,43,103,45,76,204,184,71,171,185,58,134,129,242,38,37,62,76,238,133,
-2,230,91,48,15,224,252,20,88,110,223,154,151,166,150,72,156,191,208,216,204,117,76,75,136,69,159,51,61,239,198,255,
-38,199,32,194,193,115,35,175,87,176,48,0,19,95,16,230,160,182,216,90,1,48,42,193,100,163,135,138,254,239,14,36,
-21,55,186,93,24,144,85,96,119,34,30,14,113,16,179,87,189,245,142,92,249,201,186,123,215,220,229,124,30,225,251,70,
-201,254,1,111,56,80,0,145,222,199,162,155,68,217,123,204,240,26,89,128,114,100,130,71,237,12,18,167,43,133,222,100,
-41,93,2,187,21,134,119,216,81,170,203,75,38,214,141,169,135,31,77,142,64,196,123,155,170,202,232,191,171,75,99,3,
-189,6,209,60,197,150,80,69,69,4,40,105,94,84,192,242,65,149,164,145,196,60,251,130,187,226,187,246,76,25,155,131,
-162,107,20,147,223,72,192,68,122,107,173,73,218,86,121,185,57,129,100,126,53,16,244,220,84,198,11,255,9,119,238,147,
-19,106,252,95,85,247,178,123,245,138,215,116,63,46,200,85,177,133,170,126,220,220,108,228,95,138,255,191,63,41,48,72,
-14,220,240,5,113,151,117,109,71,184,69,17,127,61,117,100,202,130,227,221,34,43,139,159,2,255,253,179,182,15,52,197,
-180,22,226,4,200,216,91,245,183,136,220,193,127,4,213,248,60,117,193,105,123,112,17,196,252,229,53,130,254,102,128,211,
-199,164,239,223,160,123,27,177,95,137,29,169,36,98,76,193,236,3,153,199,215,190,165,21,248,26,205,242,145,31,159,237,
-200,252,61,28,74,246,31,125,70,106,37,164,51,245,12,136,161,71,227,116,76,207,78,14,2,140,92,106,178,126,90,217,
-170,97,228,124,52,100,120,81,120,121,108,48,24,222,104,245,67,50,54,10,155,21,155,220,14,125,131,201,206,171,173,84,
-124,79,29,165,127,191,26,78,138,174,233,56,59,2,80,157,207,121,143,18,98,116,157,89,193,253,30,154,186,124,16,31,
-24,99,240,73,64,248,151,215,152,59,103,181,69,194,218,28,150,132,161,133,85,239,183,0,210,216,32,74,134,26,249,171,
-176,82,108,93,42,43,50,32,47,142,140,124,221,171,59,240,219,124,137,122,164,204,248,204,171,98,247,68,133,42,38,226,
-80,105,154,109,117,200,194,245,133,149,3,107,31,60,130,148,139,164,146,17,144,172,213,31,177,78,102,50,198,0,95,64,
-217,172,159,82,134,2,117,113,82,219,12,241,92,193,46,95,18,183,177,91,26,227,151,56,23,27,112,200,247,240,136,1,
-97,169,161,179,54,128,102,216,89,236,211,59,232,5,95,162,150,87,136,238,87,88,120,162,22,71,22,109,243,158,165,140,
-133,105,122,209,147,91,103,187,97,170,151,159,84,42,22,243,160,224,35,249,26,1,230,107,6,140,103,80,200,153,182,108,
-170,115,162,247,63,53,29,147,115,76,181,59,237,89,104,89,179,121,53,214,171,142,37,88,49,79,196,12,52,7,206,243,
-88,155,156,127,238,95,199,40,11,87,43,156,85,246,46,123,80,172,7,243,233,221,144,113,8,15,58,86,138,60,109,111,
-132,67,206,58,139,36,3,254,61,161,249,214,136,111,230,1,225,52,158,63,115,39,34,31,207,240,94,189,168,34,39,126,
-101,35,150,61,13,215,108,198,211,202,0,100,118,192,87,210,178,114,217,229,211,216,194,4,246,130,85,112,179,76,77,15,
-123,231,245,21,141,140,68,153,152,64,174,33,129,2,216,222,59,159,75,69,144,31,187,59,227,210,13,220,109,252,199,91,
-41,195,255,202,216,227,38,118,245,137,35,136,141,162,227,72,155,79,65,61,229,123,41,147,10,13,153,100,166,229,108,32,
-99,158,2,140,121,161,217,138,159,20,119,175,108,17,80,79,207,184,146,136,180,83,230,145,122,158,43,36,27,17,192,49,
-87,77,53,72,103,188,84,225,93,206,143,254,211,3,63,20,235,215,149,229,87,106,45,169,80,22,138,236,82,57,225,138,
-228,16,169,203,84,75,118,65,175,182,151,223,55,145,104,205,240,12,217,8,212,228,233,118,212,175,57,108,222,83,227,173,
-82,229,219,116,192,99,208,40,223,131,106,59,131,251,117,38,189,169,255,179,104,47,14,240,240,232,108,85,51,171,253,226,
-115,178,170,225,209,212,180,196,178,126,248,202,42,187,96,123,131,121,138,39,146,164,133,171,119,83,187,73,69,254,42,125,
-60,34,225,147,182,148,14,2,180,54,228,101,142,40,19,61,225,124,75,235,51,63,251,141,253,116,69,206,162,252,76,48,
-56,49,247,244,188,130,108,179,38,111,107,71,124,118,52,164,133,35,172,70,131,117,101,168,157,46,139,86,172,156,70,60,
-148,60,66,193,126,199,31,151,26,0,81,172,72,85,196,241,188,153,8,191,7,182,72,134,26,14,6,62,171,184,158,242,
-168,54,115,128,114,109,156,24,43,20,124,206,29,8,228,151,55,177,79,220,247,26,96,8,98,56,99,217,135,151,85,124,
-41,179,137,67,173,246,142,143,131,244,182,194,161,103,20,34,22,199,245,209,86,126,186,53,244,31,27,79,55,242,141,45,
-78,97,156,104,13,247,239,88,213,51,12,166,8,11,140,134,89,170,140,159,103,152,142,109,246,127,111,192,134,46,79,25,
-203,152,101,199,223,200,199,118,214,254,136,141,32,20,116,131,12,36,90,64,119,68,21,112,57,114,188,102,103,64,39,86,
-221,114,58,86,52,203,15,197,193,161,233,169,67,128,52,121,127,21,41,77,106,55,230,82,234,136,92,50,43,240,233,82,
-115,44,95,27,185,49,27,176,24,106,33,12,224,157,138,72,38,58,141,177,89,158,43,167,254,161,197,244,197,217,35,5,
-96,204,86,164,228,186,170,105,182,248,72,133,227,131,149,25,52,123,196,120,38,34,243,212,24,95,204,141,12,76,17,183,
-209,202,85,90,164,229,254,187,126,101,69,200,251,200,181,24,133,156,42,125,31,9,42,123,88,65,163,111,196,210,200,14,
-249,205,149,155,40,189,252,10,10,115,34,84,122,164,154,223,218,233,174,86,155,163,119,238,202,237,170,92,251,26,191,227,
-251,251,53,182,74,236,170,96,75,76,70,125,121,119,224,1,174,107,34,151,129,156,103,78,207,250,30,135,201,232,129,8,
-7,8,41,138,254,223,57,43,118,139,87,243,71,123,222,96,185,105,76,206,129,195,117,178,119,177,169,2,195,201,41,249,
-143,107,87,207,230,6,177,146,75,103,101,143,108,142,244,25,189,212,245,125,60,125,92,80,238,24,231,170,232,208,25,233,
-246,139,8,249,14,171,46,46,216,196,74,139,48,50,100,34,2,248,182,163,70,68,123,95,43,231,88,40,45,94,141,254,
-44,255,2,187,153,69,82,223,87,90,142,7,4,70,29,47,109,184,176,126,177,171,82,201,104,249,221,14,148,88,248,224,
-176,81,210,251,217,208,120,232,17,179,60,243,177,187,115,50,203,24,106,50,59,85,129,33,130,0,37,29,26,40,13,207,
-229,162,5,193,213,104,128,27,67,32,28,103,166,186,46,44,255,114,194,208,96,14,222,31,7,177,94,210,127,198,219,13,
-60,126,116,51,121,217,81,12,136,188,224,140,93,107,247,212,154,100,13,80,96,241,126,223,97,23,9,48,127,207,123,65,
-147,226,53,172,65,135,245,36,47,80,95,74,18,250,90,91,130,217,103,120,174,166,212,11,6,213,130,129,111,99,153,7,
-27,82,100,235,110,41,58,23,20,177,126,231,99,179,210,190,212,68,158,69,174,26,47,193,10,3,201,152,129,217,196,140,
-204,207,99,164,53,160,53,180,58,205,144,31,83,53,6,125,135,49,77,1,61,178,208,47,19,126,242,43,32,229,229,218,
-67,176,215,96,98,159,12,11,132,148,238,147,97,230,62,61,198,136,22,25,177,199,59,10,229,201,211,150,217,131,168,119,
-2,226,151,146,86,77,188,206,150,72,92,65,91,41,203,31,235,106,115,115,75,90,240,90,236,121,168,158,8,98,240,98,
-204,109,242,96,152,167,245,252,139,172,55,83,43,45,183,227,84,131,139,72,127,54,166,18,208,58,137,241,214,130,36,75,
-4,221,104,168,34,69,8,176,107,134,113,131,195,86,143,133,44,237,130,6,245,242,209,129,92,173,245,63,216,204,46,250,
-83,76,97,17,95,86,131,137,16,71,23,66,101,180,60,244,1,133,49,247,103,135,9,226,169,92,71,86,7,51,41,139,
-97,187,12,15,105,149,144,21,204,45,240,84,236,252,165,210,103,153,133,252,251,47,144,209,219,127,230,66,244,147,157,47,
-19,157,252,105,70,145,6,253,121,222,32,192,92,189,216,206,99,250,57,56,17,180,189,141,174,123,158,132,127,97,220,152,
-42,168,234,206,73,133,33,181,31,90,54,251,108,8,225,95,124,176,136,157,82,151,58,37,233,15,25,66,110,156,154,151,
-42,28,170,110,193,118,191,60,91,179,71,234,228,78,199,70,64,111,28,195,103,241,170,202,23,217,110,8,29,152,95,112,
-129,223,245,59,160,246,200,63,77,191,73,182,3,50,182,252,91,107,138,1,228,36,127,216,65,236,188,68,21,92,37,105,
-71,75,215,250,214,142,193,20,215,84,78,51,210,144,74,82,184,9,23,198,254,95,134,92,81,177,182,94,19,41,114,41,
-20,79,127,214,98,168,159,20,85,152,225,71,144,226,238,53,230,4,124,19,208,196,9,165,204,108,150,26,1,202,216,220,
-12,196,49,21,172,219,28,196,173,93,71,177,92,176,110,166,99,68,227,24,167,125,181,75,51,140,171,240,79,75,172,12,
-234,233,86,99,211,163,144,10,153,247,139,160,240,69,153,69,211,54,139,12,26,231,189,159,230,174,31,218,138,30,199,169,
-16,214,170,249,90,31,77,29,143,23,175,174,187,126,134,83,131,185,97,94,5,67,75,191,239,43,201,136,207,20,95,99,
-139,1,217,84,90,79,154,229,176,75,181,216,249,181,8,251,92,148,221,223,122,37,22,210,186,115,92,14,79,35,151,80,
-20,243,85,239,29,242,167,207,26,88,83,77,248,124,3,61,39,222,59,211,105,116,247,129,54,171,187,165,92,178,34,153,
-21,95,249,158,191,236,79,57,54,154,144,106,97,194,57,1,209,201,139,255,229,239,192,153,34,228,225,6,98,203,221,75,
-220,0,99,186,242,117,211,29,175,181,39,111,27,190,187,107,134,199,229,69,138,235,254,195,92,111,94,145,139,201,159,220,
-45,163,53,193,27,5,223,5,24,243,141,83,205,17,31,0,89,161,33,87,153,13,212,90,36,66,93,8,8,143,109,212,
-68,74,60,169,153,29,169,252,76,214,163,82,36,83,139,102,66,119,252,51,80,178,22,99,36,40,121,187,62,81,149,149,
-133,129,154,168,144,189,124,100,236,33,99,152,58,102,215,153,161,105,187,254,201,159,180,183,138,7,172,89,77,79,211,41,
-48,145,79,86,154,123,233,197,165,78,57,211,106,213,202,145,58,184,134,90,143,77,178,227,57,53,181,46,79,88,193,60,
-186,204,127,94,250,11,92,205,39,32,176,143,182,240,100,21,189,169,79,9,102,34,127,72,239,2,191,162,71,220,147,194,
-179,138,189,10,150,23,59,87,249,16,144,24,169,160,129,234,65,143,99,117,141,254,156,132,178,139,238,197,41,169,110,94,
-162,203,132,220,229,234,98,249,83,173,28,254,118,140,157,32,210,86,248,176,141,249,220,244,4,184,66,182,110,84,146,47,
-85,166,29,181,253,216,207,178,177,5,126,2,81,237,81,60,210,161,143,88,159,100,33,159,249,198,229,238,174,244,140,104,
-26,19,41,102,104,173,229,213,233,7,227,110,143,214,209,139,242,124,158,122,230,11,37,96,172,224,239,151,174,21,4,139,
-135,87,249,238,26,173,175,86,80,242,133,196,208,87,113,63,252,213,228,142,105,107,158,57,237,56,174,79,42,166,242,34,
-172,248,214,221,137,105,58,155,103,229,35,74,113,35,80,58,70,1,191,234,191,92,148,193,127,235,118,29,181,177,147,83,
-193,186,36,163,27,3,120,34,91,212,116,128,65,45,246,49,3,217,145,181,47,10,88,25,60,213,222,244,231,8,12,115,
-152,63,33,189,153,4,249,4,238,46,186,3,23,26,47,4,253,6,192,13,234,62,93,113,191,75,141,22,18,243,95,22,
-20,152,108,155,144,69,166,243,174,183,60,197,166,231,35,234,219,246,127,234,129,231,141,3,127,75,175,133,42,87,217,162,
-186,124,90,138,9,122,114,22,143,195,49,159,217,6,91,66,56,245,3,98,255,96,14,184,247,10,144,90,200,8,66,198,
-119,164,95,61,115,18,229,187,244,67,126,188,253,42,149,72,130,6,176,187,122,116,41,106,242,76,206,34,229,166,248,209,
-145,33,150,37,48,159,243,183,52,77,42,149,33,152,60,55,5,137,98,152,246,181,57,199,131,51,184,173,194,117,169,34,
-144,219,145,206,35,247,40,73,12,148,17,122,231,83,176,123,82,66,132,47,65,115,183,151,60,100,58,179,124,19,95,78,
-31,202,244,151,10,251,74,160,46,119,138,89,55,105,137,235,121,223,140,105,197,126,124,6,10,208,85,229,127,20,126,94,
-36,143,125,132,214,114,140,183,168,65,61,85,127,77,28,119,144,135,183,178,123,210,226,34,141,46,140,149,218,146,237,157,
-3,61,1,196,40,86,85,119,145,120,19,167,230,35,148,255,250,178,126,45,174,4,244,37,207,203,238,133,19,214,133,39,
-115,158,219,98,74,187,185,89,226,4,163,57,62,66,127,139,18,147,243,81,234,127,25,197,115,40,163,172,34,10,112,51,
-143,93,130,70,241,47,213,230,220,254,75,175,161,21,174,101,158,121,227,179,214,160,64,128,158,208,246,130,141,53,73,194,
-196,161,205,193,41,92,200,84,115,100,199,5,88,139,73,192,232,38,0,27,131,2,65,41,103,112,131,105,224,128,11,153,
-35,119,35,18,35,112,250,131,228,229,185,197,209,141,48,234,249,64,223,0,196,221,74,170,61,227,160,202,17,38,25,0,
-233,166,1,246,163,224,136,154,240,222,65,56,59,201,95,105,150,68,93,221,73,131,92,208,2,9,173,95,111,83,248,140,
-96,186,193,60,96,122,107,16,27,142,242,187,121,185,123,87,196,35,226,22,112,146,68,17,6,104,227,227,219,37,237,192,
-147,45,244,81,242,36,189,91,142,218,154,216,14,143,202,174,234,146,67,18,173,239,22,100,48,92,59,141,9,131,4,33,
-226,172,77,47,228,147,179,161,149,146,208,33,179,221,76,148,120,234,71,43,11,92,143,87,44,172,145,248,166,190,215,143,
-99,229,16,129,89,141,203,180,248,220,251,143,159,102,22,172,250,16,248,186,243,46,67,13,78,250,225,137,32,86,21,71,
-129,33,98,44,114,84,211,208,157,100,88,85,198,188,239,208,199,206,132,183,210,89,63,203,53,207,216,213,154,146,167,147,
-63,211,135,72,110,51,59,238,116,42,108,251,97,206,87,46,244,59,51,142,60,91,163,250,205,41,105,193,245,228,185,138,
-78,217,72,35,86,132,218,9,16,78,133,158,80,97,115,180,39,232,208,156,11,51,123,155,161,230,84,37,57,204,139,131,
-220,14,214,176,32,88,5,10,15,31,255,209,65,38,153,119,36,9,207,51,133,96,196,6,105,220,205,162,99,16,141,78,
-145,179,70,97,226,99,9,230,183,99,154,1,0,133,139,35,87,168,160,13,155,235,8,111,155,165,234,145,8,134,233,191,
-175,224,77,87,28,180,234,205,49,23,91,59,52,105,138,124,92,214,83,51,121,61,63,46,22,145,3,249,250,161,206,178,
-102,141,73,203,105,204,30,80,192,131,174,124,126,31,23,208,240,89,96,144,147,51,216,93,2,241,222,252,78,33,15,77,
-9,237,50,173,146,7,150,85,47,94,167,41,169,39,241,126,52,28,23,28,39,174,48,205,75,177,111,242,235,227,3,55,
-29,207,52,211,79,131,222,211,98,19,253,110,147,130,161,151,121,183,226,84,126,190,40,230,244,62,11,44,33,105,187,127,
-128,15,95,164,247,79,44,35,9,26,75,216,5,122,153,22,235,174,232,76,16,12,70,5,87,3,2,87,114,119,178,107,
-44,142,8,147,121,225,32,243,24,223,13,42,124,31,167,236,202,124,180,225,38,230,49,51,94,35,166,239,143,241,47,60,
-167,34,6,102,69,124,227,3,115,156,156,23,160,133,29,83,33,151,224,225,140,207,66,233,176,51,38,35,241,229,43,131,
-117,122,37,7,139,185,243,173,55,183,246,225,130,212,132,14,62,108,35,81,166,6,131,252,14,91,117,53,145,108,45,10,
-229,13,145,246,223,94,9,18,202,164,105,174,215,104,14,16,206,86,11,103,69,191,85,80,223,91,103,4,145,123,74,138,
-202,129,127,173,110,168,207,24,209,179,190,227,89,114,166,100,80,163,82,35,254,14,48,241,17,50,20,177,172,31,12,105,
-233,76,199,122,235,244,52,108,37,1,176,214,17,194,143,139,46,21,106,55,250,132,107,21,163,238,56,120,223,127,187,41,
-250,190,113,188,5,195,0,231,129,182,110,230,14,119,76,175,51,201,108,205,243,133,36,196,115,22,231,67,178,33,189,122,
-39,227,172,240,238,50,246,95,51,37,200,28,11,164,233,69,65,254,71,31,197,70,42,67,27,177,182,120,92,106,134,49,
-10,247,115,238,100,106,135,173,85,206,69,79,99,62,246,3,15,114,40,102,43,250,255,102,1,100,209,169,160,243,191,143,
-243,57,70,120,151,151,179,115,68,250,107,78,166,94,213,52,3,129,179,66,173,177,143,129,128,231,61,54,143,86,170,113,
-228,186,196,255,121,57,75,42,9,60,26,164,80,27,195,116,122,103,51,2,30,23,255,222,30,172,244,247,46,218,176,241,
-81,78,210,114,34,165,112,107,155,22,246,12,131,12,12,169,226,233,59,103,227,96,193,126,62,62,131,32,96,87,212,47,
-25,248,241,160,90,144,68,30,14,211,5,44,111,155,65,32,121,155,70,134,182,251,115,68,34,111,123,1,56,189,238,254,
-223,105,56,251,90,68,38,193,49,66,194,159,245,46,216,175,76,200,146,205,90,42,187,75,117,236,90,199,63,182,82,3,
-211,153,133,47,190,59,77,3,215,106,19,135,111,51,80,235,216,60,251,28,75,94,99,9,235,141,255,57,204,237,23,12,
-50,13,255,155,250,229,86,192,216,108,89,98,192,46,14,15,97,197,16,228,227,228,136,135,135,159,160,138,66,218,95,212,
-73,102,135,147,215,40,131,210,234,73,186,90,98,172,231,98,85,113,1,210,6,198,218,167,141,172,10,46,138,231,26,251,
-48,197,96,76,244,64,133,114,67,63,163,227,180,157,90,180,49,90,32,131,87,118,6,116,139,155,91,236,200,96,74,174,
-120,136,1,251,173,250,27,93,122,78,100,250,117,13,150,43,154,244,194,188,112,251,59,126,172,204,236,147,140,185,91,165,
-47,177,65,44,105,229,216,222,254,253,18,228,80,82,227,224,186,125,197,255,68,29,126,25,197,128,226,238,184,93,26,116,
-209,161,35,238,125,130,108,146,224,231,252,247,245,100,210,124,17,194,201,212,204,8,216,254,62,200,41,185,24,228,50,118,
-131,134,9,157,209,216,43,216,78,142,14,85,142,248,65,235,25,175,77,1,199,159,240,228,228,168,40,10,118,23,153,166,
-166,28,124,2,230,48,226,97,138,74,107,231,251,50,197,183,77,109,218,121,126,35,74,204,72,230,43,108,73,78,56,33,
-88,201,14,197,59,204,216,176,11,95,164,29,140,221,253,41,103,141,127,96,48,189,121,238,123,112,152,58,105,168,165,85,
-244,72,235,250,12,200,178,233,198,147,50,201,43,72,191,185,233,244,21,37,105,247,63,165,45,236,67,168,107,27,195,131,
-50,231,73,124,180,189,61,208,195,98,198,7,35,246,114,150,193,253,214,191,170,58,40,133,61,115,176,209,143,159,65,12,
-3,85,10,93,142,238,62,211,214,191,247,239,44,102,182,192,73,54,190,144,99,130,25,175,10,74,3,74,242,2,74,81,
-68,179,235,60,238,241,49,74,96,206,161,100,92,88,168,178,45,182,146,129,178,68,51,55,237,151,122,169,221,18,50,184,
-112,234,30,74,219,170,180,180,220,42,42,140,103,205,68,122,211,196,12,223,78,13,39,137,174,253,209,95,208,49,15,190,
-50,3,15,204,2,108,179,228,151,43,165,253,106,65,124,140,143,124,237,49,215,88,21,162,215,77,16,48,188,254,196,245,
-73,91,139,178,229,86,171,229,17,224,17,179,147,195,81,93,51,52,94,144,115,32,114,206,214,249,116,62,112,250,75,206,
-41,36,200,204,130,101,25,193,129,159,34,45,88,25,21,218,11,9,190,238,22,165,40,23,4,226,13,52,154,1,116,236,
-88,210,43,54,57,158,85,107,39,177,175,243,237,154,217,200,75,93,193,25,153,218,54,154,22,46,225,215,88,203,63,146,
-5,252,196,159,159,43,67,62,155,136,0,110,194,1,121,220,227,165,45,250,189,227,157,53,4,53,174,173,112,91,116,21,
-112,80,50,95,36,211,213,212,181,44,198,164,231,112,76,252,95,46,20,61,54,173,127,198,121,90,246,96,38,122,148,121,
-131,17,180,8,48,142,115,213,116,182,134,85,249,224,131,59,155,1,249,167,128,227,116,64,62,165,202,139,180,143,172,31,
-215,34,131,5,10,55,41,87,93,67,104,42,28,86,99,223,235,106,93,31,145,68,151,54,241,179,193,133,108,241,6,149,
-72,76,81,195,179,209,190,54,213,190,2,107,154,164,182,80,7,8,31,164,186,91,173,190,213,21,22,8,76,101,154,51,
-121,61,191,54,248,221,129,121,86,216,224,246,176,55,164,57,81,206,243,14,244,126,205,212,123,15,2,165,125,39,221,119,
-8,72,136,54,211,159,93,167,152,166,58,211,180,32,83,92,109,104,96,3,78,159,207,142,15,51,179,124,110,252,179,194,
-92,118,103,43,107,162,200,169,200,248,62,197,26,58,217,220,220,136,71,57,243,52,85,205,140,124,238,237,38,12,190,112,
-231,206,35,248,39,229,109,6,214,129,185,193,89,48,104,61,157,230,34,87,148,230,75,167,56,146,233,63,141,227,157,130,
-61,87,160,217,204,30,64,92,241,219,49,158,39,242,30,9,171,129,166,93,5,90,130,196,51,133,76,76,166,64,0,1,
-162,46,118,105,212,167,180,194,190,2,49,43,76,83,197,3,166,57,56,204,97,146,225,177,101,232,43,201,253,193,98,9,
-83,65,91,58,246,12,29,235,163,97,160,253,205,190,69,102,179,31,137,219,194,19,28,203,118,246,206,15,88,192,196,79,
-0,187,28,146,13,65,143,64,168,65,21,31,193,177,180,192,189,164,52,68,237,190,85,189,78,201,20,47,218,14,39,113,
-237,14,222,28,224,124,13,161,43,28,56,103,171,119,105,85,46,86,252,84,21,230,169,17,64,102,168,165,232,151,25,200,
-188,171,203,96,29,240,52,45,154,19,10,194,215,210,131,129,69,142,201,185,218,207,62,252,42,18,42,172,179,43,80,30,
-235,229,111,187,253,153,136,137,74,254,144,133,139,39,244,116,128,35,232,53,28,49,234,243,159,147,173,105,107,139,53,221,
-187,154,40,124,19,1,119,72,132,28,183,37,81,100,156,121,246,168,72,170,105,36,41,167,85,188,136,208,202,78,14,247,
-255,42,71,49,222,114,191,85,201,68,72,172,67,124,123,62,223,237,96,129,122,144,207,235,215,244,87,182,169,64,181,218,
-89,91,73,224,174,222,208,5,126,71,45,157,199,243,17,155,56,157,215,1,230,53,76,72,249,203,93,168,82,192,28,103,
-41,134,132,217,11,251,224,55,236,6,86,122,29,126,17,5,219,105,73,50,188,230,183,36,201,241,85,47,148,151,38,97,
-24,184,214,52,207,175,196,89,126,76,63,137,144,160,69,2,135,126,55,255,118,53,55,145,130,86,203,239,18,129,21,8,
-172,221,204,159,196,38,165,125,247,160,11,106,211,103,10,14,248,179,230,2,55,83,154,176,81,116,95,27,80,65,30,226,
-205,95,70,96,125,13,180,159,92,52,140,155,226,110,117,254,202,100,220,96,28,62,124,43,140,217,211,250,190,45,216,65,
-205,95,60,212,105,3,201,240,43,77,74,141,14,183,243,78,222,16,83,137,14,72,236,173,73,90,228,120,127,191,145,254,
-160,186,203,221,255,145,208,147,44,171,53,166,90,0,161,225,80,48,95,129,164,156,88,131,135,66,242,89,119,204,136,178,
-14,122,182,164,26,95,224,159,67,126,14,251,5,212,61,64,83,185,145,142,220,61,190,8,179,63,76,74,83,175,204,227,
-82,42,133,134,160,17,141,4,32,250,151,138,205,156,122,215,45,105,158,1,245,202,184,125,129,106,188,236,160,15,132,160,
-112,2,87,13,90,45,45,67,160,211,214,236,134,62,199,33,209,152,99,41,201,200,104,88,217,21,116,194,214,169,166,125,
-4,121,78,2,250,27,167,8,222,127,193,241,147,168,8,195,64,174,251,109,132,181,218,80,233,142,170,11,31,126,175,13,
-209,250,208,20,88,19,181,143,211,153,73,152,252,253,54,77,168,249,27,31,200,130,146,207,65,74,168,89,68,158,153,245,
-4,117,19,148,70,88,69,11,74,178,247,4,223,16,216,118,108,84,243,18,212,119,194,19,227,175,150,45,213,23,120,96,
-38,89,199,104,243,160,226,133,161,227,97,90,219,20,42,205,61,18,148,89,54,255,114,151,253,121,58,229,45,110,27,115,
-205,202,110,93,70,19,6,105,188,70,62,190,158,90,88,92,195,135,25,81,11,233,193,10,182,48,230,251,137,242,12,43,
-191,196,56,153,207,82,35,161,15,146,94,146,63,120,107,188,223,22,251,211,39,15,239,255,156,225,201,87,246,90,96,15,
-249,141,220,181,170,140,92,16,16,141,13,110,253,55,52,0,223,224,200,24,99,6,110,251,115,106,242,123,139,54,126,219,
-241,136,55,202,176,101,177,209,196,197,81,105,245,231,227,113,201,105,133,134,114,17,113,18,250,134,171,227,104,101,112,169,
-164,244,5,214,148,221,235,133,236,251,123,222,166,27,195,240,117,93,7,164,166,221,138,26,136,22,200,78,99,210,197,210,
-110,10,211,89,173,167,83,161,138,33,13,75,38,227,128,204,42,87,174,54,8,124,106,40,160,107,194,249,96,187,65,54,
-238,175,40,113,98,6,6,96,18,199,159,15,41,126,120,223,208,30,60,243,201,58,189,90,173,222,43,144,210,145,133,155,
-20,151,219,94,231,224,172,130,177,52,49,65,56,144,29,195,100,194,26,67,235,204,204,11,180,98,101,115,237,155,78,45,
-122,101,209,167,70,141,121,152,76,116,117,4,121,226,159,24,163,18,155,118,17,34,230,233,81,244,230,155,83,210,128,95,
-108,155,232,37,14,124,74,95,147,189,161,8,212,228,236,12,96,187,230,248,244,36,190,75,158,196,118,195,28,47,182,75,
-95,140,207,167,88,195,148,135,216,196,65,190,253,216,63,79,71,32,118,49,21,142,133,107,139,25,160,107,0,147,177,183,
-48,64,218,3,65,26,161,178,151,101,116,74,79,149,181,5,202,241,157,199,31,105,132,144,251,158,238,169,166,57,8,84,
-229,153,152,255,146,59,240,59,34,162,192,56,226,237,166,164,64,67,148,247,178,240,174,58,192,228,68,25,77,11,236,43,
-158,71,129,51,56,171,215,250,96,48,23,89,153,69,110,48,224,27,206,83,253,213,119,119,54,219,8,240,217,203,196,73,
-109,46,194,119,38,153,177,111,195,108,189,65,85,95,106,8,23,32,101,64,204,6,242,36,111,42,185,188,168,200,219,32,
-187,154,237,5,120,1,247,130,229,247,40,136,172,152,138,50,198,171,176,152,10,194,87,99,94,109,204,17,6,177,129,153,
-16,16,223,41,254,248,71,135,136,76,104,98,73,28,125,31,163,21,92,56,152,156,146,163,121,228,55,108,9,246,118,103,
-245,244,35,88,201,241,255,139,214,170,76,178,195,197,47,5,126,85,96,247,200,43,129,102,193,118,76,47,118,153,237,178,
-149,170,36,57,84,135,114,48,115,199,48,201,64,156,193,25,166,65,92,56,12,241,177,44,237,148,105,85,141,227,70,96,
-132,158,9,203,68,70,83,143,9,143,176,148,233,250,190,58,14,174,139,168,217,48,129,188,28,58,60,161,165,169,142,19,
-105,11,130,130,56,127,146,208,160,59,194,76,202,246,120,181,247,45,101,195,78,206,155,220,249,131,158,219,133,229,78,231,
-186,180,251,44,68,16,231,44,251,88,76,172,177,149,199,147,167,137,65,224,31,166,52,142,50,245,149,25,92,239,46,165,
-134,80,106,12,204,172,115,180,5,150,244,36,196,100,52,157,138,249,48,41,203,166,248,6,64,131,150,141,244,21,211,12,
-98,101,200,153,151,86,105,229,12,114,56,96,167,163,142,94,141,217,56,147,62,63,5,188,113,31,126,255,99,225,176,63,
-76,49,248,81,74,71,174,9,79,184,168,187,167,46,20,22,40,63,223,113,201,142,38,213,246,6,163,69,229,153,81,78,
-15,94,23,61,145,63,33,166,200,134,228,145,193,44,144,255,130,55,124,29,40,85,239,26,156,0,14,63,55,16,75,61,
-33,60,243,35,7,22,134,179,140,162,143,105,223,19,161,1,243,18,102,254,12,229,176,134,168,44,49,231,29,90,186,67,
-108,48,82,247,165,81,148,60,93,237,171,23,34,19,173,65,39,84,160,184,218,0,218,27,234,195,154,41,53,192,66,138,
-21,30,116,69,102,246,233,120,110,134,67,236,243,83,120,73,141,209,63,84,55,61,103,49,195,194,6,28,105,142,242,66,
-123,182,12,116,1,191,177,203,137,110,232,47,21,72,191,204,194,203,45,232,57,162,77,86,112,135,53,188,235,86,0,57,
-33,8,220,176,12,176,232,11,37,230,91,240,235,202,173,173,173,108,47,147,66,78,93,59,121,130,245,105,249,159,49,192,
-3,3,29,19,192,1,138,101,19,152,231,242,187,82,205,99,55,11,225,66,72,226,11,241,127,17,247,91,49,207,52,57,
-3,38,126,116,214,131,219,240,3,248,23,14,127,189,71,130,54,2,157,97,66,188,136,134,195,114,223,8,95,102,79,225,
-23,87,87,178,205,13,63,161,183,146,95,119,147,196,201,172,190,154,112,46,61,41,135,232,105,200,177,106,223,1,254,47,
-145,124,226,223,192,162,153,200,184,237,1,192,30,176,222,28,9,214,121,246,115,56,123,211,137,187,35,73,133,45,54,128,
-159,67,68,9,253,88,110,165,4,207,169,3,94,93,41,65,77,81,136,228,95,185,169,49,207,87,255,57,235,154,102,165,
-189,46,88,33,193,0,74,156,194,155,26,152,11,152,190,217,28,123,112,160,96,181,126,50,83,114,137,197,51,242,28,251,
-109,121,10,29,73,233,214,153,76,153,193,205,179,223,160,7,0,23,126,35,253,101,172,178,202,11,167,144,185,5,204,236,
-129,16,236,55,254,69,218,166,254,153,165,228,96,7,190,250,8,176,112,18,57,54,216,67,229,173,232,14,242,135,155,40,
-72,94,191,163,165,189,86,130,120,148,126,133,95,90,208,20,20,67,58,7,87,185,37,129,246,82,65,59,247,174,106,107,
-46,16,75,103,73,80,112,7,190,229,26,130,208,218,135,222,110,185,212,163,85,35,93,222,168,230,121,75,45,11,140,24,
-252,147,228,104,58,62,101,207,24,228,179,189,166,117,39,141,10,36,241,242,32,46,233,147,87,253,230,71,243,223,1,166,
-100,110,64,122,23,200,249,29,58,180,248,168,56,146,99,51,170,0,101,63,153,31,251,58,231,252,169,28,46,110,20,251,
-110,52,49,188,192,244,74,149,199,243,221,111,160,249,81,15,92,67,158,53,230,190,84,22,69,3,161,110,134,3,139,236,
-142,187,27,114,64,22,212,237,42,107,115,15,173,21,142,241,149,113,20,253,184,136,112,21,193,10,105,245,37,164,129,10,
-197,228,72,119,142,118,29,168,127,114,250,5,39,234,137,5,100,112,213,90,119,165,220,26,1,199,220,96,158,183,148,62,
-87,197,170,154,100,128,34,27,223,98,62,255,4,233,132,186,191,156,8,218,59,180,155,57,177,70,54,229,99,165,201,45,
-194,235,155,161,90,116,206,187,193,201,108,36,198,249,212,23,251,87,246,221,252,117,155,133,155,194,127,68,224,239,56,136,
-92,173,33,99,201,242,59,8,82,78,191,112,215,95,51,109,80,230,152,131,103,87,122,8,94,130,86,38,144,79,106,66,
-36,123,236,160,42,187,234,171,117,25,40,250,210,118,106,189,166,14,183,171,206,141,213,191,233,82,190,242,154,130,108,24,
-21,238,190,46,193,254,130,159,156,206,228,122,112,4,62,247,64,45,186,20,33,202,206,240,181,18,247,103,101,242,70,181,
-97,214,189,56,65,179,180,180,75,27,159,67,53,63,214,58,67,100,134,14,143,142,20,205,168,50,123,202,187,83,210,243,
-41,149,149,45,119,75,228,16,69,29,42,27,0,160,240,115,184,111,132,162,69,139,58,177,32,223,116,96,177,254,95,221,
-65,249,104,248,76,163,53,57,42,249,225,178,216,184,94,59,151,2,30,206,227,11,234,225,205,247,226,171,168,207,166,159,
-169,158,159,228,67,45,61,59,201,110,243,0,182,160,68,89,77,32,212,24,135,159,97,183,232,190,250,244,222,50,153,3,
-135,245,123,131,226,57,50,138,162,233,219,102,102,95,38,61,166,98,255,60,137,128,92,171,61,59,56,197,205,177,47,237,
-207,38,41,12,164,228,200,79,233,31,249,251,225,18,49,94,49,62,103,214,11,55,46,72,222,248,215,185,249,231,201,134,
-103,79,151,138,252,176,234,251,111,75,65,54,59,176,130,87,112,94,209,126,147,108,3,37,23,2,232,149,214,15,72,183,
-118,235,130,141,188,135,128,14,11,9,149,3,112,194,19,23,205,25,178,12,102,234,222,34,13,122,241,55,123,120,101,158,
-169,199,79,60,116,96,66,94,22,235,172,205,159,33,149,208,175,5,151,152,222,213,221,174,179,223,169,143,188,34,144,153,
-143,81,179,202,123,167,87,222,143,228,63,104,117,87,201,159,159,133,58,123,46,0,181,253,147,79,189,13,172,3,76,249,
-73,175,128,142,176,174,113,79,19,113,251,132,157,163,123,86,3,153,108,37,15,181,73,108,92,194,186,108,238,224,195,14,
-111,113,1,100,253,119,146,135,217,132,101,180,175,94,176,123,154,62,76,106,18,116,252,241,172,143,160,178,25,11,153,182,
-89,173,83,192,58,70,242,237,169,181,82,225,169,229,92,79,226,125,94,103,6,136,26,156,243,166,199,91,194,5,118,67,
-213,82,244,253,41,200,186,48,33,106,215,220,95,67,28,117,222,151,136,104,186,224,155,89,87,12,80,252,98,155,49,108,
-8,148,10,39,241,143,234,17,60,241,205,13,204,166,215,209,14,226,5,137,183,224,224,165,181,110,21,94,199,66,208,160,
-246,142,188,219,18,41,88,183,96,29,191,104,167,77,112,42,60,156,91,2,59,251,213,5,107,144,66,15,198,92,219,90,
-210,225,246,76,134,179,116,224,17,184,188,194,241,189,32,119,215,28,54,125,147,128,144,224,156,141,226,203,95,48,233,26,
-220,167,249,29,235,27,102,154,236,34,201,119,74,26,27,40,76,230,169,119,67,213,144,21,238,231,185,41,184,0,134,183,
-182,140,76,58,130,30,210,200,79,229,47,241,230,252,198,174,242,61,149,74,214,168,69,231,27,5,1,241,97,155,75,118,
-41,211,8,220,226,199,100,119,216,207,69,128,18,48,128,209,213,22,222,93,12,41,71,178,236,238,214,106,169,173,128,231,
-76,119,251,77,202,61,51,206,222,143,196,244,82,236,177,239,231,247,54,155,161,168,117,113,89,9,16,102,177,245,228,75,
-14,92,125,223,140,161,114,52,61,243,47,100,212,69,104,106,86,66,209,22,65,166,228,16,230,48,84,213,92,231,137,84,
-13,112,166,74,190,135,85,254,111,149,106,196,178,117,40,224,242,220,217,24,88,131,28,155,235,119,191,206,85,35,12,53,
-131,47,78,196,228,204,225,123,200,123,197,155,80,139,190,232,134,227,57,237,88,135,48,234,211,159,190,141,63,123,43,21,
-34,8,231,143,211,2,162,74,54,195,56,10,41,78,184,254,101,88,56,194,193,149,252,227,121,170,178,170,138,150,158,143,
-73,37,97,195,21,91,0,125,254,101,85,27,30,25,199,233,137,232,199,223,132,38,142,175,185,141,61,232,189,53,63,27,
-243,206,248,115,253,223,214,159,193,114,183,205,27,216,156,117,98,175,106,81,149,58,90,182,218,79,248,228,166,142,32,252,
-233,85,168,36,115,38,64,180,31,87,63,245,219,228,50,55,30,9,252,39,222,240,216,65,115,52,157,206,22,135,130,243,
-205,175,228,175,195,144,67,116,49,204,219,253,201,160,99,96,94,48,83,205,28,117,234,108,207,35,108,74,95,43,42,143,
-196,225,64,208,57,20,107,123,252,64,130,220,0,187,168,194,234,129,81,93,7,113,250,11,171,54,124,137,83,68,215,30,
-106,128,205,4,247,244,140,76,130,138,229,222,152,4,183,127,212,154,58,22,106,215,46,167,112,233,232,162,105,179,201,216,
-8,94,195,96,145,88,219,182,39,130,177,119,224,197,122,24,138,78,104,64,2,36,60,30,2,221,57,146,165,35,5,219,
-201,80,130,232,54,18,87,191,186,190,145,40,172,77,115,37,196,91,17,70,181,2,115,142,217,185,162,243,108,47,91,146,
-156,138,226,131,80,242,243,93,107,180,112,229,222,123,99,233,53,139,73,224,81,7,251,236,211,18,19,175,196,51,134,68,
-115,82,195,63,1,85,171,69,173,69,248,127,247,195,67,209,154,70,247,126,132,206,176,75,225,121,100,111,5,114,239,199,
-0,110,106,132,134,94,18,71,79,22,48,232,48,16,164,240,221,135,47,139,13,232,33,29,141,170,133,86,180,76,1,230,
-203,241,54,201,107,23,218,88,158,130,99,168,106,131,186,240,159,140,69,105,172,31,61,4,153,200,184,214,158,215,66,168,
-122,66,92,140,176,60,232,170,118,52,185,182,2,227,57,139,205,99,188,59,180,144,11,245,135,14,22,217,63,10,123,248,
-64,215,225,91,137,34,248,129,207,57,218,60,125,210,19,242,84,252,44,42,129,103,17,199,21,219,158,189,151,28,248,30,
-206,92,230,201,70,224,117,174,175,193,126,96,70,32,222,188,182,203,29,67,198,71,122,249,108,155,232,166,122,9,182,190,
-31,22,27,123,87,21,53,107,163,29,108,214,226,195,87,63,38,129,249,186,69,54,198,176,150,59,211,74,172,219,253,150,
-44,211,253,115,174,196,155,196,71,202,139,102,55,0,196,147,252,195,191,97,80,222,206,52,74,167,133,123,147,63,132,240,
-131,152,23,133,101,221,137,110,144,211,185,64,246,207,151,98,120,130,236,98,45,177,24,148,60,74,187,187,127,214,177,102,
-216,71,117,79,68,203,75,188,214,209,170,229,221,14,36,7,151,110,239,242,144,206,79,44,21,252,56,158,103,204,177,80,
-118,229,83,112,242,81,1,227,91,174,112,235,26,137,238,122,153,150,27,230,112,158,236,54,199,82,143,41,70,86,52,243,
-1,225,128,58,94,57,101,192,173,65,107,162,182,59,87,185,97,122,115,169,153,159,143,201,61,234,56,205,138,94,65,59,
-130,133,216,168,42,240,101,242,8,168,190,194,187,28,146,48,118,13,17,139,232,228,181,70,232,160,182,157,117,70,234,45,
-180,243,82,70,61,110,103,170,143,90,39,102,240,210,172,60,243,42,21,64,47,68,48,179,222,120,56,175,149,128,14,170,
-199,207,195,191,215,216,83,225,70,5,184,60,114,219,172,140,18,203,94,128,155,1,102,44,234,211,116,8,69,77,22,219,
-232,232,108,15,164,36,107,210,64,119,65,8,179,51,185,46,149,118,224,23,3,89,193,180,43,249,37,232,177,129,196,185,
-167,28,76,3,91,21,105,37,212,200,9,185,23,59,172,80,87,111,42,245,64,61,110,161,2,4,15,110,55,172,18,84,
-192,197,164,59,86,159,145,11,139,84,101,27,72,182,74,121,245,206,63,122,108,84,95,151,167,204,122,110,79,111,207,126,
-115,248,124,140,164,163,29,193,194,117,216,81,73,165,198,224,113,255,253,28,135,86,219,241,23,205,63,186,84,253,15,192,
-79,213,135,114,50,222,32,68,112,120,163,235,214,69,20,89,185,120,84,116,63,163,171,231,152,131,46,71,2,185,97,88,
-6,117,110,212,68,203,143,70,14,158,140,7,254,134,18,73,209,88,95,107,165,108,204,168,231,149,192,108,113,61,235,156,
-128,21,220,14,180,78,239,129,109,199,50,71,248,245,252,132,189,0,18,9,18,7,98,29,172,34,149,83,52,134,157,180,
-52,31,234,141,115,140,165,210,121,207,174,228,17,130,122,222,98,41,7,237,108,119,101,56,209,84,214,45,252,37,223,252,
-245,240,250,23,53,37,247,149,237,122,70,28,166,48,6,226,100,133,46,189,62,70,234,152,2,33,217,80,180,142,242,238,
-108,10,104,34,52,64,111,18,218,147,41,251,62,92,70,228,227,39,167,166,235,99,132,2,242,87,36,115,2,226,5,114,
-77,253,48,118,153,169,64,23,115,153,248,38,201,157,17,73,200,180,175,171,56,51,231,138,86,150,37,130,223,148,151,2,
-95,128,102,87,101,172,82,1,104,50,186,124,124,215,117,128,17,27,191,186,31,58,198,173,159,15,130,195,128,224,17,171,
-113,130,154,94,70,204,96,32,99,202,31,87,34,46,204,80,116,177,76,212,176,15,58,98,146,119,175,146,134,140,87,126,
-188,159,237,189,74,88,249,195,57,116,51,169,169,224,162,195,33,64,172,100,178,19,214,196,97,187,14,0,169,156,12,72,
-95,4,92,251,112,214,136,89,160,189,4,248,43,78,147,133,225,122,127,48,76,216,7,71,184,68,24,140,111,232,221,5,
-143,31,119,217,11,112,102,24,107,109,116,9,183,185,23,10,124,149,0,93,233,100,246,149,73,169,132,216,90,82,199,226,
-147,211,3,0,175,167,162,144,142,8,75,102,252,197,153,194,80,144,3,70,233,27,201,70,59,244,140,83,65,212,220,106,
-29,185,111,159,208,167,117,176,233,94,28,203,113,75,116,12,111,39,254,42,14,37,109,222,221,46,105,66,52,20,8,170,
-89,175,223,57,63,156,131,136,68,143,74,56,33,17,225,142,158,2,77,41,102,105,190,84,226,44,111,97,169,70,31,54,
-249,198,58,146,125,62,68,72,203,87,18,195,49,142,13,59,188,81,43,7,204,90,227,5,144,162,194,167,196,189,21,11,
-179,2,49,17,34,158,35,179,24,220,123,102,146,197,55,217,68,30,75,41,172,229,10,173,92,199,102,57,59,197,9,1,
-251,92,191,139,168,196,119,6,254,41,216,45,60,153,4,146,155,125,52,191,176,213,77,228,161,172,44,62,37,28,90,93,
-112,107,229,122,165,75,24,209,95,54,221,246,128,205,15,218,63,49,199,199,139,114,160,77,170,230,27,106,124,35,131,125,
-78,154,188,136,21,54,178,247,43,103,69,167,182,93,79,4,183,1,139,148,58,71,12,71,219,129,103,41,252,144,251,192,
-148,218,123,51,22,46,9,66,86,159,51,50,70,77,215,198,211,147,12,145,31,153,58,125,202,186,240,244,37,223,11,140,
-191,96,149,41,35,198,10,140,249,69,190,80,49,66,65,20,222,19,154,144,11,212,212,58,156,90,231,129,21,107,61,57,
-202,86,3,173,87,69,1,207,21,189,45,54,220,189,29,30,31,80,110,130,92,247,191,245,110,78,200,80,77,143,219,49,
-211,22,155,127,54,23,252,34,62,237,44,40,56,116,239,252,68,151,14,221,2,112,70,68,55,223,23,58,21,108,113,97,
-66,120,186,154,79,134,169,17,207,42,175,40,233,117,100,122,116,95,210,152,121,77,89,212,88,177,107,70,74,86,240,95,
-226,139,228,76,238,144,32,63,205,38,239,222,144,65,209,122,191,138,42,169,238,157,167,200,201,173,54,24,53,115,148,203,
-135,96,67,139,71,131,1,7,249,37,74,112,68,144,191,155,151,28,70,100,196,193,209,123,178,140,123,111,51,196,171,117,
-103,149,10,77,23,196,57,238,114,157,189,90,4,185,40,125,163,98,11,43,34,117,116,82,174,234,37,52,145,155,92,148,
-100,178,63,248,192,178,162,25,175,228,50,132,208,24,184,43,149,255,43,177,217,214,234,192,68,122,69,228,63,33,90,184,
-98,199,61,107,213,44,41,202,39,207,46,147,4,234,87,56,146,149,65,245,204,183,164,102,241,219,114,136,5,128,151,165,
-244,215,117,49,33,73,221,228,144,76,238,226,191,47,119,74,16,131,124,132,2,150,192,222,137,98,119,3,177,253,208,121,
-28,233,30,177,232,145,109,130,250,173,93,7,205,254,235,189,10,132,103,40,231,197,198,37,29,221,19,59,249,150,24,122,
-196,101,129,68,11,250,246,239,24,188,89,197,65,34,45,201,198,183,115,221,230,37,160,203,98,187,250,119,2,208,168,34,
-53,103,99,215,26,22,112,100,89,138,142,73,152,164,189,7,7,165,6,140,11,155,125,101,180,122,90,179,89,237,1,211,
-135,121,228,32,191,162,139,149,53,108,209,79,114,16,222,195,161,137,87,214,177,35,101,24,4,231,172,61,213,122,160,152,
-252,234,144,220,49,216,14,204,224,156,215,37,181,133,77,95,207,192,207,134,194,35,237,236,143,38,20,50,223,99,40,213,
-230,146,223,184,62,55,165,147,219,216,146,156,111,60,52,68,178,180,103,51,220,235,205,240,103,143,246,89,11,55,76,157,
-19,157,144,121,103,53,10,150,236,198,86,237,53,220,187,34,249,119,50,155,130,179,167,48,111,197,134,231,218,224,161,177,
-237,138,200,69,7,20,242,85,10,87,57,38,23,185,112,38,216,122,244,17,241,35,139,198,15,181,34,247,172,61,20,196,
-50,223,236,141,121,244,2,117,49,24,135,170,3,220,5,248,148,200,195,67,217,2,153,155,103,110,254,247,151,133,29,148,
-19,122,167,45,122,133,229,12,20,230,202,194,61,190,251,209,221,216,54,36,144,180,72,138,4,186,180,67,43,250,217,244,
-157,204,217,238,85,145,79,78,250,153,182,23,86,66,155,176,118,215,41,223,225,223,158,160,242,17,150,152,125,139,190,15,
-156,76,128,179,9,19,171,105,176,225,37,170,179,63,169,69,198,63,104,150,12,161,198,77,14,131,102,188,42,47,46,114,
-82,113,249,94,151,239,70,190,17,217,42,227,8,225,224,225,143,47,198,196,39,77,57,45,89,15,197,181,107,151,180,216,
-155,75,208,170,32,173,138,229,111,6,47,187,53,69,254,80,83,183,33,154,78,124,163,169,174,121,171,240,231,230,79,90,
-52,63,82,176,254,223,40,199,215,148,163,68,7,238,103,84,116,87,146,35,130,230,22,51,40,228,156,111,173,67,61,29,
-71,93,47,223,111,216,14,250,39,197,223,64,6,78,235,104,61,246,245,228,29,39,104,249,203,25,178,123,98,164,228,18,
-121,47,45,135,215,151,160,225,49,128,77,230,224,189,100,237,13,62,213,76,188,129,77,27,202,134,46,164,59,225,179,234,
-134,194,214,144,206,128,211,85,133,233,251,66,197,70,210,135,175,84,70,160,234,199,55,66,240,224,149,80,148,75,187,140,
-62,145,40,32,145,209,87,228,187,132,116,252,20,249,2,209,156,83,161,188,172,19,132,92,155,115,152,114,138,32,74,167,
-129,150,83,148,151,176,221,177,58,208,43,178,136,61,181,240,66,227,23,74,255,251,47,230,42,47,251,227,46,150,227,223,
-33,52,143,161,193,220,198,251,192,179,220,218,131,91,20,166,245,45,34,230,81,26,243,137,196,144,141,70,129,39,211,90,
-148,10,95,68,197,100,19,48,126,94,80,178,120,10,237,144,149,91,238,249,137,196,202,168,194,129,89,188,167,31,53,58,
-206,231,237,140,21,226,123,237,106,45,51,12,100,156,215,154,48,166,216,98,43,242,159,102,39,167,30,210,175,251,142,87,
-230,165,69,26,173,140,33,98,227,154,69,10,56,185,20,42,29,33,81,91,64,83,252,50,46,88,174,145,8,40,137,204,
-195,224,31,230,220,133,172,70,214,245,200,226,4,70,117,40,169,106,179,147,237,23,246,14,133,22,18,226,226,38,24,12,
-242,169,253,3,160,15,144,60,198,43,113,87,68,212,109,103,52,11,191,110,168,184,97,107,5,1,173,232,216,186,107,10,
-218,226,244,115,91,161,146,35,229,37,235,44,44,52,167,200,155,193,194,228,128,38,97,37,55,37,148,204,202,195,129,111,
-155,190,3,20,59,17,208,235,243,191,74,227,251,248,45,171,55,63,241,98,252,93,94,241,111,57,173,141,76,186,70,28,
-221,140,80,29,151,45,83,234,204,118,164,55,8,47,243,77,218,115,69,128,46,182,80,201,154,38,116,159,82,32,237,168,
-163,248,20,77,24,43,80,97,185,148,128,144,136,189,10,91,79,240,34,19,241,186,230,71,40,219,65,10,92,214,188,242,
-211,215,252,162,242,233,107,20,189,239,195,50,214,245,100,92,51,47,31,129,217,134,49,235,160,3,65,227,240,30,37,207,
-200,142,97,97,113,136,190,157,129,158,176,70,139,181,62,209,233,161,175,84,128,159,253,50,206,183,112,68,195,72,128,101,
-78,92,120,146,177,65,123,43,51,130,232,34,232,10,72,78,119,127,238,112,78,248,255,21,9,70,46,95,131,137,248,20,
-1,88,140,142,166,254,183,107,191,24,222,203,84,174,27,55,114,83,251,244,216,225,71,0,73,143,79,5,43,86,130,155,
-48,170,142,234,148,98,16,81,159,110,92,72,136,229,12,148,77,63,190,15,94,11,138,154,246,73,162,129,252,188,202,134,
-244,224,187,244,191,208,147,192,167,89,127,44,41,13,199,135,249,34,221,213,223,208,45,71,155,58,160,128,152,204,174,191,
-162,50,45,214,174,68,229,28,184,118,29,66,192,127,254,150,93,223,22,214,250,0,79,203,32,134,84,52,38,147,10,12,
-249,221,221,51,200,176,153,181,8,185,86,61,193,156,98,77,154,56,122,92,211,192,19,201,116,60,183,214,162,56,62,220,
-64,97,243,248,36,215,127,6,134,57,76,152,195,192,142,144,91,51,135,191,147,113,181,77,53,6,106,3,151,88,130,76,
-253,174,93,155,12,125,116,149,14,6,144,198,250,65,99,65,179,202,103,78,90,156,96,3,32,248,105,120,20,147,52,110,
-35,129,205,7,20,150,57,173,90,32,223,63,246,173,149,40,19,244,207,181,150,143,102,133,223,210,202,35,67,149,129,230,
-123,162,70,55,56,252,219,43,98,154,18,115,2,141,207,242,63,157,247,61,206,40,79,49,191,222,3,61,111,174,222,1,
-72,112,18,30,145,138,97,166,167,1,171,157,197,6,195,225,207,162,230,153,87,16,128,115,14,191,23,92,184,199,20,105,
-85,229,236,67,172,12,99,153,243,71,51,219,246,94,212,205,12,97,191,193,59,4,68,64,105,101,148,249,240,11,34,83,
-246,73,122,156,86,24,127,163,6,225,122,173,18,6,85,172,169,173,217,167,240,76,197,71,101,145,65,179,91,128,100,69,
-203,143,134,17,2,120,127,210,235,190,238,127,234,15,149,70,26,65,19,115,96,184,94,112,106,154,138,45,38,62,141,107,
-223,36,175,250,128,191,204,167,38,215,238,0,69,73,2,198,235,173,194,132,189,95,136,93,162,219,228,6,85,218,198,252,
-57,168,92,182,113,251,91,21,52,251,9,205,243,211,53,172,123,251,177,27,126,179,129,242,30,186,31,186,136,46,117,147,
-69,203,202,250,8,240,205,40,185,163,201,209,173,180,246,224,187,82,7,134,202,232,9,133,110,165,222,197,22,205,198,92,
-163,141,39,209,230,254,77,80,251,187,84,8,78,73,38,117,9,60,18,53,82,88,105,25,219,143,127,229,181,148,90,148,
-201,80,89,139,79,234,146,242,135,119,254,22,8,147,38,50,143,228,227,210,159,54,111,209,161,54,105,199,156,45,207,210,
-253,41,68,250,132,135,17,83,69,28,176,92,108,92,76,221,110,181,137,211,189,4,173,79,150,33,13,226,6,10,43,251,
-33,179,13,99,148,108,176,47,139,132,22,25,80,17,103,101,169,241,199,72,157,214,32,182,153,1,8,1,224,97,24,105,
-86,5,240,51,64,28,248,136,56,7,122,17,251,223,84,241,208,98,25,222,16,146,21,17,169,1,216,191,32,228,128,2,
-106,103,109,115,105,225,61,109,185,130,38,126,191,195,52,213,150,231,201,38,112,134,205,7,206,248,225,57,222,159,158,161,
-193,2,192,161,222,224,171,194,179,183,141,130,57,70,29,131,252,77,178,12,130,8,125,150,233,254,88,16,21,212,131,101,
-223,78,123,233,36,144,171,71,227,43,161,104,86,155,85,180,43,182,168,139,175,174,88,48,101,128,230,221,37,104,29,93,
-3,200,186,184,98,167,174,213,208,51,133,196,2,242,73,191,13,253,240,28,243,145,16,148,154,33,218,92,230,13,108,192,
-119,18,213,121,136,109,52,235,118,139,3,214,108,82,47,187,250,17,44,141,160,25,88,38,61,156,153,167,164,12,42,143,
-3,118,48,58,124,253,126,155,9,89,132,92,110,91,34,101,48,29,171,171,184,20,172,101,103,226,129,171,107,143,116,132,
-145,96,149,146,120,100,128,89,73,181,116,125,93,46,78,222,79,234,49,201,23,130,95,126,143,24,40,197,171,41,33,8,
-107,163,244,207,160,204,124,231,70,7,63,24,142,174,149,120,203,217,2,114,13,255,233,134,180,201,27,188,59,207,225,30,
-43,1,4,31,108,20,101,72,8,251,104,33,63,38,90,62,169,188,148,232,238,1,193,153,230,74,57,23,221,231,255,102,
-140,40,119,228,141,78,193,83,122,244,240,176,5,99,29,35,82,55,34,232,12,196,130,125,82,72,74,26,76,215,250,214,
-132,42,85,215,162,6,99,88,94,131,194,184,211,217,70,29,25,79,133,146,218,131,148,92,52,32,9,116,103,16,89,6,
-33,172,113,72,5,23,205,99,180,105,29,114,255,244,175,159,11,65,216,216,195,182,6,143,141,79,240,225,85,80,238,44,
-225,245,171,0,166,208,46,156,167,87,206,73,52,25,254,16,92,32,109,80,216,182,93,218,175,167,165,143,95,227,250,210,
-85,164,84,183,151,121,31,155,250,27,30,40,107,229,21,93,63,213,136,116,34,168,202,204,209,45,194,100,251,185,199,49,
-18,225,161,225,23,180,5,104,244,38,65,50,71,99,158,155,37,38,20,241,196,190,203,168,145,84,33,84,114,40,53,119,
-148,252,57,181,72,205,53,61,147,59,119,225,250,155,39,183,27,188,40,82,45,209,113,246,24,14,236,1,246,213,215,219,
-184,227,130,220,145,17,106,214,249,250,124,246,80,109,164,20,211,107,3,34,187,224,230,98,6,143,161,42,71,42,85,198,
-56,79,191,169,196,62,140,83,194,232,45,129,108,248,2,152,241,116,148,244,237,252,205,129,60,111,67,205,57,87,208,44,
-23,163,231,198,185,217,240,120,149,92,14,102,48,68,11,113,223,233,73,127,58,164,86,65,235,142,106,44,1,70,238,35,
-65,220,225,27,119,55,198,52,124,119,200,143,233,123,18,214,84,175,119,163,105,133,240,162,94,112,225,239,53,49,243,72,
-72,218,139,103,191,175,181,186,251,47,1,3,209,66,22,253,60,125,192,206,146,177,164,180,114,132,81,219,46,100,140,115,
-57,23,24,134,160,93,193,14,72,5,104,24,155,100,7,147,47,120,159,36,243,139,217,129,67,40,156,92,70,101,81,166,
-47,186,70,168,118,224,49,55,137,166,49,79,1,244,93,86,60,135,84,214,46,178,152,0,202,184,96,72,230,105,29,18,
-142,197,223,119,119,100,18,203,133,16,217,157,110,91,109,55,166,224,200,83,186,74,1,250,171,220,206,24,31,170,182,42,
-3,138,219,0,74,135,2,22,45,179,52,200,238,69,1,78,75,210,212,194,47,234,60,102,91,248,53,214,59,126,108,172,
-37,66,85,79,46,247,228,65,76,147,80,67,227,145,54,185,16,237,194,19,194,115,151,178,13,146,225,50,40,158,127,7,
-250,157,244,217,41,180,37,249,230,147,117,226,35,19,129,190,207,135,243,237,40,54,160,96,37,183,21,132,116,87,130,54,
-231,142,199,100,136,243,17,207,53,245,31,214,227,249,84,253,188,78,218,49,158,130,55,172,114,106,185,155,9,127,15,43,
-27,204,38,151,167,96,64,191,147,255,64,7,198,174,96,170,82,56,7,82,244,52,220,14,70,42,61,67,182,255,92,254,
-117,237,211,121,246,162,62,34,202,131,4,70,174,89,151,134,176,184,214,214,158,202,251,127,184,103,111,16,101,119,224,5,
-66,126,94,165,49,252,49,121,28,158,166,120,214,224,123,226,152,210,253,170,80,197,216,218,207,34,66,120,220,39,87,152,
-21,15,50,85,156,170,79,48,19,214,122,64,236,95,155,112,71,5,245,215,186,18,72,65,84,37,33,174,155,153,250,100,
-54,252,132,172,118,18,225,243,115,220,185,27,43,112,228,41,225,15,24,166,215,64,68,103,227,207,179,229,239,40,10,9,
-40,80,35,94,70,160,23,140,183,87,130,217,194,213,76,152,50,191,155,94,74,116,9,34,93,48,85,140,80,26,147,70,
-187,152,205,6,225,114,219,117,210,235,180,201,79,66,255,222,216,211,48,179,40,11,76,216,249,211,162,100,135,193,87,43,
-173,101,244,129,172,131,116,129,219,106,60,232,71,103,170,87,225,200,58,80,99,243,238,40,108,218,191,144,244,48,163,13,
-8,165,109,173,49,21,237,189,190,93,238,207,61,138,173,207,67,116,176,14,230,119,187,180,17,11,223,190,116,236,63,169,
-218,206,84,8,92,162,233,177,11,12,199,43,245,145,165,158,136,151,45,255,196,16,120,119,145,249,58,123,187,84,228,213,
-217,85,191,99,101,119,117,68,135,131,128,29,44,93,6,150,66,139,171,146,100,152,68,221,233,241,152,110,240,120,96,21,
-160,35,255,129,36,43,38,196,229,254,246,86,253,40,198,7,104,241,106,136,135,163,186,244,78,14,212,173,69,59,162,150,
-46,15,97,167,249,170,196,118,185,163,81,182,250,70,123,179,215,148,167,44,61,83,40,209,98,25,208,129,86,132,251,129,
-66,78,239,9,60,151,14,46,136,234,111,193,191,37,178,197,89,86,122,6,59,46,239,152,166,156,140,180,56,175,127,73,
-20,25,183,40,16,24,193,103,79,177,249,20,164,194,130,242,103,176,229,13,32,75,147,207,108,251,227,134,130,163,116,14,
-29,105,120,60,33,177,203,179,187,156,185,211,83,154,170,89,190,120,253,215,254,43,199,202,219,222,165,210,102,124,193,132,
-54,153,87,17,108,177,148,148,191,235,135,111,65,0,138,199,78,244,52,231,220,81,132,81,77,138,7,174,163,53,233,93,
-188,159,25,71,8,228,49,160,198,243,129,169,211,104,237,24,206,164,58,248,106,191,162,224,60,196,185,120,21,160,167,21,
-213,130,199,20,224,6,255,112,13,79,210,195,225,3,13,76,150,3,123,76,249,197,83,142,72,51,164,21,66,114,251,196,
-196,79,89,240,114,23,81,0,135,29,40,109,107,29,196,137,101,232,104,168,18,188,136,27,55,30,109,176,31,156,247,219,
-151,84,144,170,164,233,101,135,217,16,76,137,209,102,119,144,158,231,164,173,255,239,45,114,36,114,3,236,32,159,108,186,
-117,25,10,252,18,116,140,141,69,10,36,69,64,103,175,132,146,250,230,202,113,214,99,5,127,179,106,57,0,239,6,213,
-64,248,218,103,246,195,43,9,23,94,204,59,63,223,160,69,86,166,142,148,76,75,70,43,155,182,174,84,253,152,61,131,
-189,67,138,145,68,183,153,97,132,151,243,9,249,247,251,203,58,243,181,213,5,158,16,8,77,222,214,122,34,44,25,206,
-95,170,167,203,251,146,247,42,99,213,215,168,129,196,174,35,254,45,20,157,155,143,250,126,121,35,151,155,157,151,180,97,
-33,24,192,142,51,43,48,82,45,46,153,186,13,59,118,101,145,221,197,161,187,145,82,181,39,55,42,73,197,181,68,110,
-5,213,93,121,23,164,157,60,38,84,231,140,185,176,163,234,15,213,191,152,102,168,35,172,6,224,38,9,60,179,108,1,
-46,253,215,115,60,198,178,225,19,101,250,97,184,189,68,92,118,207,87,155,217,79,76,12,86,18,133,1,63,109,174,124,
-87,145,35,21,223,46,174,130,153,171,63,17,29,69,113,166,125,48,78,3,229,15,131,35,196,238,195,163,64,124,72,90,
-30,165,181,93,244,231,53,253,81,138,178,121,131,223,28,69,78,253,92,255,76,55,185,74,2,175,98,233,121,102,63,228,
-169,159,208,251,175,22,61,115,229,177,149,178,232,177,65,169,229,144,152,55,129,237,110,9,136,198,232,236,189,216,133,181,
-62,32,219,104,39,36,110,126,41,158,68,237,24,83,221,206,227,190,129,216,53,213,46,199,149,193,103,123,83,123,67,97,
-197,125,27,69,193,86,49,191,185,89,175,177,12,127,219,183,98,51,33,245,144,110,160,53,175,68,135,93,174,169,142,110,
-14,159,79,102,63,234,28,70,40,96,112,243,36,115,251,38,111,55,182,107,68,10,112,173,115,7,14,239,210,213,109,65,
-47,86,254,187,60,119,48,216,172,135,87,169,141,240,135,140,28,209,251,236,80,59,188,195,254,70,115,206,108,53,121,20,
-61,240,51,18,0,239,164,126,163,12,141,110,237,191,255,252,152,130,242,40,221,99,140,46,53,198,6,204,1,98,214,108,
-151,214,115,20,115,38,177,154,255,195,45,76,81,170,38,236,45,183,167,69,126,55,107,52,163,204,111,116,79,63,127,75,
-120,251,66,190,144,22,204,133,11,106,54,78,247,194,95,89,118,32,32,10,37,138,29,208,197,123,218,82,244,55,182,246,
-21,119,131,94,162,91,78,84,54,178,252,142,4,250,196,136,67,49,60,94,113,30,97,212,67,82,164,34,202,166,136,215,
-8,60,214,47,141,152,250,39,154,30,199,73,204,102,80,111,242,33,97,90,46,152,114,59,150,23,52,245,213,92,146,132,
-88,19,2,66,35,201,145,186,160,85,193,94,57,68,211,98,90,14,19,245,198,142,147,127,18,241,41,166,71,121,121,61,
-96,39,146,148,166,87,195,118,150,69,105,73,126,71,123,207,54,115,204,153,225,4,234,237,76,42,105,126,223,21,233,188,
-127,165,40,116,192,97,77,207,185,153,159,67,179,112,235,230,162,192,100,60,221,12,206,178,50,11,223,210,105,176,55,248,
-187,253,93,117,15,214,0,199,205,155,184,159,249,22,253,151,210,128,8,159,126,5,79,186,19,181,223,83,184,96,146,61,
-186,161,178,75,148,236,94,36,11,179,17,109,181,61,237,132,246,188,107,70,111,91,109,92,120,254,37,89,93,197,174,231,
-10,80,197,189,206,71,84,220,192,93,177,91,236,39,14,46,138,233,148,249,204,96,36,35,148,201,230,206,70,140,239,204,
-77,170,253,175,242,48,165,58,17,0,30,241,47,199,72,44,188,146,11,17,101,197,203,148,229,192,205,217,178,69,235,237,
-234,65,232,214,253,66,114,134,67,232,160,244,108,5,33,159,186,41,123,16,46,72,241,173,138,86,222,94,24,55,198,140,
-174,187,217,39,191,229,132,103,245,159,174,121,140,227,43,158,81,27,23,196,40,220,75,9,243,205,101,255,220,106,128,74,
-43,203,105,40,126,222,220,196,36,208,50,18,109,251,135,88,79,59,58,182,172,35,161,148,62,103,251,88,181,53,130,245,
-202,131,95,61,187,222,222,202,241,156,197,77,55,210,96,255,98,224,111,0,58,172,204,22,10,24,198,230,240,102,80,128,
-38,222,94,50,41,159,65,208,185,32,239,244,169,100,10,79,191,187,54,153,161,159,175,255,124,61,59,70,176,212,133,152,
-129,219,219,208,245,69,159,208,106,85,119,103,57,246,87,205,249,99,54,28,59,103,252,90,160,72,71,92,22,196,25,240,
-35,251,89,151,82,41,247,93,247,97,124,35,166,86,96,71,158,28,151,99,110,122,214,93,79,231,10,82,3,93,179,231,
-57,240,224,161,222,75,227,98,45,59,194,167,72,227,129,227,29,169,229,43,145,232,60,9,68,13,219,60,11,67,208,145,
-0,230,83,183,186,238,226,163,152,222,66,36,233,56,18,135,83,79,129,49,184,212,209,46,217,99,126,0,245,251,88,8,
-149,172,144,23,192,75,60,109,34,202,67,168,86,147,220,208,226,82,146,57,89,159,237,153,227,196,105,56,33,40,96,171,
-161,97,228,31,45,181,144,75,25,76,159,83,186,211,91,153,71,177,179,228,187,223,164,207,16,127,181,78,26,101,226,171,
-163,73,198,208,85,219,200,21,96,132,150,141,234,156,2,114,98,190,156,235,25,202,70,106,33,135,171,191,13,70,219,34,
-118,47,167,171,176,77,187,223,161,2,29,52,8,207,229,249,9,66,188,217,255,48,77,253,193,166,198,17,156,192,123,196,
-164,222,8,52,246,37,21,99,195,218,233,207,229,183,164,99,71,203,220,233,5,75,35,75,68,21,49,94,52,212,182,186,
-175,2,179,233,58,30,98,246,38,39,96,78,0,164,201,212,122,14,224,252,253,100,145,111,217,133,93,114,185,124,86,116,
-1,193,222,148,105,232,239,129,217,238,196,140,100,14,215,212,36,74,64,156,178,237,159,192,60,126,181,2,37,190,205,89,
-182,233,65,25,164,29,131,253,253,162,203,224,136,206,149,238,214,79,52,124,184,149,173,3,181,93,93,54,17,151,41,53,
-133,98,19,147,232,50,231,80,39,148,12,246,188,78,131,165,163,107,141,153,115,203,22,113,5,236,99,7,91,125,250,56,
-199,57,98,238,206,116,208,80,225,68,153,17,57,154,57,194,59,161,80,95,42,164,62,14,210,240,84,113,159,95,114,131,
-146,207,238,233,219,7,35,205,255,65,241,88,214,183,78,95,80,83,111,210,148,100,51,84,167,247,17,248,164,178,152,60,
-226,89,58,86,23,26,140,28,39,208,242,49,155,32,1,35,63,251,121,230,195,14,181,105,220,36,107,251,244,186,110,100,
-27,226,97,55,118,222,106,230,152,154,4,127,151,30,217,42,81,26,66,247,14,35,151,26,238,246,3,166,195,200,141,88,
-187,107,212,8,207,192,36,115,189,177,10,252,237,21,215,21,99,144,30,84,72,209,56,54,243,98,229,169,10,2,195,242,
-97,0,186,92,79,8,40,4,38,140,245,97,107,169,198,61,59,53,218,111,221,137,53,189,186,64,36,224,141,94,150,210,
-63,26,133,196,210,0,76,155,140,115,172,131,95,8,142,248,85,88,14,235,165,127,91,12,167,85,114,237,43,242,93,4,
-117,10,5,161,144,109,100,179,139,158,148,12,169,66,186,246,9,117,220,103,106,105,11,57,200,182,27,89,179,219,11,242,
-231,60,136,140,148,117,172,101,167,147,163,173,249,73,46,243,17,184,163,48,131,224,209,205,169,94,64,216,91,188,65,172,
-245,176,245,107,234,248,74,52,135,208,198,10,189,3,60,73,210,245,96,191,103,239,250,204,110,0,162,89,135,172,115,211,
-91,108,57,218,4,6,211,45,102,167,107,17,39,157,37,220,83,58,204,59,181,190,238,222,124,219,39,6,153,65,151,247,
-199,252,12,240,35,251,12,146,169,215,26,174,212,222,66,80,181,166,160,134,197,81,92,234,149,22,70,24,156,7,163,26,
-142,1,214,26,233,240,217,194,115,181,240,219,238,213,38,12,243,174,116,63,201,91,227,216,181,246,153,234,110,239,104,241,
-207,91,197,151,16,201,171,115,195,165,34,201,47,233,57,71,131,43,215,207,101,146,49,144,31,244,15,197,197,71,102,232,
-60,84,86,221,82,81,153,126,243,197,189,41,232,23,203,234,121,103,152,55,241,124,228,169,146,93,87,201,135,222,240,70,
-165,121,116,155,192,186,183,121,213,160,111,192,35,129,152,76,173,192,6,106,70,190,36,8,13,194,250,71,149,56,191,173,
-64,194,41,12,66,174,65,116,199,160,92,125,85,124,102,24,84,42,121,238,198,36,77,67,101,218,227,135,225,38,36,120,
-97,255,33,240,167,175,204,28,183,120,22,76,36,46,89,210,133,228,51,250,125,59,190,203,254,174,162,203,183,43,174,161,
-40,174,38,110,218,90,182,166,12,103,157,158,172,191,201,76,240,91,249,157,25,164,215,247,70,44,45,85,114,125,239,36,
-239,77,38,8,215,54,83,31,86,176,10,23,168,133,143,193,56,44,102,106,200,120,159,175,76,233,65,225,83,144,117,213,
-125,142,194,141,130,30,189,173,59,185,142,152,248,21,31,78,217,231,10,31,106,214,210,102,143,205,40,242,53,19,197,185,
-108,181,59,34,99,65,106,36,140,255,147,228,208,239,154,34,11,50,67,124,36,152,153,10,187,229,64,200,50,152,86,37,
-73,27,223,41,232,116,39,161,62,27,255,184,209,116,54,164,42,179,217,20,129,229,90,229,182,248,215,171,175,157,21,146,
-240,163,19,64,199,255,253,148,165,187,218,131,43,142,65,5,18,197,193,209,239,202,246,61,141,164,85,152,151,158,44,26,
-162,196,203,117,215,160,226,251,37,16,176,236,101,216,113,194,156,83,16,3,118,162,104,103,186,165,56,28,134,49,193,129,
-104,105,118,87,62,189,7,73,252,21,36,232,200,142,26,221,224,48,170,79,148,188,122,121,190,37,166,106,38,86,30,8,
-141,196,187,39,26,248,219,181,70,181,140,179,223,189,142,59,48,109,35,180,87,60,8,11,118,144,237,53,113,123,90,237,
-167,156,100,11,55,114,156,158,40,226,62,241,203,176,170,52,93,117,68,167,188,68,78,172,43,67,101,165,107,158,215,86,
-51,86,22,25,83,71,10,14,194,30,144,100,221,105,77,7,87,178,36,10,21,178,32,151,42,225,244,165,221,243,207,22,
-206,243,85,91,169,53,7,43,96,249,92,149,83,1,111,76,119,42,19,78,108,49,51,253,94,41,73,134,58,85,241,64,
-53,98,210,166,217,28,81,248,184,136,187,182,153,62,41,243,61,198,29,235,221,9,214,120,73,78,98,79,194,131,72,166,
-231,38,130,242,194,128,29,44,233,84,78,81,226,210,155,177,160,185,130,91,184,32,170,85,43,74,142,74,170,176,175,13,
-11,117,238,1,33,154,70,205,173,165,6,245,41,148,239,97,210,77,31,18,81,14,141,188,70,246,251,244,45,85,229,206,
-44,142,106,255,181,190,31,93,61,237,89,95,2,62,67,235,212,72,212,38,253,116,215,51,146,220,60,82,194,18,205,243,
-41,98,204,53,128,17,81,43,157,42,236,5,29,102,152,237,98,120,140,220,154,15,5,53,146,152,92,171,77,120,191,252,
-126,72,49,195,228,214,207,188,56,229,21,33,142,240,48,24,45,220,97,76,3,226,154,105,152,229,8,47,165,228,2,91,
-226,101,237,232,188,178,239,82,2,25,221,94,123,219,209,130,188,147,199,79,163,73,13,158,25,172,188,208,245,143,206,97,
-223,191,47,143,39,92,101,104,136,107,228,152,251,60,70,183,222,127,34,149,170,171,120,99,232,14,101,157,123,194,117,20,
-190,233,53,184,80,244,67,115,200,243,42,240,220,208,132,184,74,8,227,76,93,105,74,110,7,2,122,210,92,250,28,153,
-29,131,103,241,199,189,22,189,53,187,238,207,3,251,184,24,209,214,117,24,182,170,166,227,55,105,229,121,255,168,18,58,
-2,104,16,191,245,18,79,49,84,156,89,22,225,162,230,248,70,15,92,193,219,117,183,98,84,187,130,176,255,214,146,27,
-2,51,155,10,86,144,164,54,150,181,134,59,151,163,39,50,79,32,226,226,203,227,97,195,208,145,97,193,80,187,69,20,
-6,194,152,242,210,76,119,90,99,65,222,114,163,234,203,130,1,0,255,24,215,122,109,198,189,218,237,31,104,209,65,144,
-178,175,115,36,42,107,223,126,52,62,248,198,23,180,175,138,82,122,52,123,78,250,200,192,25,64,80,193,24,80,2,253,
-74,75,35,210,123,43,225,89,90,249,42,177,127,184,157,39,103,116,213,28,248,147,40,69,138,175,40,135,174,246,150,118,
-186,55,147,41,178,239,222,76,78,158,240,96,73,28,117,227,78,48,15,44,21,241,166,220,32,59,213,200,238,193,60,38,
-15,118,72,155,16,200,19,90,49,187,145,173,237,31,121,25,1,46,165,1,129,253,2,123,18,89,200,48,153,244,249,246,
-104,194,225,239,233,170,202,120,243,171,1,157,193,217,18,174,48,200,169,7,156,213,189,238,217,191,221,91,130,2,62,181,
-68,189,134,189,241,80,71,78,156,142,149,237,97,0,114,77,136,248,86,17,189,155,228,93,0,138,167,63,194,91,39,104,
-157,65,165,112,189,201,189,51,109,217,7,207,3,247,15,245,23,89,220,135,250,246,124,6,157,161,195,66,146,112,220,4,
-90,0,16,89,40,234,196,127,255,21,94,10,117,10,93,74,181,192,240,183,194,68,139,14,98,136,113,51,60,242,168,107,
-70,91,31,196,117,127,156,135,49,92,121,81,191,207,242,22,183,151,209,156,244,110,197,183,84,156,65,39,8,21,165,72,
-228,235,118,117,7,120,7,112,215,237,173,109,148,202,166,35,231,17,64,205,109,182,184,56,103,143,120,212,99,76,201,145,
-157,209,189,1,44,219,241,137,227,141,36,239,195,118,224,41,151,25,63,6,212,188,216,90,189,65,53,117,31,11,170,127,
-41,97,7,71,83,254,73,232,137,188,164,200,50,40,239,126,28,165,71,240,253,91,241,228,150,203,87,103,234,151,216,244,
-198,191,43,207,16,105,159,195,145,58,251,164,128,38,103,204,169,143,67,231,28,29,90,213,179,75,65,20,185,93,168,115,
-185,42,174,142,80,133,141,129,120,79,73,138,168,176,23,67,40,155,126,157,248,129,87,54,124,255,80,156,79,94,110,81,
-34,192,228,194,200,187,102,172,18,58,23,232,208,87,81,62,229,199,168,151,139,82,139,230,206,140,22,146,166,69,13,193,
-167,38,104,146,185,72,202,72,190,167,25,70,152,167,173,111,104,253,237,134,84,106,240,48,47,110,206,51,122,182,166,99,
-51,135,10,163,65,85,155,60,49,161,108,233,53,176,19,127,44,52,210,205,78,171,128,231,185,14,184,73,24,6,3,102,
-167,234,62,16,93,133,234,132,212,2,45,204,2,72,70,252,102,0,195,190,69,173,163,18,254,65,21,218,177,42,171,51,
-121,203,43,36,57,254,6,228,19,182,62,174,76,186,41,91,152,204,194,133,243,154,69,42,174,197,255,26,23,34,83,26,
-113,166,26,31,51,226,52,69,106,11,218,153,93,201,150,54,249,28,249,186,34,226,6,84,203,192,110,118,19,35,209,163,
-177,226,142,223,125,175,23,88,125,215,44,9,31,70,185,195,158,37,152,133,22,167,17,18,172,168,201,49,175,47,223,242,
-162,133,26,242,94,87,54,5,175,66,228,237,175,149,51,86,208,222,95,46,134,216,46,19,72,25,244,5,102,156,139,153,
-228,239,254,44,4,87,73,138,160,203,219,172,56,97,244,33,4,135,98,9,225,41,30,215,169,101,198,161,107,46,206,205,
-13,180,195,110,94,241,125,45,243,97,14,237,80,31,6,230,101,119,25,27,6,33,144,199,159,119,171,232,55,34,20,18,
-170,188,150,206,40,104,104,104,72,194,92,189,171,168,124,69,151,195,13,113,106,185,36,162,32,233,35,106,252,175,66,62,
-253,164,197,226,57,194,110,14,169,222,170,176,200,223,155,189,173,68,97,215,224,3,143,217,188,133,141,168,187,182,4,64,
-249,246,174,233,101,194,179,30,41,8,216,182,184,18,203,75,125,52,122,25,206,164,58,206,24,160,2,0,53,224,102,248,
-85,127,8,153,221,212,189,58,101,20,244,82,40,51,60,226,34,148,241,101,91,23,213,53,165,212,242,175,183,9,215,45,
-113,195,150,253,115,57,208,162,191,244,218,221,65,3,19,159,164,123,232,91,87,116,56,221,64,200,153,198,225,211,88,67,
-149,187,196,79,95,41,212,10,153,100,127,227,98,129,51,207,94,212,161,189,34,56,67,158,234,168,75,102,75,60,195,151,
-76,242,64,12,78,247,99,60,64,94,37,213,108,182,24,180,248,158,58,168,121,180,94,239,146,76,244,191,231,168,51,2,
-56,226,113,67,16,231,160,132,54,18,140,100,128,204,88,167,63,97,112,44,42,210,88,19,23,119,139,171,87,215,175,122,
-149,49,12,105,204,246,124,4,14,71,178,173,110,173,166,140,92,205,194,239,214,188,245,54,162,93,231,69,66,9,194,73,
-95,29,45,90,222,53,167,204,124,232,149,120,70,149,89,152,23,46,51,143,112,244,166,8,209,169,69,142,24,66,146,26,
-180,80,145,245,142,242,29,130,145,125,166,141,1,60,120,64,111,206,219,124,78,137,24,34,146,165,212,144,172,12,10,78,
-216,34,110,46,166,85,69,128,11,57,84,250,144,220,239,210,213,37,126,169,164,31,252,230,125,106,227,146,33,62,181,202,
-92,229,174,72,178,197,58,16,0,206,48,178,78,39,236,250,52,194,201,43,186,5,139,68,77,134,53,62,237,135,156,205,
-141,178,212,251,102,213,90,193,118,231,136,122,153,5,179,66,113,32,217,57,243,5,98,148,192,47,141,109,148,231,14,106,
-146,36,9,33,3,161,4,75,157,22,90,24,166,215,232,48,86,62,27,60,14,65,5,142,68,121,52,176,250,166,71,243,
-160,243,172,74,162,64,146,220,17,37,207,109,103,193,98,56,87,246,103,46,119,35,61,243,251,107,153,96,230,255,209,85,
-84,199,0,115,41,234,245,152,241,62,156,72,69,218,168,31,115,0,84,137,248,203,171,38,170,20,141,43,174,122,184,4,
-33,167,110,108,183,206,83,104,51,208,45,41,187,124,163,59,146,199,26,5,53,117,162,79,22,167,188,107,91,53,175,162,
-153,196,131,252,235,209,79,123,3,197,213,232,184,189,43,104,186,209,63,197,234,254,132,159,224,196,241,42,175,231,224,117,
-101,109,76,239,70,200,106,215,102,176,99,195,230,208,247,56,31,138,166,95,133,182,226,48,115,26,66,2,33,32,27,19,
-65,60,113,50,194,187,29,29,227,155,130,20,44,190,86,233,246,13,219,94,12,27,22,54,75,221,204,135,68,21,48,197,
-132,192,193,8,157,3,238,154,217,124,52,28,245,227,78,223,14,215,35,124,100,178,228,15,202,171,219,31,14,91,106,81,
-145,144,66,117,213,152,110,203,39,219,65,108,248,59,90,108,16,101,208,236,193,194,244,234,7,145,58,49,138,93,199,64,
-117,70,2,49,66,218,151,225,160,163,205,217,163,94,232,114,48,57,166,227,174,212,55,164,103,199,144,53,104,137,78,227,
-240,6,138,139,159,255,101,230,32,92,254,232,30,228,39,123,34,57,94,33,178,163,150,155,20,37,52,216,239,194,231,182,
-173,118,220,248,30,70,164,43,171,240,27,219,242,76,109,224,153,209,235,122,250,177,18,178,131,31,152,205,195,90,37,87,
-4,63,3,109,99,16,79,85,211,248,31,234,26,186,134,197,127,189,207,204,71,52,216,252,53,16,223,147,139,201,228,84,
-106,126,240,242,229,85,250,157,102,5,104,184,24,83,204,90,147,173,145,27,77,206,2,167,116,123,170,130,234,211,220,142,
-96,119,84,205,169,97,107,134,49,115,156,216,178,212,199,190,186,47,175,103,47,168,130,235,66,231,133,19,100,143,194,96,
-108,138,61,202,3,222,213,121,159,85,198,202,221,20,146,148,61,29,127,149,148,118,245,215,164,125,189,217,138,20,152,223,
-182,164,247,248,90,158,86,43,201,154,158,174,144,221,42,31,253,186,105,49,9,196,247,42,208,155,34,167,86,20,103,122,
-234,203,29,168,165,155,138,90,185,160,133,205,63,65,157,154,220,50,227,49,81,183,134,51,145,168,152,236,37,255,45,93,
-222,29,80,89,227,230,87,100,67,246,21,10,245,197,168,1,2,108,37,35,64,225,148,255,253,63,229,151,0,143,197,242,
-2,202,33,213,89,161,144,102,142,92,90,86,226,241,179,255,231,191,224,51,42,34,202,248,52,134,36,89,236,235,131,82,
-208,42,55,234,179,24,105,19,229,164,217,173,140,166,176,222,146,153,198,29,107,219,215,48,27,97,7,51,180,57,223,128,
-144,51,137,208,73,182,215,241,174,97,159,82,47,166,106,87,141,131,82,61,252,131,102,186,6,211,44,87,119,15,238,48,
-103,208,5,114,203,135,233,185,59,20,57,252,110,137,156,105,105,105,113,243,218,108,146,246,240,106,145,108,226,47,188,173,
-124,243,122,77,93,22,1,166,114,31,186,216,21,154,228,250,62,193,109,253,14,19,197,198,111,224,227,39,116,30,136,106,
-21,136,250,253,200,219,221,26,22,93,218,238,118,5,31,208,123,5,208,243,198,217,61,193,149,1,1,17,250,59,162,221,
-171,158,212,251,173,240,248,175,47,113,53,98,69,145,85,75,222,206,250,191,32,143,208,56,223,88,41,132,33,248,250,173,
-41,123,91,176,51,220,214,128,127,229,155,211,211,16,75,43,101,148,225,22,210,229,112,121,251,15,93,135,145,48,36,198,
-38,13,96,27,214,46,65,164,140,58,96,207,249,145,100,14,55,252,149,127,39,93,16,40,128,121,190,162,122,80,56,57,
-95,182,55,189,6,183,162,67,47,13,166,238,21,167,172,164,173,138,133,173,213,186,35,87,92,244,124,137,220,49,50,76,
-176,78,67,172,51,157,108,183,104,107,247,23,43,166,190,124,152,19,35,97,68,38,98,45,27,137,150,214,225,114,27,70,
-62,243,157,209,155,57,8,61,6,148,0,96,80,215,132,74,228,229,240,174,3,121,205,56,116,184,58,193,67,9,63,205,
-173,56,150,194,88,214,117,108,253,52,167,134,250,123,68,226,203,110,61,112,50,211,62,69,5,64,74,163,98,180,10,204,
-107,128,172,209,199,162,209,87,3,198,146,232,225,10,101,165,99,30,239,250,63,238,146,34,89,165,132,116,72,47,143,12,
-135,52,182,91,62,99,222,232,36,131,91,227,96,175,197,44,95,147,246,215,119,23,13,31,93,174,242,15,205,242,247,178,
-130,48,193,132,131,48,57,181,143,85,139,117,144,163,92,68,72,206,100,61,171,158,123,97,135,124,30,240,199,103,170,80,
-208,52,53,114,213,131,73,158,125,126,226,2,197,128,41,163,17,34,177,226,116,196,27,149,1,47,78,82,73,58,46,64,
-94,218,97,216,205,51,255,238,254,191,221,90,138,252,24,9,21,4,198,224,141,183,37,43,39,57,178,108,32,25,228,91,
-44,20,114,227,122,238,165,153,100,111,159,142,186,15,7,177,93,237,168,248,179,57,124,141,27,203,106,18,143,245,213,130,
-52,41,197,69,225,43,194,252,41,87,226,75,173,79,251,185,66,30,79,13,50,231,47,29,7,57,74,231,109,72,36,21,
-206,216,100,81,149,254,240,240,226,167,131,20,18,238,134,46,48,57,154,109,142,194,147,94,242,205,224,202,16,141,48,169,
-129,59,49,214,232,86,119,223,61,225,7,107,250,89,92,224,77,80,192,125,167,107,151,170,162,11,27,240,158,246,12,40,
-91,11,93,8,111,34,39,3,26,87,184,112,3,102,170,204,32,78,24,106,5,206,229,220,66,14,243,202,236,16,179,87,
-217,230,46,136,32,71,140,192,240,34,28,248,198,50,3,42,138,176,33,29,220,110,7,8,201,145,82,159,55,150,179,12,
-202,107,102,133,117,162,90,202,228,77,182,175,101,15,210,219,251,239,1,0,29,76,142,142,184,227,161,17,34,214,5,103,
-176,83,119,217,32,128,91,59,187,182,251,1,197,77,162,242,134,126,183,88,98,18,22,35,58,110,173,82,11,239,42,210,
-65,70,86,205,112,53,75,169,31,5,43,65,232,85,192,145,116,12,229,110,222,160,120,80,158,228,196,67,64,249,61,68,
-214,94,41,77,186,163,65,49,100,175,112,229,169,65,116,5,121,187,62,54,195,28,163,26,203,39,48,61,78,200,140,3,
-42,220,201,129,126,170,99,19,181,37,91,39,51,169,6,247,225,148,7,3,73,180,37,100,212,255,60,161,63,195,12,236,
-189,92,14,85,51,248,32,158,213,150,163,16,250,176,57,57,222,248,147,120,193,207,13,136,22,77,136,129,50,174,162,112,
-62,2,57,144,251,36,26,247,127,99,113,114,38,92,166,17,161,77,114,86,162,74,221,30,230,95,60,46,124,92,55,192,
-209,189,1,38,156,1,120,202,220,162,124,20,224,243,249,173,67,159,209,12,12,125,49,61,3,254,220,66,212,128,128,251,
-128,116,178,250,52,8,240,108,20,246,55,89,12,224,141,144,127,68,112,136,8,53,222,81,125,23,136,0,168,111,131,26,
-0,234,30,83,129,20,246,182,164,146,32,166,208,94,139,89,163,124,137,133,49,200,206,125,150,32,171,35,77,209,80,60,
-189,102,247,50,206,149,33,203,142,197,44,32,110,218,110,47,11,43,99,253,97,65,217,132,151,190,25,236,45,165,113,40,
-182,205,155,94,87,144,35,102,173,114,191,102,61,127,82,113,1,81,228,120,164,239,195,101,239,117,136,73,247,122,178,20,
-8,112,116,157,16,70,112,156,146,76,97,97,1,207,195,33,87,53,255,146,139,170,176,58,3,22,246,243,157,148,209,14,
-27,62,41,237,164,49,90,123,15,188,236,118,195,202,11,17,109,101,115,18,93,127,48,58,32,17,10,246,89,34,228,117,
-44,187,34,112,243,13,66,230,170,179,121,98,70,252,187,58,152,117,114,141,67,16,102,54,174,98,70,211,100,116,149,48,
-103,106,227,94,107,219,189,27,115,108,73,237,214,169,218,158,94,170,102,217,68,84,221,32,246,101,170,214,123,13,45,61,
-239,163,48,125,80,210,186,84,175,5,67,175,188,54,55,99,191,111,204,218,171,128,139,80,47,85,180,207,168,41,92,101,
-234,229,63,8,146,151,192,63,216,218,193,208,47,189,67,230,218,2,58,71,126,133,82,117,92,112,16,96,9,249,227,90,
-37,6,222,192,6,196,123,244,217,195,201,163,213,12,104,171,225,15,67,185,160,14,207,47,69,25,45,244,239,114,117,120,
-97,106,44,163,146,55,181,151,5,180,96,134,171,196,207,75,86,233,32,241,161,23,63,99,217,228,86,23,248,120,232,95,
-221,189,182,78,77,71,66,51,205,171,70,238,116,112,124,37,182,187,248,202,253,132,202,68,17,6,98,232,209,185,120,200,
-28,32,8,158,173,154,55,251,21,34,94,122,92,175,175,208,224,85,140,99,50,158,229,208,149,203,66,221,231,218,71,218,
-250,46,214,193,217,46,222,245,173,27,184,49,124,85,243,108,203,21,145,33,152,240,72,134,52,220,20,189,91,25,131,177,
-214,214,229,44,3,21,124,107,155,182,55,152,136,248,234,91,160,177,161,80,111,148,241,2,198,185,218,48,152,232,83,229,
-143,3,197,58,64,228,11,85,147,163,189,1,171,167,68,22,71,212,186,4,225,77,122,52,106,8,43,69,143,192,35,159,
-193,197,100,158,46,6,22,151,0,47,96,39,165,104,221,214,73,117,188,18,33,116,139,213,132,14,240,252,54,108,228,43,
-193,206,218,237,190,85,235,217,96,234,104,206,128,135,145,227,39,189,46,202,32,234,241,169,118,131,198,211,21,231,202,7,
-172,192,175,234,1,110,151,98,227,210,149,222,134,247,136,172,211,29,22,68,7,43,79,160,169,66,117,157,24,56,161,225,
-206,126,161,184,99,215,223,249,12,23,164,50,72,13,37,33,89,29,18,67,142,57,66,53,100,129,121,152,228,129,201,204,
-192,231,236,241,247,251,52,27,236,223,215,200,102,195,203,45,94,1,142,135,176,147,129,80,1,13,85,11,164,206,14,84,
-31,224,75,0,179,218,96,44,189,223,121,227,190,5,182,49,189,178,45,22,60,103,57,28,31,18,185,146,3,143,114,138,
-136,100,29,47,224,135,237,191,99,111,196,150,103,139,246,25,3,14,69,26,153,228,104,111,51,30,171,32,135,170,162,250,
-2,231,166,236,163,112,113,67,94,41,108,116,194,9,148,31,58,169,15,214,69,85,233,245,42,218,143,236,190,174,197,150,
-187,125,80,108,198,135,196,232,140,137,218,2,174,252,46,192,95,238,228,77,65,67,100,125,197,69,190,134,106,114,159,139,
-9,163,226,173,37,13,42,75,203,120,20,74,125,134,124,156,10,240,52,185,246,35,138,79,47,145,140,172,32,32,253,76,
-198,207,218,55,71,186,232,140,53,221,56,194,135,155,175,91,178,155,21,96,69,181,171,66,14,97,112,146,11,9,227,123,
-42,223,94,177,169,223,19,103,206,182,27,188,13,142,16,105,171,132,131,174,71,155,89,122,254,118,192,247,12,77,199,147,
-247,13,107,102,253,4,243,39,123,121,199,131,172,116,40,7,41,139,158,61,208,193,71,187,203,165,26,11,86,101,11,118,
-191,52,249,30,72,107,73,248,233,31,95,144,193,48,220,155,246,115,84,198,150,144,86,179,2,250,200,103,42,132,4,108,
-233,98,118,249,70,102,102,51,238,6,162,143,81,124,154,80,33,41,80,130,2,98,183,113,66,166,251,161,48,228,247,15,
-76,62,68,109,185,78,53,225,89,171,92,215,192,240,89,154,103,223,113,209,133,39,107,84,249,137,14,138,72,84,94,223,
-192,206,90,95,241,66,102,0,116,29,194,46,106,103,235,175,37,75,128,35,68,78,140,75,152,93,235,49,66,246,10,14,
-103,30,48,154,85,6,70,133,214,202,249,98,255,208,30,130,77,184,250,101,143,237,161,222,153,65,101,96,164,59,248,133,
-214,23,224,150,125,193,46,135,134,238,69,198,110,106,101,163,85,146,197,111,45,179,59,192,153,189,26,169,88,240,242,38,
-87,248,212,65,212,182,165,93,178,229,182,138,209,57,88,3,208,228,50,219,4,219,57,18,212,99,44,80,37,36,91,183,
-37,49,73,168,136,216,82,203,4,23,67,96,39,79,68,105,141,3,71,227,134,111,29,189,127,174,94,190,249,34,239,184,
-226,73,36,118,95,119,202,17,127,100,147,41,129,53,247,93,51,193,4,122,61,228,69,95,178,175,11,17,53,254,241,131,
-126,25,206,153,53,65,164,53,109,116,107,251,185,43,184,215,5,63,89,232,66,10,49,192,244,19,39,245,25,154,9,203,
-46,204,23,174,96,57,101,83,28,105,52,139,49,108,126,64,250,204,25,131,80,148,107,235,102,13,176,217,253,199,140,111,
-69,20,152,147,132,233,204,24,173,97,185,94,187,133,113,42,101,155,92,196,181,60,6,189,13,186,25,74,162,150,179,64,
-206,239,125,251,237,137,196,223,171,156,67,3,88,12,24,135,132,136,241,32,79,246,100,162,129,90,24,36,19,58,217,100,
-69,151,214,90,162,162,149,133,58,116,208,148,195,168,149,223,140,47,236,210,13,71,44,215,207,74,34,126,117,103,68,54,
-47,156,232,118,195,138,75,185,26,176,74,79,254,105,9,209,131,65,71,216,7,178,24,38,245,182,18,19,1,146,129,150,
-17,244,248,170,121,152,54,80,99,207,82,8,210,131,151,114,12,194,204,142,112,133,65,155,238,46,110,29,231,68,157,39,
-142,34,92,85,211,243,63,219,214,208,192,197,60,191,155,140,33,50,251,84,3,236,132,175,32,104,40,167,71,226,255,64,
-123,165,237,199,124,54,84,98,50,232,1,114,19,146,125,237,31,225,107,38,213,136,179,243,255,128,188,101,35,166,2,117,
-211,200,166,201,139,217,94,181,74,104,91,250,166,101,0,49,20,29,214,22,82,11,81,154,152,166,199,95,157,164,104,171,
-88,76,250,16,189,164,110,55,162,190,129,30,110,210,237,165,20,236,131,192,124,14,178,69,247,151,221,223,253,62,182,165,
-159,64,114,110,62,192,213,182,10,69,51,133,43,33,72,231,236,135,203,26,157,170,85,139,246,103,33,245,218,16,122,183,
-28,36,161,132,126,190,9,211,210,73,26,159,199,248,16,197,209,211,154,217,132,82,57,89,36,0,25,25,198,221,13,48,
-98,255,198,227,156,196,130,121,149,84,106,191,146,179,161,71,7,18,119,51,124,109,89,232,77,170,61,46,30,248,25,69,
-103,40,8,192,135,136,166,170,155,104,201,111,198,218,29,94,72,228,1,83,13,118,34,112,167,251,158,178,241,144,185,193,
-186,29,24,110,192,3,54,165,141,19,139,137,34,159,4,36,36,57,223,164,59,189,197,44,118,60,170,172,50,41,26,208,
-179,33,50,56,164,128,128,131,197,121,20,120,212,219,122,189,23,117,37,90,171,179,239,117,59,110,95,196,202,58,55,196,
-117,157,67,249,199,8,95,169,43,20,72,159,13,236,172,214,105,180,88,182,16,131,191,192,25,148,96,40,114,230,119,48,
-61,30,64,159,77,111,131,166,198,44,209,1,192,18,112,228,252,250,126,167,82,52,249,173,163,235,33,4,102,214,76,227,
-17,170,21,193,175,5,100,198,201,182,123,211,180,15,147,199,171,167,40,158,95,146,198,173,104,117,228,243,155,4,134,199,
-79,233,230,102,105,118,49,172,98,15,68,192,87,133,20,26,5,75,183,46,84,206,23,207,14,99,212,234,51,94,47,56,
-82,216,157,161,155,174,173,230,138,119,139,191,61,131,32,207,15,191,32,223,87,205,33,45,99,232,238,185,238,196,153,210,
-16,32,100,61,131,50,231,35,164,213,43,151,15,30,165,109,80,54,25,134,7,136,198,183,127,124,93,63,143,180,248,182,
-231,99,171,14,65,145,209,232,47,142,128,204,25,113,46,33,153,117,181,109,149,233,236,250,176,102,196,40,108,208,230,89,
-177,182,215,77,220,205,136,212,158,77,14,176,54,0,65,244,229,222,53,139,175,237,195,97,91,190,106,210,40,67,210,30,
-123,240,223,97,227,131,131,98,199,32,153,161,163,177,123,242,179,57,92,82,251,246,30,80,200,6,147,225,4,23,68,22,
-74,103,67,254,18,186,90,136,157,52,136,157,159,192,209,150,220,36,181,32,248,14,131,124,65,129,58,120,240,55,65,66,
-141,196,22,52,15,122,226,16,119,22,211,230,4,162,98,199,208,132,189,139,119,120,153,68,180,233,73,222,173,187,107,28,
-40,22,82,225,109,222,36,252,190,52,130,199,24,9,149,233,15,57,253,181,213,25,169,190,178,10,7,157,26,189,228,112,
-232,107,86,42,157,124,92,252,79,1,66,187,120,217,172,44,216,76,153,110,174,124,230,153,188,133,249,38,149,152,78,173,
-80,237,122,199,126,213,14,190,108,178,55,10,42,192,114,117,21,92,99,29,243,168,63,219,27,56,175,164,37,189,153,62,
-165,234,231,184,255,187,109,96,238,223,11,41,144,220,139,127,237,185,225,143,59,49,175,108,215,135,197,31,130,132,196,34,
-9,9,162,90,126,242,255,58,126,159,59,23,89,204,232,233,82,238,165,159,143,254,157,244,216,150,105,8,126,104,248,118,
-73,199,115,23,150,191,116,160,232,90,235,238,210,186,140,158,81,43,141,151,201,146,159,144,139,63,25,128,205,235,46,23,
-182,245,236,92,156,144,120,25,113,236,174,59,114,46,89,160,8,67,169,229,7,63,53,197,154,131,106,201,23,82,234,117,
-209,35,172,62,163,90,13,74,254,10,55,221,123,32,194,70,51,199,240,5,40,183,176,127,92,237,105,202,53,158,183,157,
-247,90,250,65,36,173,122,63,5,140,225,119,150,170,101,31,214,218,44,19,128,246,242,188,73,162,34,16,215,168,122,31,
-93,204,31,203,188,171,117,194,244,110,16,64,157,213,19,208,35,104,237,140,44,209,84,69,239,192,16,21,29,6,205,94,
-254,60,25,44,250,178,179,235,178,36,1,157,98,208,146,17,200,159,59,229,109,131,227,92,222,137,236,219,91,171,53,188,
-116,115,195,18,31,51,58,64,3,87,185,206,55,239,52,219,123,164,177,111,90,253,171,162,91,35,40,54,60,216,46,96,
-199,34,147,90,39,147,35,190,74,77,222,253,105,62,244,214,18,155,86,207,255,254,126,140,230,67,182,255,255,255,255,255,
-255,255,255,255,255,228,112,54,146,16,30,233,6,201,4,171,192,96,225,8,193,240,154,255,57,215,65,103,52,82,64,83,
-249,217,76,3,227,111,118,70,20,95,243,213,206,138,240,165,65,89,51,37,166,201,207,176,246,196,56,28,126,11,218,41,
-26,61,227,103,252,154,61,77,45,214,234,143,38,115,21,187,175,147,97,245,182,124,248,219,171,105,116,190,32,134,155,217,
-201,125,227,17,165,181,209,121,8,237,60,104,188,18,44,90,214,162,63,236,49,118,62,177,245,215,231,63,162,80,168,64,
-108,200,215,7,192,89,56,45,68,234,65,174,21,194,72,6,131,93,51,203,49,246,94,243,224,229,37,40,201,53,188,229,
-193,101,180,225,15,208,231,255,26,77,145,34,107,195,248,93,151,248,211,193,32,194,44,39,129,111,170,115,7,75,187,21,
-224,118,55,211,78,48,135,90,174,160,223,132,122,194,106,59,173,59,174,184,37,12,141,182,164,180,135,247,173,81,157,118,
-101,24,96,38,152,234,154,10,161,172,45,18,84,240,21,52,124,44,232,220,242,204,16,149,159,183,148,173,6,121,88,178,
-185,15,22,226,8,14,28,146,96,238,250,160,129,139,68,2,142,164,108,197,96,20,128,140,167,48,29,1,247,227,210,168,
-239,95,172,184,20,245,233,45,102,145,192,75,177,83,241,20,77,129,119,154,47,9,210,250,176,110,160,193,196,231,159,89,
-64,164,95,39,153,202,206,146,180,103,192,28,47,105,223,71,151,98,13,145,92,117,188,222,75,187,178,22,31,209,166,89,
-70,105,46,28,237,36,145,118,5,229,234,147,131,201,85,195,59,118,224,93,158,225,26,63,130,182,251,120,107,198,216,25,
-82,97,38,121,184,59,121,119,207,34,132,72,252,95,248,221,109,255,61,171,136,236,128,27,196,87,242,76,77,148,156,107,
-162,33,197,165,112,197,13,43,90,189,107,225,203,97,105,129,249,2,159,164,219,237,37,162,162,57,46,121,130,201,217,181,
-207,164,41,17,246,74,119,209,91,208,184,223,198,149,124,17,171,179,213,240,39,197,212,54,241,172,179,142,75,90,240,22,
-15,227,106,144,111,37,249,248,3,189,157,85,179,50,253,32,178,81,197,75,23,23,190,101,41,178,110,167,14,36,137,173,
-38,156,74,144,20,173,117,111,70,217,232,65,127,132,50,206,244,90,6,242,218,226,76,210,222,85,29,135,248,235,100,74,
-200,193,117,49,255,52,198,237,212,177,72,136,68,85,97,143,21,240,125,126,22,242,184,252,192,234,35,246,131,68,31,77,
-46,10,91,35,104,20,37,94,105,151,140,110,223,147,208,1,242,170,198,116,127,44,40,56,81,222,198,96,241,92,164,151,
-241,79,178,106,191,76,28,231,7,251,195,107,239,56,18,8,10,220,208,143,91,197,119,227,220,80,109,176,211,195,105,125,
-159,89,170,0,130,167,165,18,138,165,79,252,225,198,150,86,154,157,171,45,175,21,236,20,249,40,10,158,221,250,69,61,
-113,153,220,146,251,67,138,255,207,72,176,19,8,58,246,145,240,242,253,121,113,204,207,170,252,254,215,86,41,182,84,138,
-34,24,157,66,25,251,205,213,208,19,199,35,135,171,185,162,88,198,153,36,88,161,231,68,157,159,204,150,224,221,169,241,
-16,171,180,68,12,155,50,95,75,116,131,242,64,104,28,222,54,88,87,131,133,152,150,127,135,67,1,236,125,9,151,162,
-60,237,25,91,234,105,123,217,117,202,220,77,75,122,130,136,196,111,64,156,65,134,94,19,139,92,191,237,40,188,8,164,
-243,137,222,74,165,165,14,95,159,200,125,189,18,15,22,239,46,49,67,190,169,247,42,149,101,43,84,220,188,99,64,136,
-85,134,139,129,151,69,119,83,160,216,255,75,98,254,10,165,72,117,71,148,63,95,157,0,49,0,209,240,28,184,6,68,
-250,140,78,180,156,162,22,88,125,122,206,165,212,26,85,17,159,162,248,168,205,167,8,62,138,149,169,76,161,186,68,250,
-198,246,156,72,43,240,105,35,179,43,184,59,155,235,153,75,96,240,252,9,51,132,2,171,10,201,59,87,192,134,82,71,
-167,213,154,151,177,62,99,17,179,176,15,161,82,12,247,185,47,130,134,24,100,77,113,160,254,228,61,194,178,184,50,210,
-39,148,247,19,17,193,189,142,220,203,116,165,117,1,64,206,172,159,112,151,246,91,88,67,164,232,231,148,150,100,19,19,
-20,131,75,208,87,25,235,255,102,91,173,224,48,113,1,168,186,9,251,173,191,89,48,149,147,57,190,167,24,179,128,23,
-125,238,47,215,14,108,110,156,252,6,252,234,159,233,118,213,180,161,144,19,177,39,29,79,74,209,211,232,95,188,25,184,
-192,245,0,111,79,82,225,208,9,23,252,101,202,241,71,102,113,126,80,104,240,161,17,96,255,153,216,18,126,70,47,99,
-186,181,69,171,40,123,53,215,76,89,142,202,140,242,211,255,79,135,155,162,152,12,177,215,8,209,65,254,191,245,115,228,
-135,192,107,103,27,143,154,204,68,87,25,28,202,96,144,125,150,83,243,1,175,123,145,239,219,144,93,224,168,140,158,27,
-111,175,194,42,232,173,154,219,159,167,76,84,140,231,237,63,57,125,199,205,164,159,14,45,11,203,226,205,165,189,91,189,
-244,89,191,221,66,107,132,203,26,158,148,104,66,104,250,181,254,147,125,33,194,77,152,40,247,140,253,98,96,222,83,90,
-137,17,13,245,143,174,16,95,9,21,227,247,49,79,105,201,30,35,204,77,181,242,201,246,164,188,242,204,113,238,181,94,
-73,123,60,125,26,112,23,111,100,92,106,187,29,208,34,79,243,89,227,63,60,122,144,55,131,115,91,171,190,245,56,239,
-102,13,141,176,44,184,64,211,66,246,168,104,202,190,200,76,227,124,215,193,42,22,52,141,99,30,210,71,67,226,0,231,
-204,245,70,215,181,172,61,34,40,89,100,63,158,255,204,9,149,111,32,46,79,153,43,128,50,10,143,47,183,219,208,86,
-234,179,32,24,96,96,212,200,73,217,166,221,81,160,206,217,180,2,121,60,128,157,252,77,250,226,251,187,159,85,85,155,
-154,134,95,94,165,72,164,21,53,13,205,125,215,64,44,57,107,104,83,239,201,215,89,168,157,66,137,92,12,82,124,103,
-145,58,9,161,153,19,46,226,131,171,52,217,55,146,216,92,32,174,46,45,140,99,126,109,122,115,187,240,250,228,225,25,
-24,185,79,242,113,53,72,213,174,46,134,83,39,30,173,111,197,178,49,46,48,24,67,239,127,225,61,206,211,134,195,195,
-199,170,162,106,169,54,82,106,110,231,230,208,178,65,131,227,102,121,71,173,33,168,86,93,110,183,87,205,148,227,14,187,
-205,142,221,156,234,152,236,38,48,160,177,176,248,172,168,37,146,253,19,55,85,100,160,171,182,213,197,239,158,126,123,245,
-100,53,30,41,254,135,254,152,80,231,248,198,37,14,57,4,152,84,246,119,169,216,14,11,218,151,36,246,185,163,174,211,
-129,8,4,250,2,215,36,4,130,240,104,113,82,83,94,86,175,231,172,219,193,158,185,206,222,145,107,187,55,113,19,141,
-96,42,24,180,202,228,46,108,79,234,15,169,74,157,155,89,8,141,89,17,8,37,161,120,54,15,192,247,165,105,72,134,
-185,228,173,12,243,116,175,50,167,175,245,169,235,31,173,52,46,157,215,137,230,127,30,36,22,28,248,173,125,187,105,85,
-194,26,204,139,15,221,187,170,147,203,144,88,162,242,35,34,35,203,149,214,157,83,24,120,152,219,38,25,239,200,167,158,
-211,42,64,40,32,131,183,142,252,97,45,213,240,94,109,87,196,196,147,12,13,251,221,118,110,17,194,140,87,61,53,86,
-159,80,140,115,30,60,66,84,246,129,17,18,118,230,39,198,80,248,0,172,244,190,184,9,162,35,170,111,110,82,47,252,
-68,132,88,239,14,194,13,160,223,152,30,233,79,65,232,93,87,35,178,198,205,25,111,191,94,41,72,14,139,224,88,110,
-234,34,57,208,130,27,176,101,180,45,44,138,250,96,85,46,150,87,140,65,138,111,231,128,56,172,37,65,172,244,41,224,
-122,140,251,125,176,84,84,126,172,152,108,158,8,75,31,3,102,103,190,91,196,200,235,255,132,18,190,224,206,57,224,152,
-241,23,123,109,15,70,179,151,193,117,165,183,61,96,13,12,78,73,46,165,144,142,121,251,205,114,248,45,245,245,111,105,
-57,199,231,76,80,162,44,84,223,166,5,236,39,22,90,255,195,159,160,134,85,12,111,115,96,35,198,48,248,51,151,206,
-241,21,208,121,135,247,33,66,75,202,227,227,44,181,186,163,33,52,182,18,30,51,177,254,228,137,72,55,156,15,96,64,
-3,175,78,13,196,170,208,55,177,165,227,252,108,17,241,84,28,109,242,1,199,43,127,231,215,40,137,31,195,6,118,168,
-89,137,43,153,131,5,192,162,1,77,4,34,20,234,178,219,73,105,228,227,112,74,37,195,169,144,1,117,149,161,231,69,
-209,95,165,237,236,240,12,98,199,30,9,246,190,248,219,184,237,2,202,162,220,160,116,61,250,61,229,147,182,63,84,185,
-72,61,167,13,195,218,184,74,249,80,22,123,202,241,232,176,110,166,73,143,214,119,20,238,131,2,253,111,134,148,141,120,
-217,132,206,83,61,162,190,252,247,211,252,90,51,178,61,202,189,207,156,64,93,80,174,232,28,120,1,36,48,193,204,134,
-3,243,143,14,118,194,149,189,111,246,146,161,93,200,201,6,182,25,103,106,206,80,57,184,253,221,207,103,18,11,192,57,
-28,66,51,6,227,193,176,44,209,167,143,73,13,215,68,249,234,68,47,32,67,13,164,33,52,54,246,117,161,248,89,82,
-65,89,154,171,163,13,108,20,82,61,226,154,152,100,160,121,217,182,170,242,53,57,249,253,140,222,52,101,96,169,218,204,
-1,6,105,70,254,108,40,44,71,169,199,64,38,225,48,0,132,159,121,118,192,35,154,71,188,127,157,107,250,204,96,197,
-82,226,62,35,7,1,169,213,211,145,65,228,45,230,88,125,43,144,219,150,236,96,39,218,211,174,68,189,106,34,41,48,
-154,120,40,44,193,252,73,178,70,124,85,69,58,32,106,246,48,234,224,173,6,67,43,200,8,243,179,225,218,148,140,217,
-7,211,2,146,156,83,99,96,45,159,232,233,32,228,157,8,205,194,218,70,27,47,12,207,144,137,209,111,168,121,94,216,
-153,224,120,197,43,91,248,213,69,8,117,212,122,215,100,189,199,100,42,199,209,168,232,161,56,217,141,189,123,191,140,20,
-46,250,127,255,140,199,141,39,140,219,104,238,176,120,78,140,228,58,227,209,59,213,118,207,174,82,37,253,49,167,10,68,
-235,195,165,171,72,221,134,20,153,120,232,108,133,186,81,65,243,136,89,155,6,215,196,39,75,210,206,45,245,43,85,41,
-131,101,44,223,71,237,222,156,40,43,235,124,179,93,134,201,18,126,141,214,28,20,176,125,12,238,147,252,33,34,35,75,
-211,181,28,19,160,197,1,138,24,66,195,218,41,105,118,192,129,199,87,48,128,220,249,89,145,25,249,189,62,208,105,211,
-192,57,141,113,217,131,239,119,39,22,244,131,1,186,42,51,225,7,55,138,135,216,35,150,52,137,39,24,126,62,199,111,
-164,74,123,209,192,221,16,199,38,61,133,102,234,80,196,6,82,97,8,2,19,45,201,18,116,147,215,98,84,108,90,53,
-160,55,153,45,156,90,22,70,223,71,203,178,112,250,173,234,81,144,177,93,225,228,166,51,79,71,82,95,50,128,91,37,
-140,253,162,115,145,228,59,1,62,189,207,69,238,21,200,180,172,246,204,131,142,123,49,164,82,143,47,172,196,182,177,212,
-250,184,77,128,70,204,253,102,63,109,101,191,10,87,150,93,36,235,93,233,118,187,179,243,96,193,92,124,196,249,23,241,
-136,44,57,231,32,45,97,135,49,24,164,181,112,163,185,169,43,46,150,5,251,33,144,93,102,248,168,197,181,98,175,211,
-241,77,109,107,83,106,146,255,209,43,158,0,11,199,253,8,111,173,3,100,243,225,54,195,33,112,217,230,250,22,199,159,
-252,147,174,151,11,137,163,31,250,48,44,227,116,172,22,240,125,159,89,120,16,14,233,190,107,83,36,125,105,223,32,26,
-37,131,211,229,185,38,208,221,24,74,187,255,225,198,221,185,8,117,118,182,242,107,84,18,104,9,41,101,108,165,222,75,
-117,129,130,109,24,248,222,108,172,131,58,211,6,121,185,40,55,250,119,49,64,193,152,210,204,35,26,254,112,240,106,172,
-68,42,191,116,0,100,223,253,135,236,239,13,1,122,209,223,87,114,59,249,44,128,217,60,156,111,154,162,109,17,46,83,
-37,77,82,142,148,123,139,210,128,109,73,141,116,20,94,83,44,114,15,46,144,31,55,59,38,114,103,238,110,234,85,91,
-190,153,18,235,91,27,22,10,32,149,132,106,54,183,218,60,80,25,31,142,243,133,192,238,246,165,168,208,208,224,227,4,
-66,183,25,235,55,58,217,120,148,146,139,14,143,219,10,147,170,128,218,155,57,8,114,90,223,139,125,114,19,240,107,79,
-92,196,76,224,184,68,113,93,51,254,182,53,225,247,109,104,135,56,224,106,221,59,29,88,167,133,56,253,208,202,85,128,
-116,253,213,88,79,42,133,214,71,217,54,113,189,131,49,71,176,111,28,230,72,55,211,123,194,10,126,223,244,126,127,96,
-173,72,57,162,242,203,124,205,125,185,115,147,28,108,51,157,240,240,16,190,227,8,175,49,239,254,96,17,160,65,81,202,
-233,1,192,106,37,14,71,192,246,135,116,29,9,75,118,10,27,233,49,195,59,219,67,37,223,170,235,160,48,140,45,175,
-100,118,64,31,62,154,12,167,69,184,16,67,7,124,124,134,122,35,233,199,41,113,49,135,186,166,63,83,168,44,198,22,
-94,227,138,241,165,178,112,48,226,187,3,117,180,19,250,116,186,21,71,51,136,212,5,4,174,142,246,173,127,97,162,62,
-246,200,200,82,42,189,75,118,198,165,116,120,54,19,178,63,127,39,34,208,117,167,213,17,102,62,112,68,101,146,190,236,
-246,103,32,0,85,135,246,214,156,222,145,150,250,242,87,119,145,194,151,125,45,2,130,254,140,192,124,85,215,76,43,40,
-234,187,2,158,182,119,131,113,155,199,223,218,100,161,169,139,111,238,50,220,71,105,75,45,205,165,15,110,177,84,71,251,
-85,190,202,44,161,196,130,41,75,219,232,35,146,6,243,0,205,19,31,210,207,249,61,174,67,193,9,47,180,94,80,178,
-46,57,130,219,109,79,179,21,11,77,212,44,65,216,255,32,104,177,36,188,147,87,108,26,77,36,77,225,128,147,249,177,
-221,241,51,6,92,212,187,10,49,73,221,8,125,157,161,215,7,48,245,75,94,239,52,112,61,7,69,110,93,56,195,253,
-249,147,227,218,121,110,244,215,179,238,116,78,215,152,207,187,254,40,169,120,93,121,97,20,244,160,230,175,171,59,223,205,
-98,152,32,82,101,83,46,187,236,80,131,177,4,97,172,27,95,104,47,251,128,199,184,105,222,141,230,231,44,43,221,124,
-43,227,107,220,175,70,227,0,80,124,174,180,195,233,100,223,143,211,246,145,177,232,180,8,4,193,43,215,86,217,128,77,
-20,9,250,207,221,36,45,228,51,231,179,124,181,26,171,163,243,162,91,43,252,211,57,169,165,201,194,3,16,158,20,22,
-191,6,150,170,250,32,199,226,130,17,49,86,251,58,189,140,43,118,175,209,151,153,61,254,135,194,73,201,18,198,141,175,
-121,254,39,218,100,118,127,11,7,137,165,180,112,222,236,27,132,253,51,62,85,240,55,110,34,151,223,142,202,113,66,212,
-124,177,179,87,123,203,90,86,41,23,181,29,199,28,215,28,53,150,99,171,214,124,192,17,158,59,215,71,25,95,183,54,
-214,22,208,78,26,93,240,45,163,243,133,143,130,79,175,238,23,56,91,32,37,3,201,222,149,213,64,23,84,246,141,139,
-89,214,140,27,172,96,20,223,103,163,215,203,161,71,196,152,118,158,28,212,150,168,8,107,93,238,73,88,47,25,151,213,
-204,142,82,70,145,234,226,10,56,173,231,125,68,113,203,97,255,212,79,23,92,116,201,14,230,239,101,13,86,248,97,89,
-38,207,99,119,198,162,0,8,95,129,38,105,115,176,207,197,172,148,161,99,55,90,44,75,75,86,68,16,194,224,192,198,
-243,4,33,90,46,213,105,239,70,232,129,210,242,2,183,248,150,199,143,159,221,220,225,234,239,29,125,11,26,188,19,35,
-139,137,147,94,90,50,181,167,107,199,156,238,78,212,249,179,125,138,252,61,26,206,138,255,149,150,131,126,70,146,220,37,
-180,113,120,172,217,241,22,61,190,106,155,72,241,92,3,30,75,218,49,55,14,79,152,32,212,241,213,121,233,26,68,196,
-204,177,13,206,140,85,80,147,205,185,222,144,255,212,79,23,92,116,201,14,230,239,101,13,86,248,97,89,38,207,99,119,
-198,162,0,116,142,145,154,34,147,114,247,215,60,90,49,65,44,210,56,189,94,28,245,96,91,209,139,150,216,103,72,211,
-246,61,229,98,233,117,197,97,200,156,78,52,74,50,89,182,8,73,45,11,82,198,155,188,0,103,108,97,202,57,169,111,
-105,65,14,78,143,49,207,63,138,239,168,205,128,231,198,211,145,61,181,237,47,220,32,129,57,122,182,179,166,95,22,227,
-99,97,211,24,233,98,149,163,161,124,28,36,218,104,74,106,40,18,134,101,109,197,186,42,89,183,177,220,235,122,2,30,
-174,225,172,46,86,172,173,2,176,91,146,64,129,130,184,51,43,172,8,41,177,146,210,157,97,126,117,11,140,4,70,168,
-237,95,35,245,211,152,138,176,93,204,113,53,66,97,17,131,189,22,100,125,22,94,8,85,57,191,244,244,75,54,242,28,
-107,173,44,95,239,253,215,34,253,57,205,113,175,198,54,145,33,10,40,80,68,106,247,199,35,24,77,39,93,93,244,243,
-61,200,111,149,225,106,122,27,47,64,26,63,116,140,195,5,121,12,57,26,59,171,132,137,212,83,87,217,192,122,167,29,
-123,164,18,156,16,255,52,101,179,76,39,92,206,65,69,114,85,65,25,213,221,21,27,208,63,0,41,210,249,203,219,30,
-157,205,236,158,25,8,215,147,121,222,102,135,228,157,223,88,110,5,40,123,14,43,148,38,139,24,58,52,173,150,143,237,
-156,232,212,139,226,211,243,18,214,125,56,193,10,76,4,10,163,65,20,6,13,89,233,142,244,35,81,254,98,24,151,99,
-111,180,77,240,50,145,10,178,144,182,59,62,78,5,72,191,172,68,12,173,168,239,238,110,142,82,57,63,115,210,27,98,
-18,30,105,153,209,216,30,196,110,243,148,202,96,21,87,180,254,8,90,210,241,21,34,22,18,110,116,9,90,123,54,94,
-157,120,187,249,8,31,35,107,204,26,219,90,12,80,51,79,131,117,194,64,151,93,53,3,104,58,137,216,88,76,17,185,
-255,84,30,113,80,231,174,114,127,62,236,210,140,164,81,80,217,4,218,127,141,99,1,199,122,4,83,45,38,61,59,71,
-114,66,135,22,15,247,175,34,193,211,103,159,95,158,231,33,84,82,50,242,175,54,82,188,74,118,58,56,80,240,152,1,
-74,166,107,6,57,132,40,171,39,7,86,125,204,126,82,230,32,29,145,182,96,202,57,203,167,200,211,130,163,19,164,31,
-4,97,54,88,234,6,36,60,118,51,220,17,201,142,30,91,131,244,166,79,238,168,130,227,196,138,52,139,246,163,179,101,
-90,23,240,47,144,211,240,154,151,24,16,119,1,183,230,41,189,159,4,68,9,69,237,28,157,99,113,217,4,213,156,226,
-136,253,140,201,58,186,216,22,158,214,18,89,255,94,172,7,57,156,132,102,40,45,38,204,162,81,111,51,59,35,187,165,
-82,58,181,80,181,221,8,73,104,43,192,220,240,202,242,85,7,115,7,119,6,72,50,167,36,44,48,245,203,204,34,32,
-96,224,251,101,77,178,39,50,147,197,206,126,178,9,213,48,155,207,118,237,85,37,82,156,114,1,136,104,211,43,44,196,
-199,69,141,124,139,207,132,84,142,5,215,81,28,44,201,74,221,192,104,179,71,98,109,174,194,159,203,231,151,31,225,158,
-75,112,195,27,236,21,4,28,74,166,239,197,144,20,217,124,67,140,43,26,151,255,255,255,39,5,164,110,113,88,204,245,
-108,226,27,209,187,43,55,178,63,28,12,44,195,87,45,136,138,38,62,88,205,114,76,74,244,200,85,244,202,193,95,117,
-136,173,59,147,60,113,147,19,245,247,153,220,32,201,247,98,7,233,13,75,42,93,138,218,118,186,187,112,13,104,122,251,
-181,85,137,57,13,136,169,189,92,255,171,156,58,118,76,49,66,48,41,100,80,87,32,230,3,202,124,9,203,183,88,47,
-217,176,139,237,255,112,45,197,24,138,223,131,75,31,66,246,57,47,18,234,209,73,158,85,179,100,41,172,69,58,240,185,
-76,171,104,232,59,15,147,250,93,146,72,77,230,2,67,250,7,200,254,129,53,18,186,176,2,45,170,232,39,46,128,120,
-197,212,51,241,89,115,164,143,247,69,177,63,62,227,207,210,93,186,189,131,92,110,200,159,113,82,187,0,185,213,253,31,
-122,3,159,54,210,171,65,225,1,168,159,56,83,240,198,102,146,193,132,200,196,141,222,73,226,244,140,175,142,119,120,42,
-170,61,36,100,136,65,218,137,101,201,140,254,170,39,161,102,231,87,198,94,224,251,193,169,96,38,22,57,56,9,171,26,
-134,159,132,26,238,165,14,79,142,115,58,123,177,171,238,91,213,255,171,156,58,127,82,201,155,41,5,33,151,124,13,202,
-246,196,150,38,29,95,212,46,142,52,62,178,238,81,209,104,152,88,239,132,206,71,222,224,105,153,120,249,125,211,29,211,
-185,48,228,150,118,252,19,157,170,174,226,210,251,231,95,182,19,157,38,163,8,230,167,230,62,249,169,56,155,4,144,82,
-44,255,104,147,43,32,166,186,152,204,242,62,171,20,176,45,122,234,91,234,173,116,138,2,167,192,39,233,198,215,228,124,
-220,53,130,211,181,110,59,201,209,97,225,180,253,47,211,223,55,51,159,138,153,226,121,235,40,156,75,213,14,194,79,3,
-194,204,43,192,149,77,142,58,155,90,152,181,72,212,192,131,67,18,70,224,197,26,96,213,244,115,136,36,142,227,123,44,
-181,38,144,59,178,100,114,199,181,86,142,69,44,195,194,35,26,208,15,255,150,26,166,219,240,56,175,34,245,114,11,62,
-68,0,23,199,188,121,61,202,166,19,227,67,234,84,105,44,205,2,41,6,19,77,245,126,198,248,221,74,184,223,146,178,
-5,9,180,200,174,21,211,170,20,146,175,241,235,172,114,107,10,54,188,113,253,81,158,54,33,136,149,50,230,141,37,150,
-28,209,244,252,126,155,56,137,177,59,113,167,186,232,130,110,242,176,219,147,93,228,1,237,29,14,94,184,207,24,234,59,
-69,225,199,76,194,93,9,138,40,60,205,13,20,36,210,119,248,193,174,54,231,196,90,3,161,187,125,21,214,172,221,252,
-210,121,2,198,177,206,147,202,75,232,250,51,196,197,240,80,118,18,251,237,31,180,32,113,190,156,3,98,3,160,26,158,
-63,170,26,134,81,104,185,31,175,9,65,43,127,204,231,166,255,171,172,88,83,120,18,83,113,153,171,168,84,76,161,124,
-73,15,129,92,198,45,229,13,165,202,214,183,14,222,29,109,119,131,178,117,214,120,184,110,139,121,150,9,186,253,38,48,
-238,45,111,142,248,130,84,37,211,93,255,218,50,13,255,153,100,235,114,178,88,86,79,39,113,46,69,219,33,97,234,9,
-143,216,172,147,11,146,70,153,203,74,13,139,186,28,250,151,95,195,32,84,125,36,78,86,247,232,131,91,2,201,187,53,
-250,117,197,192,201,35,196,72,213,90,175,18,249,226,141,146,242,133,65,222,103,242,120,109,201,214,189,27,61,243,122,57,
-167,75,1,115,1,124,25,159,115,125,90,250,204,199,206,49,201,135,101,33,117,217,102,214,187,28,153,6,158,216,221,36,
-199,26,141,161,51,50,12,246,50,14,91,7,32,164,219,169,119,254,255,171,172,88,83,121,18,54,235,143,198,128,206,185,
-208,57,168,15,195,150,177,18,194,246,21,64,202,154,80,202,80,36,206,248,48,64,45,151,241,76,17,29,220,144,109,160,
-38,33,123,32,249,151,254,235,138,232,82,23,143,187,199,112,0,184,35,129,48,123,135,140,236,18,173,89,195,235,12,46,
-186,55,229,106,89,99,56,69,87,116,64,105,39,121,196,213,216,44,163,193,129,78,112,206,171,209,240,174,15,124,252,78,
-23,81,214,141,207,220,40,68,239,180,10,129,151,0,46,23,61,25,145,6,254,183,30,210,190,251,176,140,8,229,230,56,
-199,62,107,180,224,208,114,172,160,7,105,169,223,75,224,182,77,21,60,154,163,98,87,199,120,169,114,227,114,136,109,252,
-210,90,16,234,26,126,0,31,255,32,154,171,250,184,255,171,156,58,124,190,246,235,203,234,186,219,181,133,14,113,164,50,
-150,188,20,57,198,153,131,113,111,125,121,16,178,103,42,65,159,133,129,244,16,25,124,33,225,168,53,230,166,234,23,251,
-242,121,188,39,129,140,65,243,216,42,67,84,82,151,57,236,99,125,173,83,201,76,192,234,159,151,154,60,156,95,235,252,
-98,155,81,250,184,218,162,102,254,204,115,26,218,74,38,174,204,182,140,120,109,220,67,43,81,187,41,151,151,205,224,158,
-1,82,56,186,146,96,76,249,157,23,53,220,254,201,141,61,155,184,151,176,152,129,209,74,47,211,136,230,56,154,216,143,
-61,5,27,139,157,172,153,32,121,249,37,54,85,187,207,177,133,106,190,208,58,92,193,161,125,215,87,204,229,113,54,169,
-178,28,194,102,7,173,14,149,132,89,126,255,147,182,155,64,27,14,235,11,48,220,190,181,81,211,166,94,135,229,253,180,
-149,52,20,213,153,83,134,157,172,118,252,95,60,136,165,52,200,244,66,130,162,145,185,148,73,81,222,207,15,185,83,98,
-13,200,51,152,158,42,207,95,239,177,156,125,137,44,67,99,133,234,100,62,91,188,182,96,113,194,109,224,31,43,229,178,
-47,99,69,109,182,42,77,131,105,97,167,175,15,60,181,116,241,59,185,50,59,80,113,47,167,28,107,101,133,139,16,236,
-223,115,125,22,216,143,224,98,31,193,247,80,203,103,175,3,154,3,16,194,100,178,230,221,160,189,122,70,173,229,105,69,
-89,25,91,13,112,189,2,192,253,175,17,154,97,156,126,158,125,156,211,202,48,146,65,106,160,113,105,150,120,193,16,140,
-28,70,3,182,65,90,58,108,209,4,56,112,168,18,23,79,3,36,35,210,185,64,255,171,156,58,124,190,246,236,86,75,
-30,152,62,179,84,54,230,121,54,225,5,33,10,66,195,176,7,41,72,90,124,157,231,215,39,190,207,8,12,52,183,171,
-86,104,128,88,149,223,14,147,237,52,141,126,196,51,81,231,105,232,43,76,244,105,182,12,155,129,19,236,154,78,83,224,
-81,16,117,141,202,254,61,253,81,240,111,225,74,231,103,215,138,63,225,240,26,212,169,128,75,145,125,234,226,18,175,17,
-195,5,165,36,96,110,248,155,86,117,196,20,106,78,90,85,47,160,71,255,80,236,234,151,78,144,134,232,224,232,29,30,
-24,233,165,160,242,138,132,67,6,226,96,35,212,55,36,57,86,69,81,120,164,109,252,254,182,146,81,145,166,106,104,181,
-250,123,218,82,206,63,165,74,221,62,82,82,68,140,232,178,169,217,175,255,171,172,88,83,121,18,54,235,143,198,151,197,
-174,162,169,147,248,122,220,67,204,161,66,253,151,94,148,206,86,148,57,245,235,22,240,78,55,47,193,93,249,213,223,223,
-40,77,143,83,134,78,138,205,126,184,40,181,2,171,86,159,215,253,104,84,19,213,53,28,36,224,220,203,154,58,86,234,
-117,150,235,100,109,88,120,255,56,23,62,67,98,143,220,228,47,194,104,252,195,131,127,9,152,109,126,237,124,201,102,140,
-68,196,198,33,3,147,188,123,47,251,183,142,162,70,129,248,62,149,51,123,228,63,220,113,4,63,239,35,117,251,59,115,
-109,159,83,160,111,131,20,32,185,35,113,180,69,106,105,12,215,190,212,199,244,72,166,100,211,39,72,3,45,15,9,81,
-115,240,149,228,91,67,203,194,194,122,123,27,216,196,187,48,216,255,171,172,88,83,120,18,83,113,153,171,168,84,76,161,
-124,73,15,129,92,198,45,229,13,165,202,214,183,14,222,29,109,119,131,178,117,215,100,8,215,249,158,226,87,14,95,244,
-5,192,95,110,129,186,98,2,60,105,82,109,43,14,185,194,71,51,12,37,15,231,164,199,136,131,242,45,21,198,47,86,
-235,102,180,219,41,202,117,16,64,13,1,203,129,121,52,107,80,179,28,108,134,36,154,119,97,5,130,96,107,175,132,107,
-20,190,95,103,162,141,85,134,14,169,25,46,9,125,162,165,121,198,165,129,241,218,72,61,245,83,14,40,158,128,244,25,
-202,159,248,15,154,197,181,88,28,91,216,226,152,75,230,173,108,244,187,136,133,252,89,68,165,68,213,70,182,62,50,229,
-39,135,130,54,66,147,61,133,172,252,166,223,200,68,2,146,123,189,255,148,89,47,168,59,143,57,211,130,63,112,49,39,
-114,225,195,68,107,239,233,50,113,98,39,48,21,69,110,163,42,71,0,179,97,15,133,94,134,70,51,114,114,41,1,123,
-104,113,119,72,170,224,168,1,46,166,189,162,16,16,184,98,1,67,29,189,9,22,46,66,10,176,235,83,48,53,222,167,
-181,159,245,214,79,75,241,146,127,127,181,246,223,212,86,37,116,247,215,175,5,78,94,99,220,56,150,174,28,107,140,45,
-49,131,128,153,218,25,112,148,226,48,73,115,187,224,141,124,212,56,171,156,8,150,55,45,96,10,2,107,45,138,154,81,
-245,153,140,191,165,65,185,189,126,172,210,113,20,163,131,38,108,72,135,145,155,148,202,151,249,242,50,129,142,134,207,213,
-2,226,197,57,32,92,221,56,136,189,216,242,53,47,255,147,182,155,65,31,55,235,48,170,157,144,86,91,64,0,145,61,
-53,179,193,145,101,172,88,202,218,93,64,84,125,235,253,226,88,28,225,51,82,188,161,2,90,114,227,153,84,3,73,47,
-9,53,187,243,100,120,195,240,134,182,218,186,64,57,13,43,95,54,51,191,101,186,30,223,156,187,188,31,187,240,164,73,
-109,140,227,20,23,190,196,78,228,57,39,22,230,40,85,7,28,7,122,78,159,11,83,141,32,49,57,214,154,112,47,94,
-0,238,93,89,118,152,98,156,249,227,160,210,136,41,241,27,39,35,182,220,33,191,205,62,11,112,12,55,178,43,153,4,
-167,161,238,83,219,55,28,236,96,117,80,68,220,125,251,60,7,228,232,144,255,97,233,119,139,167,206,168,133,146,36,37,
-164,92,38,126,193,198,29,148,168,141,55,11,139,199,11,233,151,255,148,89,47,168,60,107,209,211,130,63,110,252,44,31,
-69,99,208,5,45,153,68,30,197,44,254,69,248,141,146,59,2,158,224,113,108,65,219,253,245,72,51,126,255,5,30,200,
-156,70,164,59,187,177,154,31,246,134,227,156,116,143,215,253,121,175,146,54,225,182,72,136,233,237,181,59,19,110,219,61,
-192,74,54,32,27,185,126,139,46,246,184,223,93,238,46,253,9,44,194,255,49,103,148,164,65,7,145,104,2,29,190,24,
-231,41,63,204,232,98,25,128,95,147,36,184,68,14,217,30,225,206,225,179,81,236,255,200,185,101,225,210,93,42,36,103,
-91,98,91,151,115,184,36,2,237,157,145,81,210,35,184,2,7,19,155,134,179,196,187,76,52,172,95,22,252,35,55,110,
-109,175,2,34,212,254,128,80,112,84,21,146,220,138,13,235,73,244,37,212,251,121,112,7,255,171,172,88,83,121,18,54,
-224,104,58,181,156,145,115,244,5,88,58,175,103,239,62,86,211,42,89,40,7,163,78,236,17,31,105,85,71,35,217,96,
-27,86,192,240,118,71,90,202,117,196,21,89,7,65,185,98,113,83,168,18,74,22,100,106,10,5,65,255,192,150,88,135,
-116,233,253,251,99,15,219,215,27,217,3,104,151,33,73,240,87,121,172,121,49,161,13,18,40,184,249,250,156,45,226,241,
-189,46,99,97,124,60,142,195,244,130,88,114,128,65,192,94,102,231,106,125,78,129,179,173,86,118,3,142,103,40,154,111,
-61,143,10,111,113,209,208,97,145,98,16,32,203,126,217,0,250,97,157,145,92,92,243,39,144,65,128,139,17,90,121,5,
-221,160,116,247,70,191,173,19,150,237,158,139,46,72,164,110,80,133,208,224,150,83,229,67,17,231,255,150,26,166,219,240,
-56,175,34,241,2,162,255,136,7,234,94,15,94,1,129,99,7,199,98,227,251,76,213,128,230,25,62,118,104,131,200,81,
-50,99,217,224,90,236,111,25,167,92,101,28,249,235,85,104,125,98,188,253,33,89,105,105,8,128,157,221,119,73,179,109,
-60,23,145,126,202,248,63,176,48,130,146,117,68,45,192,250,203,35,9,228,255,16,88,93,87,78,129,162,213,11,183,17,
-195,58,37,124,102,221,65,7,87,158,50,147,218,5,246,124,35,83,101,45,206,172,212,78,1,122,154,149,160,9,79,58,
-141,187,112,127,241,13,229,30,172,107,1,205,23,206,161,127,113,3,103,141,76,34,229,245,57,73,60,70,58,249,106,91,
-39,254,141,80,83,206,232,43,130,183,19,104,7,33,175,45,170,144,190,164,23,230,58,154,177,11,0,146,200,240,35,176,
-194,44,255,171,156,58,124,190,246,235,203,234,186,219,204,125,91,48,235,177,129,224,64,222,21,106,83,140,168,11,41,189,
-105,43,29,114,83,52,90,86,250,86,20,53,180,4,241,96,152,229,108,36,9,232,117,44,53,17,120,199,103,78,29,254,
-240,113,40,83,120,217,166,193,249,159,16,100,48,191,222,183,121,200,45,53,25,37,215,75,154,44,35,98,107,24,110,24,
-218,17,4,248,106,222,189,227,183,178,217,186,72,107,237,43,128,73,17,25,109,193,152,232,117,98,45,207,7,117,226,160,
-26,128,214,22,240,183,90,101,221,247,161,180,56,216,170,142,251,6,138,113,249,250,219,107,247,7,247,173,63,52,171,69,
-219,139,140,28,88,118,79,82,160,172,137,90,244,252,39,149,236,41,118,243,37,142,243,241,83,127,86,153,87,31,237,44,
-93,62,67,74,213,100,255,253,157,184,253,22,242,146,179,82,155,154,164,183,111,78,96,154,165,142,173,214,73,192,250,24,
-3,106,185,7,143,39,217,158,48,154,247,168,155,156,26,101,85,111,22,49,174,165,155,107,57,29,237,118,0,186,59,167,
-41,149,83,17,67,118,108,147,93,41,92,1,181,226,192,122,184,64,241,175,133,44,50,252,254,127,87,64,180,113,252,204,
-172,159,142,118,42,115,139,86,196,83,48,110,220,15,198,127,255,232,112,82,68,126,156,147,145,130,196,174,203,227,154,218,
-244,117,163,249,142,148,251,4,224,171,19,170,46,71,128,164,59,50,94,253,178,37,252,153,161,130,58,250,203,139,194,43,
-221,127,211,52,20,140,228,204,67,244,62,51,129,125,187,188,85,177,190,93,27,60,252,117,77,108,36,83,183,55,85,146,
-224,253,203,84,119,145,212,195,174,152,249,252,151,75,82,208,179,6,198,106,181,164,65,2,2,223,231,32,59,84,249,224,
-160,11,160,242,61,210,253,127,64,103,142,244,248,205,25,116,140,56,211,245,155,165,206,50,19,148,66,15,85,107,163,130,
-102,153,198,203,51,142,61,207,218,153,98,223,131,49,106,15,105,64,250,66,163,228,224,144,236,166,43,47,169,20,78,41,
-180,200,20,36,252,188,78,107,2,129,88,254,212,93,166,240,98,185,198,121,72,244,3,181,150,90,101,254,87,157,247,105,
-77,117,206,162,169,252,243,139,35,234,41,107,231,217,215,221,241,208,38,229,4,66,161,221,245,230,25,82,146,124,28,18,
-27,117,186,221,153,4,173,118,122,117,13,100,132,133,125,187,80,180,19,111,146,7,183,120,50,251,132,242,129,85,140,203,
-122,203,236,221,115,217,43,207,168,169,176,80,80,53,161,212,41,211,25,253,238,179,162,250,37,13,170,21,63,34,92,174,
-212,199,105,95,62,125,188,102,58,101,59,96,188,147,25,220,65,106,243,18,145,123,74,231,95,98,35,48,50,118,43,39,
-39,157,195,94,197,67,112,79,107,253,200,220,97,31,142,117,177,139,149,202,65,4,87,69,39,193,69,94,253,72,55,188,
-32,230,153,33,179,138,213,25,76,180,78,180,255,244,102,99,144,153,12,17,169,102,177,88,81,236,185,44,196,117,81,90,
-176,59,250,28,142,240,192,185,145,242,209,195,241,4,79,218,21,77,69,76,86,52,72,130,187,88,115,8,15,175,18,163,
-70,225,17,100,32,214,240,67,157,194,156,161,70,66,226,161,157,203,44,108,45,107,216,173,162,129,75,231,60,28,199,176,
-246,12,203,140,251,147,175,204,210,34,228,30,225,216,31,22,202,126,229,144,206,82,36,211,71,25,172,233,29,108,232,56,
-198,41,24,25,59,30,252,73,208,225,95,83,142,207,249,163,0,196,194,245,185,42,202,138,150,0,48,233,84,164,211,9,
-234,58,11,88,241,68,89,174,211,118,187,173,180,175,83,115,254,232,80,230,136,234,65,160,176,190,17,213,228,74,208,171,
-156,242,64,186,247,6,232,77,5,10,220,219,164,254,202,118,98,39,118,145,52,7,124,60,211,23,174,193,5,153,244,77,
-140,53,248,162,32,17,170,34,124,202,188,36,179,110,21,137,112,186,77,7,242,9,169,19,209,177,78,46,222,6,251,171,
-172,170,86,136,105,64,76,55,136,30,162,111,20,0,7,175,42,47,84,126,135,222,206,191,121,246,214,29,247,36,59,174,
-108,149,23,181,230,81,81,15,59,208,91,49,205,196,209,144,86,83,118,213,185,122,112,4,176,169,84,66,25,57,206,157,
-131,133,108,166,187,208,8,26,110,177,101,237,57,173,127,35,231,85,128,193,59,243,63,136,13,68,243,209,177,152,192,118,
-156,9,171,3,245,21,228,29,96,90,9,48,192,116,178,203,17,74,30,65,245,222,153,230,174,60,201,6,87,75,231,43,
-54,154,191,39,19,58,177,209,11,79,117,63,145,46,199,212,68,130,161,131,253,36,59,40,191,45,75,159,202,37,187,202,
-84,29,59,243,0,28,222,19,132,36,161,223,75,223,179,207,168,120,103,5,178,22,61,187,238,162,133,203,89,222,110,78,
-68,197,195,14,99,129,133,182,54,81,3,142,220,171,105,66,246,100,105,12,220,13,157,229,243,163,124,169,0,199,194,12,
-24,246,251,151,203,84,128,60,23,110,252,220,171,149,15,91,102,143,130,24,28,116,155,15,194,217,13,124,220,121,211,186,
-149,8,203,70,218,109,146,229,37,233,74,148,59,233,48,80,21,86,59,247,215,97,82,200,233,137,194,52,233,87,4,130,
-167,153,196,207,121,61,158,240,212,205,246,206,67,207,72,52,232,192,127,218,207,82,1,55,243,126,41,238,83,139,211,66,
-15,121,19,103,37,85,240,136,242,154,124,115,48,91,120,99,3,57,163,190,181,112,84,190,240,78,54,211,46,144,58,221,
-119,54,123,206,217,51,145,102,69,216,33,84,3,236,174,215,23,130,229,18,220,129,237,61,220,124,183,154,134,238,154,155,
-196,205,85,72,232,125,254,6,74,65,245,126,98,106,46,38,208,223,233,228,59,146,233,155,172,155,127,69,230,201,177,172,
-124,108,40,112,120,66,69,231,51,33,67,162,126,55,186,14,221,26,206,234,180,147,50,206,188,87,201,194,155,63,188,143,
-25,194,32,6,107,0,17,222,144,151,110,9,203,182,221,87,221,36,16,37,236,140,132,204,48,187,46,132,162,19,109,29,
-128,231,121,116,159,206,35,36,86,104,7,186,206,195,125,21,61,208,80,158,124,230,108,68,107,48,61,41,132,70,180,238,
-145,204,127,23,58,223,120,254,219,92,40,125,171,195,198,151,180,238,212,145,55,126,138,106,241,154,103,117,89,29,82,77,
-123,148,144,245,184,12,241,207,172,230,14,32,205,21,7,226,178,41,232,203,59,170,248,255,234,107,26,79,147,70,3,159,
-202,179,79,16,247,93,243,149,112,59,0,157,144,47,186,25,127,218,1,125,241,94,47,222,116,3,251,53,185,121,39,76,
-76,252,124,93,128,244,113,168,220,127,160,11,177,213,200,12,103,138,3,236,189,249,8,207,6,169,227,44,173,80,12,139,
-218,20,30,160,121,0,172,95,242,144,50,243,213,92,251,255,243,6,8,119,121,55,145,155,79,65,57,17,128,59,36,121,
-165,61,254,226,118,252,77,50,2,43,29,44,96,164,147,226,67,167,102,238,221,29,31,250,245,100,40,208,10,146,31,237,
-25,57,126,66,86,68,58,63,120,164,4,89,235,148,32,11,212,230,165,105,75,224,118,202,29,65,130,115,141,213,47,172,
-101,229,181,145,71,172,14,34,82,23,94,48,1,120,200,40,80,237,170,204,24,13,29,99,210,206,25,134,218,9,167,55,
-21,73,100,195,19,58,250,111,64,107,16,228,39,241,196,192,214,30,113,224,127,5,40,237,171,216,110,114,127,241,20,169,
-120,209,31,96,175,135,58,97,16,25,131,53,137,164,47,8,252,41,209,193,230,20,60,21,227,157,66,31,224,245,49,252,
-36,68,163,137,49,227,160,49,197,110,126,34,219,218,52,189,159,231,105,97,143,227,170,200,111,134,156,103,139,109,9,122,
-39,186,111,199,255,147,222,89,229,102,208,154,144,127,94,124,85,33,69,85,119,70,239,34,55,8,167,44,226,118,14,76,
-151,26,4,152,16,83,50,159,213,215,85,41,143,197,200,184,221,176,132,77,182,151,100,134,83,182,204,38,34,70,103,51,
-152,128,16,28,26,224,28,61,96,51,61,234,37,221,235,58,100,247,250,226,14,15,87,53,27,96,87,178,79,134,250,0,
-147,232,119,51,152,93,88,191,23,77,83,126,189,216,235,226,89,117,93,165,109,178,127,132,51,196,31,9,87,209,201,240,
-248,125,195,203,57,108,83,195,37,251,82,91,60,239,116,37,169,231,161,42,78,30,64,87,228,197,72,121,243,55,110,164,
-125,187,157,192,247,225,173,69,233,170,83,51,226,112,171,180,7,148,224,9,21,98,117,227,89,176,37,203,134,214,229,110,
-140,234,203,127,126,103,157,30,135,15,157,61,227,62,128,253,64,29,85,101,138,206,19,235,137,187,57,43,90,249,151,174,
-143,27,28,123,50,16,44,55,53,243,233,243,245,56,130,179,219,91,167,224,173,107,125,126,230,48,133,205,11,103,170,249,
-234,9,21,211,29,11,232,24,148,79,159,78,159,243,249,233,197,195,52,244,157,224,16,28,226,158,66,177,111,227,28,238,
-66,219,50,217,251,232,241,33,95,34,25,90,109,181,244,135,230,239,20,191,29,118,207,209,51,222,210,69,75,157,60,236,
-56,11,255,253,148,179,161,214,11,91,66,151,194,252,184,154,236,82,170,127,21,97,23,51,25,0,37,224,223,112,95,236,
-224,140,32,135,128,54,148,1,93,6,60,78,214,5,100,141,168,115,160,24,50,54,183,26,0,110,120,83,255,103,214,155,
-113,108,41,253,28,147,241,139,107,239,248,94,192,42,2,84,99,255,246,11,194,79,99,161,54,116,217,244,153,140,35,91,
-143,100,209,112,18,248,176,37,87,24,133,224,39,48,50,245,243,163,81,9,220,31,164,83,164,22,244,159,39,139,80,11,
-234,131,198,21,82,195,138,81,14,168,91,15,242,108,3,60,25,99,42,155,86,161,16,223,73,151,140,154,167,214,106,203,
-155,62,41,59,188,254,11,138,197,93,84,238,20,173,62,169,214,7,233,251,3,169,181,127,8,148,240,192,232,146,13,249,
-215,214,102,211,250,9,25,115,149,131,223,70,218,105,182,197,170,80,23,77,38,124,79,224,79,246,68,127,119,53,16,129,
-107,168,48,116,250,32,112,211,16,219,26,33,130,97,33,225,133,216,163,183,10,190,170,200,22,197,171,15,236,80,160,158,
-215,108,17,128,247,37,223,204,66,81,48,82,153,66,44,171,15,149,19,22,139,159,86,19,21,205,170,201,224,193,174,107,
-38,111,208,67,213,47,25,91,185,162,41,80,96,164,53,29,35,74,135,17,157,12,137,165,190,64,68,254,247,10,86,162,
-56,31,89,106,130,85,142,255,218,78,104,192,91,149,121,183,16,243,173,43,151,7,4,192,9,188,213,31,99,67,48,114,
-32,92,33,225,234,146,83,3,188,170,173,146,21,142,103,25,227,85,253,115,62,141,214,144,160,36,129,238,247,219,175,190,
-44,226,112,252,42,88,11,7,137,202,139,92,168,184,190,68,190,154,210,232,22,14,93,157,21,20,101,43,10,82,43,44,
-142,152,7,216,197,249,162,217,200,190,118,70,27,225,83,251,187,248,32,48,15,151,62,173,35,213,232,140,160,251,252,226,
-245,39,199,65,142,63,182,77,224,183,27,80,211,201,110,201,123,114,8,155,182,63,168,146,135,227,216,224,145,104,28,125,
-123,62,176,238,0,196,104,52,18,119,143,215,92,16,107,143,215,196,107,119,127,98,120,69,83,242,100,143,44,16,117,130,
-62,164,110,73,214,6,211,4,17,21,14,52,127,28,122,189,166,183,119,218,38,54,174,7,35,25,87,81,13,72,8,227,
-49,75,214,126,247,149,234,96,173,1,69,11,150,143,105,213,19,123,254,114,26,30,197,12,16,70,204,126,143,32,82,177,
-43,239,49,203,184,171,253,58,95,202,36,37,156,249,50,216,206,192,126,66,196,90,133,200,29,234,213,204,180,79,148,211,
-126,93,206,15,123,223,102,4,144,236,39,195,22,219,111,233,46,170,34,233,124,205,210,31,157,201,61,156,21,38,29,169,
-102,154,162,239,225,81,222,91,146,88,228,107,78,122,180,207,36,117,96,164,1,171,228,206,11,249,180,164,52,180,43,143,
-246,103,213,55,47,26,202,178,194,88,18,61,128,220,241,134,69,221,110,188,2,99,235,212,28,86,119,56,171,78,68,166,
-140,38,175,234,47,79,248,20,253,214,171,254,74,239,3,251,48,138,88,119,27,150,119,246,176,98,91,178,2,209,27,18,
-156,53,53,43,173,2,43,56,32,43,180,199,170,163,181,91,5,158,209,52,148,26,54,2,55,124,30,70,75,255,207,181,
-184,182,108,121,126,124,82,199,126,107,57,147,246,222,225,63,158,221,58,19,141,27,214,63,38,75,237,92,232,24,222,241,
-90,55,209,179,230,59,80,180,216,190,190,157,3,53,138,238,37,211,120,100,35,251,203,80,162,88,75,173,211,177,32,71,
-73,197,165,60,138,132,139,167,7,126,222,167,214,255,158,112,168,2,175,163,230,46,109,67,133,87,10,232,101,246,41,94,
-41,10,249,230,185,247,56,136,190,51,215,26,46,187,78,12,241,96,187,11,225,214,26,116,32,62,152,63,81,32,78,191,
-101,167,252,28,237,4,179,87,177,128,161,78,32,220,26,189,180,35,44,74,153,160,246,165,49,20,115,242,5,126,182,183,
-68,216,250,31,2,68,240,126,207,96,142,234,157,67,180,171,246,230,26,152,137,5,80,60,196,210,32,210,87,175,163,244,
-85,200,239,140,168,170,111,47,25,198,211,165,127,108,229,129,151,91,244,16,82,6,238,102,192,199,5,17,32,210,178,88,
-94,45,212,255,221,77,8,160,192,189,230,108,112,80,196,51,113,107,226,115,26,229,163,0,215,214,194,158,4,104,131,94,
-121,22,201,19,176,5,101,153,226,91,169,85,14,19,44,46,99,52,141,193,122,87,45,136,171,82,96,165,212,35,237,57,
-115,212,21,221,37,243,176,90,50,46,25,227,107,151,153,198,151,65,83,50,213,156,104,205,116,196,145,177,26,87,83,37,
-162,227,201,232,66,248,2,106,38,0,160,75,194,155,189,202,66,62,177,205,21,193,201,78,77,253,22,140,115,220,126,192,
-244,43,135,135,160,32,184,249,116,190,3,13,42,170,189,11,8,106,239,71,233,144,224,221,236,228,155,217,241,36,189,72,
-207,190,148,193,253,42,55,100,220,1,210,4,230,175,185,209,15,20,70,216,183,206,60,121,13,162,224,165,165,230,198,1,
-208,252,93,225,215,209,240,80,178,93,75,20,96,226,122,229,143,233,117,157,197,46,92,122,71,28,14,32,127,74,36,181,
-146,207,199,217,228,105,106,203,104,99,116,147,82,124,199,15,21,109,244,34,105,190,101,230,152,110,5,180,255,66,173,153,
-64,192,175,180,3,66,36,30,165,200,184,147,157,197,92,211,47,161,224,124,42,148,176,95,55,194,162,38,233,59,203,223,
-133,128,129,159,157,169,122,32,30,248,254,49,14,238,29,115,166,200,97,48,24,189,245,9,56,253,130,147,190,238,253,74,
-134,26,27,181,38,228,181,39,115,195,193,221,101,176,56,165,24,244,159,59,245,98,10,217,253,110,142,64,239,82,157,46,
-0,96,255,214,68,21,84,93,207,34,23,183,40,98,207,3,162,21,233,29,108,245,244,52,49,105,124,204,9,88,20,39,
-154,80,38,61,15,27,242,28,229,88,84,92,107,7,153,89,9,251,172,229,119,120,136,227,24,167,121,253,164,9,250,159,
-44,203,3,164,221,245,66,161,136,20,78,68,171,206,231,227,195,53,196,138,129,109,97,55,235,116,63,131,10,24,247,245,
-82,25,25,58,214,122,25,74,127,239,121,84,145,250,175,64,88,126,163,217,215,231,203,48,19,136,15,160,98,252,128,123,
-19,185,113,167,4,220,239,143,101,75,29,232,37,108,70,110,76,252,224,255,110,194,165,178,86,91,95,149,208,165,14,244,
-201,33,239,0,138,125,37,139,175,124,213,15,138,151,73,71,44,189,6,74,132,189,133,191,207,196,183,92,169,116,197,198,
-179,222,136,39,132,229,68,240,187,253,222,101,130,217,39,68,220,11,46,205,174,247,83,193,133,179,167,218,76,23,0,195,
-232,255,160,234,37,225,203,15,18,32,232,81,1,124,22,46,91,30,69,104,209,14,65,206,129,210,197,42,109,103,42,153,
-244,26,85,248,0,238,35,237,70,244,192,106,97,62,109,53,58,84,61,225,60,114,167,96,50,240,102,32,109,141,163,54,
-146,190,96,113,153,18,163,85,207,126,195,96,242,11,106,15,125,204,2,110,78,145,54,62,145,248,254,230,238,229,94,174,
-93,187,150,61,236,138,252,151,28,11,28,183,32,85,10,29,64,174,219,128,77,87,144,14,71,219,152,152,191,242,18,224,
-178,66,31,186,15,169,94,26,109,72,229,30,6,11,57,253,53,224,12,9,142,46,82,137,15,45,97,121,223,95,49,199,
-51,99,38,224,213,95,210,171,114,231,40,219,117,247,139,61,185,20,2,132,115,160,84,84,7,252,206,113,34,176,95,105,
-37,0,225,179,113,182,1,115,109,108,243,238,196,55,93,173,28,105,250,235,227,149,227,86,113,134,254,79,143,103,185,4,
-203,247,32,32,70,175,39,109,80,123,245,197,28,4,154,181,192,166,167,227,111,118,20,141,108,102,91,174,31,54,158,31,
-64,106,135,51,162,73,136,252,213,206,174,243,111,54,121,123,159,255,52,172,22,239,183,148,145,177,121,136,48,22,0,117,
-61,176,74,179,49,9,216,121,2,193,114,72,123,67,207,243,73,25,126,156,18,101,159,51,126,87,48,16,90,214,194,180,
-173,177,96,10,157,104,110,131,123,171,234,67,218,191,68,67,95,251,238,196,124,92,139,77,248,200,92,242,74,87,108,170,
-59,213,211,156,147,1,42,29,61,66,160,148,198,132,45,221,89,155,122,254,180,178,105,55,17,31,105,174,249,78,212,200,
-57,182,143,180,0,30,85,42,68,27,186,235,63,235,222,245,135,77,121,95,240,63,96,128,173,131,232,52,175,48,96,40,
-133,145,26,90,43,216,53,27,209,106,12,133,149,158,41,135,90,249,79,172,45,102,177,11,50,108,197,217,92,231,197,22,
-238,112,112,38,81,0,245,224,171,41,103,227,129,119,33,206,154,137,46,70,29,47,197,110,130,242,22,140,160,25,92,110,
-229,39,238,32,255,44,179,182,210,209,120,103,78,244,60,117,63,151,123,233,178,232,76,7,210,97,78,44,83,198,157,130,
-169,110,44,111,42,204,211,87,243,84,221,80,93,94,36,74,2,24,56,199,86,63,76,52,64,250,22,20,235,57,243,149,
-103,250,64,211,23,119,51,229,162,240,64,253,36,121,199,143,76,239,126,22,147,24,140,116,243,178,184,252,6,249,60,255,
-80,150,210,230,204,65,228,138,5,147,20,132,19,70,115,222,193,171,77,20,104,33,25,59,54,198,96,111,64,188,49,49,
-211,144,255,159,101,238,35,194,7,185,154,192,14,240,136,178,21,218,152,222,13,160,113,67,147,10,121,221,93,192,207,22,
-235,148,162,175,253,247,188,132,131,130,194,75,166,82,111,58,251,133,57,223,99,236,136,109,175,51,180,86,162,54,187,139,
-69,112,106,219,51,105,140,169,29,173,91,134,156,78,58,197,223,198,33,75,131,170,75,228,11,100,248,138,35,242,91,80,
-122,75,127,62,92,25,39,249,225,126,199,26,99,92,112,40,55,251,84,99,192,131,122,213,137,95,46,69,221,181,174,34,
-195,224,170,214,254,1,148,63,169,43,228,91,239,125,229,44,177,129,179,59,169,243,187,186,50,63,91,43,189,32,118,213,
-232,54,69,247,78,65,55,169,242,19,7,50,129,14,75,19,44,197,9,147,208,119,250,226,199,142,43,94,60,152,71,45,
-10,35,45,94,160,37,218,166,58,12,114,222,249,34,191,108,48,36,207,27,127,167,87,130,69,199,79,157,155,95,177,42,
-2,153,38,208,34,190,252,225,192,97,249,204,211,137,119,4,148,162,100,30,0,225,248,23,247,213,35,38,161,37,138,183,
-231,36,110,142,138,176,137,178,172,183,216,203,136,106,204,247,42,247,49,103,151,166,137,167,3,195,208,206,59,162,124,54,
-211,216,186,16,143,229,229,114,110,233,155,102,196,77,177,138,140,76,227,97,147,157,105,192,148,228,254,62,13,192,14,72,
-254,103,97,124,23,195,4,234,44,228,203,109,100,54,148,91,157,36,0,237,55,74,57,255,86,252,10,59,250,138,94,9,
-7,38,215,97,0,223,65,17,43,145,201,52,183,57,221,21,28,104,0,194,88,235,122,86,24,104,145,193,0,0,0,130,
-10,98,16,198,80,111,238,65,131,131,113,110,0,0,224,87,67,187,114,180,3,106,86,113,143,49,230,94,0,0,130,10,
-97,4,39,106,212,143,45,121,184,153,48,18,146,47,192,240,27,128,166,222,0,191,145,183,199,201,53,102,38,141,84,0,
-194,89,8,157,224,250,154,200,106,150,4,192,99,87,88,0,130,14,131,249,237,254,225,174,122,97,229,53,144,72,0,237,
-153,123,88,239,158,96,62,54,23,253,211,238,240,209,128,222,119,151,15,192,107,240,60,100,206,59,207,180,63,27,250,246,
-196,176,44,169,169,10,137,45,98,39,142,102,117,151,62,45,185,88,0,255,194,162,251,192,171,173,176,72,119,104,38,46,
-170,149,236,68,189,108,194,145,186,165,208,47,99,199,47,228,170,142,218,66,35,167,146,169,252,195,68,202,228,92,135,67,
-145,137,163,171,3,148,17,93,60,226,190,159,249,225,255,47,80,163,142,5,70,154,53,28,41,39,29,118,248,214,87,33,
-125,193,97,210,204,192,50,199,134,218,171,83,179,222,244,224,173,142,248,95,146,150,75,80,74,2,57,217,16,52,240,212,
-247,187,35,152,150,133,91,92,179,249,206,254,175,31,166,227,222,143,167,125,240,118,51,34,243,115,30,143,173,247,86,161,
-141,209,68,140,31,113,9,179,153,14,49,187,238,29,72,106,219,247,142,230,135,169,216,199,178,33,146,8,250,97,195,200,
-104,216,104,151,149,134,223,90,224,106,85,30,147,164,82,135,187,68,191,129,17,201,170,105,50,199,209,208,19,55,168,184,
-130,131,209,41,132,222,224,27,89,126,64,145,248,109,97,88,123,49,219,123,109,219,198,44,145,109,108,105,174,229,87,113,
-27,172,34,134,1,146,177,50,118,247,236,106,167,179,226,89,237,8,163,212,197,44,45,143,13,63,84,143,124,81,139,156,
-66,249,59,21,194,208,115,107,181,121,175,54,251,210,127,141,132,60,108,138,154,78,175,170,5,55,40,25,107,59,29,127,
-9,73,82,139,38,185,138,132,90,87,55,225,136,89,245,113,146,107,67,185,201,135,83,133,73,138,77,70,104,77,235,35,
-6,55,16,136,126,128,4,255,82,84,174,110,31,141,6,220,175,242,125,207,156,170,220,8,241,234,249,137,242,17,66,241,
-160,4,243,121,49,95,205,161,218,81,237,130,22,68,7,13,181,45,36,187,153,168,5,150,255,62,194,64,62,24,120,210,
-48,63,24,81,199,99,127,71,53,140,128,249,236,111,46,111,43,2,2,140,34,143,181,25,200,179,203,140,150,238,41,203,
-72,103,174,29,199,185,214,230,218,132,229,6,111,177,250,9,23,244,131,135,7,116,142,177,61,0,234,248,65,215,230,191,
-254,243,165,58,139,168,195,248,197,127,81,222,136,16,13,42,97,180,18,192,250,35,209,178,235,59,130,227,209,19,49,52,
-29,202,141,22,227,1,199,108,22,217,42,63,184,174,240,76,36,24,123,97,116,10,53,50,186,255,194,162,251,192,171,173,
-176,72,136,251,61,164,37,118,138,27,252,75,164,12,17,56,15,238,154,163,144,178,69,182,234,10,99,208,179,54,234,121,
-84,154,98,148,245,144,48,216,7,68,213,189,9,123,248,138,120,5,25,203,130,79,137,120,108,128,130,176,230,12,239,52,
-225,229,179,214,243,164,88,67,252,31,195,81,177,60,53,91,196,243,102,254,76,143,22,154,109,193,157,168,12,202,13,124,
-46,161,144,124,11,201,126,72,11,156,129,2,130,132,5,255,242,138,63,182,196,171,111,207,191,208,68,196,15,103,115,44,
-83,221,20,215,10,82,62,147,237,185,54,127,88,9,20,72,166,188,142,158,203,162,124,184,100,72,28,102,69,63,221,85,
-103,206,82,192,74,39,5,149,159,120,173,18,26,154,158,53,2,251,58,99,245,142,72,85,191,162,211,177,172,131,90,181,
-100,25,197,136,74,92,42,66,146,230,13,59,118,181,82,234,203,64,178,238,93,147,234,128,28,86,25,105,106,208,143,78,
-113,191,137,2,58,71,153,127,149,149,166,161,74,167,139,187,205,58,40,164,14,189,156,229,23,145,74,147,42,116,223,17,
-87,227,154,47,35,187,223,158,145,133,9,75,144,37,18,147,115,218,124,11,167,214,152,88,134,128,229,38,238,13,8,201,
-91,72,61,122,69,148,121,150,158,47,92,65,147,138,68,80,60,162,34,63,198,226,81,106,224,39,154,138,105,235,200,95,
-166,226,110,18,104,217,107,30,50,148,127,26,91,15,121,73,181,21,80,196,66,57,254,26,130,29,108,91,175,80,4,61,
-172,174,77,27,62,27,70,64,10,83,178,194,30,70,151,188,173,188,54,190,134,53,227,198,163,120,217,220,16,167,123,96,
-138,11,87,219,62,176,72,137,19,121,45,130,161,251,17,49,195,178,136,242,238,22,46,242,156,137,198,80,216,51,240,236,
-45,98,117,84,136,114,254,244,184,44,173,180,79,61,65,66,38,197,181,4,179,36,178,40,118,93,126,0,120,55,144,94,
-86,178,106,117,37,254,191,255,91,113,13,208,66,186,231,196,204,116,21,67,172,188,112,202,158,142,22,169,98,106,186,126,
-252,209,173,16,37,108,40,249,230,179,164,46,247,71,199,42,121,190,17,28,128,132,233,251,42,59,60,216,178,7,172,37,
-197,7,219,231,96,109,225,136,221,217,147,73,238,16,232,2,219,220,49,156,62,210,50,152,245,87,80,104,90,39,53,91,
-227,17,141,27,99,188,118,76,34,64,244,235,225,12,6,224,81,109,10,235,189,168,188,137,10,225,99,15,225,97,87,215,
-129,18,224,226,5,86,247,119,196,19,248,182,160,125,164,41,153,23,250,1,127,86,79,170,4,47,143,193,169,186,170,82,
-143,59,93,86,251,213,209,255,23,72,12,141,43,20,239,22,178,216,159,152,193,70,107,8,97,35,39,107,87,85,231,15,
-232,149,102,76,94,43,59,62,244,160,184,98,35,203,228,160,202,185,134,120,142,159,99,51,52,234,163,157,174,62,67,206,
-39,203,205,225,58,66,151,92,189,149,152,247,84,129,113,97,125,198,179,216,124,126,177,25,201,102,80,134,160,143,114,228,
-207,153,216,76,69,17,55,148,65,72,67,3,145,43,165,178,29,209,76,82,17,235,218,84,0,18,166,176,165,125,24,107,
-237,38,251,88,44,88,175,68,3,144,93,184,170,240,57,28,104,124,204,85,71,137,255,164,114,213,165,28,227,63,96,159,
-236,206,27,236,107,232,92,174,226,134,153,177,45,206,164,221,97,132,0,195,207,177,45,128,56,63,193,49,4,166,159,61,
-79,189,5,33,92,204,164,158,161,123,134,112,121,177,245,217,19,250,102,128,106,252,4,2,109,94,156,106,234,146,92,199,
-96,198,103,147,79,65,254,207,83,36,200,233,66,57,72,27,156,32,168,22,65,113,57,247,185,121,23,240,191,133,50,145,
-81,3,36,199,67,232,239,46,121,204,87,75,110,144,162,167,156,75,187,22,212,148,204,231,92,111,99,75,219,222,133,5,
-200,174,169,31,121,31,143,201,203,64,233,24,249,223,193,244,207,175,172,246,234,148,130,127,68,103,108,117,39,54,106,72,
-91,23,229,200,173,154,73,219,12,95,230,221,181,122,89,104,60,199,164,159,74,196,69,197,40,97,209,211,136,171,180,84,
-127,175,187,48,147,108,48,141,204,205,189,109,133,221,16,44,179,4,148,113,89,58,241,185,10,196,103,41,248,139,196,79,
-226,99,94,148,57,170,130,63,169,190,179,126,45,246,102,149,213,55,231,253,106,110,83,114,78,173,80,17,141,151,190,86,
-60,178,117,88,212,66,250,255,167,249,17,139,48,139,134,159,144,84,208,138,176,99,251,141,42,255,70,14,42,240,95,23,
-17,207,74,159,233,58,60,11,199,59,62,96,113,139,170,22,65,166,244,216,151,251,181,47,126,115,227,27,10,0,125,96,
-89,254,98,235,218,84,116,43,219,214,108,193,226,16,196,2,251,149,1,175,110,11,96,250,83,149,79,38,153,161,35,78,
-190,200,9,102,141,195,199,143,41,208,164,130,247,30,105,88,157,253,248,128,143,74,143,105,179,90,33,58,141,102,162,253,
-137,160,193,166,82,255,238,29,104,33,13,111,212,246,97,93,229,169,131,73,1,221,151,94,110,101,125,211,187,0,60,126,
-231,253,29,228,229,128,171,142,205,33,251,4,134,194,175,193,124,117,188,35,66,76,128,224,170,19,20,200,126,176,132,197,
-169,218,199,26,182,54,152,156,168,221,77,210,185,35,96,182,201,196,140,208,249,111,55,67,163,101,254,212,34,53,86,235,
-43,250,147,25,28,136,189,169,154,10,114,177,197,191,47,196,93,251,120,149,103,21,62,193,107,36,3,93,232,255,151,87,
-32,194,188,162,7,147,83,68,133,12,19,17,107,137,90,213,213,212,124,246,146,60,204,221,25,82,199,11,220,252,56,3,
-150,3,26,162,81,82,52,12,98,35,2,123,247,131,168,55,250,204,251,114,76,171,133,90,91,121,163,1,120,177,117,64,
-34,195,49,51,100,49,216,82,151,109,160,163,232,58,44,114,31,129,123,215,176,150,156,89,194,245,157,40,213,215,85,238,
-25,86,192,81,7,40,48,172,116,193,194,75,200,14,7,32,182,244,251,128,7,134,78,120,225,116,136,154,177,52,195,179,
-2,216,130,45,240,100,138,59,175,205,23,20,212,16,45,2,77,251,95,84,224,203,79,241,188,248,51,69,98,118,9,164,
-240,63,139,25,104,244,239,91,61,192,240,95,120,189,51,69,230,4,129,89,120,211,101,53,10,89,107,217,16,64,254,204,
-123,96,174,75,192,95,160,163,63,79,175,10,116,72,30,168,13,136,0,195,79,65,59,249,104,28,16,23,58,168,112,38,
-68,229,38,229,107,53,234,33,236,98,41,163,47,33,148,218,79,36,143,160,179,73,45,182,233,39,112,164,190,154,7,105,
-117,247,40,58,44,209,123,62,60,212,68,41,67,68,115,71,33,21,211,142,221,157,241,86,154,250,49,151,82,173,195,25,
-74,198,150,113,87,199,20,198,204,22,124,31,148,216,231,181,254,212,34,53,86,231,204,125,80,148,155,54,252,143,56,31,
-171,24,146,47,109,0,58,168,76,8,168,65,204,44,81,107,148,138,105,163,102,166,231,208,107,115,104,255,138,202,151,202,
-219,19,81,86,221,127,41,39,57,10,16,225,135,208,15,228,56,228,157,13,148,179,182,66,178,4,187,103,52,205,219,181,
-143,202,192,100,87,128,194,1,88,102,42,75,59,36,100,245,140,215,235,16,150,153,178,110,95,103,251,103,189,208,69,238,
-16,160,208,149,13,158,196,175,61,227,191,82,75,134,203,166,27,81,104,170,201,133,47,226,218,174,9,116,164,11,175,94,
-155,253,200,86,166,113,212,0,119,69,48,27,178,2,82,138,223,231,245,104,215,4,67,255,128,61,139,240,58,42,251,27,
-140,179,253,214,254,11,242,195,134,15,137,84,47,169,5,15,94,189,8,104,123,228,179,212,216,143,153,201,99,233,155,9,
-210,77,167,241,220,92,210,114,95,125,70,5,177,69,218,125,20,140,3,210,163,85,212,89,135,145,6,130,46,247,68,52,
-124,125,234,200,145,21,156,25,38,63,116,102,155,93,172,106,255,90,130,50,72,63,253,49,23,154,34,88,56,168,98,145,
-31,171,50,0,147,74,220,221,190,67,152,19,78,133,208,190,142,91,218,247,6,184,190,94,192,111,212,235,210,209,84,28,
-251,65,53,214,204,223,194,125,117,75,154,100,135,243,160,67,92,99,22,88,228,127,66,57,7,234,188,121,129,158,171,162,
-136,238,48,208,117,2,252,85,156,113,90,114,24,102,28,109,10,211,24,167,177,250,121,255,132,120,79,232,8,116,55,228,
-30,255,199,117,16,210,164,165,26,198,255,228,45,89,193,114,114,21,154,238,200,187,139,154,193,52,151,241,164,217,13,224,
-248,27,178,121,188,136,124,24,236,29,85,225,117,120,92,152,20,120,182,114,109,185,157,93,187,141,3,84,109,50,183,198,
-146,113,191,146,231,81,208,210,122,211,178,162,21,99,134,2,152,1,173,189,188,94,246,117,8,237,92,46,187,232,26,219,
-143,14,230,253,164,27,149,100,227,77,154,100,11,30,121,153,167,84,5,146,164,172,179,79,197,204,38,182,250,2,255,166,
-189,142,148,127,128,105,203,132,165,232,57,150,165,104,1,237,248,38,80,48,29,45,139,16,251,238,97,237,68,232,189,120,
-209,137,239,21,217,254,210,14,103,45,246,57,36,161,144,30,124,5,33,32,38,185,70,36,238,104,149,241,81,225,236,218,
-223,99,125,76,87,130,0,120,74,140,168,72,61,6,113,177,149,204,5,59,14,70,179,42,83,233,1,255,229,81,154,227,
-128,77,212,220,119,111,114,249,210,49,182,181,228,178,96,245,253,156,93,105,6,157,170,106,134,131,217,156,89,192,32,243,
-73,138,91,121,142,245,44,34,57,30,124,141,182,213,17,199,215,200,189,206,57,132,85,23,138,38,226,33,163,179,59,117,
-188,150,12,90,98,108,161,255,157,22,84,168,142,125,18,12,187,255,132,120,79,232,8,116,55,228,30,255,199,117,16,210,
-164,165,26,198,28,95,46,167,255,120,145,240,119,186,185,131,174,151,180,136,149,116,77,209,171,44,229,156,209,27,90,40,
-255,71,229,249,173,77,88,62,121,117,27,113,97,56,218,221,89,122,105,63,45,98,9,68,174,38,118,49,65,254,28,74,
-184,39,229,76,61,65,127,255,115,234,194,84,253,99,103,160,202,92,252,56,218,57,109,125,49,72,29,67,159,125,189,59,
-245,6,46,255,121,188,19,169,147,0,240,25,174,98,169,100,161,157,7,76,4,155,114,181,96,205,22,163,174,132,62,13,
-74,206,41,202,10,35,103,177,67,35,213,2,120,107,143,251,158,25,151,152,205,14,8,159,81,177,23,117,228,8,245,86,
-153,3,32,240,25,131,230,73,37,108,81,40,194,203,162,215,69,178,170,250,103,54,46,125,53,169,7,1,93,14,130,0,
-168,92,125,175,117,46,191,174,126,225,104,206,186,255,213,135,46,99,108,98,237,84,63,79,61,3,101,101,194,24,250,239,
-169,7,48,245,66,103,79,0,102,62,33,144,209,2,18,86,173,9,64,211,225,55,68,83,102,157,173,21,124,60,97,237,
-152,216,126,158,100,237,120,175,85,230,49,34,224,37,124,16,228,124,7,49,102,187,186,11,37,61,55,197,150,133,224,128,
-66,219,111,239,216,68,200,83,164,253,32,89,30,76,107,245,83,156,225,43,54,211,141,210,54,190,152,46,22,21,1,6,
-153,217,120,18,220,102,166,188,104,0,112,254,65,116,49,249,117,86,198,183,209,94,45,227,99,173,88,78,96,202,207,215,
-100,104,228,99,224,36,217,91,170,198,20,23,216,77,36,212,194,30,6,16,14,101,99,237,200,217,152,141,11,8,238,39,
-40,202,185,240,195,161,242,29,225,106,233,76,1,120,223,8,254,251,87,98,242,26,9,59,5,86,214,64,21,3,103,23,
-63,35,7,232,167,119,82,253,246,108,37,248,132,81,224,90,223,136,63,136,1,88,36,131,12,166,251,42,225,106,151,73,
-56,93,40,138,49,94,226,255,8,160,129,135,242,195,110,152,73,201,166,77,186,235,215,62,177,173,52,169,84,226,236,194,
-27,154,254,19,214,63,239,10,94,163,11,30,222,17,105,14,183,90,121,147,9,165,55,147,234,127,185,104,22,3,228,188,
-99,40,82,97,120,193,221,221,135,158,236,169,147,11,112,20,232,52,174,141,9,45,153,34,254,22,118,15,26,154,78,20,
-76,203,71,182,13,143,217,182,2,110,125,69,238,35,255,252,42,7,175,193,48,198,8,153,38,151,124,163,184,157,208,27,
-140,87,177,135,19,109,63,218,83,0,229,109,7,192,75,9,106,123,34,52,205,104,108,192,173,14,120,73,174,254,207,83,
-173,62,16,65,199,18,177,75,24,23,152,12,154,110,210,56,244,46,115,210,224,208,148,8,9,205,62,74,171,143,215,127,
-223,88,117,111,199,89,49,183,181,93,33,44,253,186,76,175,25,208,52,237,96,237,231,23,226,173,114,210,193,166,180,67,
-53,234,208,196,36,85,57,65,186,183,233,121,202,172,228,3,161,200,206,136,174,19,242,233,111,172,75,229,22,72,250,115,
-7,119,112,232,151,51,79,181,158,15,202,118,143,173,249,147,108,17,111,201,168,18,18,185,103,53,223,206,55,210,5,105,
-100,219,208,161,8,146,187,40,251,210,246,5,26,15,239,126,43,164,124,55,12,150,82,22,193,123,50,17,235,27,163,29,
-10,101,84,159,224,174,98,135,177,176,116,77,199,168,114,219,170,87,111,148,149,140,91,160,67,213,237,84,19,242,232,229,
-173,124,24,56,253,56,248,60,235,81,143,11,17,11,91,233,216,239,17,166,82,103,10,120,108,213,53,226,163,154,22,46,
-215,4,214,181,144,115,247,251,17,164,18,215,114,168,121,43,50,42,18,21,145,140,39,149,241,180,131,173,178,206,114,212,
-239,73,38,142,81,229,123,4,19,244,196,51,253,107,244,50,211,166,131,42,64,105,187,178,107,154,131,96,25,82,72,45,
-49,245,101,255,34,24,75,252,198,45,184,136,140,123,190,235,54,82,134,251,229,61,61,65,127,122,201,12,45,255,160,85,
-101,146,100,128,37,176,5,97,32,129,21,175,73,22,240,226,220,244,237,83,119,141,60,123,23,16,87,102,163,165,139,195,
-137,55,56,185,114,254,127,161,181,184,16,114,62,14,190,163,230,25,58,196,209,183,15,100,211,167,80,8,49,180,59,213,
-165,235,195,128,83,223,233,254,63,139,65,46,13,47,45,152,237,83,69,197,57,175,21,193,214,61,220,56,169,160,45,251,
-9,100,130,108,61,240,82,43,163,74,221,126,202,218,117,17,36,173,153,203,163,122,226,214,191,57,7,0,183,183,146,8,
-8,118,142,133,53,2,60,176,77,74,67,170,125,218,114,199,58,249,160,127,244,85,205,69,230,126,195,177,195,74,119,11,
-152,150,172,172,168,171,90,176,169,192,84,164,249,129,43,199,205,38,56,146,170,241,33,37,176,252,184,224,252,18,220,140,
-116,91,154,118,192,150,119,207,160,221,144,178,70,16,11,154,110,201,134,118,151,71,177,34,100,215,37,44,18,109,24,94,
-71,135,47,41,240,94,8,19,255,88,30,245,2,60,124,100,124,151,249,69,237,113,73,91,89,249,64,40,250,76,193,33,
-213,20,112,170,45,6,100,98,172,200,191,32,83,70,46,22,194,194,123,77,79,245,121,184,210,131,231,128,236,21,90,229,
-232,51,163,93,76,132,142,26,255,20,69,155,255,186,128,48,41,255,216,119,203,222,181,218,7,207,133,116,162,109,201,66,
-47,195,199,32,100,47,56,97,175,225,25,142,7,181,125,81,44,166,240,155,132,53,237,95,213,62,183,4,44,90,117,167,
-17,249,124,105,136,147,39,122,32,207,60,142,23,24,56,151,5,157,236,85,16,171,191,2,149,241,230,184,132,159,226,60,
-184,93,56,66,188,188,182,102,185,138,7,54,113,128,202,91,94,162,9,149,94,238,195,154,86,72,56,11,114,246,119,252,
-203,158,159,111,71,188,127,100,226,107,107,218,84,216,205,79,19,24,244,99,217,71,152,205,77,196,203,90,145,227,78,160,
-122,185,172,233,244,157,2,215,59,63,191,52,199,219,228,187,254,114,33,255,179,173,55,219,48,163,254,43,175,117,175,92,
-105,139,139,243,42,24,38,107,215,61,82,125,252,63,205,243,161,58,78,140,81,215,147,248,8,156,227,184,85,251,41,152,
-112,204,201,151,196,148,148,142,228,6,227,13,83,74,102,138,133,18,118,35,175,74,23,16,167,15,110,208,36,97,234,106,
-230,19,103,77,147,119,60,190,116,232,242,233,44,57,181,201,79,84,14,195,73,161,21,25,160,37,26,29,114,39,136,24,
-182,65,154,55,249,178,15,140,217,115,109,39,248,227,143,69,72,151,136,188,104,38,57,242,106,218,122,228,147,186,157,119,
-131,16,240,50,169,46,168,229,98,242,199,158,47,154,132,57,254,134,40,210,230,214,161,41,13,54,78,10,146,169,26,197,
-198,174,247,18,57,78,32,209,195,15,141,117,120,165,225,146,143,228,145,165,113,30,177,20,168,179,222,192,193,103,241,54,
-130,228,29,84,212,27,6,191,204,141,79,70,222,91,56,57,49,146,90,148,129,154,206,17,238,174,5,16,19,142,178,38,
-243,101,199,178,180,125,6,168,199,59,12,98,30,2,96,227,184,85,118,156,139,79,41,71,88,132,215,179,4,69,227,231,
-141,149,158,66,29,22,161,72,19,190,99,190,101,174,37,169,50,13,95,216,200,254,55,30,112,71,216,130,188,0,73,183,
-63,253,37,246,136,80,181,186,233,190,249,186,202,132,127,143,232,254,72,183,83,8,38,51,122,62,132,163,239,178,81,162,
-3,49,126,94,78,24,213,132,137,7,248,228,183,221,46,41,102,1,221,233,115,201,140,133,226,224,207,1,208,227,238,43,
-187,208,248,128,35,125,173,84,218,185,0,205,103,6,213,70,97,161,37,92,59,170,32,195,56,122,3,114,89,48,135,85,
-246,41,108,184,68,30,132,76,164,101,129,65,148,206,200,54,242,32,97,51,210,141,53,242,189,48,224,225,44,142,8,137,
-183,195,57,180,237,81,117,138,243,244,140,251,231,42,10,207,102,224,97,253,20,213,236,241,39,116,200,255,197,241,230,231,
-17,35,208,130,77,117,211,174,108,199,12,159,223,207,246,160,192,247,28,225,4,222,5,165,99,15,73,114,108,56,97,249,
-201,178,239,203,131,217,16,152,213,112,72,73,40,159,112,13,26,106,101,39,215,201,139,78,179,135,248,149,185,21,128,30,
-143,84,120,20,27,200,133,129,231,242,43,7,52,121,65,215,142,204,35,132,30,202,163,9,121,19,6,189,186,50,252,153,
-187,176,205,236,35,80,0,174,179,35,149,0,170,150,55,170,6,74,160,76,16,204,133,70,19,209,51,159,156,142,82,35,
-159,136,168,255,179,236,211,165,52,112,68,13,233,206,120,119,120,241,17,61,125,184,141,26,51,17,93,86,93,14,121,138,
-31,229,49,234,75,151,21,9,121,30,5,52,0,140,196,250,220,104,67,45,199,112,21,22,116,195,191,254,234,19,170,240,
-30,222,107,167,14,9,12,242,10,236,177,117,197,24,175,189,212,64,165,127,233,175,247,12,232,199,162,116,77,13,139,106,
-35,246,100,247,30,228,77,181,1,103,159,169,7,126,88,87,245,132,163,95,175,226,100,113,177,170,4,72,70,125,187,42,
-21,189,129,179,221,230,3,6,91,243,40,161,116,130,193,97,233,69,35,185,195,45,109,210,157,51,35,167,156,155,124,205,
-121,225,253,254,138,242,26,124,7,182,127,244,26,122,75,57,221,135,113,171,210,154,164,22,196,113,142,51,234,153,0,230,
-71,83,240,83,98,68,105,87,2,248,222,131,241,238,234,183,19,44,31,2,168,18,32,226,254,40,55,161,114,221,205,132,
-45,202,206,72,41,49,201,72,125,183,20,179,19,121,220,99,167,252,39,40,241,76,131,241,124,50,46,102,141,8,209,246,
-208,144,250,214,30,170,31,103,213,52,131,245,217,153,79,26,202,178,254,72,133,118,233,139,54,28,44,101,149,166,17,124,
-15,64,25,31,92,194,241,73,28,104,48,161,19,72,142,81,15,171,21,233,60,171,159,113,254,61,90,14,35,238,102,50,
-76,244,174,177,253,154,10,212,144,82,134,117,140,182,13,100,223,240,209,107,253,11,213,171,144,98,32,153,203,113,175,196,
-233,190,182,254,183,224,200,149,80,61,58,40,23,196,135,27,244,159,159,82,196,237,119,249,22,130,108,69,131,164,158,38,
-149,107,253,67,28,107,7,213,57,85,137,55,175,107,205,224,31,29,147,249,210,18,119,80,210,170,225,8,251,27,118,131,
-214,255,253,11,162,154,27,33,40,138,78,31,208,168,113,242,224,168,221,32,252,97,106,14,112,214,240,130,24,255,16,37,
-7,148,28,80,10,115,72,227,184,51,153,88,254,20,235,157,166,14,95,22,62,218,181,143,156,129,1,1,44,98,96,167,
-126,204,144,140,79,248,232,152,59,162,151,125,184,47,150,142,56,254,253,146,149,20,232,129,226,181,187,87,139,40,123,212,
-28,219,230,99,225,16,30,210,115,67,251,51,97,124,36,84,176,127,15,249,36,85,198,76,76,146,82,92,84,97,1,195,
-206,13,99,95,75,154,88,154,143,177,5,144,124,175,142,21,61,238,168,166,234,102,176,185,201,44,45,135,190,247,15,200,
-80,212,120,164,70,27,170,26,161,135,116,159,129,195,55,48,26,120,162,26,143,28,155,93,47,64,16,88,203,214,147,189,
-187,210,226,148,203,7,50,210,77,15,126,89,153,167,18,169,63,178,77,240,194,58,66,187,36,85,16,81,152,12,225,149,
-63,238,105,30,243,175,177,239,32,221,35,139,43,157,251,75,157,151,123,132,86,77,229,236,80,179,186,88,244,62,168,225,
-220,61,230,185,204,204,148,42,204,146,3,202,177,221,227,39,163,203,86,247,116,188,28,16,17,211,146,133,124,213,117,204,
-248,66,215,52,216,52,77,154,11,150,16,128,123,213,169,201,17,173,83,177,35,60,72,191,94,6,222,218,247,242,164,148,
-11,73,11,211,242,194,129,108,170,0,13,78,127,170,161,143,82,116,28,13,240,47,174,229,155,111,160,126,106,93,114,157,
-91,63,144,167,0,148,242,135,197,243,71,231,15,181,25,255,253,196,182,94,73,246,120,227,182,215,193,74,188,187,196,254,
-214,177,122,126,98,68,253,162,231,235,203,3,226,30,196,194,47,81,139,132,176,104,30,135,91,110,187,150,60,96,82,146,
-17,11,13,186,71,58,129,153,79,210,229,69,115,21,18,22,228,229,241,111,238,240,63,127,178,219,199,12,176,237,98,109,
-23,110,2,203,220,195,208,74,182,72,238,83,149,116,52,246,112,29,186,34,154,178,184,108,50,105,94,111,165,27,74,7,
-44,206,108,197,45,25,74,208,30,89,249,63,131,208,147,162,146,185,245,209,2,168,224,83,46,37,114,133,111,144,26,228,
-228,79,253,74,8,43,167,9,134,127,49,39,96,150,105,229,24,174,130,200,76,95,82,37,192,233,52,74,110,154,26,237,
-152,13,184,99,121,8,61,87,188,15,208,54,255,131,204,53,34,177,220,25,86,165,58,196,57,21,116,239,82,0,142,195,
-63,79,162,47,206,12,88,205,97,206,40,245,16,166,25,168,225,247,87,130,202,157,126,36,108,242,249,194,86,225,77,168,
-240,163,226,72,110,120,176,62,41,10,166,243,148,251,53,193,209,42,229,42,170,0,154,152,122,71,194,183,233,253,4,8,
-13,8,184,181,169,185,114,250,215,181,43,18,211,81,248,210,201,214,178,42,44,137,232,12,7,190,170,227,64,73,161,95,
-163,36,234,91,166,0,0,0,0,
+15,255,245,185,134,205,131,9,31,154,179,190,12,224,206,60,56,51,85,11,228,211,9,195,208,67,181,210,26,19,50,81,
+38,68,220,87,149,26,151,37,185,28,108,203,141,248,208,91,143,4,200,144,218,168,123,24,16,92,132,237,14,162,110,166,
+7,211,62,190,43,36,204,174,58,62,51,81,126,201,40,166,13,223,5,209,27,214,199,252,30,128,21,90,123,171,75,38,
+248,82,192,136,75,29,54,158,55,115,222,116,5,182,166,79,23,230,87,168,3,134,14,170,61,37,105,247,188,15,102,164,
+158,212,111,67,97,208,191,4,206,121,136,32,224,97,110,38,170,62,161,111,31,218,118,37,195,18,35,75,84,237,65,1,
+103,242,73,143,134,7,122,145,92,127,146,71,118,6,17,190,73,113,137,194,53,127,76,59,86,155,162,208,106,251,53,51,
+28,201,251,109,21,141,171,248,25,199,0,13,165,39,152,53,129,100,6,203,166,60,28,204,39,241,206,109,21,75,173,56,
+242,197,60,23,202,249,55,57,209,115,143,34,175,109,72,194,92,187,116,95,98,217,131,171,11,241,223,37,64,100,208,75,
+120,191,219,170,219,58,242,106,123,72,241,208,235,67,89,219,203,128,234,58,50,211,11,19,149,52,141,57,93,218,104,34,
+201,112,181,223,153,67,105,65,209,186,217,235,244,221,213,110,212,249,88,91,226,67,105,117,102,90,211,122,14,112,249,183,
+115,0,232,114,156,132,10,10,144,117,76,31,222,210,47,32,188,61,130,212,201,226,112,176,221,29,195,254,100,247,36,238,
+98,242,153,69,218,100,110,205,217,6,74,243,77,179,8,25,60,214,148,183,153,68,35,71,167,64,25,129,35,33,90,104,
+77,102,165,108,252,207,75,117,64,126,69,58,89,128,12,134,127,86,61,147,27,18,102,79,186,10,168,170,129,87,187,220,
+232,146,178,214,41,138,24,182,109,187,237,248,125,90,46,196,80,38,36,169,139,74,29,65,138,82,242,245,129,186,9,215,
+240,215,17,146,66,196,240,224,213,184,34,253,236,33,31,3,117,45,81,59,54,52,20,104,65,122,39,18,233,71,120,38,
+168,162,52,75,110,103,239,37,159,63,118,112,91,99,66,178,222,132,64,67,176,164,6,240,127,75,218,32,208,11,42,88,
+205,68,20,109,209,116,41,189,196,10,35,146,153,106,218,55,76,157,233,225,145,85,130,171,228,106,161,144,54,55,21,190,
+136,20,105,125,147,222,12,91,57,163,93,243,238,209,38,253,136,235,18,5,85,24,117,86,91,10,27,128,115,122,76,147,
+84,184,135,184,251,167,184,153,108,118,132,243,84,79,165,2,112,206,224,52,220,207,79,206,112,142,158,63,87,92,41,210,
+160,45,140,32,196,49,184,164,206,209,84,104,160,103,2,249,100,203,30,196,203,160,175,229,194,234,193,160,203,154,46,43,
+140,124,17,184,33,124,196,158,178,38,155,236,145,113,123,97,189,215,208,33,39,227,110,86,160,26,175,192,59,233,10,92,
+201,131,203,95,120,223,114,156,16,180,43,245,140,13,255,39,33,13,236,207,29,218,189,253,181,76,98,192,117,31,196,155,
+102,196,45,113,241,72,225,88,119,59,152,20,54,217,18,219,182,149,197,183,246,201,250,22,8,84,233,185,0,111,113,183,
+19,8,95,191,250,53,17,207,223,184,126,100,141,238,188,7,157,121,233,114,2,9,132,119,54,96,251,216,82,33,214,97,
+126,250,119,50,95,171,113,106,180,143,148,4,252,74,199,175,18,17,172,52,213,220,161,252,141,146,68,55,84,34,232,150,
+129,41,213,184,126,231,90,152,250,53,144,87,143,17,128,55,142,237,251,14,208,176,60,132,99,238,52,53,194,152,152,67,
+128,237,225,29,90,1,55,179,32,69,123,86,41,17,96,67,97,106,97,50,57,160,1,163,216,247,241,214,15,156,186,22,
+9,97,137,214,154,234,192,139,5,95,138,180,65,54,148,153,181,66,231,252,24,110,133,162,208,194,10,48,113,140,134,220,
+84,240,25,119,219,186,4,12,72,53,162,47,244,79,80,73,81,179,139,24,66,188,245,241,172,224,231,213,193,88,50,63,
+140,90,81,75,121,174,14,15,84,197,98,193,89,188,126,67,236,193,235,41,147,179,2,95,251,25,57,97,88,226,157,48,
+222,95,249,48,95,225,240,95,152,47,213,98,230,4,210,115,159,113,27,196,62,195,55,186,183,58,255,27,188,9,184,16,
+218,112,155,85,231,147,128,140,191,113,11,113,151,88,210,5,223,61,104,105,84,111,11,210,146,129,177,50,245,165,62,182,
+16,97,21,78,113,226,197,208,94,113,123,185,101,20,40,54,100,145,62,97,220,164,202,143,115,64,146,230,95,16,157,129,
+247,246,254,86,128,98,141,233,32,220,66,145,138,222,44,89,238,128,250,228,40,23,115,90,238,49,17,3,243,93,137,204,
+181,135,244,4,210,197,43,176,45,51,102,50,47,146,185,58,254,85,164,133,247,158,88,229,112,94,102,167,63,226,254,22,
+138,213,76,183,117,36,70,155,81,81,204,246,16,7,26,242,153,29,200,113,94,19,64,73,198,91,14,115,95,167,210,24,
+47,79,44,190,57,64,200,179,90,17,159,201,232,172,70,144,63,129,207,139,117,127,199,91,203,243,126,143,140,27,151,122,
+107,218,234,47,60,188,142,176,179,151,251,245,125,153,133,63,83,113,221,187,229,152,224,37,60,191,54,85,32,12,55,209,
+225,11,30,89,113,59,141,121,54,177,13,251,231,225,26,174,177,221,120,231,181,145,203,199,255,255,255,255,255,252,51,22,
+226,231,130,92,175,221,181,103,181,6,124,255,56,156,228,192,126,184,2,63,238,251,56,148,88,159,45,149,209,212,242,211,
+171,55,6,86,2,236,19,102,125,168,98,145,251,54,246,175,92,206,113,72,89,62,194,77,69,32,46,167,170,214,52,102,
+11,139,85,183,122,101,207,196,148,175,40,190,59,15,177,255,229,204,36,112,194,159,237,95,178,160,128,35,11,157,174,93,
+123,10,38,63,167,167,70,101,147,137,229,127,20,175,197,22,45,27,39,61,82,206,170,121,84,244,100,167,65,139,199,205,
+147,135,39,59,148,117,77,38,244,105,162,34,6,198,71,153,42,9,104,139,68,226,209,208,222,61,14,253,131,84,125,47,
+194,89,110,55,135,191,189,75,64,230,149,41,69,164,35,96,51,198,98,251,146,171,242,198,55,35,12,183,164,66,93,46,
+102,6,182,61,181,74,103,80,68,97,190,170,110,248,155,189,98,181,92,198,247,129,110,50,42,89,133,107,4,249,59,77,
+218,196,252,166,162,6,185,185,87,101,60,149,140,26,128,219,106,92,204,218,132,241,162,211,143,205,66,89,72,2,235,60,
+63,182,3,8,103,100,215,234,204,218,13,166,237,157,32,177,151,195,105,51,87,208,196,55,208,144,154,46,114,161,201,221,
+35,189,170,132,95,247,78,103,137,11,184,176,226,161,130,94,222,36,191,150,65,178,159,184,241,154,197,239,238,75,178,5,
+230,54,161,112,252,136,208,99,155,79,61,88,148,204,189,108,245,47,15,145,100,240,192,70,239,62,93,129,97,11,244,28,
+47,243,162,86,14,191,62,221,90,170,92,15,139,112,244,152,133,249,13,43,102,25,249,31,95,108,255,43,159,225,251,161,
+244,153,46,213,71,96,68,0,188,113,82,35,245,18,33,122,251,79,58,153,192,178,44,154,146,184,237,154,89,110,253,198,
+158,173,169,10,217,255,43,181,36,81,67,4,156,194,244,24,148,71,117,217,75,201,51,164,198,76,138,173,156,85,255,6,
+191,177,106,48,253,224,32,11,61,87,117,175,152,215,154,171,52,150,192,201,30,205,165,46,42,206,222,150,144,33,179,122,
+62,2,186,237,234,71,84,205,171,50,75,154,171,61,112,245,11,214,114,137,155,167,147,56,168,180,25,2,98,243,186,228,
+224,204,33,110,70,94,115,27,89,216,129,255,238,120,146,190,224,16,119,146,112,104,11,157,140,219,59,35,248,129,56,120,
+64,97,196,205,63,179,124,232,160,58,114,7,42,207,210,224,19,48,17,131,80,18,183,101,222,174,31,15,81,165,147,50,
+130,40,58,54,73,86,161,126,254,8,148,18,10,218,142,241,57,191,74,22,34,49,31,164,204,51,45,18,96,122,206,42,
+5,18,189,54,11,55,215,245,255,63,185,190,23,124,176,1,146,127,231,156,236,118,249,112,220,79,177,72,141,247,148,197,
+186,109,173,40,187,71,220,56,72,23,72,11,131,65,94,183,35,171,43,65,69,56,143,35,194,24,13,103,35,235,82,219,
+52,253,175,126,192,103,157,134,101,48,44,85,213,6,169,2,18,55,238,182,172,237,7,46,115,140,165,83,244,244,217,89,
+70,231,151,234,36,70,36,147,45,176,88,178,0,127,205,87,237,115,131,160,235,158,73,26,152,153,135,206,86,2,182,212,
+43,193,6,40,141,67,242,222,204,71,74,131,74,83,76,171,250,187,17,39,77,41,53,117,236,28,75,173,169,11,170,60,
+97,183,207,22,190,93,168,197,172,32,134,100,173,26,89,30,60,254,90,107,71,172,77,69,235,157,49,163,0,56,117,88,
+108,99,187,153,196,153,35,102,123,141,111,218,186,197,99,225,79,204,213,121,185,27,91,222,118,76,17,145,221,236,250,0,
+222,153,77,87,178,100,87,178,63,86,44,247,58,245,51,28,82,135,134,226,117,213,204,172,122,44,177,236,216,233,116,213,
+31,145,114,185,249,135,227,205,255,37,56,93,223,186,212,92,185,45,216,145,254,139,48,213,205,42,152,208,70,96,236,38,
+36,112,93,173,123,155,11,186,232,32,97,123,106,114,94,75,159,65,229,27,81,189,14,182,240,127,129,138,91,118,49,206,
+83,243,220,47,144,0,0,178,105,35,191,64,32,147,37,248,123,87,228,4,194,125,56,173,95,69,24,137,26,18,2,102,
+194,97,118,120,255,240,123,22,94,153,98,52,98,116,89,204,173,33,94,226,99,192,205,32,181,61,119,144,112,25,186,38,
+245,156,211,190,237,53,155,208,117,209,224,67,205,211,93,12,12,214,193,76,54,127,49,0,12,196,70,248,144,187,231,26,
+210,42,150,180,73,55,4,130,189,216,93,243,180,82,139,0,206,35,151,198,228,31,29,32,161,77,233,238,246,55,159,241,
+147,178,169,22,70,20,149,50,72,218,87,24,220,52,53,116,89,203,56,28,64,176,33,119,140,65,178,221,186,206,7,14,
+243,54,166,88,112,9,189,96,202,180,138,56,182,58,120,255,74,217,141,179,43,123,100,151,65,34,54,125,18,167,36,127,
+112,218,219,250,85,236,182,127,198,208,194,251,199,214,174,114,52,241,99,157,241,57,24,40,80,62,103,26,99,198,10,180,
+42,10,161,40,183,162,250,85,94,49,96,17,78,102,209,86,78,229,250,109,76,237,12,167,131,230,116,1,17,88,153,146,
+107,141,52,177,167,15,62,49,219,192,122,59,82,28,128,210,13,132,134,215,5,88,231,238,193,232,107,48,237,27,113,93,
+242,192,186,237,161,225,86,130,56,104,82,162,163,83,227,50,230,87,120,89,40,74,249,61,64,53,208,68,84,5,212,216,
+8,169,228,168,81,43,89,88,232,12,80,132,207,12,74,198,69,204,173,122,63,99,67,181,236,240,79,46,180,169,104,191,
+20,115,132,154,73,250,28,151,102,6,51,153,199,151,145,77,140,215,72,244,63,58,4,189,91,146,201,208,245,23,171,237,
+59,166,166,188,54,105,252,162,38,13,74,190,68,3,236,120,204,215,191,171,73,229,88,83,75,158,112,213,178,27,72,244,
+37,240,190,190,91,174,64,202,212,22,192,76,71,79,21,121,195,77,172,59,202,30,66,31,210,242,136,200,56,73,103,144,
+65,81,41,137,42,199,31,21,95,153,208,38,230,18,221,118,75,115,119,128,91,63,168,117,64,76,55,158,179,181,224,116,
+248,3,155,34,224,158,204,213,13,174,22,176,78,200,158,157,179,144,207,88,211,179,25,59,50,9,31,87,97,84,99,136,
+171,200,204,190,209,17,78,232,223,95,87,121,194,34,164,242,62,34,45,130,59,54,57,215,187,39,195,65,87,76,101,188,
+181,148,92,235,159,27,216,189,133,219,150,243,171,28,79,20,44,149,169,215,246,60,117,133,24,54,229,87,139,241,63,5,
+218,166,186,87,88,5,251,247,70,187,140,193,99,75,12,188,118,7,237,189,58,200,170,13,25,74,72,9,115,93,230,164,
+143,224,206,179,219,213,84,115,25,45,1,237,22,252,78,238,140,91,235,28,63,25,12,48,41,154,182,145,41,71,77,251,
+169,2,159,140,56,140,84,72,207,171,254,99,221,148,220,55,227,170,175,98,21,42,245,157,211,254,194,64,212,102,24,71,
+68,152,156,190,164,48,19,5,68,207,29,219,31,17,255,255,255,255,255,255,253,137,245,131,18,194,76,233,250,255,255,255,
+254,47,128,225,147,94,204,46,162,196,235,10,109,54,159,179,241,193,46,148,81,182,255,41,24,216,77,95,64,11,121,216,
+152,32,109,255,163,59,71,218,187,35,175,110,38,239,207,126,161,64,106,42,62,90,103,248,211,173,236,140,78,170,160,221,
+68,19,189,151,67,161,215,199,96,143,250,70,72,122,85,197,24,111,221,94,231,122,54,163,163,242,3,228,34,234,123,116,
+136,141,150,72,217,248,212,119,221,48,83,140,123,243,133,238,222,96,50,65,139,104,235,70,179,79,129,194,159,95,194,93,
+166,109,89,200,15,231,191,136,60,52,32,241,183,248,254,115,217,114,188,144,62,64,179,9,77,139,0,189,128,121,116,35,
+231,4,228,87,35,156,156,89,104,207,62,122,190,6,40,230,91,227,230,167,20,88,146,134,88,32,25,107,251,222,249,169,
+208,120,17,115,15,88,250,183,108,192,7,179,230,15,136,99,172,131,244,120,67,59,168,169,188,210,106,231,39,241,207,5,
+255,254,226,247,135,15,255,245,185,134,205,131,9,31,154,179,190,12,224,206,60,56,51,85,11,228,211,9,195,212,88,193,
+129,91,184,32,49,236,9,104,152,26,110,127,163,41,203,25,127,153,40,79,46,98,230,134,6,235,236,104,123,15,124,40,
+0,196,88,192,71,17,179,82,87,55,38,162,214,115,53,55,218,78,34,66,92,58,199,108,198,7,155,79,230,165,245,63,
+168,167,66,126,158,228,10,235,215,60,227,85,74,71,38,38,243,27,22,164,127,179,79,4,169,217,246,192,83,117,21,241,
+127,184,11,74,12,103,152,161,139,237,198,70,156,23,38,164,42,129,66,110,169,12,246,144,101,242,219,32,131,65,82,169,
+116,200,247,11,65,31,177,178,203,201,27,0,43,106,123,59,167,153,69,57,121,44,239,71,79,77,112,163,79,181,198,225,
+96,78,254,147,236,109,86,110,200,60,161,78,90,92,62,12,185,79,184,171,53,65,135,152,16,225,70,167,183,140,65,102,
+10,66,62,118,16,200,59,151,60,150,248,210,88,117,238,11,100,115,127,188,16,139,151,46,243,215,120,182,158,48,197,142,
+248,52,179,39,113,102,248,207,52,238,130,124,30,55,173,71,182,210,186,219,170,149,1,135,167,37,145,93,96,202,157,81,
+184,228,33,60,65,120,54,50,108,164,253,119,106,208,118,249,232,24,173,179,20,189,199,118,177,150,136,124,93,172,241,71,
+3,206,142,120,16,195,195,96,209,98,26,21,203,32,27,111,91,231,96,201,208,17,95,96,214,28,203,249,180,2,112,162,
+146,185,148,105,155,229,111,20,109,152,17,24,202,93,127,241,249,22,10,155,35,54,155,141,195,250,206,141,169,159,53,143,
+59,146,128,166,138,213,10,240,190,193,65,201,78,116,203,17,235,153,208,205,242,152,167,236,45,163,192,75,226,222,219,188,
+205,99,181,0,243,23,189,73,62,255,10,5,109,250,0,88,41,145,142,247,18,133,140,4,251,133,173,26,184,130,251,19,
+234,139,170,71,5,14,165,58,105,68,155,123,140,215,184,90,144,51,196,29,168,190,122,106,160,91,255,250,89,87,58,183,
+165,117,95,129,28,244,148,7,65,112,247,219,21,51,215,211,57,129,49,81,138,163,53,133,7,92,127,66,79,39,58,249,
+231,127,146,15,82,32,142,149,212,247,184,12,95,129,39,248,112,61,142,121,97,143,153,19,98,75,102,230,92,230,233,35,
+24,170,38,148,220,22,206,82,16,129,152,207,46,104,137,168,207,62,255,125,189,225,110,43,52,253,31,185,217,230,80,180,
+227,246,25,230,170,59,29,216,38,51,146,0,202,58,210,90,253,105,69,197,35,69,206,197,185,204,231,57,240,15,92,240,
+25,159,83,222,128,42,149,83,137,173,236,34,20,112,4,100,166,248,173,21,105,83,5,253,73,136,40,138,206,14,125,75,
+124,89,170,146,203,230,188,55,87,120,106,237,239,38,94,200,133,211,155,23,99,66,98,107,46,76,197,3,41,63,171,42,
+198,211,70,93,5,3,137,230,215,93,83,182,96,94,107,172,107,243,66,7,153,237,26,87,89,137,235,212,16,161,37,11,
+180,13,214,136,40,104,246,63,178,178,22,168,145,6,32,13,137,214,246,246,44,118,96,221,109,86,235,226,69,175,123,83,
+1,44,135,37,68,142,199,248,50,41,254,84,219,197,244,65,43,53,204,160,63,10,15,250,13,158,239,66,90,110,184,81,
+111,205,174,47,64,47,184,247,235,133,24,105,198,3,91,176,1,13,140,196,124,248,201,136,132,62,237,46,180,107,228,173,
+186,49,177,99,185,64,18,224,150,243,44,177,8,36,95,149,13,25,221,21,254,83,146,254,85,234,227,43,197,35,47,27,
+157,93,127,47,83,208,165,215,78,245,9,107,193,237,65,210,96,113,162,93,135,201,224,136,53,212,134,166,86,83,30,181,
+14,68,240,114,191,106,183,94,197,203,71,17,244,212,54,75,231,221,244,49,196,218,180,30,184,154,49,159,167,130,21,238,
+6,206,74,41,252,36,187,28,21,165,6,57,184,145,84,253,145,9,197,223,11,42,89,163,234,117,130,45,237,233,181,22,
+214,180,206,85,2,43,153,63,16,92,140,69,98,208,250,225,59,101,171,145,73,85,248,80,59,12,255,108,176,207,239,114,
+14,51,78,23,22,53,198,140,2,52,67,83,44,148,140,97,199,16,134,15,224,28,136,190,233,13,98,151,186,136,37,28,
+94,113,19,224,71,123,114,216,182,236,112,90,199,84,130,10,191,224,10,219,225,217,45,110,133,116,33,46,214,177,236,168,
+170,107,82,80,204,116,115,223,135,163,248,236,217,163,214,101,93,188,34,241,121,79,119,134,60,40,137,130,97,219,62,118,
+15,210,198,206,129,230,90,83,120,57,120,171,14,180,133,138,59,117,193,234,236,55,114,250,80,108,81,248,203,158,77,108,
+115,18,234,201,186,18,97,46,5,189,73,158,33,141,16,53,228,223,64,51,38,198,65,73,25,38,193,114,200,134,212,212,
+175,189,143,248,166,109,153,8,176,255,255,255,255,255,255,195,228,172,255,51,48,50,218,69,141,134,24,45,114,112,181,152,
+2,17,150,165,104,123,184,191,210,194,125,105,107,233,114,37,151,151,60,59,211,116,238,196,11,60,139,182,133,135,145,238,
+73,188,228,196,159,199,64,181,3,54,81,33,94,126,74,162,83,22,24,84,163,122,70,74,194,53,31,98,201,112,117,18,
+255,226,126,51,240,206,189,13,109,124,177,51,71,108,248,191,18,102,211,128,52,17,49,119,160,9,203,206,13,110,81,139,
+22,241,88,137,100,222,35,204,231,141,63,158,178,218,105,188,21,138,230,105,108,121,249,171,24,164,97,61,4,213,82,151,
+97,6,9,119,93,51,47,34,152,178,230,146,117,136,235,179,184,50,232,3,221,92,152,221,39,108,248,52,69,222,163,76,
+121,2,76,197,224,72,204,106,57,46,228,238,0,169,242,108,39,31,234,73,116,220,121,222,125,96,95,84,191,230,15,139,
+212,62,200,221,38,189,220,51,203,137,148,26,64,5,195,238,101,14,146,73,201,147,191,106,54,232,141,168,17,203,79,231,
+53,236,52,204,105,127,225,72,23,153,87,183,177,206,239,217,44,205,174,228,235,69,26,43,55,25,185,122,1,31,226,145,
+132,78,40,183,63,127,55,135,111,9,226,237,68,148,29,203,146,77,163,9,87,211,225,78,50,131,134,252,19,74,29,88,
+22,224,25,76,27,37,74,35,132,187,18,145,1,252,26,224,207,153,205,202,69,164,174,134,119,31,212,201,174,107,106,18,
+58,64,4,138,203,43,7,63,44,118,88,234,47,185,185,114,14,22,248,2,23,68,250,164,168,146,204,148,110,239,183,185,
+114,28,65,83,189,124,210,155,252,45,139,170,19,171,172,78,141,225,163,181,149,187,32,61,176,42,166,158,177,204,233,130,
+244,169,198,122,204,61,83,243,220,27,232,104,19,208,102,32,162,236,27,7,210,235,159,36,205,177,71,137,28,211,156,189,
+17,244,175,40,10,151,105,174,157,210,205,102,160,108,192,72,62,55,14,65,182,0,136,84,37,95,194,184,165,174,166,13,
+246,172,16,21,3,52,48,15,136,175,15,255,245,185,134,205,131,9,31,154,179,190,12,224,206,60,56,51,85,11,228,211,
+9,195,212,88,193,129,91,184,32,49,236,9,104,152,26,110,127,163,41,203,25,127,153,40,79,46,98,230,134,6,235,236,
+104,123,15,124,40,0,196,88,192,71,17,179,82,87,55,38,162,214,115,53,55,218,78,34,66,92,58,199,108,198,7,155,
+79,230,165,245,63,168,167,66,126,158,228,10,235,215,60,227,85,74,71,38,38,243,27,22,164,127,179,79,4,169,217,246,
+192,83,117,21,241,127,184,11,74,12,103,152,161,139,237,198,70,156,23,38,164,42,129,66,110,169,12,246,144,101,242,219,
+32,131,65,82,169,116,200,247,11,65,31,177,178,203,201,27,0,43,106,123,59,167,153,69,57,121,44,239,71,79,77,112,
+163,79,181,198,225,96,78,254,147,236,109,86,110,200,60,161,78,90,92,62,12,185,79,184,171,53,65,135,152,16,225,70,
+167,183,140,65,102,10,66,62,118,16,200,59,151,60,150,248,210,88,117,238,11,100,115,127,188,16,139,151,46,243,215,120,
+182,158,48,197,142,248,52,179,39,113,102,248,207,52,238,130,124,30,55,173,71,182,210,186,219,170,149,1,135,167,37,145,
+93,96,202,157,81,184,228,33,60,65,120,54,50,108,164,253,119,106,208,118,249,232,24,173,179,20,189,199,118,177,150,136,
+124,93,172,241,71,3,206,142,120,16,195,195,96,209,98,26,21,203,32,27,111,91,231,96,201,208,17,95,96,214,28,203,
+249,180,2,112,162,146,185,148,105,155,229,111,20,109,152,17,24,202,93,127,241,249,22,10,155,36,114,18,141,73,2,127,
+12,212,71,225,113,36,235,145,47,150,149,107,145,183,32,43,163,103,8,197,46,67,97,45,55,134,171,157,71,169,37,191,
+222,185,4,230,140,73,190,65,233,34,221,83,121,138,97,57,85,101,164,14,129,93,151,33,184,146,216,149,155,6,100,159,
+99,251,141,64,78,2,181,138,157,36,233,212,9,3,3,250,25,161,155,219,236,74,96,57,83,139,217,177,123,235,31,187,
+147,205,161,97,152,55,19,237,234,36,202,217,60,82,177,251,0,255,98,127,207,13,111,189,239,207,104,125,164,127,229,100,
+145,254,219,152,122,0,169,85,124,138,51,55,216,49,246,186,185,208,172,138,227,91,187,8,115,234,218,213,124,244,192,104,
+130,213,103,212,110,115,145,105,124,10,131,146,230,178,176,16,89,143,25,7,205,100,117,100,127,14,69,164,216,244,230,180,
+35,88,50,109,81,197,26,125,179,1,231,207,219,86,77,81,28,15,6,144,22,195,255,3,197,183,155,239,11,164,162,130,
+149,118,213,193,98,31,255,255,255,255,255,255,254,26,243,244,24,141,88,68,15,189,253,85,229,71,237,232,188,112,92,171,
+171,36,88,157,144,249,57,13,66,51,195,106,77,120,211,45,27,73,121,219,26,179,108,203,176,24,162,96,131,49,109,107,
+254,152,200,158,148,15,0,61,71,25,102,104,131,93,47,90,173,94,253,157,55,232,228,44,71,231,214,98,9,207,133,243,
+222,165,8,32,108,159,3,243,237,53,189,171,178,60,125,176,168,169,6,158,148,14,14,129,128,151,224,207,15,7,110,207,
+214,162,150,197,115,15,166,67,66,227,216,196,143,52,0,217,0,52,167,145,51,78,126,186,53,57,122,26,19,22,122,56,
+184,17,6,251,39,138,172,229,197,58,32,26,117,0,118,178,89,169,199,216,2,192,116,212,9,236,215,220,223,47,237,88,
+56,93,233,137,189,245,17,60,138,167,143,87,21,34,64,229,101,68,75,20,87,158,207,232,26,66,15,113,25,25,114,136,
+8,0,24,249,119,241,173,77,229,192,146,147,63,168,50,38,250,178,209,165,123,125,234,147,171,47,93,51,123,118,82,85,
+157,123,148,217,179,142,205,240,49,63,157,119,227,176,238,19,253,131,220,197,80,98,128,57,224,219,184,59,148,121,19,79,
+74,38,103,50,249,193,117,118,138,22,21,70,108,11,18,229,5,230,56,100,188,128,185,199,183,19,50,224,54,134,145,11,
+107,216,244,155,152,170,217,30,173,173,34,161,192,14,72,250,12,130,49,76,98,128,37,199,93,180,231,27,187,20,37,112,
+129,214,17,219,221,61,88,104,192,96,229,92,239,210,45,103,204,38,223,145,14,16,209,244,207,58,250,10,26,20,219,202,
+10,149,30,77,61,183,75,69,176,175,51,204,68,176,154,137,175,78,195,132,57,173,165,184,232,52,149,157,31,117,52,118,
+49,60,143,128,79,126,10,78,95,132,245,22,77,70,97,250,58,114,65,84,73,84,251,236,76,165,105,206,59,120,2,1,
+54,16,116,166,83,140,194,110,196,142,57,63,104,241,241,54,96,77,3,182,12,90,249,205,114,156,162,146,77,249,228,23,
+12,131,115,69,220,249,169,195,32,220,131,252,38,19,210,194,29,210,120,25,41,232,194,175,161,119,144,167,109,136,63,74,
+39,188,200,95,215,245,205,16,155,54,61,21,150,205,182,20,1,247,184,147,231,232,181,23,112,173,106,36,221,143,154,217,
+200,124,142,32,39,167,32,32,185,235,66,110,60,65,64,160,243,6,11,210,107,116,96,142,76,237,189,72,23,255,244,240,
+127,45,77,112,214,113,48,107,159,91,127,40,145,103,105,147,83,253,57,116,10,163,127,32,248,135,4,97,34,48,44,110,
+187,77,159,176,18,65,214,116,4,38,123,157,95,229,100,234,134,179,148,219,199,234,182,9,8,127,10,86,176,216,133,84,
+116,53,204,139,190,150,175,117,22,209,181,79,227,133,208,146,206,76,241,63,12,181,124,24,111,200,127,220,228,94,60,2,
+119,85,209,203,41,82,181,43,100,104,81,208,82,34,9,227,227,177,27,134,204,204,28,89,13,174,11,59,198,89,42,186,
+123,84,65,32,81,57,120,122,207,185,17,20,205,102,203,181,240,138,22,166,146,34,210,197,162,175,152,62,7,170,193,57,
+65,31,64,27,117,101,224,155,215,40,166,89,205,38,192,6,101,187,35,111,241,20,102,219,158,91,80,249,145,170,213,217,
+88,121,211,160,44,235,84,14,95,71,242,99,94,10,213,141,24,200,136,200,183,138,102,111,65,126,155,108,82,173,124,84,
+104,112,235,37,58,179,65,252,212,193,125,176,33,7,251,225,55,157,82,86,69,6,117,216,113,216,63,115,78,62,247,141,
+7,160,227,20,15,64,119,227,95,200,55,179,187,78,70,238,210,54,7,151,251,175,18,205,44,80,225,115,243,236,60,252,
+100,39,25,32,198,222,188,154,68,53,214,64,218,42,164,104,51,187,136,89,242,161,115,213,5,227,186,213,138,193,152,128,
+74,25,4,24,219,245,194,163,191,6,82,14,39,129,164,215,40,52,114,39,114,75,90,17,65,178,86,205,68,55,189,53,
+90,240,114,140,69,220,131,144,254,99,52,97,77,27,34,171,192,124,54,106,98,72,93,170,78,62,30,215,222,78,135,209,
+43,255,23,78,74,175,165,210,26,42,63,154,170,253,202,217,37,42,13,38,200,50,91,106,47,156,37,228,29,231,91,243,
+234,41,239,11,132,15,246,189,138,76,167,71,97,86,49,13,130,70,183,187,98,70,201,6,54,1,117,97,27,143,89,82,
+21,250,91,65,123,235,66,125,112,251,5,129,185,32,137,96,182,243,155,193,204,155,209,253,153,232,154,0,167,165,49,35,
+73,213,198,103,85,112,110,104,152,196,170,97,236,87,109,95,62,122,240,190,193,73,251,11,40,124,203,90,232,15,197,75,
+149,177,140,168,14,89,231,141,187,108,0,20,74,187,82,4,133,15,72,135,23,81,39,8,57,122,133,159,173,7,84,35,
+231,214,138,9,136,185,148,222,53,91,193,159,28,39,60,50,232,230,193,40,130,134,79,163,156,200,54,92,236,134,70,138,
+66,166,67,58,233,213,86,98,145,92,162,78,248,48,164,179,2,202,158,171,247,140,119,136,7,200,245,253,8,64,212,155,
+74,84,134,15,110,132,255,109,22,119,63,81,211,39,232,69,224,16,66,66,81,185,114,45,90,17,101,119,232,12,181,175,
+255,9,65,8,224,194,206,245,101,158,244,179,154,152,194,245,152,226,142,128,108,152,86,60,128,104,166,12,212,47,249,1,
+7,39,140,139,64,209,45,36,42,41,69,120,129,175,245,91,164,12,178,135,131,155,180,178,92,94,65,150,138,26,120,240,
+56,247,170,95,144,226,161,210,214,154,83,142,18,157,37,113,155,177,163,220,22,36,76,249,49,76,84,8,194,173,163,254,
+229,43,202,122,114,8,211,6,131,39,81,75,175,11,121,124,100,84,25,114,133,16,28,236,91,202,137,61,44,65,34,80,
+211,217,64,239,210,253,90,7,99,91,222,182,242,91,158,104,22,207,7,79,18,29,67,52,252,132,68,52,78,97,62,87,
+212,156,85,33,135,83,93,19,95,140,31,66,57,224,164,72,248,221,112,3,117,67,150,16,14,237,1,106,124,207,129,178,
+225,160,251,73,241,194,219,173,22,57,70,22,89,202,96,49,87,121,184,7,195,149,252,176,49,21,22,82,193,64,28,182,
+64,103,60,230,176,204,150,220,138,180,1,219,140,188,254,154,110,206,117,59,245,73,91,0,133,124,59,167,18,216,208,152,
+239,246,6,103,247,70,114,1,215,151,70,158,210,22,153,124,240,35,128,73,148,163,21,165,242,248,116,2,216,131,113,25,
+45,250,135,97,120,218,215,0,65,101,105,198,138,190,133,85,29,203,10,235,117,125,1,101,37,172,8,6,59,119,103,222,
+193,224,33,197,167,225,223,54,239,134,190,177,158,58,138,160,36,241,214,192,233,103,23,122,223,92,77,214,88,112,90,156,
+228,103,232,66,86,39,185,75,50,143,102,54,115,4,28,135,183,66,133,186,186,179,195,190,88,223,16,214,239,254,107,75,
+82,55,65,202,113,111,91,152,10,44,124,79,242,83,116,33,13,244,233,186,231,97,151,161,112,4,182,184,85,77,236,11,
+79,113,97,69,169,204,51,19,140,112,197,171,253,101,246,247,152,132,45,100,170,8,143,59,142,231,47,251,188,95,2,144,
+51,17,253,98,43,67,244,45,203,116,38,51,98,252,140,162,43,167,79,43,58,173,214,32,85,30,93,114,58,5,84,120,
+180,52,59,250,96,228,249,201,176,143,217,74,16,148,147,224,10,29,172,65,238,19,106,74,106,216,195,185,254,239,133,129,
+57,238,180,85,201,150,244,209,29,45,155,9,232,116,133,116,47,251,140,242,185,64,138,64,151,209,181,183,249,111,111,172,
+205,90,167,106,80,168,3,73,137,152,208,38,145,59,200,88,228,164,218,243,89,67,180,150,89,34,2,0,112,187,227,95,
+231,82,44,31,94,66,40,150,80,242,164,202,28,28,245,202,8,76,132,27,53,136,39,35,27,110,250,108,144,199,120,149,
+163,40,241,210,243,19,204,3,227,84,218,63,194,0,44,180,105,54,227,130,203,45,15,16,21,139,13,171,236,241,255,31,
+205,214,159,114,16,17,26,203,218,36,213,51,235,101,181,123,199,101,173,101,167,3,26,146,213,214,75,228,199,14,85,188,
+107,8,145,189,3,28,237,132,16,93,207,69,45,146,11,6,141,10,15,20,70,245,106,24,75,221,227,66,31,89,106,116,
+123,135,153,177,217,15,242,243,174,53,39,142,85,58,197,191,121,65,126,111,165,70,139,210,227,2,109,71,37,255,118,199,
+43,154,233,251,159,193,164,184,156,15,69,165,254,147,77,108,153,239,4,229,228,0,74,3,50,102,46,25,44,134,125,73,
+170,226,47,219,77,176,156,1,255,226,32,28,224,222,20,38,45,70,174,53,116,153,162,34,214,101,137,189,54,138,2,172,
+158,23,114,190,100,83,170,115,37,60,175,199,110,36,216,65,138,177,120,103,13,14,12,75,78,31,237,199,20,42,46,100,
+218,56,239,214,170,94,57,212,190,178,41,174,69,138,227,90,76,177,28,132,39,69,45,180,113,175,175,163,38,180,224,220,
+30,205,59,211,87,71,201,178,149,100,198,97,204,98,30,8,130,168,106,216,50,9,49,23,219,99,156,167,127,44,24,232,
+131,14,96,60,255,215,127,19,95,8,90,172,18,117,130,40,194,39,229,27,250,105,169,49,246,33,252,48,248,19,113,150,
+1,170,195,28,118,180,235,10,75,74,0,80,109,187,67,177,67,171,237,24,5,220,152,112,159,97,241,78,88,8,74,202,
+45,253,220,120,146,65,47,66,92,127,112,244,113,237,20,12,124,157,152,5,178,63,91,108,131,132,94,181,174,201,129,18,
+210,200,184,3,222,133,142,84,118,6,188,119,200,38,87,80,149,28,192,171,190,178,252,40,221,89,224,131,186,250,12,176,
+170,83,12,152,146,80,72,205,207,78,77,136,162,161,137,123,129,110,241,208,127,192,8,101,166,117,24,80,108,106,235,215,
+58,135,155,31,235,71,11,60,82,114,33,231,179,18,229,68,100,93,8,94,185,34,46,16,89,42,85,57,231,38,142,33,
+90,212,57,172,139,240,91,135,58,211,78,246,78,33,173,152,253,196,239,53,21,75,58,101,153,60,152,94,165,16,228,95,
+199,147,210,125,100,107,34,58,106,235,144,42,45,45,77,116,189,234,143,57,47,249,138,148,83,145,113,27,64,184,226,80,
+204,162,197,163,13,195,131,48,7,172,141,230,56,125,159,7,173,106,212,134,185,199,74,14,22,161,16,101,252,216,3,88,
+26,129,62,54,154,144,2,189,141,123,0,64,4,56,100,174,86,190,239,203,235,56,253,122,83,181,33,228,59,79,88,13,
+243,155,57,238,69,37,197,102,36,160,242,38,42,176,75,110,48,202,113,86,86,165,191,4,18,171,206,188,116,43,106,123,
+144,38,44,248,20,185,65,138,6,215,154,103,89,228,146,149,193,226,233,237,183,52,161,15,204,66,57,218,23,189,58,154,
+120,88,111,36,194,222,188,97,44,17,212,172,255,135,123,133,161,197,196,133,169,90,129,110,163,235,118,6,33,140,115,200,
+49,70,244,232,218,237,58,97,163,51,201,121,246,76,172,194,226,213,213,26,197,68,23,49,146,69,230,60,253,185,181,100,
+160,197,131,60,9,42,129,192,153,128,85,192,75,50,139,213,217,89,55,211,157,74,15,17,168,74,79,0,116,64,104,132,
+15,156,101,189,53,202,217,213,118,83,1,218,4,18,75,73,190,64,136,190,221,250,83,251,200,95,188,222,210,220,76,225,
+14,9,81,2,184,110,218,49,185,103,135,47,191,95,243,212,197,216,139,119,190,93,219,175,180,48,198,61,240,200,141,94,
+82,216,106,87,211,46,86,208,211,65,233,40,99,242,185,95,217,69,204,87,4,75,4,232,33,68,170,17,24,128,91,76,
+43,194,4,146,59,131,217,218,251,193,148,123,39,67,246,18,49,240,138,44,76,15,153,90,113,37,240,62,129,146,253,135,
+7,155,86,239,216,64,109,33,196,75,6,52,131,49,4,91,207,44,212,250,48,224,128,78,169,42,116,114,48,233,253,35,
+153,68,118,163,70,93,128,30,137,253,137,248,177,23,232,168,236,170,135,155,216,15,113,26,68,247,41,43,246,163,169,99,
+124,194,25,255,83,71,45,203,21,170,196,149,83,37,90,96,51,35,182,78,248,188,166,82,87,222,191,91,135,177,161,55,
+34,36,63,245,94,222,235,83,217,220,1,188,131,230,94,199,50,95,225,139,123,206,79,235,217,244,10,196,139,106,169,182,
+221,62,12,45,20,203,178,111,97,209,57,143,60,89,210,65,247,157,145,108,215,41,138,126,65,32,219,231,104,73,227,44,
+218,145,48,156,247,5,127,105,15,17,163,220,221,97,122,26,229,237,27,29,31,224,211,121,86,236,26,160,3,119,116,130,
+171,185,19,192,173,153,204,217,158,190,187,108,212,169,27,140,207,197,239,193,32,26,165,220,182,182,122,199,38,239,128,111,
+97,34,120,14,228,213,226,244,196,123,32,116,96,231,202,138,121,151,214,33,111,66,179,243,201,205,140,41,174,146,255,241,
+233,138,166,35,106,179,142,167,62,145,160,20,110,155,120,218,134,41,21,234,118,219,158,53,183,110,60,88,188,161,128,16,
+203,212,167,235,168,7,209,18,214,209,82,71,112,224,31,85,96,157,209,74,114,137,48,38,140,89,79,3,117,48,133,136,
+156,23,179,199,104,232,54,39,158,27,236,104,252,219,18,165,93,45,176,196,204,186,144,217,163,122,129,197,55,213,160,58,
+248,253,91,82,175,111,50,58,70,232,174,152,130,23,157,202,227,130,189,76,181,163,153,175,129,77,176,194,134,226,241,96,
+130,118,49,20,85,163,88,191,241,114,127,170,42,70,148,250,92,211,49,142,153,112,173,215,41,35,90,249,162,244,138,249,
+4,214,111,160,110,157,48,65,222,78,53,146,2,48,41,249,128,255,207,199,205,82,235,49,27,242,187,159,68,185,49,140,
+225,58,249,0,239,16,229,140,254,251,57,243,213,52,120,183,236,214,192,201,192,172,129,159,70,196,251,172,77,202,100,12,
+154,253,127,21,237,148,17,207,45,153,78,106,26,8,168,80,128,33,63,21,99,166,163,211,202,217,1,236,171,104,141,60,
+241,108,98,147,102,211,70,22,10,85,231,224,245,234,217,184,235,252,99,44,83,24,251,108,141,9,25,31,110,27,163,77,
+144,84,168,255,179,196,169,245,229,134,118,243,70,76,248,8,47,127,238,97,161,46,65,21,197,209,2,169,7,83,231,157,
+199,146,142,204,121,80,210,25,58,110,192,182,221,143,28,130,173,7,228,212,243,253,58,42,148,63,31,148,135,232,173,126,
+222,51,122,193,22,166,100,224,41,17,163,123,98,71,38,238,97,223,34,182,67,160,96,132,247,57,115,1,216,211,166,93,
+5,218,48,53,5,8,48,9,162,168,2,134,223,87,143,3,98,7,171,98,101,188,145,33,79,86,56,6,184,3,43,111,
+82,11,170,221,34,102,19,76,166,99,198,101,71,185,239,103,143,215,42,30,0,167,238,117,248,230,112,145,229,103,7,96,
+132,63,158,134,70,48,172,119,192,114,57,209,175,147,138,70,172,15,144,239,101,234,200,75,240,67,103,95,235,137,29,11,
+155,212,140,86,30,109,179,164,215,214,194,115,62,217,208,203,32,132,185,72,46,175,65,208,111,0,74,253,28,37,201,91,
+181,146,206,194,118,43,166,21,81,27,0,191,96,103,71,106,62,154,71,23,166,93,167,125,30,238,191,39,60,2,152,111,
+140,220,115,127,129,242,61,57,104,20,92,126,20,169,173,121,193,15,255,245,185,134,205,131,9,31,154,179,190,12,224,206,
+60,56,51,85,11,228,211,9,195,212,88,193,129,91,184,32,49,236,9,104,152,26,110,127,163,41,203,25,127,153,40,79,
+46,98,230,134,6,235,236,104,123,15,124,40,0,196,88,192,71,17,179,82,87,55,38,162,214,115,53,55,218,78,34,66,
+91,133,152,99,133,255,255,255,255,255,237,72,24,0,248,63,244,34,204,59,137,247,189,90,20,173,145,57,138,0,240,33,
+97,37,100,98,229,153,255,58,219,23,146,172,148,139,55,65,125,247,172,254,135,97,157,75,210,156,101,91,129,114,226,172,
+183,86,63,118,183,143,167,9,153,239,113,150,168,109,180,20,219,202,21,143,161,81,196,23,13,137,71,205,222,235,157,215,
+180,119,203,22,150,28,71,79,71,128,192,30,101,129,86,79,173,192,23,227,191,241,209,75,164,152,89,3,9,73,85,198,
+176,229,73,96,106,83,39,207,137,149,175,58,178,137,97,215,207,175,204,72,74,26,123,34,159,14,201,200,199,43,218,169,
+153,220,64,40,24,246,1,136,142,248,201,73,120,57,54,237,226,102,135,164,215,224,198,202,128,250,122,197,10,188,218,166,
+197,151,186,125,118,253,246,180,112,14,78,160,21,204,100,163,148,179,203,219,6,132,96,102,111,137,190,252,92,97,48,33,
+41,58,245,106,146,183,162,255,67,77,45,250,30,107,133,12,242,244,199,92,8,157,21,7,158,110,194,236,73,192,112,213,
+183,140,180,33,80,131,238,52,137,121,69,145,68,20,18,198,137,208,6,41,229,174,183,47,233,255,138,63,21,12,108,220,
+137,128,147,41,106,100,87,93,70,197,135,11,196,236,98,21,55,67,164,52,52,160,34,249,75,190,128,215,201,51,56,152,
+168,31,83,180,65,235,71,193,107,247,18,54,225,227,67,41,167,98,134,76,25,148,232,213,158,192,235,4,129,249,97,55,
+199,160,49,98,231,5,217,218,238,158,166,164,203,139,1,1,88,66,177,251,150,190,107,255,4,103,179,226,255,241,201,221,
+196,74,103,147,139,148,97,15,153,206,130,38,185,123,162,157,90,177,139,153,83,104,100,152,78,81,112,87,202,160,185,113,
+134,126,200,213,96,84,184,192,18,12,96,219,100,228,76,138,184,56,158,97,155,82,65,251,146,243,75,59,71,3,140,30,
+142,145,147,67,155,244,75,51,97,114,63,65,194,157,110,101,152,212,109,220,53,187,50,227,194,137,96,139,166,122,75,179,
+149,132,31,233,54,1,77,251,255,140,234,181,216,132,189,254,144,84,144,139,68,163,244,149,64,191,108,51,177,208,167,207,
+142,91,245,214,65,72,245,119,47,182,209,138,228,41,250,143,121,178,173,234,181,87,183,114,199,176,143,228,5,149,75,234,
+34,35,214,54,112,215,30,127,59,222,161,187,124,115,236,214,81,99,241,184,51,137,108,3,106,79,63,163,36,74,142,12,
+108,156,88,61,241,229,47,120,10,50,255,43,153,153,240,201,58,242,230,133,145,117,130,19,203,219,52,178,191,112,109,44,
+46,81,63,127,16,66,112,59,26,202,71,191,167,73,16,39,122,193,150,3,29,158,72,13,159,227,73,118,255,2,68,246,
+255,219,131,250,239,135,189,62,84,53,210,251,101,247,163,237,226,196,86,210,50,100,6,243,231,173,58,171,143,144,182,17,
+17,184,167,19,83,134,43,146,220,28,245,151,121,121,207,26,173,28,207,120,147,123,230,80,38,52,151,140,206,224,60,35,
+232,26,140,61,189,8,140,70,26,181,194,243,128,224,159,154,108,56,8,76,200,169,102,143,46,33,12,99,151,235,37,232,
+12,240,166,131,231,196,93,232,155,17,131,243,213,82,29,93,144,84,83,10,255,247,255,255,255,255,255,255,255,255,255,255,
+255,255,255,255,255,255,255,255,255,253,95,183,223,147,20,203,75,253,251,29,235,78,12,236,196,115,218,214,34,94,87,204,
+235,227,244,73,1,148,31,35,182,236,248,233,50,133,190,94,44,103,247,140,37,197,86,231,18,136,31,87,147,75,113,196,
+35,76,136,174,44,65,238,250,33,153,187,149,6,206,125,187,249,189,181,242,225,12,146,3,47,137,254,116,101,221,50,243,
+155,46,100,39,44,145,197,251,248,35,20,35,50,51,58,250,84,243,94,192,222,111,210,149,106,173,56,161,59,90,209,219,
+167,104,47,170,193,5,27,177,145,136,65,229,115,76,103,185,196,195,16,36,37,0,239,109,209,43,22,40,248,143,159,216,
+154,16,213,244,26,183,80,77,138,217,108,190,138,201,83,16,173,100,62,254,156,194,21,122,245,224,207,0,132,82,23,245,
+167,213,207,130,212,44,24,152,219,178,131,186,10,98,237,108,226,180,72,171,41,142,212,175,228,0,219,194,118,169,94,34,
+30,78,227,247,179,136,233,132,149,184,118,140,151,160,165,227,81,21,236,129,77,219,188,182,213,71,69,105,169,47,127,46,
+251,39,34,149,14,20,174,118,54,94,163,212,138,201,119,91,35,69,94,173,49,161,106,155,37,195,100,220,123,212,130,201,
+57,247,65,205,121,122,252,69,53,191,198,168,137,93,251,15,60,166,5,79,70,63,72,165,186,40,179,157,182,202,236,233,
+28,64,240,15,89,105,81,65,154,101,185,13,238,122,143,180,165,35,71,53,96,243,226,71,169,81,86,207,167,211,198,211,
+78,72,38,159,139,251,150,215,170,192,120,10,113,145,20,7,232,121,222,62,72,108,166,44,19,5,188,132,19,129,137,0,
+248,229,196,190,175,92,177,145,10,184,88,223,56,181,68,131,20,145,102,175,4,121,54,231,192,248,179,43,172,129,29,144,
+200,35,97,252,12,234,160,41,10,0,218,200,40,191,182,27,80,110,64,127,250,90,101,120,71,39,98,252,244,24,114,111,
+118,179,89,208,174,232,147,40,182,148,4,210,5,134,130,110,18,179,61,161,158,237,213,171,219,40,117,122,4,216,254,12,
+8,114,220,159,178,168,182,151,186,62,216,61,207,139,131,28,85,57,151,29,103,9,218,29,8,79,158,185,95,203,169,73,
+207,149,229,210,1,70,192,78,228,102,38,138,56,120,214,186,5,115,12,231,92,64,173,64,15,113,119,208,223,149,55,114,
+116,240,186,208,105,141,218,202,3,191,155,37,125,250,175,36,207,227,219,165,60,125,106,63,119,167,117,168,8,180,30,45,
+167,123,83,145,205,94,60,152,81,17,131,223,224,76,226,107,45,2,247,89,160,158,143,227,153,51,89,43,97,186,195,115,
+11,36,82,128,122,44,198,135,36,29,174,71,248,252,137,178,136,34,238,12,84,20,31,168,27,131,224,231,169,160,143,30,
+166,203,208,88,151,126,243,156,187,2,214,225,139,206,104,109,236,250,179,225,69,174,111,82,206,34,236,55,76,36,79,84,
+198,153,136,68,93,205,180,212,16,249,62,56,225,202,18,196,71,233,167,164,229,19,238,87,86,40,190,132,188,121,130,59,
+113,106,59,83,219,34,2,188,151,109,226,138,19,133,89,43,60,253,195,234,145,227,223,146,34,40,39,119,50,167,199,33,
+158,185,205,28,196,155,118,40,169,215,212,14,101,70,182,40,183,152,206,144,143,253,55,132,84,3,21,79,49,156,46,68,
+61,90,56,39,159,202,239,240,143,152,38,128,27,117,231,63,98,122,123,35,5,243,233,207,110,139,48,122,178,183,202,167,
+56,225,247,77,220,50,65,34,215,97,250,184,140,137,168,198,209,196,215,97,28,90,50,229,46,200,95,59,125,199,188,118,
+223,49,235,38,80,91,77,170,203,195,222,210,151,107,124,182,170,83,76,72,248,56,16,249,218,54,180,79,168,187,187,146,
+209,90,254,135,158,119,205,194,193,82,111,224,227,160,234,129,99,52,89,176,209,226,222,162,253,90,153,253,89,47,32,110,
+250,35,182,147,95,245,214,86,49,95,169,101,104,24,57,251,43,52,140,161,37,214,68,135,225,61,230,143,57,51,26,177,
+62,93,50,153,30,82,129,67,63,97,116,222,190,212,32,46,244,123,6,26,254,70,220,154,183,189,43,132,252,19,139,137,
+36,159,114,147,149,225,51,126,206,36,247,192,80,31,112,243,240,194,97,33,219,202,186,97,206,150,182,68,19,33,113,12,
+219,99,232,119,222,244,61,76,29,55,31,236,40,36,200,223,117,152,67,214,205,6,88,59,181,214,238,179,255,175,105,253,
+219,91,36,66,43,123,140,194,142,166,224,197,245,149,167,66,109,52,28,219,24,15,140,1,47,160,181,148,238,19,225,183,
+125,86,88,128,158,187,129,1,143,186,195,153,186,191,235,37,25,224,234,142,34,2,251,234,25,219,97,106,163,77,201,137,
+104,110,147,169,115,47,139,227,123,234,69,1,119,135,21,40,0,236,104,139,44,217,188,106,62,139,193,219,12,50,231,171,
+160,101,232,240,21,61,45,235,12,126,108,191,134,72,243,198,21,209,26,187,99,136,112,146,232,84,162,204,116,177,144,55,
+126,195,193,52,61,70,73,102,108,159,45,134,164,136,212,240,113,235,37,219,134,177,116,54,6,126,151,151,63,137,113,127,
+173,163,97,175,252,21,158,46,75,77,37,82,182,119,103,250,49,86,139,166,224,86,110,64,55,30,26,65,105,205,80,254,
+194,61,81,44,45,201,33,37,26,165,1,80,120,176,156,93,109,80,83,107,250,110,61,134,201,185,36,239,163,109,181,57,
+52,240,9,255,246,39,93,247,237,46,95,18,238,171,170,35,177,167,1,175,193,165,177,61,208,85,9,188,119,235,2,54,
+70,66,243,135,55,161,227,125,250,40,35,66,170,186,111,193,101,38,194,31,223,156,136,39,211,181,54,234,232,166,59,224,
+150,63,191,242,142,174,244,175,192,173,59,140,62,95,0,191,224,74,139,17,227,244,118,212,234,40,251,83,88,86,155,139,
+45,13,153,141,58,66,109,90,255,85,35,151,165,76,71,68,63,109,252,211,90,198,236,104,173,75,65,120,241,150,175,25,
+211,249,218,185,117,107,26,168,246,13,95,162,241,244,250,57,159,139,78,39,34,28,72,134,208,247,84,228,199,126,75,239,
+156,191,20,1,111,157,36,4,211,44,137,65,65,176,137,37,154,176,233,77,253,194,252,158,182,44,82,206,214,239,118,61,
+64,55,57,32,87,119,205,236,107,35,81,57,90,92,108,0,186,200,198,172,131,1,89,40,82,222,127,115,14,11,204,10,
+146,104,100,244,145,3,175,40,199,21,146,118,178,92,87,203,246,61,143,239,181,82,140,68,80,61,78,95,47,191,8,67,
+91,211,141,58,153,16,217,146,167,219,105,14,103,0,166,92,154,184,183,63,16,53,85,175,210,113,71,114,19,9,202,85,
+17,3,74,160,181,213,90,249,73,46,93,23,106,121,156,214,177,65,194,224,98,190,195,180,145,184,8,19,61,100,216,179,
+74,20,56,101,246,102,91,89,177,188,117,201,44,70,238,215,69,107,222,19,247,79,82,205,255,182,114,106,148,216,164,131,
+221,29,100,68,146,226,87,148,146,251,185,115,120,32,47,249,67,5,237,204,238,50,96,202,28,22,222,145,101,71,179,162,
+150,122,216,199,199,199,32,201,91,13,178,50,183,206,20,2,13,161,86,52,233,105,221,188,163,236,218,190,143,73,142,62,
+138,136,192,245,170,199,47,7,168,238,120,229,46,211,125,165,35,117,134,152,27,160,194,220,116,174,245,75,241,55,173,246,
+115,63,118,49,16,195,169,229,147,117,242,100,50,37,119,147,226,81,93,110,57,152,217,7,35,12,236,74,92,227,154,254,
+206,52,197,12,25,205,69,56,197,244,142,110,18,80,94,81,202,124,100,172,3,240,92,96,147,11,54,74,126,188,151,166,
+204,31,239,164,23,39,223,11,138,25,150,72,210,218,252,59,48,6,171,94,67,127,97,123,4,163,107,151,1,140,218,152,
+225,162,174,177,222,233,207,24,123,249,79,99,54,62,75,69,129,122,5,27,213,12,250,195,138,140,128,112,101,148,28,167,
+176,224,170,39,209,155,218,145,9,61,186,248,112,245,239,111,232,198,107,95,82,251,93,161,197,39,18,1,193,212,24,132,
+167,221,248,48,28,8,174,63,63,79,56,138,144,55,56,76,49,96,81,234,208,68,121,55,35,121,28,141,71,70,176,54,
+239,231,46,226,87,141,74,183,157,183,205,75,121,11,103,218,210,224,138,25,136,244,95,100,231,79,39,23,7,203,69,166,
+175,157,61,169,71,252,17,21,129,200,19,150,204,2,54,84,12,18,119,158,225,100,35,126,139,93,86,218,24,28,120,147,
+244,115,79,190,104,150,63,37,188,173,11,182,25,89,188,23,78,142,82,217,32,153,196,5,1,185,69,50,10,42,233,62,
+99,189,134,211,245,160,65,57,235,138,5,96,198,253,60,42,191,150,58,235,83,180,228,24,31,245,51,63,85,121,5,78,
+187,4,6,59,248,167,172,221,213,37,155,247,1,217,196,94,14,60,127,69,136,30,227,241,192,204,58,118,176,80,12,147,
+230,179,190,20,114,194,5,156,227,144,119,134,96,64,252,67,233,223,223,189,187,240,28,75,38,228,19,115,97,45,5,161,
+33,85,218,116,245,217,204,137,91,104,239,71,183,177,121,29,149,30,242,241,2,206,159,44,60,226,93,185,25,69,116,157,
+73,29,166,68,138,112,83,164,84,244,129,170,145,63,88,170,183,67,202,71,24,212,215,118,183,129,136,170,53,155,227,222,
+83,80,130,44,153,162,190,35,145,205,185,7,248,27,161,36,190,193,173,115,235,135,130,109,119,187,17,54,85,46,116,137,
+59,99,238,236,234,192,90,92,119,113,184,194,2,74,200,44,29,11,199,128,83,246,12,217,114,20,184,177,122,205,242,174,
+77,59,13,171,23,211,216,106,100,239,123,216,73,223,149,231,186,186,13,140,128,102,220,42,101,118,35,249,60,253,139,106,
+240,150,17,81,124,244,96,122,57,61,150,244,254,77,194,182,36,48,216,249,89,214,117,169,224,152,83,205,227,223,250,215,
+91,31,116,132,43,177,192,139,252,128,201,21,147,163,223,249,75,181,80,35,81,100,123,72,35,50,172,233,177,45,58,112,
+89,80,95,157,63,173,46,74,69,70,18,127,149,162,129,45,124,240,250,188,231,36,0,21,248,197,63,98,225,62,75,187,
+173,106,41,157,169,19,175,221,143,144,120,214,67,62,174,40,6,105,153,150,104,238,233,202,8,66,63,104,165,55,120,233,
+211,83,89,106,208,237,187,178,77,34,28,127,147,194,171,196,57,190,188,92,160,64,96,191,21,109,87,42,149,254,210,206,
+29,246,29,66,123,113,206,173,194,101,137,29,6,127,202,190,43,183,187,61,174,103,77,157,218,80,181,19,173,104,251,64,
+108,76,197,120,100,70,79,240,39,89,195,180,208,56,123,180,91,149,95,162,181,127,60,32,87,125,242,153,43,53,79,21,
+60,240,62,166,8,206,246,119,145,0,59,69,48,12,78,46,83,228,248,255,246,217,241,82,160,62,107,227,42,117,30,92,
+64,167,140,2,194,44,129,113,18,121,3,12,31,237,7,46,128,78,228,184,105,105,212,102,143,234,83,171,46,21,204,33,
+171,168,175,33,53,188,214,79,171,116,184,216,154,70,198,84,59,94,245,43,107,183,198,229,70,210,12,231,33,103,167,136,
+35,40,105,130,45,6,18,33,31,6,118,88,110,56,5,132,188,121,100,204,137,110,20,203,43,20,112,242,105,108,96,91,
+196,180,242,147,232,68,95,29,15,126,134,248,67,77,46,163,35,232,67,109,248,205,98,141,157,156,230,50,251,164,208,245,
+83,158,221,184,28,59,5,181,101,172,254,246,54,44,175,140,140,50,105,0,184,138,166,126,199,124,45,106,95,63,177,195,
+72,46,93,66,133,79,16,41,237,62,166,141,17,24,95,223,72,218,68,231,89,198,8,47,230,185,97,22,119,19,84,48,
+179,176,234,52,177,253,218,190,55,155,151,81,34,237,50,67,52,42,67,179,151,233,78,100,144,16,136,114,48,67,226,195,
+80,254,212,86,99,115,30,245,67,10,105,144,71,147,239,63,201,171,121,180,133,152,173,141,2,86,218,63,30,139,77,205,
+126,9,234,186,103,188,47,224,167,154,235,21,1,120,99,208,47,68,163,223,176,82,254,205,135,113,99,68,65,14,30,243,
+227,138,243,187,135,71,217,19,96,136,227,148,111,41,5,150,7,17,43,222,122,244,85,6,241,177,66,69,51,125,213,146,
+205,254,220,191,32,221,40,150,176,91,122,179,122,232,213,84,128,164,133,18,155,213,186,128,210,249,160,96,85,19,42,238,
+196,78,106,82,185,250,6,110,226,179,44,144,220,131,173,100,241,114,196,239,108,20,76,74,115,155,196,80,232,50,175,95,
+170,76,242,69,37,177,215,174,28,10,125,198,23,180,76,59,252,128,66,106,153,212,70,15,126,82,4,16,128,50,246,23,
+178,170,210,111,154,251,95,141,32,2,82,10,106,52,77,50,221,210,188,67,89,166,206,122,6,20,170,66,243,134,80,28,
+17,123,33,8,218,178,127,208,135,128,254,161,112,117,99,179,81,115,208,76,121,48,188,244,69,155,37,172,177,170,49,109,
+153,72,146,148,216,212,18,175,84,212,168,133,39,140,168,23,78,217,119,246,121,224,234,181,214,87,13,120,244,218,148,121,
+167,86,191,16,124,70,43,19,167,38,237,138,198,13,255,247,255,254,82,150,255,2,185,61,40,109,171,72,253,51,204,73,
+240,19,46,162,184,60,62,52,52,128,158,223,112,6,208,241,34,32,221,172,162,239,149,226,147,8,163,204,55,129,255,164,
+170,6,207,70,235,114,250,172,191,155,197,69,156,160,184,244,101,13,193,218,62,96,57,211,200,134,176,163,197,94,213,148,
+204,197,209,170,65,184,27,86,107,101,240,72,176,165,160,76,199,210,195,20,238,170,104,5,126,208,57,33,60,26,114,30,
+122,58,237,35,8,17,27,131,47,118,167,240,148,146,189,150,204,206,31,182,164,208,2,83,58,224,185,101,245,242,33,46,
+235,20,203,220,249,28,177,172,202,91,28,81,110,173,239,170,201,38,120,162,166,44,221,83,79,125,184,33,107,53,63,82,
+99,158,48,136,221,145,152,61,43,10,51,75,42,60,56,99,55,248,239,69,37,205,135,192,129,200,212,92,249,195,98,238,
+87,52,32,17,35,152,22,177,56,203,209,201,65,178,178,229,156,23,12,42,224,10,169,44,215,108,180,0,50,193,93,9,
+163,213,195,64,222,197,87,148,218,48,47,144,225,166,61,52,181,9,224,196,184,39,63,43,217,108,158,158,246,164,252,231,
+62,96,148,61,99,140,3,171,166,42,202,163,58,176,230,237,146,151,56,44,122,190,116,95,94,153,206,183,242,249,107,5,
+29,242,198,10,117,118,154,86,224,92,179,20,7,234,110,113,142,174,85,49,24,217,219,91,241,231,156,145,136,92,30,109,
+66,110,253,188,57,125,93,26,135,63,49,81,213,100,207,255,6,80,194,183,151,239,183,221,194,218,192,161,205,37,236,180,
+83,242,121,75,40,231,222,113,213,114,249,19,70,62,44,91,91,165,180,238,125,126,62,201,88,149,255,18,85,76,215,172,
+211,125,180,86,142,90,229,165,66,149,86,178,1,255,46,62,145,29,175,125,6,162,93,208,77,136,98,41,246,205,146,243,
+203,77,217,9,199,195,58,50,66,1,201,28,213,236,43,118,235,61,161,194,224,79,51,151,163,155,58,10,135,36,207,185,
+85,71,147,103,19,214,40,233,33,80,106,253,203,102,201,152,212,229,255,10,62,69,193,193,32,136,117,161,169,227,207,168,
+133,65,147,26,71,45,154,226,226,141,94,228,68,127,203,95,122,86,28,9,63,243,185,37,3,34,79,150,123,57,51,215,
+86,208,155,27,118,24,183,188,159,14,207,14,241,198,10,86,166,29,43,203,28,168,185,64,105,35,244,129,178,103,111,253,
+28,137,59,249,45,178,12,1,118,142,188,39,35,226,12,167,197,187,213,8,82,66,215,76,174,65,84,42,236,191,238,218,
+83,223,237,236,79,158,1,104,214,241,238,15,149,192,87,71,134,61,178,255,36,203,153,85,23,27,244,20,156,216,203,80,
+235,147,25,114,99,11,64,153,211,50,136,209,136,228,64,162,239,226,109,128,118,14,226,112,14,111,13,154,149,66,87,215,
+43,79,44,153,129,243,123,145,175,9,91,243,67,35,79,94,247,71,170,189,34,57,62,111,152,227,58,184,166,171,127,105,
+55,97,147,212,235,150,177,56,200,133,166,163,9,69,8,129,166,4,223,40,242,198,37,9,225,110,27,149,76,128,105,26,
+164,99,79,62,43,122,193,157,244,20,124,135,143,243,125,113,47,106,223,247,112,13,2,39,122,46,237,18,38,194,52,246,
+215,149,12,86,53,245,60,106,121,34,167,129,133,57,115,55,79,250,232,133,152,99,133,114,181,63,226,33,118,26,68,6,
+179,12,234,238,115,177,216,147,205,61,222,180,27,9,211,166,231,171,134,38,199,179,112,117,218,92,236,164,84,45,181,176,
+22,243,123,172,98,2,47,4,148,92,156,156,107,102,146,71,97,93,107,93,243,53,58,91,20,138,225,182,129,164,23,92,
+203,41,113,41,249,200,42,22,51,219,151,159,79,98,11,13,96,176,201,247,215,30,138,2,48,122,243,218,99,203,184,113,
+196,128,45,161,6,94,138,118,122,171,187,225,203,230,174,176,206,77,207,128,105,97,70,152,118,26,57,47,229,11,212,187,
+118,16,0,71,181,127,64,79,81,248,75,92,196,85,86,38,106,123,219,96,11,35,221,227,48,32,220,99,96,9,97,37,
+2,239,29,1,202,61,181,216,159,168,188,174,158,137,178,174,185,179,10,111,15,76,27,102,120,217,15,140,74,133,247,154,
+184,166,166,100,155,242,109,51,68,255,90,11,24,198,236,216,56,220,200,161,182,241,171,216,239,16,20,177,159,241,109,202,
+89,125,184,107,181,179,46,68,139,124,95,143,132,44,9,91,6,137,251,95,184,101,69,57,50,70,87,55,219,73,63,223,
+121,147,58,132,228,214,242,113,206,232,121,49,83,202,243,144,31,42,20,181,98,33,23,224,92,222,107,168,122,218,97,118,
+62,244,175,147,58,203,53,114,95,207,56,197,140,158,223,238,133,127,187,71,48,105,110,173,154,46,255,255,71,218,199,124,
+66,252,109,143,114,42,180,141,142,228,74,123,69,158,27,119,222,253,231,53,11,8,80,61,31,195,81,102,58,188,124,17,
+134,5,117,248,153,66,252,254,167,108,229,33,16,77,161,210,241,198,255,255,255,255,242,65,29,133,217,68,85,196,79,103,
+55,80,142,177,40,185,4,182,82,217,145,232,55,71,31,179,125,2,86,217,110,203,55,248,116,105,32,38,222,21,66,1,
+98,31,23,127,5,33,91,96,215,95,126,228,226,34,174,252,9,255,245,183,90,196,241,248,244,231,102,40,56,234,71,197,
+174,254,117,207,184,156,114,149,237,32,79,17,250,134,137,200,171,50,241,185,11,128,178,198,250,201,226,159,12,211,0,128,
+123,58,200,171,47,58,1,139,102,40,197,203,90,4,48,105,142,246,172,152,211,18,35,220,245,78,207,82,180,38,202,24,
+1,31,139,126,82,34,28,72,226,88,104,106,230,132,66,233,30,143,21,66,208,78,44,99,70,158,154,213,43,116,33,52,
+67,62,206,88,225,126,99,117,1,250,85,17,178,10,205,254,155,149,232,164,254,24,193,66,176,35,1,213,78,3,107,63,
+199,120,85,6,89,152,118,152,166,119,99,88,125,68,235,236,250,177,246,11,220,164,62,82,111,48,113,176,60,121,36,218,
+132,167,112,176,31,71,44,110,9,177,81,180,188,138,225,29,126,58,247,119,255,151,188,192,188,91,174,215,228,68,8,200,
+71,42,221,106,202,188,211,78,117,211,51,246,236,112,251,18,1,146,93,217,122,181,174,72,39,74,230,206,18,246,64,115,
+182,35,239,105,30,170,176,58,74,254,104,255,103,30,78,150,200,92,41,11,236,10,64,237,114,138,241,149,147,32,113,233,
+160,180,27,255,172,83,93,110,222,147,149,137,229,49,47,172,189,14,125,151,2,12,77,245,38,220,230,194,78,247,70,190,
+61,52,45,244,149,165,247,19,182,115,110,7,205,4,4,27,95,129,206,66,130,246,88,107,154,41,33,142,194,69,37,6,
+78,170,77,83,156,117,155,18,197,189,190,91,44,35,144,102,91,63,79,95,175,204,87,249,10,249,108,131,114,162,170,111,
+56,33,220,238,255,47,234,2,227,57,33,92,47,123,56,80,89,88,205,77,252,174,189,253,152,241,68,245,51,18,188,133,
+42,18,18,42,222,111,141,156,36,14,211,157,3,37,58,182,181,66,115,158,67,84,13,41,99,48,82,232,49,87,254,88,
+45,229,62,183,200,236,240,119,179,72,172,232,137,113,106,158,149,189,56,177,46,32,83,192,125,191,210,134,222,60,183,117,
+226,25,164,117,111,57,187,138,243,13,123,147,152,218,177,103,226,253,185,83,112,240,59,189,249,236,81,179,225,249,56,109,
+186,24,4,129,139,103,162,251,6,1,234,113,9,156,112,220,189,45,150,198,255,58,196,42,9,68,226,159,29,240,75,140,
+109,19,212,32,24,118,114,196,101,233,66,142,122,154,173,82,206,184,136,80,141,6,224,249,211,164,88,97,37,141,128,82,
+127,169,197,157,33,212,1,45,114,41,105,78,222,202,243,238,9,245,231,110,117,33,9,32,45,74,213,214,66,49,218,251,
+209,63,130,136,222,169,122,165,210,14,199,208,29,72,209,102,242,51,198,123,199,126,33,202,145,253,49,32,64,199,2,202,
+145,183,206,201,109,112,255,235,102,156,254,112,227,224,129,171,8,30,248,94,218,160,25,17,30,132,227,105,93,129,243,144,
+105,32,127,216,198,238,50,245,225,123,113,35,87,83,244,69,172,124,94,208,206,39,136,149,236,214,225,46,125,245,78,131,
+193,67,167,123,126,66,229,219,78,162,138,54,212,122,126,224,107,75,198,99,115,86,212,18,189,136,132,53,114,101,46,59,
+109,95,199,213,202,90,140,17,147,154,178,231,156,115,219,59,165,79,227,235,55,165,70,7,126,147,91,152,76,142,11,213,
+89,82,51,147,5,57,180,141,162,210,156,59,49,184,200,4,138,234,227,0,161,198,232,161,193,44,5,31,229,101,53,132,
+103,30,110,131,79,53,242,201,204,52,64,111,228,56,251,199,81,202,166,156,43,157,63,84,69,250,240,233,244,33,3,179,
+58,117,73,249,109,24,62,251,63,225,79,57,65,130,138,88,247,108,180,104,39,26,214,4,89,229,5,182,194,94,95,211,
+23,33,6,172,75,139,184,172,246,134,135,32,216,115,135,12,184,96,39,130,70,60,116,200,47,150,8,46,65,107,74,71,
+77,202,6,88,107,169,212,220,127,190,62,215,161,14,242,221,137,8,205,12,126,54,1,223,164,74,140,99,228,109,68,218,
+167,96,110,121,16,227,64,50,134,218,89,85,143,28,126,189,161,12,215,146,109,98,170,192,126,173,177,253,138,147,135,220,
+62,248,9,122,215,106,39,245,223,64,185,51,60,99,8,144,221,205,149,235,66,236,43,60,189,57,201,73,51,85,204,84,
+220,4,163,46,114,29,27,212,237,179,128,137,28,239,22,140,37,44,129,93,156,152,254,90,129,36,234,125,75,64,141,94,
+51,87,110,117,215,166,70,11,53,115,31,58,19,254,21,205,158,0,198,146,179,64,165,97,78,226,131,114,128,146,81,250,
+255,194,211,154,139,146,58,61,212,247,63,211,12,254,148,238,76,236,179,79,45,123,33,65,202,200,213,82,38,165,116,92,
+40,27,7,143,199,117,43,146,118,60,213,134,24,245,3,98,102,245,115,157,148,211,69,50,183,181,28,209,58,40,39,147,
+53,221,249,181,7,162,94,134,146,122,222,27,165,52,188,174,6,140,42,151,192,146,36,55,137,58,117,153,182,224,21,201,
+170,182,113,207,159,137,82,247,203,226,28,63,58,19,179,85,215,202,148,199,37,132,76,17,115,211,246,168,46,70,213,45,
+151,48,90,233,245,251,68,59,129,60,231,61,109,246,148,161,193,181,223,102,86,92,190,222,46,218,216,52,85,42,75,207,
+3,180,229,28,94,163,234,107,237,240,90,19,19,7,11,160,127,145,121,66,117,118,45,82,226,55,47,210,240,195,167,92,
+255,221,87,154,186,79,13,16,27,109,206,94,195,205,222,196,229,53,145,237,174,219,150,25,29,255,177,13,253,160,130,103,
+69,247,7,229,16,150,116,33,131,190,116,170,63,240,233,138,5,24,114,168,72,141,19,73,106,240,147,147,64,218,58,44,
+91,3,243,145,11,175,39,150,220,190,147,13,160,20,250,107,77,90,18,176,57,180,44,211,116,190,148,182,96,0,149,252,
+149,68,6,142,196,153,112,107,24,31,221,20,53,194,82,211,67,80,92,108,54,17,16,228,133,13,95,100,25,23,233,246,
+202,56,149,132,214,24,232,218,247,125,235,220,0,147,250,213,49,132,45,165,99,60,232,14,84,42,32,28,116,99,177,59,
+188,187,20,55,37,97,1,11,159,4,182,138,25,22,91,33,2,248,248,92,120,100,209,0,48,195,178,201,197,204,144,232,
+72,125,206,123,6,205,114,223,136,246,228,54,156,157,115,140,99,59,89,139,175,14,23,36,120,66,255,162,210,63,67,146,
+239,53,31,79,160,93,119,177,61,46,89,245,211,249,94,98,253,146,65,64,213,207,30,250,99,115,167,141,72,70,202,43,
+215,105,96,6,61,186,146,133,247,95,198,226,231,14,39,49,183,89,111,11,7,171,131,118,157,93,239,209,62,167,111,62,
+83,1,61,4,226,11,240,154,206,63,185,184,108,70,111,228,16,137,183,102,144,214,149,86,196,181,131,123,37,196,34,64,
+181,208,146,96,63,129,219,238,196,31,253,181,29,172,57,121,49,255,41,18,228,187,112,37,138,219,104,18,126,102,12,145,
+212,146,193,124,6,96,173,176,119,235,182,31,198,142,253,170,69,22,181,47,207,126,17,249,142,174,76,247,228,42,253,221,
+3,116,154,205,170,222,80,169,2,59,243,225,117,133,217,247,167,62,240,20,197,64,214,184,3,64,25,46,59,133,204,213,
+81,147,133,199,59,188,241,177,128,234,151,198,214,6,59,56,87,140,164,140,197,93,171,114,22,49,235,239,196,37,16,76,
+2,243,22,100,78,227,183,144,183,48,208,229,164,136,22,237,237,19,206,115,55,139,37,198,237,76,202,8,105,82,176,160,
+217,66,180,97,27,221,160,90,25,0,53,47,95,36,207,35,179,138,201,108,16,164,58,12,255,146,228,62,97,224,51,27,
+45,108,235,81,43,66,41,193,35,204,32,109,165,229,243,9,145,107,17,38,183,187,159,230,203,41,198,17,185,187,215,230,
+61,166,227,114,234,203,14,12,188,78,12,113,222,247,150,142,38,126,132,246,60,162,28,120,59,167,111,249,250,238,167,16,
+165,163,166,41,65,237,165,65,151,130,24,211,231,52,88,13,197,102,27,56,250,192,30,232,166,239,20,224,94,34,220,143,
+153,204,168,73,138,241,115,75,35,23,43,224,1,242,194,202,247,68,190,126,143,25,103,30,144,66,53,148,229,231,146,91,
+167,42,89,143,143,112,66,221,195,73,3,111,248,249,238,237,148,123,30,77,74,57,91,237,37,85,151,59,45,136,128,197,
+107,213,203,22,20,96,16,101,185,49,51,80,148,46,46,36,79,203,179,194,214,170,242,115,225,206,62,135,193,163,112,107,
+136,39,102,31,103,134,81,57,112,195,102,239,204,146,194,146,148,114,73,158,80,87,4,207,114,111,34,173,58,195,47,41,
+87,197,26,62,22,156,174,196,185,114,13,161,100,202,22,250,156,255,98,88,196,14,32,169,234,178,26,172,41,155,79,29,
+32,118,239,245,217,50,155,220,12,96,40,248,137,242,64,47,3,248,6,150,158,199,253,119,120,202,26,0,11,253,31,132,
+41,233,240,33,15,151,140,213,41,198,112,156,160,92,6,235,121,28,62,146,96,130,148,42,213,84,52,81,92,241,62,52,
+199,97,16,144,15,167,186,179,22,169,20,71,144,191,252,15,92,167,17,255,220,113,236,158,87,158,46,159,144,36,214,66,
+96,158,192,191,0,201,223,240,1,123,202,135,154,11,197,140,60,223,41,113,208,119,14,62,225,163,197,218,109,245,125,148,
+162,168,200,90,175,158,42,244,37,33,184,72,77,187,109,237,223,169,168,102,219,241,90,3,150,80,146,66,232,106,238,6,
+186,166,42,243,7,252,65,211,81,11,2,164,140,135,22,165,244,28,33,191,96,115,39,7,139,52,220,121,9,54,175,43,
+27,28,183,81,182,48,33,131,116,191,35,62,197,16,32,51,10,197,221,152,237,217,5,77,102,44,74,95,77,11,3,215,
+140,176,79,189,89,241,120,197,18,133,174,160,178,138,208,31,111,31,53,214,94,108,181,200,1,156,134,87,92,144,157,165,
+141,253,162,35,41,51,137,20,13,135,77,113,128,156,54,254,230,39,153,86,124,97,234,182,241,67,18,244,1,86,194,233,
+170,9,80,120,60,31,178,2,162,168,19,189,150,195,201,132,179,181,219,100,159,117,245,119,23,137,193,160,216,33,232,173,
+182,162,191,15,132,41,56,185,207,255,241,252,22,199,77,79,28,197,250,248,168,91,57,166,137,79,184,163,248,48,195,98,
+41,255,229,131,99,215,236,212,33,146,58,119,103,39,241,73,86,177,29,143,64,50,154,129,55,231,180,249,218,69,219,255,
+4,119,14,230,231,195,196,143,78,13,247,60,4,60,152,228,182,114,232,51,16,132,162,91,97,246,94,24,13,58,199,151,
+212,26,86,239,4,104,7,247,170,40,87,23,224,0,244,52,165,18,170,162,15,203,6,167,173,173,103,232,8,122,231,252,
+83,248,241,94,63,120,78,210,125,31,12,70,36,5,92,152,220,33,208,148,125,10,255,246,246,151,200,211,59,47,54,126,
+113,245,221,176,76,94,16,197,243,177,236,155,223,130,56,19,198,22,50,163,212,98,211,101,254,127,124,214,72,64,69,231,
+207,114,125,0,184,80,33,142,176,245,197,101,169,117,82,66,207,92,1,62,78,219,176,204,94,27,116,36,152,75,213,5,
+17,162,50,218,197,136,36,5,52,21,190,16,138,102,78,230,105,4,131,96,190,194,52,115,19,5,238,41,137,249,71,142,
+97,54,15,202,124,156,106,190,199,100,184,51,199,11,129,191,162,139,255,21,213,15,219,224,190,56,104,195,110,227,251,239,
+90,218,250,233,180,179,172,205,108,250,25,152,89,74,119,90,232,63,98,121,111,214,132,44,123,147,93,227,4,208,96,251,
+197,59,21,211,44,46,193,60,38,157,19,65,7,143,249,138,195,45,51,214,185,124,129,127,227,142,217,170,204,3,192,90,
+112,58,105,41,92,5,115,217,234,217,102,55,73,219,228,54,58,50,193,19,138,100,4,184,193,163,26,204,91,220,147,137,
+182,83,6,59,47,42,251,196,107,169,204,162,149,78,115,83,11,200,92,254,166,6,250,217,246,67,54,210,43,235,209,215,
+144,181,191,67,121,104,203,98,91,229,128,239,26,247,63,153,229,117,7,244,10,215,135,64,210,216,182,82,199,137,60,165,
+5,124,3,197,118,185,15,117,19,175,234,150,154,125,191,16,63,107,46,165,30,52,29,102,213,236,107,191,218,151,234,70,
+46,25,150,131,50,121,112,200,174,53,58,130,233,227,148,50,9,67,168,53,237,161,157,164,189,221,180,65,204,6,121,50,
+183,142,194,54,14,173,41,136,108,58,206,2,18,160,26,73,27,234,229,32,95,216,35,55,54,4,78,159,30,209,224,211,
+152,156,1,139,84,27,193,103,36,182,74,176,100,14,241,108,183,57,135,171,104,78,176,204,202,97,16,250,163,116,34,30,
+235,0,167,12,7,231,211,224,115,34,88,63,121,55,154,11,192,212,67,46,53,206,183,251,12,223,162,215,53,185,34,61,
+29,23,174,204,211,182,142,186,186,198,148,60,192,95,255,107,210,222,163,168,230,57,142,25,88,160,230,241,121,253,181,24,
+2,129,244,218,56,139,138,124,74,98,32,161,100,48,74,251,164,129,73,246,216,19,211,157,102,76,70,146,197,150,227,191,
+79,146,19,70,239,254,69,148,132,212,98,93,227,181,173,92,8,113,164,69,203,194,17,30,38,53,10,105,186,56,224,182,
+245,216,5,90,160,120,255,18,142,89,103,243,222,193,225,133,47,55,94,212,129,188,173,34,147,209,82,48,142,116,17,89,
+185,122,3,147,219,213,13,148,224,236,175,140,119,173,52,60,162,254,204,200,23,95,40,58,83,251,37,62,58,220,17,42,
+189,84,154,72,47,120,27,38,255,246,96,50,36,211,98,160,49,105,13,214,141,222,233,238,65,140,183,177,59,44,96,154,
+77,118,233,47,3,63,125,92,237,107,185,10,224,91,46,94,224,134,87,124,164,231,182,119,14,100,108,146,232,238,88,250,
+28,195,127,60,27,88,168,72,133,227,31,239,101,240,251,214,173,179,108,107,243,95,128,239,157,167,104,222,25,116,172,24,
+209,72,6,94,25,32,209,185,141,112,50,16,238,221,162,133,94,152,240,95,117,137,89,182,185,142,175,205,216,181,211,52,
+31,25,151,206,15,0,130,89,55,2,161,58,159,152,120,170,144,133,209,218,213,255,69,30,161,73,245,100,170,166,86,135,
+151,74,154,109,230,149,50,44,71,137,124,82,117,9,180,144,143,36,211,203,66,38,96,43,125,219,250,88,90,244,209,133,
+187,194,53,27,141,30,211,60,184,183,120,175,211,86,153,119,18,104,240,84,69,124,72,252,174,34,179,176,97,155,237,86,
+228,55,30,248,17,207,7,14,193,165,190,98,101,209,70,158,103,142,37,235,46,24,240,121,134,220,72,248,180,139,202,82,
+32,125,157,83,123,14,180,167,163,220,153,161,222,168,38,125,255,89,161,143,100,95,80,49,152,214,116,254,109,33,136,177,
+52,226,182,67,208,160,121,213,3,155,241,230,171,183,181,133,28,137,26,211,97,199,66,102,115,45,16,105,150,140,189,177,
+158,158,153,125,75,236,142,172,213,206,110,103,7,38,54,13,245,235,185,175,222,173,184,162,65,37,20,113,126,164,145,40,
+13,241,86,141,71,102,142,170,169,181,129,223,121,35,137,241,108,58,38,141,250,92,238,105,44,225,55,250,187,52,31,23,
+206,137,173,61,208,165,21,62,49,82,206,106,120,221,192,136,134,108,159,48,52,134,5,241,66,239,249,157,247,232,211,82,
+110,130,74,182,205,101,119,242,119,13,73,153,75,183,81,1,106,207,114,77,61,22,225,39,103,177,150,48,177,49,125,228,
+105,178,208,233,89,191,248,138,202,17,86,240,86,35,133,153,152,211,60,168,250,130,68,209,30,104,144,82,249,160,238,144,
+123,249,86,36,132,45,68,226,180,34,186,151,119,100,194,48,106,58,163,43,211,52,40,211,86,84,241,93,157,28,31,36,
+133,43,206,122,251,125,91,165,250,224,30,161,109,44,112,199,241,73,198,75,242,235,42,174,95,231,47,61,124,62,32,221,
+41,162,213,169,114,72,129,203,141,88,188,172,28,226,96,171,13,201,78,244,124,47,225,209,134,41,189,184,236,106,180,19,
+101,221,84,94,46,98,76,33,109,200,40,34,253,152,124,69,78,126,241,211,211,109,92,208,36,202,25,42,210,209,76,10,
+24,211,118,187,249,53,187,141,130,13,239,222,229,203,247,137,60,132,77,125,218,205,43,117,22,248,71,63,140,231,11,99,
+15,198,110,117,159,64,229,205,21,219,68,121,188,132,253,135,236,243,48,157,22,55,170,118,145,103,73,185,23,163,216,224,
+184,51,229,220,76,46,60,6,12,90,222,107,245,246,253,137,205,148,151,71,14,228,136,169,5,25,169,241,34,255,92,103,
+254,251,175,151,233,39,21,172,107,131,143,17,79,43,223,162,114,224,137,158,106,0,91,68,250,76,87,213,66,169,184,205,
+184,157,238,5,241,141,20,35,87,95,63,44,111,204,127,94,170,111,5,23,128,233,105,172,45,249,253,203,238,59,94,218,
+71,118,19,73,68,129,194,109,102,65,79,42,42,171,11,37,162,200,112,187,111,238,187,130,23,38,109,202,118,240,113,232,
+99,83,55,114,37,35,94,167,91,48,75,90,7,186,41,20,155,147,94,151,3,134,211,236,152,124,168,121,168,175,156,253,
+143,47,143,200,151,43,207,205,244,187,90,162,59,208,17,177,129,48,122,37,30,165,173,221,152,205,104,253,217,104,164,224,
+194,87,54,120,192,247,251,43,167,19,3,145,146,186,197,89,165,96,168,52,5,69,162,235,187,164,110,80,217,191,139,178,
+0,213,209,200,249,6,230,44,173,246,37,119,106,152,66,72,140,41,212,67,82,47,137,126,76,75,97,240,203,6,144,225,
+233,155,95,243,73,134,146,142,9,33,184,134,90,17,150,76,243,66,58,181,212,44,128,23,51,129,225,138,114,33,209,120,
+59,22,134,20,105,198,137,224,35,83,145,134,106,67,241,137,67,222,128,236,139,84,87,32,122,200,106,237,123,195,32,18,
+44,98,141,185,235,93,56,182,205,20,41,248,118,216,220,31,235,208,52,73,209,3,118,155,145,206,182,115,212,229,26,210,
+108,157,72,72,218,74,99,89,114,251,70,26,223,204,96,116,169,49,76,118,64,145,18,107,59,20,175,198,189,82,3,119,
+217,152,74,222,98,147,197,23,7,173,105,148,195,48,63,202,12,60,72,34,112,91,227,154,137,80,201,197,225,122,234,137,
+41,13,235,23,129,143,253,75,158,67,37,34,66,240,119,6,51,178,62,181,15,135,61,83,56,92,212,212,245,202,127,41,
+120,33,149,40,152,247,40,183,220,51,27,240,192,227,46,64,68,251,53,42,231,89,21,241,253,66,89,233,237,194,135,174,
+209,127,228,235,17,143,146,239,130,141,100,106,174,128,174,93,210,209,89,109,86,85,154,43,141,227,30,31,154,188,199,16,
+10,156,90,166,71,73,157,185,212,68,177,4,82,126,178,102,117,0,124,186,225,189,16,154,77,157,167,76,145,29,182,240,
+207,253,24,17,63,23,250,223,115,165,108,206,220,201,61,142,207,190,179,1,89,57,223,121,252,154,39,178,62,83,116,175,
+94,29,32,9,32,193,252,7,151,37,199,109,228,202,129,224,54,119,59,193,207,38,36,204,156,226,128,29,184,18,158,142,
+228,141,116,146,96,219,237,40,192,11,200,25,91,156,210,11,22,94,104,100,105,163,42,51,104,38,179,38,60,8,143,212,
+103,132,122,155,24,253,255,43,231,199,129,116,22,243,0,144,58,179,9,71,185,60,191,65,112,228,132,97,154,254,217,88,
+228,27,242,187,254,121,126,93,253,189,6,24,158,15,110,186,185,92,181,179,17,112,37,20,11,38,13,39,126,106,108,216,
+218,36,188,133,186,49,230,5,218,50,204,119,122,90,181,245,117,105,33,93,183,60,27,231,151,59,68,79,85,111,111,193,
+105,2,2,41,82,179,4,49,61,167,72,198,117,195,63,183,31,179,22,248,90,64,199,57,64,251,103,158,185,117,113,235,
+153,83,200,194,34,199,68,78,98,97,139,245,66,100,123,79,20,222,36,64,59,137,26,111,37,55,237,73,118,77,63,139,
+70,247,100,109,13,25,86,210,134,248,3,132,145,56,97,169,248,74,253,183,84,254,80,189,149,89,116,146,70,250,140,53,
+17,37,140,123,45,189,81,214,78,112,166,27,52,23,140,127,122,188,95,228,168,237,30,73,8,91,227,250,162,187,250,165,
+107,159,173,62,39,58,10,2,41,178,44,193,199,19,117,166,48,169,253,40,153,100,65,211,27,110,140,148,134,32,198,161,
+31,37,196,116,107,81,106,96,12,70,178,110,98,46,252,210,16,248,229,169,189,183,167,104,228,227,124,118,37,22,153,56,
+163,31,238,50,131,202,245,28,177,132,0,147,237,151,19,232,113,13,182,24,186,5,114,227,189,128,22,246,66,202,116,63,
+110,133,130,18,222,98,129,123,116,28,60,36,111,52,124,18,178,106,181,208,3,174,60,158,167,1,3,153,60,155,161,148,
+6,22,223,122,177,187,230,221,184,127,53,137,218,81,43,74,239,99,232,145,232,158,124,184,58,241,180,209,186,192,143,204,
+71,120,112,66,2,39,246,195,71,244,18,181,108,226,219,153,162,137,228,181,195,28,165,105,19,42,166,33,173,75,81,2,
+28,167,130,12,255,247,255,255,255,255,43,183,146,251,142,50,167,68,55,42,166,21,156,251,44,227,236,30,183,233,129,170,
+128,3,70,220,126,45,4,91,213,191,108,71,208,218,67,152,175,166,175,117,108,59,242,79,71,121,16,128,118,120,241,26,
+213,1,131,117,119,129,193,171,1,188,95,98,152,125,127,191,230,112,140,57,224,27,128,217,244,212,102,123,225,156,129,9,
+235,1,91,230,20,35,46,7,252,30,187,178,194,207,204,104,15,2,137,186,108,159,12,120,201,179,142,94,4,98,208,99,
+66,156,79,84,61,202,65,180,103,214,72,102,233,245,78,68,136,114,57,183,116,122,111,179,140,40,4,228,147,102,20,37,
+99,207,203,146,211,66,127,251,75,28,185,100,249,213,69,224,228,195,107,11,62,16,224,143,240,157,113,212,140,159,141,234,
+231,118,76,129,198,41,149,97,3,189,140,168,58,140,70,147,175,128,190,139,100,247,109,203,196,122,219,81,66,167,231,175,
+83,89,188,116,227,148,189,51,149,217,205,228,52,100,11,237,228,147,119,208,227,53,186,219,191,47,237,31,140,6,138,251,
+136,203,5,98,66,159,169,12,45,81,37,14,54,158,35,241,153,75,95,226,126,117,168,188,38,192,7,77,39,149,118,70,
+11,120,170,198,67,152,59,131,192,26,166,110,39,64,110,50,213,111,167,121,67,48,82,44,250,45,7,39,215,26,53,104,
+64,110,84,119,48,15,3,65,116,198,234,42,166,30,163,36,213,191,9,57,191,209,92,33,193,95,83,33,67,30,122,201,
+182,209,126,233,194,92,129,81,118,175,236,61,225,62,67,234,92,109,180,4,88,137,155,22,185,177,60,64,122,38,33,92,
+70,51,221,236,26,180,85,28,45,196,38,27,230,226,175,128,80,210,185,153,63,25,80,208,218,108,69,82,74,106,218,166,
+166,150,215,62,58,47,50,242,138,197,42,218,176,161,20,14,110,102,97,7,185,65,81,232,58,137,69,173,45,171,252,243,
+40,226,212,84,238,44,242,211,137,146,118,209,238,193,198,130,160,180,29,155,150,180,233,118,98,144,165,207,131,19,48,189,
+39,33,237,83,252,220,119,148,129,228,194,99,89,59,6,153,131,136,253,79,68,154,196,32,3,20,0,5,23,232,214,230,
+24,99,197,236,186,84,245,68,105,220,64,232,123,203,117,96,182,44,160,137,72,11,82,96,150,188,70,219,53,34,180,208,
+6,9,255,48,249,36,64,199,73,26,252,73,75,206,190,127,5,5,132,100,59,189,212,21,136,255,183,6,207,39,209,110,
+122,124,36,192,97,91,5,70,229,60,33,236,224,69,211,0,190,244,43,182,240,33,83,197,14,207,184,146,64,195,208,205,
+239,28,13,72,71,166,226,206,123,15,194,175,238,184,79,201,89,144,66,238,107,154,237,116,191,165,44,125,254,30,58,53,
+254,210,76,19,87,64,201,151,150,105,124,100,119,81,76,132,8,22,131,82,232,210,221,6,48,164,29,109,31,227,106,16,
+136,195,85,23,190,28,182,239,63,230,86,36,150,207,0,42,177,137,72,254,14,73,22,207,35,141,140,8,203,57,185,133,
+204,114,40,225,60,243,110,250,245,177,149,97,160,251,17,179,167,211,130,203,195,194,88,213,252,252,93,237,211,186,75,51,
+241,159,121,50,148,81,82,111,99,208,118,232,134,249,159,70,207,199,101,14,210,15,96,254,121,105,31,58,57,194,226,163,
+139,227,74,231,64,41,15,111,150,164,121,113,218,84,209,42,189,13,164,23,152,62,179,1,133,183,180,48,178,117,65,168,
+144,118,248,201,129,29,208,204,122,4,7,161,91,10,115,12,28,28,9,152,115,71,39,9,82,240,115,223,113,167,94,154,
+157,14,21,42,231,186,195,91,52,43,33,84,205,166,112,54,90,8,215,239,95,193,180,105,135,57,11,147,127,118,65,72,
+198,61,21,187,23,221,198,134,88,139,170,18,230,192,170,169,83,203,6,116,213,23,159,112,253,157,74,94,151,167,144,190,
+169,137,95,44,45,38,169,248,147,67,241,18,247,203,254,137,37,84,134,241,238,90,163,92,246,107,144,216,255,241,251,71,
+79,161,176,12,197,239,4,223,162,91,84,223,41,76,38,187,179,204,126,157,232,135,95,150,248,13,141,40,11,230,183,18,
+170,19,123,233,100,124,85,251,191,163,31,84,237,6,78,76,60,244,105,228,181,248,213,65,125,138,76,100,99,113,216,137,
+204,67,40,44,134,121,56,114,175,189,49,54,73,247,47,84,100,204,240,161,21,98,27,123,193,180,151,217,118,114,185,211,
+45,181,32,148,162,92,160,142,21,32,161,40,192,134,102,133,202,89,169,16,173,223,117,60,168,250,102,247,1,248,167,160,
+245,187,182,183,58,128,116,82,91,64,194,113,123,255,13,253,230,20,27,110,224,244,255,253,45,186,127,134,33,196,211,37,
+100,58,231,132,8,10,206,19,182,197,133,71,51,89,221,255,183,2,189,50,19,201,167,56,193,93,242,108,24,19,113,162,
+117,197,236,10,235,220,50,92,228,227,249,91,75,50,50,68,52,181,5,224,130,156,102,176,232,151,175,49,81,65,5,241,
+190,254,70,37,51,94,94,76,63,48,134,208,112,0,0,40,255,245,195,208,81,81,39,85,39,195,199,148,33,193,216,156,
+6,76,249,42,236,71,107,155,60,166,74,110,186,128,254,6,30,83,165,23,21,64,230,93,249,55,0,45,239,149,155,158,
+142,118,0,0,255,252,139,110,240,132,0,251,108,174,234,25,46,96,150,193,14,62,200,44,224,198,234,99,251,157,135,214,
+122,140,81,185,197,104,27,32,108,76,99,198,71,162,225,80,183,84,194,176,237,2,84,191,176,210,23,27,177,222,251,130,
+109,237,146,36,135,253,127,240,133,115,71,189,168,65,171,82,77,150,252,53,167,255,103,94,192,111,159,135,190,250,188,122,
+101,172,102,127,126,0,8,216,249,237,51,253,102,247,97,79,251,247,162,19,199,171,140,252,62,54,68,23,146,85,147,74,
+255,205,58,136,16,67,95,244,79,108,242,103,255,138,159,10,65,29,213,178,65,79,142,208,109,201,199,88,201,163,60,180,
+165,126,172,238,201,80,33,75,64,135,79,76,122,101,87,244,49,60,98,203,21,224,252,135,183,150,144,83,213,247,25,179,
+193,245,140,215,232,65,210,77,184,68,116,162,226,247,158,107,145,159,110,129,136,209,140,204,217,0,234,101,62,70,203,14,
+225,197,50,12,121,242,143,212,120,252,157,204,135,17,147,205,144,245,244,86,99,152,70,53,17,207,145,74,100,47,59,119,
+173,64,98,7,136,11,45,207,227,170,226,154,239,26,154,33,120,165,113,40,122,107,240,176,62,114,108,58,225,176,238,102,
+203,45,84,142,102,218,202,244,155,65,254,144,219,83,248,245,121,21,4,228,237,227,213,16,126,148,27,233,1,30,179,132,
+159,175,202,32,62,112,38,239,23,134,185,163,157,206,12,161,236,51,77,97,234,102,183,187,192,211,170,96,91,27,222,6,
+26,49,188,226,51,148,114,143,31,45,34,245,84,205,41,75,249,190,30,126,113,80,81,54,214,188,138,166,100,24,5,139,
+79,220,165,76,126,226,219,170,215,57,154,160,52,244,178,99,212,10,232,125,48,255,252,175,180,210,30,199,88,31,180,47,
+23,63,169,194,98,68,163,102,182,156,118,226,159,41,108,104,78,75,181,102,72,60,43,19,179,72,83,63,25,164,255,106,
+164,67,51,219,148,207,46,151,11,67,59,92,4,160,186,130,249,80,62,120,69,240,135,245,254,240,222,20,154,141,82,76,
+103,22,201,8,90,168,21,143,157,135,25,90,127,146,67,95,143,222,65,86,205,245,220,165,50,237,248,214,42,147,42,89,
+68,146,127,32,86,152,253,51,243,175,116,73,29,236,187,160,129,29,225,209,7,154,104,60,37,142,151,237,39,98,62,76,
+233,167,83,74,186,89,156,79,28,23,196,196,177,39,24,169,221,189,79,214,221,115,53,245,212,225,243,85,95,185,34,203,
+0,14,242,21,21,161,134,174,75,184,97,88,24,175,225,134,187,191,57,178,217,103,208,71,48,214,216,13,195,244,64,228,
+207,202,8,187,125,194,23,27,133,226,227,97,243,190,205,132,218,104,95,31,79,151,167,163,174,71,72,110,68,159,227,166,
+173,87,185,246,36,191,182,166,183,159,135,108,142,89,203,138,63,79,143,132,193,36,1,185,184,145,168,96,95,144,14,149,
+239,244,207,130,65,57,159,68,15,184,132,140,186,233,53,89,91,37,214,19,75,140,160,117,136,244,231,10,177,175,95,206,
+65,236,212,147,80,109,224,236,187,185,142,71,70,166,69,50,86,77,221,109,79,43,165,28,20,57,99,27,127,172,185,231,
+138,169,252,13,60,248,57,157,180,132,39,67,234,6,135,153,13,115,213,194,198,94,190,32,22,230,236,141,85,54,248,127,
+236,67,133,182,89,213,136,54,196,156,232,162,195,48,134,65,125,68,165,136,6,71,123,11,86,77,187,147,47,109,35,122,
+164,17,2,156,7,252,249,171,189,208,200,51,16,253,1,57,15,145,109,217,121,210,142,74,13,142,250,20,0,110,173,31,
+175,248,81,32,180,125,203,189,140,221,175,189,234,111,101,6,118,103,163,16,172,203,222,55,95,82,88,26,247,174,165,133,
+179,195,38,232,120,224,13,96,84,150,222,40,182,201,202,40,236,13,176,165,40,80,190,14,218,223,159,212,39,245,167,61,
+43,53,9,31,103,163,201,5,248,8,85,240,1,250,149,236,200,172,108,248,105,101,121,20,75,211,176,73,238,245,113,167,
+27,6,72,152,176,216,215,154,28,21,250,92,137,44,86,34,153,189,68,201,27,33,20,189,0,87,53,59,83,87,162,154,
+153,188,147,106,208,201,44,74,55,250,57,79,184,212,40,76,74,10,172,127,166,108,158,138,124,4,148,212,228,192,243,70,
+66,0,180,82,211,151,247,76,110,233,208,96,219,227,200,223,40,80,36,69,232,237,137,10,69,28,210,120,205,237,106,193,
+36,60,98,8,97,161,76,190,213,242,202,68,193,219,101,85,99,200,229,116,82,253,93,150,228,59,123,103,88,153,199,85,
+86,251,134,98,96,47,142,89,89,6,161,255,192,182,28,62,112,77,172,127,161,25,244,153,106,66,158,172,36,46,139,209,
+56,202,91,215,58,200,94,93,40,31,251,9,142,191,228,100,181,102,77,230,198,37,52,240,255,255,255,223,25,47,22,61,
+81,235,85,121,89,151,204,142,34,137,202,10,202,242,39,254,65,179,211,92,163,170,224,200,129,74,247,15,31,216,44,74,
+192,241,51,184,71,238,106,106,84,126,112,146,226,178,209,23,234,253,137,242,115,196,241,133,186,167,108,3,226,213,45,184,
+121,70,225,101,166,44,86,130,230,77,142,2,102,69,73,214,113,12,181,133,31,49,239,147,37,130,228,164,156,253,78,195,
+121,239,8,126,14,183,45,188,68,1,237,18,97,78,110,26,236,235,48,248,185,209,73,190,155,130,57,33,118,133,180,13,
+131,27,25,101,94,116,171,204,227,207,194,214,49,182,164,144,230,195,113,187,102,81,66,93,236,135,36,117,97,200,227,220,
+200,165,255,253,85,195,181,203,184,226,102,142,117,164,0,217,90,234,109,166,250,56,4,193,224,24,61,156,149,23,238,123,
+137,192,61,177,253,99,11,221,173,99,52,177,107,107,113,178,61,52,100,59,177,203,81,192,242,89,218,186,126,43,140,131,
+210,119,46,12,33,141,231,71,21,122,184,157,203,126,146,69,90,103,63,252,38,46,204,74,67,138,254,227,215,248,104,149,
+209,52,168,213,194,197,21,158,102,70,93,151,166,170,186,128,66,36,35,145,89,213,101,65,199,181,188,202,190,141,235,89,
+12,213,55,4,207,139,139,52,154,0,208,201,124,172,142,227,166,232,186,166,254,52,122,198,234,238,134,65,200,36,251,196,
+67,171,168,225,247,204,108,165,75,126,233,226,84,29,248,128,182,25,212,89,9,134,51,158,92,150,48,123,83,184,54,251,
+81,35,140,164,255,246,157,123,13,109,99,30,107,173,160,31,230,123,191,78,221,205,203,194,189,3,2,142,170,0,101,175,
+28,218,31,145,190,185,161,21,53,169,231,123,201,81,52,143,84,160,212,153,252,81,191,48,108,23,134,198,37,211,171,233,
+15,177,28,40,121,243,76,25,69,165,199,58,185,147,195,149,168,48,84,140,170,221,75,119,226,150,73,218,230,47,181,43,
+156,30,15,193,92,33,17,199,160,21,51,250,79,100,174,139,17,124,28,132,199,233,134,61,154,89,97,173,76,119,123,87,
+199,163,99,209,121,229,116,149,37,173,8,56,247,3,44,9,69,68,148,0,43,110,200,235,187,163,39,52,236,232,123,198,
+251,94,64,243,145,9,33,248,234,38,61,83,43,51,65,150,31,99,49,117,42,134,15,125,158,57,68,132,71,209,76,202,
+60,201,55,26,116,120,2,140,28,2,71,161,206,243,156,123,133,123,187,178,97,59,19,233,206,167,212,39,192,211,54,52,
+37,50,128,23,62,164,51,100,208,58,171,220,31,192,254,21,229,132,223,169,49,90,224,184,41,240,250,208,125,253,90,95,
+109,228,152,190,91,50,76,77,227,204,178,95,36,94,241,42,15,92,105,206,124,123,148,135,255,244,196,68,123,66,76,1,
+172,57,77,158,40,212,219,54,221,215,118,22,226,195,51,111,141,250,54,91,68,28,191,204,155,214,173,126,92,213,242,106,
+145,67,88,125,136,81,156,166,169,78,225,67,88,183,251,77,104,207,50,90,129,186,126,77,223,229,110,208,131,213,49,172,
+40,238,49,108,225,218,6,27,164,31,2,222,39,231,117,7,11,93,69,45,97,17,41,137,178,199,139,5,181,131,37,235,
+226,9,14,230,66,178,69,26,211,41,0,178,213,136,141,61,198,36,158,42,81,77,71,154,188,255,1,144,192,156,199,25,
+83,51,45,88,179,178,42,166,111,152,206,16,200,151,69,72,52,13,97,232,140,104,208,198,16,19,223,88,95,226,208,164,
+117,240,37,61,206,181,43,154,160,86,158,220,139,28,43,5,117,188,129,39,70,231,58,255,37,29,167,51,160,165,125,34,
+33,28,185,115,39,70,236,169,153,186,133,253,53,161,92,171,71,0,196,174,49,205,151,100,30,138,5,130,199,162,244,178,
+21,150,250,211,250,141,13,136,205,124,39,194,134,196,209,180,12,221,236,179,48,216,210,197,210,59,201,40,52,91,185,0,
+164,57,252,141,255,56,60,127,186,77,181,155,214,151,189,147,244,219,231,221,76,171,3,21,98,230,70,161,58,200,10,185,
+188,183,73,156,175,245,64,63,71,83,89,99,227,134,133,11,96,150,233,41,240,175,203,2,51,205,254,115,18,44,95,160,
+15,66,104,75,25,255,242,47,166,67,93,205,240,49,64,91,221,60,133,144,190,43,221,164,205,117,10,60,71,39,109,118,
+133,210,188,156,194,134,213,139,250,154,29,180,10,99,28,98,83,27,206,55,51,128,74,204,141,181,254,178,248,13,247,108,
+240,44,222,213,39,177,233,78,4,21,115,28,90,98,131,27,253,103,169,12,144,194,184,48,95,149,196,33,109,109,137,69,
+221,218,109,57,165,53,154,131,100,120,106,27,93,42,71,130,25,6,21,195,29,5,63,124,205,46,11,251,129,52,207,40,
+233,213,134,27,201,54,173,90,235,147,81,207,186,9,121,185,34,164,34,162,98,123,186,17,107,190,87,129,10,219,222,68,
+162,10,233,143,119,245,173,122,120,25,60,18,23,12,240,147,137,203,252,204,37,5,77,109,6,131,225,134,198,80,163,99,
+197,254,154,22,51,21,54,204,134,101,103,206,83,113,254,101,225,149,90,37,212,248,232,73,165,78,191,166,8,103,225,104,
+183,186,215,94,57,13,101,228,253,1,240,53,66,112,71,137,140,39,138,16,219,209,242,230,159,83,4,245,135,22,38,55,
+181,209,55,174,174,194,154,225,13,122,44,250,42,139,224,232,205,201,47,68,149,232,102,36,188,38,93,16,185,222,22,37,
+193,224,24,223,216,88,101,10,104,121,199,117,55,105,200,211,98,232,119,49,183,3,75,207,91,105,18,211,105,36,240,75,
+72,191,246,6,25,206,133,101,29,202,48,112,168,6,229,169,49,90,128,111,246,145,112,10,221,161,219,232,7,188,44,121,
+30,71,98,25,188,24,193,163,166,150,133,75,85,204,63,119,189,140,87,226,177,80,146,55,124,248,61,240,134,232,63,46,
+39,108,79,189,121,179,135,46,100,30,178,246,161,231,236,167,89,3,36,235,12,239,196,11,240,32,195,232,166,30,24,238,
+179,252,24,207,164,74,97,42,9,69,244,181,200,179,2,150,70,83,61,125,68,8,59,87,106,59,100,55,160,189,21,50,
+48,31,207,18,159,176,51,196,23,214,208,106,80,18,172,235,217,240,82,172,56,220,254,244,212,245,1,152,6,243,182,123,
+26,100,84,20,199,155,116,252,211,226,2,18,118,109,117,48,41,214,19,254,235,216,116,57,63,255,242,47,166,67,93,205,
+240,49,64,91,221,60,132,23,181,185,15,96,127,64,7,188,117,56,122,82,176,110,221,5,8,113,239,178,114,127,57,32,
+36,253,26,173,155,167,14,143,19,32,171,23,165,157,235,207,11,14,42,172,192,122,237,21,162,232,221,240,152,254,85,198,
+192,137,101,245,13,84,167,69,133,69,120,238,19,221,111,225,91,227,254,233,229,115,151,186,109,231,154,88,205,164,230,223,
+132,41,144,73,72,236,205,189,214,63,93,217,214,105,41,60,151,229,17,192,55,172,184,148,188,172,84,139,173,242,101,172,
+234,102,19,202,220,71,52,21,80,74,196,128,6,30,158,173,20,53,140,144,172,46,59,236,104,109,171,8,61,11,41,66,
+143,180,249,33,92,81,71,215,87,13,196,223,225,164,80,155,39,206,186,102,113,16,97,190,229,218,243,118,207,72,208,204,
+193,84,75,41,130,97,142,68,207,193,79,225,224,151,56,7,57,210,59,141,68,123,174,11,196,44,220,212,236,27,204,120,
+186,119,119,252,118,29,145,0,128,156,59,52,209,118,108,27,68,210,99,239,100,100,108,43,35,227,195,212,215,192,155,245,
+80,124,123,194,65,233,17,84,89,120,103,139,100,122,57,67,12,137,16,183,40,72,144,82,11,89,81,43,121,170,137,22,
+29,111,251,30,217,182,53,202,160,140,17,251,128,202,98,83,131,75,211,91,98,67,152,103,208,93,240,155,33,169,203,126,
+7,214,141,147,21,117,1,217,41,213,130,9,186,31,183,246,44,234,142,66,224,234,70,97,166,98,229,176,247,140,225,68,
+197,124,70,42,56,112,192,159,136,45,70,11,134,206,167,219,65,24,34,82,212,142,19,1,124,177,153,129,141,92,162,139,
+250,75,132,48,174,103,26,44,142,207,137,246,53,159,32,170,181,8,176,146,62,254,124,209,218,148,100,171,200,61,31,3,
+55,217,126,234,75,12,74,100,162,134,6,52,135,171,35,148,72,187,162,172,115,225,223,91,228,67,74,95,112,77,227,141,
+167,221,33,79,72,27,229,213,162,13,211,1,15,48,25,74,215,83,60,21,38,196,37,109,237,133,225,71,101,28,77,189,
+34,196,46,226,146,126,128,35,116,230,255,240,134,255,184,2,51,18,73,169,249,104,111,178,246,222,125,148,237,208,18,19,
+240,240,156,189,123,47,127,230,228,50,159,200,67,60,247,79,29,69,87,255,105,231,47,117,145,197,47,243,95,187,248,103,
+120,81,82,227,6,46,50,125,169,225,49,194,230,70,64,71,179,227,139,105,108,56,190,163,126,29,54,35,1,49,106,213,
+36,247,192,7,146,124,220,143,211,25,231,140,49,244,92,11,116,107,244,43,57,209,13,42,168,45,191,217,67,237,39,91,
+6,240,160,38,144,203,130,184,41,119,225,146,53,76,205,191,190,60,92,156,11,200,147,156,156,162,241,45,124,255,110,249,
+139,125,24,210,197,248,239,141,173,185,196,133,0,224,49,98,51,255,85,141,114,111,117,45,113,39,156,181,133,199,212,126,
+110,55,139,188,35,190,125,220,90,135,93,20,251,134,76,29,232,109,219,49,43,22,223,168,5,18,255,222,234,122,244,75,
+241,24,91,216,123,235,122,212,235,225,250,194,86,217,85,180,159,121,60,36,97,76,243,92,185,113,211,242,196,198,178,126,
+209,119,167,14,58,64,133,235,250,187,117,68,161,176,229,99,129,132,123,223,71,230,83,198,157,191,175,168,41,5,20,24,
+116,160,222,107,87,83,185,241,185,76,20,37,166,61,43,187,110,98,85,153,20,253,12,220,105,205,62,71,155,151,201,40,
+172,105,160,143,47,74,49,180,2,86,204,150,188,184,214,196,93,48,109,119,48,87,28,28,108,33,179,137,254,225,147,149,
+229,201,97,198,146,20,165,225,56,1,203,70,193,90,188,146,220,229,40,36,51,45,187,235,12,226,103,119,95,116,61,101,
+54,97,57,234,166,95,90,60,185,128,225,177,29,212,232,215,198,106,14,6,18,21,99,206,213,97,36,145,220,233,48,108,
+34,87,6,167,226,26,137,202,171,116,152,51,213,222,130,26,104,62,238,57,95,0,225,218,154,55,13,253,118,191,233,78,
+142,89,208,38,149,47,23,60,244,240,118,58,84,112,16,109,185,78,235,190,149,195,249,199,90,119,65,163,71,205,110,136,
+169,110,253,76,149,7,112,244,251,96,126,213,209,182,202,168,113,98,192,38,87,181,6,35,244,171,183,255,234,43,185,100,
+105,15,56,151,236,8,253,252,114,4,79,131,2,39,220,40,136,241,189,247,197,42,10,143,62,18,145,65,151,217,34,76,
+186,26,92,76,63,219,55,196,161,17,2,198,209,144,240,149,124,9,159,222,147,202,114,49,76,58,245,216,16,183,180,55,
+189,195,128,245,83,222,99,91,73,27,63,194,125,163,131,54,190,146,57,90,26,68,249,199,252,9,60,233,59,26,21,146,
+253,247,71,253,142,99,167,198,2,99,22,74,99,131,109,60,116,61,88,227,188,171,78,201,83,211,66,204,125,168,103,5,
+249,87,208,97,230,38,178,94,4,45,193,208,65,136,41,120,183,255,236,243,140,45,200,171,72,37,204,153,77,43,89,119,
+82,223,241,237,247,166,27,113,150,144,96,174,168,4,78,228,91,65,159,22,26,109,250,235,46,133,180,19,223,255,4,71,
+137,54,171,37,21,12,177,137,159,212,230,121,103,45,145,204,205,26,9,64,86,16,99,211,138,185,232,71,213,180,86,168,
+75,245,145,252,214,234,21,149,113,138,96,8,142,144,182,96,74,44,2,63,36,137,166,177,56,245,35,223,223,151,33,216,
+128,24,103,204,132,197,98,251,61,181,142,24,60,183,15,45,57,47,21,230,31,252,157,162,76,77,181,174,36,117,0,192,
+110,84,173,104,135,77,109,194,24,36,119,145,254,199,148,185,248,123,112,249,155,125,93,181,147,129,3,115,14,243,77,93,
+50,120,37,13,121,25,55,136,35,120,53,176,180,99,253,114,80,232,153,160,111,172,208,16,25,225,172,82,19,97,105,232,
+156,50,23,102,84,196,99,233,118,173,39,187,224,125,34,184,25,74,218,214,40,71,237,1,241,144,255,29,99,111,173,227,
+19,78,240,93,232,240,26,114,210,130,176,42,170,86,83,132,195,129,51,211,182,68,199,118,97,32,37,247,250,96,130,238,
+209,237,103,228,19,107,250,207,36,92,194,76,51,102,10,218,172,95,65,131,164,86,109,210,91,153,209,4,143,161,195,213,
+163,128,4,1,26,117,75,198,107,102,24,15,96,49,116,30,255,18,218,168,255,55,20,146,170,180,0,127,181,113,151,10,
+122,64,86,185,172,174,38,125,42,13,185,66,193,214,40,24,73,108,162,197,25,166,191,117,57,59,181,241,74,123,216,15,
+54,244,184,109,33,86,13,7,18,206,72,248,188,209,4,178,100,1,75,221,130,230,249,230,19,125,240,134,246,84,106,231,
+252,129,214,4,141,111,26,118,156,68,196,56,95,99,61,49,25,114,75,205,16,68,131,45,194,113,17,174,68,57,140,36,
+255,200,109,179,78,133,43,200,60,244,73,244,98,161,171,241,177,20,150,112,221,67,63,203,127,252,49,9,6,72,66,199,
+252,49,245,176,110,218,129,7,150,129,202,23,193,84,235,8,21,101,117,103,223,167,116,97,17,244,220,199,4,195,76,57,
+215,84,7,150,7,6,15,239,222,86,230,243,6,81,88,120,125,150,47,151,167,104,217,123,119,201,149,243,229,255,154,58,
+60,114,6,254,184,13,39,188,35,88,224,138,43,104,174,223,17,125,134,81,172,184,101,222,95,36,155,97,138,39,84,12,
+192,237,79,1,245,6,41,25,64,101,225,242,26,218,21,235,233,76,14,212,79,163,133,190,12,171,62,34,79,165,2,183,
+69,47,59,242,211,236,137,111,178,201,113,199,197,175,86,135,127,245,155,72,66,21,50,162,36,123,108,44,97,188,211,17,
+229,3,84,199,129,60,103,168,122,199,73,24,40,116,138,35,116,211,198,131,104,190,130,5,250,232,224,182,121,247,145,63,
+1,11,161,123,49,170,60,31,72,64,215,252,225,29,144,53,144,82,228,214,129,3,221,114,69,246,65,191,152,103,179,131,
+179,204,85,104,2,159,223,232,78,103,147,146,33,195,1,126,183,185,168,219,94,101,185,13,114,95,36,152,167,107,185,16,
+84,8,136,38,98,17,44,53,51,62,137,83,146,87,35,168,235,121,233,239,0,118,62,150,238,35,150,19,116,19,173,104,
+41,239,62,190,239,21,54,165,205,214,84,163,30,32,242,83,13,209,156,119,153,43,209,38,223,195,228,209,77,174,241,169,
+146,200,231,218,135,244,221,204,168,234,245,67,149,215,235,102,144,64,223,94,6,129,88,56,6,215,177,21,201,114,202,222,
+218,240,23,74,60,130,93,204,198,107,60,147,97,132,93,32,243,221,1,238,221,166,52,64,12,0,238,240,24,140,9,211,
+87,44,123,148,190,195,232,115,136,10,152,249,50,234,172,198,202,252,247,10,192,181,115,76,205,88,162,113,194,216,182,124,
+137,218,193,36,105,119,69,16,35,57,43,88,239,71,2,96,101,252,95,81,76,70,150,84,57,234,38,165,16,14,180,36,
+39,83,127,84,99,153,2,46,202,7,70,9,79,108,218,91,62,202,147,48,214,214,99,183,120,131,72,150,17,227,205,32,
+201,140,10,117,173,174,32,177,81,19,90,184,240,129,58,148,60,64,43,142,173,3,132,4,217,168,22,55,200,107,102,210,
+243,15,48,159,58,160,53,161,212,237,58,242,247,42,249,124,14,233,103,142,158,214,92,31,110,151,237,247,119,180,237,86,
+155,253,101,226,16,211,44,202,102,48,54,174,180,174,101,99,99,172,73,43,55,223,226,192,58,143,55,23,192,7,153,25,
+207,179,220,2,73,0,17,90,38,72,2,21,161,2,17,131,33,193,96,105,86,116,16,33,156,45,4,85,2,5,139,240,
+143,142,213,238,203,203,114,253,198,164,195,44,167,210,224,200,128,238,110,195,116,170,158,115,7,29,143,134,254,101,78,202,
+179,40,136,111,223,216,115,69,230,233,12,38,238,59,178,152,30,139,99,242,33,186,109,154,207,205,245,43,151,48,129,116,
+52,13,0,190,8,244,207,20,235,29,124,133,221,65,159,143,135,186,195,39,80,52,31,169,210,114,6,15,93,149,255,68,
+230,230,143,195,24,238,47,191,162,151,80,63,255,229,171,41,217,203,63,63,246,44,70,88,252,255,223,18,132,189,231,99,
+92,84,100,203,56,39,79,141,227,134,159,143,98,28,42,147,100,175,222,33,107,183,162,187,109,32,235,31,162,253,49,30,
+126,63,33,249,244,66,75,186,80,197,91,73,205,163,40,136,111,204,188,73,12,241,110,215,233,135,85,190,180,100,30,143,
+15,183,211,160,50,179,51,191,144,1,16,212,27,243,250,61,164,102,119,239,82,152,29,111,180,97,43,55,75,64,253,89,
+71,224,88,232,192,124,184,103,43,83,127,164,84,158,206,133,17,200,15,1,161,109,48,95,54,33,104,134,236,0,148,0,
+111,216,253,18,21,239,242,95,128,210,109,62,219,26,250,207,67,138,145,226,217,160,5,57,85,87,7,197,80,10,228,38,
+191,238,101,13,202,98,150,145,1,246,42,21,135,132,55,100,44,213,151,119,58,159,41,13,201,64,58,88,238,175,122,142,
+77,59,7,173,204,177,19,221,183,168,182,114,209,161,155,45,74,233,168,36,29,129,103,26,225,109,207,117,255,193,116,53,
+204,20,239,169,209,57,235,234,49,230,198,200,149,5,126,224,209,173,241,175,100,16,189,138,76,11,51,183,65,74,231,238,
+109,103,133,126,215,153,208,207,83,228,156,94,67,204,32,118,25,3,41,140,74,1,11,214,34,208,247,180,141,240,71,241,
+162,143,74,250,66,178,133,91,243,238,27,61,65,53,53,12,81,222,104,229,128,97,65,77,212,160,246,172,177,102,165,194,
+3,253,21,24,189,112,175,31,58,232,231,59,61,208,225,54,38,125,236,241,254,157,153,226,135,190,20,205,95,76,66,113,
+19,69,170,101,166,154,106,186,219,194,249,55,59,218,106,124,249,181,72,14,11,233,136,60,19,134,73,129,30,146,65,250,
+54,100,255,205,36,102,196,153,179,81,98,108,182,92,157,78,72,219,231,155,141,195,222,33,34,161,46,156,140,84,85,116,
+127,23,165,26,21,39,23,208,248,34,114,19,131,198,107,11,26,181,181,156,97,138,0,231,140,79,143,164,1,122,62,57,
+162,113,143,159,106,3,90,129,127,35,67,21,164,238,235,12,251,242,136,42,55,252,5,219,63,167,168,213,74,36,25,181,
+159,177,169,92,214,133,42,134,191,202,152,14,128,208,53,150,201,122,168,94,255,134,37,223,114,205,204,206,66,115,219,203,
+66,69,15,69,15,202,97,224,205,245,232,75,13,252,218,99,7,152,207,10,174,176,55,28,64,64,73,225,86,151,43,97,
+234,189,86,167,89,118,150,250,236,231,215,191,27,76,253,199,255,120,207,187,22,144,252,51,52,34,105,24,166,47,8,68,
+131,254,79,174,41,55,19,9,214,225,29,40,36,219,202,116,117,106,107,246,214,251,147,236,164,175,76,237,191,73,88,237,
+31,194,72,159,86,207,242,177,250,96,100,23,152,143,101,236,121,254,243,124,147,231,246,118,164,88,52,231,85,255,34,151,
+67,122,134,75,81,78,180,193,89,253,119,229,9,28,65,173,115,6,43,217,8,8,85,253,193,30,123,107,51,88,211,232,
+126,143,96,40,6,130,56,205,58,23,61,189,115,84,154,36,57,188,188,237,199,237,32,189,39,125,118,219,71,167,50,36,
+199,53,54,121,203,207,206,208,82,144,217,160,203,95,204,18,90,48,241,160,238,100,230,107,208,10,7,20,12,129,31,251,
+145,115,178,70,41,102,98,195,184,54,17,239,70,244,255,236,228,207,173,31,108,105,239,86,177,43,154,202,8,8,149,41,
+195,42,164,100,105,251,31,209,68,64,112,126,61,139,137,227,73,68,15,19,209,113,73,53,211,240,240,252,156,115,160,235,
+214,14,126,101,221,6,74,115,62,202,242,118,108,34,147,196,64,236,179,34,172,45,215,95,243,71,253,207,44,157,234,210,
+237,242,189,120,240,139,134,248,22,164,42,231,9,163,25,55,41,136,3,13,69,168,43,183,40,63,44,192,2,36,241,41,
+87,35,53,69,45,232,128,12,96,92,229,7,35,201,3,223,32,5,244,20,95,214,218,117,98,216,243,73,229,235,162,238,
+13,234,58,244,167,126,197,255,243,244,89,148,63,170,59,170,91,30,111,106,215,212,48,31,158,10,28,114,246,121,193,142,
+92,68,47,236,124,160,180,152,67,195,88,152,223,29,90,160,238,153,133,185,211,237,70,251,8,133,137,110,165,50,132,159,
+34,236,44,185,219,135,216,57,209,211,24,19,151,231,171,159,214,68,28,252,159,201,50,24,23,247,25,120,51,154,96,251,
+247,195,102,118,5,172,74,68,77,107,192,124,162,144,214,51,36,234,246,181,65,234,54,156,50,225,71,131,49,32,254,133,
+135,236,178,241,114,133,77,76,29,13,72,122,37,218,150,103,67,8,119,174,243,88,55,32,103,162,218,50,211,11,204,92,
+178,193,170,56,255,28,38,47,93,37,152,137,244,29,36,73,98,68,215,252,54,19,87,37,221,24,122,92,27,181,93,82,
+248,23,65,153,249,134,213,79,68,237,3,141,144,156,3,69,137,57,77,29,49,235,192,88,246,106,16,175,7,164,200,38,
+203,60,46,74,51,87,84,225,75,184,255,86,246,123,93,55,58,191,11,176,225,17,228,179,78,175,14,99,108,78,83,133,
+185,227,201,133,176,147,168,105,122,69,162,229,255,27,188,204,244,147,37,86,151,92,74,51,194,39,24,36,45,209,95,56,
+107,29,94,16,158,198,221,9,87,168,22,133,41,223,37,12,128,67,41,220,3,121,151,94,0,18,254,32,20,101,146,146,
+74,5,239,212,25,223,28,3,245,132,122,6,236,110,156,148,162,169,170,137,32,0,197,36,19,20,155,102,14,90,176,155,
+150,6,102,136,2,152,142,39,200,163,125,112,247,53,217,99,31,3,185,38,131,220,34,163,97,64,5,184,144,4,145,126,
+90,50,180,175,173,39,33,208,198,35,101,37,184,82,42,140,53,221,23,137,5,42,90,184,75,31,20,99,216,167,190,223,
+39,22,54,124,19,217,84,176,197,79,191,102,72,182,212,230,229,195,7,180,254,32,51,106,33,110,100,215,235,196,31,87,
+108,143,240,129,74,174,82,84,53,103,146,184,213,59,91,1,59,14,208,75,195,59,83,240,191,28,188,252,255,54,13,2,
+72,205,60,210,34,96,32,210,0,159,159,221,55,208,99,12,99,178,222,250,171,223,204,9,232,245,246,73,105,9,195,170,
+206,38,228,88,169,205,44,148,154,12,56,117,9,50,140,122,78,244,179,152,47,181,133,166,193,17,247,108,167,205,213,130,
+107,140,150,46,215,46,94,198,232,177,157,90,2,16,89,169,8,125,187,139,63,58,192,45,116,71,238,44,101,157,132,225,
+196,172,114,87,113,71,57,215,199,79,73,224,36,95,193,223,125,125,72,202,153,116,113,24,42,233,8,47,102,12,73,43,
+69,162,227,182,174,182,119,135,208,71,34,211,50,239,42,187,132,56,51,120,237,58,184,82,90,121,192,0,238,51,33,144,
+118,182,227,106,181,178,209,242,25,246,165,157,100,109,203,184,222,211,52,250,205,10,187,189,187,211,227,49,78,186,33,176,
+17,27,106,180,185,23,250,30,139,43,223,77,46,57,192,231,217,225,32,165,16,159,54,74,85,16,215,225,73,97,29,229,
+59,135,109,230,141,250,152,224,208,40,223,231,82,254,60,176,207,185,119,142,111,241,1,63,155,247,35,103,120,192,201,110,
+9,207,159,147,28,104,14,233,198,209,72,136,41,106,174,242,48,232,171,33,97,113,149,27,60,176,211,225,144,235,20,168,
+157,201,174,196,71,43,60,237,249,127,83,46,202,223,99,40,46,245,236,12,146,20,119,248,179,2,211,90,237,14,251,168,
+133,49,251,219,154,242,214,141,163,236,157,177,30,174,35,154,30,234,193,59,68,11,237,31,89,160,108,96,190,248,163,6,
+143,140,186,195,32,252,205,54,184,111,170,200,179,134,110,133,187,139,254,139,120,108,246,52,80,85,191,86,186,178,73,161,
+35,240,104,174,205,139,47,171,255,84,207,242,60,146,21,14,138,200,18,210,159,31,112,183,189,69,222,35,207,225,198,177,
+203,109,182,181,158,18,130,128,223,249,146,53,144,255,5,231,194,172,157,154,207,219,132,114,217,223,48,244,183,82,227,154,
+142,182,222,216,54,156,221,44,233,221,98,46,175,154,1,201,220,87,128,105,220,175,98,136,115,153,163,188,219,106,33,162,
+104,124,96,116,91,146,225,239,126,147,156,79,171,221,53,57,134,18,156,75,21,30,144,68,124,158,102,212,4,94,39,64,
+82,114,126,211,102,41,161,152,96,170,207,36,217,195,229,61,233,196,87,211,194,67,253,6,119,176,150,186,103,148,146,253,
+27,132,30,118,215,143,124,180,206,192,177,73,239,178,205,169,84,176,172,139,28,209,216,71,100,253,0,146,37,137,143,223,
+155,154,146,150,73,191,60,191,204,137,221,201,216,155,108,235,233,159,91,20,141,155,119,108,76,82,175,71,248,5,15,46,
+209,12,130,204,237,220,72,138,234,176,72,165,102,43,170,218,219,240,80,155,248,239,179,94,202,140,246,93,221,58,76,82,
+91,87,217,132,111,73,212,27,252,145,205,132,98,208,30,234,114,119,28,60,106,228,14,147,206,240,35,73,75,32,3,169,
+143,128,1,18,24,42,61,121,240,155,51,52,30,141,193,175,111,11,213,34,99,53,113,185,187,81,100,123,7,117,6,202,
+65,230,214,197,140,144,109,154,95,187,118,129,39,238,107,70,89,253,51,64,4,210,214,27,183,244,66,155,223,135,119,42,
+114,139,137,17,221,22,20,172,211,19,73,10,234,227,163,60,115,22,93,137,131,249,187,79,74,169,206,166,138,188,138,148,
+75,49,31,105,205,106,99,200,89,181,162,124,99,234,175,34,156,110,181,5,148,121,165,233,174,20,215,40,60,194,139,208,
+118,219,53,98,179,243,221,109,82,173,83,175,125,163,246,69,26,33,250,24,165,250,62,111,197,138,68,254,168,47,94,114,
+27,252,40,186,141,102,109,63,202,13,36,221,101,174,212,44,121,10,204,14,69,29,86,150,86,211,224,4,176,169,75,143,
+38,142,217,232,125,86,210,99,238,39,3,149,192,61,206,33,86,22,148,124,60,42,214,198,0,96,58,143,62,129,135,20,
+153,129,71,229,68,238,109,175,63,237,189,179,167,250,252,79,129,86,34,38,127,196,92,13,1,222,242,10,129,92,118,151,
+70,172,233,74,113,92,56,213,237,173,131,135,177,244,81,9,74,9,161,87,139,159,160,110,15,30,254,2,183,149,184,91,
+203,250,158,79,209,246,65,138,70,240,151,125,243,184,252,124,193,130,41,27,16,202,160,117,127,25,193,235,106,226,237,180,
+212,148,47,217,40,190,78,30,107,97,11,54,35,88,238,100,116,247,103,120,207,78,254,235,33,78,103,2,96,8,228,48,
+155,116,95,215,76,249,161,5,178,28,163,33,106,254,138,246,169,186,116,70,143,132,185,239,196,9,45,228,2,116,128,144,
+254,190,46,207,3,217,219,199,16,89,78,22,161,211,242,188,22,51,226,15,88,159,41,33,21,140,210,208,8,63,81,34,
+119,67,36,91,71,228,139,60,69,90,69,139,32,147,48,235,183,23,150,28,171,46,88,192,61,2,54,55,33,227,240,92,
+241,202,81,168,224,4,129,206,253,47,161,198,35,158,71,50,132,115,176,41,46,31,225,248,54,225,23,69,30,145,30,76,
+153,29,38,32,254,229,100,124,100,18,91,159,221,128,42,75,75,53,1,173,181,96,82,187,32,236,183,7,154,198,174,182,
+70,106,23,145,63,207,168,211,32,184,215,20,59,61,29,254,190,57,212,153,30,196,6,159,42,79,14,103,151,186,27,146,
+254,20,37,121,83,29,117,113,18,228,157,44,205,254,38,142,159,124,113,216,233,97,137,44,38,104,154,5,152,50,84,119,
+207,150,15,238,253,159,204,237,230,238,71,184,24,59,42,167,59,68,189,97,210,10,141,121,75,54,62,254,38,214,121,243,
+55,110,213,4,6,102,224,36,13,103,128,142,9,5,223,206,139,99,135,117,83,191,223,223,179,74,116,37,202,222,158,113,
+120,164,231,173,80,92,141,177,200,45,175,224,5,255,149,31,206,215,117,161,115,235,89,11,116,1,63,204,205,183,115,177,
+84,26,1,81,19,78,129,129,10,20,196,142,239,114,85,14,223,219,105,248,110,232,23,197,249,19,135,163,29,153,245,181,
+238,9,240,150,170,126,249,112,16,83,67,21,39,117,78,113,20,90,10,182,109,108,59,54,232,49,39,46,125,150,201,182,
+76,193,164,99,45,254,92,64,247,55,199,84,128,129,22,47,136,98,191,97,201,235,246,45,33,30,135,187,8,216,125,112,
+176,66,73,237,242,182,99,110,26,151,0,20,188,119,174,220,116,42,124,195,103,102,9,85,195,242,131,153,172,1,208,32,
+251,129,133,251,200,169,69,98,216,8,48,147,170,251,165,108,239,42,169,63,76,127,51,22,18,118,230,128,102,166,77,234,
+115,236,108,249,90,99,125,119,86,50,243,171,219,141,47,244,255,205,97,164,19,94,136,165,48,69,2,197,1,56,62,227,
+77,138,101,198,62,83,234,169,233,237,170,24,187,244,106,31,59,161,245,37,205,114,154,33,237,199,190,177,132,146,216,168,
+235,199,126,205,143,52,118,18,26,57,100,145,246,79,111,13,10,177,55,186,236,170,250,132,245,116,149,6,161,39,157,85,
+4,25,67,252,210,124,4,216,40,101,16,234,183,184,241,141,115,39,169,64,214,222,138,203,237,135,1,97,25,230,145,117,
+5,220,210,170,63,160,125,149,255,226,123,103,1,244,224,216,136,52,163,192,135,42,210,104,32,130,84,243,28,184,23,99,
+46,123,242,112,160,94,38,160,28,115,191,83,254,18,98,192,2,31,29,154,155,128,14,253,96,212,207,10,134,173,205,96,
+108,101,207,99,23,207,185,230,111,163,114,16,56,83,74,162,43,45,244,213,203,56,170,27,187,126,235,206,251,3,69,131,
+127,170,34,36,155,79,81,52,218,239,127,21,178,123,151,250,232,11,196,155,63,123,115,230,207,251,65,74,66,222,43,83,
+27,188,56,211,80,43,80,243,220,65,254,242,249,196,38,144,112,62,94,191,252,0,85,244,226,103,164,119,205,35,85,155,
+0,245,112,123,251,61,211,231,220,68,121,141,125,211,27,6,194,60,133,18,36,121,139,255,34,51,125,199,8,119,245,110,
+24,72,104,14,255,198,151,243,126,171,15,197,184,9,121,78,194,31,223,2,202,102,192,132,231,41,77,229,146,97,162,20,
+106,114,173,201,79,103,233,107,188,190,230,192,198,105,54,251,171,145,58,65,149,242,70,138,35,79,109,104,195,213,135,60,
+226,192,61,198,199,134,88,64,250,244,18,85,114,99,158,24,103,250,153,204,161,70,44,94,150,191,63,51,239,1,208,70,
+178,230,234,164,10,75,195,245,3,240,194,176,95,113,253,88,123,68,8,143,132,66,6,49,183,180,203,205,192,185,160,232,
+121,72,85,150,173,8,49,65,158,125,255,6,21,207,96,156,171,25,244,126,106,226,84,243,192,38,20,194,38,66,13,9,
+172,241,244,89,225,116,246,139,122,81,228,222,166,241,228,252,81,39,87,166,8,214,82,222,161,107,82,184,113,120,174,152,
+128,205,52,183,117,104,38,200,221,17,170,53,75,156,192,215,141,103,156,192,177,36,224,118,253,51,248,251,193,170,175,158,
+233,39,19,134,56,232,145,91,234,201,235,235,236,230,132,190,125,127,213,41,57,92,107,158,184,185,225,213,242,206,180,0,
+214,190,138,71,116,183,205,179,249,215,243,231,217,65,174,247,109,254,105,162,210,240,164,1,113,82,33,233,20,202,5,74,
+142,42,239,189,62,122,254,3,130,83,28,52,135,9,40,196,48,45,88,197,220,255,240,56,132,13,222,29,219,10,236,149,
+88,8,244,198,186,190,4,248,167,136,151,236,26,29,233,112,175,23,220,32,251,182,224,217,74,15,102,23,254,229,249,140,
+146,87,165,167,133,19,196,183,212,161,62,51,63,142,229,127,97,127,14,242,48,234,133,2,16,150,3,250,107,203,174,73,
+192,197,84,59,50,27,136,176,60,96,105,90,192,38,81,41,152,104,28,61,117,167,34,213,48,66,190,82,179,199,145,90,
+181,81,148,40,196,48,46,131,177,211,83,200,113,77,190,231,100,152,209,57,172,101,142,252,158,201,156,86,190,210,124,210,
+247,129,54,187,76,135,217,171,144,72,192,139,133,12,228,36,180,204,28,134,18,52,38,88,137,186,68,62,57,154,242,212,
+163,71,113,253,197,243,122,219,167,111,219,251,85,134,44,225,149,40,253,55,161,1,212,169,172,64,189,207,198,7,137,58,
+218,40,229,240,7,18,36,62,12,128,176,66,97,93,50,121,9,173,80,37,47,114,107,33,199,218,152,197,226,55,220,44,
+216,82,117,60,105,43,101,20,228,113,62,149,168,141,78,255,86,172,217,157,151,134,74,167,40,230,86,175,72,202,99,228,
+182,148,14,225,224,220,195,31,205,27,45,8,239,251,221,103,139,99,118,87,14,38,19,107,27,112,126,239,168,42,89,45,
+47,232,82,144,88,179,231,181,167,28,81,31,71,47,179,57,249,114,197,143,28,51,211,127,141,198,73,152,31,185,250,107,
+218,18,40,42,86,108,224,237,231,150,221,113,2,148,163,164,203,50,128,138,136,129,101,195,191,243,127,59,39,187,16,4,
+28,22,161,67,145,75,83,82,161,73,118,255,177,227,73,234,34,73,104,150,244,49,63,78,166,254,87,167,241,224,31,0,
+236,147,4,166,131,132,120,231,142,130,132,188,190,121,187,130,204,102,233,216,97,228,100,241,133,99,146,0,245,179,29,125,
+175,46,181,43,191,220,157,221,202,247,132,249,173,6,108,56,181,97,216,45,39,217,74,94,208,73,16,132,100,131,233,21,
+9,14,191,102,240,33,212,152,3,17,151,225,101,98,10,57,219,63,230,19,78,3,63,80,127,127,210,59,203,176,169,127,
+175,172,103,33,223,69,31,32,35,97,111,246,190,217,242,1,107,220,201,207,116,35,197,15,112,121,213,110,56,55,68,82,
+76,176,217,27,227,83,42,64,31,125,229,42,134,141,250,226,159,0,255,205,41,205,31,250,207,10,118,37,147,39,231,173,
+116,49,37,89,247,249,53,234,143,65,138,55,200,106,0,213,115,11,100,105,31,246,106,234,203,169,233,13,96,0,12,38,
+218,165,114,15,54,253,79,198,233,54,174,20,224,41,94,66,219,179,114,194,217,55,36,42,99,151,88,184,178,222,154,136,
+243,200,115,176,17,156,23,52,218,2,250,146,218,184,28,78,1,76,119,172,206,190,160,42,83,197,149,127,155,28,152,66,
+55,209,184,19,62,255,230,169,200,38,38,32,42,161,247,150,135,31,147,44,76,135,223,19,212,26,14,63,71,227,173,17,
+220,227,66,126,148,126,5,143,212,99,230,114,168,99,232,32,107,97,132,84,78,207,5,84,156,162,8,234,205,191,189,153,
+99,62,17,171,45,160,223,157,35,176,140,102,66,132,87,76,236,108,64,145,190,135,31,137,235,62,179,196,253,210,66,133,
+113,209,41,50,248,224,171,103,9,202,30,142,213,37,150,245,100,243,117,246,72,232,252,105,74,175,128,43,144,201,21,7,
+176,176,88,84,90,221,44,141,199,40,57,249,135,104,109,3,132,15,50,66,78,83,243,82,76,177,116,110,95,209,72,55,
+33,0,109,234,179,194,131,27,97,177,151,181,230,34,145,58,222,58,144,1,136,87,241,205,246,132,75,131,95,181,73,250,
+83,8,53,97,230,145,18,82,224,39,123,228,133,60,144,193,94,136,180,111,79,220,118,204,113,3,107,104,123,1,96,12,
+232,188,10,23,81,21,57,253,251,220,50,123,192,35,30,200,113,115,190,49,229,73,44,214,4,0,54,83,175,186,246,27,
+145,38,174,136,228,236,217,106,4,236,53,143,85,169,145,51,139,92,49,186,45,10,250,143,9,100,38,233,193,142,82,69,
+224,230,196,250,76,247,132,222,221,185,146,64,220,141,149,42,206,170,126,109,14,147,229,225,177,149,62,213,129,101,16,248,
+196,217,15,243,121,109,226,203,91,98,14,182,154,107,167,118,176,133,255,88,150,141,252,204,158,178,39,7,200,83,183,51,
+252,36,38,191,69,207,98,134,215,106,214,132,65,81,246,248,178,187,221,176,192,151,186,69,15,132,252,180,199,107,123,122,
+49,129,70,15,85,15,238,51,166,5,93,16,160,51,155,180,249,90,18,120,226,194,187,181,139,204,31,122,75,158,90,58,
+150,177,242,199,59,127,121,177,154,180,197,63,115,22,246,245,18,156,87,52,46,152,36,169,103,112,38,5,218,165,97,205,
+200,196,27,16,130,253,91,103,57,49,127,2,203,118,253,213,178,98,147,45,186,233,56,255,25,17,43,179,47,85,25,23,
+223,177,157,169,68,119,14,85,57,18,93,48,230,66,165,126,102,7,162,138,71,94,244,46,244,118,38,237,94,91,111,150,
+116,126,96,208,99,187,44,122,87,187,164,203,33,67,153,214,115,110,75,45,155,238,153,9,127,37,3,230,2,75,255,107,
+197,226,222,105,41,232,231,170,108,129,28,177,109,213,251,123,63,112,89,64,102,79,76,16,177,143,142,132,151,107,228,12,
+125,114,176,160,213,117,253,27,20,86,228,164,184,9,146,181,114,211,56,251,47,141,79,20,13,65,232,29,15,243,186,247,
+123,14,192,254,156,134,140,93,50,127,31,87,52,163,67,146,213,127,74,251,195,92,36,134,74,12,175,219,240,255,166,205,
+24,71,180,46,233,240,95,146,226,211,181,118,54,16,136,200,169,60,63,122,66,72,85,50,115,16,40,60,153,9,28,132,
+118,224,214,157,194,202,21,129,105,108,3,142,147,204,218,242,126,82,241,88,131,71,175,189,207,115,240,26,1,0,37,135,
+17,133,141,253,51,10,16,79,11,226,80,226,46,133,245,177,17,233,64,200,117,48,24,179,134,204,136,76,195,236,102,53,
+144,128,134,91,101,242,72,100,63,96,202,18,158,99,30,187,192,108,182,160,163,237,173,23,83,108,19,186,149,210,34,57,
+180,141,213,174,244,134,29,24,197,210,33,161,101,201,50,92,69,79,147,134,178,228,121,89,217,240,110,68,229,140,223,22,
+249,236,85,37,181,46,172,2,66,32,218,149,206,118,237,89,12,240,166,175,37,181,65,61,50,118,77,55,196,163,212,45,
+18,3,245,61,151,86,24,47,115,37,111,230,249,40,98,169,196,117,216,229,207,95,110,49,122,138,245,182,178,38,4,168,
+157,191,151,177,67,223,148,209,132,150,78,53,197,162,222,62,134,161,224,219,145,245,107,71,217,230,123,240,172,48,63,111,
+92,152,228,187,150,45,150,106,79,42,14,186,89,21,127,236,213,104,61,25,148,3,99,249,178,28,253,103,48,97,234,176,
+222,230,204,239,147,213,118,4,67,6,154,38,33,208,221,21,7,208,21,79,194,41,28,145,143,156,59,11,39,63,12,38,
+147,86,215,167,112,252,254,184,117,75,179,125,3,9,206,97,163,84,165,191,77,19,166,85,206,46,123,76,72,167,78,69,
+169,212,33,57,159,62,119,239,81,229,199,228,50,64,106,107,229,24,130,238,17,106,91,191,33,17,223,30,94,33,126,146,
+225,98,40,75,129,3,132,38,123,38,12,108,183,22,213,191,0,141,76,71,242,254,206,42,197,110,214,139,204,156,26,172,
+52,241,29,144,151,189,100,255,253,160,198,50,149,3,199,106,134,22,54,10,178,174,150,24,239,126,130,254,81,39,11,170,
+121,128,231,239,89,132,90,69,153,150,244,28,238,193,20,200,197,253,31,123,16,201,21,50,167,252,150,32,192,151,217,237,
+107,10,230,103,90,18,10,208,52,79,240,252,80,31,97,191,200,165,121,153,135,18,87,3,62,32,19,200,208,54,196,169,
+61,203,23,8,80,219,142,97,130,9,251,2,20,63,175,160,121,193,106,165,120,204,90,66,255,251,184,5,80,151,197,225,
+215,172,56,221,229,211,222,42,202,64,85,27,124,206,216,141,114,177,154,72,53,217,168,191,243,25,82,19,6,194,199,9,
+117,6,159,18,43,141,8,210,217,29,138,20,108,213,57,253,158,35,48,245,119,198,174,89,223,101,242,126,197,213,68,169,
+255,150,17,166,234,139,145,131,212,115,224,222,157,63,174,165,4,81,23,77,250,161,21,38,176,70,24,3,116,54,114,85,
+253,205,225,95,238,70,46,66,94,93,34,161,80,4,169,86,223,117,101,16,29,172,212,147,188,38,1,1,157,100,244,104,
+61,214,124,198,141,1,33,184,190,215,12,217,233,245,192,113,187,228,63,210,241,26,158,89,174,11,190,140,79,98,238,217,
+227,153,224,51,50,245,65,26,251,66,216,151,92,8,56,77,186,149,215,174,135,68,49,26,131,224,98,69,120,24,227,119,
+246,122,204,126,124,112,23,161,112,51,28,224,255,253,195,123,105,169,253,231,146,107,92,134,48,53,233,232,100,226,143,160,
+23,205,119,187,130,129,114,53,187,148,172,131,245,177,203,14,10,120,59,22,188,159,193,96,54,255,202,67,179,78,168,54,
+245,55,130,115,175,74,174,80,113,117,203,21,31,250,194,216,141,50,255,140,167,154,209,197,192,221,6,64,241,179,233,202,
+149,228,79,126,178,194,129,2,134,177,201,70,192,0,247,133,128,21,222,34,58,172,98,3,14,95,50,88,158,54,139,226,
+105,69,128,72,206,27,33,184,164,57,157,30,172,57,95,98,151,188,223,23,14,207,220,58,196,199,180,96,170,97,54,165,
+5,205,30,97,148,130,143,245,200,123,5,2,131,232,62,54,187,130,79,88,32,159,145,133,146,226,108,128,255,242,83,38,
+118,145,190,32,113,131,21,9,189,189,202,44,25,182,242,41,166,94,194,234,197,154,174,173,122,171,4,230,179,201,28,175,
+80,46,136,44,148,183,85,108,192,166,225,15,180,233,153,105,103,220,77,242,231,41,171,241,220,73,17,155,15,48,111,55,
+86,84,198,24,253,72,47,198,199,56,130,175,53,179,130,53,124,71,7,151,191,75,223,113,65,253,26,190,21,215,22,197,
+134,1,28,198,138,238,197,30,72,37,17,212,42,68,76,175,12,36,9,225,233,14,98,79,135,208,62,32,167,113,137,197,
+250,222,238,45,213,248,81,101,249,73,16,77,85,134,222,28,175,232,249,184,115,111,96,227,140,125,184,78,128,230,14,212,
+70,242,99,63,97,110,121,255,250,114,145,142,201,234,17,3,32,102,139,132,24,44,214,185,107,147,190,117,64,115,172,19,
+232,227,224,188,245,147,224,48,4,250,67,248,2,83,216,80,63,55,169,43,76,248,111,42,60,159,180,198,232,69,92,245,
+24,56,66,145,56,17,202,255,80,148,217,139,125,181,190,211,239,134,54,204,166,159,177,83,254,152,207,175,227,191,240,233,
+194,147,44,96,178,203,18,96,147,133,235,214,124,100,117,56,35,173,131,82,170,236,178,150,83,224,213,213,45,8,56,227,
+164,139,114,12,197,51,12,17,103,114,107,78,146,115,151,140,86,62,24,234,139,242,127,109,78,151,168,204,188,46,0,70,
+22,213,149,143,120,38,172,217,252,35,20,111,29,180,108,138,197,28,180,158,134,242,33,186,238,14,103,188,48,191,17,60,
+21,230,33,226,11,203,94,239,0,216,81,224,75,67,242,68,68,254,84,237,69,234,109,211,56,139,123,188,217,16,243,251,
+95,81,118,83,24,172,187,13,31,101,16,218,57,2,75,136,74,96,179,74,1,78,55,164,189,68,214,115,135,174,219,33,
+156,5,172,92,70,16,37,238,65,164,15,43,99,154,11,235,78,185,22,107,44,6,33,194,98,255,95,89,69,21,110,18,
+58,14,31,253,150,199,25,121,231,50,58,63,68,169,167,0,174,21,181,147,201,153,222,34,159,136,162,204,26,14,192,251,
+172,142,67,153,84,231,38,138,4,80,153,4,100,43,133,139,243,139,228,15,222,130,207,243,77,200,167,167,58,218,93,236,
+120,183,6,176,123,192,44,143,49,73,112,231,103,169,85,254,10,161,54,55,172,179,140,74,200,25,196,147,9,249,213,9,
+228,14,121,211,10,147,139,155,8,79,167,152,234,85,83,154,96,192,89,120,159,37,226,80,38,126,26,178,202,39,163,116,
+17,110,177,254,113,193,164,4,28,91,10,234,44,137,118,38,230,22,248,247,51,164,31,242,202,102,16,119,158,227,26,63,
+95,198,191,38,239,243,84,16,127,57,94,253,110,112,168,125,184,231,41,99,206,116,218,102,221,227,8,202,40,77,33,182,
+219,202,222,85,240,202,52,18,43,86,144,218,112,21,25,40,120,184,89,222,240,254,22,96,65,136,115,71,239,134,31,200,
+161,206,74,205,55,55,197,242,148,89,246,189,231,57,254,114,131,112,185,130,16,238,213,184,9,87,50,140,111,8,211,235,
+194,29,91,186,33,251,231,10,44,218,161,227,7,133,3,153,102,84,124,175,30,52,152,163,94,116,178,37,88,49,84,161,
+237,202,35,80,123,230,131,129,44,214,27,244,96,213,196,91,4,155,204,33,211,181,85,191,133,151,215,71,4,127,86,26,
+164,249,201,71,163,243,13,84,19,84,31,173,175,181,55,159,18,149,252,13,100,55,95,237,77,252,149,211,21,91,199,140,
+115,149,207,72,211,122,61,184,106,171,180,179,41,172,77,10,169,60,113,81,240,23,243,232,64,64,18,84,66,251,238,184,
+147,47,85,197,252,160,150,172,23,0,8,211,112,148,84,99,27,30,217,119,98,200,249,91,2,149,149,229,210,43,91,93,
+44,28,72,219,152,83,109,135,242,9,214,52,61,250,196,232,240,138,57,122,49,124,220,30,113,145,152,211,97,39,223,165,
+134,158,183,102,178,120,219,188,192,211,203,62,8,160,1,255,141,68,41,235,139,149,71,45,11,232,133,199,204,5,160,153,
+12,133,90,32,89,19,192,0,187,50,144,177,194,49,148,11,137,42,63,60,111,152,118,15,237,75,196,80,171,103,10,120,
+253,206,3,177,10,201,144,153,117,81,180,81,115,249,129,171,100,179,220,101,81,53,99,229,217,140,83,152,24,4,183,130,
+130,119,130,51,166,9,177,165,78,119,208,40,119,28,6,15,254,251,144,83,5,143,183,71,89,249,100,160,47,28,101,170,
+6,199,167,241,205,48,243,131,196,166,10,158,18,49,159,168,178,114,198,58,27,207,77,195,100,160,48,15,86,227,188,120,
+36,118,233,4,30,175,128,60,102,53,186,252,28,168,81,152,80,126,86,201,9,215,7,124,16,255,183,29,170,123,4,219,
+21,204,146,102,178,166,172,251,55,142,126,211,63,111,242,210,67,19,30,42,75,150,35,2,177,233,108,21,97,130,22,143,
+193,56,138,78,126,57,176,182,153,129,220,167,228,193,96,25,116,194,189,217,243,165,101,251,12,22,59,117,98,235,241,145,
+145,17,134,40,122,241,86,212,3,158,106,172,99,115,180,66,51,223,109,102,75,47,229,163,4,8,193,59,138,65,107,169,
+106,15,246,134,47,39,126,9,2,227,169,16,218,206,202,226,27,134,142,170,232,236,104,219,61,33,40,186,242,83,33,159,
+102,64,163,146,22,142,78,0,77,20,94,79,75,40,29,4,244,7,33,125,43,231,79,42,43,203,193,97,43,202,89,79,
+119,27,251,182,64,23,170,221,246,71,179,210,24,245,159,93,154,153,49,250,95,92,187,205,37,239,136,91,45,171,168,107,
+167,208,151,127,119,199,12,238,129,180,148,45,24,255,250,114,145,142,201,234,17,3,32,102,139,132,24,44,214,185,107,147,
+190,117,64,115,172,19,232,227,224,188,245,147,224,48,4,250,67,248,2,83,216,80,63,55,169,43,76,248,111,42,60,159,
+180,198,232,69,92,245,24,56,66,145,56,17,202,255,80,148,217,139,125,181,190,211,239,134,54,204,166,159,177,83,254,152,
+207,175,227,191,240,233,194,147,44,96,178,203,18,96,147,133,235,214,124,100,117,56,35,173,131,82,170,236,178,150,83,224,
+213,213,45,8,56,227,164,139,114,12,197,51,12,17,103,114,107,78,146,115,151,140,86,62,24,234,139,242,127,109,78,151,
+168,204,188,46,0,70,22,213,149,143,120,38,172,217,252,35,20,111,29,180,108,138,197,28,180,158,134,242,33,186,238,14,
+103,188,48,191,17,60,21,230,33,226,11,203,94,239,0,216,81,224,75,67,242,68,68,254,84,237,69,234,109,211,56,139,
+123,188,217,16,243,251,95,81,118,83,24,172,187,13,31,101,16,218,57,2,75,136,74,96,179,74,1,78,55,164,189,68,
+214,115,135,174,219,33,156,5,172,92,70,16,37,238,65,164,15,43,99,154,11,235,78,185,22,107,44,6,33,194,98,255,
+95,89,69,21,110,18,58,14,31,253,150,199,25,121,231,50,58,63,68,169,167,0,174,21,181,147,201,153,222,34,159,136,
+162,204,26,14,192,251,172,142,67,153,84,231,38,138,4,80,153,4,100,43,133,139,243,139,228,15,222,130,207,243,77,200,
+167,167,58,218,93,236,120,183,6,176,123,192,44,143,49,73,112,231,103,169,85,254,10,161,54,55,172,179,140,74,200,25,
+196,147,9,249,213,9,228,14,121,211,10,147,139,155,8,79,167,152,234,85,83,154,96,192,89,120,159,37,226,80,38,126,
+26,178,202,39,163,116,17,110,177,254,113,193,164,4,28,91,10,234,44,137,118,38,230,22,248,247,51,164,31,242,202,102,
+16,119,158,227,26,63,95,198,191,38,239,243,84,16,127,57,94,253,110,112,168,125,184,231,41,99,206,116,218,102,221,227,
+8,202,40,77,33,182,219,202,222,73,136,142,214,171,239,124,201,107,202,128,38,216,251,196,41,80,86,219,8,94,247,79,
+48,120,209,86,86,45,203,192,192,149,64,218,16,162,177,172,106,57,245,2,162,139,82,50,70,22,101,180,238,164,91,138,
+186,55,77,124,236,31,253,76,203,87,87,229,40,176,8,62,31,43,129,246,4,3,137,40,26,83,35,135,131,83,35,175,
+212,42,37,150,55,215,243,44,107,202,127,145,200,235,138,161,38,67,194,195,166,23,186,249,130,191,1,141,235,7,235,89,
+8,15,42,56,46,77,245,155,245,192,116,108,156,14,33,83,28,193,255,173,217,32,109,101,194,138,50,79,27,179,157,167,
+117,232,99,62,242,159,8,3,159,190,168,23,121,143,115,227,8,55,139,252,143,155,178,37,26,113,113,231,4,55,233,38,
+77,1,4,130,204,175,199,95,240,106,171,183,133,114,196,218,161,10,86,39,75,158,129,69,223,149,57,214,30,59,123,252,
+214,66,144,41,213,22,199,92,21,143,178,125,50,231,113,233,29,119,222,200,59,255,194,243,66,102,225,220,75,127,206,172,
+49,106,111,132,97,141,177,195,84,102,112,65,117,94,70,146,115,57,40,170,227,61,250,130,236,119,71,136,239,224,2,53,
+8,51,113,66,44,94,87,60,45,45,36,92,160,54,190,62,244,38,190,201,146,104,34,239,159,29,66,222,10,187,133,217,
+217,2,146,129,150,180,170,174,56,93,136,161,62,74,68,230,215,249,101,255,46,154,156,49,66,3,57,154,230,66,223,89,
+198,34,20,216,73,185,142,238,41,35,202,103,175,26,135,89,232,69,95,223,54,201,162,107,226,44,6,173,231,251,3,37,
+227,106,249,93,254,92,174,82,163,81,10,7,238,236,94,225,98,236,224,190,185,162,206,4,22,207,52,36,57,93,78,29,
+101,242,157,156,76,231,113,188,180,44,203,227,72,57,160,123,2,219,120,235,173,61,55,19,56,70,68,141,59,208,142,122,
+32,27,72,41,127,130,94,4,159,3,251,143,59,20,184,93,52,193,178,191,122,60,172,163,20,121,159,222,182,192,148,4,
+53,21,221,47,15,231,225,109,59,90,3,255,250,114,145,142,201,234,17,3,32,102,139,132,24,44,214,185,107,147,190,117,
+64,115,172,19,232,227,224,188,245,147,224,48,4,250,67,248,2,83,216,80,63,55,169,43,76,248,111,42,60,159,180,198,
+232,69,92,245,24,56,66,145,56,17,202,255,80,148,217,139,125,181,190,211,239,134,54,204,166,159,177,83,254,152,207,175,
+227,191,240,233,194,147,44,96,178,203,18,96,147,133,235,214,124,100,117,56,35,173,131,82,170,236,178,150,83,224,213,213,
+45,8,56,227,164,139,114,12,197,51,12,17,103,114,107,78,146,115,151,140,86,62,24,234,139,242,127,109,78,151,168,204,
+188,46,0,70,22,213,149,143,120,38,172,217,252,35,20,111,29,180,108,138,197,28,180,158,134,242,33,186,238,14,103,188,
+48,191,17,60,21,230,33,226,11,203,94,239,0,216,81,224,75,67,242,68,68,254,84,237,69,234,109,211,56,139,123,188,
+217,16,243,251,95,81,118,83,24,172,187,13,31,101,16,218,57,2,75,136,74,96,179,74,1,78,55,164,189,68,214,115,
+135,174,219,33,156,5,172,92,70,16,37,238,65,164,15,43,99,154,11,235,78,185,22,107,44,6,33,194,98,255,95,89,
+69,21,110,18,58,14,31,253,150,199,25,121,231,50,58,63,68,169,167,0,174,21,181,147,201,153,222,34,159,136,162,204,
+26,14,192,251,172,142,67,153,84,231,38,138,4,80,153,4,100,43,133,139,243,139,228,15,222,130,207,243,77,200,167,167,
+58,218,93,236,120,183,6,176,123,192,44,143,49,73,112,231,103,169,85,254,10,161,54,55,172,179,140,74,200,25,196,147,
+9,249,213,9,228,14,121,211,10,147,139,155,8,79,167,152,234,85,83,154,96,192,89,120,159,37,226,80,38,126,26,178,
+202,39,163,116,17,110,177,254,113,193,164,4,28,91,10,234,44,134,188,204,185,189,169,200,13,103,248,162,178,69,114,140,
+251,110,36,193,122,4,75,124,182,191,45,140,116,27,83,125,220,82,129,216,85,177,149,241,198,198,80,95,135,3,100,128,
+229,126,210,123,44,16,20,195,104,96,155,114,143,101,7,61,116,171,248,39,201,199,85,55,63,217,14,153,104,60,158,214,
+108,56,152,73,255,199,218,240,12,173,247,148,186,171,162,69,104,151,61,57,232,167,89,36,78,156,129,14,211,231,207,152,
+22,33,184,182,192,179,63,176,45,1,55,221,88,230,32,224,61,218,103,163,214,105,146,2,57,95,189,233,113,3,160,22,
+247,181,188,221,182,235,124,48,237,23,196,86,107,186,214,47,156,176,88,18,164,118,148,47,92,186,21,124,111,88,112,237,
+69,39,92,65,43,99,10,126,89,32,14,51,16,242,245,59,59,189,128,217,249,176,127,245,126,81,213,147,231,229,243,224,
+242,42,139,76,191,171,87,132,23,190,176,155,217,57,236,214,144,122,236,195,120,190,121,123,142,4,116,73,41,74,188,89,
+49,254,254,14,20,54,180,4,184,52,239,210,38,10,7,164,58,29,182,106,72,202,85,230,20,1,224,28,163,158,13,193,
+182,189,67,160,164,162,32,219,142,10,221,2,109,139,104,65,45,244,250,123,71,226,242,35,194,12,32,49,166,14,241,200,
+169,173,40,97,140,71,156,136,172,226,144,212,219,145,83,96,33,27,70,169,67,181,115,202,44,74,4,150,66,207,91,112,
+208,213,137,173,7,20,100,92,214,78,143,122,59,240,39,192,100,213,169,160,90,96,30,211,233,100,96,108,54,92,39,182,
+238,125,199,247,246,5,54,58,94,180,174,112,204,98,72,115,147,185,51,236,179,188,190,198,149,24,45,25,198,178,94,132,
+9,239,40,155,140,239,104,54,163,159,186,51,154,139,49,164,242,95,191,63,176,200,109,121,193,184,13,104,223,192,145,219,
+169,221,162,136,217,34,108,52,187,186,45,95,28,77,75,122,71,43,216,179,153,86,237,235,143,225,22,62,103,146,189,85,
+57,250,90,206,133,236,12,132,94,178,159,115,8,131,156,233,58,222,152,79,28,195,197,202,148,81,100,213,152,79,166,106,
+161,184,176,144,245,220,96,86,102,212,57,174,255,135,144,63,178,95,50,250,210,201,235,231,79,83,191,142,93,172,9,222,
+73,8,103,185,135,185,4,178,195,218,223,67,164,212,239,141,72,229,157,130,240,68,17,23,199,227,229,67,1,209,202,19,
+126,142,28,142,92,20,62,34,26,196,201,44,9,138,115,191,116,143,37,39,26,182,198,82,224,117,249,253,164,157,63,234,
+52,195,19,95,154,222,56,50,203,123,7,170,246,77,115,104,8,5,79,59,189,27,108,185,216,65,184,57,193,78,132,236,
+211,185,230,214,233,144,75,154,38,90,82,161,164,13,212,122,255,250,114,145,142,201,234,20,85,146,106,38,147,83,184,234,
+74,217,25,235,169,34,66,94,204,148,163,10,182,185,84,215,21,208,138,201,231,65,249,147,217,138,37,55,126,35,62,236,
+55,244,155,177,144,212,66,149,90,227,152,131,86,208,171,144,17,170,196,93,19,191,21,58,237,195,140,75,226,162,51,113,
+84,148,181,177,178,134,187,202,63,25,35,67,102,228,221,162,163,98,95,128,139,70,73,250,83,70,145,178,51,208,144,155,
+153,103,143,165,76,31,116,224,21,67,0,64,163,154,156,218,112,186,163,163,37,62,247,162,223,69,128,46,163,196,9,71,
+40,247,255,115,153,243,183,192,23,47,227,4,90,113,53,128,47,183,159,75,173,147,150,189,226,240,222,69,224,62,147,50,
+27,18,163,101,5,188,19,199,192,71,73,217,51,115,95,65,149,233,163,174,20,170,193,101,114,123,5,53,144,216,142,54,
+160,255,0,58,199,26,143,91,231,26,74,73,129,253,211,30,100,13,216,151,199,7,235,205,115,251,107,150,104,136,123,106,
+40,91,35,59,196,185,106,199,103,143,94,148,91,226,205,245,72,111,241,137,97,34,134,163,175,6,134,235,244,112,61,70,
+121,229,254,92,115,51,247,93,168,130,170,81,237,77,178,238,60,237,81,67,100,91,162,160,16,166,143,40,128,178,138,160,
+89,89,28,215,237,141,126,211,94,130,36,216,27,135,49,86,204,213,20,138,235,170,184,83,24,152,206,91,97,230,145,82,
+184,172,109,197,73,131,233,174,114,146,11,219,179,250,74,147,95,98,240,134,47,87,87,1,133,188,85,122,56,60,77,30,
+191,14,7,76,219,154,116,107,169,208,102,9,32,220,1,133,66,34,226,216,56,226,78,181,138,118,14,228,232,248,223,100,
+248,173,35,208,151,73,65,122,219,241,59,92,114,94,144,178,71,75,154,164,33,24,183,68,83,87,23,175,96,70,153,68,
+23,79,143,163,109,7,9,52,61,6,173,206,226,198,142,216,160,11,130,120,50,168,255,55,223,87,30,66,3,2,61,104,
+28,220,114,48,106,243,86,55,159,39,82,231,177,139,159,109,197,144,253,29,79,184,200,93,186,216,26,1,230,82,30,232,
+67,14,95,253,34,230,79,114,7,246,142,213,190,253,159,168,177,97,212,22,214,15,153,248,168,13,20,21,62,126,116,107,
+8,52,152,164,120,10,253,25,173,146,10,107,34,13,170,253,188,60,74,162,142,60,26,142,174,146,251,218,87,112,230,162,
+203,79,220,34,136,189,123,58,37,105,197,146,193,12,124,218,129,59,172,48,219,39,23,82,5,243,252,105,80,202,162,237,
+63,238,198,64,61,29,114,240,221,26,226,146,252,172,252,236,24,165,92,166,177,21,111,103,206,212,73,192,107,186,116,126,
+7,77,126,101,58,194,235,72,91,180,90,116,217,115,220,179,201,108,40,179,38,93,1,76,246,235,182,11,154,215,127,239,
+37,187,235,112,252,155,137,96,110,227,125,180,22,22,197,69,67,194,218,79,223,72,124,109,52,91,2,229,208,52,79,147,
+234,42,111,195,128,44,252,229,207,197,14,204,11,135,188,139,57,108,117,180,5,212,240,180,146,100,230,17,116,198,153,152,
+157,126,185,23,173,111,177,185,102,30,8,32,72,60,55,21,50,152,88,19,215,180,19,112,2,92,172,113,81,191,122,35,
+9,58,121,76,131,121,160,63,58,210,137,67,221,191,93,252,120,140,218,136,41,70,29,113,64,178,41,51,241,167,74,140,
+125,226,227,57,148,55,203,154,227,244,117,17,181,67,207,204,15,2,56,246,150,14,78,95,48,255,187,209,240,77,123,227,
+247,148,185,10,183,170,25,169,180,218,82,164,202,17,102,154,49,162,111,203,158,247,145,101,251,207,182,15,6,254,114,67,
+137,68,166,28,208,6,69,12,2,109,228,134,23,83,33,141,81,227,188,12,189,127,87,148,247,10,241,36,6,171,14,9,
+251,3,83,217,86,130,129,240,220,171,75,193,36,133,95,242,60,116,89,198,244,179,150,18,189,10,226,134,233,90,9,59,
+20,117,1,87,118,73,225,236,96,201,123,86,132,75,156,64,104,161,226,108,128,179,149,54,157,28,173,119,175,163,79,148,
+59,90,245,95,44,243,144,146,109,1,173,213,8,189,196,105,194,193,89,103,217,20,32,175,71,24,6,127,27,208,177,123,
+32,14,26,234,146,199,91,128,9,168,45,2,206,121,231,80,26,245,60,162,15,183,25,126,20,30,211,92,10,171,79,73,
+227,25,85,228,157,28,6,204,14,234,114,234,50,67,24,148,147,180,219,134,1,85,104,185,194,122,222,229,15,208,54,229,
+18,37,109,91,121,130,231,95,246,189,167,141,24,142,97,16,215,69,46,60,172,124,180,150,254,177,218,237,197,211,228,188,
+7,224,217,189,155,229,255,250,114,145,142,201,234,17,119,57,205,166,225,40,68,188,168,175,55,199,241,123,183,21,253,95,
+18,7,182,218,227,153,153,136,49,3,87,107,150,197,179,34,173,215,229,196,9,53,223,81,37,79,126,41,80,108,218,240,
+184,147,206,64,251,195,181,199,210,33,106,21,97,118,114,253,118,231,115,43,78,243,248,255,121,84,163,0,124,17,243,127,
+125,134,20,9,160,151,252,179,155,29,129,249,56,20,22,214,197,130,142,126,51,244,50,138,38,10,114,64,16,250,201,70,
+163,230,169,217,110,229,102,169,183,56,18,107,103,110,202,101,98,88,32,52,156,110,135,200,166,137,210,224,148,247,117,141,
+14,181,243,217,238,96,47,175,184,240,9,72,177,151,94,15,246,233,75,7,174,172,103,229,158,60,233,223,118,220,1,15,
+233,62,168,115,198,16,103,79,224,192,236,143,158,163,160,90,177,208,70,139,20,224,129,255,207,8,76,6,71,253,127,166,
+25,94,67,219,35,113,102,6,72,193,70,201,234,62,196,120,253,71,142,222,60,130,155,65,66,82,71,245,74,6,137,9,
+125,207,158,128,193,162,103,198,176,54,180,177,212,133,9,14,27,224,177,238,241,121,58,116,253,141,89,1,122,147,62,142,
+222,188,240,47,4,99,75,59,192,64,218,230,215,216,82,89,228,11,198,72,13,78,196,149,208,209,199,121,101,190,55,237,
+119,183,225,79,190,206,23,243,91,21,202,208,210,131,195,248,11,236,110,132,216,253,175,140,236,172,150,235,82,219,152,56,
+82,165,127,169,190,42,103,235,113,205,82,178,95,54,132,79,240,244,160,192,159,10,23,56,4,12,115,182,69,165,203,21,
+224,175,151,151,254,216,67,35,161,24,16,235,135,177,155,57,199,71,142,216,36,114,176,62,85,66,249,170,214,35,217,18,
+187,211,92,116,117,40,184,227,85,216,247,136,45,64,222,202,73,220,118,75,42,69,23,143,70,26,204,228,58,255,15,247,
+74,31,175,123,185,177,235,96,40,175,155,110,243,2,30,137,214,221,48,68,229,79,61,63,184,235,113,252,65,40,12,105,
+184,230,229,14,88,67,51,225,119,102,39,235,22,209,19,228,96,96,40,45,90,13,66,255,163,86,146,196,194,119,223,142,
+211,201,203,79,225,56,21,53,133,106,30,114,217,211,208,76,163,192,84,206,52,249,181,112,249,38,206,10,110,137,172,89,
+154,112,186,147,238,254,98,215,131,14,142,158,135,1,64,214,180,121,178,249,88,112,23,73,159,13,32,109,244,192,178,164,
+129,161,223,171,133,21,192,71,189,91,52,169,111,210,54,232,220,85,204,207,234,152,81,254,59,21,56,126,58,165,220,2,
+52,173,81,53,59,203,140,208,108,162,62,108,243,182,230,186,247,139,252,123,105,225,134,12,93,34,99,194,59,169,85,37,
+215,76,154,221,5,212,85,234,248,93,218,147,111,227,247,99,70,78,68,157,124,41,18,148,71,95,89,103,135,124,226,94,
+9,179,178,184,222,166,166,102,42,144,69,155,158,149,157,121,136,159,142,93,60,84,204,91,93,186,148,69,6,199,1,165,
+176,44,122,195,25,169,168,157,5,141,4,144,234,13,87,194,31,240,74,110,113,195,64,250,89,253,153,166,28,88,71,59,
+59,154,193,86,104,90,32,107,28,101,184,174,139,147,116,153,194,151,156,190,40,221,23,37,240,27,0,70,4,176,195,199,
+226,165,13,79,113,36,30,21,157,13,37,109,6,219,9,71,31,232,68,91,142,19,217,130,41,199,220,139,216,201,197,232,
+62,115,94,124,111,32,15,96,14,148,238,188,114,172,88,49,168,145,211,119,227,246,104,182,190,123,31,77,23,69,5,247,
+98,119,107,104,116,226,2,209,84,250,192,12,209,43,241,177,193,235,227,251,181,254,57,135,190,161,27,6,131,51,58,255,
+24,127,252,119,203,186,140,190,122,35,222,19,165,113,33,132,17,56,111,250,53,41,200,78,121,155,248,212,211,152,143,98,
+215,249,188,194,13,219,83,196,253,50,170,139,29,17,159,119,54,64,105,175,155,39,14,235,131,65,229,103,32,189,240,228,
+198,5,150,57,190,122,188,5,104,160,169,146,60,157,124,193,224,95,67,127,244,199,241,19,67,227,83,245,177,117,26,134,
+86,142,31,143,17,113,194,54,182,107,223,111,216,214,213,55,208,37,165,99,201,107,254,178,89,57,135,249,213,248,174,134,
+75,137,224,88,159,48,255,197,24,83,63,203,31,9,186,66,46,243,166,82,207,66,183,59,225,49,235,146,14,66,14,195,
+30,39,242,105,115,176,194,170,158,203,234,22,13,227,55,157,133,135,19,197,105,36,14,101,74,104,68,73,44,34,123,75,
+244,129,168,27,89,57,10,71,252,253,201,113,158,215,36,224,114,142,108,75,114,69,33,107,173,66,200,131,169,197,158,228,
+58,36,74,136,33,7,45,74,251,248,80,239,209,118,119,171,94,94,206,144,232,253,108,159,65,75,150,111,247,189,124,255,
+243,226,87,160,201,36,128,125,226,142,157,255,250,114,145,142,201,234,19,175,50,115,7,112,148,168,35,19,165,173,230,77,
+176,71,86,124,115,70,226,52,210,111,221,208,111,34,237,151,7,87,244,184,189,111,157,241,228,32,5,61,44,136,84,217,
+109,164,225,54,110,104,202,206,229,14,122,236,130,148,109,94,207,194,90,236,218,173,155,175,47,81,159,176,142,223,70,64,
+239,136,7,70,55,191,182,131,49,132,98,238,89,169,233,182,26,28,178,205,38,253,194,59,56,192,192,190,73,184,173,211,
+141,62,245,79,230,191,37,102,121,144,236,19,234,229,85,8,2,157,48,65,142,22,13,7,250,35,9,200,152,91,163,223,
+58,254,67,152,123,174,20,43,128,115,13,62,200,104,255,142,69,99,204,81,220,59,166,93,30,25,171,139,32,187,97,202,
+214,69,4,175,97,175,182,100,82,79,196,229,224,47,117,229,220,216,12,237,222,212,65,89,86,127,18,23,165,99,186,103,
+43,19,103,44,69,13,80,173,144,199,179,128,178,156,55,8,10,53,85,192,109,157,194,250,117,93,135,158,18,81,232,215,
+19,245,61,119,250,182,162,184,59,74,172,216,17,151,23,117,191,233,160,199,61,57,55,203,163,125,238,218,235,47,74,111,
+25,6,188,17,126,136,221,152,13,48,91,100,95,182,6,55,149,57,50,87,59,118,73,171,223,33,52,75,245,245,29,60,
+98,52,121,123,153,239,19,174,146,213,181,121,39,179,249,21,169,190,252,110,193,175,137,171,74,140,59,49,254,26,76,203,
+69,52,239,79,96,72,180,168,179,174,96,166,3,181,156,204,27,105,247,178,177,234,211,156,221,61,38,229,182,160,178,7,
+101,112,115,66,145,89,16,210,78,74,241,115,26,98,183,135,7,139,242,251,5,86,55,194,10,95,201,25,147,98,131,183,
+83,181,96,241,19,192,150,183,12,152,23,225,124,159,106,58,244,215,159,193,109,92,161,251,242,162,133,2,38,3,140,235,
+73,63,212,94,45,241,132,158,43,139,142,105,73,30,67,43,21,160,49,91,157,177,46,63,3,2,131,214,22,110,230,189,
+53,195,173,85,65,77,251,112,225,212,79,113,36,43,70,194,234,39,97,244,228,240,113,185,196,133,107,15,174,41,145,96,
+194,34,117,185,45,218,12,244,151,171,10,208,205,217,5,69,145,157,126,241,40,156,187,164,205,128,135,55,121,19,104,94,
+119,197,86,41,223,53,235,221,198,132,121,157,17,142,239,46,244,220,240,91,224,217,139,242,232,22,150,67,20,144,115,93,
+155,140,16,91,4,67,247,91,147,249,149,59,133,227,19,23,172,120,175,128,183,215,65,218,110,194,185,56,93,7,161,133,
+232,79,127,48,190,180,79,244,115,84,202,124,101,19,30,104,67,151,188,215,20,206,155,8,11,0,112,110,94,171,97,104,
+90,12,231,0,39,22,124,38,248,178,66,65,32,85,97,166,229,118,39,181,199,69,130,56,153,57,59,105,158,225,252,135,
+104,19,249,103,17,159,104,90,97,77,28,111,118,206,1,127,180,78,69,219,88,164,70,72,43,1,174,27,95,247,255,9,
+185,66,198,132,188,141,178,34,60,183,252,37,177,14,161,1,83,166,26,207,95,81,3,174,95,177,20,200,134,149,231,36,
+86,205,221,100,244,38,252,118,217,12,154,140,51,232,246,231,57,169,114,77,168,196,96,33,125,71,65,79,104,29,209,91,
+180,68,30,94,119,167,126,79,26,226,178,21,29,85,64,190,30,174,173,59,29,253,148,252,150,150,57,45,210,155,196,125,
+89,250,89,124,149,172,85,164,71,226,71,245,149,170,3,44,202,57,226,128,184,33,76,191,128,255,95,33,160,7,161,238,
+96,213,49,76,230,95,81,63,237,220,236,153,76,188,179,92,153,218,37,157,151,251,4,204,121,26,174,16,148,130,203,145,
+190,93,151,113,153,192,27,218,103,110,48,121,60,186,15,186,69,2,232,196,74,60,153,43,175,122,132,8,85,26,196,254,
+97,90,102,25,88,28,217,2,219,209,74,19,147,165,15,248,203,209,44,187,161,136,200,19,77,80,173,64,132,110,28,120,
+17,140,250,124,4,109,80,249,229,198,99,69,124,132,49,154,190,17,64,38,171,243,60,106,71,204,4,78,17,78,14,104,
+240,8,23,100,32,229,156,106,62,91,155,35,164,73,234,178,247,199,32,63,124,101,65,130,250,194,169,113,126,127,120,189,
+9,202,126,147,161,153,126,252,149,56,167,104,205,185,162,12,15,117,60,179,200,254,141,255,215,215,123,140,136,154,153,249,
+7,211,134,132,114,72,216,149,209,171,38,196,246,118,231,176,69,180,87,245,82,9,50,59,242,200,79,199,74,191,71,238,
+223,143,38,9,60,161,158,222,230,83,203,69,213,83,169,61,9,181,109,91,242,188,77,48,183,208,30,9,216,76,201,1,
+68,39,173,119,254,122,139,91,132,12,217,241,97,47,75,164,193,11,12,33,71,189,220,200,52,244,236,25,214,209,109,80,
+19,6,113,255,250,114,145,142,201,234,17,176,245,117,196,156,233,201,180,229,125,217,204,45,121,101,151,187,69,74,52,172,
+131,205,54,218,95,126,253,89,253,186,149,62,180,181,20,242,141,32,97,134,240,253,61,43,200,144,128,168,105,229,107,250,
+120,204,142,77,74,156,213,228,33,61,87,235,64,160,134,210,175,128,82,124,238,30,175,94,147,86,176,48,202,30,139,145,
+175,77,101,186,144,92,100,198,137,213,211,63,134,130,127,61,170,163,178,81,100,78,73,95,25,198,168,53,232,197,195,199,
+84,164,186,153,37,21,32,62,232,255,109,184,11,115,220,30,17,82,222,159,88,171,213,48,248,51,3,254,216,9,193,197,
+184,222,78,74,84,241,4,215,110,4,65,105,248,109,32,51,46,142,152,154,63,78,8,195,161,80,241,21,189,89,58,125,
+30,210,5,218,139,154,250,10,253,10,123,28,122,126,69,188,115,23,219,81,92,105,233,204,25,18,73,119,107,58,2,159,
+26,239,69,113,250,79,64,6,101,203,163,198,62,141,192,125,179,68,40,29,142,43,112,185,124,1,10,103,122,102,148,25,
+31,27,251,42,91,44,209,99,87,73,169,97,9,82,66,208,42,111,202,6,158,101,19,208,106,94,188,64,79,93,251,15,
+187,239,26,14,91,111,14,62,193,242,89,248,124,243,118,146,129,152,195,44,195,136,206,181,158,52,78,92,220,248,224,40,
+226,39,207,98,78,68,157,133,11,11,94,49,122,159,80,149,51,81,191,53,132,239,85,52,41,232,51,39,70,155,237,95,
+223,213,13,157,45,113,31,85,73,60,29,146,145,59,31,73,194,133,154,199,69,86,146,16,96,102,193,235,243,241,220,58,
+171,46,164,209,252,208,1,107,25,107,253,147,16,245,94,105,10,208,29,204,89,65,93,253,109,63,23,249,40,80,228,72,
+52,137,91,152,171,187,36,217,141,179,5,215,216,123,56,91,5,116,205,238,53,116,228,185,72,129,132,217,123,6,239,194,
+52,72,215,174,108,44,131,96,105,163,51,209,11,74,18,175,11,124,87,8,202,200,27,254,121,121,111,195,159,182,189,130,
+69,114,11,127,218,209,13,237,119,160,194,177,239,192,69,33,90,159,216,85,72,21,141,158,194,206,124,254,116,227,22,5,
+75,159,163,99,7,216,58,150,177,219,103,209,232,177,7,93,46,195,54,223,15,66,108,37,246,181,61,152,199,39,106,102,
+117,61,110,201,195,41,149,48,244,18,248,66,211,218,142,194,69,229,242,106,41,234,21,45,81,53,80,209,160,249,43,4,
+121,22,236,170,16,148,130,104,73,6,31,92,14,25,171,121,207,63,141,209,59,115,40,93,13,149,136,235,250,198,236,64,
+151,154,244,231,139,190,106,55,195,161,55,53,95,140,108,26,224,184,168,251,35,38,97,177,188,13,162,44,11,150,175,118,
+150,127,25,61,86,226,216,127,105,92,163,12,160,126,24,139,75,245,103,138,67,31,161,111,228,108,214,155,71,119,126,187,
+52,178,130,148,244,219,175,22,251,106,81,129,152,221,166,151,196,77,237,248,24,57,105,91,7,155,141,237,2,242,12,57,
+168,191,15,219,111,141,163,40,67,207,107,46,50,90,186,182,140,122,248,226,28,106,171,28,4,104,210,128,189,104,34,69,
+253,38,118,108,195,236,149,134,88,198,194,62,11,141,232,237,106,93,58,145,175,90,70,67,86,69,47,206,104,2,34,70,
+127,224,194,106,14,1,86,12,252,65,80,70,86,167,207,69,125,91,112,129,125,179,34,138,226,7,171,170,48,71,127,208,
+68,115,195,4,219,248,93,112,106,105,6,158,169,116,69,229,116,147,49,3,82,209,40,10,1,123,3,142,23,56,124,191,
+238,188,155,251,139,144,176,133,67,172,33,10,209,68,135,176,83,189,124,141,66,211,190,147,80,203,49,45,4,32,59,59,
+1,209,157,148,242,226,114,243,129,221,31,87,51,141,22,124,244,102,71,32,248,144,89,22,142,4,225,17,206,10,60,120,
+225,154,255,184,156,119,1,210,199,142,82,79,215,30,49,235,145,185,225,243,146,139,187,100,225,93,190,72,74,102,221,27,
+76,132,160,158,163,249,180,122,51,44,224,190,69,50,89,225,166,37,239,60,198,50,174,30,144,52,125,125,187,219,124,10,
+156,33,136,146,169,74,144,202,212,89,111,237,147,189,193,210,173,209,167,49,225,171,131,48,219,220,120,72,244,232,89,0,
+22,16,174,252,255,74,13,137,218,107,87,177,232,145,60,63,16,211,109,129,130,132,79,79,228,42,252,5,47,162,89,209,
+234,164,63,167,45,192,48,198,4,79,177,22,11,186,217,195,62,140,237,213,165,226,76,18,139,197,192,99,237,225,255,242,
+93,244,78,231,142,241,229,203,49,161,247,163,183,82,43,92,66,14,96,131,76,150,74,144,87,163,247,61,167,203,17,5,
+168,144,220,211,55,226,26,217,61,56,12,252,184,4,59,230,112,155,126,178,237,214,111,69,227,132,206,223,135,61,228,216,
+251,128,198,162,51,27,55,47,119,155,197,156,88,12,54,1,227,157,175,103,106,131,151,69,118,164,68,173,186,139,190,106,
+81,147,125,169,250,146,44,230,92,179,157,96,150,233,9,194,38,114,201,209,64,163,137,54,22,60,197,85,19,208,57,146,
+195,177,136,26,50,152,202,195,88,108,107,243,119,197,250,164,17,39,24,202,244,103,106,164,70,159,97,110,220,37,62,67,
+163,14,112,81,40,201,81,95,182,58,23,139,39,74,195,112,119,5,141,43,146,193,47,15,63,6,102,114,60,129,95,13,
+189,127,62,162,40,11,206,199,34,3,8,35,43,230,174,121,50,60,237,222,50,98,30,70,79,100,221,240,182,55,219,189,
+87,85,221,189,191,220,50,39,162,105,190,43,254,28,64,10,113,177,200,7,118,42,7,176,94,27,42,145,153,11,24,214,
+36,103,165,234,31,219,188,158,90,253,109,74,255,250,114,145,142,201,234,17,3,32,102,139,132,24,44,214,185,107,147,190,
+117,64,115,172,19,232,227,224,188,245,147,224,48,4,250,67,248,2,83,216,80,63,55,169,43,76,248,111,42,60,159,180,
+198,232,69,92,245,24,56,66,145,56,17,202,255,80,148,217,139,125,181,190,211,239,134,54,204,166,159,177,83,254,152,207,
+175,227,191,240,233,194,147,44,96,178,203,18,96,147,133,235,214,124,100,117,56,35,173,131,82,170,236,178,150,83,224,213,
+213,45,8,56,227,164,139,114,12,197,51,12,17,103,114,107,78,146,115,151,140,86,62,24,234,139,242,127,109,78,151,168,
+204,188,46,0,70,22,213,149,143,120,38,172,217,252,35,20,111,29,180,108,138,197,28,180,158,134,242,33,186,238,14,103,
+188,48,191,17,60,21,230,33,226,11,203,94,239,0,216,81,224,75,67,242,68,68,254,84,237,69,234,109,211,56,139,123,
+188,217,16,243,251,95,81,118,83,24,172,187,13,31,101,16,218,57,2,75,136,74,96,179,74,1,78,55,164,189,68,214,
+115,135,174,219,33,156,5,172,92,70,16,37,238,65,164,15,43,99,154,11,235,78,185,22,107,44,6,33,194,98,255,95,
+89,69,21,110,18,58,14,31,253,150,199,25,121,231,50,58,63,68,169,167,0,174,21,181,147,201,153,222,34,159,136,162,
+204,26,14,192,251,172,142,67,153,84,231,38,138,4,80,153,4,100,43,133,139,243,139,228,15,222,130,207,243,77,200,167,
+167,58,218,93,236,120,183,6,176,123,192,44,143,49,73,112,231,103,169,85,254,10,161,54,55,172,179,140,74,200,25,196,
+147,9,249,213,9,228,14,121,211,10,147,139,155,8,79,167,152,234,85,83,154,96,192,89,120,159,37,226,80,38,126,26,
+178,202,39,163,116,17,110,177,254,113,193,164,4,28,91,10,234,44,134,115,91,124,43,155,200,203,225,9,53,230,106,162,
+37,212,97,40,213,226,2,188,239,215,195,153,27,178,229,169,195,128,132,125,30,201,150,185,119,133,30,126,112,35,250,226,
+108,33,233,61,15,199,127,104,112,85,80,52,71,215,75,56,172,237,230,177,5,133,154,165,30,89,232,222,95,57,61,59,
+95,24,211,29,112,9,0,196,76,206,121,226,222,60,113,154,146,4,194,49,203,55,223,241,96,249,108,68,32,181,91,178,
+112,129,186,206,255,141,27,157,198,93,228,81,191,16,141,116,97,203,38,141,130,12,159,249,148,214,151,52,216,135,248,196,
+41,180,176,51,190,214,245,43,204,46,217,73,120,107,49,209,111,119,5,125,50,82,32,243,81,114,202,141,147,230,47,193,
+124,240,94,63,139,139,247,56,1,24,65,141,225,212,152,60,146,190,76,173,127,130,29,67,3,118,3,131,165,89,151,129,
+183,143,92,127,149,77,185,236,199,199,144,78,32,157,51,96,1,109,92,249,29,137,156,76,219,138,102,59,31,170,125,61,
+254,219,148,131,225,48,115,206,175,65,18,185,129,115,27,98,21,230,73,158,171,14,254,214,242,80,30,160,216,126,229,221,
+19,8,243,237,53,145,77,124,113,123,108,170,189,80,27,230,80,245,166,177,225,101,157,96,138,217,235,176,97,58,164,223,
+221,68,16,54,160,37,230,149,239,110,243,236,98,197,35,186,190,211,69,109,31,177,4,192,56,90,33,134,190,38,176,10,
+80,158,30,232,174,213,202,74,157,157,147,29,193,217,30,121,161,88,75,170,185,62,44,184,187,7,91,3,120,129,201,92,
+41,60,93,66,146,58,100,69,144,202,125,223,252,116,168,65,231,138,59,158,157,255,158,188,24,144,1,76,90,151,251,26,
+34,225,53,20,221,173,255,128,126,128,193,164,32,145,50,91,238,81,193,100,64,102,176,167,115,108,189,111,19,38,28,158,
+200,52,54,240,189,152,75,203,194,78,140,60,101,64,160,243,206,113,69,199,97,243,51,73,201,98,209,229,46,235,37,172,
+254,99,75,49,151,15,109,49,71,249,173,115,255,133,3,234,97,149,71,123,104,114,175,152,79,117,64,37,152,138,105,255,
+119,137,111,234,246,39,161,229,11,190,194,27,191,198,192,75,108,76,193,177,201,61,145,202,236,142,113,37,198,232,111,49,
+109,252,83,129,51,189,27,136,131,117,247,115,30,228,18,21,106,28,149,68,55,148,64,13,60,164,147,182,187,129,46,52,
+218,142,176,68,104,157,68,55,148,24,75,179,197,102,1,38,141,242,51,201,32,57,26,125,6,242,215,247,42,129,29,225,
+89,59,215,142,137,103,215,187,23,63,84,118,250,215,199,44,46,116,42,99,119,180,121,80,223,5,200,113,137,165,136,190,
+25,91,241,225,148,60,193,237,102,105,34,8,183,226,195,247,192,53,172,34,157,189,92,173,211,249,251,32,191,150,202,29,
+131,222,134,23,171,30,217,221,192,5,224,183,146,72,247,186,86,75,140,88,108,147,225,80,246,150,144,172,55,249,23,239,
+239,214,134,145,62,113,150,124,199,109,67,140,205,230,33,12,211,29,62,146,219,108,162,23,218,218,255,244,192,92,158,208,
+229,222,239,75,142,216,181,231,233,16,162,144,207,172,179,177,236,198,109,96,91,3,47,38,94,42,44,201,186,24,200,239,
+163,95,140,161,248,156,51,35,52,151,2,253,153,148,154,128,49,252,80,163,192,153,129,226,174,7,181,162,84,183,216,68,
+181,58,240,43,73,64,83,232,213,231,28,123,58,164,246,91,20,208,158,20,149,77,70,47,121,166,242,21,69,54,195,166,
+155,20,58,102,83,245,105,103,128,156,215,130,19,11,225,121,59,241,245,140,238,255,65,213,80,12,210,191,70,153,185,78,
+140,44,190,7,75,74,111,221,196,194,77,170,142,233,249,23,219,252,197,154,11,250,206,108,54,109,166,245,247,38,77,129,
+229,48,86,212,200,201,160,169,139,190,212,255,243,117,62,59,148,192,233,95,24,232,114,246,122,96,142,97,37,115,235,253,
+7,116,85,133,168,116,221,244,67,183,53,87,126,10,246,11,118,158,83,153,106,151,247,158,144,244,77,165,156,101,196,55,
+101,232,196,37,92,27,115,126,123,22,28,109,205,223,188,235,13,153,149,147,29,177,57,181,51,139,218,44,206,195,27,68,
+246,88,93,146,158,179,36,66,99,113,65,128,254,128,91,188,243,210,5,236,20,181,26,17,246,60,140,106,53,25,98,18,
+0,196,253,44,232,178,76,244,69,206,243,78,227,19,64,202,44,49,13,58,203,185,74,116,198,195,101,32,202,186,75,96,
+216,121,144,148,168,208,65,169,168,71,40,210,33,174,252,24,249,33,195,207,22,53,239,111,182,234,150,205,33,159,49,169,
+110,187,131,54,118,149,96,121,156,138,226,66,4,126,246,115,194,180,87,109,124,95,63,231,181,115,22,87,167,148,103,226,
+185,76,29,58,176,72,20,54,203,114,135,92,117,93,134,189,28,48,55,199,36,76,104,94,252,67,12,228,181,100,166,210,
+3,164,43,43,177,139,115,5,110,33,49,122,146,188,154,105,35,127,54,69,227,171,66,141,151,214,86,146,60,155,166,168,
+126,192,204,145,113,51,52,250,85,178,97,60,107,186,90,174,155,32,112,138,154,228,163,89,164,71,199,212,31,53,142,131,
+84,85,224,153,89,241,253,17,157,183,86,123,180,9,86,245,174,79,75,125,228,142,196,128,4,241,23,181,146,122,255,227,
+77,38,73,55,98,119,188,79,239,88,191,120,170,237,48,137,114,133,205,230,78,55,44,61,113,232,191,70,175,251,51,254,
+8,143,132,150,173,93,229,174,167,202,251,251,137,243,142,251,175,237,77,32,204,173,217,74,214,214,174,84,21,57,0,146,
+152,179,45,148,106,208,151,30,174,182,89,80,133,33,138,245,94,53,50,47,18,152,74,216,181,59,110,243,110,155,170,15,
+183,162,110,197,216,32,130,175,213,135,85,206,209,203,73,202,250,195,64,125,80,57,237,85,3,206,240,144,189,36,5,58,
+212,44,23,197,77,112,184,180,196,50,171,250,133,207,171,130,214,152,239,162,188,243,223,252,157,26,35,29,161,80,238,201,
+214,52,59,85,26,167,188,48,56,103,11,159,127,219,212,151,125,13,255,79,213,193,131,150,5,195,166,208,239,243,8,176,
+148,20,87,154,220,70,155,220,83,246,146,77,35,5,208,73,220,21,182,94,248,72,63,207,171,24,120,128,16,222,199,255,
+142,134,161,188,255,136,255,180,160,178,156,42,184,215,20,0,192,236,209,146,126,1,11,204,136,130,154,244,133,199,223,198,
+56,241,216,171,50,170,60,176,1,29,101,55,52,115,62,138,217,122,120,47,89,29,181,255,243,73,178,156,112,79,188,241,
+250,229,240,69,160,231,140,12,229,13,232,228,42,143,249,58,64,150,203,61,83,136,183,219,95,86,180,79,49,98,190,103,
+211,90,81,173,102,206,123,59,105,130,136,71,58,197,241,167,194,77,54,231,145,138,14,77,74,170,94,218,93,50,162,209,
+103,81,116,80,54,249,140,41,230,185,86,153,58,197,178,39,4,73,140,223,136,216,88,29,175,139,51,222,239,146,110,185,
+149,182,160,61,248,48,65,245,99,151,66,124,163,111,218,71,8,120,13,93,77,113,108,115,78,40,5,5,2,3,196,231,
+40,199,96,201,43,169,70,90,141,152,211,175,77,248,160,27,14,21,233,27,121,179,76,56,32,84,65,234,114,117,213,191,
+232,2,244,15,149,166,165,226,122,147,82,97,61,95,111,181,213,198,6,237,209,111,135,242,202,38,129,207,177,65,161,216,
+201,236,251,236,183,205,50,45,8,40,128,24,16,13,7,67,236,174,44,150,215,186,35,60,176,86,97,162,160,221,84,247,
+77,85,227,119,153,225,64,0,49,157,50,153,52,6,66,122,251,87,249,219,201,202,67,12,112,219,0,216,53,135,219,10,
+49,219,199,225,223,154,185,248,91,79,190,129,125,154,22,88,111,67,127,27,167,253,131,159,180,114,101,8,236,24,168,156,
+148,16,244,129,134,200,140,134,210,47,126,182,97,107,212,80,42,30,26,192,171,118,247,154,228,159,123,232,7,96,79,82,
+173,168,66,10,86,209,32,28,47,223,243,90,159,83,195,251,117,145,204,249,61,118,197,176,230,44,172,162,43,141,36,251,
+175,103,218,113,89,240,217,224,217,190,97,229,81,131,232,16,133,139,67,27,45,113,74,242,26,43,193,55,38,75,170,3,
+191,210,26,9,136,197,195,95,3,142,134,143,181,130,83,145,107,205,238,53,208,64,54,219,182,237,17,255,250,114,145,142,
+201,234,18,206,130,164,62,121,179,47,159,11,67,41,220,238,206,18,209,111,201,229,136,249,201,52,238,141,68,125,119,61,
+67,134,203,116,46,31,181,154,163,58,23,109,170,95,228,107,137,120,23,208,70,199,237,233,26,28,176,49,127,130,41,249,
+85,79,92,79,220,98,50,20,61,84,177,209,202,213,253,107,136,99,72,191,204,65,150,128,130,7,169,25,64,225,5,33,
+53,4,37,206,102,81,236,28,1,229,0,132,19,52,77,116,242,254,60,206,90,202,41,92,162,249,188,91,215,9,244,107,
+228,174,91,95,70,192,251,13,92,59,73,251,226,249,0,116,254,188,78,18,23,46,183,243,155,21,131,4,5,162,237,99,
+214,81,245,145,155,146,52,133,148,3,32,166,137,172,115,80,31,178,106,140,15,55,22,82,48,101,202,184,89,12,47,77,
+176,201,123,58,204,5,102,85,70,252,53,43,11,183,30,227,142,90,207,105,70,135,209,2,176,165,31,5,223,80,225,8,
+123,9,45,136,62,222,212,234,34,38,62,206,161,49,81,150,27,63,188,57,88,176,25,126,179,228,117,252,254,117,255,252,
+29,154,181,232,26,232,139,77,68,232,252,217,111,246,18,28,177,178,203,65,226,242,133,80,163,80,67,23,196,132,13,28,
+9,154,171,21,110,120,111,175,140,142,93,129,116,142,45,113,48,76,57,87,175,15,198,209,61,170,72,31,29,49,238,198,
+185,172,84,165,27,121,139,94,141,14,140,242,254,74,113,92,57,57,12,223,96,79,86,109,213,229,52,98,216,147,72,40,
+32,40,216,54,197,90,231,136,14,221,11,220,251,44,211,176,65,242,113,181,3,106,36,27,48,243,232,204,55,228,229,60,
+128,38,52,160,145,178,217,223,225,170,201,75,200,110,168,235,217,188,47,191,217,205,151,116,251,234,80,234,170,252,131,45,
+84,248,3,10,74,116,230,214,19,150,21,222,148,37,230,122,135,198,210,211,104,244,217,218,168,9,118,37,20,146,75,145,
+204,235,160,205,50,81,91,240,12,17,46,43,23,24,59,50,136,77,6,56,56,20,168,140,38,89,177,38,48,52,50,173,
+196,131,242,10,6,101,93,209,149,28,51,159,242,175,132,166,154,43,182,154,152,11,138,37,148,133,108,120,55,156,146,143,
+250,161,11,72,186,226,197,93,75,230,96,102,124,76,150,171,7,220,36,161,214,223,128,127,206,20,149,222,28,231,132,0,
+11,250,148,243,66,94,18,110,14,78,220,171,76,235,36,175,112,121,76,103,229,110,254,179,156,167,84,152,31,80,108,199,
+95,94,38,254,238,121,162,238,218,25,93,15,199,139,36,6,173,134,57,49,92,166,163,215,14,182,44,185,32,215,31,107,
+172,240,176,176,183,214,39,69,114,120,46,190,242,109,182,92,208,189,131,55,53,181,111,66,59,0,55,254,136,168,167,20,
+195,42,95,14,203,243,126,249,26,129,157,239,101,142,199,71,27,58,167,186,196,234,184,141,62,181,142,188,7,172,186,247,
+108,200,39,26,188,56,96,127,28,94,98,252,244,60,171,58,66,233,37,29,38,150,60,187,36,47,22,65,249,60,172,159,
+100,152,20,56,155,243,140,66,117,117,108,231,185,224,249,39,193,110,241,154,4,207,211,82,193,159,189,158,174,210,243,234,
+16,75,145,146,191,88,213,176,200,138,226,205,174,92,46,202,115,135,199,56,74,104,250,1,155,75,37,236,141,201,80,107,
+130,114,75,179,243,131,139,39,202,218,251,200,43,149,158,50,105,73,67,146,201,31,6,171,84,31,237,178,89,172,24,37,
+163,29,11,250,39,113,185,198,109,140,87,254,66,19,152,79,116,145,123,80,54,201,67,119,89,20,156,6,204,143,120,227,
+170,220,66,186,144,140,117,3,147,251,195,52,194,79,41,214,110,236,3,192,191,154,60,231,82,195,42,71,149,105,121,84,
+156,82,146,125,74,11,113,106,124,104,154,137,95,22,75,188,101,48,190,74,74,171,96,218,169,102,107,96,231,79,225,217,
+156,230,229,221,56,168,153,121,231,102,74,138,116,187,183,107,248,137,115,249,148,54,103,35,130,224,220,245,147,210,244,106,
+77,222,205,156,13,78,183,198,103,48,70,197,222,186,128,47,91,45,51,203,231,25,215,19,19,222,245,219,218,52,42,27,
+28,33,163,47,101,46,11,71,59,151,52,132,101,112,122,194,45,43,68,79,111,111,45,146,37,61,7,234,6,192,184,118,
+164,137,115,24,102,121,179,76,41,213,142,167,17,67,50,218,209,146,91,208,33,5,202,120,172,77,65,210,198,99,111,114,
+185,74,11,166,193,10,115,163,94,43,239,27,20,65,228,139,221,21,144,17,170,251,153,127,70,120,160,182,92,123,245,35,
+26,168,154,41,0,43,226,51,205,247,212,231,26,182,4,113,207,72,244,78,48,229,191,8,39,237,32,176,29,234,23,134,
+55,203,87,205,8,244,174,59,95,45,60,156,117,169,192,128,165,17,166,255,240,135,44,83,7,206,244,100,15,209,58,148,
+81,217,200,55,189,196,24,128,40,103,109,72,21,168,31,227,77,8,186,6,160,45,194,133,45,92,15,78,16,107,5,74,
+194,87,31,153,158,63,58,36,61,211,171,244,226,43,1,173,189,210,50,9,33,36,241,144,78,159,128,242,149,234,6,242,
+246,68,112,99,25,99,87,115,152,242,234,191,64,244,127,155,188,210,60,70,96,176,230,9,236,118,196,117,29,50,138,89,
+219,73,205,125,63,83,167,128,45,178,8,74,83,163,239,68,101,47,111,221,46,231,246,83,132,140,138,110,41,1,26,250,
+46,169,106,249,123,22,159,114,0,71,162,112,237,140,178,55,196,90,136,231,49,94,151,102,219,180,243,17,10,43,124,18,
+86,94,228,251,175,216,94,173,255,189,168,187,26,215,242,77,14,252,155,85,143,124,158,145,8,194,231,175,43,154,210,89,
+200,142,46,211,182,59,83,99,169,92,179,21,13,127,149,144,44,178,237,235,187,9,166,45,158,210,111,164,140,40,76,140,
+105,186,96,110,44,183,234,172,121,65,67,214,128,212,205,145,31,39,175,208,86,23,146,124,83,146,81,32,219,139,238,240,
+40,174,139,100,113,149,8,36,111,122,126,210,254,151,88,61,113,225,156,7,81,146,0,122,126,251,14,93,197,183,81,125,
+176,13,98,79,91,44,244,195,122,107,25,252,196,126,204,59,141,62,252,95,137,34,102,247,252,111,82,246,111,66,132,245,
+174,184,3,174,115,218,241,148,24,208,162,104,220,91,18,63,51,110,59,41,103,12,105,22,249,82,180,209,253,92,180,165,
+96,33,127,9,178,196,233,80,125,169,252,253,121,168,246,173,185,111,215,236,19,86,61,164,44,184,44,179,185,240,22,28,
+114,111,77,15,161,235,65,230,139,89,194,109,179,64,173,149,22,65,25,101,196,64,253,2,166,231,227,106,55,119,186,120,
+132,156,128,13,143,33,103,6,38,113,101,135,95,186,241,128,241,250,145,192,163,89,86,27,192,254,191,37,57,140,54,156,
+218,172,9,23,6,234,112,219,200,85,96,129,219,132,34,251,131,165,141,145,149,100,34,45,222,192,199,235,205,189,36,6,
+168,154,73,5,148,35,148,152,57,17,33,244,187,250,190,190,178,44,192,50,187,181,73,79,47,150,25,17,153,2,254,211,
+116,142,142,224,117,80,11,146,196,194,145,16,194,168,54,15,241,243,233,22,158,54,11,252,187,84,79,87,14,192,250,41,
+61,223,247,13,237,163,165,32,199,46,240,172,179,195,132,184,158,243,2,245,57,100,57,88,165,244,140,109,31,147,187,228,
+151,179,35,186,180,101,32,52,156,142,4,45,213,47,124,229,105,82,76,214,2,65,40,174,239,124,126,24,210,34,91,148,
+216,71,129,134,158,127,40,211,121,66,151,214,118,117,39,173,176,79,2,229,48,215,10,171,227,69,155,58,129,50,204,206,
+128,213,119,243,147,83,189,61,130,56,67,82,105,92,220,222,12,75,252,57,55,214,134,0,67,125,215,33,31,190,20,254,
+108,116,150,241,206,9,107,51,58,251,37,224,118,188,61,140,70,27,165,231,206,15,187,247,198,89,20,74,26,171,211,225,
+165,223,247,29,213,181,103,64,70,132,217,228,235,153,40,32,170,17,212,163,20,51,114,25,67,242,74,71,5,194,249,122,
+228,28,222,235,192,151,220,133,86,187,0,221,224,105,241,140,54,187,38,142,20,205,13,226,74,38,66,44,8,222,64,207,
+6,200,8,204,143,73,151,64,91,150,211,16,168,177,216,81,228,29,32,31,36,190,6,46,55,78,71,44,55,150,234,133,
+35,75,152,207,226,162,222,164,53,240,126,14,24,94,64,11,98,72,224,122,18,182,64,241,249,218,69,111,251,50,55,91,
+241,122,22,165,88,227,223,31,116,57,38,80,213,117,218,213,155,251,129,80,21,206,37,94,15,89,185,200,252,241,218,221,
+171,127,187,96,167,92,217,152,25,236,130,17,149,13,136,230,201,191,136,91,26,199,144,215,205,141,208,201,146,166,231,145,
+199,12,97,220,242,47,144,93,14,52,120,111,79,229,195,61,40,21,181,159,32,111,244,165,9,82,126,133,9,37,233,205,
+20,87,226,39,252,2,10,155,48,14,156,133,238,71,28,232,65,201,68,39,18,141,241,115,69,174,128,248,231,187,212,142,
+63,50,127,204,135,131,98,77,238,34,68,215,113,39,206,64,220,53,247,134,148,93,110,33,5,210,192,191,235,219,251,244,
+208,192,188,150,91,107,66,92,144,254,137,188,104,248,94,10,46,126,72,40,235,196,208,172,103,247,231,71,175,55,137,65,
+67,180,62,35,8,4,0,102,182,53,55,195,142,231,212,125,126,172,147,7,183,181,195,164,112,235,238,70,224,11,66,210,
+111,2,88,76,221,188,60,20,70,4,230,122,118,191,55,125,64,39,63,235,121,137,6,172,59,57,5,163,112,54,94,187,
+212,134,215,195,184,16,226,109,246,90,51,8,132,145,147,63,229,165,113,20,54,115,69,25,148,108,68,21,141,136,170,165,
+225,130,240,121,80,16,104,25,1,37,169,172,127,188,11,201,144,222,13,85,222,201,202,175,246,53,132,186,131,246,240,34,
+76,232,192,175,234,194,12,175,59,127,203,36,233,44,177,57,138,49,78,151,209,216,177,95,1,213,9,52,150,111,134,252,
+14,175,2,247,173,41,136,160,150,218,191,254,157,106,21,174,124,170,29,89,170,63,254,128,27,39,184,254,157,51,226,18,
+201,227,26,55,183,7,226,94,195,216,175,67,130,33,176,185,66,10,153,35,184,18,151,56,119,207,108,108,3,116,200,55,
+104,255,52,19,145,25,187,115,49,178,206,216,229,195,218,42,13,133,122,38,253,104,172,63,189,113,215,114,126,4,210,249,
+249,195,184,209,234,94,25,120,50,132,101,156,124,72,76,42,242,28,127,250,79,27,116,179,104,203,71,168,137,180,165,189,
+1,74,46,120,255,240,125,251,95,76,13,236,228,45,109,48,109,222,255,250,114,145,142,201,234,17,176,245,117,196,156,233,
+201,180,229,125,217,204,45,121,101,151,187,69,74,52,172,131,205,54,218,95,126,253,89,253,186,149,62,180,181,20,242,141,
+32,97,134,240,253,61,43,200,144,128,168,105,229,107,250,120,204,142,77,74,156,213,228,33,61,87,235,64,160,134,210,175,
+128,82,124,238,30,175,94,147,86,176,48,202,30,139,145,175,77,101,186,144,92,100,198,137,213,211,63,134,130,127,61,170,
+163,178,81,100,78,73,95,25,198,168,53,232,197,195,199,84,164,186,153,37,21,32,62,232,255,109,184,11,115,220,30,17,
+82,222,159,88,171,213,48,248,51,3,254,216,9,193,197,184,222,78,74,84,241,4,215,110,4,65,105,248,109,32,51,46,
+142,152,154,63,78,8,195,161,80,241,21,189,89,58,125,30,210,5,218,139,154,250,10,253,10,123,28,122,126,69,188,115,
+23,219,81,92,105,233,204,25,18,73,119,107,58,2,159,26,239,69,113,250,79,64,6,101,203,163,198,62,141,192,125,179,
+68,40,29,142,43,112,185,124,1,10,103,122,102,148,25,31,27,251,42,91,44,209,99,87,73,169,97,9,82,66,208,42,
+111,202,6,158,101,19,208,106,94,188,64,79,93,251,15,187,239,26,14,91,111,14,62,193,242,89,248,124,243,118,146,129,
+152,195,44,195,136,206,181,158,52,78,92,220,248,224,40,226,39,207,98,78,68,157,133,11,11,94,49,122,159,80,149,51,
+81,191,53,132,239,85,52,41,232,51,39,70,155,237,95,223,213,13,157,45,113,31,85,73,60,29,146,145,59,31,73,194,
+133,154,199,69,86,146,16,96,102,193,235,243,241,220,58,171,46,164,209,252,208,1,107,25,107,253,147,16,245,94,105,10,
+208,29,204,89,65,93,253,109,63,23,249,40,80,228,72,52,137,91,152,171,187,36,217,141,179,5,215,216,123,56,91,5,
+116,205,234,221,128,248,173,210,182,17,175,88,108,162,29,91,22,54,65,198,245,34,253,115,163,240,190,8,113,192,169,207,
+70,248,184,247,110,73,64,243,197,37,236,196,11,88,160,5,65,104,139,156,82,58,97,104,117,155,161,32,48,7,146,46,
+232,250,13,67,158,101,156,48,139,150,84,176,9,75,179,129,221,122,186,179,31,214,188,209,7,33,19,79,157,110,79,123,
+23,76,9,65,220,9,48,73,146,237,251,100,187,204,94,4,85,117,55,203,225,121,240,48,130,76,75,199,104,227,142,143,
+242,178,216,134,174,56,77,66,61,37,212,219,249,176,144,125,228,158,28,44,88,223,76,243,250,116,131,232,97,192,130,207,
+173,228,187,185,29,144,241,37,85,129,243,65,65,125,82,4,188,68,204,1,187,97,150,223,36,180,109,194,20,140,154,28,
+138,1,135,136,221,182,184,242,44,171,158,202,101,235,124,144,66,14,115,180,134,170,152,131,92,12,68,190,99,228,71,81,
+78,197,150,202,145,82,184,90,39,7,155,245,42,179,182,32,27,131,238,113,33,158,34,115,207,87,167,225,118,219,228,198,
+89,124,112,214,155,182,254,204,254,199,36,200,108,48,229,86,196,0,66,182,247,130,193,10,71,39,21,44,13,64,107,248,
+70,125,250,87,188,143,247,17,79,207,85,40,136,149,195,102,204,190,154,64,155,111,49,3,83,98,209,91,105,151,104,85,
+20,200,194,198,227,200,13,28,214,250,115,147,96,122,111,135,198,34,120,221,174,162,31,26,63,231,207,246,40,151,88,18,
+82,111,77,178,1,113,248,124,92,35,135,55,148,55,90,114,71,150,72,50,175,217,101,96,179,242,209,7,238,112,58,10,
+216,86,44,101,118,204,227,220,4,214,145,81,125,146,74,171,242,51,193,52,126,162,82,159,172,32,165,41,10,251,174,104,
+140,224,222,127,68,4,37,131,208,80,43,136,105,52,38,161,175,97,188,207,76,167,202,114,140,36,125,128,216,177,71,14,
+173,25,142,211,47,161,26,57,230,193,135,36,227,72,183,49,161,8,61,145,185,179,234,201,50,50,134,64,142,52,104,184,
+186,85,182,50,100,11,182,37,157,4,57,35,239,163,174,120,111,242,190,188,92,59,203,70,175,230,224,138,64,135,118,233,
+54,66,36,139,240,3,184,77,218,29,244,162,239,148,58,10,20,115,42,88,175,1,199,166,114,181,13,57,0,93,150,92,
+103,18,174,40,164,143,132,197,50,99,133,90,127,173,93,84,123,83,35,82,25,121,253,183,237,43,245,37,180,75,251,73,
+178,210,104,116,107,18,39,179,166,223,36,132,50,233,198,108,145,247,251,128,99,243,41,106,147,91,208,44,50,193,92,67,
+19,158,245,191,237,124,118,231,141,203,154,90,198,137,0,26,176,255,236,28,26,185,89,138,193,6,9,31,112,50,127,27,
+152,218,33,80,216,149,175,185,25,198,181,34,79,88,97,58,220,20,230,78,245,170,46,162,65,229,216,180,188,29,223,115,
+183,185,96,166,208,192,92,213,158,141,246,32,141,28,185,248,190,15,64,195,246,30,9,195,71,250,150,34,129,197,217,180,
+87,137,186,158,117,179,166,177,217,21,151,13,47,203,115,127,218,119,120,20,25,45,189,226,224,67,241,140,81,85,248,177,
+76,13,198,38,220,77,225,202,229,186,180,79,90,245,158,178,198,110,121,50,252,55,114,53,141,228,86,6,19,109,84,148,
+86,192,245,122,85,118,39,219,222,178,68,5,192,52,115,178,204,60,80,119,60,195,80,160,18,2,189,123,249,107,203,245,
+239,96,164,219,247,151,253,118,91,101,13,72,171,207,148,219,75,202,4,6,159,168,131,63,31,150,140,142,117,120,223,92,
+250,88,129,68,135,229,138,22,142,181,89,128,227,193,48,81,42,5,85,1,206,112,128,254,242,92,39,35,76,75,157,148,
+186,101,97,140,52,209,254,108,173,119,52,22,230,228,220,131,225,80,150,201,191,34,178,238,234,116,178,234,12,220,78,237,
+172,117,10,204,183,165,136,34,226,124,64,52,210,26,186,124,205,28,177,42,233,216,155,228,36,104,111,247,100,58,168,80,
+37,6,223,194,119,56,66,165,23,232,99,34,33,249,241,253,204,169,180,247,107,237,131,86,127,208,254,112,40,57,17,147,
+43,53,184,59,128,55,44,117,141,169,81,121,160,99,208,165,214,93,114,170,76,4,251,162,206,239,136,183,168,213,181,239,
+114,150,127,194,35,84,85,155,11,116,225,35,129,76,247,147,248,15,46,77,255,95,214,225,82,46,60,184,15,152,151,54,
+179,64,218,164,156,225,213,243,232,71,228,237,24,119,2,108,221,139,171,26,139,24,118,217,156,243,123,253,68,51,49,120,
+204,63,220,6,86,198,68,203,255,29,118,89,73,57,80,215,209,94,229,194,225,2,225,231,10,211,211,86,150,105,60,47,
+80,223,230,191,170,15,96,169,55,64,51,155,116,178,85,175,196,27,63,2,102,43,31,181,17,110,36,168,151,22,10,17,
+15,207,249,129,76,253,104,103,140,124,27,25,184,90,118,151,51,85,96,55,108,13,159,239,7,77,175,165,182,159,209,201,
+89,7,137,111,50,244,113,188,236,146,38,189,188,171,201,110,204,223,40,170,179,128,17,41,202,50,94,195,106,172,17,65,
+196,153,16,14,225,22,136,60,88,159,233,209,253,217,150,38,189,12,218,33,42,231,206,78,130,213,78,6,157,28,205,163,
+39,130,216,86,252,41,91,119,32,248,44,169,104,99,67,10,6,63,217,170,184,54,230,0,142,113,229,172,53,254,250,60,
+202,200,174,230,67,240,243,209,91,194,204,169,84,113,184,10,25,202,215,231,148,225,162,139,229,66,233,25,81,158,8,7,
+1,158,49,31,169,111,159,18,214,95,233,230,124,115,141,181,50,168,218,209,69,93,210,214,158,230,131,2,87,85,111,15,
+145,126,48,187,18,157,227,218,57,99,178,99,11,155,7,200,79,4,94,84,164,181,10,77,65,45,165,13,153,58,17,43,
+1,191,85,157,28,163,209,237,71,226,104,45,179,134,173,254,30,10,247,247,230,161,176,189,119,142,42,85,170,197,11,38,
+190,199,209,209,218,2,72,238,148,83,9,116,183,221,181,215,108,139,153,100,174,7,93,103,204,159,37,193,106,233,0,125,
+9,66,173,33,194,214,87,238,221,4,142,244,190,113,82,60,47,231,85,215,66,53,224,204,76,228,218,75,232,163,222,29,
+80,73,127,134,47,198,192,38,217,213,115,106,77,148,170,250,157,142,121,234,37,254,177,137,240,217,17,63,133,90,226,164,
+95,164,157,168,83,166,198,77,36,108,239,151,125,27,207,149,17,49,47,232,142,173,169,55,112,154,49,27,34,250,103,159,
+224,178,131,202,127,86,123,39,249,204,33,34,88,139,225,104,3,58,191,223,235,114,45,100,103,214,130,93,38,205,127,202,
+171,151,5,70,170,81,44,42,109,191,83,124,189,156,242,107,201,52,155,218,53,132,14,91,9,164,185,35,122,5,218,194,
+163,120,254,172,114,104,24,174,30,118,1,188,57,232,73,123,144,19,233,153,248,70,198,247,224,35,90,255,45,196,186,199,
+53,183,102,182,145,32,177,219,79,119,234,57,62,120,251,212,181,76,190,219,198,9,240,8,7,170,137,245,143,6,88,61,
+97,40,228,9,8,220,183,241,17,88,178,115,114,212,134,67,41,59,202,2,4,2,126,183,255,168,110,25,142,116,173,11,
+67,128,70,133,23,31,194,108,191,111,142,75,57,84,70,212,101,7,52,23,45,245,245,139,117,205,235,239,230,139,8,244,
+114,191,44,25,231,48,192,140,181,67,132,187,45,178,113,183,197,58,198,203,162,230,0,108,57,48,204,180,0,182,62,78,
+116,110,68,245,6,26,39,90,232,43,134,38,176,98,144,12,155,181,88,202,150,221,82,238,235,6,118,194,163,253,59,38,
+190,35,77,45,25,154,238,126,72,7,235,104,39,83,85,132,94,30,5,75,123,167,99,56,3,147,80,146,117,26,75,181,
+88,197,12,204,62,211,107,235,213,245,226,176,179,55,64,200,199,249,66,132,44,118,83,155,32,14,204,80,114,211,0,128,
+53,21,29,212,72,28,76,217,155,58,156,224,203,34,25,22,119,22,44,89,219,93,98,144,84,61,108,150,192,194,133,131,
+103,40,254,126,14,193,172,202,1,15,73,181,30,118,233,96,63,244,171,153,102,27,63,223,69,47,70,102,97,169,224,228,
+140,29,153,25,124,120,85,70,121,191,48,43,244,100,173,123,221,49,118,39,97,254,56,138,153,36,179,199,121,43,59,159,
+149,254,248,250,127,237,16,22,57,189,143,251,198,39,31,182,81,76,56,226,15,191,72,145,133,100,36,65,155,159,0,42,
+255,250,114,145,142,201,234,18,35,211,67,115,85,17,173,62,120,203,151,211,165,194,161,118,212,81,105,152,203,4,17,215,
+108,77,3,26,139,107,144,169,120,161,251,184,47,74,88,179,9,182,220,23,226,221,187,209,109,186,134,102,135,81,123,69,
+160,83,142,201,102,87,243,177,147,242,223,180,47,93,195,160,150,223,87,237,240,18,103,160,43,228,48,15,17,126,167,217,
+115,64,189,55,93,53,214,251,40,166,185,135,40,199,247,192,8,38,179,73,76,236,236,79,49,21,17,191,154,16,112,138,
+219,7,87,85,199,104,135,145,83,91,49,193,26,215,203,22,154,228,100,146,123,185,207,86,13,189,19,23,47,246,95,163,
+220,170,136,69,195,18,5,168,40,109,45,26,38,144,147,217,246,249,130,61,79,237,191,204,172,102,210,76,181,175,148,90,
+236,2,91,182,249,197,62,71,240,194,138,231,78,159,197,23,239,82,159,96,217,68,208,187,138,238,209,48,170,158,144,2,
+184,73,37,61,78,221,87,81,54,115,220,102,30,52,60,224,130,137,29,214,147,134,2,159,133,81,54,219,89,14,120,0,
+163,255,143,105,100,111,231,7,177,236,64,151,182,192,8,120,234,254,4,147,9,81,63,110,230,240,167,181,248,155,238,7,
+65,135,109,88,105,253,143,68,71,72,48,137,11,245,121,2,219,207,211,57,166,229,198,73,13,160,211,190,201,87,195,113,
+111,139,159,148,37,252,14,125,191,206,212,255,54,7,13,113,120,214,170,235,104,180,67,14,8,112,242,221,198,82,145,6,
+44,7,108,238,86,79,55,40,76,159,52,68,232,51,15,231,29,201,21,54,87,168,189,97,164,139,41,67,154,139,118,236,
+54,192,119,245,165,218,185,121,140,199,21,56,8,33,80,14,196,154,117,49,191,48,147,165,1,194,73,160,239,196,140,251,
+85,93,28,113,30,146,249,203,162,37,115,32,67,63,49,238,191,173,234,98,127,83,248,163,218,118,139,146,209,23,196,55,
+20,7,12,25,58,238,127,140,69,214,73,1,181,20,228,138,140,130,217,39,197,149,182,107,10,102,214,215,31,251,193,144,
+188,168,183,221,71,142,201,44,65,243,141,166,0,77,122,163,94,199,80,25,227,54,97,116,239,93,175,248,202,18,6,43,
+93,241,202,225,144,150,198,81,163,170,172,247,135,74,61,137,249,185,208,223,42,144,142,13,23,99,123,187,158,141,243,237,
+56,72,120,228,229,80,6,169,214,56,147,186,44,215,244,251,91,163,153,167,5,87,213,26,199,55,90,222,128,147,183,44,
+14,205,126,245,247,158,231,48,225,156,23,239,223,131,128,88,8,97,226,12,91,3,233,134,174,213,1,137,218,185,197,115,
+29,238,234,18,171,242,87,116,40,50,51,104,210,53,163,122,150,192,136,56,65,86,187,13,31,146,115,175,9,147,252,58,
+71,17,218,150,242,148,243,144,223,247,127,28,58,251,217,16,176,118,21,98,27,193,34,128,1,186,72,19,237,147,219,218,
+159,64,229,80,254,142,221,245,107,255,21,167,119,117,38,239,203,180,161,191,24,60,237,245,92,43,20,209,179,132,30,197,
+133,241,208,239,219,185,5,66,98,245,33,234,200,191,0,2,234,135,184,34,60,200,139,41,157,149,227,55,22,235,108,88,
+187,24,234,140,197,144,84,150,235,115,220,84,234,10,241,50,216,251,36,137,103,90,177,164,23,66,135,165,137,224,241,206,
+209,133,84,160,195,194,97,196,7,12,104,148,184,193,44,202,13,220,5,19,140,195,93,175,157,112,12,105,154,247,240,108,
+192,138,54,153,64,46,74,14,231,52,114,45,61,35,99,201,53,212,140,36,238,129,137,231,141,168,19,224,74,214,142,156,
+192,238,88,1,105,136,21,231,183,161,206,28,217,107,251,162,6,20,165,140,73,144,52,185,169,185,195,2,93,117,12,175,
+216,98,155,59,41,175,49,62,200,138,128,77,223,152,219,210,108,239,206,204,175,114,64,126,75,232,252,121,254,11,116,225,
+59,189,178,152,62,36,120,45,201,56,67,173,11,14,181,52,221,27,182,177,87,82,92,172,133,55,161,14,8,139,20,5,
+234,212,222,125,209,110,42,213,77,59,112,73,252,77,170,213,236,224,91,202,106,41,117,195,126,142,17,152,76,84,177,173,
+234,162,218,181,101,210,39,61,255,117,162,247,61,102,163,52,15,14,208,90,216,210,168,89,219,250,127,227,65,118,153,151,
+200,1,187,122,157,206,116,227,145,201,15,62,242,83,244,0,133,77,87,36,92,35,169,185,8,12,15,22,57,141,37,109,
+196,198,182,95,89,210,216,244,61,85,205,71,18,81,2,25,220,77,158,29,90,109,5,85,77,171,59,77,218,96,33,72,
+50,123,47,2,222,106,63,39,66,137,42,44,85,104,231,32,223,18,75,122,170,243,201,138,113,130,67,81,86,215,61,123,
+226,101,38,247,108,238,110,234,88,124,217,222,169,24,51,2,251,88,35,196,204,50,166,27,157,193,59,133,246,132,37,216,
+57,0,167,76,26,176,87,75,239,187,183,188,112,149,4,97,90,175,193,176,55,207,109,238,19,115,26,255,250,114,145,142,
+201,234,17,3,32,102,139,132,24,44,214,185,107,147,190,117,64,115,172,19,232,227,224,188,245,147,224,48,4,250,67,248,
+2,83,216,80,63,55,169,43,76,248,111,42,60,159,180,198,232,69,92,245,24,56,66,145,56,17,202,255,80,148,217,139,
+125,181,190,211,239,134,54,204,166,159,177,83,254,152,207,175,227,191,240,233,194,147,44,96,178,203,18,96,147,133,235,214,
+124,100,117,56,35,173,131,82,170,236,178,150,83,224,213,213,45,8,56,227,164,139,114,12,197,51,12,17,103,114,107,78,
+146,115,151,140,86,62,24,234,139,242,127,109,78,151,168,204,188,46,0,70,22,213,149,143,120,38,172,217,252,35,20,111,
+29,180,108,138,197,28,180,158,134,242,33,186,238,14,103,188,48,191,17,60,21,230,33,226,11,203,94,239,0,216,81,224,
+75,67,242,68,68,254,84,237,69,234,109,211,56,139,123,188,217,16,243,251,95,81,118,83,24,172,187,13,31,101,16,218,
+57,2,75,136,74,96,179,74,1,78,55,164,189,68,214,115,135,174,219,33,156,5,172,92,70,16,37,238,65,164,15,43,
+99,154,11,235,78,185,22,107,44,6,33,194,98,255,95,89,69,21,110,18,58,14,31,253,150,199,25,121,231,50,58,63,
+68,169,167,0,174,21,181,147,201,153,222,34,159,136,162,204,26,14,192,251,172,142,67,153,84,231,38,138,4,80,153,4,
+100,43,133,139,243,139,228,15,222,130,207,243,77,200,167,167,58,218,93,236,120,183,6,176,123,192,44,143,49,73,112,231,
+103,169,85,254,10,161,54,55,172,179,140,74,200,25,196,147,9,249,213,9,228,14,121,211,10,147,139,155,8,79,167,152,
+234,85,83,154,96,192,89,120,159,37,226,80,38,126,26,178,202,39,163,116,17,110,177,254,113,193,164,4,28,91,10,234,
+44,137,118,38,230,22,248,247,51,164,31,242,202,102,16,119,158,227,26,63,95,198,191,38,239,243,84,16,127,57,94,253,
+110,112,168,125,184,231,41,99,206,116,218,102,221,227,8,202,40,77,33,182,219,202,222,73,136,142,216,155,98,3,120,79,
+47,35,29,220,81,90,254,200,156,32,161,17,122,221,171,176,244,35,218,160,134,41,62,59,237,33,223,234,141,173,43,147,
+234,184,7,189,90,193,75,189,197,89,11,143,196,8,245,73,146,204,143,236,33,84,23,77,173,206,223,11,52,18,86,138,
+129,230,247,252,197,98,158,52,9,13,151,213,227,94,196,162,13,247,34,125,161,133,177,252,82,89,76,133,39,193,104,135,
+75,179,63,215,250,159,147,183,194,122,168,165,79,170,104,113,76,54,247,130,242,68,252,157,96,35,44,208,213,199,224,217,
+213,163,179,18,229,210,83,194,26,41,199,201,108,33,91,160,92,34,250,23,189,198,33,114,49,126,160,153,232,9,232,233,
+131,54,129,19,86,131,84,42,186,137,190,48,93,240,158,157,242,29,73,129,205,158,35,73,73,81,184,39,146,87,182,123,
+222,53,175,16,131,29,62,221,1,76,78,121,212,44,244,168,55,48,46,135,105,183,71,62,171,208,189,33,96,87,79,14,
+48,159,179,77,194,171,19,214,12,45,215,60,93,126,20,169,212,105,210,15,207,18,118,170,99,167,104,211,150,102,2,233,
+23,205,49,188,50,49,5,174,157,156,118,198,239,107,55,63,15,6,222,220,30,142,145,22,47,136,26,162,160,233,251,194,
+126,68,36,7,170,7,190,149,38,203,8,221,161,253,163,17,5,99,34,249,23,130,84,35,188,161,138,146,52,149,32,212,
+94,99,228,138,198,141,50,236,191,224,160,160,70,204,241,166,169,244,160,25,139,2,2,142,4,90,252,226,237,101,57,40,
+115,67,179,230,6,202,202,197,105,200,254,209,89,98,200,179,2,246,193,217,138,229,99,81,6,247,80,136,176,109,198,23,
+155,191,11,16,89,216,19,196,54,143,111,194,143,197,34,225,104,156,254,98,122,52,113,30,169,121,246,177,152,95,20,139,
+195,226,100,52,211,124,198,211,247,97,17,128,64,119,197,3,148,186,19,254,145,15,116,154,151,75,67,48,240,43,144,77,
+170,202,122,92,91,130,119,208,21,40,83,51,93,239,21,30,109,101,33,116,121,171,215,13,65,62,66,247,171,221,230,18,
+157,183,86,22,50,174,206,239,90,69,116,197,108,173,191,226,214,1,42,230,129,176,248,142,83,89,133,195,231,100,200,138,
+117,101,109,53,117,21,108,232,125,200,33,232,168,66,112,75,229,173,110,53,28,53,249,246,237,45,5,183,178,130,83,23,
+131,68,179,3,44,240,210,85,145,125,24,185,207,46,60,218,66,93,233,192,74,54,17,210,177,159,221,83,83,20,166,89,
+216,240,70,46,235,232,70,24,150,94,36,49,246,102,182,121,180,9,47,122,130,103,8,60,163,242,31,73,252,134,62,226,
+110,79,238,44,77,165,72,202,54,90,240,142,196,90,126,144,242,37,147,83,93,7,133,176,20,15,188,22,221,4,65,29,
+164,183,240,203,209,168,43,42,250,44,26,2,251,119,6,168,16,245,40,95,30,100,104,152,66,77,151,189,250,117,221,175,
+180,64,241,201,37,176,240,115,32,12,176,57,45,228,170,230,117,2,12,31,159,65,253,169,132,45,158,202,105,12,75,20,
+10,104,153,186,239,233,29,156,155,255,250,114,145,142,201,234,18,92,234,1,51,0,187,214,208,190,165,21,215,0,240,195,
+116,17,194,107,59,24,214,179,108,156,193,24,228,151,201,107,244,3,99,59,202,96,244,247,94,183,184,224,67,157,181,12,
+16,124,65,202,181,137,101,88,43,78,206,182,75,135,134,151,155,239,224,51,227,29,181,29,199,38,81,22,228,145,11,227,
+198,157,234,98,234,168,60,176,181,36,142,150,153,89,45,226,120,206,55,207,207,76,18,41,117,246,209,184,2,208,139,162,
+173,151,247,252,111,71,12,117,5,75,231,63,153,49,161,78,251,160,58,69,85,249,42,216,130,97,231,67,50,61,66,55,
+198,16,32,82,248,94,242,252,5,208,51,76,152,109,167,225,56,240,15,232,215,224,201,159,82,80,199,1,105,18,91,27,
+86,128,39,17,65,122,104,135,8,12,179,176,223,66,5,89,190,209,242,73,62,231,227,211,39,85,91,238,240,5,194,236,
+18,121,239,74,155,76,225,120,241,104,113,182,205,76,171,64,130,168,31,225,229,117,1,61,253,121,87,161,21,15,199,57,
+189,170,20,126,180,65,166,234,50,121,176,163,14,42,127,120,240,20,241,11,76,8,22,81,212,51,174,143,27,167,47,254,
+185,114,49,114,198,20,4,119,203,15,7,227,51,205,166,28,51,242,32,55,128,202,209,111,85,18,78,58,216,223,113,249,
+176,227,105,71,147,42,68,67,129,13,19,75,74,196,161,56,31,42,151,4,162,2,47,23,84,46,184,248,223,209,90,7,
+93,142,231,206,219,228,25,56,85,110,248,202,123,119,233,225,139,175,113,108,28,26,75,5,251,131,219,30,182,53,178,245,
+68,33,68,223,18,90,186,179,81,52,17,118,193,38,114,1,16,211,21,86,152,213,180,100,7,6,45,128,103,127,253,22,
+44,207,103,131,178,33,229,129,174,43,75,224,247,66,205,159,225,19,172,37,31,109,6,236,52,60,254,29,141,30,208,156,
+194,75,116,40,168,52,81,172,143,214,251,69,27,188,178,98,226,101,50,223,50,68,26,230,117,152,234,31,128,105,181,4,
+206,216,224,159,134,21,120,240,195,180,166,48,222,63,206,6,148,18,74,191,244,152,245,43,92,83,167,22,1,137,121,94,
+94,39,147,211,223,114,35,136,69,128,132,241,120,12,168,173,36,42,2,129,91,134,129,70,24,220,132,183,109,74,253,51,
+25,184,239,205,182,220,17,73,99,232,75,84,94,96,83,92,188,11,129,187,197,136,244,211,181,32,62,28,205,105,11,9,
+141,150,75,4,40,2,138,251,236,169,82,86,98,178,224,121,179,24,127,100,198,27,118,243,227,105,6,68,228,119,27,236,
+117,107,177,64,128,145,113,118,248,48,253,229,245,179,35,250,161,197,165,197,254,147,32,234,63,142,32,169,29,192,33,248,
+1,198,108,15,95,162,154,165,12,47,253,81,226,60,163,228,182,14,235,190,193,181,61,56,172,41,231,99,180,151,126,101,
+153,13,189,237,224,52,63,13,42,89,49,136,140,250,57,158,167,117,175,107,19,64,84,57,43,222,248,143,159,159,54,163,
+110,200,63,48,112,122,51,243,230,134,98,87,233,95,151,218,134,245,168,14,240,160,67,210,65,212,14,20,123,43,8,176,
+235,149,179,120,151,249,16,112,229,217,94,213,33,0,39,131,186,28,99,235,151,188,149,115,137,143,185,44,14,215,193,86,
+195,118,71,100,250,180,214,134,115,22,83,212,117,27,155,125,56,174,23,158,81,9,178,231,120,154,61,14,251,159,9,29,
+175,126,195,83,149,173,217,78,46,143,125,231,11,136,102,23,95,243,253,232,61,208,107,180,129,85,166,254,144,166,171,200,
+192,253,106,6,234,238,169,80,45,164,162,52,211,154,127,68,99,60,3,74,85,154,140,74,10,216,42,108,75,74,165,47,
+177,218,92,151,172,251,85,153,15,145,187,12,101,6,53,200,235,125,66,146,203,131,154,201,115,44,57,8,95,73,36,239,
+91,179,13,160,184,30,85,144,136,246,51,170,224,135,114,99,251,230,125,255,157,171,156,249,52,115,92,226,116,37,109,11,
+40,240,97,60,96,238,203,152,116,56,90,68,41,119,60,217,70,252,40,187,42,1,213,87,82,253,96,226,251,62,26,61,
+190,46,106,154,74,96,188,79,25,147,43,212,112,182,199,245,186,164,130,44,199,96,41,249,254,136,144,186,78,84,3,229,
+150,88,205,227,140,35,106,59,33,79,239,230,113,51,163,149,234,90,113,185,133,32,90,71,198,197,51,69,17,152,255,182,
+123,114,144,243,45,135,79,111,82,123,89,11,223,44,209,196,215,48,128,97,41,234,60,206,50,107,130,102,112,200,239,157,
+231,7,117,77,148,180,189,212,99,181,74,183,178,225,216,73,138,115,128,188,163,81,126,196,176,43,189,137,47,80,20,242,
+211,180,195,75,232,16,204,93,46,65,72,10,227,26,76,17,241,180,96,5,220,215,2,178,253,211,30,241,197,175,120,18,
+92,214,124,12,67,5,51,171,105,163,220,64,143,169,251,255,251,210,227,195,175,97,124,104,234,36,52,122,128,6,83,209,
+172,183,236,214,242,240,114,32,217,15,23,49,92,115,249,155,89,144,179,223,197,29,228,105,239,117,93,145,78,250,97,232,
+39,62,47,205,197,215,21,80,244,27,1,16,103,5,218,31,249,31,68,0,35,118,164,65,16,189,9,212,153,103,223,214,
+139,184,44,223,248,113,176,149,142,211,106,7,187,99,77,139,202,50,99,113,238,115,33,100,206,144,125,20,157,120,9,253,
+221,99,111,247,191,87,115,244,225,159,21,155,28,41,105,78,11,82,189,83,49,79,27,172,43,53,131,0,156,162,131,32,
+75,72,26,251,135,26,240,1,150,211,235,240,231,3,123,182,74,60,160,237,179,194,253,115,103,137,36,32,113,72,204,140,
+122,29,156,136,216,187,255,5,110,23,177,87,213,78,202,245,132,53,157,91,54,103,179,12,107,34,203,224,125,202,243,50,
+220,208,140,64,24,181,52,105,208,195,251,141,0,85,119,45,57,46,64,38,158,161,43,136,15,139,226,203,84,249,222,70,
+93,46,221,149,144,199,235,189,61,16,38,159,54,255,159,243,19,109,107,176,30,247,27,89,164,226,160,255,55,26,122,205,
+249,0,61,129,12,25,45,212,78,112,146,184,12,126,78,48,185,76,177,23,106,10,236,144,50,232,251,149,245,77,66,212,
+74,248,239,251,208,38,165,167,110,87,68,182,211,0,152,151,177,22,31,111,172,181,55,57,106,71,44,144,115,184,44,170,
+117,201,154,124,152,179,81,83,112,175,30,18,61,228,188,190,67,79,189,236,90,183,211,158,221,235,172,209,250,124,198,76,
+187,153,53,143,100,167,59,247,90,250,227,66,173,146,125,233,154,152,82,159,248,195,229,144,148,201,216,107,41,68,160,205,
+144,251,178,240,220,228,131,189,208,209,186,24,88,197,62,115,14,216,139,133,37,245,184,118,100,181,249,57,53,72,149,184,
+249,213,110,180,197,70,208,190,56,89,73,29,239,232,241,117,122,7,165,122,153,217,216,229,211,10,192,17,135,190,82,146,
+170,86,101,79,63,8,204,194,120,79,156,116,201,46,170,227,247,35,42,73,246,129,166,75,58,154,180,29,25,207,249,209,
+246,110,153,44,133,143,170,2,38,219,236,110,239,198,82,79,121,121,4,6,233,146,30,182,168,91,173,245,74,205,239,113,
+152,164,168,82,170,102,254,173,245,168,50,60,109,193,63,152,64,254,56,20,91,138,21,214,194,99,37,92,85,188,48,121,
+3,199,126,151,114,180,83,79,81,175,36,40,204,124,71,150,144,189,66,2,73,207,184,229,98,9,166,98,216,161,158,221,
+82,199,78,60,99,166,31,134,66,90,6,169,135,190,151,77,39,0,14,188,116,41,189,153,200,162,171,75,240,201,88,136,
+183,81,215,151,119,194,34,97,39,74,207,6,198,170,85,6,215,65,133,164,231,2,247,5,255,242,61,190,229,112,98,169,
+206,219,205,35,44,173,146,14,160,143,37,25,210,218,187,25,43,74,147,173,79,211,98,136,76,96,203,37,191,68,117,18,
+127,40,83,83,220,215,49,26,85,154,238,27,222,11,115,37,223,128,58,119,247,78,10,49,207,197,142,126,221,193,175,74,
+196,41,27,225,191,254,61,201,163,165,109,200,229,182,213,168,204,103,193,179,36,67,223,123,122,34,243,60,38,56,29,48,
+104,36,237,158,153,100,253,3,201,147,34,78,233,74,62,235,129,98,195,90,178,37,172,137,128,134,245,92,124,151,105,69,
+98,154,235,7,206,156,238,104,8,142,134,20,232,139,48,73,250,150,100,109,122,160,96,166,4,189,248,66,162,243,187,148,
+239,9,175,179,242,131,196,160,131,139,122,152,141,228,151,153,57,209,178,201,59,176,229,100,0,185,102,44,100,127,12,92,
+228,107,97,10,255,212,112,167,254,225,228,68,193,142,123,190,60,243,14,0,61,96,213,142,146,182,249,43,242,76,156,133,
+162,4,110,80,6,46,85,152,255,147,196,68,234,146,169,5,22,137,61,77,101,202,42,11,240,230,235,226,175,138,127,23,
+250,105,85,162,72,107,192,26,17,183,189,130,177,84,239,10,58,15,116,249,203,174,130,54,8,80,5,96,31,252,209,39,
+227,61,164,164,40,68,242,81,86,235,232,79,75,254,215,232,219,111,24,222,111,6,1,108,249,129,59,137,44,98,55,255,
+86,23,20,115,169,141,136,34,62,125,178,28,228,42,239,181,146,142,121,195,130,210,130,109,100,73,4,129,93,118,113,199,
+95,68,86,167,23,80,247,6,248,221,29,183,60,57,161,205,138,8,155,188,201,17,64,208,199,97,114,176,138,220,83,12,
+9,179,222,151,72,195,16,232,154,57,228,93,164,163,167,254,57,60,110,85,158,176,122,112,17,71,232,154,175,254,48,233,
+192,30,139,106,160,152,114,209,202,21,229,122,201,176,194,166,47,212,196,124,122,235,141,164,43,20,128,123,233,253,216,178,
+35,139,180,176,113,6,182,225,119,203,57,13,27,0,79,21,13,69,209,50,94,246,89,105,237,15,5,137,116,0,81,149,
+181,58,59,37,37,100,192,224,135,243,97,112,240,83,61,21,25,137,104,213,159,140,63,170,179,36,104,223,128,105,134,64,
+8,56,122,32,160,235,72,79,90,80,100,198,32,90,235,216,188,49,74,45,55,172,248,36,32,209,95,246,136,1,72,5,
+119,51,75,140,175,108,212,246,162,214,236,83,255,201,72,223,206,128,228,0,144,57,91,213,1,34,20,118,120,218,1,171,
+116,244,16,206,191,195,114,158,75,173,123,146,95,149,58,10,97,150,216,169,87,105,24,50,207,188,126,92,137,110,247,234,
+12,134,89,122,195,162,195,20,202,176,135,148,193,19,241,138,215,166,109,20,84,63,157,108,238,137,163,22,149,53,105,9,
+127,18,7,255,251,210,227,195,175,97,124,104,234,36,52,122,128,6,83,209,172,183,236,214,242,240,114,32,217,15,23,49,
+92,115,249,155,89,144,179,223,197,29,228,105,239,117,93,145,78,250,97,232,39,62,47,205,197,215,21,80,244,27,1,16,
+103,5,218,31,249,31,68,0,35,118,164,65,16,189,9,212,153,103,223,214,139,184,44,223,248,113,176,149,142,211,106,7,
+187,99,77,139,202,50,99,113,238,115,33,100,206,144,125,20,157,120,9,253,221,99,111,247,191,87,115,244,225,159,21,155,
+28,41,105,78,11,82,189,83,49,79,27,172,43,53,131,0,156,162,131,32,75,72,26,251,135,26,240,1,150,211,235,240,
+231,3,123,182,74,60,160,237,179,194,253,115,103,137,36,32,113,72,204,140,122,29,156,136,216,187,255,5,110,23,177,87,
+213,78,202,245,132,53,157,91,54,103,179,12,107,34,203,224,125,202,243,50,220,208,140,64,24,181,52,105,208,195,251,141,
+0,85,119,45,57,46,64,38,158,161,43,136,15,139,226,203,84,249,222,70,93,46,221,149,144,199,235,189,61,16,38,159,
+54,255,159,243,19,109,107,176,30,247,27,89,164,226,160,255,55,26,122,205,249,0,61,129,12,25,45,212,78,112,146,184,
+12,126,78,48,185,76,177,23,106,10,236,144,50,232,251,149,245,77,66,212,74,248,239,251,208,38,165,167,110,87,68,182,
+211,0,152,151,177,22,31,111,172,181,55,57,106,71,44,144,115,184,44,170,117,201,154,124,152,179,81,83,112,175,30,18,
+61,228,188,190,67,79,189,236,90,183,211,158,221,235,172,209,250,124,198,76,187,153,53,143,100,167,59,247,90,250,227,66,
+173,146,125,233,154,152,82,159,248,195,229,144,148,201,216,107,41,68,160,205,144,251,178,240,220,232,142,204,229,17,230,109,
+64,94,5,96,21,51,54,236,44,186,53,193,207,116,224,115,58,96,33,96,56,114,223,149,205,114,31,72,162,146,75,116,
+33,238,237,220,37,164,167,41,203,136,166,92,233,143,45,0,210,44,81,109,32,123,223,11,21,85,131,124,206,226,247,80,
+21,140,5,32,99,207,63,35,98,244,223,133,101,146,17,180,214,247,50,147,64,160,180,28,4,150,24,207,130,137,134,218,
+236,230,243,37,132,111,19,12,183,40,52,166,235,39,41,168,173,63,227,166,136,176,255,197,219,6,198,167,166,164,254,135,
+114,84,120,28,217,56,208,143,37,73,92,122,251,175,228,51,78,72,78,89,112,122,100,34,50,16,9,107,102,166,57,153,
+153,162,181,41,77,101,21,167,63,42,104,140,99,26,207,45,230,120,116,52,224,150,40,172,145,41,253,94,118,57,20,13,
+162,114,65,154,62,175,202,141,89,18,198,34,9,172,187,242,153,167,117,204,41,19,140,195,195,177,209,140,72,228,161,103,
+82,21,73,249,181,11,63,160,193,31,55,65,76,172,21,52,112,211,237,253,128,171,125,49,42,181,252,74,95,86,171,166,
+4,225,135,204,78,75,16,195,66,108,113,211,85,79,112,230,67,212,105,212,6,152,38,216,248,37,193,103,195,16,249,146,
+72,25,38,135,171,56,166,55,219,55,249,39,97,78,118,219,171,247,203,9,154,177,81,21,153,49,247,188,98,7,107,218,
+227,190,179,18,93,168,165,145,15,121,69,122,50,77,163,80,47,71,11,8,55,231,172,238,204,234,153,103,92,208,204,190,
+104,60,201,68,62,86,65,50,126,218,123,56,226,156,37,22,56,63,160,174,47,73,31,125,181,28,151,118,223,177,21,179,
+148,145,181,31,215,132,71,29,208,178,153,43,218,189,200,85,48,33,195,46,103,35,42,106,149,128,168,44,11,80,111,93,
+209,108,227,78,243,164,193,111,81,100,13,251,155,139,162,51,82,204,164,199,11,163,245,154,112,217,205,218,236,209,166,48,
+170,141,248,91,102,1,225,32,221,205,121,137,178,50,22,72,25,24,126,2,77,54,150,108,202,228,193,30,60,166,0,253,
+116,229,136,39,101,40,57,87,75,100,17,84,161,28,73,80,154,65,230,23,120,229,145,82,123,48,193,83,228,12,11,161,
+108,138,171,223,200,205,122,99,167,172,89,128,51,96,99,232,193,132,172,27,119,59,134,19,118,73,151,9,44,137,174,117,
+22,22,172,52,126,217,67,159,153,11,119,227,172,24,147,191,30,51,108,209,108,57,62,180,160,145,86,205,74,73,184,248,
+104,68,39,58,204,241,44,162,60,83,122,130,249,62,40,182,133,13,75,23,83,99,83,58,142,122,12,70,8,41,202,130,
+34,154,221,116,164,115,19,151,88,183,87,112,119,99,181,29,235,123,35,244,107,181,114,29,168,193,129,48,109,56,92,17,
+154,225,228,146,58,66,99,130,91,203,142,133,224,160,241,20,59,122,234,153,0,219,68,80,126,32,147,239,29,167,41,220,
+161,24,90,98,113,245,214,94,152,8,193,181,107,222,106,215,146,185,68,238,49,106,62,132,153,13,218,114,60,18,59,201,
+61,83,227,196,218,18,123,46,232,75,115,12,226,149,54,145,139,13,192,223,20,117,26,24,207,205,95,212,57,11,58,178,
+107,240,114,143,210,53,116,163,75,121,190,29,226,102,235,16,252,233,241,161,136,238,190,54,179,5,85,147,182,145,53,115,
+192,105,52,251,49,209,2,145,42,229,60,234,113,221,52,161,41,214,194,164,183,108,6,190,70,199,128,9,137,12,209,237,
+4,27,201,214,212,199,60,19,214,111,28,242,71,164,126,238,237,93,118,24,85,226,129,122,163,118,229,238,246,38,255,250,
+114,145,142,201,234,17,119,57,205,166,225,40,68,188,168,175,55,199,241,123,183,21,253,95,18,7,182,218,227,153,153,136,
+49,3,87,107,150,197,179,34,173,215,229,196,9,53,223,81,37,79,126,41,80,108,218,240,184,147,206,64,251,195,181,199,
+210,33,106,21,97,118,114,253,118,231,115,43,78,243,248,255,121,84,163,0,124,17,243,127,125,134,20,9,160,151,252,179,
+155,29,129,249,56,20,22,214,197,130,142,126,51,244,50,138,38,10,114,64,16,250,201,70,163,230,169,217,110,229,102,169,
+183,56,18,107,103,110,202,101,98,88,32,52,156,110,135,200,166,137,210,224,148,247,117,141,100,191,205,117,20,21,237,250,
+230,74,236,227,232,215,175,193,12,228,22,36,62,106,226,157,245,78,120,43,96,108,100,47,98,207,96,60,175,132,205,185,
+158,227,23,25,210,241,101,109,154,153,243,181,117,161,127,27,239,172,122,202,10,249,31,10,197,211,40,226,186,23,248,94,
+72,129,43,215,88,189,253,149,253,104,200,199,255,90,18,248,6,49,33,159,75,30,253,190,142,11,26,210,102,57,199,215,
+146,108,171,210,147,173,59,131,0,228,37,76,116,109,179,171,170,43,124,102,146,6,164,215,117,23,25,124,16,48,226,34,
+166,208,111,166,245,233,117,3,71,45,150,204,202,146,88,236,168,175,21,110,120,219,73,234,159,128,109,252,126,213,80,196,
+233,116,95,223,81,46,180,177,151,46,210,7,75,235,99,123,231,122,173,236,202,109,148,158,64,171,175,194,49,14,176,84,
+184,56,158,239,100,133,21,3,21,18,162,122,181,211,57,130,22,253,180,48,213,192,175,60,161,111,251,18,10,199,87,93,
+247,224,137,163,224,146,8,9,227,242,142,73,154,126,223,186,61,182,198,183,251,14,215,169,93,181,198,79,216,21,139,251,
+6,1,241,121,246,227,66,247,189,52,60,134,66,10,175,74,56,252,226,175,185,198,91,133,233,209,117,193,177,65,16,91,
+157,8,229,53,23,106,239,182,55,240,235,140,162,227,149,97,251,132,94,15,38,227,101,133,136,136,117,167,145,147,210,60,
+47,127,211,18,69,116,172,107,43,169,39,12,250,228,108,194,33,30,43,100,51,12,250,184,217,141,226,121,141,42,249,167,
+215,6,77,27,235,219,208,81,209,12,92,230,9,19,255,26,164,121,184,245,100,74,73,202,124,215,201,11,172,85,80,135,
+96,210,27,141,120,65,147,177,66,121,146,180,23,215,63,215,243,219,88,202,55,143,247,183,49,175,60,113,155,71,137,119,
+126,223,112,27,167,1,17,215,163,77,66,212,137,10,37,10,186,100,82,164,73,73,78,44,67,19,141,250,88,221,172,132,
+107,253,198,61,160,27,153,46,129,200,252,51,1,175,63,76,250,219,177,48,100,149,56,253,45,177,10,38,167,71,171,235,
+113,133,136,226,132,130,93,139,29,253,209,89,128,110,21,8,103,169,32,68,9,116,20,200,233,166,188,122,70,189,152,205,
+193,141,130,55,163,187,100,243,169,179,171,37,87,135,111,95,20,237,61,235,127,248,199,241,173,125,212,41,55,162,242,95,
+49,132,170,239,144,254,47,225,44,190,96,114,220,179,136,29,58,100,193,23,126,159,93,193,210,50,175,245,63,119,175,182,
+253,175,180,207,196,62,213,145,128,248,0,232,195,156,246,223,13,156,85,244,30,25,148,109,92,100,252,49,155,52,147,100,
+214,29,246,154,88,231,163,140,109,34,239,38,163,37,244,203,163,53,7,87,69,205,62,186,14,246,3,250,98,93,122,178,
+227,200,9,182,53,11,204,162,12,152,199,219,132,33,74,62,77,52,34,79,236,188,189,123,217,63,130,94,30,152,49,35,
+216,171,13,210,18,212,81,215,217,253,241,25,191,94,76,173,253,238,2,149,154,210,13,185,191,125,91,54,178,25,170,117,
+145,78,114,195,105,37,242,50,148,81,96,42,20,236,43,166,153,109,144,92,68,221,130,92,132,172,57,207,209,211,57,124,
+117,81,250,58,88,109,141,116,0,160,149,27,46,114,175,219,98,227,163,28,19,72,201,163,139,136,58,228,244,29,105,99,
+171,227,126,137,40,66,152,93,3,85,141,188,24,176,232,161,32,156,226,25,195,105,152,124,168,220,130,127,174,179,191,124,
+177,190,199,190,157,237,209,187,194,141,85,68,243,230,157,63,94,154,91,12,182,216,52,84,122,105,28,4,50,138,65,115,
+92,3,83,158,1,209,43,238,214,232,153,200,66,226,181,250,113,112,246,65,233,18,116,174,45,154,218,184,16,240,113,130,
+229,96,253,91,105,136,96,167,215,148,139,136,92,139,50,167,80,39,228,25,167,189,144,30,42,68,173,55,90,28,6,18,
+219,231,120,234,132,83,175,73,109,252,54,211,186,1,203,109,251,112,96,185,111,238,109,226,41,204,89,63,59,232,142,124,
+254,254,222,86,168,119,116,155,172,75,57,102,27,206,120,141,138,118,121,187,171,109,236,179,90,29,174,208,230,237,97,239,
+255,251,210,227,195,175,97,124,104,234,36,52,122,128,6,83,209,172,183,236,214,242,240,114,32,217,15,23,49,92,115,249,
+155,89,144,179,223,197,29,228,105,239,117,93,145,78,250,97,232,39,62,47,205,197,215,21,80,244,27,1,16,103,5,218,
+31,249,31,68,0,35,118,164,65,16,189,9,212,153,103,223,214,139,184,44,223,248,113,176,149,142,211,106,7,187,99,77,
+139,202,50,99,113,238,115,33,100,206,144,125,20,157,120,9,253,221,99,111,247,191,87,115,244,225,159,21,155,28,41,105,
+78,11,82,189,83,49,79,27,172,43,53,131,0,156,162,131,32,75,72,26,251,135,26,240,1,150,211,235,240,231,3,123,
+182,74,60,160,237,179,194,253,115,103,137,36,32,113,72,204,140,122,29,156,136,216,187,255,5,110,23,177,87,213,78,202,
+245,132,53,157,91,54,103,179,12,107,34,203,224,125,202,243,50,220,208,140,64,24,181,52,105,208,195,251,141,0,85,119,
+45,57,46,64,38,158,161,43,136,15,139,226,203,84,249,222,70,93,46,221,149,144,199,235,189,61,16,38,159,54,255,159,
+243,19,109,107,176,30,247,27,89,164,226,160,255,55,26,122,205,249,0,61,129,12,25,45,212,78,112,146,184,12,126,78,
+48,185,76,177,23,106,10,236,144,50,232,251,149,245,77,66,212,74,248,239,251,208,38,165,167,110,87,68,182,211,0,152,
+151,177,22,31,111,172,181,55,57,106,71,44,144,115,184,44,170,117,201,154,124,152,179,81,83,112,175,30,18,61,228,188,
+190,67,79,189,236,90,183,211,158,221,235,172,209,250,124,198,76,187,153,53,143,100,167,59,247,90,250,227,66,173,146,125,
+233,154,152,82,159,248,195,229,144,148,201,216,107,41,68,160,205,144,251,178,240,220,232,142,204,229,17,230,109,64,94,5,
+96,21,51,54,236,44,186,53,193,207,116,224,115,58,96,33,96,56,114,223,149,205,114,31,72,162,146,75,116,33,238,237,
+220,37,164,167,41,203,136,166,92,233,143,45,0,210,44,66,236,207,211,187,86,143,255,159,93,247,163,106,100,24,90,58,
+27,203,44,207,228,251,118,117,102,201,137,215,40,20,194,70,37,170,133,107,28,197,184,147,143,147,122,208,113,190,12,225,
+160,27,143,34,87,34,13,180,134,26,250,25,201,164,224,103,84,41,234,208,225,42,28,9,248,194,83,164,163,110,152,121,
+234,42,170,149,213,18,45,202,146,47,205,115,132,186,122,166,177,22,140,175,240,74,55,56,237,91,252,141,148,123,198,11,
+136,34,178,145,26,17,43,66,88,42,77,251,251,161,70,161,98,242,77,80,205,20,63,0,90,68,179,140,176,88,176,150,
+18,236,162,92,47,81,153,162,54,11,47,139,214,34,40,173,11,115,139,22,179,202,165,235,178,239,51,179,223,198,144,225,
+99,98,143,77,179,180,17,181,204,37,41,94,236,96,188,221,108,192,182,110,106,4,126,95,235,211,200,182,149,38,185,68,
+131,238,109,18,166,45,104,213,202,98,101,31,91,174,58,135,240,201,50,87,63,68,81,251,116,163,150,230,106,57,8,119,
+255,170,59,25,179,154,71,64,84,151,101,222,36,12,159,189,31,129,15,73,176,141,126,4,139,203,151,110,112,77,64,210,
+31,235,96,82,160,145,40,61,94,165,154,190,158,149,193,89,36,122,91,158,195,146,74,11,110,37,47,226,66,191,255,133,
+220,173,123,95,224,230,97,109,204,18,45,149,57,203,158,109,118,146,26,203,41,10,34,135,59,102,45,91,168,156,165,213,
+111,171,101,218,182,178,158,223,119,194,77,233,175,4,185,75,133,68,205,105,42,71,87,45,64,213,193,69,104,193,114,29,
+169,171,173,250,156,19,255,77,224,48,125,87,116,202,253,69,189,56,153,98,150,8,133,1,195,69,251,27,12,216,228,73,
+98,216,234,70,235,129,155,94,28,154,168,34,189,79,156,141,232,103,226,73,252,78,113,221,69,203,249,235,199,159,121,130,
+70,199,123,71,66,6,19,81,21,9,37,239,71,205,244,106,172,41,61,9,138,87,8,146,123,165,157,24,235,239,15,230,
+246,187,75,204,244,119,178,154,99,197,51,117,239,139,91,209,82,75,199,251,234,180,156,86,214,168,100,13,191,186,186,56,
+230,211,249,10,93,193,64,220,163,49,64,31,95,144,144,129,28,223,33,186,240,138,29,66,232,33,10,135,219,252,145,202,
+113,2,85,168,141,159,186,236,192,142,122,120,102,198,108,27,2,216,108,215,109,89,22,99,76,126,176,230,45,84,218,157,
+106,43,106,16,196,43,143,133,207,140,58,208,47,253,24,8,233,67,92,86,252,129,119,39,92,139,95,245,165,115,174,46,
+165,185,234,45,96,179,94,196,51,129,240,146,201,117,132,173,172,72,168,190,235,126,60,121,237,188,30,93,215,149,36,57,
+123,27,192,60,72,179,250,221,221,113,161,97,253,186,160,232,97,83,103,1,30,161,255,155,244,29,64,156,141,201,48,84,
+214,92,129,181,237,192,36,214,206,67,128,179,121,100,223,82,244,196,223,119,22,8,202,251,139,129,180,100,187,178,235,255,
+199,5,162,4,25,251,33,181,229,243,114,117,30,26,112,65,255,210,105,78,118,52,113,39,239,62,133,146,246,252,196,245,
+49,96,195,160,96,32,244,216,95,35,238,46,9,8,170,79,182,208,237,59,27,255,18,168,56,248,139,217,43,169,44,147,
+179,195,136,36,29,238,8,73,247,168,33,38,156,35,108,79,188,74,65,112,16,22,38,246,49,252,149,255,40,187,241,177,
+130,235,171,246,194,141,203,72,133,1,77,253,187,233,15,116,85,83,5,37,166,203,199,128,106,5,222,122,246,113,149,31,
+34,48,250,58,88,50,178,125,241,229,51,231,210,51,48,220,76,61,53,231,115,16,134,27,74,12,241,68,92,118,251,104,
+12,193,62,87,18,143,207,255,250,114,145,142,201,234,17,119,57,205,166,225,40,68,188,168,175,55,199,241,123,183,21,253,
+95,18,7,182,218,227,153,153,136,49,3,87,107,150,197,179,34,173,215,229,196,9,53,223,81,37,79,126,41,80,108,218,
+240,184,147,206,64,251,195,181,199,210,33,106,21,97,118,114,253,118,231,115,43,78,243,248,255,121,84,163,0,124,17,243,
+127,125,134,20,9,160,151,252,179,155,29,129,249,56,20,22,214,197,130,142,126,51,244,50,138,38,10,114,64,16,250,201,
+70,163,230,169,217,110,229,102,169,183,56,18,107,103,110,202,101,98,88,32,52,156,110,135,200,166,137,210,224,148,247,117,
+141,100,191,205,117,20,21,237,250,230,74,236,227,232,215,175,193,12,228,22,36,62,106,226,157,245,78,120,43,96,108,100,
+47,98,207,96,60,175,132,205,185,158,227,23,25,210,241,101,109,154,153,243,181,117,161,127,27,239,172,122,202,10,249,31,
+10,197,211,40,226,186,23,248,94,72,129,43,215,88,189,253,149,253,104,200,199,255,90,18,248,6,49,33,159,75,30,253,
+190,142,11,26,210,102,57,199,215,146,108,171,210,147,173,59,131,0,228,37,76,116,109,179,171,170,43,124,102,146,6,164,
+215,117,23,25,124,16,48,226,34,166,208,111,166,245,233,117,3,71,45,150,204,202,146,88,236,168,175,21,110,120,219,73,
+234,159,128,109,252,126,213,80,196,233,116,95,223,81,46,180,177,151,46,210,7,75,235,99,123,231,122,173,236,202,109,148,
+158,64,171,175,194,49,14,176,84,184,56,158,239,100,133,21,3,21,18,162,122,181,211,57,130,22,253,180,48,213,192,175,
+60,161,111,251,18,10,199,87,93,247,224,137,163,224,146,8,9,227,242,142,73,154,126,223,186,61,182,198,183,251,14,215,
+169,93,181,198,79,216,21,139,251,6,1,241,122,19,223,61,129,83,67,93,19,33,159,12,78,114,87,36,222,6,173,115,
+17,110,185,116,106,193,117,90,88,131,48,110,174,31,163,180,133,167,159,55,15,125,87,226,188,49,24,222,168,77,251,138,
+34,32,35,71,31,168,163,209,246,175,113,179,153,143,93,245,147,221,133,58,191,102,140,133,34,51,85,194,160,41,37,16,
+228,236,72,126,146,2,76,77,214,217,55,148,98,199,82,175,155,26,138,51,94,239,65,144,53,123,108,165,11,238,163,195,
+42,188,29,127,91,1,253,93,45,5,207,207,144,168,25,212,176,121,79,111,57,255,48,170,36,169,76,130,49,197,202,140,
+18,86,28,249,38,204,248,65,42,128,147,174,2,165,229,223,41,49,133,210,189,213,31,44,232,198,33,72,162,121,184,242,
+145,7,104,226,62,24,134,62,115,159,236,145,239,120,3,33,189,85,32,87,175,95,156,234,129,123,171,173,35,65,236,54,
+65,230,77,204,168,206,93,190,23,142,67,106,202,105,222,7,138,60,214,74,71,86,135,64,55,138,136,248,193,157,109,42,
+187,207,69,29,240,93,106,211,26,101,241,146,66,75,156,8,86,30,159,145,30,234,142,172,149,72,248,132,245,249,209,184,
+191,74,122,198,94,1,104,131,53,229,134,162,125,92,48,89,61,34,37,83,213,69,195,117,220,231,176,193,65,46,206,156,
+200,143,140,91,30,225,145,104,99,41,217,241,218,91,47,71,235,241,120,143,54,42,184,9,63,116,248,154,211,23,218,127,
+130,195,78,166,53,230,249,134,185,181,203,86,138,123,204,16,36,246,25,115,13,108,183,155,140,194,142,20,183,20,74,119,
+38,246,80,110,197,125,31,98,127,137,176,141,2,191,23,83,171,158,7,72,113,35,88,36,134,32,171,247,152,20,107,165,
+166,90,138,143,229,177,53,62,13,0,126,158,187,250,144,134,57,196,9,188,129,74,38,15,75,15,76,0,211,127,50,81,
+79,230,249,76,80,14,123,38,151,15,5,161,182,71,121,118,139,207,15,102,90,8,197,154,79,143,104,152,229,164,188,255,
+24,252,56,184,121,202,71,136,199,155,144,251,221,106,146,126,168,135,141,120,67,92,127,187,65,158,131,109,28,232,156,216,
+24,40,185,171,33,74,224,27,144,124,169,190,62,147,152,12,75,85,83,251,19,185,166,126,81,23,24,190,139,224,25,188,
+12,9,116,132,239,176,106,48,157,72,196,41,13,229,236,72,77,30,224,93,168,13,190,207,243,164,128,138,247,157,114,96,
+106,241,151,157,92,111,4,125,82,191,124,32,32,62,89,107,162,175,19,17,238,64,5,115,143,232,213,251,40,157,9,94,
+115,101,170,2,181,18,57,198,85,24,158,120,17,54,104,172,109,20,219,67,125,86,181,153,242,87,174,249,24,47,132,171,
+176,198,58,205,175,3,96,172,148,233,135,154,240,251,81,70,246,240,1,104,43,96,57,242,4,165,64,250,72,134,167,215,
+31,72,42,20,83,53,220,221,108,53,232,159,13,191,214,130,213,241,114,140,124,146,42,110,9,132,197,77,63,182,156,177,
+250,215,68,28,221,17,184,234,249,108,201,218,172,233,200,237,255,250,114,145,142,201,234,17,119,57,205,166,225,40,68,188,
+168,175,55,199,241,123,183,21,253,95,18,7,182,218,227,153,153,136,49,3,87,107,150,197,179,34,173,215,229,196,9,53,
+223,81,37,79,126,41,80,108,218,240,184,147,206,64,251,195,181,199,210,33,106,21,97,118,114,253,118,231,115,43,78,243,
+248,255,121,84,163,0,124,17,243,127,125,134,20,9,160,151,252,179,155,29,129,249,56,20,22,214,197,129,195,1,239,134,
+184,199,38,237,55,175,89,235,123,49,155,43,219,249,49,177,66,129,154,73,109,134,208,10,29,51,53,149,251,207,20,6,
+38,207,252,93,102,161,73,225,226,237,131,165,25,88,225,241,13,232,108,67,251,219,75,160,221,2,31,169,182,93,176,223,
+27,87,192,225,171,193,111,98,244,95,168,112,44,7,2,103,53,2,189,223,62,88,152,126,253,55,157,239,209,166,0,86,
+158,239,205,111,169,87,158,242,133,12,37,248,62,248,95,247,235,220,14,180,234,186,58,215,99,109,216,92,143,154,192,109,
+230,165,154,57,71,149,117,123,2,24,164,117,69,241,117,247,106,101,31,129,204,206,15,28,186,161,172,122,172,207,196,147,
+213,26,231,35,230,99,219,253,69,45,100,102,235,56,50,183,236,223,19,55,163,237,118,41,20,162,75,195,220,55,238,226,
+178,154,50,176,224,91,126,92,174,168,47,57,162,38,119,21,29,187,144,181,27,54,74,111,31,10,125,45,169,252,30,50,
+110,188,71,251,234,89,46,235,104,217,133,148,156,161,96,105,195,183,111,58,169,71,144,167,186,7,243,41,69,94,51,169,
+48,227,246,122,133,18,108,179,187,94,5,79,192,123,159,56,145,90,228,225,243,163,55,205,48,98,255,188,116,81,211,237,
+118,242,252,82,86,184,166,214,82,235,179,11,196,58,82,11,10,138,67,192,102,221,207,196,26,146,176,193,1,175,207,28,
+193,111,94,91,49,137,50,231,60,55,113,29,244,161,187,51,252,57,188,255,239,127,233,222,221,78,112,129,212,133,217,57,
+134,29,47,82,130,222,1,29,200,229,160,102,230,137,188,25,68,114,216,71,234,18,99,12,215,60,25,212,34,13,147,11,
+199,11,24,136,196,53,203,18,71,150,140,212,116,236,63,161,248,238,26,175,134,234,136,96,245,29,158,141,249,134,80,153,
+204,128,58,216,219,149,190,211,23,174,184,140,30,25,204,97,179,24,201,252,255,205,34,200,42,40,171,57,21,248,199,204,
+146,71,195,105,247,123,44,186,17,147,96,155,217,8,59,248,101,113,243,198,53,187,40,69,202,4,191,213,114,222,144,25,
+1,168,180,30,140,191,155,151,125,46,142,230,34,191,33,113,10,143,145,219,103,165,240,31,116,198,84,217,238,130,65,119,
+220,77,179,206,114,103,74,156,132,19,254,101,223,228,132,254,222,212,124,199,241,211,159,75,23,168,13,60,190,191,173,109,
+85,156,103,87,130,26,106,126,162,199,118,158,4,151,94,59,27,93,25,7,135,232,120,210,165,17,64,131,236,155,241,23,
+159,148,65,139,198,95,170,231,178,228,31,219,237,182,153,65,102,108,162,147,219,239,69,202,74,86,58,215,40,194,232,59,
+88,153,238,175,52,95,109,151,237,35,219,123,59,50,44,129,95,84,118,43,138,70,36,162,193,244,171,40,122,130,156,143,
+62,100,3,34,240,33,9,121,50,113,102,235,237,150,138,154,146,47,90,26,238,184,31,249,71,180,9,209,251,7,202,0,
+170,70,8,249,200,65,198,84,90,128,84,222,166,105,103,184,168,4,42,86,149,151,86,182,240,249,183,102,41,35,151,67,
+172,159,175,15,144,3,15,201,116,247,28,136,28,141,33,92,217,38,193,229,31,111,1,179,57,72,191,187,213,196,137,110,
+206,123,60,151,249,142,19,9,85,186,28,93,23,154,118,216,221,255,75,81,150,128,112,39,34,22,2,135,104,14,216,77,
+198,123,4,7,132,192,94,32,110,35,152,193,193,164,245,157,52,140,16,26,254,214,149,188,104,57,206,38,1,179,229,61,
+106,194,163,183,35,159,247,92,210,57,65,207,7,50,205,3,16,107,97,42,225,178,82,212,200,200,255,163,130,54,254,251,
+154,135,96,252,42,63,141,80,156,161,5,198,3,3,141,100,139,117,58,106,134,122,187,187,218,255,253,69,79,100,76,116,
+73,73,175,254,243,234,92,220,61,180,213,186,157,112,207,204,69,14,96,237,255,9,118,75,105,111,133,180,166,37,37,251,
+190,199,188,177,141,237,87,53,131,232,228,221,244,224,147,48,35,16,139,134,39,18,92,169,11,156,189,87,21,8,220,237,
+246,204,58,162,163,215,182,158,186,215,199,53,121,229,88,31,114,227,192,59,34,159,234,248,149,34,69,231,124,47,9,110,
+168,241,114,129,64,242,178,27,248,108,68,173,164,111,31,238,208,88,129,104,111,225,238,221,58,215,96,238,173,137,136,103,
+191,30,147,143,6,80,188,170,91,54,115,78,118,154,255,149,94,141,14,116,225,114,128,110,192,161,130,40,137,222,69,98,
+220,71,38,8,162,132,228,4,159,49,213,42,195,226,158,108,240,79,107,14,27,214,180,237,108,211,94,164,74,66,82,121,
+222,31,208,70,250,96,151,29,202,84,173,75,157,106,185,160,223,10,62,60,9,134,86,110,86,130,204,195,131,152,70,123,
+237,59,200,165,37,26,6,21,208,97,146,19,163,251,246,50,82,213,59,241,154,255,201,96,47,12,160,245,21,7,38,131,
+161,236,39,161,119,177,106,18,191,232,159,94,9,214,97,178,152,162,136,72,99,77,152,72,250,123,85,36,38,238,113,44,
+33,4,184,89,232,193,156,180,187,94,82,204,123,28,73,79,127,184,191,145,14,63,43,74,212,233,253,108,241,114,255,62,
+85,129,246,237,162,222,93,44,193,176,98,186,76,80,172,75,171,239,61,0,1,82,111,233,183,54,57,15,162,124,22,106,
+224,61,168,40,45,222,25,18,60,17,7,95,207,34,152,208,120,154,12,13,172,199,230,233,39,48,252,211,13,220,92,106,
+237,253,128,10,140,247,191,35,170,158,203,5,25,21,133,255,115,87,135,109,47,138,89,98,166,144,56,92,195,112,149,185,
+139,234,87,224,131,34,39,120,206,128,221,40,133,51,105,209,133,3,48,153,13,54,31,75,141,139,124,158,19,70,9,51,
+49,146,141,7,47,168,192,137,52,25,216,155,176,230,18,103,65,56,236,31,40,2,191,7,201,222,56,18,14,221,71,35,
+234,242,121,29,165,247,99,225,72,131,113,152,77,121,110,235,192,119,208,196,91,164,57,153,245,109,107,23,59,17,65,144,
+44,206,46,10,92,37,108,66,6,3,233,60,209,147,208,167,247,50,190,224,160,207,68,157,85,35,29,20,216,78,252,0,
+123,120,160,213,38,154,2,205,112,192,42,34,176,203,129,234,219,30,95,140,217,229,43,221,98,114,150,189,195,142,125,27,
+116,18,53,224,4,140,200,98,92,81,59,23,125,96,19,114,206,184,184,45,8,246,252,200,50,227,80,36,164,252,58,96,
+52,46,211,216,99,237,103,24,23,61,136,18,214,248,195,165,139,171,127,159,214,160,74,22,120,207,90,78,99,155,0,179,
+194,206,255,128,162,155,251,203,2,154,80,13,147,81,4,248,141,163,71,56,122,221,173,244,103,128,249,230,155,35,233,191,
+217,91,159,43,2,180,208,100,5,228,155,60,102,98,243,54,3,84,79,176,31,248,106,192,93,89,25,132,226,68,68,162,
+112,211,89,4,93,78,213,114,224,174,83,75,132,152,255,189,67,54,14,188,31,2,243,204,136,102,38,65,113,169,100,127,
+118,219,48,88,13,222,180,146,200,220,47,143,87,127,193,190,13,18,25,196,69,211,9,42,155,211,149,189,226,106,100,151,
+228,233,225,44,83,158,216,91,201,148,237,88,211,134,120,127,238,74,155,199,66,7,95,83,240,101,48,181,213,192,52,82,
+98,173,119,70,120,137,28,104,111,245,15,153,189,174,82,31,235,167,102,187,70,180,46,228,74,43,99,137,112,218,202,153,
+64,67,119,64,246,73,51,114,158,55,62,184,202,205,56,120,149,21,184,208,119,156,126,32,26,206,179,78,167,71,79,70,
+182,82,211,2,116,240,119,23,63,31,225,36,86,223,67,47,175,44,124,90,109,13,181,8,207,206,253,187,94,184,156,164,
+81,167,228,144,7,126,69,52,20,29,160,207,88,103,37,70,135,61,111,75,224,0,102,176,7,232,126,214,184,96,52,11,
+226,229,212,84,244,111,199,192,23,89,135,119,199,195,38,3,219,129,28,90,223,92,212,210,143,39,38,6,130,208,138,7,
+87,116,249,247,247,236,208,4,242,152,64,145,145,196,146,163,159,255,230,191,140,140,110,200,232,130,5,169,155,246,175,185,
+22,92,69,152,66,42,3,127,53,110,122,114,7,211,114,215,103,195,238,136,132,60,244,163,23,65,37,181,64,251,129,108,
+21,15,217,234,202,231,89,169,163,228,239,29,1,38,17,202,139,206,23,187,214,158,132,244,154,69,126,176,241,121,114,175,
+72,14,215,129,57,157,13,68,156,175,122,78,149,240,135,4,239,101,99,189,196,236,55,120,138,117,4,59,55,80,208,129,
+36,226,54,129,72,240,129,74,243,50,21,138,183,128,214,138,139,243,120,177,63,182,189,45,37,97,148,159,159,89,201,233,
+95,201,116,30,155,146,243,102,65,184,43,209,230,10,175,133,31,205,103,75,247,110,187,159,16,27,17,91,77,144,0,14,
+142,33,217,80,145,64,253,238,238,126,164,41,167,199,242,122,122,98,37,14,52,10,38,239,212,34,22,255,250,114,145,142,
+201,234,17,176,245,117,196,156,233,201,180,229,125,217,204,45,121,101,151,187,69,74,52,172,131,205,54,218,95,126,253,89,
+253,186,149,62,180,181,20,242,141,32,97,134,240,253,61,43,200,144,128,168,105,229,107,250,120,204,142,77,74,156,213,228,
+33,61,87,235,64,160,134,210,175,128,82,124,238,30,175,94,147,86,176,48,202,30,139,145,175,77,101,186,144,92,100,198,
+137,213,211,63,134,130,127,61,170,163,178,81,100,78,73,95,25,198,168,53,232,197,195,199,84,164,186,153,37,21,32,62,
+232,255,109,184,11,115,220,30,17,82,222,159,88,171,213,48,248,51,3,254,216,9,193,197,184,222,78,74,84,241,4,215,
+110,4,65,105,248,109,32,51,46,142,152,154,63,78,8,195,161,80,241,21,189,89,58,125,30,210,5,218,139,154,250,10,
+253,10,123,28,122,126,69,188,115,23,219,81,92,105,233,204,25,18,73,119,107,58,2,159,26,239,69,113,250,79,64,6,
+101,203,163,198,62,141,192,125,179,68,40,29,142,43,112,185,124,1,10,103,122,102,148,25,31,27,251,42,91,44,209,99,
+87,73,169,97,9,82,66,208,42,111,202,6,158,101,19,208,106,94,188,64,79,93,251,15,187,239,26,14,91,111,14,62,
+193,242,89,248,124,243,118,146,129,152,195,44,195,136,206,181,158,52,78,92,220,248,224,40,226,39,207,98,78,68,157,133,
+11,11,94,49,122,159,80,149,51,81,191,53,132,239,85,52,41,232,51,39,70,155,237,95,223,213,13,157,45,113,31,85,
+73,60,29,146,145,59,31,73,194,133,154,199,69,86,146,16,96,102,193,235,243,241,220,58,171,46,164,209,252,208,1,107,
+25,107,253,147,16,245,94,105,10,208,29,204,89,65,93,253,109,63,23,249,40,80,228,72,52,137,91,152,171,187,36,217,
+141,179,5,215,216,123,56,91,5,116,205,238,53,116,228,185,72,129,132,217,123,6,239,194,52,72,215,174,108,44,131,96,
+105,163,51,209,11,74,18,175,11,124,87,8,202,200,27,254,149,51,26,56,233,165,176,123,125,46,132,218,64,193,81,215,
+28,27,174,193,201,138,38,216,246,114,46,236,131,6,86,44,21,128,10,1,2,211,35,240,250,95,15,10,127,209,2,154,
+85,30,10,39,120,160,105,124,15,29,202,191,29,72,91,220,114,232,83,58,216,157,180,167,113,222,230,201,133,91,4,184,
+166,190,205,232,255,238,127,236,92,243,243,195,147,119,206,13,143,163,40,252,175,73,121,75,113,166,62,187,87,114,209,157,
+78,123,125,12,250,227,211,0,246,134,144,30,2,212,32,158,180,27,184,225,224,91,145,200,153,25,209,24,143,234,17,230,
+123,134,56,80,37,84,158,16,81,124,235,79,50,167,38,252,152,234,227,49,124,249,199,202,173,146,24,23,143,155,219,119,
+242,56,243,215,231,66,236,1,246,206,147,232,27,87,205,99,217,17,218,237,49,134,198,30,123,242,64,174,178,116,229,66,
+97,165,138,78,183,60,246,231,89,254,67,54,149,250,125,12,251,154,40,150,109,211,203,20,35,179,40,227,85,238,111,73,
+249,244,185,142,246,124,22,184,85,108,187,164,38,92,165,31,106,156,201,48,178,207,144,209,20,63,13,12,0,124,208,28,
+148,95,116,40,160,186,46,129,53,153,20,158,219,148,51,147,115,235,224,126,103,156,26,160,194,7,153,157,167,211,134,198,
+59,253,163,24,191,251,121,33,162,51,81,61,227,49,253,21,219,70,4,179,119,153,100,242,219,161,67,41,223,168,22,118,
+106,212,86,93,135,187,135,64,13,215,241,158,116,121,51,199,90,69,213,63,108,89,217,141,169,29,105,65,198,83,85,47,
+138,154,60,195,147,222,26,29,159,108,196,36,211,147,1,188,243,219,51,62,35,32,179,88,31,107,165,192,175,155,166,30,
+105,119,196,90,11,106,225,138,216,34,154,165,235,70,66,199,255,10,62,212,255,73,34,112,157,57,243,254,119,103,244,198,
+24,153,195,171,181,68,75,74,130,104,159,160,122,217,241,55,135,48,77,142,53,2,255,189,107,61,202,150,185,219,195,251,
+143,8,171,217,116,144,60,248,149,164,7,77,254,161,132,225,1,118,116,161,86,46,183,148,8,163,192,164,13,8,210,171,
+72,158,15,37,113,38,101,104,244,186,247,198,106,67,99,78,49,135,161,162,174,10,253,51,107,223,234,81,114,70,131,125,
+46,82,98,58,116,79,66,200,2,74,142,135,130,97,149,85,22,212,34,120,129,16,96,221,216,47,110,136,19,136,26,56,
+190,10,163,17,215,39,71,90,213,92,174,228,116,234,171,185,18,176,155,221,96,221,64,94,161,205,147,177,17,221,236,244,
+171,152,86,165,123,7,142,63,90,159,5,240,139,129,114,191,156,27,55,15,101,5,58,125,141,197,30,193,4,230,189,151,
+132,59,57,218,96,155,43,205,157,251,154,108,6,19,53,222,141,228,55,217,139,90,168,25,52,63,212,189,76,149,189,139,
+11,56,107,73,191,145,174,35,44,208,159,133,147,38,204,13,190,169,99,224,141,155,47,241,79,255,250,114,145,142,201,234,
+17,176,245,117,196,156,233,201,180,229,125,217,204,45,121,101,151,187,69,74,52,172,131,205,54,218,95,126,253,89,253,186,
+149,62,180,181,20,242,141,32,97,134,240,253,61,43,200,144,128,168,105,229,107,250,120,204,142,77,74,156,213,228,33,61,
+87,235,64,160,134,210,175,128,82,124,238,30,175,94,147,86,176,48,202,30,139,145,175,77,101,186,144,92,100,198,137,213,
+211,63,134,130,127,61,170,163,178,81,100,78,73,95,25,198,168,53,232,197,195,199,84,164,186,153,37,21,32,62,232,255,
+109,184,11,115,220,30,17,82,222,159,88,171,213,48,248,51,3,254,216,9,193,197,184,222,78,74,84,241,4,215,110,4,
+65,105,248,109,32,51,46,142,152,154,63,78,8,195,161,80,241,21,189,89,58,125,30,210,5,218,139,154,250,10,253,10,
+123,28,122,126,69,188,115,23,219,81,92,105,233,204,25,18,73,119,107,58,2,159,26,239,69,113,250,79,64,6,101,203,
+163,198,62,141,192,125,179,68,40,29,142,43,112,185,124,1,10,103,122,102,148,25,31,27,251,42,91,44,209,99,87,73,
+169,97,9,82,66,208,42,111,202,6,158,101,19,208,106,94,188,64,79,93,251,15,187,239,26,14,91,111,14,62,193,242,
+89,248,124,243,118,146,129,152,195,44,195,136,206,181,158,52,78,92,220,248,224,40,226,39,207,98,78,68,157,133,11,11,
+94,49,122,159,80,149,51,81,191,53,132,239,85,52,41,232,51,39,70,155,237,95,223,213,13,157,45,113,31,85,73,60,
+29,146,145,59,31,73,194,133,154,199,69,86,146,16,96,102,193,235,243,241,220,58,171,46,164,209,252,208,1,107,25,107,
+253,147,16,241,23,21,160,168,242,111,59,183,38,100,235,81,118,36,158,84,185,163,100,214,205,233,65,154,55,198,197,226,
+62,51,180,10,210,12,81,83,137,170,177,59,105,34,130,174,45,108,163,198,40,78,41,84,194,227,81,226,58,35,154,46,
+187,83,187,90,2,171,29,165,62,141,8,17,145,1,173,91,53,9,126,97,60,65,119,56,140,221,41,46,203,246,57,212,
+227,25,166,249,239,75,144,242,148,31,253,13,98,223,165,220,7,206,92,189,66,255,30,105,116,115,200,154,70,159,230,207,
+121,160,222,86,98,169,18,68,147,51,241,188,80,45,91,185,123,169,84,144,98,192,50,249,202,157,68,173,81,134,201,29,
+252,232,236,78,58,210,243,188,121,89,136,153,83,126,226,148,65,170,167,20,20,174,200,105,234,130,63,32,74,83,212,107,
+116,194,77,164,106,81,154,210,14,140,15,147,207,193,148,211,206,113,28,14,83,7,74,74,191,137,234,101,203,110,44,94,
+137,55,178,121,238,241,175,189,222,45,115,120,110,117,100,148,118,147,168,103,134,46,107,67,148,208,10,31,79,170,174,98,
+240,154,177,49,178,3,237,215,129,76,252,110,66,54,215,254,163,46,9,24,122,189,146,165,136,33,213,45,69,80,224,223,
+192,63,50,145,130,108,198,58,22,80,73,141,113,64,213,178,165,205,247,8,232,179,14,167,168,73,72,28,119,253,187,75,
+64,204,194,248,128,159,64,235,174,183,110,166,102,212,208,119,85,126,113,77,158,72,100,211,51,158,60,233,211,189,228,0,
+92,246,241,229,142,209,10,173,216,146,193,197,249,127,235,215,196,169,71,101,194,65,131,14,117,247,48,52,70,222,116,159,
+251,223,159,224,234,163,116,254,92,40,194,237,71,249,97,10,193,67,214,140,140,217,197,52,62,176,143,96,78,88,234,140,
+240,118,43,30,231,192,100,100,254,129,223,134,79,79,118,111,139,199,32,2,214,173,104,235,41,187,218,130,161,20,40,126,
+108,124,99,187,32,114,196,161,92,46,192,114,208,201,31,154,241,113,117,10,225,8,185,203,116,223,176,7,183,182,89,57,
+155,32,47,32,68,166,192,134,19,240,100,165,123,23,191,148,137,34,242,208,120,65,89,151,240,211,232,85,170,242,130,191,
+111,148,223,140,63,235,165,143,37,201,185,31,62,113,126,24,21,114,171,115,195,85,88,45,156,213,125,223,181,42,235,126,
+81,42,20,66,113,128,81,47,9,163,37,36,87,2,160,215,115,131,200,19,38,230,115,176,244,41,233,23,93,254,74,115,
+16,238,196,159,201,79,128,188,119,142,55,19,127,55,210,105,18,86,248,98,8,78,102,237,79,115,13,233,226,229,51,236,
+41,137,97,236,196,5,46,63,10,214,109,201,198,110,115,211,233,31,202,174,247,186,10,73,128,134,130,29,116,152,135,160,
+231,13,170,192,244,75,194,153,159,130,175,201,32,26,5,155,111,192,194,182,49,237,177,5,45,151,169,77,238,205,29,85,
+131,115,14,24,55,217,237,59,111,183,139,75,134,143,126,182,133,106,110,157,181,230,140,224,206,179,24,50,240,228,221,4,
+81,151,109,25,33,216,66,56,30,53,150,132,13,45,115,25,104,123,178,155,205,110,165,17,237,255,71,151,122,243,141,142,
+217,168,60,215,246,86,108,157,189,136,188,240,200,187,119,215,225,49,18,154,194,130,14,133,140,165,70,223,0,75,30,62,
+255,116,173,199,25,33,140,168,86,74,127,199,200,221,190,70,169,84,51,157,207,164,164,62,84,50,26,183,184,148,240,144,
+24,201,167,255,5,132,178,33,143,75,123,90,29,155,1,65,87,60,238,255,250,114,145,142,201,234,17,3,32,102,139,132,
+24,44,214,185,107,147,190,117,64,115,172,19,232,227,224,188,245,147,224,48,4,250,67,248,2,83,216,80,63,55,169,43,
+76,248,111,42,60,159,180,198,232,69,92,245,24,56,66,145,56,17,202,255,80,148,217,139,125,181,190,211,239,134,54,204,
+166,159,177,83,254,152,207,175,227,191,240,233,194,147,44,96,178,203,18,96,147,133,235,214,124,100,117,56,35,173,131,82,
+170,236,178,150,83,224,213,213,45,8,56,227,164,139,114,12,197,51,12,17,103,114,107,78,146,115,151,140,86,62,24,234,
+139,242,127,109,78,151,168,204,188,46,0,70,22,213,149,143,120,38,172,217,252,35,20,111,29,180,108,138,197,28,180,158,
+134,242,33,186,238,14,103,188,48,191,17,60,21,230,33,226,11,203,94,239,0,216,81,224,75,67,242,68,68,254,84,237,
+69,234,109,211,56,139,123,188,217,16,243,251,95,81,118,83,24,172,187,13,31,101,16,218,57,2,75,136,74,96,179,74,
+1,78,55,164,189,68,214,115,135,174,219,33,156,5,172,92,70,16,37,238,65,164,15,43,99,154,11,235,78,185,22,107,
+44,6,33,194,98,255,95,89,69,21,110,18,58,14,31,253,150,199,25,121,231,50,58,63,68,169,167,0,174,21,181,147,
+201,153,222,34,159,136,162,204,26,14,192,251,172,142,67,153,84,231,38,138,4,80,153,4,100,43,133,139,243,139,228,15,
+222,130,207,243,77,200,167,167,58,218,93,236,120,183,6,176,123,192,44,143,49,73,112,231,103,169,85,254,10,161,54,55,
+172,179,140,74,200,25,196,147,9,249,213,9,228,14,121,211,10,147,139,155,8,79,167,152,234,85,83,154,96,192,89,120,
+159,37,226,80,38,126,26,178,202,39,163,116,17,110,177,254,113,193,164,4,28,91,10,234,44,137,118,38,149,36,74,49,
+107,158,218,63,185,133,240,92,194,12,189,185,140,157,32,34,241,37,117,20,180,180,121,93,226,189,86,58,192,237,180,70,
+111,252,123,120,159,58,198,206,40,71,30,116,39,75,50,84,26,118,44,181,129,233,73,234,83,29,11,82,105,224,199,128,
+178,117,185,87,156,60,9,215,12,200,48,255,44,229,109,206,222,6,133,111,144,208,76,232,23,13,67,13,210,231,45,99,
+4,32,71,72,199,89,104,52,151,75,126,254,175,128,108,245,241,130,5,178,48,220,194,62,231,86,43,158,24,175,128,66,
+243,240,185,102,42,20,94,4,110,238,207,96,116,71,86,156,172,214,76,190,163,12,14,94,82,189,247,193,202,34,203,96,
+68,156,25,207,199,67,108,44,68,236,25,73,53,248,249,151,48,205,207,173,139,11,174,248,222,113,190,23,218,59,189,197,
+228,163,116,11,77,64,58,173,132,174,255,116,127,250,133,130,96,196,141,213,63,28,33,145,151,6,54,8,0,23,141,69,
+216,28,205,185,213,202,167,9,188,168,10,186,123,39,8,223,93,119,70,122,34,122,98,150,118,16,122,248,195,38,27,96,
+47,67,80,99,138,254,78,223,120,171,224,22,39,39,12,134,84,226,198,223,242,51,86,69,161,201,107,140,44,114,85,158,
+94,63,78,76,205,190,210,22,160,62,220,50,73,155,17,90,139,250,76,17,137,89,185,117,114,206,124,46,150,180,185,219,
+181,138,236,88,22,82,249,169,234,246,149,40,201,230,91,253,104,137,147,30,103,129,183,136,196,195,187,215,121,59,154,121,
+154,217,6,250,29,171,169,255,17,194,102,209,167,173,105,147,29,31,203,203,206,246,214,49,102,75,225,23,161,126,179,126,
+249,207,20,214,78,191,221,129,214,142,243,182,23,133,156,51,229,129,70,81,101,70,180,187,182,243,118,56,152,86,37,53,
+21,137,43,150,237,211,176,229,37,139,7,74,236,208,136,139,93,105,84,124,55,105,166,112,154,137,241,23,238,241,201,188,
+115,106,207,95,82,175,118,164,77,88,172,96,45,222,98,118,43,223,18,195,191,2,253,156,73,56,168,156,192,173,198,42,
+57,248,202,34,239,38,81,84,219,136,168,33,68,162,134,235,93,190,237,38,187,114,214,237,223,244,184,179,113,248,230,44,
+228,1,244,216,82,166,223,87,132,111,39,242,96,11,35,131,160,114,129,111,193,158,24,241,186,168,140,66,218,218,184,124,
+6,149,138,135,210,77,171,63,41,5,185,83,226,155,197,245,11,193,54,87,215,158,200,229,183,181,151,90,249,156,29,47,
+14,135,194,83,231,149,33,48,155,175,13,247,112,147,24,54,182,195,45,247,197,159,212,144,113,199,21,96,52,46,108,45,
+237,81,226,50,211,88,191,166,97,9,88,228,21,225,127,8,28,40,43,131,15,61,57,52,5,132,220,57,196,173,100,191,
+233,110,199,225,66,38,151,19,114,47,78,253,105,91,142,243,147,201,64,78,129,69,71,5,127,11,62,21,194,176,192,29,
+77,168,61,235,51,206,123,57,190,207,92,1,251,94,171,68,136,56,211,212,224,237,51,180,233,78,74,84,242,172,204,183,
+156,157,106,140,143,139,140,140,56,81,104,209,197,200,12,97,175,20,109,13,220,97,139,104,166,42,65,72,113,112,158,143,
+32,201,138,230,29,81,192,63,246,50,211,221,199,218,73,76,143,111,80,206,197,213,233,147,127,67,161,193,17,126,59,255,
+250,114,145,142,201,234,17,3,32,102,139,132,24,44,214,185,107,147,190,117,64,115,172,19,232,227,224,188,245,147,224,48,
+4,250,67,248,2,83,216,80,63,55,169,43,76,248,111,42,60,159,180,198,232,69,92,245,24,56,66,145,56,17,202,255,
+80,148,217,139,125,181,190,211,239,134,54,204,166,159,177,83,254,152,207,175,227,191,240,233,194,147,44,96,178,203,18,96,
+147,133,235,214,124,100,117,56,35,173,130,42,57,103,20,181,195,141,123,124,24,51,27,171,42,202,95,98,229,120,117,23,
+58,187,32,23,245,77,157,118,54,229,13,113,175,31,246,205,101,54,129,170,183,162,41,101,104,7,177,0,36,105,166,118,
+232,108,7,188,31,78,126,25,164,42,159,70,49,153,8,17,21,172,39,127,24,224,82,55,129,83,60,174,95,29,55,184,
+166,159,177,218,83,119,144,254,31,218,248,63,190,72,47,158,147,51,175,178,80,27,51,97,186,230,239,34,73,234,199,165,
+104,190,97,195,110,88,83,211,214,93,175,103,145,240,236,87,226,230,168,230,255,172,6,65,184,4,82,151,220,73,244,239,
+112,14,206,205,149,225,104,218,59,145,233,137,252,186,67,7,19,197,101,117,210,63,18,14,162,112,1,80,220,85,248,166,
+110,174,155,200,59,61,207,149,31,10,64,214,66,100,41,215,2,234,7,60,223,105,207,21,255,104,164,190,179,130,90,8,
+43,122,200,119,10,35,238,219,212,92,71,225,102,30,142,93,207,2,143,200,24,115,225,148,202,48,240,22,155,53,247,127,
+242,203,138,132,207,233,14,218,23,168,124,240,209,123,29,10,80,231,237,88,7,93,77,61,85,122,252,36,65,190,236,149,
+18,166,31,149,189,227,60,157,204,186,35,16,117,28,100,15,42,235,102,206,31,8,185,121,220,67,235,164,149,134,79,194,
+153,82,78,164,69,243,76,176,163,121,47,114,71,95,162,13,120,233,0,186,151,203,148,93,143,53,108,132,102,6,152,211,
+225,186,46,252,126,95,131,67,28,245,30,225,36,48,232,130,104,228,48,157,39,226,186,255,118,38,0,7,80,111,245,83,
+32,45,111,117,243,165,159,182,116,78,209,150,71,189,167,39,245,62,233,151,203,10,117,181,90,24,175,170,62,74,137,143,
+113,110,16,241,158,75,0,140,231,25,121,81,214,151,74,227,234,218,64,114,106,156,89,238,73,178,129,252,9,123,105,144,
+38,106,253,255,56,155,111,17,230,93,16,176,126,95,231,146,172,242,142,142,141,101,135,116,40,69,53,56,102,15,99,222,
+32,138,177,22,46,173,89,175,23,246,1,18,141,255,128,197,117,224,163,213,77,244,179,65,68,163,27,178,16,232,130,166,
+94,167,167,20,86,191,125,199,16,156,55,100,40,123,191,5,106,76,167,188,86,254,127,175,80,78,209,28,10,239,153,190,
+219,184,134,144,58,179,27,128,153,23,31,223,199,220,91,137,146,59,192,17,231,132,180,107,215,54,47,149,74,159,205,217,
+103,148,80,104,188,63,7,235,145,122,121,10,157,188,176,64,7,135,161,46,87,142,55,78,102,15,77,163,207,144,204,84,
+32,60,40,130,176,154,219,246,25,30,245,127,36,44,99,88,58,237,164,202,106,133,107,214,150,8,170,254,32,28,140,148,
+68,144,121,206,73,37,63,232,62,45,48,42,12,50,54,23,125,68,7,5,240,171,78,21,205,164,54,16,178,34,185,111,
+242,186,254,107,39,123,10,76,230,181,222,227,245,62,179,170,2,119,53,194,16,157,234,248,128,99,231,107,48,250,2,191,
+234,244,4,7,47,128,178,112,62,206,221,197,167,217,156,237,151,111,171,215,199,101,160,4,130,47,99,201,203,187,142,187,
+19,104,50,43,187,254,149,220,61,225,60,126,2,30,24,49,53,99,93,178,197,154,117,230,102,32,76,126,94,252,8,95,
+58,111,204,181,52,68,63,117,104,173,40,93,70,85,8,207,76,171,8,188,216,156,128,136,18,15,170,14,141,155,129,46,
+98,136,141,195,188,149,51,68,37,171,198,168,159,169,142,118,30,44,40,236,17,217,239,67,241,156,177,75,147,39,180,77,
+119,16,100,113,29,20,206,57,67,114,253,94,238,173,41,29,204,33,188,96,15,126,221,148,116,238,217,72,254,144,71,137,
+156,126,196,132,243,56,245,125,21,216,72,247,59,254,75,52,115,119,6,116,168,48,55,11,242,43,91,227,199,119,31,205,
+128,32,213,63,252,16,70,131,255,246,170,89,202,211,214,110,220,244,20,224,129,225,99,231,27,118,67,126,247,206,132,91,
+248,67,171,251,172,249,225,84,156,156,81,90,222,64,42,43,89,41,26,32,4,17,149,41,196,209,54,107,22,39,81,24,
+164,168,255,103,152,52,6,212,83,226,185,161,45,127,150,220,132,163,16,186,150,208,83,33,70,147,109,173,102,72,105,61,
+125,225,208,174,252,104,104,233,53,73,223,122,174,174,6,225,73,60,17,254,248,110,158,131,120,233,255,220,236,14,4,22,
+27,63,135,103,73,6,199,20,1,191,129,188,27,210,73,245,173,243,165,73,182,49,224,182,6,14,210,97,107,91,228,231,
+240,54,89,169,184,160,42,22,4,110,193,1,105,82,100,252,54,125,114,184,174,20,41,197,36,186,82,170,169,22,163,109,
+39,120,212,25,218,112,10,211,34,103,209,13,255,21,17,52,99,84,156,140,81,219,3,69,39,80,149,17,2,69,96,42,
+21,29,173,124,129,201,234,110,209,132,156,38,117,26,142,243,106,125,149,51,121,156,254,227,79,58,114,44,120,144,240,200,
+213,162,169,46,202,237,139,24,218,186,223,2,151,161,92,61,255,250,114,145,142,201,234,17,176,245,117,196,156,233,201,180,
+229,125,217,204,45,121,101,151,187,69,74,52,172,131,205,54,218,95,126,253,89,253,186,149,62,180,181,20,242,141,32,97,
+134,240,253,61,43,200,144,128,168,105,229,107,250,120,204,142,77,74,156,213,228,33,61,87,235,64,160,134,210,175,128,82,
+124,238,30,175,94,147,86,176,48,202,30,139,145,175,77,101,186,144,92,100,198,137,213,211,63,134,130,127,61,170,163,178,
+81,100,78,73,95,25,198,168,53,232,197,195,199,84,164,186,153,37,21,32,62,232,255,109,184,11,115,220,30,17,82,222,
+159,88,171,213,48,248,51,3,254,216,9,193,197,184,222,78,74,84,241,4,215,110,4,65,105,248,109,32,51,46,142,152,
+154,63,78,8,195,161,80,241,21,189,89,58,125,30,210,5,218,139,154,250,10,253,10,123,28,122,126,69,188,115,23,219,
+81,92,105,233,204,25,18,73,119,107,58,2,159,26,239,69,113,250,79,64,6,101,203,163,198,62,141,192,125,179,68,40,
+29,142,43,112,185,124,1,10,103,122,102,148,25,31,27,251,42,91,44,209,99,87,73,169,97,9,82,66,208,42,111,202,
+6,158,101,19,208,106,94,188,64,79,93,251,15,187,239,26,14,91,111,14,62,193,242,89,248,124,243,118,146,129,152,195,
+44,195,136,206,181,158,52,78,92,220,248,224,40,226,39,207,98,78,68,157,133,11,11,94,49,122,159,80,149,51,81,191,
+53,132,239,85,52,41,232,51,39,70,155,237,95,223,213,13,157,45,113,31,85,73,60,29,146,145,59,31,73,194,133,154,
+199,69,86,146,16,96,102,193,235,243,241,220,58,171,46,164,209,252,208,1,107,25,107,253,147,16,245,94,105,10,208,29,
+204,89,65,93,253,109,63,23,249,40,80,228,72,52,137,91,152,171,187,36,217,141,179,5,215,216,123,56,91,5,116,205,
+238,53,116,228,185,72,129,132,217,123,6,239,194,52,72,215,174,108,44,131,96,105,163,51,209,11,74,18,175,11,124,87,
+8,202,200,27,254,149,51,26,56,233,165,176,123,125,46,132,218,64,193,81,215,28,27,174,193,201,138,38,216,246,114,46,
+236,131,6,86,44,21,128,10,1,2,239,189,25,190,23,5,95,24,105,206,134,27,244,220,54,254,18,89,57,13,25,194,
+148,250,227,46,186,133,77,11,231,240,128,110,36,213,221,173,113,76,52,179,139,193,96,249,138,29,41,216,82,109,27,214,
+108,128,191,129,251,248,250,118,241,215,12,4,254,177,193,90,116,149,193,188,86,58,194,214,5,76,42,85,86,85,184,58,
+229,251,202,21,67,221,32,133,47,81,3,138,237,62,187,243,2,134,129,127,74,76,213,47,67,112,146,186,17,0,171,60,
+243,166,49,144,131,182,13,5,246,237,71,38,190,97,235,145,177,61,8,135,75,191,198,194,86,10,67,99,149,84,211,187,
+160,120,27,158,237,54,233,63,176,163,169,49,5,85,94,92,122,17,32,28,122,60,111,241,106,234,167,144,74,21,236,84,
+121,141,72,160,106,79,232,254,51,136,103,117,67,72,117,109,200,192,198,163,17,136,222,4,232,247,216,63,223,146,178,134,
+84,85,0,55,102,246,147,5,153,142,9,157,161,124,73,47,29,37,92,145,180,174,23,14,33,149,240,101,163,15,144,170,
+182,31,63,95,33,46,70,70,41,122,113,217,144,228,65,138,213,208,250,95,250,63,3,148,198,225,165,227,240,249,115,242,
+173,70,247,220,135,207,216,108,9,109,231,14,223,20,4,93,249,236,165,191,194,127,226,174,213,45,71,105,80,109,33,151,
+155,189,51,246,203,50,73,31,101,133,42,156,55,81,156,50,31,224,110,36,55,118,193,239,237,50,186,121,121,76,99,53,
+96,10,192,176,14,3,172,61,37,233,144,73,237,104,181,85,227,108,203,25,87,177,1,129,187,245,35,69,213,220,142,129,
+186,14,33,100,15,235,221,192,147,107,72,106,130,69,65,110,203,57,184,75,253,252,85,235,126,205,29,185,136,231,112,190,
+188,92,13,159,190,164,30,235,30,179,223,200,26,228,167,80,220,113,45,14,180,251,239,201,8,122,253,140,82,215,118,135,
+193,210,47,15,31,220,18,58,212,86,89,59,186,82,181,37,186,142,185,148,160,144,239,118,49,49,205,250,192,155,205,170,
+154,5,81,67,254,244,200,7,23,206,193,54,141,98,59,62,68,67,67,48,148,21,7,79,93,121,76,201,208,48,210,170,
+211,74,207,217,123,5,243,178,207,121,16,105,2,31,236,11,123,32,225,153,56,175,121,228,202,176,55,119,228,115,252,33,
+244,233,129,75,235,116,201,97,186,174,69,99,152,61,129,248,116,69,113,217,240,115,239,242,154,119,208,174,39,91,159,95,
+149,187,63,16,36,134,157,52,62,4,212,92,85,68,195,104,5,96,155,119,200,220,114,194,145,244,240,229,139,16,131,252,
+122,59,96,64,232,155,211,212,28,16,74,86,31,237,92,34,222,69,144,213,151,244,220,226,232,159,39,11,46,75,213,229,
+116,136,24,38,212,125,191,193,255,252,153,46,137,189,243,79,128,123,91,136,207,38,12,203,42,184,69,152,234,213,64,235,
+106,53,117,64,123,141,85,174,67,207,153,234,196,20,214,236,110,10,156,209,120,225,209,141,194,89,33,165,160,167,135,82,
+84,155,165,96,150,14,136,185,223,235,180,176,73,37,218,194,35,76,216,220,149,81,112,146,208,2,107,123,211,245,7,127,
+43,55,29,69,76,184,89,206,134,31,209,58,255,227,251,104,18,66,34,43,173,7,198,48,173,156,188,100,147,166,240,55,
+119,157,221,190,211,100,154,5,10,142,23,99,26,64,244,255,29,59,55,45,7,63,24,127,188,92,75,152,91,170,156,27,
+66,180,25,217,157,25,194,149,189,52,133,154,247,248,174,105,4,130,70,54,217,118,15,189,63,140,254,148,123,50,84,102,
+170,41,216,199,185,202,136,19,153,186,134,6,90,200,118,254,33,50,83,150,48,71,38,24,53,31,68,212,122,105,241,86,
+237,107,146,144,53,33,248,51,86,21,37,122,155,124,134,254,143,116,147,65,203,248,223,141,233,13,125,251,198,26,6,73,
+151,6,93,190,247,244,224,52,124,175,81,179,152,235,61,45,208,234,130,181,148,0,142,251,53,8,46,218,216,232,24,134,
+187,70,127,6,78,109,74,92,142,171,61,23,117,145,32,114,242,59,210,182,183,20,34,43,90,112,41,45,254,167,137,80,
+111,239,221,187,153,141,204,206,217,186,188,138,55,131,55,222,248,193,64,86,29,160,224,11,49,74,81,217,246,178,131,194,
+178,80,25,11,120,163,45,126,2,15,135,179,244,219,141,193,69,67,110,194,189,228,65,147,102,83,182,49,49,87,63,42,
+20,254,123,16,128,82,193,189,45,255,115,149,66,230,172,253,175,58,58,75,166,70,181,35,41,37,51,216,166,128,108,102,
+162,19,8,203,36,175,32,231,151,252,245,70,81,33,48,201,30,195,192,10,99,184,196,179,16,77,71,168,115,255,13,101,
+152,38,168,232,45,29,254,147,4,206,252,31,226,122,105,142,51,24,102,190,147,99,114,247,97,29,192,185,119,125,197,212,
+10,144,184,104,122,116,136,113,67,254,114,201,20,139,40,104,58,23,235,172,117,50,208,152,12,183,64,39,33,45,54,206,
+130,2,4,186,221,240,57,39,202,216,233,135,143,129,80,55,176,171,242,33,189,208,56,122,78,97,234,179,42,169,171,7,
+101,253,228,101,60,234,63,226,125,178,36,98,122,52,96,225,124,212,93,199,116,0,191,162,6,89,118,231,226,70,11,222,
+187,115,17,28,164,149,154,193,40,25,193,90,185,129,114,99,26,104,10,39,11,189,45,184,247,5,78,0,126,95,135,187,
+239,139,157,171,237,37,38,229,210,99,248,117,194,61,167,217,240,27,241,117,74,94,228,124,193,86,185,61,228,15,171,1,
+218,102,121,40,152,26,143,185,226,249,211,253,142,11,58,100,161,75,121,31,218,69,85,194,252,137,34,122,68,35,4,153,
+178,187,5,102,132,58,50,213,26,252,135,71,7,215,136,151,82,174,60,158,186,169,64,236,85,67,241,72,127,111,134,212,
+72,16,88,147,153,28,84,111,131,125,244,168,42,141,210,60,171,78,14,240,39,40,172,77,175,165,99,43,44,39,20,122,
+253,17,28,24,236,251,146,172,136,228,146,127,210,107,179,89,193,191,196,139,82,109,194,135,23,235,91,152,110,156,123,45,
+66,156,215,12,133,243,11,77,100,186,193,185,200,119,121,130,149,20,184,208,242,108,111,219,41,187,211,228,217,142,243,65,
+199,10,225,241,235,7,166,115,133,40,72,226,89,131,139,7,110,26,107,85,201,203,187,241,117,56,246,203,241,80,167,55,
+68,101,17,209,146,76,19,16,227,53,20,108,42,126,100,136,72,234,206,38,23,134,251,214,210,195,194,63,97,232,179,136,
+208,51,208,211,7,24,223,195,162,127,166,120,248,64,24,193,33,151,47,186,60,107,195,255,216,183,162,70,127,250,42,134,
+237,81,53,223,92,192,48,20,242,112,35,154,239,7,73,215,192,233,227,38,176,194,53,232,214,109,162,16,95,145,225,5,
+119,216,93,22,156,126,165,52,15,146,212,43,248,126,200,142,178,194,28,72,11,230,34,175,22,40,71,57,22,161,39,220,
+2,194,250,29,115,207,99,118,181,123,37,225,144,124,254,32,40,253,122,152,250,112,147,19,185,1,33,198,222,158,192,173,
+249,174,179,189,15,40,45,128,111,126,8,197,151,11,80,10,142,82,145,82,248,166,98,31,224,83,191,166,13,88,135,239,
+77,20,68,223,133,192,118,184,170,169,227,225,183,165,143,69,181,33,82,247,193,110,32,87,46,202,117,24,131,131,109,109,
+184,173,74,189,61,31,190,63,220,231,15,135,192,65,102,56,35,164,201,0,64,10,153,37,157,174,207,85,145,233,100,198,
+96,109,66,144,20,206,252,156,83,81,110,60,127,143,122,47,94,7,100,143,69,41,161,112,161,110,101,23,220,242,201,123,
+157,173,227,35,50,39,87,153,225,253,78,40,138,15,211,249,154,191,211,55,114,126,218,69,206,181,39,87,140,58,205,96,
+19,167,79,203,98,139,212,230,232,87,144,99,136,229,70,188,18,99,222,207,139,119,215,31,192,43,254,110,96,114,141,173,
+170,29,194,88,214,16,100,3,40,10,202,217,12,140,174,159,134,181,35,244,164,102,151,3,88,107,146,80,128,216,52,47,
+55,176,91,250,21,29,217,80,149,130,195,76,150,63,212,14,82,195,63,43,14,47,91,193,185,241,201,24,230,58,67,36,
+66,254,173,237,157,214,143,109,215,60,105,115,9,165,98,30,232,76,230,83,161,14,238,114,94,183,149,218,255,182,173,157,
+65,18,12,88,53,0,90,196,248,146,44,72,4,27,6,208,32,5,244,56,221,196,164,217,138,94,173,89,223,157,217,198,
+212,133,210,82,38,254,165,128,27,246,50,21,206,137,55,174,252,104,224,126,246,23,246,215,107,255,250,114,145,142,201,234,
+17,3,32,102,139,132,24,44,214,185,107,147,190,117,64,115,172,19,232,227,224,188,245,147,224,48,4,250,67,248,2,83,
+216,80,63,55,169,43,54,164,73,111,175,91,150,251,24,14,172,125,124,129,90,85,75,184,82,78,67,30,86,107,12,127,
+204,223,136,152,215,235,66,188,118,250,13,199,132,108,50,148,12,132,71,136,53,88,221,51,69,158,139,26,99,124,221,221,
+200,230,139,87,85,82,240,35,129,61,100,103,252,84,225,5,229,178,125,194,179,85,223,121,233,238,101,116,183,100,130,212,
+119,202,10,8,102,145,180,118,145,56,4,161,150,218,193,121,49,163,215,189,209,84,238,8,8,109,189,233,174,152,126,28,
+13,221,161,67,41,24,219,129,30,102,190,188,228,80,225,164,188,50,42,44,228,139,101,17,219,95,156,198,78,11,113,229,
+191,54,112,165,106,18,49,6,87,214,21,202,75,213,180,49,202,209,119,57,206,8,166,40,255,137,38,83,128,132,0,28,
+23,8,63,29,23,217,123,26,175,3,251,168,242,74,81,254,67,29,76,5,211,60,97,116,253,66,152,236,124,146,22,225,
+41,195,159,137,245,206,79,186,246,229,149,97,103,120,111,135,140,30,19,30,68,62,192,252,210,188,50,125,106,245,181,101,
+12,137,56,203,35,253,109,35,202,174,66,67,192,88,20,82,210,108,106,206,109,3,248,119,128,192,181,3,254,71,170,14,
+17,134,175,31,175,94,4,64,74,113,174,73,1,234,116,155,118,107,205,208,75,28,11,16,138,235,56,115,207,35,6,96,
+229,162,132,236,234,161,170,246,88,194,212,205,48,223,105,20,218,186,100,82,55,173,117,184,229,47,82,27,232,168,5,218,
+78,133,246,187,59,181,72,211,94,179,229,6,141,216,62,250,199,62,154,30,129,213,13,244,223,181,144,69,198,38,28,83,
+20,90,182,243,83,204,96,89,218,174,105,134,74,91,103,177,79,222,26,96,186,202,212,23,60,175,5,84,60,77,26,34,
+91,215,40,174,226,191,155,223,92,71,176,79,35,36,122,242,29,158,224,62,8,211,151,42,245,49,184,196,54,132,236,120,
+126,111,16,56,175,104,173,16,140,238,155,72,255,8,6,240,153,107,101,249,150,130,18,37,36,180,235,97,241,220,65,197,
+207,89,175,162,112,76,6,187,97,118,238,178,66,47,228,18,224,158,223,177,217,77,181,31,106,145,105,229,139,136,32,216,
+2,119,37,113,96,229,70,234,112,120,142,5,203,201,82,143,2,57,243,131,19,28,139,242,36,68,211,127,43,175,25,131,
+199,167,88,240,97,223,227,249,162,60,24,35,225,162,197,31,217,161,201,165,73,224,130,168,217,85,121,160,40,172,68,105,
+217,236,165,123,84,136,87,170,15,99,243,232,9,242,237,132,116,21,7,140,39,31,132,85,224,140,126,28,76,122,10,215,
+229,63,216,26,225,42,186,162,108,36,140,82,88,240,90,91,212,123,253,254,24,69,8,234,166,246,170,165,65,195,56,206,
+34,169,118,178,253,143,91,215,221,116,181,18,46,160,76,207,153,123,32,20,92,185,82,202,243,204,195,116,99,28,24,198,
+188,100,52,115,150,123,237,224,85,54,215,121,62,254,109,156,151,38,207,170,141,1,241,59,15,56,17,247,123,103,230,231,
+126,251,69,177,212,244,205,164,24,165,208,155,244,199,63,195,7,108,3,45,2,113,255,41,73,88,159,4,133,128,49,98,
+155,169,173,199,8,132,185,245,225,161,14,83,181,32,44,11,117,61,116,229,233,244,165,67,19,180,191,56,233,94,193,131,
+49,64,88,221,149,211,225,32,192,28,172,20,71,247,139,198,78,34,40,155,107,51,27,211,139,151,50,43,105,48,77,132,
+120,58,219,165,202,184,103,107,145,40,126,97,109,55,17,230,140,21,115,45,133,145,117,22,20,176,101,105,66,236,131,244,
+6,139,119,210,243,60,176,77,24,151,0,247,95,90,216,98,122,133,84,17,144,37,152,58,95,88,221,168,115,121,154,207,
+245,178,6,22,117,141,191,34,212,13,73,213,208,62,121,138,154,113,114,96,4,12,30,115,225,30,75,35,249,248,147,44,
+224,235,110,103,72,248,142,46,227,128,171,16,69,166,200,213,233,201,125,27,97,100,72,112,74,130,174,23,143,70,187,229,
+23,67,59,47,7,88,170,92,224,15,210,218,81,210,194,59,48,230,201,215,182,113,32,91,1,164,248,178,170,183,51,43,
+195,113,164,51,30,100,38,67,94,153,31,217,95,224,142,106,11,172,48,20,15,22,51,147,248,203,254,163,207,116,46,221,
+119,119,110,151,83,82,245,102,221,136,126,99,97,39,37,72,39,148,28,254,71,73,45,99,5,105,25,207,255,108,170,58,
+120,176,142,202,203,39,18,250,53,213,69,182,1,140,173,250,171,183,1,247,110,89,16,212,239,143,223,211,128,221,76,158,
+60,43,73,190,173,25,32,53,60,4,27,19,9,8,155,178,40,187,185,157,17,24,85,48,123,123,137,194,41,97,107,224,
+70,203,31,40,212,196,165,76,97,161,114,74,202,151,29,152,206,205,129,124,88,135,113,242,72,8,64,41,201,163,99,195,
+214,34,99,78,108,201,205,115,20,173,199,51,251,34,157,83,91,10,93,83,38,199,159,239,31,199,225,224,233,254,166,178,
+88,6,35,68,56,82,157,17,253,18,181,217,17,202,38,140,23,255,206,62,248,147,54,52,48,238,29,21,117,155,75,176,
+90,119,16,59,195,109,126,218,87,50,99,194,57,147,173,151,48,94,104,211,251,151,182,109,101,63,79,217,179,235,199,167,
+159,45,127,198,41,36,227,168,229,252,174,160,43,87,228,66,246,47,175,151,9,255,250,114,145,142,201,234,17,3,32,102,
+139,132,24,44,214,185,107,147,190,117,64,115,172,19,232,227,224,188,245,147,224,48,4,250,67,248,2,83,216,80,63,55,
+169,43,76,248,111,42,60,159,180,198,232,69,92,245,24,56,66,145,56,17,202,255,80,148,217,139,125,181,190,211,239,134,
+54,204,166,159,177,83,254,152,207,175,227,191,240,233,194,147,44,96,178,203,18,96,147,133,235,214,124,100,117,56,35,173,
+131,82,170,236,178,150,83,224,213,213,45,8,56,227,164,139,114,12,197,51,12,17,103,114,107,78,146,115,151,140,86,62,
+24,234,139,242,127,109,78,151,168,204,188,46,0,70,22,213,149,143,120,38,172,217,252,35,20,111,29,180,108,138,197,28,
+180,158,134,242,33,186,238,14,103,188,48,191,17,60,21,230,33,226,11,203,94,239,0,216,81,224,75,67,242,68,68,254,
+84,237,69,234,109,211,56,139,123,188,217,16,243,251,95,81,118,83,24,172,187,13,31,101,16,218,57,2,75,136,74,96,
+179,74,1,78,55,164,189,68,214,115,135,174,219,33,156,5,172,92,70,16,37,238,65,164,15,43,99,154,11,235,78,185,
+22,107,44,6,33,194,98,255,95,89,69,21,110,18,58,14,31,253,150,199,25,121,231,50,58,63,68,169,167,0,174,21,
+181,147,201,153,222,34,159,136,162,204,26,14,192,251,172,142,67,153,84,231,38,138,4,80,153,4,100,43,133,139,243,139,
+228,15,222,130,207,243,77,200,167,167,58,218,93,236,120,183,6,176,123,192,44,143,49,73,112,231,103,169,85,254,10,161,
+54,55,172,179,140,74,200,25,196,147,9,249,213,9,228,14,121,211,10,147,139,155,8,79,167,152,234,85,83,154,96,192,
+89,120,159,37,226,80,38,126,26,178,194,53,123,235,16,187,114,235,33,228,11,187,121,186,183,203,208,9,41,155,176,218,
+143,120,92,65,155,71,73,50,247,113,49,229,188,84,121,51,226,138,92,88,112,220,40,138,46,183,3,233,126,240,154,119,
+40,30,192,191,134,155,72,120,246,18,219,214,92,80,111,192,131,156,29,184,215,42,228,69,226,4,11,39,153,163,195,61,
+94,179,122,3,48,40,250,213,224,148,186,35,233,21,205,168,63,36,43,27,155,204,21,199,161,97,108,60,121,245,168,56,
+102,111,45,166,8,163,250,136,213,77,48,106,132,220,117,233,42,226,180,238,180,65,22,140,54,63,62,119,79,85,243,174,
+57,124,24,139,156,177,37,140,231,2,182,59,234,55,159,250,73,102,252,111,238,139,100,159,103,178,208,131,245,14,251,27,
+183,18,17,139,115,159,164,41,31,62,37,159,41,111,93,21,144,203,252,243,169,48,222,104,13,239,83,149,44,21,110,185,
+213,245,141,109,130,63,75,228,55,88,28,104,48,232,243,18,152,23,42,130,57,160,232,157,121,51,73,63,73,182,3,53,
+185,208,147,45,224,239,75,122,177,151,29,87,182,90,142,20,207,238,251,183,114,117,131,235,230,89,189,27,242,40,95,84,
+174,9,109,162,23,44,113,204,170,220,197,47,40,163,224,95,77,49,149,118,219,25,39,111,49,150,186,152,168,212,252,71,
+118,93,187,106,13,112,60,138,186,127,240,30,84,55,224,242,7,59,201,18,230,26,1,199,137,20,180,150,138,132,81,191,
+9,169,16,150,70,55,167,24,50,254,48,46,154,83,179,188,66,38,152,48,145,11,98,242,26,60,173,4,52,18,34,93,
+46,109,49,227,37,254,26,217,222,217,143,212,137,164,238,148,141,46,6,20,55,2,216,26,80,82,32,210,141,169,116,152,
+172,135,234,53,156,197,119,193,13,171,29,213,110,41,238,204,246,179,189,107,208,92,142,198,37,113,236,29,126,238,179,28,
+24,8,221,209,129,92,58,105,245,227,46,52,145,31,146,108,107,133,70,159,208,27,191,138,12,13,148,162,196,166,176,48,
+239,9,136,69,89,193,238,200,199,238,87,21,53,169,157,51,180,141,247,203,229,74,177,82,85,217,121,35,239,48,248,231,
+119,190,52,71,119,243,70,105,36,212,136,180,103,98,37,241,149,206,200,118,96,161,66,57,186,118,46,10,241,136,186,218,
+200,127,0,158,11,62,169,103,210,93,25,210,161,192,217,190,232,83,200,107,93,99,78,193,109,247,121,189,66,5,233,79,
+138,115,97,211,238,26,67,130,123,204,19,15,167,206,165,93,158,19,35,82,103,210,158,0,24,179,48,46,137,171,97,45,
+203,27,145,46,36,183,142,59,159,219,240,66,204,71,223,194,100,141,94,237,110,221,1,19,230,226,123,51,90,89,200,53,
+224,234,239,55,62,103,139,131,244,255,181,255,9,209,101,145,135,107,93,223,140,207,43,50,53,237,78,157,109,138,75,106,
+241,161,48,164,23,62,67,5,32,254,87,84,140,144,25,72,19,107,187,217,81,227,57,103,151,208,224,153,107,145,48,153,
+35,43,77,31,118,132,196,36,53,145,52,255,213,30,190,63,56,47,255,128,12,251,210,12,106,168,126,250,178,120,241,120,
+218,79,22,203,61,115,215,206,6,232,50,18,252,252,201,91,25,193,173,237,247,101,67,177,77,54,95,227,59,218,96,254,
+200,246,155,149,83,168,169,29,222,148,92,78,50,147,36,121,176,37,22,11,217,150,100,73,207,33,131,165,63,32,6,60,
+8,49,140,11,169,253,183,88,87,17,197,115,218,221,185,209,57,196,20,86,140,1,17,179,66,130,207,31,244,111,26,189,
+217,78,69,87,216,26,4,118,21,108,192,35,32,12,7,255,250,114,145,142,201,234,17,3,32,102,139,132,24,44,214,185,
+107,147,190,117,64,115,172,19,232,227,224,188,245,147,224,48,4,250,67,248,2,83,216,80,63,55,169,43,76,248,111,42,
+60,159,180,198,232,69,92,245,24,56,66,145,56,17,202,255,80,148,217,139,125,181,190,211,239,134,54,204,166,159,177,83,
+254,152,207,175,227,191,240,233,194,147,44,96,178,203,18,96,147,133,235,214,124,100,117,56,35,173,131,82,170,236,178,150,
+83,224,213,213,45,8,56,227,164,136,206,109,75,120,243,164,17,13,87,224,111,22,165,24,146,56,101,143,245,143,107,144,
+46,182,253,17,200,112,208,52,16,172,248,140,172,126,100,96,35,193,62,228,39,66,84,243,157,67,201,148,189,96,221,29,
+78,65,130,37,37,97,38,214,253,156,34,50,230,43,210,144,102,77,190,153,198,183,42,121,186,216,73,69,211,198,161,40,
+99,92,4,108,126,222,200,207,118,11,241,177,123,228,248,9,126,103,192,214,28,137,227,76,48,109,146,155,194,119,183,244,
+76,181,182,204,233,197,125,16,188,27,18,248,89,45,199,39,106,193,57,85,219,201,80,223,58,51,197,176,21,161,36,118,
+56,253,145,235,89,45,149,252,84,255,90,98,145,164,118,145,217,207,115,78,8,76,153,145,201,27,233,204,216,233,203,52,
+62,213,203,17,230,5,50,159,22,181,152,112,173,167,49,124,226,215,207,15,133,102,56,33,236,107,225,108,20,100,107,90,
+120,137,195,86,27,228,198,158,111,187,176,32,151,233,8,109,77,218,39,247,140,226,149,234,145,239,245,132,181,50,19,178,
+30,250,81,91,81,96,156,38,235,185,68,234,179,222,81,45,251,174,35,54,219,168,188,47,30,107,74,208,37,147,165,150,
+243,3,158,162,29,112,151,232,235,235,135,176,39,180,101,246,217,227,147,92,211,183,62,59,198,239,224,133,118,166,250,23,
+189,222,194,1,111,171,34,112,30,223,48,84,16,98,244,205,185,195,25,49,205,205,212,72,91,120,76,22,73,223,204,75,
+102,22,54,95,240,178,235,224,251,31,181,245,200,91,35,64,247,178,74,110,8,40,221,62,72,110,33,119,16,174,239,213,
+11,244,234,145,56,130,108,146,191,214,70,117,172,146,184,205,29,77,237,110,113,126,2,194,86,98,110,128,55,230,182,108,
+136,222,159,189,127,254,36,125,79,34,127,229,28,81,1,171,138,95,70,61,243,99,94,10,181,189,95,114,110,199,165,186,
+43,123,154,34,188,64,101,116,141,26,76,90,113,121,227,154,104,189,38,90,38,88,106,229,217,13,81,204,97,9,201,45,
+2,30,27,59,83,107,26,87,158,100,111,74,151,78,27,154,156,209,71,54,203,16,235,216,85,234,159,178,8,255,115,109,
+219,76,166,74,238,151,12,102,87,165,216,133,221,237,237,39,177,37,54,133,221,181,221,182,49,103,206,172,204,236,29,134,
+24,127,163,240,9,47,176,121,7,176,8,6,97,113,31,57,228,151,144,92,220,37,104,130,89,11,110,217,57,253,129,149,
+251,88,9,89,162,222,177,87,228,109,99,225,228,234,67,49,158,232,90,231,36,243,11,126,6,246,139,238,161,30,20,155,
+249,60,67,153,137,105,217,179,75,96,76,137,249,51,63,6,202,151,255,23,207,159,59,24,151,162,169,236,192,100,75,46,
+39,237,32,208,148,5,75,31,109,157,41,59,122,192,36,44,172,165,29,232,12,128,43,12,96,28,150,99,26,56,177,72,
+212,220,70,50,134,131,118,129,180,232,74,23,19,90,75,205,188,245,1,34,188,146,97,161,241,176,59,225,236,10,185,14,
+38,171,179,249,182,23,65,29,68,36,193,70,102,190,119,156,9,79,108,125,127,163,238,217,10,191,52,18,232,154,31,242,
+44,64,245,148,153,109,95,63,80,102,85,43,119,98,220,113,161,197,101,92,153,12,228,42,74,180,46,209,123,63,229,103,
+139,60,139,64,239,74,180,181,215,195,215,192,56,39,181,46,53,4,193,236,53,116,110,44,158,175,44,146,64,102,221,75,
+37,178,55,49,196,156,189,211,179,249,32,95,178,195,42,254,17,12,1,37,70,92,178,22,74,85,38,26,7,95,109,234,
+50,123,157,200,250,253,73,195,195,135,24,19,227,126,138,122,81,17,226,50,6,215,53,223,178,137,252,7,103,12,14,181,
+114,224,194,138,217,138,108,33,85,112,63,163,226,236,69,121,120,125,250,167,190,12,29,188,234,56,248,15,136,86,153,143,
+4,201,15,177,100,18,252,32,215,113,163,177,140,162,143,254,18,105,55,107,24,225,44,111,196,158,1,132,196,249,233,115,
+28,79,74,14,253,38,219,177,109,11,142,170,168,239,116,182,215,207,124,210,41,81,41,2,67,188,241,113,137,86,145,71,
+237,108,249,65,188,195,92,151,14,251,8,213,24,228,172,97,24,154,231,199,155,132,106,33,41,3,8,154,222,2,50,245,
+139,93,105,33,190,7,165,183,134,44,33,63,190,219,97,63,244,19,227,94,183,166,105,147,62,86,100,101,215,210,84,206,
+5,125,220,254,129,193,56,126,85,145,189,255,12,133,225,176,138,82,164,48,184,236,175,234,37,127,189,15,33,94,76,254,
+161,163,201,158,202,184,217,189,75,103,235,107,87,105,225,214,39,143,106,220,90,39,23,166,43,167,182,206,136,158,204,185,
+104,246,63,50,73,168,92,117,79,105,56,205,111,120,240,244,100,121,68,71,63,111,132,17,20,55,246,215,253,252,213,210,
+117,14,13,236,235,97,181,48,9,58,232,63,77,137,61,248,6,56,94,227,159,115,76,250,227,146,64,123,100,137,83,147,
+37,56,214,59,43,103,176,155,11,132,168,83,134,255,250,114,145,142,201,234,17,119,57,205,166,225,40,68,188,168,175,55,
+199,241,123,183,21,253,95,18,7,182,218,227,153,153,136,49,3,87,107,150,197,179,34,173,215,229,196,9,53,223,81,37,
+79,126,41,80,108,218,240,184,147,206,64,251,195,181,199,210,33,106,21,97,118,114,253,118,231,115,43,78,243,248,255,121,
+84,163,0,124,17,243,127,125,134,20,9,160,151,252,179,155,29,129,249,56,20,22,214,197,130,142,126,51,244,50,138,38,
+10,114,64,16,250,201,70,163,230,169,217,110,229,102,169,183,56,18,107,103,110,202,101,98,88,32,52,156,110,135,200,166,
+137,210,224,148,247,117,141,100,191,205,117,20,21,237,250,230,74,236,227,232,215,175,193,12,228,22,36,62,106,226,157,245,
+78,120,43,96,108,100,47,98,207,96,60,175,132,205,185,158,227,23,25,210,241,101,109,154,153,243,181,117,161,127,27,239,
+172,122,202,10,249,31,10,197,211,40,226,186,23,248,94,72,129,43,215,88,189,253,149,253,104,200,199,255,90,18,248,6,
+49,33,159,75,30,253,190,142,11,26,210,102,57,199,215,146,108,171,210,147,173,59,131,0,228,37,76,116,109,179,171,170,
+43,124,102,146,6,164,215,117,23,25,124,16,48,226,34,166,208,111,166,245,233,117,3,71,45,150,204,202,146,88,236,168,
+175,21,110,120,219,73,234,159,128,109,252,126,213,80,196,233,116,95,223,81,46,180,177,151,46,210,7,75,235,99,123,231,
+122,173,236,202,109,148,158,64,171,175,194,49,14,176,84,184,56,158,239,100,133,21,3,21,18,162,122,181,211,57,130,22,
+253,180,48,213,192,175,60,161,111,251,18,10,199,87,93,247,224,137,163,224,146,8,9,227,242,142,73,154,126,223,186,61,
+182,198,183,251,14,215,169,93,181,198,79,216,21,139,251,6,1,241,122,19,223,61,129,83,67,93,19,33,159,12,78,114,
+87,36,222,6,173,115,17,110,185,116,106,193,117,90,88,131,48,110,174,31,163,180,133,186,130,200,117,220,174,33,154,15,
+216,255,230,207,85,193,235,103,226,221,91,68,129,35,249,206,112,144,211,129,40,106,1,68,53,205,136,153,54,34,160,197,
+216,247,24,195,228,160,199,11,179,117,171,137,171,81,48,41,191,129,189,54,107,166,123,218,58,26,33,205,216,157,156,115,
+45,157,252,33,168,81,160,242,84,21,5,18,82,140,190,47,186,189,245,73,55,253,100,63,128,127,184,220,67,26,189,78,
+194,164,66,222,67,14,146,8,0,253,89,77,254,138,179,144,193,169,186,55,70,42,191,144,33,70,247,148,75,154,130,131,
+225,228,225,190,169,50,214,55,63,28,231,150,50,145,125,84,79,177,2,52,198,205,233,175,52,165,139,85,223,20,229,58,
+14,42,178,139,203,113,236,7,240,74,186,53,201,203,135,130,224,56,9,238,171,164,248,92,216,67,116,50,145,201,149,157,
+236,97,196,188,242,204,199,132,136,162,244,141,219,125,42,19,125,182,173,141,245,96,26,236,19,228,5,5,58,208,30,72,
+14,175,64,227,187,20,222,123,252,204,47,118,16,34,104,111,118,225,170,165,132,52,72,116,113,198,50,146,195,82,192,175,
+220,114,33,157,163,219,4,62,135,236,192,85,26,60,142,221,8,217,182,224,177,126,57,229,30,234,97,18,126,123,243,80,
+103,216,166,22,114,24,35,219,174,166,53,255,178,146,245,215,176,168,115,154,180,4,151,149,153,92,82,184,13,114,101,80,
+25,23,126,169,245,244,39,32,175,177,27,200,230,238,107,204,40,217,188,114,23,53,29,208,190,151,141,16,52,211,223,67,
+109,61,140,41,38,236,230,192,243,43,126,194,221,23,159,25,236,215,162,155,19,219,89,244,15,244,167,181,37,61,204,106,
+168,97,236,74,74,70,117,52,34,189,136,72,67,97,128,2,12,233,108,0,213,14,226,57,54,97,54,224,158,227,254,216,
+118,112,218,254,127,161,110,182,187,24,206,69,32,251,164,19,32,169,19,250,22,16,221,192,152,28,41,215,193,105,133,100,
+202,236,210,58,179,69,178,247,128,130,173,55,189,251,34,214,212,8,228,38,159,30,248,197,167,250,223,250,142,19,18,55,
+25,97,29,108,129,190,150,163,99,125,110,61,236,69,4,66,119,175,146,54,87,118,189,59,118,94,43,160,9,99,78,87,
+235,14,122,3,20,204,156,7,142,255,153,227,107,141,167,94,154,70,147,45,72,225,87,45,82,209,82,104,31,83,53,170,
+206,148,227,77,160,120,156,124,101,55,30,145,243,129,6,20,233,206,210,53,234,189,226,65,66,157,172,252,241,174,53,42,
+137,240,196,167,22,96,193,37,212,54,250,200,191,222,181,154,246,58,34,212,68,72,69,35,89,118,74,153,234,184,74,140,
+65,182,224,79,125,68,112,111,235,155,196,113,211,72,248,195,94,130,249,191,121,140,55,242,155,33,71,18,80,25,47,13,
+190,125,123,128,248,134,27,7,123,91,141,132,179,133,200,225,250,209,10,125,12,45,15,75,33,63,109,120,179,120,133,228,
+116,209,171,38,26,227,200,223,167,80,145,33,56,200,195,217,89,174,73,161,97,78,56,95,141,31,138,55,135,112,0,156,
+111,197,149,123,7,210,71,46,93,117,252,84,153,191,83,21,29,174,35,189,200,179,234,167,69,18,35,172,74,62,127,18,
+215,198,113,112,166,247,81,165,84,206,50,201,88,83,234,22,86,109,217,96,92,130,183,213,131,75,182,204,146,175,78,244,
+113,242,109,133,204,134,116,130,117,58,65,174,37,120,116,169,247,166,154,178,53,127,83,140,32,40,98,199,33,224,187,213,
+174,238,103,197,39,92,122,178,96,20,234,87,124,62,255,199,18,32,31,4,204,184,223,17,105,211,248,119,40,16,191,113,
+20,251,225,130,80,22,10,144,132,173,92,109,149,66,57,217,221,154,124,255,252,185,125,119,138,222,137,123,100,95,212,53,
+169,227,32,226,97,7,54,171,97,42,197,21,70,33,177,225,98,102,50,61,251,249,61,25,136,223,132,70,38,31,86,166,
+111,48,97,132,96,119,106,199,39,88,50,102,219,60,253,108,162,175,64,65,65,192,2,54,32,100,58,15,237,137,162,94,
+116,73,5,8,158,253,107,54,208,191,211,210,222,125,25,104,14,250,87,65,201,159,31,126,181,21,148,37,68,250,47,253,
+45,166,8,196,40,90,91,162,31,102,57,122,70,185,9,135,117,233,170,176,156,14,183,110,115,39,239,205,115,102,36,2,
+151,141,164,43,26,27,232,50,248,118,79,253,133,124,118,154,38,162,29,120,222,245,199,135,168,88,251,250,249,155,161,25,
+156,154,213,178,138,119,99,217,175,92,157,155,40,102,118,90,31,148,73,202,129,254,111,89,108,144,15,210,177,102,93,152,
+173,229,61,59,49,34,162,2,119,9,144,239,73,200,158,3,169,93,123,53,85,229,33,132,88,9,50,125,24,246,20,42,
+178,210,148,103,84,64,100,159,241,207,178,101,124,163,84,102,14,90,149,109,71,40,98,25,254,28,246,152,207,105,8,92,
+72,29,172,71,134,112,44,64,3,205,218,201,165,234,238,91,24,88,253,116,194,171,153,59,137,141,195,95,58,235,59,17,
+243,106,194,67,34,119,115,107,239,104,21,200,125,40,9,137,26,73,109,65,244,95,84,71,194,82,5,240,253,163,185,248,
+230,45,68,113,22,146,26,112,222,174,41,147,161,124,187,245,188,40,182,246,25,128,55,116,208,43,207,147,38,41,178,240,
+153,228,22,52,121,178,211,84,129,226,38,211,146,212,12,230,201,219,167,198,57,228,218,89,244,71,116,68,214,167,15,69,
+25,113,212,77,242,212,201,176,74,175,163,64,163,198,203,93,193,60,109,88,112,112,243,54,67,146,37,30,254,248,228,40,
+99,18,81,38,169,222,148,253,106,164,78,197,208,241,25,19,204,239,118,193,79,39,85,215,22,190,244,60,170,180,170,127,
+15,175,155,91,170,241,94,7,178,146,241,240,221,82,0,34,50,154,63,81,15,46,37,229,84,93,79,154,100,13,120,107,
+228,146,247,74,11,24,132,251,197,76,8,54,204,66,158,16,75,97,142,200,80,18,25,20,89,161,187,126,204,121,226,174,
+123,116,139,45,132,220,44,228,8,116,157,190,81,82,2,92,106,229,47,155,185,235,119,110,81,156,111,176,224,94,11,87,
+29,136,186,114,23,13,254,18,24,8,81,74,24,43,246,201,10,61,203,183,173,199,233,79,108,31,252,7,185,255,85,164,
+121,183,44,230,37,105,7,89,112,42,253,21,56,69,18,168,46,166,249,73,66,188,30,48,19,195,203,185,136,83,107,51,
+59,251,147,163,149,221,200,214,226,178,165,206,175,106,110,203,255,14,82,99,100,160,221,27,96,198,223,7,24,165,236,126,
+218,156,120,220,5,252,72,80,14,126,40,88,39,49,75,85,28,206,193,125,207,157,91,114,229,77,58,174,112,22,240,102,
+6,180,62,83,125,149,61,85,142,106,85,26,125,200,67,104,55,16,100,130,164,168,193,26,14,90,19,73,173,204,104,47,
+169,16,211,187,34,88,250,218,133,158,123,85,75,255,59,210,192,124,114,213,252,246,89,37,40,46,102,89,126,106,199,45,
+131,119,107,218,187,179,91,248,22,207,186,186,90,49,151,223,239,18,124,164,145,27,70,90,41,13,118,156,119,27,97,80,
+16,18,235,97,74,14,110,238,23,189,45,146,39,118,53,78,226,117,70,222,89,203,69,6,194,231,180,186,46,24,230,139,
+88,159,211,105,45,138,74,17,212,119,169,213,12,86,14,166,159,211,50,69,34,207,144,13,60,51,138,166,116,31,101,232,
+47,233,82,157,121,46,100,224,9,101,40,85,66,40,73,50,163,47,13,88,43,113,119,100,23,7,94,230,255,253,69,15,
+131,126,53,121,156,109,87,194,222,97,76,4,244,28,16,157,166,175,124,233,66,213,142,83,71,251,49,86,15,245,88,244,
+84,10,52,28,152,224,244,33,134,106,164,93,206,142,178,105,113,246,241,138,128,88,94,39,223,8,8,168,90,119,37,60,
+85,149,32,243,27,234,2,52,152,214,140,0,76,212,173,1,199,181,209,127,18,245,117,230,229,96,104,107,254,244,254,234,
+146,112,252,138,198,100,196,122,213,132,99,163,75,64,121,241,242,215,60,64,5,229,205,167,177,135,176,143,38,62,145,174,
+81,59,62,38,204,111,119,14,52,66,139,190,194,30,63,66,180,44,91,22,195,37,22,62,152,237,208,40,88,35,67,170,
+87,227,196,183,65,69,95,69,114,96,242,98,95,62,184,101,164,146,134,168,192,254,18,85,98,210,234,9,7,54,139,125,
+102,244,148,196,214,251,232,44,198,21,80,9,136,82,97,87,42,224,75,249,68,220,136,254,153,33,33,76,57,109,203,6,
+171,236,96,87,184,21,21,166,120,227,88,159,114,211,41,183,40,188,213,151,116,237,190,188,140,148,28,124,228,23,94,96,
+31,168,178,131,59,220,72,60,149,230,40,204,106,13,182,177,94,149,36,46,204,204,50,108,183,173,247,159,82,104,153,54,
+145,213,102,148,23,240,195,123,208,25,178,2,153,75,51,210,173,25,217,41,209,187,247,150,144,201,13,165,64,174,139,48,
+86,187,152,225,217,21,79,242,211,87,50,154,109,92,247,174,203,6,112,27,172,225,176,234,18,85,149,69,236,78,236,150,
+209,20,172,247,97,2,31,211,25,151,211,148,105,239,209,245,1,94,212,1,89,179,209,99,96,44,129,197,234,142,121,24,
+70,45,123,236,77,136,77,148,116,39,15,84,214,139,139,22,91,102,169,31,233,12,166,100,246,110,224,244,197,104,125,37,
+229,93,70,37,210,58,55,87,237,99,48,238,32,33,7,178,190,8,41,109,119,115,15,134,225,209,141,131,77,255,104,254,
+36,98,198,42,5,176,116,241,111,132,226,173,60,95,185,119,68,244,152,253,124,194,37,206,140,209,144,204,80,244,39,241,
+56,139,190,35,61,162,228,110,21,22,25,123,198,62,5,249,115,163,216,80,22,44,97,161,32,155,106,77,186,93,135,120,
+49,108,194,175,84,187,83,125,58,111,195,62,179,103,233,88,186,99,23,123,242,103,139,214,195,177,191,251,244,129,158,143,
+198,100,116,121,163,13,81,182,221,141,112,231,161,50,185,143,32,0,240,43,51,66,4,125,212,5,94,126,96,130,218,224,
+192,212,235,118,21,66,136,197,252,164,88,162,56,252,74,75,26,25,102,119,73,219,51,227,18,168,149,20,183,58,202,69,
+195,251,109,88,165,200,100,187,54,180,1,18,201,36,24,133,240,45,236,180,216,241,233,95,11,90,40,118,118,191,129,66,
+23,227,106,213,60,141,237,185,253,216,24,187,176,72,41,221,191,205,212,34,221,60,21,241,10,208,11,150,36,135,183,89,
+2,186,125,52,122,20,217,164,235,120,173,203,77,190,219,83,55,4,114,159,23,246,80,172,60,52,185,227,122,230,234,85,
+179,216,208,85,196,76,166,185,175,167,203,36,205,247,20,160,206,60,205,12,216,139,228,109,99,96,239,70,49,158,204,31,
+30,192,41,220,182,108,234,144,144,9,190,55,159,19,131,11,162,200,50,59,178,49,97,161,203,105,145,80,132,159,127,172,
+252,143,127,126,215,228,226,99,247,251,26,6,178,51,125,190,142,238,219,27,197,4,161,124,90,109,60,9,91,208,224,246,
+202,160,12,87,173,215,57,22,193,178,98,74,48,201,34,58,215,70,136,231,175,85,177,33,249,209,174,51,245,18,242,90,
+156,168,67,150,230,70,86,130,136,177,184,68,80,145,220,129,136,177,75,2,19,42,112,119,137,235,139,247,230,29,1,245,
+173,188,46,123,38,211,250,207,239,221,143,109,52,71,221,249,64,247,82,84,43,174,127,229,236,226,164,123,13,254,45,108,
+198,75,238,51,172,26,156,138,104,105,14,145,80,165,156,212,58,162,100,234,142,221,212,47,73,162,111,107,92,241,75,91,
+138,191,229,253,169,141,113,237,155,16,94,160,34,142,35,147,78,178,192,131,50,64,243,48,85,152,26,254,45,108,198,75,
+238,51,172,26,156,138,104,105,14,145,80,88,164,173,177,177,63,181,189,13,141,73,251,84,75,14,251,79,130,239,66,59,
+179,21,26,108,20,209,102,70,32,90,130,42,211,147,47,185,56,22,131,255,253,85,101,13,220,72,131,239,184,27,162,36,
+246,111,217,160,146,247,207,155,152,86,58,206,207,215,68,159,168,46,212,86,225,100,193,75,145,120,68,50,221,235,60,114,
+73,59,8,236,33,141,225,78,89,14,100,229,18,21,172,132,111,172,233,165,131,96,153,241,41,29,178,8,168,112,23,165,
+61,164,152,167,171,223,107,208,129,253,179,129,103,223,50,109,229,172,251,179,13,81,206,16,213,254,32,162,103,21,88,223,
+110,181,165,115,175,38,11,154,3,34,60,25,73,193,252,57,81,152,175,116,68,236,178,98,191,159,37,126,243,126,71,61,
+93,57,225,118,8,233,34,97,51,213,199,52,131,190,180,139,211,189,193,195,222,153,108,252,69,206,237,170,14,91,39,150,
+216,210,46,144,158,190,124,30,45,59,216,72,189,131,216,194,174,36,3,120,49,137,173,111,205,183,118,128,58,99,150,249,
+93,162,152,216,48,82,191,86,48,240,232,36,18,25,156,228,243,241,56,99,235,109,61,73,24,111,251,156,127,157,78,221,
+108,24,132,198,130,246,72,140,167,219,179,10,245,151,115,142,153,9,185,160,64,127,26,142,26,81,56,185,27,180,44,147,
+51,123,216,112,220,69,143,182,130,63,110,45,9,206,34,104,107,187,39,81,239,251,51,68,247,146,205,124,85,161,124,101,
+63,149,99,159,107,61,217,45,38,50,31,75,142,66,31,153,63,246,90,67,20,199,9,169,242,52,5,144,191,245,8,50,
+129,163,31,13,88,95,66,178,147,185,243,243,201,165,170,249,140,181,89,241,182,129,140,30,59,211,59,100,10,50,156,253,
+94,113,34,22,6,12,183,134,165,215,182,45,200,136,128,236,97,131,129,114,110,129,190,148,55,101,34,188,194,195,20,152,
+162,88,224,223,109,220,219,160,146,196,31,170,197,0,83,103,157,202,240,104,30,98,121,237,89,22,45,67,89,253,54,185,
+150,184,239,67,173,100,165,77,47,176,1,1,128,80,230,252,90,49,218,143,145,179,131,114,3,169,82,118,151,82,145,2,
+96,85,165,26,107,88,192,46,166,47,118,1,254,150,90,209,219,236,116,30,203,103,210,154,131,62,65,130,94,100,71,159,
+113,50,59,232,180,72,34,223,90,17,125,239,136,235,88,19,182,142,189,89,196,208,22,95,5,128,86,245,235,87,44,188,
+171,184,191,48,194,136,207,232,125,6,139,92,48,54,2,186,175,147,199,173,119,154,229,19,118,182,203,246,187,4,142,215,
+8,160,1,247,198,249,226,63,195,250,182,192,53,237,4,20,78,160,18,240,104,138,184,226,127,39,55,147,153,35,86,180,
+135,111,255,253,117,103,1,129,172,189,224,71,246,228,81,237,37,200,98,57,9,217,13,204,49,106,145,227,140,74,8,0,
+244,220,171,211,230,192,196,202,11,50,39,152,220,30,214,150,202,231,113,141,161,206,83,188,114,92,140,109,81,56,217,202,
+52,200,18,157,207,163,71,227,117,8,139,148,85,73,209,229,112,19,88,114,175,243,22,223,143,226,114,154,61,150,45,176,
+158,188,144,90,202,71,174,133,238,113,71,37,42,9,217,84,53,252,27,119,233,114,51,0,245,1,148,54,115,244,45,122,
+196,88,151,249,176,86,183,157,184,1,87,184,67,150,57,32,129,172,230,125,95,130,129,108,127,65,205,25,141,151,33,44,
+174,33,115,187,154,88,193,135,173,179,107,188,192,157,169,173,136,244,13,221,1,104,85,111,22,32,28,213,95,127,116,199,
+5,218,103,187,84,85,204,90,73,16,56,130,20,117,90,110,243,178,156,84,73,203,168,50,157,151,5,123,168,74,216,70,
+195,243,127,162,21,195,149,247,100,162,58,97,94,183,242,209,110,144,51,143,64,164,247,167,255,144,67,179,123,221,39,40,
+248,171,149,80,74,59,5,88,230,163,162,5,175,70,130,199,246,80,0,128,178,117,119,232,148,177,113,76,23,101,162,188,
+194,104,201,169,162,125,100,210,91,124,134,166,188,142,49,215,85,164,43,54,189,182,158,20,55,101,213,255,18,100,171,49,
+32,2,10,66,80,90,252,223,117,206,99,81,103,189,65,149,205,152,165,178,52,131,218,216,19,84,242,62,5,13,8,55,
+110,128,22,44,28,131,86,8,32,129,60,133,65,217,182,111,102,222,54,194,20,107,197,82,69,47,66,190,244,48,94,212,
+9,224,37,177,156,15,220,186,205,129,9,171,100,215,139,10,225,44,60,167,244,134,206,25,179,77,232,138,48,34,92,207,
+160,8,235,45,113,108,97,137,185,204,99,29,123,175,83,239,117,167,212,93,65,147,62,172,140,251,20,234,145,48,98,123,
+18,8,140,185,104,214,167,66,8,118,65,35,133,107,232,120,70,31,185,15,72,195,246,126,165,47,0,52,19,107,76,140,
+154,161,157,93,214,55,196,54,75,254,235,241,128,113,229,15,90,92,143,215,85,147,69,7,107,127,19,222,221,31,12,234,
+144,9,131,77,24,154,82,27,57,97,201,205,159,252,179,22,9,132,152,143,212,84,238,194,106,240,135,227,111,117,181,73,
+165,233,216,244,21,190,198,77,98,157,74,219,94,180,253,233,32,239,213,220,16,102,173,150,158,137,132,38,173,69,231,62,
+88,169,166,18,19,143,71,145,46,21,64,178,112,99,8,151,117,29,77,4,134,146,114,246,52,72,81,75,131,162,21,7,
+222,217,180,249,171,189,189,141,64,76,199,217,255,249,21,175,168,141,100,161,1,213,4,43,165,96,0,108,138,52,214,54,
+99,195,34,90,223,252,3,132,1,233,155,169,251,131,19,125,69,77,91,141,142,131,165,120,233,221,207,206,193,80,225,13,
+150,86,59,17,78,144,114,103,211,233,151,249,171,189,189,141,64,76,199,217,255,249,21,175,168,141,100,161,1,213,4,43,
+165,96,0,108,138,52,214,54,99,195,34,90,223,252,3,132,1,233,155,169,251,131,19,125,69,77,91,141,142,131,165,120,
+233,221,207,206,193,80,225,13,150,86,59,17,78,144,114,103,211,233,151,249,171,189,189,141,64,94,181,105,214,207,223,241,
+152,125,236,129,235,250,42,21,21,156,197,131,194,14,47,26,94,190,47,34,47,79,106,0,102,96,104,97,150,151,208,210,
+90,225,251,182,28,86,165,191,191,168,185,70,6,51,192,44,7,152,137,33,155,6,37,220,124,64,69,79,21,224,207,6,
+176,151,183,18,101,232,35,115,241,125,62,73,214,149,215,218,167,232,30,2,60,134,34,217,79,0,190,91,211,19,146,110,
+115,185,137,245,1,225,140,4,181,247,223,126,212,214,31,78,173,139,238,111,114,83,190,255,254,64,8,14,188,26,16,147,
+123,187,114,206,46,59,222,32,183,178,9,64,242,233,237,10,1,44,232,129,81,26,170,59,60,78,215,96,122,17,137,127,
+50,157,38,159,223,21,45,223,113,32,39,147,212,22,72,56,141,87,59,98,226,123,126,83,98,9,172,244,18,34,32,3,
+73,35,165,237,32,84,80,64,11,229,26,69,140,217,135,155,169,54,24,16,143,16,58,18,192,109,32,197,111,246,125,108,
+51,18,60,57,80,29,74,126,136,127,238,137,94,134,112,248,216,60,183,33,206,153,67,30,102,227,108,26,166,153,222,100,
+242,63,135,159,193,230,144,23,103,139,236,56,174,73,74,132,171,237,253,172,90,75,88,76,90,239,196,47,195,124,40,101,
+240,242,55,140,159,171,228,169,199,143,119,78,107,99,188,44,111,181,92,243,201,26,229,49,4,194,159,178,104,136,232,102,
+232,47,177,40,239,19,238,152,226,192,122,73,94,137,162,254,51,206,247,119,46,110,130,84,207,124,193,54,159,63,194,108,
+71,56,6,248,179,48,17,86,109,22,44,241,109,154,229,213,63,55,208,225,10,43,201,104,177,145,124,22,124,11,142,157,
+156,198,127,165,109,66,137,55,247,226,118,22,226,55,212,151,175,213,121,63,248,28,71,183,175,201,240,108,241,143,100,91,
+1,187,208,91,30,99,217,101,69,247,192,56,39,88,230,52,132,8,14,177,84,99,68,215,82,172,38,6,2,184,64,218,
+158,120,113,158,226,38,72,212,166,24,54,55,23,126,71,200,241,67,21,189,80,217,120,119,243,99,71,87,248,19,137,121,
+110,12,2,213,249,11,146,196,75,206,23,148,4,80,246,79,135,146,100,4,111,26,140,154,13,6,178,78,160,201,220,87,
+130,77,65,232,217,253,144,29,12,79,50,38,199,171,187,100,101,52,4,177,66,84,161,168,184,45,207,217,36,188,41,156,
+255,228,209,60,84,96,184,245,138,229,191,224,165,89,53,7,181,10,14,119,183,80,213,170,97,222,47,246,52,79,30,224,
+28,219,39,128,253,239,50,140,213,216,120,78,168,63,232,233,120,216,207,47,119,103,1,134,124,147,253,184,228,156,116,143,
+6,198,201,55,46,155,10,129,146,203,24,210,181,43,86,233,179,55,235,171,215,99,253,159,36,166,164,46,176,168,55,169,
+131,161,129,0,244,170,159,209,170,44,101,178,21,149,72,251,55,148,14,215,57,40,21,229,190,244,95,39,56,43,110,194,
+122,81,52,14,24,229,238,118,124,140,105,180,104,51,222,232,250,68,11,157,226,93,206,134,148,125,74,60,248,142,23,217,
+130,186,188,164,52,144,4,124,149,23,221,92,141,17,51,54,183,169,209,244,134,27,26,145,136,125,156,186,162,48,201,202,
+71,122,211,110,209,39,116,226,153,144,130,182,41,151,209,5,16,59,33,49,65,62,134,46,184,87,226,61,143,47,143,56,
+225,249,236,102,65,64,129,231,68,76,191,29,244,128,91,246,78,215,84,73,227,223,77,241,6,169,40,139,84,167,211,142,
+211,116,41,15,175,196,191,119,227,122,48,176,6,206,122,91,61,36,145,2,43,135,180,184,208,97,199,215,95,189,178,175,
+12,26,185,6,81,54,236,85,139,111,189,171,74,176,235,117,55,18,5,193,223,167,173,137,57,97,181,249,252,225,163,183,
+78,47,251,162,8,138,243,218,254,11,178,247,155,208,58,93,223,48,108,199,77,7,160,96,177,233,236,62,176,172,3,179,
+138,23,146,81,93,82,91,35,219,24,102,147,219,64,133,207,12,41,215,193,220,65,156,165,251,79,116,246,112,134,141,238,
+91,178,22,222,4,170,116,14,45,138,76,236,255,176,207,130,122,87,154,251,159,237,47,81,168,181,149,51,168,22,190,134,
+176,97,118,69,81,17,38,139,239,238,78,72,214,31,99,96,41,41,90,91,240,127,4,23,91,120,195,161,60,67,235,90,
+252,234,47,1,167,7,105,157,47,162,119,137,47,57,88,12,131,221,124,34,48,78,205,15,91,241,12,182,162,11,165,22,
+108,4,196,223,251,237,96,137,229,124,184,95,168,149,245,151,255,167,172,94,37,231,93,178,199,94,122,160,159,167,35,4,
+158,118,25,106,200,220,93,107,19,109,133,172,132,75,2,244,107,112,21,228,173,45,214,142,89,86,31,162,22,241,232,102,
+159,52,109,112,226,159,127,179,100,6,115,51,61,48,45,207,196,60,18,43,255,69,162,171,14,14,252,148,75,195,92,111,
+7,248,130,228,58,89,176,58,51,99,203,158,135,37,34,36,152,51,136,173,131,92,72,219,184,156,80,249,139,228,75,252,
+131,220,161,43,218,11,210,24,80,250,198,39,67,151,40,105,25,13,21,154,174,107,42,39,1,239,210,134,254,35,134,129,
+34,103,120,119,243,49,239,100,196,198,155,207,26,199,183,236,14,179,230,25,64,255,111,56,188,103,99,202,76,166,195,133,
+211,174,153,90,159,208,234,225,3,122,202,80,195,33,178,10,153,16,255,249,224,143,23,193,235,147,88,186,60,144,207,175,
+2,172,131,68,114,115,30,87,38,18,164,224,28,137,224,170,27,138,201,236,130,229,142,168,84,19,217,190,161,12,211,139,
+7,166,88,30,178,87,160,109,187,102,48,195,179,60,34,57,252,13,91,182,138,69,140,27,21,118,194,50,234,116,170,183,
+161,55,151,121,137,233,109,236,49,134,139,172,100,75,207,151,215,254,235,63,230,137,24,166,6,206,42,19,247,211,133,77,
+244,124,117,87,46,132,154,71,230,200,126,61,201,101,112,165,126,76,175,119,125,83,67,25,65,143,159,55,171,183,159,166,
+125,97,236,88,8,208,92,151,157,148,228,241,208,81,191,7,52,41,247,117,119,248,8,82,142,96,232,244,113,163,139,130,
+245,102,156,236,96,62,208,229,80,38,87,217,17,142,107,167,1,27,230,166,159,12,250,6,203,229,54,11,49,114,53,178,
+74,131,190,145,53,11,226,207,232,178,234,6,228,168,71,231,124,236,202,21,157,249,220,242,131,26,167,226,101,203,9,45,
+107,138,233,68,225,255,192,176,212,96,187,39,39,185,211,53,82,14,92,42,183,235,83,214,44,42,227,101,223,98,57,118,
+215,78,176,96,68,163,42,166,1,17,60,125,214,40,192,206,17,199,236,92,212,169,193,248,96,109,208,29,118,25,120,102,
+176,194,212,254,142,194,187,92,253,106,99,180,179,126,202,146,6,211,88,82,192,106,249,63,211,175,122,61,25,137,38,198,
+161,9,234,166,171,68,83,183,241,113,135,79,10,134,121,203,29,102,26,91,167,9,77,55,72,107,204,18,237,81,183,223,
+20,203,95,91,100,145,157,91,126,136,22,77,11,63,59,221,8,42,150,123,34,174,199,5,49,162,191,119,126,77,233,27,
+187,157,5,130,12,203,98,88,25,200,164,167,6,157,149,155,179,246,73,176,21,25,187,182,154,174,208,95,234,61,95,145,
+56,73,216,150,7,252,29,50,33,169,145,98,180,208,121,184,138,1,181,83,2,137,40,57,133,119,32,102,159,153,50,12,
+231,222,78,193,162,204,147,24,5,140,57,148,95,147,69,103,34,143,218,190,138,161,20,245,32,121,105,172,31,242,101,50,
+194,227,20,228,31,167,178,49,143,136,54,33,84,137,251,23,39,225,40,9,213,73,159,190,96,188,27,160,187,177,70,96,
+158,43,127,74,44,26,223,220,22,112,209,31,53,191,147,206,23,98,106,191,168,147,223,173,251,107,39,213,66,231,120,9,
+71,103,115,168,174,156,125,34,47,85,146,220,85,117,236,82,103,32,251,114,159,191,143,242,224,13,167,53,136,157,255,23,
+114,151,226,144,170,217,228,93,222,82,121,238,81,27,225,115,83,176,255,185,40,120,45,157,57,153,17,79,130,151,127,36,
+213,39,44,166,140,231,6,76,161,139,192,1,58,79,169,154,78,231,197,71,31,173,136,195,87,44,4,124,216,79,127,173,
+234,3,237,50,11,196,223,73,187,62,251,110,25,99,43,238,184,76,38,128,184,109,37,215,99,7,20,80,28,127,193,104,
+44,245,1,81,30,50,237,216,190,205,61,80,148,244,13,14,178,168,68,228,143,101,15,164,195,144,91,112,237,141,154,56,
+69,136,107,171,251,227,202,71,64,40,95,54,248,30,193,46,49,44,233,219,39,5,9,202,193,8,143,62,139,28,31,233,
+116,62,201,255,136,92,11,193,60,252,89,42,87,147,254,185,124,46,134,72,112,41,186,35,83,225,119,126,209,139,245,62,
+105,229,102,56,167,161,249,113,68,64,77,208,148,211,198,215,224,97,119,214,123,243,62,63,184,235,82,112,255,101,180,85,
+48,226,3,125,98,253,192,30,78,38,50,38,236,170,46,120,247,57,103,60,133,170,25,119,221,33,225,117,84,160,172,235,
+77,40,247,37,211,113,10,102,191,20,14,189,238,210,61,117,158,138,89,94,59,237,50,175,209,151,43,254,45,61,51,250,
+31,11,254,127,12,105,24,46,106,101,187,250,11,247,217,148,154,184,73,45,254,150,80,75,13,67,91,43,234,120,68,96,
+38,154,148,231,247,182,65,169,74,56,47,240,136,182,45,86,48,58,40,211,224,234,32,50,141,223,152,13,99,197,106,100,
+27,148,143,149,218,122,89,145,10,163,47,79,235,236,251,222,180,236,19,249,227,172,189,120,147,108,109,44,239,218,197,238,
+126,152,16,112,13,237,205,157,196,254,111,227,204,220,202,176,123,126,225,158,70,203,243,251,255,244,178,216,142,69,246,35,
+33,109,94,133,210,146,207,241,219,230,68,190,174,128,243,136,151,191,131,92,217,228,190,173,174,82,38,53,130,122,132,142,
+44,118,246,231,18,213,185,76,74,230,175,248,32,16,255,70,180,109,164,148,125,27,58,204,41,136,186,146,159,151,130,222,
+223,212,14,217,4,120,82,51,18,21,163,236,52,108,203,216,131,141,99,199,205,51,65,93,93,27,165,38,33,145,189,252,
+76,207,22,58,65,231,207,241,197,4,249,79,33,128,167,19,159,72,185,170,249,47,76,142,30,222,26,248,164,122,30,131,
+197,255,252,28,130,31,72,88,103,124,148,149,215,35,182,46,8,14,49,205,68,116,218,26,1,80,167,59,111,165,47,14,
+95,216,108,154,230,30,170,130,207,252,234,129,213,93,92,11,14,59,246,127,229,144,42,252,52,80,115,52,111,184,232,157,
+51,104,243,209,16,238,106,122,152,242,21,167,236,122,95,64,187,220,133,84,189,35,140,60,177,11,223,96,228,13,104,79,
+73,208,138,150,24,37,146,196,31,68,47,199,150,114,29,199,189,132,207,210,210,62,96,171,61,51,37,72,50,27,79,57,
+86,29,43,122,1,246,22,188,36,187,244,142,73,48,208,11,66,234,150,243,238,183,221,156,71,49,249,148,21,151,167,27,
+187,120,49,11,56,97,230,102,50,33,175,159,181,193,70,239,135,73,150,170,74,38,191,247,253,69,16,165,246,219,205,62,
+206,153,67,134,193,45,127,64,54,39,124,41,149,35,150,248,192,109,192,169,185,130,172,118,143,4,233,174,150,77,52,181,
+60,44,13,236,77,53,29,199,176,252,56,90,59,69,250,104,149,141,133,25,119,254,147,121,153,18,222,127,171,203,202,10,
+196,229,255,133,178,188,155,145,158,198,101,28,92,12,202,84,82,175,174,111,15,120,114,89,40,134,42,126,239,162,30,144,
+87,196,12,68,229,46,16,11,253,150,0,225,11,236,228,164,107,173,156,51,244,182,109,141,191,171,205,4,50,4,97,186,
+191,73,92,24,233,26,179,211,38,228,197,55,89,7,11,157,189,82,199,239,26,79,198,125,31,123,237,86,182,156,92,249,
+156,210,126,204,81,238,99,200,46,255,210,253,207,61,166,215,90,134,139,183,91,125,30,80,175,209,95,36,172,135,183,6,
+31,95,151,120,180,33,66,115,110,229,14,252,203,207,196,218,185,63,232,44,45,28,97,44,195,55,33,16,213,132,135,246,
+80,247,42,142,107,127,19,111,26,194,118,221,221,169,104,151,81,244,33,109,35,178,51,129,1,0,80,42,226,7,251,30,
+181,115,57,95,178,131,60,74,13,221,146,142,75,51,58,74,14,182,36,154,42,199,104,56,78,100,212,43,171,232,160,145,
+82,101,93,14,24,45,4,99,224,129,127,92,224,83,178,6,244,207,160,143,97,194,118,145,70,93,237,226,81,230,106,229,
+57,131,181,50,175,239,197,27,85,23,177,65,47,16,42,25,164,73,138,242,248,180,186,117,240,159,255,160,231,197,61,108,
+147,214,24,171,124,119,238,36,29,236,176,80,224,137,43,58,62,177,46,164,245,26,246,235,185,197,19,133,141,150,127,154,
+30,247,192,96,77,23,60,114,137,53,94,122,109,201,157,16,52,68,7,188,107,112,203,77,77,255,158,219,110,73,36,106,
+19,10,219,189,253,148,59,45,160,20,5,247,133,61,203,60,13,113,250,20,156,175,131,18,177,117,22,35,41,161,238,165,
+253,181,172,0,205,104,89,177,60,124,63,181,13,170,154,161,226,230,76,57,22,188,64,198,147,236,228,82,46,119,170,151,
+189,245,230,11,144,44,183,153,227,180,149,194,121,175,124,99,209,146,254,118,21,113,2,67,27,247,33,225,120,114,236,166,
+179,53,109,231,156,175,223,221,153,157,62,206,133,79,2,42,64,148,30,192,116,188,251,146,93,35,212,213,247,237,61,173,
+209,80,127,244,16,211,150,145,234,103,67,59,60,56,20,156,236,8,131,127,168,81,20,193,107,44,196,139,181,162,130,144,
+157,91,243,74,175,155,11,121,232,96,49,213,203,132,126,169,152,19,212,165,85,104,154,111,236,111,147,52,73,198,37,107,
+226,218,250,63,247,243,133,10,226,156,115,201,159,214,176,178,202,249,104,47,188,206,240,184,104,97,79,51,132,137,145,165,
+191,83,80,7,111,22,252,70,237,81,132,188,103,242,93,248,142,43,15,247,144,117,62,75,136,46,143,178,147,71,172,207,
+25,41,158,27,97,241,36,197,16,254,42,130,133,241,166,227,111,116,181,82,244,101,174,123,124,91,187,85,201,132,184,233,
+156,160,115,120,46,87,177,163,202,181,4,155,75,111,245,36,93,220,154,33,131,93,192,159,71,148,49,249,74,208,12,141,
+223,27,92,186,53,153,100,181,14,211,76,33,186,112,142,140,142,202,161,240,246,246,150,100,154,26,66,119,144,145,161,182,
+125,139,83,94,192,159,140,67,88,247,222,65,76,7,42,215,229,22,130,16,114,105,144,204,141,68,168,147,77,11,111,138,
+130,7,91,209,12,134,143,196,25,84,20,222,164,101,67,35,9,135,89,209,82,182,151,49,115,41,157,39,154,224,62,165,
+101,179,175,59,46,77,133,59,89,153,192,74,204,224,93,164,9,22,108,188,159,182,34,220,94,147,70,52,64,208,223,19,
+22,121,95,28,15,83,140,34,98,10,108,162,242,72,78,149,195,77,53,115,68,54,115,24,77,17,63,204,179,173,180,172,
+204,59,64,36,201,24,130,38,227,88,66,59,120,230,170,44,39,80,115,113,113,159,251,106,238,195,185,232,146,171,120,248,
+129,105,237,102,157,33,118,145,90,70,7,244,207,152,225,217,82,102,245,71,202,105,230,140,41,104,114,38,253,137,128,176,
+47,177,74,227,52,241,153,94,143,232,152,223,183,254,176,36,108,15,137,76,24,235,237,248,52,93,255,254,73,236,31,11,
+81,170,146,188,148,16,157,247,129,162,151,47,227,224,13,147,24,101,133,82,137,70,53,248,109,118,157,247,34,49,74,158,
+149,108,166,202,154,62,169,148,91,220,18,209,89,5,105,250,24,70,84,117,151,162,202,198,76,44,233,174,76,189,82,209,
+151,230,25,92,212,50,226,67,177,63,209,208,0,38,68,215,201,19,199,91,247,170,146,49,174,19,80,104,71,101,228,34,
+106,29,107,24,190,7,183,10,158,188,231,25,230,126,115,125,184,41,57,134,108,110,7,253,180,206,111,225,78,9,253,134,
+34,69,241,196,108,3,229,213,150,168,114,73,84,73,18,142,106,154,26,235,191,138,198,71,136,25,86,84,78,80,93,104,
+212,240,205,136,13,20,238,178,212,107,227,4,174,236,201,215,207,106,133,172,165,65,214,9,101,23,247,143,82,214,180,54,
+177,153,228,5,66,139,7,90,146,211,126,1,150,150,253,117,25,22,217,123,206,55,54,62,40,49,199,31,143,145,237,203,
+16,142,222,77,156,143,46,182,30,109,212,104,213,30,84,179,175,58,171,35,248,81,13,63,224,172,166,85,229,252,90,198,
+244,206,6,225,211,172,23,193,11,152,76,205,26,32,181,44,242,161,65,176,10,244,210,29,184,66,238,130,223,60,183,232,
+32,182,75,137,227,135,151,170,66,158,77,248,180,216,157,162,173,168,226,118,239,194,2,101,113,96,185,168,69,6,138,85,
+74,239,153,227,50,211,73,227,203,68,205,1,130,33,162,13,117,21,156,130,221,110,158,250,244,229,13,138,91,92,100,52,
+49,148,117,105,132,79,205,207,123,236,199,26,93,44,153,148,79,114,33,236,84,68,215,239,132,29,168,158,169,197,21,33,
+176,64,214,203,226,7,33,74,239,85,230,162,211,18,106,100,33,180,240,55,206,5,7,255,150,228,232,72,227,217,140,71,
+130,62,51,188,33,11,150,135,226,15,87,121,181,78,241,170,126,189,105,35,112,3,88,178,216,77,229,193,214,243,218,39,
+118,51,19,21,248,156,80,9,40,229,220,98,184,47,25,115,218,102,46,217,215,65,145,111,50,50,188,186,107,168,119,10,
+36,189,198,14,164,62,210,228,203,163,57,184,194,128,30,239,180,122,120,143,206,1,192,194,41,191,86,243,108,9,187,10,
+79,92,245,160,255,1,50,192,95,92,125,159,216,27,178,159,43,9,40,98,10,156,203,191,38,144,251,5,106,65,94,15,
+46,80,68,151,240,175,128,225,239,222,15,115,117,77,31,101,118,219,49,227,237,160,6,94,67,43,12,29,104,40,120,147,
+164,177,246,44,220,140,229,156,6,216,24,139,89,106,154,195,49,232,241,173,201,42,114,14,146,94,37,110,106,46,192,25,
+244,153,172,215,172,99,153,79,109,140,185,117,254,241,29,154,155,85,28,239,210,199,99,41,242,134,92,123,63,33,215,100,
+108,22,5,0,79,235,148,67,168,135,5,136,21,224,84,251,5,223,73,147,1,186,137,113,102,120,66,193,230,152,204,84,
+33,209,102,222,251,42,73,177,62,59,19,149,68,125,220,41,255,36,71,89,57,195,220,216,64,138,53,1,23,129,74,92,
+77,81,243,63,60,81,108,158,70,69,232,178,140,144,150,134,26,113,29,142,28,13,82,227,219,82,219,191,45,65,181,90,
+70,255,253,251,3,22,222,64,151,45,127,76,199,80,20,108,44,176,5,47,8,74,56,49,60,224,139,48,205,253,13,224,
+242,149,61,21,77,210,117,138,184,56,139,184,2,92,177,254,124,75,254,173,137,103,247,109,232,244,184,127,156,119,133,11,
+226,51,212,126,180,8,196,50,151,85,128,155,197,24,33,141,161,97,234,107,227,209,239,169,192,251,218,90,115,141,76,210,
+23,213,143,171,18,134,4,240,49,96,243,37,94,177,71,156,151,181,89,153,168,38,135,73,77,119,213,144,33,93,139,124,
+116,163,230,191,238,125,161,129,49,73,113,45,47,245,200,36,140,164,124,105,11,165,187,27,48,12,213,89,218,176,145,195,
+241,208,39,55,237,193,166,70,68,198,231,255,240,51,117,116,223,45,99,194,117,163,63,218,154,144,246,21,247,244,124,168,
+134,242,113,5,11,218,239,39,246,202,107,147,183,229,100,59,164,230,81,43,203,216,92,240,124,20,176,176,106,47,0,204,
+207,243,200,136,248,116,176,232,216,78,99,172,81,81,18,224,209,62,185,43,238,197,39,173,54,78,89,56,246,122,153,90,
+35,158,153,173,62,201,109,98,234,122,86,4,69,158,200,205,159,69,175,57,234,166,222,15,80,53,236,239,221,63,77,6,
+56,215,15,45,28,87,229,195,63,105,221,195,233,132,7,67,130,223,102,97,164,16,235,230,3,252,15,235,89,160,129,190,
+238,244,115,195,76,172,232,71,140,118,245,39,186,79,137,208,26,189,219,216,131,201,182,209,81,42,110,97,218,23,242,119,
+192,111,45,65,35,115,18,89,247,81,170,88,115,152,54,4,125,220,212,215,36,120,138,88,33,236,44,106,239,68,140,61,
+10,95,250,181,240,235,143,13,82,165,99,31,182,198,199,133,102,222,244,4,220,127,16,177,160,255,51,51,240,6,72,210,
+61,9,231,251,90,111,92,68,63,60,21,98,42,208,162,42,147,163,125,49,135,214,205,235,11,90,76,148,253,103,71,192,
+241,49,229,238,125,178,213,20,7,57,56,139,181,31,6,129,28,123,206,53,157,117,74,5,253,10,36,77,87,23,115,70,
+115,215,85,104,162,231,200,228,147,8,163,131,146,114,227,236,97,132,121,67,75,155,173,208,101,162,88,105,135,9,230,207,
+10,135,56,37,235,198,37,245,7,46,140,113,250,179,131,115,20,246,78,182,130,151,228,73,211,208,252,114,106,117,169,212,
+79,45,86,34,37,116,146,240,254,40,110,152,225,124,246,128,80,146,123,209,155,66,204,21,171,59,59,8,208,38,133,228,
+238,53,229,119,124,211,66,117,145,218,251,165,42,226,40,131,1,60,32,236,144,43,170,131,91,2,88,117,8,110,190,116,
+77,68,127,90,224,190,86,151,185,84,235,205,195,124,209,26,166,253,164,73,210,224,31,2,187,233,55,171,120,101,113,245,
+15,172,151,253,100,133,32,247,55,216,6,58,221,184,170,100,72,229,28,255,107,85,34,193,225,167,210,9,169,27,112,178,
+193,235,164,69,251,193,53,247,153,38,82,213,163,64,61,14,16,139,103,168,196,134,202,241,149,161,47,85,102,5,168,222,
+115,252,185,171,53,192,157,37,203,154,25,140,246,99,126,93,96,150,131,217,66,219,252,132,170,29,24,206,102,12,245,254,
+34,95,210,56,57,233,233,196,30,128,203,181,26,140,253,87,72,100,2,57,65,35,191,177,155,82,72,82,12,178,231,130,
+71,243,56,238,248,251,193,72,86,73,36,52,36,201,186,141,143,50,184,108,106,37,110,231,48,6,48,43,57,31,34,115,
+15,126,1,193,29,89,58,58,98,180,23,243,27,123,82,217,82,135,209,67,133,57,98,93,182,157,134,7,78,3,250,156,
+255,110,220,24,180,91,251,236,44,71,75,31,156,189,194,78,129,138,107,96,70,101,23,193,181,46,235,206,16,182,88,126,
+15,93,215,138,109,48,127,160,210,69,195,187,132,53,85,32,176,255,218,76,36,98,52,189,115,16,147,231,145,184,206,27,
+245,29,157,32,177,58,12,251,254,79,25,152,124,67,241,6,242,207,247,96,224,246,225,71,11,125,237,228,134,148,181,249,
+27,192,65,165,104,184,164,86,28,50,92,99,167,203,44,174,171,180,161,9,62,122,255,1,134,71,161,214,103,247,55,71,
+253,67,85,248,33,168,115,59,203,221,102,64,129,130,49,238,196,43,175,132,17,92,41,193,230,137,155,132,242,15,31,103,
+137,236,40,143,80,151,217,235,47,57,55,38,235,163,236,8,178,96,101,32,226,187,110,254,157,55,251,84,136,132,233,125,
+42,147,172,199,122,114,49,35,132,45,169,22,105,165,238,216,141,153,227,96,179,101,65,192,20,6,147,95,223,175,208,168,
+203,170,204,136,195,46,136,166,121,57,126,75,105,183,208,4,165,87,118,74,20,36,45,225,202,216,128,10,249,48,235,26,
+127,208,205,211,13,44,48,29,62,233,124,31,85,75,74,108,200,183,4,225,100,191,246,15,135,187,173,185,130,105,13,19,
+23,185,119,153,39,10,193,190,172,239,153,25,240,59,115,52,153,211,171,30,225,224,227,128,34,172,198,16,115,217,235,136,
+190,228,213,204,199,112,203,168,208,120,157,32,20,155,14,41,211,77,109,31,107,95,214,239,214,224,105,90,62,105,67,159,
+92,84,8,80,212,90,42,27,206,237,17,255,248,158,38,31,181,211,120,195,196,117,204,84,168,225,231,50,168,92,77,12,
+68,17,90,80,161,81,20,20,100,162,165,71,36,64,163,55,28,21,76,203,206,89,196,47,222,41,45,23,116,56,225,212,
+68,6,112,123,77,64,109,132,160,87,90,193,209,228,192,180,52,79,182,166,192,72,9,71,253,238,41,58,135,242,207,194,
+145,88,16,231,162,160,225,17,207,249,151,236,4,128,188,15,145,237,57,115,113,186,232,252,56,196,40,190,225,70,35,228,
+242,218,42,10,193,31,6,246,31,103,35,239,11,81,248,26,138,2,37,193,192,94,96,62,17,152,221,153,181,83,45,133,
+58,59,233,239,249,212,13,218,177,172,49,21,243,32,89,240,255,233,48,98,105,45,57,222,230,174,161,24,34,13,189,195,
+24,33,240,159,199,27,140,206,99,27,69,61,215,180,86,68,146,184,90,52,127,42,47,205,100,22,188,79,109,165,141,100,
+8,182,0,171,121,242,12,94,100,229,212,238,102,254,230,44,66,202,178,198,109,144,250,208,255,6,41,30,5,178,193,21,
+124,178,111,83,213,188,232,154,11,88,147,67,111,53,200,79,54,69,110,26,30,174,164,102,51,8,114,117,140,159,207,167,
+40,157,69,169,211,3,110,248,212,75,103,207,89,114,135,57,108,247,108,74,15,115,59,22,1,126,106,142,98,5,110,58,
+154,195,144,47,30,92,18,48,46,13,152,20,172,199,185,1,156,244,63,215,147,233,200,253,35,96,252,2,223,19,104,222,
+210,68,119,6,33,135,200,135,219,197,118,96,230,114,160,5,125,176,209,153,151,132,125,169,33,104,119,202,153,34,17,224,
+63,61,108,55,155,184,145,132,42,219,49,101,22,20,253,36,193,160,221,11,139,153,187,234,146,165,50,230,207,170,241,238,
+97,114,76,221,135,169,117,204,43,174,167,9,215,192,141,131,241,53,43,46,72,239,235,242,17,18,236,128,25,87,17,176,
+16,159,40,189,110,205,143,178,181,63,94,80,186,3,251,46,225,141,112,106,27,156,129,251,75,197,230,182,107,233,91,60,
+175,212,173,92,90,124,177,108,155,164,28,45,158,209,98,222,78,42,145,115,220,71,214,116,93,192,206,118,252,12,7,31,
+74,212,166,66,241,138,169,5,192,168,247,226,38,153,143,128,39,165,220,153,233,150,46,28,126,31,118,95,52,247,185,64,
+154,93,106,118,37,200,12,107,242,82,144,45,224,189,148,185,127,251,176,22,12,182,71,114,12,176,41,215,183,224,6,180,
+124,180,68,251,92,70,44,90,204,219,21,183,113,212,137,35,113,58,42,107,164,121,45,146,93,55,161,17,244,239,102,84,
+241,101,73,34,77,13,94,138,115,246,191,98,95,143,125,181,34,255,73,239,1,121,80,164,59,192,155,78,246,219,14,122,
+201,183,231,244,214,164,247,192,127,232,133,100,86,127,149,14,255,253,31,174,179,108,188,30,57,174,51,131,82,64,70,237,
+149,132,109,66,204,166,111,108,32,20,209,155,23,214,42,29,127,159,119,91,104,212,181,252,191,251,84,7,213,50,220,150,
+121,81,59,226,241,130,163,190,224,158,25,221,170,140,101,234,244,136,204,26,63,68,97,22,81,221,71,20,28,139,177,110,
+183,92,81,192,181,36,77,242,57,197,212,201,125,128,76,180,152,253,143,108,253,76,158,57,69,83,94,239,217,182,141,123,
+203,188,33,179,70,205,99,32,8,188,29,194,234,28,254,218,190,196,16,215,12,222,124,65,234,123,17,226,200,74,147,85,
+16,5,219,32,100,162,112,148,197,29,90,204,92,9,217,74,160,130,120,101,6,150,201,0,59,151,241,17,33,8,37,113,
+57,45,238,118,233,118,101,154,185,144,29,183,93,131,93,182,220,23,124,219,13,249,53,228,220,155,140,13,191,113,13,43,
+95,214,110,37,244,54,64,5,123,147,222,19,2,140,158,78,252,57,98,186,52,113,200,100,76,134,45,49,86,41,23,44,
+134,172,39,218,11,210,153,28,80,110,176,110,164,36,219,226,160,24,65,18,102,158,19,207,66,114,15,58,58,82,12,255,
+156,182,58,155,190,25,136,173,112,221,8,199,113,215,227,28,35,212,26,120,161,212,16,94,225,97,205,21,67,41,55,153,
+227,220,225,188,130,237,22,59,2,42,77,71,192,93,118,123,30,218,166,113,1,125,130,184,61,26,198,245,136,137,221,216,
+129,22,10,132,142,48,42,80,112,105,133,129,177,97,207,32,187,237,150,204,174,150,15,185,233,64,167,34,232,132,126,240,
+100,114,27,44,114,150,2,147,132,118,125,95,11,4,2,234,195,197,207,14,233,21,212,96,207,113,153,236,162,167,127,255,
+254,5,250,56,84,126,159,109,178,39,244,16,233,239,138,177,12,217,131,34,19,153,134,116,162,71,128,132,72,125,117,48,
+193,217,142,214,100,102,206,131,165,190,39,112,156,154,12,248,36,214,117,239,24,177,229,200,155,170,241,220,113,174,88,80,
+36,211,106,142,179,94,28,171,15,104,129,200,120,177,42,77,26,3,93,182,60,151,243,228,162,255,219,114,193,92,7,155,
+24,239,240,192,11,231,122,60,244,166,138,235,135,184,33,35,247,163,33,38,56,76,152,253,87,231,4,55,254,30,83,142,
+178,15,231,88,79,28,162,137,173,243,1,147,17,10,88,238,108,219,196,122,56,166,66,205,130,224,137,86,183,221,185,59,
+38,132,222,150,177,16,134,98,111,146,157,227,113,186,109,49,129,248,110,124,84,224,105,55,103,226,15,251,119,5,75,8,
+217,184,201,64,229,251,31,107,143,123,249,141,52,0,45,19,18,129,111,247,234,32,249,62,138,251,198,211,218,83,32,212,
+189,122,225,60,112,38,4,59,231,122,243,134,253,252,113,254,34,117,227,8,96,71,3,111,167,128,97,239,240,128,25,55,
+171,134,199,144,216,216,5,17,43,114,198,26,57,167,8,242,113,3,132,111,253,111,111,59,71,252,63,107,160,135,167,94,
+80,95,152,243,242,238,150,63,238,76,213,249,98,207,120,143,67,209,28,74,103,247,217,134,140,193,69,124,36,215,28,173,
+161,163,25,126,210,142,224,235,136,244,153,87,196,208,16,31,128,142,123,103,45,49,159,234,83,17,2,13,9,162,17,212,
+166,92,72,195,163,74,111,162,192,139,212,203,159,207,56,174,227,50,68,149,236,4,181,66,57,166,42,141,166,135,60,62,
+56,252,67,190,223,222,179,59,153,79,18,78,60,118,207,198,190,94,95,10,240,49,88,55,178,212,122,250,220,109,153,238,
+163,136,139,18,170,33,243,102,214,57,161,51,89,119,105,123,175,3,27,163,238,20,111,0,132,21,56,146,207,34,139,173,
+246,197,232,230,202,225,11,160,86,184,144,117,220,53,96,8,87,157,93,213,192,75,123,137,99,203,252,181,13,83,157,105,
+97,240,134,206,42,197,208,197,115,72,171,202,207,88,46,128,61,218,82,174,209,177,89,147,181,21,74,195,52,255,59,67,
+231,9,97,114,138,233,254,60,129,255,180,239,210,60,119,126,221,121,178,91,29,102,38,248,53,112,232,31,171,114,17,106,
+43,39,139,235,20,21,153,217,83,65,237,28,121,17,32,82,119,207,46,199,134,95,83,179,251,103,86,88,12,196,167,118,
+214,41,8,180,191,172,90,5,6,14,170,212,246,38,24,153,163,168,103,213,166,228,134,88,70,93,43,222,129,195,255,118,
+161,89,40,137,170,193,99,213,138,81,87,62,106,117,107,200,20,202,79,141,55,208,66,94,75,204,69,233,227,116,218,70,
+53,136,49,80,210,16,240,62,42,215,180,153,63,148,144,153,170,15,75,169,58,206,107,88,237,52,101,251,243,182,118,44,
+22,212,179,98,213,38,154,221,166,2,144,208,7,206,1,89,80,102,209,255,221,118,216,41,16,157,134,106,239,159,32,203,
+238,102,201,249,22,0,53,151,211,182,202,243,158,74,215,245,136,33,117,23,174,236,254,2,18,141,230,36,154,217,24,107,
+146,242,28,69,87,8,104,105,169,174,83,177,77,83,145,222,146,219,239,128,78,21,218,203,93,65,126,181,133,223,131,54,
+113,213,65,98,200,119,110,251,90,181,158,168,238,152,134,178,79,242,255,84,15,51,204,202,73,134,175,218,199,174,93,22,
+228,149,158,26,54,245,66,120,116,27,161,97,76,234,141,9,241,200,89,96,90,102,175,211,53,41,215,158,240,33,80,176,
+21,0,45,145,74,10,127,168,238,74,214,62,212,152,103,199,229,3,243,102,172,140,194,81,33,150,247,229,145,112,221,108,
+159,110,151,232,23,200,242,75,180,106,219,69,66,158,87,64,72,241,201,22,60,163,215,70,69,107,98,155,236,135,11,66,
+75,117,71,169,110,198,59,128,227,187,223,230,215,194,230,45,43,57,165,31,244,0,57,222,189,252,243,23,216,1,123,59,
+76,172,86,66,97,52,214,191,93,67,9,149,15,41,114,171,14,209,103,84,57,92,131,189,137,101,187,76,62,57,166,185,
+20,182,113,131,144,150,66,171,100,234,181,156,90,192,229,200,191,58,236,51,151,138,145,13,125,1,41,34,61,159,174,72,
+1,153,210,233,206,219,243,164,162,171,68,231,198,9,114,109,196,237,44,112,172,88,192,130,105,221,79,70,67,155,151,203,
+90,179,171,190,179,105,56,188,232,133,151,153,65,20,226,4,55,96,47,106,153,89,122,217,120,231,152,4,56,6,99,184,
+16,152,182,142,88,195,217,27,225,66,174,177,118,248,186,146,167,122,190,226,144,148,237,169,95,206,101,204,44,7,51,120,
+178,249,187,35,49,25,227,190,97,85,84,231,126,156,21,48,218,254,201,116,40,92,145,124,208,81,57,54,41,78,59,180,
+65,137,176,206,138,209,42,68,61,201,140,38,221,100,247,236,156,192,169,114,62,110,111,37,73,166,144,126,116,197,151,197,
+36,110,173,171,245,114,161,222,157,47,200,204,147,127,39,36,20,206,32,103,107,243,41,199,103,89,76,86,117,129,114,208,
+57,114,0,93,228,197,190,177,181,197,0,111,220,238,207,238,19,65,68,53,10,79,74,128,29,141,100,192,224,4,101,151,
+111,118,208,218,86,20,235,116,80,38,165,7,193,215,211,12,146,51,217,114,1,205,199,178,179,2,105,113,46,85,59,24,
+204,195,92,158,70,215,97,51,144,127,230,64,185,90,172,204,236,186,200,30,215,219,242,154,72,239,132,147,92,50,178,35,
+235,58,53,54,136,241,114,225,138,234,219,246,55,219,29,94,95,187,65,27,203,226,34,126,55,101,238,219,180,247,245,95,
+125,125,229,48,226,156,93,170,160,132,228,255,134,204,23,170,220,150,172,225,56,55,8,91,111,151,244,63,33,133,215,59,
+15,164,253,152,3,190,83,110,182,192,88,17,171,76,88,6,127,136,188,172,3,87,223,231,200,40,197,82,19,8,126,51,
+76,82,111,3,184,52,4,235,107,47,2,62,43,167,242,99,178,191,194,218,10,180,204,207,181,2,244,49,85,196,72,84,
+147,90,207,42,45,104,199,160,129,128,38,75,12,103,88,44,15,209,110,165,68,181,32,22,80,194,235,17,182,15,139,253,
+80,255,254,47,47,121,9,103,205,33,64,42,148,27,164,197,219,90,198,59,30,52,57,227,131,150,186,95,28,83,31,219,
+123,206,76,64,172,82,49,228,55,67,172,195,148,204,102,36,85,23,193,218,69,137,133,228,166,228,138,254,51,173,213,2,
+194,242,134,69,122,158,44,204,213,46,153,242,161,253,149,80,27,84,165,172,63,113,161,21,214,40,100,2,16,136,192,124,
+72,121,16,193,2,25,160,75,226,76,11,72,196,152,120,3,133,96,12,163,208,6,22,86,170,220,195,61,8,223,107,177,
+35,55,238,224,157,213,26,118,159,184,214,171,224,219,15,12,249,172,50,128,26,233,127,231,95,159,110,141,29,29,53,159,
+60,221,25,211,36,242,56,161,107,170,118,173,19,214,149,111,204,70,150,226,192,231,114,44,21,73,150,255,188,189,185,57,
+160,234,79,17,235,139,200,152,199,64,71,254,128,104,3,200,26,76,104,221,228,222,61,18,242,217,203,203,18,196,189,29,
+153,229,201,77,255,35,79,107,113,37,46,37,120,96,54,86,156,223,128,198,111,8,50,231,144,121,174,0,141,12,238,61,
+102,202,63,128,114,197,194,160,64,87,76,158,66,45,18,239,32,23,184,19,46,90,179,225,157,112,224,139,227,210,45,89,
+247,137,143,141,97,221,180,255,202,92,242,204,234,192,222,141,47,87,184,95,249,80,235,187,197,111,35,208,155,54,158,79,
+96,148,176,211,205,237,146,74,59,95,159,79,95,56,192,249,91,75,4,170,185,9,133,207,195,39,58,86,233,144,199,176,
+84,117,231,211,43,106,192,238,228,223,6,233,97,44,50,220,165,69,242,102,107,227,162,220,141,116,88,14,208,188,221,161,
+20,119,207,184,14,40,124,209,117,95,98,166,87,236,73,195,235,138,42,82,32,227,145,227,176,33,254,167,185,60,8,153,
+37,36,82,78,237,232,14,23,24,168,147,244,148,147,187,136,39,11,34,46,50,201,100,219,113,143,75,219,227,109,234,230,
+241,70,84,156,223,73,99,229,161,175,81,39,134,39,252,222,4,13,68,197,14,124,196,194,76,240,28,241,154,230,85,21,
+123,241,73,64,183,236,65,34,223,76,113,14,49,47,154,164,102,110,83,148,231,179,184,187,100,229,10,134,30,180,35,67,
+38,126,154,255,243,238,201,21,62,4,190,73,200,202,129,158,91,203,59,6,51,1,46,198,67,252,13,202,16,33,219,202,
+220,190,110,201,142,73,133,113,18,135,31,172,1,42,161,93,69,127,91,57,32,117,76,32,14,251,63,236,164,171,159,91,
+161,196,52,173,56,38,118,113,37,181,253,59,94,187,164,12,224,20,166,187,175,173,203,206,67,113,155,63,118,45,139,108,
+176,19,250,235,27,109,243,213,45,11,138,139,194,197,168,38,237,130,169,72,108,242,214,128,239,1,154,68,237,252,31,144,
+143,38,164,10,151,222,66,225,119,123,255,167,163,133,0,80,176,66,13,36,221,233,32,131,151,138,155,72,163,255,171,56,
+204,253,233,6,158,244,213,141,7,8,215,201,235,84,174,65,198,23,252,187,107,175,227,47,234,232,55,28,244,219,13,48,
+109,115,175,145,133,92,151,52,114,207,175,73,169,152,164,86,140,210,89,196,200,113,223,2,131,167,85,78,95,101,145,23,
+49,48,113,72,152,152,251,74,163,152,177,34,250,105,176,57,50,185,20,82,238,109,7,83,110,35,28,56,28,0,111,132,
+140,180,90,201,165,191,11,24,34,208,250,205,78,78,219,98,154,237,89,198,100,222,130,84,74,235,175,134,18,220,121,167,
+123,194,36,198,3,0,241,156,75,33,202,66,221,75,213,205,59,19,49,113,5,254,44,203,63,46,39,192,227,233,31,212,
+170,236,168,161,148,172,187,114,226,9,253,143,245,129,214,162,103,90,7,64,117,89,126,179,141,12,190,68,237,61,223,177,
+151,66,140,153,253,235,117,212,223,102,182,236,45,207,46,238,129,250,70,139,17,64,251,208,220,253,190,246,22,155,101,69,
+9,80,61,119,194,131,125,42,125,97,200,154,18,242,168,211,213,227,166,9,91,144,127,149,202,223,233,130,118,14,49,27,
+172,113,1,226,255,177,2,119,147,156,135,31,130,64,65,172,193,39,27,178,0,245,206,27,208,196,127,253,60,234,208,248,
+118,32,118,218,47,71,252,34,109,113,69,160,16,138,36,97,168,199,93,128,125,123,61,9,166,61,196,86,237,218,207,20,
+54,91,119,113,196,20,192,112,63,36,150,221,34,236,69,13,13,191,184,176,182,242,126,209,227,250,172,151,36,118,118,92,
+6,192,104,88,59,150,255,251,253,152,231,84,189,122,20,222,18,243,239,185,130,111,129,240,102,152,247,155,151,216,27,43,
+228,99,13,82,51,89,120,137,64,162,113,222,253,121,137,83,22,243,9,9,239,179,55,4,130,49,99,151,122,246,154,27,
+207,47,79,30,97,56,70,102,117,155,61,178,53,162,55,222,96,88,81,159,120,198,84,36,242,244,51,55,107,76,150,149,
+120,190,56,181,247,184,222,146,161,61,47,250,141,110,160,235,38,138,148,84,187,244,233,103,165,41,129,143,10,106,214,30,
+18,16,61,44,90,21,15,76,230,19,133,217,102,222,35,133,232,63,146,169,104,15,183,228,251,195,111,141,199,105,16,126,
+109,134,80,199,102,219,80,131,31,24,119,159,186,155,208,0,226,119,51,251,57,125,111,164,5,210,110,113,225,60,30,177,
+122,33,8,247,157,141,210,8,86,171,110,69,116,140,2,109,226,142,46,227,121,124,66,116,194,240,255,149,240,144,13,33,
+250,58,123,54,176,230,104,190,250,30,141,40,222,68,226,199,191,167,182,245,166,29,204,90,219,202,202,163,241,40,157,247,
+214,142,217,145,139,90,107,174,218,98,102,64,21,13,254,14,20,53,117,29,203,58,81,251,42,244,71,248,46,102,195,92,
+142,229,75,166,91,4,242,29,62,167,17,69,185,15,20,69,65,40,97,140,108,245,234,230,108,120,155,14,192,146,165,28,
+98,194,15,95,83,45,130,51,158,127,225,201,8,155,141,231,28,254,114,209,90,59,40,128,135,187,50,115,44,252,190,118,
+104,241,36,100,20,166,70,215,199,44,208,25,7,241,13,158,82,118,118,48,201,202,114,63,45,73,31,227,217,73,176,92,
+251,17,115,23,173,80,176,19,179,120,246,113,229,213,197,186,35,230,190,83,132,254,208,168,218,148,236,132,182,170,12,51,
+161,248,243,239,196,237,230,249,231,149,183,43,58,145,185,18,108,123,30,44,140,105,71,75,254,78,66,32,221,226,118,173,
+89,141,165,210,105,144,11,166,198,176,209,25,202,211,108,134,62,185,57,194,76,8,38,0,255,252,204,55,158,84,170,151,
+212,52,88,156,153,88,54,247,33,211,140,230,17,187,184,9,239,9,104,20,79,228,169,123,172,177,143,54,40,83,188,5,
+0,102,242,34,68,215,57,203,137,222,200,201,204,132,206,186,47,37,141,129,135,79,177,12,73,218,186,58,96,101,143,39,
+82,215,167,216,78,253,135,61,123,216,95,127,160,44,113,255,236,154,203,170,78,212,209,80,215,248,53,102,249,18,188,56,
+122,124,82,236,198,199,85,136,199,170,117,244,77,232,45,174,55,172,97,103,184,253,190,238,132,58,0,45,21,133,198,165,
+98,18,135,146,236,240,190,174,197,171,211,141,55,57,98,67,163,4,228,122,206,205,131,130,255,71,0,116,253,82,187,137,
+27,26,180,139,98,160,254,130,49,113,246,201,208,62,165,147,4,152,91,10,84,0,24,26,206,175,156,90,188,148,67,8,
+228,29,124,195,27,98,12,165,82,167,247,162,255,122,36,79,136,96,39,24,103,11,220,42,74,43,85,48,73,68,105,37,
+186,235,170,204,237,135,189,207,185,50,116,192,253,169,49,201,36,15,153,148,71,190,64,33,33,183,75,140,114,112,50,198,
+114,119,58,148,144,221,41,232,128,250,97,107,95,212,188,140,185,207,224,223,29,176,18,150,235,201,22,227,225,175,231,18,
+207,179,92,54,54,16,163,121,132,75,33,32,255,255,174,93,40,216,99,134,113,195,52,247,225,198,137,158,232,175,114,68,
+90,116,186,8,222,221,159,149,205,94,86,49,194,28,3,107,1,162,114,91,158,151,191,74,157,97,87,168,226,80,88,12,
+251,129,226,245,72,153,160,220,48,178,188,18,85,34,165,91,37,164,240,124,167,206,96,210,235,4,6,214,255,11,14,75,
+115,19,108,96,48,240,142,36,166,72,237,184,236,203,67,112,7,11,248,154,173,50,229,117,91,152,218,224,195,130,170,176,
+167,90,134,101,209,150,216,132,105,210,196,77,186,156,233,35,2,142,246,126,39,81,164,78,243,139,230,211,141,21,87,112,
+150,122,229,185,247,116,78,132,29,7,144,157,230,237,13,230,121,231,201,205,74,8,218,165,44,222,14,98,171,95,204,160,
+193,27,134,126,230,52,55,154,170,79,255,247,132,2,184,117,78,199,74,80,185,252,64,11,59,159,110,204,120,172,159,34,
+190,120,156,53,184,178,119,51,12,186,146,78,85,7,199,144,152,54,223,82,231,255,246,251,17,22,5,30,135,109,255,55,
+220,180,241,183,73,77,52,10,148,91,93,91,215,157,46,47,75,91,126,237,244,12,200,130,217,250,139,97,2,7,251,91,
+238,186,113,217,136,70,111,125,181,68,220,52,239,246,173,60,230,166,229,115,124,53,4,140,237,6,245,35,156,7,149,21,
+34,102,160,162,45,61,61,206,79,205,123,199,48,93,44,138,157,204,191,7,79,39,51,136,62,240,121,103,251,84,36,16,
+36,169,224,221,2,43,214,219,4,110,8,228,143,88,213,253,231,37,167,212,120,19,41,18,35,59,181,187,117,116,114,249,
+177,202,21,215,162,248,178,108,146,216,174,204,112,229,213,203,75,48,127,1,52,109,113,102,206,35,59,97,43,39,201,214,
+66,132,228,193,27,63,69,30,130,66,77,211,104,101,203,210,87,115,8,121,218,44,12,224,98,84,183,204,187,187,198,178,
+40,84,220,214,11,111,224,80,179,131,112,91,183,215,105,71,50,12,208,63,51,116,205,146,49,97,55,96,159,131,172,158,
+207,205,119,162,179,129,232,70,170,219,16,194,136,103,171,12,166,54,164,144,3,254,231,253,121,107,94,205,129,22,10,59,
+70,31,223,100,44,7,235,90,252,28,160,181,203,50,23,204,115,180,171,169,221,177,5,222,10,91,91,170,120,254,12,203,
+150,125,98,237,251,204,20,244,218,102,58,35,86,108,119,55,166,205,249,5,60,51,27,234,254,47,117,160,33,38,40,43,
+231,188,247,23,174,122,128,252,11,12,61,22,131,174,121,117,247,19,25,33,39,239,43,167,41,247,249,66,88,223,219,202,
+229,113,217,94,92,109,50,158,148,179,45,149,98,197,37,77,246,102,118,150,158,68,40,164,84,24,212,192,252,59,214,223,
+16,46,247,19,168,82,17,240,179,204,181,205,116,219,29,53,116,147,121,152,166,250,255,251,54,201,53,114,33,53,72,27,
+69,205,129,26,179,245,129,61,10,208,139,105,120,69,112,20,117,249,172,228,20,38,99,82,18,75,97,42,118,174,189,88,
+137,72,29,192,208,206,181,62,163,74,161,206,205,128,250,225,119,238,237,188,117,223,135,189,199,255,54,191,184,85,197,218,
+198,64,145,94,212,45,25,168,46,34,64,36,62,141,35,172,44,81,24,6,97,134,187,53,167,58,102,108,66,158,186,16,
+134,92,70,248,226,116,163,172,201,58,139,116,28,109,119,53,201,26,59,132,136,93,87,193,15,79,176,114,39,121,182,57,
+28,110,183,104,128,229,91,23,248,108,198,151,54,229,56,80,71,177,169,220,89,55,120,253,229,43,143,25,105,79,247,224,
+101,19,221,146,47,134,144,109,162,146,240,172,174,11,118,228,175,214,209,132,127,36,183,56,132,8,253,131,209,137,97,225,
+134,136,205,154,240,219,113,166,208,183,145,28,233,209,69,236,141,212,217,90,200,71,228,91,242,24,120,181,40,44,247,248,
+19,157,82,114,204,130,38,150,59,101,94,31,129,20,26,19,239,250,111,180,152,17,31,109,95,208,144,34,180,207,131,31,
+91,205,132,249,134,186,16,180,34,5,30,83,157,15,39,246,5,159,200,252,71,136,12,195,215,236,22,81,158,9,228,89,
+106,175,49,128,188,5,93,189,113,16,107,206,111,14,235,5,181,170,212,168,57,188,61,208,238,74,227,9,173,50,233,175,
+40,141,109,19,106,66,24,251,229,88,59,86,250,18,83,215,122,143,97,95,3,203,134,199,201,18,103,59,135,72,80,165,
+163,87,228,1,127,134,94,12,112,187,147,120,86,58,146,245,47,203,60,177,139,218,16,185,84,144,160,205,104,62,229,12,
+37,196,33,74,215,29,83,119,75,138,30,32,252,27,174,184,209,233,243,115,74,27,48,236,134,194,251,247,180,63,32,100,
+185,153,122,143,156,99,255,209,76,42,179,96,185,210,110,2,40,239,187,62,84,137,7,104,107,217,70,179,81,203,179,100,
+211,198,235,79,134,239,32,224,6,155,122,251,29,136,112,199,221,161,123,232,29,174,28,228,196,214,213,84,89,42,220,196,
+30,175,22,76,237,186,189,74,107,163,124,105,36,233,213,33,251,133,255,233,166,20,167,73,99,229,74,187,97,164,254,46,
+63,144,62,59,175,51,234,162,50,249,218,39,218,229,244,17,177,188,168,251,166,204,188,138,224,96,109,54,226,185,3,215,
+81,165,113,181,244,31,149,101,169,168,123,255,238,180,211,69,97,114,68,228,243,127,200,172,113,223,33,60,248,42,14,223,
+190,96,101,80,253,213,171,71,102,189,210,13,0,193,96,162,117,84,35,21,226,100,153,168,214,44,203,143,19,134,121,163,
+175,153,220,128,161,220,16,195,56,87,214,242,25,20,171,87,182,28,95,191,197,116,105,18,255,18,155,26,223,137,175,146,
+215,89,184,178,60,214,194,134,211,218,124,255,129,170,254,242,155,204,167,44,98,130,74,230,173,234,193,79,90,109,254,65,
+82,129,97,139,149,189,153,130,123,50,125,56,36,108,212,199,110,161,126,95,18,176,212,203,41,2,118,74,222,116,206,94,
+230,216,124,179,33,170,103,211,143,164,28,42,86,80,207,24,104,15,245,144,153,112,199,59,4,19,250,14,249,111,246,113,
+248,76,13,104,122,63,16,60,139,19,35,4,147,187,250,250,215,24,169,166,14,99,167,88,214,46,54,34,92,188,71,235,
+53,145,56,109,212,216,126,154,244,221,56,38,3,186,105,52,180,2,169,205,142,200,55,12,208,23,105,121,89,188,207,238,
+12,57,240,218,210,88,152,96,179,185,181,205,80,136,3,229,223,58,247,45,42,57,88,194,249,84,214,63,101,52,67,61,
+50,126,167,5,75,184,115,191,84,106,249,87,63,44,236,100,33,109,19,220,60,79,141,141,21,193,205,31,13,237,135,173,
+70,72,72,61,164,217,99,137,65,125,15,18,133,255,253,64,190,24,99,214,82,108,19,41,232,120,110,189,175,29,202,159,
+3,236,105,85,97,248,78,73,152,171,89,114,125,199,145,103,1,207,25,209,98,219,198,249,106,181,51,74,157,200,153,146,
+218,58,64,213,125,175,84,144,96,48,174,111,60,15,198,42,54,219,26,27,164,113,62,172,199,174,229,58,153,184,182,60,
+198,67,69,25,47,204,192,63,24,116,216,30,198,181,32,110,72,167,91,27,141,114,168,246,54,9,158,1,141,223,97,146,
+37,141,236,149,88,227,238,250,29,147,165,64,68,129,151,145,136,24,220,192,30,98,146,1,248,15,152,56,226,164,207,104,
+71,207,105,93,183,154,78,41,9,125,80,233,56,232,119,201,147,132,78,235,40,54,192,206,222,38,29,195,41,100,189,88,
+120,61,213,160,132,66,148,205,70,66,121,165,214,236,54,119,126,248,112,4,231,130,138,60,118,166,148,162,36,70,106,166,
+244,225,14,77,201,187,255,139,5,110,239,230,4,49,20,63,69,103,36,188,79,132,46,20,169,192,86,180,91,207,135,14,
+26,20,127,72,199,6,229,12,232,212,111,2,17,154,189,138,6,13,201,196,17,183,29,123,105,147,95,173,7,91,153,252,
+183,98,161,212,43,115,47,143,224,120,165,75,178,59,206,175,114,245,122,137,77,98,165,208,9,33,125,53,12,115,5,198,
+80,24,241,206,74,52,164,80,55,42,86,251,247,101,19,5,127,52,25,176,103,248,144,11,43,97,6,123,58,185,91,143,
+96,2,102,43,214,245,113,48,217,7,202,253,178,10,164,208,238,230,164,130,168,82,234,15,151,170,26,175,194,233,73,111,
+251,187,234,170,230,45,121,174,14,220,95,148,154,177,156,103,61,54,70,32,172,43,64,254,89,146,168,131,6,50,188,104,
+126,114,18,38,83,124,39,235,234,252,120,249,179,16,43,153,207,121,204,83,132,142,196,94,182,136,163,118,18,169,106,242,
+112,111,16,163,234,128,213,98,34,97,13,185,128,8,190,67,196,120,24,159,217,63,81,224,15,17,232,26,71,39,186,36,
+221,49,130,164,92,77,49,22,2,232,22,56,16,253,96,229,165,143,207,103,62,148,206,217,79,167,29,231,249,70,195,130,
+182,54,37,1,167,32,30,89,124,100,42,12,221,90,5,104,234,214,50,25,207,251,233,217,12,76,211,85,113,155,214,102,
+206,207,194,52,207,157,67,226,185,152,21,243,139,56,189,52,96,100,232,0,246,45,178,227,167,142,131,132,232,26,62,165,
+181,189,102,184,81,216,230,195,201,180,40,169,128,97,106,150,241,207,96,231,182,49,24,140,226,243,8,43,69,53,194,143,
+15,226,209,108,93,239,10,177,221,63,48,210,235,181,26,205,236,119,72,107,246,120,255,219,56,132,122,180,234,80,207,95,
+187,180,10,226,219,62,49,103,121,2,39,118,20,193,182,66,45,120,2,116,44,245,94,219,191,146,182,246,82,109,145,123,
+39,15,8,55,158,51,120,110,34,83,213,157,183,202,64,121,111,230,207,16,5,135,179,0,163,89,161,45,45,58,235,241,
+98,113,163,203,106,187,229,26,164,5,152,235,50,242,255,38,195,30,148,166,112,176,36,91,156,56,203,138,209,74,157,99,
+229,184,241,197,33,150,199,14,215,207,238,89,188,100,43,86,62,99,139,76,38,223,83,166,147,88,209,107,54,34,146,103,
+74,120,168,122,148,164,10,154,95,185,141,13,157,54,174,107,110,146,217,142,150,49,63,208,56,242,42,167,149,37,146,56,
+140,21,46,7,113,84,244,44,57,214,147,92,178,193,165,60,179,203,251,237,111,211,142,123,231,92,203,184,189,124,60,215,
+162,30,83,106,153,67,105,249,75,75,89,226,23,249,243,39,148,20,128,255,243,30,160,121,8,102,35,41,230,227,134,8,
+69,173,135,86,89,87,233,227,146,183,16,97,16,4,216,61,33,45,114,173,184,130,46,101,122,227,65,155,255,229,142,182,
+49,36,30,222,228,181,253,181,116,149,211,25,197,110,87,176,41,24,255,150,42,85,214,113,21,5,200,48,113,216,178,14,
+251,154,159,214,149,55,138,57,39,104,89,98,161,190,79,2,68,130,130,154,140,240,15,134,249,92,16,190,165,85,64,169,
+52,135,210,31,166,163,239,139,46,38,52,143,105,119,174,87,117,167,134,147,146,154,11,224,172,127,80,226,170,13,216,252,
+52,236,35,113,195,4,64,192,201,43,219,177,129,192,50,154,238,21,223,149,19,54,199,250,76,126,183,86,166,162,199,158,
+239,243,122,241,53,165,169,248,205,15,67,174,114,146,174,21,216,245,227,238,252,243,57,95,89,198,212,127,255,145,175,189,
+169,186,2,2,6,98,236,112,252,116,176,166,70,40,121,8,181,124,248,143,25,238,101,208,14,195,178,92,136,243,142,248,
+137,187,88,222,141,83,128,72,240,169,52,151,128,117,240,174,125,245,52,164,122,142,14,79,168,116,217,240,252,196,85,225,
+98,66,50,131,25,126,111,163,180,159,8,187,187,149,70,235,168,216,140,253,228,95,223,69,98,110,75,119,27,71,94,50,
+49,206,228,49,107,110,128,198,27,21,129,255,254,11,234,183,236,56,64,235,116,203,88,95,176,58,69,113,117,108,25,165,
+212,67,23,63,127,11,94,229,7,243,105,252,79,160,249,238,221,73,120,218,92,96,239,205,211,210,158,252,147,181,114,238,
+126,170,22,50,222,21,61,223,179,214,249,136,23,219,197,221,229,109,146,228,160,76,94,100,39,155,31,65,110,137,0,226,
+187,209,246,45,241,141,92,71,168,61,142,207,252,158,70,143,35,43,199,245,95,198,75,182,20,112,34,44,152,39,94,208,
+124,117,140,193,57,72,100,5,30,140,17,251,61,46,110,122,26,235,51,243,25,240,217,2,179,161,133,210,53,147,216,213,
+34,214,160,88,24,112,76,130,156,217,202,209,36,128,134,223,243,234,53,189,80,239,58,100,52,191,93,41,148,230,182,103,
+88,39,25,234,94,248,254,26,243,130,213,76,102,140,43,30,56,127,56,107,56,143,111,51,137,73,149,55,83,145,174,34,
+99,49,233,119,60,97,14,36,97,195,106,169,98,36,199,242,178,236,218,249,107,94,36,11,3,97,123,110,47,238,159,3,
+156,153,180,94,136,95,35,116,179,121,219,24,98,164,184,140,64,248,122,123,133,79,165,221,25,239,26,4,63,214,85,58,
+45,30,130,237,81,49,62,153,240,67,200,247,63,141,56,254,63,140,25,255,195,229,79,94,54,232,209,10,247,28,43,68,
+240,93,147,197,6,9,48,131,250,42,11,6,148,124,174,127,219,116,162,61,143,2,195,159,99,126,126,188,216,62,128,61,
+176,15,107,206,167,163,16,122,189,33,148,36,71,190,244,154,243,126,56,168,18,156,221,123,124,77,171,164,148,70,25,178,
+187,95,191,76,105,99,38,94,173,36,55,189,138,248,45,160,225,44,193,148,186,141,128,45,153,230,124,207,102,60,45,149,
+161,77,4,243,109,131,84,72,154,248,1,229,240,19,39,230,59,14,218,117,142,130,188,103,170,144,235,172,69,31,54,22,
+216,32,145,190,165,7,24,12,85,148,192,240,243,57,127,94,28,210,157,142,187,215,130,113,140,135,3,180,150,8,22,140,
+139,113,180,45,73,207,63,23,200,27,99,233,217,32,22,180,30,141,190,154,123,181,15,238,109,238,105,58,234,51,167,161,
+184,15,149,3,96,131,66,168,112,35,182,221,235,53,221,29,25,40,16,15,15,248,161,106,97,2,38,75,237,244,17,172,
+62,1,87,151,102,124,53,98,169,212,217,19,39,228,66,123,93,163,213,151,191,148,8,67,72,239,51,172,160,185,249,76,
+180,1,156,18,159,99,224,78,10,74,246,248,128,44,58,116,253,25,65,79,190,14,112,232,216,191,164,80,73,112,98,244,
+39,143,147,62,188,55,114,11,243,240,78,8,22,220,3,187,59,94,18,9,4,216,99,45,11,163,167,150,180,12,11,145,
+73,40,57,87,142,19,45,196,112,171,208,48,97,252,50,195,50,78,84,22,189,122,37,192,143,195,22,162,245,184,92,119,
+23,50,234,26,241,176,121,155,69,110,124,84,141,104,54,201,34,145,130,48,18,136,207,95,184,167,99,197,3,117,135,237,
+101,8,177,28,156,215,141,172,220,137,147,114,183,23,205,48,181,9,181,89,235,22,191,72,243,72,72,181,13,22,162,150,
+58,27,38,230,135,43,47,186,171,166,142,148,28,66,116,101,250,141,68,182,199,137,145,173,143,124,57,135,77,86,245,156,
+129,152,93,235,101,189,166,95,151,142,50,9,154,171,190,98,36,28,57,28,142,191,232,128,39,183,68,190,71,157,69,221,
+161,39,98,21,169,198,218,35,146,97,180,227,65,197,215,247,3,100,96,177,253,187,170,251,240,218,122,162,78,51,22,221,
+160,124,179,153,57,53,154,17,87,15,49,128,194,23,215,190,77,152,30,185,107,197,4,17,103,204,87,59,230,177,11,229,
+168,116,196,62,235,38,72,37,61,79,86,89,39,59,167,238,19,97,84,36,246,116,190,64,65,16,69,0,204,247,91,140,
+36,187,240,2,159,207,207,91,212,103,165,154,185,214,144,96,127,109,248,41,53,111,45,208,94,47,210,101,7,80,45,199,
+128,239,169,188,9,32,149,174,250,85,23,211,251,240,108,168,160,219,49,113,38,119,19,15,80,181,101,33,11,213,18,238,
+125,41,111,98,231,100,113,96,48,94,190,180,51,198,255,136,10,42,164,232,133,133,184,56,233,33,130,160,242,45,97,74,
+22,111,248,24,173,124,169,97,55,193,198,154,154,195,206,204,19,215,157,205,250,230,40,1,127,232,25,92,76,13,41,230,
+163,7,250,74,7,70,221,194,142,27,186,92,79,176,98,17,216,16,113,58,237,244,222,192,59,127,185,25,5,138,40,161,
+100,120,192,51,158,21,204,230,219,24,2,224,24,203,112,61,73,70,20,148,84,37,155,132,206,136,132,173,189,46,215,104,
+52,175,213,79,79,205,247,105,245,177,41,220,234,239,255,203,195,93,182,108,212,128,71,217,186,174,31,82,22,220,196,152,
+47,144,27,140,177,228,93,64,48,177,68,60,255,46,209,37,131,18,223,222,75,153,170,169,226,178,178,63,155,1,29,182,
+154,102,220,231,132,155,171,38,204,121,49,198,3,216,53,123,182,75,161,175,199,99,211,92,223,225,97,197,50,13,21,164,
+229,1,96,194,96,119,70,160,18,54,5,6,38,244,181,43,132,104,82,73,229,82,170,106,251,123,255,203,195,93,182,108,
+212,128,71,217,186,174,31,82,22,220,196,151,78,80,27,140,177,230,78,195,31,95,23,86,204,188,114,225,11,187,49,86,
+236,189,36,236,53,73,103,28,0,96,144,49,221,184,221,58,19,0,37,2,242,247,161,170,51,69,176,121,228,125,57,12,
+198,30,121,85,186,6,67,105,245,96,37,220,48,113,191,126,45,19,62,53,67,29,35,214,135,25,184,225,243,7,26,60,
+212,62,147,21,255,253,251,32,120,255,146,214,30,148,191,67,12,255,239,164,35,107,234,77,67,172,50,226,80,121,127,56,
+85,217,15,191,247,10,216,42,169,63,17,10,162,204,150,211,141,176,150,117,209,66,1,109,21,16,71,239,6,146,27,125,
+231,58,161,24,37,255,191,107,227,30,205,198,219,69,208,254,170,163,230,2,194,46,166,99,33,38,101,149,201,40,247,138,
+73,164,174,121,35,157,215,60,131,124,215,170,6,108,44,41,176,79,11,154,161,251,225,216,119,69,242,17,239,244,211,100,
+71,90,122,19,128,181,104,201,132,77,48,201,78,254,219,227,157,49,88,172,200,43,131,83,86,79,112,22,56,11,47,71,
+129,6,18,127,236,141,227,12,0,94,119,90,81,33,136,175,119,41,197,99,207,206,109,110,242,165,186,50,56,227,238,133,
+145,188,42,232,37,56,140,233,253,63,135,237,39,189,147,140,220,24,251,225,216,119,69,242,17,239,244,211,100,71,90,122,
+19,128,181,104,201,132,77,48,201,78,254,219,227,157,49,88,172,200,43,131,83,86,79,112,22,56,11,47,71,129,6,18,
+127,236,141,227,12,0,94,119,90,81,33,136,175,119,41,197,99,207,206,109,110,242,165,186,50,56,227,238,133,145,188,42,
+232,37,56,140,233,253,63,135,237,39,189,147,140,220,24,251,225,216,119,69,242,17,239,244,211,100,71,90,122,19,128,181,
+104,201,132,77,48,201,78,254,219,227,157,49,88,172,200,43,131,83,86,79,112,22,56,11,47,71,129,6,18,127,236,141,
+227,12,0,94,119,90,81,33,136,175,119,41,197,99,207,206,109,110,242,165,186,50,56,227,238,133,145,188,42,232,37,56,
+140,233,253,63,135,237,39,189,147,140,220,24,251,225,216,119,69,242,17,239,244,211,100,71,90,122,19,128,181,104,201,132,
+77,48,201,78,254,219,227,157,49,88,172,200,43,131,83,86,79,112,22,56,11,47,71,129,6,18,127,236,141,227,12,0,
+94,119,90,81,33,136,175,119,41,197,99,207,206,109,110,242,165,186,50,56,227,238,133,145,188,42,232,37,56,140,233,253,
+63,135,237,39,189,147,140,220,24,251,225,216,119,69,242,17,239,244,211,100,71,90,122,19,128,181,104,201,132,77,48,201,
+78,254,219,227,157,49,88,172,200,43,131,83,86,79,112,22,56,11,47,71,129,6,18,127,236,141,227,12,0,94,119,90,
+81,33,136,175,119,41,197,99,207,206,109,110,242,165,186,50,56,227,238,133,145,188,42,232,37,56,140,233,253,63,135,237,
+39,189,147,140,220,24,251,225,216,119,69,242,17,239,244,211,100,71,90,122,19,128,181,104,201,132,77,48,201,78,254,219,
+227,157,49,88,172,200,43,131,83,86,79,112,22,56,11,47,71,129,6,18,127,236,141,227,12,0,94,119,90,81,33,136,
+175,119,41,197,99,207,206,109,110,242,165,186,50,56,227,238,133,145,188,42,232,37,56,140,233,253,63,135,237,39,189,147,
+140,220,24,251,225,216,119,69,242,17,239,244,211,100,71,90,122,19,128,181,104,201,132,77,48,201,78,254,219,227,157,49,
+88,172,200,43,131,83,86,79,112,22,56,11,47,71,129,6,18,127,236,141,227,12,0,94,119,90,81,33,136,175,119,41,
+197,99,207,206,109,110,242,165,186,50,56,227,238,133,145,188,42,232,37,56,140,233,253,63,135,237,39,189,147,140,220,24,
+251,225,216,119,69,242,17,239,244,211,100,71,90,122,19,128,181,104,201,132,77,48,201,78,254,219,227,157,49,88,172,200,
+43,131,83,86,79,112,22,56,11,47,71,129,6,18,127,236,141,227,12,0,94,119,90,81,33,136,175,119,41,197,99,207,
+206,109,110,242,165,186,50,56,227,238,133,145,188,42,232,37,56,140,233,253,63,135,237,39,189,147,140,220,24,251,225,216,
+119,69,242,17,239,244,211,100,71,90,122,19,128,181,104,201,132,77,48,201,78,254,219,227,157,49,88,172,200,43,131,83,
+86,79,112,22,56,11,47,71,129,6,18,127,236,141,227,12,0,94,119,90,81,33,136,175,119,41,197,99,207,206,109,110,
+242,165,186,50,56,227,238,133,145,188,42,232,37,56,140,233,253,63,135,237,39,189,147,140,220,24,251,225,216,119,69,242,
+17,239,244,211,100,71,90,122,19,128,181,104,201,132,77,48,201,78,254,219,227,157,49,88,172,200,43,131,83,86,79,112,
+22,56,11,47,71,129,6,18,127,236,141,227,12,0,94,119,90,81,33,136,175,119,41,197,99,207,206,109,110,242,165,186,
+50,56,227,238,133,145,188,42,232,37,56,140,233,253,63,135,237,39,189,147,140,220,24,251,225,216,119,69,242,17,239,244,
+211,100,71,90,122,19,128,181,104,201,132,77,48,201,78,254,219,227,157,49,88,172,200,43,131,83,86,79,112,22,56,11,
+47,71,129,6,18,127,236,141,227,12,0,94,119,90,81,33,136,175,119,41,197,99,207,206,109,110,242,165,186,50,56,227,
+238,133,145,188,42,232,37,56,140,233,253,63,135,237,39,189,147,140,220,24,251,225,216,119,69,242,17,239,244,211,100,71,
+90,122,19,128,181,104,201,132,77,48,201,78,254,219,227,157,49,88,172,200,43,131,83,86,79,112,22,56,11,47,71,129,
+6,18,127,236,141,227,12,0,94,119,90,81,33,136,175,119,41,197,99,207,206,109,110,242,165,186,50,56,227,238,133,145,
+188,42,232,37,56,140,233,253,63,135,237,39,189,147,140,220,24,251,225,214,250,69,242,17,239,49,196,253,182,181,142,154,
+112,166,54,233,1,137,112,124,120,173,213,17,226,145,174,15,55,27,167,129,225,96,237,99,134,92,107,182,80,129,16,188,
+148,17,169,156,8,19,174,118,222,85,203,16,10,90,2,111,47,17,237,104,77,203,209,118,124,54,228,152,117,251,225,214,
+250,69,242,17,239,49,196,253,182,181,142,154,112,166,54,233,1,137,112,124,120,173,213,17,226,145,174,15,55,27,167,129,
+225,96,237,99,134,92,107,182,80,129,16,188,148,17,169,156,8,19,174,118,222,85,203,16,10,90,2,111,47,17,237,104,
+77,203,209,118,124,54,228,152,117,251,225,214,250,69,242,17,239,49,196,253,182,181,142,154,112,166,54,233,1,137,112,124,
+120,173,213,17,226,145,174,15,55,27,167,129,225,96,237,99,134,92,107,182,80,129,16,188,148,17,169,156,8,19,174,118,
+222,85,203,16,10,90,2,111,47,17,237,104,77,203,209,118,124,54,228,152,117,251,225,214,250,69,242,17,239,49,196,253,
+182,181,142,154,112,166,54,233,1,137,112,124,120,173,213,17,226,145,174,15,55,27,167,129,225,96,237,99,134,92,107,182,
+80,129,16,188,148,17,169,156,8,19,174,118,222,85,203,16,10,90,2,111,47,17,237,104,77,203,209,118,124,54,228,152,
+117,255,153,147,70,143,130,228,3,66,236,164,198,192,29,91,223,13,9,140,248,56,200,158,159,217,54,154,4,61,254,37,
+231,155,17,6,189,121,26,224,205,66,194,190,99,228,115,83,75,228,79,34,66,152,14,200,11,238,122,215,176,163,27,6,
+225,217,39,244,145,207,235,208,236,226,7,158,94,31,160,75,77,12,34,89,190,60,154,240,33,68,222,167,201,122,53,63,
+120,215,13,161,227,131,167,6,103,94,112,250,104,253,188,0,247,195,207,32,253,41,141,147,251,151,198,37,54,251,195,123,
+176,1,173,185,52,39,176,254,110,191,196,70,249,217,207,32,203,66,164,158,108,246,48,76,82,205,23,23,236,181,91,84,
+225,100,224,145,190,148,239,70,249,215,122,179,147,0,132,155,225,98,62,124,216,19,106,110,133,80,2,132,169,164,31,232,
+159,204,220,186,185,113,239,188,15,148,29,51,118,197,132,10,32,165,33,161,98,193,217,197,201,206,221,210,113,13,190,131,
+253,44,84,250,75,207,45,105,223,162,51,26,189,104,193,44,142,140,134,211,111,238,224,249,189,60,0,2,154,250,50,86,
+93,86,249,36,71,66,31,71,108,133,139,192,9,153,27,136,19,100,133,52,226,151,96,214,158,165,115,108,193,115,255,21,
+140,0,23,30,124,168,123,53,113,175,124,215,67,108,8,115,9,107,136,185,220,162,100,125,49,71,81,108,210,113,170,191,
+93,5,167,101,250,233,140,66,115,55,14,139,4,113,149,128,100,7,56,188,112,188,48,23,123,255,160,70,66,188,134,148,
+34,48,202,136,20,255,60,88,252,206,132,215,157,204,31,13,88,28,232,102,196,20,183,43,178,62,190,77,55,125,4,245,
+77,32,249,109,201,79,235,175,41,43,81,5,2,33,179,206,14,2,11,176,78,150,124,131,104,57,124,151,25,25,204,16,
+213,175,12,241,187,197,121,155,14,176,73,205,84,207,170,77,221,136,188,239,120,225,17,29,200,120,205,94,33,45,254,24,
+104,78,0,200,90,170,95,129,215,42,57,142,95,249,89,30,42,146,225,251,57,16,251,197,214,113,61,32,84,45,172,117,
+42,188,107,149,137,37,201,56,212,9,24,4,213,250,178,95,163,104,212,58,249,168,11,246,34,192,210,20,14,135,88,193,
+42,255,50,176,210,90,119,58,105,200,53,165,233,169,102,132,69,27,69,99,170,253,89,69,65,198,122,72,121,227,66,99,
+205,143,150,168,208,6,25,56,230,141,43,74,18,0,205,143,150,168,208,6,25,56,230,141,43,74,18,0,205,143,150,168,
+208,6,25,56,230,141,43,74,18,0,255,6,219,101,102,187,93,59,193,119,129,240,45,180,44,179,211,138,241,164,19,17,
+154,99,17,82,74,23,142,122,97,0,108,60,244,100,89,191,50,172,100,82,169,210,197,184,132,126,160,42,181,161,88,36,
+117,2,164,33,2,75,130,143,217,185,15,101,128,23,132,230,84,229,183,249,205,15,61,67,8,247,246,226,116,212,30,222,
+166,27,14,30,123,13,220,38,142,56,206,39,74,219,101,2,133,111,50,129,104,52,31,71,221,3,228,159,243,212,104,8,
+240,0,76,77,38,169,24,211,213,239,199,214,79,190,252,72,140,224,181,149,255,177,223,140,195,127,13,70,3,243,58,84,
+249,214,206,7,150,173,182,178,182,221,209,65,94,201,48,0,206,7,150,173,182,178,182,221,209,65,94,201,48,0,206,7,
+150,173,182,178,182,221,209,65,94,201,48,0,9,255,247,75,78,65,83,110,86,27,82,114,105,213,250,188,95,17,190,38,
+77,148,208,10,108,135,165,149,158,194,162,64,111,102,172,163,39,182,191,219,27,86,55,130,249,45,228,92,136,8,164,203,
+169,11,205,7,140,44,227,133,37,196,215,146,92,154,153,37,90,108,40,183,174,129,69,246,97,93,255,112,233,192,198,157,
+59,165,184,52,219,207,85,184,34,107,70,83,175,132,14,128,117,46,209,86,137,201,64,224,92,166,73,41,98,66,109,229,
+207,136,63,71,48,140,207,224,55,217,149,73,118,8,1,140,6,248,72,28,38,86,158,174,192,79,37,72,51,217,233,146,
+8,62,105,209,63,145,142,60,243,106,193,95,170,116,93,175,248,3,87,228,209,213,130,9,238,229,188,230,245,82,102,244,
+12,255,181,121,27,24,209,168,65,101,122,101,59,210,61,242,190,74,219,48,150,177,215,114,221,206,60,178,5,65,158,217,
+246,177,222,149,97,178,104,110,237,157,120,254,157,44,8,60,5,252,8,96,17,184,141,51,183,14,160,156,252,147,250,167,
+111,63,97,96,18,185,33,31,70,231,117,66,191,11,162,254,103,247,74,143,211,110,123,27,72,6,0,3,230,245,206,42,
+62,190,181,255,161,192,58,133,165,16,70,98,197,26,75,35,57,64,91,188,196,163,91,121,42,27,81,50,88,54,232,10,
+165,253,63,221,55,163,137,94,20,34,140,176,210,47,205,52,146,79,183,197,151,214,31,35,16,183,10,38,209,167,217,153,
+50,35,13,209,86,210,119,93,125,92,97,161,31,150,194,45,238,217,163,18,71,32,52,9,145,215,91,226,179,218,147,235,
+56,233,65,136,60,190,47,178,207,80,187,51,18,112,10,154,30,40,146,40,116,139,8,16,235,75,158,26,201,84,67,82,
+142,101,135,212,8,204,53,156,112,141,15,210,130,206,86,211,111,187,27,212,42,17,123,195,56,187,107,240,92,199,86,173,
+53,66,226,5,21,23,89,112,151,139,126,254,164,90,104,190,151,250,153,30,213,104,156,64,17,148,245,106,181,23,44,223,
+208,216,216,223,22,149,13,29,246,159,226,244,188,241,16,44,88,162,48,169,137,163,48,75,179,133,60,191,77,198,42,11,
+109,130,255,119,60,43,56,239,64,209,92,40,0,73,137,18,166,27,227,214,124,106,73,243,254,150,80,79,73,19,254,179,
+173,233,121,67,236,1,152,4,89,11,181,222,214,25,216,87,60,44,186,38,123,30,94,61,39,182,110,99,94,192,114,238,
+117,115,0,3,137,3,177,236,136,66,47,150,241,80,150,112,231,91,150,21,26,95,65,13,75,250,184,142,179,178,218,174,
+74,104,22,237,195,39,252,153,136,212,236,123,87,20,255,129,160,145,207,61,217,140,77,83,140,61,98,179,153,87,19,48,
+65,208,254,142,144,11,219,183,131,244,11,161,69,0,185,167,62,4,205,12,27,112,145,39,52,186,82,246,169,33,106,127,
+89,70,61,201,229,193,11,22,69,207,45,133,241,29,95,191,124,110,200,100,101,94,171,233,108,37,18,207,16,204,205,182,
+29,3,98,8,207,163,152,146,74,110,201,128,42,116,84,93,12,171,146,105,33,221,4,120,191,250,33,47,213,190,49,97,
+42,59,72,133,110,73,40,102,87,152,210,129,109,30,90,173,218,81,112,99,112,190,109,215,227,30,191,255,255,255,254,12,
+248,160,9,255,247,75,78,65,83,110,86,27,82,114,105,213,250,188,95,17,190,38,77,148,208,10,108,135,165,149,158,194,
+162,64,111,102,172,163,39,182,191,219,27,86,55,130,249,45,228,92,136,8,164,203,169,11,205,7,140,44,227,133,37,196,
+215,146,92,154,153,37,90,108,40,183,174,129,69,246,97,93,255,112,233,192,198,157,59,165,184,52,219,207,85,184,34,107,
+70,83,175,132,14,128,117,46,209,86,137,201,64,224,92,166,73,41,98,66,109,229,207,136,63,71,48,140,207,224,55,217,
+149,73,118,8,1,140,6,248,72,28,38,86,158,174,192,79,37,72,51,217,233,146,8,62,105,209,63,145,142,60,243,106,
+193,95,170,116,93,175,248,3,87,228,209,213,130,9,238,229,188,230,245,82,102,244,12,255,181,121,27,24,209,168,65,101,
+122,101,59,210,61,242,190,74,219,48,150,177,215,114,221,206,60,178,5,65,158,217,246,177,222,149,97,178,104,110,237,157,
+120,254,157,44,8,60,5,252,8,96,17,184,141,51,183,14,160,156,252,147,250,167,111,63,97,96,18,185,33,31,70,231,
+117,66,191,11,162,254,103,247,74,143,211,110,123,27,72,6,0,3,230,245,206,42,62,190,181,255,161,192,58,133,165,16,
+70,98,197,26,75,35,57,64,91,188,196,163,91,121,42,27,81,50,88,54,232,10,165,253,63,221,55,163,137,94,20,34,
+140,176,210,47,205,52,146,79,183,197,151,214,31,35,16,183,10,38,209,167,217,153,50,35,13,209,86,210,119,93,125,92,
+97,161,31,150,194,45,238,217,163,18,71,32,52,9,145,215,91,226,179,218,147,235,56,233,65,136,60,190,47,178,207,80,
+187,51,18,112,10,154,30,40,146,40,116,139,8,16,235,75,158,26,201,84,67,82,142,101,135,212,8,204,53,156,112,141,
+15,210,130,206,86,211,111,187,27,212,42,17,123,195,56,187,107,240,92,199,86,173,53,66,226,5,21,23,89,112,151,139,
+126,254,164,90,104,190,151,250,153,30,213,104,156,64,17,148,245,106,181,23,44,223,208,216,216,223,22,149,13,29,246,159,
+226,244,188,241,16,44,88,162,48,169,137,163,48,75,179,133,60,191,77,198,42,11,109,130,255,119,60,43,56,239,64,209,
+92,40,0,73,137,18,166,27,227,214,124,106,73,243,254,150,80,79,73,19,254,179,173,233,121,67,236,1,152,4,89,11,
+181,222,214,25,216,87,60,44,186,38,123,30,94,61,39,182,110,99,94,192,114,238,117,115,0,3,137,3,177,236,136,66,
+47,150,241,80,150,112,231,91,150,21,26,95,65,13,75,250,184,142,179,178,218,174,74,104,22,237,195,39,252,153,136,212,
+236,123,87,20,255,129,160,145,207,61,217,140,77,83,140,61,98,179,153,87,19,48,65,208,254,142,144,11,219,183,131,244,
+11,161,69,0,185,167,62,4,205,12,27,112,145,39,52,186,82,246,169,33,106,127,89,70,61,201,229,193,11,22,69,207,
+45,133,241,29,95,191,124,110,200,100,101,94,171,233,108,37,18,207,16,204,205,182,29,3,98,8,207,163,152,146,74,110,
+201,128,42,116,84,93,12,171,146,105,33,221,4,120,191,250,33,47,213,190,49,97,42,59,72,133,110,73,40,102,87,152,
+210,129,109,30,90,173,218,81,112,99,112,190,109,215,227,30,191,255,255,255,254,12,248,160,20,255,231,173,89,240,252,230,
+240,211,149,231,70,43,141,86,253,177,13,142,227,140,169,137,24,74,110,47,128,23,118,57,254,31,62,155,57,254,31,62,
+155,57,254,31,62,155,57,254,31,62,155,57,255,146,78,160,216,57,254,31,62,155,57,254,31,62,155,57,254,31,62,155,
+57,254,31,62,155,57,254,31,62,155,57,255,146,78,160,216,57,254,31,62,155,32,255,244,79,14,11,253,135,46,235,116,
+181,175,40,167,3,207,111,214,29,213,125,50,66,129,177,156,117,216,229,120,229,52,249,195,185,209,203,3,171,223,140,92,
+132,48,14,127,243,231,72,170,126,72,225,232,103,5,51,32,255,244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,
+111,214,29,213,125,50,236,47,168,142,41,72,61,16,79,240,192,88,222,92,160,68,132,22,93,132,205,153,216,89,150,80,
+165,221,98,136,4,45,41,234,247,238,230,215,245,128,32,255,244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,111,
+214,29,213,125,50,66,129,177,156,117,216,229,120,229,52,249,195,185,209,203,3,171,223,140,92,132,48,14,127,243,231,72,
+170,126,72,225,232,103,5,51,32,255,244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,111,214,29,213,125,50,236,
+47,168,142,41,72,61,16,79,240,192,88,222,92,160,68,132,22,93,132,205,153,216,89,150,80,165,221,98,136,4,45,41,
+234,247,238,230,215,245,128,32,255,244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,111,214,29,213,125,50,66,129,
+177,156,117,216,229,120,229,52,249,195,185,209,203,3,171,223,140,92,132,48,14,127,243,231,72,170,126,72,225,232,103,5,
+51,32,255,244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,111,214,29,213,125,50,236,47,168,142,41,72,61,16,
+79,240,192,88,222,92,160,68,132,22,93,132,205,153,216,89,150,80,165,221,98,136,4,45,41,234,247,238,230,215,245,128,
+32,255,244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,111,214,29,213,125,50,66,129,177,156,117,216,229,120,229,
+52,249,195,185,209,203,3,171,223,140,92,132,48,14,127,243,231,72,170,126,72,225,232,103,5,51,32,255,244,79,14,11,
+253,135,46,235,116,181,175,40,167,3,207,111,214,29,213,125,50,236,47,168,142,41,72,61,16,79,240,192,88,222,92,160,
+68,132,22,93,132,205,153,216,89,150,80,165,221,98,136,4,45,41,234,247,238,230,215,245,128,32,255,244,79,14,11,253,
+135,46,235,116,181,175,40,167,3,207,111,214,29,213,125,50,66,129,177,156,117,216,229,120,229,52,249,195,185,209,203,3,
+171,223,140,92,132,48,14,127,243,231,72,170,126,72,225,232,103,5,51,32,255,244,79,14,11,253,135,46,235,116,181,175,
+40,167,3,207,111,214,29,213,125,50,236,47,168,142,41,72,61,16,79,240,192,88,222,92,160,68,132,22,93,132,205,153,
+216,89,150,80,165,221,98,136,4,45,41,234,247,238,230,215,245,128,32,255,244,79,14,11,253,135,46,235,116,181,175,40,
+167,3,207,111,214,29,213,125,50,66,129,177,156,117,216,229,120,229,52,249,195,185,209,203,3,171,223,140,92,132,48,14,
+127,243,231,72,170,126,72,225,232,103,5,51,32,255,244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,111,214,29,
+213,125,50,236,47,168,142,41,72,61,16,79,240,192,88,222,92,160,68,132,22,93,132,205,153,216,89,150,80,165,221,98,
+136,4,45,41,234,247,238,230,215,245,128,32,255,244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,111,214,29,213,
+125,50,66,129,177,156,117,216,229,120,229,52,249,195,185,209,203,3,171,223,140,92,132,48,14,127,243,231,72,170,126,72,
+225,232,103,5,51,32,255,244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,111,214,29,213,125,50,236,47,168,142,
+41,72,61,16,79,240,192,88,222,92,160,68,132,22,93,132,205,153,216,89,150,80,165,221,98,136,4,45,41,234,247,238,
+230,215,245,128,32,255,244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,111,214,29,213,125,50,66,129,177,156,117,
+216,229,120,229,52,249,195,185,209,203,3,171,223,140,92,132,48,14,127,243,231,72,170,126,72,225,232,103,5,51,32,255,
+244,79,14,11,253,135,46,235,116,181,175,40,167,3,207,111,214,29,213,125,50,236,47,168,142,41,72,61,16,79,240,192,
+88,222,92,160,68,132,22,93,132,205,153,216,89,150,80,165,221,98,136,4,45,41,234,247,238,230,215,245,128,252,0,64,
+88,221,155,3,182,111,246,206,41,18,230,173,188,78,163,59,200,207,143,144,166,47,194,25,165,79,186,220,200,255,138,95,
+191,167,206,121,59,193,27,204,145,162,230,38,179,40,68,26,224,140,47,210,51,242,66,5,82,204,107,129,241,7,140,242,
+155,38,244,45,158,107,214,126,227,41,250,25,158,100,225,226,209,27,31,149,198,167,253,66,17,193,143,111,232,120,162,97,
+14,126,250,51,12,66,208,156,31,200,114,222,126,25,27,19,250,255,253,58,116,17,58,97,248,118,161,192,107,144,30,204,
+153,65,37,248,211,165,210,160,177,54,107,165,39,113,14,140,51,97,9,66,167,99,26,107,6,74,47,73,226,154,239,54,
+130,146,206,161,85,255,187,236,40,152,197,28,39,142,90,98,89,115,57,253,158,231,15,155,172,241,229,65,198,186,70,22,
+104,14,26,204,196,254,68,49,170,10,139,202,47,177,20,199,100,53,30,194,113,255,253,58,116,17,58,97,248,118,161,192,
+107,147,232,154,75,77,155,215,210,72,25,232,142,118,20,80,25,71,144,244,40,187,102,187,231,5,121,209,67,144,126,172,
+73,242,165,80,103,26,26,87,66,206,25,201,13,168,100,18,110,63,17,41,84,34,39,220,14,209,82,40,241,203,29,60,
+0,192,65,23,167,63,130,231,248,111,50,222,137,91,232,52,200,213,32,37,0,0,0,0,
 };
diff --git a/games/buckshot/src/assets.h b/games/buckshot/src/assets.h
index 0d8fb5c..65088d3 100644
--- a/games/buckshot/src/assets.h
+++ b/games/buckshot/src/assets.h
@@ -302,7 +302,6 @@ enum {
   IMG_P_AIMS,
   IMG_P_AIMS_SAW,
   IMG_P_RACK,
-  IMG_P_GOD,
   IMG_P_MAG,
   IMG_P_MAG_L,
   IMG_P_MAG_B,
@@ -391,7 +390,7 @@ enum {
   C_DOT = 7,
   C_YELLOW = 8,
 };
-#define PAL_COUNT 76
+#define PAL_COUNT 61
 extern const img_t art_img[IMG_COUNT + 1];
 extern const uint8_t art_data[];
 extern const uint32_t art_pal[PAL_COUNT];
diff --git a/games/buckshot/src/font.c b/games/buckshot/src/font.c
index f4eff83..4598985 100644
--- a/games/buckshot/src/font.c
+++ b/games/buckshot/src/font.c
@@ -1,19 +1,19 @@
-/* Generated by tools/font.py: Fake Receipt (Ray Larabie, Typodermic Fonts) and
- * Dot Matrix (Dionaea), 1 bit per pixel. Characters 32 to 95. */
+/* Generated by tools/font.py: Nunito Black and Archivo Black (SIL Open Font License 1.1),
+ * 1 bit per pixel. Characters 32 to 95. */
 #include <stdint.h>
 #include "font.h"
-static const uint8_t font_small_bits[] = {0,0,0,0,0,0,0,0,4,2,129,64,0,0,8,0,133,66,1,0,0,0,0,128,66,241,81,40,62,10,5,128,224,40,56,40,148,7,1,48,89,16,8,4,129,32,147,16,20,10,146,71,33,97,1,16,8,4,1,0,0,0,0,16,4,129,64,32,32,32,0,2,2,1,129,64,16,8,2,66,197,65,32,56,42,4,0,0,64,32,124,8,4,0,0,0,0,0,0,6,2,1,0,0,0,0,31,0,0,0,0,0,0,0,0,128,96,0,64,16,8,2,65,32,8,4,28,137,78,101,18,73,56,0,4,3,129,64,32,16,28,0,7,36,2,64,0,0,129,143,35,2,112,64,34,1,7,128,225,80,36,18,31,4,2,240,9,4,30,0,72,192,1,112,4,2,143,68,36,225,0,124,16,8,2,129,64,32,0,28,145,136,35,18,9,56,0,142,64,36,226,129,32,28,0,0,128,96,0,24,12,0,0,0,96,48,0,12,4,2,0,128,32,8,0,2,2,2,0,0,0,62,128,15,0,0,0,4,4,4,4,1,0,0,56,34,0,4,1,0,32,0,28,137,72,165,209,8,120,0,142,68,36,18,249,68,34,145,71,36,144,120,4,34,145,135,35,18,8,4,2,17,7,224,17,137,68,34,145,72,224,241,9,4,2,143,64,32,240,249,4,2,143,64,32,16,8,56,2,129,64,39,18,113,0,34,145,200,39,18,137,68,2,14,2,129,64,32,16,28,0,14,2,129,64,36,10,6,64,36,81,24,28,10,133,68,36,16,8,4,2,129,64,224,19,217,108,54,159,74,36,18,137,76,38,149,74,38,19,137,56,18,145,72,36,146,112,0,30,137,72,36,241,8,4,2,142,72,36,18,169,52,60,128,71,34,18,73,60,18,137,136,35,18,24,48,34,1,7,224,67,32,16,8,4,2,1,16,137,68,34,145,72,194,1,136,68,34,145,132,194,64,0,68,34,145,74,165,114,121,40,34,10,7,129,96,80,36,34,145,132,194,64,32,16,8,128,15,2,65,32,8,4,129,143,67,32,16,8,4,2,7,32,32,16,16,8,8,4,4,226,64,32,16,8,4,194,1,0,96,0,0,0,0,0,0,0,0,0,0,0,0,0,124};
-static const uint16_t font_small_off[] = {0,63,126,189,252,315,378,441,504,567,630,693,756,819,882,945,1008,1071,1134,1197,1260,1323,1386,1449,1512,1575,1638,1701,1764,1827,1890,1953,2016,2079,2142,2205,2268,2331,2394,2457,2520,2583,2646,2709,2772,2835,2898,2961,3024,3087,3150,3213,3276,3339,3402,3465,3528,3591,3654,3717,3780,3843,3906,3969};
-static const uint8_t font_small_w[] = {7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7};
-static const uint8_t font_small_adv[] = {7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7};
-const font_t font_small = {9, font_small_bits, font_small_off, font_small_w, font_small_adv};
-static const uint8_t font_big_bits[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,4,8,16,32,64,0,0,0,0,4,0,104,208,160,65,3,0,0,0,0,0,0,0,0,128,4,13,26,126,104,144,160,241,135,6,13,26,0,16,96,224,161,193,7,30,36,104,124,96,64,0,192,136,25,19,16,48,32,96,64,64,142,156,57,0,8,56,80,160,128,136,9,29,26,100,200,96,2,0,3,4,8,8,16,48,0,0,0,0,0,0,0,0,192,64,192,128,0,1,2,12,16,32,128,1,128,0,0,12,16,96,192,128,1,1,3,3,2,0,16,32,80,195,3,3,2,4,62,212,32,64,0,0,0,0,0,8,16,96,248,131,0,1,2,0,0,0,0,0,0,0,0,0,0,28,48,96,64,0,0,0,0,0,0,0,0,248,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,112,224,0,0,8,24,16,16,48,32,96,64,64,128,128,1,0,120,152,16,35,103,203,146,35,67,68,216,224,1,0,1,2,14,24,16,32,64,128,0,1,2,30,0,120,152,17,50,4,6,0,6,6,6,28,249,3,128,135,0,49,96,120,128,1,51,68,140,9,30,0,112,224,96,97,67,134,136,25,127,96,192,128,1,192,143,0,1,3,126,128,0,3,68,12,0,30,0,120,24,16,48,192,135,8,49,67,196,152,224,1,192,15,24,16,32,32,64,192,128,0,1,2,4,0,120,152,17,34,134,135,16,33,67,196,136,224,1,128,135,8,49,67,132,136,225,3,4,12,8,30,0,0,0,0,192,1,3,6,0,28,56,112,0,0,0,0,0,0,28,48,96,0,192,1,3,6,4,0,0,0,0,1,129,1,0,1,12,48,0,0,1,0,0,0,0,0,252,0,0,240,7,0,0,0,0,0,0,16,192,0,3,0,16,16,24,0,48,0,128,7,144,33,96,96,0,64,0,0,0,0,4,0,120,152,16,51,68,137,146,53,59,4,8,224,3,128,135,9,49,67,132,8,241,51,100,136,144,33,0,124,136,17,34,198,135,8,49,67,132,24,240,1,128,7,1,33,2,4,8,16,32,64,140,1,30,0,124,136,17,50,68,136,16,33,67,198,156,248,1,192,143,0,1,3,126,8,16,48,96,192,145,63,0,252,8,16,48,224,135,0,1,3,6,12,24,0,128,129,15,1,3,4,8,208,51,68,136,25,30,0,132,8,17,50,228,143,24,33,67,134,12,25,2,128,7,6,4,8,16,32,64,128,0,1,2,30,0,112,224,129,1,3,6,12,24,51,36,104,96,0,64,136,0,25,10,14,56,208,48,97,198,152,33,0,4,8,16,32,64,128,0,1,2,4,24,241,3,64,136,24,51,119,236,248,89,50,100,200,144,33,0,132,24,49,242,100,137,20,57,115,198,12,25,2,128,135,9,49,67,134,8,25,50,68,140,9,30,0,124,136,16,51,68,140,8,31,3,6,8,24,0,128,135,16,33,67,132,8,25,178,100,143,28,62,0,124,136,16,51,68,140,8,31,51,70,136,25,2,128,135,9,33,3,12,112,128,49,68,140,8,30,0,252,96,64,128,0,1,2,4,8,16,32,64,0,64,136,144,33,67,134,8,25,50,68,140,8,30,0,132,8,17,50,100,136,24,17,38,56,96,64,0,64,136,144,33,75,148,44,89,242,197,143,13,19,0,132,136,49,193,1,1,6,14,52,68,136,25,2,64,136,24,17,52,56,96,64,128,0,1,2,4,0,252,128,1,1,3,2,2,6,4,12,56,249,3,128,7,3,2,4,8,16,32,64,128,0,3,30,0,0,12,48,64,0,1,6,8,48,64,128,1,2,0,0,15,24,48,96,192,128,1,3,2,12,30,0,48,240,24,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127};
-static const uint16_t font_big_off[] = {0,108,216,324,432,540,648,756,864,972,1080,1188,1296,1404,1512,1620,1728,1836,1944,2052,2160,2268,2376,2484,2592,2700,2808,2916,3024,3132,3240,3348,3456,3564,3672,3780,3888,3996,4104,4212,4320,4428,4536,4644,4752,4860,4968,5076,5184,5292,5400,5508,5616,5724,5832,5940,6048,6156,6264,6372,6480,6588,6696,6804};
-static const uint8_t font_big_w[] = {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9};
-static const uint8_t font_big_adv[] = {9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9};
+static const uint8_t font_small_bits[] = {0,0,0,0,104,147,54,0,244,86,0,0,0,0,64,121,158,247,41,10,0,96,120,46,135,15,110,243,97,0,0,48,226,141,23,254,193,15,61,102,0,0,0,192,193,195,195,237,103,199,15,0,0,77,0,0,0,153,153,153,17,193,140,153,153,141,0,247,28,0,0,0,0,0,0,195,252,12,3,0,0,0,216,6,0,0,56,0,0,0,0,54,0,76,102,50,19,0,224,249,204,102,179,143,7,0,0,152,135,97,24,231,3,0,224,233,48,198,57,62,0,0,158,12,115,176,236,1,0,128,113,158,246,99,24,0,0,190,225,217,176,236,1,0,128,231,242,249,205,126,30,0,0,124,24,198,48,134,0,0,0,158,221,206,51,219,121,0,0,192,217,182,15,107,30,0,0,176,97,3,0,108,216,6,0,0,220,115,112,0,0,0,0,0,120,192,15,0,0,0,0,14,143,59,0,0,128,215,25,1,198,0,0,0,62,156,217,175,175,182,218,250,199,15,30,0,24,28,52,54,126,103,67,0,0,0,159,217,236,51,155,125,0,0,0,207,54,24,12,110,62,0,0,224,99,102,108,108,108,230,3,0,0,248,134,225,27,134,15,0,128,111,24,190,97,24,0,0,128,199,100,96,110,204,140,7,0,0,96,108,108,236,111,108,108,12,0,0,219,182,13,128,153,153,217,0,0,204,54,143,199,103,55,3,0,128,97,24,134,225,249,0,0,192,176,115,231,254,125,219,54,12,0,0,128,153,153,155,159,157,153,25,0,0,0,14,155,177,177,49,27,14,0,0,192,103,54,251,12,6,3,0,0,128,195,102,108,108,204,134,7,6,12,240,217,205,102,159,221,12,0,0,120,38,135,15,110,243,1,0,128,63,131,193,96,48,24,0,0,192,108,54,155,205,126,30,0,0,24,142,205,54,30,7,3,0,0,96,196,118,182,155,253,184,199,25,196,0,0,0,0,145,141,195,225,216,68,0,0,48,239,30,195,48,12,0,0,252,48,24,134,225,240,3,0,224,102,102,102,230,48,35,98,68,4,112,102,102,102,118,0,192,48,158,36,1,0,0,0,0,0,0,240,1};
+static const uint16_t font_small_off[] = {0,30,60,110,170,240,340,420,450,490,530,580,640,670,710,740,780,850,910,970,1030,1090,1150,1220,1280,1350,1410,1440,1470,1530,1590,1650,1700,1800,1880,1950,2020,2100,2160,2220,2300,2380,2410,2450,2520,2580,2670,2750,2830,2900,2980,3050,3120,3190,3260,3330,3440,3510,3570,3640,3680,3720,3760,3820};
+static const uint8_t font_small_w[] = {3,3,5,6,7,10,8,3,4,4,5,6,3,4,3,4,7,6,6,6,6,6,7,6,7,6,3,3,6,6,6,5,10,8,7,7,8,6,6,8,8,3,4,7,6,9,8,8,7,8,7,7,7,7,7,11,7,6,7,4,4,4,6,5};
+static const uint8_t font_small_adv[] = {3,3,5,6,6,10,8,3,4,4,5,6,3,4,3,4,6,6,6,6,6,6,6,6,6,6,3,3,6,6,6,5,10,8,7,7,8,6,6,7,8,3,4,7,6,9,8,8,7,8,7,7,6,7,7,11,7,6,6,4,4,4,6,5};
+const font_t font_small = {10, font_small_bits, font_small_off, font_small_w, font_small_adv};
+static const uint8_t font_big_bits[] = {0,0,0,0,0,102,102,6,102,0,0,248,190,13,0,0,0,0,0,0,0,26,52,254,252,145,248,243,199,2,0,0,0,8,132,207,239,227,255,125,8,0,0,0,0,142,225,9,210,224,5,172,3,75,144,135,57,0,0,0,0,0,0,126,248,199,1,188,247,189,97,252,195,15,0,0,0,0,176,13,0,0,0,204,102,102,102,204,0,98,196,204,76,38,0,228,78,0,0,0,0,0,0,0,1,225,231,7,1,1,0,0,0,0,0,0,102,100,0,0,0,238,0,0,0,0,0,0,102,0,0,218,146,182,0,0,124,254,206,198,198,206,254,124,0,0,0,0,136,199,131,193,96,252,126,0,0,0,192,231,111,14,142,199,227,239,15,0,0,0,128,143,63,96,112,224,25,247,199,7,0,0,0,0,112,96,225,194,198,140,127,127,96,0,0,0,0,192,207,231,227,79,108,236,207,7,0,0,0,192,199,239,236,231,111,236,207,7,0,0,0,224,239,15,7,131,131,129,129,1,0,0,0,192,231,239,204,239,111,236,207,7,0,0,0,192,231,111,236,207,111,238,207,7,0,0,0,0,102,0,102,0,0,0,102,0,102,100,0,0,0,0,198,227,224,128,7,6,0,0,0,0,0,0,224,231,231,231,7,0,0,0,0,0,0,96,192,3,7,231,97,0,0,0,0,192,231,103,14,135,3,128,129,1,0,0,0,0,240,195,127,230,44,159,226,41,159,242,111,119,12,128,15,0,0,0,14,120,240,193,142,59,254,248,119,24,0,0,0,0,192,159,127,227,254,253,25,247,239,15,0,0,0,0,240,241,119,108,192,128,99,254,248,0,0,0,0,192,143,63,227,134,13,27,247,231,7,0,0,0,0,252,251,51,224,199,159,1,127,254,1,0,0,0,224,239,111,96,224,239,103,96,0,0,0,0,0,62,252,59,108,188,249,142,243,143,63,0,0,0,0,128,97,134,25,230,159,127,134,25,102,24,0,0,0,0,102,102,102,102,0,0,0,6,6,6,6,118,230,199,3,0,0,0,128,113,230,216,225,135,63,238,24,103,60,0,0,0,0,96,96,96,96,96,96,224,239,15,0,0,0,0,158,231,121,190,231,123,246,102,111,246,102,110,0,0,0,0,0,128,99,158,249,230,159,127,230,25,103,24,0,0,0,0,0,62,252,57,110,176,193,142,243,135,15,0,0,0,0,192,159,127,195,198,253,251,49,96,0,0,0,0,0,224,195,159,227,6,27,236,56,127,248,0,7,24,0,0,248,231,159,241,198,249,231,143,113,198,1,0,0,0,0,248,249,247,236,143,191,113,255,252,0,0,0,0,192,191,127,24,48,96,192,128,1,3,0,0,0,0,24,102,152,97,134,25,230,24,127,248,0,0,0,0,0,142,27,119,230,142,15,31,60,56,0,0,0,0,0,231,124,207,246,110,127,190,231,123,156,199,57,0,0,0,0,0,128,115,252,240,129,7,30,252,184,247,28,0,0,0,0,128,99,204,241,131,7,28,48,192,0,3,0,0,0,0,192,191,63,120,120,112,240,240,239,31,0,0,0,224,110,102,102,102,238,200,38,217,38,0,238,204,204,204,236,14,0,128,193,65,99,2,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,1};
+static const uint16_t font_big_off[] = {0,36,84,156,264,348,492,624,660,708,756,804,900,948,996,1044,1080,1176,1260,1356,1464,1572,1668,1764,1860,1956,2052,2100,2148,2244,2340,2436,2532,2676,2796,2904,3012,3120,3228,3324,3444,3564,3612,3708,3828,3924,4068,4188,4308,4416,4536,4656,4764,4872,4992,5100,5244,5364,5484,5592,5640,5676,5724,5820};
+static const uint8_t font_big_w[] = {3,4,6,9,7,12,11,3,4,4,4,8,4,4,4,3,8,7,8,9,9,8,8,8,8,8,4,4,8,8,8,8,12,10,9,9,9,9,8,10,10,4,8,10,8,12,10,10,9,10,10,9,9,10,9,12,10,10,9,4,3,4,8,7};
+static const uint8_t font_big_adv[] = {3,4,6,8,7,12,11,3,4,4,4,8,4,4,4,3,8,7,8,8,8,8,8,8,8,8,4,4,8,8,8,7,12,10,9,9,9,9,8,10,10,4,8,10,8,12,10,10,9,10,9,9,9,10,9,12,10,10,9,4,3,4,8,7};
 const font_t font_big = {12, font_big_bits, font_big_off, font_big_w, font_big_adv};
-static const uint8_t font_dot_bits[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,24,134,97,24,134,97,24,6,0,0,134,1,0,0,0,0,0,128,49,198,24,99,140,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,192,25,64,12,252,31,86,11,136,1,196,192,106,225,255,128,24,224,12,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,192,0,106,224,15,0,96,0,12,0,62,192,7,0,3,96,0,0,127,64,5,112,0,4,0,0,0,0,0,0,0,0,0,0,0,0,120,48,124,24,20,8,31,6,0,0,96,0,48,0,6,0,3,32,0,56,0,2,132,193,131,96,97,240,48,120,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,96,0,136,0,198,0,34,128,49,192,8,128,1,192,0,24,33,140,25,4,0,131,1,129,0,159,1,141,0,0,0,0,0,0,0,0,0,128,97,24,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,48,208,224,0,129,1,6,24,96,128,1,6,0,0,1,4,192,0,3,0,0,0,0,0,0,0,0,24,96,128,5,56,64,0,12,48,192,0,3,12,48,0,64,0,129,1,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,96,0,16,0,24,0,12,240,127,248,63,32,6,56,3,0,132,1,131,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,192,0,32,0,48,0,8,224,255,240,127,0,1,128,1,64,0,96,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,133,143,133,135,7,6,6,128,129,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,31,254,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,60,60,0,60,60,0,0,0,0,0,0,0,0,0,0,6,0,3,0,1,192,0,0,0,12,0,6,192,0,96,0,4,0,2,0,0,48,0,24,0,12,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,4,56,16,97,12,17,198,24,99,140,49,198,24,67,132,49,68,224,0,1,0,0,0,0,0,0,0,0,0,1,14,20,248,0,1,14,16,224,128,1,4,56,64,128,3,4,254,248,3,0,0,0,0,0,0,0,0,0,240,0,31,16,12,131,1,48,0,6,192,0,6,192,0,2,224,0,0,96,0,12,128,255,240,31,0,0,0,0,0,0,0,0,0,0,0,192,7,248,128,96,24,12,128,1,48,0,6,48,0,6,0,3,96,0,12,131,65,48,240,1,60,0,0,0,0,0,0,0,0,0,0,0,0,240,0,30,16,3,103,0,12,131,65,48,252,135,255,0,24,0,3,96,0,12,128,1,48,0,6,0,0,0,0,0,0,0,0,0,0,0,252,135,255,48,0,6,128,0,248,3,106,0,48,0,6,192,0,24,0,195,96,16,12,124,0,15,0,0,0,0,0,0,0,0,0,0,0,0,15,240,1,1,48,0,4,192,31,88,1,131,97,48,12,134,193,32,24,6,131,96,192,3,120,0,0,0,0,0,0,0,0,0,0,0,0,255,225,63,0,6,192,0,24,0,3,96,0,3,96,0,1,48,0,0,48,0,6,192,0,24,0,0,0,0,0,0,0,0,0,0,0,0,192,3,124,64,48,12,6,193,48,24,6,3,31,224,3,131,97,48,8,134,193,32,16,248,0,30,0,0,0,0,0,0,0,0,0,0,0,0,30,224,3,130,97,48,8,134,193,48,24,6,195,96,64,13,252,1,48,0,6,192,192,7,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,24,0,0,0,128,97,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,16,16,6,6,0,0,0,0,0,0,0,0,0,0,0,0,48,192,64,0,129,1,6,64,128,3,20,192,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,143,63,0,0,0,128,63,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,96,0,4,16,0,3,12,4,56,88,96,128,1,0,0,0,0,0,0,0,0,0,128,15,240,1,193,48,24,4,3,96,0,12,120,128,15,32,0,14,0,0,0,0,0,224,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,128,122,1,254,15,0,0,99,0,24,2,0,24,63,198,72,49,198,136,49,70,12,145,2,140,255,64,0,0,3,0,16,0,0,254,15,240,126,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,240,1,193,48,24,4,195,96,24,12,255,225,63,12,134,193,32,24,6,195,96,24,12,131,1,0,0,0,0,0,0,0,0,0,0,0,127,224,15,12,134,193,32,24,6,195,96,248,3,127,96,48,12,6,193,48,24,4,194,31,248,3,0,0,0,0,0,0,0,0,0,0,0,192,3,124,96,48,12,6,1,48,0,6,192,0,24,0,3,96,0,8,128,193,32,24,248,0,31,0,0,0,0,0,0,0,0,0,0,0,192,31,248,3,130,97,48,8,134,193,48,24,6,195,96,24,12,131,65,48,12,6,193,240,7,254,0,0,0,0,0,0,0,0,0,0,0,0,254,195,127,24,0,3,64,0,12,128,1,240,7,254,192,0,24,0,3,96,0,12,128,255,240,31,0,0,0,0,0,0,0,0,0,0,0,240,31,254,195,0,24,0,2,96,0,12,128,63,240,7,6,192,0,16,0,3,96,0,12,128,1,0,0,0,0,0,0,0,0,0,0,0,0,54,192,7,4,195,96,16,0,3,96,0,140,135,241,48,24,6,131,96,24,12,130,129,63,224,7,0,0,0,0,0,0,0,0,0,0,0,12,134,193,48,24,6,131,96,24,12,131,225,63,252,135,193,48,24,6,195,96,24,12,131,97,48,0,0,0,0,0,0,0,0,0,0,128,63,254,64,128,3,4,56,64,128,3,4,16,224,0,1,14,16,248,227,15,0,0,0,0,0,0,0,0,0,192,15,252,1,12,128,1,16,0,6,192,0,24,0,3,96,0,12,128,0,48,0,2,192,0,24,0,3,96,64,1,124,0,4,0,0,0,192,96,24,12,131,97,48,8,128,49,48,2,62,192,3,24,3,99,64,0,12,134,193,48,24,6,3,0,0,0,0,0,0,0,0,0,0,0,6,192,0,24,0,3,64,0,12,128,1,48,0,6,192,0,24,0,2,96,0,12,128,255,240,31,0,0,0,0,0,0,0,0,0,0,0,0,3,134,1,195,66,225,243,33,64,24,115,140,17,6,12,3,134,1,194,128,65,128,48,96,24,32,12,24,6,8,0,0,0,0,0,0,0,0,0,0,0,0,0,6,12,3,134,5,194,135,67,129,240,97,88,32,140,25,198,12,131,133,193,135,96,97,240,49,80,24,48,12,16,0,0,0,0,0,0,0,0,0,0,0,0,0,30,224,3,2,97,48,8,134,193,48,24,6,195,96,24,12,131,65,48,12,6,193,192,7,240,0,0,0,0,0,0,0,0,0,0,0,0,254,192,31,24,12,131,65,48,12,134,193,240,7,254,192,0,24,0,2,96,0,12,128,1,48,0,0,0,0,0,0,0,0,0,0,0,0,128,7,248,128,96,24,12,130,97,48,12,134,193,48,24,6,195,96,16,12,131,65,32,240,1,60,0,24,0,3,0,0,0,0,0,0,0,128,63,240,7,4,195,96,16,12,131,97,48,252,129,63,48,24,6,131,96,24,12,131,97,48,12,6,0,0,0,0,0,0,0,0,0,0,0,224,7,254,32,0,6,128,0,24,0,3,128,15,240,1,192,0,24,0,3,96,0,12,127,224,15,0,0,0,0,0,0,0,0,0,0,0,0,254,15,255,7,16,0,24,0,4,0,6,0,3,128,1,192,0,96,0,48,0,8,0,12,0,2,0,3,128,1,0,0,0,0,0,0,0,0,0,0,0,0,192,96,24,12,131,97,48,8,134,193,48,24,6,195,96,24,12,131,65,48,12,6,193,192,7,240,0,0,0,0,0,0,0,0,0,0,0,0,96,192,48,96,24,32,12,24,4,8,3,134,1,194,128,97,192,128,24,224,12,32,6,56,3,136,1,48,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,192,128,97,192,48,64,24,112,8,16,6,28,3,132,1,195,128,97,132,48,102,88,32,124,30,22,10,3,134,1,2,0,0,0,0,0,0,0,0,0,0,0,0,128,1,195,128,97,128,48,224,0,0,112,6,16,3,96,0,48,0,98,128,51,0,64,24,112,12,16,6,12,3,6,0,0,0,0,0,0,0,0,0,0,0,0,0,3,134,1,195,0,97,192,1,0,224,12,32,6,192,0,96,0,4,0,7,0,0,48,0,24,0,12,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,224,63,252,7,192,0,24,0,3,96,0,12,96,0,12,32,0,14,0,0,6,192,0,248,15,255,1,0,0,0,0,0,0,0,0,0,192,195,195,192,128,192,192,192,192,192,192,128,192,128,192,199,3,0,0,0,0,0,0,0,0,48,0,24,0,12,0,6,0,8,0,14,0,2,0,12,0,6,0,12,0,6,0,8,0,14,0,2,128,3,128,0,0,0,0,0,0,0,0,0,0,0,128,143,15,4,12,4,14,4,12,4,12,12,4,14,132,15,5,0,0,0,0,0,0,0,64,0,129,1,198,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,240,31,0,0,0,0,0};
-static const uint16_t font_dot_off[] = {0,345,483,713,1058,1357,1702,2047,2185,2415,2645,2990,3335,3519,3818,4002,4347,4577,4807,5106,5405,5704,6003,6302,6601,6900,7199,7337,7521,7751,7981,8211,8510,8947,9246,9545,9844,10143,10442,10741,11040,11339,11569,11868,12167,12466,12811,13156,13455,13754,14053,14352,14651,14996,15295,15640,15985,16330,16675,16974,17158,17503,17687,17917};
-static const uint8_t font_dot_w[] = {15,6,10,15,13,15,15,6,10,10,15,15,8,13,8,15,10,10,13,13,13,13,13,13,13,13,6,8,10,10,10,13,19,13,13,13,13,13,13,13,13,10,13,13,13,15,15,13,13,13,13,13,15,13,15,15,15,15,13,8,15,8,10,13};
-static const uint8_t font_dot_adv[] = {15,6,10,15,13,15,15,6,10,10,15,15,8,13,8,15,10,10,13,13,13,13,13,13,13,13,6,8,10,10,10,13,19,13,13,13,13,13,13,13,13,10,13,13,13,15,15,13,13,13,13,13,15,13,15,15,15,15,13,8,15,8,10,13};
-const font_t font_dot = {23, font_dot_bits, font_dot_off, font_dot_w, font_dot_adv};
+static const uint8_t font_dot_bits[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,20,0,1,16,0,1,20,64,1,0,0,0,0,0,64,20,0,69,1,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,0,84,1,0,84,1,0,84,1,0,84,1,0,68,0,0,68,0,0,0,0,0,0,0,0,64,1,0,80,5,0,84,4,0,84,0,0,84,5,0,0,5,0,20,5,0,84,5,0,64,1,0,0,0,0,0,0,0,0,0,80,64,0,0,0,84,81,0,0,0,84,17,0,0,0,84,85,1,0,0,0,85,5,0,0,0,81,5,0,0,64,65,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,1,0,0,80,5,0,0,80,5,0,0,80,81,0,0,84,21,0,0,20,21,0,0,80,85,0,0,0,0,0,0,0,0,0,0,0,64,0,5,64,0,0,0,0,0,0,0,0,0,0,0,0,16,0,16,0,20,0,20,0,20,0,20,0,20,0,16,0,16,0,0,0,5,0,4,0,20,0,20,0,20,0,20,0,20,0,5,0,4,0,0,0,64,1,0,85,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,80,0,0,85,5,0,80,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,64,1,16,0,0,0,0,0,0,0,0,0,0,0,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,64,1,0,0,0,0,0,16,0,16,0,20,0,20,0,4,0,5,0,5,0,1,0,0,0,0,0,0,0,85,0,0,84,5,0,64,65,1,0,20,20,0,64,65,1,0,84,5,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,64,1,0,84,1,0,64,1,0,64,1,0,64,1,0,80,1,0,84,5,0,0,0,0,0,0,0,0,0,0,84,1,0,68,5,0,0,5,0,64,1,0,80,1,0,84,0,0,84,5,0,0,0,0,0,0,0,0,0,0,84,1,0,4,5,0,0,5,0,80,1,0,0,5,0,4,5,0,84,1,0,0,0,0,0,0,0,0,0,0,64,1,0,80,1,0,84,1,0,68,1,0,85,5,0,64,1,0,64,1,0,0,0,0,0,0,0,0,0,0,84,5,0,20,0,0,84,1,0,20,5,0,0,5,0,4,5,0,84,1,0,0,0,0,0,0,0,0,0,0,0,84,0,0,80,4,0,64,85,0,0,84,21,0,64,65,1,0,84,21,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,85,1,0,64,1,0,64,1,0,80,0,0,80,0,0,20,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,20,21,0,64,81,1,0,80,5,0,64,65,1,0,20,20,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,80,1,0,20,5,0,20,5,0,84,5,0,0,5,0,68,1,0,84,0,0,0,0,0,0,0,0,0,0,0,0,64,1,20,0,0,20,64,1,0,0,0,0,0,0,0,64,1,20,0,0,20,64,1,16,0,0,0,0,0,0,0,0,0,0,0,64,1,0,21,0,0,21,0,0,80,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,84,1,0,0,0,0,84,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,0,0,64,5,0,64,5,0,84,0,0,0,0,0,0,0,0,0,0,0,0,0,80,5,0,81,0,0,5,0,16,0,0,0,0,20,0,64,1,0,0,0,0,0,0,0,0,0,0,0,64,85,0,0,0,80,65,1,0,0,20,85,5,0,0,68,85,4,0,0,68,81,4,0,0,68,81,4,0,0,84,85,1,0,0,80,81,0,0,0,64,21,0,0,0,0,0,0,0,64,1,0,0,80,1,0,0,16,5,0,0,20,5,0,0,84,21,0,0,5,20,0,0,5,16,0,0,0,0,0,0,0,0,0,0,0,0,0,64,85,0,0,20,20,0,64,65,1,0,84,5,0,64,65,1,0,20,20,0,64,85,0,0,0,0,0,0,0,0,0,0,0,0,0,84,1,0,80,0,0,64,1,0,0,20,0,0,64,1,0,0,80,0,0,0,84,1,0,0,0,0,0,0,0,0,0,0,0,0,84,5,0,0,20,20,0,0,20,80,0,0,20,80,0,0,20,80,0,0,20,20,0,0,84,5,0,0,0,0,0,0,0,0,0,0,0,0,0,84,5,0,20,0,0,20,0,0,84,5,0,20,0,0,20,0,0,84,5,0,0,0,0,0,0,0,0,0,0,84,5,0,20,0,0,20,0,0,84,5,0,20,0,0,20,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,64,21,0,0,80,16,0,0,20,0,0,0,20,84,0,0,20,80,0,0,80,80,0,0,64,21,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,80,0,0,20,80,0,0,20,80,0,0,84,85,0,0,20,80,0,0,20,80,0,0,20,80,0,0,0,0,0,0,0,0,0,0,0,64,1,20,64,1,20,64,1,20,64,1,0,0,0,0,0,20,0,20,0,20,0,20,0,20,0,20,0,5,0,0,0,0,0,0,0,0,64,65,1,0,20,5,0,64,21,0,0,84,1,0,64,85,0,0,20,21,0,64,65,1,0,0,0,0,0,0,0,0,0,0,0,20,0,0,20,0,0,20,0,0,20,0,0,20,0,0,84,1,0,84,5,0,0,0,0,0,0,0,0,0,0,0,64,1,20,0,0,20,80,1,0,64,5,21,0,0,84,85,1,0,64,85,20,0,0,20,69,1,0,64,1,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,20,0,0,20,20,0,0,84,20,0,0,84,21,0,0,20,21,0,0,20,20,0,0,20,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,5,0,0,80,20,0,0,20,80,0,0,20,80,0,0,20,80,0,0,80,20,0,0,64,5,0,0,0,0,0,0,0,0,0,0,0,0,0,64,85,0,0,20,20,0,64,65,1,0,84,5,0,64,1,0,0,20,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,64,5,0,0,80,20,0,0,20,80,0,0,20,80,0,0,20,80,0,0,80,20,0,0,64,21,0,0,0,20,0,0,0,80,0,0,0,0,0,64,85,0,0,20,20,0,64,65,1,0,20,20,0,64,85,0,0,20,21,0,64,65,1,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,20,4,0,64,1,0,0,84,5,0,0,80,0,0,20,5,0,64,85,0,0,0,0,0,0,0,0,0,0,0,0,80,85,1,0,80,0,0,0,5,0,0,80,0,0,0,5,0,0,80,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,64,65,1,0,20,20,0,64,65,1,0,20,20,0,64,65,1,0,20,20,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,80,0,1,0,5,20,0,64,65,1,0,20,5,0,0,85,0,0,80,1,0,0,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,64,1,0,0,20,21,20,0,0,64,81,65,0,0,0,20,85,5,0,0,0,21,85,0,0,0,80,65,1,0,0,0,4,20,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,20,5,0,0,21,0,0,80,1,0,0,21,0,0,20,5,0,64,64,0,0,0,0,0,0,0,0,0,0,0,0,5,5,0,69,5,0,84,1,0,80,0,0,80,0,0,80,0,0,80,0,0,0,0,0,0,0,0,0,0,0,64,85,1,0,0,5,0,0,80,0,0,64,1,0,0,5,0,0,84,0,0,64,85,1,0,0,0,0,0,0,0,0,0,0,84,0,20,0,20,0,20,0,20,0,20,0,20,0,20,0,84,0,0,0,1,0,5,0,4,0,4,0,20,0,16,0,16,0,16,0,0,0,0,0,21,0,20,0,20,0,20,0,20,0,20,0,20,0,20,0,21,0,0,0,0,0,0,0,80,0,0,80,0,0,84,1,0,4,1,0,4,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,1,0,0,0};
+static const uint16_t font_dot_off[] = {0,120,240,440,680,920,1320,1640,1760,1920,2080,2280,2520,2640,2800,2920,3080,3360,3600,3840,4080,4320,4560,4840,5080,5360,5600,5720,5840,6080,6320,6560,6760,7160,7480,7760,8040,8360,8600,8840,9160,9480,9600,9760,10040,10280,10640,10960,11280,11560,11880,12160,12440,12720,13000,13280,13720,14000,14240,14520,14680,14840,15000,15240};
+static const uint8_t font_dot_w[] = {6,6,10,12,12,20,16,6,8,8,10,12,6,8,6,8,14,12,12,12,12,12,14,12,14,12,6,6,12,12,12,10,20,16,14,14,16,12,12,16,16,6,8,14,12,18,16,16,14,16,14,14,14,14,14,22,14,12,14,8,8,8,12,10};
+static const uint8_t font_dot_adv[] = {6,6,10,12,12,20,16,6,8,8,10,12,6,8,6,8,12,12,12,12,12,12,12,12,12,12,6,6,12,12,12,10,20,16,14,14,16,12,12,14,16,6,8,14,12,18,16,16,14,16,14,14,12,14,14,22,14,12,12,8,8,8,12,10};
+const font_t font_dot = {20, font_dot_bits, font_dot_off, font_dot_w, font_dot_adv};
diff --git a/games/buckshot/src/game.c b/games/buckshot/src/game.c
index 8ee9b6b..1e02fbe 100644
--- a/games/buckshot/src/game.c
+++ b/games/buckshot/src/game.c
@@ -1,5 +1,6 @@
-/* The match: rules, the Dealer, and the order of events, following the
- * original's round manager, item manager and Dealer "intelligence".
+/* Chevrotine (Calcade, 19 octobre 2026) : the match, its rules, the Automaton
+ * and the order of events. The numbers of each round, the items and the way
+ * the Automaton decides are Chevrotine's own.
  *
  * Every action is settled first (shells, charges, items, whose turn is next),
  * the match is saved, and only then is it shown: quitting in the middle of an
@@ -12,28 +13,24 @@
 match_t G;
 profile_t P;
 
-const char *const ITEM_NAME[IT_COUNT] = {T("HAND SAW"), T("MAGNIFYING GLASS"), T("BEER"), T("CIGARETTE PACK"), T("HANDCUFFS"),
-                                         T("EXPIRED MEDICINE"), T("BURNER PHONE"), T("ADRENALINE"), T("INVERTER")};
+const char *const ITEM_NAME[IT_COUNT] = {T("BLACK POWDER"), T("MONOCLE"), T("OIL CAN"), T("CUP OF TEA"), T("CHAIN"),
+                                         T("ODD ELIXIR"), T("CRYSTAL BALL"), T("THIEF'S GLOVE"), T("MIRROR")};
 const char *const ITEM_DESC[IT_COUNT] = {
-    T("SHOTGUN DEALS 2 DAMAGE."),
-    T("CHECK THE CURRENT ROUND\nIN THE CHAMBER."),
-    T("RACKS THE SHOTGUN.\nEJECTS CURRENT SHELL."),
-    T("TAKES THE EDGE OFF.\nREGAIN 1 CHARGE."),
-    T("DEALER SKIPS THE\nNEXT TURN."),
-    T("50% CHANCE TO REGAIN 2 CHARGES.\nIF NOT, LOSE 1 CHARGE."),
-    T("A MYSTERIOUS VOICE GIVES\nYOU INSIGHT FROM THE FUTURE."),
-    T("STEAL AN ITEM AND\nUSE IT IMMEDIATELY."),
-    T("SWAPS THE POLARITY OF THE\nCURRENT SHELL IN THE CHAMBER."),
+    T("THE NEXT SHOT\nHITS TWICE AS HARD."),
+    T("A LOOK AT THE SHELL\nWAITING IN THE CHAMBER."),
+    T("WORKS THE LEVER:\nTHE SHELL IN THE CHAMBER FLIES OUT."),
+    T("A WARM SIP.\nONE FLAME COMES BACK."),
+    T("HE LOSES\nHIS NEXT TURN."),
+    T("HEADS: TWO FLAMES BACK.\nTAILS: ONE FLAME LOST."),
+    T("SHOWS ONE OF THE\nSHELLS STILL TO COME."),
+    T("TAKE ONE OF HIS ITEMS\nAND USE IT AT ONCE."),
+    T("TURNS THE SHELL IN THE\nCHAMBER INTO ITS OPPOSITE."),
 };
 
-/* Story mode: live and blank shells of the five loads of each stage (the
- * last one repeats), starting charges, items drawn before each load. */
-static const uint8_t STORY_LOADS[3][5][2] = {{{1, 2}, {3, 2}, {3, 2}, {3, 3}, {5, 2}},
-                                             {{1, 1}, {2, 2}, {3, 2}, {3, 3}, {5, 2}},
-                                             {{1, 2}, {4, 4}, {3, 2}, {4, 2}, {5, 3}}};
-static const uint8_t STORY_HP[3] = {2, 4, 6}, STORY_ITEMS[3] = {0, 2, 4};
-/* how many of each item a player may hold: story, Double or Nothing */
-static const uint8_t CAP[2][IT_COUNT] = {{8, 8, 8, 2, 8, 0, 0, 0, 0}, {3, 3, 2, 1, 1, 1, 1, 2, 8}};
+/* Story mode: flames at the start of each round, items dealt before each load */
+static const uint8_t STORY_HP[3] = {3, 4, 5}, STORY_ITEMS[3] = {1, 2, 3};
+/* how many of each item a player may hold: story, Double or Quit */
+static const uint8_t CAP[2][IT_COUNT] = {{2, 2, 2, 2, 1, 1, 1, 1, 2}, {2, 2, 2, 2, 1, 2, 1, 1, 2}};
 
 enum { WHO_PLAYER, WHO_DEALER };
 
@@ -56,14 +53,25 @@ static int count(int side, int it) {
 
 static int free_slots(int side) { return count(side, IT_NONE); }
 
+/* Story mode: each round's loads grow, from 2 or 3 shells to 7 or 8, never all of one kind
+ * (the counts are drawn once per round, in new_stage, and kept in G.don like Double or Quit's). */
+static void story_loads(void) {
+  for (int k = 0; k < 5; k++) {
+    int total = 2 + G.stage + (k < 3 ? k : 3) + (int)rnd(2);
+    if (total > 8) total = 8;
+    int live = (total + (int)rnd(2)) / 2;
+    if (live < 1) live = 1;
+    if (live > total - 1) live = total - 1;
+    G.don[k][0] = (uint8_t)live;
+    G.don[k][1] = (uint8_t)(total - live);
+    G.don[k][2] = STORY_ITEMS[G.stage];
+    G.don[k][3] = G.stage == 2 && k > 0;
+  }
+}
+
 static void load_counts(int *live, int *blank, int *nitems, int *shuffle) {
   int k = G.load < 5 ? G.load : 4;
-  if (G.mode == MODE_STORY) {
-    *live = STORY_LOADS[G.stage][k][0];
-    *blank = STORY_LOADS[G.stage][k][1];
-    *nitems = STORY_ITEMS[G.stage];
-    *shuffle = G.stage == 2 && k > 0;
-  } else {
+  {
     *live = G.don[k][0];
     *blank = G.don[k][1];
     *nitems = G.don[k][2];
@@ -78,14 +86,12 @@ static void eject(void) {
   G.ejected++;
 }
 
-/* round 3: at 2 charges or fewer the defibrillator's wire is cut */
+/* The last round: a candle down to its last flame turns blue and can no longer be
+ * relit (G.wire: 2 = just happened, shown at the start of the next turn; 1 = blue). */
 static void check_wires(void) {
   if (G.mode != MODE_STORY || G.stage != 2) return;
   for (int s = 0; s < 2; s++)
-    if (G.hp[s] > 0 && G.hp[s] <= 2 && !G.wire[s]) {
-      G.wire[s] = 2; /* cut requested: done at the start of the next turn */
-      G.hp[s] = 1;
-    }
+    if (G.hp[s] == 1 && !G.wire[s]) G.wire[s] = 2;
 }
 
 static void heal(int side, int n) {
@@ -132,7 +138,7 @@ static void cursor_desc(void) {
   T.desc = 0;
   if (T.cursor == 8) {
     T.title = T("SHOTGUN");
-    T.desc = T("SHOOTING YOURSELF WITH A BLANK\nSKIPS THE DEALER'S TURN.");
+    T.desc = T("A BLANK ON YOURSELF:\nYOU PLAY AGAIN.");
   } else if (T.cursor >= 0) {
     int it = G.items[T.cursor >= 16][T.cursor & 7];
     if (it >= 0) T.title = ITEM_NAME[it], T.desc = ITEM_DESC[it];
@@ -140,7 +146,7 @@ static void cursor_desc(void) {
 }
 
 /* Arrow navigation: the nearest target in that direction (screen positions of
- * the table view; the Dealer's slots sit behind the player's). */
+ * the table view; the Automaton's slots sit behind the player's). */
 static int nav(int cur, int key, const int *cand, int n) {
   int cx, cy, best = cur, bd = 1 << 30;
   target_pos(cur, &cx, &cy);
@@ -179,7 +185,7 @@ static int usable(int it) {
 }
 
 /* The player's choice: returns a slot (0..7) or 8 for the shotgun. The
- * Dealer's items (16+) can be looked at, not used. */
+ * Automaton's items (16+) can be looked at, not used. */
 static int choose(int *cur) {
   for (;;) {
     int cand[17], n = 0;
@@ -192,7 +198,7 @@ static int choose(int *cur) {
     T.cursor = *cur;
     T.view = *cur >= 16 ? V_DEALER : V_TABLE;
     cursor_desc();
-    T.hint = *cur >= 16 ? T("THE DEALER'S ITEM   DOWN: BACK") : T("OK: USE   BACK: PAUSE");
+    T.hint = *cur >= 16 ? T("HIS ITEM   DOWN: BACK") : T("OK: USE   BACK: PAUSE");
     table_show();
     int k = key_wait(-1);
     if (IS_OK(k)) {
@@ -210,7 +216,7 @@ static int choose(int *cur) {
 
 static void use_item(int side, int it, int from);
 
-/* Adrenaline: take one of the Dealer's items within a few seconds and use it. */
+/* The thief's glove: take one of the Automaton's items within a few seconds and use it. */
 static void steal(void) {
   int cand[8], n = 0;
   for (int g = 0; g < 8; g++) {
@@ -224,7 +230,7 @@ static void steal(void) {
     return;
   }
   int cur = cand[0];
-  uint32_t left = 7000;
+  uint32_t left = 6000;
   T.view = V_DEALER;
   T.rush = 1;
   while (left) {
@@ -244,7 +250,7 @@ static void steal(void) {
     }
     if (k >= 0 && k <= KEY_RIGHT) cur = nav(cur, k, cand, n);
   }
-  /* too slow: the adrenaline is spent */
+  /* too slow: the glove is spent */
   T.cursor = -1, T.title = T.desc = T.hint = 0;
   T.rush = 0;
   save_match();
@@ -252,22 +258,20 @@ static void steal(void) {
   table_show();
 }
 
-static const char *const SEQ[7] = {"", T("SECOND SHELL ..."), T("THIRD SHELL ..."), T("FOURTH SHELL ..."),
-                                   T("FIFTH SHELL ..."), T("SIXTH SHELL ..."), T("SEVENTH SHELL ...")};
-
+/* the crystal ball: one of the shells after the one in the chamber, by its number */
 static const char *phone_message(void) {
   static char msg[NP_TEXT_EXTRA ? 96 : 48];
-  if (G.nshell == 1) return T("HOW UNFORTUNATE ...");
+  if (G.nshell == 1) return T("THE BALL STAYS DARK ...");
   int k = 1 + rnd(G.nshell - 1);
-  if (k >= 7) k--;
   int n = 0;
-  for (const char *p = SEQ[k]; *p; p++) msg[n++] = *p;
-  for (const char *p = G.shell[k] ? T("\n... LIVE ROUND.") : T("\n... BLANK."); *p; p++) msg[n++] = *p;
+  for (const char *p = T("THE MIST CLEARS: SHELL "); *p; p++) msg[n++] = *p;
+  msg[n++] = (char)('1' + k);
+  for (const char *p = G.shell[k] ? T("\nIS LIVE.") : T("\nIS BLANK."); *p; p++) msg[n++] = *p;
   msg[n] = 0;
   return msg;
 }
 
-/* An item used by the player (side 0) or by the Dealer (side 1), taken from
+/* An item used by the player (side 0) or by the Automaton (side 1), taken from
  * slot `from` (side*8+slot, or -1). The effect is settled and saved, then shown. */
 static void use_item(int side, int it, int from) {
   act_t a = {0};
@@ -278,11 +282,11 @@ static void use_item(int side, int it, int from) {
       G.sawed = 1;
       break;
     case IT_BEER:
-      if (!side) G.beer_ml += 330;
+      if (!side) G.beer_ml += 30;
       eject();
       if (!G.nshell) {
         if (!side) G.phase = PH_LOAD, G.loaded = 0, G.sawed = 0;
-        /* the Dealer's turn ends by itself when no shell is left */
+        /* the Automaton's turn ends by itself when no shell is left */
       }
       break;
     case IT_CIGS:
@@ -295,19 +299,14 @@ static void use_item(int side, int it, int from) {
       break;
     case IT_MEDS:
       a.good = rnd(100) < 50;
-      if (a.good) {
-        heal(side, 2);
-      } else if (!G.wire[side] || !side) {
-        a.dead = hurt(side, 1);
-      }
+      if (a.good) heal(side, 2);
+      else a.dead = hurt(side, 1);
       break;
     case IT_PHONE:
       if (!side) {
         a.text = phone_message();
-      } else if (G.nshell > 2) {
-        int k = 1 + rnd(G.nshell - 1);
-        if (k == 8) k--;
-        G.dknown[k] = 1;
+      } else if (G.nshell > 1) {
+        G.dknown[1 + rnd(G.nshell - 1)] = 1;
       }
       break;
     case IT_INVERT:
@@ -317,12 +316,12 @@ static void use_item(int side, int it, int from) {
     case IT_ADREN:
       break;
   }
-  if (it != IT_ADREN) save_match(); /* adrenaline: settled with what it steals */
+  if (it != IT_ADREN) save_match(); /* the glove: settled with what it steals */
   anim_item(side, it, &a);
   if (it == IT_ADREN && !side) steal();
 }
 
-/* The shotgun is picked up: aim at the Dealer (up) or yourself (down), fire. */
+/* The shotgun is picked up: aim at the Automaton (up) or yourself (down), fire. */
 static void player_shoot(void) {
   int self = anim_player_aim();
   int live = G.shell[0], dmg = G.sawed ? 2 : 1, ended = 0;
@@ -337,7 +336,7 @@ static void player_shoot(void) {
 static void player_turn(void) {
   if (G.pcuffed) {
     if (!G.pbreak) {
-      /* cuffed: this turn goes to the Dealer */
+      /* chained: this turn goes to the Automaton */
       G.pbreak = 1;
       G.phase = PH_DEALER;
       save_match();
@@ -367,42 +366,69 @@ static void player_turn(void) {
   }
 }
 
-/* --------------------------------------------------------------- the Dealer */
+/* ------------------------------------------------------------ the Automaton */
+
+/* How the Automaton plays (Chevrotine's own): he counts the shells, so he
+ * knows the odds of the one in the chamber; he knows it for sure after his
+ * monocle, his crystal ball, or when only one kind is left. He then picks the
+ * item that helps most right now, one at a time, and shoots at you when a live
+ * shell is likelier, at himself when a blank is. */
 
 enum { UNKNOWN = -1, BLANK = 0, LIVE = 1, SELF = 0, PLAYER = 1 };
 
-/* Double or Nothing: what the Dealer can tell from counting and his phone. */
-static int figure_out(void) {
-  if (G.dknown[0]) return 1;
-  int live = 0, blank = 0;
-  for (int i = 0; i < G.nshell; i++) live += G.shell[i], blank += !G.shell[i];
-  if (!live || !blank) return 1;
-  for (int i = 0; i < G.nshell; i++)
-    if (G.dknown[i]) G.shell[i] ? live-- : blank--;
-  return !live || !blank;
+/* what he knows of the shell in the chamber: LIVE, BLANK, or UNKNOWN with the odds in *pct (0..100) */
+static int d_guess(int *pct) {
+  int live = 0, n = G.nshell;
+  for (int i = 0; i < n; i++) live += G.shell[i];
+  if (G.d_knows) {
+    *pct = G.d_known == LIVE ? 100 : 0;
+    return G.d_known;
+  }
+  if (G.dknown[0]) {
+    *pct = G.shell[0] ? 100 : 0;
+    return G.shell[0];
+  }
+  /* the shells he saw through the crystal ball are out of the count */
+  int kl = 0, kn = 0;
+  for (int i = 1; i < n; i++)
+    if (G.dknown[i]) kn++, kl += G.shell[i];
+  int left = n - kn, l = live - kl;
+  *pct = left ? l * 100 / left : 50;
+  if (*pct == 100) return LIVE;
+  if (*pct == 0) return BLANK;
+  return UNKNOWN;
 }
 
-static int coin(void) {
-  if (G.mode == MODE_STORY) return rnd(2);
-  int live = 0, blank = 0;
-  for (int i = 0; i < G.nshell; i++) live += G.shell[i], blank += !G.shell[i];
-  if (live == blank) return rnd(2);
-  return live > blank;
+static int find(int side, int it) {
+  for (int g = 0; g < 8; g++)
+    if (G.items[side][g] == it) return g;
+  return -1;
 }
 
-/* the items in the order they were laid on the table */
-static int list_items(int side, int *slots) {
-  int n = 0;
-  for (int s = 0; s < 64 && n < 8; s++)
-    for (int g = 0; g < 8; g++)
-      if (G.items[side][g] >= 0 && G.seq[side][g] == s) slots[n++] = g;
-  /* anything without an order (should not happen) */
-  for (int g = 0; g < 8; g++) {
-    int in = 0;
-    for (int i = 0; i < n; i++) in |= slots[i] == g;
-    if (!in && G.items[side][g] >= 0) slots[n++] = g;
+/* the item he wants now, and from where: *side 1 his own, 0 yours (through his glove) */
+static int d_choose(int *side) {
+  int pct, k = d_guess(&pct);
+  int hurt_hp = G.maxhp - G.hp[1], fragile = G.wire[1] != 0;
+  int want[IT_COUNT] = {0};
+  if (hurt_hp > 0 && !fragile) want[IT_CIGS] = 60 + 10 * hurt_hp;
+  if (k == UNKNOWN && G.nshell > 1) want[IT_GLASS] = 70;
+  if (k == UNKNOWN && pct < 50 && G.nshell > 1) want[IT_BEER] = 50;
+  if (k == BLANK && G.nshell > 0) want[IT_INVERT] = 65;
+  if ((k == LIVE || pct >= 67) && !G.sawed && G.hp[0] > 1) want[IT_SAW] = 55;
+  if (!G.pcuffed && G.nshell > 1 && pct >= 50) want[IT_CUFFS] = 45;
+  if (hurt_hp >= 2 && G.hp[1] > 1 && !fragile && !G.d_meds) want[IT_MEDS] = 35;
+  if (G.nshell > 2 && k == UNKNOWN) want[IT_PHONE] = 30;
+  int best = -1, bw = 0;
+  *side = 1;
+  for (int it = 0; it < IT_COUNT; it++) {
+    if (!want[it] || it == IT_ADREN) continue;
+    if (find(1, it) >= 0 && want[it] > bw) best = it, bw = want[it], *side = 1;
   }
-  return n;
+  /* the glove: one of yours, if it would help him more than anything of his */
+  if (find(1, IT_ADREN) >= 0)
+    for (int it = 0; it < IT_COUNT; it++)
+      if (want[it] && it != IT_ADREN && find(0, it) >= 0 && want[it] - 10 > bw) best = it, bw = want[it] - 10, *side = 0;
+  return best;
 }
 
 static void dealer_shoot(int who) {
@@ -413,7 +439,7 @@ static void dealer_shoot(int who) {
     ended = hurt(who == SELF ? 1 : 0, dmg);
     if (!ended) end_turn(1);
   } else if (who == SELF && G.nshell) {
-    /* a blank on himself: he goes again (and a sawn-off barrel stays sawn off) */
+    /* a blank on himself: he goes again (his powder stays in the barrel) */
     G.phase = PH_DEALER;
     G.dturn = 0;
   } else {
@@ -432,7 +458,7 @@ static void dealer_turn(void) {
   }
   if (G.dcuffed) {
     if (!G.dbreak) {
-      /* he tries his handcuffs: this turn is lost */
+      /* chained: this turn is lost */
       G.dbreak = 1;
       G.dturn = 0;
       G.phase = PH_PLAYER;
@@ -454,83 +480,31 @@ static void dealer_turn(void) {
       G.phase = PH_LOAD;
       return;
     }
-    if (G.mode == MODE_DON && !G.d_knows) {
-      G.d_knows = figure_out();
-      if (G.d_knows) G.d_known = G.shell[0], G.d_target = G.shell[0] ? PLAYER : SELF;
-    }
-    if (G.nshell == 1) G.d_known = G.shell[0], G.d_target = G.d_known ? PLAYER : SELF, G.d_knows = 1;
-    int has_cigs = count(1, IT_CIGS) > 0, adren = count(1, IT_ADREN) > 0;
-    int slots[16], sides[16], n = list_items(1, slots);
-    for (int i = 0; i < n; i++) sides[i] = 1;
-    if (adren) {
-      int m = list_items(0, slots + n);
-      for (int i = 0; i < m; i++) sides[n + i] = 0;
-      n += m;
-    }
-    int want = -1, cuff = 0;
-    for (int i = 0; i < n && want < 0; i++) {
-      int it = G.items[sides[i]][slots[i]];
-      switch (it) {
-        case IT_GLASS:
-          if (!G.d_knows && G.nshell != 1)
-            want = it, G.d_known = G.shell[0], G.d_target = G.d_known ? PLAYER : SELF, G.d_knows = 1;
-          break;
-        case IT_CIGS:
-          if (G.hp[1] < G.maxhp) want = it, has_cigs = 0;
-          break;
-        case IT_MEDS:
-          if (G.hp[1] < G.maxhp && !has_cigs && !G.d_meds && G.hp[1] != 1) want = it, G.d_meds = 1;
-          break;
-        case IT_BEER:
-          if (G.d_known != LIVE && G.nshell != 1) {
-            want = it;
-            if (G.mode == MODE_DON) G.d_knows = 0, G.d_known = UNKNOWN;
-          }
-          break;
-        case IT_CUFFS:
-          if (!G.pcuffed && G.nshell != 1) want = it, cuff = 1;
-          break;
-        case IT_SAW:
-          if (!G.sawed && G.d_known == LIVE) want = it, G.d_saw = 1;
-          break;
-        case IT_PHONE:
-          if (G.nshell > 2) want = it;
-          break;
-        case IT_INVERT:
-          if (G.d_knows && G.d_known == BLANK) want = it, G.d_known = LIVE, G.d_target = PLAYER;
-          break;
-      }
-    }
-    (void)cuff;
-    int has_saw = 0;
-    for (int i = 0; i < n; i++) has_saw |= G.items[sides[i]][slots[i]] == IT_SAW;
-    if (want < 0 && !G.d_saw && has_saw && !G.sawed && G.d_known != BLANK) {
-      if (coin() == 0) G.d_target = SELF;
-      else want = IT_SAW, G.d_saw = 1, G.d_target = PLAYER;
-    }
+    int side, want = d_choose(&side);
     if (want < 0) break;
-    /* his own item if he has one, otherwise the player's, with adrenaline */
-    int g = -1, from = 1;
-    for (int i = 0; i < 8 && g < 0; i++)
-      if (G.items[1][i] == want) g = i;
-    if (g < 0) {
-      from = 0;
-      for (int i = 0; i < 8 && g < 0; i++)
-        if (G.items[0][i] == want) g = i;
-      if (g >= 0) G.items[0][g] = IT_NONE;
-      for (int i = 0; i < 8; i++)
-        if (G.items[1][i] == IT_ADREN) {
-          G.items[1][i] = IT_NONE;
-          use_item(WHO_DEALER, IT_ADREN, 8 + i);
-          break;
-        }
-    } else {
+    int g;
+    if (side) {
+      g = find(1, want);
       G.items[1][g] = IT_NONE;
+    } else {
+      g = find(0, want);
+      G.items[0][g] = IT_NONE;
+      int gl = find(1, IT_ADREN);
+      G.items[1][gl] = IT_NONE;
+      use_item(WHO_DEALER, IT_ADREN, 8 + gl);
     }
-    use_item(WHO_DEALER, want, g >= 0 ? from * 8 + g : -1);
+    /* what the item teaches him */
+    if (want == IT_GLASS) G.d_knows = 1, G.d_known = G.shell[0];
+    if (want == IT_BEER || want == IT_INVERT) G.d_knows = 0, G.d_known = UNKNOWN;
+    if (want == IT_INVERT && G.shell[0] == 0) G.d_knows = 1, G.d_known = LIVE; /* he turned a blank he knew of */
+    if (want == IT_MEDS) G.d_meds = 1;
+    use_item(WHO_DEALER, want, side * 8 + g);
     if (G.phase != PH_DEALER) return;
   }
-  if (G.d_target < 0) G.d_target = coin() ? PLAYER : SELF;
+  int pct, k = d_guess(&pct);
+  if (k == LIVE) G.d_target = PLAYER;
+  else if (k == BLANK) G.d_target = SELF;
+  else G.d_target = pct > 50 ? PLAYER : pct < 50 ? SELF : (rnd(2) ? PLAYER : SELF);
   dealer_shoot(G.d_target);
 }
 
@@ -551,7 +525,7 @@ static void deal_items(int n) {
   if (G.loaded == 0) G.deal_left = n, G.deal_spook = 0, G.loaded = 1;
   view_table();
   if (!P.read_items) {
-    say(T("LET'S MAKE THIS A LITTLE\nMORE INTERESTING ..."), 3000);
+    say(T("A FEW TRICKS TO SPICE\nUP THE SHOW ..."), 3000);
   }
   T.box = 1;
   table_show();
@@ -559,16 +533,16 @@ static void deal_items(int n) {
   if (!P.read_items) {
     static char s[NP_TEXT_EXTRA ? 64 : 24];
     s[0] = '0' + n;
-    const char *t = T(" ITEMS EACH.");
+    const char *t = n == 1 ? T(" ITEM EACH.") : T(" ITEMS EACH.");
     int k = 1;
     while (*t) s[k++] = *t++;
     s[k] = 0;
     say(s, 2500);
-    say(T("MORE ITEMS BEFORE\nEVERY LOAD."), 2500);
+    say(T("AND A FEW MORE\nBEFORE EACH LOAD."), 2500);
     P.read_items = 1;
     save_profile();
   } else if (G.mode == MODE_STORY && G.stage == 2 && G.load == 0 && !P.read_items4) {
-    say(T("4 ITEMS EACH."), 2500);
+    say(T("THREE TRICKS EACH, NOW."), 2500);
     P.read_items4 = 1;
     save_profile();
   }
@@ -581,19 +555,12 @@ static void deal_items(int n) {
       if (IS_OK(e)) break;
       if (e == KEY_BACK) app_pause_menu(), table_show();
     }
-    if (G.mode == MODE_STORY && G.stage == 1 && G.load == 1 && !P.seen_god && G.deal_spook++ == 1) {
-      /* a bloody waiver, already signed */
-      P.seen_god = 1;
-      save_profile();
-      anim_god_waiver();
-      continue;
-    }
     int it = deal_one(0, from_don, no_saw);
     if (it < 0) break;
     T.hint = 0;
     if (!free_slots(0)) {
-      say(T("OUT OF SPACE."), 1800);
-      say(T("HOW UNFORTUNATE ..."), 2200);
+      say(T("NO MORE ROOM ON YOUR SIDE."), 1800);
+      say(T("THAT ONE GOES BACK IN THE BOX."), 2200);
       break;
     }
     T.held = it;
@@ -625,7 +592,7 @@ static void deal_items(int n) {
   G.deal_left = 0;
   T.hint = 0;
   T.held = -1;
-  /* the Dealer's items */
+  /* the Automaton's items */
   for (int k = 0; k < n; k++) {
     if (!free_slots(1)) break;
     int it = deal_one(1, from_don, no_saw);
@@ -644,16 +611,16 @@ static void deal_items(int n) {
 }
 
 static const char *const RULES[INTRO_LINES] = {
-    T("THE RULES ARE SIMPLE:"),
-    T("SHOOTING YOURSELF WITH\nA BLANK SKIPS MY TURN."),
-    T("SHOOTING THE DEALER WITH\nA LIVE TAKES THEIR LIFE."),
-    T("WE WILL PLAY A SERIES\nOF ROUNDS ..."),
-    T("UNTIL WE REACH\nTHE FINAL SHOWDOWN."),
-    T("THERE, WE WILL DANCE ON\nTHE EDGE OF LIFE AND DEATH."),
-    T("WIN, AND WALK AWAY WITH\n400,000$ IN CASH."),
-    T("LOSE, AND WE SELL YOUR\nMANGLED CORPSE FOR PROFIT."),
-    T("SHALL WE BEGIN?")};
-static const uint16_t RULES_MS[INTRO_LINES] = {1900, 3000, 3000, 3000, 3000, 3700, 3700, 3700, 2500};
+    T("WELCOME TO MY LITTLE SHOW."),
+    T("ONE GUN. RED SHELLS ARE LIVE,\nBLUE ONES ARE BLANKS."),
+    T("YOUR TURN: AIM AT ME,\nOR AT YOURSELF."),
+    T("A BLANK ON YOURSELF?\nYOU PLAY AGAIN."),
+    T("A LIVE ONE BLOWS OUT\nA FLAME OF YOUR CANDLE."),
+    T("NO FLAMES LEFT,\nAND THE ROUND IS LOST."),
+    T("WIN THREE ROUNDS,\nAND THE CHEST IS YOURS."),
+    T("LOSE, AND YOU STAY HERE\nAS MY NEW SPARE PART."),
+    T("LET THE SHOW BEGIN!")};
+static const uint16_t RULES_MS[INTRO_LINES] = {2000, 3000, 2600, 2600, 3000, 2600, 3000, 3200, 2200};
 
 static void load_start(void) {
   int live, blank, nitems, shuffle;
@@ -695,24 +662,24 @@ static void load_start(void) {
   static char text[NP_TEXT_EXTRA ? 96 : 40];
   const char *msg = text;
   int k = 0;
+  for (const char *p = T("LIVE: "); *p; p++) text[k++] = *p;
   text[k++] = '0' + live;
-  for (const char *p = live == 1 ? T(" LIVE ROUND. ") : T(" LIVE ROUNDS. "); *p; p++) text[k++] = *p;
+  for (const char *p = T("   BLANK: "); *p; p++) text[k++] = *p;
   text[k++] = '0' + blank;
-  for (const char *p = blank == 1 ? T(" BLANK.") : T(" BLANKS."); *p; p++) text[k++] = *p;
   text[k] = 0;
   int ms = 2500;
   if (G.mode == MODE_DON || (G.stage == 2)) {
     msg = 0;
     ms = 1300;
     if (G.mode == MODE_STORY && !P.drill_said) {
-      msg = T("YOU KNOW THE DRILL.");
+      msg = T("YOU KNOW HOW IT GOES.");
       ms = 2500;
       P.drill_said = 1;
       save_profile();
     }
   }
   shells_view(G.shown, G.nshown, msg, ms);
-  /* the Dealer loads the shotgun */
+  /* the Automaton loads the shotgun */
   view_dealer();
   int told = -1;
   if (P.loads_told < 2 && G.mode == MODE_STORY) told = P.loads_told++, save_profile();
@@ -755,6 +722,7 @@ static void new_stage(void) {
   G.careful_said = 0;
   if (G.mode == MODE_STORY) {
     G.maxhp = STORY_HP[s];
+    story_loads();
   } else {
     for (int k = 0; k < 5; k++) {
       int total = 2 + rnd(7), live = total / 2 < 1 ? 1 : total / 2;
@@ -783,15 +751,15 @@ static void stage_start(void) {
   table_show();
   pause_ms(600);
   if (G.mode == MODE_STORY && G.stage == 2) {
-    /* the final showdown: no more defibrillators */
+    /* the last round: a candle down to one flame can no longer be relit */
     if (!P.read_final) {
-      say(T("LONG LAST, WE ARRIVE\nAT THE FINAL SHOWDOWN."), 4000);
-      say(T("NO MORE DEFIBRILLATORS.\nNO MORE BLOOD TRANSFUSIONS."), 4000);
-      say(T("NOW, ME AND YOU, WE ARE DANCING\nON THE EDGE OF LIFE AND DEATH."), 4800);
+      say(T("THE LAST ROUND.\nTHE BEST PART OF THE SHOW."), 3600);
+      say(T("FROM NOW ON, A CANDLE DOWN TO\nONE FLAME TURNS BLUE ..."), 3800);
+      say(T("... AND NOTHING CAN\nLIGHT IT BACK UP."), 3400);
       P.read_final = 1;
       save_profile();
     } else {
-      say(T("I BETTER NOT\nSEE YOU AGAIN."), 3000);
+      say(T("BACK FOR MORE?\nVERY WELL."), 3000);
     }
   }
   round_indicator();
@@ -814,8 +782,9 @@ static void stage_won(void) {
     /* the winnings of these three rounds, settled now: the machine counts them up */
     G.score_before = G.score;
     if (!G.doubled) {
-      uint32_t loss = (uint32_t)((uint64_t)G.batch_ms * 40000 / 600000);
-      G.score = loss > 69990 ? 10 : 70000 - loss;
+      /* 50 000 coins, minus 50 a second spent on these three rounds */
+      uint32_t loss = (uint32_t)((uint64_t)G.batch_ms / 20);
+      G.score = loss > 49900 ? 100 : 50000 - loss;
     } else {
       G.score = G.score * 2;
     }
@@ -867,7 +836,7 @@ void game_run(void) {
         break;
       case PH_REVIVE:
         if (G.mode == MODE_STORY && G.stage < 2) {
-          /* the defibrillator: the same round starts over */
+          /* wound back up: the same round starts over */
           if (!G.revived) {
             G.revived = 1;
             G.deaths++;
@@ -880,12 +849,12 @@ void game_run(void) {
           G.from_death = 1;
           G.phase = PH_STAGE;
         } else {
-          /* true death: the run is over, unless "retry" in heaven */
+          /* the show is over: the run ends, unless "retry" */
           G.phase = PH_NONE;
           save_match();
           int retry = story_death();
           if (G.mode == MODE_DON) {
-            G.phase = PH_RETRY; /* back to the bathroom, a new run */
+            G.phase = PH_RETRY; /* back to the caravan, a new run */
             return;
           }
           if (!retry) return;
diff --git a/games/buckshot/src/game.h b/games/buckshot/src/game.h
index bc4564b..ae2fd10 100644
--- a/games/buckshot/src/game.h
+++ b/games/buckshot/src/game.h
@@ -1,10 +1,11 @@
-/* Buckshot: the match state, the rules, and what the screens need to know. */
+/* Chevrotine (games/buckshot): the match state, the rules, and what the screens need to know. */
 #ifndef BR_GAME_H
 #define BR_GAME_H
 #include <stdbool.h>
 #include <stdint.h>
 
-/* items, in the original's order */
+/* items: black powder, monocle, oil can, cup of tea, chain, odd elixir, crystal ball, thief's glove, mirror
+ * (the names in the code are the first version's) */
 enum { IT_NONE = -1, IT_SAW, IT_GLASS, IT_BEER, IT_CIGS, IT_CUFFS, IT_MEDS, IT_PHONE, IT_ADREN, IT_INVERT, IT_COUNT };
 enum { MODE_STORY, MODE_DON };
 /* where a saved match resumes. Every action is settled in the match state and
@@ -16,11 +17,11 @@ enum {
   PH_PLAYER,
   PH_DEALER,
   PH_STAGE_WON,
-  PH_DON_CHOICE, /* Double or Nothing: winnings counted, the offer */
+  PH_DON_CHOICE, /* Double or Quit: winnings counted, the offer */
   PH_ENDING,
-  PH_REVIVE,     /* died in round 1 or 2: the defibrillator, then the same round again */
-  PH_REDO,       /* "retry" in heaven: back through the bathroom to the final round */
-  PH_RETRY,      /* not saved: a new run from the bathroom */
+  PH_REVIVE,     /* lost round 1 or 2: wound back up, then the same round again */
+  PH_REDO,       /* "retry" after the show is over: back through the caravan to the last round */
+  PH_RETRY,      /* not saved: a new run from the caravan */
   PH_LAST = PH_REDO
 };
 /* keys (event numbers); letters typed with Alpha come back as KEY_LETTER + 0..25 */
@@ -29,35 +30,35 @@ enum { KEY_LEFT = 0, KEY_UP = 1, KEY_DOWN = 2, KEY_RIGHT = 3, KEY_OK = 4, KEY_BA
 #define IS_OK(k) ((k) == KEY_OK || (k) == KEY_EXE)
 
 typedef struct {
-  uint64_t score;                      /* Double or Nothing: winnings so far */
+  uint64_t score;                      /* Double or Quit: winnings so far */
   uint64_t score_before;               /* ... before the last count (the machine counts up from it) */
-  uint32_t batch_ms;                   /* Double or Nothing: time spent on the current three stages */
+  uint32_t batch_ms;                   /* Double or Quit: time spent on the current three rounds */
   uint32_t rng;
   uint8_t mode, stage, load, phase;
-  int8_t hp[2], maxhp;                 /* 0 = player, 1 = Dealer */
-  uint8_t wire[2];                     /* round 3: defibrillator cut (2 = cut pending) */
+  int8_t hp[2], maxhp;                 /* flames: 0 = player, 1 = the Automaton */
+  uint8_t wire[2];                     /* round 3: candle turned blue at one flame (2 = just now) */
   uint8_t nshell, shell[8];            /* remaining shells, shell[0] in the chamber; 1 = live */
   uint8_t shown[8], nshown;            /* the load as it was shown in the compartment */
-  uint8_t dknown[8];                   /* shells the Dealer learned from a burner phone */
+  uint8_t dknown[8];                   /* shells the Automaton saw in his crystal ball */
   int8_t items[2][8];                  /* table slots */
   uint8_t seq[2][8], seqn;             /* the order the items were laid on the table */
-  uint8_t don[5][4];                   /* Double or Nothing: live, blank, items, shown shuffled, per load */
+  uint8_t don[5][4];                   /* each round: live, blank, items, shown shuffled, per load */
   uint8_t doubled, keep_items;
   uint8_t pcuffed, pbreak, dcuffed, dbreak;
   uint8_t sawed;
-  uint8_t loaded;                      /* PH_LOAD: 0 new, 1 items being dealt, 2 shells in (the Dealer loads) */
+  uint8_t loaded;                      /* PH_LOAD: 0 new, 1 items being dealt, 2 shells in (the Automaton loads) */
   uint8_t deal_left, deal_spook;       /* PH_LOAD: items the player still takes from the box */
-  uint8_t dturn;                       /* the Dealer is in the middle of his turn: keeps what he knows */
+  uint8_t dturn;                       /* the Automaton is in the middle of his turn: keeps what he knows */
   int8_t d_knows, d_known, d_target, d_saw, d_meds;
   uint8_t careful_said, revived, ended;
-  uint8_t from_death;                  /* 1 back from a revival, 2 back from heaven */
+  uint8_t from_death;                  /* 1 wound back up, 2 back after the show was over */
   char name[7];
   /* statistics for the results */
-  uint16_t shots, ejected, doors, cigs, beer_ml, rounds_beat, deaths;
+  uint16_t shots, ejected, doors, cigs, beer_ml, rounds_beat, deaths; /* doors: tents entered, cigs: cups of tea, beer_ml: oil */
 } match_t;
 
 typedef struct {
-  uint64_t best;                       /* best Double or Nothing winnings */
+  uint64_t best;                       /* best Double or Quit winnings */
   uint8_t don_unlocked, intro_line, read_items, read_items4, read_final, seen_god, loads_told, cut_said, drill_said;
   uint16_t wins;
   char last_name[7];
diff --git a/games/buckshot/src/gfx.h b/games/buckshot/src/gfx.h
index 04b135d..96bfeb3 100644
--- a/games/buckshot/src/gfx.h
+++ b/games/buckshot/src/gfx.h
@@ -1,4 +1,4 @@
-/* Buckshot's picture engine: a 320x240 frame buffer of palette indices,
+/* Chevrotine's picture engine: a 320x240 frame buffer of palette indices,
  * pictures streamed into it from compressed art, text, and a palette that
  * fades, flashes and tints as it is pushed to the screen. */
 #ifndef BR_GFX_H
diff --git a/games/buckshot/src/icon.png b/games/buckshot/src/icon.png
index 5084d649dee1f241361bc66cad659134d4849cad..5a6d8e07ec55490b310d528b3b3ef0b696e419c4 100644
GIT binary patch
literal 4450
zcmV-o5uNUdP)<h;3K|Lk000e1NJLTq001`t001}$1^@s6S&d+m000pwNkl<Zc%03e
zYm8l2b;o~e?{m(5&BLDY*v|No*iK^Xgd~Lo5J_=MO9~W96L6qXsz|Lwr3#b}MJRl-
zOg{wCs-+dGTIhpTe28NLDk3F?mJmcs$}@4C2RI>)V|zR^p7(v8v-e*8aPGZx?|5eH
z*r0aZxt{So=kC4U`@hyYLJu80c+eg_deq;v<sFsL!pPlT!v{B(M{cepm2F<VSg|ZL
z=UHgZW5wdtQ%=fku53k70BWr&=j+qmHH{d?Dw{E4x}Tk|Pm{V7BZi=!jpa?0<1*G*
zViPmhm}Rap+ufs*R2VIf;nicrkh)Z-Ym;Y0%+p5Y$V_YY%f}|aS?loM*+)8m9O95U
z%;E5>I}iT075TJ?*{`aMls8d~3V8KcvCK7QS!ykIHy$bs5l0CN%{gjWl}1)0Xz0~h
zpI`t%723)G5HScsDJn5o7zQBo4uip~XRt8H#?ok4xMtR5raq082t|p+KDTLL^T!`L
z{+UNRasZf)#SU{g9NhQO2Mad&8pwVZvJlh-0o5Kxg64`*6eEVZtMjv&XF0w23iHib
zGN0kq_r0@_k@@AfSJ!vlg^bLn%(v!vb>Spu7Ej?q)>XX`yQ~O=pn;%4y}IB+7L2j`
z6I=M&hi<t4!NVL52M->!0Or7fL($QrNBuoF-2Y%X8F;{j%z1S|5CdX*t-F$p7;5Pv
zwQLb<43R__F&J#myZw@$clXtEpV<8SR%n?;T3W+k`YgPHL=Yp0aUlz-Z@FST@W4Gc
z-2dRwqeuOL1BW63_|X23zB7p{U$1AiY^pjDbp#R-HdnS{jqPe}x;{xOYat?7u{8V=
zC+3b5NrDlBH4$-aK?0TnM(wKX2@u5NX#s{nhL;S*<7lxh-p6pXnJlD?ltvjS40c0f
zv9-v2PfV8MGNY9-)qsm_5@)3Edg$0+J{EoWjUO)0x6Ee)o}kY5T1pT^mJO#Us{O2X
z;sq3^8O~?8*de0%3bLl*+exT*JwY%C{V^&lVpdngv`EgW$5|!dUG~{GUiF@vqJ?Jp
z{fUkDIG+W<^sn+7N!ohJ8C=tyR@}d~@UMA)$z2r8o>H8=--zhFfEtXt;0PKJ1XaZt
z)0gRj27K^{2#O+YH`GfI<Z?)JhOx%>?cqY!cb_#;_irOcy*gE|_eP>}qgN*v_yWt8
zSdT8{o-3t`?a_N(!2}H=!i`3SaaBbSS!scli>_v&{|n*P<5NI_dJq}!vz8C8Zvks8
zMoilUg%HB>0j=6i?fT2{%H=(bp>2TW(C87U*DZ57^0WAg63G8|>J#q56uUA7YoAMq
zte@(C5hU$bmxmR{(aPg0=QEe1-!0Ym-DFq59<RRZ9!ic-@`Zm{*;0G<=rFE%M(<|q
z98B~oy(33-!HSnb9gNmt;Yv@hUsSAgh3jghhph|I{IX>`S`8{RREc|B)~X_xnPmj<
zD4hT?#^#BHfWZ(ntR5P=QjT8X&{awm+xP$8>pA!|3>(Yq3k8gc>Fi*laE0oR5Mu}^
zw&RvLn#<#UMa*?GdfPBLpK|$bDL|@$Ya+{AhX!yG_d~AB3_}GH0zV+;6%CZHAf7LD
z%XI_Qb-5M{i7BGeq!t1}bXhpLe1;ToZ6~xu#3pHfu5BLjq?U(7z?lAo)2{UpS>cxJ
zrC3D~H5l@WDAfk|d6xVVd#uH+#0i&40Z0(6Tcl24AQ)gHk;GWB1g%{db88$Gm*AGU
zmLf^0`dKEjm+_jCX^U3snAV6TDtOZ64I^!rJg=P;h!9@RW|+Wp-o=#a6^c=X?d9tz
z%Frc4z6f&Zz4v_yqXT;cOU*6t($X>J(n);VMuH&`!>m^xuh;24M{UU?=JK<pqQqi|
zF?e+>xj7cx3^T0>2BM9OnjI9R+y@am{gq`oE+L_a7+Su;x#mf%MD2s!v~{OMRv9Yy
z2qKy{Coa=9b0wLs>lr%x1zgCO%O)8vY@r|(P+ixGeKFU!N&DqP#z<icZytRYr>ZY9
zpPj>#l7@f=i!~s28SeCC?ao50Zm->cmJ@4G@E$_YHq--an?xq2U`mWvc9AeZaDuAu
za@oJ`vK&!I5Fc`L=0O`UcDYau8W@U48H+PE*savu61Fr+r98vbk|9k40cbgc^WeSW
zgXV%N1ier^BidDj6~P#xV3my(p<EJ*iD4))Oiy3O#=;gh#$yz0iRt<zOKuTMeg^ke
z1if+?F_(VMdCdr#Ap#{CW81K@Z|@Y=6iK3piJ2;CfZ!}+BQcH4At<S{)Sc<muL9*L
zkVKw<Fj%q-m1Az)zlBZ12^&X;nK(Vk%;Yrx@$KuGoF2xQ7MZ35b!)MB0ri}7t2SM_
zW>#HxAI0I+Q*8v^eDg+bxpAC-`O?$);3!5BZ`fO=SfpL&DXSF@`LzzBP(o1lY%fzR
zm)QEcw^6G<!}R2<lqw6P6BUX!clMR2ZoTGF)M44Lz>QXHUZA#395mz=fpl-8kXW8O
zG0V%ZE|Ix_BBTy#%|NEw!^leMwDZ$uF#o8TDkgGF{On0)rcQ&zgs^<xsw!Sr6sjvA
z;<6l90Kf8*N2oP2s*M(rHC;xN$WVxN)e2p;19s^$9aITE<jF?_*Q}zUMG~7U>c>UP
zu5oeDoP*PTGDg~MfDZG@`GpoyeRaXC0Usbum6mfDF%)7$A+cO5c{?GpmU;swXIiwf
z(DjyH(A<HD9njp%XZ!AD%Y_w%YHzvI>0PL5yTg7V)1CXAdR{zR10ZwSb!AmZB4K{f
zGr5qm)PR|4Mq-qap#mF<hTXfy*}XeKgEDnK@Z+B@Qm;B}$1PdLzn%ToE6aXiJrvd4
ziit6dmJOo=aMPYLx9;1({#^syx^I}E%8Tb3JpYR0g;RnI?xQMK^VErq=O<eH?L)_y
zoNN%qhOtq@8}<${G!Wr0a#*iLCTHxm1ZqF!u>)~rSgJNTIjPjl4qDMJo;?#$t2ViI
zdxcuVaqQ;}UOHzPzWEOB`oib9@0(xZzHfbn_x;76;|KQe)QK9OfB0EyRnO3XW$S2x
zLfm$FVcC1Sd$--P)B0E;M+9rn0QxP{ACnz&PJuuzOKF4+eC$sTvwP1qB!!40pZo{D
z^X%gkk_IoFZ1KX$l&jx+4}bjkf6d-PnT#e?l${^`Lw4PMD_^+lUY<PmB0qTMEIY?6
ztt|8<r3)HVt5hz%a$L4s3XnO^?(G}-jkoUN{7j3xKXe~A-Mk-LiuwM--{6MpcXR(I
z5AmN*&hzt$23az|Tkih@wiHVIN|x~^E%J6Pa%*#*EjQfE&A<P9%+92ooQ4gfJ0N(j
zq<k{;HagpdYCeiur$4U{*@zHe)24(SJBBG226^57>u9))vp+t;*{4o&?OnICbK5pb
z!-JeYzr@JaZH$bMlW7BuEKZal!nU|bDWoLV?Vw44^Ro_gX!#h>cCva6vkX|Lp1WuO
ztB}N&pFBIwGtZx=nKr1`8(4(m=m2lK|8A^}s4gzhY&IDzMl4pVWc4~V%~y}wOr$}{
zVoO-86Inx6pJVFWal}Nd*RQx3k9k6&-<MbW;;L1HfOCP=dn%Q{!$-bM@XD5}w=uG1
zjB=^Okt1Ja*XE49*KA;6>I^3z{TB14#Mjd$&bcb5vKrqKrREyEbmU(dDmr%WC{Zj#
zgrFDYVZG~-2m~Mc+Is8v=M_Y-)}pGEN)g3EL}Uy<efkLweXPOneBgZ~g#!Qf)yJ5A
z>A(5iU*E!$$CkKi)bgFb`WwdgUWa?<JD9}d5ftISKKW;y{^9r7zq82gw_QtGUt;Bq
zZ>?EIr%>(4(G_lWgI=6OgjVW#%l<KLdHq)Y@yJu`9v@=%^iO!?@18>pY#0dq=9@Or
zXa)9OUFMe4C4Ttg1YfxCk9hri-_7V---xzaoc_jlIQiYj**4}mc;{|zefym}_vCS=
z&z<B-5=wp)TyP9rtUsT-L>wD_`qDgSCztSTY&gDkh+D23A}QqXsM&Hj52d2;?%Ov}
zF3ocMl|^3q%0Kb^!~cwGpj<NS-&W)Uckbc0er*?%C;o@I^JkErUTDterOh(B=Und$
zpxZ86r$0~o%em_cbJYg3OMy7bF<#~Zne#}bXaHlt0s*B`HoWJKP29FG<=kw>!ji|v
zFkG>0-&Ei&Z{9)bAYE7>ZPbV&=_{8md6sdpY<Z~^89`P6=W0z!vI}c3Z9|Ppp}_Uq
ziUe(YfdTJ5^_F8GiZGGIdCS6rkU3VZ2QP^?SRFL4)t~QZM%rk+w-=IY&vE?Ze4b6$
zfC#Fc(kK7zL!e+2_U<!?DApJzrW`+cVV0$8hBcCxMXzC&(IeclFZYd&*6Yu+T)&A(
z_qvE-$5<H<(rk6e*0UK&lJ`%n2vMY{3PEAxux0mEgPf>FEU02%<1C{q++~wM<^sV7
z3WXfeL`3Y`R%CW5<Jj{VakTnF8$ymtZ`@nps<DVP3tdaQG-aUdxc2IVGpD8PzL!}Q
zT+YzZ8bg)_uH8Pu+iu&{_kHIAAwXpE`>d?;ZeI%_SCH#rVR-yHhDLUfxwOlJc4q(=
zA3Am@LiH>#PEWh>(#FLQLSSGpV#oFYzW<D%K~YhR$#LL9x<st9I)V~#nc{Q^BL(s)
zL4IR#XbZ*Sd8$h#rlvO%MV_Es5E^TYi`9ro&~P?V<hYgSsyuPi@5F167*D;niH%zZ
zdG^FPjy-=KW0lOo=txA8KyVS_E1mxMs>0!c5D`>R6;utX!uc1!$HL4he*E+eEH0KQ
zBpL1^;oBo(5U~cY$0O13MHk$iy^Z0Ok3RHP1ga2O@aZ7))B70N`V2`SMKBCkVy?eB
zAt`tU$|+lhTSO5T90@=hm%>0vh!e$Fn4CCEWQBUu@b8ab!<p0LBuR>5y3N)Otp*WY
zaQVuL1S4OJ28zRvoT;8U6q#gCP!|Am@h5f+#%9dVypBeF92-xw*j!@6K+MTk6`u*)
zcaE_27E8Y0Y6=Du!HE|FPdx=qty67QiL7vTDyCK)WPAg71+xY_7XW9~U?nnMvzHoK
z>yhYlKRR5$WBXknNuuJ{gNg?gS#fNxg~p9ZajhY$OJ%026HJ`Tkw_FGrkkUr%@*R<
z9u}xo3a3gG77EOzvn(`i-Y+$d4VBPNU(4ODbp=CJ5O2hofPUmh6JM)G2RINtar!Hd
z-LdoipDNnY11;BZ#u%e$H>>obaZs#HP>FF^A~9s9fsX=_<Up%nVuGa1&zx#cX;!Cz
zXOrwCDwhakSOqKKRPa*5NrK`K$$407mZ4}+)nH8=w_NR0-#zunV+S}8MNjaAJIFzM
z^wiN$ylv+}A`?FlnHW_KZEZ<M_bLV@CioVG)&!$rDIfa#j1g*x8Ulf0wm@1faJFbs
zr`?Y7ayo7!l*lq#J;TOynqp|+G>=`?K*7~1HKv)DGHE;lCP90;BJDYl0>maUs%l(l
ze(JlY9{I#U4%(v}bv?E{WN1IYebwOjrwg{QKeQj1n5s?DNNXgTQgU-7=@erYt|^sp
z8ZgN6@u2~YW1ic&9k+dq@k&fB<i|&Bh0Nz{l`TwEGosVe>^pS|Nj+jZkNxIw%Zl=H
zqrsfUgyJ}J6!E5n2P#p4%>(%f7F3@L>OTI^@y|Tkkpub=%Hhzq;G_56^e5l;_`6a4
zU<l#nxHYw{)S8r{U&3fUTXj;vNsLEXe%4(eI6|?)iF*#RdCLIT7i-*>)JW4NFQ0ep
z+7yu_MUJ;N@M0@rYO>0n&wd`0E`ThjR+T*Zy<}+CAg-NYOcGjlkXp1sCE9*Q(5F4&
o$h1s;`J2ytv6frxaF?C`1)tN6CyeZbga7~l07*qoM6N<$g5+bIV*mgE

delta 2773
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
bzyRRCz`){fQYigi00000NkvXXu0mjf+KpRA

diff --git a/games/buckshot/src/layout.h b/games/buckshot/src/layout.h
new file mode 100644
index 0000000..ca9f1ce
--- /dev/null
+++ b/games/buckshot/src/layout.h
@@ -0,0 +1,18 @@
+/* Généré par tools/conformite/chevrotine_art.py : les endroits des décors de Chevrotine. */
+#ifndef BR_LAYOUT_H
+#define BR_LAYOUT_H
+#include <stdint.h>
+/* la porte de la roulotte (x, y, w, h) */
+static const int16_t DOOR[4] = {172, 50, 80, 132};
+/* la machine à poinçonner : son écran, le nom sur le contrat, ses touches (A..Z, valider, effacer) */
+#define WAIVER_SCREEN_X 202
+#define WAIVER_SCREEN_Y 32
+#define WAIVER_PAPER_X 34
+#define WAIVER_PAPER_Y 170
+static const int16_t KEY_XY[28][2] = {
+    {210, 64}, {230, 64}, {250, 64}, {270, 64}, {290, 64}, {210, 86}, {230, 86}, {250, 86}, {270, 86}, {290, 86}, {210, 108}, {230, 108}, {250, 108}, {270, 108}, {290, 108}, {210, 130}, {230, 130}, {250, 130}, {270, 130}, {290, 130}, {210, 152}, {230, 152}, {250, 152}, {270, 152}, {290, 152}, {210, 174}, {250, 196}, {290, 196}};
+/* la machine du quitte ou double : son écran, ses deux boutons */
+#define DON_X 160
+#define DON_Y 171
+static const int16_t DON_BTN[2][4] = {{58, 14, 104, 46}, {168, 14, 104, 46}};
+#endif
diff --git a/games/buckshot/src/main.c b/games/buckshot/src/main.c
index f51b21a..155ca39 100644
--- a/games/buckshot/src/main.c
+++ b/games/buckshot/src/main.c
@@ -1,5 +1,6 @@
-/* Buckshot for the NumWorks calculator, part of NumPlay.
- * Inspired by Buckshot Roulette by Mike Klubnika. Made by Mason Chen. */
+/* Chevrotine for the NumWorks calculator, part of NumPlay (games/buckshot).
+ * Made by Mason Chen; redrawn and rewritten by Calcade on 19 October 2026: a shotgun
+ * duel against an automaton at a night fair, with its own pictures, story, rules and fonts. */
 #include <eadk.h>
 #include <stddef.h>
 #include "../../common/epsilon_app.h"
@@ -10,7 +11,7 @@
 #include "story.h"
 
 #ifdef __ELF__ /* app name and API level, for the calculator's installer */
-const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Buckshot";
+const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Chevrotine";
 const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
 #endif
 
@@ -29,7 +30,7 @@ static int in_match;
 
 static const char SAVE_NAME[] = "buckshot.sav";
 #define SAVE_MAGIC 0x42
-#define SAVE_VERSION 2
+#define SAVE_VERSION 3 /* Chevrotine: saves of the first version are not taken back */
 
 typedef struct {
   uint8_t magic, version, has_match, pad;
@@ -197,7 +198,7 @@ void app_pause_menu(void) {
   gfx_present();
 }
 
-/* the title: the Dealer waiting at his table, up close */
+/* the title: the Automaton waiting at his table, up close */
 static int draw_title(void) {
   G.stage = 1, G.mode = MODE_STORY, G.sawed = G.dcuffed = 0;
   for (int g = 0; g < 8; g++) G.items[1][g] = IT_NONE;
@@ -212,11 +213,11 @@ static int draw_title(void) {
 
 static void credits(void) {
   static const char *const lines =
-      T("INSPIRED BY BUCKSHOT ROULETTE\nBY MIKE KLUBNIKA.\nNOT AFFILIATED WITH MIKE KLUBNIKA\nOR CRITICAL REFLEX.\n\nEVERY PICTURE IS RENDERED FROM THE\nGAME'S OWN SCENES, MODELS AND TEXTURES\nBY MIKE KLUBNIKA, THROUGH THE OPEN\nBUCKSHOT ROULETTE PROJECT (1503DEV).\nFONTS: FAKE RECEIPT BY RAY LARABIE,\nDOT MATRIX BY DIONAEA.\n\nMADE BY MASON CHEN AS PART OF NUMPLAY.");
+      T("CHEVROTINE: A SHOTGUN DUEL\nAGAINST THE AUTOMATON OF THE FAIR.\n\nORIGINAL GAME BY MASON CHEN.\nPICTURES, STORY AND RULES\nBY CALCADE, DRAWN BY A SCRIPT.\nFONTS: NUNITO AND ARCHIVO\n(SIL OPEN FONT LICENSE 1.1).\n\nA DUEL GAME IN THE SPIRIT OF\nSHOTGUN ROULETTE GAMES.");
   gfx_clear(C_BLACK);
   gfx_text_c(&font_big, T("CREDITS"), 160, 14, C_WHITE);
   gfx_text_c(&font_small, lines, 160, 38, C_WHITE);
-  char best[NP_TEXT_EXTRA ? 80 : 40] = T("BEST DOUBLE OR NOTHING: ");
+  char best[NP_TEXT_EXTRA ? 80 : 40] = T("BEST DOUBLE OR QUIT: ");
   int n = 0;
   while (best[n]) n++;
   story_money(best + n, P.best);
@@ -264,8 +265,8 @@ static void play(int resume) {
   } else {
     G.phase = PH_RETRY;
   }
-  /* a new run starts in the bathroom: from the menu, after "retry" in
-   * heaven, and after dying in Double or Nothing */
+  /* a new run starts in the caravan: from the menu, after "retry" when
+   * the show is over, and after losing in Double or Quit */
   while (G.phase == PH_RETRY) {
     int mode = story_intro();
     if (mode < 0) break;
@@ -282,6 +283,17 @@ int main(void) {
   np_app_begin();
   if (np_save_jump(leave)) return quit();
   gfx_init();
+#ifdef BR_TEST_SCREENS
+  { /* development: the screens around the table, one after the other */
+    G.name[0] = 'A', G.name[1] = 'B', G.name[2] = 'C';
+    G.mode = MODE_STORY, G.shots = 7, G.ejected = 12, G.cigs = 2, G.beer_ml = 60, G.deaths = 1;
+    story_ending();
+    G.mode = MODE_DON, G.score_before = 0, G.score = 41250, G.ended = 0;
+    story_double_or_nothing();
+    G.mode = MODE_STORY;
+    story_death();
+  }
+#endif
 #ifdef BR_TEST_DEATH
   G.mode = MODE_STORY;
   story_death();
diff --git a/games/buckshot/src/pixcode.c b/games/buckshot/src/pixcode.c
index c509e2c..0bf663e 100644
--- a/games/buckshot/src/pixcode.c
+++ b/games/buckshot/src/pixcode.c
@@ -1,4 +1,4 @@
-/* Buckshot's picture decoder (tools/pixcode.py encodes).
+/* Chevrotine's picture decoder (tools/pixcode.py encodes).
  *
  * A binary range coder with adaptive probabilities: each pixel is the same
  * as its left neighbour, or else the same as the one above, or else a
diff --git a/games/buckshot/src/scene.c b/games/buckshot/src/scene.c
index 98d7a3b..1bb3b1f 100644
--- a/games/buckshot/src/scene.c
+++ b/games/buckshot/src/scene.c
@@ -8,7 +8,7 @@ void (*redraw)(void);
 static int item_img(int side, int slot, int it) {
   return IMG_IT0P0 + it * 16 + side * 8 + slot;
 }
-/* the Dealer's items in his view */
+/* the Automaton's items in his view */
 static int ditem_img(int slot, int it) { return IMG_DI00 + it * 8 + slot; }
 
 void table_reset(void) {
@@ -103,10 +103,10 @@ static void slot_box(int side, int g, int *x, int *y, int *w, int *h) {
   *x = m->x - 2, *y = m->y - 2, *w = m->w + 4, *h = m->h + 4;
 }
 
-/* The charges at a glance, top right: a small copy of the display (the
- * Dealer's bolts on the left, yours on the right), red once a wire is cut. */
+/* The flames at a glance, top right: a small copy of the candle board (the
+ * Automaton's flames on the left, yours on the right), blue once a candle is fragile. */
 static void draw_bolt(int x, int y, uint8_t c) {
-  static const uint8_t B[10] = {0x07, 0x0E, 0x1C, 0x3F, 0x7E, 0x1C, 0x38, 0x70, 0x60, 0x40}; /* 7x10, bit 6 = left */
+  static const uint8_t B[10] = {0x08, 0x08, 0x1C, 0x1C, 0x3E, 0x3E, 0x7F, 0x7F, 0x3E, 0x1C}; /* a flame, 7x10, bit 6 = left */
   for (int j = 0; j < 10; j++)
     for (int i = 0; i < 7; i++)
       if (B[j] >> (6 - i) & 1) gfx_fill(x + i, y + j, 1, 1, c);
@@ -119,7 +119,7 @@ static void draw_charges_hud(void) {
   gfx_fill(x, y, w, 14, C_BLACK);
   gfx_fill(x + half, y + 1, 1, 12, C_DOT);
   for (int s = 0; s < 2; s++) {
-    uint8_t c = G.wire[s] ? C_RED : C_DOT;
+    uint8_t c = G.wire[s] ? C_BLUE : C_YELLOW;
     int hp = G.hp[s] > 6 ? 6 : G.hp[s];
     for (int i = 0; i < hp; i++) {
       int bx = s ? x + 3 + i * 8 : x + w - 10 - i * 8; /* as on the display: his from the left, yours from the right */
@@ -128,14 +128,12 @@ static void draw_charges_hud(void) {
   }
 }
 
-/* the table's charge display: both sides' bolts, lit */
+/* the little board on the table: both sides' flames */
 static void draw_charges(void) {
   if (T.no_charges || !G.maxhp) return;
   gfx_sprite(IMG_C_FRAME, 0, 0);
-  for (int s = 0; s < 2; s++) {
-    if (G.wire[s] == 1) continue;
+  for (int s = 0; s < 2; s++)
     for (int i = 0; i < G.hp[s] && i < 6; i++) gfx_sprite(IMG_C_SYM0 + (s ? 0 : 6) + i, 0, 0);
-  }
 }
 
 static void draw_dealer_table(void) {
@@ -170,7 +168,7 @@ static void draw_table_still(void) {
   draw_charges();
 }
 
-/* what lies on it, the Dealer behind */
+/* what lies on it, the Automaton behind */
 static void draw_table(void) {
   draw_dealer_table();
   for (int side = 1; side >= 0; side--)
@@ -195,13 +193,17 @@ static void draw_dealer_still(void) {
   if (T.gun_on_table) gfx_sprite(G.sawed ? IMG_D_GUNSAW : IMG_D_GUN, 0, 0);
 }
 
+/* the Automaton up close: at rest (head and hands), or a whole pose drawn instead */
 static void draw_dealer_view(void) {
   if (T.d.alone >= 0) {
     gfx_sprite(T.d.alone, 0, 0);
   } else if (!T.d.gone) {
+    if (T.d.pose >= 0) {
+      gfx_sprite_dim(T.d.pose, 0, T.d.dy, T.d.dim);
+      return;
+    }
     gfx_sprite_dim(T.d.head, 0, T.d.dy, T.d.dim);
     gfx_sprite_dim(T.d.hands, 0, 0, T.d.dim);
-    gfx_sprite_dim(T.d.pose, 0, 0, T.d.dim);
   }
 }
 
@@ -217,8 +219,7 @@ void table_draw(void) {
   gfx_sprite(T.pose, 0, T.pose_dy);
   gfx_sprite(T.pose2, 0, 0);
   if (T.lbl) {
-    /* the words on the table: "DEALER" across it, and "YOU" at your edge,
-     * below the picture, written the same way */
+    /* the targets: his mark on the table, and "YOU" at your edge */
     gfx_sprite_dim(IMG_P_LBL_DEALER, 0, 0, T.lbl == 1 ? 0 : 2);
     gfx_text_shadow(&font_big, T("YOU"), 160, 224, T.lbl == 2 ? C_WHITE : C_GREY);
   }
@@ -250,7 +251,7 @@ void table_show(void) {
   gfx_present();
 }
 
-/* The Dealer breathes while he waits: a key, or -1 after each step. */
+/* The Automaton ticks while he waits: a key, or -1 after each step. */
 int idle_key(void) {
   static int k;
   int e = key_wait(380);
@@ -261,7 +262,7 @@ int idle_key(void) {
     if (T.d.head < IMG_T_HEAD0 || T.d.head > IMG_T_HEAD3) return -1;
     T.d.head = IMG_T_HEAD0 + k;
   } else {
-    if (T.d.head != IMG_D_HEAD || T.d.pose >= 0) return -1;
+    if (T.d.head != IMG_D_HEAD) return -1;
     static const int8_t dy[4] = {0, 1, 1, 0};
     T.d.dy = dy[k];
   }
@@ -274,7 +275,7 @@ int idle_key(void) {
 void say_on(const char *s) {
   int n = 0;
   while (s[n]) n++;
-  /* the original types 50 characters a second: only the box is redrawn */
+  /* 50 characters a second: only the box is redrawn */
   T.say = s;
   T.say_len = 0;
   table_draw();
@@ -310,30 +311,26 @@ void say(const char *s, int ms) {
   say_off();
 }
 
-/* ------------------------------------------------------------ charge display */
+/* ------------------------------------------------------------- candle board */
 
 static void draw_name(void) {
-  /* the player's name on the right of the display, in its dot-matrix font */
+  /* the player's name on the right of the board, in its dot font */
   int w = gfx_text_w(&font_dot, G.name);
   gfx_text(&font_dot, G.name, 283 - w, 90, C_DOT);
 }
 
+/* one side's candles: a fragile one (last round, one flame) burns blue */
 static void draw_side(int side, int hide_last) {
   int hp = G.hp[side];
-  if (G.wire[side]) {
-    gfx_sprite(side ? IMG_H_ERR_D : IMG_H_ERR_P, 0, 0);
-    return;
-  }
   for (int i = 1; i <= hp && i <= 6; i++) {
     if (hide_last && i == hp) continue;
-    int skull = G.mode == MODE_STORY && G.stage == 2 && i <= 2;
-    int img = skull ? IMG_H_SKULL0 + (side ? 0 : 2) + (i - 1) : IMG_H_SYM0 + (side ? 0 : 6) + (i - 1);
+    int img = G.wire[side] == 1 ? IMG_H_SKULL0 + (side ? 0 : 2) + (i - 1) : IMG_H_SYM0 + (side ? 0 : 6) + (i - 1);
     gfx_sprite(img, 0, 0);
   }
 }
 
-/* the display's plate alone, and with its frame and your name (both kept
- * in the background cache while the display is on screen) */
+/* the board alone, and with its frame and your name (both kept
+ * in the background cache while the board is on screen) */
 static void health_plate(void) {
   if (!gfx_cached(0x48504C31u)) {
     gfx_plate(IMG_PL_HEALTH);
@@ -355,7 +352,7 @@ static void health_draw(int blink_side, int phase) {
 }
 
 void health_view(int blink_side, int ms) {
-  /* the last charge of someone at 1 flickers, like the original */
+  /* the last flame of someone at 1 flickers */
   int t = 0;
   while (t < ms) {
     int ph = (t / 150) & 1;
@@ -420,7 +417,7 @@ void health_wins(void) {
 }
 
 void wire_cut(int side) {
-  /* the display of that side breaks: its defibrillator is gone */
+  /* that side's last candle turns blue: smoke, then the blue flame */
   for (int k = 0; k < 6; k++) {
     health_draw(-1, 0);
     if (k & 1) gfx_sprite(side ? IMG_H_ERR_D : IMG_H_ERR_P, 0, 0);
diff --git a/games/buckshot/src/scene.h b/games/buckshot/src/scene.h
index c611c61..20dbb3f 100644
--- a/games/buckshot/src/scene.h
+++ b/games/buckshot/src/scene.h
@@ -1,7 +1,7 @@
 /* What is on screen: the two views of the table composed from the match state
- * (the table, and the Dealer up close), the other views (charge display,
- * shells, cutscenes), the original's dialogue box and item descriptions, and
- * the animations of every action. */
+ * (the table, and the Automaton up close), the other views (candle board,
+ * shells, story), the dialogue box and item descriptions, and the animations
+ * of every action. */
 #ifndef BR_SCENE_H
 #define BR_SCENE_H
 #include "gfx.h"
@@ -9,12 +9,12 @@
 
 enum { V_TABLE, V_DEALER };
 
-/* How the Dealer looks right now */
+/* How the Automaton looks right now */
 typedef struct {
-  int16_t head;    /* table view: IMG_T_HEAD0..3; Dealer view: IMG_D_HEAD; -1 none */
-  int16_t hands;   /* table view: IMG_T_HANDS or IMG_T_CUFFED; Dealer view: IMG_D_HANDS; -1 none */
-  int16_t pose;    /* Dealer view: a pose drawn over him at rest (items, shotgun), -1 none */
-  int16_t alone;   /* Dealer view: a picture of him drawn instead (flying back), -1 none */
+  int16_t head;    /* table view: IMG_T_HEAD0..3; Automaton view: IMG_D_HEAD; -1 none */
+  int16_t hands;   /* table view: IMG_T_HANDS or IMG_T_CUFFED; Automaton view: IMG_D_HANDS; -1 none */
+  int16_t pose;    /* Automaton view: the whole of him in a pose (items, shotgun), -1 none */
+  int16_t alone;   /* Automaton view: a picture of him drawn instead (flying back), -1 none */
   int8_t dy;       /* breathing */
   uint8_t gone;    /* not at the table */
   uint8_t dim;     /* 0..3 darker (coming back from the dark) */
@@ -29,23 +29,23 @@ typedef struct {
   uint8_t gun_on_table;
   uint8_t box;        /* item box open */
   int8_t held;        /* item taken from the box, shown in the slot under the cursor */
-  int16_t cursor;     /* 0..7 player slot, 8 shotgun, 16+i Dealer slot, -1 none */
+  int16_t cursor;     /* 0..7 player slot, 8 shotgun, 16+i Automaton slot, -1 none */
   const char *title;  /* item name at the bottom */
   const char *desc;
   const char *say;    /* dialogue box */
   int say_len;        /* characters shown (typewriter) */
   const char *hint;   /* small control prompt */
-  uint8_t lbl;        /* shotgun targets: 0 off, 1 Dealer chosen, 2 you chosen */
-  uint8_t rush;       /* adrenaline: the picture is brighter */
-  uint8_t no_charges; /* hide the charges on the table's display */
+  uint8_t lbl;        /* shotgun targets: 0 off, 1 Automaton chosen, 2 you chosen */
+  uint8_t rush;       /* thief's glove: the picture is brighter */
+  uint8_t no_charges; /* hide the flames on the table's little board */
 } table_t;
 
 /* what an action did, for its animation */
 typedef struct {
   int from;           /* where the item lay: side*8+slot, or -1 */
   int live;           /* the shell in the chamber (before the action) */
-  int good, dead;     /* expired medicine */
-  const char *text;   /* burner phone */
+  int good, dead;     /* odd elixir */
+  const char *text;   /* crystal ball */
 } act_t;
 
 extern table_t T;
@@ -58,15 +58,15 @@ void ui_dialogue(const char *s, int len);
 void ui_hint(const char *s);
 void target_pos(int t, int *x, int *y); /* screen centre of a target in the table view */
 
-void view_table(void);        /* the table view, the Dealer at rest */
-void view_dealer(void);       /* the Dealer up close, at rest */
-int idle_key(void);           /* a key, or -1 after a step of the Dealer's breathing */
+void view_table(void);        /* the table view, the Automaton at rest */
+void view_dealer(void);       /* the Automaton up close, at rest */
+int idle_key(void);           /* a key, or -1 after a tick of the Automaton */
 
 void say(const char *s, int ms);      /* dialogue, typed then held (OK cuts it short) */
 void say_on(const char *s);           /* ... and left on screen */
 void say_off(void);
 
-void health_view(int blink_side, int ms); /* the charge display; blink_side -1 none */
+void health_view(int blink_side, int ms); /* the candle board; blink_side -1 none */
 void health_bootup(void);
 void round_indicator(void);
 void health_wins(void);
@@ -83,7 +83,6 @@ void anim_dealer_shot(int self, int live, int dmg, int ended);
 void anim_player_cuffed(int broke);
 void anim_dealer_cuffed(int broke);
 void anim_wire_cut(int side, int say_it);
-void anim_god_waiver(void);
 void anim_dealer_load(int n, int told, int fast);
 void anim_dealer_rack(void);
 void anim_dealer_return(void);
diff --git a/games/buckshot/src/story.c b/games/buckshot/src/story.c
index 15db6b2..e8eb2fe 100644
--- a/games/buckshot/src/story.c
+++ b/games/buckshot/src/story.c
@@ -1,6 +1,10 @@
+/* Chevrotine's story (Calcade, 19 octobre 2026): a caravan at the fair, the
+ * alley to the Automaton's tent, the contract, the winding key, the end of
+ * the show, the chest of coins, and Double or Quit's offer. */
 #include "story.h"
 #include <eadk.h>
 #include "game.h"
+#include "layout.h"
 #include "scene.h"
 
 char *story_money(char *out, uint64_t v) {
@@ -48,9 +52,7 @@ static void kick_door(void) {
   fade_to(256, 0, 500);
 }
 
-/* -------------------------------------------------------------- bathroom */
-
-static const int16_t DOOR[4] = {172, 70, 76, 124};
+/* --------------------------------------------------------------- caravan */
 
 static void bath_draw(int sel, int pills) {
   gfx_plate(IMG_PL_BATH);
@@ -67,8 +69,8 @@ static int pills_choice(void) {
   int yes = 1;
   for (;;) {
     bath_draw(1, 1);
-    gfx_fill(96, 176, 128, 50, C_BLACK);
-    gfx_text_c(&font_small, T("CONSUME PILLS?"), 160, 182, C_WHITE);
+    gfx_fill(86, 176, 148, 50, C_BLACK);
+    gfx_text_c(&font_small, T("PLAY THE GOLD TOKEN?"), 160, 182, C_WHITE);
     gfx_text(&font_big, T("YES"), 112, 202, yes ? C_WHITE : C_GREY);
     gfx_text(&font_big, T("NO"), 184, 202, yes ? C_GREY : C_WHITE);
     gfx_present();
@@ -111,7 +113,7 @@ int story_intro(void) {
 
 static void hall_draw(void) {
   gfx_plate(IMG_PL_HALL);
-  gfx_text(&font_small, T("OK: OPEN THE DOOR"), 4, 3, C_GREY);
+  gfx_text(&font_small, T("OK: ENTER THE TENT"), 4, 3, C_GREY);
 }
 
 static void hallway(void) {
@@ -123,15 +125,9 @@ static void hallway(void) {
   kick_door();
 }
 
-/* --------------------------------------------------------------- waiver */
+/* ------------------------------------------------------------- contract */
 
-static const int16_t KEY_XY[28][2] = {
-    {204, 53}, {218, 53}, {205, 66}, {221, 66}, {236, 67}, {206, 79}, {221, 79}, {208, 94}, {224, 94},
-    {240, 94}, {256, 95}, {209, 109}, {225, 108}, {241, 108}, {259, 109}, {211, 125}, {229, 126}, {245, 126},
-    {262, 125}, {212, 142}, {229, 142}, {246, 142}, {265, 141}, {214, 159}, {232, 159}, {251, 159},
-    {247, 78}, /* enter */
-    {240, 53}, /* backspace */
-};
+/* KEY_XY (layout.h): the punching machine's keys, A..Z, then sign and erase */
 
 /* calculator keys for A..Z, as printed on the NumWorks keyboard */
 static const uint8_t ALPHA_KEYS[26] = {18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
@@ -147,17 +143,18 @@ static void waiver_draw(const char *name, int cur, int punched) {
   gfx_plate(IMG_PL_WAIVER);
   /* the machine's little screen */
   if (!punched) {
-    gfx_text(&font_small, name, 199, 32, C_DOT);
+    gfx_text(&font_small, name, WAIVER_SCREEN_X, WAIVER_SCREEN_Y, C_DOT);
     int n = 0;
     while (name[n]) n++;
-    if (n < 6 && (eadk_timing_millis() / 400) & 1) gfx_fill(199 + gfx_text_w(&font_small, name), 41, 6, 1, C_DOT);
+    if (n < 6 && (eadk_timing_millis() / 400) & 1)
+      gfx_fill(WAIVER_SCREEN_X + gfx_text_w(&font_small, name), WAIVER_SCREEN_Y + font_small.h, 6, 1, C_DOT);
   }
   /* the name, punched on the paper */
-  gfx_text(&font_big, punched ? name : "", 110, 172, C_BLACK);
+  gfx_text(&font_big, punched ? name : "", WAIVER_PAPER_X, WAIVER_PAPER_Y, C_BLACK);
   if (cur >= 0) {
     int x, y;
     key_pos(cur, &x, &y);
-    gfx_brackets(x - 9, y - 9, 18, 18, C_WHITE);
+    gfx_brackets(x - 10, y - 10, 20, 20, C_WHITE);
   }
 }
 
@@ -181,11 +178,6 @@ static int nav_key(int cur, int k) {
   return best;
 }
 
-static int streq(const char *a, const char *b) {
-  while (*a && *a == *b) a++, b++;
-  return *a == *b;
-}
-
 static void waiver(void) {
   char name[7] = {0};
   int n = 0, cur = 0;
@@ -216,12 +208,12 @@ static void waiver(void) {
       cur = letter;
     } else if (k == KEY_BACKSPACE && n) {
       name[--n] = 0;
-    } else if (k == KEY_EXE && n && !streq(name, "GOD") && !streq(name, "DEALER")) {
+    } else if (k == KEY_EXE && n) {
       break;
     }
   }
   for (int i = 0; i < 7; i++) G.name[i] = name[i], P.last_name[i] = name[i];
-  /* the letters are punched onto the waiver one at a time */
+  /* the letters are punched onto the contract one at a time */
   char part[7] = {0};
   for (int i = 0; i < n; i++) {
     part[i] = name[i];
@@ -238,7 +230,7 @@ static void waiver(void) {
 void story_enter(int mode) {
   (void)mode;
   hallway();
-  anim_dealer_arrives(T("PLEASE SIGN THE WAIVER."));
+  anim_dealer_arrives(T("A NEW PLAYER! SIGN HERE, PLEASE."));
   waiver();
   table_reset();
   view_dealer();
@@ -253,7 +245,7 @@ static void bath_door_draw(void) {
   gfx_text(&font_small, T("OK: OPEN THE DOOR"), 4, 3, C_GREY);
 }
 
-/* the bathroom and the hallway again, the Dealer waiting */
+/* the caravan and the alley again, the Automaton waiting */
 static void back_to_the_table(const char *greeting) {
   show_plate(IMG_PL_BATH, 700);
   pause_ms(500);
@@ -274,10 +266,10 @@ void story_revive(void) {
   pause_ms(1500);
   show_plate(IMG_PL_REVIVE, 1500);
   static char line[NP_TEXT_EXTRA ? 48 : 24];
-  char *o = cat(line, T("GET UP, "));
+  char *o = cat(line, T("UP YOU GET, "));
   o = cat(o, G.name);
   cat(o, T("!"));
-  const char *lines[3] = {T("YOU'RE LUCKY IT LEFT YOU\nWITH A CHARGE!"), line, T("THE NIGHT IS YOUNG.")};
+  const char *lines[3] = {T("TICK ... TOCK ...\nI WOUND YOU BACK UP."), line, T("THE SHOW GOES ON.")};
   redraw = revive_draw;
   for (int i = 0; i < 3; i++) {
     gfx_plate(IMG_PL_REVIVE);
@@ -286,7 +278,7 @@ void story_revive(void) {
     pause_skip(i == 0 ? 3000 : 2400);
   }
   fade_to(256, 0, 800);
-  back_to_the_table(T("WELCOME BACK."));
+  back_to_the_table(T("BACK ALREADY? GOOD."));
 }
 
 void story_retry(void) {
@@ -299,7 +291,7 @@ void story_retry(void) {
 
 int story_death(void) {
   if (G.mode == MODE_DON) {
-    /* no doctor in Double or Nothing: back to the bathroom */
+    /* nobody winds you back up in Double or Quit: back to the caravan */
     gfx_clear(C_BLACK);
     gfx_light(256, 0, 0);
     gfx_present();
@@ -315,7 +307,7 @@ int story_death(void) {
   int retry = 1;
   for (;;) {
     gfx_plate(IMG_PL_HEAVEN);
-    gfx_text_shadow(&font_big, T("YOU ARE DEAD"), 160, 92, C_WHITE);
+    gfx_text_shadow(&font_big, T("THE SHOW IS OVER"), 160, 92, C_WHITE);
     gfx_text_shadow(&font_small, T("RETRY"), 130, 124, retry ? C_WHITE : C_GREY);
     gfx_text_shadow(&font_small, T("EXIT"), 190, 124, retry ? C_GREY : C_WHITE);
     gfx_present();
@@ -329,11 +321,9 @@ int story_death(void) {
   return retry;
 }
 
-/* ------------------------------------------------------ double or nothing */
+/* -------------------------------------------------------- double or quit */
 
-/* the offer machine's green display */
-#define DON_X 158
-#define DON_Y 171
+/* the offer machine's display: DON_X, DON_Y (layout.h) */
 
 static void don_display(const char *s) {
   gfx_plate(IMG_PL_DON);
@@ -344,9 +334,8 @@ static void don_display(const char *s) {
 static int don_yes = 1;
 
 static void don_choice_draw(void) {
-  don_display(T("DOUBLE OR\nNOTHING?"));
-  static const int16_t B[2][4] = {{58, 10, 104, 46}, {168, 10, 104, 46}};
-  const int16_t *b = B[!don_yes];
+  don_display(T("DOUBLE\nOR QUIT?"));
+  const int16_t *b = DON_BTN[!don_yes];
   gfx_brackets(b[0], b[1], b[2], b[3], C_WHITE);
   gfx_text_c(&font_small, T("LEFT/RIGHT: CHOOSE   OK: PRESS"), 160, 228, C_GREY);
 }
@@ -365,7 +354,7 @@ int story_double_or_nothing(void) {
     if (pause_skip(60)) t = 39;
   }
   pause_ms(1200);
-  don_display(T("DOUBLE OR\nNOTHING?"));
+  don_display(T("DOUBLE\nOR QUIT?"));
   gfx_present();
   pause_ms(1500);
   don_yes = 1;
@@ -405,7 +394,7 @@ static void ending_frame(int img) {
 }
 
 void story_ending(void) {
-  /* the lights go out: the Dealer's red eyes in the dark */
+  /* the lights go out: the Automaton's eye in the dark */
   table_reset();
   view_dealer();
   T.d.gone = 1;
@@ -422,7 +411,7 @@ void story_ending(void) {
   gfx_darken(0, 0, GFX_W, GFX_H, 4);
   gfx_present();
   pause_ms(900);
-  /* the lights come back: a briefcase comes down onto the table, and opens */
+  /* the lights come back: a chest comes down onto the table, and opens */
   ending_frame(IMG_E_BRIEF0);
   pause_ms(700);
   for (int k = 0; k < 3; k++) {
@@ -436,7 +425,7 @@ void story_ending(void) {
   pause_ms(600);
   uint64_t cash;
   if (G.mode == MODE_STORY) {
-    int32_t c = 70000 - 220 * G.cigs - G.beer_ml * 3 / 2 - (G.doors > 2 ? 1000 * G.doors : 0);
+    int32_t c = 50000 - 400 * G.cigs - 20 * G.beer_ml - 2500 * G.deaths;
     cash = c < 0 ? 0 : (uint64_t)c;
   } else {
     cash = G.score;
@@ -450,16 +439,16 @@ void story_ending(void) {
   }
   static char text[256];
   char *o = cat(text, "");
-  if (G.mode == MODE_STORY) o = stat(o, T("SHOTS FIRED ........"), G.shots);
-  else o = stat(o, T("ROUNDS BEAT ........"), G.rounds_beat);
-  o = stat(o, T("SHELLS EJECTED ....."), G.ejected);
-  o = stat(o, T("DOORS KICKED ......."), G.doors);
-  o = stat(o, T("CIGARETTES SMOKED .."), G.cigs);
-  o = stat(o, T("ML OF BEER DRANK ..."), G.beer_ml);
+  if (G.mode == MODE_STORY) o = stat(o, T("LIVE SHOTS ........."), G.shots);
+  else o = stat(o, T("ROUNDS WON ........."), G.rounds_beat);
+  o = stat(o, T("SHELLS SPENT ......."), G.ejected);
+  o = stat(o, T("TIMES WOUND UP ....."), G.deaths);
+  o = stat(o, T("CUPS OF TEA ........"), G.cigs);
+  o = stat(o, T("ML OF OIL .........."), G.beer_ml);
   static char title[NP_TEXT_EXTRA ? 64 : 32], total[NP_TEXT_EXTRA ? 64 : 32];
-  cat(cat(cat(title, T("CONGRATULATIONS, ")), G.name), T("!"));
-  cat(story_money(cat(total, T("TOTAL CASH: ")), cash), " $");
-  /* on the road, the cash on the seat */
+  cat(cat(cat(title, T("WELL PLAYED, ")), G.name), T("!"));
+  cat(story_money(cat(total, T("COINS: ")), cash), "");
+  /* dawn over the fair, the chest of coins on the path */
   gfx_plate(IMG_PL_CAR);
   fade_to(0, 256, 2000);
   pause_ms(1000);
@@ -485,7 +474,7 @@ void story_ending(void) {
   gfx_present();
   pause_ms(1200);
   if (G.ended == 2) {
-    gfx_text_shadow(&font_small, T("\"DOUBLE OR NOTHING\" UNLOCKED!"), 160, 212, C_YELLOW);
+    gfx_text_shadow(&font_small, T("\"DOUBLE OR QUIT\" UNLOCKED!"), 160, 212, C_YELLOW);
     gfx_present();
   }
   redraw = 0;
diff --git a/games/buckshot/src/story.h b/games/buckshot/src/story.h
index 1e4877d..ce56f62 100644
--- a/games/buckshot/src/story.h
+++ b/games/buckshot/src/story.h
@@ -1,15 +1,15 @@
-/* Everything around the table: the bathroom, the hallway, the waiver, the
- * revival, the endings and Double or Nothing's offer. */
+/* Everything around the table: the caravan, the alley, the contract, the
+ * winding key, the endings and Double or Quit's offer. */
 #ifndef BR_STORY_H
 #define BR_STORY_H
 #include <stdint.h>
 
-int story_intro(void);          /* the bathroom: door (story) or pills (Double or Nothing); -1 to leave */
-void story_enter(int mode);     /* hallway, the Dealer, the waiver */
+int story_intro(void);          /* the caravan: door (story) or gold token (Double or Quit); -1 to leave */
+void story_enter(int mode);     /* hallway, the Automaton, the waiver */
 void story_revive(void);        /* died in round 1 or 2: the same round again */
-void story_retry(void);         /* RETRY in heaven: back to the final round */
+void story_retry(void);         /* RETRY after the show is over: back to the last round */
 int story_death(void);          /* died for good: 1 to try again */
-int story_double_or_nothing(void);
+int story_double_or_nothing(void); /* Double or Quit */
 void story_ending(void);
 char *story_money(char *out, uint64_t v);
 #endif
diff --git a/games/buckshot/test/autoplay.c b/games/buckshot/test/autoplay.c
index 925c12f..5f94f35 100644
--- a/games/buckshot/test/autoplay.c
+++ b/games/buckshot/test/autoplay.c
@@ -91,7 +91,7 @@ void story_revive(void) { revives++; }
 void story_retry(void) { retries++; }
 int story_death(void) {
   died++;
-  /* "retry" in heaven now and then: the final round again, never round 1 */
+  /* "retry" now and then: the last round again, never round 1 */
   if (G.mode == MODE_STORY && retries < 3 * died / 4) {
     if (G.stage != 2) retry_stage_ok = 0;
     return 1;
@@ -118,7 +118,7 @@ int main(int argc, char **argv) {
     steps = 0;
     if (!setjmp(done)) game_run();
   }
-  printf("%d matches: %d won, %d deaths (%d retried in heaven, final round each time: %s), %d revivals, %d double-or-nothing offers, deepest stage %d\n",
+  printf("%d matches: %d won, %d deaths (%d retried, last round each time: %s), %d revivals, %d double-or-quit offers, deepest stage %d\n",
          n, won, died, retries, retry_stage_ok ? "yes" : "NO", revives, doubled, stage_max);
   return 0;
 }
diff --git a/games/buckshot/tools/font.py b/games/buckshot/tools/font.py
index cfe4104..3dc2689 100644
--- a/games/buckshot/tools/font.py
+++ b/games/buckshot/tools/font.py
@@ -1,14 +1,15 @@
 #!/usr/bin/env python3
-"""Rasterizes Buckshot's fonts into src/font.h (1 bit per pixel).
+"""Rasterizes Chevrotine's fonts into src/font.c (1 bit per pixel).
 
-- "receipt": Fake Receipt by Ray Larabie (Typodermic Fonts), the original's
-  dialogue and menu font, at two sizes.
-- "dot": Dot Matrix (Dionaea), the font of the charge display.
+Calcade, 19 octobre 2026 : les polices de Buckshot Roulette (Fake Receipt, Dot Matrix) sont remplacées
+par des polices libres déjà dans NumPlay (SIL Open Font License 1.1, voir LICENSES/ à la racine) :
 
-The font files come from the original game's project (BR_PROJECT/fonts).
-Usage: BR_PROJECT=dir font.py [preview.png]
+- font_small : Nunito Black (The Nunito Project Authors), les dialogues et les indications ;
+- font_big : Archivo Black (The Archivo Project Authors), les titres et les menus ;
+- font_dot : les lettres de Nunito à 10 pixels, chaque pixel devenu un point (le panneau des bougies).
+
+Usage: font.py [preview.png]
 """
-import os
 import sys
 from pathlib import Path
 
@@ -16,24 +17,28 @@ import numpy as np
 from PIL import Image, ImageDraw, ImageFont
 
 HERE = Path(__file__).resolve().parent
-FONTS = Path(os.environ.get("BR_PROJECT", "")) / "fonts"
+ROOT = HERE.parents[2]
+NUNITO = ROOT / "tools" / ".fonts" / "Nunito.ttf"
+ARCHIVO = ROOT / "tools" / "calcade" / "archivo-black-exp.ttf"
 CHARS = "".join(chr(c) for c in range(32, 96))  # space to underscore: the game writes in capitals
 
-# name, file, pixel size, extra advance
-SPECS = [("font_small", "fake receipt.otf", 10, 0), ("font_big", "fake receipt.otf", 14, 0),
-         ("font_dot", "DOTMATRI.TTF", 23, 1)]
+
+def load(file, size, variation=None):
+    f = ImageFont.truetype(str(file), size)
+    if variation:
+        f.set_variation_by_name(variation)
+    return f
 
 
-def raster(file, size, extra):
-    f = ImageFont.truetype(str(FONTS / file), size)
+def raster(f, extra=0, threshold=110):
     asc, desc = f.getmetrics()
     h = asc + desc
     glyphs = []
     for ch in CHARS:
         adv = int(round(f.getlength(ch))) + extra
-        im = Image.new("L", (adv + 8, h), 0)
+        im = Image.new("L", (adv + 8, h + 4), 0)
         ImageDraw.Draw(im).text((0, 0), ch, font=f, fill=255)
-        a = np.array(im) >= 128
+        a = np.array(im) >= threshold
         cols = np.nonzero(a.any(axis=0))[0]
         w = max(adv, int(cols.max()) + 1 if len(cols) else 0)
         glyphs.append((adv, a[:, :w]))
@@ -42,13 +47,30 @@ def raster(file, size, extra):
     return bot - top, [(adv, a[top:bot]) for adv, a in glyphs]
 
 
+def dotted(h, glyphs, cell=2, dot=1):
+    """each pixel becomes a dot in a cell"""
+    out = []
+    for adv, a in glyphs:
+        b = np.zeros((a.shape[0] * cell, a.shape[1] * cell), bool)
+        for y, x in zip(*np.nonzero(a)):
+            b[y * cell:y * cell + dot, x * cell:x * cell + dot] = True
+        out.append((adv * cell, b))
+    return h * cell, out
+
+
+def fonts():
+    small = raster(load(NUNITO, 10, "Black"), extra=0)
+    big = raster(load(ARCHIVO, 10), extra=0)
+    dot = dotted(*raster(load(NUNITO, 10, "Black"), extra=0, threshold=120))
+    return [("font_small", small), ("font_big", big), ("font_dot", dot)]
+
+
 def main():
-    out = ["/* Generated by tools/font.py: Fake Receipt (Ray Larabie, Typodermic Fonts) and",
-           " * Dot Matrix (Dionaea), 1 bit per pixel. Characters 32 to 95. */",
+    out = ["/* Generated by tools/font.py: Nunito Black and Archivo Black (SIL Open Font License 1.1),",
+           " * 1 bit per pixel. Characters 32 to 95. */",
            "#include <stdint.h>", "#include \"font.h\""]
     prev = []
-    for name, file, size, extra in SPECS:
-        h, glyphs = raster(file, size, extra)
+    for name, (h, glyphs) in fonts():
         bits, offs, widths = [], [], []
         for adv, a in glyphs:
             offs.append(len(bits))
@@ -67,18 +89,20 @@ def main():
         prev.append((h, glyphs))
     (HERE.parent / "src" / "font.c").write_text("\n".join(out) + "\n")
     if len(sys.argv) > 1:
-        W = 320
-        im = Image.new("L", (W, 120), 0)
+        Wd = 320
+        im = Image.new("L", (Wd, 160), 0)
         y = 2
         for h, glyphs in prev:
             x = 2
             for adv, a in glyphs:
-                if x + adv > W:
+                if x + adv > Wd:
                     x, y = 2, y + h + 2
                 im.paste(Image.fromarray((a * 255).astype(np.uint8)), (x, y))
                 x += adv
             y += h + 4
-        im.resize((W * 3, 360), Image.NEAREST).save(sys.argv[1])
+        im.resize((Wd * 3, 480), Image.NEAREST).save(sys.argv[1])
+        for name, (h, _) in zip(("small", "big", "dot"), prev):
+            print(name, "height", h)
 
 
 if __name__ == "__main__":
diff --git a/games/buckshot/tools/pack.py b/games/buckshot/tools/pack.py
index 02a6cdc..e66a32f 100644
--- a/games/buckshot/tools/pack.py
+++ b/games/buckshot/tools/pack.py
@@ -1,9 +1,12 @@
 #!/usr/bin/env python3
 """Packs assets/ (plates, sprites, art.json) into src/assets.c and src/assets.h.
 
-Every picture is stored as indices into one shared palette (the original's
-post-processing leaves few colors), index 0 being transparent, coded with
-tools/pixcode.py, which src/pixcode.c decodes straight into the frame buffer.
+Calcade, 19 octobre 2026 : assets/ vient de tools/conformite/chevrotine_art.py (à la racine de NumPlay),
+qui dessine toutes les images de Chevrotine.
+
+Every picture is stored as indices into one shared palette (the drawings use
+few colors), index 0 being transparent, coded with tools/pixcode.py, which
+src/pixcode.c decodes straight into the frame buffer.
 
 Usage: pack.py
 """
@@ -61,7 +64,8 @@ def main():
         pics.append(("PL_" + ident(name), 0, 0, a))
         if a.shape[1] == 160:
             half.add("PL_" + ident(name))
-    pics.append(("LOGO", LOGO_POS[0], LOGO_POS[1], np.array(Image.open(A / "logo.png").convert("RGBA"))))
+    lx, ly = art.get("logo", LOGO_POS)
+    pics.append(("LOGO", lx, ly, np.array(Image.open(A / "logo.png").convert("RGBA"))))
     alias = []
     for name, pos in art["sprites"].items():
         if pos is None or name in SKIP:
diff --git a/games/chess/README.md b/games/chess/README.md
index 3fe138c..7cd0d69 100644
--- a/games/chess/README.md
+++ b/games/chess/README.md
@@ -1,7 +1,10 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Chess / Échecs**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de le thème de Chess.com : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Chess / Échecs">
+
 > **NumChess is part of [NumPlay](../../README.md)**, every NumWorks game in one app. Get it with all the others, or on its own as `NumChess.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest).
 
 <p align="center">
-  <img src="docs/icon.png" width="84" alt="NumChess icon">
 </p>
 
 <h1 align="center">NumChess</h1>
@@ -12,8 +15,6 @@
 </p>
 
 <p align="center">
-  <a href="https://github.com/Mason363/NumPlay/releases/latest"><img src="https://img.shields.io/github/v/release/Mason363/NumPlay?label=release&color=81b64c" alt="Latest release"></a>
-  <img src="https://img.shields.io/badge/installed%20size-20%20KB-3a3835" alt="Installed size: 20 KB">
 </p>
 
 <p align="center">
@@ -24,7 +25,6 @@
 </p>
 
 <p align="center">
-  <img src="docs/hero.gif" width="640" alt="Choosing a bot and playing the Italian Game against Nova">
 </p>
 
 ## Highlights
@@ -36,8 +36,6 @@
 
 <table>
   <tr>
-    <td align="center"><img src="docs/menu.png" width="390" alt="Main menu"><br><sub>Main menu</sub></td>
-    <td align="center"><img src="docs/italian.png" width="390" alt="A game in progress"><br><sub>A game against Nova</sub></td>
   </tr>
 </table>
 
@@ -46,24 +44,16 @@
 Pick an opponent and a color (White, random or Black), then play. Each bot beats the one below it in bot-vs-bot matches. The Elo numbers are rough estimates.
 
 <p align="center">
-  <img src="docs/roster.png" width="640" alt="All 12 bots with their Elo ratings">
 </p>
 
 <table>
   <tr>
-    <td align="center"><img src="docs/bots.gif" width="390" alt="Scrolling through the bots"><br><sub>Choose a bot and your color</sub></td>
-    <td align="center"><img src="docs/bots.png" width="390" alt="Atlas selected"><br><sub>Atlas, the strongest bot, thinks up to 2.5 s per move</sub></td>
   </tr>
   <tr>
-    <td align="center"><img src="docs/select.png" width="390" alt="Legal moves shown as dots and capture rings"><br><sub>Legal moves as dots, captures as rings</sub></td>
-    <td align="center"><img src="docs/check.png" width="390" alt="King in check glowing red"><br><sub>Check glow, last-move highlight, captured pieces with material count</sub></td>
   </tr>
   <tr>
-    <td align="center"><img src="docs/promotion.png" width="390" alt="Promotion picker"><br><sub>Promotion picker</sub></td>
-    <td align="center"><img src="docs/gameover.png" width="390" alt="Game over card"><br><sub>Result card with rematch</sub></td>
   </tr>
   <tr>
-    <td align="center"><img src="docs/pause.png" width="390" alt="Pause menu"><br><sub>Back opens the pause menu: undo, flip, resign</sub></td>
     <td></td>
   </tr>
 </table>
@@ -73,7 +63,6 @@ Pick an opponent and a color (White, random or Black), then play. Each bot beats
 Every puzzle is generated on the calculator. It plays a quick game between a careful side and a blunder-prone side, then stops at a position with a forced mate or a single winning move. Puzzles never run out, and the app stores none of them.
 
 <p align="center">
-  <img src="docs/puzzle.gif" width="640" alt="Solving a mate in 2 puzzle">
 </p>
 
 * **Modes:** Mix, Mate in 1, Mate in 2, Mate in 3 and Best move.
@@ -85,20 +74,12 @@ Every puzzle is generated on the calculator. It plays a quick game between a car
 
 <table>
   <tr>
-    <td align="center"><img src="docs/puzzle-menu.png" width="390" alt="Puzzle modes"><br><sub>Puzzle modes</sub></td>
-    <td align="center"><img src="docs/puzzle-mate1.png" width="390" alt="Mate in 1"><br><sub>Mate in 1: the pill shows who is to move</sub></td>
   </tr>
   <tr>
-    <td align="center"><img src="docs/puzzle-mate3.png" width="390" alt="Mate in 3 as Black"><br><sub>Mate in 3 as Black: the board flips for you</sub></td>
-    <td align="center"><img src="docs/puzzle-best.png" width="390" alt="Best move puzzle"><br><sub>Best move: find the knight fork</sub></td>
   </tr>
   <tr>
-    <td align="center"><img src="docs/puzzle-hint.png" width="390" alt="Hint highlight"><br><sub>Hint</sub></td>
-    <td align="center"><img src="docs/puzzle-wrong.png" width="390" alt="Wrong move"><br><sub>Wrong move: it's taken back and your rating drops</sub></td>
   </tr>
   <tr>
-    <td align="center"><img src="docs/puzzle-solved.png" width="390" alt="Solved"><br><sub>Solved</sub></td>
-    <td align="center"><img src="docs/puzzle-pause.png" width="390" alt="Puzzle pause menu"><br><sub>Hint, solution, next</sub></td>
   </tr>
 </table>
 
@@ -107,14 +88,10 @@ Every puzzle is generated on the calculator. It plays a quick game between a car
 Play over the board with a chess clock. After every move the board turns to face the next player. If you prefer a fixed board, use Flip in the pause menu.
 
 <p align="center">
-  <img src="docs/clock.gif" width="640" alt="Two players with a 3+2 clock">
 </p>
 
 <table>
   <tr>
-    <td align="center"><img src="docs/time.png" width="260" alt="Time controls"><br><sub>1+0 to 30+0, or no clock</sub></td>
-    <td align="center"><img src="docs/clock.png" width="260" alt="Clocks"><br><sub>The active clock is lit</sub></td>
-    <td align="center"><img src="docs/clock-low.png" width="260" alt="Low time"><br><sub>Under 10 s it turns red and shows tenths</sub></td>
   </tr>
 </table>
 
@@ -141,7 +118,6 @@ If you're building from source, `make run` builds and installs in one step.
 ## Small by design
 
 <p align="center">
-  <img src="docs/pieces.png" width="640" alt="The piece set, zoomed 4x">
 </p>
 
 | | |
diff --git a/games/chess/docs/calcade.png b/games/chess/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3a81348529055d5acf1e33dc464024a142977d5c
GIT binary patch
literal 8328
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
P3=kA#RHUoHCc*y;+_BW#

literal 0
HcmV?d00001

diff --git a/games/chess/src/icon.png b/games/chess/src/icon.png
index b8d7951f54ed2b48ee9431b98116abae961c994a..34aae87084b27607623247b950fc2618e32ec778 100644
GIT binary patch
literal 3971
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

delta 1993
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
bUA_M=l7^<qYBPd800000NkvXXu0mjfu!PlS

diff --git a/games/chess/src/main.c b/games/chess/src/main.c
index 3db1828..ca65ef9 100644
--- a/games/chess/src/main.c
+++ b/games/chess/src/main.c
@@ -15,17 +15,18 @@ const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level")))
 typedef uint16_t C;
 #define RGB(r, g, b) ((C)((((r) & 0xF8) << 8) | (((g) & 0xFC) << 3) | ((b) >> 3)))
 
-#define BG RGB(0x26, 0x25, 0x22)
-#define CARD RGB(0x3A, 0x38, 0x35)
-#define GREEN RGB(0x81, 0xB6, 0x4C)
+/* (Calcade : ses couleurs à lui, pas le thème vert de Chess.com) */
+#define BG RGB(0x1E, 0x22, 0x2E)
+#define CARD RGB(0x30, 0x36, 0x48)
+#define GREEN RGB(0x3B, 0xA9, 0x9C)
 #define RED RGB(0xE0, 0x43, 0x3B)
 #define WHITE 0xFFFF
 #define DIM RGB(0x98, 0x97, 0x95)
-#define INK RGB(0x26, 0x25, 0x22)
-#define SQ_L RGB(0xEB, 0xEC, 0xD0)
-#define SQ_D RGB(0x77, 0x95, 0x56)
-#define HL_L RGB(0xF5, 0xF6, 0x82)
-#define HL_D RGB(0xB9, 0xCA, 0x43)
+#define INK RGB(0x1E, 0x22, 0x2E)
+#define SQ_L RGB(0xE4, 0xE8, 0xF1)
+#define SQ_D RGB(0x7D, 0x8F, 0xB5)
+#define HL_L RGB(0xF7, 0xD9, 0x8B)
+#define HL_D RGB(0xD6, 0xA9, 0x54)
 #define HINT RGB(0x5B, 0x9B, 0xE6)
 
 enum { K_LEFT, K_UP, K_DOWN, K_RIGHT, K_OK, K_BACK, K_UNDO = 17, K_EXE = 52 };
diff --git a/games/connectfour/README.md b/games/connectfour/README.md
index 913e42c..cf5736b 100644
--- a/games/connectfour/README.md
+++ b/games/connectfour/README.md
@@ -1,10 +1,13 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Line Up 4 / Aligne 4**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de Connect Four / Puissance 4 (Hasbro) : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Line Up 4 / Aligne 4">
+
 > **Connect 4 is part of [NumPlay](../../README.md)**, every NumWorks game in one app. Get it with all the others, or on its own as `ConnectFour.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest).
 
 # Connect 4
 
 The classic four-in-a-row game for the NumWorks calculator. Drop red and yellow discs into the blue grid; the first to line up four, across, down or diagonally, wins.
 
-<img src="docs/shot.png" width="320" alt="A game in progress on the blue grid">
 
 - **Against a friend or the computer**, at three levels. Weak makes mistakes, Normal looks a few moves ahead, and Strong is hard to beat: it thinks for up to a second and knows the row-parity rules that decide endgames.
 - **Two or three players.** Three players (red, yellow and green) play on a wider grid, 8 columns instead of 7. Against the computer, you play red against two of them.
diff --git a/games/connectfour/docs/calcade.png b/games/connectfour/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..d542f8bf187539be060328ed38d0b50a34f727f9
GIT binary patch
literal 17891
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
P00000NkvXXu0mjfuS7YL

literal 0
HcmV?d00001

diff --git a/games/connectfour/lang/fr.txt b/games/connectfour/lang/fr.txt
index 158c18c..1fc619d 100644
--- a/games/connectfour/lang/fr.txt
+++ b/games/connectfour/lang/fr.txt
@@ -34,6 +34,6 @@ Normal	Normal
 Strong	Fort
 Light	Clair
 Dark	Sombre
-CONNECT	PUISSANCE
+LINE UP	ALIGNE
 PLAY	JOUER
 Based on Tatone26's version	D'après la version de Tatone26
diff --git a/games/connectfour/lang/zh.txt b/games/connectfour/lang/zh.txt
index fa5b7a9..e646bb9 100644
--- a/games/connectfour/lang/zh.txt
+++ b/games/connectfour/lang/zh.txt
@@ -34,6 +34,6 @@ Normal	普通
 Strong	困难
 Light	浅色
 Dark	深色
-CONNECT	四子棋
+LINE UP	四子棋
 PLAY	开始
 Based on Tatone26's version	改编自 Tatone26 的版本
diff --git a/games/connectfour/src/icon.png b/games/connectfour/src/icon.png
index 35c0e2634fb9fd8f5c076d3baab2378c7353836d..3f87029a956a1caad8f6cdd82999b9981c53a993 100644
GIT binary patch
literal 6149
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
XtI@y0QPR)b00000NkvXXu0mjfNbAo6

literal 6289
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
Hu0mjfC<;v`

diff --git a/games/connectfour/src/main.c b/games/connectfour/src/main.c
index 86dcb33..fbf65ae 100644
--- a/games/connectfour/src/main.c
+++ b/games/connectfour/src/main.c
@@ -1,4 +1,5 @@
-/* Connect 4: drop discs into the blue grid, four in a row wins. Against a
+/* Line Up 4 (modifié par Calcade le 19 octobre 2026 : nom et couleurs à lui ; avant : « Connect 4 »):
+ * drop discs into the grid, four in a row wins. Against a
  * friend or the computer (three levels), with two or three players.
  *
  * Nothing is a bitmap. Each pixel of a changed rectangle is worked out from
@@ -15,7 +16,7 @@
 #include "../../common/np_text.h"
 
 #ifdef __ELF__ /* app name and API level, for the calculator's installer */
-const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Connect 4";
+const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Line Up 4";
 const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
 #endif
 
@@ -28,11 +29,11 @@ typedef uint16_t color;
 
 /* base, shade, light */
 static const color DISC[3][3] = {
-  {RGB(0xE0252B), RGB(0x86101A), RGB(0xFF8672)},
-  {RGB(0xF8CB1C), RGB(0xB27A00), RGB(0xFFF5A8)},
-  {RGB(0x1FAE4F), RGB(0x0A5E2A), RGB(0x8AF0A6)},
+  {RGB(0xFF6B5B), RGB(0x9E2A22), RGB(0xFFB3A6)},  /* (Calcade : corail, */
+  {RGB(0x3DD6C6), RGB(0x13786E), RGB(0xA8F5EC)},  /*  menthe, */
+  {RGB(0xFFC24B), RGB(0xA4730A), RGB(0xFFE7AE)},  /*  ambre) */
 };
-static const color BLUE[3] = {RGB(0x1E5BC6), RGB(0x0B2F7A), RGB(0x78A6FF)};
+static const color BLUE[3] = {RGB(0x6B46C1), RGB(0x3B2275), RGB(0xA98BF0)}; /* (Calcade : une grille violette) */
 /* background top and bottom, text, soft text */
 static const color THEME[2][4] = {
   {RGB(0xF2F6FC), RGB(0xC4D4EA), RGB(0x17264A), RGB(0x5A6C8E)},
@@ -487,18 +488,18 @@ static const char *const OPT_VAL[] = {T("Friend"), T("Computer"), "2", "3", T("W
 static int opt(int i) { return i == 0 ? V.cpu : i == 1 ? V.players : i == 2 ? 4 + V.level : 7 + V.dark; }
 
 static void title_ui(void) {
-  /* CONNECT and a red disc with a 4 */
+  /* LINE UP and a disc with a 4 (Calcade: the game's own name) */
   if (cy0 < 80) {
 #if NP_TEXT_EXTRA /* (another language's name: smaller if it would reach the disc) */
-    const char *nm = T("CONNECT");
+    const char *nm = T("LINE UP");
     int k = tw(nm, 5) > 210 ? 4 : 5, y = 25 + (5 - k) * 7 / 2;
     text(nm, 22, y + 4, k, 3, 0, 12);
     text(nm, 20, y, k, 2, NAVY, 32);
     text(nm, 20, y, k, 0, WHITE, 32);
 #else
-    text("CONNECT", 22, 29, 5, 3, 0, 12);
-    text("CONNECT", 20, 25, 5, 2, NAVY, 32);
-    text("CONNECT", 20, 25, 5, 0, WHITE, 32);
+    text("LINE UP", 22, 29, 5, 3, 0, 12);
+    text("LINE UP", 20, 25, 5, 2, NAVY, 32);
+    text("LINE UP", 20, 25, 5, 0, WHITE, 32);
 #endif
     disc_at(2 * 268, 2 * 42, 62, 0, 0);
     text("4", 256, 26, 5, 2, NAVY, 32);
diff --git a/games/crossyroad/README.md b/games/crossyroad/README.md
index 9fc290e..a40619a 100644
--- a/games/crossyroad/README.md
+++ b/games/crossyroad/README.md
@@ -1,3 +1,7 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Piou Road**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de Crossy Road (Hipster Whale) : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Piou Road">
+
 > **Crossy Road is part of [NumPlay](../../README.md)**, every NumWorks game in one app. Get it with all the others, or on its own as `CrossyRoad.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest).
 
 # CrossyWorks
@@ -5,10 +9,6 @@
 Crossy Road for the NumWorks calculator.
 
 <p align="center">
-  <img src="screenshots/title.png" width="49%" alt="Title screen">
-  <img src="screenshots/river.png" width="49%" alt="Riding a log">
-  <img src="screenshots/train.png" width="49%" alt="Train crossing">
-  <img src="screenshots/gameover.png" width="49%" alt="Game over">
 </p>
 
 Hop as far as you can. Dodge cars, trucks and trains, ride logs and lily pads across rivers, grab coins, and keep moving or the eagle will get you.
diff --git a/games/crossyroad/assets/icon.png b/games/crossyroad/assets/icon.png
index 965d8df18089acd2375bda614694ee54847da0a2..409baf84cee63ccf65b51f554debd1d72609423d 100644
GIT binary patch
delta 3456
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

delta 939
zcmV;c162Hi8^8yUBYy*jNkl<Zc-rlnO=w(Y6o#L3?#=C_nW1r{3Q}>APBTKO6d}t%
zDqS@T#Zm$dv@4NP5Yv?)E=s|bmVgv-S7{*>iV+Ip!bTJ<5q}T_$3_Xo;G)GbkTgHj
zx!>tx?hTW)k_=9onc;g^^K-wC`^<aJnHj!U%#3;&1OhQYIe+HGnTnnG>wyjZ8(VS7
z@eCmBoNTvp_o+Zi&v(gGA(CtPfZsOWcPgoeOD|Y(yzu>!d-wN>jXW^2w5Ym-#r{Yp
z26pR(oN{L);2NBRP@(!q#a{nv(S5RF<f+*d17bDDqy?BvzyLD{05U@Pm8`z8Ka%Sy
z#~NJv!p|%A_J23`-G=}QRaaXqw607cb`Sy#_UPE*j9g54#F+&G@t+lY^~Qqxtj;N=
zO(ft_Cx>(TT3;lS27x#;z3+JL%6$B5#mFVS_rJhSU3$Nv>o1>qr&)kR!op~8aIi=D
zTLs*$C3k++*dyTD$*~PnUIpB$vFFy3J1^jLKBjQHVt*rmB|X-*O77ooS8QZHrl6%&
zcd}}9C$<XhEfH{4qr0@~PKI+;j?`Rj9@yvKecRZACiL9;_QU3?90|*@6_e@M5lX+0
z%dr)8*|E2dxDzA*%Z|NaqbuKfdh?lcc^mc||0iykGTe@j?$j4wwuFUY+Z5ZCkJdjQ
zJ-g`=rGJCf(Qply<?QUNch19kI1lHiWy2bJ`K7hTQ$POFGJE;5^l%=o4F^gy8h<<X
z+Sb23`5PZ>>ALdpIbW6@?n#y9*FSBoe+~_M=RBP6xn}6ld!GWZ^5&VxzMuK{l6TI-
zc{mT}r{xo!ioPs64z63d$J&W29ddFE-O4@92Y*tk%Tv(-XT}CtK9G{`3%Qvl06NGy
z*%xwCi@Wq{C@d$*p>_u}0}X}c;x4_ay#X@^BAEb0H-s_Ua5~0-9EfD1H(+MdVB1!b
z20Nkg@$vP&HhT8aU>hJ=W$tKJPp74sCg9p96D4URQIBTzbXJ)IL?sDh_C+!|*rQ_x
zfq#J}Y13BkK~vSLnW;fA*rQ{8kxV)W1!ApB#fFD7a`9MBk7tB(l0Fq`b?jOQ)Bq<U
zF(A&lFq6rYkLC1ueM)xSZ%c)$L9joP>(BNEKcoR}Xt@Blki?g}y1Ewo`}-#b1_mzV
zBDrG_q+pMv(;pYT&j*|UhJYgMeDof;3nY}Lr>Cb1g~GLbKL4N5`-gu&V4*5j;Qasq
N002ovPDHLkV1jQp(xU(X

diff --git a/games/crossyroad/docs/calcade.png b/games/crossyroad/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3dd529407c9bdd214cfb6fd21128ff2de83af2fb
GIT binary patch
literal 9921
zcmXAvcQ~8h|Hf0ZMp4wNQoA;xcJ00QCR!3|uNqB7t)ezHVk@P!_bfqeF<X1Ds4aF0
ze))WV|K!SbJ<oa0$#c%R@7Mc2iPqOudqm7Y3;+NgX{ak30ss%>vEPp$;$T1T^mt?d
z0L~~4Wd-Aa?1LOVC&sy){@`bs<HT=vh<vKkBxkkA3KJy<<|ONr<u^GZO=f>tw)AL{
z*^lif`yz!5w1pU0!uhn1Uno^WyCHokzf_lpXGuts$cHsU1~ntur@OisW?$zh(cK8e
zs!(ja5e^`)I=`Md0<|Mds!CS~pOsoInQ*)dy1uzHD?FX_a*BTd0A$<3BiP*em+>Sk
z(86<7wZHn?5SWzpc0XixUeQft8^D4<uo2LCW}cHCpYrIM%ONs>|Kiu_C|8U_;ga*(
zHsZX6qwp5_bNa!@19AVj<@4o|vd=4-xnVbtZ<%uLJbVKGow|g?Z*@2_-QE|(ayHNc
z-1$8w-MoWRVzLP362N2*RmaWaj0-`~6<_jh#PE?MvjhE7<JF%wmpWJw$!m{nHS#s{
z@mIgKBK}Rzl>E4RnNqKq2TmsZ`cgJc=fTJNhxsj3wFbw7T$GB(>9QGD*=$0%RE-#t
z&oLlC%+(Xh!|a2OMkCC;LCclN#~{;TS56^LGZe*(-DR4qR|j!Z{I$Xe-=Ph6Dz<n_
z2sA{vr|h5%#%iD*v7VmcI#2v0biT)<ZR!m%ob=si5dH^^wuwNn;gw;G<~#k6AO*`h
zUawNshYKPkG#S}S!h{@dy}b+PpkPV2vungnnU!kQjE4u8I+gkKC|@CuX1F_7LZsn(
zQ*~IQRfYF3Z3qR7gS&j1M^U8L4Dn<_nf0~K#=M&213P;Q<JZvSl|Cc+1Mvb}qwq?w
zRIhwK>sj#qO8I&d=-)o4x_5J4=PB>A>p$`k(LN<kpIx;$yxaK5a6t#}H-qTLw?XEF
z3Xd&$PMN&VBf3yg#@xKhpI3+rMr|>fRUiBwH8YO>z@>tV(=>gWqyro><U&}J2JCl7
zq>&=fsvKiPZxM6A?!a2Rv8yio*XN+sxL*E?A3xSa?_PZj+_L?o`$}QkyyJq(eGCKp
zaBCA@qL=5~VW?9$Q5}%JG+{4IQ|EZczlk5Gs$@FT(A?*3M0-k~L;DR@sLZPCO_|Xr
zn8OoW!pKQU#3Bk;Vt#>mIMQ=8UUbjy^QN9#-ryxq2!6xLYuzejd>0$&l$bKw`SJGz
z+9s9l=}4d5&L0<6PyRae^{BJx*fApJ*6a-}`?eebbYW_$gumbVZ{?xSmr!M3iA8#;
zH*3}97ACi`qiwrheA3j8>cJc`X$ChU3MS#Gjr1R9>%vyi-f)mqs-gsCY{$a^3CEe5
zaZ+szF(_p}?olhHI;jiMpC=Z~RaIUT#iH=E(tiziDjzqRUdk3*ld&YJODF(MKXrYu
z>)WPAMC0L`xoaKCvx-`6*#G>djiG^R8de7RUJwS~y3aW#spBcv{Au$vspcG@4eon0
z7JS3Bw0t!~<;S({U+&TUtc_;r3jLDITBmD<Cl{pyrV)L!)8lbSM}Cx;sze!$_Z;3p
z)4-dw>Bg!{{i?NhQ%>O}rIz1)()5+N@RJRPD$Zh;B+m7obz8@Eyy@tb0EQ;Y=%jBN
zHsEl++Y1mk?B(l@#wmXxb>*0)3ROa)a*8Rl*<u<Lj*w+??c%kS#O}2}I%=;|0;a{y
zQ*t%cb4xZ6O;>%#nDuSZA#rVf+NjtA?rSvRl@qP3IH1o)BllH_4pHk|_iU!I2>f($
zA=?3^fwm&ImQ^cRh<UHQzZfcyR#KykzDl~l-MD&WR!`F>xZ@~L-ZaN1QuRc<-~P{f
zQ)SRnd|siBoM+M$B%#07%1y~pZi|UmREpPZw&G)#(Tvy3+Fd0~PAKnPCVG!D`SX0$
zrTr7YKOTMvFzEBj`_((i3o3KB9gP2xG*hv!RF(E2=Br$R^L1XwUoQ?Fl*p<aWkM4}
z%x|kcfi?cp_Wc&I01RWViW4V{S?-<<KzFnH2&9Jp5q_F-^?ICa+r>(+O(ZN*8qqux
zu%MSztX{ZYFTQBO0e$C$qDj@O8cBNe)l1@vo2ug?_TXI0!>gK7)1UudHYqwBL_mZj
zVKcHcb(@Zi2K5>^Y!~Y_3;Swk`RK!y`j4P_m6p`!8wo4^vKI9(CKuYZe8ylNy}7^1
zwKviuCl>14jWe2dt4R0k2OrM##em6z_~`xk^E&3Wel@hw{PT}+f8w7m>8L1Y^Dxt5
zatU7rGemP)Q(S%ZNb>>OYPQYym=3|gwB$R66b0(!Jq6}q#eAHa)_Ny5uK3YLsQ6r8
z+=BT1ZOrcNKzuK<E#syidex-bu#$COcr&y-R`TeAm&+t8aMD+uDFUhU`m_piwi8>M
zXad%0EB@0@$@I#4!Q>JueO1sf_Ty2kTC?v$RN;%a;tHq?b{P0?I?QW^x~o1+bGCSE
z*13WiAv5bJ2vj<u2Q<gL{71Sd7gB+H!@w{|$O-%O_NmB0erwAKVe6|V%vR`zSsX2#
zC892hdQ?WInFIh36w<q4G+Hy9M0H)@aMdl*xAs(pvinFRBf|^vI!F@1<ADT#RSn&T
zZSk2yH-6Pj6J9=B<bc~t+4p#3GE@_@I}}q8by?g_r}X-#IcA)%kAwk~66suNq30u;
zc(U!lw!lE6lC!(Lb7)J|W7ZT&{R@Vq`TAc5P&oGX6GD}m0X9p1k;6>qhHI4-z8heE
z<&Q326?2l<E@1z2A<jX@c*`MI4k4DRqDS5H9zLXr?W}m`<|np-7bmVkj0PH6EdLne
z-(T%N7gAM%09H4|6IkGIR2c<3TrFjHXtDWZ0w+kGP?w=D5)Y<uSBtqy_4esq*U|m&
zy7Qn6yHKAt>Qx|)QC{4Jf7CiY<a_&=1|;_ioJJh$l^p1N70*9apI&f*eZ3aS;j%77
zNW0b3<qb>XSPftTXVQR-Q%`M{kQ4Rjd0l$Rg)A35Q1gq$Jh9uFPbIPtJO1xTXay)G
z?#F%>jfdVEV?1ln^sed&<!B*9kR|cgAKOptKCa<uEncW^T|s~&@zWX6#<V~@{6m`q
z9oWLQ=0~7M1UuZGEgY%zn@CTF-jY-GuSiN+rffof`?oN+nRH2=)`x0Q8njA8<(<OW
z;(`n1dB$%;pk`3Os&Gi$dV0{&Iujt<=KazZo}onKFH49`h;T7*VU7e)l6#O8clfVz
ziAl3a@EHHB3o|#!>=GiLzLFU*=~bW3GRR2A26w}Q=-;@S1#s$z2&X2(XGvl^NjYWH
znGnu~geK3u!57bkKBWhGKxqI{!5)m=ZB6Mk2&ndLrW1IYk}id-E~e9NAs?(pyzO}`
z3#Fk`a^S=f*}VP<g%Sb0@%wt%L>g$%@cW`1Y}+s+bE!vGd6TFUs~Fmx4xD{;U}V?;
zqrP2t#iftwKZ+r2Bkmi|pm$rJ&%LzH;KUz1J;yD4+WZNUB~J|N$$k_a<W%Fx(IFax
z&V3x(&Lc1iGs+N3L_CiD=P&gARfHjtb2kA)>ozP5HH#W+`w`htwm|k9&u4Pf*V=!!
zK>H8VN`>I$WMn^&e0JwvwN?n8_IO^x*o!!%+bM)Xm}5b>fXq(f0C;pKN!6o6j^FN0
zLAi^MVL^~}S^$Q#nzR6!HSCcT_i)2ZK@-CES<4Pz!ovz=PSGbwCYk^wB;KY#mjSp$
z0Q*5QPfTj&oR(D>h#|_~@i@^W?}_*vP?!>~EXzx$M~_EofE$gx*ABu&<=t*)QPND?
zHbtH&A`YRqANu%_#hiO2vD`I9&wg}f;DE_q9kC8-Kjanqv?E}6Bja;t1gNH<Gb%zV
zLRrK@=oPPBmv&M)4d@NBJ2R}|j-$b?Q0R{va@nf8e2xQ6;#f3KoqhVdOy2@M$vE@+
zwkY|Nv})}8yDCsq6b)Mw6MFIUV2EqXhQT%6%x&2k=7M7_-L6_1#`D?KX<wu!U3gJC
zWWL@dGz%$!E?WUt%+=c5Sk<H(g-`c*JhmjHg-4*R;H>qW46?LBN8MV(ey=p=HSC_K
z$|i(&(nTZJP&VN%bCs3IxT$kk<iQ>DQNW_dE4;q%;It{&9-k1z93_7$@cHdrWf~GU
zM7YBN=6P>-ImT7K!j#%cXNxkR4WMh&pv}+rUpx7>3VbHzotO1zYEUqzXl&ih^R(r3
zF{t%`)yLSlxuJ#Pczm?suo4z6)$=oEWUJ{ScXq5e_NR`OH6aAAk8TjNdKa>9)&lg;
zZ434u>aWlnwin$n3(-a`2GTwrjfiK5pFXYmIq>uJZaR9q=;lGv*h`8lGS`WN@7GMM
zAz$jfYW^)vX)WUuFo!95a}PV#nL0%v^UngeZ@a!>O33d;PtSh?JP%VvW>z}75CPa<
zq2ARtiDM6?Pe$T=d1gFiY4BYgp3|Ci_6z=)4ghOFGX<%B7cOWelN(}M@;KP);2Y$V
zXZH#J=JZT)c)x;~ZkR9T%~xT;V}BGvrAb3#`1|LvtS0OV97U1_0sp!FN<zjDzfr=|
z3RU=M(iJM`-0!oIezYEmm=7Q)`G6tm-)U@}XRJdS+YyUl$Iw{*?q-i>Fa0~4#dt!0
z43guaww-9PT?jq3tQv=ihoGJ&#QzU)Bh4+!&@Q$C`He_>E-*NTx>Vt<Ah=wT0MH-*
zBbI;0@flWM*06N)+M&1?qPTf+^7m#j;5xm;!R2nsr)yM=WO1A$Y<8F;6<K@%EJ|*q
zUA}evNc^5xng3MYPJ0JP6*c)AB(1VULmbO(15pd1H`G|b1y>QH9@|1{Iw|6QW&A+o
z5PbBnV&J16x%qjU)nOMfVhOrxzzWuW$owE5O>^7$s{mm0kFhg`{VT+L91D&;pF=T@
zNB~;$duN96<b~3C(DV~JqtD0+Q<9TUp*vSU@4IB@o<EytCX5ln&XOO;LH9mb9e7ia
z2_(Tg6!3lUkyxg}n!Z*V)}GNV_Bcaftxg-FYKJ3|j8{?*1FErNeacniokJS&qSeuZ
zPE6VM9~==pV#k7Z(oA3$G4lDTq#`shc`QwNUxZhvkrwbi@?vLKIQt!TrEAU8whC@U
zBK4~Wx4EJ>Tf$y>X|z$|*e4^?lsSE7O}NEjemU+|!>-PPo?$igc~xi21q;|FA{V>N
zTcfseNM_kZ@mETM<_jbMuG+4z^gwu_&F32Jb@Sl#$>xg*3&7ua5MdR%t){u*wC)C(
z;zwrnu>2#))xjT{l~xwr`9U}<ozY+4#J~>!?Td^@9D|E^ALDu}pd+jPBOEJa#a9iq
zpMJpy7U6If&V6?e5kb_#cW$tT7LkLXQ}}7r;?)>wHc~%(%=PiS8D>7uAVi46trTym
zb4?}_JG~q#sr6YQ4lZ%zae=YyFdddP?Uca#u%JRsZ;9?+ENawouz=lhlK62SG9!v~
zc)JxcoiiMkmzMiX6FAKw>KtxCAO0hY^!TQ}{>JIUceJe?SjB8>@Jo>SRUh}78i@5G
z8fyD@+~_jB-Tc}fO%x~po?%xp=#?<SZ|IQmd%M(&p(&Gk+C<9~kkngI-8S9-hGoj(
z<|QX2Kwvejt>5Ee!xFdPI3_smC^N(ui1}|>a?Eoa^dbLg$oJX+GGHdHo2{0R|H_|@
zAE?!oReXr5wLK35g6>j-7Ffzr9cnz;=wOcG1Ym1+w2`tRN(1M&{5Sg1&sRCt&IeV*
zjFnQm1$NVGj3w<eE4vRmTaL2ciT>BiumA6blmF7nRV!8>!o-LG$X{|}>*<VUi8GAy
z4Lqk;O{%|CfJWr|3t<wZ-L42{M4fEhs8;`jK?2qgVPbeqX9c=u(3OB4%}X8db!0io
z_Y0U{beni?IMIPj4e>O3KvkavDUY?O^rOtLt9_0Qof-4Pq=9SJSQOBJAexDhO6#<r
zp7sfuufCck_&66M;tZu%HG&}g?V484t1bj?{nX`*{*$T0GpmAa0kWm^bJUhi+tS1p
zest&0_VDR|EcY=%_&e*VWk*(@797N#$@G*K;-K~6hn<r48|Kf5b$&XFyx!Z+Sw|!I
zIiYucQ$6|@HV$BmESVwLvC)ESjoGrqqxaI2+<v>`&>~2$fg2b6udUMgV6P0JaIKI8
zkea})Xg-FGqi*gqV+)5HBf{KF#Y~6_VP_kj76SgXS!br3?X~o4vYUJqHg=bW$ovC)
zVQ%yc;p|COF9n0Y9t&AF(;;@0E`5S<-lZMAaCx(4V9|W=S-#{&DG@EgIT<Ms5DjAH
zT33GMaDn)4b68zrxNg?<BEA0KlkN;!yg1NLpW?7myHcykM(T{7s`4(2I+oV*D-)5S
zwd_5StC*FkbC)X(R2C~!9vivi4IYi9B{l^yg2Ja#1Va0cFv6){H^;Y}wWF*dPeZ1L
zolK-)Phu4{vOu*dj^9Z!O7>mhXsajMTJ!h=uJF!63WT#W^Qg}O2ArC4;m|O4jn?|x
zeoLTS6Po{pZhGY<jkyS{?pHsRmJ;H<Cq1Hk<frh-|GE>_B9Tkna&(t4lY&isF`0Dt
zwUu(OcOt9XCy*nGmd&<F&SizSR@Z!{Is8%E2`uHU`+9LBe)<Tb-`_VAJj>xu6>{&d
z^g%CB`{+O%usXpG^+_0d{65hySXPL`e}ZupLS~q;4aRw@BU4KC<irAGr&&2D3VSy^
z)<BWb)rOS;DePVFcG8j=)L*}}xBPz%prwYBepq&46AjngTew+0e!VrLx^Zkf>CR)?
ziPO#?2ny)Cz>zO|>4bh?d`&VPSil23Ew2RqW>o7%l&3X-Tz(EL>e(%pmLr_V?w76S
zf8j7YytJMe{W2@{T^&H#T7`-FcYvu8AQfEtCMPiY0`~IKg1kI3^qlLAw^Nn`9|Brr
z#Qpf2H`F7B>Y#C59t-$}4loGlXQhy!2*6c_k;jAAVY=#;5^5z_oJlKh+aL+DV}iGT
z#Ou?CPyMIGG7*D(R2eKYj;fH`zHRnuQd@|9$iHYcCB*vvx5N%m8_nsah@M2=OZ>jS
z;Xdw|H_%HmakvWRc%WJ${RMaKO+|ZOL&7Kne`X<%4DRNC)x%A96>{$AlWb2k+FsRz
zcBmYeO(-ZggYW6Q<T_9s8)eYQO<Rbn&8IlL5lo1{79~vnaQgq?J*;sI2o=6s_Nu*&
z%^WMoau5XecZ$Lt$KFr^+NBGL=%hmc_Z}kibs=<*;3hb~j>mZwFw6J>Yk$Ap{m<7F
zR~&UBg#|d=NU$5-6v7|E?TWoV0Q|d28s|%$!IE0vp2&N8dkfRs?<w%gN>h;t3+wEL
zntu1NGJ2Y4f^+(-Is<0+Ob|1V)tHM=eF%>bXEyQ>T~?gtW@nMM^{_lQz_|5)UW<Po
z=nsWr1s`xV)d$^#?|H0rR*9Zlu+*(wnJ9rP>)Z2b%xiX^q)J|{3nFbpHyDT6MaG8n
zK)CGxaSc8|1SB_tnB>S->i6IutR?+Jb$yVw^j#nz+b<b@jLk*?iCs*9diTrzJ@<PQ
z4M1B~jtGk)=Y%+~=$N%{e}9<^>O38o*LuuVt&73w-0y|0FIm!j@Hgd!O|j<%PM3HH
zkLkndeLv`;U6lQN6*Q?N#9?T$+}7t`T6VG2Z81wvT@;NZXFlAZZ4R#^V{;KyeO_ID
z@HtUBFmXV8n_tK$AID(RG8a2Pwh%zTm1kakNJtTV?2s!hf=%mFWh+MIAUxIfHdDy7
zj1C^duH%8~0;Y%wAul}KC&a21fXocc9H=Y)+SIHHToLr}Ps>KgGg}|rv*JhZzepx$
zSqrhl11+0M)TPB38$v9oDmn|Kv+LIOoSh8X{xukNpVWDhg}IKjn!0EQFAMheZcE_z
zVOv~@2?c${GEvXCZfa+z1&_<nkPR?xywUQ(usZ7M0Q^E8^#k372s*09S$S3rG*hvQ
zrG<+et`jYgBdyCbWlNmv)cj1v+vIj;BnwmN&9Yd=wt41Bh8Cuq%T1o!CjIiAi<^tN
zz5j8SIcD44;*Bori$RLQpmK*U^7x;ko~3mSTN{Lc|LV1_ZqQQWSn;(fsJfdk+ILx^
zGKpeq(y)lT0NofuZC>(xAdEfVv3gmTuC{i%eB^({g^#mw1=gOnI48FE|3xjGw-;AD
z)_gJSvoXX8FrI&{y|Z`piC~zop4Q>N=N5=~)>eB~iW9>xgJm-wyhnBGqr+!OUQ*Iw
z#W!Nh5o^}iGPnf+7Eean+Bx*$*pFIgaNy*%2wAl_S971ISU?2F-Pz}Uu1sIeCian`
z%bus!2i4pZ*H6GUc9${#ei%?>6zt0K?&HtL^+X=5!dJEgGdH4^f>gb(*x~dv2;oNn
zmwWC?i8$)1_D88?r6G*M$ay^uH#T(~D(C~dgI!LU6^O0Tuv9hv#Lx%tA61JvQ)yDL
z2Qwl6<~>NU+g8JBBpPL)HAP4m<`{`z%x_g_nrKRuiY4<;IVxQ#VM*r2zX=j-r>Esa
z)YLT=j5iGU-pZ{od1q|&rH+ic1f~3zaC@;qki?Z<D_s^^W&jZcXcxk5j3Hh6Lm9Lq
zH6*V!+rh=pQ~<8Wlo|0HikZtus@8dJzTQe=u&F$lCLsb<^2ptGnWnwm&DU6s@c{h2
z2}%4(hM98^X{7x$gEe5P8fSPtJ>HKX8kySXKB=<R>;+B<7vh)WRd;!E9Kik7s*Oik
zC{f90Sum&RqjX63nmFwIM;h`o%#QT&?0ccWWVjj#g1`}<dTHDH6GZ&Ky-)<>IFM#m
z+IF&~&0YE?=)?2&)G4jrW`D_iF%x8OAIq;;M|GVrJv3O$G6w!lfIDbyiUIy9F5=Gy
z9|(xB=RL@u6+0;QofYZaX^?D<Gi!h2kY;e?@QLTsDIuYMt{dSiMPf&$U7xg9)yqV|
zg+N8Q5V-Bi{;_al`s<TfyrpSOV#dRlCz8omCREYLoEeDTEm~eC)NoFO5zD2Za3ztG
z^i&gjv(Qq1iFB(;+qPCB0QRx|GZ1J@7FXWOWu+)EWipawowf*9GSmKwfaI!=WcLXd
zzbsb+GBpbH5<k*s8#D@#-~PLnld!hgPZ+c9xb{@&(!&7hralEB3IC7EIV_TtB#)Y^
z+fLle-KXU3=nKGp*5uV+wm$Fj)Il+nA=?6e8K7v+vn=eQYMQ-Jlz_MM?ZF-VHm|!0
zR&a}mY)hY!X!kH>>dxkMc(m=SGCWz0kq8p-C+gA!am~<*9V-RFy)cuNtS5e~V$#gB
z8($^4v)d^Wkm&LUmMweXkLe22Bri?X9{eX9?G%a-ow$vf^a9G6!M+pz@vQC0py?I^
z3wspCq4D+w*4q=P60kKHZN~>x`tWu|ys6zMi7F~qAyuEr$~QGqfQ+_TZUwtf)T6e?
ztaYC6mEO^gCu~ct;r9(VjJ6wKd7;tmePH^6!NR8Nfd&v-z_1||^KEfYnO_L^+=324
z{k1~g?r^pZUvJU>Ux%LTDORP4J9K05Ac?(#fw}EnO_^C{7ZqblR0-c2*hTb`;aubI
zx=ELt1L6F$yN7Clg+P&zNZl8)$dFPitkJWJBvkDwzdF+dp|WqnTlFBvTFrgQqIYTA
z&xdXAFbt=g*swUw8<?bzEF!UfJCbTKouZuEL>*x7RW_A75NuOkG$;%l2xf~Ak@&Fl
zH0}e$GQWCk*4#qtoidTNDX7<JD7Nl$=XVKU+)4EB>Cp$Exw6cl_KQ`iuHOV2o$K8`
zE+6<7V0eOLL5z7dvf3&)1XJ}^{MSYoEj`@|X%l(1V;nTpGtt96g$1_*>rIl=_bdtf
z7rGsE)xS)#e-?9Mb7JQ@o(#2&;BKXb;qbhMu^vIdF>Ylnei}bnC*5B#jg@gMM8isl
zorI|O*RQY}0S~i!vEke%4ZEBLPWlL+aI7z108cA^H=FXY5AKJ)nPAjsaO4z{MJlAd
zh3PVB%|A}ooR=xIm=plQxci7=$?ehKhKH^H!`B4QzJtjCY4OO2B2Uvodc>J37*HJ;
z*tSBB{AnTFPKQXof8+VZf(paoUmnzbc7Sh04!<=tgU__hRM3t*IK9egm#8~Oi5(Ng
z@^9&>pB8t8XzFV}jtHb{8590e|1Z<6<&QR`L0akv$9=QzjiOw^9EecMe&&iUlS}Od
z%13j}`mM96n^-cu#`t}t{zTkRX6Kgk;n|zok@B_jmb<bBq$)q2281BFy+};!`8&&>
zaeJ-bj9NTR7r&}w6}9R%bn`+rRF#j9Cs=W^SyeVNZ7wR3@N&aHBRLsfq6jQoViB4g
zq8WL;+`G6NHI)6En7{lCH68v8OaSwZQNq3LTc1`u%06GvVs~n=NNbY#hW2AO{$5nU
zRyPcFBk<11CG_;yiss4YPF3H*hUz9nju!kT?M|bBf0i}6x1BT;d2#L;>vV|B8|D#b
zpKy8?9TNuvs_4IQG{@~jfYq}hzPB)Uo?<rQ3ljyt4lit~I`u<e<Ei(CSx?2*h$)HX
zhP^9J*$gqA=7%je;wN;y9{E{7L*Mmwf;DYb{k3US($|lkeQ1=q=Ck>dpU2wzPYS#=
z+SAZ31`;J6(JKyEoq1d{SnmE|RHcjzSzf-y>XU@t+l#4YG6$6l6y~#)d`xb%L@}nG
ztYdw8&sTWNCIc^Ji(ALz!bMyxPVMTObf%3F5x&4$xd?;i3z4iC{|B~05|un5Q@G{P
z?E$#)4$GEv4?Y?V|0du{j=U=((O-U2TAl0=9^qEIzBw=*9_PvTcH3{0IL|dM0h|ar
z>V;B}lnVs&z*HO#pXG+J#SxXHmFR5HetGB7?<r90R&MELN0jRcBzXfFDqnV#Neo-2
z;lJ!vw(nky81xy@I$JyEs&ZkP@O7QX%yXaX(6`&!w8a;M5pP%D?XkQJd+^bx!9oqf
zBE5GBuzSB2gFM9v!F_qJpVziAvjiq+581%9J&&*CzDq?%`Z)iF4Ac@j5Ve^OL*jg6
zGFTX>qL2i`LkzuDq_zOQy2seF`s-gZdSY*4KrhM353BsEB4>RbPF}ZV@Ii(AYm{L7
z7x`4!b9`)XcvROuN1D6ohl-b*dftb+*)jX<5n~>F?sE-qMYKXgzT<5*3mHD4A1Sb_
z_0GN<@4JJ2nh7qhi_fS@0e-@xNh61c%)mCxJevV~Z_37c)FG&+T^rv4Il=L2-AlOK
zsrABAO$wBK$eq-?vs>mkM8T|FRwsVCTpNi^Z%o|bgH$LVedaUcU5+lm>hobnM9{AI
zNl_(mA!vN_ecH>~dHQ|<=g75fDg4hM!$%!=o9}w>d%rt;y+gd9(F1@bBB{z(ulOS-
z_}+>nl3R+&#K0TK1JNYfIAtCVf8&K<(7jhD$JVEY<i3&OTc3OmC9U{!^I=|}L2RW@
zM?0JYm2TL}UW3*5)27d#yG5X?O2!*Niyp2$i@myjR~hfY27FzQ=A{l^!@y4?u-Z}}
z=5{Ho{vmFSB-)}*V3=vUPcYGhd(OzXFX=qP;T@(`9)FcqYBixOj5XT`^Qm~5!>ypT
zHio!~Vo>{WLXV-f9?e0M_Gv=(+7PyuCROpe=&Wh7L6hbqCeBFWqe1W6`|?zJDNHn^
zS1Iy;qQ`)6ixBupi4^@A7v00l4PhAAh2(sptd{WO-Hi{eG>zMQzS(o}Oy3Z_<hkGo
znkeqr?+%UfucVz$PsCubi}hGnIde!D80-Vh2w%%yxWO4kyVNJY>S_%esxL1SsCJr$
zr66T`2lmU_hgf0af*yJyf7ZIJ(6}Qg=HC}qrq!gK{s(4JkePG{Ve0kMt~ZnTr>Z#t
zC1D<GP8hcndLBbJ)BY-o^{Dsd$|>}Mg9B+$lO1g#JJ^)f(W57SZ+ojo-)??==%_Qd
z&uMe);b1rUQKlzsCk2TIT4Q_xo7+<`y!p0~=k*5-6pxU8CWEn=zV4gggL4tKY!4A8
zRe#VL8|<|eM7y*H2Z@%1wTdd+!yn{NWvT<ISbvD!Fsu#?^Dzx5G!b58+S`=YON4I>
z*-iJ?E)&t^mKZQ#(<+L><VI+iNJ}ohn|#0oqX2B%>^kYUw9L#ivk_f3p!mN%TQ6S1
z^e+QJRY}MXGA9Ra@#r$6FwZVCOexE);}7~+E`5pLyeaP0Q-%jBKA!)KIZvO5yd#jC
z<%gBIlZ&($JPpQK6QzpxHu%$u8~8VaV0(HSEwbZYB@>HWBhaEmnMpkz4sA4KK*(r=
zQ?AQ*38&>)ZbSO_<>S+~zDjoA+Q%$z%&f=JfIRW3@17J{)tuH_RYW!hmW%MbzLV4K
zsxDK6PwD5G+;(D<yohCbz+Zm%?rL_@&x7QuwBI_A-S-B6A4IEyZ9r6tih_V}jWyCy
zEueX<raqpBz$DC0+uw}_@LsOt!Tb2F`i9-0_8otHG&M7#g*nw#UAv2_`dp*wjW~yI
zQxt`t*rX>0b%x#?T}4NEb|>;tRzN>ed;IyLvmLC6(jDaFA#bnkyfX1j1fTWK$OgVK
zr$pLg3`3`5GdnH>NRXax6$P{-UBRJC!Q4$0kKHgl5B+&BG>tmH<E?@Da>j$*gO<UN
zSQu6O#NI*tn;IvwPj6p0rs>$+M2W$su1dxBs%D<n7aahF3I;MCfBO+nE7Q~eo|4?D
zr|RuZh3j9se?HU)Zuw14@z?jG#sYlAX)5vF+_4l}dglhLNi81@h-yJE6^tj@UPXSu
znblbrzNMV}V(}ttzg;SM;6hMZT(fQJv)>mjw2cvsxnMfToY3U(9`R*<yl*|NnK{7z
z9q*;7sw!|p?#S39)b)}^+)B@zkxI;I8_D6Mcl@jI-F*GQx>>Vc+cM`}!aL?ILptGd
zjdiBc)TgP>cM09~KCW#SWF(a&7PN_JwH9CZzud`x18&0}NMExx`6PUc0!{MjwoW_D
z#(CFB=;_<)oyUVln#}uaN7H5HcoZ)DjuMqz&T+H4ogfCSLJY);ed(5CZ9==AoGb30
zMZ(ypmPrn&c=6@PiCp#~&wH4KDTI4GoJ6ZM?mV!0AXfF=UteC}k*=J~tS9<r-Alv0
zTBMF?+w)7dU8suNrsP<C_?UQn4jr-1I(@(W_rne~J!1O6t(K$f`Jq+Ka3zI>&eYb$
fnd0}^dvfDQ(#f~QVw2dvrU5imbd@U=?Lz+#JeraR

literal 0
HcmV?d00001

diff --git a/games/crossyroad/src/crossy.c b/games/crossyroad/src/crossy.c
index dbdcfdc..a560595 100644
--- a/games/crossyroad/src/crossy.c
+++ b/games/crossyroad/src/crossy.c
@@ -1,4 +1,5 @@
-// Crossy Road for NumWorks
+// Piou Road for NumWorks (modifié par Calcade le 19 octobre 2026 : nom, logo, police et couleurs à lui ;
+// avant : une reprise de Crossy Road de Hipster Whale)
 // A faithful remake of Hipster Whale's Crossy Road for the NumWorks calculator.
 #include <eadk.h>
 #include <stddef.h>
@@ -34,7 +35,7 @@ __attribute__((used, externally_visible)) void *memcpy(void *d, const void *s, s
 #endif
 
 #ifdef __ELF__ /* app name and API level, for the calculator's installer */
-const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Crossy Road";
+const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Piou Road";
 const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
 #endif
 
@@ -279,52 +280,51 @@ static const uint8_t rom_packed[] = {
 };
 #else
 static const struct Rom rom_init = {
-  // Palette. Colors sampled from the original game (lit top faces, ambient-only
-  // side faces, and shadowed ground).
+  // Palette (Calcade: Piou Road's own colours; lit top faces, ambient-only side faces, and shadowed ground).
   .pal = {
-    [C_GRASS] = RGB(217, 252, 130), [C_GRASS2] = RGB(208, 244, 120),
-    [C_GRASS_O] = RGB(192, 235, 110), [C_GRASS2_O] = RGB(184, 227, 102),
-    [C_GRASS_SH] = RGB(96, 116, 54), [C_GRASS_OSH] = RGB(84, 102, 43),
+    [C_GRASS] = RGB(168, 247, 135), [C_GRASS2] = RGB(158, 239, 125),
+    [C_GRASS_O] = RGB(142, 230, 115), [C_GRASS2_O] = RGB(134, 222, 107),
+    [C_GRASS_SH] = RGB(71, 114, 56), [C_GRASS_OSH] = RGB(60, 100, 45),
     [C_ROAD] = RGB(97, 104, 108), [C_ROAD_O] = RGB(89, 96, 100),
     [C_ROAD_SH] = RGB(40, 42, 42), [C_ROAD_OSH] = RGB(36, 38, 38),
     [C_ROAD_SIDE] = RGB(61, 64, 64), [C_DASH] = RGB(141, 151, 155), [C_DASH_O] = RGB(129, 141, 144),
-    [C_WATER] = RGB(170, 252, 254), [C_WATER_O] = RGB(144, 236, 252),
-    [C_WATER_SH] = RGB(75, 116, 131), [C_WATER_OSH] = RGB(64, 104, 122), [C_FOAM] = RGB(255, 255, 255),
+    [C_WATER] = RGB(173, 216, 251), [C_WATER_O] = RGB(148, 191, 248),
+    [C_WATER_SH] = RGB(77, 93, 129), [C_WATER_OSH] = RGB(66, 81, 120), [C_FOAM] = RGB(255, 255, 255),
     [C_RAIL] = RGB(170, 167, 183), [C_RAIL_S] = RGB(74, 71, 76),
-    [C_TIE] = RGB(127, 85, 79), [C_TIE_S] = RGB(54, 33, 29),
-    [C_RAIL_SH] = RGB(74, 71, 76), [C_TIE_SH] = RGB(54, 33, 29),
+    [C_TIE] = RGB(125, 105, 81), [C_TIE_S] = RGB(53, 43, 30),
+    [C_RAIL_SH] = RGB(74, 71, 76), [C_TIE_SH] = RGB(53, 43, 30),
     [C_WHITE] = RGB(255, 255, 255), [C_GRAY] = RGB(144, 144, 144),
-    [C_COMB] = RGB(239, 130, 131), [C_COMB_S] = RGB(117, 55, 53),
-    [C_BEAK] = RGB(240, 146, 107), [C_BEAK_S] = RGB(120, 63, 43), [C_EYE] = RGB(31, 17, 13),
-    [C_LEAF] = RGB(208, 234, 90), [C_LEAF_A] = RGB(100, 112, 39), [C_LEAF_B] = RGB(91, 101, 33),
-    [C_TRUNK] = RGB(64, 41, 35), [C_TRUNK_E] = RGB(58, 32, 27),
-    [C_ROCK] = RGB(252, 239, 254), [C_ROCK_S] = RGB(111, 103, 108),
-    [C_LOG] = RGB(150, 102, 92), [C_LOG_BARK] = RGB(135, 85, 76), [C_LOG_S] = RGB(64, 41, 35),
-    [C_LOG_END] = RGB(96, 62, 55), [C_LOG_SH] = RGB(66, 45, 40),
-    [C_LILY] = RGB(115, 229, 135), [C_LILY_S] = RGB(46, 99, 55),
+    [C_COMB] = RGB(235, 176, 134), [C_COMB_S] = RGB(114, 82, 56),
+    [C_BEAK] = RGB(235, 200, 112), [C_BEAK_S] = RGB(117, 94, 46), [C_EYE] = RGB(30, 24, 14),
+    [C_LEAF] = RGB(149, 228, 96), [C_LEAF_A] = RGB(70, 109, 42), [C_LEAF_B] = RGB(63, 98, 36),
+    [C_TRUNK] = RGB(63, 53, 36), [C_TRUNK_E] = RGB(57, 45, 28),
+    [C_ROCK] = RGB(253, 240, 249), [C_ROCK_S] = RGB(111, 103, 108),
+    [C_LOG] = RGB(148, 126, 94), [C_LOG_BARK] = RGB(133, 109, 78), [C_LOG_S] = RGB(63, 53, 36),
+    [C_LOG_END] = RGB(94, 79, 57), [C_LOG_SH] = RGB(65, 56, 41),
+    [C_LILY] = RGB(120, 224, 182), [C_LILY_S] = RGB(48, 97, 77),
     [C_BLACK] = RGB(0, 0, 0), [C_CABIN_S] = RGB(135, 142, 144), [C_UNDER] = RGB(71, 66, 80),
     [C_HUB] = RGB(160, 166, 170),
-    [C_BLUE_T] = RGB(120, 248, 253), [C_BLUE_S] = RGB(48, 107, 116), [C_BLUE_S2] = RGB(31, 78, 95),
-    [C_GREEN_T] = RGB(196, 244, 124), [C_GREEN_S] = RGB(95, 114, 56), [C_GREEN_S2] = RGB(77, 102, 48),
-    [C_YELLOW_T] = RGB(255, 254, 129), [C_YELLOW_S] = RGB(138, 123, 56), [C_YELLOW_S2] = RGB(118, 104, 48),
-    [C_ORANGE_T] = RGB(255, 140, 84), [C_ORANGE_S] = RGB(140, 54, 34), [C_ORANGE_S2] = RGB(114, 42, 28),
-    [C_PURPLE_T] = RGB(182, 160, 255), [C_PURPLE_S] = RGB(82, 64, 142), [C_PURPLE_S2] = RGB(66, 50, 118),
-    [C_RED_T] = RGB(250, 92, 100), [C_RED_S] = RGB(120, 30, 38),
-    [C_TBLUE_T] = RGB(64, 184, 248), [C_TBLUE_S] = RGB(8, 82, 124),
-    [C_TGREEN_T] = RGB(110, 214, 198), [C_TGREEN_S] = RGB(36, 98, 90),
+    [C_BLUE_T] = RGB(125, 192, 248), [C_BLUE_S] = RGB(51, 79, 113), [C_BLUE_S2] = RGB(34, 52, 92),
+    [C_GREEN_T] = RGB(149, 239, 129), [C_GREEN_S] = RGB(72, 112, 58), [C_GREEN_S2] = RGB(56, 100, 50),
+    [C_YELLOW_T] = RGB(202, 250, 134), [C_YELLOW_S] = RGB(117, 135, 59), [C_YELLOW_S2] = RGB(101, 115, 51),
+    [C_ORANGE_T] = RGB(248, 208, 91), [C_ORANGE_S] = RGB(136, 98, 38), [C_ORANGE_S2] = RGB(111, 78, 31),
+    [C_PURPLE_T] = RGB(221, 164, 251), [C_PURPLE_S] = RGB(114, 67, 139), [C_PURPLE_S2] = RGB(94, 53, 115),
+    [C_RED_T] = RGB(244, 152, 98), [C_RED_S] = RGB(116, 61, 34),
+    [C_TBLUE_T] = RGB(71, 111, 241), [C_TBLUE_S] = RGB(13, 36, 119),
+    [C_TGREEN_T] = RGB(114, 184, 210), [C_TGREEN_S] = RGB(38, 79, 96),
     [C_BOX_T] = RGB(236, 236, 240), [C_BOX_S] = RGB(128, 130, 138), [C_BOX_S2] = RGB(112, 114, 122),
-    [C_TRAIN_T] = RGB(96, 200, 252), [C_TRAIN_S] = RGB(22, 116, 176), [C_TRAIN_S2] = RGB(14, 88, 142),
-    [C_TRAIN_W] = RGB(200, 236, 236), [C_TRAIN_WS] = RGB(88, 118, 124),
-    [C_TRAIN_Y] = RGB(252, 252, 131), [C_TRAIN_YS] = RGB(128, 124, 52),
-    [C_POLE_R] = RGB(196, 60, 72), [C_POLE_RS] = RGB(89, 33, 31),
+    [C_TRAIN_T] = RGB(102, 138, 246), [C_TRAIN_S] = RGB(28, 55, 170), [C_TRAIN_S2] = RGB(19, 38, 137),
+    [C_TRAIN_W] = RGB(201, 221, 235), [C_TRAIN_WS] = RGB(89, 103, 123),
+    [C_TRAIN_Y] = RGB(200, 247, 136), [C_TRAIN_YS] = RGB(99, 125, 55),
+    [C_POLE_R] = RGB(191, 107, 65), [C_POLE_RS] = RGB(87, 58, 33),
     [C_POLE_W] = RGB(238, 238, 238), [C_POLE_WS] = RGB(144, 144, 144),
-    [C_LAMP_OFF] = RGB(62, 19, 24), [C_LAMP_ON] = RGB(255, 36, 36),
+    [C_LAMP_OFF] = RGB(60, 33, 21), [C_LAMP_ON] = RGB(246, 129, 45),
     [C_SIGNAL] = RGB(36, 36, 40), [C_SIGNAL_S] = RGB(14, 14, 16),
-    [C_COIN] = RGB(255, 238, 70), [C_COIN_S] = RGB(176, 132, 16), [C_COIN_C] = RGB(255, 36, 16),
-    [C_EAGLE] = RGB(136, 72, 64), [C_EAGLE_S] = RGB(74, 36, 34),
+    [C_COIN] = RGB(192, 248, 77), [C_COIN_S] = RGB(148, 170, 22), [C_COIN_C] = RGB(245, 136, 26),
+    [C_EAGLE] = RGB(133, 102, 67), [C_EAGLE_S] = RGB(72, 53, 36),
     [C_EAGLE_H] = RGB(250, 250, 250), [C_EAGLE_HS] = RGB(150, 150, 150),
-    [C_EAGLE_B] = RGB(255, 170, 60), [C_EAGLE_BS] = RGB(140, 80, 24),
-    [C_BTN] = RGB(86, 196, 248), [C_BTN_S] = RGB(36, 150, 220), [C_GOLD] = RGB(248, 232, 77),
+    [C_EAGLE_B] = RGB(247, 244, 68), [C_EAGLE_BS] = RGB(135, 125, 29),
+    [C_BTN] = RGB(92, 131, 242), [C_BTN_S] = RGB(43, 77, 213), [C_GOLD] = RGB(190, 241, 84),
     [C_OUTLINE] = RGB(0, 0, 0),
   },
   .shade_pairs = {
@@ -360,16 +360,16 @@ static const struct Rom rom_init = {
   // Model shapes, facing north (creatures) or east (vehicles). Materials M_V0..M_V2
   // are filled in per model (colors, lamps); a variant of NONE drops the box.
   .shapes = {
-    // chicken
+    // the chick, Piou (Calcade: yellow, a little tuft instead of a comb)
     {-6, 0, -2, 3, 6, 3, M_BEAK}, {3, 0, -2, 3, 6, 3, M_BEAK},        // legs
     {-6, 0, 1, 3, 1, 2, M_BEAK}, {3, 0, 1, 3, 1, 2, M_BEAK},          // toes
-    {-6, 6, -9, 12, 12, 16, M_WHITE},                                 // body
-    {-9, 9, -6, 3, 6, 9, M_WHITE}, {6, 9, -6, 3, 6, 9, M_WHITE},      // wings
-    {-4, 14, -12, 8, 6, 3, M_WHITE},                                  // tail
-    {-6, 18, -3, 12, 14, 10, M_WHITE},                                // head
-    {-2, 32, -1, 5, 4, 7, M_COMB},                                    // comb
+    {-6, 6, -9, 12, 12, 16, M_YELLOW},                                 // body
+    {-9, 9, -6, 3, 6, 9, M_YELLOW}, {6, 9, -6, 3, 6, 9, M_YELLOW},      // wings
+    {-4, 14, -12, 8, 6, 3, M_YELLOW},                                  // tail
+    {-6, 18, -3, 12, 14, 10, M_YELLOW},                                // head
+    {-1, 32, 0, 3, 3, 3, M_YELLOW2},                                   // tuft
     {-2, 24, 7, 4, 3, 3, M_BEAK},                                     // beak
-    {-2, 21, 7, 4, 3, 1, M_COMB},                                     // wattle
+    {-2, 21, 7, 4, 3, 1, M_BEAK},                                     // chin
     {-7, 26, 2, 1, 2, 2, M_EYE}, {6, 26, 2, 1, 2, 2, M_EYE},          // eyes
     // car: wheels, chassis, two-tone body, cabin with windows, taxi sign
     {-21, 0, -18, 12, 10, 4, M_BLACK}, {-21, 0, 14, 12, 10, 4, M_BLACK}, {-17, 3, -19, 4, 4, 1, M_HUB},
@@ -435,50 +435,50 @@ static const struct Rom rom_init = {
   .kinds = {L_GRASS, L_ROAD, L_RIVER, L_RAIL},
   .dx = {0, 1, 0, -1},
   .dz = {1, 0, -1, 0},
-  // Font: the original's blocky digits (decoded from the game) and matching
-  // capitals. 10 rows; bit 11 is the leftmost column.
+  // Font: Piou Road's own square letters with cut corners (Calcade, tools/conformite/piou_font.py).
+  // 10 rows; bit 11 is the leftmost column.
 #if NP_TEXT_EXTRA
   .font_chars = "0123456789ACDEGILMNOPQRSTUWY?V",
 #else
   .font_chars = "0123456789ACDEGILMNOPQRSTUWY?",
 #endif
-  .font_w = {10, 5, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 4, 10, 12, 10, 10, 10, 10, 10, 10, 10, 10, 12, 10, 10,
+  .font_w = {10, 6, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 4, 10, 12, 10, 10, 10, 10, 10, 10, 10, 10, 12, 10, 10,
 #if NP_TEXT_EXTRA
              10,
 #endif
   },
-  .font = {
-    GLYPH(0x1FE, 0x3FF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3FF, 0x1FE),  // 0
-    GLYPH(0x3C0, 0x3E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0, 0x1E0),  // 1
-    GLYPH(0x3FE, 0x3FF, 0x00F, 0x00F, 0x1FF, 0x3FE, 0x3C0, 0x3C0, 0x3FF, 0x3FF),  // 2
-    GLYPH(0x3FE, 0x3FF, 0x00F, 0x00F, 0x07E, 0x07E, 0x00F, 0x00F, 0x3FF, 0x3FE),  // 3
-    GLYPH(0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3FF, 0x1FF, 0x00F, 0x00F, 0x00F, 0x00F),  // 4
-    GLYPH(0x3FF, 0x3FF, 0x3C0, 0x3C0, 0x3FE, 0x1FF, 0x00F, 0x00F, 0x3FF, 0x3FE),  // 5
-    GLYPH(0x1FF, 0x3FF, 0x3C0, 0x3C0, 0x3FE, 0x3FF, 0x3CF, 0x3CF, 0x3FF, 0x1FE),  // 6
-    GLYPH(0x3FE, 0x3FF, 0x00F, 0x00F, 0x00F, 0x00F, 0x00F, 0x00F, 0x00F, 0x00F),  // 7
-    GLYPH(0x1FE, 0x3FF, 0x3CF, 0x3CF, 0x1FE, 0x1FE, 0x3CF, 0x3CF, 0x3FF, 0x1FE),  // 8
-    GLYPH(0x1FE, 0x3FF, 0x3CF, 0x3CF, 0x3FF, 0x1FF, 0x00F, 0x00F, 0x3FF, 0x3FE),  // 9
-    GLYPH(0x1FE, 0x3FF, 0x3CF, 0x3CF, 0x3FF, 0x3FF, 0x3CF, 0x3CF, 0x3CF, 0x3CF),  // A
-    GLYPH(0x1FF, 0x3FF, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3FF, 0x1FF),  // C
-    GLYPH(0x3FE, 0x3FF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3FF, 0x3FE),  // D
-    GLYPH(0x1FF, 0x3FF, 0x3C0, 0x3C0, 0x3F8, 0x3F8, 0x3C0, 0x3C0, 0x3FF, 0x1FF),  // E
-    GLYPH(0x1FF, 0x3FF, 0x3C0, 0x3C0, 0x3DF, 0x3DF, 0x3CF, 0x3CF, 0x3FF, 0x1FF),  // G
+  .font = { /* (Calcade : sa propre police, tools/conformite/piou_font.py) */
+    GLYPH(0x3FC, 0x3FC, 0x30F, 0x30F, 0x333, 0x333, 0x3C3, 0x3C3, 0x0FF, 0x0FF),  // 0
+    GLYPH(0x0F0, 0x0F0, 0x3F0, 0x3F0, 0x0F0, 0x0F0, 0x0F0, 0x0F0, 0x0F0, 0x0F0),  // 1
+    GLYPH(0x3FC, 0x3FC, 0x00F, 0x00F, 0x0FC, 0x0FC, 0x3C0, 0x3C0, 0x3FF, 0x3FF),  // 2
+    GLYPH(0x3FC, 0x3FC, 0x00F, 0x00F, 0x0FC, 0x0FC, 0x00F, 0x00F, 0x3FC, 0x3FC),  // 3
+    GLYPH(0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3FF, 0x3FF, 0x00F, 0x00F, 0x00F, 0x00F),  // 4
+    GLYPH(0x3FF, 0x3FF, 0x3C0, 0x3C0, 0x3FC, 0x3FC, 0x00F, 0x00F, 0x3FC, 0x3FC),  // 5
+    GLYPH(0x0FF, 0x0FF, 0x3C0, 0x3C0, 0x3FC, 0x3FC, 0x3CF, 0x3CF, 0x0FC, 0x0FC),  // 6
+    GLYPH(0x3FF, 0x3FF, 0x00F, 0x00F, 0x03C, 0x03C, 0x0F0, 0x0F0, 0x0F0, 0x0F0),  // 7
+    GLYPH(0x0FC, 0x0FC, 0x3CF, 0x3CF, 0x0FC, 0x0FC, 0x3CF, 0x3CF, 0x0FC, 0x0FC),  // 8
+    GLYPH(0x0FC, 0x0FC, 0x3CF, 0x3CF, 0x0FF, 0x0FF, 0x00F, 0x00F, 0x3FC, 0x3FC),  // 9
+    GLYPH(0x0FC, 0x0FC, 0x3CF, 0x3CF, 0x3FF, 0x3FF, 0x3CF, 0x3CF, 0x3CF, 0x3CF),  // A
+    GLYPH(0x0FF, 0x0FF, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x0FF, 0x0FF),  // C
+    GLYPH(0x3FC, 0x3FC, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3FC, 0x3FC),  // D
+    GLYPH(0x3FF, 0x3FF, 0x3C0, 0x3C0, 0x3FC, 0x3FC, 0x3C0, 0x3C0, 0x3FF, 0x3FF),  // E
+    GLYPH(0x0FF, 0x0FF, 0x3C0, 0x3C0, 0x3CF, 0x3CF, 0x3C3, 0x3C3, 0x0FF, 0x0FF),  // G
     GLYPH(0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0),  // I
-    GLYPH(0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3FF, 0x1FF),  // L
-    {0xF0F, 0xF9F, 0xFFF, 0xFFF, 0xF6F, 0xF6F, 0xF0F, 0xF0F, 0xF0F, 0xF0F},  // M
-    GLYPH(0x3CF, 0x3EF, 0x3FF, 0x3FF, 0x3DF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF),  // N
-    GLYPH(0x1FE, 0x3FF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3FF, 0x1FE),  // O
-    GLYPH(0x3FE, 0x3FF, 0x3CF, 0x3CF, 0x3FF, 0x3FE, 0x3C0, 0x3C0, 0x3C0, 0x3C0),  // P
-    GLYPH(0x1FE, 0x3FF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3EF, 0x3FE, 0x3FF, 0x1F3),  // Q
-    GLYPH(0x3FE, 0x3FF, 0x3CF, 0x3CF, 0x3FE, 0x3FF, 0x3CF, 0x3CF, 0x3CF, 0x3CF),  // R
-    GLYPH(0x1FF, 0x3FF, 0x3C0, 0x3C0, 0x3FE, 0x1FF, 0x00F, 0x00F, 0x3FF, 0x3FE),  // S
-    GLYPH(0x3FF, 0x3FF, 0x078, 0x078, 0x078, 0x078, 0x078, 0x078, 0x078, 0x078),  // T
-    GLYPH(0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3FF, 0x1FE),  // U
-    {0xF0F, 0xF0F, 0xF0F, 0xF6F, 0xF6F, 0xFFF, 0xFFF, 0xF9F, 0xF0F, 0xF0F},  // W
-    GLYPH(0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3FF, 0x1FE, 0x078, 0x078, 0x078, 0x078),  // Y
-    GLYPH(0x1FE, 0x3FF, 0x00F, 0x00F, 0x07E, 0x078, 0x078, 0x000, 0x078, 0x078),  // ?
+    GLYPH(0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3C0, 0x3FF, 0x3FF),  // L
+    {0xF0F, 0xF0F, 0xFFF, 0xFFF, 0xF3F, 0xF3F, 0xF0F, 0xF0F, 0xF0F, 0xF0F},  // M
+    GLYPH(0x3CF, 0x3CF, 0x3FF, 0x3FF, 0x3FF, 0x3FF, 0x3CF, 0x3CF, 0x3CF, 0x3CF),  // N
+    GLYPH(0x0FC, 0x0FC, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x0FC, 0x0FC),  // O
+    GLYPH(0x3FC, 0x3FC, 0x3CF, 0x3CF, 0x3FC, 0x3FC, 0x3C0, 0x3C0, 0x3C0, 0x3C0),  // P
+    GLYPH(0x0FC, 0x0FC, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CC, 0x3CC, 0x0F3, 0x0F3),  // Q
+    GLYPH(0x3FC, 0x3FC, 0x3CF, 0x3CF, 0x3FC, 0x3FC, 0x3CC, 0x3CC, 0x3CF, 0x3CF),  // R
+    GLYPH(0x0FF, 0x0FF, 0x3C0, 0x3C0, 0x0FC, 0x0FC, 0x00F, 0x00F, 0x3FC, 0x3FC),  // S
+    GLYPH(0x3FF, 0x3FF, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC),  // T
+    GLYPH(0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x0FC, 0x0FC),  // U
+    {0xF0F, 0xF0F, 0xF0F, 0xF0F, 0xFCF, 0xFCF, 0xFFF, 0xFFF, 0xF0F, 0xF0F},  // W
+    GLYPH(0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC, 0x0FC),  // Y
+    GLYPH(0x3FC, 0x3FC, 0x00F, 0x00F, 0x0FC, 0x0FC, 0x000, 0x000, 0x0F0, 0x0F0),  // ?
 #if NP_TEXT_EXTRA
-    GLYPH(0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x1CE, 0x1CE, 0x0FC, 0x0FC, 0x078),  // V
+    GLYPH(0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x3CF, 0x0FC, 0x0FC, 0x030, 0x030),  // V
 #endif
   },
   // Pixel-art pointing hand (tap hint), 12x14: outline and fill masks.
@@ -487,7 +487,7 @@ static const struct Rom rom_init = {
   .hand_in = {0x000, 0x040, 0x040, 0x040, 0x04A, 0x04A, 0x62A, 0x73E,
                                      0x7FE, 0x3FE, 0x3FC, 0x1FC, 0x000, 0x000},
   .save_name = "crossyroad.sav",
-  .s_crossy = "CROSSY",
+  .s_crossy = "PIOU",
   .s_road = "ROAD",
   .s_new_top = T("NEW TOP"),
   .s_quit = T("QUIT GAME"),
@@ -1757,14 +1757,15 @@ static void draw_coins_hud(void) {
 // Title logo: sheared blocky letters on a black 3D slab. t: 0 at rest, <0 entering, >0 leaving.
 static void draw_logo(float t) {
   int dx = (int)(t * 220), dy = (int)(t * 60);
-  const int sc = 3, sh = 59;
+  /* (Calcade : le logo de Piou Road, droit, sur une ligne, PIOU en or) */
+  const int sc = 3, sh = 0;
   const char *l1 = str_crossy, *l2 = str_road;
-  int w1 = text_width(l1, sc), w2 = text_width(l2, sc);
-  int x1 = 160 - w1 / 2 - 8 + dx, y1 = 8 + dy;
-  int x2 = x1 + (w1 - w2) / 2 + 3, y2 = y1 + 33 + (((x2 - x1) * sh) >> 8);
-  draw_text_x(x1, y1, l1, sc, C_OUTLINE, sh, 2, 2, 2, 2, 9);
-  draw_text_x(x2, y2, l2, sc, C_OUTLINE, sh, 2, 2, 2, 2, 9);
-  draw_text(x1, y1, l1, sc, C_WHITE, sh);
+  int w1 = text_width(l1, sc), w2 = text_width(l2, sc), gap = 14;
+  int x1 = 160 - (w1 + gap + w2) / 2 + dx, y1 = 14 + dy;
+  int x2 = x1 + w1 + gap, y2 = y1;
+  draw_text_x(x1, y1, l1, sc, C_OUTLINE, sh, 2, 2, 2, 2, 6);
+  draw_text_x(x2, y2, l2, sc, C_OUTLINE, sh, 2, 2, 2, 2, 6);
+  draw_text(x1, y1, l1, sc, C_GOLD, sh);
   draw_text(x2, y2, l2, sc, C_WHITE, sh);
 }
 
diff --git a/games/flappybird/README.md b/games/flappybird/README.md
index 0e0ae84..5b0a980 100644
--- a/games/flappybird/README.md
+++ b/games/flappybird/README.md
@@ -1,8 +1,11 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Flappix**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de Flappy Bird (Dong Nguyen, .GEARS) : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Flappix">
+
 # Flappy Bird
 
 Tap to flap, slip between the pipes, and beat your best. It looks and plays like Dong Nguyen's 2013 original, and keeps the settings and random events of Tatone26's version for when you want something different.
 
-<img src="docs/shot.png" width="320" alt="The yellow bird between two green pipes">
 
 - **Classic** is the real game: day or night, a yellow, blue or red bird, the Get Ready screen, the white flash when you crash, and the score board with bronze, silver, gold and platinum medals (10, 20, 30 and 40 points).
 - **Custom** plays by your own rules, set in **Settings**:
diff --git a/games/flappybird/docs/calcade.png b/games/flappybird/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..a7fe4f5e6cfcd6fc75422cf59c97ab789c92da7e
GIT binary patch
literal 4800
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
LBkdYZ=jeX{u&vxB

literal 0
HcmV?d00001

diff --git a/games/flappybird/lang/fr.txt b/games/flappybird/lang/fr.txt
index 198d887..1011779 100644
--- a/games/flappybird/lang/fr.txt
+++ b/games/flappybird/lang/fr.txt
@@ -5,7 +5,7 @@ Very slow\0Slow\0Normal\0Fast\0Insane\0Impossible\0Never\0Every 15\0Every 10\0Ev
 Off\0On	Non\0Oui
 \0Pipe surge!\0Tailwind!\0Headwind!\0Narrow gaps!\0Wide gaps!\0Dense pipes!\0Low gravity!\0High gravity!	\0Vague de tuyaux !\0Vent arrière !\0Vent de face !\0Écarts serrés !\0Écarts larges !\0Tuyaux serrés !\0Gravité faible !\0Gravité forte !
 Get Ready!	Prêt ?
-FlappyBird	FlappyBird
+Flappix	Flappix
 Settings	Réglages
 Game Over	Perdu !
 SCORE	SCORE
diff --git a/games/flappybird/lang/zh.txt b/games/flappybird/lang/zh.txt
index 9b14cce..22c6484 100644
--- a/games/flappybird/lang/zh.txt
+++ b/games/flappybird/lang/zh.txt
@@ -5,7 +5,7 @@ Very slow\0Slow\0Normal\0Fast\0Insane\0Impossible\0Never\0Every 15\0Every 10\0Ev
 Off\0On	关\0开
 \0Pipe surge!\0Tailwind!\0Headwind!\0Narrow gaps!\0Wide gaps!\0Dense pipes!\0Low gravity!\0High gravity!	\0管道狂潮！\0顺风！\0逆风！\0窄间隙！\0宽间隙！\0管道密集！\0低重力！\0高重力！
 Get Ready!	准备！
-FlappyBird	笨鸟先飞
+Flappix	Flappix
 Settings	设置
 Game Over	游戏结束
 SCORE	得分
diff --git a/games/flappybird/src/icon.png b/games/flappybird/src/icon.png
index e533cedfdfa7ae719b3901c32e44cfd544eb0eb8..9892dec271e9ec1ede7dd4e8fff98130667ecc80 100644
GIT binary patch
delta 3392
zcmV-G4Zrf88p0ZoBYzDENkl<Zc%1E;d5~Pyb;f_^zNNP})6+9OGax`3ArJ;4hr$NT
zCbq-|5>hTGV*-U;0UXMe7*Je}v791tDkOoVoZyu*IFPbk2?iU-aiC-t12$N8gxNv}
zB0{@hHjSqD_wIZ5=8rcsl1AN{5sV;^d{tdt^X6{fJ?DPsoPYaTE_~u?<^emOMh6UI
zu=zaM+it^q{4v5SKSp@<Rk&+^LH5>LvDqxG)t|>4dMHw_f$Q$sTjm<xo#X!phm^IT
z6t=qvK|ssaX*GwzO_1IJOg=*+9L1^}1bHa+f({`uATyk%*Vd7wbg<mPAq6Qh-$$xd
z+<WgqCrwUGE`MN17kECim1q669G(nuYV&krQ9PboL#@6Ib>43gpYZEQr2>xAmdor1
zs@?PpPH3;uZR%cH<39N$^2mb>IV*Vou^*%~rWn2VPUM+&tXO<D#~-qi>@zPSYyK5y
zWDGKyw10<@XFqT;29)a9V8LK*`Y{HQIDJ+gKmwPht$#7HD<tSy%1I~xA&Y_&n5ai2
z25hN>Y94{j_@H&#-<Y(&+Q&AQJuK*w%Rv-@F?J7sUU*`@pSn|$K)!&j)rndYgw1gr
zanUxzveMbC7&sekAWpzhpmmj2V~mUf3IVp!KwK~75r%DNn<nT|siYGtwLg=;IVc6q
zCX&Qp!GFdYRjZTt`*0FLiHiWSiKvF@d2&_yoppN%vIE%25bxTFs#dX%lM0LP?{`|c
z__Xtgu3u%7qmD)@lbsIh8%G>ti$yYb--Y|s&!BgJD4d|nKa@+B--)XLe3Y~o?kK5J
z@Dz`1zMbbr{+X`KVVGtGy1Qxp@r{trr|!D1*MCWBxxLTbg2Dy?l>2E`C$JmWqgr*E
zjZvha$^Tj&&w*ytxqsH}BFKUp8Q8TGl`mrIle<GnSAdL<r|v$Bpi3^7p0$N^$>{^1
zBoyxd7n&2poV)Bij{U-AR3iuF7$nZ3w<g3I5CyjVd2huvoR)%&gJ0^!%>+o^1<%F#
z$A5nSt!bTm9`WKONV5r^H{I2`GYeTLOiO*ajBT~3J^UlaUicMD|Mqgu{f(8pwgd73
zw5ssj%U~05^C`b}THTci=qo^DGGxc5jr8O#v5CMK<hd7+T@(1Ho`$n@DfZP@5v^yu
zaIOrc{o*@W*;??tG|)ctG>$l|Sou+s_kW&ECg@@Nwuoviq26*xLZLX6?s9V{BrOmp
zC1|l=(@o#FYaQ!HCK+1MPv84KM%FC>sS8@yMZy*@R4a^r|9g0SW#S`_NY&qQ4v^fm
zRXndf!8peB_2F&Ziv0D>_@y#e-0}+s28FRP2%|I(12{Q2^aG%L*zyq6E2#yo1%E-v
zdJYy?^Pe~Is~3OFUH7fwtPfq&c3C%FdmZb)@nr^YSdBgDB-pV7vGxGTDFso4G#c%r
zeG;P_1+5nJ_F=n=RO=J?6GgPPIL;o^+0<G#ncAm4j+`N(9;GpCuzv~5maM?W3X>#g
zt?|4x1Q=sbO33u~(s$%><br@`Y=0EhXkc?W+<B{{*4W-&yvKe*=G))GmP)BY&4vhK
zLFaNPk^QIcGK-Xr$$2iXSGMxqXRpL}3jF;&cTg(#;yND6amefys?sgK?#5MI|G7`|
z(1SnbOP79x@|kDS_=8X3%C23hy6rDJu@;-lAp--nB29h$E7<;ih~u_x#eemPNbtQ3
zg?x!pNr=bVs&!i!V(QT-vD2ixr<;7C(6*hLBHC3f0#GiMNJd6bjRpX2blvsXzCNVc
zXdmmWO>3?-YnXg`9jBjm3g_SVPb5m=dL073F<6rzqIlp(f5+JHHqJTg_gJ=cIgKWG
zeuinyux-RzP-NY1Jf}dj(SIZ#1XyEnJr`>%qJ%IE`P$8YL#x@uaU86*3=faevv@Ij
zinJS_bv9D1c8c;d3h2G^GWz~|Ir5D6aoPvZnPcyF<Ih&DV%_u4aN-HS!_blp8#m90
z8E!rmly+gj*aT}6lu|g3Lt>Mu<yZtE)|v<I{Q=d<T@-?VBuU5y0e{_DpJ>XXTp1Y#
zZ;ss37);QOyLbsZYr@VgO>`1dT9j$q+**r>U@d(3vMV{|j5E<x_`we!q`Nr8(xGFC
zT9(>tf;f<byTiaVlsJeu7-LA11UqYOBEn%y4yRTrlF4RB5`z&)#>Np5Fa||ecS>x3
z!CWb5v~X(UM8lTWrhgojSG({te%ntbo0<Cd`Q+zT@#kN?jq%pAT=$s^d1CFiDE5I#
zVqRMd+n<1_o?38v{T4$jt`Nmla`_yN<KTLG3%j+JiSY?0#>QziTEtqD#0i2;JusJ>
zXH{Sf<g(D)N9-$V%{rkqn7FI+hDd6OdcA@uP)UKMhaF8<c7Kqt4n_-37BIWp&g>;F
z1-~EPDNxx}!Es$&$HUL=t^!1aQeQ8=@1c}JYmF$i+fbDXa`9>B+35OJ?6)cqfo2n1
z>?ZfKpJTsyI|Ij@$PJ&o9g$QtWsmb}t-<pIt>G(QyPB=T&vC)AU*xFb$utwl_=Pml
zX%k5xjdRwdaer>j<{MbQaV?*}<%_I5|D2gPXR$Qv4Mc=nZ~Rl9eE2c?2m6V2m=g4T
z=2sOMgUx24+>bUf^;cga=sAQ!#z6$M+FOgPRro$c0<Vv3WYf0iNsh7<^96L(5;s#3
zkq%<3aLD?3EHFH}nGKs?KwPs=oC~^B&rz9}O8qr*aeqJ~&LT!brG{L5(n=eB`ZFZU
zk3lAPb*|@<1bh!QG73AklTC!<{$oo@M$(NDW3Wk_7N24fJj(i1Y@#U#@1@%>6B~=8
z+|&y@rKo%4mao;<p~Feyf$cOhFOzY4K+M#V4BFJ`8h<}YqsX9olEum0gp?6wnSWK_
zIG|&a{(pWr;Y8{i*7MX~uAT`MBr)XjkPk3%NG05X@8nqhp&Kc83FD3QW=_qcx)Nl@
ztV@fhQ0{^|9$(GFFWo|KehG2Xnrf%0>k<CwH-FB1mYu{QwK0}CV_>_0=)iMJi8OZG
z7E~*w_~FYDYq2UV`JJuXNw#jF5WI&)-IoC#p?{rZyph9L2j#f4u5ji?BWW>Q6^>qf
zD%s*^$$Gt5JDnK`+SJMB@{BhkoO+E?!=a@t%D$13$8}Qo>*=9!?eC{6jWu>)fZW~R
zCVci02Kqk0g-6~*GlrH<?^6-zpdWJ}OEZFFiWhNw>7sp-Yyl!|XoLz|bBKp)Bwh<+
z!+$qG4pQ|n2AP~p|BmC-HNzH&3!>3pLIPww#Q~XWAEaz7hPZ=2yRIhZXR&pth)1kk
zu;u`&f_9khI~8A)rwBtuaS+b98fdgoYMR`^yAq9}5Vzmsq3`GT!Y_|vpuC7A(etbd
z<^!dWFvO0I;p-58i361aR9m~pUub>;7=Mdf3}A^vHtVr-WRkpBB-Rmf(U-qz&GKWg
zU0t1%=eaO->FR9RLNxL^Wo<eBm5sQ5mQVcdC&+bmqml%7T2K~(l!Z`-NH)Xwes~Y-
z|LYlQOPBHDV2P}bu_DL?&u_3&txl&IZ+t>yu%3qu4Pk!zQz}<nN~V8+M<0C&mVe}6
zTLd~zuaV#EP21F4B8pik!;P0;#lPKm7e{>Rv&iZ{!EWCMo{uYIV`&Uq2)Astu$wmF
zIWC8M{2H8GmPdd21nxS;F+)ewKRAd9HKGJTrq1L1V64HKbW_A}h@+6FfASPYS>j`l
zWAPPNlUsHajZGVoS`8crx$udn7k~C7SetHEse}zf%(d6>`m_JeSHE#Tr+?&p*cPU@
zM8>A-I<GNFlY7^J*g%&e8Ljc#m#(C`bu-1U-vMWxgWa+jiQ_kMwKo?;(o}6?0@0e{
zqQglVbs{XSkp{X_#dSSIglr}|zcCf)Mx8j;SU^QN8r4ZkM-1U-vXB_`=zj<jhI?Mh
z9t6wHf;5|$?rwtbd<TE+Q%Jd=`s4(I1B>{|U)+xPJ~oQ>sw(zG9LKojfIGkbCGLOV
zy9^F4LRV|h-NoefH>3&u^p)eRv%K(@n*|dD&{w8DIYDE?D@e0JWqgFZPH;*AWPs4`
z80UQr3_wz=GWy>ylZ`ad#D4_z_F{to>FQ#pvYE9(2i<Zc33wjP=FO<_am4qCMab%y
zlQ(QZOq!cYr#e|c>5x|rKa4Hq9&$RynAB2w`SSF9TiaF;4?a0a!$c6ILZUU&UBqtR
zM)RYWKoo+XX@3m{;JV1`!?-v972e0MN@d>n!PvC8?m!IQ0=ERxFn>|4!gMZLuc7L7
z`Y*XOwXEZG4(>{zUMK7yM9;|lR7&T%`wd}ljpb%z`llK}z`XKKQR%&E7#`4j#J9$B
zvoZBPaHgu5Z=VB9^4}hE(>O?Pb7zJ>sH4Bl_<wTmRJ`lS9i*QPz3q^9z2)HDXFY-c
z17~g;?-uLL@R)76cR4!2z1H8(E#IjG_gQzR+;Y0%TVF98I64|*uEhC&Gs!tU?0*1;
W-_)ZD!DRvf0000<MNUMnLSTZE+opN|

delta 3355
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

diff --git a/games/flappybird/src/main.c b/games/flappybird/src/main.c
index 569d04f..8f9a134 100644
--- a/games/flappybird/src/main.c
+++ b/games/flappybird/src/main.c
@@ -1,4 +1,5 @@
-/* Flappy Bird: Dong Nguyen's game, with the settings and random events of
+/* Flappix (modifié par Calcade le 19 octobre 2026 : son oiseau, ses colonnes, ses couleurs et son nom ; avant :
+ * une reprise de Flappy Bird). A flapping game in the style of Dong Nguyen's, with the settings and random events of
  * Tatone26's version in All the Apps (wind, gravity changes, moving pipes,
  * narrow and wide gaps...).
  *
@@ -15,7 +16,7 @@
 #include "../../common/np_text.h"
 
 #ifdef __ELF__ /* app name and API level, for the calculator's installer */
-const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Flappy Bird";
+const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Flappix";
 const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
 #endif
 
@@ -357,10 +358,10 @@ static void ground_row(color *d, int y) {
   int t = y - GY;
   if (t >= 2 && t < 12) { /* the green stripes, leaning, moving with the pipes */
     for (int x = 0, k = (rx + gph + 140 - t) % 14; x < rw; x++, k = k == 13 ? 0 : k + 1)
-      d[x] = k < 7 ? RGB(0x9CE659) : RGB(0x73BF2E);
+      d[x] = k < 7 ? RGB(0x6FD3C9) : RGB(0x4FB3A9);
     return;
   }
-  color c = t == 0 ? DARK : t == 1 ? RGB(0xE4FD8B) : t == 12 ? RGB(0x558022) : t == 13 ? RGB(0xD7A84C) : BEIGE;
+  color c = t == 0 ? DARK : t == 1 ? RGB(0xB8F2EC) : t == 12 ? RGB(0x2F8A82) : t == 13 ? RGB(0xD7A84C) : BEIGE;
   for (int x = 0; x < rw; x++) d[x] = c;
 }
 static void background(void) {
@@ -402,7 +403,7 @@ static int gap_bot(const pipe_t *p) { return gap_top(p) + (p->g >> 8); }
 static void make_pipes(void) {
   static const char shaft[] = "  OLLHHHLLMMMMMMMMMMMMMMMDMDDDDDDDEO  ", cap[] = "OLLHHHHLLMMMMMMMMMMMMMMMMMDMDDDDDDDDEO";
   static const char key[] = " OLHMDE";
-  static const color cols[] = {0, DARK, RGB(0x9CE659), RGB(0xE4FD8B), RGB(0x73BF2E), RGB(0x558022), RGB(0x4A7320)};
+  static const color cols[] = {0, DARK, RGB(0xF9A26C), RGB(0xFFD3A5), RGB(0xE2703A), RGB(0xB85428), RGB(0x8E3E1E)}; /* (Calcade : des colonnes de terre cuite) */
   for (int u = 0; u < LW; u++) {
     int a = 0, b = 0;
     while (key[a] != shaft[u]) a++;
@@ -433,14 +434,14 @@ static void pipes_draw(void) {
 
 /* ------------------------------------------------------------------ the bird */
 /* 24x17, 3 bits a pixel: none, outline, white, body, light, belly, lips (2) */
-static const uint8_t bird_body[154] = {
-  0x00,0x00,0x00,0x48,0x92,0x04,0x00,0x00,0x00,0x00,0x00,0x20,0x21,0x49,0x26,0x09,0x00,0x00,0x00,0x00,0x84,0x24,
-  0xC9,0x48,0x52,0x00,0x00,0x00,0x80,0x90,0xDB,0x16,0x49,0x92,0x02,0x00,0x00,0x90,0x6D,0xDB,0x22,0x49,0x92,0x14,
-  0x00,0x00,0xB2,0x6D,0xDB,0x22,0x49,0x4A,0x14,0x00,0x40,0xB6,0x6D,0xDB,0x22,0x49,0x4A,0x14,0x00,0xC8,0xB6,0x6D,
-  0xDB,0x22,0x49,0x4A,0x14,0x00,0xC8,0xB6,0x6D,0xDB,0x16,0x49,0x92,0x02,0x00,0xD9,0xB6,0x6D,0xDB,0xB6,0x24,0x49,
-  0x92,0x00,0xD9,0xB6,0x6D,0xDB,0x16,0xDB,0xB6,0x6D,0x07,0xD9,0xB6,0x6D,0xDB,0x62,0x27,0x49,0x92,0x00,0x48,0xBB,
-  0x6D,0xDB,0xE2,0xFF,0xFF,0xFF,0x00,0x40,0xDA,0xB6,0x6D,0x9B,0x24,0x49,0x12,0x00,0x00,0x92,0xB6,0x6D,0xDB,0x36,
-  0x00,0x00,0x00,0x00,0x80,0x24,0x6D,0xDB,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x49,0x12,0x00,0x00,0x00,0x00,0x00,
+static const uint8_t bird_body[154] = { /* (Calcade : l'oiseau de Flappix, tools/conformite/flappix_sprite.py) */
+  0x00,0x00,0x00,0x40,0x10,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,0xB2,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC8,
+  0xB6,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0xD9,0xB6,0x25,0x00,0x00,0x00,0x00,0x00,0x84,0xDC,0xB6,0x25,0x01,0x00,
+  0x00,0x00,0x80,0x90,0xE4,0xB6,0x48,0x0A,0x00,0x00,0x00,0x90,0x91,0xE4,0x16,0x49,0x52,0x00,0x00,0x00,0x90,0x91,
+  0xE4,0x16,0x49,0x49,0x00,0x00,0x00,0x90,0x8D,0xDC,0x16,0x49,0x49,0x00,0x00,0x00,0x90,0x6D,0xDB,0xB6,0x48,0x4A,
+  0x92,0x00,0x00,0x90,0x6D,0xDB,0xB6,0x25,0x99,0x6D,0x07,0x00,0x90,0x6D,0xDB,0xB6,0x6D,0xDB,0xFF,0x00,0x00,0x90,
+  0xB6,0x6D,0xDB,0xB6,0x6D,0x12,0x00,0x00,0x80,0xB4,0x6D,0xDB,0xB6,0x0D,0x00,0x00,0x00,0x00,0xA4,0x6D,0xDB,0xB6,
+  0x01,0x00,0x00,0x00,0x00,0x20,0x69,0xDB,0x26,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x92,0x00,0x00,0x00,0x00,0x00,
 };
 /* the wing, up, level and down: 8x7, 2 bits (none, outline, white, light) */
 static const uint8_t bird_wing[3][7][2] = {
@@ -450,9 +451,9 @@ static const uint8_t bird_wing[3][7][2] = {
 };
 static const uint8_t wing_y[3] = {3, 6, 7};
 /* body, light, belly: yellow, blue, red */
-static const color bird_cols[3][3] = {{RGB(0xF8C136), RGB(0xFCE88A), RGB(0xF39A22)},
-                                     {RGB(0x55B8E8), RGB(0xA6E2F8), RGB(0x2F86C8)},
-                                     {RGB(0xF0553A), RGB(0xFBA28A), RGB(0xC53A2A)}};
+static const color bird_cols[3][3] = {{RGB(0xB06CFF), RGB(0xD6B4FF), RGB(0xFFD6F0)},   /* (Calcade : violet, */
+                                     {RGB(0x2EC4B6), RGB(0x9BF2E8), RGB(0xE8FFF8)},   /*  menthe, */
+                                     {RGB(0xFF7A59), RGB(0xFFC2A8), RGB(0xFFF0D8)}};  /*  corail) */
 static color bpal[8];
 static int bird_x, bird_y, bird_a, bird_f, bird_on, bird_s; /* what is drawn: centre, angle (256 a turn), wing, 2x */
 static int bd_x, bd_y, bd_a, bd_f;                            /* ...and what the screen shows */
@@ -731,7 +732,7 @@ static void to_title(void) {
   make_scene();
   for (int i = 0; i < NP; i++) P[i].on = 0;
   for (int i = 0; i < NS; i++) st[i].life = 0;
-  letters(T("FlappyBird"), 3, 3, RGB(0xFFF3B8), RGB(0xF7A93A));
+  letters(T("Flappix"), 3, 3, RGB(0xFFF3B8), RGB(0xB06CFF));
   state = S_TITLE, tick = 0, sel = sv.mode, paused = 0, bird_a = 0, full = true;
 }
 static void to_settings(void) {
diff --git a/games/g2048/LICENSE-2048.txt b/games/g2048/LICENSE-2048.txt
new file mode 100644
index 0000000..c3a6205
--- /dev/null
+++ b/games/g2048/LICENSE-2048.txt
@@ -0,0 +1,24 @@
+2048 — the look of this version (colours, tile sizes) follows Gabriele Cirulli's 2048
+(https://github.com/gabrielecirulli/2048), released under the MIT License:
+
+The MIT License (MIT)
+
+Copyright (c) 2014 Gabriele Cirulli
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/games/g2048/docs/calcade.png b/games/g2048/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..51222ec5bca3cbfdbf13200fde3a28bf2cafe2ae
GIT binary patch
literal 14297
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
C_5H2@

literal 0
HcmV?d00001

diff --git a/games/games.json b/games/games.json
index eb9f6c9..7d89aa5 100644
--- a/games/games.json
+++ b/games/games.json
@@ -4,9 +4,9 @@
     "title": "NumDash",
     "tagline": "Jump to the beat",
     "credit": null,
-    "top": "0x3D6BFF",
-    "bottom": "0x14124F",
-    "accent": "0x35C759",
+    "top": "0x301A6E",
+    "bottom": "0x120A2E",
+    "accent": "0xFF7A59",
     "records": [
       "numdash.nds",
       "numdash.ndd",
@@ -15,7 +15,7 @@
       "numdash3.ndl"
     ],
     "shots": [
-      "docs/screenshots/menu.png"
+      "docs/calcade.png"
     ],
     "repo": "https://github.com/Mason363/NumDash",
     "reset": [
@@ -24,7 +24,7 @@
   },
   {
     "id": "crossyroad",
-    "title": "Crossy Road",
+    "title": "Piou Road",
     "tagline": "Hop, dodge, survive",
     "credit": null,
     "top": "0x45B649",
@@ -34,18 +34,18 @@
       "crossyroad.sav"
     ],
     "shots": [
-      "screenshots/title.png"
+      "docs/calcade.png"
     ],
     "repo": "https://github.com/Mason363/CrossyWorks"
   },
   {
     "id": "numblocks",
     "title": "NumBlocks",
-    "tagline": "Mine, craft, survive",
-    "credit": "Inspired by Minecraft, not affiliated with Mojang",
-    "top": "0x5D9C3A",
-    "bottom": "0x2E2116",
-    "accent": "0x7FCC4A",
+    "tagline": "Mine, build, survive",
+    "credit": null,
+    "top": "0x2FA59A",
+    "bottom": "0x1E2B3A",
+    "accent": "0xF2C14E",
     "records": [
       "numblocks.cfg",
       "nb1.nbw",
@@ -102,50 +102,50 @@
     "bottom": "0x123A63",
     "accent": "0xFFB020",
     "records": [
-      "drivemad.sav"
+      "numdrive.sav"
     ],
     "shots": [
-      "docs/shot1.png"
+      "docs/calcade.png"
     ],
-    "repo": "https://github.com/Mason363/NumDrive"
+    "repo": "https://github.com/Mason363/NumPlay/tree/main/games/numdrive"
   },
   {
     "id": "balatro",
-    "title": "Balatro",
-    "tagline": "Poker hands, wild jokers",
+    "title": "Jokeria",
+    "tagline": "Poker hands, wild Jokers",
     "credit": null,
-    "top": "0xFE5F55",
-    "bottom": "0x1E2A2C",
-    "accent": "0x009DFF",
+    "top": "0xE8457E",
+    "bottom": "0x241B38",
+    "accent": "0xF5A623",
     "records": [
       "balatro.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/balatro"
   },
   {
     "id": "buckshot",
-    "title": "Buckshot Roulette",
-    "tagline": "You, the Dealer, one shotgun",
+    "title": "Chevrotine",
+    "tagline": "You, the Automaton, one shotgun",
     "credit": null,
-    "top": "0x4A2A26",
-    "bottom": "0x0E0A09",
-    "accent": "0xD83A2E",
+    "top": "0x3E1E54",
+    "bottom": "0x160C22",
+    "accent": "0xDEB050",
     "records": [
       "buckshot.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/buckshot"
   },
   {
     "id": "blockblast",
-    "title": "Block Blast",
+    "title": "Block Boom",
     "tagline": "Fit the blocks, blast the lines",
-    "credit": "Based on Block Blast! by Hungry Studio",
+    "credit": null,
     "top": "0x516FC5",
     "bottom": "0x1A264C",
     "accent": "0xFBD008",
@@ -154,30 +154,30 @@
       "blockblast.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "app": "BlockBlast.nwa",
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/blockblast"
   },
   {
     "id": "portal",
-    "title": "Portal Returns",
-    "tagline": "Think with portals",
+    "title": "Warp Lab",
+    "tagline": "Two warps, one way out",
     "credit": null,
-    "top": "0x4A4952",
-    "bottom": "0x1B1A20",
-    "accent": "0x1C83E0",
+    "top": "0x2B2350",
+    "bottom": "0x120E24",
+    "accent": "0xFF5FA2",
     "records": [
       "portal.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/portal"
   },
   {
     "id": "tetris",
-    "title": "Tetris",
+    "title": "Stackfall",
     "tagline": "Stack and clear lines",
     "credit": "By Tatone26, from All the Apps",
     "top": "0x8A4DFF",
@@ -188,7 +188,7 @@
       "tetris.set"
     ],
     "shots": [
-      "docs/shot1.png"
+      "docs/calcade.png"
     ],
     "repo": "https://github.com/Tatone26/Numworks-games/tree/main/apps/tetris"
   },
@@ -197,47 +197,47 @@
     "title": "Chess",
     "tagline": "Bots, puzzles, 2 players",
     "credit": null,
-    "top": "0x7FA650",
-    "bottom": "0x22211E",
-    "accent": "0x81B64C",
+    "top": "0x7D8FB3",
+    "bottom": "0x1E222E",
+    "accent": "0x3BA99C",
     "records": [
       "numchess.sav"
     ],
     "shots": [
-      "docs/italian.png"
+      "docs/calcade.png"
     ],
     "repo": "https://github.com/Mason363/NumChess"
   },
   {
     "id": "flappybird",
-    "title": "Flappy Bird",
+    "title": "Flappix",
     "tagline": "Flap through the pipes",
     "credit": "Inspired by Tatone26's All the Apps",
     "top": "0x4EC0CA",
     "bottom": "0x10474C",
-    "accent": "0xF8B733",
+    "accent": "0xB06CFF",
     "records": [
       "flappy.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "app": "FlappyBird.nwa",
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/flappybird"
   },
   {
     "id": "pacman",
-    "title": "Pac-Man",
-    "tagline": "Eat dots, dodge ghosts",
+    "title": "Munchy Maze",
+    "tagline": "Munch dots, dodge monsters",
     "credit": "Inspired by Tatone26's All the Apps",
-    "top": "0x2A2AE0",
-    "bottom": "0x05052A",
-    "accent": "0xFFD800",
+    "top": "0x8A3FD9",
+    "bottom": "0x1B0B33",
+    "accent": "0x3EE6A8",
     "records": [
       "pacman.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "app": "PacMan.nwa",
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/pacman"
@@ -247,31 +247,31 @@
     "title": "Snake",
     "tagline": "Eat apples, grow long",
     "credit": "Inspired by Tatone26's All the Apps",
-    "top": "0x5B9A36",
-    "bottom": "0x16330B",
-    "accent": "0x4E7CF6",
+    "top": "0x2E6B57",
+    "bottom": "0x0F2A20",
+    "accent": "0xFF8A3D",
     "records": [
       "snake.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "app": "Snake.nwa",
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/snake"
   },
   {
     "id": "connectfour",
-    "title": "Connect Four",
+    "title": "Line Up 4",
     "tagline": "Four in a row wins",
     "credit": "Inspired by Tatone26's All the Apps",
-    "top": "0x2A66D0",
-    "bottom": "0x0A1F4A",
-    "accent": "0xF4C20D",
+    "top": "0x6B46C1",
+    "bottom": "0x1E1240",
+    "accent": "0xFFC24B",
     "records": [
       "connect4.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "app": "ConnectFour.nwa",
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/connectfour"
@@ -283,12 +283,12 @@
     "credit": "Inspired by Tatone26's All the Apps",
     "top": "0x34A249",
     "bottom": "0x123F20",
-    "accent": "0x1A73E8",
+    "accent": "0x6C4AD9",
     "records": [
       "solitaire.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "app": "Solitaire.nwa",
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/solitaire"
@@ -297,7 +297,7 @@
     "id": "g2048",
     "title": "2048",
     "tagline": "Slide, merge, reach 2048",
-    "credit": "Based on 2048 by Gabriele Cirulli",
+    "credit": "Based on 2048 by Gabriele Cirulli (MIT)",
     "top": "0xC9A26B",
     "bottom": "0x3C2E22",
     "accent": "0xEDC22E",
@@ -305,7 +305,7 @@
       "g2048.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "app": "2048.nwa",
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/g2048"
@@ -322,24 +322,24 @@
       "mines.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "app": "Minesweeper.nwa",
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/minesweeper"
   },
   {
     "id": "breakout",
-    "title": "Block Breaker",
+    "title": "Brick Breaker",
     "tagline": "Break every brick",
     "credit": null,
-    "top": "0x3A3440",
-    "bottom": "0x0E0B10",
-    "accent": "0x5784E6",
+    "top": "0x2A3A6B",
+    "bottom": "0x0A1024",
+    "accent": "0x8E6CF0",
     "records": [
       "breakout.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "app": "BlockBreaker.nwa",
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/breakout"
@@ -356,7 +356,7 @@
       "numvisuals.sav"
     ],
     "shots": [
-      "docs/shot.png"
+      "docs/calcade.png"
     ],
     "colors": 48,
     "repo": "https://github.com/Mason363/NumPlay/tree/main/games/numvisuals"
diff --git a/games/minesweeper/README.md b/games/minesweeper/README.md
index a485aa7..d0c9929 100644
--- a/games/minesweeper/README.md
+++ b/games/minesweeper/README.md
@@ -1,8 +1,11 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Minesweeper / Démineur**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de le Démineur de Windows (Microsoft) : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Minesweeper / Démineur">
+
 # Minesweeper
 
 The Windows classic for the NumWorks calculator: the gray field, the red LED counters and the smiley, on the teal desktop.
 
-<img src="docs/shot.png" width="320" alt="A game of Beginner in progress">
 
 - **Beginner** (9 x 9, 10 mines), **Intermediate** (16 x 16, 40) and **Expert** (30 x 16, 99), or a **Custom** field up to 30 x 16. Every size fits the screen whole.
 - **Your first square is always safe** and opens an area (or, in Options, is only safe, like Windows).
diff --git a/games/minesweeper/docs/calcade.png b/games/minesweeper/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..7eafc639ff3d1caf5021f1c75d06fdaeed2b40cb
GIT binary patch
literal 3744
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
Lu3f6>^yGg4OgbW*

literal 0
HcmV?d00001

diff --git a/games/minesweeper/lang/fr.txt b/games/minesweeper/lang/fr.txt
index bc00a2b..489dcd7 100644
--- a/games/minesweeper/lang/fr.txt
+++ b/games/minesweeper/lang/fr.txt
@@ -45,7 +45,7 @@ for squares you are unsure of.	pour les cases incertaines.
 Every field can be cleared	Chaque grille se résout
 by logic alone.	par la seule logique.
 The first square opens an area.	La 1re case ouvre une zone.
-Off: only safe, like Windows.	Sinon, sûre, comme Windows.
+Off: only that square is safe.	Sinon, seule cette case est sûre.
 Off: the cursor stops at	Sinon, le curseur s'arrête
 the edges of the field.	aux bords de la grille.
 Options	Options
diff --git a/games/minesweeper/lang/zh.txt b/games/minesweeper/lang/zh.txt
index cd80e0b..005c277 100644
--- a/games/minesweeper/lang/zh.txt
+++ b/games/minesweeper/lang/zh.txt
@@ -44,7 +44,7 @@ for squares you are unsure of.	用于不确定的方块。
 Every field can be cleared	每局都能
 by logic alone.	只靠推理解开。
 The first square opens an area.	第一下打开一片区域。
-Off: only safe, like Windows.	关闭：只保证安全，同 Windows。
+Off: only that square is safe.	关闭：只有这一格安全。
 Off: the cursor stops at	关闭：光标停在
 the edges of the field.	雷区边缘。
 Options	选项
diff --git a/games/minesweeper/src/main.c b/games/minesweeper/src/main.c
index 32b30a6..af8a928 100644
--- a/games/minesweeper/src/main.c
+++ b/games/minesweeper/src/main.c
@@ -1,4 +1,5 @@
-/* Minesweeper, like the one that came with Windows: the gray field, the red
+/* Minesweeper (modifié par Calcade le 19 octobre 2026 : ses couleurs et son visage ; avant : l'aspect du Démineur
+ * de Windows), in the style of the classic desktop games: the gray field, the red
  * LED counters and the smiley, on the teal desktop. On top of the classic
  * rules it has a "no guessing" option that only deals fields you can clear by
  * logic alone, a cursor that wraps around, and it keeps your game when you
@@ -22,14 +23,14 @@ const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level")))
 
 typedef uint16_t color;
 #define RGB(c) (color)((((c) >> 8) & 0xF800) | (((c) >> 5) & 0x07E0) | (((c) >> 3) & 0x1F))
-#define GRAY RGB(0xC0C0C0)
-#define DARK RGB(0x808080)
+#define GRAY RGB(0xD3CFE3)  /* (Calcade : ses couleurs, pas celles de Windows) */
+#define DARK RGB(0x7A7396)
 #define WHITE 0xFFFF
 #define BLACK 0
-#define NAVY RGB(0x000080)
-#define TEAL RGB(0x008080)
+#define NAVY RGB(0x1F5F5B)
+#define TEAL RGB(0x2B1E3F)
 #define RED RGB(0xFF0000)
-#define YELLOW RGB(0xFFFF00)
+#define YELLOW RGB(0x7CE8B5)  /* the face: mint */
 
 /* what the keys do: the arrows (or 8 4 6 2), open (OK, EXE, 5), flag (Backspace, Shift, 0) */
 enum { K_UP = 1, K_DOWN = 2, K_LEFT = 4, K_RIGHT = 8, K_OK = 16, K_FLAG = 32, K_BACK = 64, K_HOME = 128, K_ANY = 256 };
@@ -186,6 +187,7 @@ static void face(int x, int y, int k, int f) {
       if (j >= 5 && j < 14 && faces[f][j - 5] >> (i < 9 ? i : 16 - i) & 1) c = BLACK;
       pfill(x + i * k, y + j * k, k, k, c);
     }
+  pfill(x + 8 * k, y - 2 * k, k, 2 * k, BLACK), pfill(x + 7 * k, y - 3 * k, 3 * k, k, RED); /* (Calcade : une antenne) */
 }
 
 /* the LED counters: seven segments, lit ones red */
@@ -894,7 +896,7 @@ static const char *const OPTS[4] = {T("Marks (?)"), T("No guessing"), T("Open an
 static const char *const HINTS[4][2] = {
   {T("Flag, then ?, then nothing:"), T("for squares you are unsure of.")},
   {T("Every field can be cleared"), T("by logic alone.")},
-  {T("The first square opens an area."), T("Off: only safe, like Windows.")},
+  {T("The first square opens an area."), T("Off: only that square is safe.")},
   {T("Off: the cursor stops at"), T("the edges of the field.")},
 };
 /* the options on, as the rows show them (the last two are kept inverted) */
diff --git a/games/numblocks/Makefile b/games/numblocks/Makefile
index be0fc41..36ed594 100644
--- a/games/numblocks/Makefile
+++ b/games/numblocks/Makefile
@@ -1,14 +1,13 @@
-# NumBlocks: a game like Minecraft 1.8.8 for the NumWorks calculator (part of NumPlay).
+# NumBlocks: a block-building game for the NumWorks calculator (part of NumPlay; its own art, world and texts: Calcade, 19 October 2026).
 #   make            output/numblocks.nwa
 #   make check      link it like the calculator does (output/numblocks.bin)
 #   make host       build/play: the game on a computer, for tests and screenshots
-#   make data       src/data.c from Minecraft 1.8.8's client.jar (CLIENT_JAR=path)
+#   make data       src/data.c from NumBlocks' own pictures (../../tools/conformite/numblocks_art.py)
 Q ?= @
 CC = arm-none-eabi-gcc
 NWLINK ?= npx --yes -- nwlink@1.0.0
 BUILD_DIR = output
 STRIP ?= arm-none-eabi-strip --strip-unneeded
-CLIENT_JAR ?= client.jar
 GEN ?= src/gen.c
 GAME = src/main.c src/world.c src/edits.c src/render.c src/player.c src/phys.c src/inv.c src/entity.c src/mob.c src/tick.c src/gui.c src/hand.c src/save.c src/data.c src/names.c src/command.c $(GEN)
 HEADERS = $(wildcard src/*.h) ../common/epsilon_app.h ../common/epsilon_files.h ../common/np_text.h Makefile
@@ -61,7 +60,12 @@ build/play_ref: $(GAME) src/plat_host.c tests/play.c $(HEADERS)
 data:
 	python3 tools/blocks.py --header > src/blocks.h
 	python3 tools/items.py --header > src/items.h
-	python3 tools/pack.py $(CLIENT_JAR)
+	python3 tools/names.py > src/names.c
+	python3 ../../tools/conformite/numblocks_models.py
+	mkdir -p build && python3 ../../tools/conformite/numblocks_art.py build/art.zip
+	python3 tools/pack.py build/art.zip
+	python3 tools/icon.py build/art.zip
+	python3 ../../tools/conformite/numblocks_lang.py
 
 clean:
 	$(Q) rm -rf $(BUILD_DIR) build
diff --git a/games/numblocks/README.md b/games/numblocks/README.md
index 321b387..eefff5a 100644
--- a/games/numblocks/README.md
+++ b/games/numblocks/README.md
@@ -1,55 +1,75 @@
+> **Version Calcade (19 octobre 2026).** NumBlocks a été refait pour n'avoir que ce qui est à lui : ses
+> images (dessinées par `tools/conformite/numblocks_art.py`), sa police, ses créatures, son générateur de
+> mondes (`src/gen.c`), ses noms, ses textes, ses commandes et ses traductions. La façon de jouer reste.
+
 # NumBlocks
 
-Minecraft 1.8.8 on your NumWorks calculator. NumBlocks isn't a look-alike: it follows Minecraft 1.8.8 exactly, so a seed gives you the very same world that Minecraft 1.8.8 makes, block for block, with its blocks, items, recipes, mobs, textures, font and screens.
+A block-building game for your NumWorks calculator: a world of blocks to explore, dig, build and survive in,
+drawn in 3D, with its own look, its own creatures and its own worlds.
 
-<img src="docs/shot.png" width="320" alt="NumBlocks: oak trees and lilacs, with a sheep, a cow, a pig, a chicken and a creeper">
+<img src="docs/shot.png" width="320" alt="NumBlocks: a sea-green meadow with a woolly, a strider, a humpox and a snuffler">
 
-- **The same worlds as Minecraft 1.8.8:** type a seed and you get the world Minecraft 1.8.8 makes, block for block: the same terrain, biomes, hills, caves, lakes and trees. Or a superflat world to build on.
-- **Survival:** health, hunger, day and night, zombies, skeletons, creepers and spiders, and pigs, cows, sheep and chickens.
-- **Weather:** rain, snow and thunderstorms with lightning, as often as in 1.8.
-- **Crafting:** 129 items and all their 1.8 recipes, a furnace, chests, tools that wear out, armor.
+- **Worlds of their own:** type a number (or nothing) and get a world of plains, forests, birch and dark forests,
+  taiga, snowy plains, jungles, savannas, deserts, badlands, mountains, swamps, rivers, beaches and seas. Caves and
+  chambers run under them, with ores, lava and now and then a mossy room. Or a flat world to build on.
+- **Survival:** health, hunger, day and night; mudlings that leap, thornlings that root and shoot, skitters that creep up when you look away, and the fizzler, a walking powder keg
+  that blows up; woollies (fleece on long legs), striders (running birds), humpoxen and snufflers to farm.
+- **Weather:** rain, snow and storms with lightning.
+- **Crafting:** 129 items, a furnace, chests, tools that wear out, armour.
 - **Fishing:** cast, wait for the bite, reel in fish, junk or treasure.
-- **Building:** 250 kinds of blocks, doors, beds to sleep through the night, stairs, torches that light up caves, flowing water and lava, farms that grow.
-- **Fire:** light it with flint and steel. It spreads and burns wood, leaves and wool, like in 1.8.
+- **Building:** 250 kinds of blocks, doors, beds to sleep through the night, stairs, torches that light up caves,
+  flowing water and lava, farms that grow.
+- **Fire:** light it with flint and steel. It spreads and burns wood, leaves and wool.
 - **Creative mode:** fly, every block and item, break things at once, and search for any block.
-- **Commands:** /gamemode, /give, /time, /weather, /tp and more, with cheats on (Allow Cheats, or Open to LAN).
-- **Your worlds:** keep several, give them names, and they save as you play and when you quit. A copy also goes into `numblocks_saves.py`, so installing the game again doesn't erase them.
-- **Not in yet:** the Nether and the End, redstone circuits and pistons, villages and other structures, enchanting and brewing.
+- **Commands:** /mode, /give, /time, /weather, /tp, /place, /spawn and more (/help lists them), when the world has
+  commands on (in its settings, or Turn On Commands in the pause menu).
+- **Your worlds:** keep several, give them names, and they save as you play and when you quit. A copy also goes
+  into `numblocks_saves.py`, so installing the game again doesn't erase them.
 
 ## Controls
 
 | Key | What it does |
 | --- | --- |
 | Arrows | Look around |
-| , π √ x² | Walk forward, left, back, right (like W, A, S, D) |
+| , π √ x² | Go forward, left, back, right |
 | shift | Jump (twice in Creative: fly) |
-| alpha | Sneak |
-| ⌫ | Sprint (or press forward twice) |
-| OK | Mine, attack (like the left mouse button) |
-| Back | Place, use, eat (like the right mouse button) |
-| var | Inventory |
-| 1 to 9 | Pick a hotbar slot |
-| x,n,t | Drop the item |
-| log | Pick the block you look at |
+| alpha | Crouch |
+| ⌫ | Run (or press forward twice) |
+| OK | Break, hit |
+| Back | Place, use, eat |
+| var | Bag |
+| 1 to 9 | Pick a belt slot |
+| x,n,t | Throw the item |
+| log | Copy the block you look at |
 | × | Chat |
 | ÷ | Type a command (toolbox finishes words) |
 | ans | Pause |
 | Home | Save and quit |
 
-You can change these keys in Options, then Controls. In the inventory, the arrows move between slots, OK picks up or puts down, EXE takes or leaves one, and shift with OK moves a whole stack. To spread a stack, hold OK and move over the slots: it splits evenly when you let go (hold EXE to drop one in each). In Creative, the Search Items tab finds blocks as you type, and shift with up or down jumps to the top or bottom of a tab. The game shows these keys the first time you open it, and again from Options, then Controls.
+You can change these keys in Settings, then Keys. In the bag, the arrows move between slots, OK picks up or puts
+down, EXE takes or leaves one, and shift with OK moves a whole stack. To spread a stack, hold OK and move over the
+slots: it splits evenly when you let go (hold EXE to drop one in each). In Creative, the Search tab finds blocks as
+you type, and shift with up or down jumps to the top or bottom of a tab. The game shows these keys the first time
+you open it, and again from Settings, then Keys.
 
 ## Get it
 
-It comes inside [NumPlay](https://github.com/Mason363/NumPlay), or on its own as `NumBlocks.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest).
+It comes inside [NumPlay](https://github.com/Mason363/NumPlay), or on its own as `NumBlocks.nwa`.
 
-## Credits
+## How it is made
 
-Inspired by Minecraft, but not affiliated with Mojang or Microsoft. Go play the real Minecraft and support the people who made it! The textures, the font and the screens come from Minecraft 1.8.8, and the world is made the way Minecraft 1.8.8 makes it.
+- `src/gen.c`: the world generator (gradient noise, its biomes, caves, ores and trees).
+- `tools/conformite/numblocks_art.py` (at the root of the repository): every picture of the game, drawn by code;
+  `numblocks_models.py`: the creatures' shapes and skins; `numblocks_lang.py`: the French and Chinese.
+- `make data` turns them into `src/data.c`, `src/mob_skin.h`, `src/names.c`, `src/icon.png` and `lang/`.
+- `make host` builds the game for a computer (`build/play`, for screenshots), `make test` runs its unit tests.
 
-Also try [Numcraft](https://github.com/yannis300307/NumcraftRust) by yannis300307, the first Minecraft-like game for the NumWorks.
+## Credits
 
-Made by Mason Chen as part of NumPlay.
+Made by Mason Chen as part of NumPlay. Its own pictures, creatures, world generator, texts and translations:
+Calcade (19 October 2026).
 
 ## License
 
-The game's code is licensed under the GNU General Public License v3.0: see the `LICENSE` file at the root of the repository. The textures, font and screens come from Minecraft 1.8.8 and belong to Mojang: they are not covered (see Credits).
+The game's code and its pictures are licensed under the GNU General Public License v3.0: see the `LICENSE` file at
+the root of the repository.
diff --git a/games/numblocks/docs/shot.png b/games/numblocks/docs/shot.png
index 2d1bf7080db693a1793440f1874564286c4ff535..6ae1db60c7811afa0e30a3e66d317fe888da4c78 100644
GIT binary patch
literal 17183
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

literal 14442
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

diff --git a/games/numblocks/lang/fr.txt b/games/numblocks/lang/fr.txt
index c2447b1..c2cf4cf 100644
--- a/games/numblocks/lang/fr.txt
+++ b/games/numblocks/lang/fr.txt
@@ -1,269 +1,117 @@
 # NumBlocks in French: the English text as in the source, a tab, the translation (see tools/lang.py).
-# Minecraft's own French where it has one (fr_FR), shorter where a button or a key is narrow.
-# ---- menus
-Done	Terminé
-Singleplayer	Solo
-Multiplayer	Multijoueur
-Options...	Options...
-Quit Game	Quitter le jeu
-Play Selected World	Jouer au monde choisi
-Create New World	Créer un nouveau monde
-Rename	Renommer
-Delete	Supprimer
-Re-Create	Recréer
-Cancel	Annuler
-Game Mode: 	Mode de jeu : 
-Creative	Créatif
+# Our own translations (Calcade, 19 October 2026: tools/conformite/numblocks_lang.py).
+Try: %s	Essaie : %s
+%s: a number was expected	%s : il faut un nombre
+%d is too small (at least %d)	%d, c'est trop peu (au moins %d)
+%d is too big (at most %d)	%d, c'est trop (au plus %d)
+/clear [item]: empties your bag (or takes that item)	/clear [objet] : vide ton sac (ou enlève cet objet)
+/effect <poison|hunger|healing|clear> [seconds] [strength]	/effect <poison|hunger|healing|clear> [secondes] [force]
+/give <item> [how many]	/give <objet> [combien]
+/help [page|command]	/help [page|commande]
+/home [x y z]: you start again here	/home [x y z] : tu repartiras d'ici
+/kill: back to your starting point	/kill : retour au point de départ
+/level <calm|easy|normal|hard>	/level <calm|easy|normal|hard>
+/me <what you do>	/me <ce que tu fais>
+/mode <survival|creative>	/mode <survival|creative>
+/place <block> [x y z] [keep|break]	/place <bloc> [x y z] [keep|break]
+/rain: starts or stops the rain	/rain : fait tomber ou arrête la pluie
+/rule [name] [on|off]	/rule [nom] [on|off]
+/say <message>	/say <message>
+/seed: this world's number	/seed : le numéro de ce monde
+/spawn <creature|lightning> [x y z]	/spawn <créature|lightning> [x y z]
+/time [day|noon|night|midnight|number]	/time [day|noon|night|midnight|nombre]
+/tp <x> <y> <z>  (^ for where you are, ^5 for 5 from it)	/tp <x> <y> <z>  (^ : là où tu es, ^5 : 5 plus loin)
+/weather <clear|rain|storm> [seconds]	/weather <clear|rain|storm> [secondes]
+/xp <points> or /xp <levels>lv	/xp <points> ou /xp <niveaux>lv
 Survival	Survie
-Allow Cheats: 	Autoriser les cheats : 
-ON	Oui
-OFF	Non
-Seed: 	Graine : 
-(random)	(aléatoire)
-World Type: 	Type de monde : 
-Superflat	Superplat
-Default	Par défaut
-Peaceful	Paisible
+Creative	Création
+Calm	Calme
 Easy	Facile
-Normal	Normale
+Normal	Normal
 Hard	Difficile
-Difficulty: 	Difficulté : 
-Graphics: 	Graphismes : 
-Fancy	Détaillés
-Fast	Rapides
-Look Speed: 	Sensibilité : 
-Clouds: 	Nuages : 
-View Bobbing: 	Balancement : 
-Controls...	Commandes...
-Back to Game	Retour au jeu
-Achievements	Succès
-Statistics	Statistiques
-Open to LAN	Ouvrir en LAN
-Save and Quit to Title	Sauvegarder et quitter
-Start LAN World	Lancer le monde en LAN
-Respawn	Réapparaître
-Title screen	Écran titre
-New World	Nouveau monde
-Copy of 	Copie de 
-Select World	Choisir un monde
-Creative Mode	Mode Créatif
-Survival Mode	Mode Survie
-, Cheats	, cheats
-No worlds yet	Pas encore de monde
-Storage free: 	Espace libre : 
- KB	 Ko
-World Name	Nom du monde
-Unlimited resources, free flying and	Ressources illimitées, vol libre et
-destroy blocks instantly	destruction instantanée des blocs
-Search for resources, crafting, gain	Cherche des ressources, fabrique, gagne
-levels, health and hunger	des niveaux, de la santé et de la faim
-alpha: letters or digits, shift: capitals, OK: done	alpha : lettres/chiffres, shift : majuscules, OK : fini
-Leave blank for a random seed	Laisse vide pour une graine aléatoire
-Rename World	Renommer le monde
-Enter Name	Saisis le nom
-Are you sure you want to delete this world?	Veux-tu vraiment supprimer ce monde ?
-'	\"
-' will be lost forever! (A long time!)	\" sera perdu à jamais ! (Très longtemps !)
-Options	Options
-Game menu	Menu du jeu
-LAN World	Monde en LAN
-Settings for Other Players	Réglages pour les autres joueurs
-Loading world	Chargement du monde
-Building terrain	Construction du terrain
-You died!	Tu es mort !
-Score: 	Score : 
-Inspired by Minecraft, not affiliated with Mojang	Inspiré de Minecraft, sans lien avec Mojang
-Made by Mason Chen as part of NumPlay	Créé par Mason Chen pour NumPlay
-# ---- containers
-Crafting	Artisanat
-Inventory	Inventaire
-Furnace	Fourneau
-Chest	Coffre
-# ---- the chat
-alpha: abc/123   shift: Abc   toolbox: finish the word	alpha : abc/123   shift : Abc   outils : finir le mot
-x,n,t  :     var  _     x10^x  ~     ans  space     0  @	x,n,t  :     var  _     x10^x  ~     ans  espace     0  @
-You can only sleep at night	Tu ne peux dormir que la nuit
-You may not rest now, there are monsters nearby	Tu ne peux pas te reposer, des monstres rôdent
-# ---- the keys: names in Controls (Minecraft's), then the key sheet's words (one word for both where English has one)
-Controls	Commandes
-Key Sheet...	Plan des touches...
-Reset	Réinit.
-Reset Keys	Tout réinitialiser
-Gameplay	Jeu
-Miscellaneous	Divers
-Movement	Mouvement
-Attack/Destroy	Attaquer/Détruire
-Mine, attack	Miner, frapper
-Pick Block	Choisir le bloc
-Pick block	Choisir
-Use Item/Place Block	Utiliser/Placer
-Place, use	Poser, utiliser
-Drop Item	Jeter l'objet
-Drop	Jeter
-Hotbar Slot 1	Emplacement 1
-Hotbar Slot 2	Emplacement 2
-Hotbar Slot 3	Emplacement 3
-Hotbar Slot 4	Emplacement 4
-Hotbar Slot 5	Emplacement 5
-Hotbar Slot 6	Emplacement 6
-Hotbar Slot 7	Emplacement 7
-Hotbar Slot 8	Emplacement 8
-Hotbar Slot 9	Emplacement 9
-Slot 1	Case 1
-Slot 2	Case 2
-Slot 3	Case 3
-Slot 4	Case 4
-Slot 5	Case 5
-Slot 6	Case 6
-Slot 7	Case 7
-Slot 8	Case 8
-Slot 9	Case 9
-Pause	Pause
-Jump	Saut
-Sneak	Furtif
-Sprint	Courir
-Strafe Left	Pas à gauche
-Left	Gauche
-Strafe Right	Pas à droite
-Right	Droite
-Walk Backwards	Reculer
-Backward	Reculer
-Walk Forwards	Avancer
-Forward	Avancer
-Open Chat	Ouvrir le chat
-Chat	Chat
-Open Command	Ouvrir les commandes
-Command	Commande
-Look	Vue
-Back	Retour
-toolbox	outils
-NONE	AUCUNE
-Home	Accueil
-Save, quit	Quitter
-1 to 9: hotbar slot.	1 à 9 : case de la barre.
-EXE: as OK.	EXE : comme OK.
-# (a key, these two, then what it does)
-: 	 : 
-.	.
-Forward twice: sprint.   Jump twice: fly (Creative).	Avancer 2 fois : courir.   Sauter 2 fois : voler (Créatif).
-Menus: OK takes or puts, EXE one, shift+OK moves.	Menus : OK prend ou pose, EXE un seul, shift+OK déplace.
-Hold OK and move over slots to spread a stack out.	Garde OK sur des cases pour y répartir une pile.
-# ---- the commands' answers (Minecraft's en_US words: %s and %d take the same things in turn, strings and numbers apart)
-Usage: %s	Utilisation : %s
-'%s' is not a valid number	'%s' n'est pas un nombre valide
-The number you have entered (%d) is too small, it must be at least %d	Le nombre saisi (%d) est trop petit, il doit valoir au moins %d
-The number you have entered (%d) is too big, it must be at most %d	Le nombre saisi (%d) est trop grand, il doit valoir au plus %d
-That player cannot be found	Ce joueur est introuvable
-Your game mode has been updated	Ton mode de jeu a été mis à jour
-Set own game mode to %s	Ton mode de jeu est maintenant : %s
-Set the time to %d	Heure réglée sur %d
-Added %d to the time	%d ajouté à l'heure
-Time is %d	L'heure est %d
-Changing to clear weather	Le temps devient clair
-Changing to rainy weather	Il se met à pleuvoir
-Changing to rain and thunder	Un orage éclate
-There is no such item with name %s	Il n'y a pas d'objet nommé %s
-Given %s * %d to %s	%s * %d donné à %s
-Teleported %s to %s	%s téléporté vers %s
-Teleported Player to 	Player téléporté en 
-Killed %s	%s a été tué
-Set game difficulty to %s	Difficulté du jeu : %s
-Set Player's spawn point to (	Point d'apparition de Player placé en (
-Taken %d levels from %s	%d niveaux retirés à %s
-Given %d levels to %s	%d niveaux donnés à %s
-Cannot give player negative experience points	Impossible de donner des points d'expérience négatifs
-Given %d experience to %s	%d points d'expérience donnés à %s
-Could not clear the inventory of %s, no items to remove	Impossible de vider l'inventaire de %s : aucun objet à retirer
-Cleared the inventory of %s, removing %d items	Inventaire de %s vidé : %d objets retirés
-Couldn't take any effects from %s as they do not have any	Impossible de retirer les effets de %s : il n'en a aucun
-Took all effects from %s	Tous les effets de %s ont été retirés
-There is no such mob effect with ID %d	Il n'y a pas d'effet d'ID %d
-There is no such mob effect with ID %s	Il n'y a pas d'effet d'ID %s
-# (an effect's name between these)
-Couldn't take 	Impossible de retirer l'effet 
- from Player as they do not have the effect	 à Player : il ne l'a pas
-Took 	Effet 
- from Player	 retiré à Player
-Given 	Effet 
- (ID 	 (ID 
-) * 	) * 
- to Player for 	 donné à Player pour 
- seconds	 secondes
 Poison	Poison
 Hunger	Faim
-Regeneration	Régénération
-Cannot summon the object out of the world	Impossible d'invoquer l'objet hors du monde
-Object successfully summoned	Objet invoqué
-Unable to summon object	Impossible d'invoquer l'objet
-There is no such block with ID/name %s	Il n'y a pas de bloc d'ID ou de nom %s
-Cannot place block outside of the world	Impossible de placer un bloc hors du monde
-The block couldn't be placed	Le bloc n'a pas pu être placé
-Block placed	Bloc placé
-No game rule called '%s' is available	Aucune règle de jeu ne s'appelle '%s'
-Game rule has been updated	La règle de jeu a été mise à jour
-Unknown command. Try /help for a list of commands	Commande inconnue. Essaie /help pour la liste des commandes
---- Showing help page %d of %d (/help <page>) ---	--- Page d'aide %d sur %d (/help <page>) ---
-Tip: Use the toolbox key while typing a command to auto-complete the command or its arguments	Astuce : pendant la saisie d'une commande, la touche outils complète la commande ou ses arguments
-You do not have permission to use this command	Tu n'as pas la permission d'utiliser cette commande
-Toggled downfall	Précipitations inversées
-# ---- the commands' usage (their words, as typed, stay)
-/clear [player] [item] [data] [maxCount] [dataTag]	/clear [joueur] [objet] [données] [quantitéMax] [étiquette]
-/difficulty <new difficulty>	/difficulty <nouvelle difficulté>
-/effect <player> <effect> [seconds] [amplifier] [hideParticles] OR /effect <player> clear	/effect <joueur> <effet> [secondes] [niveau] [masquerParticules] OU /effect <joueur> clear
-/gamemode <mode> [player]	/gamemode <mode> [joueur]
-/gamerule <rule name> [value]	/gamerule <nom de la règle> [valeur]
-/give <player> <item> [amount] [data] [dataTag]	/give <joueur> <objet> [quantité] [données] [étiquette]
-/help [page|command name]	/help [page|nom de la commande]
-/kill [player|entity]	/kill [joueur|entité]
-/me <action ...>	/me <action ...>
-/say <message ...>	/say <message ...>
-/setblock <x> <y> <z> <TileName> [dataValue] [oldBlockHandling] [dataTag]	/setblock <x> <y> <z> <nomDuBloc> [données] [ancienBloc] [étiquette]
-/spawnpoint [player] [<x> <y> <z>]	/spawnpoint [joueur] [<x> <y> <z>]
-/summon <EntityName> [x] [y] [z] [dataTag]	/summon <nomDeL'Entité> [x] [y] [z] [étiquette]
-/time <set|add|query> <value>	/time <set|add|query> <valeur>
-/tp [target player] <destination player> OR /tp [target player] <x> <y> <z> [<y-rot> <x-rot>]	/tp [joueur ciblé] <joueur de destination> OU /tp [joueur ciblé] <x> <y> <z> [<rot-y> <rot-x>]
-/weather <clear|rain|thunder> [duration in seconds]	/weather <clear|rain|thunder> [durée en secondes]
-/xp <amount> [player] OR /xp <amount>L [player]	/xp <quantité> [joueur] OU /xp <quantité>L [joueur]
-# ---- blocks, items and the creative inventory's tabs: Minecraft 1.8's French names (fr_FR)
-Stone	Roche
-Granite	Granite
-Polished Granite	Granite poli
+Healing	Soin
+%s: not a choice here	%s : pas un choix possible
+Mode: %s	Mode : %s
+The time is %d	Il est %d
+The time is now %d	Il est maintenant %d
+The sky clears	Le ciel se dégage
+Here comes the rain	Voici la pluie
+A storm is coming	Un orage arrive
+No block or item is called %s	Aucun bloc ni objet ne s'appelle %s
+You get %d %s	Tu reçois %d %s
+That is too far	C'est trop loin
+You are now at 	Te voici en 
+Back to the start	Retour au départ
+Difficulty: %s	Difficulté : %s
+World number: 	Numéro du monde : 
+Your starting point: 	Ton point de départ : 
+Levels: %d	Niveaux : %d
+Points can only be added	On ne peut qu'ajouter des points
+%d points added	%d points ajoutés
+Nothing to take away	Rien à enlever
+%d things taken away	%d objets enlevés
+No more effects	Plus aucun effet
+%s: not an effect	%s : pas un effet
+%s for %d seconds	%s pendant %d secondes
+That place is not loaded	Cet endroit n'est pas chargé
+Zap!	Zap !
+There is no room for it	Il n'y a pas la place
+Here it is	Le voici
+%s: not a creature	%s : pas une créature
+No block is called %s	Aucun bloc ne s'appelle %s
+Look at a block, or give x y z	Regarde un bloc, ou donne x y z
+Something is already there	Il y a déjà quelque chose
+That block is already there	Ce bloc y est déjà
+Placed	Posé
+No rule is called %s	Aucune règle ne s'appelle %s
+on	oui
+off	non
+%s: no such command (try /help)	%s : commande inconnue (essaie /help)
+Commands, page %d of %d	Commandes, page %d sur %d
+toolbox: finishes the word you are typing	boîte à outils : finit le mot que tu tapes
+Commands are off in this world	Les commandes sont coupées dans ce monde
+The rain stops	La pluie s'arrête
+Stone	Pierre
+Granite	Granit
+Polished Granite	Granit poli
 Diorite	Diorite
 Polished Diorite	Diorite polie
 Andesite	Andésite
 Polished Andesite	Andésite polie
-Grass Block	Bloc d'herbe
+Grassy Dirt	Terre herbeuse
 Dirt	Terre
-Coarse Dirt	Terre stérile
+Coarse Dirt	Terre caillouteuse
 Podzol	Podzol
-Cobblestone	Pierre
+Cobblestone	Pavé
 Oak Wood Planks	Planches de chêne
 Spruce Wood Planks	Planches de sapin
 Birch Wood Planks	Planches de bouleau
-Jungle Wood Planks	Planches d'acajou
-Acacia Wood Planks	Planches d'acacia
+Jungle Wood Planks	Planches de jungle
+Acacia Wood Planks	Planches de acacia
 Dark Oak Wood Planks	Planches de chêne noir
 Oak Sapling	Pousse de chêne
 Spruce Sapling	Pousse de sapin
 Birch Sapling	Pousse de bouleau
-Jungle Sapling	Pousse d'acajou
-Acacia Sapling	Pousse d'acacia
+Jungle Sapling	Pousse de jungle
+Acacia Sapling	Pousse de acacia
 Dark Oak Sapling	Pousse de chêne noir
-Bedrock	Bedrock
+Bedrock	Roche-mère
 Sand	Sable
 Red Sand	Sable rouge
 Gravel	Gravier
 Gold Ore	Minerai d'or
 Iron Ore	Minerai de fer
 Coal Ore	Minerai de charbon
-Oak Wood	Bois de chêne
-Spruce Wood	Bois de sapin
-Birch Wood	Bois de bouleau
-Jungle Wood	Bois d'acajou
+Oak Wood	Bûche de chêne
+Spruce Wood	Bûche de sapin
+Birch Wood	Bûche de bouleau
+Jungle Wood	Bûche de jungle
 Oak Leaves	Feuilles de chêne
 Spruce Leaves	Feuilles de sapin
 Birch Leaves	Feuilles de bouleau
-Jungle Leaves	Feuilles d'acajou
+Jungle Leaves	Feuilles de jungle
 Sponge	Éponge
 Glass	Verre
 Lapis Lazuli Ore	Minerai de lapis-lazuli
@@ -271,9 +119,9 @@ Lapis Lazuli Block	Bloc de lapis-lazuli
 Sandstone	Grès
 Chiseled Sandstone	Grès sculpté
 Smooth Sandstone	Grès lisse
-Cobweb	Toile d'araignée
-Shrub	Arbuste
-Grass	Herbes hautes
+Cobweb	Toile
+Shrub	Arbuste sec
+Grass Tuft	Touffe d'herbe
 Fern	Fougère
 Dead Bush	Buisson mort
 Wool	Laine
@@ -295,8 +143,8 @@ Black Wool	Laine noire
 Dandelion	Pissenlit
 Poppy	Coquelicot
 Blue Orchid	Orchidée bleue
-Allium	Allium
-Azure Bluet	Houstonie bleue
+Allium	Ail fleuri
+Azure Bluet	Houstonie
 Red Tulip	Tulipe rouge
 Orange Tulip	Tulipe orange
 White Tulip	Tulipe blanche
@@ -305,39 +153,41 @@ Oxeye Daisy	Marguerite
 Mushroom	Champignon
 Block of Gold	Bloc d'or
 Block of Iron	Bloc de fer
-Stone Slab	Dalle de roche
+Stone Slab	Dalle de pierre
 Sandstone Slab	Dalle de grès
-Wooden Slab	Dalle en bois
-Cobblestone Slab	Dalle de pierre
+Wooden Slab	Dalle de bois
+Cobblestone Slab	Dalle de pavé
 Bricks Slab	Dalle de briques
-Stone Bricks Slab	Dalle de pierre taillée
+Stone Bricks Slab	Dalle de pierres taillées
 Bricks	Briques
-TNT	TNT
-Bookshelf	Bibliothèque
-Moss Stone	Pierre moussue
+TNT	Dynamite
+Bookshelf	Étagère
+Mossy Cobblestone	Pavé moussu
 Obsidian	Obsidienne
 Torch	Torche
-Monster Spawner	Générateur de monstres
+Monster Cage	Cage à monstres
 Oak Wood Stairs	Escalier en chêne
+Chest	Coffre
 Diamond Ore	Minerai de diamant
 Block of Diamond	Bloc de diamant
 Crafting Table	Établi
 Farmland	Terre labourée
+Furnace	Four
 Ladder	Échelle
-Rail	Rails
-Cobblestone Stairs	Escalier en pierre
-Redstone Ore	Minerai de redstone
+Rail	Rail
+Cobblestone Stairs	Escalier en pavé
+Ruby Ore	Minerai de rubis
 Snow	Neige
 Ice	Glace
 Cactus	Cactus
 Clay	Argile
 Oak Fence	Barrière en chêne
 Pumpkin	Citrouille
-Jack o'Lantern	Citrouille-lanterne
-Stone Bricks	Pierre taillée
-Mossy Stone Bricks	Pierre taillée moussue
-Cracked Stone Bricks	Pierre taillée craquelée
-Chiseled Stone Bricks	Pierre taillée sculptée
+Jack o'Lantern	Lanterne-citrouille
+Stone Bricks	Pierres taillées
+Mossy Stone Bricks	Pierres taillées moussues
+Cracked Stone Bricks	Pierres taillées fissurées
+Chiseled Stone Bricks	Pierres taillées sculptées
 Glass Pane	Vitre
 Melon	Pastèque
 Vines	Lianes
@@ -345,45 +195,45 @@ Mycelium	Mycélium
 Lily Pad	Nénuphar
 Emerald Ore	Minerai d'émeraude
 Block of Emerald	Bloc d'émeraude
-Cobblestone Wall	Muret de pierre
-Hardened Clay	Argile durcie
-White Stained Clay	Argile teinte blanche
-Orange Stained Clay	Argile teinte orange
-Magenta Stained Clay	Argile teinte magenta
-Light Blue Stained Clay	Argile teinte bleu clair
-Yellow Stained Clay	Argile teinte jaune
-Lime Stained Clay	Argile teinte vert clair
-Pink Stained Clay	Argile teinte rose
-Gray Stained Clay	Argile teinte grise
-Light Gray Stained Clay	Argile teinte gris clair
-Cyan Stained Clay	Argile teinte cyan
-Purple Stained Clay	Argile teinte violette
-Blue Stained Clay	Argile teinte bleue
-Brown Stained Clay	Argile teinte marron
-Green Stained Clay	Argile teinte verte
-Red Stained Clay	Argile teinte rouge
-Black Stained Clay	Argile teinte noire
-Acacia Wood	Bois d'acacia
-Dark Oak Wood	Bois de chêne noir
-Acacia Leaves	Feuilles d'acacia
+Cobblestone Wall	Muret de pavé
+Baked Clay	Argile cuite
+White Baked Clay	Argile cuite blanche
+Orange Baked Clay	Argile cuite orange
+Magenta Baked Clay	Argile cuite magenta
+Light Blue Baked Clay	Argile cuite bleu clair
+Yellow Baked Clay	Argile cuite jaune
+Lime Baked Clay	Argile cuite vert clair
+Pink Baked Clay	Argile cuite rose
+Gray Baked Clay	Argile cuite grise
+Light Gray Baked Clay	Argile cuite gris clair
+Cyan Baked Clay	Argile cuite cyan
+Purple Baked Clay	Argile cuite violette
+Blue Baked Clay	Argile cuite bleue
+Brown Baked Clay	Argile cuite marron
+Green Baked Clay	Argile cuite verte
+Red Baked Clay	Argile cuite rouge
+Black Baked Clay	Argile cuite noire
+Acacia Wood	Bûche de acacia
+Dark Oak Wood	Bûche de chêne noir
+Acacia Leaves	Feuilles de acacia
 Dark Oak Leaves	Feuilles de chêne noir
 Hay Bale	Botte de foin
 Block of Coal	Bloc de charbon
-Packed Ice	Glace compactée
+Packed Ice	Glace tassée
 Sunflower	Tournesol
 Lilac	Lilas
-Double Tallgrass	Hautes herbes
+Tall Grass	Hautes herbes
 Large Fern	Grande fougère
 Rose Bush	Rosier
 Peony	Pivoine
 Red Sandstone	Grès rouge
-Glowstone	Pierre lumineuse
-Oak Wood Slab	Dalle en chêne
-Spruce Wood Slab	Dalle en sapin
-Birch Wood Slab	Dalle en bouleau
-Jungle Wood Slab	Dalle en acajou
-Acacia Wood Slab	Dalle en acacia
-Dark Oak Wood Slab	Dalle en chêne noir
+Glow Crystal	Cristal lumineux
+Oak Wood Slab	Dalle de chêne
+Spruce Wood Slab	Dalle de sapin
+Birch Wood Slab	Dalle de bouleau
+Jungle Wood Slab	Dalle de jungle
+Acacia Wood Slab	Dalle de acacia
+Dark Oak Wood Slab	Dalle de chêne noir
 Wooden Sword	Épée en bois
 Wooden Shovel	Pelle en bois
 Wooden Pickaxe	Pioche en bois
@@ -410,15 +260,15 @@ Golden Pickaxe	Pioche en or
 Golden Axe	Hache en or
 Golden Hoe	Houe en or
 Shears	Cisailles
-Flint and Steel	Briquet
+Flint and Steel	Briquet à silex
 Bow	Arc
 Arrow	Flèche
-Leather Cap	Casquette en cuir
+Leather Cap	Bonnet en cuir
 Leather Tunic	Tunique en cuir
 Leather Pants	Pantalon en cuir
 Leather Boots	Bottes en cuir
 Chain Helmet	Casque en mailles
-Chain Chestplate	Cotte de mailles
+Chain Chestplate	Plastron en mailles
 Chain Leggings	Jambières en mailles
 Chain Boots	Bottes en mailles
 Iron Helmet	Casque en fer
@@ -441,12 +291,12 @@ Iron Ingot	Lingot de fer
 Gold Ingot	Lingot d'or
 Gold Nugget	Pépite d'or
 Emerald	Émeraude
-Redstone	Redstone
+Ruby Dust	Poudre de rubis
 Flint	Silex
 Feather	Plume
 String	Ficelle
 Bone	Os
-Gunpowder	Poudre à canon
+Gunpowder	Poudre
 Leather	Cuir
 Wheat	Blé
 Seeds	Graines
@@ -458,8 +308,8 @@ Brick	Brique
 Bowl	Bol
 Snowball	Boule de neige
 Egg	Œuf
-Slimeball	Boule de slime
-Glowstone Dust	Poudre lumineuse
+Slime Ball	Boule de gelée
+Glow Dust	Poudre lumineuse
 Bucket	Seau
 Water Bucket	Seau d'eau
 Lava Bucket	Seau de lave
@@ -468,10 +318,10 @@ Oak Door	Porte en chêne
 Bed	Lit
 Compass	Boussole
 Fishing Rod	Canne à pêche
-Clock	Montre
-Ink Sac	Poche d'encre
-Rose Red	Rouge de rose
-Cactus Green	Vert de cactus
+Clock	Horloge
+Black Dye	Teinture noire
+Red Dye	Teinture rouge
+Green Dye	Teinture verte
 Cocoa Beans	Fèves de cacao
 Lapis Lazuli	Lapis-lazuli
 Purple Dye	Teinture violette
@@ -480,7 +330,7 @@ Light Gray Dye	Teinture gris clair
 Gray Dye	Teinture grise
 Pink Dye	Teinture rose
 Lime Dye	Teinture vert clair
-Dandelion Yellow	Jaune de pissenlit
+Yellow Dye	Teinture jaune
 Light Blue Dye	Teinture bleu clair
 Magenta Dye	Teinture magenta
 Orange Dye	Teinture orange
@@ -488,18 +338,18 @@ Bone Meal	Poudre d'os
 Apple	Pomme
 Golden Apple	Pomme dorée
 Bread	Pain
-Raw Porkchop	Côtelette de porc crue
-Cooked Porkchop	Côtelette de porc cuite
-Raw Beef	Bœuf cru
-Steak	Steak
-Raw Chicken	Poulet cru
-Cooked Chicken	Poulet cuit
-Raw Mutton	Mouton cru
-Cooked Mutton	Mouton cuit
-Rotten Flesh	Chair putréfiée
-Spider Eye	Œil d'araignée
-Mushroom Stew	Soupe de champignons
-Cookie	Cookie
+Raw Ham	Jambon cru
+Roast Ham	Jambon rôti
+Raw Ox Meat	Viande de bosseux crue
+Ox Steak	Pavé de bosseux
+Raw Drumstick	Pilon cru
+Roast Drumstick	Pilon rôti
+Raw Shank	Jarret cru
+Roast Shank	Jarret rôti
+Mud Cake	Galette de boue
+Beetle Eye	Œil de scarabée
+Mushroom Stew	Soupe aux champignons
+Cookie	Biscuit
 Carrot	Carotte
 Potato	Pomme de terre
 Baked Potato	Pomme de terre cuite
@@ -507,17 +357,153 @@ Poisonous Potato	Pomme de terre empoisonnée
 Pumpkin Pie	Tarte à la citrouille
 Raw Fish	Poisson cru
 Raw Salmon	Saumon cru
-Clownfish	Poisson-clown
+Violet Fish	Poisson violet
 Pufferfish	Poisson-globe
 Cooked Fish	Poisson cuit
 Cooked Salmon	Saumon cuit
-Building Blocks	Blocs de construction
-Decoration Blocks	Blocs décoratifs
-Transportation	Transport
-Search Items	Rechercher
-Foodstuffs	Nourriture
+Building	Construction
+Nature and Decor	Nature et déco
+Gadgets	Mécanismes
+Travel	Voyage
+Other	Divers
+Search	Chercher
+Food	Nourriture
 Tools	Outils
-Combat	Combat
-Brewing	Alchimie
+Fighting	Combat
+Unused	Inutilisé
 Materials	Matériaux
-Survival Inventory	Inventaire de survie
+Your Bag	Ton sac
+Done	OK
+alpha: abc/123   shift: Abc   toolbox: finish the word	alpha : abc/123   shift : Abc   boîte à outils : finir le mot
+x,n,t  :     var  _     x10^x  ~     ans  space     0  @	x,n,t  :     var  _     x10^x  ~     ans  espace     0  @
+Play	Jouer
+Play Together	Jouer à plusieurs
+Settings	Réglages
+Leave	Quitter
+Play This World	Jouer à ce monde
+New World	Nouveau monde
+Rename	Renommer
+Delete	Supprimer
+Same Settings	Mêmes réglages
+Cancel	Annuler
+Mode: 	Mode : 
+Commands: 	Commandes : 
+ON	Oui
+OFF	Non
+World Number: 	N° du monde : 
+(any)	(au hasard)
+Land: 	Terrain : 
+Flat	Plat
+Natural	Naturel
+Difficulty: 	Difficulté : 
+Detail: 	Détails : 
+High	Élevés
+Low	Réduits
+Look Speed: 	Vitesse du regard : 
+Clouds: 	Nuages : 
+Head Sway: 	Balancement : 
+Keys	Touches
+Resume	Reprendre
+Journal	Journal
+Records	Records
+Turn On Commands	Activer les commandes
+Save and Leave	Sauver et quitter
+Use These Settings	Appliquer
+Try Again	Réessayer
+Main Menu	Menu principal
+Copy of 	Copie de 
+Look	Regard
+Break, Hit	Casser, frapper
+Break, hit	Casser, frapper
+Copy Block	Copier le bloc
+Copy block	Copier le bloc
+Use, Place	Utiliser, poser
+Place, use	Poser, utiliser
+Throw Item	Lancer l'objet
+Throw	Lancer
+Belt Slot 1	Ceinture 1
+Slot 1	Case 1
+Belt Slot 2	Ceinture 2
+Slot 2	Case 2
+Belt Slot 3	Ceinture 3
+Slot 3	Case 3
+Belt Slot 4	Ceinture 4
+Slot 4	Case 4
+Belt Slot 5	Ceinture 5
+Slot 5	Case 5
+Belt Slot 6	Ceinture 6
+Slot 6	Case 6
+Belt Slot 7	Ceinture 7
+Slot 7	Case 7
+Belt Slot 8	Ceinture 8
+Slot 8	Case 8
+Belt Slot 9	Ceinture 9
+Slot 9	Case 9
+Bag	Sac
+Pause	Pause
+Jump	Sauter
+Crouch	S'accroupir
+Run	Courir
+Step Left	Pas à gauche
+Left	Gauche
+Step Right	Pas à droite
+Right	Droite
+Go Back	Reculer
+Backward	Arrière
+Go Forward	Avancer
+Forward	Avant
+Chat Box	Discussion
+Chat	Discuter
+Command Box	Commande
+Command	Commande
+Actions	Actions
+Moving	Déplacement
+Back	Retour
+toolbox	boîte à outils
+NONE	AUCUNE
+Controls	Commandes
+Home	Home
+Save, quit	Sauver, quitter
+1 to 9: belt slot.	1 à 9 : case de la ceinture.
+EXE: as OK.	EXE : comme OK.
+: 	 : 
+.	.
+Forward twice: run.   Jump twice: fly (Creative).	Deux fois avant : courir.   Deux sauts : voler (Création).
+Menus: OK takes or puts, EXE one, shift+OK moves.	Menus : OK prend ou pose, EXE un seul, shift+OK déplace.
+Hold OK and move over slots to spread a stack out.	Garde OK et passe sur les cases pour répartir une pile.
+Key Sheet	Aide des touches
+Reset	Défaut
+Default Keys	Touches par défaut
+Build anything!	Construis tout ce que tu veux !
+One block at a time	Un bloc à la fois
+Dig deep, look up	Creuse profond, lève les yeux
+Mind the fizzlers	Gare aux pétards
+Made for your calculator	Fait pour ta calculatrice
+Plant a tree today	Plante un arbre aujourd'hui
+A block-building game of Calcade	Un jeu de construction de Calcade
+Original game by Mason Chen	Jeu d'origine de Mason Chen
+Your Worlds	Tes mondes
+, commands	, commandes
+No worlds yet	Pas encore de monde
+Storage free: 	Mémoire libre : 
+ KB	 Ko
+Name	Nom
+Every block, flying, and blocks	Tous les blocs, le vol, et des blocs
+Gather, build and craft, and keep	Récolte, construis, fabrique, et reste
+that break at once	qui cassent d'un coup
+yourself fed and healthy	nourri et en bonne santé
+alpha: letters or digits, shift: capitals, OK: done	alpha : lettres ou chiffres, shift : majuscules, OK : fini
+Leave it empty for any world	Laisse vide pour un monde au hasard
+Delete this world?	Supprimer ce monde ?
+'	« 
+' will be gone for good.	 » disparaîtra pour de bon.
+Paused	En pause
+Commands	Commandes
+Settings for This World	Réglages de ce monde
+Opening the world	Ouverture du monde
+Making the land	Création du terrain
+Make	Fabriquer
+Knocked out!	K.-O. !
+Points: 	Points : 
+You can sleep only at night	On ne peut dormir que la nuit
+Too many monsters around to sleep	Trop de monstres autour pour dormir
diff --git a/games/numblocks/lang/zh.txt b/games/numblocks/lang/zh.txt
index 92579f4..fbf407d 100644
--- a/games/numblocks/lang/zh.txt
+++ b/games/numblocks/lang/zh.txt
@@ -1,230 +1,78 @@
 # NumBlocks in Chinese: the English text as in the source, a tab, the translation (see tools/lang.py).
-# Minecraft's own Simplified Chinese where it has one (zh_CN), shorter where a button or a key is narrow.
-# ---- menus
-Done	完成
-Singleplayer	单人游戏
-Multiplayer	多人游戏
-Options...	选项...
-Quit Game	退出游戏
-Play Selected World	进入选中的世界
-Create New World	创建新的世界
-Rename	重命名
-Delete	删除
-Re-Create	重新创建
-Cancel	取消
-Game Mode: 	游戏模式：
-Creative	创造
+# Our own translations (Calcade, 19 October 2026: tools/conformite/numblocks_lang.py).
+Try: %s	试试：%s
+%s: a number was expected	%s：这里要填数字
+%d is too small (at least %d)	%d 太小（至少 %d）
+%d is too big (at most %d)	%d 太大（最多 %d）
+/clear [item]: empties your bag (or takes that item)	/clear [物品]：清空背包（或只拿走该物品）
+/effect <poison|hunger|healing|clear> [seconds] [strength]	/effect <poison|hunger|healing|clear> [秒] [强度]
+/give <item> [how many]	/give <物品> [数量]
+/help [page|command]	/help [页|命令]
+/home [x y z]: you start again here	/home [x y z]：以后从这里出发
+/kill: back to your starting point	/kill：回到出发点
+/level <calm|easy|normal|hard>	/level <calm|easy|normal|hard>
+/me <what you do>	/me <你在做什么>
+/mode <survival|creative>	/mode <survival|creative>
+/place <block> [x y z] [keep|break]	/place <方块> [x y z] [keep|break]
+/rain: starts or stops the rain	/rain：下雨或停雨
+/rule [name] [on|off]	/rule [名称] [on|off]
+/say <message>	/say <消息>
+/seed: this world's number	/seed：这个世界的编号
+/spawn <creature|lightning> [x y z]	/spawn <生物|lightning> [x y z]
+/time [day|noon|night|midnight|number]	/time [day|noon|night|midnight|数字]
+/tp <x> <y> <z>  (^ for where you are, ^5 for 5 from it)	/tp <x> <y> <z>  （^ 表示你的位置，^5 表示再远 5 格）
+/weather <clear|rain|storm> [seconds]	/weather <clear|rain|storm> [秒]
+/xp <points> or /xp <levels>lv	/xp <点数> 或 /xp <等级>lv
 Survival	生存
-Allow Cheats: 	允许作弊：
-ON	开
-OFF	关
-Seed: 	种子：
-(random)	(随机)
-World Type: 	世界类型：
-Superflat	超平坦
-Default	默认
-Peaceful	和平
+Creative	创造
+Calm	平静
 Easy	简单
 Normal	普通
 Hard	困难
-Difficulty: 	难度：
-Graphics: 	图像品质：
-Fancy	高品质
-Fast	流畅
-Look Speed: 	灵敏度：
-Clouds: 	云：
-View Bobbing: 	视角摇晃：
-Controls...	按键控制...
-Back to Game	回到游戏
-Achievements	成就
-Statistics	统计信息
-Open to LAN	对局域网开放
-Save and Quit to Title	保存并退回到标题画面
-Start LAN World	创建局域网世界
-Respawn	重生
-Title screen	标题画面
-New World	新的世界
-Copy of 	副本 
-Select World	选择世界
-Creative Mode	创造模式
-Survival Mode	生存模式
-, Cheats	，作弊
-No worlds yet	还没有世界
-Storage free: 	剩余空间：
- KB	 KB
-World Name	世界名称
-Unlimited resources, free flying and	无限的资源、自由地飞翔并且
-destroy blocks instantly	能够瞬间破坏方块
-Search for resources, crafting, gain	探索世界、收集资源、合成道具、
-levels, health and hunger	提高等级、补充体力和饥饿值
-alpha: letters or digits, shift: capitals, OK: done	alpha：字母/数字，shift：大写，OK：完成
-Leave blank for a random seed	留空以生成随机种子
-Rename World	重命名世界
-Enter Name	输入名称
-Are you sure you want to delete this world?	你确定要删除这个世界吗？
-'	“
-' will be lost forever! (A long time!)	”将会永久消失！（真的很久！）
-Options	选项
-Game menu	游戏菜单
-LAN World	局域网世界
-Settings for Other Players	其他玩家的设置
-Loading world	正在载入世界
-Building terrain	正在建立地形
-You died!	你死了！
-Score: 	分数：
-Inspired by Minecraft, not affiliated with Mojang	灵感来自Minecraft，与Mojang无关
-Made by Mason Chen as part of NumPlay	Mason Chen为NumPlay制作
-# ---- containers
-Crafting	合成
-Inventory	物品栏
-Furnace	熔炉
-Chest	箱子
-# ---- the chat
-alpha: abc/123   shift: Abc   toolbox: finish the word	alpha：abc/123   shift：Abc   工具箱：补全单词
-x,n,t  :     var  _     x10^x  ~     ans  space     0  @	x,n,t  :     var  _     x10^x  ~     ans  空格     0  @
-You can only sleep at night	你只能在夜间入睡
-You may not rest now, there are monsters nearby	你现在不能休息，周围有怪物在游荡
-# ---- the keys: names in Controls (Minecraft's), then the key sheet's words
-Controls	按键控制
-Key Sheet...	按键图...
-Reset	重置
-Reset Keys	全部重置
-Gameplay	游戏内容
-Miscellaneous	杂项
-Movement	移动
-Attack/Destroy	攻击/摧毁
-Mine, attack	挖掘、攻击
-Pick Block	选取方块
-Pick block	选取方块
-Use Item/Place Block	使用物品/放置方块
-Place, use	放置、使用
-Drop Item	丢弃物品
-Drop	丢弃
-Hotbar Slot 1	快捷栏1
-Hotbar Slot 2	快捷栏2
-Hotbar Slot 3	快捷栏3
-Hotbar Slot 4	快捷栏4
-Hotbar Slot 5	快捷栏5
-Hotbar Slot 6	快捷栏6
-Hotbar Slot 7	快捷栏7
-Hotbar Slot 8	快捷栏8
-Hotbar Slot 9	快捷栏9
-Slot 1	快捷栏1
-Slot 2	快捷栏2
-Slot 3	快捷栏3
-Slot 4	快捷栏4
-Slot 5	快捷栏5
-Slot 6	快捷栏6
-Slot 7	快捷栏7
-Slot 8	快捷栏8
-Slot 9	快捷栏9
-Pause	暂停
-Jump	跳跃
-Sneak	潜行
-Sprint	疾跑
-Strafe Left	向左平移
-Left	左移
-Strafe Right	向右平移
-Right	右移
-Walk Backwards	向后
-Backward	后退
-Walk Forwards	向前
-Forward	前进
-Open Chat	打开聊天栏
-Chat	聊天
-Open Command	输入命令
-Command	命令
-Look	视角
-Back	返回
-toolbox	工具箱
-NONE	无
-Home	主页
-Save, quit	保存退出
-1 to 9: hotbar slot.	1至9：快捷栏。
-EXE: as OK.	EXE：同OK。
-# (a key, these two, then what it does)
-: 	：
-.	。
-Forward twice: sprint.   Jump twice: fly (Creative).	连按前进：疾跑。   连按跳跃：飞行（创造模式）。
-Menus: OK takes or puts, EXE one, shift+OK moves.	菜单：OK拿取或放下，EXE放一个，shift+OK移动。
-Hold OK and move over slots to spread a stack out.	按住OK划过格子，可分散一组物品。
-# ---- the commands' answers (Minecraft's words: %s and %d take the same things in turn, strings and numbers apart)
-Usage: %s	用法：%s
-'%s' is not a valid number	'%s'不是有效的数字
-The number you have entered (%d) is too small, it must be at least %d	你输入的数字（%d）太小，至少需要为%d
-The number you have entered (%d) is too big, it must be at most %d	你输入的数字（%d）太大，最多只能为%d
-That player cannot be found	找不到该玩家
-Your game mode has been updated	你的游戏模式已被更新
-Set own game mode to %s	已将自己的游戏模式设为%s
-Set the time to %d	已将时间设为%d
-Added %d to the time	已将时间增加%d
-Time is %d	时间是%d
-Changing to clear weather	天气已变为晴天
-Changing to rainy weather	天气已变为雨天
-Changing to rain and thunder	天气已变为雷雨
-There is no such item with name %s	不存在名为%s的物品
-Given %s * %d to %s	已将%s * %d给予%s
-Teleported %s to %s	已将%s传送到%s
-Teleported Player to 	已将Player传送到
-Killed %s	已清除%s
-Set game difficulty to %s	已将游戏难度设为%s
-Set Player's spawn point to (	已将Player的出生点设为(
-Taken %d levels from %s	已从%s拿走%d级经验
-Given %d levels to %s	已给予%s %d级经验
-Cannot give player negative experience points	不能给予玩家负数的经验
-Given %d experience to %s	已给予%s %d点经验
-Could not clear the inventory of %s, no items to remove	无法清除%s的物品栏，没有可移除的物品
-Cleared the inventory of %s, removing %d items	已清除%s的物品栏，共移除%d个物品
-Couldn't take any effects from %s as they do not have any	无法移除%s的效果，因为其没有任何效果
-Took all effects from %s	已移除%s的所有效果
-There is no such mob effect with ID %d	不存在ID为%d的效果
-There is no such mob effect with ID %s	不存在ID为%s的效果
-# (an effect's name between these)
-Couldn't take 	无法移除Player的
- from Player as they do not have the effect	效果，因为其没有该效果
-Took 	已移除Player的
- from Player	效果
-Given 	已将
- (ID 	(ID 
-) * 	) * 
- to Player for 	给予Player，持续
- seconds	秒
 Poison	中毒
 Hunger	饥饿
-Regeneration	生命恢复
-Cannot summon the object out of the world	无法在世界外生成实体
-Object successfully summoned	成功生成实体
-Unable to summon object	无法生成实体
-There is no such block with ID/name %s	不存在ID或名称为%s的方块
-Cannot place block outside of the world	无法在世界外放置方块
-The block couldn't be placed	无法放置方块
-Block placed	方块已放置
-No game rule called '%s' is available	没有名为'%s'的游戏规则
-Game rule has been updated	游戏规则已更新
-Unknown command. Try /help for a list of commands	未知的命令。输入/help查看命令列表
---- Showing help page %d of %d (/help <page>) ---	--- 显示帮助第%d页，共%d页（/help <页码>）---
-Tip: Use the toolbox key while typing a command to auto-complete the command or its arguments	提示：输入命令时按工具箱键可自动补全命令或其参数
-You do not have permission to use this command	你没有使用此命令的权限
-Toggled downfall	已切换降水
-# ---- the commands' usage (their words, as typed, stay)
-/clear [player] [item] [data] [maxCount] [dataTag]	/clear [玩家] [物品] [数据值] [最大数量] [数据标签]
-/difficulty <new difficulty>	/difficulty <新难度>
-/effect <player> <effect> [seconds] [amplifier] [hideParticles] OR /effect <player> clear	/effect <玩家> <效果> [秒数] [等级] [隐藏粒子] 或 /effect <玩家> clear
-/gamemode <mode> [player]	/gamemode <模式> [玩家]
-/gamerule <rule name> [value]	/gamerule <规则名> [值]
-/give <player> <item> [amount] [data] [dataTag]	/give <玩家> <物品> [数量] [数据值] [数据标签]
-/help [page|command name]	/help [页码|命令名]
-/kill [player|entity]	/kill [玩家|实体]
-/me <action ...>	/me <动作 ...>
-/say <message ...>	/say <消息 ...>
-/setblock <x> <y> <z> <TileName> [dataValue] [oldBlockHandling] [dataTag]	/setblock <x> <y> <z> <方块名> [数据值] [旧方块处理] [数据标签]
-/spawnpoint [player] [<x> <y> <z>]	/spawnpoint [玩家] [<x> <y> <z>]
-/summon <EntityName> [x] [y] [z] [dataTag]	/summon <实体名> [x] [y] [z] [数据标签]
-/time <set|add|query> <value>	/time <set|add|query> <值>
-/tp [target player] <destination player> OR /tp [target player] <x> <y> <z> [<y-rot> <x-rot>]	/tp [目标玩家] <目的地玩家> 或 /tp [目标玩家] <x> <y> <z> [<y旋转> <x旋转>]
-/weather <clear|rain|thunder> [duration in seconds]	/weather <clear|rain|thunder> [持续秒数]
-/xp <amount> [player] OR /xp <amount>L [player]	/xp <数量> [玩家] 或 /xp <数量>L [玩家]
-# ---- blocks, items and the creative inventory's tabs: Minecraft's Simplified Chinese names (zh_CN)
+Healing	治疗
+%s: not a choice here	%s：不是可选项
+Mode: %s	模式：%s
+The time is %d	现在是 %d
+The time is now %d	时间改为 %d
+The sky clears	天放晴了
+Here comes the rain	开始下雨了
+A storm is coming	暴风雨要来了
+No block or item is called %s	没有叫 %s 的方块或物品
+You get %d %s	你得到 %d 个%s
+That is too far	太远了
+You are now at 	你现在在
+Back to the start	回到出发点
+Difficulty: %s	难度：%s
+World number: 	世界编号：
+Your starting point: 	你的出发点：
+Levels: %d	等级：%d
+Points can only be added	只能增加点数
+%d points added	增加了 %d 点
+Nothing to take away	没有可拿走的东西
+%d things taken away	拿走了 %d 件东西
+No more effects	效果全部清除
+%s: not an effect	%s：不是效果
+%s for %d seconds	%s，持续 %d 秒
+That place is not loaded	那里还没有载入
+Zap!	噼啪！
+There is no room for it	那里放不下
+Here it is	出现了
+%s: not a creature	%s：不是生物
+No block is called %s	没有叫 %s 的方块
+Look at a block, or give x y z	看着一个方块，或者写出 x y z
+Something is already there	那里已经有东西了
+That block is already there	那里已经是这个方块
+Placed	已放置
+No rule is called %s	没有叫 %s 的规则
+on	开
+off	关
+%s: no such command (try /help)	%s：没有这个命令（试试 /help）
+Commands, page %d of %d	命令，第 %d 页，共 %d 页
+toolbox: finishes the word you are typing	工具箱键：补全正在输入的词
+Commands are off in this world	这个世界关闭了命令
+The rain stops	雨停了
 Stone	石头
 Granite	花岗岩
 Polished Granite	磨制花岗岩
@@ -232,21 +80,21 @@ Diorite	闪长岩
 Polished Diorite	磨制闪长岩
 Andesite	安山岩
 Polished Andesite	磨制安山岩
-Grass Block	草方块
+Grassy Dirt	草皮
 Dirt	泥土
-Coarse Dirt	砂土
+Coarse Dirt	碎石泥土
 Podzol	灰化土
 Cobblestone	圆石
-Oak Wood Planks	橡木木板
+Oak Wood Planks	橡树木板
 Spruce Wood Planks	云杉木板
 Birch Wood Planks	白桦木板
-Jungle Wood Planks	丛林木板
+Jungle Wood Planks	丛林树木板
 Acacia Wood Planks	金合欢木板
-Dark Oak Wood Planks	深色橡木木板
+Dark Oak Wood Planks	深色橡树木板
 Oak Sapling	橡树树苗
 Spruce Sapling	云杉树苗
 Birch Sapling	白桦树苗
-Jungle Sapling	丛林树苗
+Jungle Sapling	丛林树树苗
 Acacia Sapling	金合欢树苗
 Dark Oak Sapling	深色橡树树苗
 Bedrock	基岩
@@ -256,14 +104,14 @@ Gravel	沙砾
 Gold Ore	金矿石
 Iron Ore	铁矿石
 Coal Ore	煤矿石
-Oak Wood	橡木
-Spruce Wood	云杉木
-Birch Wood	白桦木
-Jungle Wood	丛林木
+Oak Wood	橡树原木
+Spruce Wood	云杉原木
+Birch Wood	白桦原木
+Jungle Wood	丛林树原木
 Oak Leaves	橡树树叶
 Spruce Leaves	云杉树叶
 Birch Leaves	白桦树叶
-Jungle Leaves	丛林树叶
+Jungle Leaves	丛林树树叶
 Sponge	海绵
 Glass	玻璃
 Lapis Lazuli Ore	青金石矿石
@@ -271,18 +119,18 @@ Lapis Lazuli Block	青金石块
 Sandstone	砂岩
 Chiseled Sandstone	雕纹砂岩
 Smooth Sandstone	平滑砂岩
-Cobweb	蜘蛛网
-Shrub	灌木
-Grass	草丛
+Cobweb	蛛网
+Shrub	枯灌木
+Grass Tuft	草丛
 Fern	蕨
-Dead Bush	枯死的灌木
-Wool	羊毛
+Dead Bush	枯萎的灌木
+Wool	白色羊毛
 Orange Wool	橙色羊毛
 Magenta Wool	品红色羊毛
 Light Blue Wool	淡蓝色羊毛
 Yellow Wool	黄色羊毛
 Lime Wool	黄绿色羊毛
-Pink Wool	粉红色羊毛
+Pink Wool	粉色羊毛
 Gray Wool	灰色羊毛
 Light Gray Wool	淡灰色羊毛
 Cyan Wool	青色羊毛
@@ -294,13 +142,13 @@ Red Wool	红色羊毛
 Black Wool	黑色羊毛
 Dandelion	蒲公英
 Poppy	虞美人
-Blue Orchid	兰花
+Blue Orchid	蓝色兰花
 Allium	绒球葱
-Azure Bluet	茜草花
+Azure Bluet	蓝花茜草
 Red Tulip	红色郁金香
 Orange Tulip	橙色郁金香
 White Tulip	白色郁金香
-Pink Tulip	粉红色郁金香
+Pink Tulip	粉色郁金香
 Oxeye Daisy	滨菊
 Mushroom	蘑菇
 Block of Gold	金块
@@ -309,62 +157,64 @@ Stone Slab	石台阶
 Sandstone Slab	砂岩台阶
 Wooden Slab	木台阶
 Cobblestone Slab	圆石台阶
-Bricks Slab	砖块台阶
+Bricks Slab	砖台阶
 Stone Bricks Slab	石砖台阶
 Bricks	砖块
-TNT	TNT
+TNT	炸药
 Bookshelf	书架
-Moss Stone	苔石
+Mossy Cobblestone	苔石
 Obsidian	黑曜石
 Torch	火把
-Monster Spawner	刷怪箱
+Monster Cage	怪物笼
 Oak Wood Stairs	橡木楼梯
+Chest	箱子
 Diamond Ore	钻石矿石
 Block of Diamond	钻石块
 Crafting Table	工作台
 Farmland	耕地
+Furnace	熔炉
 Ladder	梯子
 Rail	铁轨
 Cobblestone Stairs	圆石楼梯
-Redstone Ore	红石矿石
+Ruby Ore	红宝石矿石
 Snow	雪
 Ice	冰
 Cactus	仙人掌
-Clay	粘土块
+Clay	黏土
 Oak Fence	橡木栅栏
 Pumpkin	南瓜
 Jack o'Lantern	南瓜灯
 Stone Bricks	石砖
 Mossy Stone Bricks	苔石砖
-Cracked Stone Bricks	裂石砖
+Cracked Stone Bricks	裂纹石砖
 Chiseled Stone Bricks	雕纹石砖
 Glass Pane	玻璃板
 Melon	西瓜
 Vines	藤蔓
-Mycelium	菌丝
+Mycelium	菌丝土
 Lily Pad	睡莲
 Emerald Ore	绿宝石矿石
 Block of Emerald	绿宝石块
 Cobblestone Wall	圆石墙
-Hardened Clay	硬化粘土
-White Stained Clay	白色硬化粘土
-Orange Stained Clay	橙色硬化粘土
-Magenta Stained Clay	品红色硬化粘土
-Light Blue Stained Clay	淡蓝色硬化粘土
-Yellow Stained Clay	黄色硬化粘土
-Lime Stained Clay	黄绿色硬化粘土
-Pink Stained Clay	粉红色硬化粘土
-Gray Stained Clay	灰色硬化粘土
-Light Gray Stained Clay	淡灰色硬化粘土
-Cyan Stained Clay	青色硬化粘土
-Purple Stained Clay	紫色硬化粘土
-Blue Stained Clay	蓝色硬化粘土
-Brown Stained Clay	棕色硬化粘土
-Green Stained Clay	绿色硬化粘土
-Red Stained Clay	红色硬化粘土
-Black Stained Clay	黑色硬化粘土
-Acacia Wood	金合欢木
-Dark Oak Wood	深色橡木
+Baked Clay	陶土
+White Baked Clay	白色陶土
+Orange Baked Clay	橙色陶土
+Magenta Baked Clay	品红色陶土
+Light Blue Baked Clay	淡蓝色陶土
+Yellow Baked Clay	黄色陶土
+Lime Baked Clay	黄绿色陶土
+Pink Baked Clay	粉色陶土
+Gray Baked Clay	灰色陶土
+Light Gray Baked Clay	淡灰色陶土
+Cyan Baked Clay	青色陶土
+Purple Baked Clay	紫色陶土
+Blue Baked Clay	蓝色陶土
+Brown Baked Clay	棕色陶土
+Green Baked Clay	绿色陶土
+Red Baked Clay	红色陶土
+Black Baked Clay	黑色陶土
+Acacia Wood	金合欢原木
+Dark Oak Wood	深色橡树原木
 Acacia Leaves	金合欢树叶
 Dark Oak Leaves	深色橡树树叶
 Hay Bale	干草块
@@ -372,18 +222,18 @@ Block of Coal	煤炭块
 Packed Ice	浮冰
 Sunflower	向日葵
 Lilac	丁香
-Double Tallgrass	高草丛
+Tall Grass	高草
 Large Fern	大型蕨
 Rose Bush	玫瑰丛
 Peony	牡丹
 Red Sandstone	红砂岩
-Glowstone	萤石
-Oak Wood Slab	橡木台阶
+Glow Crystal	发光水晶
+Oak Wood Slab	橡树木台阶
 Spruce Wood Slab	云杉木台阶
 Birch Wood Slab	白桦木台阶
-Jungle Wood Slab	丛林木台阶
+Jungle Wood Slab	丛林树木台阶
 Acacia Wood Slab	金合欢木台阶
-Dark Oak Wood Slab	深色橡木台阶
+Dark Oak Wood Slab	深色橡树木台阶
 Wooden Sword	木剑
 Wooden Shovel	木锹
 Wooden Pickaxe	木镐
@@ -441,7 +291,7 @@ Iron Ingot	铁锭
 Gold Ingot	金锭
 Gold Nugget	金粒
 Emerald	绿宝石
-Redstone	红石
+Ruby Dust	红宝石粉
 Flint	燧石
 Feather	羽毛
 String	线
@@ -458,8 +308,8 @@ Brick	红砖
 Bowl	碗
 Snowball	雪球
 Egg	鸡蛋
-Slimeball	粘液球
-Glowstone Dust	萤石粉
+Slime Ball	黏液球
+Glow Dust	发光粉
 Bucket	桶
 Water Bucket	水桶
 Lava Bucket	熔岩桶
@@ -468,19 +318,19 @@ Oak Door	橡木门
 Bed	床
 Compass	指南针
 Fishing Rod	钓鱼竿
-Clock	钟
-Ink Sac	墨囊
-Rose Red	玫瑰红
-Cactus Green	仙人掌绿
+Clock	时钟
+Black Dye	黑色染料
+Red Dye	红色染料
+Green Dye	绿色染料
 Cocoa Beans	可可豆
 Lapis Lazuli	青金石
 Purple Dye	紫色染料
 Cyan Dye	青色染料
 Light Gray Dye	淡灰色染料
 Gray Dye	灰色染料
-Pink Dye	粉红色染料
+Pink Dye	粉色染料
 Lime Dye	黄绿色染料
-Dandelion Yellow	蒲公英黄
+Yellow Dye	黄色染料
 Light Blue Dye	淡蓝色染料
 Magenta Dye	品红色染料
 Orange Dye	橙色染料
@@ -488,17 +338,17 @@ Bone Meal	骨粉
 Apple	苹果
 Golden Apple	金苹果
 Bread	面包
-Raw Porkchop	生猪排
-Cooked Porkchop	熟猪排
-Raw Beef	生牛肉
-Steak	牛排
-Raw Chicken	生鸡肉
-Cooked Chicken	熟鸡肉
-Raw Mutton	生羊肉
-Cooked Mutton	熟羊肉
-Rotten Flesh	腐肉
-Spider Eye	蜘蛛眼
-Mushroom Stew	蘑菇煲
+Raw Ham	生火腿
+Roast Ham	烤火腿
+Raw Ox Meat	生驼牛肉
+Ox Steak	驼牛排
+Raw Drumstick	生鸟腿
+Roast Drumstick	烤鸟腿
+Raw Shank	生腿肉
+Roast Shank	烤腿肉
+Mud Cake	泥饼
+Beetle Eye	甲虫眼
+Mushroom Stew	蘑菇汤
 Cookie	曲奇
 Carrot	胡萝卜
 Potato	马铃薯
@@ -507,17 +357,153 @@ Poisonous Potato	毒马铃薯
 Pumpkin Pie	南瓜派
 Raw Fish	生鱼
 Raw Salmon	生鲑鱼
-Clownfish	小丑鱼
+Violet Fish	紫鱼
 Pufferfish	河豚
 Cooked Fish	熟鱼
 Cooked Salmon	熟鲑鱼
-Building Blocks	建筑方块
-Decoration Blocks	装饰性方块
-Transportation	交通运输
-Search Items	搜索物品
-Foodstuffs	食物
+Building	建筑
+Nature and Decor	自然与装饰
+Gadgets	机关
+Travel	出行
+Other	其他
+Search	搜索
+Food	食物
 Tools	工具
-Combat	战斗
-Brewing	酿造
+Fighting	战斗
+Unused	未用
 Materials	材料
-Survival Inventory	生存模式物品栏
+Your Bag	你的背包
+Done	完成
+alpha: abc/123   shift: Abc   toolbox: finish the word	alpha：字母/数字   shift：大写   工具箱：补全
+x,n,t  :     var  _     x10^x  ~     ans  space     0  @	x,n,t  :     var  _     x10^x  ~     ans  空格     0  @
+Play	开始
+Play Together	一起玩
+Settings	设置
+Leave	离开
+Play This World	进入这个世界
+New World	新世界
+Rename	改名
+Delete	删除
+Same Settings	同样设置
+Cancel	取消
+Mode: 	模式：
+Commands: 	命令：
+ON	开
+OFF	关
+World Number: 	世界编号：
+(any)	（随机）
+Land: 	地形：
+Flat	平坦
+Natural	自然
+Difficulty: 	难度：
+Detail: 	细节：
+High	高
+Low	低
+Look Speed: 	转头速度：
+Clouds: 	云：
+Head Sway: 	视角摇晃：
+Keys	按键
+Resume	继续
+Journal	日志
+Records	记录
+Turn On Commands	开启命令
+Save and Leave	保存并离开
+Use These Settings	使用这些设置
+Try Again	再试一次
+Main Menu	主菜单
+Copy of 	副本：
+Look	视角
+Break, Hit	破坏、攻击
+Break, hit	破坏、攻击
+Copy Block	复制方块
+Copy block	复制方块
+Use, Place	使用、放置
+Place, use	放置、使用
+Throw Item	扔出物品
+Throw	扔出
+Belt Slot 1	快捷栏 1
+Slot 1	格 1
+Belt Slot 2	快捷栏 2
+Slot 2	格 2
+Belt Slot 3	快捷栏 3
+Slot 3	格 3
+Belt Slot 4	快捷栏 4
+Slot 4	格 4
+Belt Slot 5	快捷栏 5
+Slot 5	格 5
+Belt Slot 6	快捷栏 6
+Slot 6	格 6
+Belt Slot 7	快捷栏 7
+Slot 7	格 7
+Belt Slot 8	快捷栏 8
+Slot 8	格 8
+Belt Slot 9	快捷栏 9
+Slot 9	格 9
+Bag	背包
+Pause	暂停
+Jump	跳
+Crouch	蹲下
+Run	奔跑
+Step Left	左移
+Left	左
+Step Right	右移
+Right	右
+Go Back	后退
+Backward	后
+Go Forward	前进
+Forward	前
+Chat Box	聊天框
+Chat	聊天
+Command Box	命令框
+Command	命令
+Actions	动作
+Moving	移动
+Back	返回
+toolbox	工具箱
+NONE	无
+Controls	操作
+Home	Home
+Save, quit	保存、退出
+1 to 9: belt slot.	1 到 9：快捷栏格子。
+EXE: as OK.	EXE：同 OK。
+: 	：
+.	。
+Forward twice: run.   Jump twice: fly (Creative).	连按前进：奔跑。   连跳两次：飞行（创造）。
+Menus: OK takes or puts, EXE one, shift+OK moves.	菜单：OK 拿起或放下，EXE 一个，shift+OK 移动。
+Hold OK and move over slots to spread a stack out.	按住 OK 划过格子可平分一组物品。
+Key Sheet	按键说明
+Reset	默认
+Default Keys	默认按键
+Build anything!	想造什么就造什么！
+One block at a time	一次一块
+Dig deep, look up	深挖，也要抬头看
+Mind the fizzlers	小心火药桶怪
+Made for your calculator	为你的计算器而做
+Plant a tree today	今天种棵树吧
+A block-building game of Calcade	Calcade 的方块建造游戏
+Original game by Mason Chen	原作：Mason Chen
+Your Worlds	你的世界
+, commands	，命令
+No worlds yet	还没有世界
+Storage free: 	剩余空间：
+ KB	 KB
+Name	名称
+Every block, flying, and blocks	所有方块、飞行，还有
+Gather, build and craft, and keep	采集、建造、制作，并保持
+that break at once	一下就碎的方块
+yourself fed and healthy	吃饱和健康
+alpha: letters or digits, shift: capitals, OK: done	alpha：字母或数字，shift：大写，OK：完成
+Leave it empty for any world	留空则随机生成世界
+Delete this world?	删除这个世界？
+'	“
+' will be gone for good.	”将被永久删除。
+Paused	已暂停
+Commands	命令
+Settings for This World	这个世界的设置
+Opening the world	正在打开世界
+Making the land	正在生成地形
+Make	制作
+Knocked out!	你倒下了！
+Points: 	分数：
+You can sleep only at night	只能在夜里睡觉
+Too many monsters around to sleep	附近有怪物，睡不着
diff --git a/games/numblocks/src/blocks.h b/games/numblocks/src/blocks.h
index 4ef35b5..e957cec 100644
--- a/games/numblocks/src/blocks.h
+++ b/games/numblocks/src/blocks.h
@@ -31,231 +31,231 @@ enum {
   B_SAPLING_ACACIA = 24,   /* 6:4 */
   B_SAPLING_DARK_OAK = 25,   /* 6:5 */
   B_BEDROCK = 26,   /* 7:0 */
-  B_WATER = 27,   /* 9:0 */
-  B_LAVA = 28,   /* 11:0 */
-  B_SAND = 29,   /* 12:0 */
-  B_RED_SAND = 30,   /* 12:1 */
-  B_GRAVEL = 31,   /* 13:0 */
-  B_GOLD_ORE = 32,   /* 14:0 */
-  B_IRON_ORE = 33,   /* 15:0 */
-  B_COAL_ORE = 34,   /* 16:0 */
-  B_LOG_OAK = 35,   /* 17:0 */
-  B_LOG_OAK_X = 36,   /* 17:4 */
-  B_LOG_OAK_Z = 37,   /* 17:8 */
-  B_LOG_OAK_BARK = 38,   /* 17:12 */
-  B_LOG_SPRUCE = 39,   /* 17:1 */
-  B_LOG_SPRUCE_X = 40,   /* 17:5 */
-  B_LOG_SPRUCE_Z = 41,   /* 17:9 */
-  B_LOG_SPRUCE_BARK = 42,   /* 17:13 */
-  B_LOG_BIRCH = 43,   /* 17:2 */
-  B_LOG_BIRCH_X = 44,   /* 17:6 */
-  B_LOG_BIRCH_Z = 45,   /* 17:10 */
-  B_LOG_BIRCH_BARK = 46,   /* 17:14 */
-  B_LOG_JUNGLE = 47,   /* 17:3 */
-  B_LOG_JUNGLE_X = 48,   /* 17:7 */
-  B_LOG_JUNGLE_Z = 49,   /* 17:11 */
-  B_LOG_JUNGLE_BARK = 50,   /* 17:15 */
-  B_LEAVES_OAK = 51,   /* 18:0 */
-  B_LEAVES_SPRUCE = 52,   /* 18:1 */
-  B_LEAVES_BIRCH = 53,   /* 18:2 */
-  B_LEAVES_JUNGLE = 54,   /* 18:3 */
-  B_SPONGE = 55,   /* 19:0 */
-  B_GLASS = 56,   /* 20:0 */
-  B_LAPIS_ORE = 57,   /* 21:0 */
-  B_LAPIS_BLOCK = 58,   /* 22:0 */
-  B_SANDSTONE = 59,   /* 24:0 */
-  B_SANDSTONE_CHISELED = 60,   /* 24:1 */
-  B_SANDSTONE_SMOOTH = 61,   /* 24:2 */
-  B_COBWEB = 62,   /* 30:0 */
-  B_DEAD_SHRUB = 63,   /* 31:0 */
-  B_TALL_GRASS = 64,   /* 31:1 */
-  B_FERN = 65,   /* 31:2 */
-  B_DEAD_BUSH = 66,   /* 32:0 */
-  B_WOOL_WHITE = 67,   /* 35:0 */
-  B_WOOL_ORANGE = 68,   /* 35:1 */
-  B_WOOL_MAGENTA = 69,   /* 35:2 */
-  B_WOOL_LIGHT_BLUE = 70,   /* 35:3 */
-  B_WOOL_YELLOW = 71,   /* 35:4 */
-  B_WOOL_LIME = 72,   /* 35:5 */
-  B_WOOL_PINK = 73,   /* 35:6 */
-  B_WOOL_GRAY = 74,   /* 35:7 */
-  B_WOOL_SILVER = 75,   /* 35:8 */
-  B_WOOL_CYAN = 76,   /* 35:9 */
-  B_WOOL_PURPLE = 77,   /* 35:10 */
-  B_WOOL_BLUE = 78,   /* 35:11 */
-  B_WOOL_BROWN = 79,   /* 35:12 */
-  B_WOOL_GREEN = 80,   /* 35:13 */
-  B_WOOL_RED = 81,   /* 35:14 */
-  B_WOOL_BLACK = 82,   /* 35:15 */
-  B_DANDELION = 83,   /* 37:0 */
-  B_POPPY = 84,   /* 38:0 */
-  B_BLUE_ORCHID = 85,   /* 38:1 */
-  B_ALLIUM = 86,   /* 38:2 */
-  B_AZURE_BLUET = 87,   /* 38:3 */
-  B_RED_TULIP = 88,   /* 38:4 */
-  B_ORANGE_TULIP = 89,   /* 38:5 */
-  B_WHITE_TULIP = 90,   /* 38:6 */
-  B_PINK_TULIP = 91,   /* 38:7 */
-  B_OXEYE_DAISY = 92,   /* 38:8 */
-  B_BROWN_MUSHROOM = 93,   /* 39:0 */
-  B_RED_MUSHROOM = 94,   /* 40:0 */
-  B_GOLD_BLOCK = 95,   /* 41:0 */
-  B_IRON_BLOCK = 96,   /* 42:0 */
-  B_STONE_SLAB_DOUBLE = 97,   /* 43:0 */
-  B_STONE_SLAB = 98,   /* 44:0 */
-  B_SANDSTONE_SLAB = 99,   /* 44:1 */
-  B_WOOD_SLAB_OLD = 100,   /* 44:2 */
-  B_COBBLESTONE_SLAB = 101,   /* 44:3 */
-  B_BRICK_SLAB = 102,   /* 44:4 */
-  B_STONE_BRICK_SLAB = 103,   /* 44:5 */
-  B_BRICKS = 104,   /* 45:0 */
-  B_TNT = 105,   /* 46:0 */
-  B_BOOKSHELF = 106,   /* 47:0 */
-  B_MOSSY_COBBLESTONE = 107,   /* 48:0 */
-  B_OBSIDIAN = 108,   /* 49:0 */
-  B_TORCH = 109,   /* 50:5 */
-  B_TORCH_E = 110,   /* 50:1 */
-  B_TORCH_W = 111,   /* 50:2 */
-  B_TORCH_S = 112,   /* 50:3 */
-  B_TORCH_N = 113,   /* 50:4 */
-  B_MOB_SPAWNER = 114,   /* 52:0 */
-  B_OAK_STAIRS = 115,   /* 53:0 */
-  B_CHEST = 116,   /* 54:2 */
-  B_DIAMOND_ORE = 117,   /* 56:0 */
-  B_DIAMOND_BLOCK = 118,   /* 57:0 */
-  B_CRAFTING_TABLE = 119,   /* 58:0 */
-  B_WHEAT_0 = 120,   /* 59:0 */
-  B_WHEAT_1 = 121,   /* 59:1 */
-  B_WHEAT_2 = 122,   /* 59:2 */
-  B_WHEAT_3 = 123,   /* 59:3 */
-  B_WHEAT_4 = 124,   /* 59:4 */
-  B_WHEAT_5 = 125,   /* 59:5 */
-  B_WHEAT_6 = 126,   /* 59:6 */
-  B_WHEAT_7 = 127,   /* 59:7 */
-  B_FARMLAND = 128,   /* 60:0 */
-  B_FARMLAND_WET = 129,   /* 60:7 */
-  B_FURNACE = 130,   /* 61:2 */
-  B_FURNACE_LIT = 131,   /* 62:2 */
-  B_DOOR_OAK_LOWER = 132,   /* 64:0 */
-  B_DOOR_OAK_UPPER = 133,   /* 64:8 */
-  B_LADDER = 134,   /* 65:2 */
-  B_RAIL = 135,   /* 66:0 */
-  B_COBBLESTONE_STAIRS = 136,   /* 67:0 */
-  B_REDSTONE_ORE = 137,   /* 73:0 */
-  B_SNOW_LAYER = 138,   /* 78:0 */
-  B_ICE = 139,   /* 79:0 */
-  B_SNOW = 140,   /* 80:0 */
-  B_CACTUS = 141,   /* 81:0 */
-  B_CLAY = 142,   /* 82:0 */
-  B_SUGAR_CANE = 143,   /* 83:0 */
-  B_FENCE_OAK = 144,   /* 85:0 */
-  B_PUMPKIN = 145,   /* 86:0 */
-  B_JACK_O_LANTERN = 146,   /* 91:0 */
-  B_MONSTER_EGG_STONE = 147,   /* 97:0 */
-  B_STONE_BRICKS = 148,   /* 98:0 */
-  B_MOSSY_STONE_BRICKS = 149,   /* 98:1 */
-  B_CRACKED_STONE_BRICKS = 150,   /* 98:2 */
-  B_CHISELED_STONE_BRICKS = 151,   /* 98:3 */
-  B_BROWN_MUSHROOM_CAP = 152,   /* 99:14 */
-  B_BROWN_MUSHROOM_INSIDE = 153,   /* 99:0 */
-  B_BROWN_MUSHROOM_STEM = 154,   /* 99:10 */
-  B_RED_MUSHROOM_CAP = 155,   /* 100:14 */
-  B_RED_MUSHROOM_INSIDE = 156,   /* 100:0 */
-  B_RED_MUSHROOM_STEM = 157,   /* 100:10 */
-  B_GLASS_PANE = 158,   /* 102:0 */
-  B_MELON = 159,   /* 103:0 */
-  B_VINE = 160,   /* 106:0 */
-  B_MYCELIUM = 161,   /* 110:0 */
-  B_LILY_PAD = 162,   /* 111:0 */
-  B_EMERALD_ORE = 163,   /* 129:0 */
-  B_EMERALD_BLOCK = 164,   /* 133:0 */
-  B_COBBLESTONE_WALL = 165,   /* 139:0 */
-  B_HARDENED_CLAY = 166,   /* 172:0 */
-  B_STAINED_CLAY_WHITE = 167,   /* 159:0 */
-  B_STAINED_CLAY_ORANGE = 168,   /* 159:1 */
-  B_STAINED_CLAY_MAGENTA = 169,   /* 159:2 */
-  B_STAINED_CLAY_LIGHT_BLUE = 170,   /* 159:3 */
-  B_STAINED_CLAY_YELLOW = 171,   /* 159:4 */
-  B_STAINED_CLAY_LIME = 172,   /* 159:5 */
-  B_STAINED_CLAY_PINK = 173,   /* 159:6 */
-  B_STAINED_CLAY_GRAY = 174,   /* 159:7 */
-  B_STAINED_CLAY_SILVER = 175,   /* 159:8 */
-  B_STAINED_CLAY_CYAN = 176,   /* 159:9 */
-  B_STAINED_CLAY_PURPLE = 177,   /* 159:10 */
-  B_STAINED_CLAY_BLUE = 178,   /* 159:11 */
-  B_STAINED_CLAY_BROWN = 179,   /* 159:12 */
-  B_STAINED_CLAY_GREEN = 180,   /* 159:13 */
-  B_STAINED_CLAY_RED = 181,   /* 159:14 */
-  B_STAINED_CLAY_BLACK = 182,   /* 159:15 */
-  B_LOG_ACACIA = 183,   /* 162:0 */
-  B_LOG_ACACIA_X = 184,   /* 162:4 */
-  B_LOG_ACACIA_Z = 185,   /* 162:8 */
-  B_LOG_ACACIA_BARK = 186,   /* 162:12 */
-  B_LOG_DARK_OAK = 187,   /* 162:1 */
-  B_LOG_DARK_OAK_X = 188,   /* 162:5 */
-  B_LOG_DARK_OAK_Z = 189,   /* 162:9 */
-  B_LOG_DARK_OAK_BARK = 190,   /* 162:13 */
-  B_LEAVES_ACACIA = 191,   /* 161:0 */
-  B_LEAVES_DARK_OAK = 192,   /* 161:1 */
-  B_HAY_BALE = 193,   /* 170:0 */
-  B_COAL_BLOCK = 194,   /* 173:0 */
-  B_PACKED_ICE = 195,   /* 174:0 */
-  B_SUNFLOWER_LOWER = 196,   /* 175:0 */
-  B_SUNFLOWER_UPPER = 197,   /* 175:8 */
-  B_LILAC_LOWER = 198,   /* 175:1 */
-  B_LILAC_UPPER = 199,   /* 175:9 */
-  B_DOUBLE_GRASS_LOWER = 200,   /* 175:2 */
-  B_DOUBLE_GRASS_UPPER = 201,   /* 175:10 */
-  B_LARGE_FERN_LOWER = 202,   /* 175:3 */
-  B_LARGE_FERN_UPPER = 203,   /* 175:11 */
-  B_ROSE_BUSH_LOWER = 204,   /* 175:4 */
-  B_ROSE_BUSH_UPPER = 205,   /* 175:12 */
-  B_PEONY_LOWER = 206,   /* 175:5 */
-  B_PEONY_UPPER = 207,   /* 175:13 */
-  B_RED_SANDSTONE = 208,   /* 179:0 */
-  B_GLOWSTONE = 209,   /* 89:0 */
-  B_BED_FOOT = 210,   /* 26:0 */
-  B_BED_HEAD = 211,   /* 26:8 */
-  B_FLOWING_WATER = 212,   /* 8:1 */
-  B_FLOWING_LAVA = 213,   /* 10:2 */
-  B_WOOD_SLAB_OAK = 214,   /* 126:0 */
-  B_WOOD_SLAB_SPRUCE = 215,   /* 126:1 */
-  B_WOOD_SLAB_BIRCH = 216,   /* 126:2 */
-  B_WOOD_SLAB_JUNGLE = 217,   /* 126:3 */
-  B_WOOD_SLAB_ACACIA = 218,   /* 126:4 */
-  B_WOOD_SLAB_DARK_OAK = 219,   /* 126:5 */
-  B_CARROTS_0 = 220,   /* 141:0 */
-  B_CARROTS_1 = 221,   /* 141:2 */
-  B_CARROTS_2 = 222,   /* 141:4 */
-  B_CARROTS_3 = 223,   /* 141:7 */
-  B_POTATOES_0 = 224,   /* 142:0 */
-  B_POTATOES_1 = 225,   /* 142:2 */
-  B_POTATOES_2 = 226,   /* 142:4 */
-  B_POTATOES_3 = 227,   /* 142:7 */
-  B_FLOWING_WATER_2 = 228,   /* 8:2 */
-  B_FLOWING_WATER_3 = 229,   /* 8:3 */
-  B_FLOWING_WATER_4 = 230,   /* 8:4 */
-  B_FLOWING_WATER_5 = 231,   /* 8:5 */
-  B_FLOWING_WATER_6 = 232,   /* 8:6 */
-  B_FLOWING_WATER_7 = 233,   /* 8:7 */
-  B_FALLING_WATER = 234,   /* 8:8 */
-  B_FLOWING_LAVA_4 = 235,   /* 10:4 */
-  B_FLOWING_LAVA_6 = 236,   /* 10:6 */
-  B_FALLING_LAVA = 237,   /* 10:8 */
-  B_OAK_STAIRS_W = 238,   /* 53:1 */
-  B_COBBLESTONE_STAIRS_W = 239,   /* 67:1 */
-  B_OAK_STAIRS_S = 240,   /* 53:2 */
-  B_COBBLESTONE_STAIRS_S = 241,   /* 67:2 */
-  B_OAK_STAIRS_N = 242,   /* 53:3 */
-  B_COBBLESTONE_STAIRS_N = 243,   /* 67:3 */
-  B_DOOR_OAK_LOWER_S = 244,   /* 64:1 */
-  B_DOOR_OAK_LOWER_W = 245,   /* 64:2 */
-  B_DOOR_OAK_LOWER_N = 246,   /* 64:3 */
-  B_DOOR_OAK_LOWER_E_OPEN = 247,   /* 64:4 */
-  B_DOOR_OAK_LOWER_S_OPEN = 248,   /* 64:5 */
-  B_DOOR_OAK_LOWER_W_OPEN = 249,   /* 64:6 */
-  B_DOOR_OAK_LOWER_N_OPEN = 250,   /* 64:7 */
-  B_FIRE = 251,   /* 51:0 */
+  B_WATER = 27,   /* 8:0 */
+  B_LAVA = 28,   /* 9:0 */
+  B_SAND = 29,   /* 10:0 */
+  B_RED_SAND = 30,   /* 10:1 */
+  B_GRAVEL = 31,   /* 11:0 */
+  B_GOLD_ORE = 32,   /* 12:0 */
+  B_IRON_ORE = 33,   /* 13:0 */
+  B_COAL_ORE = 34,   /* 14:0 */
+  B_LOG_OAK = 35,   /* 15:0 */
+  B_LOG_OAK_X = 36,   /* 15:4 */
+  B_LOG_OAK_Z = 37,   /* 15:8 */
+  B_LOG_OAK_BARK = 38,   /* 15:12 */
+  B_LOG_SPRUCE = 39,   /* 15:1 */
+  B_LOG_SPRUCE_X = 40,   /* 15:5 */
+  B_LOG_SPRUCE_Z = 41,   /* 15:9 */
+  B_LOG_SPRUCE_BARK = 42,   /* 15:13 */
+  B_LOG_BIRCH = 43,   /* 15:2 */
+  B_LOG_BIRCH_X = 44,   /* 15:6 */
+  B_LOG_BIRCH_Z = 45,   /* 15:10 */
+  B_LOG_BIRCH_BARK = 46,   /* 15:14 */
+  B_LOG_JUNGLE = 47,   /* 15:3 */
+  B_LOG_JUNGLE_X = 48,   /* 15:7 */
+  B_LOG_JUNGLE_Z = 49,   /* 15:11 */
+  B_LOG_JUNGLE_BARK = 50,   /* 15:15 */
+  B_LEAVES_OAK = 51,   /* 16:0 */
+  B_LEAVES_SPRUCE = 52,   /* 16:1 */
+  B_LEAVES_BIRCH = 53,   /* 16:2 */
+  B_LEAVES_JUNGLE = 54,   /* 16:3 */
+  B_SPONGE = 55,   /* 17:0 */
+  B_GLASS = 56,   /* 18:0 */
+  B_LAPIS_ORE = 57,   /* 19:0 */
+  B_LAPIS_BLOCK = 58,   /* 20:0 */
+  B_SANDSTONE = 59,   /* 21:0 */
+  B_SANDSTONE_CHISELED = 60,   /* 21:1 */
+  B_SANDSTONE_SMOOTH = 61,   /* 21:2 */
+  B_COBWEB = 62,   /* 22:0 */
+  B_DEAD_SHRUB = 63,   /* 23:0 */
+  B_TALL_GRASS = 64,   /* 23:1 */
+  B_FERN = 65,   /* 23:2 */
+  B_DEAD_BUSH = 66,   /* 24:0 */
+  B_WOOL_WHITE = 67,   /* 25:0 */
+  B_WOOL_ORANGE = 68,   /* 25:1 */
+  B_WOOL_MAGENTA = 69,   /* 25:2 */
+  B_WOOL_LIGHT_BLUE = 70,   /* 25:3 */
+  B_WOOL_YELLOW = 71,   /* 25:4 */
+  B_WOOL_LIME = 72,   /* 25:5 */
+  B_WOOL_PINK = 73,   /* 25:6 */
+  B_WOOL_GRAY = 74,   /* 25:7 */
+  B_WOOL_SILVER = 75,   /* 25:8 */
+  B_WOOL_CYAN = 76,   /* 25:9 */
+  B_WOOL_PURPLE = 77,   /* 25:10 */
+  B_WOOL_BLUE = 78,   /* 25:11 */
+  B_WOOL_BROWN = 79,   /* 25:12 */
+  B_WOOL_GREEN = 80,   /* 25:13 */
+  B_WOOL_RED = 81,   /* 25:14 */
+  B_WOOL_BLACK = 82,   /* 25:15 */
+  B_DANDELION = 83,   /* 26:0 */
+  B_POPPY = 84,   /* 27:0 */
+  B_BLUE_ORCHID = 85,   /* 27:1 */
+  B_ALLIUM = 86,   /* 27:2 */
+  B_AZURE_BLUET = 87,   /* 27:3 */
+  B_RED_TULIP = 88,   /* 27:4 */
+  B_ORANGE_TULIP = 89,   /* 27:5 */
+  B_WHITE_TULIP = 90,   /* 27:6 */
+  B_PINK_TULIP = 91,   /* 27:7 */
+  B_OXEYE_DAISY = 92,   /* 27:8 */
+  B_BROWN_MUSHROOM = 93,   /* 28:0 */
+  B_RED_MUSHROOM = 94,   /* 29:0 */
+  B_GOLD_BLOCK = 95,   /* 30:0 */
+  B_IRON_BLOCK = 96,   /* 31:0 */
+  B_STONE_SLAB_DOUBLE = 97,   /* 32:0 */
+  B_STONE_SLAB = 98,   /* 33:0 */
+  B_SANDSTONE_SLAB = 99,   /* 33:1 */
+  B_WOOD_SLAB_OLD = 100,   /* 33:2 */
+  B_COBBLESTONE_SLAB = 101,   /* 33:3 */
+  B_BRICK_SLAB = 102,   /* 33:4 */
+  B_STONE_BRICK_SLAB = 103,   /* 33:5 */
+  B_BRICKS = 104,   /* 34:0 */
+  B_TNT = 105,   /* 35:0 */
+  B_BOOKSHELF = 106,   /* 36:0 */
+  B_MOSSY_COBBLESTONE = 107,   /* 37:0 */
+  B_OBSIDIAN = 108,   /* 38:0 */
+  B_TORCH = 109,   /* 39:5 */
+  B_TORCH_E = 110,   /* 39:1 */
+  B_TORCH_W = 111,   /* 39:2 */
+  B_TORCH_S = 112,   /* 39:3 */
+  B_TORCH_N = 113,   /* 39:4 */
+  B_MOB_SPAWNER = 114,   /* 40:0 */
+  B_OAK_STAIRS = 115,   /* 41:0 */
+  B_CHEST = 116,   /* 42:2 */
+  B_DIAMOND_ORE = 117,   /* 43:0 */
+  B_DIAMOND_BLOCK = 118,   /* 44:0 */
+  B_CRAFTING_TABLE = 119,   /* 45:0 */
+  B_WHEAT_0 = 120,   /* 46:0 */
+  B_WHEAT_1 = 121,   /* 46:1 */
+  B_WHEAT_2 = 122,   /* 46:2 */
+  B_WHEAT_3 = 123,   /* 46:3 */
+  B_WHEAT_4 = 124,   /* 46:4 */
+  B_WHEAT_5 = 125,   /* 46:5 */
+  B_WHEAT_6 = 126,   /* 46:6 */
+  B_WHEAT_7 = 127,   /* 46:7 */
+  B_FARMLAND = 128,   /* 47:0 */
+  B_FARMLAND_WET = 129,   /* 47:7 */
+  B_FURNACE = 130,   /* 48:2 */
+  B_FURNACE_LIT = 131,   /* 49:2 */
+  B_DOOR_OAK_LOWER = 132,   /* 50:0 */
+  B_DOOR_OAK_UPPER = 133,   /* 50:8 */
+  B_LADDER = 134,   /* 51:2 */
+  B_RAIL = 135,   /* 52:0 */
+  B_COBBLESTONE_STAIRS = 136,   /* 53:0 */
+  B_REDSTONE_ORE = 137,   /* 54:0 */
+  B_SNOW_LAYER = 138,   /* 55:0 */
+  B_ICE = 139,   /* 56:0 */
+  B_SNOW = 140,   /* 57:0 */
+  B_CACTUS = 141,   /* 58:0 */
+  B_CLAY = 142,   /* 59:0 */
+  B_SUGAR_CANE = 143,   /* 60:0 */
+  B_FENCE_OAK = 144,   /* 61:0 */
+  B_PUMPKIN = 145,   /* 62:0 */
+  B_JACK_O_LANTERN = 146,   /* 63:0 */
+  B_MONSTER_EGG_STONE = 147,   /* 64:0 */
+  B_STONE_BRICKS = 148,   /* 65:0 */
+  B_MOSSY_STONE_BRICKS = 149,   /* 65:1 */
+  B_CRACKED_STONE_BRICKS = 150,   /* 65:2 */
+  B_CHISELED_STONE_BRICKS = 151,   /* 65:3 */
+  B_BROWN_MUSHROOM_CAP = 152,   /* 66:14 */
+  B_BROWN_MUSHROOM_INSIDE = 153,   /* 66:0 */
+  B_BROWN_MUSHROOM_STEM = 154,   /* 66:10 */
+  B_RED_MUSHROOM_CAP = 155,   /* 67:14 */
+  B_RED_MUSHROOM_INSIDE = 156,   /* 67:0 */
+  B_RED_MUSHROOM_STEM = 157,   /* 67:10 */
+  B_GLASS_PANE = 158,   /* 68:0 */
+  B_MELON = 159,   /* 69:0 */
+  B_VINE = 160,   /* 70:0 */
+  B_MYCELIUM = 161,   /* 71:0 */
+  B_LILY_PAD = 162,   /* 72:0 */
+  B_EMERALD_ORE = 163,   /* 73:0 */
+  B_EMERALD_BLOCK = 164,   /* 74:0 */
+  B_COBBLESTONE_WALL = 165,   /* 75:0 */
+  B_HARDENED_CLAY = 166,   /* 76:0 */
+  B_STAINED_CLAY_WHITE = 167,   /* 77:0 */
+  B_STAINED_CLAY_ORANGE = 168,   /* 77:1 */
+  B_STAINED_CLAY_MAGENTA = 169,   /* 77:2 */
+  B_STAINED_CLAY_LIGHT_BLUE = 170,   /* 77:3 */
+  B_STAINED_CLAY_YELLOW = 171,   /* 77:4 */
+  B_STAINED_CLAY_LIME = 172,   /* 77:5 */
+  B_STAINED_CLAY_PINK = 173,   /* 77:6 */
+  B_STAINED_CLAY_GRAY = 174,   /* 77:7 */
+  B_STAINED_CLAY_SILVER = 175,   /* 77:8 */
+  B_STAINED_CLAY_CYAN = 176,   /* 77:9 */
+  B_STAINED_CLAY_PURPLE = 177,   /* 77:10 */
+  B_STAINED_CLAY_BLUE = 178,   /* 77:11 */
+  B_STAINED_CLAY_BROWN = 179,   /* 77:12 */
+  B_STAINED_CLAY_GREEN = 180,   /* 77:13 */
+  B_STAINED_CLAY_RED = 181,   /* 77:14 */
+  B_STAINED_CLAY_BLACK = 182,   /* 77:15 */
+  B_LOG_ACACIA = 183,   /* 78:0 */
+  B_LOG_ACACIA_X = 184,   /* 78:4 */
+  B_LOG_ACACIA_Z = 185,   /* 78:8 */
+  B_LOG_ACACIA_BARK = 186,   /* 78:12 */
+  B_LOG_DARK_OAK = 187,   /* 78:1 */
+  B_LOG_DARK_OAK_X = 188,   /* 78:5 */
+  B_LOG_DARK_OAK_Z = 189,   /* 78:9 */
+  B_LOG_DARK_OAK_BARK = 190,   /* 78:13 */
+  B_LEAVES_ACACIA = 191,   /* 79:0 */
+  B_LEAVES_DARK_OAK = 192,   /* 79:1 */
+  B_HAY_BALE = 193,   /* 80:0 */
+  B_COAL_BLOCK = 194,   /* 81:0 */
+  B_PACKED_ICE = 195,   /* 82:0 */
+  B_SUNFLOWER_LOWER = 196,   /* 83:0 */
+  B_SUNFLOWER_UPPER = 197,   /* 83:8 */
+  B_LILAC_LOWER = 198,   /* 83:1 */
+  B_LILAC_UPPER = 199,   /* 83:9 */
+  B_DOUBLE_GRASS_LOWER = 200,   /* 83:2 */
+  B_DOUBLE_GRASS_UPPER = 201,   /* 83:10 */
+  B_LARGE_FERN_LOWER = 202,   /* 83:3 */
+  B_LARGE_FERN_UPPER = 203,   /* 83:11 */
+  B_ROSE_BUSH_LOWER = 204,   /* 83:4 */
+  B_ROSE_BUSH_UPPER = 205,   /* 83:12 */
+  B_PEONY_LOWER = 206,   /* 83:5 */
+  B_PEONY_UPPER = 207,   /* 83:13 */
+  B_RED_SANDSTONE = 208,   /* 84:0 */
+  B_GLOWSTONE = 209,   /* 85:0 */
+  B_BED_FOOT = 210,   /* 86:0 */
+  B_BED_HEAD = 211,   /* 86:8 */
+  B_FLOWING_WATER = 212,   /* 87:1 */
+  B_FLOWING_LAVA = 213,   /* 88:2 */
+  B_WOOD_SLAB_OAK = 214,   /* 89:0 */
+  B_WOOD_SLAB_SPRUCE = 215,   /* 89:1 */
+  B_WOOD_SLAB_BIRCH = 216,   /* 89:2 */
+  B_WOOD_SLAB_JUNGLE = 217,   /* 89:3 */
+  B_WOOD_SLAB_ACACIA = 218,   /* 89:4 */
+  B_WOOD_SLAB_DARK_OAK = 219,   /* 89:5 */
+  B_CARROTS_0 = 220,   /* 90:0 */
+  B_CARROTS_1 = 221,   /* 90:2 */
+  B_CARROTS_2 = 222,   /* 90:4 */
+  B_CARROTS_3 = 223,   /* 90:7 */
+  B_POTATOES_0 = 224,   /* 91:0 */
+  B_POTATOES_1 = 225,   /* 91:2 */
+  B_POTATOES_2 = 226,   /* 91:4 */
+  B_POTATOES_3 = 227,   /* 91:7 */
+  B_FLOWING_WATER_2 = 228,   /* 87:2 */
+  B_FLOWING_WATER_3 = 229,   /* 87:3 */
+  B_FLOWING_WATER_4 = 230,   /* 87:4 */
+  B_FLOWING_WATER_5 = 231,   /* 87:5 */
+  B_FLOWING_WATER_6 = 232,   /* 87:6 */
+  B_FLOWING_WATER_7 = 233,   /* 87:7 */
+  B_FALLING_WATER = 234,   /* 87:8 */
+  B_FLOWING_LAVA_4 = 235,   /* 88:4 */
+  B_FLOWING_LAVA_6 = 236,   /* 88:6 */
+  B_FALLING_LAVA = 237,   /* 88:8 */
+  B_OAK_STAIRS_W = 238,   /* 41:1 */
+  B_COBBLESTONE_STAIRS_W = 239,   /* 53:1 */
+  B_OAK_STAIRS_S = 240,   /* 41:2 */
+  B_COBBLESTONE_STAIRS_S = 241,   /* 53:2 */
+  B_OAK_STAIRS_N = 242,   /* 41:3 */
+  B_COBBLESTONE_STAIRS_N = 243,   /* 53:3 */
+  B_DOOR_OAK_LOWER_S = 244,   /* 50:1 */
+  B_DOOR_OAK_LOWER_W = 245,   /* 50:2 */
+  B_DOOR_OAK_LOWER_N = 246,   /* 50:3 */
+  B_DOOR_OAK_LOWER_E_OPEN = 247,   /* 50:4 */
+  B_DOOR_OAK_LOWER_S_OPEN = 248,   /* 50:5 */
+  B_DOOR_OAK_LOWER_W_OPEN = 249,   /* 50:6 */
+  B_DOOR_OAK_LOWER_N_OPEN = 250,   /* 50:7 */
+  B_FIRE = 251,   /* 92:0 */
   B_COUNT = 252
 };
 
diff --git a/games/numblocks/src/command.c b/games/numblocks/src/command.c
index 81c580c..738ed0f 100644
--- a/games/numblocks/src/command.c
+++ b/games/numblocks/src/command.c
@@ -1,7 +1,7 @@
-/* The commands typed in the chat, as Minecraft 1.8.8 has them (net.minecraft.command): what they
- * do, what they answer (its words, from en_US.lang), and how the toolbox key finishes their words
- * (addTabCompletionOptions). Without cheats only /help, /me and /seed work, as in a world of one's
- * own that does not allow them. */
+/* NumBlocks' console (Calcade, 19 October 2026): the commands typed in the chat, what
+ * they answer, and how the toolbox key finishes their words. Its own commands, names
+ * and words. Without commands turned on (the world's settings) only /help, /me and
+ * /seed work. */
 #include <math.h>
 #include "nb.h"
 #pragma GCC optimize("Os")   /* (not where the time goes: small) */
@@ -29,19 +29,15 @@ static void put_int(long long v) {
   r[n] = 0;
   put(r);
 }
-/* a double as Java writes one: at least one decimal (64.0, 100.5) */
+/* a position: one decimal */
 static void put_num(float v) {
-  long long w = (long long)roundf(v * 1000);
+  long long w = (long long)roundf(v * 10);
   if (w < 0) put("-"), w = -w;
-  put_int(w / 1000);
-  put(".");
-  int f = (int)(w % 1000);
-  char d[4] = {(char)('0' + f / 100), (char)('0' + f / 10 % 10), (char)('0' + f % 10), 0};
-  int n = 3;
-  while (n > 1 && d[n - 1] == '0') d[--n] = 0;
+  put_int(w / 10);
+  char d[3] = {'.', (char)('0' + w % 10), 0};
   put(d);
 }
-/* a translation: %s and %d take the arguments in turn (strings, then numbers) */
+/* a line from a (translated) pattern: %s and %d take the arguments in turn (strings, then numbers) */
 static void say(int color, const char *f, const char *s1, const char *s2, long long d1, long long d2) {
   out_n = 0, out[0] = 0;
   const char *s[2] = {s1, s2};
@@ -58,18 +54,14 @@ static void say(int color, const char *f, const char *s1, const char *s2, long l
   chat_add(out, color);
 }
 static void ok(const char *f, const char *s1, long long d1) { say(CHAT_WHITE, f, s1, NULL, d1, 0); }
-static void fail(const char *f, const char *s1, long long d1, long long d2) { say(CHAT_RED, f, s1, NULL, d1, d2); }
 
-/* CommandException: the command stops, the chat says why (in red) */
+/* a command that goes wrong stops there; the chat says why, in red */
 static bool failed;
-static void usage(const char *u) {
-  if (!failed) say(CHAT_RED, T("Usage: %s"), u, NULL, 0, 0);
-  failed = true;
-}
 static void error(const char *f, const char *s1, long long d1, long long d2) {
-  if (!failed) fail(f, s1, d1, d2);
+  if (!failed) say(CHAT_RED, f, s1, NULL, d1, d2);
   failed = true;
 }
+static void usage(const char *u) { error(T("Try: %s"), u, 0, 0); }
 
 /* ---------------------------------------------------------------- reading the words */
 static bool is_num(const char *s, bool dec) {
@@ -82,19 +74,19 @@ static bool is_num(const char *s, bool dec) {
   }
   return true;
 }
-/* CommandBase.parseInt: a whole number from lo to hi */
+/* a whole number from lo to hi */
 static long long num(const char *s, long long lo, long long hi) {
   if (failed) return lo;
   if (!is_num(s, false) || strlen(s) > 11) {
-    error(T("'%s' is not a valid number"), s, 0, 0);
+    error(T("%s: a number was expected"), s, 0, 0);
     return lo;
   }
   long long v = 0;
   const char *p = s + (*s == '-' || *s == '+');
   for (; *p; p++) v = v * 10 + (*p - '0');
   if (*s == '-') v = -v;
-  if (v < lo) error(T("The number you have entered (%d) is too small, it must be at least %d"), NULL, v, lo);
-  else if (v > hi) error(T("The number you have entered (%d) is too big, it must be at most %d"), NULL, v, hi);
+  if (v < lo) error(T("%d is too small (at least %d)"), NULL, v, lo);
+  else if (v > hi) error(T("%d is too big (at most %d)"), NULL, v, hi);
   return v;
 }
 static float to_float(const char *s) {
@@ -106,15 +98,15 @@ static float to_float(const char *s) {
     for (s++; *s >= '0' && *s <= '9'; s++) v += (*s - '0') * f, f /= 10;
   return neg ? -v : v;
 }
-/* CommandBase.parseCoordinate: a number, or "~" (and "~5") from where the player is; whole numbers
- * of x and z at the middle of their block (center) */
+/* a coordinate: a number, or ^ (where you are) and ^5, ^-2 (that far from it); whole numbers of x
+ * and z mean the middle of their block (center) */
 static float coord(float base, const char *s, bool center) {
   if (failed) return base;
-  bool rel = *s == '~';
+  bool rel = *s == '^';
   if (rel) s++;
   if (rel && !*s) return base;
   if (!is_num(s, true)) {
-    error(T("'%s' is not a valid number"), s - rel, 0, 0);
+    error(T("%s: a number was expected"), s - rel, 0, 0);
     return base;
   }
   float v = to_float(s);
@@ -122,134 +114,79 @@ static float coord(float base, const char *s, bool center) {
   if (center && !strchr(s, '.')) v += 0.5f;
   return v;
 }
-/* the player named: "Player", or a selector (@p, @a, @r, @e: there is no one else) */
-static bool player(const char *s) {
-  if (failed) return false;
-  if (!strcmp(s, PLAYER) || (s[0] == '@' && strchr("pare", s[1]) && (!s[2] || s[2] == '['))) return true;
-  error(T("That player cannot be found"), NULL, 0, 0);
-  return false;
-}
-static int to_int(const char *s) {
-  int v = 0;
-  bool neg = *s == '-';
-  if (*s == '-' || *s == '+') s++;
-  for (; *s >= '0' && *s <= '9'; s++) v = v * 10 + (*s - '0');
-  return neg ? -v : v;
-}
-static const char *strip_ns(const char *s) { return !strncmp(s, "minecraft:", 10) ? s + 10 : s; }
-/* a block's id by name or number (Block.getBlockFromName); -1: none */
-static int block_named(const char *s) {
-  const char *n = strip_ns(s);
-  if (is_num(n, false)) {
-    int v = to_int(n);
-    return v >= 0 && v < 198 && mc_block_name[v][0] ? v : -1;
-  }
-  for (int i = 0; i < 198; i++)
-    if (mc_block_name[i][0] && !strcmp(mc_block_name[i], n)) return i;
-  return -1;
-}
-/* an item's id by name or number (Item.getByNameOrId): items' names first, then blocks that are items */
-static int item_named(const char *s) {
-  const char *n = strip_ns(s);
-  if (is_num(n, false)) {
-    int v = to_int(n);
-    if (v >= 256 && v < 432 && mc_item_name[v - 256][0]) return v;
-    return v >= 0 && v < 198 && (mc_block_item[v >> 3] >> (v & 7) & 1) ? v : -1;
-  }
-  for (int i = 0; i < 176; i++)
-    if (mc_item_name[i][0] && !strcmp(mc_item_name[i], n)) return 256 + i;
-  for (int i = 0; i < 198; i++)
-    if ((mc_block_item[i >> 3] >> (i & 7) & 1) && !strcmp(mc_block_name[i], n)) return i;
-  return -1;
-}
-/* NumBlocks' item for Minecraft's id and data; -1: none */
-static int give_of(int id, int data) {
-  int k = id << 4 | data;
-  for (int i = 0; i < n_give; i++)
-    if (give_key[i] == k) return give_id[i];
+/* a block or an item by its name (names.c); -1: none */
+static int thing_named(const char *s, bool blocks_only) {
+  for (int i = 0; i < n_cmd_items; i++)
+    if (!strcmp(cmd_item_name[i], s) && (!blocks_only || cmd_item_id[i] < 256)) return cmd_item_id[i];
   return -1;
 }
 
 /* ---------------------------------------------------------------- the commands */
-enum { C_CLEAR, C_DIFFICULTY, C_EFFECT, C_GAMEMODE, C_GAMERULE, C_GIVE, C_HELP, C_KILL, C_ME, C_SAY, C_SEED,
-       C_SETBLOCK, C_SPAWNPOINT, C_SUMMON, C_TIME, C_TOGGLEDOWNFALL, C_TP, C_WEATHER, C_XP, N_COMMANDS };
-static const char *const cmd_name[N_COMMANDS] = {"clear", "difficulty", "effect", "gamemode", "gamerule", "give",
-                                                 "help", "kill", "me", "say", "seed", "setblock", "spawnpoint",
-                                                 "summon", "time", "toggledownfall", "tp", "weather", "xp"};
+enum { C_CLEAR, C_EFFECT, C_GIVE, C_HELP, C_HOME, C_KILL, C_LEVEL, C_ME, C_MODE, C_PLACE, C_RAIN, C_RULE, C_SAY,
+       C_SEED, C_SPAWN, C_TIME, C_TP, C_WEATHER, C_XP, N_COMMANDS };
+static const char *const cmd_name[N_COMMANDS] = {"clear", "effect", "give", "help", "home", "kill", "level", "me",
+                                                 "mode", "place", "rain", "rule", "say", "seed", "spawn", "time", "tp",
+                                                 "weather", "xp"};
 static const char *const cmd_usage[N_COMMANDS] = {
-    T("/clear [player] [item] [data] [maxCount] [dataTag]"),
-    T("/difficulty <new difficulty>"),
-    T("/effect <player> <effect> [seconds] [amplifier] [hideParticles] OR /effect <player> clear"),
-    T("/gamemode <mode> [player]"),
-    T("/gamerule <rule name> [value]"),
-    T("/give <player> <item> [amount] [data] [dataTag]"),
-    T("/help [page|command name]"),
-    T("/kill [player|entity]"),
-    T("/me <action ...>"),
-    T("/say <message ...>"),
-    "/seed",
-    T("/setblock <x> <y> <z> <TileName> [dataValue] [oldBlockHandling] [dataTag]"),
-    T("/spawnpoint [player] [<x> <y> <z>]"),
-    T("/summon <EntityName> [x] [y] [z] [dataTag]"),
-    T("/time <set|add|query> <value>"),
-    "/toggledownfall",
-    T("/tp [target player] <destination player> OR /tp [target player] <x> <y> <z> [<y-rot> <x-rot>]"),
-    T("/weather <clear|rain|thunder> [duration in seconds]"),
-    T("/xp <amount> [player] OR /xp <amount>L [player]")};
-/* (permission level 0, or /seed in a world of one's own) */
+    T("/clear [item]: empties your bag (or takes that item)"),
+    T("/effect <poison|hunger|healing|clear> [seconds] [strength]"),
+    T("/give <item> [how many]"),
+    T("/help [page|command]"),
+    T("/home [x y z]: you start again here"),
+    T("/kill: back to your starting point"),
+    T("/level <calm|easy|normal|hard>"),
+    T("/me <what you do>"),
+    T("/mode <survival|creative>"),
+    T("/place <block> [x y z] [keep|break]"),
+    T("/rain: starts or stops the rain"),
+    T("/rule [name] [on|off]"),
+    T("/say <message>"),
+    T("/seed: this world's number"),
+    T("/spawn <creature|lightning> [x y z]"),
+    T("/time [day|noon|night|midnight|number]"),
+    T("/tp <x> <y> <z>  (^ for where you are, ^5 for 5 from it)"),
+    T("/weather <clear|rain|storm> [seconds]"),
+    T("/xp <points> or /xp <levels>lv")};
 static bool allowed(int c) { return cheats_on() || c == C_HELP || c == C_ME || c == C_SEED; }
 
-static const char *const mode_name[2] = {T("Survival Mode"), T("Creative Mode")};
-static const char *const modes[4] = {"survival", "creative", "adventure", "spectator"};
-static const char *const diffs[4] = {"peaceful", "easy", "normal", "hard"};
-static const char *const diff_name[4] = {T("Peaceful"), T("Easy"), T("Normal"), T("Hard")};
-static const char *const rule_name[8] = {"keepInventory", "doDaylightCycle", "doMobSpawning", "mobGriefing",
-                                         "naturalRegeneration", "doTileDrops", "doMobLoot", "doFireTick"};
-static const char *const mob_name[8] = {"Zombie", "Skeleton", "Creeper", "Spider", "Pig", "Cow", "Sheep", "Chicken"};
-/* the effects NumBlocks has: Potion's ids and names */
-static const uint8_t eff_id[3] = {19, 17, 10};
-static const char *const eff_key[3] = {"poison", "hunger", "regeneration"};
-static const char *const eff_name[3] = {T("Poison"), T("Hunger"), T("Regeneration")};
+static const char *const modes[2] = {"survival", "creative"};
+static const char *const mode_name[2] = {T("Survival"), T("Creative")};
+static const char *const levels[4] = {"calm", "easy", "normal", "hard"};
+static const char *const level_name[4] = {T("Calm"), T("Easy"), T("Normal"), T("Hard")};
+static const char *const rule_name[8] = {"keepItems", "dayCycle", "spawnMobs", "mobsBreak", "healing", "blockDrops",
+                                         "mobDrops", "fireSpreads"};
+static const char *const mob_name[8] = {"mudling", "thornling", "fizzler", "skitter", "snuffler", "humpox", "woolly", "strider"};
+static const char *const eff_key[3] = {"poison", "hunger", "healing"};
+static const char *const eff_name[3] = {T("Poison"), T("Hunger"), T("Healing")};
 
-/* /gamemode, /difficulty: a name, its first letter, or its number */
-static int choice(const char *s, const char *const *names, int n, const char *const *letters) {
+static int choice(const char *s, const char *const *names, int n) {
   for (int i = 0; i < n; i++)
-    if (!strcmp(s, names[i]) || (letters && !strcmp(s, letters[i]))) return i;
-  return (int)num(s, 0, n - 1);
+    if (!strcmp(s, names[i]) || (s[0] == names[i][0] && !s[1])) return i;
+  error(T("%s: not a choice here"), s, 0, 0);
+  return 0;
 }
 
-static void cmd_gamemode(char **a, int n) {
-  if (n < 1) return usage(cmd_usage[C_GAMEMODE]);
-  static const char *const l[4] = {"s", "c", "a", "sp"};
-  int m = choice(a[0], modes, 4, l);
-  if (n > 1) player(a[1]);
+static void cmd_mode(char **a, int n) {
+  if (n < 1) return usage(cmd_usage[C_MODE]);
+  int m = choice(a[0], modes, 2);
   if (failed) return;
-  if (m > 1) return error(T("'%s' is not a valid number"), a[0], 0, 0);   /* (NumBlocks has no adventure or spectator) */
   pl.mode = (uint8_t)m;
   pl.fall = 0;
   if (m == 0) pl.flying = false;
-  chat_add(T("Your game mode has been updated"), CHAT_WHITE);
-  ok(T("Set own game mode to %s"), mode_name[m], 0);
+  ok(T("Mode: %s"), mode_name[m], 0);
 }
 
 static void cmd_time(char **a, int n) {
-  if (n < 2) return usage(cmd_usage[C_TIME]);
-  if (!strcmp(a[0], "set")) {
-    long long v = !strcmp(a[1], "day") ? 1000 : !strcmp(a[1], "night") ? 13000 : num(a[1], 0, 0x7FFFFFFF);
-    if (failed) return;
-    game_time = (uint32_t)v;
-    ok(T("Set the time to %d"), NULL, v);
-  } else if (!strcmp(a[0], "add")) {
-    long long v = num(a[1], 0, 0x7FFFFFFF);
-    if (failed) return;
-    game_time += (uint32_t)v;
-    ok(T("Added %d to the time"), NULL, v);
-  } else if (!strcmp(a[0], "query")) {
-    if (!strcmp(a[1], "daytime")) ok(T("Time is %d"), NULL, game_time % 24000);
-    else if (!strcmp(a[1], "gametime")) ok(T("Time is %d"), NULL, game_time);
-    else usage(cmd_usage[C_TIME]);
-  } else
-    usage(cmd_usage[C_TIME]);
+  if (n < 1) return ok(T("The time is %d"), NULL, game_time % DAY_TICKS);
+  static const char *const t[4] = {"day", "noon", "night", "midnight"};
+  static const int at[4] = {1000, 5000, 11000, 15000};
+  long long v = -1;
+  for (int i = 0; i < 4; i++)
+    if (!strcmp(a[0], t[i])) v = at[i];
+  if (v < 0) v = num(a[0], 0, 0x7FFFFFFF);
+  if (failed) return;
+  game_time = (uint32_t)(game_time - game_time % DAY_TICKS + v);
+  ok(T("The time is now %d"), NULL, v % DAY_TICKS);
 }
 
 static void cmd_weather(char **a, int n) {
@@ -259,102 +196,70 @@ static void cmd_weather(char **a, int n) {
   if (failed) return;
   if (!strcmp(a[0], "clear")) {
     weather.rain_time = weather.thunder_time = 0, weather.raining = weather.thundering = 0;
-    ok(T("Changing to clear weather"), NULL, 0);
+    ok(T("The sky clears"), NULL, 0);
   } else if (!strcmp(a[0], "rain")) {
     weather.rain_time = weather.thunder_time = t, weather.raining = 1, weather.thundering = 0;
-    ok(T("Changing to rainy weather"), NULL, 0);
-  } else if (!strcmp(a[0], "thunder")) {
+    ok(T("Here comes the rain"), NULL, 0);
+  } else if (!strcmp(a[0], "storm")) {
     weather.rain_time = weather.thunder_time = t, weather.raining = weather.thundering = 1;
-    ok(T("Changing to rain and thunder"), NULL, 0);
+    ok(T("A storm is coming"), NULL, 0);
   } else
     usage(cmd_usage[C_WEATHER]);
 }
 
 static void cmd_give(char **a, int n) {
-  if (n < 2) return usage(cmd_usage[C_GIVE]);
-  player(a[0]);
-  if (failed) return;
-  int id = item_named(a[1]);
-  if (id < 0) return error(T("There is no such item with name %s"), a[1], 0, 0);
-  int count = n > 2 ? (int)num(a[2], 1, 64) : 1, data = n > 3 ? (int)num(a[3], -2147483647, 2147483647) : 0;
+  if (n < 1) return usage(cmd_usage[C_GIVE]);
+  int it = thing_named(a[0], false);
+  if (it < 0) return error(T("No block or item is called %s"), a[0], 0, 0);
+  int count = n > 1 ? (int)num(a[1], 1, 50) : 1;
   if (failed) return;
-  /* data: which kind (wool's colour), or for tools how worn */
-  int it = data >= 0 && data <= 15 ? give_of(id, data) : -1;
-  if (it < 0) it = give_of(id, 0);
-  if (it < 0) return error(T("There is no such item with name %s"), a[1], 0, 0);
-  int wear = item_dur(it) ? (data < 0 ? 0 : data > item_dur(it) ? item_dur(it) : data) : 0;
-  /* InventoryPlayer.addItemStackToInventory; what does not fit falls at the player's feet */
-  int left = inv_add(pl.inv, 36, it, count, wear);
-  if (left) ent_drop(it, left, wear, pl.x, pl.y + 0.5f, pl.z, false);
-  char lab[40] = "[";
-  strcat(lab, item_label(it));
-  strcat(lab, "]");
-  say(CHAT_WHITE, T("Given %s * %d to %s"), lab, PLAYER, count, 0);
+  /* into the bag; what does not fit falls at your feet */
+  int left = inv_add(pl.inv, 36, it, count, 0);
+  if (left) ent_drop(it, left, 0, pl.x, pl.y + 0.5f, pl.z, false);
+  say(CHAT_WHITE, T("You get %d %s"), item_label(it), NULL, count, 0);
 }
 
 static void cmd_tp(char **a, int n) {
-  if (n < 1) return usage(cmd_usage[C_TP]);
-  int i = 0;
-  if (n == 2 || n == 4 || n == 6) player(a[i++]);
-  if (failed) return;
-  if (n - i == 1) {
-    /* to a player: the only one is here */
-    player(a[i]);
-    if (!failed) say(CHAT_WHITE, T("Teleported %s to %s"), PLAYER, PLAYER, 0, 0);
-    return;
-  }
-  if (n - i != 3 && n - i != 5) return usage(cmd_usage[C_TP]);
-  float x = coord(pl.x, a[i], true), y = coord(pl.y, a[i + 1], false), z = coord(pl.z, a[i + 2], true);
-  float yaw = pl.yaw, pitch = pl.pitch;
-  if (n - i == 5) yaw = coord(pl.yaw, a[i + 3], false), pitch = coord(pl.pitch, a[i + 4], false);
+  if (n != 3) return usage(cmd_usage[C_TP]);
+  float x = coord(pl.x, a[0], true), y = coord(pl.y, a[1], false), z = coord(pl.z, a[2], true);
   if (failed) return;
-  if (x < -30000000 || x > 30000000 || z < -30000000 || z > 30000000 || y < -512 || y > 512)
-    return error(T("'%s' is not a valid number"), a[i], 0, 0);
+  if (fabsf(x) > 30000000 || fabsf(z) > 30000000 || y < -512 || y > 512) return error(T("That is too far"), NULL, 0, 0);
   pl.x = x, pl.y = y, pl.z = z, pl.vx = pl.vy = pl.vz = 0, pl.fall = 0;
-  yaw = fmodf(yaw, 360);
-  if (yaw >= 180) yaw -= 360;
-  if (yaw < -180) yaw += 360;
-  pl.yaw = yaw, pl.pitch = pitch < -90 ? -90 : pitch > 90 ? 90 : pitch;
   camera_reset();
   out_n = 0;
-  put(T("Teleported Player to ")), put_num(x), put(", "), put_num(y), put(", "), put_num(z);
+  put(T("You are now at ")), put_num(x), put(" "), put_num(y), put(" "), put_num(z);
   chat_add(out, CHAT_WHITE);
 }
 
-static void cmd_kill(char **a, int n) {
-  if (n > 0) player(a[0]);
-  if (failed) return;
-  /* EntityPlayer.onKillCommand: out of the world */
+static void cmd_kill(void) {
   player_hurt(3.4e38f, DMG_VOID);
-  ok(T("Killed %s"), PLAYER, 0);
+  ok(T("Back to the start"), NULL, 0);
 }
 
-static void cmd_difficulty(char **a, int n) {
-  if (n < 1) return usage(cmd_usage[C_DIFFICULTY]);
-  static const char *const l[4] = {"p", "e", "n", "h"};
-  int d = choice(a[0], diffs, 4, l);
+static void cmd_level(char **a, int n) {
+  if (n < 1) return usage(cmd_usage[C_LEVEL]);
+  int d = choice(a[0], levels, 4);
   if (failed) return;
   opt.difficulty = (uint8_t)d;
   save_options();
-  ok(T("Set game difficulty to %s"), diff_name[d], 0);
+  ok(T("Difficulty: %s"), level_name[d], 0);
 }
 
 static void cmd_seed(void) {
   out_n = 0;
-  put(T("Seed: ")), put_int(world_seed);
+  put(T("World number: ")), put_int(world_seed);
   chat_add(out, CHAT_WHITE);
 }
 
-static void cmd_spawnpoint(char **a, int n) {
-  if (n != 0 && n != 1 && n != 4) return usage(cmd_usage[C_SPAWNPOINT]);
-  if (n) player(a[0]);
+static void cmd_home(char **a, int n) {
+  if (n != 0 && n != 3) return usage(cmd_usage[C_HOME]);
   int x = (int)floorf(pl.x), y = (int)floorf(pl.y + 0.5f), z = (int)floorf(pl.z);
-  if (n == 4) x = (int)floorf(coord((float)x, a[1], false)), y = (int)floorf(coord((float)y, a[2], false)),
-    z = (int)floorf(coord((float)z, a[3], false));
+  if (n == 3) x = (int)floorf(coord((float)x, a[0], false)), y = (int)floorf(coord((float)y, a[1], false)),
+    z = (int)floorf(coord((float)z, a[2], false));
   if (failed) return;
   pl.spawn_x = x, pl.spawn_y = y, pl.spawn_z = z;
   out_n = 0;
-  put(T("Set Player's spawn point to (")), put_int(x), put(", "), put_int(y), put(", "), put_int(z), put(")");
+  put(T("Your starting point: ")), put_int(x), put(" "), put_int(y), put(" "), put_int(z);
   chat_add(out, CHAT_WHITE);
 }
 
@@ -363,152 +268,109 @@ static void cmd_xp(char **a, int n) {
   char v[16];
   strncpy(v, a[0], 15), v[15] = 0;
   int l = (int)strlen(v);
-  bool levels = l && (v[l - 1] == 'l' || v[l - 1] == 'L');
-  if (levels) v[l - 1] = 0;
-  long long k = num(v, -2147483647, 2147483647);
-  if (n > 1) player(a[1]);
+  bool lv = l > 2 && v[l - 2] == 'l' && v[l - 1] == 'v';
+  if (lv) v[l - 2] = 0;
+  long long k = num(v, -1000000, 1000000);
   if (failed) return;
-  if (levels) {
-    /* EntityPlayer.addExperienceLevel */
+  if (lv) {
     pl.xp_level += (int)k;
     if (pl.xp_level < 0) pl.xp_level = 0, pl.xp = 0, pl.xp_total = 0;
-    if (k < 0) say(CHAT_WHITE, T("Taken %d levels from %s"), PLAYER, NULL, -k, 0);
-    else say(CHAT_WHITE, T("Given %d levels to %s"), PLAYER, NULL, k, 0);
+    ok(T("Levels: %d"), NULL, pl.xp_level);
   } else {
-    if (k < 0) return error(T("Cannot give player negative experience points"), NULL, 0, 0);
+    if (k < 0) return error(T("Points can only be added"), NULL, 0, 0);
     player_add_xp((int)k);
-    say(CHAT_WHITE, T("Given %d experience to %s"), PLAYER, NULL, k, 0);
+    ok(T("%d points added"), NULL, k);
   }
 }
 
 static void cmd_clear(char **a, int n) {
-  if (n > 0) player(a[0]);
-  int id = -1, data = -1, most = -1;
-  if (n > 1) {
-    id = item_named(a[1]);
-    if (id < 0 && !failed) error(T("There is no such item with name %s"), a[1], 0, 0);
+  int id = -1;
+  if (n > 0) {
+    id = thing_named(a[0], false);
+    if (id < 0) return error(T("No block or item is called %s"), a[0], 0, 0);
   }
-  if (n > 2) data = (int)num(a[2], -1, 2147483647);
-  if (n > 3) most = (int)num(a[3], -1, 2147483647);
-  if (failed) return;
-  /* InventoryPlayer.clearMatchingItems: the inventory, the armour, what the cursor holds */
+  /* the bag, the armour, what the cursor holds */
   Stack *s[41];
   int k = 0;
   for (int i = 0; i < 36; i++) s[k++] = &pl.inv[i];
   for (int i = 0; i < 4; i++) s[k++] = &pl.armor[i];
   s[k++] = &pl.cursor;
   int gone = 0;
-  for (int i = 0; i < k && (most < 0 || gone < most); i++) {
+  for (int i = 0; i < k; i++) {
     Stack *t = s[i];
-    if (!t->id) continue;
-    if (id >= 0) {
-      int want = data < 0 ? -1 : give_of(id, data & 15);
-      bool match = false;
-      for (int g = 0; g < n_give && !match; g++)
-        if (give_id[g] == t->id && (give_key[g] >> 4) == id && (want < 0 || want == t->id)) match = true;
-      if (!match) continue;
-    }
-    int c = item_count(t), take = most < 0 || most - gone >= c ? c : most - gone;
-    gone += take;
-    if (take == c) t->id = 0, t->aux = 0;
-    else stack_take(t, take);
+    if (!t->id || (id >= 0 && t->id != id)) continue;
+    gone += item_count(t);
+    t->id = 0, t->aux = 0;
   }
-  if (!gone) return error(T("Could not clear the inventory of %s, no items to remove"), PLAYER, 0, 0);
-  say(CHAT_WHITE, T("Cleared the inventory of %s, removing %d items"), PLAYER, NULL, gone, 0);
+  if (!gone) return error(T("Nothing to take away"), NULL, 0, 0);
+  ok(T("%d things taken away"), NULL, gone);
 }
 
 static void cmd_effect(char **a, int n) {
-  if (n < 2) return usage(cmd_usage[C_EFFECT]);
-  player(a[0]);
-  if (failed) return;
-  if (!strcmp(a[1], "clear")) {
-    bool any = false;
-    for (int i = 0; i < 3; i++) any |= pl.eff[i] > 0, pl.eff[i] = 0, pl.eff_amp[i] = 0;
-    if (!any) return error(T("Couldn't take any effects from %s as they do not have any"), PLAYER, 0, 0);
-    ok(T("Took all effects from %s"), PLAYER, 0);
+  if (n < 1) return usage(cmd_usage[C_EFFECT]);
+  if (!strcmp(a[0], "clear")) {
+    for (int i = 0; i < 3; i++) pl.eff[i] = 0, pl.eff_amp[i] = 0;
+    ok(T("No more effects"), NULL, 0);
     return;
   }
-  const char *e = strip_ns(a[1]);
   int k = -1;
   for (int i = 0; i < 3; i++)
-    if (!strcmp(e, eff_key[i]) || (is_num(e, false) && to_int(e) == eff_id[i])) k = i;
-  if (k < 0) return error(is_num(e, false) ? T("There is no such mob effect with ID %d") : T("There is no such mob effect with ID %s"),
-                          e, is_num(e, false) ? to_int(e) : 0, 0);
-  int secs = n > 2 ? (int)num(a[2], 0, 1000000) : 30, amp = n > 3 ? (int)num(a[3], 0, 255) : 0;
+    if (!strcmp(a[0], eff_key[i])) k = i;
+  if (k < 0) return error(T("%s: not an effect"), a[0], 0, 0);
+  int secs = n > 1 ? (int)num(a[1], 0, 100000) : 30, amp = n > 2 ? (int)num(a[2], 1, 10) - 1 : 0;
   if (failed) return;
-  if (!secs) {
-    if (!pl.eff[k]) {
-      out_n = 0;
-      put(T("Couldn't take ")), put(eff_name[k]), put(T(" from Player as they do not have the effect"));
-      return error("%s", out, 0, 0);
-    }
-    pl.eff[k] = 0;
-    out_n = 0;
-    put(T("Took ")), put(eff_name[k]), put(T(" from Player"));
-    chat_add(out, CHAT_WHITE);
-    return;
-  }
   pl.eff[k] = (uint16_t)(secs * 20 > 65535 ? 65535 : secs * 20), pl.eff_amp[k] = (uint8_t)amp;
-  out_n = 0;
-  put(T("Given ")), put(eff_name[k]), put(T(" (ID ")), put_int(eff_id[k]), put(T(") * ")), put_int(amp + 1);
-  put(T(" to Player for ")), put_int(secs), put(T(" seconds"));
-  chat_add(out, CHAT_WHITE);
+  say(CHAT_WHITE, T("%s for %d seconds"), eff_name[k], NULL, secs, 0);
 }
 
-static void cmd_summon(char **a, int n) {
-  if (n < 1) return usage(cmd_usage[C_SUMMON]);
+static void cmd_spawn(char **a, int n) {
+  if (n != 1 && n != 4) return usage(cmd_usage[C_SPAWN]);
   float x = pl.x, y = pl.y, z = pl.z;
-  if (n >= 4) x = coord(x, a[1], true), y = coord(y, a[2], false), z = coord(z, a[3], true);
+  if (n == 4) x = coord(x, a[1], true), y = coord(y, a[2], false), z = coord(z, a[3], true);
   if (failed) return;
   if (y < 0 || y >= WORLD_H || !world_loaded((int)floorf(x), (int)floorf(y), (int)floorf(z)))
-    return error(T("Cannot summon the object out of the world"), NULL, 0, 0);
-  if (!strcmp(a[0], "LightningBolt")) {
+    return error(T("That place is not loaded"), NULL, 0, 0);
+  if (!strcmp(a[0], "lightning")) {
     bolt_start(x, y, z);
-    ok(T("Object successfully summoned"), NULL, 0);
+    ok(T("Zap!"), NULL, 0);
     return;
   }
   for (int i = 0; i < 8; i++)
     if (!strcmp(a[0], mob_name[i])) {
-      if (!mob_summon(E_ZOMBIE + i, x, y, z)) return error(T("Unable to summon object"), NULL, 0, 0);
-      ok(T("Object successfully summoned"), NULL, 0);
+      if (!mob_summon(E_MUDLING + i, x, y, z)) return error(T("There is no room for it"), NULL, 0, 0);
+      ok(T("Here it is"), NULL, 0);
       return;
     }
-  error(T("Unable to summon object"), NULL, 0, 0);
+  error(T("%s: not a creature"), a[0], 0, 0);
 }
 
-static void cmd_setblock(char **a, int n) {
-  if (n < 4) return usage(cmd_usage[C_SETBLOCK]);
-  int x = (int)floorf(coord(floorf(pl.x), a[0], false)), y = (int)floorf(coord(floorf(pl.y + 0.5f), a[1], false)),
-      z = (int)floorf(coord(floorf(pl.z), a[2], false));
-  if (failed) return;
-  int id = block_named(a[3]);
-  if (id < 0) return error(T("There is no such block with ID/name %s"), a[3], 0, 0);
-  int data = n > 4 ? (int)num(a[4], 0, 15) : 0;
+static void cmd_place(char **a, int n) {
+  if (n != 1 && n != 2 && n != 4 && n != 5) return usage(cmd_usage[C_PLACE]);
+  int b = thing_named(a[0], true);
+  if (b < 0) return error(T("No block is called %s"), a[0], 0, 0);
+  /* where: the block looked at (it is replaced), or x y z */
+  int x = pl.hit_x, y = pl.hit_y, z = pl.hit_z;
+  if (n >= 4) {
+    x = (int)floorf(coord(floorf(pl.x), a[1], false)), y = (int)floorf(coord(floorf(pl.y + 0.5f), a[2], false)),
+    z = (int)floorf(coord(floorf(pl.z), a[3], false));
+  } else if (pl.hit_face < 0) {
+    return error(T("Look at a block, or give x y z"), NULL, 0, 0);
+  }
   if (failed) return;
-  if (y < 0 || y >= WORLD_H || !world_loaded(x, y, z)) return error(T("Cannot place block outside of the world"), NULL, 0, 0);
-  /* the state: the block's with that data, else its first */
-  int b = -1;
-  for (int i = 0; i < B_COUNT && b < 0; i++)
-    if (blk_id[i] == id && blk_meta[i] == data) b = i;
-  for (int i = 0; i < B_COUNT && b < 0; i++)
-    if (blk_id[i] == id) b = i;
-  if (b < 0) return error(T("There is no such block with ID/name %s"), a[3], 0, 0);
+  if (y < 0 || y >= WORLD_H || !world_loaded(x, y, z)) return error(T("That place is not loaded"), NULL, 0, 0);
+  const char *how = n == 2 ? a[1] : n == 5 ? a[4] : "";
   int was = world_get(x, y, z);
-  if (n > 5) {
-    if (!strcmp(a[5], "keep") && was != B_AIR) return error(T("The block couldn't be placed"), NULL, 0, 0);
-    if (!strcmp(a[5], "destroy")) break_block_at(x, y, z, true);
-  }
-  if (world_get(x, y, z) == b) return error(T("The block couldn't be placed"), NULL, 0, 0);
-  /* (a chest or furnace replaced is emptied first, nothing falls out) */
-  tiles_forget(x, y, z);
+  if (!strcmp(how, "keep") && was != B_AIR) return error(T("Something is already there"), NULL, 0, 0);
+  if (!strcmp(how, "break")) break_block_at(x, y, z, true);
+  if (world_get(x, y, z) == b) return error(T("That block is already there"), NULL, 0, 0);
+  tiles_forget(x, y, z);   /* (a chest or furnace replaced is emptied first, nothing falls out) */
   world_set(x, y, z, b);
   neighbours_changed(x, y, z);
-  ok(T("Block placed"), NULL, 0);
+  ok(T("Placed"), NULL, 0);
 }
 
-static void cmd_gamerule(char **a, int n) {
+static void cmd_rule(char **a, int n) {
   if (n == 0) {
-    /* all of them */
     out_n = 0;
     for (int i = 0; i < 8; i++) put(i ? ", " : ""), put(rule_name[i]);
     chat_add(out, CHAT_WHITE);
@@ -517,41 +379,35 @@ static void cmd_gamerule(char **a, int n) {
   int r = -1;
   for (int i = 0; i < 8; i++)
     if (!strcmp(a[0], rule_name[i])) r = i;
-  if (r < 0) return error(T("No game rule called '%s' is available"), a[0], 0, 0);
-  if (n == 1) {
-    out_n = 0;
-    put(rule_name[r]), put(" = "), put(rule(1 << r) ? "true" : "false");
-    chat_add(out, CHAT_WHITE);
-    return;
+  if (r < 0) return error(T("No rule is called %s"), a[0], 0, 0);
+  if (n > 1) {
+    if (!strcmp(a[1], "on")) game_rules |= (uint8_t)(1 << r);
+    else if (!strcmp(a[1], "off")) game_rules &= (uint8_t)~(1 << r);
+    else return usage(cmd_usage[C_RULE]);
   }
-  /* (GameRules.setOrCreateGameRule: true is "true", anything else false) */
-  if (!strcmp(a[1], "true")) game_rules |= (uint8_t)(1 << r);
-  else game_rules &= (uint8_t)~(1 << r);
-  ok(T("Game rule has been updated"), NULL, 0);
+  out_n = 0;
+  put(rule_name[r]), put(": "), put(rule(1 << r) ? T("on") : T("off"));
+  chat_add(out, CHAT_WHITE);
 }
 
 static void cmd_help(char **a, int n) {
-  /* the commands that may be used, by name, 7 a page */
   int list[N_COMMANDS], k = 0;
   for (int c = 0; c < N_COMMANDS; c++)
     if (allowed(c)) list[k++] = c;
-  int pages = (k - 1) / 7, page = 0;
+  int pages = (k - 1) / 6, page = 0;
   if (n > 0) {
     for (int c = 0; c < N_COMMANDS; c++)
-      if (!strcmp(a[0], cmd_name[c]) && allowed(c)) return usage(cmd_usage[c]);
-    if (!is_num(a[0], false)) return error(T("Unknown command. Try /help for a list of commands"), NULL, 0, 0);
+      if (!strcmp(a[0], cmd_name[c]) && allowed(c)) return (void)chat_add(cmd_usage[c], CHAT_WHITE);
+    if (!is_num(a[0], false)) return error(T("%s: no such command (try /help)"), a[0], 0, 0);
     page = (int)num(a[0], 1, pages + 1) - 1;
     if (failed) return;
   }
-  say(CHAT_DARK_GREEN, T("--- Showing help page %d of %d (/help <page>) ---"), NULL, NULL, page + 1, pages + 1);
-  for (int i = page * 7; i < k && i < page * 7 + 7; i++) chat_add(cmd_usage[list[i]], CHAT_WHITE);
-  if (page == 0)
-    chat_add(T("Tip: Use the toolbox key while typing a command to auto-complete the command or its arguments"),
-             CHAT_GREEN);
+  say(CHAT_DARK_GREEN, T("Commands, page %d of %d"), NULL, NULL, page + 1, pages + 1);
+  for (int i = page * 6; i < k && i < page * 6 + 6; i++) chat_add(cmd_usage[list[i]], CHAT_WHITE);
+  if (page == 0) chat_add(T("toolbox: finishes the word you are typing"), CHAT_GREEN);
 }
 
 /* ---------------------------------------------------------------- running a line */
-/* the line cut into words (in place); how many */
 static int words(char *s, char **w) {
   int n = 0;
   while (*s && n < MAX_ARGS + 1) {
@@ -565,9 +421,8 @@ static int words(char *s, char **w) {
 
 void command_run(const char *line) {
   if (line[0] != '/') {
-    /* said: "<Player> hello" */
     out_n = 0;
-    put("<" PLAYER "> "), put(line);
+    put(PLAYER ": "), put(line);
     chat_add(out, CHAT_WHITE);
     return;
   }
@@ -577,38 +432,37 @@ void command_run(const char *line) {
   int c = -1;
   for (int i = 0; i < N_COMMANDS && n; i++)
     if (!strcmp(w[0], cmd_name[i])) c = i;
-  if (n && !strcmp(w[0], "?")) c = C_HELP;
   failed = false;
-  if (c < 0) return error(T("Unknown command. Try /help for a list of commands"), NULL, 0, 0);
-  if (!allowed(c)) return error(T("You do not have permission to use this command"), NULL, 0, 0);
+  if (c < 0) return error(T("%s: no such command (try /help)"), n ? w[0] : "", 0, 0);
+  if (!allowed(c)) return error(T("Commands are off in this world"), NULL, 0, 0);
   char **a = w + 1;
   n--;
   switch (c) {
     case C_CLEAR: cmd_clear(a, n); break;
-    case C_DIFFICULTY: cmd_difficulty(a, n); break;
     case C_EFFECT: cmd_effect(a, n); break;
-    case C_GAMEMODE: cmd_gamemode(a, n); break;
-    case C_GAMERULE: cmd_gamerule(a, n); break;
     case C_GIVE: cmd_give(a, n); break;
     case C_HELP: cmd_help(a, n); break;
-    case C_KILL: cmd_kill(a, n); break;
+    case C_HOME: cmd_home(a, n); break;
+    case C_KILL: cmd_kill(); break;
+    case C_LEVEL: cmd_level(a, n); break;
     case C_ME:
     case C_SAY:
       if (n < 1) return usage(cmd_usage[c]);
       out_n = 0;
-      put(c == C_ME ? "* " PLAYER " " : "[" PLAYER "] ");
+      put(c == C_ME ? "* " PLAYER " " : PLAYER ": ");
       for (int i = 0; i < n; i++) put(i ? " " : ""), put(a[i]);
       chat_add(out, CHAT_WHITE);
       break;
-    case C_SEED: cmd_seed(); break;
-    case C_SETBLOCK: cmd_setblock(a, n); break;
-    case C_SPAWNPOINT: cmd_spawnpoint(a, n); break;
-    case C_SUMMON: cmd_summon(a, n); break;
-    case C_TIME: cmd_time(a, n); break;
-    case C_TOGGLEDOWNFALL:
+    case C_MODE: cmd_mode(a, n); break;
+    case C_PLACE: cmd_place(a, n); break;
+    case C_RAIN:
       weather.raining = !weather.raining;
-      ok(T("Toggled downfall"), NULL, 0);
+      ok(weather.raining ? T("Here comes the rain") : T("The rain stops"), NULL, 0);
       break;
+    case C_RULE: cmd_rule(a, n); break;
+    case C_SEED: cmd_seed(); break;
+    case C_SPAWN: cmd_spawn(a, n); break;
+    case C_TIME: cmd_time(a, n); break;
     case C_TP: cmd_tp(a, n); break;
     case C_WEATHER: cmd_weather(a, n); break;
     case C_XP: cmd_xp(a, n); break;
@@ -616,31 +470,28 @@ void command_run(const char *line) {
 }
 
 /* ---------------------------------------------------------------- finishing words */
-/* CommandBase.getListOfStringsMatchingLastWord: the names that start as the word does; blocks and
- * items with "minecraft:" before them (found by the name without it too) */
 static int cmp_n;   /* (the ways found so far, while looking for the k-th) */
-static bool offer(const char *word, const char *name, const char *ns, int k, char *o, int max) {
-  int nl = (int)strlen(ns);
-  bool full = !strncmp(word, ns, strlen(word) < (size_t)nl ? strlen(word) : (size_t)nl) &&
-              (strlen(word) <= (size_t)nl || !strncmp(word + nl, name, strlen(word) - nl));
-  bool bare = !strncmp(word, name, strlen(word));
-  if (!full && !bare) return false;
+static bool offer(const char *word, const char *name, int k, char *o, int max) {
+  if (strncmp(word, name, strlen(word))) return false;
   if (cmp_n++ != k) return false;
   int i = 0;
-  for (const char *p = ns; *p && i < max - 1; p++) o[i++] = *p;
   for (const char *p = name; *p && i < max - 1; p++) o[i++] = *p;
   o[i] = 0;
   return true;
 }
 static bool offer_list(const char *word, const char *const *names, int n, int k, char *o, int max) {
   for (int i = 0; i < n; i++)
-    if (offer(word, names[i], "", k, o, max)) return true;
+    if (offer(word, names[i], k, o, max)) return true;
+  return false;
+}
+static bool offer_things(const char *word, bool blocks_only, int k, char *o, int max) {
+  for (int i = 0; i < n_cmd_items; i++)
+    if ((!blocks_only || cmd_item_id[i] < 256) && offer(word, cmd_item_name[i], k, o, max)) return true;
   return false;
 }
 
 bool command_complete(const char *line, int k, int *at, char *o, int max) {
   if (line[0] != '/') return false;
-  /* the words before the last one, and the last (maybe empty) */
   int len = (int)strlen(line), st = len;
   while (st > 1 && line[st - 1] != ' ') st--;
   *at = st;
@@ -650,79 +501,44 @@ bool command_complete(const char *line, int k, int *at, char *o, int max) {
   memcpy(b, line + 1, (size_t)(pl_len > 0 ? pl_len : 0)), b[pl_len > 0 ? pl_len : 0] = 0;
   int n = words(b, w);
   cmp_n = 0;
-  static const char *const players[1] = {PLAYER};
   if (n == 0) {
-    /* the command's name */
     for (int c = 0; c < N_COMMANDS; c++)
-      if (allowed(c) && offer(word, cmd_name[c], "", k, o, max)) return true;
+      if (allowed(c) && offer(word, cmd_name[c], k, o, max)) return true;
     return false;
   }
   int c = -1;
   for (int i = 0; i < N_COMMANDS; i++)
     if (!strcmp(w[0], cmd_name[i]) && allowed(i)) c = i;
-  int arg = n - 1;   /* which argument the word is */
-  static const char *const time_a[3] = {"set", "add", "query"}, *const time_set[2] = {"day", "night"},
-                           *const time_q[2] = {"daytime", "gametime"}, *const weathers[3] = {"clear", "rain", "thunder"},
-                           *const bools[2] = {"true", "false"}, *const handling[3] = {"replace", "destroy", "keep"};
+  int arg = n - 1;
+  static const char *const times[4] = {"day", "noon", "night", "midnight"},
+                           *const weathers[3] = {"clear", "rain", "storm"}, *const onoff[2] = {"on", "off"},
+                           *const how[2] = {"keep", "break"}, *const effs[4] = {"poison", "hunger", "healing", "clear"};
   switch (c) {
-    case C_GAMEMODE: return arg == 0 ? offer_list(word, modes, 4, k, o, max) : arg == 1 && offer_list(word, players, 1, k, o, max);
-    case C_TIME:
-      if (arg == 0) return offer_list(word, time_a, 3, k, o, max);
-      if (arg == 1 && !strcmp(w[1], "set")) return offer_list(word, time_set, 2, k, o, max);
-      if (arg == 1 && !strcmp(w[1], "query")) return offer_list(word, time_q, 2, k, o, max);
-      return false;
+    case C_MODE: return arg == 0 && offer_list(word, modes, 2, k, o, max);
+    case C_TIME: return arg == 0 && offer_list(word, times, 4, k, o, max);
     case C_WEATHER: return arg == 0 && offer_list(word, weathers, 3, k, o, max);
-    case C_DIFFICULTY: return arg == 0 && offer_list(word, diffs, 4, k, o, max);
-    case C_GAMERULE:
-      if (arg == 0) return offer_list(word, rule_name, 8, k, o, max);
-      return arg == 1 && offer_list(word, bools, 2, k, o, max);
-    case C_EFFECT:
-      if (arg == 0) return offer_list(word, players, 1, k, o, max);
-      if (arg == 1) {
-        for (int i = 0; i < 3; i++)
-          if (offer(word, eff_key[i], "minecraft:", k, o, max)) return true;
-        return offer(word, "clear", "", k, o, max);
-      }
-      return false;
-    case C_SUMMON:
-      if (arg == 0) {
-        static const char *const bolt_name[1] = {"LightningBolt"};
-        return offer_list(word, mob_name, 8, k, o, max) || offer_list(word, bolt_name, 1, k, o, max);
-      }
-      return false;
-    case C_GIVE:
-    case C_CLEAR:
-      if (arg == 0) return offer_list(word, players, 1, k, o, max);
-      if (arg == 1) {
-        for (int i = 0; i < 198; i++)
-          if ((mc_block_item[i >> 3] >> (i & 7) & 1) && offer(word, mc_block_name[i], "minecraft:", k, o, max)) return true;
-        for (int i = 0; i < 176; i++)
-          if (mc_item_name[i][0] && offer(word, mc_item_name[i], "minecraft:", k, o, max)) return true;
-      }
-      return false;
-    case C_SETBLOCK:
-      if (arg < 3) {
-        /* the block looked at (CommandBase.func_175771_a) */
-        if (pl.hit_face < 0) return false;
-        int v = arg == 0 ? pl.hit_x : arg == 1 ? pl.hit_y : pl.hit_z;
+    case C_LEVEL: return arg == 0 && offer_list(word, levels, 4, k, o, max);
+    case C_RULE: return arg == 0 ? offer_list(word, rule_name, 8, k, o, max) : arg == 1 && offer_list(word, onoff, 2, k, o, max);
+    case C_EFFECT: return arg == 0 && offer_list(word, effs, 4, k, o, max);
+    case C_SPAWN: {
+      static const char *const bolt[1] = {"lightning"};
+      return arg == 0 && (offer_list(word, mob_name, 8, k, o, max) || offer_list(word, bolt, 1, k, o, max));
+    }
+    case C_GIVE: case C_CLEAR: return arg == 0 && offer_things(word, false, k, o, max);
+    case C_PLACE:
+      if (arg == 0) return offer_things(word, true, k, o, max);
+      if (arg >= 1 && arg <= 3 && pl.hit_face >= 0) {   /* the block looked at */
+        int v = arg == 1 ? pl.hit_x : arg == 2 ? pl.hit_y : pl.hit_z;
         char t[12];
         out_n = 0, put_int(v), strcpy(t, out);
-        return offer(word, t, "", k, o, max);
+        return offer(word, t, k, o, max);
       }
-      if (arg == 3) {
-        for (int i = 0; i < 198; i++)
-          if (mc_block_name[i][0] && offer(word, mc_block_name[i], "minecraft:", k, o, max)) return true;
-        return false;
-      }
-      return arg == 5 && offer_list(word, handling, 3, k, o, max);
-    case C_TP: case C_KILL: case C_SPAWNPOINT: case C_XP:
-      return arg == (c == C_XP) && offer_list(word, players, 1, k, o, max);
-    case C_HELP: {
+      return (arg == 1 || arg == 4) && offer_list(word, how, 2, k, o, max);
+    case C_HELP:
       if (arg) return false;
       for (int i = 0; i < N_COMMANDS; i++)
-        if (allowed(i) && offer(word, cmd_name[i], "", k, o, max)) return true;
+        if (allowed(i) && offer(word, cmd_name[i], k, o, max)) return true;
       return false;
-    }
   }
   return false;
 }
diff --git a/games/numblocks/src/data.c b/games/numblocks/src/data.c
index 8d84841..502549e 100644
--- a/games/numblocks/src/data.c
+++ b/games/numblocks/src/data.c
@@ -1,446 +1,446 @@
-/* Generated by tools/pack.py from Minecraft 1.8.8's client.jar: textures and block tables. */
+/* Generated by tools/pack.py from NumBlocks' own pictures (tools/conformite/numblocks_art.py). */
 #include "data.h"
 #include "../../common/np_text.h"   /* (names players read: T(), see there) */
 
 const uint8_t tex_px[217][128] = {
-  {50,51,35,0,4,50,51,35,34,0,0,51,3,0,36,50,66,51,52,51,48,34,2,34,2,34,66,2,34,51,51,35,2,48,51,51,51,0,0,64,51,34,50,51,66,34,51,36,0,18,50,0,34,34,0,64,34,50,51,51,67,51,51,34,2,64,48,34,2,0,0,0,50,51,51,35,36,50,51,32,34,48,3,48,52,0,32,34,36,34,35,34,0,34,2,64,50,51,51,51,0,51,51,35,2,0,0,50,51,52,34,0,34,50,51,51,34,0,50,35,51,51,4,32,34,50,51,34},
-  {114,119,196,174,89,118,124,103,102,174,10,17,173,227,108,116,239,29,113,114,115,108,60,104,0,233,38,230,150,123,135,205,54,114,122,119,39,163,138,16,119,102,124,114,150,12,167,105,51,230,210,58,204,224,51,234,106,214,13,177,17,39,119,96,166,10,112,230,172,58,226,51,18,247,125,199,1,217,119,35,150,115,231,218,121,163,99,105,105,202,15,96,58,102,175,154,252,17,114,119,42,215,17,199,48,62,62,70,215,31,102,10,102,212,221,210,15,48,182,97,126,167,57,10,96,114,218,102},
-  {32,34,16,2,19,33,35,162,113,93,85,136,88,213,122,230,163,136,138,132,133,119,87,217,81,154,71,215,167,134,72,216,81,132,134,136,72,85,196,245,130,119,135,132,167,119,72,218,80,215,132,85,119,215,85,245,112,135,88,104,168,72,136,215,65,69,133,215,87,85,212,197,128,184,136,120,74,138,136,181,161,133,168,133,138,69,117,218,115,116,123,119,85,119,93,245,177,136,132,136,69,136,136,216,81,89,93,103,136,139,119,196,113,134,136,132,125,85,103,216,239,254,207,220,221,235,239,221},
-  {108,81,245,3,171,158,85,181,127,213,29,59,40,248,237,95,181,107,150,169,233,187,10,81,109,80,149,25,27,113,51,153,255,101,24,195,206,220,119,233,0,139,174,248,185,27,252,11,49,252,110,238,26,160,27,80,248,39,137,30,48,92,168,223,85,101,205,24,99,184,15,176,59,249,19,191,247,15,192,87,184,0,49,85,109,49,195,199,191,142,85,124,161,187,143,117,185,72,45,218,27,22,189,48,16,174,31,46,112,204,92,206,117,41,184,146,19,82,163,29,85,153,95,251,40,242,120,191},
-  {7,0,192,0,0,34,0,160,135,134,152,54,41,233,157,238,96,198,172,42,170,102,18,233,193,97,166,10,132,216,68,250,249,118,25,195,202,220,136,250,96,150,62,249,106,22,204,214,48,204,121,202,131,50,22,230,241,40,154,154,49,108,57,253,96,118,120,25,115,105,31,230,48,192,155,110,216,46,194,232,97,99,49,102,199,65,196,248,108,158,102,140,49,102,159,230,96,89,45,139,134,140,104,224,128,27,28,170,134,204,108,233,128,173,105,170,19,99,35,255,234,255,239,254,223,254,239,239},
-  {122,187,54,125,72,156,253,37,71,164,87,196,43,238,0,169,23,23,206,53,195,22,72,126,139,127,104,202,27,125,75,119,223,129,147,29,144,133,130,204,32,95,62,97,133,105,221,17,233,229,97,85,50,236,17,138,133,213,99,214,221,164,203,52,157,97,190,31,49,201,132,232,129,204,1,177,117,97,77,55,68,35,154,147,220,228,181,129,12,88,91,30,166,72,49,141,241,33,84,41,51,167,103,210,96,111,86,200,91,75,234,250,151,169,238,15,112,205,1,27,52,12,209,81,56,80,155,175},
-  {0,1,0,0,0,1,0,32,112,118,90,180,37,181,33,230,16,82,205,39,130,136,73,237,177,106,102,123,117,165,108,231,64,152,35,133,180,36,146,235,176,90,215,133,149,122,187,218,208,101,102,99,34,148,170,235,128,69,130,166,166,198,204,215,32,114,122,124,54,66,99,230,144,152,75,153,133,135,58,242,32,188,171,34,204,216,149,235,48,86,92,181,184,74,34,234,192,34,116,34,34,184,120,225,144,107,102,139,85,76,162,251,160,43,215,92,34,74,75,228,211,238,238,238,254,238,239,254},
-  {6,182,139,157,84,185,42,143,150,83,212,196,29,98,144,155,131,206,170,136,54,18,251,13,207,89,71,126,205,88,152,226,195,193,17,26,240,45,225,138,84,47,93,70,107,202,175,104,78,130,199,217,188,16,39,133,184,148,232,195,21,219,56,29,66,16,209,65,16,124,108,228,197,128,89,209,123,23,8,216,68,37,12,104,240,194,168,133,28,59,197,167,117,233,208,158,80,157,116,252,121,233,35,95,45,127,78,13,99,66,163,18,51,224,16,102,110,182,65,249,92,170,83,102,8,30,140,74},
-  {170,218,189,206,169,220,236,191,202,153,121,237,142,168,206,205,120,232,124,123,154,136,247,126,71,119,122,119,126,123,118,103,98,18,39,102,119,71,38,103,118,34,38,119,103,118,102,22,97,102,99,22,97,17,38,38,102,17,34,102,114,34,102,34,98,38,38,118,38,98,102,103,38,103,118,103,102,102,17,38,38,22,97,33,23,113,34,99,98,38,18,38,36,98,39,118,118,98,34,97,102,102,102,17,38,102,101,34,118,113,22,34,98,23,118,118,17,38,102,34,98,33,98,99,34,102,34,118},
-  {16,81,5,17,85,86,5,5,21,86,21,98,5,81,16,102,80,101,80,85,80,85,102,80,49,80,97,5,17,21,5,81,81,1,22,85,97,53,21,86,101,17,21,102,86,101,85,5,80,85,82,5,80,0,21,21,85,0,17,85,97,17,85,17,81,21,21,101,21,81,85,86,21,86,101,86,85,85,0,21,21,5,80,16,6,96,17,82,81,21,1,21,19,81,22,101,101,81,17,80,85,85,85,0,21,85,84,17,101,96,5,17,81,6,101,101,0,21,85,17,81,16,81,82,17,85,17,101},
-  {69,181,123,142,67,169,201,127,133,66,3,202,30,82,140,138,2,193,9,6,53,17,240,13,0,0,6,0,14,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  {0,16,0,1,0,17,34,0,0,16,129,33,2,17,2,32,129,33,130,129,16,33,8,129,104,136,128,136,128,129,135,120,117,53,88,119,136,104,87,120,135,85,87,136,120,135,119,55,131,119,116,55,115,51,87,87,115,51,85,119,133,85,119,85,117,87,87,135,87,117,119,120,85,120,135,120,119,119,51,87,85,55,115,83,56,115,85,116,117,87,53,87,86,117,88,135,135,117,85,115,119,119,119,51,87,119,120,85,135,131,55,85,117,56,135,135,119,135,119,85,117,83,117,84,85,119,85,135},
-  {32,82,5,45,91,95,14,10,37,141,69,198,5,93,33,204,208,229,178,94,234,91,205,80,98,208,194,43,133,37,165,82,210,36,45,91,226,104,37,95,231,34,37,207,140,87,91,168,80,85,118,7,112,4,41,133,90,160,72,232,194,116,85,34,116,141,133,229,91,162,85,236,37,94,206,92,85,21,0,142,46,7,193,32,78,32,216,86,84,37,18,186,38,228,188,197,229,82,72,128,93,122,181,32,133,174,91,34,251,225,5,136,82,14,251,197,26,69,238,34,82,41,183,83,45,85,136,206},
-  {105,72,204,254,26,113,26,110,22,8,212,175,144,217,161,171,178,43,220,150,113,71,228,160,118,194,29,103,86,219,175,160,111,208,224,136,200,250,221,29,15,169,26,76,136,240,253,109,153,105,203,196,188,31,150,127,153,115,75,44,158,153,51,113,57,239,135,44,223,57,35,34,234,243,34,255,31,1,66,140,80,49,169,217,170,129,69,184,37,98,174,249,33,40,140,244,119,82,61,48,33,40,184,47,118,136,227,247,175,176,32,102,6,65,84,108,166,170,96,111,96,134,40,82,151,154,106,38},
-  {236,248,136,254,126,55,104,205,178,135,204,252,204,199,107,219,123,151,206,233,115,141,189,230,204,176,142,133,114,140,219,114,82,210,40,236,174,67,117,89,165,34,37,170,90,165,85,5,80,85,81,5,80,0,37,37,85,0,34,85,162,34,85,34,82,37,37,165,37,82,85,90,37,90,165,90,85,85,0,37,37,5,80,32,10,160,34,81,82,37,2,37,36,82,42,165,165,82,34,80,85,85,85,0,37,85,85,34,165,160,5,34,82,10,165,165,0,37,85,34,82,32,82,81,34,85,34,165},
-  {184,12,113,26,131,251,173,2,197,1,165,97,80,196,59,119,60,121,247,65,119,230,203,100,204,131,233,103,116,238,194,252,20,238,238,122,239,65,119,172,128,9,3,236,10,115,116,165,89,61,150,200,204,87,69,221,153,233,255,94,98,189,249,173,28,17,214,64,17,164,83,203,124,117,245,155,17,122,207,17,223,117,207,172,125,247,28,97,206,222,60,96,249,204,96,116,60,68,142,67,17,204,97,214,35,84,202,191,105,200,89,231,91,115,121,216,221,199,234,190,230,89,231,58,119,175,19,108},
-  {32,34,2,16,2,0,0,32,0,65,17,34,34,18,18,32,0,34,34,17,4,16,0,32,85,69,68,68,68,85,85,68,32,34,2,32,32,66,17,1,34,20,17,32,17,17,34,34,0,16,0,32,34,4,0,0,68,85,85,69,68,85,85,68,0,0,64,2,16,17,0,32,34,34,2,17,34,66,32,34,16,17,0,34,34,17,17,33,84,68,85,69,68,68,85,69,0,0,32,32,66,34,1,0,33,4,0,32,16,33,34,18,0,34,2,32,0,18,0,0,68,52,85,83,68,84,86,69},
-  {32,34,2,16,2,0,0,32,0,49,17,34,34,18,18,32,0,34,34,17,3,16,0,32,119,103,102,102,102,119,119,102,32,34,2,32,32,66,17,1,34,20,17,32,17,17,34,34,0,16,0,32,34,4,0,0,102,119,119,103,102,119,119,102,0,0,64,2,16,17,0,32,34,34,2,17,34,66,32,34,16,17,0,34,34,17,17,33,118,102,119,103,102,102,119,103,0,0,32,32,98,34,1,0,33,4,0,32,16,33,34,18,0,34,2,32,0,18,0,0,102,86,119,117,102,118,120,103},
-  {32,34,2,16,2,0,0,48,0,65,17,34,34,18,18,48,0,34,34,17,4,16,0,48,119,103,102,102,102,119,119,102,32,34,2,48,32,66,17,1,34,20,17,48,17,17,34,34,0,16,0,48,34,4,0,0,102,119,119,103,102,119,119,102,0,0,64,2,16,17,0,48,34,34,2,17,34,66,32,50,16,17,0,34,34,17,17,49,118,102,119,103,102,102,119,103,0,0,32,48,66,34,1,0,33,4,0,48,16,33,34,18,0,34,2,48,0,18,0,0,102,86,119,117,102,118,120,103},
-  {32,34,2,16,2,0,0,48,0,81,17,34,34,18,18,48,0,34,34,17,5,16,0,48,102,86,85,85,85,102,102,85,32,34,2,48,32,82,17,1,34,21,17,48,17,17,34,34,0,16,0,48,34,5,0,0,85,102,102,86,85,102,102,85,0,0,80,2,16,17,0,48,34,34,2,17,34,82,32,50,16,17,0,34,34,17,17,49,101,85,102,86,85,85,102,86,0,0,32,48,82,34,1,0,33,5,0,48,16,33,34,18,0,34,2,48,0,18,0,0,85,69,102,100,85,101,103,86},
-  {32,34,2,16,2,0,0,48,0,65,17,34,34,18,18,48,0,34,34,17,4,16,0,48,119,103,102,102,102,119,119,102,32,34,2,48,32,66,17,1,34,20,17,48,17,17,34,34,0,16,0,48,34,4,0,0,102,119,119,103,102,119,119,102,0,0,64,2,16,17,0,48,34,34,2,17,34,66,32,50,16,17,0,34,34,17,17,49,118,102,119,103,102,102,119,103,0,0,32,48,66,34,1,0,33,4,0,48,16,33,34,18,0,34,2,48,0,18,0,0,102,86,119,117,102,118,120,103},
-  {32,34,2,16,2,0,0,32,0,65,17,34,34,18,18,32,0,34,34,17,4,16,0,32,85,69,68,68,68,85,85,68,32,34,2,32,32,66,17,1,34,20,17,32,17,17,34,34,0,16,0,32,34,4,0,0,68,85,85,69,68,85,85,68,0,0,64,2,16,17,0,32,34,34,2,17,34,66,32,34,16,17,0,34,34,17,17,33,84,68,85,69,68,68,85,69,0,0,32,32,66,34,1,0,33,4,0,32,16,33,34,18,0,34,2,32,0,18,0,0,68,52,85,83,68,84,86,69},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,17,0,0,33,12,0,0,0,38,16,33,32,3,0,0,16,115,12,194,155,201,0,0,32,200,12,60,185,59,0,0,0,128,179,147,203,16,2,0,16,12,154,17,0,33,12,0,32,48,85,114,188,192,0,0,0,66,155,195,153,53,1,0,16,183,16,188,27,12,44,0,33,204,32,60,11,0,192,0,194,192,176,19,6,0,0,0,0,0,48,180,12,0,0,0,0,0,48,185,0,0,0,0,0,0,128,185,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,1,0,0,0,0,0,0,36,68,0,0,0,0,0,0,48,6,0,0,0,0,16,2,81,6,33,0,0,0,33,17,98,21,2,0,0,16,52,3,82,69,0,1,0,0,49,17,52,19,52,3,0,0,0,83,83,49,101,1,0,0,16,49,21,84,4,0,0,0,0,16,19,53,1,0,0,0,0,64,81,69,20,0,0,0,0,0,52,22,0,0,0,0,0,0,99,37,0,0,0,0,0,0,96,6,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,68,3,0,48,3,0,0,0,65,64,51,64,3,0,0,64,17,66,4,68,49,0,0,16,82,21,4,68,66,0,0,52,64,17,81,33,0,0,0,68,3,48,19,5,52,0,0,64,80,68,20,21,64,0,0,19,33,69,17,18,4,0,64,4,52,85,52,32,52,0,64,0,0,18,68,64,68,3,0,0,0,51,33,64,64,4,0,0,0,36,21,0,0,0,0,0,0,32,81,0,0,0,0,0,0,32,33,0,0,0},
-  {0,0,0,0,1,0,0,0,0,0,0,16,22,0,0,0,0,0,16,0,41,17,0,0,0,0,97,68,73,38,0,0,0,0,32,104,100,0,0,0,0,0,0,100,17,1,0,0,0,0,17,16,131,22,0,0,0,48,102,57,103,1,0,0,0,0,19,102,107,16,3,0,0,0,0,103,102,102,1,0,0,0,0,96,177,16,0,0,0,0,16,131,35,0,0,0,0,0,16,102,41,0,0,0,0,0,0,98,11,0,0,0,0,0,0,133,91,0,0,0,0,0,85,200,221,90,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,1,0,0,0,0,0,32,85,80,0,1,0,0,0,81,200,80,18,6,81,0,0,16,134,66,98,1,5,0,0,0,98,201,181,85,5,0,0,0,85,92,6,41,0,0,0,0,49,53,197,89,0,0,0,0,16,165,193,1,0,0,0,0,80,115,91,0,0,0,0,0,0,147,11,0,0,0,0,0,0,96,201,0,0,0,0,0,0,144,11,0,0,0,0,0,0,128,185,0,0,0,0,0,0,156,203,0,0,0},
-  {0,0,0,0,0,0,0,0,0,102,0,0,0,1,0,0,0,16,6,6,102,99,0,0,0,96,11,50,99,102,0,0,96,182,1,101,6,187,6,0,0,81,101,96,176,111,7,0,0,0,102,102,251,54,54,0,96,102,211,28,102,19,99,0,0,3,119,55,49,102,6,0,0,0,103,183,248,0,0,0,0,0,3,206,207,0,0,0,0,0,0,137,188,0,0,0,0,0,0,202,252,0,0,0,0,0,0,120,247,0,0,0,0,0,0,200,247,0,0,0,0,0,0,201,252,0,0,0},
-  {50,51,35,0,4,50,51,35,34,0,0,0,3,0,36,50,66,51,52,51,48,34,2,34,2,34,66,2,34,51,51,35,2,48,51,51,51,0,0,64,51,34,50,51,66,34,51,36,0,18,50,0,34,34,0,64,34,50,51,51,67,51,51,34,2,64,48,34,2,0,0,0,50,51,51,35,36,50,51,32,34,48,3,48,52,0,32,34,36,34,35,34,0,34,2,64,50,51,51,51,0,51,51,35,2,3,36,50,51,52,34,0,34,50,51,51,34,0,50,35,51,51,4,32,34,50,51,34},
-  {81,134,220,172,134,88,19,0,206,222,122,152,170,237,238,237,137,203,222,206,103,67,163,187,218,206,41,99,70,18,133,118,204,154,182,204,155,220,156,164,222,186,138,83,69,114,202,237,116,153,170,137,68,136,17,49,1,81,154,98,101,170,106,34,0,49,1,49,68,70,82,21,238,238,238,255,222,222,173,204,186,204,172,204,172,70,169,149,220,221,238,238,239,238,189,172,222,220,205,221,221,172,219,222,201,188,171,133,138,35,185,202,204,204,188,172,39,0,32,184,38,68,1,48,86,132,154,133},
-  {148,89,17,147,223,154,86,70,100,135,83,163,73,146,40,33,51,150,235,140,75,163,41,0,83,185,236,72,197,190,6,0,164,185,155,19,99,183,22,35,166,168,74,33,135,50,106,54,134,102,21,64,94,33,92,83,135,152,3,48,205,165,175,154,36,165,59,82,237,174,234,140,18,97,173,199,255,12,176,59,34,64,203,255,238,8,176,76,138,135,18,251,189,93,232,188,152,139,1,233,139,163,255,106,32,104,118,222,104,162,219,8,0,35,200,239,172,104,98,41,52,20,98,217,206,57,33,104},
-  {94,117,114,123,67,74,8,125,116,37,191,188,34,96,116,20,21,144,153,102,54,34,216,11,157,74,76,76,159,55,17,247,147,146,34,34,220,43,234,225,77,13,27,84,25,230,205,231,95,109,63,186,153,2,38,132,151,114,198,3,196,185,84,32,84,33,181,82,10,110,137,100,174,114,87,188,103,22,87,26,84,47,30,137,17,145,7,121,45,227,148,150,100,7,187,252,65,27,196,243,110,202,37,157,35,253,188,11,5,66,147,162,133,217,165,54,78,159,210,93,57,233,64,30,23,76,100,233},
-  {110,150,130,155,51,120,10,174,167,20,191,221,34,80,170,38,20,192,203,153,53,34,218,13,158,122,126,109,207,58,34,249,147,145,66,68,238,27,250,225,93,13,29,117,27,231,221,233,111,158,95,186,203,2,37,165,184,180,197,3,227,204,101,32,99,65,214,114,12,95,105,132,175,182,171,222,137,25,104,24,101,79,31,165,1,145,9,155,78,227,183,183,51,9,188,252,113,29,213,245,78,235,70,189,37,254,189,29,6,86,179,161,164,235,202,87,126,191,226,78,59,251,48,30,25,125,154,235},
-  {215,32,183,7,34,46,114,247,253,49,174,194,232,126,7,124,114,51,126,124,119,123,16,45,122,227,126,119,129,43,216,46,112,123,39,23,233,39,75,119,225,122,42,123,238,119,122,7,233,23,209,123,119,122,87,247,126,19,233,7,208,82,85,126,23,121,126,196,255,215,238,46,151,127,119,74,119,71,119,39,75,71,17,75,85,78,75,17,10,64,253,116,237,78,75,217,4,125,116,192,116,71,113,125,161,119,74,192,180,145,191,116,185,96,75,252,183,209,167,55,78,248,119,71,71,119,71,167},
-  {101,102,86,68,71,101,102,86,85,68,68,68,70,68,87,101,117,102,98,102,100,85,33,85,69,85,117,21,83,102,102,86,69,100,102,102,102,68,68,116,102,85,5,97,117,16,102,87,68,5,33,50,85,50,68,116,85,101,102,102,118,102,102,85,21,114,100,85,16,68,68,68,101,102,102,22,51,99,102,84,85,100,66,100,103,68,84,85,87,85,86,85,68,21,67,116,101,102,102,102,1,33,50,86,69,22,83,101,54,99,85,68,85,101,102,102,85,68,101,86,102,102,71,84,85,101,102,85},
-  {101,102,86,51,55,101,102,86,85,51,51,51,54,51,87,101,117,102,98,102,99,85,33,85,53,85,117,21,84,102,102,86,53,99,102,102,102,51,51,115,102,85,5,97,117,16,102,87,51,5,33,66,85,66,51,115,85,101,102,102,118,102,102,85,21,114,99,85,16,51,51,51,101,102,102,22,68,100,102,83,85,99,50,99,103,51,83,85,87,85,86,85,51,21,52,115,101,102,102,102,1,33,66,86,53,22,84,101,70,100,85,51,85,101,102,102,85,51,101,86,102,102,55,83,85,101,102,85},
-  {33,34,18,0,3,33,34,18,17,0,0,0,2,0,19,33,49,34,38,34,32,17,101,17,1,17,49,81,23,34,34,18,1,32,34,34,34,0,0,48,34,17,65,37,49,84,34,19,0,65,101,118,17,118,0,48,17,33,34,34,50,34,34,17,81,54,32,17,84,0,0,0,33,34,34,82,119,39,34,16,17,32,6,32,35,0,16,17,19,17,18,17,0,81,7,48,33,34,34,34,69,101,118,18,1,82,23,33,114,39,17,0,17,33,34,34,17,0,33,18,34,34,3,16,17,33,34,17},
-  {221,223,221,255,223,253,221,221,93,87,85,85,120,85,34,229,63,171,186,186,168,170,154,212,93,57,17,17,49,33,161,245,95,27,37,85,53,53,161,213,95,27,165,153,170,90,178,213,95,42,179,34,16,90,163,245,79,10,165,81,37,137,161,197,93,22,165,82,21,90,177,211,61,27,181,17,1,90,177,213,125,58,165,170,170,42,161,213,95,26,53,85,85,37,145,229,95,10,49,18,17,16,162,244,95,171,169,170,171,154,152,247,95,85,53,136,85,88,85,213,205,223,221,223,221,221,255,223},
-  {122,5,94,178,120,72,69,7,140,245,44,139,225,7,74,42,159,185,23,141,226,72,74,26,165,201,68,125,226,39,14,75,182,133,68,133,181,6,14,78,149,133,112,104,230,55,77,140,71,90,146,231,227,148,79,93,6,109,224,176,241,164,72,92,23,92,179,199,183,227,101,76,7,138,53,107,246,178,38,75,74,108,40,159,157,192,6,43,77,140,5,11,159,224,37,14,15,143,6,111,140,226,150,44,91,89,71,90,149,232,54,240,143,194,70,218,115,242,72,142,121,212,121,199,87,248,120,72},
-  {221,223,205,255,223,253,219,220,93,87,85,85,119,85,35,197,79,154,169,169,150,153,137,212,93,72,17,17,49,49,144,245,94,26,53,85,69,53,145,213,95,26,149,136,153,89,163,213,95,41,164,34,16,89,147,245,79,9,149,81,37,120,145,181,93,22,149,82,21,89,161,211,77,26,165,17,1,89,160,213,125,73,149,153,153,57,144,197,95,25,69,85,85,53,129,213,95,9,64,18,17,16,146,244,95,154,152,153,154,137,134,245,94,85,69,119,85,87,85,213,189,207,205,223,221,221,255,223},
-  {140,6,110,210,138,73,70,8,173,245,29,173,225,8,76,44,175,218,24,158,225,73,76,28,198,218,68,142,225,24,14,77,215,150,68,150,213,7,14,78,166,166,128,122,230,56,78,157,72,108,162,232,227,180,79,94,6,110,224,208,241,196,74,93,24,93,211,216,216,227,102,77,8,156,54,125,247,210,38,77,76,125,41,175,174,208,7,44,78,157,5,13,175,224,38,14,15,175,6,127,173,226,167,29,109,106,72,92,166,233,55,240,159,210,70,236,131,241,74,158,138,228,138,216,104,249,137,74},
-  {2,0,32,16,1,239,14,32,160,73,153,89,166,153,51,9,145,205,220,220,203,204,188,20,158,123,102,102,51,70,198,9,158,109,120,153,73,69,198,25,79,77,197,187,204,156,215,229,49,76,217,135,102,76,195,250,80,60,201,147,57,156,195,250,81,107,196,147,57,156,214,20,160,61,212,102,54,156,214,9,146,124,201,204,204,124,200,9,144,108,153,85,85,73,180,25,80,108,51,132,102,70,199,25,94,205,203,204,205,188,187,9,158,153,69,170,74,148,85,25,255,30,17,238,255,17,1,0},
-  {44,36,194,148,122,0,96,210,52,185,59,131,51,38,33,101,27,22,162,162,186,195,54,171,4,195,254,239,69,21,35,105,37,204,233,254,126,155,170,190,238,2,64,6,64,0,228,255,174,123,195,168,153,84,92,70,198,32,149,122,192,19,160,185,155,10,48,4,40,84,23,155,114,118,170,172,172,91,49,100,28,170,202,17,33,0,133,96,86,55,198,204,36,169,204,154,7,64,171,105,50,86,101,238,174,25,36,195,59,133,238,255,239,110,3,0,149,238,156,255,70,226,153,74,70,171,10,32},
-  {255,205,204,255,255,255,239,222,124,121,119,119,153,119,51,215,109,171,186,186,165,170,138,246,126,72,17,17,65,49,161,199,125,27,55,119,71,71,161,215,125,27,167,136,170,122,179,215,124,58,182,35,16,122,164,199,109,10,167,113,39,152,161,215,127,21,167,115,23,122,177,244,77,27,183,17,1,122,177,215,157,74,167,170,170,58,161,215,127,26,103,119,119,55,129,247,125,10,65,18,17,16,163,214,125,171,168,170,171,138,133,201,125,119,71,153,119,121,119,215,221,252,239,221,221,221,253,255},
-  {221,26,17,204,220,236,188,43,33,161,74,72,34,18,49,51,151,102,102,70,248,237,190,251,235,238,222,236,171,1,48,0,7,5,0,17,34,102,135,135,84,153,170,207,239,205,238,77,17,193,223,102,17,68,17,17,153,100,145,198,236,134,134,40,255,255,252,108,97,72,221,204,54,18,17,193,158,53,3,160,71,70,132,4,0,48,83,92,206,132,104,72,69,136,204,255,19,250,204,203,189,68,153,36,134,20,34,17,33,202,171,24,250,172,170,102,36,42,164,136,74,241,189,102,100,100,244,252},
-  {7,83,12,0,10,0,208,48,10,97,224,0,253,16,241,224,0,9,47,5,69,44,7,50,0,0,48,10,99,47,10,99,80,5,80,14,150,0,9,168,32,10,159,12,110,208,192,160,126,240,13,69,0,12,224,204,21,64,209,130,64,225,224,192,145,96,231,135,112,8,16,213,249,192,9,6,13,7,61,8,12,0,240,13,52,0,109,0,3,19,0,0,99,48,10,79,10,98,48,1,160,112,9,95,8,140,80,10,240,112,47,3,11,192,172,0,192,127,32,216,5,0,96,224,35,14,144,45},
-  {16,80,16,5,2,82,32,32,50,83,39,112,32,83,0,48,32,96,2,2,2,98,32,37,2,2,32,4,3,117,82,2,5,48,2,82,35,0,32,6,5,83,5,80,114,82,82,2,38,51,5,2,38,5,83,16,112,2,39,32,2,2,3,2,32,37,7,82,5,16,37,32,98,83,32,32,6,2,5,82,3,96,82,0,32,37,32,87,0,2,83,32,5,50,80,96,54,35,35,39,39,32,80,7,7,2,2,82,0,82,96,2,38,32,37,96,5,3,39,32,80,112,82,2,37,48,7,3},
-  {7,83,12,0,10,0,208,48,10,97,224,0,253,16,241,224,0,9,47,5,69,44,7,50,0,0,48,10,99,47,10,99,80,5,80,14,150,0,9,168,32,10,159,12,110,208,192,160,126,240,13,69,0,12,224,204,21,64,209,130,64,225,224,192,145,96,231,135,112,8,16,213,249,192,9,6,13,7,61,8,12,0,240,13,52,0,109,0,3,19,0,0,99,48,10,79,10,98,48,1,160,112,9,95,8,140,80,10,240,112,47,3,11,192,172,0,192,127,32,216,5,0,96,224,35,14,144,45},
-  {91,93,85,224,77,16,245,180,91,221,85,0,15,16,245,180,91,93,0,78,0,77,245,84,91,77,5,73,89,80,127,85,5,69,5,132,91,112,51,95,0,69,5,129,91,112,51,255,0,187,0,165,88,80,15,0,93,0,119,89,152,80,5,255,93,123,33,95,249,80,0,91,80,123,50,0,15,255,80,91,80,123,51,223,205,84,79,91,80,91,255,29,212,180,95,181,240,245,0,77,213,181,15,85,0,80,91,93,213,85,15,255,255,85,91,93,95,255,84,0,84,80,85,13,95,15,84,95},
-  {168,108,93,119,164,47,148,69,235,160,11,206,53,150,67,143,84,72,53,204,130,27,174,64,182,243,60,225,114,251,189,72,91,196,61,187,199,91,98,144,198,119,178,133,127,120,78,212,244,6,174,136,81,202,16,152,235,48,65,91,133,36,61,82,41,83,116,251,192,175,156,129,139,245,133,164,232,172,225,205,72,7,90,47,64,16,9,92,95,7,168,66,166,249,130,129,14,230,140,7,207,116,196,30,17,198,28,233,76,140,131,169,167,222,193,97,196,81,30,183,145,188,77,152,0,33,162,215},
-  {17,1,17,17,17,17,17,33,1,0,0,32,0,0,0,48,1,16,0,2,0,0,0,0,1,1,0,0,0,0,0,50,17,0,0,0,16,0,32,48,1,0,0,0,1,0,2,0,0,0,0,32,0,0,0,48,1,2,0,2,0,0,0,48,33,0,0,0,0,0,0,48,1,0,0,0,1,0,0,0,0,0,0,16,0,0,16,0,1,0,0,2,0,0,1,48,32,0,0,0,0,16,0,48,2,0,0,0,0,2,0,48,1,0,0,0,0,0,0,32,50,51,51,0,51,48,51,35},
-  {33,34,18,0,3,33,34,18,17,0,0,0,2,0,19,33,49,70,134,34,32,17,143,17,1,17,161,81,25,34,34,18,1,32,34,34,34,0,0,48,34,17,97,41,49,107,34,19,0,161,105,138,17,91,0,48,209,41,34,34,50,34,34,17,129,58,32,161,129,133,0,0,33,34,34,146,189,93,178,20,17,32,13,32,141,12,176,20,19,251,31,17,0,17,81,52,33,34,242,34,223,40,82,28,1,2,255,40,207,44,17,0,17,33,85,37,17,0,33,18,34,34,3,16,17,33,34,17},
-  {17,33,33,0,17,1,0,48,51,3,82,134,54,221,136,245,50,2,98,136,100,217,109,245,82,51,83,70,69,216,141,246,83,53,83,121,133,72,216,248,82,85,51,101,121,104,168,248,162,85,53,101,120,184,72,248,99,85,213,153,136,106,182,255,131,90,149,157,102,103,123,250,163,86,37,150,137,121,135,244,160,219,73,214,106,123,135,196,112,248,191,217,106,123,183,228,64,199,255,221,157,136,119,236,112,123,221,214,237,187,116,231,193,51,119,68,109,222,116,247,224,94,237,238,238,238,238,255},
-  {33,155,98,220,84,74,148,1,83,99,235,238,152,43,7,0,182,148,238,239,172,28,32,18,131,135,156,57,172,126,97,213,201,231,154,51,126,153,97,180,157,248,223,1,197,185,152,150,107,197,216,12,150,130,107,102,150,228,153,238,67,97,105,131,218,101,56,99,134,23,16,162,221,189,37,248,178,92,48,133,127,170,43,115,73,247,2,225,24,102,153,243,186,189,134,123,53,86,54,215,207,253,142,146,65,41,150,172,202,151,86,39,34,40,56,235,157,106,20,68,32,118,57,200,105,25,56,101},
-  {35,50,85,32,2,35,2,32,132,119,135,169,153,120,57,67,156,202,203,202,220,238,171,236,10,19,11,0,50,15,51,0,123,152,107,100,249,148,55,121,151,121,91,38,230,132,104,229,167,186,171,52,239,76,133,229,14,50,0,202,17,192,186,14,112,116,215,33,134,164,32,13,89,85,232,99,100,249,84,94,222,221,185,136,131,199,213,253,17,65,252,238,232,30,93,0,35,164,18,17,14,99,60,66,35,217,120,104,126,153,63,117,202,164,55,229,179,85,252,246,18,106,204,78,134,191,19,14},
-  {80,252,98,240,56,69,95,68,241,54,159,248,69,137,249,31,60,246,159,171,191,43,15,243,92,31,241,71,154,248,33,151,247,97,168,0,207,28,51,87,248,104,166,255,82,247,121,155,95,23,168,47,127,147,204,241,242,161,255,187,63,68,36,47,185,111,51,140,246,127,240,149,136,188,86,190,147,251,205,131,250,153,52,111,133,15,196,83,15,48,55,242,9,15,245,85,196,47,204,159,250,112,73,207,51,240,111,246,201,103,243,81,51,8,79,249,252,92,31,71,82,245,38,247,100,248,71,36},
-  {35,50,68,32,2,35,2,32,116,102,102,168,136,102,56,67,140,201,203,202,204,254,154,236,0,35,2,0,2,0,51,224,96,130,200,92,231,122,54,231,128,98,194,42,229,46,86,228,160,122,39,196,122,68,116,228,48,102,38,202,169,85,85,213,48,102,38,92,162,85,85,213,190,239,255,250,251,175,186,218,16,17,1,16,49,1,16,209,96,198,56,170,87,201,204,209,96,138,158,226,170,94,149,210,240,229,85,166,85,138,229,212,130,136,184,136,88,136,136,184,235,235,187,235,235,239,235,253},
-  {19,49,68,32,2,35,2,32,148,136,152,203,187,137,59,51,189,220,221,220,221,254,204,237,0,19,1,0,2,0,51,224,96,162,42,68,154,170,55,234,112,114,34,38,54,41,104,229,48,170,36,53,154,68,148,229,48,68,40,102,147,102,102,230,48,136,40,102,145,102,150,230,96,150,102,22,102,150,105,230,96,147,102,99,102,51,99,230,128,152,58,102,105,17,70,224,128,166,54,17,102,102,54,226,128,134,102,72,102,170,54,228,162,170,218,170,106,163,170,218,237,237,221,237,237,239,237,254},
-  {4,0,0,0,3,0,0,64,64,0,0,52,49,4,0,4,0,19,67,0,2,48,48,0,0,64,0,32,4,0,2,0,0,32,3,36,48,48,48,0,0,4,64,64,0,3,0,4,0,3,4,52,64,48,0,3,20,66,50,34,3,0,3,48,48,0,3,16,50,52,50,19,0,4,32,36,64,0,3,48,0,4,64,64,0,3,4,4,0,48,64,32,64,50,0,3,0,32,3,51,4,0,51,0,0,4,64,2,0,52,49,0,64,0,0,49,68,0,0,4,4,0,0,4,0,0,0,64},
-  {0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,16,2,0,1,0,0,0,0,16,2,0,33,0,0,16,1,16,33,18,1,0,0,0,18,0,17,33,18,0,0,0,32,33,33,2,2,0,0,0,0,18,34,0,0,0,0,0,16,17,2,32,0,0,16,17,17,18,33,17,17,0,0,32,34,16,33,2,34,1,0,0,1,0,33,2,0,1,0,0,1,32,33,0,0,0,0,0,0,16,33,0,0,0,0,0,0,16,33,0,0,0,0,0,0,32,33,0,0,0},
-  {0,0,64,0,0,0,0,0,0,0,16,0,0,112,0,0,0,1,64,0,1,7,0,224,0,229,64,8,4,14,7,225,1,85,64,14,4,126,0,137,228,80,160,14,236,67,1,6,225,96,176,14,158,14,1,6,68,126,206,202,126,14,6,14,64,142,206,10,90,66,54,7,128,14,238,184,14,238,231,9,144,14,14,174,14,174,233,10,224,2,14,158,14,190,234,0,224,62,190,94,46,190,110,0,80,34,174,78,40,190,126,12,208,236,195,142,143,254,254,12,91,237,253,223,222,221,206,15},
-  {0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,19,34,0,0,0,0,0,0,18,2,0,0,0,0,0,48,35,51,0,0,0,0,0,35,18,34,0,0,0,0,0,48,35,51,2,0,0,0,0,35,18,34,3,0,0,0,0,50,35,51,2,0,0,0,32,35,18,34,51,0,0,0,0,48,19,51,2,0,0,0,32,35,18,34,51,0,0,0,0,50,19,51,34,0,0,0,32,0,32,3,0,2,0,0,0,0,32,3,0,0,0,0,0,0,32,3,0,0,0},
-  {172,205,55,188,53,222,119,237,103,0,50,153,236,155,239,138,18,137,17,150,19,68,0,99,167,19,169,23,156,17,167,32,134,124,51,254,123,235,51,237,254,28,252,172,252,154,190,156,0,50,119,120,2,149,0,99,170,0,83,33,188,19,101,33,67,190,82,172,155,235,151,237,155,41,239,105,108,0,72,0,18,51,16,83,33,121,118,125,205,102,170,67,204,107,255,105,170,239,18,254,55,71,0,230,84,0,50,151,143,20,136,1,17,151,113,54,32,187,70,202,206,98,172,1,168,37,204,18},
-  {156,205,55,171,69,222,119,221,87,0,67,136,220,138,223,137,35,136,33,135,36,68,1,84,151,35,152,39,139,34,151,32,133,123,51,238,122,218,51,237,237,42,235,156,235,137,174,156,0,51,119,120,3,133,0,116,153,0,84,34,172,35,85,33,68,173,82,155,138,234,135,221,138,57,238,104,91,0,72,0,18,68,32,84,49,120,117,125,189,102,153,67,188,90,238,89,153,238,18,237,55,71,0,229,84,1,66,135,142,36,136,2,17,135,114,53,48,170,71,201,189,114,156,18,152,37,188,35},
-  {188,205,72,188,86,222,119,237,103,1,83,153,236,155,239,139,35,137,34,151,37,85,17,101,183,36,169,40,156,34,183,48,134,124,68,254,123,235,68,237,254,44,252,188,252,155,190,172,1,67,136,120,3,150,0,117,187,1,101,50,188,36,102,50,85,190,99,172,155,235,152,237,155,58,239,105,108,0,88,16,35,85,32,101,50,121,134,125,205,102,171,84,204,107,255,106,186,239,35,254,72,87,0,230,101,1,83,151,143,37,136,18,34,151,114,70,48,187,87,202,206,115,172,18,184,54,204,35},
-  {172,205,55,188,69,222,102,237,86,0,66,152,236,155,239,138,34,121,33,150,36,68,1,84,166,35,153,39,140,34,166,32,133,108,51,254,107,219,51,237,254,44,252,172,252,154,190,156,0,50,119,104,2,133,0,100,170,0,84,34,188,35,85,34,68,190,82,156,155,235,135,221,139,41,239,88,92,0,71,0,34,68,32,84,34,105,117,109,205,85,154,67,204,91,255,89,169,239,18,253,55,70,0,229,84,1,66,150,127,36,120,2,17,134,98,53,32,187,70,201,206,98,156,18,168,37,204,34},
-  {188,205,72,188,86,222,119,237,103,1,83,153,236,155,223,155,35,137,33,151,37,85,17,101,183,36,169,40,156,34,183,48,150,124,68,254,123,219,68,237,253,44,252,188,252,155,190,172,1,67,136,121,3,150,0,117,187,1,101,50,188,36,102,50,85,189,99,172,155,235,152,221,155,58,239,105,108,0,88,16,35,85,32,101,50,121,134,125,205,102,171,84,204,107,255,106,186,239,19,253,72,87,0,230,101,1,83,151,143,37,137,18,17,151,114,70,48,187,87,202,206,115,172,18,185,54,204,35},
-  {172,205,55,188,69,222,102,237,86,0,67,136,236,139,239,122,19,120,18,134,20,68,2,84,166,19,152,23,140,17,166,16,117,108,51,254,106,235,51,237,254,28,252,172,252,138,190,156,0,51,119,103,3,133,0,100,170,0,84,17,188,19,85,18,68,174,81,156,138,235,135,237,138,57,239,88,92,0,71,0,33,68,16,84,50,104,117,109,205,85,154,67,204,90,255,89,169,239,33,254,55,70,0,229,84,2,65,134,127,20,119,1,34,134,97,53,48,171,70,201,206,97,156,33,167,21,204,19},
-  {172,221,72,188,86,222,119,237,103,1,83,152,237,155,239,138,35,137,34,151,37,85,17,101,167,36,169,40,140,34,167,48,134,124,68,254,122,235,68,237,254,44,252,172,252,154,190,157,1,67,136,120,3,134,0,117,170,1,101,50,189,36,102,50,85,174,99,172,154,235,136,237,138,57,239,104,108,0,88,16,35,85,32,101,50,121,134,125,205,102,170,84,205,106,255,105,170,239,35,254,72,87,0,230,101,1,83,151,143,37,136,18,34,135,114,70,48,171,87,218,206,115,173,18,168,54,205,35},
-  {171,188,71,171,86,205,119,220,103,1,84,153,219,154,207,138,52,137,49,151,53,85,17,101,167,52,169,55,155,51,167,48,134,123,68,237,122,202,68,220,236,59,235,171,235,154,173,171,1,68,119,120,4,150,0,117,170,1,101,51,171,52,102,51,85,172,99,171,154,218,151,204,154,74,222,105,107,0,88,16,51,85,48,101,67,121,118,124,188,102,170,84,187,106,238,106,170,222,19,236,71,87,0,214,101,1,83,151,142,53,136,19,33,151,115,70,64,170,87,186,189,115,171,19,168,54,187,52},
-  {155,205,71,171,69,206,102,236,86,1,67,135,236,138,223,121,35,120,33,134,36,68,1,84,150,36,152,39,123,34,150,48,117,107,68,254,106,218,68,236,253,43,251,155,251,137,174,140,0,67,119,103,3,117,0,100,153,0,84,50,172,36,85,50,68,173,83,155,138,234,119,221,122,56,239,87,91,0,71,16,35,68,32,84,50,104,117,108,188,85,153,68,188,90,255,88,153,239,19,253,71,70,0,229,84,1,67,134,127,36,119,2,17,118,98,69,48,170,70,201,190,99,156,18,151,53,188,35},
-  {172,221,55,188,69,222,102,237,86,0,66,136,237,139,239,122,34,120,33,134,36,68,1,84,166,35,152,39,140,34,166,32,117,108,51,254,107,219,51,237,254,44,252,172,252,138,190,157,0,50,119,103,2,133,0,100,170,0,84,34,189,35,85,33,68,190,82,156,139,235,135,221,139,41,239,104,92,0,71,0,18,68,32,84,33,104,117,109,205,102,154,67,205,91,255,89,169,239,18,253,55,70,0,229,84,1,66,134,127,36,119,2,17,134,98,53,32,187,70,217,206,98,157,18,167,37,205,34},
-  {172,205,71,188,69,222,102,237,87,0,66,136,236,139,239,122,34,120,33,134,36,68,1,84,167,36,152,39,140,34,167,32,117,124,68,254,106,219,68,237,254,44,252,172,252,138,190,156,0,67,119,103,2,133,0,100,170,0,84,34,188,36,85,34,68,174,82,156,138,235,135,221,138,41,239,104,92,0,71,0,34,68,32,84,34,104,117,125,205,102,154,68,204,90,255,89,169,239,18,253,71,70,0,229,84,1,66,134,127,36,119,2,17,135,98,69,32,171,70,201,206,98,156,18,167,37,204,34},
-  {172,206,55,188,69,223,102,237,87,0,67,136,236,139,239,122,35,120,33,134,36,68,1,84,167,35,136,39,140,34,167,32,117,124,51,255,107,235,51,253,254,43,252,172,252,138,190,140,0,51,119,103,3,133,0,100,170,0,84,34,188,35,85,34,68,190,82,140,139,235,135,238,139,56,255,104,92,0,71,0,34,68,32,84,50,104,117,125,205,102,138,67,204,91,255,88,168,255,18,254,55,70,0,229,84,1,66,134,127,36,119,2,17,135,98,53,48,187,70,200,206,98,140,18,167,37,204,35},
-  {172,204,71,171,69,206,102,220,87,1,67,153,220,154,223,138,35,137,33,150,36,68,17,84,167,36,153,39,155,34,167,32,133,123,68,254,106,218,68,236,237,43,251,172,251,154,174,156,1,67,119,104,3,149,0,100,170,1,84,34,172,36,85,34,68,173,82,155,154,234,151,220,154,57,239,89,91,0,72,16,34,68,32,84,50,105,117,124,188,85,154,68,188,90,238,89,169,239,18,253,71,70,0,229,84,1,66,150,143,36,136,18,33,151,98,69,48,170,70,201,189,98,156,18,168,37,188,35},
-  {171,204,71,171,85,206,102,236,87,1,83,152,236,154,223,138,35,137,33,150,37,85,17,85,167,36,153,39,139,34,167,48,133,123,68,254,106,218,68,236,253,43,251,171,251,154,174,156,1,67,119,104,3,133,0,101,170,1,85,50,172,36,85,50,85,173,83,155,154,234,135,220,138,57,239,104,91,0,88,16,35,85,32,85,50,105,117,124,188,102,154,84,188,90,255,89,169,239,19,253,71,86,0,229,85,1,83,150,143,37,136,18,17,135,98,69,48,170,86,201,190,99,156,18,168,53,188,35},
-  {172,221,56,188,70,222,119,237,103,1,67,153,237,155,239,138,35,137,34,151,36,68,17,100,167,37,169,40,156,34,167,48,134,124,83,254,122,219,51,237,254,44,252,172,252,154,190,157,1,83,136,120,3,150,0,116,170,1,100,50,189,37,102,50,68,174,99,172,154,235,152,221,154,57,239,121,108,0,72,16,35,68,32,100,50,121,134,125,205,119,170,67,205,106,255,105,170,239,35,253,56,71,0,230,100,1,67,151,143,36,136,18,34,151,114,86,48,171,71,218,206,115,173,18,168,54,205,35},
-  {172,205,88,188,102,223,119,237,104,1,100,169,236,171,239,154,52,154,50,167,54,102,18,102,168,53,170,56,156,51,168,64,150,140,85,255,123,235,85,253,254,60,252,172,252,170,191,172,17,84,136,121,20,150,0,118,170,1,102,67,188,53,102,67,102,190,100,172,171,251,152,237,155,74,255,121,108,0,105,16,52,102,49,102,67,122,134,141,205,119,170,101,204,107,255,106,170,255,36,254,88,103,0,246,102,2,100,167,159,54,153,19,50,152,115,86,64,187,103,202,206,116,172,35,169,70,204,52},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,1,49,1,0,0,0,0,0,34,65,0,0,0,0,0,16,49,68,2,0,0,0,0,0,80,5,0,0,0,0,0,0,80,86,6,0,0,0,0,96,85,102,0,0,0,0,0,0,86,6,0,0,0,0,0,0,80,6,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,0,0,0,0,0,0,167,121,6,0,0,0,0,96,198,139,8,0,0,0,0,48,115,136,0,0,0,0,0,0,38,5,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,32,1,1,17,0,0,0,0,0,2,36,0,0,0,0,0,0,32,37,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,112,65,0,0,50,48,2,0,69,3,0,0,68,48,3,80,3,0,0,0,80,117,0,69,49,0,0,64,115,0,7,6,3,0,0,32,3,0,112,50,0,0,0,0,0,0,96,68,0,0,0,0,0,0,80,0,0,0,0,0,0,0,96,7,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,112,7,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,12,0,0,0,0,0,64,222,226,0,0,0,0,0,44,44,254,5,0,0,0,0,255,35,94,15,0,0,0,0,16,236,194,0,0,0,0,0,0,175,44,0,0,0,0,0,0,96,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,176,0,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,32,33,3,0,0,0,0,0,48,84,16,2,0,0,0,32,1,19,65,3,0,0,0,16,4,54,82,0,0,0,0,0,70,5,4,33,0,0,0,0,16,82,4,52,0,0,0,0,16,67,68,0,0,0,0,0,0,64,5,0,0,0,0,0,0,64,0,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,8,0,0,0,0,0,0,155,11,0,0,0,0,0,0,141,13,0,0,0,0,0,0,192,0,0,0,0,0,0,80,64,16,0,0,0,0,0,69,112,16,5,0,0,0,0,23,71,32,7,0,0,0,0,23,71,55,7,0,0,0,0,80,81,103,0,0,0,0,0,112,84,70,0,0,0,0,0,0,23,22,0,0,0,0,0,0,71,22,0,0,0,0,0,0,112,0,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,0,0,0,0,0,0,38,6,0,0,0,0,0,0,71,7,0,0,0,0,0,0,128,0,0,0,0,0,0,3,240,192,0,0,0,0,0,60,176,176,12,0,0,0,0,158,224,48,14,0,0,0,0,174,236,190,14,0,0,0,0,222,206,195,14,0,0,0,0,176,205,235,0,0,0,0,0,48,61,14,0,0,0,0,0,48,189,14,0,0,0,0,0,0,224,0,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,18,2,0,0,0,0,0,0,35,3,0,0,0,0,0,0,64,0,0,0,0,0,0,144,192,0,80,0,0,0,0,89,128,0,150,0,0,0,0,91,176,96,186,0,0,0,0,139,139,112,11,0,0,0,0,155,149,171,11,0,0,0,0,176,152,138,0,0,0,0,0,0,91,90,0,0,0,0,0,0,139,10,0,0,0,0,0,0,176,0,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,18,2,0,0,0,0,0,0,35,3,0,0,0,0,0,0,48,0,0,0,0,0,128,4,176,128,0,0,0,0,0,149,64,64,8,0,0,0,0,89,64,64,10,0,0,0,0,106,112,122,10,0,0,0,0,138,138,164,0,0,0,0,0,112,132,167,0,0,0,0,0,160,73,10,0,0,0,0,0,0,122,10,0,0,0,0,0,0,160,0,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,16,19,19,0,0,0,0,0,32,84,52,0,0,0,0,0,17,85,21,1,0,0,0,0,48,84,36,0,0,0,0,0,16,19,19,0,0,0,0,0,0,16,7,0,0,0,0,0,0,96,10,0,0,0,0,0,0,112,0,0,0,0,0,0,160,135,0,0,0,0,0,0,0,138,160,0,0,0,0,0,0,96,10,0,0,0,0,0,0,112,10,0,0,0,0,0,0,144,0,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,33,0,0,0,0,0,16,33,34,3,0,0,0,0,32,34,50,3,0,0,0,0,32,51,51,3,0,0,0,0,0,64,5,0,0,0,0,0,0,64,5,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,150,0,0,0,0,0,96,145,121,8,0,0,0,0,150,153,41,136,0,0,0,0,146,39,135,56,0,0,0,0,112,136,136,8,0,0,0,0,0,64,5,0,0,0},
-  {255,255,223,221,238,204,172,218,44,131,51,51,51,51,136,216,12,0,64,68,51,100,151,233,12,0,64,68,51,118,119,217,76,64,101,70,52,118,151,217,60,148,121,103,102,102,118,215,60,116,151,119,102,85,117,217,29,115,153,153,153,89,149,217,28,113,146,153,153,153,153,233,44,112,17,51,51,68,68,214,12,0,32,18,17,17,49,248,12,0,0,0,34,49,168,250,12,0,0,32,34,168,186,251,28,17,17,17,51,170,187,251,76,132,136,136,136,186,238,254,187,187,187,235,190,238,238,238},
-  {252,223,188,187,187,235,238,222,75,52,35,51,68,68,68,212,75,68,68,68,68,68,68,212,126,136,136,104,102,150,153,249,27,34,18,34,66,68,68,196,75,68,68,68,68,68,68,196,142,136,136,102,102,153,153,249,27,50,51,51,68,68,68,212,75,68,68,68,68,68,68,212,126,136,102,118,103,153,153,248,11,0,0,48,51,67,68,212,75,68,68,68,68,68,68,212,142,136,136,85,102,153,153,249,11,33,0,16,66,68,68,212,75,68,68,68,68,68,68,228,220,237,238,238,221,221,255,255},
-  {101,102,86,68,71,101,102,86,21,0,0,0,2,0,19,97,53,34,35,34,32,17,1,81,5,17,49,1,17,34,34,82,5,32,34,34,34,0,0,112,38,17,33,34,49,17,34,83,4,17,33,0,17,17,0,112,21,33,34,34,50,34,34,81,5,48,32,17,1,0,0,64,37,34,34,18,19,33,34,80,21,32,2,32,35,0,16,81,23,17,18,17,0,17,1,112,37,34,34,34,0,34,34,82,5,2,19,33,34,35,17,64,21,33,34,34,17,0,33,82,102,102,71,84,85,101,102,85},
-  {33,34,18,0,3,33,34,82,81,68,68,68,70,68,87,165,113,102,103,102,100,85,69,149,65,85,117,69,85,102,102,150,65,100,102,102,102,68,68,180,98,85,101,102,117,85,102,151,64,85,101,68,85,85,68,180,149,169,170,170,186,170,170,153,1,48,32,17,1,0,0,64,97,102,102,86,87,101,102,148,81,100,70,100,103,68,84,149,83,85,86,85,68,85,69,180,97,102,102,102,68,102,102,150,65,70,87,101,102,103,85,132,81,101,102,102,85,68,101,150,166,170,139,152,153,169,170,153},
-  {152,40,136,121,120,26,120,136,221,11,215,254,237,27,200,205,173,31,200,237,221,29,155,173,51,5,68,84,52,4,68,53,138,136,152,24,119,135,136,24,216,216,223,29,216,222,223,13,248,234,253,13,231,235,221,29,68,84,52,4,68,69,68,4,135,24,137,119,135,24,136,199,221,45,217,221,171,45,168,221,218,10,216,223,191,29,216,219,68,5,68,68,68,5,52,69,120,135,136,41,121,136,137,8,216,221,221,47,216,221,205,28,248,219,221,29,216,221,219,28,68,53,52,4,67,69,67,36},
-  {0,0,1,16,17,1,34,194,48,51,54,51,72,100,68,197,97,102,99,68,52,68,132,235,128,52,68,102,102,70,52,218,97,102,102,51,51,131,52,231,97,102,132,68,102,72,102,203,146,118,170,170,119,202,122,201,238,238,238,238,239,204,204,237,1,0,0,209,0,32,0,1,102,132,68,234,49,68,102,102,51,134,54,199,64,68,52,102,68,52,67,218,48,136,68,100,102,54,99,235,97,68,102,102,68,102,134,203,49,67,99,131,187,171,123,198,163,151,170,187,204,221,221,238,238,204,237,238},
-  {34,50,34,50,34,50,34,50,2,64,2,64,2,64,2,64,2,65,2,81,21,64,18,64,67,20,67,65,81,68,65,68,34,50,33,49,33,85,33,50,2,64,82,69,1,17,5,64,2,17,2,21,21,21,81,64,67,68,81,85,85,65,83,68,34,50,34,85,21,18,81,50,2,17,85,85,85,64,21,64,2,64,82,85,5,65,5,64,67,68,69,69,21,84,65,68,34,18,34,49,81,21,33,50,2,65,2,64,18,64,18,64,2,64,2,64,2,64,2,64,67,68,67,68,67,68,67,68},
-  {67,167,67,167,67,167,67,167,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,0,16,0,0,1,16,1,16,1,255,31,31,240,241,255,16,17,241,17,255,241,17,31,17,17,241,17,31,255,17,31,17,33,242,33,31,241,17,47,18,34,33,18,34,18,34,33,34,183,237,183,237,183,237,183,237,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,99,201,133,203,133,203,133,203,133,203},
-  {17,33,17,33,17,33,17,33,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,50,51,50,51,50,51,50,51,17,33,17,33,17,33,17,33,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,50,51,50,51,50,51,50,51,17,33,17,33,17,33,17,33,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,50,51,50,51,50,51,50,51,17,33,17,33,17,33,17,33,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,50,51,50,51,50,51,50,51},
-  {0,0,0,48,51,6,0,48,240,255,255,84,255,255,255,63,176,252,136,84,238,78,229,62,9,115,136,84,203,78,117,103,176,124,136,221,203,78,5,3,179,124,136,221,190,76,117,55,176,124,136,84,190,76,117,7,102,153,153,105,102,153,153,102,48,51,3,0,51,99,48,51,243,255,255,255,255,255,136,63,240,238,203,238,30,244,136,62,166,170,203,238,5,195,136,103,160,170,203,232,5,195,136,7,160,170,203,88,30,196,136,7,160,170,203,88,30,196,136,7,102,102,153,150,102,150,158,105},
-  {17,33,82,169,23,17,117,65,17,87,173,136,90,84,228,39,90,229,138,129,253,84,174,74,184,174,144,82,173,222,26,160,17,167,65,212,138,130,90,113,71,165,72,229,8,133,119,238,85,168,233,157,137,130,87,120,85,174,24,170,186,77,213,9,245,10,136,24,129,185,222,16,116,17,232,113,128,164,7,85,135,85,213,33,133,212,121,66,170,88,215,85,82,174,168,218,17,238,238,89,235,33,88,170,80,8,8,218,9,82,82,212,69,46,84,165,170,69,36,237,85,167,255,174,88,167,187,126},
-  {102,166,106,169,214,137,100,109,106,221,125,104,15,102,244,96,214,0,160,219,32,179,15,82,220,34,122,7,34,106,159,86,235,82,119,107,187,216,82,85,102,215,222,223,182,109,101,171,118,83,0,0,251,176,239,173,100,190,38,50,227,242,1,66,218,32,89,34,165,244,34,58,107,70,101,38,185,219,178,102,103,149,106,133,214,74,214,102,212,109,170,166,13,89,15,98,6,32,185,184,14,98,117,170,100,34,244,98,45,34,85,53,101,38,101,156,45,34,82,201,166,134,85,102,53,87,102,73},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,3,0,0,0,0,0,0,16,1,0,0,0,0,0,0,128,10,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,11,0,0,0,0,0,0,64,12,0,0,0,0,0,0,96,14,0,0,0,0,0,0,144,13,0,0,0,0,0,0,80,14,0,0,0,0,0,0,144,15,0,0,0},
-  {92,92,106,226,88,92,36,197,5,5,80,0,0,5,80,144,95,92,72,88,89,127,197,206,5,5,32,0,0,2,80,48,5,5,80,0,0,5,80,224,92,76,101,85,53,44,197,197,5,14,128,0,0,5,224,80,5,5,80,0,0,5,48,144,2,5,80,0,0,5,80,80,5,5,32,0,0,9,144,80,95,95,213,90,113,92,202,241,10,4,16,0,0,5,80,80,5,5,80,0,0,5,80,80,140,92,197,85,53,155,245,197,14,2,80,0,0,4,160,80,92,92,101,85,84,95,101,101},
-  {0,0,0,0,0,0,0,0,240,238,174,202,174,170,170,15,160,120,119,153,153,121,137,14,208,55,51,51,51,68,116,12,160,105,22,97,97,54,114,10,224,41,34,97,34,34,150,14,160,37,17,97,102,19,81,10,192,71,68,52,51,68,116,12,160,21,49,22,33,34,81,14,224,105,22,34,102,54,145,14,160,39,17,102,102,34,114,14,192,55,68,52,51,51,116,12,160,21,97,97,102,102,82,10,160,152,89,149,85,121,133,10,240,188,221,219,204,220,222,14,0,0,0,0,0,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,204,188,187,188,187,187,13,176,102,102,34,17,33,19,14,192,51,51,51,51,51,51,14,176,136,72,132,132,120,119,14,192,221,221,221,221,221,221,15,176,153,153,169,170,153,153,14,192,119,119,119,119,119,135,14,176,17,49,22,33,34,65,14,192,102,22,34,102,54,129,14,176,34,17,102,102,34,114,14,192,51,51,51,51,51,115,14,176,17,97,97,102,102,66,14,176,136,72,132,68,120,116,14,224,238,238,238,238,238,239,15},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,204,204,204,204,204,204,13,192,114,119,148,40,66,36,14,192,68,68,186,171,68,68,14,192,153,89,26,177,137,136,14,192,221,221,30,225,221,221,15,192,153,153,27,211,154,153,14,192,136,136,26,163,136,152,14,192,34,66,39,66,68,82,14,192,119,39,68,119,71,146,14,192,68,34,119,119,68,132,14,192,68,68,68,68,68,132,14,192,34,114,114,119,119,84,14,192,149,89,149,85,137,149,14,224,238,238,238,238,238,239,15},
-  {101,102,86,68,71,101,102,86,85,68,68,68,70,68,87,101,117,102,98,102,100,85,33,85,69,85,117,21,83,102,102,86,69,100,102,102,102,68,68,116,102,85,5,97,117,16,102,87,68,5,33,50,85,50,68,116,85,101,102,102,118,102,102,85,21,114,100,85,16,68,68,68,101,102,102,22,51,99,102,84,85,100,66,100,103,68,84,85,87,85,86,85,68,21,67,116,101,102,102,102,1,33,50,86,69,22,83,101,54,99,85,68,85,101,102,102,85,68,101,86,102,102,71,84,85,101,102,85},
-  {255,255,255,238,254,221,204,236,174,170,103,119,136,119,152,233,94,85,84,85,102,101,169,235,77,84,69,50,100,119,136,232,61,69,54,68,68,135,153,233,45,164,122,103,102,102,134,232,77,118,151,119,102,103,134,234,45,117,170,170,170,137,151,234,61,113,161,170,170,170,186,251,61,112,51,52,51,34,83,231,13,0,16,0,17,18,98,250,13,0,0,0,33,98,186,252,13,17,0,16,83,185,220,253,13,67,17,33,149,203,204,252,61,133,103,135,169,203,237,254,238,238,238,237,222,221,237,254},
-  {221,223,221,255,223,253,220,204,13,176,17,17,18,17,11,208,15,59,67,67,50,51,179,208,189,131,121,119,153,135,55,251,30,115,69,24,145,21,55,209,31,116,49,90,147,85,72,209,31,115,152,119,121,169,56,241,31,99,49,23,113,35,55,193,29,117,49,23,113,19,71,209,29,149,152,119,121,137,55,209,29,147,53,57,165,19,55,209,31,115,21,24,129,21,39,209,191,99,151,119,119,118,55,251,15,59,50,51,52,51,178,240,14,176,17,34,17,18,11,208,205,207,173,170,170,218,255,223},
-  {62,51,163,147,57,26,17,225,30,82,34,156,201,35,35,225,30,51,54,178,26,33,21,225,126,135,88,229,94,121,119,229,62,99,19,193,58,86,34,226,62,197,194,193,43,36,51,227,30,193,197,197,60,24,17,225,94,119,112,231,94,151,119,229,30,1,5,167,42,34,17,225,62,3,7,181,60,83,49,227,46,34,17,211,60,34,36,226,126,85,119,247,94,85,121,231,30,65,49,209,60,51,84,225,62,69,17,193,42,50,51,227,30,99,19,193,26,35,17,225,94,85,119,229,94,117,120,231},
-  {62,51,179,148,74,27,17,225,30,98,34,171,186,35,35,225,30,51,55,178,27,33,22,225,142,152,105,214,109,202,204,230,62,115,19,177,59,199,199,231,62,198,34,177,43,197,204,232,30,193,17,177,59,9,0,230,110,200,136,216,109,8,0,233,30,193,96,179,43,114,0,230,62,0,96,178,59,99,0,232,46,119,96,211,59,34,0,231,142,102,170,248,109,102,11,234,30,65,49,209,59,51,5,230,62,70,17,177,43,50,131,232,30,115,19,177,27,35,17,225,109,86,136,229,109,134,137,216},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,80,0,0,0,0,0,3,0,16,6,32,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,232,0,0,0,0,0,0,0,32,0,0,0,0,112,0,0,96,11,0,4,0,0,3,0,96,14,32,208,0,0,177,12,160,95,160,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,244,0,0,0,0,16,0,0,16,0,0,0,0,16,7,0,48,11,0,4,0,0,1,16,48,12,64,192,0,0,122,4,103,140,96,0,0,0,243,218,80,110,174,0,0,8,213,249,80,159,94,176,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,166,0,0,0,0,96,0,0,80,0,0,6,0,128,12,80,32,10,0,181,0,0,6,128,42,12,96,160,0,0,179,5,46,188,32,0,0,0,226,163,16,60,63,0,6,6,178,231,16,119,46,128,192,178,196,244,64,77,63,112,15,199,244,228,64,159,157,144,15},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,179,0,0,0,0,48,0,0,64,0,0,3,0,48,7,64,80,11,0,115,0,0,3,48,27,12,64,112,0,0,161,4,26,74,16,0,0,0,161,177,96,27,27,0,3,4,161,185,96,93,90,64,32,193,165,229,96,93,92,80,13,165,149,198,128,94,109,128,13,200,216,214,128,111,141,96,15,232,248,216,128,159,142,128,14},
-  {0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,162,0,0,0,0,48,0,0,96,0,0,2,0,32,11,96,48,13,0,162,0,0,2,32,107,11,48,0,0,0,163,2,39,43,96,0,0,0,178,114,64,106,42,0,3,2,162,161,16,109,43,96,160,163,164,113,16,23,43,32,11,179,196,152,64,73,71,64,10,164,148,244,80,93,77,64,12,213,213,197,128,142,78,128,9,232,232,232,128,142,94,128,14,232,248,249,144,159,143,80,14},
-  {0,0,0,1,0,0,0,0,0,0,0,179,0,0,0,0,0,0,0,165,0,0,0,0,64,0,0,64,0,0,4,0,16,14,16,32,11,0,180,0,0,4,64,59,7,112,176,0,0,179,1,59,26,48,0,0,0,194,115,48,60,55,0,1,1,115,197,48,58,58,112,176,179,166,211,80,60,60,48,14,163,227,197,80,93,60,48,10,195,213,214,96,93,110,48,12,165,214,229,128,142,142,128,12,230,232,214,128,223,143,128,15,233,249,249,160,159,159,128,15,249,248,248,144,223,143,144,15},
-  {0,0,0,7,0,0,0,0,96,0,0,246,0,0,6,0,96,13,0,96,0,0,214,0,0,6,96,32,13,96,208,0,0,161,96,45,107,32,0,6,10,130,6,58,107,29,0,246,246,177,210,64,28,77,96,208,162,129,177,48,46,27,32,13,177,129,131,32,28,75,64,11,131,131,193,48,75,72,80,14,194,197,129,64,76,62,32,14,179,228,131,112,76,126,48,11,197,231,199,112,127,126,112,12,229,244,231,112,159,158,144,14,231,201,247,144,159,159,112,15,249,247,249,144,175,127,160,15},
-  {80,0,85,0,101,80,1,5,101,17,81,6,101,81,85,6,96,0,81,22,97,80,85,21,81,48,81,5,97,17,85,6,81,17,85,16,97,48,81,6,85,80,85,6,85,96,81,0,16,16,101,22,101,16,81,16,96,17,101,6,101,17,85,16,97,17,85,6,101,80,101,81,97,80,21,5,81,80,101,16,81,0,81,22,81,6,5,82,81,5,81,21,19,6,5,101,101,5,81,6,85,21,5,0,21,21,84,5,80,22,101,17,81,6,80,86,80,22,101,16,17,6,17,5,81,5,81,96},
-  {96,0,136,33,217,129,4,7,214,67,148,46,234,148,136,13,208,33,164,110,230,162,153,56,131,81,182,59,230,102,154,29,131,100,187,115,247,83,166,30,135,178,203,79,204,244,182,18,65,98,251,175,253,116,182,66,209,102,251,111,253,121,187,66,212,102,203,79,253,196,235,150,212,178,123,76,201,196,235,66,131,34,182,127,199,63,43,133,131,40,182,107,101,62,42,216,214,40,164,62,187,107,41,1,54,71,154,41,162,78,216,51,99,13,129,157,146,77,216,48,50,13,51,23,132,7,99,192},
-  {204,220,237,238,207,204,254,220,108,137,171,68,139,135,186,218,174,163,8,48,167,34,56,219,190,88,112,17,88,153,22,230,76,99,48,147,22,0,20,245,158,82,35,147,0,35,99,252,141,82,148,54,21,32,18,248,142,121,1,118,150,57,145,202,190,21,80,5,32,116,184,195,174,0,146,80,32,98,6,219,190,52,163,32,51,146,102,230,76,49,148,51,50,121,97,245,158,153,153,53,152,16,51,252,141,4,1,150,5,49,50,248,108,137,171,68,139,135,186,218,204,220,237,238,207,204,254,220},
-  {220,221,238,255,207,220,255,221,140,154,171,136,155,153,202,218,191,183,73,100,185,85,122,235,191,138,147,68,138,170,72,248,140,135,100,166,72,51,71,248,175,133,102,167,51,86,150,252,157,133,167,105,88,84,69,249,174,154,68,152,168,106,164,203,206,71,114,55,67,134,168,199,75,0,0,0,0,0,0,196,107,17,17,17,18,17,19,230,91,17,49,17,17,34,34,215,91,33,34,34,34,17,17,245,123,17,33,34,49,17,34,216,91,102,118,85,102,102,85,245,220,237,238,238,254,238,238,221},
-  {169,170,187,187,157,169,203,170,73,86,104,68,87,85,134,167,124,115,37,50,117,34,53,183,123,70,212,170,205,141,36,196,73,115,250,255,255,175,39,212,107,194,255,255,255,255,81,217,90,194,239,238,238,254,33,213,107,214,4,17,17,65,97,151,139,35,118,103,118,119,99,147,40,0,0,0,0,0,0,146,56,17,33,136,137,18,17,179,40,49,153,255,255,153,19,163,40,146,255,255,255,255,24,178,56,249,238,238,238,238,15,164,39,233,220,204,204,204,14,178,89,202,204,204,220,204,28,165},
-  {203,204,220,221,190,203,221,203,107,119,154,102,121,119,169,201,157,149,71,84,151,85,87,201,157,103,214,204,222,174,70,214,107,149,252,255,255,191,73,230,157,213,255,255,255,255,99,235,124,213,255,238,238,254,67,231,125,215,54,51,51,99,147,185,173,85,71,68,68,148,117,181,73,3,0,0,0,0,48,164,89,0,0,170,171,0,48,197,57,0,186,136,136,187,0,195,52,176,136,130,130,136,10,211,4,138,34,130,34,136,8,195,4,42,34,34,34,34,2,211,5,140,130,34,40,34,8,196},
-  {115,123,71,20,75,68,20,212,64,70,17,34,39,18,18,212,64,119,119,102,68,100,73,212,162,204,204,156,204,204,172,233,112,123,71,36,120,151,22,214,112,108,102,36,104,102,39,215,64,104,68,36,123,73,20,212,146,90,85,69,73,85,85,233,64,68,148,71,100,102,68,212,112,187,139,104,187,203,120,215,111,104,68,39,123,102,22,214,163,156,170,74,156,153,90,234,64,72,116,36,123,119,70,212,112,25,17,33,20,33,34,215,64,119,71,116,68,103,68,212,233,238,255,254,238,254,255,239},
-  {33,34,18,17,18,17,17,129,81,183,119,136,136,120,120,213,81,204,204,122,170,170,93,213,180,14,0,64,13,0,96,251,207,12,0,48,10,0,32,215,137,13,0,48,10,0,48,216,81,85,34,50,136,67,34,213,179,238,238,190,221,237,190,251,81,10,0,32,10,0,32,213,130,12,0,32,12,0,48,216,113,10,0,48,12,0,32,215,179,75,102,70,75,68,102,251,81,37,50,50,56,51,66,213,129,173,170,138,170,202,140,216,81,140,88,53,90,248,255,221,191,173,187,106,189,251,111,255},
-  {0,131,0,0,0,0,81,0,32,178,51,34,17,33,115,2,96,131,102,102,102,153,86,6,0,185,0,0,0,0,201,0,0,131,0,0,0,0,114,0,32,118,17,49,51,22,131,2,96,113,153,105,102,153,81,6,0,201,0,0,0,0,201,0,0,81,0,0,0,0,81,0,32,131,17,51,51,34,129,2,96,114,153,105,102,102,114,6,0,182,0,0,0,0,201,0,0,81,0,0,0,0,178,0,32,86,19,49,17,35,131,2,96,131,153,148,102,150,81,6,0,166,0,0,0,0,205,0},
-  {0,97,0,0,0,0,22,0,112,97,140,51,34,149,22,7,208,97,222,187,187,254,22,13,0,97,0,0,0,0,22,0,0,97,0,0,0,0,22,0,112,97,89,66,68,155,22,7,208,97,239,188,187,252,22,13,0,97,0,0,0,0,22,0,0,97,0,0,0,0,22,0,112,97,89,68,68,147,22,7,208,97,239,188,187,235,22,13,0,97,0,0,0,0,22,0,0,97,0,0,0,0,22,0,112,97,92,66,34,148,22,7,208,97,239,202,187,251,22,13,0,97,0,0,0,0,22,0},
-  {33,34,18,0,3,33,34,18,17,0,0,0,2,0,19,33,49,34,38,34,32,17,104,17,1,17,49,129,23,34,34,18,1,32,34,34,34,0,0,48,34,17,129,37,49,88,34,19,0,65,101,118,17,118,0,48,17,33,34,34,50,34,34,17,129,54,32,17,88,0,0,0,33,34,34,82,119,39,34,16,17,32,6,32,35,0,16,17,19,17,18,17,0,129,7,48,33,34,34,34,133,101,118,18,1,130,23,33,114,39,17,0,17,33,34,34,17,0,33,18,34,34,3,16,17,33,34,17},
-  {0,32,0,2,0,34,51,0,0,32,34,50,3,34,3,48,2,50,35,50,32,50,0,34,48,51,0,3,32,50,0,50,0,34,2,3,34,3,32,50,34,34,3,0,35,51,34,50,48,51,32,3,51,3,34,51,0,34,34,50,0,51,32,50,32,34,51,51,17,49,0,50,34,2,0,32,34,50,48,51,0,48,34,34,34,3,32,50,48,35,34,51,51,3,34,51,2,50,51,2,0,50,51,51,34,50,34,50,32,50,0,34,32,48,51,3,0,0,32,50,0,32,50,51,51,2,35,3},
-  {34,34,34,34,34,34,34,34,34,34,34,18,34,34,34,34,34,2,34,33,34,34,34,34,34,32,34,34,34,34,34,33,2,34,34,34,2,34,18,34,34,34,34,34,32,34,33,34,34,34,34,18,34,34,34,34,34,33,34,33,34,34,34,34,18,34,34,34,34,34,34,34,34,34,34,34,32,34,34,34,34,34,34,2,34,34,2,34,34,34,34,33,34,34,32,34,18,34,34,34,34,2,34,34,33,34,34,34,34,33,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34},
-  {0,0,0,0,0,0,0,0,192,252,206,254,204,252,206,12,192,213,150,216,98,180,101,12,240,29,86,251,107,251,107,12,224,101,59,179,100,180,100,12,192,182,191,104,121,84,212,15,224,26,70,101,251,104,102,12,240,125,27,100,180,86,107,14,192,180,191,184,103,182,191,15,192,100,91,251,107,87,107,12,240,109,117,70,183,184,100,12,192,100,179,86,251,251,107,15,192,99,251,86,180,182,82,12,192,109,179,173,211,86,221,12,192,239,204,207,254,204,239,12,0,0,0,0,0,0,0,0},
-  {208,68,65,162,93,53,67,10,208,70,24,252,141,21,67,10,255,105,23,234,141,53,179,255,224,106,55,168,207,21,113,10,208,71,53,164,174,20,129,10,208,73,85,165,141,36,115,10,255,120,100,165,141,99,195,255,208,129,132,161,207,115,163,14,208,113,116,164,174,130,116,10,208,129,37,252,141,114,114,10,223,115,36,234,109,113,193,255,208,115,21,167,109,129,161,14,255,137,21,168,191,129,118,250,224,105,52,167,158,133,18,10,208,21,55,251,93,129,131,10,208,53,72,233,77,133,100,10},
-  {0,0,0,0,0,0,0,0,240,255,255,255,255,255,255,15,240,152,136,136,137,88,131,15,240,229,203,206,204,204,106,15,240,168,37,34,37,53,140,15,240,231,130,133,133,37,140,15,240,232,130,172,204,88,142,15,240,200,83,62,194,88,140,15,240,168,130,60,178,40,94,15,240,201,133,204,204,53,140,15,240,199,114,133,136,37,138,15,240,200,49,69,18,50,108,15,240,232,172,204,205,170,122,15,240,136,136,133,152,136,136,15,240,255,255,255,255,255,255,15,0,0,0,0,0,0,0,0},
-  {63,86,90,123,51,152,188,125,115,36,190,188,46,96,123,25,18,144,153,85,54,18,206,11,157,56,60,204,171,55,117,229,161,161,17,18,210,43,232,211,61,12,27,67,9,230,204,229,79,93,62,184,153,1,38,131,149,114,197,1,195,185,67,43,67,33,180,65,0,110,105,91,254,114,103,178,101,22,69,30,67,47,30,105,0,161,149,90,45,209,147,150,99,7,187,252,49,27,195,243,110,200,36,156,32,253,188,11,4,50,147,130,130,201,132,54,63,159,210,76,25,233,48,30,5,188,89,233},
-  {16,4,32,6,32,6,32,6,96,7,32,6,32,6,16,4,32,54,32,6,32,86,96,7,32,86,32,54,32,6,32,6,32,6,16,84,32,6,32,6,32,6,96,7,16,4,32,6,32,6,32,6,96,7,32,54,32,6,32,6,32,6,32,86,19,4,32,6,32,6,32,6,101,7,32,6,32,6,16,4,32,6,21,4,35,6,96,7,32,6,96,7,37,6,32,6,32,6,32,6,32,6,32,6,32,6,32,6,16,4,37,6,32,6,32,6,96,7,32,6,32,6,32,6,32,6,32,6},
-  {85,51,53,83,53,51,53,85,5,5,50,53,82,34,50,85,3,80,34,5,82,34,80,51,35,34,37,37,82,50,53,50,53,34,51,37,35,82,2,83,85,85,82,102,34,37,83,85,35,34,101,65,86,50,37,51,53,35,98,20,100,85,34,48,83,85,85,70,81,50,85,85,3,34,34,101,85,82,50,51,37,83,85,80,82,48,37,48,85,35,82,82,50,35,53,82,51,35,82,82,32,37,82,50,35,32,53,83,32,83,34,53,37,50,37,83,35,82,35,82,85,53,53,85,51,85,51,85},
-  {51,50,35,50,35,51,34,51,3,49,18,33,19,49,18,49,35,49,19,17,3,49,17,49,35,33,19,2,3,49,16,50,35,33,3,18,19,50,16,50,3,33,3,17,19,50,16,50,3,17,3,17,19,50,18,51,19,17,19,17,19,49,18,51,19,17,35,33,19,33,19,50,35,17,35,33,19,17,19,50,35,17,35,49,19,17,19,50,51,17,3,49,18,18,3,49,51,17,3,49,18,17,3,49,51,33,19,49,18,33,3,49,35,33,19,49,3,49,19,49,51,34,51,50,35,51,34,51},
-  {51,50,35,50,35,51,34,51,3,49,18,33,19,49,18,49,35,49,85,17,3,53,17,49,35,49,69,5,83,85,19,50,35,83,68,52,83,68,53,50,3,83,68,52,83,68,52,50,3,83,68,52,83,68,68,51,19,49,68,51,51,68,68,51,19,17,51,35,51,51,51,50,35,83,83,51,53,83,83,50,35,85,85,84,69,85,84,51,51,69,68,68,68,68,68,52,51,83,52,68,67,68,67,52,51,83,19,52,19,65,3,51,35,33,19,49,3,49,19,49,51,34,51,50,35,51,34,51},
-  {238,237,59,237,222,235,221,238,158,188,17,211,62,177,205,236,222,108,255,49,11,111,195,236,222,179,175,15,246,255,54,237,222,246,170,104,246,168,111,237,158,254,138,231,246,135,106,227,158,254,120,229,246,117,168,230,206,236,87,190,235,85,135,238,206,19,107,219,182,107,107,227,62,246,246,102,111,246,246,225,30,255,255,242,47,255,245,230,238,127,85,34,34,82,117,104,238,251,181,34,43,82,126,104,238,254,203,181,206,83,158,238,222,220,206,236,158,236,206,236,238,221,238,237,222,238,221,238},
-  {0,51,119,7,0,0,114,231,32,34,42,34,72,100,68,187,98,106,98,68,37,68,164,253,128,42,84,119,103,70,202,187,96,102,119,34,34,130,203,232,160,102,132,68,102,72,107,233,130,134,221,157,170,232,137,232,238,238,255,223,239,235,190,187,160,123,221,234,112,32,51,3,102,173,170,233,32,170,102,102,34,166,38,234,64,180,221,102,68,84,66,233,32,136,164,100,102,87,101,233,96,68,102,106,68,118,118,185,32,66,98,130,153,153,137,182,151,134,153,153,238,239,238,190,238,238,255,238},
-  {0,0,2,136,17,1,34,194,48,51,151,201,91,117,85,198,114,119,169,18,148,90,181,236,171,149,170,113,119,167,74,212,33,170,17,51,51,179,49,232,113,26,133,85,119,168,119,202,229,43,233,238,131,236,130,200,254,239,238,238,239,204,204,237,129,0,0,208,12,144,8,2,167,129,85,233,48,26,113,119,51,186,55,200,160,90,53,119,85,145,83,217,152,178,85,117,119,151,115,234,17,85,122,119,85,167,135,202,49,83,163,137,186,203,44,199,147,135,153,204,204,253,223,238,238,204,237,254},
-  {32,0,3,50,51,19,68,196,80,85,166,136,168,90,85,198,99,238,238,238,238,238,138,231,130,14,34,2,82,0,76,199,163,14,88,101,134,168,76,230,131,62,153,170,119,133,15,200,164,46,165,238,62,165,15,198,130,62,169,206,30,168,15,230,164,62,102,238,62,165,79,198,163,62,105,18,50,168,47,231,130,14,104,133,133,168,47,198,128,14,138,168,170,170,79,199,99,234,255,255,255,255,47,232,83,37,82,0,36,37,82,200,116,102,119,136,136,120,104,182,222,203,236,238,204,204,204,238},
-  {27,23,64,198,23,183,200,28,140,73,239,166,59,43,182,40,58,226,30,56,168,99,150,54,104,232,1,76,139,197,223,17,39,228,36,168,120,225,238,194,140,17,76,55,151,253,17,141,187,154,79,170,138,31,16,193,97,251,15,21,187,238,192,203,118,230,15,156,19,246,178,185,57,238,128,44,34,39,123,114,156,30,81,4,238,180,11,42,183,15,98,228,13,72,162,199,121,31,184,239,29,120,212,199,91,85,195,238,1,167,118,82,98,26,121,45,96,153,124,114,20,22,81,203,199,166,100,38},
-  {96,1,48,0,103,8,227,6,224,0,0,112,14,6,0,0,0,10,230,128,0,14,14,0,3,11,14,96,0,6,0,224,229,1,0,129,226,5,224,0,209,113,96,94,4,230,0,128,6,224,192,6,14,0,0,32,4,64,14,14,0,224,7,46,6,14,0,6,14,0,65,0,14,128,3,94,5,0,228,0,0,80,232,160,208,14,5,0,0,128,0,0,208,0,1,14,224,112,4,94,144,0,197,0,48,29,14,32,190,232,5,0,224,0,4,224,96,0,9,128,109,0,110,6,230,8,104,14},
-  {89,2,45,160,86,6,2,5,124,240,12,106,208,5,9,9,142,167,5,109,224,6,9,9,146,183,0,93,224,5,13,10,164,98,0,98,161,4,13,14,130,98,80,70,211,5,13,107,5,41,112,229,224,128,15,29,3,61,208,160,224,144,6,28,5,12,160,181,165,224,50,12,5,105,2,74,244,160,3,10,9,75,6,126,141,176,4,10,13,108,0,10,143,208,2,14,14,111,3,79,124,224,116,11,42,40,5,25,114,214,4,224,110,176,3,217,80,224,7,109,88,208,87,181,37,246,86,7},
-  {24,248,131,167,136,24,92,33,150,201,137,210,22,134,136,129,29,133,135,136,130,145,142,134,130,12,64,85,67,136,243,19,136,6,128,183,56,138,56,40,221,136,184,215,129,110,132,139,24,88,216,178,135,72,242,139,76,56,173,227,134,205,0,24,169,228,106,136,216,133,0,136,249,233,120,91,135,184,148,152,184,131,246,39,136,181,248,84,200,137,104,156,97,136,138,38,73,72,40,10,144,168,181,121,215,232,234,8,240,188,136,82,136,136,141,136,46,136,133,136,129,19,190,249,228,136,136,130},
-  {19,99,38,34,33,117,21,17,16,161,102,32,82,87,39,82,0,144,101,0,117,69,37,21,68,80,118,80,85,84,82,119,118,84,106,2,72,38,86,49,118,68,101,38,105,106,37,50,102,26,6,150,166,38,68,49,68,166,102,101,102,66,119,55,17,68,166,85,102,135,119,119,1,68,122,165,150,41,50,120,64,167,7,146,144,74,50,55,68,90,7,114,64,106,36,51,81,85,37,7,0,116,70,50,81,16,82,37,35,68,118,52,21,33,50,83,0,66,38,52,51,51,51,55,51,67,4,51},
-  {132,8,0,181,75,84,170,51,132,140,1,182,54,163,170,54,196,200,49,167,59,164,173,58,248,204,49,215,59,163,174,42,200,206,49,212,61,195,174,34,232,238,56,215,61,211,254,3,232,238,56,231,174,211,254,3,200,238,8,228,174,211,253,6,200,206,6,228,62,208,253,6,199,206,1,212,62,192,253,5,199,204,3,212,14,195,253,5,199,206,3,215,174,163,253,3,198,206,19,216,140,164,175,3,198,140,3,133,92,165,170,85,134,136,48,177,92,151,170,5,132,56,0,182,107,99,90,67},
-  {0,84,84,0,0,80,84,0,0,16,84,69,0,80,18,0,0,64,1,48,4,16,84,0,1,80,1,0,69,67,84,20,2,0,66,0,32,85,1,37,85,0,84,0,18,80,1,85,4,84,84,64,69,0,82,80,0,69,20,82,0,16,84,0,0,80,65,5,0,64,2,0,0,69,65,5,0,82,2,0,0,65,2,80,0,4,82,0,80,82,68,5,0,5,84,64,36,0,84,1,0,85,20,84,5,0,81,82,66,80,33,5,0,16,2,32,85,2,82,0,0,85,4,0,0,0,66,5},
-  {6,160,9,64,154,213,98,2,66,174,41,224,15,40,130,85,161,249,214,154,32,34,85,160,68,211,232,23,15,141,67,164,160,102,142,162,86,122,122,142,93,100,13,238,174,215,255,98,230,170,164,58,147,228,141,141,214,174,103,41,232,138,221,136,216,45,107,82,66,38,221,213,255,35,237,34,162,154,6,66,246,26,161,128,3,241,8,161,240,73,22,250,140,148,5,250,82,154,248,244,45,170,170,225,77,250,44,120,234,227,57,100,160,111,93,226,153,82,34,68,160,97,32,103,100,34,0,233},
-  {38,114,40,50,135,133,98,34,50,122,40,162,42,38,98,255,115,168,134,135,34,226,85,124,51,131,166,52,218,110,51,115,114,205,218,126,246,87,71,239,94,211,216,175,122,245,238,206,252,119,115,199,236,196,217,30,236,124,213,232,205,213,233,29,225,25,23,206,62,157,153,159,17,156,200,156,158,153,0,30,17,9,156,16,12,144,17,146,145,25,1,25,20,145,28,201,201,145,17,144,153,153,153,0,25,153,153,17,201,192,9,17,145,12,201,201,153,201,153,17,145,16,145,18,17,153,17,201},
-  {0,0,0,0,0,0,0,0,0,0,68,0,0,64,4,0,0,64,17,4,0,20,65,0,0,64,34,66,64,33,65,0,0,20,34,65,64,34,34,4,0,20,51,18,36,35,34,4,0,20,34,18,35,50,18,4,0,20,34,18,19,34,18,4,0,20,35,34,18,34,18,4,0,20,34,34,19,34,18,4,0,20,34,18,19,50,18,4,0,64,50,18,18,34,65,0,0,64,17,18,19,35,65,0,0,0,68,17,51,66,4,0,0,0,0,68,68,4,0,0,0,0,0,0,0,0,0,0},
-  {116,119,231,91,42,116,119,71,68,130,237,16,45,34,74,116,164,119,218,97,117,68,89,68,36,68,249,89,68,215,16,77,36,210,16,221,119,178,97,165,119,148,97,16,169,75,221,74,34,132,217,97,73,68,34,162,68,52,212,221,173,119,119,68,36,162,123,16,95,187,37,34,116,119,250,97,159,16,223,69,68,114,87,219,223,97,11,145,74,52,179,4,33,153,25,246,212,125,60,51,214,204,215,77,9,177,85,116,126,122,68,34,25,246,119,119,68,34,116,71,215,125,42,66,68,116,119,68},
-  {0,33,178,0,176,0,16,17,96,118,10,65,68,59,101,196,97,167,32,100,102,185,100,247,114,10,34,100,119,169,107,248,162,32,34,100,119,169,188,248,11,34,51,100,119,153,169,251,64,51,51,17,34,136,169,250,64,52,85,50,67,153,169,250,65,68,84,50,67,153,170,250,59,52,68,50,51,170,170,250,176,67,100,134,168,173,221,175,0,139,56,134,169,221,254,208,33,178,136,150,170,220,15,214,83,118,139,152,170,254,96,234,83,119,184,153,170,31,102,234,195,221,221,255,255,218,221,238},
-  {201,204,75,32,27,162,255,175,153,1,49,169,121,33,156,201,216,169,254,174,83,85,40,150,36,166,255,108,151,121,119,170,22,50,244,239,204,0,150,166,97,131,108,118,119,70,100,25,35,133,202,56,202,105,50,196,147,202,51,44,113,121,103,51,35,244,235,187,89,33,17,112,115,235,206,203,151,187,85,16,106,232,12,224,69,16,118,201,156,182,108,133,1,67,36,114,188,153,169,188,16,202,124,103,85,37,5,234,170,205,106,16,87,232,159,202,137,68,201,58,88,85,53,81,87,166,254,89},
-  {217,221,92,32,11,161,255,175,121,1,34,169,58,16,125,215,185,169,253,173,82,83,25,133,19,197,255,109,151,89,119,168,21,33,243,207,220,0,151,165,81,146,124,119,119,53,83,25,18,147,218,103,220,89,33,194,114,218,34,29,113,121,87,34,34,243,217,153,57,17,17,112,114,217,221,217,167,153,51,16,120,217,15,192,53,16,87,215,127,151,125,149,1,50,19,114,156,121,202,157,16,218,92,87,53,19,4,216,202,222,124,16,71,201,159,220,153,35,183,44,89,69,36,49,53,197,252,87},
-  {201,204,73,32,26,177,255,191,137,1,54,186,73,32,140,200,249,186,252,188,66,66,25,136,19,180,255,108,151,153,119,184,20,33,243,239,204,0,151,180,65,146,124,119,119,52,67,25,34,147,203,103,203,73,17,195,130,203,34,28,113,121,71,34,34,242,204,204,57,17,17,112,114,204,204,204,151,204,34,16,120,201,12,208,52,16,135,200,140,199,124,148,1,50,19,114,204,137,185,204,16,203,140,71,36,18,5,200,187,207,123,16,87,233,159,203,153,51,200,43,73,84,37,49,53,180,254,72},
-  {216,221,57,16,13,145,255,158,136,0,48,151,87,32,142,216,230,151,236,156,66,68,38,85,19,147,254,93,134,104,102,184,3,33,243,206,218,0,133,147,48,98,90,101,102,51,51,8,34,99,217,24,217,56,17,163,130,217,34,29,97,104,54,34,18,242,202,170,56,17,1,96,98,202,220,218,118,170,68,0,88,198,13,192,52,0,101,216,141,165,93,100,1,50,19,97,170,136,151,173,0,233,106,54,36,18,4,200,153,222,89,0,70,198,143,217,104,51,216,41,70,68,36,48,52,147,236,72},
-  {217,221,89,32,11,162,238,174,105,1,33,169,58,32,109,214,185,169,237,173,82,83,57,85,35,197,254,77,150,137,102,167,21,33,243,238,217,0,150,165,81,146,108,102,102,53,83,25,34,147,218,70,220,89,34,194,98,218,34,45,97,105,86,34,34,243,217,153,57,33,17,96,98,217,221,217,166,153,51,16,103,217,14,224,53,16,86,214,110,150,109,149,1,50,35,98,153,105,202,157,16,218,92,86,53,35,40,215,202,223,108,16,134,201,158,220,153,35,182,44,89,133,40,49,56,197,238,86},
-  {218,221,91,16,29,178,255,191,170,0,49,185,105,32,174,218,217,185,238,190,83,85,41,100,36,197,254,61,168,122,136,204,5,49,244,239,219,0,168,181,80,147,140,136,136,69,84,10,35,149,219,27,220,74,18,196,163,219,51,29,129,138,88,51,19,242,235,187,90,17,1,128,131,235,222,219,152,187,85,0,140,233,14,224,69,0,104,218,174,184,141,165,1,67,20,129,187,170,201,189,16,235,108,88,85,37,39,236,203,223,140,0,120,249,175,220,154,68,218,60,89,117,55,80,87,197,254,90},
-  {217,221,76,32,13,193,255,207,153,0,64,203,106,33,157,217,216,203,254,206,82,85,56,102,21,197,255,125,152,105,136,202,5,33,245,239,220,0,151,197,80,130,124,135,136,85,85,9,34,132,220,40,220,105,33,197,146,220,34,29,128,137,88,34,34,244,236,204,73,16,0,128,130,236,222,220,168,204,85,16,122,232,14,224,85,0,103,217,158,199,125,133,0,82,21,130,204,153,202,205,0,220,108,88,85,21,53,234,204,223,124,1,88,232,159,220,137,85,217,44,88,85,37,64,69,197,254,89},
-  {201,204,89,16,12,161,255,173,137,0,32,167,71,17,141,200,231,167,221,173,82,83,23,68,19,180,253,76,150,121,102,171,4,33,243,221,204,0,148,164,64,114,75,100,102,52,67,9,18,114,202,40,203,73,17,180,130,202,34,28,96,105,70,34,18,242,217,153,41,16,0,96,98,217,205,201,118,153,51,16,75,215,13,208,53,0,68,200,141,148,76,149,0,50,19,97,156,137,183,156,0,218,75,70,69,20,19,219,186,206,75,1,54,183,159,203,121,67,200,43,87,53,35,32,39,180,221,88},
-  {200,204,76,16,25,145,255,159,120,1,50,153,73,17,127,199,184,153,253,157,66,68,24,85,20,196,255,124,135,104,119,167,20,33,244,223,204,0,135,148,65,132,124,119,119,68,68,24,18,132,201,39,204,72,17,196,116,201,34,28,113,120,71,68,20,241,217,153,72,17,17,112,116,217,205,201,151,153,68,16,119,216,12,208,68,16,87,199,124,151,124,132,1,68,20,113,156,120,201,156,32,249,92,71,68,20,22,215,201,207,124,16,103,232,143,204,136,68,167,44,72,100,70,65,70,196,253,71},
-  {234,238,109,16,30,177,255,191,170,1,97,185,136,48,175,234,247,185,254,190,114,116,55,136,20,215,255,94,167,138,119,187,7,33,244,223,236,0,168,183,112,116,141,120,119,71,116,10,50,116,235,42,237,90,17,212,163,235,34,30,113,122,119,68,19,243,236,204,74,17,17,112,116,236,238,236,135,204,68,16,139,231,14,208,71,16,136,234,174,200,142,167,1,68,20,113,204,170,216,206,32,251,141,119,71,20,52,235,219,239,141,1,71,215,175,237,122,68,234,45,119,71,68,64,71,215,253,122},
-  {216,221,56,16,28,145,255,159,152,0,48,151,54,33,159,217,230,151,255,159,66,68,22,165,18,179,255,45,134,72,102,170,3,33,242,255,221,0,133,147,48,98,93,101,102,35,50,8,34,99,217,40,219,88,33,210,146,217,34,45,97,104,54,34,18,243,252,204,56,17,1,96,98,252,223,220,102,204,68,16,90,246,13,240,36,0,101,217,157,197,93,132,1,34,18,97,205,152,182,205,0,249,109,54,52,19,20,250,185,222,91,1,70,246,143,219,104,34,169,43,70,68,36,48,52,179,255,73},
-  {234,238,106,16,14,177,255,191,170,0,65,185,91,49,174,234,248,185,254,190,114,117,56,184,20,214,255,46,168,122,136,187,22,33,244,223,236,0,168,182,97,132,141,136,136,70,100,26,50,132,235,42,237,106,17,212,164,235,34,46,129,138,104,68,20,244,236,204,74,17,1,128,132,236,238,236,184,204,85,16,139,232,14,208,71,0,136,234,174,200,142,167,1,68,20,129,204,170,219,206,32,235,141,104,71,20,53,235,219,239,141,19,88,216,175,237,138,68,234,45,120,87,69,65,71,214,253,122},
-  {200,204,91,32,26,145,255,159,136,1,82,154,73,17,140,200,167,154,253,157,82,84,23,149,19,181,255,108,136,88,136,153,21,33,243,255,204,0,136,149,81,115,140,136,136,53,83,24,18,116,201,104,203,88,33,195,131,201,34,28,129,136,88,51,35,244,218,170,72,17,17,128,131,218,205,202,152,170,68,16,137,215,15,208,53,16,88,200,143,168,140,117,1,51,19,130,172,136,185,172,32,201,92,88,69,20,20,217,185,206,139,16,72,247,143,203,120,51,216,43,87,69,52,65,69,181,255,88},
-  {218,221,90,16,13,176,255,191,186,0,71,185,88,32,191,219,248,185,254,190,83,85,40,99,3,181,255,125,168,90,136,203,5,49,243,239,222,0,168,181,80,131,141,136,136,53,83,10,35,133,219,122,219,58,16,211,179,219,51,29,129,138,88,51,19,245,237,221,90,33,1,128,131,237,222,221,136,221,85,0,139,232,14,224,53,0,104,219,190,216,141,165,1,51,35,129,222,186,184,221,112,251,109,88,85,5,37,235,187,223,139,2,88,232,175,219,138,51,219,59,88,85,53,80,85,181,254,91},
-  {203,204,91,32,28,193,255,207,171,0,35,201,105,33,175,202,185,201,253,205,84,85,25,100,20,165,255,76,184,123,136,218,5,66,244,223,203,0,184,197,80,148,140,136,136,69,84,11,36,149,204,58,202,75,33,196,164,204,68,44,130,139,88,68,36,242,219,187,91,18,2,128,132,219,205,203,152,187,85,0,138,217,12,208,69,0,104,202,172,184,140,181,2,68,20,130,187,171,169,188,48,252,108,88,85,21,23,218,172,207,138,1,120,233,191,202,155,68,218,74,89,117,71,80,87,165,253,90},
-  {202,204,91,16,26,177,255,191,170,0,80,185,104,17,174,202,248,185,254,190,82,84,24,103,19,181,255,124,168,106,136,186,5,33,243,239,206,0,167,181,80,131,125,135,136,53,83,10,18,133,203,43,203,58,17,211,161,203,34,28,129,138,88,51,17,244,236,204,90,17,1,128,131,236,206,204,136,204,68,16,122,232,14,224,53,0,103,202,174,199,124,165,1,51,19,129,206,170,184,204,32,235,109,88,69,20,24,234,187,207,123,1,136,232,175,203,138,51,218,43,88,133,56,80,88,181,254,90},
-  {218,221,106,32,13,162,255,175,170,0,80,167,119,33,173,218,230,167,253,173,98,99,22,132,36,182,255,77,167,122,119,187,6,34,244,207,218,0,167,166,96,98,123,119,119,70,100,10,34,102,218,10,219,74,34,180,162,218,34,45,112,122,103,34,34,243,218,170,106,32,0,112,114,218,221,218,119,170,51,32,123,214,15,176,70,0,119,218,175,167,125,150,0,66,36,114,170,170,183,173,0,218,123,103,54,35,22,219,186,222,123,1,103,198,175,219,106,68,218,43,102,102,38,96,102,182,252,106},
-  {204,207,220,255,207,252,203,187,108,103,102,102,119,102,51,214,79,153,169,169,152,153,137,197,108,72,34,34,66,50,145,246,111,41,54,102,70,70,146,198,111,42,150,136,153,105,163,198,111,57,148,51,32,105,148,246,95,9,150,98,54,121,146,182,108,40,150,99,38,105,162,196,76,42,166,34,18,105,145,198,125,73,150,153,153,57,145,214,111,41,70,102,102,54,130,214,111,9,65,35,34,32,147,245,111,154,152,153,154,137,136,247,111,102,70,119,102,103,102,198,188,191,220,207,204,204,255,207},
-  {123,5,94,194,121,72,69,7,157,245,45,156,225,7,75,43,175,201,23,141,226,72,75,27,197,218,68,125,226,39,14,76,198,133,68,133,197,6,14,78,165,149,112,105,230,55,77,141,71,91,162,231,227,164,79,93,6,109,224,192,241,180,73,93,23,93,195,215,199,227,101,77,7,139,53,108,246,194,38,76,76,109,40,159,173,208,6,44,77,141,5,12,175,224,37,14,15,159,6,111,157,226,166,45,92,90,71,91,165,232,54,240,143,210,70,219,115,242,73,142,122,212,121,215,87,248,120,73},
-  {221,223,221,255,223,253,221,221,93,87,85,85,119,85,34,231,79,170,185,185,151,153,137,215,93,56,17,17,49,33,145,247,95,26,37,85,53,53,145,215,95,27,149,136,153,89,178,215,95,41,164,18,16,89,147,247,79,9,149,81,21,137,145,199,93,22,149,82,21,90,177,211,61,27,181,17,1,89,161,215,125,57,149,153,153,41,145,215,95,25,69,85,85,37,129,214,95,9,49,17,17,16,146,244,95,155,152,153,155,137,135,246,95,85,53,136,119,120,119,215,205,223,221,223,221,221,255,223},
-  {123,6,94,193,137,56,53,7,157,244,29,156,224,8,59,27,159,201,8,141,225,56,59,11,181,201,51,141,225,24,14,59,199,134,51,134,181,7,14,62,150,150,128,121,230,39,61,140,56,107,145,232,226,163,63,93,6,109,224,192,240,179,57,93,7,77,194,199,183,226,102,61,7,139,37,123,247,177,22,60,59,124,24,159,157,192,7,27,61,141,4,11,159,224,22,14,15,159,6,127,157,225,151,28,92,105,56,91,149,232,39,240,143,193,54,219,130,241,57,142,137,211,121,200,103,248,120,57},
-  {7,83,12,0,10,0,208,48,10,97,224,0,253,16,241,224,0,9,47,5,69,44,7,50,0,0,48,10,99,47,10,99,80,5,80,14,150,0,9,168,32,10,159,12,110,208,192,160,126,240,13,69,0,12,224,204,21,64,209,130,64,225,224,192,145,96,231,135,112,8,16,213,249,192,9,6,13,7,61,8,12,0,240,13,52,0,109,0,3,19,0,0,99,48,10,79,10,98,48,1,160,112,9,95,8,140,80,10,240,112,47,3,11,192,172,0,192,127,32,216,5,0,96,224,35,14,144,45},
-  {7,83,12,0,10,0,208,48,10,97,224,0,253,16,241,224,0,9,47,5,69,44,7,50,0,0,48,10,99,47,10,99,80,5,80,14,150,0,9,168,32,10,159,12,110,208,192,160,126,240,13,69,0,12,224,204,21,64,209,130,64,225,224,192,145,96,231,135,112,8,16,213,249,192,9,6,13,7,61,8,12,0,240,13,52,0,109,0,3,19,0,0,99,48,10,79,10,98,48,1,160,112,9,95,8,140,80,10,240,112,47,3,11,192,172,0,192,127,32,216,5,0,96,224,35,14,144,45},
-  {135,181,248,149,152,197,130,183,29,18,23,94,78,57,120,41,197,211,148,193,99,33,209,212,79,25,79,27,73,175,68,143,248,154,177,241,246,88,152,180,30,62,41,111,206,14,57,78,100,12,161,129,193,160,157,147,20,216,54,138,12,41,211,73,7,27,81,161,157,161,48,193,163,130,234,15,3,62,11,54,199,110,45,200,201,203,196,210,31,47,76,75,30,2,20,25,85,211,178,246,244,184,225,145,79,46,12,141,59,41,5,123,136,178,163,96,18,128,194,144,69,104,94,88,94,41,120,127},
-  {41,73,185,41,43,73,41,37,21,101,71,22,24,72,24,104,88,123,139,91,91,136,123,91,204,204,204,204,204,204,204,204,238,255,239,255,255,239,238,238,136,56,136,91,136,87,39,136,50,4,55,36,52,3,4,8,33,2,35,36,2,4,5,20,1,19,4,4,3,4,4,3,3,23,3,7,35,4,5,5,87,120,41,91,120,87,91,121,204,204,204,204,204,204,204,204,238,254,239,254,239,255,255,254,137,136,119,155,139,153,120,123,70,69,153,81,24,98,101,43,73,89,153,98,24,147,101,43},
-  {51,67,68,52,67,85,68,51,51,18,50,51,68,20,52,35,68,33,51,68,68,34,67,51,36,34,67,69,17,50,51,50,52,52,68,4,34,50,33,51,68,68,19,51,50,3,34,67,69,51,33,52,67,35,50,67,68,35,51,67,51,34,67,68,52,50,67,52,67,52,84,85,68,67,68,66,85,68,68,85,69,68,36,84,68,16,50,68,52,68,67,68,19,34,51,84,67,52,66,19,18,50,67,68,68,19,50,51,50,51,67,52,52,35,67,68,51,52,68,51,51,66,68,68,84,69,68,67},
-  {17,33,66,100,136,71,68,17,17,66,101,38,135,119,70,66,33,4,136,165,203,170,120,36,65,144,153,220,221,205,155,66,4,168,187,237,15,222,92,100,100,153,219,254,240,223,152,70,100,185,237,239,255,223,156,70,116,197,254,254,255,222,139,101,69,219,254,255,255,205,122,101,130,219,255,255,208,172,121,100,114,218,254,15,206,171,9,36,100,218,237,237,188,170,96,36,18,168,220,205,154,9,70,18,65,117,169,138,136,98,53,18,33,67,85,102,86,69,34,17,17,33,68,50,35,34,17,17},
-  {0,0,0,48,4,0,0,0,0,0,32,16,4,0,0,0,0,0,16,35,6,0,0,0,0,0,64,35,6,2,0,0,0,0,0,48,3,100,0,0,0,0,0,48,67,6,0,0,0,0,0,32,99,0,0,0,0,0,0,16,3,0,0,0,0,0,0,16,3,0,0,0,0,0,0,16,4,0,0,0,0,0,16,34,20,0,0,0,0,0,96,50,52,6,0,0,0,0,0,54,100,0,0,0,0,0,0,16,6,0,0,0,0,0,0,32,4,0,0,0,0,0,0,80,6,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,4,0,0,0,0,0,0,16,4,0,0,0,0,0,0,32,4,0,0,0,0,0,0,32,4,0,0,0,0,0,0,48,36,0,0,0,0,0,0,48,83,0,0,0,0,0,16,35,3,0,0,0,0,0,64,19,5,0,0,0,0,0,0,20,3,0,0,0,0,0,0,16,3,0,0,0},
-  {0,50,2,0,12,4,0,0,0,19,165,0,78,0,33,0,0,0,147,4,15,33,51,1,32,1,0,64,0,53,33,0,16,35,3,192,64,35,0,0,0,50,37,64,4,0,0,0,0,32,81,176,0,0,18,0,0,0,0,180,0,35,35,0,0,35,0,204,32,53,1,0,0,49,50,208,64,35,0,0,0,32,83,1,4,0,0,0,0,0,50,8,6,15,0,0,0,0,0,192,246,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,15,0,0,0},
-  {0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,32,35,19,0,0,32,1,0,0,49,53,0,0,50,3,0,0,32,83,0,48,19,0,0,0,0,0,4,83,2,0,0,0,49,2,112,68,48,2,0,0,34,3,0,4,32,19,0,0,48,18,0,7,83,50,0,0,16,53,0,7,84,3,0,0,48,5,0,71,0,0,0,0,0,64,0,132,0,0,2,0,0,0,100,4,0,35,19,0,0,0,128,4,48,50,2,0,0,0,0,7,80,21,0,0,50,0,0,7,4,0,0},
-  {96,11,48,11,112,123,123,0,112,10,64,11,96,107,122,0,48,0,96,0,64,58,123,10,64,0,163,0,64,48,107,11,80,0,163,0,179,64,48,11,80,11,6,0,182,112,48,11,112,10,6,16,8,96,43,10,0,7,6,16,8,96,74,10,0,6,7,96,10,112,107,10,0,164,167,96,0,96,107,11,0,162,183,112,0,112,123,11,0,177,167,96,10,112,122,0,0,7,96,10,7,163,96,0,80,10,96,11,166,183,166,0,112,11,112,11,183,166,183,0,0,155,144,155,176,185,185,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,80,7,32,0,0,0,2,0,32,8,48,0,0,0,131,0,32,0,80,7,128,0,80,0,96,0,96,8,32,0,96,8,133,0,118,0,48,8,0,116,114,5,130,0,0,118,0,2,134,2,2,0,0,5,0,5,5,131,3,0,0,5,80,7,5,116,115,0,16,0,32,0,5,4,117,0,48,0,32,0,5,4,134,0,48,8,96,0,134,118,5,0,80,7,80,7,134,116,6,0,96,7,96,8,132,134,4,0},
-  {79,97,183,76,223,48,86,0,184,211,0,16,6,178,13,0,64,20,214,125,70,97,183,9,0,61,125,22,57,189,112,0,213,100,209,126,27,116,13,0,96,237,131,24,40,190,5,0,244,84,209,127,81,4,159,0,96,176,46,21,162,188,4,0,144,107,22,75,225,118,107,0,0,248,45,22,146,190,4,0,0,76,118,129,205,72,0,0,0,134,206,19,104,251,0,0,0,240,88,22,189,132,14,0,0,156,0,16,12,0,9,0,0,0,0,64,12,0,0,0,0,0,0,112,14,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,8,0,0,16,3,0,0,144,225,0,192,195,78,0,0,0,26,4,89,113,8,0,0,224,63,109,62,5,0,0,0,156,118,65,20,252,0,0,0,10,206,146,243,104,0,0,0,208,71,18,161,254,0,0,0,128,240,172,242,90,14,0,0,64,140,23,113,238,5,0,0,0,198,94,223,69,15,0,200,7,108,22,148,14,1,0,160,177,212,156,220,55,15,0,231,242,77,24,164,145,183,5},
-  {0,238,6,32,122,175,80,0,0,48,15,90,127,170,99,0,0,32,160,146,74,182,188,12,0,99,42,175,170,178,204,12,63,58,58,170,122,226,236,14,48,250,167,82,90,244,227,0,176,107,167,199,221,124,179,11,204,236,122,188,236,126,203,204,176,204,122,219,238,51,206,14,176,236,167,236,62,175,227,14,0,78,175,79,118,122,111,5,0,0,167,71,247,167,106,0,0,240,167,71,167,167,100,15,0,0,48,95,122,250,4,0,0,0,64,122,159,135,9,0,0,0,0,132,138,170,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,161,186,0,0,0,0,0,0,184,184,0,0,0,0,129,10,112,11,128,8,0,0,185,57,7,0,186,26,0,0,184,0,39,0,163,138,0,0,112,0,64,32,3,187,0,0,114,0,129,0,7,119,0,0,64,128,170,8,39,112,0,0,50,160,184,59,0,4,2,0,48,2,176,71,0,64,0,0,0,71,64,6,0,64,2,0,128,66,0,37,0,112,0,144,152,184,7,5,32,3,0,128,129,185,119,0,52,112,2,0,152,11,68,64,7,112,0},
-  {0,0,118,117,117,87,6,0,96,6,103,101,101,101,0,0,112,87,119,86,103,117,0,0,0,112,117,118,22,49,0,0,0,112,86,102,36,18,4,0,0,0,103,117,49,36,101,6,96,85,112,117,53,100,119,0,0,103,118,117,85,117,0,0,0,112,101,101,101,119,0,0,80,117,102,86,102,0,85,7,96,86,103,87,102,85,119,0,0,96,101,86,86,119,7,0,0,0,86,86,86,7,0,0,0,0,80,87,118,0,0,0,0,0,112,103,119,0,0,0,0,0,112,119,118,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,53,0,96,97,0,0,0,131,104,5,143,17,6,0,48,53,85,5,142,38,18,0,48,53,38,196,174,104,97,0,0,67,68,201,234,143,104,0,0,155,249,206,239,175,250,0,0,192,255,31,226,170,14,0,224,252,204,33,102,239,170,14,224,207,44,38,134,175,254,15,0,240,111,17,136,234,15,0,0,0,204,134,168,254,10,0,0,0,240,174,173,174,14,0},
-  {33,172,147,237,85,59,179,1,132,131,252,255,167,29,5,0,199,164,255,255,188,29,33,18,147,151,173,58,173,111,97,229,218,247,171,51,94,186,97,196,174,249,239,2,229,218,169,169,109,214,231,13,169,145,108,136,182,245,202,239,84,129,106,147,234,132,57,132,152,22,17,178,238,190,37,249,178,108,65,151,127,171,44,148,74,247,2,241,25,86,172,243,187,206,149,123,53,121,73,229,223,254,158,162,49,43,169,190,219,182,121,38,34,41,58,253,174,123,21,83,32,85,58,216,91,27,57,118},
-  {18,49,119,32,2,34,2,32,164,137,153,186,170,137,90,85,173,218,220,220,221,254,187,238,12,20,12,0,82,15,37,0,156,153,124,116,249,150,88,137,153,137,108,39,231,150,120,247,184,203,204,87,239,109,151,247,15,33,16,220,17,208,203,31,129,133,216,33,136,182,32,29,106,102,232,114,118,250,100,126,223,221,202,136,131,200,215,253,0,96,252,221,232,30,109,17,34,182,1,17,30,130,60,99,35,218,153,120,158,169,95,151,219,197,40,247,195,103,253,247,19,123,221,94,135,207,18,14},
-  {96,236,98,224,40,68,94,51,225,54,158,232,69,153,233,14,60,230,158,171,190,27,14,227,76,14,224,55,154,232,16,152,231,128,168,0,206,12,34,103,232,136,168,238,98,231,137,155,78,8,168,46,126,178,204,224,226,160,238,187,62,67,19,30,185,110,35,140,230,126,224,150,88,188,70,191,146,235,205,131,233,153,51,110,132,14,196,66,14,32,56,226,9,14,230,85,195,46,204,158,233,80,57,206,50,224,126,230,201,103,227,96,50,8,78,233,236,92,14,71,82,228,38,230,99,232,72,37},
-  {82,102,102,82,68,36,50,69,5,99,36,3,70,82,1,99,85,70,69,86,70,100,51,70,100,36,85,100,36,69,102,68,70,50,17,99,50,101,68,34,86,21,0,81,3,102,36,16,100,54,17,98,101,68,53,97,68,100,37,70,70,82,84,70,50,69,86,70,36,83,70,36,16,97,100,36,53,48,70,36,85,70,68,68,86,83,70,100,102,84,70,34,100,101,84,68,68,50,70,86,64,70,50,101,36,1,97,100,99,36,3,99,84,1,83,70,102,84,85,101,100,51,85,70,68,100,102,70},
-  {221,155,205,139,217,207,188,185,223,72,72,68,132,75,34,34,157,1,0,0,33,17,0,0,141,1,0,0,16,17,1,0,76,17,18,17,17,34,34,34,60,0,34,51,83,169,167,71,139,32,67,100,153,230,105,102,140,82,103,122,85,85,85,85,141,83,85,69,102,86,85,85,141,50,86,117,101,102,137,84,157,50,119,154,89,86,86,84,140,83,174,238,238,153,122,238,143,99,230,238,238,238,238,238,189,149,85,174,238,238,234,174,204,223,204,174,238,254,255,207,252,204,207,220,204,221,221,223},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,204,203,172,170,171,203,186,140,152,153,184,170,171,152,168,156,119,119,119,152,184,170,137,238,255,255,255,238,255,255,238,33,35,34,51,34,51,34,50,49,85,85,85,102,85,86,85,49,6,0,0,0,0,0,0,33,6,0,0,0,0,0,0,33,5,0,0,0,0,0,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,221,221,189,203,202,220,204,157,153,153,169,203,188,153,201,157,136,136,136,153,201,187,153,254,255,255,254,238,254,254,238,49,52,34,68,51,68,34,98,65,86,85,86,102,86,38,98,65,6,0,0,0,0,16,99,33,6,0,0,0,0,16,83,49,5,0,0,0,0,16,98},
-  {221,156,186,252,102,69,118,103,169,156,201,237,68,1,99,118,136,138,152,253,4,0,64,118,152,138,152,253,4,0,32,117,153,138,168,253,3,0,17,116,187,138,185,253,3,0,17,99,170,138,201,254,19,16,17,100,187,140,186,254,19,17,17,100,187,140,186,254,3,16,17,100,186,140,186,254,19,17,17,100,187,140,170,254,37,17,33,101,205,142,170,254,53,19,67,102,187,158,185,254,52,35,67,102,187,157,185,254,36,67,52,100,221,174,220,254,68,101,70,99,221,221,236,254,101,118,102,86},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,237,238,219,253,36,34,68,68,221,190,219,253,20,17,17,66,221,191,221,253,36,17,17,66,255,255,255,255,68,34,67,68,119,102,102,118,119,103,102,198,201,153,156,153,153,153,106,198,0,0,0,0,0,0,80,198,0,0,0,0,0,0,80,150,0,0,0,0,0,0,80,150},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,84,102,119,71,84,103,103,70,34,17,17,17,34,34,116,71,34,34,34,33,18,34,116,103,84,117,119,102,84,117,118,185,172,186,204,170,204,187,250,201,221,237,221,255,221,175,251,201,15,0,0,0,0,144,251,169,15,0,0,0,0,144,218,169,13,0,0,0,0,144,218},
-  {248,25,147,25,248,25,147,25,255,44,101,59,255,44,101,59,253,28,138,125,253,28,138,125,248,29,181,104,248,29,181,104,240,54,181,132,240,54,181,132,192,69,195,68,192,69,195,68,208,70,82,4,208,70,82,4,226,22,98,6,226,22,98,6,245,25,147,9,245,25,147,9,255,44,101,43,255,44,101,43,253,28,138,125,253,28,138,125,248,29,181,104,248,29,181,104,240,54,181,132,240,54,181,132,192,69,195,68,192,69,195,68,208,70,82,4,208,70,82,4,242,24,98,4,242,24,98,4},
-  {106,27,176,170,106,27,176,170,5,172,253,245,5,172,253,245,248,60,222,197,248,60,222,197,238,114,29,196,238,114,29,196,146,181,143,164,146,181,143,164,171,7,193,13,171,7,193,13,54,206,165,78,54,206,165,78,154,154,151,57,154,154,151,57,106,27,176,170,106,27,176,170,5,172,253,245,5,172,253,245,248,60,222,197,248,60,222,197,238,114,29,196,238,114,29,196,146,181,143,164,146,181,143,164,171,7,193,13,171,7,193,13,54,206,165,78,54,206,165,78,154,154,151,57,154,154,151,57},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,1,0,80,0,0,2,0,0,99,0,22,0,32,6,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,1,0,16,16,0,0,0,96,1,0,64,16,0,2,0,0,22,0,81,1,0,1,0,96,115,0,118,1,32,103,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,16,1,1,0,0,0,0,0,0,35,0,0,17,16,0,1,32,17,0,1,1,16,16,1,16,2,0,16,2,0,33,0,0,7,0,32,0,0,2,0,0,8,0,116,16,0,1,0,112,3,0,71,16,0,114,0,0,105,0,81,8,0,146,0,112,147,0,151,1,32,120,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,112,0,0,0,0,0,4,4,68,0,176,116,80,208,112,44,2,70,0,75,180,13,112,36,99,72,8,55,7,13,0,75,5,116,99,72,208,0,0,43,6,86,5,71,109,0,0,38,252,64,11,176,15,0,0,64,252,128,109,208,15,0,0,224,255,214,111,176,15,0,0,204,255,253,253,251,13,0,0,144,218,166,10,175,218,0,0,25,145,25,145,25,145,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,1,0,80,0,0,2,0,0,99,0,22,0,32,6,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,1,0,16,16,0,0,0,96,1,0,64,16,0,2,0,0,22,0,81,1,0,1,0,96,115,0,118,1,32,103,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,16,1,1,0,0,0,0,0,0,35,0,0,17,16,0,1,32,17,0,1,1,16,16,1,16,2,0,16,2,0,33,0,0,7,0,32,0,0,2,0,0,8,0,116,16,0,1,0,112,3,0,71,16,0,114,0,0,105,0,81,8,0,146,0,112,147,0,151,1,32,120,0},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,131,0,131,0,48,12,0,131,196,115,132,12,163,13,56,196,200,195,168,8,138,58,72,7,64,196,106,125,172,72,74,204,0,56,212,74,131,58,76,196,48,104,220,74,196,167,77,12,0,45,210,43,210,45,201,0,80,25,145,18,145,18,145,13},
-  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,15,0,240,255,0,0,0,224,254,255,255,0,0,0,0,224,189,218,15,0,0,0,238,157,153,169,15,0,0,0,171,138,119,168,14,0,0,208,186,204,138,86,166,13,0,176,168,122,85,53,66,102,12,224,105,85,68,51,67,67,8,144,100,135,39,17,102,100,12,192,187,206,20,49,164,188,11,112,254,204,19,17,113,254,0,160,17,216,24,18,68,17,215,16,33,232,37,218,91,97,11},
+  {174,154,233,221,118,118,149,189,189,171,236,237,174,184,189,221,204,234,139,153,174,201,221,238,252,255,207,201,236,234,158,249,31,34,241,255,236,236,253,47,65,70,36,34,255,255,47,65,246,255,95,85,34,34,65,246,63,96,245,255,102,99,244,111,135,167,91,85,255,255,111,160,154,151,185,120,101,68,117,136,248,255,175,139,168,136,120,247,31,0,241,255,135,136,247,15,48,51,20,0,240,255,15,65,245,255,95,52,1,16,48,245,127,103,245,255,67,83,243,111,229,172,104,118,255,255,127,198},
+  {137,218,133,215,127,187,182,161,237,194,230,223,230,102,37,84,54,217,90,204,136,216,85,182,242,239,174,110,166,160,24,189,67,237,85,72,22,27,39,33,25,151,55,3,169,137,150,58,144,165,200,1,116,38,23,147,19,152,4,65,129,177,221,144,34,168,41,186,166,209,246,140,136,184,189,178,152,64,216,254,92,159,116,102,18,93,189,220,43,207,95,236,181,88,55,24,7,243,167,237,94,162,51,37,42,142,239,253,255,28,64,106,97,229,125,255,232,154,11,89,38,158,254,107,239,184,16,215},
+  {32,18,1,0,0,0,33,226,50,85,51,18,17,50,85,252,82,204,151,68,67,84,200,253,98,204,90,100,67,87,183,252,50,103,102,133,84,181,123,231,48,182,184,184,183,120,151,234,32,85,167,199,140,106,70,228,16,70,138,187,204,186,103,228,16,100,150,202,204,139,106,228,32,67,101,187,204,187,103,229,32,71,170,200,204,169,86,232,33,186,85,123,187,168,120,230,50,124,137,169,118,85,171,251,130,204,72,87,100,132,138,251,194,188,135,68,52,164,201,252,254,255,239,238,238,238,254,255},
+  {206,87,173,117,124,216,43,95,228,117,129,86,111,213,127,169,34,74,51,216,255,249,238,87,179,3,118,66,89,184,200,123,22,16,184,172,130,114,20,81,72,154,83,91,211,196,5,130,202,54,173,3,109,206,23,60,197,29,86,48,25,74,20,82,179,107,141,214,106,144,0,109,94,0,229,191,141,155,96,113,148,70,137,135,41,1,123,163,57,106,62,69,218,39,60,29,5,28,41,122,195,217,232,66,87,182,234,152,104,211,197,171,169,10,156,236,134,139,227,30,201,20,244,246,238,118,101,187},
+  {0,17,0,0,0,0,0,225,48,89,18,1,16,17,82,233,146,188,137,51,52,116,201,252,161,188,121,38,50,116,186,253,162,188,105,68,50,116,186,252,161,172,121,70,52,118,186,253,177,172,106,70,82,132,186,253,179,188,137,39,52,150,186,253,161,204,137,36,35,118,186,252,178,204,137,52,34,150,186,253,161,188,137,55,36,134,201,252,145,188,138,52,50,135,185,253,145,172,122,52,66,116,185,252,163,188,137,67,65,117,201,253,145,172,106,52,34,116,184,252,238,239,238,238,238,238,238,255},
+  {50,78,105,101,183,214,227,99,45,168,76,250,91,236,113,198,17,239,219,93,63,190,67,17,112,191,73,164,236,35,23,0,96,196,235,197,195,60,17,176,193,203,136,238,74,190,82,1,40,228,142,254,195,43,35,105,67,138,189,59,229,105,96,70,255,214,100,81,133,75,176,189,207,136,11,4,171,31,81,169,120,157,2,84,196,153,32,195,235,124,161,51,107,12,16,151,120,177,164,39,113,5,135,93,142,188,40,40,39,188,144,161,89,220,119,206,21,50,198,200,82,157,111,75,203,161,44,51},
+  {0,19,0,0,0,0,16,225,64,153,53,18,17,49,149,233,150,205,140,119,100,151,204,253,163,188,122,71,84,150,202,253,163,205,106,51,34,118,168,253,146,172,121,66,50,83,153,252,113,156,104,37,50,69,184,251,113,187,55,19,18,98,135,236,113,156,71,33,17,66,136,235,130,139,87,19,33,99,166,251,129,172,103,18,18,114,168,236,145,188,120,70,18,101,200,235,148,172,122,38,82,132,184,253,131,205,122,103,86,133,201,253,164,189,139,88,102,118,202,253,238,239,238,238,238,238,254,255},
+  {221,235,188,234,204,251,205,235,108,150,74,4,97,164,92,164,88,134,107,133,106,132,108,212,127,249,126,234,191,201,222,218,216,175,237,143,252,207,202,159,133,108,118,104,118,92,213,71,196,71,116,71,150,89,198,105,249,223,251,142,203,206,247,174,157,248,156,250,143,250,188,248,72,148,74,214,89,196,93,117,73,133,103,116,105,150,75,134,127,251,175,237,14,225,175,200,219,188,249,50,247,127,236,124,196,91,116,94,133,88,196,106,165,71,117,106,133,107,182,105,231,84,215,159,232,143,234,159},
+  {154,136,138,169,154,136,170,170,236,253,204,206,254,252,237,205,136,136,136,136,136,136,136,136,34,52,54,21,113,102,86,38,34,67,67,103,87,118,119,69,17,17,17,119,103,119,103,54,50,68,70,22,17,17,101,54,52,51,66,119,119,103,65,17,37,51,50,118,119,103,101,37,84,35,68,119,119,103,101,37,85,51,35,70,103,87,86,99,17,22,17,50,51,99,103,102,86,36,85,17,33,17,85,117,84,69,35,53,68,17,17,17,103,54,82,50,17,17,52,85,67,68,86,66,17,69,54,54},
+  {67,219,149,0,37,182,60,100,107,217,189,0,152,203,133,40,39,58,135,12,80,232,158,53,34,54,91,9,224,219,172,45,34,99,100,222,175,251,254,104,17,17,17,254,206,255,191,61,66,86,107,28,17,17,217,76,54,52,99,254,239,223,113,17,40,51,67,251,255,206,217,40,133,36,103,238,254,223,184,41,137,52,52,109,222,142,140,180,17,27,17,66,67,196,223,221,171,54,154,17,33,17,169,248,151,104,51,58,102,0,17,17,190,77,146,66,0,0,70,152,116,102,141,99,0,90,75,92},
+  {55,17,39,99,52,18,117,102,218,252,154,158,253,251,236,156,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,18,17,17,1,0,16,34,2,34,0,0,32,16,1,0,18,34,32,33,34,34,0,2,85,105,140,75,228,236,189,94,85,134,135,222,207,253,254,154,68,68,68,254,222,255,207,109,117,137,156,77,68,68,219,125,105,103,134,254,239,239,148,68,90,102,118,252,255,222,235,90,168,87,153,238,254,239,202,91,171,103,103,142,222,174,173,199,68,76,68,117,118,215,239,222,205,104,188,68,84,68,187,250,185,154,102,108,137,67,68,68,206,125,181,117,67,68,120,186,151,136,173,134,68,140,124,125},
+  {255,255,143,255,246,255,255,255,240,255,255,169,255,255,15,80,241,255,255,255,255,255,84,70,243,143,221,254,255,31,37,16,240,255,159,235,255,255,52,54,79,50,255,238,63,246,63,38,111,70,244,255,111,115,255,51,70,68,34,255,255,102,255,255,111,18,100,255,255,255,255,255,255,20,36,255,255,255,255,124,248,31,240,255,255,255,143,137,136,255,246,255,255,255,159,234,218,249,255,255,255,255,223,136,219,251,255,255,255,249,207,201,216,252,255,255,255,203,255,153,188,255,255,255,255,123,249,191},
+  {193,33,98,117,71,181,208,55,115,49,11,218,41,94,79,63,98,1,8,43,181,170,70,73,223,181,135,67,117,82,238,180,111,121,176,254,158,155,131,144,222,105,218,148,39,85,238,25,16,95,87,115,78,73,132,230,212,97,117,197,91,47,74,43,211,231,126,130,21,119,146,223,140,19,20,129,200,11,16,108,75,74,0,97,182,17,16,174,27,14,136,80,198,37,177,235,100,93,55,101,152,182,244,83,170,206,38,112,94,179,200,237,60,203,198,53,171,100,26,208,180,194,120,155,9,2,179,89},
+  {254,252,238,255,238,239,238,254,207,236,238,254,254,255,239,238,38,56,102,9,80,183,123,53,34,54,89,7,176,169,138,42,34,83,84,171,141,217,219,102,17,17,17,219,171,221,157,58,66,85,89,26,17,17,167,74,54,52,83,219,189,171,97,17,39,51,67,217,221,171,167,39,101,36,102,187,219,171,150,39,103,52,52,90,171,123,106,148,17,25,17,66,67,164,171,170,137,53,120,17,33,17,135,214,118,102,51,56,85,0,17,17,155,74,114,66,0,0,69,118,100,85,106,83,0,88,73,74},
+  {0,0,0,160,137,206,0,50,0,0,0,0,104,190,32,68,0,0,97,14,144,11,32,3,0,113,142,251,1,0,64,2,192,223,198,134,203,0,36,0,240,123,219,166,233,11,0,0,0,174,236,231,150,0,0,0,1,0,0,0,0,0,0,48,49,0,0,0,0,7,0,0,16,0,236,168,224,140,0,0,0,0,214,15,96,154,48,0,4,0,175,12,85,181,48,66,66,0,208,80,135,117,10,68,0,0,0,80,182,135,13,0,0,236,0,152,105,139,9,0,0,0,0,85,173,140,0,0},
+  {2,33,18,50,64,181,147,249,89,151,104,138,80,185,161,232,55,71,151,102,97,244,99,214,239,235,253,207,131,230,130,244,1,17,33,1,99,200,144,229,87,105,153,84,131,214,65,181,147,134,166,73,144,180,66,183,203,236,254,190,66,185,145,183,112,233,144,201,33,34,17,16,49,212,145,247,105,137,57,83,144,183,146,232,100,88,152,121,80,234,100,218,220,239,190,189,161,234,82,198,50,2,16,16,146,201,144,201,102,85,68,133,130,229,80,215,136,72,137,153,113,180,81,195,204,187,205,236},
+  {16,16,34,18,81,216,113,217,74,133,152,171,65,247,162,249,53,49,154,169,114,218,145,251,237,204,253,255,178,216,130,249,16,18,21,0,146,235,65,212,99,171,169,74,114,217,97,195,51,151,121,134,48,233,49,196,236,253,255,222,64,229,113,232,48,195,144,198,34,37,1,1,32,194,145,233,149,123,71,100,65,214,178,251,117,121,85,70,115,247,181,235,254,255,238,204,161,217,161,230,34,17,0,18,181,251,160,248,185,74,102,117,112,234,96,195,121,74,100,181,64,212,48,196,255,205,236,254},
+  {1,0,32,18,97,199,130,244,121,134,153,137,81,243,162,213,134,67,87,167,80,202,129,214,221,236,221,207,145,202,144,217,18,48,1,16,160,212,162,249,67,84,133,170,160,231,112,197,88,132,90,68,96,230,129,233,238,205,238,204,128,232,145,212,48,231,83,230,50,48,34,18,49,234,81,202,119,138,120,138,160,231,162,245,119,117,72,120,114,200,115,215,222,204,239,238,163,202,146,201,18,1,18,33,82,215,112,202,170,85,122,138,160,247,144,211,148,116,74,74,145,201,98,216,255,223,204,220},
+  {17,32,65,34,112,227,131,231,87,73,165,106,65,233,161,248,87,149,106,106,97,200,161,201,204,204,205,239,160,230,98,231,34,18,50,1,164,248,144,201,85,137,152,71,161,202,48,231,119,106,106,150,96,201,80,199,220,237,206,222,64,197,161,196,48,211,144,199,34,48,3,18,50,233,128,198,101,104,121,51,144,217,162,250,135,138,116,57,161,248,100,248,254,222,220,206,129,230,65,200,17,3,2,34,129,234,65,196,168,148,117,138,161,214,48,201,106,57,53,100,146,217,114,215,253,207,236,252},
+  {34,32,18,20,130,227,145,251,121,55,186,187,113,234,180,251,166,83,187,186,97,234,145,230,221,222,253,221,180,251,144,219,0,18,17,2,148,251,114,218,83,165,182,132,146,233,112,211,131,150,102,168,160,213,160,215,237,239,254,237,48,211,96,231,48,231,98,227,64,17,2,32,114,215,164,246,186,182,89,115,160,213,177,250,107,154,107,88,148,250,145,249,254,255,255,237,164,235,148,230,65,2,0,19,148,251,81,234,107,57,163,86,148,251,114,216,171,90,135,153,114,219,128,213,254,221,221,253},
+  {18,0,48,38,64,199,115,218,117,87,165,136,114,214,133,250,117,50,166,138,146,218,163,218,205,204,253,223,130,250,147,231,32,19,83,16,147,249,129,196,68,134,121,87,113,232,64,197,53,151,170,88,128,196,49,194,220,253,223,204,112,196,147,198,65,197,112,213,35,68,16,0,33,194,164,233,137,137,120,114,129,212,147,234,133,168,70,39,82,232,165,234,237,222,222,204,133,233,98,233,35,3,0,32,150,234,49,211,154,39,51,165,131,248,64,199,169,55,99,133,113,212,33,198,222,204,204,237},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,16,34,33,2,0,0,0,0,32,18,34,33,0,0,0,0,34,33,18,34,0,0,0,0,16,34,33,2,0,0,0,0,0,18,34,0,0,0,0,0,0,32,16,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,16,34,33,2,0,0,0,0,32,18,34,33,0,0,0,0,34,33,18,34,0,0,0,0,16,34,33,2,0,0,0,0,0,18,34,0,0,0,0,0,0,32,16,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,32,51,50,3,0,0,0,0,48,35,51,50,0,0,0,0,51,50,35,51,0,0,0,0,32,51,50,3,0,0,0,0,0,35,51,0,0,0,0,0,0,48,32,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,16,34,33,2,0,0,0,0,32,18,34,33,0,0,0,0,34,33,18,34,0,0,0,0,16,34,33,2,0,0,0,0,0,18,34,0,0,0,0,0,0,32,16,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,16,34,33,2,0,0,0,0,32,18,34,33,0,0,0,0,34,33,18,34,0,0,0,0,16,34,33,2,0,0,0,0,0,18,34,0,0,0,0,0,0,32,16,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,16,51,49,3,0,0,0,0,48,19,51,49,0,0,0,0,51,49,19,51,0,0,0,0,16,51,49,3,0,0,0,0,0,19,51,0,0,0,0,0,0,48,16,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0},
+  {3,23,119,143,66,132,255,255,18,0,64,47,50,247,255,252,255,255,255,255,136,248,173,137,223,237,255,255,255,191,221,204,239,238,254,97,6,175,205,253,239,238,206,63,242,255,217,255,255,238,254,255,244,39,255,191,251,255,255,255,255,71,255,170,247,255,255,255,63,255,255,171,248,255,255,255,255,207,251,103,255,255,255,255,149,175,172,255,255,255,255,47,73,248,172,255,255,255,255,47,104,249,207,251,63,4,64,255,104,87,255,255,16,70,0,246,31,72,255,255,66,53,49,241,241,255,255,255},
+  {20,81,132,203,140,19,81,172,16,65,152,71,1,16,115,152,0,52,69,20,0,17,151,35,18,200,158,73,35,129,232,106,65,205,191,142,19,218,222,236,73,186,255,239,93,187,253,255,136,184,251,255,189,68,202,255,185,33,54,219,202,74,49,180,71,50,0,17,166,72,3,16,164,39,0,33,72,43,1,0,233,119,3,98,235,122,18,0,221,139,151,229,252,174,38,162,175,140,155,255,239,186,132,233,139,164,223,223,207,139,167,255,68,210,189,59,66,116,219,158,32,97,92,4,0,67,163,135},
+  {54,53,182,188,122,86,102,183,35,48,138,139,17,33,131,139,0,146,118,36,0,33,101,84,33,185,189,19,18,166,172,91,167,234,190,108,134,199,222,219,151,218,255,223,109,181,237,255,107,167,251,255,204,137,133,223,91,18,82,232,189,85,68,195,155,18,33,49,149,54,1,32,165,23,1,18,147,73,19,0,188,70,4,51,137,141,24,32,237,119,56,199,238,125,100,181,207,135,219,237,239,120,153,252,75,122,234,239,190,170,152,222,21,164,221,153,36,81,219,206,32,67,86,4,16,82,118,56},
+  {98,238,55,24,113,113,49,117,65,237,196,196,65,131,49,25,54,146,180,174,104,84,78,33,87,178,121,158,167,189,94,182,240,120,68,94,103,190,190,115,142,158,235,237,156,231,85,197,173,206,235,191,238,237,165,218,89,94,158,15,191,78,102,238,229,51,220,217,14,207,66,181,78,51,236,91,70,17,145,91,86,20,81,89,188,165,89,240,133,20,75,220,35,59,196,61,124,33,72,126,97,50,104,216,177,18,218,184,19,240,152,121,33,77,141,25,66,39,60,56,66,142,174,33,17,33,9,115},
+  {149,77,235,29,17,35,146,9,78,6,75,41,75,249,235,108,198,78,25,235,79,78,58,76,152,74,69,161,177,110,115,16,198,48,132,195,173,52,47,37,254,137,102,214,32,105,223,199,149,24,248,90,110,113,233,201,219,202,253,66,169,216,20,221,155,192,247,111,55,10,136,224,26,173,145,59,144,247,225,45,46,239,232,15,153,62,223,124,195,195,64,189,189,188,216,129,11,193,160,114,181,145,170,189,16,113,94,120,241,201,33,242,8,208,58,174,0,230,247,143,32,166,84,44,73,196,56,83},
+  {207,249,246,255,88,242,15,242,159,255,245,255,36,119,31,246,251,255,255,255,127,255,255,127,200,255,255,237,255,100,240,171,186,255,255,237,31,38,246,152,252,239,252,255,255,19,246,127,255,239,238,159,247,3,243,159,31,244,255,120,251,255,244,255,38,243,255,143,255,255,255,255,255,255,255,255,255,255,0,255,255,191,249,255,255,63,80,241,244,191,255,255,255,95,3,255,63,247,191,252,255,36,21,255,255,245,154,252,255,15,255,255,250,255,173,250,134,255,95,255,223,185,255,79,65,247,33,245},
+  {174,186,45,188,92,104,200,219,206,218,206,194,186,202,206,236,12,192,171,220,204,220,204,172,0,241,255,187,218,174,219,171,31,66,2,240,191,203,253,255,50,136,0,49,243,255,63,35,120,255,31,136,56,67,98,104,255,34,34,255,0,119,248,255,34,69,68,2,16,255,47,34,51,0,67,52,33,34,98,67,4,16,255,83,51,99,101,53,255,65,7,240,95,54,243,255,86,153,0,81,244,255,127,119,137,255,31,137,89,116,151,154,255,134,117,255,159,153,250,255,103,205,190,103,248,255,143,87},
+  {139,168,216,168,35,35,210,204,200,157,218,171,185,202,138,141,188,170,205,203,216,171,217,138,173,255,0,217,173,184,202,200,255,3,80,255,200,141,253,255,35,68,53,35,255,255,47,35,68,255,79,70,50,0,67,68,255,151,246,255,4,80,244,255,118,221,157,145,255,245,127,150,238,220,205,189,113,136,8,176,13,240,223,11,176,205,0,229,0,53,244,0,229,236,94,255,84,118,70,84,255,255,63,67,102,255,127,102,51,67,99,118,255,34,242,255,118,103,246,255,35,138,43,34,255,255,47,34},
+  {150,137,132,133,187,187,59,89,73,148,70,115,153,85,152,131,210,78,85,149,153,217,142,135,238,223,93,104,151,238,79,212,253,0,208,221,144,243,210,13,0,84,2,0,221,221,13,33,82,221,77,34,1,17,17,210,221,16,208,221,94,34,213,29,16,34,18,238,223,221,13,33,102,102,34,246,0,16,33,70,34,221,45,67,51,213,46,213,221,169,217,221,36,238,223,157,170,187,139,170,221,253,157,183,203,221,189,187,167,137,200,219,221,187,11,221,187,187,220,189,187,52,179,187,221,221,189,155},
+  {255,255,255,255,255,255,255,255,255,255,238,238,238,238,255,255,255,110,102,214,109,102,230,255,255,198,69,195,60,84,108,255,239,86,43,161,26,178,101,254,239,70,162,144,9,42,100,254,239,54,1,136,136,16,99,254,239,205,154,136,136,169,220,254,239,205,154,136,136,169,220,254,239,54,1,136,136,16,99,254,239,70,162,144,9,42,100,254,239,86,43,161,26,178,101,254,255,198,69,195,60,84,108,255,255,110,102,214,109,102,230,255,255,255,238,238,238,238,255,255,255,255,255,255,255,255,255,255},
+  {6,97,25,96,40,128,9,129,59,164,108,166,58,181,43,198,110,231,174,217,156,198,158,218,255,255,255,255,255,255,255,255,66,6,145,36,145,9,144,4,198,60,162,43,198,58,164,107,217,110,218,126,232,140,217,158,255,255,255,255,255,255,255,255,39,145,23,144,6,129,41,145,76,147,57,198,106,180,58,182,156,214,142,202,156,217,140,217,255,255,255,255,255,255,255,255,129,9,96,40,146,6,130,38,180,76,163,106,146,76,164,107,218,157,233,140,215,126,200,157,255,255,255,255,255,255,255,255},
+  {255,255,255,255,255,255,255,255,255,255,238,238,238,238,255,255,255,126,87,213,93,117,231,255,255,199,52,178,43,67,124,255,239,71,27,161,26,177,116,254,239,53,145,144,9,25,83,254,239,37,1,136,136,16,82,254,239,189,154,136,136,169,219,254,239,189,154,136,136,169,219,254,239,37,1,136,136,16,82,254,239,53,145,144,9,25,83,254,239,71,27,161,26,177,116,254,255,199,52,178,43,67,124,255,255,126,87,213,93,117,231,255,255,255,238,238,238,238,255,255,255,255,255,255,255,255,255,255},
+  {21,114,19,97,20,128,21,130,72,148,90,179,40,178,88,148,141,182,91,213,141,181,107,182,255,255,255,255,255,255,255,255,97,3,96,20,129,38,65,5,149,56,147,59,149,57,179,89,182,93,198,109,217,109,214,108,255,255,255,255,255,255,255,255,21,64,19,98,20,80,22,50,40,131,72,131,91,133,59,130,109,213,141,216,142,182,141,184,255,255,255,255,255,255,255,255,48,20,96,19,96,37,97,4,147,43,163,91,148,58,181,91,181,109,214,91,214,109,198,109,255,255,255,255,255,255,255,255},
+  {0,0,0,0,0,0,0,0,0,0,255,255,255,255,0,0,0,127,103,230,110,118,247,0,0,231,69,212,77,84,126,0,240,87,60,194,44,195,117,15,240,70,179,161,26,59,100,15,240,70,18,153,153,33,100,15,240,222,172,153,153,202,237,15,240,222,172,153,153,202,237,15,240,70,18,153,153,33,100,15,240,70,179,161,26,59,100,15,240,87,60,194,44,195,117,15,0,231,69,212,77,84,126,0,0,127,103,230,110,118,247,0,0,0,255,255,255,255,0,0,0,0,0,0,0,0,0,0},
+  {72,139,39,114,39,34,72,151,71,84,49,2,96,183,27,150,135,39,180,151,89,139,133,67,193,76,202,12,193,28,201,124,137,154,130,66,2,18,137,38,133,66,146,139,40,34,96,71,136,8,130,104,33,151,8,104,28,203,124,192,188,199,188,195,72,119,86,20,117,139,68,69,120,152,36,187,129,23,186,116,17,183,9,72,184,139,113,117,199,156,196,188,200,44,203,12,72,177,181,90,98,43,75,113,73,176,7,184,165,87,68,88,119,130,178,98,183,10,23,130,44,196,172,194,92,199,76,203},
+  {255,255,255,255,255,255,255,255,255,255,238,238,238,238,255,255,255,94,85,213,93,85,229,255,255,197,51,179,59,51,92,255,239,53,43,161,26,178,83,254,239,53,146,144,9,41,83,254,239,53,1,120,135,16,83,254,239,189,154,119,119,169,219,254,239,189,154,119,119,169,219,254,239,53,1,120,135,16,83,254,239,53,146,144,9,41,83,254,239,53,43,161,26,178,83,254,255,197,51,179,59,51,92,255,255,94,85,213,93,85,229,255,255,255,238,238,238,238,255,255,255,255,255,255,255,255,255,255},
+  {55,114,7,81,5,112,52,112,74,163,91,165,75,162,92,197,125,216,157,200,157,202,157,217,255,255,255,255,255,255,255,255,80,5,130,57,96,41,112,6,180,58,163,92,147,90,179,59,200,125,233,125,232,142,231,141,255,255,255,255,255,255,255,255,8,145,40,144,23,115,37,96,73,164,59,148,75,163,91,197,126,201,141,199,141,200,140,229,255,255,255,255,255,255,255,255,112,7,146,9,112,8,80,9,163,41,195,59,149,42,164,60,215,124,234,158,202,174,218,94,255,255,255,255,255,255,255,255},
+  {129,44,47,144,224,176,233,96,222,14,40,87,179,184,183,180,100,37,157,115,14,91,157,161,60,21,228,228,231,45,22,122,9,242,98,17,67,158,105,118,82,130,36,47,206,94,236,0,195,208,173,120,160,150,103,90,94,242,50,237,142,227,48,224,238,142,53,199,67,50,192,218,58,216,87,10,112,210,87,80,88,152,39,234,195,42,46,128,44,53,158,74,92,114,190,54,17,157,20,41,232,172,216,45,47,162,242,114,5,108,94,38,24,219,133,221,197,190,184,100,242,178,209,14,203,69,190,106},
+  {84,226,194,128,212,156,67,215,66,101,246,169,205,66,164,44,83,195,210,104,216,171,147,73,188,40,114,11,161,122,80,154,168,86,169,38,46,54,90,59,18,211,178,51,6,63,99,80,226,210,0,195,172,66,9,155,101,247,93,178,93,73,138,176,193,152,40,205,97,51,80,139,46,61,186,37,30,216,27,45,102,111,164,37,226,66,226,66,172,35,213,6,108,250,108,253,48,217,50,38,200,128,205,218,163,36,202,89,173,193,98,208,128,89,156,42,38,46,45,132,136,25,131,109,34,54,127,55},
+  {39,167,166,146,236,146,208,84,222,10,158,0,58,130,230,165,40,93,202,0,188,62,10,106,0,3,133,232,183,91,215,90,144,107,49,4,23,145,176,85,164,34,47,13,242,34,155,188,125,86,55,13,126,7,225,221,125,94,238,185,230,46,47,197,67,54,120,98,80,139,7,190,38,42,98,223,177,64,238,219,16,142,247,38,47,229,34,105,242,50,11,18,7,152,189,14,116,73,6,242,162,13,8,240,228,203,116,116,224,200,157,96,145,32,74,227,10,75,253,144,47,202,190,108,153,197,125,41},
+  {62,61,137,113,142,132,46,47,180,227,157,200,34,114,51,103,9,40,231,40,162,83,10,177,50,50,167,198,197,67,36,31,210,190,140,89,74,10,227,242,137,148,38,51,164,88,185,29,226,24,41,126,68,235,54,242,32,242,146,123,89,215,218,125,197,125,210,84,229,198,173,218,84,210,170,46,64,164,225,41,106,83,155,86,78,44,47,131,53,132,161,91,134,5,231,218,92,16,133,62,98,4,45,9,230,241,194,77,168,203,142,192,36,47,185,153,60,12,39,117,128,215,44,170,114,227,236,177},
+  {98,218,188,34,115,153,173,137,134,186,91,134,53,165,253,46,50,204,253,174,167,221,173,19,240,222,140,152,220,219,221,38,83,197,169,134,198,168,173,56,51,24,167,172,55,146,200,151,155,5,210,188,0,243,206,122,137,0,213,222,6,114,250,174,157,24,163,251,14,16,103,171,205,83,211,205,17,16,17,204,122,3,195,123,33,0,33,212,171,3,48,35,35,23,18,198,239,0,0,49,195,9,1,179,102,35,19,49,184,24,129,147,115,152,152,53,51,104,90,118,242,222,59,57,34,239,157,38},
+  {34,34,34,34,34,34,34,34,2,0,0,0,0,0,0,32,2,3,0,0,0,0,0,32,2,0,0,1,0,0,0,32,2,0,16,0,0,0,0,32,2,0,1,0,0,0,0,32,2,16,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,48,32,2,0,0,0,0,0,0,32,34,34,34,34,34,34,34,34},
+  {74,7,108,69,0,0,128,122,180,204,159,4,92,106,181,183,106,244,116,204,159,117,182,84,234,238,174,250,148,102,85,85,46,51,226,238,109,70,237,238,97,117,42,18,238,238,46,49,6,236,78,165,50,33,66,74,204,47,227,14,108,86,228,238,244,123,61,204,239,238,62,34,215,186,187,247,52,51,147,125,234,238,174,173,221,123,119,173,30,34,225,238,171,217,13,236,50,51,38,17,238,224,204,47,228,238,94,67,18,17,241,85,14,0,224,238,68,69,229,238,208,68,4,0,238,238,14,0},
+  {0,0,0,0,0,0,0,0,48,98,200,139,71,65,133,250,48,134,218,121,52,100,202,253,96,169,190,54,66,150,218,249,144,236,107,255,255,168,139,246,176,188,246,66,150,223,106,244,192,123,47,0,199,253,71,241,176,54,79,128,220,250,53,244,112,20,79,169,139,247,51,245,64,49,127,203,105,242,67,249,16,99,249,155,39,63,134,252,16,133,218,255,255,99,200,253,80,200,140,55,35,133,218,249,144,204,104,19,99,168,172,247,176,157,70,33,133,235,106,243,240,255,255,255,255,255,255,255},
+  {255,255,255,255,255,255,255,255,47,98,198,222,236,174,171,249,47,182,152,221,187,141,75,244,79,201,72,105,203,105,165,244,127,170,70,38,147,66,104,249,239,158,105,18,49,66,149,252,223,173,84,16,0,96,169,253,239,206,24,0,0,34,227,253,239,174,72,0,0,48,230,254,239,220,26,1,0,17,179,254,223,173,58,2,0,33,186,252,191,153,54,18,17,145,171,251,191,123,85,58,36,149,170,250,191,154,101,152,91,166,155,251,159,148,153,222,190,205,105,243,255,255,255,255,255,255,255,255},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,124,35,17,17,17,66,199,204,121,35,18,34,34,118,156,137,70,53,51,35,82,117,150,187,105,102,53,55,115,87,155,229,238,229,238,232,238,230,238,110,116,206,204,222,205,190,153,69,101,150,189,221,205,204,68,104,105,204,188,153,203,118,116,105,155,185,166,204,150,87,119,122,151,71,116,70,84,116,150,167,151,85,34,34,50,151,187,171,90,38,34,34,34,67,201,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255},
+  {255,255,255,255,255,255,255,255,223,206,220,221,203,219,219,251,207,204,156,188,204,186,155,251,175,166,152,156,138,121,152,251,95,71,85,151,121,119,68,245,79,68,101,100,103,68,67,243,31,18,36,67,83,83,51,240,15,0,16,52,34,51,32,240,15,0,33,67,51,18,1,240,15,0,18,35,83,33,32,241,31,19,51,66,84,36,35,241,79,82,85,116,88,101,37,243,79,102,151,149,118,89,119,246,127,138,184,136,169,137,151,250,159,219,156,205,188,204,156,252,255,255,255,255,255,255,255,255},
+  {17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,121,119,119,67,119,71,133,135,187,136,57,67,52,53,169,187,155,120,135,84,67,68,151,200,219,140,73,48,66,103,154,176,221,188,8,15,35,114,8,15,192,189,240,242,32,84,240,251,15,13,79,36,15,2,191,205,253,240,71,35,242,240,151,220,188,175,71,34,50,127,186,187,220,153,57,51,52,115,120,188,185,136,105,51,34,70,149,203,152,138,85,52,117,87,136,121,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238},
+  {255,239,238,206,220,237,255,255,239,255,237,158,219,222,253,255,253,222,206,139,137,188,222,255,220,190,170,169,120,153,201,220,202,137,119,136,132,104,136,153,137,133,101,84,86,83,101,88,115,82,69,50,19,65,53,101,17,34,34,1,17,16,18,66,35,35,32,0,1,0,16,49,66,67,0,2,32,1,35,52,82,66,21,50,49,52,17,85,88,119,70,87,83,103,132,136,185,136,136,133,133,119,151,203,238,187,203,168,153,169,171,204,254,237,220,169,156,204,237,239,255,254,206,219,155,205,238,255},
+  {1,0,0,16,0,0,0,16,16,0,16,16,16,0,0,1,0,1,1,16,0,1,16,0,0,16,0,16,0,16,1,0,0,1,17,17,17,16,1,0,16,0,16,16,16,1,16,0,0,0,1,17,16,1,0,0,16,0,1,16,1,1,16,0,17,17,17,17,17,17,17,17,16,0,17,17,16,1,16,0,0,1,16,17,17,1,1,0,0,16,1,16,0,16,0,0,0,16,1,16,0,1,1,0,0,1,16,16,16,0,16,0,16,0,0,16,0,0,0,1,1,0,0,16,0,0,0,16},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,0,1,0,0,16,0,1,1,16,0,0,0,0,1,16,0,1,0,0,0,0,16,16,16,0,0,0,0,0,0,1,1,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,3,3,16,0,0,2,3,3,4,4,48,0,0,3,5,5,6,6,82,0,0,6,7,7,8,8,116,0,0,8,9,9,9,9,96,0,0,9,10,10,10,10,154,0,0,11,11,11,12,12,171,0,0,12,12,12,13,13,204,0,0,13,14,14,14,14,222,0,0,15,15,15,15,15,15,15},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,80,81,49,0,96,66,80,49,0,2,2,1,32,0,32,0,128,131,115,82,57,21,88,49,0,4,4,3,80,32,64,2,176,182,166,133,108,57,155,115,0,7,7,6,128,80,112,5,224,233,217,248,201,231,201,183,0,10,10,10,11,9,10,9,0,11,11,11,12,11,11,11,0,13,13,12,13,12,13,12,0,15,15,15,15,15,15,15},
+  {66,155,36,156,2,169,18,171,204,66,139,18,204,4,154,17,119,50,153,49,155,68,151,32,238,102,239,103,238,86,238,117,64,204,64,185,36,152,16,204,136,52,200,16,186,50,122,49,200,34,124,66,138,66,201,3,254,101,254,118,238,86,238,102,64,202,17,199,64,204,50,188,188,50,138,20,183,0,171,0,184,66,172,36,135,1,172,18,238,101,239,135,239,103,255,102,68,185,4,140,18,204,32,153,171,68,199,68,139,0,124,0,170,52,151,32,202,2,168,35,238,102,254,136,255,118,255,102},
+  {51,202,33,220,33,167,52,167,167,4,157,68,122,16,219,67,201,19,168,64,221,51,152,34,255,85,238,86,238,85,238,101,32,221,20,135,33,185,3,167,152,66,120,18,170,20,183,52,140,67,203,50,220,65,202,16,239,87,239,103,238,102,255,85,68,220,49,137,33,141,4,202,168,19,135,68,215,3,173,36,172,50,183,35,201,52,153,50,255,101,239,85,239,85,254,117,2,186,16,171,19,189,3,189,120,68,139,16,168,17,122,20,140,51,205,49,220,67,121,19,239,102,255,133,254,101,255,102},
+  {66,218,16,151,36,183,52,216,221,67,220,68,221,65,157,16,156,32,123,2,219,64,154,32,255,102,255,102,255,102,255,103,35,172,4,138,34,188,0,121,201,16,200,68,171,50,155,0,205,68,217,67,184,4,189,48,255,118,255,134,255,102,255,119,64,137,52,219,67,221,3,141,219,51,122,68,189,16,184,33,185,32,152,49,140,4,216,2,255,102,255,102,255,103,255,103,20,167,16,187,51,221,50,157,156,64,171,68,155,52,172,0,203,64,124,65,217,48,217,50,255,120,255,102,255,134,255,102},
+  {68,216,3,204,65,186,4,189,217,35,186,0,184,1,205,2,156,66,189,34,157,21,152,34,239,119,254,118,239,118,255,104,5,120,51,221,4,140,20,203,220,65,173,81,221,3,171,83,200,37,156,0,171,36,189,18,254,118,239,136,255,103,239,118,16,216,51,217,33,217,66,153,184,0,218,0,140,80,119,20,121,16,203,19,217,2,141,66,238,118,238,136,239,104,238,134,68,152,35,201,83,138,17,189,171,82,125,67,220,35,184,2,151,20,171,50,205,52,138,52,255,103,254,102,239,102,238,102},
+  {1,183,16,120,0,137,49,119,218,48,216,64,186,1,189,50,139,34,171,50,221,4,221,2,254,86,254,103,254,86,255,87,51,189,33,189,17,220,1,125,221,68,219,66,156,49,185,32,221,19,220,68,170,18,152,1,255,85,255,86,255,117,239,88,66,137,68,201,50,203,35,215,154,67,141,3,139,2,168,36,123,66,172,49,121,68,203,17,238,102,254,85,255,85,254,87,50,140,20,155,50,137,33,140,172,65,157,66,119,52,119,2,205,0,139,36,216,4,118,48,254,102,254,118,239,102,255,85},
+  {2,141,48,156,36,140,64,169,202,48,155,3,141,68,156,48,154,50,203,48,215,36,187,36,255,102,255,118,238,102,255,102,36,122,35,188,35,157,0,141,139,4,138,35,138,68,136,34,221,16,185,64,201,64,221,35,255,102,255,118,255,118,255,103,3,221,50,218,4,216,66,200,186,2,172,36,218,68,189,20,139,4,219,34,202,17,218,34,255,102,239,134,255,103,255,102,52,189,0,169,51,205,16,185,217,68,201,66,139,36,153,66,183,32,123,3,219,36,200,36,255,102,239,102,255,87,254,119},
+  {3,172,32,136,36,171,36,157,188,19,138,65,154,51,220,67,171,20,121,3,201,16,189,68,255,102,255,102,254,87,238,102,1,203,4,136,4,136,66,156,187,4,124,35,136,68,139,67,183,16,215,52,157,65,138,16,255,120,239,102,254,103,255,118,0,168,35,186,32,154,50,170,205,3,221,19,168,20,153,32,205,50,220,18,122,33,203,51,254,101,254,135,254,103,239,102,68,152,4,141,0,199,64,152,140,2,219,4,184,34,139,68,173,51,153,68,153,0,170,50,255,118,239,120,255,102,255,87},
+  {3,189,68,153,67,221,4,202,137,64,157,3,140,51,216,67,153,51,217,32,189,68,155,51,255,102,255,118,239,119,255,104,68,216,20,125,51,218,64,221,140,65,188,20,155,52,141,52,186,48,189,68,216,68,155,64,254,102,255,102,239,135,255,103,51,188,1,155,52,187,51,188,124,3,220,67,205,1,169,17,151,68,187,65,217,68,220,51,255,135,254,118,255,150,239,119,68,171,19,140,68,188,20,136,122,1,155,1,187,4,219,52,203,17,119,36,153,20,155,17,255,118,255,119,255,102,255,102},
+  {52,184,37,204,20,170,82,185,140,21,138,35,154,3,187,48,169,3,120,69,168,0,171,32,223,120,255,102,254,119,253,135,80,156,81,169,3,156,69,167,171,16,187,2,200,34,153,35,136,51,186,65,168,85,170,35,238,104,238,102,238,119,255,103,52,136,83,204,53,155,1,170,200,85,188,51,170,20,186,50,184,49,156,21,167,82,140,52,253,118,238,119,238,104,254,103,5,136,85,169,84,185,68,154,137,83,201,18,202,4,121,5,187,19,140,0,122,80,154,48,255,118,254,103,254,119,239,119},
+  {33,121,4,201,20,153,65,201,216,3,189,36,173,64,202,49,219,36,219,66,140,66,188,32,239,119,254,118,255,118,239,102,0,173,3,153,51,140,82,184,168,53,201,20,168,18,152,50,188,67,122,3,205,3,141,67,254,102,255,105,239,104,238,103,35,153,52,205,32,201,4,156,154,82,220,20,205,48,188,67,189,67,173,64,172,67,189,48,255,102,255,150,238,102,254,150,51,151,66,170,36,221,68,123,203,36,188,67,204,4,220,80,218,48,173,17,172,50,125,2,255,150,239,102,238,103,255,102},
+  {5,204,20,204,34,202,32,154,170,33,186,37,156,85,189,80,152,64,153,33,203,69,219,32,239,135,239,119,255,119,255,135,85,185,1,139,0,185,66,140,221,53,138,17,170,18,216,69,138,85,204,33,204,5,153,37,238,135,255,136,255,119,239,136,37,220,37,157,53,185,4,169,218,85,201,32,203,67,205,0,138,5,157,69,221,5,184,33,254,119,238,119,239,120,239,119,5,187,69,186,82,189,3,154,168,69,153,21,203,37,186,0,200,4,218,84,218,80,186,85,239,120,255,121,238,119,254,119},
+  {83,185,53,123,82,170,65,125,173,33,173,32,185,48,125,65,169,17,137,83,173,83,186,37,238,102,254,118,255,102,238,134,84,153,82,216,17,184,21,186,186,16,167,17,169,36,221,36,157,53,169,49,138,85,219,49,255,118,238,102,255,103,254,104,33,218,83,183,18,204,33,219,141,65,184,35,154,53,169,21,218,37,186,51,121,35,186,4,255,118,238,118,254,102,238,134,52,157,49,221,35,138,49,215,139,50,121,49,219,53,221,83,221,35,135,83,141,85,173,2,238,102,238,103,239,134,255,118},
+  {69,186,83,135,2,137,64,156,203,0,216,83,121,36,171,35,156,5,169,18,154,68,135,3,255,103,238,103,255,102,255,118,2,185,3,199,37,170,85,203,152,5,124,35,154,32,199,66,201,37,202,0,151,84,137,36,239,102,255,119,238,102,238,119,64,156,3,204,48,187,21,152,199,3,151,4,200,48,219,66,136,17,120,64,201,21,120,80,238,103,238,119,238,102,239,119,3,155,85,154,35,168,19,202,167,32,154,84,215,48,154,0,139,53,169,20,201,66,155,21,254,118,254,118,239,102,238,118},
+  {36,170,2,217,48,185,52,189,155,65,170,52,157,51,186,84,156,64,189,19,155,18,221,66,254,121,255,166,239,118,238,103,48,157,64,187,32,156,3,155,154,0,157,1,188,66,173,50,169,68,188,52,203,2,171,68,238,151,254,102,238,118,255,118,4,187,19,156,52,153,33,217,186,36,203,64,168,2,170,52,185,68,171,33,185,68,217,36,255,102,255,102,255,102,239,102,18,221,3,155,36,184,20,219,185,65,218,1,186,16,204,64,185,20,155,0,157,65,171,3,255,103,255,150,254,102,255,118},
+  {66,156,48,172,69,187,4,203,155,37,170,35,152,16,185,50,204,68,170,53,202,5,203,52,255,152,254,153,239,121,239,135,5,169,36,201,84,203,82,201,153,69,168,65,201,80,170,35,203,53,185,51,168,69,171,48,238,135,254,120,255,119,238,119,37,171,51,200,0,202,1,203,153,69,171,2,156,20,154,80,202,68,203,69,203,67,202,80,238,151,238,119,238,119,238,119,85,140,1,154,50,138,65,152,186,52,188,49,202,5,156,1,138,20,184,81,172,49,202,82,254,135,255,119,239,135,238,119},
+  {82,156,81,185,21,140,52,171,168,69,188,69,136,34,188,65,153,82,139,34,188,35,203,82,237,134,238,136,238,104,238,102,20,200,21,137,17,152,84,153,201,37,139,33,204,85,201,82,140,82,204,85,153,37,201,65,254,102,223,102,238,118,238,134,5,153,0,185,34,188,82,156,188,21,204,34,204,33,156,37,187,33,139,69,153,34,185,34,223,102,237,102,221,104,237,104,34,184,66,155,82,140,66,137,140,82,204,81,139,50,153,82,204,81,204,18,184,81,153,81,253,102,238,104,238,102,239,134},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,32,17,2,0,0,0,0,0,32,17,2,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,48,64,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,64,48,0,0,0,0,0,0,64,3,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,4,68,0,0,0,0,0,36,66,34,4,0,0,0,0,64,34,66,0,0,0,0,0,0,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,16,48,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,48,16,0,0,0,0,0,0,48,1,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,16,1,17,0,0,0,0,0,0,65,1,0,0,0,0,0,16,1,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,32,48,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,48,32,0,0,0,0,0,0,48,2,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,4,0,0,0,0,0,64,67,67,0,0,0,0,0,48,52,52,0,0,0,0,0,0,52,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,16,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,16,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,16,18,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,48,64,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,64,48,0,0,0,0,0,0,64,3,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,64,68,0,0,0,0,0,0,64,67,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,16,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,16,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,0,0,0,0,0,0,48,51,0,0,0,0,0,0,48,49,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,32,64,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,64,32,0,0,0,0,0,0,64,2,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,32,0,0,0,0,0,0,32,34,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,48,64,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,64,48,0,0,0,0,0,0,64,3,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,16,17,0,0,0,0,0,0,16,19,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,32,64,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,64,32,0,0,0,0,0,0,64,2,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,0,0,0,0,1,17,1,1,0,0,0,0,16,34,18,0,0,0,0,0,1,17,1,1,0,0,0,0,16,16,16,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,48,64,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,64,48,0,0,0,0,0,0,64,3,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,51,0,0,0,0,0,35,34,34,3,0,0,0,48,34,34,34,50,0,0,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,16,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,51,0,0,0,0,0,51,49,51,3,0,0,0,48,51,51,19,51,0,0,0,48,49,51,51,51,0,0,0,0,0,34,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,34,0,0,0,0,0,0,32,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,0,0,0,0,0,32,99,184,158,86,65,133,251,48,133,237,106,20,98,202,253,80,186,187,71,66,149,205,251,144,220,121,255,255,200,190,246,208,173,247,65,166,207,137,243,208,105,31,0,216,253,86,241,160,86,79,160,236,251,52,242,128,69,111,199,156,248,51,247,48,50,143,220,121,245,99,248,48,100,249,189,70,79,134,252,64,134,203,255,255,84,202,252,96,185,174,70,35,134,219,251,128,236,108,36,100,184,174,247,208,189,71,33,150,219,121,244,240,255,255,255,255,255,255,255},
+  {0,0,0,0,0,0,0,0,16,99,232,174,71,49,134,252,64,149,236,106,51,99,185,252,96,200,190,55,49,133,237,251,144,238,124,255,255,217,156,246,176,173,247,35,118,207,124,243,192,124,63,0,215,252,70,242,192,71,79,112,220,249,37,242,112,36,95,217,157,246,49,245,64,33,127,220,91,243,82,250,32,67,250,190,70,47,150,253,32,117,206,255,255,98,235,253,96,215,190,54,65,150,236,250,176,220,90,35,82,202,173,245,192,156,70,34,166,206,123,244,240,255,255,255,255,255,255,255},
+  {0,0,0,0,0,0,0,224,16,18,17,17,16,17,17,241,65,119,104,53,34,99,104,251,97,140,56,67,36,82,120,252,97,139,104,83,34,83,183,252,161,204,138,86,67,164,202,252,145,190,104,88,67,101,200,252,179,206,186,101,68,117,203,254,130,190,122,90,101,165,204,254,210,190,138,102,101,122,188,252,162,206,123,102,86,165,202,252,146,204,122,68,99,115,204,252,81,204,70,84,37,102,166,252,65,120,74,50,52,115,138,251,33,104,72,50,33,50,165,252,254,255,255,255,255,255,255,255},
+  {17,18,17,17,16,17,17,210,49,53,18,17,17,33,66,230,114,139,72,34,34,82,184,236,98,156,69,35,66,67,150,236,66,201,105,68,68,68,186,234,98,188,152,101,87,185,139,232,81,185,136,153,136,151,203,236,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,50,140,136,172,188,156,139,236,65,172,152,137,121,137,140,236,114,156,107,120,84,105,199,236,98,201,89,70,68,134,134,236,99,204,103,51,51,68,149,233,147,188,68,35,34,67,133,236,237,238,238,221,221,237,238,254},
+  {134,34,25,1,33,25,70,1,223,136,132,8,204,183,111,12,191,60,78,10,221,233,118,8,0,0,0,0,0,0,0,0,66,2,18,25,68,8,35,84,125,5,201,71,220,7,116,158,153,5,139,93,205,6,201,228,0,0,0,0,0,0,0,0,35,145,73,6,146,40,34,8,156,255,121,3,246,221,219,4,107,215,142,15,230,102,248,14,0,0,0,0,0,0,0,0,65,2,103,34,17,1,166,147,182,12,238,92,206,13,121,227,174,6,207,57,222,15,123,188,0,0,0,0,0,0,0,0},
+  {4,17,7,64,1,35,17,245,121,204,209,92,71,157,89,247,174,188,130,161,210,122,153,245,85,76,181,44,177,58,60,247,83,107,142,74,20,226,25,246,200,69,67,85,56,132,101,252,69,149,20,44,22,153,174,251,255,255,255,255,255,255,255,255,6,96,3,241,19,96,0,101,227,169,117,245,67,214,20,83,56,37,87,250,170,193,135,135,166,88,140,250,88,72,217,204,231,237,104,251,140,121,65,73,203,76,139,245,70,154,165,116,206,193,78,254,218,99,201,115,255,255,255,255,255,255,255,255},
+  {34,34,34,34,34,34,34,34,34,17,17,34,34,17,17,34,18,17,17,33,18,17,17,33,18,17,17,33,18,17,17,33,18,17,17,33,18,17,17,33,18,17,17,33,18,17,17,33,34,17,17,34,34,17,17,34,34,34,34,50,32,34,34,34,34,34,34,34,35,34,34,34,34,17,17,34,34,17,17,34,18,17,17,33,18,17,17,33,18,17,17,33,18,17,17,33,18,17,17,33,18,17,17,33,18,17,17,33,18,17,17,33,34,17,17,34,34,17,17,34,34,34,34,34,34,34,34,34},
+  {20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,34,34,34,34,34,34,34,34,34,2,34,34,32,34,2,34,34,2,34,34,32,34,2,34,34,34,34,34,34,34,34,34,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51,20,17,52,51},
+  {17,17,17,17,17,17,17,17,17,0,0,17,17,0,0,17,1,0,0,16,1,0,0,16,1,0,0,16,1,0,0,16,1,0,0,16,1,0,0,16,1,0,0,16,1,0,0,16,17,0,0,17,17,0,0,17,17,17,17,33,18,17,17,17,17,17,17,17,18,17,17,17,17,0,0,17,17,0,0,17,1,0,0,16,1,0,0,16,1,0,0,16,1,0,0,16,1,0,0,16,1,0,0,16,1,0,0,16,1,0,0,16,17,0,0,17,17,0,0,17,17,17,17,17,17,17,17,17},
+  {19,17,49,17,49,163,81,165,149,85,103,173,238,204,95,165,5,75,0,0,0,0,192,161,154,0,103,173,238,204,15,160,145,75,103,173,238,204,207,161,149,75,103,173,238,204,207,161,147,75,103,173,238,204,207,161,221,221,221,221,221,221,221,221,81,163,51,165,51,51,49,17,145,242,79,72,132,120,102,95,1,0,0,0,0,0,0,80,147,242,79,72,132,120,102,175,147,242,79,72,132,120,102,63,147,242,79,72,132,120,102,95,147,242,79,72,132,120,102,95,221,221,221,221,221,221,221,221},
+  {16,0,0,224,205,239,0,153,16,0,0,0,188,239,128,121,112,66,184,15,208,14,128,121,118,104,20,254,8,0,144,72,71,119,119,203,238,0,153,32,48,55,39,215,253,14,0,0,0,214,119,28,219,0,0,0,8,0,6,48,115,64,0,144,152,116,96,52,55,23,114,0,128,33,78,44,17,70,96,0,96,6,43,111,96,221,144,103,115,0,239,110,182,235,144,65,115,0,224,32,114,203,14,17,39,0,0,64,230,204,15,0,96,254,0,220,189,206,13,32,119,0,0,187,238,206,0,0},
+  {255,17,18,255,236,204,255,255,253,1,16,255,173,238,255,185,253,17,17,255,237,206,223,203,248,31,17,241,141,237,111,188,204,255,255,255,239,254,183,216,198,255,15,168,255,255,221,204,247,95,133,100,248,255,205,198,255,255,138,107,150,255,255,152,255,255,127,107,251,79,240,255,255,255,255,86,255,82,86,243,255,255,255,255,95,69,82,243,255,255,255,255,111,71,36,242,255,255,255,255,47,67,70,242,255,255,255,255,255,35,103,245,255,255,255,255,251,95,67,244,255,255,240,255,141,240,47,255},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,64,66,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,2,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0},
+  {50,50,50,50,50,50,50,50,3,0,32,0,0,3,0,32,2,0,48,0,0,2,0,48,3,0,32,0,0,3,0,32,2,0,48,0,0,2,0,48,35,35,35,35,35,35,35,35,2,0,48,0,0,2,0,48,3,0,32,16,1,3,0,32,2,0,48,16,1,2,0,48,3,0,32,0,0,3,0,32,50,50,50,50,50,50,50,50,3,0,32,0,0,3,0,32,2,0,48,0,0,2,0,48,3,0,32,0,0,3,0,32,2,0,48,0,0,2,0,48,35,35,35,35,35,35,35,35},
+  {0,0,0,0,0,0,0,0,48,51,51,51,51,51,51,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,18,17,34,18,17,34,3,48,51,51,51,51,51,51,3,0,0,0,0,0,0,0,0},
+  {0,0,0,0,0,0,0,0,48,51,51,51,51,51,51,3,48,34,34,34,34,34,34,3,48,17,17,17,17,17,17,3,48,17,17,17,17,17,17,3,48,17,17,17,17,17,17,3,64,68,68,68,68,68,68,4,48,34,34,34,34,34,34,3,48,34,34,34,34,34,34,3,48,17,17,17,17,17,17,3,48,17,17,17,17,17,17,3,48,17,17,17,17,17,17,3,48,34,34,34,34,34,34,3,48,34,34,34,34,34,34,3,48,51,51,51,51,51,51,3,0,0,0,0,0,0,0,0},
+  {0,0,0,0,0,0,0,0,64,68,68,68,68,68,68,4,64,85,85,85,85,85,85,4,64,51,51,51,51,51,51,4,64,51,51,51,51,51,51,4,64,51,51,19,49,51,51,4,96,102,102,38,98,102,102,6,64,85,85,21,81,85,85,4,64,85,85,85,85,85,85,4,64,51,51,51,51,51,51,4,64,51,51,51,51,51,51,4,64,51,51,51,51,51,51,4,64,85,85,85,85,85,85,4,64,85,85,85,85,85,85,4,64,68,68,68,68,68,68,4,0,0,0,0,0,0,0,0},
+  {168,133,40,74,53,50,131,120,133,138,164,122,168,136,132,87,133,133,132,167,170,165,84,165,117,255,175,167,135,90,135,85,255,34,242,255,127,119,250,255,34,68,36,34,34,255,15,32,68,255,15,64,35,34,0,65,255,148,0,241,63,52,20,255,148,189,29,149,246,255,127,89,204,204,187,203,125,153,214,188,188,0,239,188,187,219,189,204,15,16,246,15,208,221,252,255,121,193,108,0,241,255,159,169,237,255,223,30,126,106,215,206,255,51,243,255,207,221,252,255,51,90,55,51,243,255,63,51},
+  {0,0,0,0,0,0,0,0,48,81,168,156,71,33,166,252,48,149,218,121,53,82,217,252,112,200,155,88,33,150,237,248,144,237,137,255,255,217,157,247,160,189,246,66,133,191,106,243,224,122,31,0,169,252,86,241,176,71,47,128,235,249,20,241,128,52,95,185,203,246,17,247,64,49,143,234,123,245,83,248,32,98,248,171,87,47,135,250,16,150,237,255,255,115,233,254,80,217,173,103,66,150,202,250,144,189,105,35,84,184,171,247,224,157,55,66,134,187,123,244,240,255,255,255,255,255,255,255},
+  {255,255,255,255,255,255,255,255,79,118,232,120,80,190,145,249,143,116,233,121,81,206,82,247,191,187,236,221,146,190,67,246,47,49,225,18,146,222,130,248,239,238,238,238,238,238,238,238,95,149,229,73,64,206,128,246,191,188,235,203,99,190,130,245,111,196,225,182,50,46,2,240,127,180,224,216,104,126,105,246,239,238,238,238,238,238,238,238,159,196,227,199,187,222,187,251,159,201,227,216,17,30,16,240,159,198,227,182,105,142,132,245,159,213,225,182,119,78,88,247,255,255,239,255,255,254,255,255},
+  {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,134,135,164,106,163,214,132,214,204,187,204,221,164,217,82,213,18,50,18,51,164,216,97,199,84,100,166,153,98,214,65,197,116,238,0,0,0,208,146,217,203,238,192,192,128,192,132,181,82,197,65,180,49,19,35,33,131,200,82,199,164,138,100,102,66,217,98,217,103,154,133,149,115,202,130,214,204,221,189,204,164,197,162,215,36,50,18,50,82,217,131,217,166,119,134,169,114,201,81,213,170,87,151,88,114,217,49,184,220,221,203,220},
+  {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,118,119,148,105,147,214,132,214,188,187,187,221,148,216,82,213,34,50,34,51,148,216,98,183,84,100,150,221,109,214,66,197,116,238,0,221,13,208,146,217,187,238,176,80,128,192,132,181,82,181,66,84,50,35,35,34,131,200,82,87,148,137,100,102,66,217,98,216,103,153,117,149,115,185,130,214,188,221,189,204,148,181,146,199,36,50,34,50,82,216,131,217,150,119,134,153,114,201,82,213,153,87,135,87,113,217,50,184,220,221,203,219},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,32,0,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,32,0,32,2,0,32,0,0,32,0,32,2,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,32,0,0,2,0,2,32,0,32,0,0,2,16,2,33,0,33,0,16,2,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,32,0,0,32,0,2,0,32,32,0,0,32,0,2,0,32,32,0,0,32,0,2,0,32,32,0,0,32,0,2,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,32,0,2,32,0,32,0,0,32,0,2,32,1,32,1,0,32,1,18,32,0,32,0,0,32,0,2,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,2,0,32,0,2,32,0,0,2,0,32,0,2,32,0,0,2,0,32,0,2,32,0,0,2,0,32,0,2,32,1,0,18,0,32,1,18,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,16,2,16,2,16,2,16,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,18,0,18,0,18,0,18,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,16,1,17,0,17,0,16,1,48,3,51,0,51,0,48,3,64,4,68,0,68,0,64,4,0,5,80,0,80,0,0,5,32,5,82,0,82,0,32,5,0,5,80,0,80,0,0,5,0,5,80,0,80,0,0,5,0,37,0,37,0,37,80,2,0,5,0,5,0,5,80,0,0,5,0,5,0,5,80,0,32,5,32,5,32,5,82,0,0,5,0,5,0,5,80,0,0,5,0,5,0,5,80,0,0,37,0,37,0,37,80,2,0,5,0,5,0,5,80,0},
+  {51,101,83,0,35,83,53,51,120,152,155,0,135,153,118,87,87,88,119,9,96,184,139,86,204,221,222,78,244,254,238,223,33,51,51,104,89,149,152,53,17,17,17,187,155,187,155,89,101,103,121,25,17,17,152,105,221,221,221,255,255,255,234,170,37,51,51,149,155,87,101,37,118,86,119,187,187,187,151,88,120,102,86,123,155,139,121,134,170,174,170,221,221,237,255,239,85,51,85,17,33,17,85,149,135,119,86,88,119,0,17,17,155,105,133,101,0,0,103,135,237,221,238,221,68,222,222,222},
+  {51,101,83,0,35,83,38,51,120,152,139,0,135,136,118,87,87,88,119,8,96,184,139,86,204,221,222,77,244,254,238,207,33,51,51,104,89,149,152,53,17,17,17,203,155,187,139,91,101,103,120,25,17,17,184,105,221,221,221,255,255,255,218,170,37,51,50,149,155,103,101,37,118,86,119,187,187,187,135,88,120,102,86,123,187,139,121,134,170,174,170,220,221,237,255,239,85,35,85,17,33,17,85,147,135,119,86,88,119,0,17,17,139,105,133,101,0,0,103,135,221,221,222,221,68,222,222,222},
+  {0,0,0,0,0,0,0,192,0,17,17,17,17,17,17,225,16,36,35,51,34,34,50,228,33,102,53,50,68,84,67,244,49,103,118,103,70,118,133,247,82,122,120,153,103,167,136,250,115,187,202,154,153,185,186,251,147,188,203,188,202,204,205,253,131,220,204,188,187,187,204,253,147,204,187,171,186,203,204,253,114,187,172,168,137,170,204,252,97,138,169,136,119,152,135,249,49,118,101,85,70,102,134,249,33,68,53,69,51,68,69,230,17,52,52,34,34,34,67,227,237,238,238,238,238,238,238,254},
+  {255,255,255,255,255,255,255,255,141,216,183,218,154,120,168,138,200,124,121,170,140,173,215,135,249,255,223,200,155,185,186,122,15,17,242,255,207,124,255,255,64,68,35,2,242,255,2,16,245,255,63,53,4,17,51,52,111,104,246,255,95,85,255,255,231,206,110,118,246,255,102,119,13,186,186,238,126,102,189,190,252,255,207,205,235,234,174,219,47,33,242,255,239,238,255,255,82,69,37,50,242,255,18,33,244,255,79,68,52,34,84,84,31,17,241,255,79,85,255,255,255,255,255,255,255,255,255,255},
+  {221,221,221,221,221,221,221,221,139,184,167,185,153,120,152,137,184,123,120,153,139,155,183,135,216,221,189,184,138,168,169,121,13,17,194,204,204,124,221,221,64,68,35,1,210,221,1,16,213,221,61,53,4,16,51,52,109,103,246,255,255,95,221,221,183,187,255,255,255,255,102,119,11,169,255,255,255,255,171,171,219,221,255,255,255,255,155,186,45,33,255,255,255,255,221,221,81,69,255,255,255,255,18,33,212,221,78,78,46,46,84,84,29,16,208,221,77,85,221,221,221,221,221,221,221,221,221,221},
+  {238,238,238,238,238,238,238,238,122,167,167,169,137,119,152,121,167,122,120,153,138,154,167,135,232,238,174,168,138,168,169,121,46,51,211,221,221,125,238,238,66,85,52,35,227,238,35,50,229,238,78,69,37,51,68,69,110,103,183,187,187,91,238,238,215,170,187,187,187,187,119,119,42,169,187,187,187,187,170,170,234,238,17,17,17,17,154,170,78,67,0,0,0,0,238,238,83,86,0,0,0,0,51,51,229,238,95,95,79,63,85,101,62,50,226,238,78,102,238,238,238,238,238,238,238,238,238,238},
+  {20,33,18,17,17,33,18,65,20,33,18,17,17,33,18,65,20,33,18,17,17,33,18,65,20,33,18,17,17,33,18,65,20,33,18,17,17,33,18,65,20,33,18,17,17,33,18,65,20,33,18,17,17,33,16,65,20,33,18,17,17,33,16,65,20,33,18,17,17,33,18,65,20,33,18,17,17,33,18,65,20,49,51,51,51,51,19,65,20,33,18,17,17,33,18,65,20,33,18,17,17,33,18,65,20,33,18,17,17,33,18,65,20,33,18,17,17,33,18,65,68,68,68,68,68,68,68,68},
+  {51,51,51,51,51,51,51,51,19,33,18,17,17,33,18,49,19,33,18,17,17,33,18,49,19,33,50,51,51,35,18,49,19,33,51,0,0,51,18,49,19,49,3,0,0,48,19,49,19,49,0,0,0,0,19,49,19,49,0,0,0,0,19,49,19,49,0,0,0,0,19,49,19,49,0,0,0,0,19,49,19,49,3,0,0,48,19,49,19,33,51,0,0,51,18,49,19,33,50,51,51,35,18,49,19,33,18,17,17,33,18,49,19,33,18,17,17,33,18,49,19,33,18,17,17,33,18,49},
+  {0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,18,17,17,17,17,33,0,0,66,68,68,68,68,36,0,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,18,17,17,17,17,33,0,0,66,68,68,68,68,36,0,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,18,17,17,17,17,33,0,0,66,68,68,68,68,36,0,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0},
+  {0,16,3,0,0,48,1,0,32,18,35,34,34,50,33,2,64,20,67,68,68,52,65,4,0,16,3,0,0,48,1,0,0,16,3,0,0,48,1,0,32,18,35,34,34,50,33,2,64,20,67,68,68,52,65,4,0,16,3,0,0,48,1,0,0,16,3,0,0,48,1,0,32,18,35,34,34,50,33,2,64,20,67,68,68,52,65,4,0,16,3,0,0,48,1,0,0,16,3,0,0,48,1,0,32,18,35,34,34,50,33,2,64,20,67,68,68,52,65,4,0,16,3,0,0,48,1,0},
+  {4,142,22,224,132,53,37,103,238,111,228,254,117,136,116,136,242,117,85,95,17,114,36,24,104,221,77,17,119,98,66,212,221,169,217,221,93,66,215,157,170,204,156,170,218,221,157,202,188,221,189,204,172,154,202,219,221,17,209,221,192,188,220,29,17,119,17,1,222,221,29,17,17,24,34,238,31,17,33,132,119,221,45,242,82,114,72,213,221,224,217,221,29,88,212,157,233,254,171,154,217,221,157,201,187,223,173,203,155,153,184,220,221,23,213,221,205,188,219,61,81,68,82,87,209,221,141,35},
+  {255,253,238,254,137,72,128,247,255,168,142,220,186,60,24,253,105,169,109,132,107,52,202,102,16,102,131,19,136,139,138,10,48,102,17,136,86,101,202,88,16,65,163,129,88,136,171,3,0,160,139,131,96,131,120,24,49,69,88,19,133,104,106,136,48,167,132,73,35,163,205,104,1,104,110,171,117,88,173,3,67,172,221,140,220,69,129,20,80,236,253,254,250,101,6,49,17,170,253,253,239,58,19,1,145,251,206,253,142,104,0,19,230,239,173,237,255,26,96,202,253,189,239,152,221,85,101,198},
+  {66,117,201,204,106,35,34,85,50,148,172,174,90,36,66,117,0,164,219,205,154,70,67,133,68,176,237,223,174,105,83,185,134,9,254,255,222,105,101,218,105,201,0,255,223,105,102,235,150,220,254,240,239,156,120,218,153,220,254,15,239,154,103,203,100,26,225,255,0,121,101,202,21,161,237,238,204,80,83,153,49,102,220,205,170,6,50,22,34,148,202,221,154,68,0,97,50,132,169,172,106,20,65,128,50,149,168,204,28,49,67,5,52,149,202,30,161,53,51,117,101,149,28,225,157,70,85,149},
+  {0,0,0,0,0,0,0,0,64,68,68,68,68,68,68,4,64,68,68,68,68,68,68,4,64,68,52,51,51,67,68,4,64,68,51,51,51,51,68,4,64,52,51,34,34,51,67,4,64,52,35,34,34,50,67,4,64,52,35,18,34,50,67,4,64,52,35,34,33,50,67,4,64,52,35,34,34,50,67,4,64,52,51,34,34,51,67,4,64,68,51,51,51,51,68,4,64,68,52,51,51,67,68,4,64,68,68,68,68,68,68,4,64,68,68,68,68,68,68,4,0,0,0,0,0,0,0,0},
+  {48,50,52,50,52,50,52,3,48,50,49,50,52,50,49,3,48,50,52,50,52,50,52,3,48,50,52,50,49,50,52,3,48,50,52,50,52,50,52,3,48,50,49,50,52,50,49,3,48,50,52,50,52,50,52,3,48,50,52,50,49,50,52,3,48,50,52,50,52,50,52,3,48,50,49,50,52,50,49,3,48,50,52,50,52,50,52,3,48,50,52,50,49,50,52,3,48,50,52,50,52,50,52,3,48,50,49,50,52,50,49,3,48,50,52,50,52,50,52,3,48,50,52,50,49,50,52,3},
+  {0,0,0,0,0,0,0,0,64,68,68,68,68,68,68,4,64,68,68,68,68,68,68,4,64,68,52,51,51,67,68,4,64,68,51,51,51,51,68,4,64,52,51,34,34,51,67,4,64,52,35,34,34,50,67,4,64,52,35,18,34,50,67,4,64,52,35,34,33,50,67,4,64,52,35,34,34,50,67,4,64,52,51,34,34,51,67,4,64,68,51,51,51,51,68,4,64,68,52,51,51,67,68,4,64,68,68,68,68,68,68,4,64,68,68,68,68,68,68,4,0,0,0,0,0,0,0,0},
+  {205,102,69,0,69,157,223,189,223,70,8,64,168,253,187,137,188,75,87,64,164,170,205,158,220,138,18,18,132,220,125,72,110,136,0,34,146,170,155,102,104,139,34,1,38,173,155,152,219,132,68,34,34,132,124,106,152,123,100,53,168,102,198,70,188,39,4,64,103,104,105,38,222,153,20,68,64,166,173,74,250,172,65,18,130,158,254,39,255,174,34,0,80,198,171,156,255,76,6,0,182,157,252,150,218,123,68,64,115,216,252,94,191,123,4,64,162,141,142,56,238,180,68,0,68,253,206,38},
+  {0,64,5,0,84,0,84,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,32,3,0,50,16,50,0,0,64,5,0,84,0,84,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,32,3,16,50,0,50,0,0,33,3,0,50,0,50,0,0,64,5,0,84,0,84,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,64,5,0,84,0,84,0},
+  {18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,19,18,0,33,18,0,33,49,19,18,0,33,18,0,33,49,19,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33},
+  {18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33},
+  {18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,48,35,1,16,50,3,33,18,51,51,1,16,51,51,33,18,48,35,1,16,50,3,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,3,33,1,16,18,48,33,18,48,33,3,48,18,3,33,18,0,51,49,19,51,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33,18,0,33,1,16,18,0,33},
+  {35,17,50,18,33,35,17,50,35,17,50,18,33,35,17,50,35,17,50,18,33,35,17,50,35,17,50,18,33,35,17,50,35,1,48,18,33,3,16,50,35,0,0,18,33,0,0,50,35,1,48,18,33,3,16,50,35,17,50,18,33,35,17,50,35,17,50,18,33,35,17,50,35,17,50,18,33,35,17,50,35,16,50,18,33,35,1,50,35,1,50,16,1,35,16,50,35,17,0,2,32,0,17,50,35,17,50,18,33,35,17,50,35,17,50,18,33,35,17,50,35,17,50,18,33,35,17,50},
+  {71,68,73,100,68,22,65,48,161,205,212,125,105,30,113,48,190,205,165,196,227,51,17,247,136,109,199,13,16,92,93,250,118,156,174,108,23,229,75,249,203,103,102,7,17,167,152,253,120,183,70,92,67,187,206,252,255,255,255,255,255,255,255,255,73,148,69,244,69,148,68,151,229,203,151,247,117,233,64,133,91,87,121,252,204,20,49,185,185,10,19,252,122,10,0,221,233,62,58,240,172,51,52,107,220,13,16,247,121,19,0,150,222,212,110,254,220,21,208,147,255,255,255,255,255,31,1,63},
+  {4,17,7,64,1,35,17,229,121,252,193,92,71,157,89,231,173,188,143,161,194,122,153,229,85,76,191,44,177,58,60,231,83,107,253,79,20,210,25,230,184,69,67,95,56,132,101,236,69,149,20,43,22,153,173,235,238,238,238,238,238,238,238,238,6,96,3,225,19,96,0,101,211,169,117,229,67,246,20,83,56,37,87,234,170,241,135,135,166,88,140,234,88,72,207,204,215,221,104,235,139,121,79,73,203,76,139,229,70,154,165,116,205,193,77,237,202,99,201,115,238,238,238,238,238,238,238,238},
+  {16,22,0,0,0,0,17,214,145,171,19,1,0,17,67,218,182,171,136,19,34,115,183,251,130,187,135,52,33,68,183,219,49,170,136,52,83,131,151,219,16,137,153,238,238,152,90,215,16,52,229,122,151,126,69,213,16,51,231,231,158,158,71,210,16,35,229,232,190,142,88,210,16,51,228,170,187,94,88,211,16,55,135,238,238,167,116,213,32,135,121,136,119,153,136,213,65,154,122,67,67,85,151,218,162,171,74,36,67,115,186,219,182,187,122,36,17,67,185,251,221,221,221,205,204,221,221,254},
+  {40,199,253,219,219,55,49,85,210,246,251,191,73,23,88,149,71,93,91,25,37,162,217,213,235,182,114,85,16,145,254,143,117,22,39,1,2,242,191,105,222,109,17,3,130,241,215,235,222,181,149,125,146,27,41,61,101,105,107,187,159,83,83,69,116,217,203,223,239,88,0,160,214,214,137,251,159,54,0,97,164,85,85,253,219,7,0,148,231,89,35,85,219,8,81,97,56,41,121,177,148,6,80,215,62,185,179,70,189,2,64,55,200,125,235,153,44,0,16,25,155,255,186,175,133,51,0,23},
+  {36,0,20,178,137,118,6,114,0,101,82,98,140,72,18,1,87,66,58,149,149,201,87,149,39,218,206,117,69,218,219,76,114,253,238,21,80,247,222,170,200,200,237,12,64,216,204,94,206,189,236,8,32,164,222,204,238,236,201,90,116,233,172,239,255,223,158,92,112,216,174,252,254,175,119,117,72,213,171,254,255,110,104,146,33,114,196,236,206,140,98,117,0,87,113,214,207,109,128,87,70,66,16,235,238,120,0,37,120,4,16,231,92,26,98,166,182,36,34,153,2,7,4,213,173,114,85,132},
+  {242,46,235,144,45,245,129,30,224,44,77,151,4,207,56,14,146,184,207,81,51,159,139,27,208,12,169,243,119,121,116,52,177,23,57,208,15,156,231,18,32,40,230,57,12,205,105,127,146,5,44,113,23,233,208,83,55,31,110,81,116,126,85,175,251,28,42,113,35,226,117,60,52,68,60,247,63,180,197,159,245,9,180,66,13,124,155,30,215,12,236,240,45,61,146,92,82,21,199,178,8,228,145,31,208,6,179,209,23,78,55,191,192,131,234,183,37,119,224,67,87,13,233,201,122,67,240,46},
+  {254,174,249,253,222,173,51,251,237,187,234,255,238,121,50,231,254,238,233,122,124,85,131,214,151,13,208,70,40,21,35,163,118,7,112,39,36,54,65,146,149,167,189,39,36,1,48,88,198,182,218,84,37,2,32,53,99,204,141,59,51,50,50,147,87,124,203,37,50,34,17,66,182,201,157,55,37,100,82,115,131,167,172,0,134,107,135,51,125,203,221,0,236,158,137,141,187,233,191,223,255,190,14,176,11,192,239,222,238,203,13,192,12,224,187,254,223,204,135,248,255,190,250,252,255,141,104,199},
+  {1,16,17,17,17,17,1,16,0,17,1,0,0,16,17,0,16,17,0,17,17,0,17,1,17,1,17,17,17,17,16,17,17,16,17,0,0,17,1,17,1,16,1,17,17,16,1,16,1,17,16,17,17,1,17,16,1,17,16,1,16,1,17,16,1,17,16,1,16,1,17,16,1,17,16,17,17,1,17,16,1,16,1,17,17,16,1,16,17,16,17,0,0,17,1,17,17,1,17,17,17,17,16,17,16,17,0,17,17,0,17,1,0,17,1,0,0,16,17,0,1,16,17,17,17,17,1,16},
+  {17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,0,17,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1},
+  {0,27,19,0,112,1,0,30,0,160,10,0,32,0,0,8,0,80,9,0,0,5,96,0,0,30,144,1,240,1,23,0,0,10,48,0,14,0,6,0,208,0,0,6,7,144,0,0,96,1,0,89,1,0,24,0,240,0,144,192,0,0,4,0,192,0,9,160,0,0,8,0,192,49,1,176,1,0,31,0,48,0,2,128,0,0,4,0,112,0,64,0,11,0,48,0,18,0,80,1,31,0,20,0,8,0,8,0,13,0,15,0,176,0,5,0,11,208,0,0,21,112,1,0,19,0,30,0},
+  {188,1,26,208,73,217,221,228,33,83,129,57,137,188,109,125,192,7,2,188,251,95,118,20,196,147,194,211,190,147,109,20,83,87,109,73,156,177,166,80,178,235,71,37,159,167,29,38,134,174,233,242,173,132,124,173,197,137,45,22,81,14,161,26,230,95,188,2,112,15,71,188,193,217,170,144,11,19,75,91,204,67,3,105,147,119,222,18,131,41,160,146,81,66,234,76,36,84,35,44,42,87,230,191,59,185,211,87,79,123,141,155,222,236,171,192,219,140,183,253,128,136,155,196,122,71,253,201},
+  {17,67,49,67,19,68,20,17,49,68,17,49,68,68,19,20,90,108,170,13,112,234,190,103,85,105,124,11,224,236,189,94,85,150,151,222,207,253,254,154,34,34,34,254,222,255,207,109,117,121,156,45,34,34,219,125,105,103,150,254,239,239,162,34,90,102,117,252,255,222,235,90,167,87,154,238,254,239,202,91,171,103,102,158,222,174,173,199,34,44,34,117,118,215,239,222,205,89,188,34,82,34,187,250,186,154,102,108,153,0,34,34,206,125,181,117,0,0,121,186,167,153,173,150,0,124,124,125},
+  {0,0,0,0,0,0,0,0,0,0,16,17,17,1,0,0,0,32,17,34,34,17,2,0,0,18,34,34,34,34,33,0,0,33,34,17,17,34,18,0,16,33,18,34,34,33,2,0,16,34,33,34,34,2,0,0,16,34,33,18,1,0,0,0,16,34,33,18,33,18,34,0,16,34,33,34,34,18,34,1,16,33,18,34,34,33,18,1,0,33,34,17,17,34,18,0,0,18,34,34,34,34,33,0,0,32,17,34,34,17,2,0,0,0,16,17,17,1,0,0,0,0,0,0,0,0,0,0},
+  {40,132,133,114,0,171,36,66,82,37,50,7,16,67,50,35,67,131,40,117,49,40,50,130,247,255,0,55,36,130,69,69,159,6,16,255,85,52,255,255,198,203,193,150,255,255,105,150,251,255,255,203,102,104,219,219,143,170,170,255,204,204,255,255,202,220,237,137,255,255,184,154,13,224,205,204,186,169,236,206,0,241,15,192,205,222,0,205,31,34,0,241,237,13,16,255,146,152,23,34,255,255,33,34,245,255,255,152,34,34,151,135,191,154,171,255,149,88,255,255,43,53,36,162,255,255,171,171},
+  {0,0,0,0,0,0,0,0,16,100,184,188,88,35,133,254,80,166,205,108,51,98,184,252,80,184,156,86,83,133,206,249,128,205,138,255,255,234,174,248,192,189,247,67,134,223,138,245,224,139,79,0,217,254,87,242,176,87,47,160,235,250,68,244,112,37,127,185,173,246,34,246,80,52,175,235,108,244,100,248,32,99,248,188,55,47,150,253,48,134,235,255,255,100,234,252,80,233,189,86,51,133,205,249,144,236,124,69,98,218,172,248,208,189,87,50,149,205,106,243,240,255,255,255,255,255,255,255},
+  {103,87,34,5,19,16,33,48,37,1,3,2,36,84,66,119,2,50,48,38,118,134,153,169,19,118,133,184,186,235,237,220,152,168,189,207,239,204,254,220,219,222,222,207,221,172,138,136,237,236,221,155,167,120,54,21,154,123,137,88,85,20,16,19,102,52,37,20,0,51,64,65,34,16,51,0,48,86,99,134,16,3,98,117,101,120,203,156,101,102,152,155,219,237,238,252,151,200,203,252,253,255,255,219,255,223,237,254,204,138,151,86,236,239,138,168,121,87,38,19,171,104,119,69,69,5,32,49},
+  {105,118,84,83,35,19,51,16,53,66,1,35,80,53,87,135,2,3,32,86,101,135,168,217,53,99,101,185,156,252,254,252,169,168,185,252,254,204,220,221,250,207,205,254,207,189,139,136,238,252,218,155,136,120,87,36,172,172,135,119,38,1,1,3,119,51,36,2,0,49,64,68,69,67,16,17,83,101,86,134,52,81,101,83,135,151,169,202,117,119,151,168,221,252,221,254,137,187,251,253,255,238,207,189,255,253,255,222,207,202,123,105,207,190,202,186,153,120,100,35,169,135,87,119,86,20,50,3},
+  {121,85,20,21,16,17,32,16,18,4,48,16,33,17,54,104,0,33,49,34,102,121,155,202,51,117,135,202,173,238,222,239,122,172,171,223,237,254,255,223,219,223,255,253,238,202,156,120,238,207,236,222,136,88,85,21,158,141,170,69,37,66,0,1,118,99,50,19,16,2,34,5,0,3,0,2,32,81,130,149,2,1,97,85,119,152,153,237,99,115,167,217,205,205,255,255,170,235,236,236,222,223,253,206,252,255,239,239,238,158,123,136,254,238,221,138,170,87,101,20,203,185,88,87,86,21,16,0},
+  {118,69,68,52,20,19,4,48,84,0,67,51,4,81,99,151,67,50,50,100,118,118,155,235,69,117,151,169,205,202,252,239,120,169,189,220,222,253,252,191,237,221,237,223,190,187,188,153,204,191,171,189,155,105,86,70,202,122,119,119,37,69,64,48,101,52,84,1,16,16,19,20,49,64,51,3,18,100,102,167,3,20,67,68,118,151,153,236,83,118,151,170,203,188,222,222,185,220,221,253,236,206,253,204,204,222,223,207,205,156,120,119,220,204,203,120,170,120,103,19,153,122,89,102,85,51,3,3},
+  {135,120,69,0,20,0,33,65,21,3,48,16,50,101,67,119,20,18,84,69,133,169,184,187,97,87,152,186,170,220,204,222,169,187,187,254,237,255,223,206,205,204,237,236,238,188,169,136,236,236,172,154,170,135,72,70,171,153,121,85,68,5,32,0,88,119,83,48,16,34,18,66,68,66,48,64,20,69,103,120,0,32,34,101,149,169,203,188,119,103,168,169,219,190,207,205,154,185,203,206,222,255,219,173,238,237,235,219,187,172,169,106,207,188,173,187,121,103,69,38,155,153,137,85,84,84,19,36},
+  {136,53,52,49,3,19,1,67,53,2,49,1,1,52,134,153,48,4,36,71,83,185,155,219,37,135,118,154,186,206,255,253,152,187,206,237,222,223,255,187,219,223,239,222,205,204,188,170,237,239,221,174,139,136,86,69,155,185,154,120,53,4,2,16,85,70,34,52,49,17,65,52,68,34,3,50,80,102,118,134,3,66,98,68,135,168,217,253,86,85,153,217,169,238,222,239,170,185,189,220,223,255,223,171,236,255,255,207,207,170,169,138,252,239,155,157,154,87,38,68,154,153,151,104,34,3,19,1},
+  {136,87,86,0,1,3,67,51,35,33,2,1,20,34,82,150,3,1,64,102,132,169,187,217,68,70,102,137,185,190,191,222,121,216,221,237,223,221,239,239,222,255,255,205,189,203,141,135,255,237,235,137,152,120,55,69,186,136,120,55,102,2,17,0,72,55,68,66,32,2,16,65,16,16,0,0,64,67,116,103,32,65,50,53,117,184,171,187,100,100,119,183,187,222,223,238,184,205,187,254,255,222,222,223,255,223,223,204,190,156,152,89,255,189,218,139,107,70,101,18,172,154,87,70,68,2,50,0},
+  {119,117,86,18,35,34,0,85,86,48,2,2,67,66,70,103,3,48,67,101,115,152,183,217,51,115,118,183,168,205,254,252,137,187,217,223,239,237,255,222,254,223,238,254,204,173,169,154,253,206,236,168,138,104,85,85,202,139,135,117,54,51,0,3,70,119,82,0,19,1,51,18,18,18,2,32,49,101,118,152,0,32,18,100,118,120,168,217,37,87,151,200,169,187,223,238,136,200,203,237,255,237,251,202,220,237,254,204,205,140,169,120,237,221,185,136,120,87,54,38,201,139,104,85,20,17,19,32},
+  {119,51,67,17,3,3,16,18,20,17,33,18,16,36,86,116,17,17,33,99,102,135,136,204,83,51,119,137,154,220,237,253,134,184,201,171,222,204,220,189,185,191,251,219,171,187,139,151,223,174,154,168,119,120,37,34,187,139,88,85,36,67,0,16,71,84,33,50,0,16,16,33,51,51,1,3,65,69,116,117,3,0,66,50,118,135,154,187,51,70,120,154,184,189,188,221,169,152,217,220,203,221,188,189,190,255,189,220,154,188,123,120,205,221,186,153,87,87,85,34,137,121,120,68,52,51,33,50},
+  {103,117,36,17,36,18,65,84,66,65,33,1,35,83,115,103,48,34,84,53,119,152,184,169,82,68,118,170,171,172,189,251,135,170,236,221,255,207,253,173,234,254,253,204,189,188,140,136,222,207,174,172,136,87,71,84,203,152,135,117,37,36,18,33,87,55,68,2,35,16,17,36,19,1,18,48,50,85,134,119,33,3,100,68,117,152,169,218,83,87,134,168,173,203,191,220,135,170,169,221,223,252,174,186,191,223,205,191,251,217,171,121,187,250,218,171,121,101,67,35,153,154,120,70,85,51,0,49},
+  {118,102,66,48,0,2,1,64,17,48,0,49,2,52,117,117,35,48,19,68,69,134,186,156,99,118,133,185,186,203,254,252,121,152,222,223,207,239,237,239,204,207,254,253,189,187,184,105,252,189,237,172,139,136,69,20,190,186,120,86,53,49,0,2,87,53,37,17,48,48,3,35,16,48,51,3,51,50,84,151,18,20,99,118,84,134,188,249,53,84,153,200,168,223,255,221,135,218,252,204,223,253,223,234,220,255,207,252,191,140,136,135,206,191,218,170,136,103,52,37,170,137,86,100,18,20,49,2},
+  {121,84,54,48,1,2,32,34,5,1,35,48,1,67,102,86,35,33,20,84,103,120,153,155,83,84,102,136,188,219,223,252,134,187,188,218,253,253,253,222,237,206,252,205,203,204,169,119,239,239,170,186,123,87,54,19,158,136,120,88,53,18,1,32,101,55,5,68,3,16,18,34,49,16,32,0,64,53,119,119,64,0,17,100,133,135,169,188,67,102,134,135,219,220,253,205,184,171,174,252,255,239,172,174,254,254,223,251,223,202,138,121,238,237,158,121,119,87,102,84,138,121,104,103,21,4,17,18},
+  {122,100,36,19,3,48,49,96,19,18,2,17,17,38,130,135,1,17,18,119,100,153,169,218,65,118,152,200,202,237,237,221,138,187,219,236,255,206,255,188,252,204,222,205,222,205,186,153,236,205,188,171,153,138,54,115,170,155,120,102,52,18,4,16,135,40,68,51,34,35,33,102,33,48,18,50,34,103,152,185,34,36,66,131,136,169,201,203,98,152,138,170,188,222,238,255,168,219,205,253,220,223,222,206,254,222,221,239,238,187,172,154,206,222,188,154,136,90,102,22,172,137,154,118,116,49,18,48},
+  {105,85,35,50,35,34,0,51,52,0,0,0,0,35,100,86,32,0,51,52,69,150,169,189,52,69,132,169,202,203,237,253,167,154,250,206,253,238,255,191,191,254,239,221,191,191,189,86,255,238,189,174,119,119,86,20,157,137,138,120,83,35,0,0,68,53,4,52,51,32,19,68,4,50,50,51,50,64,102,152,2,3,35,52,152,151,170,237,69,119,136,151,250,206,255,254,153,153,238,253,223,238,174,218,251,255,223,191,206,169,154,103,255,189,234,155,150,101,69,4,187,153,118,100,34,0,0,0},
+  {120,103,54,3,33,16,48,19,20,18,0,16,33,36,82,84,17,50,68,67,84,136,135,217,65,53,101,120,170,189,219,255,118,171,235,188,237,254,222,171,173,238,253,223,222,186,122,121,254,239,202,173,154,86,102,70,141,137,104,52,18,51,19,2,72,51,33,20,32,18,3,49,19,0,50,3,64,34,52,104,32,19,35,82,116,121,187,189,53,69,105,171,235,187,238,255,119,185,238,221,206,189,189,171,190,235,253,190,190,187,155,119,253,175,158,139,137,52,69,65,171,136,102,70,2,17,16,18},
+  {105,102,19,17,48,0,18,16,33,32,34,17,52,68,117,132,2,65,51,68,100,135,135,171,66,116,148,151,203,252,253,189,135,139,218,251,219,252,253,173,187,254,255,253,187,156,123,119,252,251,187,136,139,104,55,67,203,171,120,104,36,19,51,2,71,37,70,65,51,3,33,19,51,16,48,0,17,97,70,103,32,18,67,100,118,167,136,235,68,70,135,184,221,187,255,255,136,187,220,207,255,191,223,173,204,255,253,253,187,154,139,105,253,189,156,187,137,104,84,68,171,105,103,71,68,3,17,32},
+  {138,56,51,51,49,16,66,82,5,37,33,2,19,19,82,119,48,16,49,51,119,153,170,188,84,85,135,183,203,204,206,235,154,170,186,189,191,190,239,188,188,255,255,220,239,206,186,139,251,220,220,154,122,121,118,82,170,171,137,85,39,53,0,48,88,51,85,53,16,0,2,84,53,19,0,2,51,99,88,117,19,16,33,85,117,151,203,235,83,87,167,153,237,253,203,220,169,186,203,207,254,255,255,172,254,206,203,223,190,156,169,119,239,204,189,170,120,135,117,85,186,154,87,117,39,51,0,0},
+  {51,51,51,51,51,51,51,51,51,51,34,34,34,34,51,51,51,146,120,247,127,135,41,51,51,249,86,229,94,101,159,51,35,104,78,209,29,228,134,50,35,87,196,192,12,76,117,50,35,87,1,187,187,16,117,50,35,239,205,171,186,220,254,50,35,239,205,171,186,220,254,50,35,87,1,187,187,16,117,50,35,87,196,192,12,76,117,50,35,104,78,209,29,228,134,50,51,249,86,229,94,101,159,51,51,146,120,247,127,135,41,51,51,51,34,34,34,34,51,51,51,51,51,51,51,51,51,51},
+  {22,98,8,96,20,98,22,81,41,146,89,162,75,178,92,196,156,201,158,199,124,217,157,217,255,255,255,255,255,255,255,255,128,8,98,40,96,22,112,25,180,57,178,73,148,91,162,76,217,157,216,158,198,158,231,140,255,255,255,255,255,255,255,255,24,129,4,112,24,128,7,129,75,195,75,149,76,150,43,164,109,232,157,230,158,214,124,233,255,255,255,255,255,255,255,255,97,41,97,9,97,24,144,5,147,108,150,105,195,76,182,105,217,158,201,142,219,158,203,141,255,255,255,255,255,255,255,255},
+  {255,255,255,255,255,255,255,255,255,255,238,238,238,238,255,255,255,126,70,212,77,100,231,255,255,199,51,194,44,51,124,255,239,54,27,161,26,177,99,254,239,52,161,144,9,26,67,254,239,36,1,136,136,16,66,254,239,205,154,88,133,169,220,254,239,205,154,88,133,169,220,254,239,36,1,136,136,16,66,254,239,52,161,144,9,26,67,254,239,54,27,161,26,177,99,254,255,199,51,194,44,51,124,255,255,126,70,212,77,100,231,255,255,255,238,238,238,238,255,255,255,255,255,255,255,255,255,255},
+  {38,144,22,83,41,145,41,82,75,147,58,163,60,147,89,164,142,199,157,233,124,234,173,201,255,255,255,255,255,255,255,255,82,22,129,38,97,25,146,56,197,76,195,59,197,57,165,108,218,158,234,109,198,108,234,124,255,255,255,255,255,255,255,255,55,97,39,96,25,146,22,98,107,147,92,163,91,198,106,163,156,233,172,230,109,215,156,214,255,255,255,255,255,255,255,255,128,53,98,57,99,21,98,6,181,90,149,74,163,60,149,76,201,125,201,157,233,172,233,124,255,255,255,255,255,255,255,255},
+  {208,195,2,80,16,210,39,88,146,80,108,192,242,34,214,190,10,160,148,55,142,240,145,90,186,122,7,12,224,37,47,14,229,91,164,0,110,32,152,10,190,132,13,117,240,235,238,32,196,83,14,199,210,118,65,3,183,112,144,199,248,41,47,237,88,8,173,109,194,104,24,124,165,123,129,235,182,115,242,18,114,44,47,38,32,35,130,242,82,109,232,110,54,64,226,142,218,84,206,77,114,38,228,232,221,7,11,187,224,152,153,212,238,186,93,57,53,231,54,65,8,69,9,224,89,98,34,47},
+  {66,165,178,102,184,41,47,242,213,179,129,13,101,161,118,100,202,233,58,132,34,47,109,222,156,233,215,35,37,38,97,62,73,53,85,55,228,45,47,168,227,9,227,146,3,45,134,163,41,66,178,72,135,7,45,164,60,145,237,192,206,227,105,197,35,47,33,84,33,167,62,158,14,38,47,174,76,215,146,164,155,109,22,174,133,163,120,42,39,193,141,92,179,217,14,90,140,204,140,152,136,156,122,69,124,5,83,38,30,164,125,130,202,74,234,129,177,101,168,35,39,155,45,47,74,109,65,28},
+  {94,64,251,205,220,191,4,229,21,247,74,18,33,164,127,81,112,111,49,151,121,19,246,7,244,6,231,173,218,126,96,79,171,113,127,2,32,247,23,186,79,227,7,181,91,112,62,244,45,215,82,159,249,37,125,210,28,169,176,9,144,11,154,193,28,169,176,9,144,11,154,193,45,215,82,159,249,37,125,210,79,227,7,181,91,112,62,244,171,113,127,2,32,247,23,186,244,6,231,173,218,126,96,79,112,111,49,151,121,19,246,7,21,247,74,18,33,164,127,81,94,64,251,205,220,191,4,229},
+  {189,73,37,190,105,169,211,173,59,16,59,54,172,142,7,42,128,110,12,131,10,236,117,78,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,67,220,193,23,219,201,25,134,94,5,134,5,153,36,158,85,122,179,41,204,168,38,161,178,189,178,181,120,228,18,119,94,48,206,229,153,11,131,88,146,110,179,76,28,204,105,236,109,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,174,37,135,71,172,182,168,204,212,205,16,20,45,59,43,228,56,172,58,146,107,237,80,163},
+  {0,0,0,0,0,0,0,0,64,100,216,171,70,34,150,253,32,134,218,121,37,99,201,251,80,201,187,87,49,134,220,249,112,237,123,255,255,200,142,246,176,156,247,34,134,191,121,243,176,122,63,0,200,252,86,242,176,71,47,144,219,249,34,244,112,53,95,201,155,247,49,246,80,65,143,190,120,244,83,249,32,82,248,155,87,79,134,251,64,134,190,255,255,99,169,254,96,231,155,88,36,150,188,250,128,204,121,21,98,216,188,247,192,171,70,50,150,218,106,244,240,255,255,255,255,255,255,255},
+  {255,255,187,186,255,31,133,245,255,175,238,222,205,255,19,242,0,255,173,189,235,186,255,255,99,255,223,220,170,190,79,117,2,255,239,205,222,254,95,52,64,159,255,205,205,254,32,85,244,143,242,255,255,255,70,112,240,40,118,63,246,255,32,18,240,99,102,143,40,243,2,1,243,72,70,47,133,255,255,63,255,131,242,255,248,255,172,255,255,133,247,255,255,255,186,255,255,63,245,255,255,255,255,255,255,79,255,255,255,255,245,255,255,255,255,255,255,255,81,255,255,255,255,255,255,95,130,255},
+  {0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,16,17,17,0,0,0,0,16,17,17,17,17,0,0,0,17,65,67,67,17,1,0,0,17,52,52,52,20,1,0,0,17,65,52,68,17,1,0,0,16,17,17,17,17,0,0,0,0,16,17,17,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0},
+  {0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0},
+  {0,0,0,2,0,0,0,0,0,0,50,50,2,0,0,0,0,48,50,50,50,0,0,0,0,50,50,50,50,2,0,0,0,48,50,50,50,0,0,0,0,0,50,50,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0},
+  {0,16,0,0,0,16,0,1,0,16,0,0,0,1,0,1,0,32,0,0,0,2,0,2,0,48,1,16,0,3,0,3,0,64,2,32,0,4,0,4,4,0,5,0,3,5,0,5,5,0,5,0,83,0,64,5,6,0,6,0,101,0,80,6,7,0,7,0,118,0,96,7,7,0,8,0,135,0,112,8,128,0,152,0,128,0,128,9,160,0,169,0,154,0,9,10,176,0,186,0,171,0,11,11,192,0,204,0,204,0,12,12,208,0,237,0,222,0,13,14,0,15,15,15,15,15,15,15},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,0,2,0,1,0,1,0,0,32,2,0,2,0,2,0,0,48,3,0,3,0,3,0,0,48,4,0,3,0,3,0,0,80,5,0,5,0,5,0,0,96,119,0,102,0,101,0,0,8,153,0,136,0,135,0,0,10,187,0,170,0,169,0,0,12,221,0,204,0,204,0,0,14,238,0,238,0,238,0,0,15,15,15,15,15,15,15},
+  {0,0,0,17,0,0,0,0,0,0,80,49,64,33,0,0,0,0,0,2,0,17,0,0,0,0,96,82,20,21,3,0,0,0,0,3,16,34,0,0,99,0,144,115,96,114,82,0,4,0,64,4,64,3,3,0,133,0,187,149,154,163,132,0,6,0,96,6,96,5,5,0,183,0,238,183,205,214,166,0,128,0,128,8,128,120,112,0,159,253,249,249,249,143,159,13,160,0,11,11,10,170,160,0,192,0,12,12,12,188,192,0,208,0,13,13,13,221,208,0,0,14,14,14,14,14,14,14},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,49,0,80,49,0,1,0,16,16,0,0,1,0,66,0,87,49,84,113,98,0,2,0,48,34,0,2,3,0,116,0,138,99,135,163,133,0,96,0,96,80,0,85,96,0,125,234,215,108,201,108,126,11,128,0,9,136,0,136,144,0,160,0,10,154,0,153,160,0,192,0,13,204,0,204,208,0,0,15,15,15,15,15,15,15},
+  {0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0},
+  {0,0,3,0,48,0,0,0,0,48,49,0,19,3,0,0,0,0,3,48,48,0,0,0,0,3,48,49,0,48,0,0,48,49,0,3,0,19,3,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0},
+  {0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0},
+  {0,0,0,0,0,0,0,0,0,0,17,17,17,0,0,0,0,16,18,18,18,1,0,0,0,17,18,18,18,17,0,0,0,16,17,17,17,1,0,0,0,0,16,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0},
+  {238,238,238,238,238,238,238,238,46,0,48,32,17,67,1,227,14,34,19,16,117,1,16,225,14,16,38,85,105,40,35,230,46,23,146,154,120,154,22,227,14,72,168,171,202,119,166,227,62,151,201,189,252,203,103,233,110,170,153,205,221,218,169,233,78,138,173,252,221,221,137,231,62,132,202,189,220,173,136,232,158,166,154,202,189,141,71,232,142,97,121,170,205,204,136,227,14,115,152,135,137,151,57,231,30,38,48,67,115,17,2,225,78,16,32,20,98,2,0,224,238,238,238,238,238,238,238,238},
+  {85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,1,17,16,17,0,0,17,35,52,6,1,2,50,2,0,33,57,39,115,115,48,97,120,105,139,169,134,56,56,51,152,187,252,255,251,255,249,255,251,255,223,202,159,153,143,186,191,221,189,188,204,137,168,171,204,221,219,204,186,138,121,154,154,219,189,203,153,171,151,120,138,201,187,186,105,51,119,132,150,151,51,103,49,103,18,115,54,120,35,55,2,35,2,18,19,51,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238},
+  {255,255,255,255,255,255,255,255,15,50,51,64,0,3,50,240,63,0,48,67,52,52,66,242,143,32,101,85,16,84,102,241,191,116,84,7,68,38,83,247,207,155,153,34,55,88,169,249,223,204,137,105,146,83,184,250,207,173,156,106,99,187,202,253,239,204,121,137,151,136,220,253,207,204,184,152,149,106,185,252,207,204,187,123,88,180,155,252,191,136,107,117,41,163,171,252,111,71,54,35,69,84,120,249,143,101,53,35,64,18,68,245,15,0,18,16,34,1,84,240,255,255,255,255,255,255,255,255},
+  {255,255,244,255,255,255,255,255,255,255,243,255,48,245,255,255,255,15,243,1,100,242,255,255,255,95,255,65,244,255,255,255,255,255,95,255,255,255,255,255,255,255,255,31,255,255,255,255,255,255,234,203,219,253,175,255,151,249,234,158,204,255,236,255,154,135,239,249,255,175,238,255,103,185,240,15,0,175,218,254,134,118,247,35,50,191,219,253,183,120,255,52,101,223,173,252,143,152,255,81,65,207,222,251,255,255,255,54,34,223,234,252,255,255,255,31,246,223,253,255,255,255,255,255,255,239,255,255},
+  {18,17,17,17,17,17,17,33,18,17,17,17,17,17,17,33,18,1,0,0,0,0,16,33,18,17,17,17,17,17,17,33,18,17,17,17,17,17,17,33,18,17,17,17,17,17,17,33,18,17,17,17,17,17,17,33,18,1,0,0,0,0,16,33,18,17,17,17,17,17,17,33,18,17,17,17,17,17,17,33,18,17,17,17,17,17,17,33,18,17,17,17,17,17,17,33,18,1,0,0,0,0,16,33,18,17,17,17,17,17,17,33,18,17,17,17,17,17,17,33,18,17,17,17,17,17,17,33},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,51,0,0,0,0,0,0,51,51,0,0,0,0,0,0,51,51,0,0,0,0,0,0,51},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,51,0,0,0,0,0,0,51,51,0,0,0,0,0,0,51,51,0,0,0,0,0,0,51},
+  {1,0,0,0,0,0,0,16,1,0,0,0,0,0,0,16,1,0,0,0,0,0,0,16,1,0,0,0,0,0,0,16,1,0,0,0,0,0,0,16,1,0,0,0,0,0,0,16,1,0,0,0,0,0,0,16,35,34,34,34,34,34,34,50,35,34,34,34,34,34,34,50,35,34,34,34,34,34,34,50,35,34,34,34,34,34,34,50,35,34,34,34,34,34,34,50,35,34,34,34,34,34,34,50,35,34,34,34,34,34,34,50,35,34,34,34,34,34,34,50,35,34,34,34,34,34,34,50},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,49,51,51,51,51,17,17,17,49,51,51,51,51,17,17,17,49,51,51,51,51,17,17,17,49,51,51,51,51,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,68,0,0,0,0,0,0,68,68,0,0,0,0,0,0,68,68,0,0,0,0,0,0,68},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,51,0,0,0,0,0,0,51,51,0,0,0,0,0,0,51,51,0,0,0,0,0,0,51},
+  {105,84,113,235,251,158,38,34,2,64,151,221,157,87,50,115,52,201,253,170,101,48,148,186,218,237,156,54,16,130,188,239,238,139,83,18,133,216,253,155,157,86,16,135,249,204,137,23,104,4,114,219,223,172,34,18,1,99,170,171,93,69,33,150,150,202,236,139,55,68,136,204,171,239,154,6,65,133,188,159,252,169,33,68,148,188,223,88,139,33,34,181,235,171,103,2,1,100,119,238,156,58,5,85,53,169,237,188,106,17,67,152,198,234,189,89,33,64,166,203,186,174,72,33,117,199,238,157},
+  {24,21,49,217,253,137,5,66,33,81,201,206,155,8,51,85,33,232,238,171,72,19,115,185,150,235,169,36,1,85,218,239,251,172,69,34,99,203,239,122,124,86,67,113,218,205,89,37,85,48,100,233,205,106,17,16,50,116,220,239,140,50,33,184,114,185,223,92,37,80,117,201,172,238,89,66,80,136,250,221,236,104,36,0,119,249,158,122,136,37,48,136,205,188,74,5,5,17,152,236,159,135,5,68,0,120,238,220,43,34,16,151,150,220,172,102,2,50,152,188,221,175,122,20,96,198,238,154},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,32,32,0,2,0,0,2,0,32,32,0,2,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,32,0,2,2,0,0,2,0,32,0,2,2,0,0,2,0,32,0,2,2,0,0,2,0,32,0,2,2,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,2,32,0,32,0,32,0,0,2,32,0,32,0,32,0,0,2,32,0,32,0,32,0,0,2,32,0,32,1,32,1,0,18,32,1,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,32,32,0,32,0,0,2,0,32,32,0,32,0,0,2,0,32,32,0,32,0,0,2,0,32,32,0,32,0,0,2,0,33,33,0,33,0,16,2,0,32,32,0,32,0,0,2,0,32,32,0,32,0,0,2,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,67,0,67,0,67,48,4},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,32,2,0,0,32,0,32,0,32,2,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,32,32,0,32,0,32,0,0,32,32,0,32,0,32,0,0,32,32,0,32,0,32,0,0,32,32,0,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,2,0,32,0,2,0,32,0,2,0,32,0,2,0,32,0,2,0,32,0,2,0,32,0,2,0,32,0,2,0,32,1,18,0,32,1,18,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0},
+  {0,0,0,0,0,0,0,0,64,0,64,0,0,4,4,0,64,0,64,0,0,4,4,0,64,0,64,0,0,4,4,0,64,0,64,0,0,4,4,0,67,0,67,0,48,52,4,0,64,0,64,0,0,4,4,0,64,0,64,0,0,4,4,0,0,52,0,52,0,52,64,3,0,4,0,4,0,4,64,0,0,4,0,4,0,4,64,0,48,4,48,4,48,4,67,0,0,4,0,4,0,4,64,0,0,4,0,4,0,4,64,0,0,52,0,52,0,52,64,3,0,33,0,33,0,33,16,2},
+  {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,0,15,0,240,0,224,0,0,0,14,0,224,15,224,15,240,0,254,240,208,254,192,14,239,0,236,224,192,237,176,13,222,15,219,208,191,219,175,11,189,254,186,176,157,186,157,250,171,220,169,175,139,169,139,217,154,186,152,157,122,135,106,183,120,169,118,123,104,118,88,150,103,135,101,105,70,85,70,117,85,102,84,87,52,67,52,83,52,68,51,53,35,34,35,50,34,50,34,35,17,17,17,17,17,17,17,17},
 };
 const uint16_t tex_pal[217][16] = {
-  {0x8C71,0x8410,0x7BEF,0x73AE,0x6B4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xDDD5,0xD511,0xB4D2,0xB44F,0xA470,0xA3EE,0xABAC,0x9B4B,0x8B6C,0x8B0A,0x72EA,0x6ACA,0x7268,0x6A27,0x5A27,0x51C5},
-  {0xD594,0xCD11,0xC4B0,0xBC6F,0xAC4F,0xABED,0xA40E,0xA38C,0x9B4B,0x8B6B,0x930A,0x82EA,0x7288,0x7268,0x6A47,0x6206},
-  {0xEF7D,0xDEFC,0xD6BA,0xCE7A,0xCE7A,0xCE59,0xCE59,0xC618,0xBDD7,0xB596,0xA534,0x9CF4,0x9CF4,0x94B3,0x8C51,0x6B6E},
-  {0xEF5D,0xDEFC,0xD6BA,0xD69A,0xCE7A,0xCE7A,0xCE59,0xC639,0xC618,0xB5B7,0xAD76,0xA514,0x9CF4,0x8C72,0x8410,0x6B6D},
-  {0xB5B5,0xAD54,0x9CF3,0x94B3,0x8C50,0x8430,0x8410,0x8410,0x7BF0,0x7BEF,0x7BAF,0x738E,0x6B4D,0x6B4C,0x632C,0x5B0C},
-  {0xB595,0xA513,0x9492,0x8C51,0x8431,0x8431,0x8430,0x8410,0x8410,0x8411,0x8410,0x7BF0,0x7BCF,0x6B6E,0x630B,0x5ACB},
-  {0xB5B6,0xAD55,0xA534,0xA514,0x9CD3,0x94B2,0x94B2,0x9492,0x8C71,0x8C51,0x8C51,0x8430,0x8430,0x8410,0x7BEF,0x73AE},
-  {0x0000,0xBC2B,0x9369,0x8430,0x6B6D,0x72C8,0x7AA7,0x59E5,0xAD55,0x9CD3,0x9492,0x8C71,0x8C51,0x8430,0x8410,0x73AE},
-  {0xBC2B,0x9369,0x8430,0x6B6D,0x72C8,0x7AA7,0x59E5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xAD75,0xA514,0x9CD3,0x94B2,0x94B2,0x9492,0x8C71,0x8C71,0x8C51,0x8430,0x8430,0x8410,0x8410,0x7BEF,0x73AE},
-  {0xFFFF,0xEFFF,0xE79E,0xBC2B,0x8430,0x9369,0x6B6D,0x7AA7,0x59E5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xBC2B,0xABCA,0x9369,0x836B,0x82E8,0x7AA7,0x630C,0x7287,0x7287,0x6A87,0x6226,0x5A05,0x59E5,0x51C4,0x4164,0x3123},
-  {0xA325,0x7A63,0x6A43,0x6203,0x52A2,0x51E3,0x59E3,0x51C3,0x49C3,0x51A3,0x49A3,0x49A3,0x41A3,0x4983,0x4183,0x4163},
-  {0xBC2B,0x8430,0x9369,0x9306,0x6B09,0x7AA7,0x52A2,0x6A43,0x6223,0x59E3,0x59E5,0x5203,0x51C3,0x49C3,0x4163,0x4163},
-  {0xAD75,0xAD55,0xA534,0xA514,0x9492,0x8C51,0x8410,0x7BEF,0x7BEF,0x73AE,0x6B4D,0x632C,0x630C,0x5AEB,0x52AA,0x528A},
-  {0xBCCC,0xB48B,0x9C29,0x7B07,0x72E7,0x6AA6,0x49E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x82E6,0x7AC6,0x6265,0x5A25,0x5205,0x49E4,0x49C4,0x4184,0x3943,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xD651,0xD610,0xCDAF,0xBD4E,0xBD4E,0xACCD,0xA4AC,0x9C4C,0x8C0B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xBC2C,0xB40B,0x9B89,0x8B28,0x7AA7,0x7286,0x6A25,0x4984,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xBB47,0xBB06,0xAAE6,0xA2A6,0xA2A6,0x9265,0x8A65,0x8A25,0x7A04,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x4962,0x4162,0x3942,0x30E1,0x28E1,0x28C1,0x1881,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x5567,0x4465,0x7B07,0x72A6,0x72A6,0x2363,0x1B23,0x7285,0x59E3,0x51C3,0x4982,0x1282,0x0000,0x0000,0x0000},
-  {0x0000,0x3AC7,0x2A45,0x51A3,0x21A4,0x28E1,0x1040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xCF17,0xA64F,0x6467,0x53A5,0x3A83,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3404,0x2BC2,0x2B63,0x2342,0x2A41,0x39E1,0x31A1,0x2981,0x29A1,0x2181,0x1940,0x2120,0x18E0,0x0000,0x0000},
-  {0x0000,0x7CC4,0x7463,0x7463,0x7443,0x63E2,0x8322,0x7AE1,0x7AE1,0x7AC1,0x72C1,0x7281,0x6A61,0x0000,0x0000,0x0000},
-  {0x0000,0x44A6,0x4486,0x3404,0x5B05,0x1B23,0x1282,0x6A65,0x6A65,0x6244,0x6224,0x59E3,0x51C3,0x51C3,0x1A42,0x4982},
-  {0x94B2,0x630C,0x52AA,0x3186,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x3B1E,0x329E,0x327E,0x325E,0x323E,0x2A3E,0x2A3E,0x2A1E,0x2A1E,0x2A1E,0x2A1E,0x29FE,0x29FE,0x29FE,0x29FE,0x29DE},
-  {0xEDA9,0xE4A6,0xE425,0xE3E4,0xDBA3,0xDB63,0xDB22,0xD302,0xD2E2,0xD2A1,0xD281,0xD261,0xD241,0xCA21,0xCA01,0xC9C0},
-  {0xF798,0xEF15,0xE6D6,0xE6D4,0xDEB4,0xE6B5,0xDEB3,0xDEB3,0xDE93,0xD693,0xD673,0xD672,0xD652,0xCE32,0xC5F1,0xBD8F},
-  {0xBB45,0xB304,0xB2E4,0xAAE4,0xB2C4,0xAAC4,0xAAC4,0xAAC4,0xAAC4,0xA2C4,0xAAA4,0xA2A3,0xA2A3,0xA283,0x9A63,0x9222},
-  {0xAD55,0x9CD3,0x9471,0x9451,0x8C51,0x9450,0x8C50,0x83EF,0x83EF,0x7BAE,0x738D,0x738D,0x6B4C,0x62EB,0x5ACA,0x52AA},
-  {0xFFFF,0xFFF6,0xFF69,0xFD65,0x8C71,0x7BEF,0x73AE,0x6B4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xE615,0xDD72,0xBCD0,0x8C71,0xAC6E,0x7BEF,0x73AE,0x6B4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x8C71,0x7BEF,0x73AE,0x6B4D,0x4228,0x39E7,0x31A6,0x31A6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xBCCC,0xBCCC,0xBCAC,0xB48B,0xB48B,0xB48B,0xAC8B,0xB46B,0xAC4A,0xA42A,0x9C29,0x9C09,0x72E7,0x6AA6,0x6265,0x3963},
-  {0x9BC9,0x9BC9,0x93A9,0x9388,0x7B07,0x6AC6,0x6AA6,0x6A86,0x6286,0x6265,0x49C4,0x41A4,0x4184,0x3983,0x3983,0x3963},
-  {0x8307,0x8307,0x82E7,0x7AE7,0x7AE6,0x7AC6,0x72C6,0x72A6,0x6AC6,0x62A6,0x62A6,0x5205,0x49E4,0x49E4,0x41A4,0x2902},
-  {0x51C3,0x51A3,0x49A3,0x4982,0x3922,0x3101,0x3101,0x30E1,0x28E1,0x28E1,0x28E1,0x20A0,0x1060,0x1040,0x1040,0x1020},
-  {0xEF7C,0xDEFB,0xCDF2,0xCDAF,0xCD8F,0xC58E,0xCD8E,0xC56E,0xC58F,0xC56E,0xBD2D,0xAC8B,0xA46A,0xA44A,0x4A27,0x20C4},
-  {0xFFFF,0xEF9C,0xEF7C,0xE77C,0xEF5C,0xEF5C,0xEF5C,0xE75C,0xE71B,0xDEFA,0xDEDA,0xDEDA,0xC617,0xA513,0x39E7,0x20E4},
-  {0xBC8C,0xBC6C,0xBC6C,0xBC4B,0xB44B,0xAC4A,0xB42B,0xB42B,0xA42A,0xB40A,0x9C29,0x9C09,0x7AC5,0x5A43,0x41C2,0x3962},
-  {0x7B04,0x7AC4,0x6A84,0x6284,0x5A43,0x5A43,0x5A23,0x5223,0x5A03,0x5203,0x5203,0x41A2,0x3982,0x3962,0x3962,0x3942},
-  {0x0000,0xB5B6,0xAD75,0xAD75,0xAD55,0xA514,0x9CD3,0x94B2,0x9492,0x8C71,0x8C51,0x738E,0x5ACB,0x52AA,0x528A,0x4A69},
-  {0x0000,0x9CD3,0x9CD3,0x8C51,0x52AA,0x4A69,0x4208,0x3186,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xB5B6,0xAD75,0xAD75,0xAD55,0xA514,0x9CD3,0x94B2,0x9492,0x8C71,0x8C51,0x738E,0x5ACB,0x52AA,0x528A,0x4A69},
-  {0x0000,0xD678,0xE64E,0xDE0B,0xAD55,0x9CF3,0xACCB,0xAC44,0x9492,0x8430,0x8410,0x7BEF,0x7BCF,0x738E,0x6B4D,0x632C},
-  {0xE70D,0xDECB,0xD68B,0xCE8B,0xCE6B,0xCE6A,0xCE4B,0xCE4B,0xC64B,0xCE2B,0xC62B,0xC60A,0xBDC9,0xAD48,0x8C66,0x8407},
-  {0x0000,0xFFFF,0xC7BF,0xB6BB,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x8C71,0x7BEF,0x73AE,0x6B4D,0x2AD1,0x2271,0x1AD8,0x2292,0x1A54,0x1237,0x1A17,0x1A33,0x2232,0x19F6,0x1194,0x1155},
-  {0x3AF1,0x32D2,0x2A93,0x2A73,0x2A4F,0x2233,0x2231,0x2A2F,0x2230,0x2212,0x21F2,0x2A0F,0x21EE,0x19B2,0x19AE,0x1971},
-  {0xE6F5,0xE6F4,0xE6D4,0xE6B4,0xDEB4,0xDEB4,0xDEB4,0xDEB3,0xDE93,0xDE93,0xD693,0xD673,0xD673,0xD652,0xCE52,0xCE32},
-  {0xF757,0xEF36,0xEF16,0xE6F6,0xE6D5,0xDED5,0xDEB4,0xDE94,0xDE93,0xD673,0xCE31,0xCE30,0xC610,0xC5EF,0xC5CE,0xBDAE},
-  {0xEF16,0xE6F5,0xE6D5,0xE6D4,0xDEB4,0xDEB4,0xDE94,0xDE93,0xD673,0xD673,0xD652,0xD652,0xCE31,0xC5EE,0xC5CF,0xC5CE},
-  {0xF757,0xEF37,0xEF16,0xE6F6,0xE6D5,0xDEB4,0xDE94,0xD673,0xD673,0xD652,0xCE31,0xCE2F,0xC5F0,0xC5EE,0xC5CF,0xBDAE},
-  {0xF757,0xEF16,0xEF16,0xE6F6,0xE6D5,0xDEB5,0xDEB4,0xDEB4,0xDE94,0xDE93,0xD673,0xD673,0xCE31,0xC610,0xC5CE,0xBDAE},
-  {0x0000,0xFFFF,0xEF7D,0xDEFB,0xCE79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9325,0x59A0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xB5B6,0x9CF3,0x9CD3,0x9CD3,0x94B2,0x9492,0x9492,0x9492,0x9492,0x8C71,0x8C51,0x8430,0x7BEF,0x73AE,0x73AE},
-  {0x0000,0xB5B6,0x7BEF,0x630C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xFFFF,0xF79E,0xEF7D,0xEF5D,0xE73C,0xE73C,0xE71C,0xDEFB,0xDEDB,0xD6BA,0xD69A,0xD69A,0xCE79,0xC638,0xC618,0xBDD7},
-  {0xE46A,0xDC29,0xDC29,0xDC09,0xDC08,0xDC08,0xDBE8,0xDBE7,0xDBC7,0xDBC7,0xDBC6,0xDBA6,0xDBA6,0xDB85,0xD364,0xCB44},
-  {0xC379,0xC359,0xBB18,0xBAF8,0xBAD8,0xBAD8,0xBAB8,0xB298,0xB277,0xB257,0xB237,0xB237,0xAA16,0xAA16,0xA1F5,0x99D4},
-  {0x8D3A,0x84FA,0x7CDA,0x7CB9,0x7499,0x7499,0x6C79,0x6C59,0x6438,0x6438,0x5C18,0x5BF8,0x5BD8,0x53D8,0x4B97,0x4357},
-  {0xCE06,0xCDE6,0xC5C5,0xC5A5,0xBD85,0xBD85,0xB545,0xB545,0xAD24,0xAD04,0xACE4,0xA4C4,0xA4A4,0x9C84,0x9443,0x8C23},
-  {0x5608,0x4DE7,0x4E07,0x45C7,0x45A7,0x45A7,0x4587,0x4566,0x3D46,0x3D46,0x3D26,0x3D26,0x3D06,0x3CE6,0x3CA6,0x3485},
-  {0xDD36,0xDD16,0xDCD5,0xD4B4,0xD494,0xD474,0xD453,0xD433,0xCC12,0xCBF2,0xCBD2,0xCBB1,0xCB91,0xCB70,0xC32F,0xC2EF},
-  {0x4A49,0x4A49,0x4A49,0x4228,0x4228,0x4228,0x4208,0x4208,0x4208,0x39E7,0x39E7,0x39C7,0x39C7,0x31A6,0x31A6,0x3186},
-  {0xB5D7,0xADB6,0xAD75,0xA575,0xA555,0xA534,0x9D14,0x9CF3,0x94F3,0x94D3,0x94D3,0x8CB2,0x8C92,0x8C92,0x8471,0x7C30},
-  {0x33F3,0x33D3,0x33D2,0x33B2,0x33B1,0x3391,0x2B91,0x2B70,0x2B50,0x2B50,0x2B50,0x2B30,0x2B2F,0x2B2F,0x2B0F,0x22EE},
-  {0x9298,0x8A58,0x8A38,0x8218,0x81F7,0x81F7,0x81F7,0x79D6,0x79D6,0x79D6,0x79D5,0x71B5,0x71B5,0x71B4,0x69B4,0x6993},
-  {0x3214,0x3213,0x31F3,0x31F2,0x31F2,0x31D2,0x29D1,0x29D1,0x29D1,0x29B1,0x29B0,0x29B0,0x2990,0x29AF,0x298F,0x216E},
-  {0x59C4,0x59C4,0x51C4,0x51A4,0x51A4,0x51A4,0x5184,0x4983,0x4983,0x4983,0x4963,0x4963,0x4163,0x4163,0x4143,0x4143},
-  {0x3A84,0x3A83,0x3A63,0x3A63,0x3A43,0x3243,0x3243,0x3223,0x3223,0x3223,0x3203,0x3203,0x29E3,0x29E3,0x29E3,0x29C2},
-  {0xA9E7,0xA9E6,0xA1C6,0xA1C6,0x99C6,0x99A6,0x99A6,0x99A6,0x9186,0x9185,0x8985,0x8965,0x8985,0x8965,0x8165,0x7945},
-  {0x2104,0x2104,0x20E3,0x20E3,0x18C3,0x18C3,0x18C3,0x18A2,0x18A2,0x18A2,0x1082,0x1082,0x1082,0x1082,0x1061,0x1061},
-  {0x0000,0xF7C0,0xCE80,0xB5E0,0x8C80,0x1420,0x1300,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x1420,0x1380,0xF021,0x1360,0x1300,0xD021,0xB821,0x9000,0x8800,0x6000,0x4800,0x3800,0x0000,0x0000,0x0000},
-  {0x0000,0x2E7F,0x2DFF,0x2D7F,0x1C9A,0x3C61,0x1420,0x1BA1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xE61F,0xDDDF,0xD55F,0xCC7F,0xC43F,0x8E4C,0x7E0B,0x6DA9,0x6D87,0x6568,0x5D27,0xBBBF,0xBB7F,0xBB3F,0xB2DF},
-  {0x0000,0xE75E,0xF793,0xDEFC,0x5486,0x4C25,0x3BA3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x6587,0x5D67,0x5D26,0x5CE7,0x54C6,0x4C85,0x4443,0xD1C2,0xD1A2,0xD160,0xC161,0xC161,0xC140,0x0000,0x0000},
-  {0x0000,0xE3C4,0xDB83,0x5526,0xE384,0xE382,0xD342,0xCAE2,0xD2C2,0x5505,0x4CC4,0x5485,0x4C64,0x4424,0x33E2,0x33A2},
-  {0x0000,0xF79E,0xE73C,0xDEDB,0xD69A,0x5505,0x4CE5,0x4CA4,0x4C65,0x4424,0x3C03,0x33C1,0x2B81,0x0000,0x0000,0x0000},
-  {0x0000,0xF6BE,0xEDFD,0xDD3B,0x5526,0x54E6,0x54C5,0x5486,0x4C45,0x4424,0x3BE2,0x33A2,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xF7BE,0xEF5D,0xDEFB,0xEF35,0xD623,0x5526,0x5486,0x4C45,0x3BE2,0x33A2,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xCCCF,0x936A,0x72A8,0x6ACA,0x4A07,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xCE79,0x94B2,0x7A08,0x5165,0xF945,0xC0E4,0x98A3,0xE082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xFFEE,0xFFEC,0xFFCD,0xFFCB,0xFFEA,0xFFE9,0xFFC9,0xFFC9,0xFFAA,0xFF88,0xFF08,0xF687,0xEE88,0xEE87,0xF646,0xE5C5},
-  {0xF79E,0xF79E,0xEF7D,0xEF5D,0xE73C,0xE71C,0xE71C,0xDEFB,0xDEFB,0xDEDB,0xD69A,0xC638,0xBDF7,0xBDF7,0xBDD7,0xB596},
-  {0xB596,0xAD55,0xA514,0x9CF3,0x9492,0x8430,0x8410,0x7BCF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xCE79,0xCE59,0xC638,0xC618,0xB596,0xAD55,0xA514,0x9CF3,0x9492,0x8430,0x8410,0x7BCF,0x0000,0x0000,0x0000,0x0000},
-  {0xB513,0xACF2,0xACD2,0x9C70,0x9C50,0x9C50,0xA3CD,0xA2C8,0x9AA8,0x9288,0x8A67,0x8247,0x7A26,0x7A26,0x7206,0x61C5},
-  {0x9CD3,0x9492,0x8C71,0x8C51,0x7BEF,0x7BCF,0x7BCF,0x73AE,0x738E,0x738E,0x6B6D,0x6B4D,0x630C,0x5AEB,0x5AEB,0x5ACB},
-  {0x8C71,0x52AA,0xDA23,0xA9A2,0x9162,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xDEDB,0xCE79,0xAD75,0xDA23,0xC9E2,0xC1E2,0xC1E2,0xB1C2,0xB1A2,0xA9A2,0xA1A2,0xA182,0x9162,0x8942,0x7921,0x0000},
-  {0x8C71,0xDA23,0xA9A2,0x9162,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xBCED,0xACC1,0x8C65,0x9C2A,0x8383,0x5B81,0x72E7,0x142C,0x32D1,0x6AA6,0x69A2,0xB8A2,0x9082,0x322B,0x3942,0x28E2},
-  {0xB5B6,0xAD75,0x9CD3,0x646C,0x8430,0x8410,0x63EC,0x6B6D,0x3B67,0x3B27,0x3B07,0x3AC7,0x4A89,0x4A69,0x3266,0x3226},
-  {0x398A,0x2928,0x18C5,0x1083,0x1083,0x1083,0x1083,0x1082,0x0863,0x0862,0x0862,0x0862,0x0862,0x0841,0x0841,0x0841},
-  {0x0000,0xFFF9,0xFEC0,0xFC60,0x9BEA,0x9BC9,0x93A9,0x93A8,0x7B07,0x6286,0x49E4,0x41A4,0x4184,0x3983,0x3963,0x3963},
-  {0x0000,0x2187,0x2167,0x1967,0x1966,0x1946,0x2125,0x1946,0x1946,0x1126,0x1105,0x1904,0x1904,0x10E4,0x08E5,0x10C3},
-  {0x0000,0xABC5,0xA384,0xA363,0xA344,0x9365,0x8B43,0x9324,0x8B05,0x7AE4,0x3184,0x3964,0x3164,0x3164,0x3164,0x2924},
-  {0x0000,0xABC5,0xA384,0xA363,0x9365,0x9B44,0x8B43,0x8B04,0x7AE4,0x7AC5,0x6A85,0x41E6,0x41E5,0x3164,0x2923,0x2103},
-  {0x0000,0xAD55,0xABC5,0x9B86,0xA363,0x9365,0x9B44,0x8B43,0x8B04,0x7AE4,0x7AA4,0x49E5,0x41E6,0x3184,0x2923,0x2103},
-  {0xFFFF,0xC73F,0x767F,0x5F7E,0x8C71,0x7BEF,0x73AE,0x6B4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xAF7D,0xA75D,0x9F5C,0x975C,0x975C,0x8F3C,0x873C,0x873C,0x7F1B,0x771B,0x6EFB,0x4EDA,0x1678,0x0637,0x0617,0x05B5},
-  {0xB42A,0xAB88,0xAB68,0xA347,0xA327,0x92A6,0x51C4,0x51C4,0x51A4,0x4983,0x4122,0x2902,0x18A1,0x18A1,0x1081,0x0840},
-  {0xCE59,0xBCCC,0xB48B,0x9C29,0x9347,0x72E7,0x7AC6,0x6AA6,0x5225,0x4983,0x2922,0x2902,0x2102,0x18C1,0x18A1,0x1061},
-  {0xCE79,0xBCCC,0xB48B,0x9C29,0xB3A9,0x8327,0x72E7,0x72C6,0x6AA6,0x5225,0x3943,0x2102,0x28E1,0x18A1,0x18A1,0x1061},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3E60,0x0722,0x06A2,0x0642,0x05C2,0x3DA1,0x05A2,0x0562,0x2D42,0x3CC2,0x14C2,0x04A2,0x1462,0x0380,0x0340},
-  {0x0000,0x0661,0x15C1,0x4521,0x0542,0x6481,0x3CE2,0x14A2,0x04A2,0x5422,0x3C22,0x0421,0x0B80,0x02C0,0x0260,0x01C0},
-  {0x0000,0x5DE0,0x4DA1,0x4561,0x5CC1,0x0621,0x05A1,0x2C82,0x04E1,0x5422,0x1C21,0x0BE1,0x0B80,0x1300,0x0A80,0x0A00},
-  {0x0000,0x5DC0,0x35E1,0x0600,0x0540,0x64C1,0x6421,0x2461,0x63E1,0x3B81,0x13A1,0x0B20,0x1280,0x1220,0x09A0,0x0120},
-  {0x0000,0x6E20,0x5DE1,0x6561,0x7CA1,0x6C21,0x4CE2,0x33E1,0x5B61,0x3B41,0x1360,0x1300,0x2AA0,0x1200,0x0120,0x0060},
-  {0x0000,0x7E00,0x8580,0x8D20,0x7521,0x7CA1,0x6C01,0x3C41,0x63A2,0x5B61,0x3B61,0x2320,0x2AC0,0x2A60,0x11C0,0x00E0},
-  {0x0000,0x9DA0,0x9520,0x8CA1,0x7C41,0x7BE1,0x8362,0x6381,0x4381,0x5321,0x5281,0x32C0,0x2A40,0x2980,0x1160,0x08A0},
-  {0x9B48,0x7AA6,0x6B6D,0x52AA,0x5A05,0x61E4,0x4142,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x71E2,0x69C2,0x61A2,0x5982,0x5162,0x4963,0x4941,0x4921,0x4121,0x4121,0x4101,0x3901,0x38E1,0x30C1,0x28A0,0x28A0},
-  {0x9492,0x8C51,0x8410,0x7BCF,0x73AE,0x6B6D,0x6B4D,0x632C,0x5AEB,0x5ACB,0x52AA,0x4A49,0x39C7,0x3186,0x2965,0x2124},
-  {0xBDD7,0xAD55,0xA514,0x94B2,0x8C51,0x8410,0x7BCF,0x73AE,0x6B6D,0x632C,0x5ACB,0x528A,0x39E7,0x3186,0x3186,0x2945},
-  {0xBDF7,0xA514,0x8410,0x7BCF,0x6B6D,0x630C,0x5ACB,0x528A,0x4228,0x39E7,0x3186,0x2965,0x2945,0x2124,0x1082,0x0000},
-  {0xEF5D,0xEF4E,0xF545,0xAD55,0x8C71,0x7BEF,0x6B6D,0x5AEB,0xE800,0x528A,0x4208,0x39C7,0x3186,0x2965,0x18E3,0x0000},
-  {0xAC89,0xA448,0xA408,0x8BA8,0x9367,0x9366,0x8B46,0x8B46,0x82C5,0x7AC5,0x72A5,0x7A84,0x6244,0x6A24,0x59E3,0x49C3},
-  {0x0000,0xB4AA,0xAC69,0xA428,0x93A7,0x9367,0x9366,0x8B46,0x8B46,0x6B6D,0x82C5,0x7AC5,0x7A84,0x6A44,0x6224,0x51C4},
-  {0x0000,0xAC4A,0xA409,0x8B87,0x6A85,0x6A85,0x6265,0x6265,0x5A44,0x5A24,0x49C4,0x49A3,0x4183,0x4183,0x0000,0x0000},
-  {0x0000,0xA534,0xAC4A,0xA409,0x8B87,0x8368,0x6B4D,0x8328,0x72E6,0x6AA7,0x6A85,0x6265,0x5A45,0x5205,0x49E4,0x41A4},
-  {0x8C71,0x7BEF,0x73AE,0x6B4D,0xB820,0xA820,0x9000,0x8800,0xF800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xFFFF,0xFFFF,0xEFFF,0xE79E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xFFFF,0x8DFF,0x755F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x1484,0x1464,0x1444,0x1444,0x1424,0x1403,0x1403,0x13E3,0x13E3,0x0BA3,0x0B43,0x0B03,0x0AA2,0x0141,0x0000},
-  {0x0000,0x1464,0x1464,0x1424,0x1403,0x13E4,0x13E3,0x0BA3,0x13A3,0x0B63,0x0B03,0x0AC2,0x0AA2,0x0A02,0x09C2,0x0040},
-  {0x0000,0xDEF4,0xDEF4,0xDEF4,0xDEF3,0xDEF3,0xDEF3,0xDEF3,0xDEF3,0xDED3,0xD6D4,0xD6B3,0xD6B3,0xD6B3,0xD6B3,0x0B03},
-  {0xAD98,0xA556,0xA556,0xA536,0xA536,0x9D36,0xA536,0x9D35,0x9D16,0x9D15,0x9D15,0x9D15,0x9D15,0x9CF5,0x94D4,0x8CB4},
-  {0x0000,0xE77B,0xAECE,0x9766,0x960C,0x7605,0x854B,0x6C28,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xE529,0xE540,0xE483,0xD3E2,0xB420,0xA2C1,0x3960,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xE529,0xE483,0xD3E2,0xA2C1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xE529,0xE483,0xD3E2,0xA2C1,0x4080,0x2800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xF7EA,0xF7C5,0xD728,0xEEE6,0xDEA6,0xC647,0xEDA2,0xC607,0xBDC6,0xD548,0xB566,0xE4C2,0xE483,0xD3E2,0xA2C1,0x4800},
-  {0x9CD3,0x8C6F,0x8C51,0x7C4B,0x7BEF,0x7409,0x7BCF,0x6BE9,0x73AE,0x6B6D,0x6389,0x5B48,0x5B0A,0x5307,0x5AEB,0x52E7},
-  {0x9CD3,0x9492,0x8C71,0x8C51,0x8410,0x7BEF,0x7BCF,0x7BCF,0x738E,0x6B6D,0x6B4D,0x632C,0x630C,0x5AEB,0x5AEB,0x5ACB},
-  {0x9CF3,0x9CD3,0x94B2,0x9492,0x8C71,0x8430,0x7BCF,0x73AE,0x738E,0x738E,0x6B4D,0x632C,0x5AEB,0x5AEB,0x5AEB,0x5ACB},
-  {0xA3CC,0x9BAB,0x9BAB,0x938B,0x938B,0x936A,0x936A,0x936A,0x936A,0x8B4A,0x8B4A,0x8B4A,0x8B29,0x7AE9,0x72A8,0x6A87},
-  {0xD58F,0xD58F,0xD58F,0xD58F,0xCD6F,0xCD6F,0xCD6F,0xCD6F,0xCD6F,0xCD6F,0xCD4F,0xCD4F,0xCD4F,0xCD4F,0xAC8C,0x0000},
-  {0xDEB9,0xDEB9,0xDEB9,0xDEB9,0xD699,0xD699,0xD698,0xD698,0xD678,0xC617,0xC5F6,0xBDF6,0xBDD6,0xBDD6,0xBDD5,0xBDB5},
-  {0xD5B6,0xB924,0xB904,0xB904,0xB903,0xB903,0xB0E3,0xB0E3,0xB0E3,0xB0E3,0xB0C3,0xB0C3,0xB0C2,0xA8A2,0xA8A2,0xA882},
-  {0xBDC5,0xBDC5,0xB564,0xA524,0x9CE4,0x9CC4,0x7C24,0x7BE4,0x6383,0x5B84,0x5B23,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xBDC5,0xB5C5,0xB584,0xB564,0xADA5,0xA525,0x94C5,0x9484,0x8C64,0x8C64,0x8444,0x7C24,0x73C4,0x6383,0x5B23,0x5B23},
-  {0x0000,0xAD55,0x8410,0x738E,0x6B4D,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x93AF,0x7B8F,0x836E,0x7B4D,0x734E,0x730D,0x6B0C,0x6B0D,0x6B0C,0x6AEC,0x6B0D,0x6AED,0x62EB,0x62EB,0x62CB,0x5AAA},
-  {0xB40C,0x9369,0x83AE,0x732E,0x6B2D,0x6B0D,0x6B0C,0x6B0D,0x62EC,0x7AA7,0x62CB,0x5A06,0x59E5,0x49A4,0x3943,0x28E2},
-  {0x0000,0x94B2,0x7BEF,0x6B4D,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xCFBC,0x16EC,0x8C71,0x8430,0x7BEF,0x73AE,0x03C3,0x73AE,0x6B6D,0x6B4D,0x6B4D,0x632C,0x630C,0x630C,0x5ACB,0x52AA},
-  {0x9775,0x7F53,0x6F52,0x6730,0x5F50,0x572F,0x4F0F,0x4EEE,0x4ECE,0x46AD,0x3E6C,0x366A,0x364B,0x360B,0x35CA,0x2D89},
-  {0x9B29,0x9B09,0x9B08,0x9B08,0x9AE8,0x92E8,0x9AE8,0x92E8,0x92E8,0x92C8,0x92C8,0x92C8,0x92C8,0x8AC7,0x92A7,0x92A7},
-  {0xD5B4,0xD5B4,0xD5B4,0xD5B4,0xD5B4,0xD594,0xD594,0xD594,0xD594,0xD594,0xD594,0xCD94,0xD574,0xCD74,0xCD73,0xCD73},
-  {0xA2C5,0xA2A5,0xA2A4,0xA2A4,0xA2A4,0xA2A4,0xA285,0xA284,0xA284,0xA284,0x9A84,0xA284,0x9A84,0x9A84,0xA284,0x9A84},
-  {0x9AED,0x9ACD,0x92CD,0x92CD,0x92CD,0x92CD,0x92CD,0x92CD,0x92AD,0x92AD,0x92AD,0x92AD,0x92AD,0x92AD,0x92AD,0x92AD},
-  {0x7371,0x7371,0x7371,0x7371,0x7371,0x7371,0x7371,0x7371,0x7371,0x7371,0x7371,0x6B71,0x7351,0x6B51,0x6B51,0x6B51},
-  {0xBC44,0xBC44,0xBC44,0xBC24,0xBC24,0xBC24,0xBC24,0xBC24,0xBC24,0xBC24,0xBC24,0xBC04,0xBC04,0xBC04,0xBC04,0xB404},
-  {0x6BC7,0x6BC6,0x6BA6,0x6BC6,0x6BA6,0x6BA6,0x6BA6,0x6BA6,0x63A6,0x63A6,0x63A6,0x63A6,0x63A6,0x63A6,0x6386,0x6386},
-  {0xA28A,0xA28A,0xA28A,0xA28A,0xA269,0xA26A,0xA269,0xA269,0xA269,0xA269,0xA269,0xA269,0x9A69,0x9A49,0x9A69,0x9A49},
-  {0x3964,0x3964,0x3944,0x3944,0x3944,0x3944,0x3944,0x3944,0x3944,0x3944,0x3944,0x3144,0x3944,0x3944,0x3944,0x3944},
-  {0x8B6C,0x8B6C,0x8B6C,0x8B6C,0x8B6C,0x8B4C,0x834C,0x834C,0x834C,0x834C,0x834C,0x834C,0x834C,0x834C,0x834C,0x834B},
-  {0x5AEB,0x5AEB,0x5AEB,0x52EB,0x52EB,0x5ACB,0x52CB,0x52CB,0x52CB,0x52CB,0x52CB,0x52CB,0x52CB,0x52CB,0x52CB,0x52CB},
-  {0x7A4B,0x7A4B,0x7A4A,0x7A4B,0x724B,0x724A,0x722A,0x722A,0x722A,0x722A,0x722A,0x722A,0x722A,0x722A,0x722A,0x720A},
-  {0x49EB,0x49EB,0x49EB,0x49EB,0x49EB,0x49EB,0x49CB,0x49CB,0x49CB,0x49CB,0x49CB,0x49CB,0x49CB,0x49CB,0x41CB,0x49CB},
-  {0x51A4,0x49A4,0x49A4,0x49A4,0x49A4,0x49A4,0x49A4,0x5184,0x4984,0x4984,0x4984,0x4984,0x4984,0x4984,0x4984,0x4984},
-  {0x4AA5,0x4AA5,0x4AA5,0x52A5,0x4AA5,0x4AA5,0x4AA5,0x4AA5,0x4A85,0x4A85,0x4A85,0x4A85,0x4A85,0x4A85,0x4A84,0x4A85},
-  {0x9206,0x9206,0x91E6,0x91E6,0x89E6,0x89E6,0x89E5,0x91E5,0x89E5,0x89E5,0x89E5,0x89C5,0x89C5,0x89C5,0x89C5,0x89C5},
-  {0x20C2,0x20C2,0x20C2,0x20C2,0x20A2,0x20A2,0x20A2,0x20A2,0x20A1,0x20A2,0x20A2,0x20A1,0x20A1,0x20A2,0x20A1,0x20A1},
-  {0xC2E7,0xBAE7,0xBAE7,0xBAE7,0xB2E7,0xB2C7,0xB2C7,0xAAC7,0x9B07,0x9AE7,0x9AC7,0x6B4B,0x6B2B,0x6B2B,0x6AC9,0x4A27},
-  {0x8C2F,0x8C2F,0x8C0E,0x8BEE,0x7B8C,0x6B4B,0x6B2B,0x6B2B,0x6B0B,0x6B0A,0x62EA,0x5289,0x5248,0x4A48,0x4A28,0x4A27},
-  {0x6266,0x6266,0x6266,0x5A46,0x5A46,0x5A46,0x5A46,0x5A25,0x5225,0x5205,0x4A05,0x4A05,0x3963,0x3143,0x2922,0x18A1},
-  {0x49E4,0x49E4,0x49C3,0x3983,0x3963,0x3963,0x3143,0x3143,0x3142,0x3122,0x2902,0x20E2,0x20C1,0x20C1,0x18C1,0x18A1},
-  {0x0000,0xB5B6,0xAD75,0xAD75,0xAD55,0xA514,0x9CD3,0x94B2,0x9492,0x8C71,0x8C51,0x738E,0x5ACB,0x52AA,0x528A,0x4A69},
-  {0x0000,0xB5B6,0xAD75,0xAD75,0xAD55,0xA514,0x9CD3,0x94B2,0x9492,0x8C71,0x8C51,0x738E,0x5ACB,0x52AA,0x528A,0x4A69},
-  {0xCD21,0xC4E1,0xBCC1,0xB4C2,0xB4A1,0xB482,0xAC82,0xAC62,0xA442,0xA422,0x9C22,0x9C02,0x93E2,0x8BA2,0x8B82,0x8341},
-  {0xCD82,0xC522,0xB4C2,0xB4A2,0xAC62,0x9C02,0x8C02,0x93E2,0x93A2,0x8BA2,0xA302,0x8362,0xC222,0x99A2,0x6141,0x4921},
-  {0x2945,0x2104,0x18C3,0x10A2,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xBE9E,0xAE5F,0xAE5F,0xAE3F,0xAE3F,0xA63F,0xA63F,0xA61E,0xA61E,0xA61E,0xA61E,0xA61E,0xA5FE,0x9DFD,0x9DDD,0x9DBD},
-  {0x0000,0x5447,0x4BA6,0x4365,0x3B24,0x3B04,0x32C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x5447,0x4BA6,0x4365,0x3B04,0x32C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xDE1C,0xBCF7,0x9BD4,0x5526,0x748B,0x54C5,0x4CA5,0x6C2B,0x6C0A,0x5486,0x4C85,0x4C45,0x4404,0x3C03,0x33A2},
-  {0x0000,0xDE1C,0xBCF7,0x9BD4,0x5526,0x748B,0x5486,0x4C45,0x33A2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xCE59,0xBDF7,0xB5B6,0xB596,0xAD55,0x9CD3,0x8C51,0x8430,0x7BEF,0x7BEF,0x73AE,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xBDF7,0xB5B6,0xB596,0xAD55,0x9CD3,0x8C51,0x7BEF,0x73AE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xB5B6,0xA514,0x8C51,0x8410,0x7BEF,0x7BEF,0x7BEF,0x7BEF,0x7BCF,0x6B4D,0x630C,0x630C,0x630C,0x5AEB,0x5AEB},
-  {0x0000,0xB5B6,0xA514,0x8C71,0x8410,0x8410,0x7BEF,0x7BEF,0x7BEF,0x7BEF,0x7BCF,0x6B4D,0x630C,0x630C,0x630C,0x5AEB},
-  {0x0000,0x7222,0x2C40,0x1420,0x13E0,0x0B60,0x0AE0,0x0AA0,0x0300,0x0240,0x01E0,0xF021,0xD021,0xB821,0x9000,0x19A0},
-  {0x0000,0xF228,0x3A20,0x34E0,0x1420,0x1380,0x1360,0x1300,0xF021,0xD021,0xB821,0x9000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xF71E,0xEEBE,0xE5DE,0xDD1E,0x22C4,0x2A65,0x2204,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xF71E,0xEEBE,0xEE5E,0xEDFF,0xE5FE,0xE5DE,0xE57E,0xDD1E,0x9BF5,0x22C4,0x2AA5,0x2284,0x2264,0x2A65,0x2204},
-  {0xB2C4,0xAAC3,0xAAC3,0xAAA3,0xAAA3,0xAAA3,0xAAA3,0xA2A3,0xAAA3,0xA2A3,0xA2A3,0xA2A3,0xA283,0xA283,0xA283,0x9A83},
-  {0xBAE4,0xB2E4,0xB2C4,0xB2C4,0xAAC4,0xAAC4,0xAAC4,0xAAA4,0xA2A3,0xA2A3,0xA283,0x9A83,0x9A63,0x9263,0x9262,0x9242},
-  {0xB2C4,0xAAC3,0xAAC3,0xAAA3,0xAAA3,0xAAA3,0xA2A3,0xA2A3,0xA2A3,0xA283,0x9A83,0x9A83,0x9A83,0x9262,0x9242,0x9242},
-  {0xFFFF,0xFEB3,0xFDEB,0xC468,0x7369,0x7AC5,0x49C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0xB1A6,0xA965,0x9904,0x90E3,0x90A2,0x88A2,0x88A2,0x80A2,0x9082,0x8882,0x8082,0x8861,0x8041,0x8041,0x8082,0x7841},
-  {0x0000,0xA408,0x8B47,0x8B46,0x7244,0x6A03,0x59E3,0x9904,0x88A2,0x8882,0x8082,0x8062,0x8041,0x7020,0x6800,0x6800},
-  {0x0000,0xAC69,0x9367,0x9367,0x8B46,0x6A44,0x6203,0x7183,0x90E3,0x88A2,0x80A2,0x8062,0x8062,0x8041,0x6800,0x6800},
-  {0xF7BE,0xEF7D,0xE71C,0xD6BA,0xCE79,0xBDF7,0xB596,0xAD14,0xB208,0x9924,0x90A2,0x80A2,0x8861,0x7841,0x7020,0x6800},
-  {0x0000,0xEF7D,0xD6BA,0xBE18,0xB5B6,0xA46C,0x9366,0x8B46,0x6A44,0x6A03,0x6A03,0x9904,0x59E3,0x8061,0x7840,0x6800},
-  {0x0000,0xF7BE,0xEF7D,0xE73C,0xCE7A,0xCE59,0xB5D6,0xB5B6,0xB551,0xA448,0x9367,0x9366,0x8B46,0x6A03,0x61E3,0x51E3},
-  {0x433E,0x3AFE,0x3ABE,0x329E,0x325E,0x323E,0x2A3E,0x2A3E,0x2A1E,0x2A1E,0x2A1E,0x2A1E,0x2A1E,0x29FE,0x29FE,0x29FE},
-  {0xE4A6,0xDC05,0xDBC4,0xDBA4,0xD343,0xD322,0xD302,0xD2C2,0xCAA2,0xCAA1,0xCA61,0xCA61,0xCA41,0xC221,0xC201,0xC201},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x04A1,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x04C1,0x04A1,0x0441,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xDCC1,0x15A0,0x0D00,0x0E20,0x04C0,0x0440,0x0440,0x0420,0x5A02,0x1A81,0x03E0,0x03A0,0x0320,0x02E0,0x0260},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x04A1,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x04C1,0x04A1,0x0441,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xC66B,0xA587,0x0703,0x0603,0x05C5,0x05C2,0x0563,0x0543,0x9424,0x3D29,0x0462,0x0442,0x03A2,0x0000,0x0000},
-  {0x0000,0xFFFF,0xFFDC,0xF6F1,0xEDE7,0xE564,0xDCC2,0xD461,0xD3E1,0xCB80,0xCB40,0xC320,0xC2E0,0xBAA0,0xBA60,0xB220},
+  {0x8CD6,0x8496,0x7C75,0x7C34,0x7434,0x7434,0x7413,0x6BD2,0x6BB2,0x63B1,0x6391,0x6391,0x6391,0x6391,0x6371,0x3A4B},
+  {0xBC4E,0xBC2E,0xB40D,0xB3ED,0xB3ED,0xB3CD,0xABCD,0xABAC,0xABAC,0xA38C,0xA38C,0xA36B,0xA36B,0x9B4B,0x9B2B,0x930A},
+  {0xDCF1,0xD4D0,0xCCB0,0xC46F,0xC46F,0xC46F,0xBC4F,0xBC4E,0xBC4E,0xBC4E,0xBC4E,0xBC2E,0xBC2E,0xB40D,0x9B8C,0x932B},
+  {0xDEFC,0xDEFC,0xDEDB,0xD6DB,0xD6BB,0xD6BB,0xCE9A,0xCE7A,0xCE7A,0xC659,0xC639,0xC639,0xC618,0xBE18,0xBDF8,0xB5B7},
+  {0xEF9E,0xE71C,0xDEFC,0xDEFC,0xDEFC,0xDEFC,0xDEDB,0xD6DB,0xD6BB,0xD6BB,0xD69A,0xCE9A,0xCE7A,0xC659,0xAD55,0x9CF4},
+  {0x9CF3,0x9CD2,0x9CD2,0x94B2,0x9491,0x9491,0x9491,0x8C71,0x8C71,0x8C70,0x8C50,0x8C50,0x842F,0x840F,0x840F,0x7BCE},
+  {0xA533,0x9CF3,0x9CF3,0x9CF2,0x9CD2,0x9CD2,0x9CD2,0x9CD2,0x94B2,0x94B1,0x9491,0x9491,0x9491,0x8C70,0x73AE,0x6B6D},
+  {0xF74D,0xC5CA,0xEC59,0xBB74,0xCE79,0xC638,0xBDF7,0xAD75,0xAD55,0xA534,0xA514,0x9CF3,0x9CD3,0x94B2,0x9492,0x8C51},
+  {0x0000,0xBBEB,0xA308,0xA2C8,0x9AA7,0x9AA7,0x9267,0x9247,0xEF5D,0xDEDB,0xCE79,0xC618,0xAD75,0xA534,0xA514,0x9CF3},
+  {0xB4B0,0xC3AA,0xAB08,0xA2E8,0xA2C8,0x9AC7,0x9AA7,0x9AA7,0x9AA7,0x9A87,0x9A87,0x9287,0x9267,0x9267,0x9247,0x8A26},
+  {0x0000,0xEF5D,0xE73C,0xDEFB,0xD69A,0xCE79,0xCE79,0xCE79,0xC618,0xB596,0xAD75,0xAD75,0xA534,0xA514,0xA514,0x9CF3},
+  {0xF7BF,0xEF9F,0xEF9E,0xBD53,0xC3AA,0xAB08,0xA2E8,0xA2C8,0x9AA7,0x9AA7,0x9AA7,0x9A87,0x9A87,0x9267,0x9267,0x8A26},
+  {0xB349,0xAB29,0xAB28,0xAB08,0xA2E8,0xA2E8,0xA2C8,0x9A87,0x9267,0x9247,0x9247,0x8A47,0x8A26,0x8A26,0x8206,0x5964},
+  {0x9347,0x8B26,0x8B06,0x82E6,0x82C6,0x7AA5,0x7A85,0x7265,0x7265,0x7265,0x6A44,0x6A24,0x6204,0x6204,0x59E4,0x51C3},
+  {0xB4B0,0xC3AA,0xAB08,0xA2E8,0xA2C8,0x9AA7,0x9AA7,0x9A87,0x9A87,0x9287,0x9267,0x9247,0x8266,0x8A26,0x6224,0x51A3},
+  {0xC5F5,0x7C54,0x6BF2,0x6BD2,0x63B1,0x6371,0x5B50,0x5B50,0x5B30,0x5B2F,0x530F,0x530F,0x530F,0x530F,0x52EF,0x52EE},
+  {0xE4ED,0xDCCD,0xD48C,0xD48C,0xCC6C,0xCC6C,0xCC4B,0xC44B,0xC42B,0xC42B,0xBBEB,0x9328,0x9308,0x8B08,0x8B08,0x8AE8},
+  {0x8AED,0x82CC,0x82AC,0x82AC,0x82AC,0x828C,0x7A8B,0x7A8B,0x7A8B,0x7A6B,0x7A6B,0x724A,0x59E8,0x59C8,0x51C8,0x51A8},
+  {0xFFBB,0xFF9B,0xF75A,0xEF3A,0xEF19,0xE6F9,0xE6F9,0xE6D9,0xE6D8,0xDEB8,0xDE98,0xCE36,0xA512,0xA4F2,0x9CD1,0x9CB1},
+  {0xF54A,0xED2A,0xE50A,0xE4EA,0xDCC9,0xDCCA,0xDCA9,0xD4A9,0xD489,0xD489,0xCC69,0xABC7,0x9B67,0x9B46,0x9346,0x9326},
+  {0xE38D,0xDB4C,0xDB6C,0xD34C,0xD32C,0xCB2B,0xCB0B,0xCB2B,0xC30B,0xC30B,0xC30B,0xC2EB,0xAA89,0x9248,0x8A28,0x8A27},
+  {0x6A68,0x6248,0x6247,0x6227,0x6227,0x5A27,0x5A07,0x5A07,0x5A07,0x5A07,0x59E6,0x49A6,0x4185,0x4185,0x4165,0x3964},
+  {0x0000,0x6E08,0x5466,0x7AA6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x43E9,0x32E7,0x7AA6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEEF9,0x9EEB,0x7508,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x4586,0x3404,0x7AA6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x9E08,0x7466,0x7AA6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x33C5,0x7AA6,0x22C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x5ACC,0x52AB,0x528B,0x528B,0x4A8A,0x4A6A,0x4A6A,0x4A6A,0x4A4A,0x4249,0x4229,0x3A08,0x39E8,0x39C8,0x3186,0x10A3},
+  {0x441B,0x43FA,0x43DA,0x3BBA,0x3BBA,0x3BBA,0x3BBA,0x3B9A,0x3B9A,0x3B99,0x3B79,0x3379,0x3379,0x3359,0x3359,0x3338},
+  {0xFDC9,0xFD68,0xFD06,0xFCC5,0xFC85,0xFC45,0xF424,0xF404,0xF3C4,0xF3A4,0xEB63,0xEB23,0xE2E3,0xE2A2,0xDA62,0xD202},
+  {0xFF5C,0xF71A,0xF6FA,0xF6FA,0xF6DA,0xF6D9,0xEEB9,0xEEB9,0xEEB9,0xEEB9,0xEE99,0xEE99,0xEE98,0xEE78,0xEE78,0xE5F7},
+  {0xDBE8,0xD3C8,0xD3C7,0xD3A7,0xD3A7,0xD3A7,0xCB87,0xCB87,0xCB66,0xCB66,0xC346,0xC326,0xC326,0xBB26,0xBB05,0xBAE5},
+  {0xA557,0x9D16,0x9D16,0x94F6,0x94F6,0x94D5,0x8CB5,0x8494,0x8474,0x7C53,0x7C33,0x7413,0x73F2,0x6BB1,0x5B50,0x4A48},
+  {0xEE4B,0xA48D,0x7C54,0x7C34,0x7434,0x7413,0x7413,0x6BF3,0x6BD3,0x6BB2,0x6371,0x6371,0x5B70,0x5B50,0x5B50,0x3A4B},
+  {0xDD2F,0x8CF7,0x7C54,0x7434,0x7413,0x8BCE,0x6BB2,0x6392,0x6391,0x6391,0x6371,0x6371,0x5B70,0x5B50,0x5B50,0x3A4B},
+  {0x8CD6,0x8495,0x7C54,0x7C34,0x7C34,0x7434,0x7433,0x7413,0x7413,0x7413,0x6BD3,0x63B2,0x6370,0x3A4B,0x31A7,0x18E4},
+  {0xD4AD,0xD4AC,0xD48C,0xCC8C,0xCC8C,0xCC6C,0xCC6C,0xC42B,0xABEA,0xABCA,0xABAA,0xA3AA,0xA38A,0xA389,0x7A68,0x59C7},
+  {0x7A48,0x7248,0x7248,0x7248,0x7248,0x7228,0x7228,0x7228,0x7228,0x7228,0x7228,0x6A28,0x6A28,0x6A08,0x6A07,0x4145},
+  {0x8AED,0x82CD,0x82AC,0x82AC,0x82AC,0x7A8C,0x7A8B,0x7A8B,0x726B,0x6A4B,0x6A4A,0x6A2A,0x6229,0x6209,0x51A8,0x3926},
+  {0x4987,0x4987,0x4987,0x4967,0x4967,0x4967,0x4967,0x4967,0x4967,0x4967,0x4967,0x4167,0x4167,0x4146,0x4146,0x28C4},
+  {0xF77C,0xEF1A,0xEF1A,0xEF19,0xEF19,0xE6F9,0xE6F9,0xE6F9,0xDE98,0xBDB5,0xBDB5,0xBDB4,0xBDB4,0xBD94,0xBD94,0x6B4F},
+  {0xF79D,0xF79D,0xF79D,0xF79D,0xF79D,0xF79D,0xF79D,0xF77D,0xF77C,0xF77C,0xF77C,0xF77C,0x6B4F,0x0000,0x0000,0x0000},
+  {0xE50B,0xE50A,0xDCEA,0xDCEA,0xDCCA,0xDCC9,0xCC89,0xB429,0xB429,0xB409,0xB408,0xB3E8,0xB3C8,0xABC8,0x8BA7,0x6AC5},
+  {0x8366,0x8366,0x8366,0x8366,0x8366,0x7B46,0x7B46,0x7B46,0x7B46,0x7B46,0x7B46,0x7B46,0x7B26,0x7B26,0x7326,0x49E3},
+  {0x0000,0xF79E,0xEF5D,0xEF5D,0xE73C,0xE71C,0xDEFB,0xDEDB,0xD6BA,0xD69A,0xCE79,0xCE59,0xC618,0xBDF7,0xBDF7,0xB5B6},
+  {0x0000,0xF7BE,0xEF5D,0xEF5D,0xE71C,0xDEDB,0xDEDB,0xD6BA,0xD69A,0xCE79,0xC638,0xC618,0xBDF7,0xBDF7,0xB596,0x8410},
+  {0x0000,0xF7BE,0xEF5D,0xEF5D,0xE73C,0xE71C,0xDEDB,0xD6BA,0xD6BA,0xD69A,0xCE79,0xC638,0xC618,0xC618,0xBDF7,0xB5B6},
+  {0x0000,0xF79E,0xEF5D,0xEF5D,0xE71C,0xDEFB,0xDEDB,0xD6BA,0xD6BA,0xCE79,0xCE59,0xC638,0xC618,0xBDF7,0xBDF7,0xAD75},
+  {0xE6AC,0xDE6B,0xDE6A,0xDE4A,0xDE4A,0xDE4A,0xDE4A,0xD629,0xD629,0xD629,0xD609,0xCDE8,0xCDE8,0xCDC8,0xBD47,0x8BE4},
+  {0x0000,0xF7DF,0xD75E,0xBEFD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x8CF8,0x73F3,0x6BD2,0x6391,0x6371,0x6371,0x6371,0x5B70,0x5B70,0x5B50,0x5B50,0x5B50,0x3B1B,0x5B30,0x3A4B,0x19D3},
+  {0x9DDF,0x749D,0x6C7D,0x643D,0x5BFC,0x53DC,0x4B9B,0x433B,0x3B1A,0x3AFA,0x32F9,0x32D9,0x32B8,0x32B8,0x3298,0x19D3},
+  {0xEEB4,0xE6B4,0xE693,0xE693,0xE693,0xE693,0xE693,0xE693,0xE673,0xE673,0xE673,0xDE72,0xDE72,0xDE72,0xDE52,0xCDD0},
+  {0xEED3,0xE693,0xE673,0xDE72,0xDE52,0xDE52,0xDE52,0xDE52,0xDE32,0xDE32,0xDE31,0xDE31,0xDE31,0xD611,0xBD4F,0xBD4F},
+  {0xEED4,0xE6B4,0xE6B4,0xE6B3,0xE693,0xE693,0xE673,0xE673,0xDE72,0xDE72,0xDE52,0xDE52,0xDE52,0xDE32,0xDE31,0xCDD0},
+  {0xF6F4,0xEED3,0xE6B4,0xE693,0xE693,0xE693,0xE693,0xE693,0xE673,0xDE72,0xDE72,0xDE52,0xDE52,0xDE52,0xBD4F,0x942B},
+  {0xEED4,0xE6B4,0xE6B4,0xE6B3,0xE693,0xE693,0xE693,0xE693,0xE673,0xDE72,0xDE72,0xDE52,0xDE52,0xDE52,0xDE31,0xD611},
+  {0x0000,0xEF7E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8B06,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE73C,0xE73C,0xDEFB,0xDEDB,0xD6BA,0xD69A,0xCE79,0xC638,0xC618,0xBDD7,0xB596,0xAD55,0xA514,0x9CF3,0x94B2},
+  {0x0000,0xE73C,0xDEFB,0xD6BA,0xCE79,0xCE59,0xC638,0xBDF7,0xBDD7,0xB5B6,0xAD75,0xAD55,0xA514,0x9CF3,0x9CD3,0x94B2},
+  {0xFFFF,0xFFFF,0xFFDF,0xF7DF,0xF7BF,0xEF7D,0xE71C,0xDEFC,0xDEFB,0xDEFB,0xD6DB,0xD6BB,0xD6BA,0xCE7A,0xC618,0xBDF7},
+  {0xFC85,0xFC85,0xFC85,0xFC85,0xF465,0xE425,0xE405,0xDC05,0xDBE5,0xDBE5,0xDBE5,0xDBE5,0xD3C4,0xD3C4,0xC384,0xBB64},
+  {0xD2DA,0xCADA,0xCADA,0xCADA,0xCAB9,0xC2B8,0xBA97,0xB277,0xB277,0xB277,0xB276,0xB276,0xB276,0xAA76,0xAA55,0x9A34},
+  {0x663F,0x661F,0x661F,0x65FF,0x65FF,0x5DDE,0x5D7C,0x555B,0x555B,0x555B,0x553B,0x553B,0x553A,0x551A,0x4CB8,0x4C98},
+  {0xFF07,0xFEE7,0xFEE7,0xFEC7,0xFEC7,0xEE47,0xE626,0xE606,0xE606,0xE5E6,0xDDE6,0xDDE6,0xDDC6,0xDDC6,0xCD66,0xC545},
+  {0x8F08,0x8EE7,0x8EE7,0x8EC7,0x8EC7,0x8667,0x7E47,0x7E27,0x7E06,0x7DE6,0x7DE6,0x7DE6,0x7DE6,0x75C6,0x7586,0x6D46},
+  {0xFD39,0xFD39,0xFD19,0xFD18,0xFD18,0xF4D7,0xE4B6,0xE496,0xE496,0xDC75,0xDC75,0xDC75,0xDC55,0xD455,0xCC13,0xC3F3},
+  {0x5AEC,0x5AEC,0x5AEC,0x5AEC,0x5AEC,0x52CB,0x52AB,0x4A8B,0x4A8B,0x4A8A,0x4A8A,0x4A8A,0x4A8A,0x4A6A,0x424A,0x4229},
+  {0xAD96,0xAD96,0xAD96,0xAD76,0xAD76,0xA556,0x9D14,0x9CF4,0x94D3,0x94D3,0x94B3,0x94B3,0x94B3,0x8C72,0x8431,0x8410},
+  {0x2556,0x2536,0x2535,0x2535,0x2515,0x2515,0x1CB3,0x1C93,0x1C93,0x1C93,0x1C93,0x1C72,0x1C72,0x1C72,0x1C11,0x1BF0},
+  {0x8219,0x8219,0x8218,0x8218,0x81F8,0x81F8,0x79F7,0x79D6,0x71D6,0x71D5,0x71B5,0x71B5,0x71B5,0x69B4,0x6193,0x6192},
+  {0x3AB8,0x3AB8,0x3AB8,0x3297,0x3297,0x3297,0x3275,0x3255,0x3255,0x3255,0x3255,0x3254,0x2A54,0x2A34,0x2A12,0x29F2},
+  {0x8285,0x8285,0x8285,0x7A85,0x7A85,0x7A85,0x7245,0x7245,0x7245,0x6A25,0x6A25,0x6A24,0x6A24,0x6A24,0x6204,0x61E4},
+  {0x5405,0x5405,0x5405,0x53E5,0x53E5,0x4BC5,0x4BA5,0x4B84,0x4B84,0x4B84,0x4B84,0x4364,0x4364,0x4364,0x4324,0x3B04},
+  {0xD1E6,0xD1E6,0xD1E6,0xD1E6,0xD1E6,0xC9E6,0xC9C6,0xB9A6,0xB9A5,0xB9A5,0xB1A5,0xB1A5,0xB1A5,0xA985,0xA165,0xA165},
+  {0x2145,0x2125,0x2125,0x2125,0x2125,0x2125,0x2105,0x2105,0x2105,0x2104,0x2104,0x2104,0x2104,0x18E4,0x18E4,0x18E4},
+  {0x0000,0xFF94,0xF687,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6DE9,0xF34B,0x4CC6,0xD1C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x5DDE,0x6DE9,0x4CC6,0x3297,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6DE9,0x4CC6,0x9B1B,0xC2B9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xF687,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6DE9,0x4CC6,0xF34B,0xD1C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF687,0x6DE9,0xF445,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFFF,0xF7BE,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF4F8,0x6DE9,0xF34B,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xF687,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEEF9,0xB3CA,0x8B29,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xEEF9,0xD1C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xFF94,0xFEEE,0xFECD,0xFECC,0xF6AC,0xF68B,0xF669,0xF648,0xF607,0xEE06,0xEDE6,0xEDC6,0xE5A6,0xE585,0xE585,0xC483},
+  {0xF7BE,0xDF1C,0xDEFC,0xD6DC,0xD6DB,0xCEBB,0xCE9A,0xC67A,0xC65A,0xC639,0xBE39,0xBE18,0xB5F8,0xB5D8,0xB5B7,0x8C92},
+  {0x8495,0x7C34,0x7413,0x7413,0x7413,0x7413,0x73F3,0x73F3,0x6BF3,0x6BF3,0x6BF2,0x6BD2,0x6BD2,0x6BD2,0x63B1,0x530E},
+  {0x9D57,0x7C75,0x7C34,0x7413,0x7413,0x73F3,0x73F3,0x6BF3,0x6BF2,0x6BD2,0x6BD2,0x6BD2,0x6BD2,0x6370,0x530F,0x5AED},
+  {0xCDD5,0xB2C8,0xAAA8,0xAAA7,0xAA87,0xAA87,0xAA87,0xA287,0xA287,0xA267,0xA267,0xA267,0x9A67,0x9A47,0x9246,0x9246},
+  {0x7C34,0x7413,0x7413,0x7413,0x7413,0x73F3,0x6BF2,0x6BD2,0x6BD2,0x6BB2,0x6BB2,0x6BB1,0x6391,0x6391,0x6391,0x5B0D},
+  {0xEF1A,0xD1C5,0x8903,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xF627,0xD1C5,0x3986,0xB964,0x8903,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xD1C5,0x8903,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xF739,0xE4ED,0xE48B,0xD48C,0x94B3,0xC44B,0x5DDE,0x3CF7,0x1C31,0xCBC9,0x9328,0x8A4F,0x69B4,0x51A6,0x432A,0x2A33},
+  {0xC5F5,0x6D48,0x6D28,0x6508,0x64E7,0x64AA,0x5CA7,0x5487,0x7413,0x6BD2,0x5448,0x5B50,0x5B30,0x5B2F,0x530F,0x52EF},
+  {0x312A,0x28E8,0x20E7,0x20C7,0x20C7,0x20A6,0x18A6,0x18A6,0x18A6,0x18A5,0x1885,0x1885,0x1885,0x1084,0x1084,0x0842},
+  {0x0000,0xFFB8,0xFE07,0xCC4B,0xF305,0x7A68,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xB1DA,0x4A8C,0x29A8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCB0B,0xB2AA,0x5B0D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCB0B,0xB2AA,0x5B0D,0x39E8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF627,0xB3C2,0xCB0B,0x5B0D,0xB2AA,0x39E8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x7F7C,0x2536,0x84B6,0x7C75,0x7433,0x7413,0x7414,0x7413,0x73F3,0x6BF3,0x6BF3,0x6BD2,0x63B2,0x6391,0x6391,0x3A4B},
+  {0xDFFF,0x9FBD,0x9F9D,0x979D,0x8F9D,0x877D,0x7F7C,0x6F5C,0x5F3B,0x5F1B,0x56FB,0x56DA,0x56DA,0x4EBA,0x4E99,0x2536},
+  {0xE4ED,0xDCCD,0xDCAC,0xD48C,0xCC6C,0xCC4C,0xCC4C,0xC42B,0xC42B,0xC42B,0xA389,0x9308,0x8B08,0x8AE8,0x7A87,0x59C7},
+  {0xBE19,0xE4ED,0xDCCD,0xD48C,0xD46C,0xCC6C,0xCC4B,0xC44B,0xC44B,0xC42B,0xBC0B,0x9349,0x9308,0x8B08,0x82C7,0x59C7},
+  {0xCD93,0xDCCD,0xDCCD,0xD48C,0xD46C,0xCC6C,0xCC4B,0xC44B,0xC42B,0xC42B,0x9B89,0x9328,0x9308,0x8B08,0x82C7,0x59C7},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE609,0x8EA9,0xD589,0xC528,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xC4AF,0xC3AA,0xBB69,0xB308,0x9AE9,0xA2C8,0xA2C8,0x9AA7,0x9A87,0x9267,0x8A87,0x9247,0x7A26,0x71E5,0x69C5,0x61A5},
+  {0x7AE9,0x7A46,0x7205,0x69E5,0x59C5,0x61C5,0x61A5,0x61A4,0x5984,0x5964,0x5984,0x5964,0x4944,0x4123,0x4103,0x3903},
+  {0x8CD6,0x7C75,0x7C34,0x7433,0x7413,0x7413,0x73F3,0x6BF3,0x6BF2,0x6BD2,0x6BD2,0x6BD2,0x6BB2,0x63B2,0x6370,0x530E},
+  {0x84B6,0x8495,0x7C75,0x7C34,0x7433,0x7413,0x63B2,0x6391,0x6371,0x6371,0x5B70,0x5B50,0x5B50,0x5B50,0x5B30,0x3A4B},
+  {0x8496,0x8495,0x7C75,0x7C34,0x7413,0x7413,0x63B2,0x6391,0x6371,0x5B70,0x5B50,0x5B50,0x5B0E,0x3A4B,0x39E8,0x18C3},
+  {0xF486,0xE384,0x84B6,0x8475,0x7C34,0x7413,0x6BD2,0x6391,0x6371,0x5B70,0x5B50,0xD283,0x8A89,0x5B2F,0x3A4B,0x39E8},
+  {0xC65A,0xD46C,0xBC0B,0x6208,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xD46C,0xBC0B,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8ACC,0x7A6B,0x61E9,0x59C8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0x9450,0x7C11,0x736D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x9C95,0x7413,0x7413,0x7414,0x7413,0x73F3,0x73F3,0x6BF3,0x6BD2,0x6BB2,0x6391,0x5B50,0x5B30,0x3A4B,0xE1A9,0x98A5},
+  {0xF7BF,0xF7BF,0xF7BF,0xF7BF,0xEFBF,0xEFBF,0xEFBF,0xEF9F,0xEF9F,0xEF9F,0xEF9F,0xEF9F,0xEF9F,0xEF9E,0xEF9E,0xE77E},
+  {0xEFDF,0xDF9F,0xAEDE,0xAEBE,0xAEBE,0xAEBE,0xA6BE,0xA69E,0xA69E,0xA69E,0xA69E,0xA69E,0x9E7E,0x9E7E,0x9E7E,0x9E5E},
+  {0x0000,0xF758,0x65AB,0x3CA8,0x2BC7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF758,0x65AB,0x3CA8,0x2BC7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF758,0x65AB,0x3CA8,0x2BC7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x9D36,0x9D16,0x9D16,0x9D16,0x9D16,0x9516,0x9516,0x94F6,0x94F6,0x94F6,0x94F5,0x94F5,0x94F5,0x94F5,0x94F5,0x94D5},
+  {0x0000,0xDEFB,0xCE59,0xAD55,0x94B2,0x7BCF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xF4C7,0xE3E4,0xCB23,0x5BC5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xF4C7,0xE3E4,0xCB23,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xF4C7,0xE3E4,0xCB23,0x28C1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xFE8C,0xF4C7,0xE3E4,0xCB23,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x6D48,0x6507,0x6C70,0x5487,0x7413,0x7413,0x7413,0x73F3,0x6BF3,0x6BF2,0x6BD2,0x6BD2,0x6BB1,0x6391,0x6391,0x5B0D},
+  {0x7C34,0x7413,0x7413,0x7413,0x7413,0x73F3,0x6BF2,0x6BD2,0x6BD2,0x6BB2,0x6BB2,0x6BB1,0x6391,0x6391,0x5B0D,0x3A09},
+  {0x8496,0x7C54,0x7C34,0x7433,0x7413,0x7413,0x7414,0x7413,0x7413,0x73F3,0x73F3,0x6BF2,0x6391,0x5B2F,0x5B0D,0x4ACD},
+  {0x9349,0x9349,0x9349,0x8B49,0x8B29,0x8B29,0x8B29,0x8B29,0x8B29,0x8B29,0x8B29,0x8B29,0x8B29,0x8B08,0x8308,0x8308},
+  {0xE6B6,0xE696,0xE696,0xE696,0xE696,0xE696,0xE696,0xE696,0xE676,0xDE76,0xDE75,0xDE75,0xDE75,0xDE75,0xDE55,0xDE55},
+  {0xE6D8,0xE6B8,0xDEB7,0xDE97,0xDE97,0xDE97,0xDE97,0xDE97,0xDE77,0xDE77,0xDE76,0xDE76,0xDE76,0xD656,0xD656,0xD636},
+  {0xF73A,0xD1A6,0xC986,0xC986,0xC986,0xC185,0xC185,0xC185,0xC185,0xC185,0xC185,0xB965,0xB965,0xB965,0xB965,0xB165},
+  {0x7E09,0x3C45,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x7E09,0x3C45,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE73C,0xE71C,0xDEFB,0xD6BA,0xCE79,0xCE59,0xC618,0xBDD7,0xB5B6,0xB596,0xAD75,0xAD55,0xA534,0x9CF3,0x94B2},
+  {0x9413,0x8BF2,0x8BF2,0x8BF2,0x8BD2,0x8BD2,0x83B1,0x83B1,0x8391,0x8391,0x8390,0x7B70,0x7B50,0x7B4F,0x7B2F,0x730E},
+  {0xAC91,0x8BF2,0xC3AA,0x83B1,0x836F,0xA308,0xA2E8,0xA2C8,0x8AEB,0x9AA7,0x9AA7,0x9A87,0x9A87,0x9267,0x9267,0x8A26},
+  {0x0000,0xF79E,0xCE59,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x5E91,0x4C6E,0x7C54,0x7C54,0x7C34,0x7C34,0x7434,0x7434,0x7433,0x7413,0x6BF3,0x6BD2,0x6BB2,0x6391,0x6391,0x3A4B},
+  {0xBFFA,0x7F74,0x7754,0x6F33,0x6F32,0x5F11,0x4EF0,0x3ECE,0x36AD,0x2E6D,0x2E6D,0x2E2C,0x2E0C,0x260C,0x25CB,0x1468},
+  {0xA349,0xA349,0xA329,0xA329,0xA329,0xA329,0x9B29,0x9B09,0x9B08,0x9B08,0x92E8,0x92E8,0x92E8,0x92E8,0x92E8,0x92C8},
+  {0xDE58,0xD637,0xD637,0xD637,0xD617,0xD617,0xD617,0xCDF6,0xCDD6,0xC5B6,0xC5B5,0xC5B5,0xC595,0xC595,0xBD95,0xBD74},
+  {0xDC27,0xD407,0xD407,0xD407,0xD407,0xD3E7,0xD3E7,0xCBE7,0xCBC6,0xCBC6,0xC3C6,0xC3C6,0xC3A6,0xC3A6,0xC3A6,0xBB86},
+  {0xBAF4,0xBAF4,0xBAF4,0xBAF4,0xB2F4,0xB2F3,0xB2D3,0xB2D3,0xAAD3,0xAAD3,0xAAB2,0xAAB2,0xAAB2,0xA2B2,0xA2B2,0xA291},
+  {0x7538,0x7517,0x7517,0x7517,0x74F7,0x74F7,0x74F6,0x74D6,0x6CD6,0x6CB6,0x6CB5,0x6C95,0x6C95,0x6C75,0x6474,0x6474},
+  {0xDDA8,0xDD88,0xDD88,0xDD88,0xD568,0xD568,0xD568,0xD568,0xD548,0xCD27,0xCD27,0xCD07,0xC507,0xC507,0xC4E7,0xC4E7},
+  {0x95A8,0x9588,0x9588,0x8D88,0x8D68,0x8D68,0x8D68,0x8D48,0x8D28,0x8528,0x8528,0x8507,0x8507,0x8507,0x84E7,0x7CE7},
+  {0xDC93,0xDC73,0xDC73,0xD453,0xD453,0xD453,0xD453,0xD432,0xCC32,0xCC12,0xCC12,0xC411,0xC411,0xC3F1,0xC3F1,0xBBF1},
+  {0x730B,0x730B,0x6B0B,0x6B0B,0x6AEB,0x6AEB,0x6AEB,0x6AEA,0x6ACA,0x62CA,0x62CA,0x62CA,0x62AA,0x62AA,0x62AA,0x62AA},
+  {0xA4D2,0xA4B2,0xA4B1,0xA4B1,0xA491,0x9C91,0x9C91,0x9C71,0x9C70,0x9C50,0x9450,0x9450,0x9430,0x9430,0x9430,0x942F},
+  {0x4C91,0x4C91,0x4C71,0x4C71,0x4C71,0x4C50,0x4C50,0x4C50,0x4430,0x4430,0x4430,0x440F,0x440F,0x440F,0x440F,0x43EF},
+  {0x8A93,0x8A73,0x8A73,0x8A73,0x8A73,0x8A72,0x8272,0x8252,0x8252,0x8251,0x8251,0x7A51,0x7A31,0x7A31,0x7A31,0x7A31},
+  {0x5AF3,0x5AF3,0x5AD2,0x5AD2,0x5AD2,0x5AD2,0x5AD2,0x52D2,0x52B2,0x52B1,0x52B1,0x52B1,0x5291,0x5291,0x5290,0x4A90},
+  {0x8AC7,0x8AC7,0x8AC7,0x82C7,0x82C7,0x82A7,0x82A7,0x82A6,0x82A6,0x7AA6,0x7A86,0x7A86,0x7A86,0x7A86,0x7A86,0x7A66},
+  {0x6BC7,0x6BA7,0x6BA7,0x6BA7,0x6BA6,0x6B86,0x6386,0x6386,0x6366,0x6366,0x6366,0x6366,0x6366,0x6346,0x6346,0x5B46},
+  {0xC267,0xBA67,0xBA67,0xBA67,0xBA47,0xBA47,0xB247,0xB247,0xB247,0xB227,0xAA27,0xAA27,0xAA27,0xAA27,0xAA27,0xA226},
+  {0x51E7,0x49E7,0x49E7,0x49E7,0x49E7,0x49E7,0x49E7,0x49E6,0x49C6,0x49C6,0x49C6,0x49C6,0x41C6,0x41C6,0x41C6,0x41A6},
+  {0xD38D,0xD36C,0x9450,0x7B6D,0xD34C,0xCB4C,0xCB4C,0xCB2B,0xCB2B,0xCB0B,0xAB0B,0xAAEA,0xAACA,0xAACA,0xA2A9,0xA289},
+  {0x8C2F,0x8C2F,0x8C0F,0x8C0F,0x8C0F,0x8C0F,0x8C0F,0x8C0F,0x8BEF,0x8BEF,0x8BEF,0x8BEF,0x83EE,0x83CE,0x83CE,0x5269},
+  {0x6A68,0x6268,0x6248,0x6247,0x6227,0x5A27,0x5A27,0x5A07,0x5A07,0x5207,0x51E6,0x51E6,0x49C6,0x49C6,0x49A6,0x3125},
+  {0x4186,0x4186,0x4186,0x4186,0x4186,0x4166,0x4166,0x4166,0x4166,0x4166,0x4166,0x4166,0x3966,0x3965,0x3965,0x20C3},
+  {0x0000,0xF7BE,0xEF5D,0xEF5D,0xE73C,0xDEFB,0xDEDB,0xDEDB,0xD6BA,0xD6BA,0xD69A,0xCE79,0xCE59,0xC638,0xC618,0xB5B6},
+  {0x0000,0xF79E,0xEF5D,0xE73C,0xE71C,0xDEDB,0xDEDB,0xD6BA,0xD69A,0xCE79,0xC638,0xC638,0xC618,0xBDF7,0xBDF7,0xAD55},
+  {0xEE8D,0xEE6C,0xEE4C,0xE62B,0xDDCA,0xD589,0xD589,0xCD68,0xCD27,0xC4E6,0xBCC6,0xBCC6,0xBC85,0xB464,0xB464,0xB444},
+  {0xEE6C,0xEE4C,0xE64B,0xE62A,0xE60A,0xE5E9,0xDDC9,0xDDC8,0xDDA8,0xD567,0xCD46,0xC506,0xBCC5,0xBCA5,0xB464,0x8A65},
+  {0x52AB,0x4229,0x4229,0x4209,0x4209,0x39E8,0x39C8,0x31A7,0x3187,0x3186,0x3186,0x2966,0x2966,0x2966,0x2966,0x18E4},
+  {0xC73F,0xC71F,0xC71F,0xC71F,0xC71F,0xBF1F,0xBEFF,0xBEFF,0xBEFF,0xB6DE,0xAE9E,0xA69E,0xA67E,0xA67E,0x9E7E,0x7D9B},
+  {0x0000,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF687,0x4CC6,0x8B29,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x4CC6,0x9B1B,0xC2B9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF5D,0xE71C,0xD6BA,0xD69A,0xCE59,0xC638,0xBDF7,0xB5B6,0xB596,0xAD75,0xA534,0xA514,0x9CF3,0x9CD3,0x94B2},
+  {0x0000,0xE73C,0xDEFB,0xD69A,0xCE59,0xC638,0xBDF7,0xBDD7,0xB5B6,0xB596,0xAD75,0xAD75,0xA534,0xA534,0x9CF3,0x94B2},
+  {0x0000,0xE73C,0xDEDB,0xD69A,0xCE59,0xC638,0xBDF7,0xBDD7,0xB596,0xAD75,0xAD55,0xA534,0xA514,0x9CF3,0x94B2,0x9492},
+  {0x0000,0xE73C,0xDEDB,0xD69A,0xCE59,0xCE59,0xBDF7,0xBDD7,0xB596,0xAD55,0xA534,0xA514,0xA514,0x9CF3,0x9CD3,0x94B2},
+  {0x0000,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF34B,0x4CC6,0xD1C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF4F8,0xF34B,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xCB67,0xCB66,0xCB46,0xCB46,0xCB46,0xC346,0xC346,0xC346,0xC326,0xC326,0xC326,0xC326,0xC306,0xBB06,0xB306,0xBAE5},
+  {0xD3A7,0xD3A7,0xD387,0xCB87,0xCB87,0xD387,0xCB87,0xCB67,0xCB67,0xCB66,0xCB46,0xC346,0xC326,0xC326,0xAAC5,0xA285},
+  {0xD3C8,0xD3C8,0xD3C8,0xD3A7,0xD3A7,0xD3A7,0xD3A7,0xD3A7,0xD387,0xCB87,0xCB87,0xCB87,0xCB67,0xCB46,0xC326,0xB306},
+  {0xFF12,0xFEF1,0xFECF,0xFECF,0xFEAE,0xF68D,0xF66C,0xF64B,0xF62A,0xEDE9,0xEDC9,0xEDC9,0xE588,0xE568,0xDD07,0x8AC3},
+  {0x441C,0x3B78,0x2AD3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCC4B,0x3B78,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCC4B,0x3B78,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0xEF9E,0xBE18,0x3B78,0x2AD3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCC4B,0x3B78,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCC4B,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x547C,0x545B,0x4C3B,0x4C1B,0x4C1B,0x43FB,0x43DA,0x3BBA,0x3B9A,0x3B99,0x3379,0x3359,0x3359,0x3338,0x2B18,0x2B18},
+  {0xFE2B,0xFDA9,0xFD47,0xFD27,0xFCE6,0xFCA5,0xFC65,0xF404,0xF3C4,0xEB63,0xEB03,0xE2C3,0xDA82,0xD242,0xD201,0xC9C1},
+  {0x0000,0x6E08,0x5D47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6E08,0x5D47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6E08,0x5D47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6E08,0x5D47,0xF445,0xCBA4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x5D87,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x5D87,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x5D87,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDD8E,0xBCAB,0x5D87,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFB8,0xFF53,0xFEF1,0xFEAD,0xFE6B,0xFE07,0xFD87,0xFD06,0xFC66,0xF3E6,0xF325,0xEAC5,0xE285,0xDA24,0xC9C4},
 };
-const uint8_t tex_flags[217] = {16,16,16,16,16,16,16,0,8,16,33,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,33,33,33,33,16,48,16,16,16,16,16,16,16,48,48,33,33,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,16,16,16,16,16,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,48,48,48,16,16,16,48,48,48,16,33,16,16,16,16,16,16,16,16,16,16,16,16,16,33,16,16,33,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,33,33,16,16,16,16,48,48,48,48,33,33,33,33,48,48,48,48,16,16,16,16,16,48,48,16,48,48,0,16,48,48,48,48,48,48,48,48,48};
+const uint8_t tex_flags[217] = {16,16,16,16,16,16,16,4,8,16,33,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,16,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,33,33,33,33,16,48,16,16,16,16,16,16,16,48,48,33,33,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,16,16,16,16,16,48,48,48,48,48,16,16,16,16,16,48,48,48,48,48,48,48,48,16,16,16,16,16,16,16,48,48,48,16,16,16,48,48,48,16,33,16,16,16,16,16,16,16,16,16,16,16,16,16,33,16,16,33,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,33,33,16,16,16,16,48,48,48,48,33,33,33,33,48,48,48,48,16,16,16,16,16,48,48,16,48,48,0,16,48,48,48,48,48,48,48,48,48};
 
 const uint8_t blk_tex[B_COUNT][6] = {
   {0,0,0,0,0,0},   /* AIR */
@@ -697,520 +697,520 @@ const uint8_t blk_tex[B_COUNT][6] = {
   {216,216,216,216,216,216},   /* FIRE */
 };
 const uint8_t blk_model[B_COUNT] = {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,3,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,8,8,8,1,9,1,1,1,1,1,2,2,2,2,2,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,1,5,5,5,5,5,5,1,1,1,1,1,4,4,4,4,4,9,16,17,1,1,1,2,2,2,2,2,2,2,2,1,1,1,1,14,14,15,10,16,1,6,9,1,7,1,2,13,1,1,1,1,1,1,1,1,1,1,1,1,1,12,1,11,1,10,1,1,13,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,8,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,1,1,18,18,3,3,5,5,5,5,5,5,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3,16,16,16,16,16,16,14,14,14,14,14,14,14,2};
-const uint8_t blk_light[B_COUNT] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,15};
+const uint8_t blk_light[B_COUNT] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,13,13,13,13,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,14};
 const uint8_t blk_nbox[B_COUNT] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,2,0,1,0,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,0,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,1,1,1,1,1,1,1,0};
 const int8_t blk_box[B_COUNT][2][6] = {{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{7,0,7,9,10,9},{0,0,0,0,0,0}},{{1,3,7,3,14,9},{0,0,0,0,0,0}},{{13,3,7,15,14,9},{0,0,0,0,0,0}},{{7,3,1,9,14,3},{0,0,0,0,0,0}},{{7,3,13,9,14,15},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{8,8,0,16,16,16}},{{1,0,1,15,14,15},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,3,16,16},{0,0,0,0,0,0}},{{0,0,0,3,16,16},{0,0,0,0,0,0}},{{0,0,14,16,16,16},{0,0,0,0,0,0}},{{0,0,0,16,1,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{8,8,0,16,16,16}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,16,2,16},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{1,0,1,15,16,15},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{6,0,6,10,16,10},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{7,0,7,9,16,9},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,15,16,16,16},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,16,1,16},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{6,0,6,10,16,10},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,16,9,16},{0,0,0,0,0,0}},{{0,0,0,16,9,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,14,16},{0,0,0,0,0,0}},{{0,0,0,16,8,16},{0,8,0,8,16,16}},{{0,0,0,16,8,16},{0,8,0,8,16,16}},{{0,0,0,16,8,16},{0,8,8,16,16,16}},{{0,0,0,16,8,16},{0,8,8,16,16,16}},{{0,0,0,16,8,16},{0,8,0,16,16,8}},{{0,0,0,16,8,16},{0,8,0,16,16,8}},{{0,0,0,16,16,3},{0,0,0,0,0,0}},{{13,0,0,16,16,16},{0,0,0,0,0,0}},{{0,0,13,16,16,16},{0,0,0,0,0,0}},{{0,0,13,16,16,16},{0,0,0,0,0,0}},{{0,0,0,3,16,16},{0,0,0,0,0,0}},{{0,0,0,16,16,3},{0,0,0,0,0,0}},{{13,0,0,16,16,16},{0,0,0,0,0,0}},{{0,0,0,0,0,0},{0,0,0,0,0,0}}};
 const uint8_t blk_front[B_COUNT] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,0,0,111,0,0,0,0,0,0,0,0,0,0,124,125,0,0,0,0,0,0,0,0,0,0,0,0,0,140,141,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,202,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
 const uint8_t blk_flags[B_COUNT] = {0,24,24,24,24,24,24,24,25,25,24,24,24,24,24,24,24,24,24,24,0,0,0,0,0,0,24,5,0,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,18,19,20,18,24,16,24,24,24,24,24,0,0,1,1,0,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,0,0,0,0,0,0,0,0,0,0,0,0,24,24,24,16,16,16,16,16,16,24,24,24,24,24,0,0,0,0,0,16,16,16,24,24,24,0,0,0,0,0,0,0,0,24,24,24,24,16,16,0,0,16,24,16,16,24,16,24,1,16,24,24,24,24,24,24,24,24,24,24,24,24,24,16,24,2,24,6,24,24,16,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,24,18,18,24,24,24,0,0,0,0,1,1,1,1,0,0,0,0,24,24,16,16,5,0,16,16,16,16,16,16,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,0};
 const uint8_t blk_tool[B_COUNT] = {0,1,1,1,1,1,1,1,3,3,3,3,3,1,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,3,3,3,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,4,4,4,4,0,0,1,1,1,1,1,5,0,0,0,0,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,0,2,1,1,0,0,0,0,0,1,2,2,1,1,2,0,0,0,0,0,0,0,0,3,3,1,1,2,2,2,1,1,1,3,1,3,0,3,0,2,2,2,1,1,1,1,1,2,2,2,2,2,2,0,2,4,3,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,4,4,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,2,1,2,1,2,2,2,2,2,2,2,0};
-const uint8_t blk_level[B_COUNT] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-const uint8_t blk_hard[B_COUNT] = {0,30,30,30,30,30,30,30,12,12,10,10,10,40,40,40,40,40,40,40,0,0,0,0,0,0,255,255,255,10,10,12,60,60,60,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,40,4,4,4,4,12,6,60,60,16,16,16,80,0,0,0,0,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,0,0,0,0,0,0,0,0,0,0,0,0,60,100,40,40,40,40,40,40,40,40,0,30,40,255,0,0,0,0,0,100,40,50,60,100,50,0,0,0,0,0,0,0,0,12,12,70,70,60,60,8,14,40,60,2,10,4,8,12,0,40,20,20,15,30,30,30,30,4,4,4,4,4,4,6,20,4,12,0,60,100,40,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,40,40,40,40,40,40,40,40,4,4,10,100,10,0,0,0,0,0,0,0,0,0,0,0,0,16,6,4,4,255,255,40,40,40,40,40,40,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,40,40,40,40,40,40,60,60,60,60,60,60,60,0};
-const uint8_t blk_id[B_COUNT] = {0,1,1,1,1,1,1,1,2,2,3,3,3,4,5,5,5,5,5,5,6,6,6,6,6,6,7,9,11,12,12,13,14,15,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,18,18,18,18,19,20,21,22,24,24,24,30,31,31,31,32,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,35,37,38,38,38,38,38,38,38,38,38,39,40,41,42,43,44,44,44,44,44,44,45,46,47,48,49,50,50,50,50,50,52,53,54,56,57,58,59,59,59,59,59,59,59,59,60,60,61,62,64,64,65,66,67,73,78,79,80,81,82,83,85,86,91,97,98,98,98,98,99,99,99,100,100,100,102,103,106,110,111,129,133,139,172,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,159,162,162,162,162,162,162,162,162,161,161,170,173,174,175,175,175,175,175,175,175,175,175,175,175,175,179,89,26,26,8,10,126,126,126,126,126,126,141,141,141,141,142,142,142,142,8,8,8,8,8,8,8,10,10,10,53,67,53,67,53,67,64,64,64,64,64,64,64,51};
+const uint8_t blk_level[B_COUNT] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+const uint8_t blk_hard[B_COUNT] = {0,32,32,32,32,32,32,32,13,13,11,11,11,44,34,34,34,34,34,34,0,0,0,0,0,0,255,255,255,11,11,13,52,52,52,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,5,5,5,5,18,8,52,84,18,18,18,0,0,0,0,0,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,84,84,32,32,18,34,44,32,32,32,0,34,44,255,0,0,0,0,0,90,34,44,52,84,44,0,0,0,0,0,0,0,0,11,11,60,60,44,44,7,0,44,52,2,8,8,7,11,0,34,18,18,16,32,32,32,32,5,5,5,5,5,5,8,18,0,13,0,52,84,44,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,38,38,38,38,38,38,38,38,5,5,18,84,8,0,0,0,0,0,0,0,0,0,0,0,0,18,8,5,5,255,255,34,34,34,34,34,34,0,0,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,34,44,34,44,34,44,44,44,44,44,44,44,44,0};
+const uint8_t blk_id[B_COUNT] = {0,1,1,1,1,1,1,1,2,2,3,3,3,4,5,5,5,5,5,5,6,6,6,6,6,6,7,8,9,10,10,11,12,13,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,16,16,16,16,17,18,19,20,21,21,21,22,23,23,23,24,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,26,27,27,27,27,27,27,27,27,27,28,29,30,31,32,33,33,33,33,33,33,34,35,36,37,38,39,39,39,39,39,40,41,42,43,44,45,46,46,46,46,46,46,46,46,47,47,48,49,50,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,65,65,65,66,66,66,67,67,67,68,69,70,71,72,73,74,75,76,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,77,78,78,78,78,78,78,78,78,79,79,80,81,82,83,83,83,83,83,83,83,83,83,83,83,83,84,85,86,86,87,88,89,89,89,89,89,89,90,90,90,90,91,91,91,91,87,87,87,87,87,87,87,88,88,88,41,53,41,53,41,53,50,50,50,50,50,50,50,92};
 const uint8_t blk_meta[B_COUNT] = {0,0,1,2,3,4,5,6,0,8,0,1,2,0,0,1,2,3,4,5,0,1,2,3,4,5,0,0,0,0,1,0,0,0,0,0,4,8,12,1,5,9,13,2,6,10,14,3,7,11,15,0,1,2,3,0,0,0,0,0,1,2,0,0,1,2,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,0,1,2,3,4,5,6,7,8,0,0,0,0,0,0,1,2,3,4,5,0,0,0,0,0,5,1,2,3,4,0,0,2,0,0,0,0,1,2,3,4,5,6,7,0,7,2,2,0,8,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,14,0,10,14,0,10,0,0,0,0,0,0,0,0,0,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,0,4,8,12,1,5,9,13,0,1,0,0,0,0,8,1,9,2,10,3,11,4,12,5,13,0,0,0,8,1,2,0,1,2,3,4,5,0,2,4,7,0,2,4,7,2,3,4,5,6,7,8,4,6,8,1,1,2,2,3,3,1,2,3,4,5,6,7,0};
-const uint8_t spr_px[64017] = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,244,31,102,86,102,101,102,102,86,101,70,54,102,102,86,102,102,101,102,100,70,53,102,101,85,101,85,101,101,102,70,54,102,102,102,102,101,102,102,101,70,54,102,102,102,100,102,102,102,86,70,54,102,86,102,100,102,102,102,102,86,53,102,102,102,102,101,102,102,102,70,54,102,102,102,102,102,86,86,102,85,54,101,102,102,85,101,102,101,102,70,247,31,229,238,238,238,238,238,238,238,78,53,230,237,238,238,238,238,238,238,62,54,230,238,238,238,238,238,238,238,62,53,230,238,238,238,238,238,238,238,62,54,229,238,238,238,237,238,238,238,62,52,230,238,238,237,238,238,238,238,62,54,230,238,238,238,238,238,238,238,62,54,230,238,238,238,238,238,238,238,62,54,229,238,238,238,238,238,238,238,62,247,31,229,173,218,186,184,186,173,170,58,54,229,168,170,170,170,139,217,202,41,54,230,170,170,154,186,170,186,205,60,54,230,186,138,218,172,170,173,170,59,54,230,186,202,219,202,171,173,200,59,54,229,202,170,169,170,218,172,216,74,54,230,172,170,170,186,200,202,155,58,53,230,170,187,186,170,170,186,139,74,54,230,172,203,170,169,155,138,138,58,247,31,230,170,170,171,170,187,169,170,59,54,230,186,170,171,170,138,185,138,61,54,230,173,170,172,170,170,186,172,74,53,230,170,138,170,202,138,170,170,42,54,214,218,139,170,171,138,170,218,58,54,230,170,136,172,170,170,171,218,61,37,229,138,169,170,169,202,138,170,58,53,230,170,186,218,168,219,172,170,58,54,229,186,172,139,141,169,202,152,58,247,31,229,138,218,186,171,137,170,138,58,54,230,170,169,170,170,171,170,170,58,54,230,186,154,170,169,169,173,141,59,54,230,170,171,186,171,138,170,170,60,38,229,187,168,171,172,170,173,138,74,53,230,173,170,170,170,169,138,170,58,37,230,202,170,169,202,218,155,203,58,54,230,173,170,152,170,170,218,136,58,54,230,202,186,169,200,172,173,188,57,247,31,230,136,218,170,170,140,170,138,58,54,229,186,205,154,170,169,171,170,59,54,229,154,170,170,202,138,173,202,56,54,230,187,218,138,171,172,170,205,58,54,229,170,172,204,170,170,218,171,58,54,230,221,187,218,184,170,156,201,42,54,230,171,185,170,171,169,170,184,42,70,228,138,172,138,200,171,170,170,58,53,230,168,189,170,170,138,170,172,58,247,31,230,154,138,170,170,170,170,170,60,54,230,170,202,170,170,154,168,138,58,54,230,169,170,187,170,168,170,168,58,53,230,170,168,218,170,170,218,200,73,54,229,202,173,136,170,186,173,170,40,53,230,170,168,171,218,170,170,186,61,38,230,170,203,218,170,171,171,168,57,53,230,170,170,171,173,173,170,171,58,54,230,218,173,170,168,170,170,170,58,247,31,230,170,171,202,218,170,154,218,58,53,230,186,170,216,173,202,202,218,58,54,230,170,186,140,186,186,138,170,58,54,230,168,201,185,137,201,205,202,56,54,230,170,170,154,170,186,170,202,58,37,230,170,170,170,204,170,220,154,58,69,230,170,186,187,168,202,137,170,56,70,229,173,172,184,138,219,172,141,58,54,230,168,138,173,189,170,170,168,74,247,31,229,154,173,186,172,200,170,139,58,53,230,172,189,170,170,173,168,186,56,54,230,172,188,202,170,186,170,170,58,54,230,188,204,173,170,170,154,170,59,54,229,188,170,154,170,170,168,139,58,54,230,202,168,170,184,170,172,218,56,53,230,170,218,186,170,170,170,170,58,54,230,170,204,186,170,170,186,139,58,54,230,186,185,217,202,154,168,170,58,247,31,230,188,154,184,171,170,173,186,42,70,230,170,170,171,188,186,168,173,59,38,230,189,171,170,137,170,171,170,60,54,230,155,168,157,170,170,186,173,58,53,230,170,219,186,170,138,203,202,41,53,230,173,170,170,138,170,185,172,56,54,230,171,136,173,140,170,170,170,60,54,230,186,187,202,173,217,170,170,57,54,230,170,170,172,170,170,187,218,58,247,31,230,169,170,173,184,170,138,171,72,54,214,170,172,138,154,219,139,170,58,54,228,173,186,220,205,170,218,186,58,54,230,172,218,170,155,170,138,186,44,38,229,186,186,170,168,202,185,204,58,38,230,152,189,173,170,218,200,156,56,36,230,220,170,138,171,170,203,170,60,70,230,217,170,171,168,172,173,172,58,54,230,173,170,172,219,170,170,170,58,247,31,229,170,157,170,170,169,170,173,59,54,230,170,170,154,202,186,139,204,60,54,230,170,157,172,140,186,170,218,58,54,230,170,170,171,168,170,170,170,58,54,230,202,155,202,138,172,156,168,57,53,229,138,172,170,170,170,170,173,58,54,230,173,170,168,170,170,202,170,58,53,230,186,168,170,154,170,154,170,58,54,229,154,170,202,184,186,138,202,58,247,31,229,170,154,169,186,218,186,216,58,70,230,154,170,170,189,154,186,217,74,54,230,171,172,217,170,170,170,171,58,54,229,154,153,170,201,170,202,170,59,54,230,170,218,220,171,186,170,170,58,54,230,186,186,171,171,170,154,184,59,54,230,170,170,170,218,154,186,172,58,53,230,138,171,170,152,170,170,154,58,54,229,154,152,170,170,170,186,218,56,247,31,230,168,172,173,171,202,185,205,58,70,230,170,155,218,170,170,170,170,58,38,230,170,170,186,173,202,170,170,57,54,230,170,216,168,171,154,138,172,58,54,230,168,154,170,170,172,170,186,59,38,230,171,170,173,170,140,170,138,58,54,230,170,216,170,218,170,170,170,42,54,230,185,186,173,203,186,170,154,58,54,230,202,218,171,186,170,154,186,59,247,31,230,138,154,186,170,169,170,170,58,37,229,171,154,170,141,218,186,170,59,38,228,170,141,186,172,202,188,189,42,53,230,202,171,152,170,187,187,170,58,70,230,170,170,155,138,170,173,138,60,54,230,171,155,186,219,152,170,170,75,38,230,189,168,170,170,203,202,168,58,54,230,170,202,155,170,186,169,170,58,53,230,170,170,170,138,170,170,216,58,247,31,230,170,170,170,170,138,170,170,59,54,230,172,202,173,171,169,170,171,58,38,229,171,138,170,218,170,138,201,60,54,230,186,170,187,138,170,203,170,58,69,214,168,170,171,203,204,173,156,59,54,230,170,172,170,172,170,202,170,57,54,230,202,168,170,168,155,170,170,58,54,230,173,170,204,170,171,139,170,56,54,230,170,219,203,218,184,170,140,58,247,31,230,170,189,218,186,170,189,170,58,54,230,170,170,172,171,170,140,170,58,54,230,136,171,186,170,173,170,170,60,54,230,220,216,169,168,218,218,200,74,69,230,172,171,138,154,170,173,168,74,70,230,218,172,169,187,169,188,137,59,53,230,170,138,173,218,204,170,138,57,54,230,170,204,186,188,171,202,170,61,54,229,186,168,141,218,170,201,169,60,247,31,52,51,51,51,51,34,51,36,51,54,52,51,50,51,51,51,50,51,51,53,52,50,35,35,51,51,67,35,67,70,52,52,51,51,51,51,34,51,51,54,52,51,51,51,51,35,51,51,51,54,52,51,51,51,51,68,51,51,50,70,52,51,51,51,49,67,51,51,51,54,19,51,51,51,51,67,35,51,51,54,52,51,51,51,51,67,52,51,51,247,31,101,86,102,85,102,86,102,101,102,70,85,102,86,86,102,102,102,102,102,70,102,102,85,101,102,101,102,102,102,70,102,102,86,101,102,101,102,85,102,70,86,102,86,102,102,86,102,101,101,70,86,101,101,102,102,101,102,101,101,85,86,102,101,102,102,86,102,102,102,70,102,102,102,102,86,102,102,102,101,70,102,86,102,102,102,102,102,102,86,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,30,17,33,49,67,51,50,35,67,51,51,231,30,119,135,119,119,133,135,135,135,119,118,235,30,167,219,219,187,187,186,203,203,187,102,235,30,183,0,0,0,0,0,0,0,0,116,235,62,181,0,0,0,0,0,0,0,0,114,234,62,183,0,0,0,0,0,0,0,0,115,234,62,183,0,0,0,0,0,0,0,0,115,235,78,183,0,0,0,0,0,0,0,0,115,235,62,183,0,0,0,0,0,0,0,0,99,235,62,182,0,0,0,0,0,0,0,0,114,237,62,183,0,0,0,0,0,0,0,0,114,234,46,199,0,0,0,0,0,0,0,0,115,236,62,214,0,0,0,0,0,0,0,0,115,235,46,167,0,0,0,0,0,0,0,0,115,235,62,151,0,0,0,0,0,0,0,0,131,237,46,168,0,0,0,0,0,0,0,0,115,235,78,215,0,0,0,0,0,0,0,0,100,234,78,200,0,0,0,0,0,0,0,0,114,235,62,200,0,0,0,0,0,0,0,0,129,237,62,71,52,35,68,67,51,51,51,18,113,235,62,119,133,119,135,117,120,119,120,120,120,235,126,187,170,205,187,170,187,187,171,155,219,235,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,16,17,17,17,17,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,32,2,0,32,17,18,33,0,18,17,17,17,2,18,17,17,17,2,18,17,17,17,2,32,17,17,33,0,0,18,17,2,0,0,32,33,0,0,0,0,2,0,0,0,0,0,0,0,0,34,32,2,0,32,33,34,34,0,32,34,34,34,0,48,34,34,50,0,0,35,34,3,0,0,48,50,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,32,33,2,0,0,32,34,2,0,0,48,34,2,0,0,0,35,2,0,0,0,48,2,0,0,0,0,3,0,0,0,0,0,0,0,0,34,0,0,0,32,17,2,0,0,18,17,33,0,0,18,17,17,2,0,32,17,17,2,0,0,18,17,2,0,0,32,34,33,2,0,0,0,18,2,0,0,0,34,0,0,0,0,0,0,0,135,0,0,0,112,115,4,0,0,128,71,69,0,0,0,105,85,0,0,0,144,102,0,0,0,0,0,2,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,160,0,0,0,0,147,10,0,0,0,64,89,0,0,0,160,106,0,0,0,0,120,0,0,0,0,0,2,0,0,0,0,16,0,0,0,0,0,0,32,2,0,34,0,18,33,32,17,2,18,17,18,17,2,32,17,17,33,0,32,17,17,33,0,32,17,17,33,0,32,17,17,33,0,32,17,17,33,0,0,34,34,2,0,144,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,9,25,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,102,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,145,57,117,119,119,53,56,117,119,119,53,56,117,119,119,53,56,117,119,119,53,56,117,119,119,53,56,117,119,119,53,56,117,119,119,53,56,117,119,119,53,56,117,119,119,53,68,83,119,119,87,131,83,119,119,87,131,83,119,119,87,131,83,119,119,87,131,83,119,119,87,131,83,119,119,87,131,83,119,119,87,131,83,119,119,87,131,83,119,119,87,147,25,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,24,50,51,51,18,102,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,129,33,51,51,35,145,144,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,9,240,238,204,204,238,238,239,204,236,255,255,207,204,236,238,238,206,204,238,254,255,238,204,204,254,255,239,204,188,236,254,238,204,236,238,254,207,204,236,255,255,204,204,238,238,255,238,206,188,204,255,239,204,204,236,254,239,238,238,255,255,207,204,238,238,255,239,204,236,238,255,238,206,204,236,255,239,238,204,238,255,238,204,187,236,238,238,206,204,255,15,175,122,34,34,135,154,73,36,84,170,171,58,34,84,152,155,138,37,84,169,171,138,69,68,136,155,73,67,85,153,171,57,52,68,152,155,40,66,68,137,155,40,35,84,137,221,154,116,136,152,201,153,88,117,152,186,170,53,67,149,185,170,72,116,152,185,154,36,66,131,185,169,69,84,167,185,170,53,132,135,185,154,37,65,132,184,154,53,68,146,249,143,18,17,68,130,139,18,50,100,83,139,17,51,34,114,123,51,97,70,83,139,20,17,18,33,90,17,33,34,50,123,49,102,51,131,91,33,51,102,83,123,51,67,102,54,187,19,65,102,35,229,37,99,102,51,184,39,50,102,54,184,56,35,100,51,183,23,33,51,51,180,37,49,102,54,181,55,49,38,97,184,21,33,50,51,183,39,50,35,50,248,175,88,136,85,170,155,120,119,85,153,155,137,120,85,170,171,74,84,85,169,171,73,119,85,170,171,89,120,68,168,155,137,120,133,170,155,89,135,85,169,171,89,136,88,169,221,153,136,69,148,234,153,120,85,165,186,137,135,136,165,186,154,133,88,165,186,170,136,88,165,186,153,135,119,132,185,120,68,36,149,186,154,84,117,168,186,170,120,85,168,250,240,238,204,204,236,255,255,238,254,255,255,206,188,187,203,255,239,238,238,255,255,255,238,238,255,255,238,204,204,252,255,239,204,238,254,255,239,204,204,252,255,206,204,236,255,255,238,204,204,236,238,239,238,238,238,255,255,204,204,236,255,239,206,204,236,255,255,188,203,204,254,239,206,238,238,254,239,206,204,238,254,239,206,236,238,254,255,238,236,255,15,0,64,68,0,0,0,52,51,4,0,64,3,0,67,0,52,16,1,32,4,52,16,0,32,4,52,0,0,32,4,64,3,0,66,0,0,36,34,4,0,0,64,68,0,0,0,0,0,0,0,0,51,48,3,0,48,33,35,50,0,48,34,50,34,0,64,50,34,66,0,0,36,34,4,0,0,64,66,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,0,48,33,3,0,0,48,34,2,0,0,64,50,2,0,0,0,36,2,0,0,0,64,2,0,0,0,0,4,0,0,0,0,0,0,0,0,17,0,0,0,16,34,1,0,0,33,34,18,0,0,33,34,34,1,0,16,34,34,1,0,0,33,34,1,0,0,16,17,18,1,0,0,0,33,1,0,0,0,17,0,0,0,0,0,0,0,203,0,0,0,176,179,5,0,0,192,75,88,0,0,0,121,134,0,0,0,160,119,0,0,0,0,0,2,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,144,0,0,0,0,131,9,0,0,0,32,72,0,0,0,144,89,0,0,0,0,103,0,0,0,0,0,2,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,16,33,0,0,48,67,0,0,16,34,0,0,0,5,0,0,0,5,0,0,5,5,0,0,80,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,4,0,0,0,0,0,0,84,7,0,0,0,0,0,64,37,7,0,0,0,0,0,84,114,0,0,0,0,0,64,53,7,0,0,0,0,0,84,114,0,0,0,0,0,64,53,7,0,0,0,0,0,84,114,0,0,0,0,0,64,53,7,0,0,0,0,0,80,114,0,0,0,0,0,0,53,17,6,0,0,0,0,80,114,17,6,0,0,0,0,37,7,102,0,0,0,0,0,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,239,222,221,204,204,204,204,221,237,254,255,255,255,239,222,205,187,187,170,170,187,187,220,237,254,255,255,222,205,187,170,153,153,153,153,170,187,220,237,255,239,221,187,154,153,120,119,119,135,153,169,187,221,254,239,189,171,153,120,103,102,102,118,135,153,186,219,254,222,188,154,120,103,85,85,85,85,118,135,169,203,237,222,171,137,103,86,69,68,68,84,101,118,152,186,237,205,155,121,102,69,52,51,51,67,84,102,151,185,220,189,154,120,86,68,35,34,34,50,68,101,135,169,219,189,154,103,69,52,34,34,34,34,67,84,118,169,219,188,137,87,69,35,17,17,17,17,50,84,117,152,203,188,121,86,52,34,17,17,17,17,34,67,101,151,203,172,121,86,52,34,17,17,17,17,34,67,101,151,202,172,121,86,52,34,17,17,17,17,34,67,101,151,202,172,121,86,52,34,17,17,17,17,34,67,101,151,202,172,121,86,52,34,17,17,17,17,34,67,101,151,202,188,121,86,52,34,17,17,17,17,34,67,101,151,203,188,137,87,69,35,17,17,17,17,50,84,117,152,203,189,154,103,69,52,34,34,34,34,67,84,118,169,219,189,154,120,86,68,35,34,34,50,68,101,135,169,219,205,155,121,102,69,52,51,51,67,84,102,151,185,220,222,171,137,103,86,69,68,68,84,101,118,152,186,237,222,188,154,120,103,85,85,85,85,118,135,169,203,237,239,189,171,153,120,103,102,102,118,135,153,186,219,254,239,221,187,154,153,120,119,119,135,153,169,187,221,254,255,222,205,187,170,153,153,153,153,170,187,220,237,255,255,239,222,205,187,187,170,170,187,187,220,237,254,255,255,255,239,222,221,204,204,204,204,221,237,254,255,255,0,0,0,0,0,0,0,0,0,0,0,239,254,0,0,0,0,0,223,188,203,253,0,0,0,240,156,120,135,201,15,0,0,207,17,17,19,86,252,0,0,157,49,18,17,85,217,0,240,140,49,18,18,84,200,15,224,123,33,50,18,102,183,14,224,123,19,49,34,85,183,14,240,140,33,34,18,84,200,15,0,157,100,85,69,86,217,0,0,207,85,101,85,85,252,0,0,240,156,120,135,168,15,0,0,0,223,188,203,253,0,0,0,0,0,239,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,0,0,0,0,0,223,188,203,253,0,0,0,240,172,137,152,202,15,0,0,207,17,81,247,255,252,0,0,173,49,18,117,255,218,0,240,156,49,18,86,247,201,15,224,139,33,50,86,247,184,14,224,139,19,49,102,247,184,14,240,156,33,34,86,247,201,15,0,173,100,85,117,255,218,0,0,207,85,101,247,255,252,0,0,240,172,137,152,185,15,0,0,0,223,188,203,253,0,0,0,0,0,239,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,0,0,0,0,0,223,188,203,253,0,0,0,240,156,120,135,201,15,0,0,207,17,68,246,255,252,0,0,157,33,68,246,255,217,0,240,140,33,68,246,255,200,15,224,123,33,84,246,255,183,14,224,123,18,84,246,255,183,14,240,140,33,68,246,255,200,15,0,157,83,68,246,255,217,0,0,207,68,84,246,255,252,0,0,240,156,120,135,168,15,0,0,0,223,188,203,253,0,0,0,0,0,239,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,203,0,0,0,0,0,172,137,152,202,0,0,0,192,105,69,84,150,12,0,0,156,17,49,204,204,201,0,0,106,33,195,204,204,166,0,192,89,49,204,204,204,149,12,176,72,50,204,204,204,132,11,176,72,49,204,204,204,132,11,192,89,49,204,204,204,149,12,0,106,33,195,204,204,166,0,0,156,17,49,204,204,201,0,0,192,105,69,84,117,12,0,0,0,172,137,152,202,0,0,0,0,0,188,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,169,0,0,0,0,0,138,103,118,168,0,0,0,160,71,35,50,116,10,0,0,122,17,17,17,17,167,0,0,72,161,170,170,26,132,0,160,55,161,170,170,26,115,10,144,38,161,170,170,26,98,9,144,38,161,170,170,26,98,9,160,55,161,170,170,26,115,10,0,72,161,170,170,26,132,0,0,122,17,17,17,17,167,0,0,160,71,35,50,83,10,0,0,0,138,103,118,168,0,0,0,0,0,154,169,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,188,203,0,0,0,0,0,172,137,152,202,0,0,0,192,105,69,84,150,12,0,0,156,204,204,19,18,201,0,0,106,204,204,60,17,166,0,192,89,204,204,204,19,149,12,176,72,204,204,204,35,132,11,176,72,204,204,204,19,132,11,192,89,204,204,204,19,149,12,0,106,204,204,60,18,166,0,0,156,204,204,19,17,201,0,0,192,105,69,84,117,12,0,0,0,172,137,152,202,0,0,0,0,0,188,203,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,0,0,0,0,0,223,188,203,253,0,0,0,240,172,137,152,202,15,0,0,207,255,127,70,38,252,0,0,173,255,127,68,34,218,0,240,156,255,127,69,33,201,15,224,139,255,127,69,51,184,14,224,139,255,127,85,34,184,14,240,156,255,127,69,34,201,15,0,173,255,127,69,36,218,0,0,207,255,127,85,85,252,0,0,240,172,137,152,185,15,0,0,0,223,188,203,253,0,0,0,0,0,239,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,254,0,0,0,0,0,223,188,203,253,0,0,0,240,156,120,135,201,15,0,0,207,255,111,20,35,252,0,0,157,255,54,19,34,217,0,240,140,111,52,20,33,200,15,224,123,111,84,18,51,183,14,224,123,111,83,34,34,183,14,240,140,111,68,20,33,200,15,0,157,255,70,52,67,217,0,0,207,255,111,68,68,252,0,0,240,156,120,135,168,15,0,0,0,223,188,203,253,0,0,0,0,0,239,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,4,0,0,0,0,0,64,49,20,3,0,0,0,48,49,50,52,68,1,0,48,52,68,68,49,68,99,4,72,20,52,100,65,67,65,179,90,23,68,49,65,49,198,187,117,136,53,49,20,147,185,220,117,88,88,56,195,201,155,220,133,136,136,133,203,205,189,156,135,136,119,117,201,156,157,188,120,117,133,117,188,188,155,185,87,120,136,117,219,204,201,187,128,136,117,119,204,203,156,12,0,112,135,168,203,201,11,0,0,0,128,88,201,9,0,0,0,0,0,112,12,0,0,0,0,0,0,48,4,0,0,0,0,0,64,98,113,9,0,0,0,16,54,156,52,180,3,0,16,110,180,20,50,113,131,4,72,203,20,27,71,76,179,163,206,125,75,49,70,28,221,170,229,40,22,50,113,227,174,126,101,232,232,56,211,213,238,254,236,142,131,133,106,215,254,157,250,200,45,215,213,157,151,173,223,223,60,101,253,245,229,254,86,104,232,110,58,253,249,170,160,94,99,54,214,214,159,15,0,32,34,146,106,249,10,0,0,0,128,28,249,9,0,0,0,0,0,96,13,0,0,0,0,0,0,16,1,0,0,0,0,0,16,66,35,1,0,0,0,16,33,40,35,51,1,0,16,20,51,51,34,33,50,1,146,131,35,51,50,56,56,232,70,114,51,33,49,40,123,251,132,102,113,34,35,88,185,247,68,214,214,130,120,201,158,248,101,102,101,228,203,200,254,252,153,86,68,221,201,156,158,252,73,72,84,212,252,249,136,249,68,70,102,221,123,204,201,251,240,86,69,164,204,203,156,15,0,208,100,230,203,201,15,0,0,0,224,213,201,15,0,0,0,0,0,208,15,0,0,0,0,0,0,176,2,0,0,0,0,0,16,30,114,15,0,0,0,96,50,155,65,53,5,0,16,150,33,134,75,22,118,2,70,178,98,50,98,101,67,226,202,111,20,97,18,209,210,207,95,88,41,98,38,134,233,251,117,52,253,181,193,233,233,207,69,230,122,83,205,237,238,238,234,75,68,135,204,254,235,238,122,165,86,51,248,157,191,189,135,116,54,195,207,201,158,156,128,74,164,90,139,236,205,12,0,240,164,122,206,217,10,0,0,0,224,185,169,12,0,0,0,0,0,160,12,0,0,0,0,0,0,32,1,0,0,0,0,0,16,28,55,7,0,0,0,16,50,151,65,66,1,0,16,146,82,66,70,55,130,1,196,100,114,50,114,114,67,217,118,154,36,35,34,129,153,253,110,88,147,114,34,142,185,250,133,68,232,227,140,157,236,254,70,230,202,212,236,237,171,250,166,134,71,231,190,234,186,254,134,101,102,196,235,157,175,253,71,117,90,244,207,189,202,251,224,134,103,218,186,203,188,15,0,240,164,230,187,217,15,0,0,0,240,229,220,15,0,0,0,0,0,208,15,0,0,0,0,0,0,48,3,0,0,0,0,0,16,150,49,2,0,0,0,16,36,120,68,82,2,0,16,73,17,53,34,100,17,9,104,53,114,36,34,103,51,147,146,20,81,49,104,35,211,213,123,187,21,86,98,211,137,252,108,185,203,141,225,172,215,223,184,119,121,150,124,140,253,255,182,170,116,135,221,203,255,219,109,168,149,34,249,140,253,250,120,38,122,72,205,214,221,127,32,188,100,74,157,156,252,13,0,96,103,135,166,124,10,0,0,0,96,226,236,15,0,0,0,0,0,128,10,0,0,0,0,0,0,16,1,0,0,0,0,0,16,83,67,1,0,0,0,16,50,50,66,50,1,0,16,69,69,67,50,53,20,1,146,34,51,50,50,67,51,170,117,145,51,66,70,50,137,250,134,122,130,35,67,137,218,251,122,117,119,162,105,188,172,254,102,120,137,230,204,219,221,254,117,119,117,231,221,190,206,251,122,120,150,168,237,220,253,251,104,119,122,184,205,172,222,253,192,122,101,231,237,172,204,15,0,192,102,231,171,203,15,0,0,0,176,230,173,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,48,119,55,7,0,0,0,48,51,133,146,133,3,0,128,115,115,56,120,121,18,2,113,153,85,117,114,146,40,129,30,49,53,117,87,133,135,248,235,46,145,55,147,135,51,223,107,230,17,115,137,255,207,205,107,235,238,37,136,223,173,221,182,182,235,182,172,172,223,218,110,187,102,102,223,252,253,172,187,102,182,107,205,207,220,202,96,110,187,102,172,218,207,12,0,176,230,235,221,253,12,0,0,0,176,107,172,13,0,0,0,0,0,224,13,0,0,0,0,0,0,80,3,0,0,0,0,0,80,120,88,7,0,0,0,80,85,135,148,151,5,0,128,133,116,72,137,121,52,4,129,153,85,133,132,148,73,35,30,81,69,117,120,149,39,242,235,30,145,72,148,39,34,223,110,230,17,129,41,255,207,205,107,235,238,17,34,223,173,221,182,182,235,182,172,172,223,218,110,187,102,102,223,252,221,172,187,102,182,107,205,207,220,202,96,110,187,102,172,218,255,12,0,96,235,235,221,253,12,0,0,0,176,107,172,13,0,0,0,0,0,224,13,0,0,0,0,0,0,112,3,0,0,0,0,0,112,23,123,1,0,0,0,112,23,119,115,119,7,0,112,123,113,115,177,123,23,1,21,97,115,115,51,113,51,135,153,36,123,55,27,55,195,202,153,233,121,115,119,167,200,200,89,69,153,116,195,202,218,172,73,233,94,238,250,207,140,204,149,149,233,149,141,138,207,200,94,153,85,69,207,250,252,138,153,85,148,89,172,175,202,168,80,94,153,85,138,200,175,10,0,144,228,233,204,252,10,0,0,0,144,89,138,12,0,0,0,0,0,224,12,0,0,0,0,0,0,64,2,0,0,0,0,0,64,27,77,1,0,0,0,64,20,68,114,68,4,0,64,75,209,85,129,75,36,1,84,113,99,66,51,129,34,84,141,18,136,52,18,36,181,184,221,203,71,67,71,132,181,189,71,68,126,210,178,185,172,203,151,199,78,204,248,190,92,251,116,232,119,117,154,88,238,181,78,124,118,148,191,249,139,142,151,182,53,71,203,142,184,133,64,79,231,141,88,199,159,12,0,112,227,203,187,235,8,0,0,0,112,142,92,14,0,0,0,0,0,192,11,0,0,0,0,0,0,128,8,0,0,0,0,0,208,72,116,12,0,0,0,160,102,168,157,25,1,0,128,74,70,204,204,172,71,4,142,119,150,221,157,209,29,250,169,73,216,164,74,68,105,254,197,238,168,26,124,252,239,191,37,162,233,140,248,255,190,91,21,213,173,238,239,254,59,187,82,82,213,153,255,53,191,179,45,85,34,18,191,245,251,53,85,34,81,37,91,95,181,83,32,45,85,34,53,179,95,5,0,80,209,213,187,251,5,0,0,0,80,37,53,11,0,0,0,0,0,208,11,0,0,0,0,0,0,32,7,0,0,0,0,0,16,17,35,3,0,0,0,128,65,17,58,18,3,0,16,161,35,169,104,170,138,5,75,99,19,21,145,34,131,83,35,103,73,129,187,146,249,184,114,93,183,72,35,115,250,222,37,109,183,137,87,158,156,252,210,216,221,123,206,207,164,239,125,92,123,215,254,230,236,190,211,155,178,164,156,159,247,251,84,103,119,164,125,239,239,234,80,167,178,34,204,168,235,7,0,48,188,117,158,238,12,0,0,0,160,221,200,15,0,0,0,0,0,96,15,0,0,0,0,0,0,16,3,0,0,0,0,0,48,163,35,1,0,0,0,48,161,34,113,50,1,0,32,113,50,167,35,163,50,1,118,19,163,51,162,49,114,179,196,100,19,119,18,113,129,185,198,102,116,50,161,147,155,143,84,196,84,164,177,153,238,139,212,100,214,100,184,190,137,191,101,204,86,197,191,185,158,187,196,84,213,100,155,143,155,143,68,198,198,196,142,184,190,139,176,100,204,101,155,191,153,15,0,208,100,196,143,184,14,0,0,0,208,84,187,15,0,0,0,0,0,192,14,0,0,0,0,0,0,16,3,0,0,0,0,0,48,179,35,1,0,0,0,48,177,34,145,50,1,0,32,145,50,182,35,179,50,1,150,19,179,51,178,49,146,195,132,116,19,153,18,145,129,202,214,102,148,50,177,163,172,143,84,212,84,180,193,170,239,140,228,100,230,100,200,207,138,207,101,219,86,213,207,202,175,204,212,84,229,100,172,143,172,143,68,214,182,212,143,200,207,140,192,100,221,101,172,207,170,15,0,224,100,212,143,200,15,0,0,0,224,84,204,15,0,0,0,0,0,208,15,0,0,0,0,0,0,16,3,0,0,0,0,0,48,131,35,1,0,0,0,48,129,34,97,50,1,0,32,97,50,132,36,131,50,1,103,19,131,51,130,49,98,228,149,101,20,100,18,97,161,236,183,119,101,50,129,196,205,175,101,181,101,133,209,204,239,173,197,149,199,149,218,239,172,239,118,185,103,182,223,236,207,237,181,101,198,117,205,175,205,175,85,183,151,181,175,218,223,173,176,149,185,150,205,239,204,15,0,192,117,181,175,234,15,0,0,0,192,101,221,15,0,0,0,0,0,176,15,0,0,0,0,0,0,16,3,0,0,0,0,0,48,163,35,1,0,0,0,48,161,34,129,50,1,0,32,129,50,168,37,163,50,1,134,19,163,51,162,49,130,213,196,100,21,136,18,129,113,217,198,102,132,50,161,149,155,127,84,196,84,164,177,153,238,123,212,132,214,132,183,222,121,223,101,204,86,197,191,217,158,219,196,84,213,100,155,127,155,127,68,198,198,196,126,183,190,123,176,132,204,133,155,223,153,15,0,208,100,196,127,215,14,0,0,0,208,84,187,15,0,0,0,0,0,192,14,0,0,0,0,0,0,16,3,0,0,0,0,0,48,131,35,1,0,0,0,48,129,34,97,50,1,0,32,97,50,132,36,131,50,1,103,19,131,51,130,49,98,228,149,101,20,100,18,97,161,236,183,119,101,50,129,196,205,175,101,181,101,133,209,204,239,173,197,149,199,149,218,239,172,239,118,185,103,182,223,236,207,237,181,101,198,117,205,175,205,175,85,183,151,181,175,218,223,173,176,149,185,150,205,239,204,15,0,192,117,181,175,234,15,0,0,0,192,101,221,15,0,0,0,0,0,176,15,0,0,0,0,0,0,16,3,0,0,0,0,0,48,163,35,1,0,0,0,48,161,34,113,50,1,0,32,113,50,167,35,163,50,1,118,19,163,51,162,49,114,195,212,100,19,119,18,113,129,201,214,102,116,50,161,147,156,143,84,212,84,164,193,153,255,140,228,100,230,100,200,207,137,207,101,221,86,213,207,201,159,204,212,84,229,100,156,143,156,143,68,214,214,212,143,200,207,140,176,100,221,101,156,207,153,15,0,224,100,212,143,200,15,0,0,0,224,84,204,15,0,0,0,0,0,208,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,17,0,0,33,12,0,0,0,38,16,33,32,3,0,0,16,115,12,194,155,201,0,0,32,200,12,60,185,59,0,0,0,128,179,147,203,16,2,0,16,12,154,17,0,33,12,0,32,48,85,114,188,192,0,0,0,66,155,195,153,53,1,0,16,183,16,188,27,12,44,0,33,204,32,60,11,0,192,0,194,192,176,19,6,0,0,0,0,0,48,180,12,0,0,0,0,0,48,185,0,0,0,0,0,0,128,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,1,0,0,0,0,0,0,36,68,0,0,0,0,0,0,48,6,0,0,0,0,16,2,81,6,33,0,0,0,33,17,98,21,2,0,0,16,52,3,82,69,0,1,0,0,49,17,52,19,52,3,0,0,0,83,83,49,101,1,0,0,16,49,21,84,4,0,0,0,0,16,19,53,1,0,0,0,0,64,81,69,20,0,0,0,0,0,52,22,0,0,0,0,0,0,99,37,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,68,3,0,48,3,0,0,0,65,64,51,64,3,0,0,64,17,66,4,68,49,0,0,16,82,21,4,68,66,0,0,52,64,17,81,33,0,0,0,68,3,48,19,5,52,0,0,64,80,68,20,21,64,0,0,19,33,69,17,18,4,0,64,4,52,85,52,32,52,0,64,0,0,18,68,64,68,3,0,0,0,51,33,64,64,4,0,0,0,36,21,0,0,0,0,0,0,32,81,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,1,0,0,0,0,0,0,16,22,0,0,0,0,0,16,0,41,17,0,0,0,0,97,68,73,38,0,0,0,0,32,104,100,0,0,0,0,0,0,100,17,1,0,0,0,0,17,16,131,22,0,0,0,48,102,57,103,1,0,0,0,0,19,102,107,16,3,0,0,0,0,103,102,102,1,0,0,0,0,96,177,16,0,0,0,0,16,131,35,0,0,0,0,0,16,102,41,0,0,0,0,0,0,98,11,0,0,0,0,0,0,133,91,0,0,0,0,0,85,200,221,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,1,0,0,0,0,0,32,85,80,0,1,0,0,0,81,200,80,18,6,81,0,0,16,134,66,98,1,5,0,0,0,98,201,181,85,5,0,0,0,85,92,6,41,0,0,0,0,49,53,197,89,0,0,0,0,16,165,193,1,0,0,0,0,80,115,91,0,0,0,0,0,0,147,11,0,0,0,0,0,0,96,201,0,0,0,0,0,0,144,11,0,0,0,0,0,0,128,185,0,0,0,0,0,0,156,203,0,0,0,0,0,0,0,0,0,0,0,0,102,0,0,0,1,0,0,0,16,6,6,102,99,0,0,0,96,11,50,99,102,0,0,96,182,1,101,6,187,6,0,0,81,101,96,176,111,7,0,0,0,102,102,251,54,54,0,96,102,211,28,102,19,99,0,0,3,119,55,49,102,6,0,0,0,103,183,248,0,0,0,0,0,3,206,207,0,0,0,0,0,0,137,188,0,0,0,0,0,0,202,252,0,0,0,0,0,0,120,247,0,0,0,0,0,0,200,247,0,0,0,0,0,0,201,252,0,0,0,0,0,0,80,9,0,0,0,0,0,144,81,25,5,0,0,0,80,81,83,89,153,1,0,80,89,153,153,81,153,197,9,154,201,89,201,145,149,145,133,45,22,153,81,145,81,188,136,98,42,82,81,25,69,132,235,98,42,42,90,181,180,72,235,162,170,170,162,184,190,142,75,166,170,102,98,180,75,78,139,106,98,162,98,123,139,72,132,38,106,170,98,232,187,180,136,160,170,98,102,187,184,75,11,0,96,166,218,184,184,8,0,0,0,160,42,180,4,0,0,0,0,0,96,11,0,0,0,0,0,0,80,3,0,0,0,0,0,80,83,51,5,0,0,0,80,17,51,19,51,3,0,48,85,83,17,51,19,83,1,54,51,83,83,51,51,51,131,167,26,51,85,83,19,209,239,170,122,55,49,53,211,205,221,151,121,167,54,211,237,253,206,102,105,103,169,238,235,221,189,169,118,118,119,223,221,205,221,170,169,150,166,223,205,207,254,154,170,169,102,200,239,223,238,96,121,170,169,239,255,141,13,0,96,102,154,255,221,13,0,0,0,112,166,238,8,0,0,0,0,0,112,11,0,0,0,0,0,0,48,6,0,0,0,0,0,48,102,54,1,0,0,0,32,82,99,86,101,6,0,16,86,99,18,83,163,86,3,57,50,97,170,58,98,17,209,148,98,90,101,17,106,227,72,204,204,108,99,106,227,237,136,153,121,151,87,210,237,239,221,148,66,199,68,237,143,142,238,116,68,119,34,237,221,239,222,153,204,204,119,222,212,79,223,114,194,44,156,238,254,238,143,32,204,121,76,216,248,221,8,0,192,156,204,238,253,15,0,0,0,64,39,136,13,0,0,0,0,0,112,8,0,0,0,0,0,0,32,2,0,0,0,0,0,80,51,99,3,0,0,0,96,18,82,81,18,2,0,32,34,49,21,53,53,33,1,55,85,37,50,49,81,54,209,118,104,34,50,51,18,195,174,120,136,87,35,81,227,187,251,71,118,135,52,210,223,190,223,135,119,121,105,238,188,154,219,135,88,152,169,238,251,207,220,151,134,132,151,220,207,236,239,184,136,102,120,190,220,252,190,160,104,88,100,190,254,234,13,0,96,119,167,171,207,10,0,0,0,112,137,251,12,0,0,0,0,0,144,11,0,0,0,0,0,0,48,2,0,0,0,0,0,80,67,101,3,0,0,0,96,34,83,82,36,2,0,32,35,66,37,69,69,49,1,72,85,53,68,81,81,70,225,119,88,50,50,51,19,212,190,136,169,88,36,82,212,204,252,56,151,135,70,226,239,207,239,152,152,122,122,254,205,171,221,153,90,169,186,238,236,223,237,168,166,147,167,221,223,221,238,185,154,102,120,206,238,253,206,160,105,71,99,206,254,235,14,0,96,136,183,188,222,11,0,0,0,144,154,252,13,0,0,0,0,0,160,12,0,0,0,0,0,0,160,10,0,0,0,0,0,16,35,162,6,0,0,0,48,33,97,50,67,2,0,16,17,50,51,163,106,51,3,77,98,35,50,44,99,162,242,105,58,43,179,50,187,188,184,233,185,55,201,99,129,223,223,158,150,153,57,178,222,189,253,83,157,110,148,191,173,223,187,151,25,153,103,221,219,255,173,114,117,126,39,175,239,189,219,154,153,119,158,221,189,191,190,224,183,121,103,190,239,254,11,0,112,170,201,215,251,11,0,0,0,144,154,206,13,0,0,0,0,0,160,11,0,0,0,0,0,0,80,6,0,0,0,0,0,96,83,54,5,0,0,0,80,81,81,86,102,3,0,80,86,102,102,82,102,133,6,106,38,86,38,97,98,99,213,108,57,102,81,99,83,232,221,150,106,86,83,50,181,219,254,150,26,106,90,229,235,189,254,161,162,170,162,237,239,79,190,169,170,25,150,235,67,191,222,154,22,161,150,62,222,180,219,25,154,170,150,253,238,75,221,160,170,17,153,238,237,180,14,0,144,169,196,237,237,13,0,0,0,160,106,235,11,0,0,0,0,0,144,14,0,0,0,0,0,0,48,5,0,0,0,0,0,80,51,53,3,0,0,0,48,49,49,53,85,3,0,48,53,85,85,50,85,115,5,90,37,53,37,81,82,83,211,92,56,85,49,83,51,231,221,133,90,53,51,50,179,219,254,133,42,90,58,227,235,189,254,162,164,170,164,237,239,159,190,168,170,40,133,235,148,191,222,138,37,162,133,78,222,185,219,40,138,170,133,253,238,155,221,160,170,33,136,238,237,185,14,0,128,168,196,237,237,13,0,0,0,160,90,235,11,0,0,0,0,0,128,14,0,0,0,0,0,0,32,3,0,0,0,0,0,48,33,19,2,0,0,0,32,44,43,35,51,1,0,32,35,51,51,45,51,82,3,55,211,35,211,60,61,49,162,73,22,51,43,49,33,181,170,100,71,36,33,29,130,168,203,100,231,71,39,178,184,138,203,126,126,119,126,186,188,252,139,118,119,230,100,184,255,140,171,103,228,126,100,251,171,143,168,230,103,119,100,202,187,248,170,112,119,237,102,187,186,143,11,0,96,118,159,186,186,10,0,0,0,112,71,184,8,0,0,0,0,0,96,11,0,0,0,0,0,0,96,6,0,0,0,0,0,192,50,35,6,0,0,0,96,50,33,17,52,6,0,192,50,33,19,49,17,19,6,201,50,33,19,49,18,35,134,234,200,67,33,17,35,172,138,221,149,105,50,35,230,175,168,151,151,93,199,134,184,143,186,149,154,93,87,235,186,223,170,151,221,109,117,190,251,255,136,149,149,189,151,188,239,239,136,153,85,218,137,184,201,252,185,208,135,217,117,184,184,252,11,0,208,217,90,186,234,11,0,0,0,224,215,235,11,0,0,0,0,0,112,11,0,0,0,0,0,0,176,4,0,0,0,0,0,48,90,186,3,0,0,0,64,193,19,194,20,4,0,160,177,52,26,60,74,146,2,40,75,161,69,42,199,161,97,249,71,60,21,59,179,147,105,238,130,72,77,197,241,159,150,133,133,46,85,100,198,111,169,114,137,46,37,252,201,239,153,133,238,62,82,207,252,255,119,130,130,206,133,173,255,255,103,120,34,233,119,166,215,253,199,224,117,232,82,182,182,253,11,0,224,232,41,201,249,10,0,0,0,240,229,250,11,0,0,0,0,0,80,12,0,0,0,0,0,0,176,4,0,0,0,0,0,48,90,186,3,0,0,0,64,193,19,194,20,4,0,160,177,52,26,60,74,146,2,40,75,161,69,42,199,161,97,249,71,60,21,59,179,147,105,238,130,72,77,197,241,159,150,133,133,46,85,100,198,111,169,114,137,46,37,252,201,239,153,133,238,62,82,207,252,255,119,130,130,206,133,173,255,255,103,120,34,233,119,166,215,253,199,224,117,232,82,182,182,253,11,0,224,232,41,201,249,10,0,0,0,240,229,250,11,0,0,0,0,0,80,12,0,0,0,0,0,0,176,4,0,0,0,0,0,48,90,186,3,0,0,0,64,193,19,194,20,4,0,160,177,52,26,60,74,146,2,40,75,161,69,42,199,161,97,249,71,60,21,59,179,147,105,238,130,72,77,197,241,159,150,133,133,46,85,100,198,111,169,114,137,46,37,252,201,239,153,133,238,62,82,207,252,255,119,130,130,206,133,173,255,255,103,120,34,233,119,166,215,253,199,224,117,232,82,182,182,253,11,0,224,232,41,201,249,10,0,0,0,240,229,250,11,0,0,0,0,0,80,12,0,0,0,0,0,0,64,4,0,0,0,0,0,96,50,35,4,0,0,0,64,50,33,17,51,4,0,96,50,33,19,49,17,19,4,105,50,33,19,49,18,35,100,250,104,51,33,17,35,150,121,221,165,73,50,35,228,159,150,167,151,94,103,100,199,111,169,133,138,93,87,236,201,207,153,151,221,94,117,206,251,255,119,149,133,205,151,188,239,239,119,137,85,218,136,166,199,252,199,224,135,234,117,182,182,252,11,0,208,233,90,201,249,11,0,0,0,240,231,235,11,0,0,0,0,0,112,11,0,0,0,0,0,0,192,6,0,0,0,0,0,48,124,204,3,0,0,0,96,209,19,210,22,6,0,192,193,53,28,61,108,178,2,40,108,193,87,44,216,193,49,250,103,61,23,60,195,147,73,221,130,104,93,215,225,159,147,132,132,46,116,54,180,63,169,114,138,45,36,235,185,207,153,132,221,46,66,190,251,255,85,130,130,205,132,171,239,239,68,120,34,218,119,163,181,251,181,224,116,232,66,179,179,251,11,0,208,232,42,185,249,10,0,0,0,240,228,234,11,0,0,0,0,0,64,11,0,0,0,0,0,0,192,6,0,0,0,0,0,48,124,204,3,0,0,0,96,209,19,210,22,6,0,192,193,53,28,61,108,178,2,40,108,193,87,44,216,193,49,250,103,61,23,60,195,147,73,221,130,104,93,215,225,159,147,132,132,46,116,54,180,63,169,114,138,45,36,235,185,207,153,132,221,46,66,190,251,255,85,130,130,205,132,171,239,239,68,120,34,218,119,163,181,251,181,224,116,232,66,179,179,251,11,0,208,232,42,185,249,10,0,0,0,240,228,234,11,0,0,0,0,0,64,11,0,0,0,0,0,0,192,6,0,0,0,0,0,48,124,204,3,0,0,0,96,209,19,210,22,6,0,192,193,53,28,61,108,178,2,40,108,193,87,44,216,193,49,250,103,61,23,60,195,147,73,221,130,104,93,215,225,159,147,132,132,46,116,54,180,63,169,114,138,45,36,235,185,207,153,132,221,46,66,190,251,255,85,130,130,205,132,171,239,239,68,120,34,218,119,163,181,251,181,224,116,232,66,179,179,251,11,0,208,232,42,185,249,10,0,0,0,240,228,234,11,0,0,0,0,0,64,11,0,0,0,0,0,0,16,1,0,0,0,0,0,240,149,89,4,0,0,0,16,149,85,85,89,1,0,240,149,85,89,149,85,89,1,244,149,85,89,149,85,89,225,100,251,151,85,85,121,143,219,180,70,20,149,89,209,235,219,22,255,70,20,177,219,219,191,70,26,68,68,187,255,203,221,68,68,22,70,232,218,206,203,65,107,68,244,207,141,141,254,47,182,68,100,142,189,203,255,240,177,100,68,220,190,251,8,0,64,70,100,188,140,11,0,0,0,96,246,189,13,0,0,0,0,0,32,11,0,0,0,0,0,0,32,2,0,0,0,0,0,240,34,66,7,0,0,0,32,20,19,255,36,2,0,240,49,68,66,20,35,40,2,38,34,132,114,34,34,68,228,134,74,65,66,33,66,162,219,166,120,71,255,66,210,236,219,88,255,104,23,191,220,219,191,104,90,103,102,172,255,203,221,118,118,88,104,234,219,190,188,117,138,102,246,207,173,173,254,111,168,102,134,174,173,203,255,240,165,135,119,220,206,252,10,0,96,120,134,187,172,11,0,0,0,128,248,189,13,0,0,0,0,0,96,11,0,0,0,0,0,0,32,2,0,0,0,0,0,240,34,66,7,0,0,0,32,20,19,255,36,2,0,240,49,68,66,20,35,40,2,38,34,132,114,34,34,68,228,134,74,65,66,33,66,162,219,166,120,71,255,66,210,236,219,88,255,104,23,191,220,219,191,104,90,103,102,172,255,203,221,118,118,88,104,234,219,190,188,117,138,102,246,207,173,173,254,111,168,102,134,174,173,203,255,240,165,135,119,220,206,252,10,0,96,120,134,187,172,11,0,0,0,128,248,189,13,0,0,0,0,0,96,11,0,0,0,0,0,0,32,2,0,0,0,0,0,240,34,66,7,0,0,0,32,20,19,255,36,2,0,240,49,68,66,20,35,40,2,38,34,132,114,34,34,68,228,134,74,65,66,33,66,162,219,166,120,71,255,66,210,236,219,88,255,104,23,191,220,219,191,104,90,103,102,172,255,203,221,118,118,88,104,234,219,190,188,117,138,102,246,207,173,173,254,111,168,102,134,174,173,203,255,240,165,135,119,220,206,252,10,0,96,120,134,187,172,11,0,0,0,128,248,189,13,0,0,0,0,0,96,11,0,0,0,0,0,0,80,10,0,0,0,0,0,80,50,36,5,0,0,0,96,50,33,17,36,10,0,96,50,33,19,49,17,19,8,94,50,33,19,49,18,35,170,153,101,66,33,17,36,245,250,229,119,94,50,35,246,250,202,134,229,94,171,134,187,189,143,126,222,86,107,186,143,191,252,87,222,214,88,127,189,191,183,133,216,136,117,251,188,173,175,94,125,101,110,252,120,187,205,224,89,139,151,186,251,170,15,0,112,214,232,255,186,11,0,0,0,112,89,220,15,0,0,0,0,0,224,11,0,0,0,0,0,0,16,10,0,0,0,0,0,64,161,84,1,0,0,0,64,59,89,145,36,9,0,64,65,20,74,164,18,26,7,29,37,73,161,68,163,20,154,136,67,20,87,34,90,241,249,210,102,77,130,181,228,249,185,116,210,61,154,101,187,188,111,109,205,37,90,185,110,175,235,54,205,196,39,127,188,191,182,115,199,119,99,235,188,156,158,61,108,82,93,252,118,187,204,208,56,122,135,185,235,153,15,0,96,197,216,254,185,11,0,0,0,96,56,203,14,0,0,0,0,0,208,10,0,0,0,0,0,0,16,10,0,0,0,0,0,64,161,84,1,0,0,0,64,59,89,145,36,9,0,64,65,20,74,164,18,26,7,29,37,73,161,68,163,20,154,136,67,20,87,34,90,241,249,210,102,77,130,181,228,249,185,116,210,61,154,101,187,188,111,109,205,37,90,185,110,175,235,54,205,196,39,127,188,191,182,115,199,119,99,235,188,156,158,61,108,82,93,252,118,187,204,208,56,122,135,185,235,153,15,0,96,197,216,254,185,11,0,0,0,96,56,203,14,0,0,0,0,0,208,10,0,0,0,0,0,0,16,10,0,0,0,0,0,64,161,84,1,0,0,0,64,59,89,145,36,9,0,64,65,20,74,164,18,26,7,29,37,73,161,68,163,20,154,136,67,20,87,34,90,241,249,210,102,77,130,181,228,249,185,116,210,61,154,101,187,188,111,109,205,37,90,185,110,175,235,54,205,196,39,127,188,191,182,115,199,119,99,235,188,156,158,61,108,82,93,252,118,187,204,208,56,122,135,185,235,153,15,0,96,197,216,254,185,11,0,0,0,96,56,203,14,0,0,0,0,0,208,10,0,0,0,0,0,0,64,0,0,0,0,0,0,0,2,0,0,0,0,0,48,3,204,49,160,0,0,32,16,48,27,177,195,17,10,0,9,1,160,18,0,16,113,80,0,0,4,160,1,9,127,5,3,176,194,176,0,127,176,6,4,52,173,137,15,9,238,70,0,54,208,0,7,9,239,208,109,208,80,0,138,7,7,48,13,214,125,247,174,0,128,96,4,4,194,151,0,153,231,0,7,71,5,15,0,159,10,0,208,108,64,144,8,7,0,0,0,0,3,224,9,0,0,0,0,0,48,0,0,0,0,0,0,0,32,1,0,0,0,0,0,128,32,201,1,0,0,0,32,34,131,112,0,0,0,192,35,9,0,32,130,9,2,4,34,2,144,32,32,34,98,164,36,9,34,130,34,193,96,0,224,0,0,8,8,214,12,164,0,160,52,194,6,0,108,4,160,228,84,215,198,15,96,160,64,164,4,112,0,96,192,5,74,0,10,112,198,96,12,4,68,4,4,111,6,96,109,224,164,84,164,221,108,0,0,0,0,160,186,96,208,6,0,0,0,80,4,96,12,0,0,0,0,0,0,12,0,0,0,0,0,0,64,0,0,0,0,0,0,0,2,0,0,0,0,0,48,3,187,49,160,0,0,32,16,48,27,177,179,17,10,0,10,1,160,18,0,16,113,80,0,0,4,160,1,9,127,5,3,176,178,176,0,127,176,5,4,52,172,154,14,9,238,70,0,54,192,0,7,9,239,192,108,192,80,0,139,7,7,48,13,213,125,247,174,0,128,96,4,4,178,150,0,169,231,0,7,70,5,15,0,175,11,0,208,91,64,144,8,7,0,0,0,0,3,224,9,0,0,0,0,0,48,0,0,0,0,0,0,0,64,2,0,0,0,0,0,0,96,34,2,0,0,0,0,2,36,48,114,2,0,0,71,19,65,68,2,34,7,5,66,96,118,7,18,33,226,165,101,34,38,2,112,80,175,64,0,116,119,32,242,128,171,64,64,32,124,160,138,186,6,5,80,85,140,170,160,170,160,149,81,149,83,138,208,173,170,92,3,92,192,224,169,160,170,92,32,202,192,186,230,238,0,80,85,138,84,186,143,254,10,0,0,85,128,250,170,10,0,0,0,0,197,160,10,0,0,0,0,0,80,10,0,0,0,0,0,0,64,4,0,0,0,0,0,48,34,66,2,0,0,0,64,18,33,18,37,4,0,16,49,49,67,179,69,33,3,88,85,35,50,53,165,51,210,134,54,83,53,17,36,180,204,246,150,24,35,21,212,188,222,127,230,136,56,196,234,237,220,102,120,249,136,207,236,237,220,247,103,119,103,238,222,221,239,85,134,106,181,174,252,175,189,152,103,135,120,207,189,221,237,144,234,250,165,173,174,235,13,0,112,137,121,252,219,10,0,0,0,96,133,251,12,0,0,0,0,0,176,14,0,0,0,0,0,0,16,1,0,0,0,0,0,16,17,1,1,0,0,0,16,34,0,0,0,1,0,32,2,0,32,18,1,0,1,67,0,32,17,0,32,34,128,0,3,0,0,0,0,116,0,3,80,3,0,0,112,0,144,0,0,0,67,2,0,0,144,5,0,3,96,112,0,0,144,0,0,0,101,0,128,0,0,5,0,0,0,0,0,0,144,0,0,0,96,0,112,112,128,96,0,0,3,0,0,0,9,0,0,0,96,0,0,9,0,0,0,96,96,0,9,0,0,0,0,0,80,9,0,0,0,0,0,0,32,3,0,0,0,0,0,48,33,23,2,0,0,0,32,187,43,35,51,1,0,32,179,51,51,43,51,82,3,54,179,43,179,59,59,49,146,72,21,179,43,49,33,165,153,84,76,36,33,123,130,152,170,84,198,70,38,162,168,137,170,108,107,102,108,217,174,250,138,101,102,181,84,168,254,250,159,230,196,108,84,250,234,143,159,69,94,204,84,175,170,168,153,96,108,92,92,170,169,143,10,0,80,101,140,169,175,9,0,0,0,96,70,168,8,0,0,0,0,0,80,10,0,0,0,0,0,0,16,1,0,0,0,0,0,16,51,17,1,0,0,0,48,50,51,51,34,1,0,16,66,51,51,51,34,35,1,164,147,57,51,51,68,35,166,69,98,148,67,68,148,185,252,85,119,162,67,68,183,219,252,89,118,151,100,118,205,204,255,87,117,103,215,186,234,236,252,153,102,72,214,173,202,204,236,215,103,167,215,221,221,236,238,139,154,138,215,172,251,204,254,96,152,138,218,253,252,222,14,0,176,135,184,238,207,14,0,0,0,176,184,174,14,0,0,0,0,0,208,14,0,0,0,0,0,0,32,1,0,0,0,0,0,64,52,67,3,0,0,0,80,36,84,68,53,2,0,16,33,36,81,33,82,33,4,38,33,17,19,19,51,34,193,136,55,69,84,21,33,194,252,104,154,70,50,67,197,254,236,137,104,138,38,194,254,236,253,120,105,106,121,254,219,223,191,122,170,138,103,235,205,251,253,118,137,168,168,254,203,253,221,170,166,168,102,235,239,223,252,128,119,102,122,253,191,222,11,0,112,138,103,251,254,14,0,0,0,144,138,252,15,0,0,0,0,0,96,11,0,0,0,0,0,0,32,1,0,0,0,0,0,80,53,67,3,0,0,0,80,37,84,68,69,2,0,16,33,36,81,33,82,33,3,38,33,17,19,19,51,34,177,136,55,69,85,21,33,178,235,104,153,54,50,67,181,252,235,137,105,138,38,178,236,203,236,134,102,106,120,236,203,190,236,166,166,104,167,219,238,205,238,168,166,121,168,205,203,191,238,168,153,150,167,203,191,204,238,160,153,153,166,190,235,220,14,0,160,135,169,220,220,14,0,0,0,160,168,223,14,0,0,0,0,0,160,14,0,0,0,0,0,0,32,1,0,0,0,0,0,64,52,51,2,0,0,0,64,36,68,51,52,2,0,16,33,35,65,33,66,33,3,37,33,17,19,19,51,34,161,120,54,52,68,20,33,178,251,86,137,53,34,51,180,253,251,117,85,121,37,178,253,218,252,101,85,88,104,253,202,187,252,135,117,88,150,218,187,205,252,135,87,120,152,220,203,188,252,120,117,135,152,219,204,204,251,144,105,87,151,220,171,220,15,0,144,135,149,221,220,15,0,0,0,144,152,221,15,0,0,0,0,0,144,15,0,0,0,4,0,0,0,3,0,0,64,64,0,0,52,49,4,0,4,0,19,67,0,2,48,48,0,0,64,0,32,4,0,2,0,0,32,3,36,48,48,48,0,0,4,64,64,0,3,0,4,0,3,4,52,64,48,0,3,20,66,50,34,3,0,3,48,48,0,3,16,50,52,50,19,0,4,32,36,64,0,3,48,0,4,64,64,0,3,4,4,0,48,64,32,64,50,0,3,0,32,3,51,4,0,51,0,0,4,64,2,0,52,49,0,64,0,0,49,68,0,0,4,4,0,0,4,0,0,0,64,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,16,2,0,1,0,0,0,0,16,2,0,33,0,0,16,1,16,33,18,1,0,0,0,18,0,17,33,18,0,0,0,32,33,33,2,2,0,0,0,0,18,34,0,0,0,0,0,16,17,2,32,0,0,16,17,17,18,33,17,17,0,0,32,34,16,33,2,34,1,0,0,1,0,33,2,0,1,0,0,1,32,33,0,0,0,0,0,0,16,33,0,0,0,0,0,0,16,33,0,0,0,0,0,0,32,33,0,0,0,0,0,48,0,0,0,0,0,0,0,16,0,0,96,0,0,0,1,48,0,1,6,0,224,0,228,48,7,3,14,6,225,1,68,48,14,3,110,0,120,227,64,160,14,236,50,1,5,225,80,176,14,142,14,1,5,51,110,206,202,110,14,5,14,48,126,206,9,74,50,37,6,112,14,238,183,14,238,230,9,128,14,14,174,14,158,232,10,224,2,14,142,14,174,233,0,224,46,190,78,46,190,94,0,64,34,174,78,39,174,110,12,208,237,210,126,127,254,254,13,75,237,253,223,222,221,222,15,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,19,34,0,0,0,0,0,0,18,2,0,0,0,0,0,48,35,51,0,0,0,0,0,35,18,34,0,0,0,0,0,48,35,51,2,0,0,0,0,35,18,34,3,0,0,0,0,50,35,51,2,0,0,0,32,35,18,34,51,0,0,0,0,48,19,51,2,0,0,0,32,35,18,34,51,0,0,0,0,50,19,51,34,0,0,0,32,0,32,3,0,2,0,0,0,0,32,3,0,0,0,0,0,0,32,3,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,16,2,0,1,0,0,0,0,16,2,0,33,0,0,16,1,16,33,18,1,0,0,0,18,0,17,33,18,0,0,0,32,33,33,2,2,0,0,0,0,18,34,0,0,0,0,0,16,17,2,32,0,0,16,17,17,18,33,17,17,0,0,32,34,16,33,2,34,1,0,0,1,0,33,2,0,1,0,0,1,32,33,0,0,0,0,0,0,16,33,0,0,0,0,0,0,16,33,0,0,0,0,0,0,32,33,0,0,0,0,0,0,48,5,0,0,0,0,0,112,36,20,2,0,0,0,80,18,82,66,100,2,0,32,53,146,19,83,19,146,3,26,20,33,83,36,116,18,243,87,24,146,82,67,20,227,207,122,167,57,69,65,227,207,254,118,120,167,25,230,220,253,206,89,170,121,166,220,253,223,252,135,121,166,120,206,207,254,204,154,151,122,165,207,220,204,255,86,150,88,122,238,207,206,237,144,169,152,106,205,253,237,14,0,96,120,149,254,204,14,0,0,0,112,105,220,13,0,0,0,0,0,112,14,0,0,0,0,0,0,48,4,0,0,0,0,0,80,36,20,2,0,0,0,64,18,82,50,84,2,0,32,52,82,18,83,19,82,3,26,20,33,82,36,84,18,242,103,24,82,66,67,20,227,206,122,167,40,68,65,227,207,253,118,120,167,26,229,220,237,206,104,170,122,166,220,253,223,236,135,121,166,120,205,207,254,204,154,151,122,166,207,220,204,255,103,135,104,122,237,207,206,237,160,170,152,106,205,253,237,14,0,112,120,150,254,204,13,0,0,0,112,104,220,13,0,0,0,0,0,112,14,0,0,0,0,0,0,64,6,0,0,0,0,0,144,38,38,2,0,0,0,96,18,98,66,102,2,0,32,70,146,20,100,20,146,4,26,22,33,100,38,150,18,244,87,24,146,98,100,22,228,207,122,167,72,102,97,228,207,254,117,120,167,42,230,220,253,206,88,170,122,165,220,253,223,252,119,120,165,120,206,207,254,204,138,135,122,165,207,220,204,255,87,135,87,122,238,207,206,237,160,170,136,90,205,253,237,14,0,80,119,133,254,204,14,0,0,0,112,88,220,13,0,0,0,0,0,112,14,0,0,0,0,0,0,48,3,0,0,0,0,0,128,35,19,2,0,0,0,128,18,130,50,131,2,0,32,35,162,18,131,19,162,3,26,19,33,130,35,131,18,242,70,23,162,130,51,19,227,207,105,150,41,56,49,227,191,253,100,103,150,25,232,219,253,206,73,169,105,149,220,253,223,252,118,105,148,103,205,207,254,203,154,150,105,164,191,220,204,255,69,149,71,105,237,207,190,237,144,153,151,89,189,253,237,14,0,80,103,148,254,187,13,0,0,0,96,89,220,13,0,0,0,0,0,96,14,0,0,0,0,0,0,64,6,0,0,0,0,0,128,37,37,2,0,0,0,96,19,114,82,117,3,0,48,70,163,20,116,20,163,4,26,21,33,116,37,149,18,244,103,24,162,98,84,21,244,207,122,167,73,86,81,228,207,254,118,120,167,41,231,220,253,206,105,170,121,166,220,253,223,252,135,137,166,136,206,207,254,204,154,151,122,166,207,220,204,255,103,151,104,138,238,207,206,237,144,169,152,106,205,253,237,14,0,112,120,150,254,204,14,0,0,0,128,105,220,13,0,0,0,0,0,112,14,0,0,0,0,0,0,64,5,0,0,0,0,0,112,36,36,2,0,0,0,80,19,98,66,101,3,0,48,53,147,19,100,20,147,4,26,21,33,99,37,133,18,243,103,24,146,82,68,21,228,207,122,167,57,69,81,228,207,254,118,120,167,41,230,220,253,206,105,170,121,166,220,253,223,252,135,121,166,120,206,207,254,204,154,151,122,166,207,220,204,255,103,151,104,122,238,207,206,237,144,169,152,106,205,253,237,14,0,112,120,150,254,204,14,0,0,0,112,105,220,13,0,0,0,0,0,112,14,0,0,0,0,0,0,48,5,0,0,0,0,0,96,37,21,2,0,0,0,80,18,82,50,101,2,0,32,53,162,19,83,19,162,3,26,21,33,83,37,165,18,243,71,24,162,82,83,21,227,207,121,167,56,85,81,227,207,254,116,120,167,25,230,220,253,206,72,169,121,148,220,253,223,252,119,121,164,120,206,207,254,204,154,151,122,164,207,220,204,255,71,135,71,122,238,207,206,237,144,169,152,73,205,253,237,14,0,64,119,148,254,204,14,0,0,0,112,72,220,13,0,0,0,0,0,112,14,0,0,0,0,0,0,64,5,0,0,0,0,0,112,36,36,2,0,0,0,80,19,98,66,101,3,0,48,53,147,19,100,20,163,4,26,21,33,99,37,133,18,243,103,24,146,82,68,21,244,207,122,167,57,69,81,212,207,253,118,120,167,41,230,220,253,205,105,169,121,166,220,253,223,252,135,121,166,120,205,207,253,204,154,151,122,166,191,220,204,255,103,150,104,122,221,207,206,237,144,169,152,105,205,253,221,14,0,96,120,150,254,188,13,0,0,0,112,105,220,13,0,0,0,0,0,112,14,0,0,0,0,0,0,48,4,0,0,0,0,0,112,36,20,2,0,0,0,80,18,82,66,100,2,0,32,52,146,19,83,19,146,3,26,20,33,83,36,116,18,243,87,24,146,82,67,20,227,207,122,167,57,69,65,227,207,253,118,121,167,25,230,220,253,206,89,170,121,166,220,253,223,252,135,137,166,136,205,207,254,204,154,151,122,165,191,220,204,255,87,151,88,138,237,207,206,237,144,169,152,106,205,253,237,14,0,96,120,149,254,188,13,0,0,0,128,105,220,13,0,0,0,0,0,112,14,0,0,0,0,0,0,64,5,0,0,0,0,0,112,37,37,2,0,0,0,96,19,98,82,117,3,0,48,69,147,19,100,20,163,4,27,21,33,99,37,133,18,243,104,25,146,98,84,21,228,207,139,184,57,86,81,228,207,253,134,137,184,42,231,220,237,206,105,187,138,183,220,253,223,236,136,138,182,137,221,207,254,220,171,168,139,182,207,220,204,255,103,151,104,139,237,207,206,237,160,186,169,123,205,253,237,14,0,112,136,166,254,204,13,0,0,0,128,121,220,13,0,0,0,0,0,128,14,0,0,0,0,0,0,32,6,0,0,0,0,0,112,53,53,3,0,0,0,96,35,99,83,101,3,0,48,54,147,51,99,51,147,3,58,53,50,99,53,117,19,243,71,56,147,99,83,53,227,207,122,167,57,86,81,226,207,254,116,120,167,57,230,220,253,206,73,170,121,164,220,253,223,252,135,121,164,120,206,207,254,204,154,151,122,164,207,220,204,255,71,151,72,122,238,207,206,237,144,169,152,122,205,253,237,14,0,112,120,148,254,204,14,0,0,0,112,73,220,13,0,0,0,0,0,112,14,0,0,0,0,0,0,48,4,0,0,0,0,0,96,35,19,2,0,0,0,64,18,82,50,100,2,0,32,52,146,18,83,19,146,3,26,20,33,82,36,116,18,242,87,24,146,66,51,20,227,206,122,167,40,52,65,227,191,253,117,120,167,25,230,219,237,206,88,170,121,165,220,253,223,236,135,121,165,120,205,207,254,203,154,151,122,165,191,220,204,255,86,134,88,122,237,207,190,237,144,169,152,90,189,253,237,14,0,96,120,149,254,187,13,0,0,0,112,88,220,13,0,0,0,0,0,112,14,0,0,0,0,0,0,64,5,0,0,0,0,0,112,36,36,2,0,0,0,80,18,82,66,100,2,0,32,53,146,19,83,19,146,3,26,20,33,83,36,116,18,243,103,24,146,82,67,20,227,191,122,167,56,69,65,212,191,253,118,120,167,41,230,219,253,189,104,169,121,166,203,253,223,251,119,121,166,120,205,191,253,203,154,151,122,166,191,219,187,255,103,134,103,122,221,191,190,236,144,169,152,105,189,253,220,14,0,96,119,150,254,187,13,0,0,0,112,104,219,13,0,0,0,0,0,112,14,0,0,0,0,0,0,64,5,0,0,0,0,0,112,36,36,2,0,0,0,80,19,98,66,101,3,0,48,53,131,19,99,19,147,3,42,36,33,99,37,132,18,243,103,24,130,82,67,20,243,207,122,167,57,69,81,228,207,254,118,120,167,41,246,236,253,206,105,170,121,166,220,254,223,252,135,137,166,136,222,207,254,220,154,151,122,166,191,236,204,255,103,151,104,138,238,207,206,253,144,169,152,106,205,254,237,14,0,112,120,150,254,188,14,0,0,0,128,105,220,14,0,0,0,0,0,112,14,0,0,0,0,0,0,48,5,0,0,0,0,0,112,36,20,2,0,0,0,80,18,82,66,100,2,0,32,53,130,19,83,19,130,3,25,20,33,83,36,116,18,243,86,23,130,82,67,20,227,191,105,150,56,69,65,227,191,253,101,104,150,24,230,203,252,190,88,153,104,149,203,253,207,251,118,120,149,119,205,191,254,203,137,134,105,149,191,219,187,255,86,134,87,121,221,191,190,236,128,152,135,89,188,253,220,14,0,96,103,133,254,187,13,0,0,0,112,88,203,13,0,0,0,0,0,96,14,0,0,0,0,0,0,64,7,0,0,0,0,0,144,21,21,1,0,0,0,128,18,129,65,135,2,0,32,55,194,18,131,19,210,3,25,21,17,130,23,181,17,226,36,22,193,129,83,21,227,190,73,148,39,88,113,228,190,253,66,70,148,24,232,219,236,206,39,153,72,146,203,253,207,235,100,103,146,102,205,207,254,203,137,132,73,146,175,219,203,255,36,115,38,105,237,191,190,236,128,152,118,41,188,253,236,14,0,48,70,114,254,171,13,0,0,0,96,39,203,13,0,0,0,0,0,64,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,1,49,1,0,0,0,0,0,34,65,0,0,0,0,0,16,49,68,2,0,0,0,0,0,80,5,0,0,0,0,0,0,80,86,6,0,0,0,0,96,85,102,0,0,0,0,0,0,86,6,0,0,0,0,0,0,80,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,0,0,0,0,0,0,167,121,6,0,0,0,0,96,198,139,8,0,0,0,0,48,115,136,0,0,0,0,0,0,38,5,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,32,1,1,17,0,0,0,0,0,2,36,0,0,0,0,0,0,32,37,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,112,65,0,0,50,48,2,0,69,3,0,0,68,48,3,80,3,0,0,0,80,117,0,69,49,0,0,64,115,0,7,6,3,0,0,32,3,0,112,50,0,0,0,0,0,0,96,68,0,0,0,0,0,0,80,0,0,0,0,0,0,0,96,7,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,6,0,0,0,0,0,0,112,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,236,12,0,0,0,0,0,64,222,226,0,0,0,0,0,44,44,254,5,0,0,0,0,255,35,94,15,0,0,0,0,16,236,194,0,0,0,0,0,0,175,44,0,0,0,0,0,0,96,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,160,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,96,0,0,0,0,0,0,0,144,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,32,33,3,0,0,0,0,0,48,84,16,2,0,0,0,32,1,19,65,3,0,0,0,16,4,54,82,0,0,0,0,0,70,5,4,33,0,0,0,0,16,82,4,52,0,0,0,0,16,67,68,0,0,0,0,0,0,64,5,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,8,0,0,0,0,0,0,155,11,0,0,0,0,0,0,141,13,0,0,0,0,0,0,192,0,0,0,0,0,0,80,64,16,0,0,0,0,0,69,112,16,5,0,0,0,0,23,71,32,7,0,0,0,0,23,71,55,7,0,0,0,0,80,81,103,0,0,0,0,0,112,84,70,0,0,0,0,0,0,23,22,0,0,0,0,0,0,71,22,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,1,0,0,0,0,0,0,38,6,0,0,0,0,0,0,71,7,0,0,0,0,0,0,128,0,0,0,0,0,0,3,240,192,0,0,0,0,0,60,176,176,12,0,0,0,0,158,224,48,14,0,0,0,0,174,236,190,14,0,0,0,0,222,206,195,14,0,0,0,0,176,205,235,0,0,0,0,0,48,61,14,0,0,0,0,0,48,189,14,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,18,2,0,0,0,0,0,0,35,3,0,0,0,0,0,0,64,0,0,0,0,0,0,144,192,0,80,0,0,0,0,89,128,0,150,0,0,0,0,91,176,96,186,0,0,0,0,139,139,112,11,0,0,0,0,155,149,171,11,0,0,0,0,176,152,138,0,0,0,0,0,0,91,90,0,0,0,0,0,0,139,10,0,0,0,0,0,0,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,18,2,0,0,0,0,0,0,35,3,0,0,0,0,0,0,48,0,0,0,0,0,128,4,176,128,0,0,0,0,0,149,64,64,8,0,0,0,0,89,64,64,10,0,0,0,0,106,112,122,10,0,0,0,0,138,138,164,0,0,0,0,0,112,132,167,0,0,0,0,0,160,73,10,0,0,0,0,0,0,122,10,0,0,0,0,0,0,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,16,19,19,0,0,0,0,0,32,84,52,0,0,0,0,0,17,85,21,1,0,0,0,0,48,84,36,0,0,0,0,0,16,19,19,0,0,0,0,0,0,16,7,0,0,0,0,0,0,96,10,0,0,0,0,0,0,112,0,0,0,0,0,0,160,135,0,0,0,0,0,0,0,138,160,0,0,0,0,0,0,96,10,0,0,0,0,0,0,112,10,0,0,0,0,0,0,144,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,33,0,0,0,0,0,16,33,34,3,0,0,0,0,32,34,50,3,0,0,0,0,32,51,51,3,0,0,0,0,0,64,5,0,0,0,0,0,0,64,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,150,0,0,0,0,0,96,145,121,8,0,0,0,0,150,153,41,136,0,0,0,0,146,39,135,56,0,0,0,0,112,136,136,8,0,0,0,0,0,64,5,0,0,0,0,0,0,80,9,0,0,0,0,0,80,18,33,5,0,0,0,80,33,51,34,34,5,0,80,17,17,51,35,50,34,4,93,18,17,33,51,34,51,245,118,90,18,17,33,52,245,254,104,136,90,68,68,245,236,253,152,135,120,90,249,204,220,254,118,119,120,169,188,238,238,253,118,153,119,167,235,221,221,254,102,134,121,167,220,221,204,254,104,102,134,169,220,204,219,255,160,103,134,167,187,187,252,15,0,160,151,170,187,235,15,0,0,0,160,170,236,15,0,0,0,0,0,160,15,0,0,0,0,0,0,64,8,0,0,0,0,0,80,49,18,5,0,0,0,112,18,35,49,34,5,0,80,35,49,34,35,50,34,7,107,18,35,49,34,35,66,246,103,123,18,35,66,34,249,253,149,103,107,34,36,246,221,254,121,149,119,139,247,220,222,253,103,121,151,183,221,206,237,253,149,103,121,199,206,237,221,254,121,149,119,185,237,221,222,253,87,121,150,183,219,206,237,253,176,87,121,199,190,221,221,15,0,176,119,186,237,219,15,0,0,0,176,183,219,15,0,0,0,0,0,176,15,0,0,0,0,0,0,112,9,0,0,0,0,0,144,33,20,7,0,0,0,112,33,34,36,68,6,0,112,36,68,68,33,68,82,9,149,84,36,84,65,66,65,215,106,101,68,33,65,33,170,253,134,105,115,33,20,167,220,254,134,105,105,117,167,236,205,254,211,153,153,214,237,238,222,207,152,213,136,182,236,206,175,254,137,134,211,182,222,175,205,252,104,137,153,179,191,238,236,253,208,153,134,184,238,237,206,15,0,176,152,233,237,237,15,0,0,0,208,185,236,15,0,0,0,0,0,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,10,0,0,0,0,0,160,33,20,7,0,0,0,112,33,34,36,68,6,0,112,36,68,68,33,68,82,10,163,84,36,84,65,66,65,199,152,101,68,33,65,33,171,254,137,134,115,33,20,183,205,252,104,137,153,115,183,238,236,253,208,153,134,200,238,237,206,15,0,192,152,233,237,237,15,0,0,0,208,185,236,15,0,0,0,0,0,192,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,112,70,101,4,0,0,0,112,55,118,85,71,3,0,16,66,53,114,49,116,65,5,74,50,34,36,21,85,51,209,171,75,103,118,23,33,243,253,153,171,90,68,100,215,254,221,187,200,202,57,227,239,239,253,160,169,152,172,254,223,222,13,0,144,171,137,253,254,14,0,0,0,176,172,253,15,0,0,0,0,0,128,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,3,0,0,0,0,0,48,179,35,1,0,0,0,48,177,34,129,50,1,0,32,129,50,184,35,179,50,1,132,19,179,51,178,49,130,195,101,125,19,136,18,129,161,204,212,84,133,50,177,147,172,159,68,214,214,180,145,201,207,156,192,100,221,101,172,207,170,15,0,224,100,212,159,201,15,0,0,0,224,84,204,15,0,0,0,0,0,208,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,7,0,0,0,0,0,16,33,52,4,0,0,0,128,81,18,74,18,4,0,16,162,36,169,104,171,138,6,83,100,20,22,145,34,132,227,125,125,89,129,203,147,234,206,212,172,179,88,35,164,247,252,102,103,119,134,119,239,239,235,96,183,195,51,204,184,236,7,0,64,205,118,174,254,12,0,0,0,176,221,200,15,0,0,0,0,0,112,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,8,0,0,0,0,0,96,38,81,6,0,0,0,144,38,204,40,156,5,0,96,54,129,38,97,37,97,5,58,153,38,137,38,202,38,248,77,42,97,37,97,38,113,255,73,221,42,153,38,201,127,123,223,74,76,42,113,255,235,127,64,77,56,221,127,123,255,11,0,64,221,74,235,127,11,0,0,0,64,77,255,11,0,0,0,0,0,64,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,32,53,85,1,0,0,0,80,161,54,85,99,1,0,48,53,54,161,87,82,51,2,165,87,117,25,145,88,114,170,167,164,41,101,83,161,201,238,121,231,148,38,53,245,220,237,156,217,136,164,183,253,220,254,208,218,169,151,238,253,236,15,0,224,139,153,205,254,15,0,0,0,208,171,253,15,0,0,0,0,0,224,15,0,0,0,0,0,0,144,5,0,0,0,0,0,80,37,81,5,0,0,0,144,37,187,37,154,5,0,80,37,81,37,81,37,81,5,42,153,37,137,37,186,37,216,43,41,81,37,81,37,97,222,57,220,40,153,37,201,111,103,206,74,60,40,97,254,215,110,73,62,40,202,110,103,254,231,60,57,205,73,215,110,103,237,56,204,73,60,254,183,109,103,205,73,60,57,103,238,215,110,64,60,40,204,110,103,238,7,0,48,204,73,215,110,7,0,0,0,64,60,238,7,0,0,0,0,0,48,7,0,0,0,0,0,0,80,5,0,0,0,0,0,80,149,89,5,0,0,0,80,149,86,101,95,5,0,80,149,249,245,102,149,89,5,151,89,245,255,102,246,149,201,168,151,89,159,249,159,201,235,168,168,151,89,149,201,235,235,33,168,168,151,201,235,235,67,242,18,168,168,235,235,243,68,243,242,47,168,235,67,79,68,216,34,47,47,243,68,79,237,168,216,34,34,244,68,237,235,160,168,216,35,68,237,235,12,0,160,168,216,237,235,12,0,0,0,160,168,235,12,0,0,0,0,0,160,12,0,0,0,0,0,0,16,3,0,0,0,0,0,48,147,35,1,0,0,0,48,145,34,97,50,1,0,32,97,50,150,35,147,50,1,100,19,147,51,146,49,98,147,236,100,19,102,18,97,113,159,140,139,101,50,145,147,175,123,140,139,238,148,113,175,173,123,165,187,156,94,255,235,172,154,238,148,156,145,181,171,170,155,220,236,165,88,188,122,255,123,220,236,229,149,154,239,213,123,144,140,193,91,239,237,217,10,0,160,197,155,221,173,10,0,0,0,160,75,221,10,0,0,0,0,0,144,10,0,0,0,0,0,0,16,1,0,0,0,0,0,48,177,171,3,0,0,0,48,189,72,51,132,1,0,16,65,67,132,72,180,51,6,51,65,59,17,148,84,19,147,102,182,136,187,89,138,102,159,195,136,99,51,131,227,170,214,198,101,111,185,107,238,206,221,207,206,168,60,246,222,229,111,56,200,136,198,238,233,238,149,99,157,88,198,233,102,254,238,53,110,200,29,90,159,106,250,192,214,206,105,173,175,147,14,0,192,108,214,254,229,10,0,0,0,176,213,106,15,0,0,0,0,0,144,10,0,0,0,0,0,0,112,6,0,0,0,0,0,96,45,177,6,0,0,0,112,236,212,85,220,12,0,64,177,70,36,97,121,72,6,105,66,106,100,39,71,102,196,238,105,198,97,36,34,199,207,63,155,94,66,37,214,226,189,202,26,147,105,216,253,244,220,190,225,155,145,45,205,221,178,137,73,158,153,207,47,255,205,145,57,250,174,204,71,142,210,57,170,238,131,76,205,194,236,128,153,145,158,220,221,68,12,0,144,52,154,79,223,11,0,0,0,144,121,76,11,0,0,0,0,0,128,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,3,0,0,0,0,0,0,16,1,0,0,0,0,0,0,128,10,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,11,0,0,0,0,0,0,64,12,0,0,0,0,0,0,96,14,0,0,0,0,0,0,144,13,0,0,0,0,0,0,80,14,0,0,0,0,0,0,144,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,3,0,0,0,0,0,0,16,1,0,0,0,0,0,0,128,10,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,11,0,0,0,0,0,0,64,12,0,0,0,0,0,0,96,14,0,0,0,0,0,0,144,13,0,0,0,0,0,0,80,14,0,0,0,0,0,0,144,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,3,0,0,0,0,0,0,16,1,0,0,0,0,0,0,128,10,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,11,0,0,0,0,0,0,64,12,0,0,0,0,0,0,96,14,0,0,0,0,0,0,144,13,0,0,0,0,0,0,80,14,0,0,0,0,0,0,144,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,3,0,0,0,0,0,0,16,1,0,0,0,0,0,0,128,10,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,11,0,0,0,0,0,0,64,12,0,0,0,0,0,0,96,14,0,0,0,0,0,0,144,13,0,0,0,0,0,0,80,14,0,0,0,0,0,0,144,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,3,0,0,0,0,0,0,16,1,0,0,0,0,0,0,128,10,0,0,0,0,0,0,112,14,0,0,0,0,0,0,112,11,0,0,0,0,0,0,64,12,0,0,0,0,0,0,96,14,0,0,0,0,0,0,144,13,0,0,0,0,0,0,80,14,0,0,0,0,0,0,144,15,0,0,0,0,0,0,32,2,0,0,0,0,0,80,32,2,3,0,0,0,32,32,32,2,2,2,0,80,16,2,2,32,16,2,1,86,32,2,2,32,32,2,229,6,39,32,32,2,2,178,235,0,4,198,32,2,250,176,235,64,6,6,35,178,187,0,190,0,102,0,140,176,9,9,185,6,6,48,70,0,12,0,253,0,12,0,173,11,11,176,187,96,6,6,134,0,185,0,191,96,102,0,106,176,7,9,12,0,96,128,102,0,14,11,0,0,0,96,168,13,12,0,0,0,0,0,112,11,0,0,0,0,0,0,16,3,0,0,0,0,0,48,163,35,1,0,0,0,48,161,34,113,50,1,0,32,113,50,167,35,163,50,1,118,19,163,51,162,49,114,179,196,100,19,119,18,113,129,185,198,102,116,50,161,147,155,143,84,196,84,164,177,153,238,139,212,100,214,100,184,190,137,191,101,204,86,197,191,185,158,187,196,84,213,100,155,143,155,143,68,198,198,196,142,184,190,139,176,100,204,101,155,191,153,15,0,208,100,196,143,184,14,0,0,0,208,84,187,15,0,0,0,0,0,192,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,211,0,0,0,0,0,61,34,33,212,0,0,0,77,50,34,35,35,211,0,0,76,35,51,34,49,211,0,12,0,45,35,18,210,0,0,109,12,0,45,210,0,224,7,125,117,12,0,0,224,119,9,141,30,87,12,224,122,251,11,77,22,111,5,126,249,172,9,93,68,137,14,254,155,119,9,76,101,86,8,174,119,122,9,240,101,85,7,174,119,154,15,0,240,101,6,126,186,15,0,0,0,240,6,190,15,0,0,0,0,0,0,15,0,0,0,0,0,0,64,6,0,0,0,0,0,96,67,54,4,0,0,0,64,65,65,70,102,3,0,64,70,102,102,66,102,148,6,106,38,70,38,97,98,99,212,124,57,102,65,99,67,233,221,151,122,71,67,50,180,219,254,151,26,122,74,228,235,189,254,161,163,170,163,237,239,95,190,169,170,25,151,235,83,191,222,154,23,161,151,62,222,181,219,25,154,170,151,253,238,91,221,160,170,17,153,238,237,181,14,0,144,169,194,237,237,13,0,0,0,160,122,235,11,0,0,0,0,0,144,14,0,0,0,0,0,0,128,11,0,0,0,0,0,128,33,34,8,0,0,0,128,33,82,17,34,8,0,128,17,17,85,34,34,34,7,142,18,17,17,53,34,35,248,102,139,34,18,17,85,232,253,100,102,139,120,120,248,204,252,100,68,102,139,251,204,204,252,100,102,100,182,205,170,204,253,100,102,102,182,170,204,221,252,68,68,102,182,202,221,170,254,68,68,68,185,202,170,218,254,176,70,102,182,170,170,237,15,0,176,182,187,170,202,14,0,0,0,176,187,202,15,0,0,0,0,0,176,15,0,0,0,0,0,0,208,13,0,0,0,0,0,240,67,52,13,0,0,0,208,67,57,148,68,13,0,240,76,154,148,73,154,196,13,245,76,154,164,73,154,196,253,130,172,68,73,147,52,111,246,181,181,165,67,52,205,110,251,210,226,34,242,125,214,153,247,210,210,213,226,118,233,102,251,18,232,213,237,171,238,105,247,130,200,18,225,231,219,103,251,98,245,133,225,41,245,121,247,112,210,133,225,103,251,102,11,0,224,82,225,139,230,9,0,0,0,128,226,167,11,0,0,0,0,0,224,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,80,0,0,0,0,0,3,0,16,6,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,232,0,0,0,0,0,0,0,32,0,0,0,0,112,0,0,96,11,0,4,0,0,3,0,96,14,32,208,0,0,177,12,160,95,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0,0,244,0,0,0,0,16,0,0,16,0,0,0,0,16,7,0,48,11,0,4,0,0,1,16,48,12,64,192,0,0,122,4,103,140,96,0,0,0,243,218,80,110,174,0,0,8,213,249,80,159,94,176,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,245,0,0,0,0,0,0,0,166,0,0,0,0,96,0,0,80,0,0,6,0,128,12,80,32,10,0,181,0,0,6,128,42,12,96,160,0,0,179,5,46,188,32,0,0,0,226,163,16,60,63,0,6,6,178,231,16,119,46,128,192,178,196,244,64,77,63,112,15,199,244,228,64,159,157,144,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,116,0,0,0,0,0,0,0,179,0,0,0,0,48,0,0,64,0,0,3,0,48,7,64,80,11,0,115,0,0,3,48,27,12,64,112,0,0,161,4,26,74,16,0,0,0,161,177,96,27,27,0,3,4,161,185,96,93,90,64,32,193,165,229,96,93,92,80,13,165,149,198,128,94,109,128,13,200,216,214,128,111,141,96,15,232,248,216,128,159,142,128,14,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,162,0,0,0,0,0,0,0,162,0,0,0,0,48,0,0,96,0,0,2,0,32,11,96,48,13,0,162,0,0,2,32,107,11,48,0,0,0,163,2,39,43,96,0,0,0,178,114,64,106,42,0,3,2,162,161,16,109,43,96,160,163,164,113,16,23,43,32,11,179,196,152,64,73,71,64,10,164,148,244,80,93,77,64,12,213,213,197,128,142,78,128,9,232,232,232,128,142,94,128,14,232,248,249,144,159,143,80,14,0,0,0,1,0,0,0,0,0,0,0,179,0,0,0,0,0,0,0,165,0,0,0,0,64,0,0,64,0,0,4,0,16,14,16,32,11,0,180,0,0,4,64,59,7,112,176,0,0,179,1,59,26,48,0,0,0,194,115,48,60,55,0,1,1,115,197,48,58,58,112,176,179,166,211,80,60,60,48,14,163,227,197,80,93,60,48,10,195,213,214,96,93,110,48,12,165,214,229,128,142,142,128,12,230,232,214,128,223,143,128,15,233,249,249,160,159,159,128,15,249,248,248,144,223,143,144,15,0,0,0,7,0,0,0,0,96,0,0,246,0,0,6,0,96,13,0,96,0,0,214,0,0,6,96,32,13,96,208,0,0,161,96,45,107,32,0,6,10,130,6,58,107,29,0,246,246,177,210,64,28,77,96,208,162,129,177,48,46,27,32,13,177,129,131,32,28,75,64,11,131,131,193,48,75,72,80,14,194,197,129,64,76,62,32,14,179,228,131,112,76,126,48,11,197,231,199,112,127,126,112,12,229,244,231,112,159,158,144,14,231,201,247,144,159,159,112,15,249,247,249,144,175,127,160,15,0,0,0,160,10,0,0,0,0,0,160,26,65,10,0,0,0,64,77,164,170,164,13,0,160,173,161,218,164,77,170,1,211,113,170,68,77,68,218,84,102,162,26,218,161,29,180,184,102,198,166,164,161,138,181,181,54,35,102,18,180,184,152,139,38,198,60,204,232,190,91,187,99,99,198,99,89,88,190,181,60,102,51,35,190,232,235,88,102,51,98,54,139,142,184,133,48,60,102,51,88,181,142,8,0,96,194,198,187,235,8,0,0,0,96,54,88,11,0,0,0,0,0,192,11,0,0,0,0,0,0,176,11,0,0,0,0,0,192,92,149,12,0,0,0,144,191,219,221,219,15,0,176,207,213,253,253,191,205,5,242,197,221,203,207,187,253,57,68,193,92,253,217,95,137,134,68,164,196,201,197,108,131,131,36,18,68,81,137,134,118,104,20,164,42,170,230,142,56,136,66,66,164,66,55,54,142,131,42,68,34,18,142,230,232,54,68,34,65,36,104,110,134,99,32,42,68,34,54,131,110,6,0,64,161,164,136,232,6,0,0,0,64,36,54,8,0,0,0,0,0,160,8,0,0,0,0,0,0,160,11,0,0,0,0,0,192,99,151,12,0,0,0,192,105,35,18,130,10,0,176,22,34,67,18,97,98,13,188,21,38,18,98,34,65,235,137,205,51,102,70,120,237,236,102,99,172,37,50,236,138,231,232,223,137,174,235,139,105,234,234,255,191,213,185,170,134,219,21,25,255,228,155,152,154,227,84,20,121,228,155,103,66,229,244,255,27,200,122,66,69,229,224,254,191,177,71,85,149,14,0,224,254,209,88,133,14,0,0,0,224,209,153,14,0,0,0,0,0,208,14,0,0,0,0,0,0,160,10,0,0,0,0,0,192,100,135,11,0,0,0,192,104,52,35,131,10,0,176,38,51,84,35,98,99,12,172,37,54,34,98,51,82,235,120,205,68,102,70,120,221,236,102,100,171,53,67,236,138,231,215,207,120,173,235,139,104,234,234,255,191,197,184,170,134,218,21,36,255,212,139,136,138,227,17,17,116,228,138,103,83,229,145,153,27,200,122,83,85,229,144,145,185,177,87,86,134,14,0,16,145,193,88,133,14,0,0,0,144,193,136,14,0,0,0,0,0,192,14,0,0,0,132,139,88,37,91,85,37,213,81,87,34,51,56,35,35,213,81,136,136,119,85,117,90,213,179,221,221,173,221,221,189,234,129,139,88,53,137,168,39,215,129,125,119,53,121,119,56,216,81,121,85,53,139,90,37,213,163,107,102,86,90,102,102,234,81,85,165,88,117,119,85,213,129,187,155,121,187,219,137,216,127,121,85,56,139,119,39,215,180,173,187,91,173,170,107,235,81,89,133,53,139,136,87,213,129,42,34,50,37,50,51,216,81,136,88,133,85,120,85,213,234,238,255,254,238,254,255,239,33,34,18,17,18,17,17,129,81,183,119,136,136,120,120,213,81,204,204,122,170,170,93,213,180,14,0,64,13,0,96,251,207,12,0,48,10,0,32,215,137,13,0,48,10,0,48,216,81,85,34,50,136,67,34,213,179,238,238,190,221,237,190,251,81,10,0,32,10,0,32,213,130,12,0,32,12,0,48,216,113,10,0,48,12,0,32,215,179,75,102,70,75,68,102,251,81,37,50,50,56,51,66,213,129,173,170,138,170,202,140,216,81,140,88,53,90,248,255,221,191,173,187,106,189,251,111,255,0,131,0,0,0,0,81,0,32,178,51,34,17,33,115,2,96,131,102,102,102,153,86,6,0,185,0,0,0,0,201,0,0,131,0,0,0,0,114,0,32,118,17,49,51,22,131,2,96,113,153,105,102,153,81,6,0,201,0,0,0,0,201,0,0,81,0,0,0,0,81,0,32,131,17,51,51,34,129,2,96,114,153,105,102,102,114,6,0,182,0,0,0,0,201,0,0,81,0,0,0,0,178,0,32,86,19,49,17,35,131,2,96,131,153,148,102,150,81,6,0,166,0,0,0,0,205,0,0,97,0,0,0,0,22,0,112,97,140,51,34,149,22,7,208,97,222,187,187,254,22,13,0,97,0,0,0,0,22,0,0,97,0,0,0,0,22,0,112,97,89,66,68,155,22,7,208,97,239,188,187,252,22,13,0,97,0,0,0,0,22,0,0,97,0,0,0,0,22,0,112,97,89,68,68,147,22,7,208,97,239,188,187,235,22,13,0,97,0,0,0,0,22,0,0,97,0,0,0,0,22,0,112,97,92,66,34,148,22,7,208,97,239,202,187,251,22,13,0,97,0,0,0,0,22,0,0,0,0,32,7,0,0,0,0,0,16,17,35,3,0,0,0,128,65,17,58,18,3,0,16,161,35,169,104,170,138,5,75,99,19,21,145,34,131,83,35,103,73,129,187,146,249,184,114,93,183,72,35,115,250,222,37,109,183,137,87,158,156,252,210,216,221,123,206,207,164,239,125,92,123,215,254,230,236,190,211,155,178,164,156,159,247,251,84,103,119,164,125,239,239,234,80,167,178,34,204,168,235,7,0,48,188,117,158,238,12,0,0,0,160,221,200,15,0,0,0,0,0,96,15,0,0,0,0,0,0,32,3,0,0,0,0,0,48,33,19,2,0,0,0,32,40,40,35,51,1,0,32,35,51,51,41,51,82,3,55,147,35,147,56,57,49,210,76,22,51,40,49,33,229,221,100,71,36,33,25,162,218,254,100,135,71,39,226,234,173,254,120,121,119,121,237,239,191,174,118,119,150,100,234,185,175,222,103,148,121,100,158,222,171,218,134,103,119,100,253,238,186,221,112,119,136,102,238,237,171,14,0,96,118,201,237,237,13,0,0,0,112,71,234,10,0,0,0,0,0,96,14,0,0,0,0,0,0,16,1,0,0,0,0,0,48,65,52,1,0,0,0,48,51,68,65,68,1,0,48,65,20,52,65,51,68,4,21,52,68,51,66,49,51,147,117,69,17,65,17,49,164,169,133,135,53,17,68,148,185,185,120,85,119,72,164,186,154,186,119,87,135,133,185,153,154,186,85,136,136,135,171,153,185,187,117,119,134,135,186,186,154,186,135,136,135,133,169,169,187,185,112,136,85,135,186,154,154,10,0,128,133,136,187,154,11,0,0,0,80,119,186,11,0,0,0,0,0,80,9,0,0,0,0,0,0,64,4,0,0,0,0,0,64,17,65,4,0,0,0,64,51,68,68,68,4,0,48,67,68,52,19,65,68,4,71,68,52,17,68,52,51,148,119,71,68,68,68,68,148,153,114,103,71,68,68,148,153,153,119,119,119,71,148,153,153,153,118,119,114,119,89,153,153,153,119,119,119,118,153,137,153,153,118,119,119,119,153,153,153,153,119,119,119,119,153,89,89,153,112,119,119,114,153,153,153,9,0,112,119,119,153,153,9,0,0,0,112,119,153,9,0,0,0,0,0,112,9,0,0,0,0,0,0,16,1,0,0,0,0,0,48,65,52,1,0,0,0,48,51,68,65,68,1,0,48,65,20,52,65,51,68,4,21,52,68,51,66,49,51,147,117,69,17,65,17,49,164,169,133,135,53,17,68,148,185,185,120,85,119,72,164,186,154,186,119,87,135,133,185,153,154,186,85,136,136,135,171,153,185,187,117,119,134,135,186,186,154,186,135,136,135,133,169,169,187,185,112,136,85,135,186,154,154,10,0,128,133,136,187,154,11,0,0,0,80,119,186,11,0,0,0,0,0,80,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,231,0,0,0,0,0,117,241,49,87,0,0,0,21,49,19,33,49,227,0,13,30,31,49,17,17,81,0,79,4,21,51,51,227,128,249,77,242,4,117,241,192,139,10,79,147,38,4,144,231,125,250,109,148,40,10,158,200,155,12,93,150,54,6,158,201,189,250,111,242,88,11,174,203,171,252,77,146,100,6,174,231,185,7,48,147,105,11,174,199,187,9,0,208,100,6,190,248,9,0,0,0,96,6,126,9,0,0,0,0,0,0,14,0,0,0,0,0,0,32,2,0,0,0,0,0,80,51,83,2,0,0,0,80,18,66,65,82,2,0,16,18,49,20,52,53,65,4,56,68,36,34,49,65,37,225,118,88,34,50,35,66,227,190,137,153,72,35,65,226,204,254,87,151,135,57,210,222,206,238,135,135,121,121,238,205,187,220,136,105,169,170,238,236,223,220,168,150,150,167,221,206,237,238,168,153,102,120,206,221,237,206,160,105,104,121,207,254,235,13,0,96,136,167,204,206,11,0,0,0,144,154,252,13,0,0,0,0,0,160,12,0,0,0,16,4,32,6,32,6,32,6,96,7,32,6,32,6,16,4,32,54,32,6,32,86,96,7,32,86,32,54,32,6,32,6,32,6,16,84,32,6,32,6,32,6,96,7,16,4,32,6,32,6,32,6,96,7,32,54,32,6,32,6,32,6,32,86,19,4,32,6,32,6,32,6,101,7,32,6,32,6,16,4,32,6,21,4,35,6,96,7,32,6,96,7,37,6,32,6,32,6,32,6,32,6,32,6,32,6,32,6,16,4,37,6,32,6,32,6,96,7,32,6,32,6,32,6,32,6,32,6,0,0,0,16,3,0,0,0,0,0,48,163,35,1,0,0,0,48,161,34,113,50,1,0,32,113,50,167,35,163,50,1,118,19,163,51,162,49,114,179,196,100,19,119,18,113,129,185,198,102,116,50,161,147,155,143,84,196,84,164,177,153,238,139,212,100,214,100,184,190,137,191,101,204,86,197,191,185,158,187,196,84,213,100,155,143,155,143,68,198,198,196,142,184,190,139,176,100,204,101,155,191,153,15,0,208,100,196,143,184,14,0,0,0,208,84,187,15,0,0,0,0,0,192,14,0,0,0,0,0,0,144,9,0,0,0,0,0,144,36,41,4,0,0,0,64,73,34,148,33,4,0,64,68,41,57,35,34,34,4,155,148,41,153,153,68,33,212,183,151,25,66,36,25,212,218,183,127,151,41,41,212,218,218,245,94,181,151,217,170,216,218,182,190,255,182,216,170,218,218,247,187,239,187,204,168,202,218,235,191,235,190,168,202,170,216,247,235,254,187,170,220,170,216,112,182,238,191,172,216,218,12,0,176,229,190,173,218,12,0,0,0,176,182,205,13,0,0,0,0,0,176,13,0,0,0,0,0,0,160,10,0,0,0,0,0,160,53,58,5,0,0,0,80,90,51,165,49,5,0,80,85,58,74,52,51,51,5,172,165,58,170,170,85,49,229,120,164,26,83,53,26,229,235,120,143,168,58,58,229,235,235,246,18,113,168,234,187,233,235,199,194,255,199,233,187,235,235,241,116,47,196,221,185,219,235,44,79,39,194,185,219,187,233,248,23,241,196,187,237,187,233,128,119,34,207,189,233,235,13,0,192,38,66,190,235,13,0,0,0,192,199,222,14,0,0,0,0,0,192,14,0,0,0,0,0,0,48,4,0,0,0,0,0,64,49,20,3,0,0,0,48,49,50,52,68,1,0,48,52,68,68,49,68,99,4,72,20,52,100,65,67,65,179,90,23,68,49,65,49,198,187,117,136,53,49,20,147,185,220,117,88,88,56,195,201,155,220,133,136,136,133,203,205,189,156,135,136,119,117,201,156,157,188,120,117,133,117,188,188,155,185,87,120,136,117,219,204,201,187,128,136,117,119,204,203,156,12,0,112,135,168,203,201,11,0,0,0,128,88,201,9,0,0,0,0,0,112,12,0,0,0,0,0,0,16,1,0,0,0,0,0,16,35,51,1,0,0,0,48,145,36,51,66,1,0,32,35,36,145,53,50,34,1,131,53,83,23,113,54,82,249,87,147,23,67,50,129,151,251,87,87,116,37,35,163,187,250,121,119,117,149,150,186,220,236,196,106,101,185,202,171,236,159,149,195,105,181,205,221,175,204,87,197,178,185,220,255,186,203,122,183,102,195,159,251,186,236,176,185,151,117,220,251,218,15,0,192,106,119,171,237,15,0,0,0,176,154,219,15,0,0,0,0,0,192,15,0,0,0,0,0,0,16,1,0,0,0,0,0,16,66,66,4,0,0,0,32,100,18,68,49,1,0,16,18,68,151,35,33,17,4,114,35,50,22,116,117,68,233,54,103,23,50,39,114,102,250,54,54,98,19,18,130,170,254,104,119,99,103,149,170,204,236,201,91,83,153,202,171,236,110,147,153,89,153,204,220,143,204,118,195,167,166,206,239,234,203,120,166,117,148,191,235,170,220,160,150,102,107,236,250,202,15,0,144,88,102,186,235,15,0,0,0,160,104,218,14,0,0,0,0,0,192,14,0,0,0,0,0,0,16,1,0,0,0,0,0,32,50,68,1,0,0,0,64,117,50,34,98,1,0,48,36,54,113,71,67,51,2,116,70,84,22,97,71,51,231,86,116,38,34,35,113,118,250,133,153,100,53,52,212,170,249,75,100,104,117,118,141,236,236,183,107,133,153,201,157,252,126,117,180,135,165,221,252,223,204,134,181,148,151,140,239,169,202,153,166,72,180,127,234,173,237,192,149,148,101,237,250,217,15,0,176,104,102,218,236,15,0,0,0,160,120,234,14,0,0,0,0,0,192,14,0,0,0,0,0,0,16,1,0,0,0,0,0,16,117,55,1,0,0,0,16,117,81,18,71,1,0,16,115,81,115,71,20,39,1,99,19,73,20,65,149,49,231,86,115,20,89,149,49,134,235,42,155,99,19,49,150,237,234,74,54,107,116,118,237,218,231,74,170,56,184,234,201,220,231,73,182,148,180,108,237,217,233,54,54,164,179,156,237,218,234,56,172,168,180,172,204,253,235,176,55,172,179,125,252,201,14,0,176,56,179,236,202,14,0,0,0,176,182,202,14,0,0,0,0,0,176,14,0,0,0,0,0,0,64,1,0,0,0,0,0,64,49,152,2,0,0,0,48,67,67,81,66,1,0,64,147,17,33,52,35,34,4,38,33,36,17,145,17,24,178,119,71,17,49,68,68,228,190,182,150,38,35,54,242,203,255,105,118,105,41,179,191,253,235,216,103,152,105,253,234,189,238,185,101,200,107,252,236,254,188,88,104,198,133,221,218,235,238,136,201,107,153,252,173,202,204,96,184,117,133,187,252,218,12,0,144,152,154,190,190,14,0,0,0,144,136,188,12,0,0,0,0,0,96,11,0,0,0,0,0,0,16,4,0,0,0,0,0,32,86,17,2,0,0,0,96,17,22,17,100,4,0,16,22,35,97,49,70,17,6,25,97,17,53,17,17,22,193,119,72,102,20,49,99,194,204,123,155,73,49,101,193,204,204,151,151,119,107,196,236,204,220,151,154,123,119,207,236,204,204,167,119,183,187,204,206,204,207,171,155,183,167,254,204,204,204,139,119,122,137,204,236,206,236,112,135,122,119,236,236,206,14,0,112,185,122,236,252,15,0,0,0,112,119,205,14,0,0,0,0,0,112,14,0,0,0,0,0,0,16,3,0,0,0,0,0,32,73,17,2,0,0,0,144,17,25,17,148,3,0,16,25,35,145,49,57,17,9,23,145,17,52,17,17,25,177,168,54,153,20,49,147,178,187,170,117,71,49,148,241,191,187,117,117,90,149,180,219,191,203,117,120,90,85,254,219,239,187,117,170,90,85,223,253,255,187,117,117,138,117,206,255,255,187,103,85,168,103,187,235,254,219,160,101,167,85,219,219,254,13,0,160,167,88,219,251,12,0,0,0,160,165,252,13,0,0,0,0,0,80,13,0,0,0,0,0,0,48,3,0,0,0,0,0,96,100,100,4,0,0,0,96,70,67,52,52,4,0,48,99,68,51,54,67,70,3,53,100,99,51,102,51,51,196,181,105,20,70,54,65,164,221,25,185,73,68,54,227,234,207,149,137,153,56,244,221,220,221,137,187,152,153,222,252,205,209,187,184,137,88,29,255,221,206,152,139,187,155,207,222,253,221,185,149,185,81,252,205,237,221,80,25,153,155,223,29,223,13,0,176,183,123,207,223,15,0,0,0,144,137,223,15,0,0,0,0,0,144,13,0,0,0,0,0,0,16,4,0,0,0,0,0,32,86,17,2,0,0,0,96,17,22,17,100,4,0,16,22,35,97,49,70,17,6,25,97,17,53,17,17,22,193,119,72,102,20,49,99,194,204,123,155,73,49,101,193,204,204,151,151,119,107,196,236,204,220,151,154,123,119,207,236,204,204,167,119,183,187,204,206,204,207,171,155,183,167,254,204,204,204,139,119,122,137,204,236,206,236,112,135,122,119,236,236,206,14,0,112,185,122,236,252,15,0,0,0,112,119,205,14,0,0,0,0,0,112,14,0,0,0,0,0,0,16,3,0,0,0,0,0,32,73,17,2,0,0,0,144,17,25,17,148,3,0,16,25,35,145,49,57,17,9,23,145,17,52,17,17,25,177,168,54,153,20,49,147,178,187,170,117,71,49,148,241,191,187,117,117,90,149,180,219,191,203,117,120,90,85,254,219,239,187,117,170,90,85,223,253,255,187,117,117,138,117,206,255,255,187,103,85,168,103,187,235,254,219,160,101,167,85,219,219,254,13,0,160,167,88,219,251,12,0,0,0,160,165,252,13,0,0,0,0,0,80,13,0,0,0,17,1,17,17,17,17,17,33,1,0,0,32,0,0,0,48,1,16,0,2,0,0,0,0,1,1,0,0,0,0,0,50,17,0,0,0,16,0,32,48,1,0,0,0,1,0,2,0,0,0,0,32,0,0,0,48,1,2,0,2,0,0,0,48,33,0,0,0,0,0,0,48,1,0,0,0,1,0,0,0,0,0,0,16,0,0,16,0,1,0,0,2,0,0,1,48,32,0,0,0,0,16,0,48,2,0,0,0,0,2,0,48,1,0,0,0,0,0,0,32,50,51,51,0,51,48,51,35,0,0,0,16,1,0,0,0,0,0,96,22,104,2,0,0,0,16,97,65,22,33,2,0,16,164,170,74,136,68,100,1,55,34,34,104,38,66,100,145,123,100,52,161,36,102,179,157,187,149,53,100,52,211,217,157,221,197,149,57,115,215,233,127,219,197,149,89,236,249,249,127,187,212,201,89,239,249,253,127,187,196,197,77,255,247,233,127,119,196,180,77,238,247,221,125,80,117,151,77,238,247,202,11,0,144,150,73,238,215,11,0,0,0,96,105,206,7,0,0,0,0,0,80,12,0,0,0,0,84,84,0,0,80,84,0,0,16,84,69,0,80,18,0,0,64,1,48,4,16,84,0,1,80,1,0,69,67,84,20,2,0,66,0,32,85,1,37,85,0,84,0,18,80,1,85,4,84,84,64,69,0,82,80,0,69,20,82,0,16,84,0,0,80,65,5,0,64,2,0,0,69,65,5,0,82,2,0,0,65,2,80,0,4,82,0,80,82,68,5,0,5,84,64,36,0,84,1,0,85,20,84,5,0,81,82,66,80,33,5,0,16,2,32,85,2,82,0,0,85,4,0,0,0,66,5,0,0,0,16,1,0,0,0,0,0,64,19,71,1,0,0,0,112,68,67,35,116,4,0,64,66,65,67,65,66,17,3,19,67,55,19,34,116,34,163,136,33,52,33,55,52,195,204,168,170,26,66,50,195,250,252,239,78,68,72,194,202,207,191,143,168,175,247,204,204,236,223,149,245,255,136,236,239,222,214,93,153,231,222,204,239,221,107,153,85,149,89,191,190,219,182,80,93,153,85,107,214,238,11,0,80,217,217,221,237,11,0,0,0,144,89,107,13,0,0,0,0,0,208,13,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,64,4,0,0,64,17,4,0,20,65,0,0,64,34,66,64,33,65,0,0,20,34,65,64,34,34,4,0,20,51,18,36,35,34,4,0,20,34,18,35,50,18,4,0,20,34,18,19,34,18,4,0,20,35,34,18,34,18,4,0,20,34,34,19,34,18,4,0,20,34,18,19,50,18,4,0,64,50,18,18,34,65,0,0,64,17,18,19,35,65,0,0,0,68,17,51,66,4,0,0,0,0,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,48,5,0,0,0,0,0,80,51,133,8,0,0,0,48,51,21,81,143,3,0,80,56,101,133,95,85,99,5,136,58,51,152,83,131,143,179,153,60,133,88,159,51,198,187,101,42,53,51,248,197,185,210,149,130,88,56,195,254,235,222,101,42,168,136,203,238,189,156,134,168,102,111,233,255,237,222,90,248,136,101,220,46,253,178,162,54,42,101,219,238,233,187,128,136,155,99,204,125,156,12,0,96,134,202,203,204,11,0,0,0,128,88,227,9,0,0,0,0,0,96,14,0,0,0,0,0,0,16,1,0,0,0,0,0,96,51,51,6,0,0,0,96,34,34,33,34,6,0,32,97,34,18,33,50,38,1,100,98,34,34,50,51,38,166,117,137,51,83,51,51,166,252,72,84,89,17,17,165,236,253,69,84,87,100,166,202,237,254,85,117,135,151,236,202,221,254,89,69,116,185,173,172,220,238,116,85,133,184,202,204,236,239,117,119,136,184,204,220,238,252,144,137,152,185,204,220,174,14,0,176,184,148,234,221,15,0,0,0,144,151,220,14,0,0,0,0,0,144,14,0,0,0,0,0,0,32,7,0,0,0,0,0,16,17,35,3,0,0,0,128,65,17,58,18,3,0,16,161,35,169,104,170,138,5,75,99,19,21,145,34,131,83,35,103,73,129,187,146,249,184,114,93,183,72,35,115,250,222,37,109,183,137,87,158,156,252,210,216,221,123,206,207,164,239,125,92,123,215,254,230,236,190,211,155,178,164,156,159,247,251,84,103,119,164,125,239,239,234,80,167,178,34,204,168,235,7,0,48,188,117,158,238,12,0,0,0,160,221,200,15,0,0,0,0,0,96,15,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,19,2,0,0,0,16,49,66,68,51,1,0,32,52,68,68,49,52,66,4,41,36,35,52,50,34,51,227,105,23,52,17,33,17,228,206,134,138,38,50,19,180,204,237,118,106,103,58,241,235,190,252,150,121,121,150,238,255,205,220,168,106,121,136,187,189,189,252,136,150,119,102,220,235,190,203,103,136,135,102,254,255,251,189,112,168,118,103,253,237,207,15,0,112,151,119,238,251,11,0,0,0,128,105,252,11,0,0,0,0,0,112,12,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,19,2,0,0,0,16,49,67,68,51,1,0,32,51,68,68,50,52,66,4,42,36,36,52,49,34,51,226,105,23,52,17,33,17,228,221,134,138,38,65,18,196,204,237,134,138,103,58,241,236,206,236,166,138,122,166,237,255,221,220,168,106,106,136,204,221,205,252,136,166,134,102,236,236,206,204,102,136,134,102,253,255,252,205,96,168,102,103,253,237,205,15,0,96,168,135,221,252,12,0,0,0,128,105,252,12,0,0,0,0,0,112,12,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,20,2,0,0,0,16,65,67,69,68,1,0,32,52,68,68,33,52,82,5,41,36,35,36,50,34,51,227,121,24,68,17,33,17,228,205,151,153,39,50,19,180,204,237,135,137,120,57,241,235,190,252,151,137,137,151,237,255,205,220,152,121,121,152,187,189,189,251,153,151,136,119,236,251,190,203,120,137,151,119,253,255,251,189,128,152,118,120,253,253,205,15,0,128,152,136,221,251,11,0,0,0,144,121,236,11,0,0,0,0,0,128,12,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,19,2,0,0,0,16,49,66,68,51,1,0,32,52,68,68,49,52,66,4,40,36,35,52,50,34,51,227,105,22,52,17,33,17,228,221,134,137,38,50,18,180,205,237,118,106,103,58,241,236,189,252,134,120,120,134,237,255,205,220,135,104,104,136,187,189,189,252,136,134,118,102,220,251,189,203,103,120,134,102,253,255,251,189,112,136,102,103,253,253,206,15,0,96,135,119,221,251,12,0,0,0,128,104,235,11,0,0,0,0,0,112,12,0,0,0,0,0,0,64,5,0,0,0,0,0,16,33,20,2,0,0,0,16,65,84,86,68,1,0,32,52,85,85,49,69,82,6,42,70,35,54,66,34,52,226,122,24,69,17,33,17,229,205,151,154,39,49,18,181,204,237,151,122,120,58,241,235,190,236,167,154,154,168,237,239,205,220,169,138,138,153,187,189,189,252,153,167,152,119,236,235,190,203,120,153,152,119,253,239,251,189,128,169,135,120,253,237,189,15,0,128,169,152,221,251,11,0,0,0,144,122,220,11,0,0,0,0,0,128,12,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,20,2,0,0,0,16,65,66,68,52,1,0,32,51,68,68,33,52,66,4,40,36,35,36,50,34,51,227,105,23,68,17,33,17,228,205,134,137,38,50,18,180,204,237,118,106,103,58,225,236,189,236,134,120,120,134,237,239,205,220,135,104,120,136,187,221,189,236,136,134,119,102,220,235,189,203,103,136,135,102,253,238,251,189,112,136,118,103,253,237,206,15,0,112,135,119,221,235,12,0,0,0,128,104,236,11,0,0,0,0,0,112,12,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,19,2,0,0,0,32,49,67,68,51,1,0,32,52,68,68,49,52,66,4,40,36,35,52,50,34,51,227,104,22,52,33,33,33,228,221,134,136,38,50,19,164,186,237,118,120,102,56,225,234,173,234,134,120,104,134,237,255,173,218,135,104,104,135,170,205,173,235,136,134,118,102,218,218,173,170,102,120,134,102,253,254,234,173,96,135,102,102,237,221,174,15,0,96,135,118,221,234,10,0,0,0,128,104,250,10,0,0,0,0,0,96,11,0,0,0,0,0,0,48,3,0,0,0,0,0,16,33,19,2,0,0,0,16,49,50,51,51,1,0,32,35,51,51,33,51,50,3,40,35,35,35,50,34,51,211,89,22,51,17,33,17,211,220,117,121,37,50,18,163,187,220,101,89,86,57,241,218,173,235,133,104,104,133,220,239,188,203,134,88,88,119,170,172,172,250,119,133,101,85,219,218,173,186,86,119,117,85,252,239,250,172,96,135,85,86,252,220,174,15,0,80,134,102,204,250,10,0,0,0,112,88,235,10,0,0,0,0,0,96,11,0,0,0,0,0,0,64,5,0,0,0,0,0,16,33,20,2,0,0,0,32,65,84,85,68,1,0,32,68,85,85,66,69,82,5,41,53,37,69,66,34,68,210,104,23,69,33,33,33,213,237,150,137,38,82,18,181,221,221,135,121,119,73,242,220,173,253,151,121,137,151,221,255,221,221,151,121,121,136,187,189,189,253,136,150,119,103,221,219,189,219,120,137,135,119,253,255,251,189,128,152,119,119,253,221,223,15,0,112,152,119,221,252,13,0,0,0,144,104,253,13,0,0,0,0,0,112,13,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,19,2,0,0,0,16,49,66,68,51,1,0,32,35,68,68,33,52,66,4,40,36,35,36,50,18,51,227,89,23,52,17,33,17,228,220,134,137,38,49,18,180,204,236,118,121,103,57,225,235,188,236,134,120,120,134,236,239,204,204,135,104,104,136,187,188,188,236,136,133,118,102,204,235,189,203,102,120,134,102,252,238,235,188,96,136,102,103,236,236,206,14,0,96,135,119,204,235,12,0,0,0,128,104,252,12,0,0,0,0,0,112,12,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,19,2,0,0,0,32,49,66,68,51,1,0,32,52,68,68,49,52,66,4,41,36,36,52,50,34,67,227,104,23,52,33,33,33,228,206,150,137,38,66,18,180,187,238,135,121,119,57,225,235,190,251,150,137,137,150,238,255,190,235,152,105,121,152,187,204,190,235,136,150,135,102,219,235,190,187,103,137,135,118,254,254,251,188,112,152,118,104,254,236,191,15,0,112,152,136,238,235,11,0,0,0,144,105,251,11,0,0,0,0,0,112,11,0,0,0,0,0,0,64,5,0,0,0,0,0,16,33,20,2,0,0,0,32,65,83,85,68,1,0,48,53,85,85,49,69,83,5,58,52,52,53,66,35,68,212,106,23,69,33,49,33,213,221,150,154,38,66,19,197,204,221,135,122,120,74,225,220,189,236,167,138,138,167,221,239,205,220,167,122,122,153,204,204,205,236,170,166,135,103,204,220,205,204,120,137,167,118,253,238,236,204,128,169,118,120,237,220,206,14,0,112,168,136,221,236,12,0,0,0,144,106,252,12,0,0,0,0,0,128,12,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,19,2,0,0,0,16,49,67,68,51,1,0,32,51,68,68,49,52,66,4,40,36,36,52,50,18,51,211,104,22,52,17,33,17,212,221,134,120,38,65,18,164,170,221,118,120,102,56,241,218,189,250,134,120,120,134,221,255,173,218,135,104,104,119,170,189,173,250,119,134,118,102,202,234,173,170,102,120,118,102,253,255,251,173,96,135,102,103,253,237,173,15,0,96,135,119,221,250,10,0,0,0,128,103,250,10,0,0,0,0,0,96,10,0,0,0,0,0,0,64,4,0,0,0,0,0,16,33,20,2,0,0,0,32,65,67,69,68,1,0,32,52,85,69,51,68,82,5,41,37,36,53,66,34,68,210,105,23,68,33,33,33,212,189,134,137,38,66,18,180,187,221,135,137,119,73,225,219,205,235,150,137,121,150,221,255,189,219,152,105,121,136,187,205,189,235,153,150,135,102,219,235,189,187,103,136,151,118,253,254,252,189,112,152,118,103,253,237,189,15,0,112,152,135,221,235,11,0,0,0,128,105,251,11,0,0,0,0,0,112,11,0,0,0,0,0,0,64,4,0,0,0,0,0,16,33,20,2,0,0,0,16,65,67,68,68,1,0,32,52,68,68,49,68,66,4,40,36,36,52,66,34,68,211,89,22,68,17,33,17,212,220,133,137,38,66,18,164,204,220,118,105,102,57,210,218,172,220,134,120,120,134,220,223,172,204,135,104,104,136,170,188,172,220,136,133,118,86,204,202,173,202,102,120,134,102,252,221,250,172,96,136,102,103,220,204,173,15,0,96,135,119,204,218,10,0,0,0,128,88,236,10,0,0,0,0,0,96,12,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,20,2,0,0,0,16,65,66,69,52,1,0,32,36,85,69,33,52,66,5,42,37,36,37,50,34,51,226,122,24,68,17,33,17,228,205,167,170,39,66,18,196,220,237,151,138,121,58,225,236,205,236,167,154,154,167,237,255,205,220,168,122,138,169,204,204,205,237,170,167,152,119,220,236,205,204,121,154,168,119,253,254,236,204,144,169,134,121,237,236,206,15,0,128,169,153,221,236,12,0,0,0,160,122,252,12,0,0,0,0,0,144,13,0,0,0,0,0,0,48,4,0,0,0,0,0,16,33,19,2,0,0,0,16,49,50,68,35,1,0,32,35,68,68,33,52,66,4,39,35,35,35,50,34,51,195,87,22,52,17,33,17,195,204,117,120,37,50,18,148,188,204,101,88,86,56,225,203,156,203,117,103,103,117,204,255,204,203,118,87,103,119,153,172,156,233,119,117,102,85,187,201,156,185,86,103,118,85,252,222,233,156,96,119,101,86,236,204,188,15,0,96,118,102,204,233,11,0,0,0,112,87,217,9,0,0,0,0,0,96,11,0,0,0,0,0,0,80,5,0,0,0,0,0,160,50,35,5,0,0,0,80,50,33,17,35,5,0,160,50,33,19,49,17,19,5,167,50,33,19,49,18,35,117,233,167,50,33,17,35,170,138,220,133,88,50,35,245,175,167,134,134,94,166,117,216,127,186,117,121,92,86,253,218,239,170,134,204,94,101,223,252,255,153,133,117,188,134,190,255,255,136,120,85,201,119,183,217,254,217,208,118,232,101,199,199,253,12,0,208,232,89,218,250,11,0,0,0,224,230,251,12,0,0,0,0,0,96,12,0,0,0,0,0,0,160,4,0,0,0,0,0,48,89,169,2,0,0,0,64,161,19,162,20,4,0,144,161,35,25,58,73,98,2,39,73,145,52,41,165,145,113,233,70,42,20,57,163,178,123,220,130,71,58,165,241,191,183,133,117,46,69,116,215,127,203,98,105,44,53,253,219,239,187,117,204,78,82,223,252,255,153,114,99,188,117,206,255,255,120,103,34,201,102,183,217,254,217,208,101,232,82,199,199,253,12,0,208,231,41,219,251,12,0,0,0,224,229,252,12,0,0,0,0,0,80,12,0,0,0,0,0,0,160,4,0,0,0,0,0,48,89,169,2,0,0,0,64,161,19,162,20,4,0,144,161,35,25,58,73,98,2,39,73,145,52,41,165,145,113,233,70,42,20,57,163,178,123,220,130,71,58,165,241,191,183,133,117,46,69,116,215,127,203,98,105,44,53,253,219,239,187,117,204,78,82,223,252,255,153,114,99,188,117,206,255,255,120,103,34,201,102,183,217,254,217,208,101,232,82,199,199,253,12,0,208,231,41,219,251,12,0,0,0,224,229,252,12,0,0,0,0,0,80,12,0,0,0,0,0,0,160,4,0,0,0,0,0,48,89,169,2,0,0,0,64,161,19,162,20,4,0,144,161,35,25,58,73,98,2,39,73,145,52,41,165,145,113,233,70,42,20,57,163,178,123,220,130,71,58,165,241,191,183,133,117,46,69,116,215,127,203,98,105,44,53,253,219,239,187,117,204,78,82,223,252,255,153,114,99,188,117,206,255,255,120,103,34,201,102,183,217,254,217,208,101,232,82,199,199,253,12,0,208,231,41,219,251,12,0,0,0,224,229,252,12,0,0,0,0,0,80,12,0,0,0,0,0,0,96,6,0,0,0,0,0,192,50,35,6,0,0,0,96,50,33,17,51,6,0,192,50,33,19,49,17,19,6,201,50,33,19,49,18,35,134,234,200,51,33,17,35,172,138,221,149,105,50,35,230,175,168,151,151,93,199,134,184,143,186,149,154,92,87,235,186,207,170,151,221,93,117,190,251,255,136,149,149,188,151,188,239,239,136,153,85,202,137,184,201,252,185,208,135,217,117,184,184,252,11,0,208,217,90,186,234,11,0,0,0,224,215,235,11,0,0,0,0,0,112,11,0,0,0,0,0,0,176,3,0,0,0,0,0,48,90,186,3,0,0,0,48,177,19,178,20,4,0,160,177,51,26,60,74,146,2,39,74,161,53,42,182,161,97,233,71,59,20,58,179,147,105,221,130,72,60,197,241,159,150,133,133,46,69,100,198,111,169,114,121,45,37,252,201,223,153,133,221,62,82,207,252,255,119,130,114,205,133,173,255,255,102,120,34,217,119,166,199,253,199,224,117,232,82,182,182,252,11,0,208,232,41,201,249,10,0,0,0,240,229,250,11,0,0,0,0,0,80,12,0,0,0,0,0,0,176,3,0,0,0,0,0,48,90,186,3,0,0,0,48,177,19,178,20,4,0,160,177,51,26,60,74,146,2,39,74,161,53,42,182,161,97,233,71,59,20,58,179,147,105,221,130,72,60,197,241,159,150,133,133,46,69,100,198,111,169,114,121,45,37,252,201,223,153,133,221,62,82,207,252,255,119,130,114,205,133,173,255,255,102,120,34,217,119,166,199,253,199,224,117,232,82,182,182,252,11,0,208,232,41,201,249,10,0,0,0,240,229,250,11,0,0,0,0,0,80,12,0,0,0,0,0,0,176,3,0,0,0,0,0,48,90,186,3,0,0,0,48,177,19,178,20,4,0,160,177,51,26,60,74,146,2,39,74,161,53,42,182,161,97,233,71,59,20,58,179,147,105,221,130,72,60,197,241,159,150,133,133,46,69,100,198,111,169,114,121,45,37,252,201,223,153,133,221,62,82,207,252,255,119,130,114,205,133,173,255,255,102,120,34,217,119,166,199,253,199,224,117,232,82,182,182,252,11,0,208,232,41,201,249,10,0,0,0,240,229,250,11,0,0,0,0,0,80,12,0,0,0,0,0,0,64,0,0,0,0,0,0,0,2,0,0,0,0,0,48,3,204,49,160,0,0,32,16,48,27,177,195,17,10,0,9,1,160,18,0,16,113,80,0,0,4,160,1,9,127,5,3,176,194,176,0,127,176,6,4,52,173,137,15,9,238,70,0,54,208,0,7,9,239,208,109,208,80,0,138,7,7,48,13,214,125,247,174,0,128,96,4,4,194,151,0,153,231,0,7,71,5,15,0,159,10,0,208,108,64,144,8,7,0,0,0,0,3,224,9,0,0,0,0,0,48,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,2,0,0,0,0,0,48,3,204,49,160,0,0,32,16,48,27,177,195,17,10,0,9,1,160,18,0,16,113,80,0,0,4,160,1,9,127,5,3,176,194,176,0,127,176,6,4,52,173,137,15,9,238,70,0,54,208,0,7,9,239,208,109,208,80,0,138,7,7,48,13,214,125,247,174,0,128,96,4,4,194,151,0,153,231,0,7,71,5,15,0,159,10,0,208,108,64,144,8,7,0,0,0,0,3,224,9,0,0,0,0,0,48,0,0,0,0,0,0,0,96,2,0,0,0,0,0,112,55,38,7,0,0,0,16,33,49,68,118,3,0,112,113,33,65,114,119,49,2,37,84,68,21,67,52,115,182,169,59,82,23,85,49,195,234,223,91,54,18,55,182,233,253,102,223,121,134,195,236,253,138,34,150,223,169,234,253,158,153,73,82,134,223,253,174,153,233,223,37,35,162,142,139,202,253,167,223,42,82,155,201,253,190,128,170,223,41,232,253,206,12,0,160,164,223,253,206,10,0,0,0,160,152,206,14,0,0,0,0,0,96,12,0,0,0,0,0,0,96,6,0,0,0,0,0,128,70,68,8,0,0,0,128,102,102,200,136,8,0,128,136,136,104,70,68,132,8,71,68,136,204,72,68,68,150,58,138,72,65,129,140,232,153,103,119,202,102,136,152,123,153,170,170,58,106,182,185,150,183,103,118,118,106,121,91,121,235,170,170,42,118,151,150,153,187,170,166,106,167,155,153,110,185,55,170,170,173,155,235,150,155,160,122,99,215,187,107,153,11,0,160,119,218,153,185,14,0,0,0,160,122,123,11,0,0,0,0,0,160,9,0,0,0,0,0,0,32,2,0,0,0,0,0,32,17,49,2,0,0,0,32,34,68,68,52,3,0,16,66,84,85,21,65,52,2,38,66,68,17,85,52,34,194,118,39,51,68,68,51,194,204,149,104,40,34,34,210,237,222,152,153,137,39,194,237,255,206,150,170,150,120,188,254,255,221,168,170,170,119,236,255,239,205,150,170,154,121,237,255,239,205,134,169,153,136,253,191,190,204,96,136,153,133,253,239,205,12,0,112,135,103,237,222,12,0,0,0,96,102,204,12,0,0,0,0,0,96,12,0,0,0,0,0,0,48,4,0,0,0,0,0,32,16,4,0,0,0,0,0,16,35,6,0,0,0,0,0,64,35,6,2,0,0,0,0,0,48,3,100,0,0,0,0,0,48,67,6,0,0,0,0,0,32,99,0,0,0,0,0,0,16,3,0,0,0,0,0,0,16,3,0,0,0,0,0,0,16,4,0,0,0,0,0,16,34,20,0,0,0,0,0,96,50,52,6,0,0,0,0,0,54,100,0,0,0,0,0,0,16,6,0,0,0,0,0,0,32,4,0,0,0,0,0,0,80,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,4,0,0,0,0,0,0,16,4,0,0,0,0,0,0,32,4,0,0,0,0,0,0,32,4,0,0,0,0,0,0,48,36,0,0,0,0,0,0,48,83,0,0,0,0,0,16,35,3,0,0,0,0,0,64,19,5,0,0,0,0,0,0,20,3,0,0,0,0,0,0,16,3,0,0,0,0,50,2,0,12,4,0,0,0,19,165,0,78,0,33,0,0,0,147,4,15,33,51,1,32,1,0,64,0,53,33,0,16,35,3,192,64,35,0,0,0,50,37,64,4,0,0,0,0,32,81,176,0,0,18,0,0,0,0,180,0,35,35,0,0,35,0,204,32,53,1,0,0,49,50,208,64,35,0,0,0,32,83,1,4,0,0,0,0,0,50,8,6,15,0,0,0,0,0,192,246,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,32,35,19,0,0,32,1,0,0,49,53,0,0,50,3,0,0,32,83,0,48,19,0,0,0,0,0,4,83,2,0,0,0,49,2,112,68,48,2,0,0,34,3,0,4,32,19,0,0,48,18,0,7,83,50,0,0,16,53,0,7,84,3,0,0,48,5,0,71,0,0,0,0,0,64,0,132,0,0,2,0,0,0,100,4,0,35,19,0,0,0,128,4,48,50,2,0,0,0,0,7,80,21,0,0,50,0,0,7,4,0,0,96,11,48,11,112,123,123,0,112,10,64,11,96,107,122,0,48,0,96,0,64,58,123,10,64,0,163,0,64,48,107,11,80,0,163,0,179,64,48,11,80,11,6,0,182,112,48,11,112,10,6,16,8,96,43,10,0,7,6,16,8,96,74,10,0,6,7,96,10,112,107,10,0,164,167,96,0,96,107,11,0,162,183,112,0,112,123,11,0,177,167,96,10,112,122,0,0,7,96,10,7,163,96,0,80,10,96,11,166,183,166,0,112,11,112,11,183,166,183,0,0,155,144,155,176,185,185,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,80,7,32,0,0,0,2,0,32,8,48,0,0,0,131,0,32,0,80,7,128,0,80,0,96,0,96,8,32,0,96,8,133,0,118,0,48,8,0,116,114,5,130,0,0,118,0,2,134,2,2,0,0,5,0,5,5,131,3,0,0,5,80,7,5,116,115,0,16,0,32,0,5,4,117,0,48,0,32,0,5,4,134,0,48,8,96,0,134,118,5,0,80,7,80,7,134,116,6,0,96,7,96,8,132,134,4,0,79,97,183,91,207,48,86,0,169,211,0,16,6,179,13,0,64,20,198,125,70,97,183,9,0,61,125,22,57,188,112,0,197,101,193,126,27,117,13,0,96,236,147,40,56,190,5,0,245,85,193,127,81,5,159,0,96,176,62,21,163,171,5,0,144,107,38,91,225,118,107,0,0,248,60,38,147,174,5,0,0,75,118,146,188,88,0,0,0,134,190,35,104,251,0,0,0,240,88,22,173,148,14,0,0,155,0,32,11,0,9,0,0,0,0,64,11,0,0,0,0,0,0,112,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,8,0,0,32,4,0,0,144,225,0,192,196,94,0,0,0,25,5,105,114,8,0,0,224,79,109,78,6,0,0,0,156,118,81,37,236,0,0,0,10,206,147,228,104,0,0,0,208,87,35,162,254,0,0,0,128,240,172,227,106,14,0,0,80,140,39,113,238,6,0,0,0,198,110,223,86,15,0,200,7,108,38,149,14,2,0,144,177,213,156,220,71,14,0,231,227,93,24,165,145,183,6,0,238,6,32,122,175,80,0,0,48,15,90,127,170,99,0,0,32,160,146,74,182,188,12,0,99,42,175,170,178,204,12,63,58,58,170,122,226,236,14,48,250,167,82,90,244,227,0,176,107,167,199,221,124,179,11,204,236,122,188,236,126,203,204,176,204,122,219,238,51,206,14,176,236,167,236,62,175,227,14,0,78,175,79,118,122,111,5,0,0,167,71,247,167,106,0,0,240,167,71,167,167,100,15,0,0,48,95,122,250,4,0,0,0,64,122,159,135,9,0,0,0,0,132,138,170,0,0,0,0,0,0,0,0,0,0,0,0,0,161,186,0,0,0,0,0,0,184,184,0,0,0,0,129,10,112,11,128,8,0,0,185,57,7,0,186,26,0,0,184,0,39,0,163,138,0,0,112,0,64,32,3,187,0,0,114,0,129,0,7,119,0,0,64,128,170,8,39,112,0,0,50,160,184,59,0,4,2,0,48,2,176,71,0,64,0,0,0,71,64,6,0,64,2,0,128,66,0,37,0,112,0,144,152,184,7,5,32,3,0,128,129,185,119,0,52,112,2,0,152,11,68,64,7,112,0,0,0,118,117,117,87,6,0,96,6,103,101,101,101,0,0,112,87,119,86,103,117,0,0,0,112,117,118,22,49,0,0,0,112,86,102,36,18,4,0,0,0,103,117,49,36,101,6,96,85,112,117,53,100,119,0,0,103,118,117,85,117,0,0,0,112,101,101,101,119,0,0,80,117,102,86,102,0,85,7,96,86,103,87,102,85,119,0,0,96,101,86,86,119,7,0,0,0,86,86,86,7,0,0,0,0,80,87,118,0,0,0,0,0,112,103,119,0,0,0,0,0,112,119,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,53,0,96,97,0,0,0,131,104,5,143,17,6,0,48,53,85,5,142,38,18,0,48,53,38,196,174,104,97,0,0,67,68,201,234,143,104,0,0,155,249,206,239,175,250,0,0,192,255,31,226,170,14,0,224,252,204,33,102,239,170,14,224,207,44,38,134,175,254,15,0,240,111,17,136,234,15,0,0,0,204,134,168,254,10,0,0,0,240,174,173,174,14,0,0,0,0,32,1,0,0,0,0,0,64,36,67,3,0,0,0,64,36,84,51,37,2,0,16,33,36,81,33,82,33,4,38,49,17,19,19,51,34,177,120,39,69,68,21,17,178,235,103,137,70,50,67,181,253,203,120,103,121,38,178,237,219,252,103,104,105,120,237,202,206,174,121,153,121,102,218,204,218,252,118,120,151,151,237,186,236,204,153,150,151,102,218,222,207,251,112,118,102,121,236,175,205,10,0,112,136,102,234,253,13,0,0,0,128,121,235,14,0,0,0,0,0,96,10,0,0,0,0,0,0,112,7,0,0,0,0,0,192,102,102,12,0,0,0,16,99,19,97,199,6,0,96,102,102,199,60,115,28,3,58,17,22,118,17,102,102,182,234,206,54,118,199,198,92,178,56,24,104,55,99,220,251,95,46,226,168,196,252,213,245,245,228,162,132,228,178,253,178,93,234,138,238,136,159,242,219,251,168,56,163,36,157,181,217,253,26,56,74,136,187,191,191,242,64,234,232,56,180,219,223,15,0,128,62,132,159,191,11,0,0,0,224,234,37,13,0,0,0,0,0,128,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,154,153,0,0,0,0,0,122,83,51,151,0,0,0,154,101,105,85,83,170,0,171,103,139,118,150,89,53,149,204,171,184,107,103,102,86,238,141,204,186,139,105,119,238,254,17,141,204,170,187,238,253,65,1,20,205,204,238,252,65,0,0,0,20,205,254,65,0,0,0,0,0,65,65,0,0,0,0,0,0,65,4,0,0,0,0,0,0,64,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,174,0,0,0,0,0,221,157,169,238,0,0,0,222,157,218,238,19,49,0,238,174,218,254,18,17,49,85,85,238,254,36,17,17,83,119,70,99,52,34,34,83,103,118,136,70,84,53,83,255,119,203,8,139,70,100,191,255,203,200,0,0,139,102,255,203,0,8,0,0,0,200,203,0,0,0,0,0,0,200,0,0,0,0,0,0,0,176,0,0,0,0,0,0,0,112,7,0,0,0,0,0,16,119,65,6,0,0,0,112,71,68,102,116,7,0,16,119,65,70,17,119,65,6,107,68,102,116,71,68,102,196,91,74,17,119,65,70,193,237,91,90,107,68,102,196,207,238,155,154,91,74,193,237,207,207,91,153,91,90,207,238,223,205,91,90,155,154,207,207,207,237,91,90,91,153,223,205,207,238,155,154,91,90,207,237,207,207,80,153,91,90,207,238,223,13,0,80,155,154,207,207,15,0,0,0,80,153,223,13,0,0,0,0,0,80,15,0,0,0,0,0,0,32,2,0,0,0,0,0,96,21,97,6,0,0,0,32,82,22,37,38,2,0,96,21,97,86,98,21,97,6,89,22,37,38,82,22,37,214,171,90,98,21,97,86,130,239,154,187,89,22,37,214,136,216,52,170,171,90,130,239,223,142,169,58,154,187,136,216,237,220,171,74,52,170,223,142,140,239,154,187,169,58,237,220,136,216,52,170,171,74,140,239,223,142,160,58,154,187,136,216,237,12,0,64,52,170,223,142,12,0,0,0,160,58,237,12,0,0,0,0,0,64,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,3,0,0,0,0,0,48,179,35,1,0,0,0,48,177,34,129,50,1,0,32,129,50,184,35,179,50,1,132,19,179,51,178,49,130,195,101,125,19,136,18,129,161,204,212,84,133,50,177,147,172,159,68,214,214,180,145,201,207,156,192,100,221,101,172,207,170,15,0,224,100,212,159,201,15,0,0,0,224,84,204,15,0,0,0,0,0,208,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,3,0,0,0,0,0,48,163,35,1,0,0,0,48,161,34,145,50,1,0,32,145,50,166,35,163,50,1,148,19,163,51,162,49,146,211,101,123,19,153,18,145,161,221,228,84,149,50,161,131,173,143,68,230,182,164,129,216,223,141,192,100,238,101,173,223,170,15,0,224,100,228,143,216,15,0,0,0,224,84,221,15,0,0,0,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,3,0,0,0,0,0,48,147,35,1,0,0,0,48,145,34,113,50,1,0,32,113,50,148,36,147,50,1,117,19,147,51,146,49,114,228,134,106,20,116,18,113,209,238,181,101,118,50,145,196,222,207,85,184,168,149,193,236,239,206,176,165,186,166,222,239,221,15,0,208,133,181,207,236,15,0,0,0,208,101,238,15,0,0,0,0,0,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,3,0,0,0,0,0,48,179,35,1,0,0,0,48,177,34,129,50,1,0,32,129,50,184,37,179,50,1,132,19,179,51,178,49,130,213,117,125,21,136,18,129,161,220,212,84,133,50,177,149,172,159,68,215,215,180,145,201,207,156,192,132,221,133,172,223,170,15,0,224,116,212,159,217,15,0,0,0,224,84,204,15,0,0,0,0,0,208,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,3,0,0,0,0,0,48,147,35,1,0,0,0,48,145,34,113,50,1,0,32,113,50,148,36,147,50,1,117,19,147,51,146,49,114,228,134,106,20,116,18,113,209,238,181,101,118,50,145,196,222,207,85,184,168,149,193,236,239,206,176,165,186,166,222,239,221,15,0,208,133,181,207,236,15,0,0,0,208,101,238,15,0,0,0,0,0,176,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,3,0,0,0,0,0,48,179,35,1,0,0,0,48,177,34,129,50,1,0,32,129,50,184,35,179,50,1,132,19,179,51,178,49,130,195,101,125,19,136,18,129,161,204,212,84,133,50,177,147,172,159,68,214,214,180,145,201,207,156,192,100,221,101,172,207,170,15,0,224,100,212,159,201,15,0,0,0,224,84,204,15,0,0,0,0,0,208,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,1,0,80,0,0,2,0,0,99,0,22,0,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,1,0,16,16,0,0,0,96,1,0,64,16,0,2,0,0,22,0,81,1,0,1,0,96,115,0,118,1,32,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,16,1,1,0,0,0,0,0,0,35,0,0,17,16,0,1,32,17,0,1,1,16,16,1,16,2,0,16,2,0,33,0,0,7,0,32,0,0,2,0,0,8,0,116,16,0,1,0,112,3,0,71,16,0,114,0,0,105,0,81,8,0,146,0,112,147,0,151,1,32,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,112,0,0,0,0,0,4,4,68,0,176,116,80,208,112,44,2,70,0,75,180,13,112,36,99,72,8,55,7,13,0,75,5,116,99,72,208,0,0,43,6,86,5,71,109,0,0,38,252,64,11,176,15,0,0,64,252,128,109,208,15,0,0,224,255,214,111,176,15,0,0,204,255,253,253,251,13,0,0,144,218,166,10,175,218,0,0,25,145,25,145,25,145,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,1,0,80,0,0,2,0,0,99,0,22,0,32,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,1,0,16,16,0,0,0,96,1,0,64,16,0,2,0,0,22,0,81,1,0,1,0,96,115,0,118,1,32,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,16,1,1,0,0,0,0,0,0,35,0,0,17,16,0,1,32,17,0,1,1,16,16,1,16,2,0,16,2,0,33,0,0,7,0,32,0,0,2,0,0,8,0,116,16,0,1,0,112,3,0,71,16,0,114,0,0,105,0,81,8,0,146,0,112,147,0,151,1,32,120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,131,0,131,0,48,12,0,131,196,115,132,12,163,13,56,196,200,195,168,8,138,58,72,7,64,196,106,125,172,72,74,204,0,56,212,74,131,58,76,196,48,104,220,74,196,167,77,12,0,45,210,43,210,45,201,0,80,25,145,18,145,18,145,13,0,0,0,112,7,0,0,0,0,0,16,119,65,6,0,0,0,112,71,68,102,116,7,0,16,119,65,70,17,119,65,6,107,68,102,116,71,68,102,196,91,74,17,119,65,70,193,237,91,90,107,68,102,196,207,238,155,154,91,74,193,237,207,207,91,153,91,90,207,238,223,205,91,90,155,154,207,207,207,237,91,90,91,153,223,205,207,238,155,154,91,90,207,237,207,207,80,153,91,90,207,238,223,13,0,80,155,154,207,207,15,0,0,0,80,153,223,13,0,0,0,0,0,80,15,0,0,0,0,0,0,112,7,0,0,0,0,0,16,119,65,6,0,0,0,112,71,68,102,116,7,0,16,119,65,70,17,119,65,6,107,68,102,116,71,68,102,196,91,74,17,119,65,70,193,237,91,90,107,68,102,196,207,238,155,154,91,74,193,237,207,207,91,153,91,90,207,238,223,205,91,90,155,154,207,207,207,237,91,90,91,153,223,205,207,238,155,154,91,90,207,237,207,207,80,153,91,90,207,238,223,13,0,80,155,154,207,207,15,0,0,0,80,153,223,13,0,0,0,0,0,80,15,0,0,0,0,0,0,112,7,0,0,0,0,0,16,119,65,6,0,0,0,112,71,68,102,116,7,0,16,119,65,70,17,119,65,6,107,68,102,116,71,68,102,196,91,74,17,119,65,70,193,237,91,90,107,68,102,196,207,238,155,154,91,74,193,237,207,207,91,153,91,90,207,238,223,205,91,90,155,154,207,207,207,237,91,90,91,153,223,205,207,238,155,154,91,90,207,237,207,207,80,153,91,90,207,238,223,13,0,80,155,154,207,207,15,0,0,0,80,153,223,13,0,0,0,0,0,80,15,0,0,0,0,0,0,112,7,0,0,0,0,0,16,119,65,6,0,0,0,112,71,68,102,116,7,0,16,119,65,70,17,119,65,6,107,68,102,116,71,68,102,196,91,74,17,119,65,70,193,237,91,90,107,68,102,196,207,238,155,154,91,74,193,237,207,207,91,153,91,90,207,238,223,205,91,90,155,154,207,207,207,237,91,90,91,153,223,205,207,238,155,154,91,90,207,237,207,207,80,153,91,90,207,238,223,13,0,80,155,154,207,207,15,0,0,0,80,153,223,13,0,0,0,0,0,80,15,0,0,0,0,0,0,112,7,0,0,0,0,0,16,119,65,6,0,0,0,112,71,68,102,116,7,0,16,119,65,70,17,119,65,6,107,68,102,116,71,68,102,196,91,74,17,119,65,70,193,237,91,90,107,68,102,196,207,238,155,154,91,74,193,237,207,207,91,153,91,90,207,238,223,205,91,90,155,154,207,207,207,237,91,90,91,153,223,205,207,238,155,154,91,90,207,237,207,207,80,153,91,90,207,238,223,13,0,80,155,154,207,207,15,0,0,0,80,153,223,13,0,0,0,0,0,80,15,0,0,0,0,0,0,112,7,0,0,0,0,0,16,119,65,6,0,0,0,112,71,68,102,116,7,0,16,119,65,70,17,119,65,6,107,68,102,116,71,68,102,196,91,74,17,119,65,70,193,237,91,90,107,68,102,196,207,238,155,154,91,74,193,237,207,207,91,153,91,90,207,238,223,205,91,90,155,154,207,207,207,237,91,90,91,153,223,205,207,238,155,154,91,90,207,237,207,207,80,153,91,90,207,238,223,13,0,80,155,154,207,207,15,0,0,0,80,153,223,13,0,0,0,0,0,80,15,0,0,0,0,0,0,112,7,0,0,0,0,0,16,119,65,6,0,0,0,112,71,68,102,116,7,0,16,119,65,70,17,119,65,6,107,68,102,116,71,68,102,196,91,74,17,119,65,70,193,237,91,90,107,68,102,196,207,238,155,154,91,74,193,237,207,207,91,153,91,90,207,238,223,205,91,90,155,154,207,207,207,237,91,90,91,153,223,205,207,238,155,154,91,90,207,237,207,207,80,153,91,90,207,238,223,13,0,80,155,154,207,207,15,0,0,0,80,153,223,13,0,0,0,0,0,80,15,0,0,0,0,0,0,32,2,0,0,0,0,0,96,21,97,6,0,0,0,32,82,22,37,38,2,0,96,21,97,86,98,21,97,6,89,22,37,38,82,22,37,214,171,90,98,21,97,86,130,239,154,187,89,22,37,214,136,216,52,170,171,90,130,239,223,142,169,58,154,187,136,216,237,220,171,74,52,170,223,142,140,239,154,187,169,58,237,220,136,216,52,170,171,74,140,239,223,142,160,58,154,187,136,216,237,12,0,64,52,170,223,142,12,0,0,0,160,58,237,12,0,0,0,0,0,64,12,0,0,0,0,0,0,32,2,0,0,0,0,0,96,21,97,6,0,0,0,32,82,22,37,38,2,0,96,21,97,86,98,21,97,6,89,22,37,38,82,22,37,214,171,90,98,21,97,86,130,239,154,187,89,22,37,214,136,216,52,170,171,90,130,239,223,142,169,58,154,187,136,216,237,220,171,74,52,170,223,142,140,239,154,187,169,58,237,220,136,216,52,170,171,74,140,239,223,142,160,58,154,187,136,216,237,12,0,64,52,170,223,142,12,0,0,0,160,58,237,12,0,0,0,0,0,64,12,0,0,0,0,0,0,32,2,0,0,0,0,0,96,21,97,6,0,0,0,32,82,22,37,38,2,0,96,21,97,86,98,21,97,6,89,22,37,38,82,22,37,214,171,90,98,21,97,86,130,239,154,187,89,22,37,214,136,216,52,170,171,90,130,239,223,142,169,58,154,187,136,216,237,220,171,74,52,170,223,142,140,239,154,187,169,58,237,220,136,216,52,170,171,74,140,239,223,142,160,58,154,187,136,216,237,12,0,64,52,170,223,142,12,0,0,0,160,58,237,12,0,0,0,0,0,64,12,0,0,0,0,0,0,16,3,0,0,0,0,0,48,163,35,1,0,0,0,48,161,34,113,50,1,0,32,113,50,167,35,163,50,1,118,19,163,51,162,49,114,179,196,100,19,119,18,113,129,185,198,102,116,50,161,147,155,143,84,196,84,164,177,153,238,139,212,100,214,100,184,190,137,191,101,204,86,197,191,185,158,187,196,84,213,100,155,143,155,143,68,198,198,196,142,184,190,139,176,100,204,101,155,191,153,15,0,208,100,196,143,184,14,0,0,0,208,84,187,15,0,0,0,0,0,192,14,0,0,0,0,0,0,32,7,0,0,0,0,0,16,17,35,3,0,0,0,128,65,17,58,18,3,0,16,161,35,169,104,170,138,5,75,99,19,21,145,34,131,83,35,103,73,129,187,146,249,184,114,93,183,72,35,115,250,222,37,109,183,137,87,158,156,252,210,216,221,123,206,207,164,239,125,92,123,215,254,230,236,190,211,155,178,164,156,159,247,251,84,103,119,164,125,239,239,234,80,167,178,34,204,168,235,7,0,48,188,117,158,238,12,0,0,0,160,221,200,15,0,0,0,0,0,96,15,0,0,0,0,0,0,16,3,0,0,0,0,0,48,163,35,1,0,0,0,48,161,34,113,50,1,0,32,113,50,167,35,163,50,1,118,19,163,51,162,49,114,179,196,100,19,119,18,113,129,185,198,102,116,50,161,147,155,143,84,196,84,164,177,153,238,139,212,100,214,100,184,190,137,191,101,204,86,197,191,185,158,187,196,84,213,100,155,143,155,143,68,198,198,196,142,184,190,139,176,100,204,101,155,191,153,15,0,208,100,196,143,184,14,0,0,0,208,84,187,15,0,0,0,0,0,192,14,0,0,0,0,0,0,32,7,0,0,0,0,0,16,17,35,3,0,0,0,128,65,17,58,18,3,0,16,161,35,169,104,170,138,5,75,99,19,21,145,34,131,83,35,103,73,129,187,146,249,184,114,93,183,72,35,115,250,222,37,109,183,137,87,158,156,252,210,216,221,123,206,207,164,239,125,92,123,215,254,230,236,190,211,155,178,164,156,159,247,251,84,103,119,164,125,239,239,234,80,167,178,34,204,168,235,7,0,48,188,117,158,238,12,0,0,0,160,221,200,15,0,0,0,0,0,96,15,0,0,0,0,0,0,16,3,0,0,0,0,0,48,163,35,1,0,0,0,48,161,34,113,50,1,0,32,113,50,167,35,163,50,1,118,19,163,51,162,49,114,179,196,100,19,119,18,113,129,185,198,102,116,50,161,147,155,143,84,196,84,164,177,153,238,139,212,100,214,100,184,190,137,191,101,204,86,197,191,185,158,187,196,84,213,100,155,143,155,143,68,198,198,196,142,184,190,139,176,100,204,101,155,191,153,15,0,208,100,196,143,184,14,0,0,0,208,84,187,15,0,0,0,0,0,192,14,0,0,0,0,0,0,32,7,0,0,0,0,0,16,17,35,3,0,0,0,128,65,17,58,18,3,0,16,161,35,169,104,170,138,5,75,99,19,21,145,34,131,83,35,103,73,129,187,146,249,184,114,93,183,72,35,115,250,222,37,109,183,137,87,158,156,252,210,216,221,123,206,207,164,239,125,92,123,215,254,230,236,190,211,155,178,164,156,159,247,251,84,103,119,164,125,239,239,234,80,167,178,34,204,168,235,7,0,48,188,117,158,238,12,0,0,0,160,221,200,15,0,0,0,0,0,96,15,0,0,0,132,139,88,37,91,85,37,213,81,87,34,51,56,35,35,213,81,136,136,119,85,117,90,213,179,221,221,173,221,221,189,234,129,139,88,53,137,168,39,215,129,125,119,53,121,119,56,216,81,121,85,53,139,90,37,213,163,107,102,86,90,102,102,234,81,85,165,88,117,119,85,213,129,187,155,121,187,219,137,216,127,121,85,56,139,119,39,215,180,173,187,91,173,170,107,235,81,89,133,53,139,136,87,213,129,42,34,50,37,50,51,216,81,136,88,133,85,120,85,213,234,238,255,254,238,254,255,239,132,139,88,37,91,85,37,213,81,87,34,51,56,35,35,213,81,136,136,119,85,117,90,213,179,221,221,173,221,221,189,234,129,139,88,53,137,168,39,215,129,125,119,53,121,119,56,216,81,121,85,53,139,90,37,213,163,107,102,86,90,102,102,234,81,85,165,88,117,119,85,213,129,187,155,121,187,219,137,216,127,121,85,56,139,119,39,215,180,173,187,91,173,170,107,235,81,89,133,53,139,136,87,213,129,42,34,50,37,50,51,216,81,136,88,133,85,120,85,213,234,238,255,254,238,254,255,239,132,139,88,37,91,85,37,213,81,87,34,51,56,35,35,213,81,136,136,119,85,117,90,213,179,221,221,173,221,221,189,234,129,139,88,53,137,168,39,215,129,125,119,53,121,119,56,216,81,121,85,53,139,90,37,213,163,107,102,86,90,102,102,234,81,85,165,88,117,119,85,213,129,187,155,121,187,219,137,216,127,121,85,56,139,119,39,215,180,173,187,91,173,170,107,235,81,89,133,53,139,136,87,213,129,42,34,50,37,50,51,216,81,136,88,133,85,120,85,213,234,238,255,254,238,254,255,239,132,139,88,37,91,85,37,213,81,87,34,51,56,35,35,213,81,136,136,119,85,117,90,213,179,221,221,173,221,221,189,234,129,139,88,53,137,168,39,215,129,125,119,53,121,119,56,216,81,121,85,53,139,90,37,213,163,107,102,86,90,102,102,234,81,85,165,88,117,119,85,213,129,187,155,121,187,219,137,216,127,121,85,56,139,119,39,215,180,173,187,91,173,170,107,235,81,89,133,53,139,136,87,213,129,42,34,50,37,50,51,216,81,136,88,133,85,120,85,213,234,238,255,254,238,254,255,239,132,139,88,37,91,85,37,213,81,87,34,51,56,35,35,213,81,136,136,119,85,117,90,213,179,221,221,173,221,221,189,234,129,139,88,53,137,168,39,215,129,125,119,53,121,119,56,216,81,121,85,53,139,90,37,213,163,107,102,86,90,102,102,234,81,85,165,88,117,119,85,213,129,187,155,121,187,219,137,216,127,121,85,56,139,119,39,215,180,173,187,91,173,170,107,235,81,89,133,53,139,136,87,213,129,42,34,50,37,50,51,216,81,136,88,133,85,120,85,213,234,238,255,254,238,254,255,239,132,139,88,37,91,85,37,213,81,87,34,51,56,35,35,213,81,136,136,119,85,117,90,213,179,221,221,173,221,221,189,234,129,139,88,53,137,168,39,215,129,125,119,53,121,119,56,216,81,121,85,53,139,90,37,213,163,107,102,86,90,102,102,234,81,85,165,88,117,119,85,213,129,187,155,121,187,219,137,216,127,121,85,56,139,119,39,215,180,173,187,91,173,170,107,235,81,89,133,53,139,136,87,213,129,42,34,50,37,50,51,216,81,136,88,133,85,120,85,213,234,238,255,254,238,254,255,239,132,139,88,37,91,85,37,213,81,87,34,51,56,35,35,213,81,136,136,119,85,117,90,213,179,221,221,173,221,221,189,234,129,139,88,53,137,168,39,215,129,125,119,53,121,119,56,216,81,121,85,53,139,90,37,213,163,107,102,86,90,102,102,234,81,85,165,88,117,119,85,213,129,187,155,121,187,219,137,216,127,121,85,56,139,119,39,215,180,173,187,91,173,170,107,235,81,89,133,53,139,136,87,213,129,42,34,50,37,50,51,216,81,136,88,133,85,120,85,213,234,238,255,254,238,254,255,239,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,15,0,240,255,0,0,0,224,254,255,255,0,0,0,0,224,189,218,15,0,0,0,238,157,153,169,15,0,0,0,171,138,119,168,14,0,0,208,186,204,138,86,166,13,0,176,168,122,85,53,66,102,12,224,105,85,68,51,67,67,8,144,100,135,39,17,102,100,12,192,187,206,20,49,164,188,11,112,254,204,19,17,113,254,0,160,17,216,24,18,68,17,215,16,33,232,37,218,91,97,11,0,0,0,0,0,0,128,136,0,0,0,0,0,0,40,131,0,0,0,0,0,128,50,130,0,0,0,0,0,40,35,8,0,0,0,0,128,50,130,0,0,0,0,0,40,35,8,0,0,153,0,128,50,130,0,0,0,121,9,40,35,8,0,0,0,144,149,50,130,0,0,0,0,144,149,35,8,0,0,0,0,0,89,153,0,0,0,0,0,96,148,117,9,0,0,0,0,22,10,153,151,0,0,0,153,164,0,0,153,0,0,0,89,9,0,0,0,0,0,0,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,119,0,0,0,0,0,0,39,66,7,0,0,0,0,112,50,36,7,0,0,0,0,39,67,35,7,0,0,0,0,96,52,114,0,0,0,0,0,22,40,7,0,0,0,0,96,129,112,0,0,0,0,0,86,8,0,0,0,0,0,96,129,0,0,0,0,0,0,86,8,0,0,0,0,0,104,129,0,0,0,0,0,0,22,8,0,0,0,0,0,0,96,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,7,0,0,0,0,112,50,68,115,86,0,0,0,0,119,119,68,129,0,0,0,0,0,0,54,116,0,0,0,0,0,96,133,52,7,0,0,0,0,22,8,71,7,0,0,0,96,133,0,71,7,0,0,0,22,8,0,55,7,0,0,96,133,0,0,39,7,0,0,22,8,0,0,112,0,0,96,133,0,0,0,0,0,0,22,8,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,8,0,0,0,0,0,0,40,130,0,0,0,0,0,128,66,131,0,0,0,0,0,40,68,116,5,0,0,0,0,40,67,70,9,0,0,0,0,128,120,100,132,0,0,0,0,0,87,73,132,0,0,0,0,112,145,128,8,0,0,0,0,87,9,0,0,0,0,0,112,149,0,0,0,0,0,0,23,9,0,0,0,0,0,112,149,0,0,0,0,0,0,23,9,0,0,0,0,0,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,119,0,0,0,0,0,0,39,51,7,0,0,0,0,0,112,71,115,86,0,0,0,0,0,112,68,129,0,0,0,0,0,0,54,116,0,0,0,0,0,96,133,7,0,0,0,0,0,22,8,0,0,0,0,0,96,133,0,0,0,0,0,0,22,8,0,0,0,0,0,96,133,0,0,0,0,0,0,22,8,0,0,0,0,0,96,133,0,0,0,0,0,0,22,8,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,119,0,0,0,0,0,0,23,114,0,0,0,0,0,112,33,113,0,0,0,0,0,23,18,7,0,0,0,0,112,33,113,0,0,0,0,0,23,18,7,0,0,136,0,112,33,113,0,0,0,88,8,23,18,7,0,0,0,128,131,33,113,0,0,0,0,128,131,18,7,0,0,0,0,0,56,136,0,0,0,0,0,144,134,83,8,0,0,0,0,73,10,136,133,0,0,0,136,166,0,0,136,0,0,0,56,8,0,0,0,0,0,0,136,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,0,0,0,0,0,0,22,49,6,0,0,0,0,96,33,19,6,0,0,0,0,22,50,18,6,0,0,0,0,112,35,97,0,0,0,0,0,71,24,6,0,0,0,0,112,132,96,0,0,0,0,0,87,8,0,0,0,0,0,112,132,0,0,0,0,0,0,87,8,0,0,0,0,0,120,132,0,0,0,0,0,0,71,8,0,0,0,0,0,0,112,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,6,0,0,0,0,96,33,51,98,87,0,0,0,0,102,102,51,132,0,0,0,0,0,0,39,99,0,0,0,0,0,112,133,35,6,0,0,0,0,71,8,54,6,0,0,0,112,133,0,54,6,0,0,0,71,8,0,38,6,0,0,112,133,0,0,22,6,0,0,71,8,0,0,96,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,0,0,0,0,23,113,0,0,0,0,0,112,49,114,0,0,0,0,0,23,51,131,6,0,0,0,0,23,50,53,9,0,0,0,0,112,135,83,115,0,0,0,0,0,104,57,115,0,0,0,0,128,148,112,7,0,0,0,0,104,9,0,0,0,0,0,128,150,0,0,0,0,0,0,72,9,0,0,0,0,0,128,150,0,0,0,0,0,0,72,9,0,0,0,0,0,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,0,0,0,0,0,0,22,34,6,0,0,0,0,0,96,54,98,87,0,0,0,0,0,96,51,132,0,0,0,0,0,0,39,99,0,0,0,0,0,112,133,6,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,119,0,0,0,0,0,0,23,114,0,0,0,0,0,112,33,113,0,0,0,0,0,23,18,7,0,0,0,0,112,33,113,0,0,0,0,0,23,18,7,0,0,153,0,112,33,113,0,0,0,89,9,23,18,7,0,0,0,144,147,33,113,0,0,0,0,144,147,18,7,0,0,0,0,0,57,153,0,0,0,0,0,128,150,83,9,0,0,0,0,72,10,153,149,0,0,0,153,166,0,0,153,0,0,0,57,9,0,0,0,0,0,0,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,0,0,0,0,0,0,22,49,6,0,0,0,0,96,33,19,6,0,0,0,0,22,50,18,6,0,0,0,0,112,35,97,0,0,0,0,0,71,24,6,0,0,0,0,112,132,96,0,0,0,0,0,87,8,0,0,0,0,0,112,132,0,0,0,0,0,0,87,8,0,0,0,0,0,120,132,0,0,0,0,0,0,71,8,0,0,0,0,0,0,112,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,6,0,0,0,0,96,33,51,98,87,0,0,0,0,102,102,51,132,0,0,0,0,0,0,39,99,0,0,0,0,0,112,133,35,6,0,0,0,0,71,8,54,6,0,0,0,112,133,0,54,6,0,0,0,71,8,0,38,6,0,0,112,133,0,0,22,6,0,0,71,8,0,0,96,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,0,0,0,0,23,113,0,0,0,0,0,112,49,114,0,0,0,0,0,23,51,131,6,0,0,0,0,23,50,52,9,0,0,0,0,112,135,67,115,0,0,0,0,0,104,57,115,0,0,0,0,128,149,112,7,0,0,0,0,104,9,0,0,0,0,0,128,150,0,0,0,0,0,0,88,9,0,0,0,0,0,128,150,0,0,0,0,0,0,88,9,0,0,0,0,0,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,0,0,0,0,0,0,22,34,6,0,0,0,0,0,96,54,98,87,0,0,0,0,0,96,51,132,0,0,0,0,0,0,39,99,0,0,0,0,0,112,133,6,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,119,0,0,0,0,0,0,23,114,0,0,0,0,0,112,33,113,0,0,0,0,0,23,18,7,0,0,0,0,112,33,113,0,0,0,0,0,23,18,7,0,0,170,0,112,33,113,0,0,0,106,10,23,18,7,0,0,0,160,163,33,113,0,0,0,0,160,163,18,7,0,0,0,0,0,58,170,0,0,0,0,0,128,165,99,10,0,0,0,0,72,9,170,166,0,0,0,170,149,0,0,170,0,0,0,58,10,0,0,0,0,0,0,170,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,0,0,0,0,0,0,22,49,6,0,0,0,0,96,33,19,6,0,0,0,0,22,50,18,6,0,0,0,0,112,35,97,0,0,0,0,0,71,24,6,0,0,0,0,112,132,96,0,0,0,0,0,87,8,0,0,0,0,0,112,132,0,0,0,0,0,0,87,8,0,0,0,0,0,120,132,0,0,0,0,0,0,71,8,0,0,0,0,0,0,112,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,6,0,0,0,0,96,33,51,98,87,0,0,0,0,102,102,51,132,0,0,0,0,0,0,39,99,0,0,0,0,0,112,133,35,6,0,0,0,0,71,8,54,6,0,0,0,112,133,0,54,6,0,0,0,71,8,0,38,6,0,0,112,133,0,0,22,6,0,0,71,8,0,0,96,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,0,0,0,0,23,113,0,0,0,0,0,112,49,114,0,0,0,0,0,23,51,131,6,0,0,0,0,23,50,53,9,0,0,0,0,112,135,83,115,0,0,0,0,0,104,57,115,0,0,0,0,128,148,112,7,0,0,0,0,104,9,0,0,0,0,0,128,150,0,0,0,0,0,0,72,9,0,0,0,0,0,128,150,0,0,0,0,0,0,72,9,0,0,0,0,0,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,0,0,0,0,0,0,22,34,6,0,0,0,0,0,96,54,98,87,0,0,0,0,0,96,51,132,0,0,0,0,0,0,39,99,0,0,0,0,0,112,133,6,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,136,0,0,0,0,0,0,24,130,0,0,0,0,0,128,33,129,0,0,0,0,0,24,18,8,0,0,0,0,128,33,129,0,0,0,0,0,24,18,8,0,0,119,0,128,33,129,0,0,0,71,7,24,18,8,0,0,0,112,115,33,129,0,0,0,0,112,115,18,8,0,0,0,0,0,55,119,0,0,0,0,0,144,118,67,7,0,0,0,0,89,10,119,116,0,0,0,119,166,0,0,119,0,0,0,55,7,0,0,0,0,0,0,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,0,0,0,0,0,0,22,49,6,0,0,0,0,96,33,19,6,0,0,0,0,22,50,18,6,0,0,0,0,112,35,97,0,0,0,0,0,71,24,6,0,0,0,0,112,132,96,0,0,0,0,0,87,8,0,0,0,0,0,112,132,0,0,0,0,0,0,87,8,0,0,0,0,0,120,132,0,0,0,0,0,0,71,8,0,0,0,0,0,0,112,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,6,0,0,0,0,96,33,51,98,87,0,0,0,0,102,102,51,132,0,0,0,0,0,0,39,99,0,0,0,0,0,112,133,35,6,0,0,0,0,71,8,54,6,0,0,0,112,133,0,54,6,0,0,0,71,8,0,38,6,0,0,112,133,0,0,22,6,0,0,71,8,0,0,96,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,0,0,0,0,23,113,0,0,0,0,0,112,49,114,0,0,0,0,0,23,51,131,6,0,0,0,0,23,50,52,9,0,0,0,0,112,135,67,115,0,0,0,0,0,104,57,115,0,0,0,0,128,149,112,7,0,0,0,0,104,9,0,0,0,0,0,128,150,0,0,0,0,0,0,88,9,0,0,0,0,0,128,150,0,0,0,0,0,0,88,9,0,0,0,0,0,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,0,0,0,0,0,0,22,34,6,0,0,0,0,0,96,54,98,87,0,0,0,0,0,96,51,132,0,0,0,0,0,0,39,99,0,0,0,0,0,112,133,6,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,112,133,0,0,0,0,0,0,71,8,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,11,0,0,0,0,0,160,57,18,0,0,0,0,0,154,35,1,1,0,0,0,160,57,18,16,178,0,0,0,122,43,1,33,179,0,0,0,122,11,16,50,185,0,0,160,183,0,32,147,11,0,0,160,183,0,186,185,0,0,0,80,8,170,119,11,0,0,0,3,96,119,187,0,0,0,0,4,128,187,0,0,0,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,0,0,0,144,34,9,0,0,0,0,0,53,83,83,0,0,0,0,0,37,9,89,0,0,0,0,0,37,9,0,0,0,0,0,0,37,9,0,0,0,0,0,0,37,9,89,0,112,0,0,0,53,83,83,0,23,7,0,0,144,34,9,112,65,10,0,0,0,85,0,23,100,167,0,0,0,0,112,65,102,167,0,0,0,0,112,100,102,135,10,0,0,0,112,119,119,136,10,0,0,0,0,122,168,170,0,0,0,0,0,160,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,6,0,0,0,0,102,54,68,115,0,0,0,102,67,115,119,7,0,0,96,66,119,7,80,0,0,0,38,33,0,0,5,0,0,96,18,2,0,80,0,0,0,96,36,0,0,5,0,0,0,54,7,0,80,0,0,0,0,70,7,0,5,0,0,0,0,54,7,80,0,0,0,0,96,115,0,5,0,0,0,0,96,116,80,0,0,0,0,0,96,116,5,0,0,0,0,0,96,115,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,7,0,0,0,0,0,53,83,7,0,0,0,0,0,103,115,0,0,0,0,0,0,150,117,0,0,0,0,0,96,9,7,0,0,0,0,0,150,0,0,0,0,0,0,96,9,0,0,0,0,0,0,150,0,0,0,0,0,0,96,9,0,0,0,0,0,32,148,0,0,0,0,0,0,66,130,0,0,0,0,0,0,40,8,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,69,84,5,0,0,0,0,21,36,66,99,0,0,0,80,17,36,66,51,6,0,0,80,17,36,66,51,6,0,0,80,17,69,100,51,6,0,0,80,81,119,119,54,6,0,0,80,81,119,119,54,6,0,0,80,97,119,119,54,6,0,0,0,101,0,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,68,0,0,0,68,33,4,64,17,84,0,64,18,33,5,64,17,33,5,64,17,17,65,20,17,33,5,64,18,17,33,17,17,34,5,0,20,17,33,17,33,82,0,0,64,17,49,18,34,5,0,0,64,17,33,17,34,5,0,0,80,17,49,18,34,5,0,0,80,17,33,33,34,5,0,0,80,33,50,34,34,5,0,0,80,34,50,34,34,5,0,0,0,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,102,102,0,0,0,96,34,34,34,66,8,0,0,96,34,34,34,66,8,0,0,96,34,68,68,66,8,0,0,96,66,132,72,66,8,0,0,96,85,8,96,85,8,0,0,80,49,7,80,49,7,0,0,80,51,7,80,51,7,0,0,96,85,8,96,85,8,0,0,96,66,8,96,66,8,0,0,96,66,8,96,66,8,0,0,96,68,8,96,68,8,0,0,96,136,8,96,136,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,6,96,102,0,0,0,96,66,8,96,66,8,0,0,96,66,8,96,66,8,0,0,96,66,8,96,66,8,0,0,96,66,8,96,66,8,0,0,96,66,8,96,66,8,0,0,37,82,7,80,37,82,0,80,81,53,7,80,83,53,7,80,51,115,0,0,55,51,7,80,119,7,0,0,112,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,102,6,0,0,0,0,70,66,66,115,0,0,0,96,20,36,36,53,7,0,0,96,66,66,82,83,8,0,0,96,36,102,134,53,7,0,0,96,98,169,169,88,8,0,0,96,100,154,154,55,7,0,0,96,114,169,169,88,8,0,0,0,134,0,0,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,0,0,102,0,0,0,102,52,6,96,36,134,0,96,66,82,8,96,66,82,8,96,36,36,100,38,36,52,7,96,67,65,66,66,66,83,8,0,38,36,36,36,52,133,0,0,88,66,66,66,82,115,0,0,96,36,36,36,52,7,0,0,112,66,66,66,83,8,0,0,128,37,36,52,53,7,0,0,112,83,83,83,83,8,0,0,0,55,53,53,133,0,0,0,0,112,120,120,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,102,102,0,0,0,96,36,36,36,52,7,0,0,96,66,65,66,82,8,0,0,96,20,53,53,52,7,0,0,96,82,115,88,82,8,0,0,96,52,7,96,52,7,0,0,96,82,8,96,82,8,0,0,96,52,7,96,52,7,0,0,96,82,8,96,82,8,0,0,96,52,7,96,52,7,0,0,96,82,8,96,82,8,0,0,96,53,7,96,53,7,0,0,96,120,8,96,120,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,6,96,102,0,0,0,96,82,8,96,82,8,0,0,96,52,7,96,52,7,0,0,96,82,8,96,82,8,0,0,96,52,7,96,52,7,0,0,96,82,8,96,82,8,0,0,22,52,7,96,36,100,0,96,66,83,8,96,67,82,8,96,53,133,0,0,55,53,7,96,120,8,0,0,112,120,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,4,0,0,0,0,36,34,34,83,0,0,0,64,18,33,34,51,5,0,0,64,18,34,50,51,5,0,0,64,34,68,84,51,5,0,0,64,66,102,102,53,5,0,0,64,66,102,102,53,5,0,0,64,82,102,102,53,5,0,0,0,84,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,68,0,0,0,68,50,4,64,34,84,0,64,34,50,5,64,34,50,5,64,34,34,66,36,34,50,5,64,35,17,34,34,34,51,5,0,36,33,34,34,50,83,0,0,53,34,34,34,50,83,0,0,64,34,34,34,50,5,0,0,80,34,34,34,51,5,0,0,80,35,34,50,51,5,0,0,80,51,51,51,51,5,0,0,0,53,51,51,83,0,0,0,0,80,85,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,34,34,34,50,5,0,0,64,18,33,34,50,5,0,0,64,18,51,51,50,5,0,0,64,50,83,53,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,51,5,64,51,5,0,0,64,85,5,64,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,4,64,68,0,0,0,64,50,5,64,50,5,0,0,64,49,5,64,49,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,20,50,5,64,34,66,0,64,34,51,5,64,35,50,5,64,51,83,0,0,53,51,5,64,85,5,0,0,80,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,4,0,0,0,0,36,34,34,83,0,0,0,64,18,33,34,51,5,0,0,64,18,34,50,51,5,0,0,64,34,68,84,51,5,0,0,64,66,102,102,53,5,0,0,64,66,102,102,53,5,0,0,64,82,102,102,53,5,0,0,0,84,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,68,0,0,0,68,50,4,64,34,84,0,64,34,50,5,64,34,50,5,64,34,34,66,36,34,50,5,64,35,17,34,34,34,51,5,0,36,33,34,34,50,83,0,0,53,34,34,34,50,83,0,0,64,34,34,34,50,5,0,0,80,34,34,34,51,5,0,0,80,35,34,50,51,5,0,0,80,51,51,51,51,5,0,0,0,53,51,51,83,0,0,0,0,80,85,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,34,34,34,50,5,0,0,64,18,33,34,50,5,0,0,64,18,51,51,50,5,0,0,64,50,83,53,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,51,5,64,51,5,0,0,64,85,5,64,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,4,64,68,0,0,0,64,50,5,64,50,5,0,0,64,49,5,64,49,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,20,50,5,64,34,66,0,64,34,51,5,64,35,50,5,64,51,83,0,0,53,51,5,64,85,5,0,0,80,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,4,0,0,0,0,36,34,34,83,0,0,0,64,18,33,34,51,5,0,0,64,18,34,50,51,5,0,0,64,34,68,84,51,5,0,0,64,66,102,102,53,5,0,0,64,66,102,102,53,5,0,0,64,82,102,102,53,5,0,0,0,84,0,0,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,68,0,0,0,68,50,4,64,34,84,0,64,34,50,5,64,34,50,5,64,34,34,66,36,34,50,5,64,35,17,34,34,34,51,5,0,36,33,34,34,50,83,0,0,53,34,34,34,50,83,0,0,64,34,34,34,50,5,0,0,80,34,34,34,51,5,0,0,80,35,34,50,51,5,0,0,80,51,51,51,51,5,0,0,0,53,51,51,83,0,0,0,0,80,85,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,34,34,34,50,5,0,0,64,18,33,34,50,5,0,0,64,18,51,51,50,5,0,0,64,50,83,53,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,51,5,64,51,5,0,0,64,85,5,64,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,4,64,68,0,0,0,64,50,5,64,50,5,0,0,64,49,5,64,49,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,64,50,5,64,50,5,0,0,20,50,5,64,34,66,0,64,34,51,5,64,35,50,5,64,51,83,0,0,53,51,5,64,85,5,0,0,80,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,4,0,0,0,0,0,0,19,4,0,0,0,0,0,48,65,0,0,0,0,0,0,35,4,0,0,0,0,0,48,65,0,0,0,0,0,0,35,4,0,0,0,0,0,48,65,0,0,0,0,0,0,35,4,0,0,0,0,0,48,65,0,0,0,0,0,0,35,4,0,0,0,0,0,48,65,0,0,0,0,0,0,19,4,0,0,0,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,0,0,0,0,0,0,143,103,15,0,0,0,0,240,56,113,247,0,0,0,0,240,54,50,119,15,0,0,0,240,39,50,82,247,0,0,0,127,49,68,131,167,15,0,0,143,35,167,183,202,15,0,0,127,85,119,167,170,250,0,0,127,119,119,169,170,249,0,0,175,139,170,218,206,254,0,0,240,170,222,205,203,15,0,0,0,223,141,255,255,0,0,0,0,240,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,0,0,0,0,0,0,159,120,15,0,0,0,0,240,89,131,248,0,0,0,0,240,55,20,136,15,0,0,0,240,24,82,116,248,0,0,0,143,20,50,149,173,15,0,240,146,69,166,182,221,15,0,240,151,50,168,184,218,15,0,143,119,72,216,42,250,15,0,143,129,130,218,170,250,0,0,175,155,136,218,206,254,0,0,240,170,221,170,203,15,0,0,0,223,157,255,255,0,0,0,0,240,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,0,0,0,0,0,160,17,17,10,0,0,0,0,26,51,35,166,0,0,0,160,33,51,81,165,0,0,0,160,49,33,34,101,10,0,0,26,19,68,68,88,10,0,0,26,35,68,68,88,166,0,0,26,114,68,68,152,169,0,0,26,85,136,136,119,168,0,0,160,149,119,119,121,10,0,0,160,150,119,119,137,10,0,0,0,138,119,119,168,0,0,0,0,160,170,170,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,0,0,144,153,51,9,0,0,0,153,57,33,34,147,0,144,153,19,33,34,34,50,9,73,17,33,34,34,130,136,168,25,36,34,34,136,72,68,164,25,66,130,136,68,68,116,167,41,50,70,68,68,119,119,167,89,53,70,68,119,135,170,10,144,85,118,119,167,170,0,0,0,89,118,170,10,0,0,0,0,144,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,0,0,0,0,0,160,170,51,10,0,0,0,170,58,33,34,163,0,160,170,19,33,34,34,50,10,74,17,33,34,34,146,153,185,26,36,34,34,153,73,68,180,26,66,146,153,68,68,116,183,42,50,70,68,68,119,119,184,90,53,70,68,119,135,187,11,160,85,118,119,183,187,0,0,0,90,134,187,11,0,0,0,0,160,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,6,0,0,0,0,0,96,19,130,0,0,0,0,0,96,33,84,8,0,0,0,0,96,33,116,8,0,0,0,0,0,70,133,0,0,0,0,0,0,86,135,0,0,0,0,0,0,86,135,0,0,0,0,0,0,96,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,221,0,0,0,0,0,0,29,34,13,0,0,0,0,208,50,102,216,0,0,0,0,45,35,118,156,14,0,0,208,49,66,134,154,235,0,0,208,82,20,66,153,234,0,0,208,82,21,83,136,235,0,0,208,82,37,83,152,234,0,0,208,84,53,69,152,235,0,0,208,100,69,68,202,235,0,0,0,141,134,168,204,14,0,0,0,208,136,200,236,0,0,0,0,0,158,169,14,0,0,0,0,0,224,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,38,98,0,0,0,0,0,96,33,67,6,0,0,0,0,38,34,66,100,0,0,0,96,34,34,66,21,6,0,0,22,34,35,65,68,100,0,0,38,35,34,66,84,100,0,0,70,18,34,66,68,100,0,0,96,68,34,69,20,6,0,0,0,102,68,68,102,0,0,0,0,0,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,0,0,0,0,0,0,80,65,7,0,0,0,0,0,21,66,7,0,0,0,0,80,33,66,118,0,0,0,0,21,34,67,118,0,0,0,80,33,50,68,102,7,0,0,21,34,67,68,100,7,0,0,37,50,68,68,100,118,0,0,37,67,68,68,102,118,0,0,87,85,85,100,102,7,0,0,112,85,85,69,118,0,0,0,0,87,85,85,7,0,0,0,0,112,119,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,16,3,0,0,0,0,0,0,49,1,0,0,0,0,0,16,19,2,0,0,0,0,48,19,19,3,0,0,0,0,17,49,17,5,0,0,0,48,19,19,83,0,0,0,0,17,49,17,3,0,0,0,0,0,20,19,5,0,0,0,0,64,22,83,0,0,0,0,64,100,16,5,0,0,0,0,96,6,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,16,19,0,0,0,0,0,0,32,48,0,0,0,0,0,0,48,33,0,0,0,0,1,0,0,51,1,0,0,32,3,0,0,0,35,0,0,49,0,18,18,0,48,1,0,2,16,51,51,18,0,2,0,19,48,2,0,51,2,1,0,48,18,51,0,16,3,2,0,0,51,18,18,50,16,3,0,0,0,51,51,3,50,0,0,0,0,0,19,18,3,0,0,0,0,0,48,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,253,0,0,0,0,0,0,32,218,0,0,0,0,0,0,192,185,14,0,0,0,0,0,140,238,0,0,0,0,0,192,228,0,0,0,0,0,0,108,14,0,0,0,0,0,192,225,0,0,0,0,0,0,76,14,0,0,0,0,0,192,230,0,0,0,0,0,0,92,14,0,0,0,0,0,202,226,0,0,0,0,0,208,83,14,0,0,0,0,0,240,189,14,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,0,0,0,0,39,114,0,0,0,0,0,112,33,84,7,0,0,0,0,39,34,82,117,0,0,0,112,34,34,82,86,7,0,0,39,34,36,81,85,117,0,0,39,36,34,82,101,117,0,0,87,18,34,82,85,117,0,0,112,85,34,86,53,7,0,0,0,119,85,85,119,0,0,0,0,0,119,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,51,48,18,33,3,51,0,0,35,19,17,33,49,66,0,0,48,17,18,17,33,4,0,0,48,18,18,33,33,4,0,0,0,19,18,17,66,0,0,0,0,35,17,17,66,0,0,0,0,19,33,17,65,0,0,0,0,19,33,17,65,0,0,0,48,34,33,33,34,4,0,0,48,17,17,17,33,4,0,0,48,33,34,34,33,4,0,0,35,66,36,66,36,66,0,0,67,4,64,4,64,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,33,10,10,0,0,0,160,10,66,166,0,160,0,0,0,49,42,97,162,10,0,0,0,163,35,74,171,0,0,0,0,49,20,162,100,161,0,0,0,49,65,40,23,2,0,0,16,19,89,133,34,170,0,0,16,65,133,92,213,13,0,0,220,87,88,213,13,0,0,16,205,95,213,93,10,0,16,52,242,222,13,208,173,0,48,35,88,13,0,0,0,0,208,130,219,0,0,0,0,0,32,221,213,0,0,0,0,0,208,0,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,48,0,0,0,0,32,0,0,0,3,0,0,0,96,0,0,0,34,0,0,0,3,0,82,0,102,0,0,0,3,1,102,0,0,0,0,32,5,6,0,0,0,0,0,96,6,0,3,16,4,0,0,0,0,32,5,96,6,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,116,0,0,0,0,0,115,66,7,0,0,0,0,16,83,98,5,36,0,0,0,16,37,70,71,66,7,0,0,0,50,100,36,116,0,0,0,16,67,86,114,7,0,0,0,66,101,36,103,85,0,0,35,67,70,66,85,119,0,0,55,116,20,116,119,0,0,0,64,71,82,7,0,0,0,0,112,39,116,0,0,0,0,0,0,64,7,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,5,0,0,0,0,0,0,21,83,0,0,0,0,0,80,17,51,5,0,0,0,0,37,33,50,83,0,0,0,80,17,18,49,52,5,0,0,21,34,17,34,67,83,0,0,21,18,33,17,67,83,0,0,53,17,34,65,51,84,0,0,80,51,17,51,68,5,0,0,0,85,51,52,85,0,0,0,0,0,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,16,17,1,0,0,0,0,0,17,34,17,0,0,0,0,17,18,34,18,1,0,0,17,34,18,34,34,17,0,17,34,34,34,33,34,34,2,35,34,18,34,34,33,50,3,48,34,34,33,34,17,3,0,0,35,34,33,34,49,0,0,0,48,17,34,50,3,0,0,0,0,35,50,3,0,0,0,0,0,48,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,8,0,0,0,0,0,136,85,133,0,0,0,0,136,85,87,85,8,0,0,136,85,85,119,87,133,0,136,85,117,85,117,119,85,8,104,85,85,87,85,85,85,151,104,86,85,85,85,85,119,66,104,98,85,85,85,119,35,67,105,33,86,85,119,50,50,151,144,22,98,119,50,35,119,153,0,105,33,34,35,119,153,0,0,144,22,51,119,153,0,0,0,0,105,119,153,0,0,0,0,0,144,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,5,0,0,0,0,0,80,21,83,5,0,0,0,0,37,17,49,83,0,0,0,80,33,33,18,52,5,0,0,80,17,17,17,52,5,0,0,21,34,17,34,67,83,0,0,53,17,33,17,67,83,0,0,53,17,34,49,51,84,0,0,80,52,17,51,68,5,0,0,0,85,51,52,85,0,0,0,0,0,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,0,0,0,0,0,112,119,18,7,0,0,0,119,39,17,17,113,0,112,119,18,17,17,17,17,7,55,17,17,17,17,97,102,134,39,19,17,17,102,70,51,131,39,50,97,102,52,51,51,131,39,34,68,51,51,51,51,133,55,34,52,51,51,99,136,8,112,35,52,51,133,136,0,0,0,55,84,136,8,0,0,0,0,112,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,51,3,0,0,0,48,35,17,17,50,3,0,0,52,34,17,17,33,66,0,0,68,36,18,17,66,68,0,0,20,65,68,68,52,67,0,0,64,17,33,34,50,4,0,0,0,68,34,34,68,0,0,0,0,0,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,187,0,0,0,0,0,187,21,81,203,0,0,0,176,21,17,51,135,12,0,0,176,17,17,52,119,12,0,0,91,49,20,68,84,201,0,0,27,51,67,17,116,201,0,0,27,68,68,34,114,202,0,0,91,17,49,51,118,201,0,0,176,102,51,99,167,12,0,0,192,105,119,119,170,12,0,0,0,204,170,170,204,0,0,0,0,0,204,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,5,0,0,0,0,0,64,20,66,5,0,0,0,0,20,17,33,82,0,0,0,0,20,17,17,82,0,0,0,64,17,17,17,34,5,0,0,64,17,17,17,34,5,0,0,20,17,17,17,34,82,0,0,20,17,17,17,34,82,0,0,36,17,17,17,34,82,0,0,64,17,17,33,34,5,0,0,64,35,17,34,34,5,0,0,0,85,34,34,85,0,0,0,0,0,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,204,0,0,0,0,0,204,38,98,220,0,0,0,192,38,34,68,152,13,0,0,192,18,33,69,136,13,0,0,108,18,33,85,101,218,0,0,44,68,84,34,133,218,0,0,44,85,85,51,131,219,0,0,108,34,66,68,135,218,0,0,192,119,68,116,184,13,0,0,208,122,136,136,187,13,0,0,0,221,187,187,221,0,0,0,0,0,221,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,38,98,0,0,0,0,0,96,33,67,6,0,0,0,0,38,34,66,100,0,0,0,96,34,34,66,21,6,0,0,22,34,35,65,68,100,0,0,38,35,34,66,84,100,0,0,70,18,34,66,68,100,0,0,96,68,34,69,20,6,0,0,0,102,68,68,102,0,0,0,0,0,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,187,170,10,0,0,0,176,139,102,102,164,10,0,0,155,137,102,102,68,180,0,0,186,137,104,102,68,187,0,0,42,187,104,102,187,183,0,0,42,34,187,187,85,183,0,0,42,18,50,51,85,183,0,0,160,18,50,51,117,11,0,0,160,34,33,83,117,11,0,0,160,34,33,83,117,11,0,0,0,42,34,83,181,0,0,0,0,90,34,85,181,0,0,0,0,176,187,187,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,238,14,0,0,0,240,175,119,119,229,14,0,0,223,205,187,187,89,245,0,0,254,204,188,187,153,255,0,0,46,255,188,187,255,246,0,0,46,34,255,255,153,246,0,0,46,18,56,51,73,246,0,0,224,18,50,51,105,15,0,0,224,34,33,67,100,15,0,0,224,34,33,67,105,15,0,0,0,46,34,67,244,0,0,0,0,78,34,68,244,0,0,0,0,240,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,238,14,0,0,0,240,191,107,182,231,14,0,0,191,219,73,148,125,247,0,0,254,73,148,68,217,255,0,0,30,255,212,153,255,245,0,0,46,17,255,255,212,252,0,0,46,18,45,34,137,252,0,0,224,18,82,85,205,15,0,0,224,34,33,133,200,15,0,0,224,34,33,133,205,15,0,0,0,46,34,133,248,0,0,0,0,142,34,136,248,0,0,0,0,240,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,136,119,7,0,0,0,128,56,51,51,114,7,0,0,56,18,17,17,33,130,0,0,135,17,17,17,17,136,0,0,39,136,17,17,136,134,0,0,39,34,136,136,17,134,0,0,39,18,65,68,81,134,0,0,112,18,66,68,97,8,0,0,112,34,33,84,101,8,0,0,112,34,33,84,97,8,0,0,0,39,34,84,133,0,0,0,0,87,34,85,133,0,0,0,0,128,136,136,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,34,34,34,34,2,0,0,48,2,0,2,0,2,0,0,64,2,0,2,0,2,0,0,48,34,34,34,34,2,0,0,48,2,0,2,0,2,0,0,48,2,0,2,0,2,0,0,48,34,34,34,68,2,0,0,48,18,17,18,17,2,0,0,48,18,17,18,17,2,0,0,48,34,34,34,34,2,0,0,64,18,17,18,17,2,0,0,48,18,17,18,17,2,0,0,48,34,34,34,34,2,0,0,48,51,51,51,51,3,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,0,0,0,160,42,17,4,0,0,0,160,122,167,18,65,0,0,160,138,136,119,42,17,4,0,138,120,136,120,167,18,4,160,120,135,136,136,152,74,6,160,120,136,136,152,170,90,6,160,138,136,152,170,170,86,6,96,170,152,170,170,102,96,6,80,166,170,170,102,0,0,0,0,96,170,102,0,0,0,0,0,0,99,0,0,0,0,0,0,0,101,0,0,0,0,0,0,0,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,85,5,0,0,0,80,69,34,34,82,5,0,0,69,100,102,102,38,81,0,80,100,102,102,102,102,38,8,80,102,102,102,99,102,102,8,80,102,102,54,55,102,102,8,80,105,102,102,103,102,150,8,80,146,105,102,103,150,73,8,80,18,146,153,153,73,68,8,0,24,34,34,34,68,132,0,0,128,40,34,34,132,8,0,0,0,128,136,136,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,5,0,0,0,0,0,0,101,8,0,0,0,0,0,80,54,8,0,0,0,0,0,101,131,5,0,0,0,0,80,70,8,5,0,0,0,0,101,131,0,5,0,0,0,80,70,8,0,5,0,0,0,101,131,0,0,5,0,0,80,70,8,0,0,5,0,0,96,131,0,0,80,0,0,0,70,34,7,0,80,0,0,96,131,34,7,0,5,0,0,54,8,119,0,1,1,0,0,136,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,153,153,0,0,0,0,0,153,34,34,153,0,0,0,144,34,170,170,34,9,0,0,41,170,74,164,170,145,0,0,41,170,51,51,168,178,0,144,162,138,51,51,136,26,11,144,162,138,56,131,136,26,11,144,162,138,24,162,136,26,11,144,18,204,44,194,204,33,11,176,34,17,33,18,17,34,11,176,38,34,34,34,34,98,11,176,98,34,34,34,34,118,11,0,43,102,34,34,102,183,0,0,176,81,102,102,117,11,0,0,0,187,85,85,187,0,0,0,0,0,187,187,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,2,0,0,0,0,0,0,40,203,0,0,0,0,0,192,155,203,0,0,0,0,204,108,164,203,0,0,0,204,119,52,185,202,0,0,192,85,51,179,186,203,0,0,192,170,116,170,187,12,0,0,0,204,171,187,204,0,0,0,0,0,204,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,5,0,0,0,0,80,85,21,85,80,0,0,0,21,83,17,83,21,5,0,0,21,84,21,81,17,84,0,0,80,21,82,53,21,84,0,0,21,34,83,33,67,83,0,0,21,18,83,33,21,84,0,0,53,49,85,67,21,85,0,0,80,85,17,53,84,5,0,0,0,85,67,53,85,0,0,0,0,80,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,21,85,0,0,0,0,80,85,81,37,5,0,0,0,21,21,81,50,5,0,0,80,81,49,53,83,0,0,0,21,53,85,81,84,0,0,80,81,82,49,52,21,5,0,21,50,21,35,69,81,0,0,53,85,65,83,49,83,0,0,85,49,50,69,49,84,0,80,17,67,81,19,68,5,0,0,85,85,20,49,85,0,0,0,0,0,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,98,0,0,0,0,16,100,32,99,0,0,0,81,38,101,96,6,0,0,0,82,86,6,0,0,0,0,0,100,5,0,16,98,0,0,1,6,97,33,54,98,0,16,100,0,33,54,86,99,0,0,6,49,54,102,0,6,0,0,0,81,96,49,21,100,0,0,0,102,0,82,38,100,0,0,0,0,0,102,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,89,151,0,0,0,0,0,41,84,65,9,0,0,0,144,50,69,148,148,0,0,0,25,119,67,121,148,0,0,0,41,23,66,71,151,0,0,0,57,35,151,116,153,0,0,144,50,33,137,119,9,0,0,73,83,150,116,148,9,0,0,153,34,152,119,152,0,0,0,41,153,68,135,9,0,0,0,137,119,151,153,0,0,0,0,144,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,85,17,17,85,0,0,0,80,17,18,33,50,5,0,0,21,34,17,34,66,83,0,0,21,18,33,17,66,83,0,0,53,17,34,65,51,84,0,0,80,51,17,51,68,5,0,0,0,85,52,52,85,0,0,0,0,0,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,0,0,0,0,39,116,112,0,0,0,0,112,97,70,71,7,0,0,0,55,50,33,100,114,0,0,112,34,86,69,69,117,0,0,39,99,33,99,50,115,0,0,23,38,50,98,65,117,0,0,103,38,67,82,100,117,0,0,112,68,34,70,85,7,0,0,0,119,68,69,119,0,0,0,0,0,119,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,96,102,22,100,0,0,0,0,22,82,34,6,0,0,0,0,54,37,50,98,0,0,0,96,50,18,83,82,102,6,0,0,38,50,37,53,84,101,0,0,38,83,50,33,20,100,0,0,70,33,51,50,67,101,0,0,96,68,34,65,85,6,0,0,0,102,69,85,102,0,0,0,0,0,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,0,0,0,0,0,102,33,50,102,0,0,0,96,17,18,49,69,6,0,0,22,34,17,34,83,99,0,0,22,18,33,17,83,99,0,0,54,17,34,81,51,101,0,0,96,51,17,51,85,6,0,0,0,102,51,53,102,0,0,0,0,0,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,85,33,50,85,0,0,0,80,17,18,49,52,5,0,0,21,34,17,34,67,83,0,0,21,18,33,17,67,83,0,0,53,17,34,65,51,84,0,0,80,51,17,51,68,5,0,0,0,85,51,52,85,0,0,0,0,0,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,85,33,50,85,0,0,0,80,17,18,49,52,5,0,0,21,34,17,34,67,83,0,0,21,18,33,17,67,83,0,0,53,17,34,65,51,84,0,0,80,51,17,51,68,5,0,0,0,85,51,52,85,0,0,0,0,0,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,24,8,0,0,0,0,128,136,81,8,0,0,0,0,136,34,87,8,0,0,0,128,18,116,114,8,0,0,0,136,70,70,100,133,0,0,128,50,101,65,38,8,0,0,24,99,39,99,82,134,0,0,72,22,55,38,100,130,0,0,72,38,103,98,116,133,0,0,128,100,34,71,86,8,0,0,0,136,116,69,136,0,0,0,0,0,136,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,96,6,0,0,0,0,22,82,38,100,0,0,0,96,82,84,18,66,6,0,0,22,66,37,51,68,100,0,0,38,84,50,33,84,101,0,0,70,37,51,85,68,101,0,0,96,68,33,68,85,6,0,0,0,102,68,85,102,0,0,0,0,0,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,85,33,17,85,0,0,0,80,17,18,49,52,5,0,0,21,17,17,34,66,84,0,0,21,18,33,17,66,83,0,0,53,17,34,65,51,84,0,0,80,51,49,51,68,5,0,0,0,85,68,52,85,0,0,0,0,0,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,6,0,0,0,0,0,96,17,99,0,0,0,0,0,96,33,83,102,102,0,0,0,86,34,85,35,51,6,0,96,17,85,53,52,98,0,0,22,34,17,34,67,99,0,0,22,82,21,17,67,99,0,0,54,82,33,65,35,100,0,0,96,83,33,83,37,6,0,0,0,22,82,51,101,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,96,97,6,0,96,0,0,0,96,33,100,6,54,6,0,0,22,34,22,99,22,6,0,0,70,85,81,51,37,99,0,0,96,35,21,66,53,101,0,0,22,18,53,84,86,54,6,0,22,82,81,69,21,51,6,0,51,21,51,84,49,38,6,0,22,85,83,69,99,100,0,96,99,51,21,83,70,98,0,0,6,102,83,37,102,98,0,0,0,96,34,100,96,99,0,0,0,0,102,6,0,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,3,0,0,0,0,0,0,185,79,0,0,0,0,0,153,70,180,221,0,0,0,144,86,85,91,187,13,0,0,144,21,33,85,181,13,0,0,105,17,82,85,117,219,0,0,89,18,85,85,118,235,0,0,89,85,85,85,118,235,0,0,91,85,85,101,167,235,0,0,192,87,101,118,186,14,0,0,192,187,119,167,187,14,0,0,0,190,139,184,235,0,0,0,0,224,14,224,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,119,0,0,0,0,0,0,0,7,0,0,0,0,0,0,119,118,0,0,0,0,0,119,66,52,119,0,0,0,112,34,34,35,51,7,0,0,112,18,33,34,50,7,0,0,39,17,34,34,50,115,0,0,39,17,34,34,50,115,0,0,39,34,34,34,50,115,0,0,39,34,34,34,51,115,0,0,112,35,34,50,51,7,0,0,112,51,51,51,51,7,0,0,0,55,83,53,115,0,0,0,0,112,7,112,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,4,0,0,0,0,0,64,20,49,5,0,0,0,0,20,34,34,133,0,0,0,64,81,37,34,83,9,0,0,20,18,81,34,83,9,0,64,33,34,18,50,133,9,0,20,85,34,34,83,149,0,0,36,17,37,50,133,9,0,64,33,34,33,85,149,0,0,64,33,34,82,85,9,0,0,64,33,34,83,152,0,0,0,0,53,83,85,9,0,0,0,0,103,85,152,0,0,0,0,0,112,153,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,119,8,0,0,0,0,0,103,70,166,0,0,0,0,112,67,53,22,10,0,0,0,103,70,85,20,10,0,0,120,102,100,86,33,11,0,128,83,86,86,54,161,11,0,112,85,67,85,20,162,0,0,87,101,22,52,33,186,0,0,56,69,19,17,162,11,0,0,160,25,17,162,186,0,0,0,160,170,170,186,0,0,0,0,0,176,187,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,187,13,0,0,0,0,0,141,183,250,0,0,0,0,208,123,130,148,15,0,0,0,157,83,21,162,15,0,0,189,118,49,68,133,15,0,208,105,49,38,97,200,15,0,176,51,22,85,34,249,0,0,155,81,85,49,150,252,0,0,155,18,114,40,213,15,0,0,192,102,65,200,254,0,0,0,224,189,187,253,0,0,0,0,0,240,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,170,10,0,0,0,0,0,138,56,232,0,0,0,0,160,49,22,104,14,0,0,0,138,56,102,99,14,0,0,170,136,131,104,118,14,0,160,97,104,104,24,198,14,0,160,102,49,102,67,219,14,0,106,134,24,83,183,237,0,0,26,54,65,71,203,14,0,0,208,44,116,201,239,0,0,0,224,205,204,237,14,0,0,0,0,224,238,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,170,10,0,0,0,0,0,186,23,227,0,0,0,0,160,71,152,51,13,0,0,0,122,28,130,54,13,0,0,170,51,181,22,53,14,0,160,133,43,83,155,212,14,0,160,21,121,20,145,219,0,0,106,152,116,151,52,237,0,0,58,98,75,148,219,14,0,0,208,60,186,211,253,0,0,0,224,221,221,237,14,0,0,0,0,224,238,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,221,13,0,0,0,0,0,173,54,215,13,0,0,0,0,109,51,102,216,0,0,0,208,55,131,104,85,237,0,0,208,52,104,22,81,216,15,0,208,93,38,17,85,216,15,0,77,212,38,49,85,218,15,0,77,147,134,170,165,217,15,0,61,147,168,35,170,253,0,0,109,137,58,50,217,253,0,0,180,168,41,131,253,15,0,0,241,200,85,216,15,0,0,0,0,79,221,255,0,0,0,0,0,241,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,170,10,0,0,0,0,0,154,86,168,10,0,0,0,0,105,133,136,169,0,0,0,160,104,104,37,82,170,0,0,160,102,88,34,82,166,12,0,160,138,37,34,85,166,13,0,122,149,38,82,85,166,13,0,122,167,150,170,102,169,12,0,122,169,42,82,154,250,0,0,122,154,74,98,169,202,0,0,163,169,73,150,250,13,0,0,193,186,102,169,14,0,0,0,0,60,170,220,0,0,0,0,0,193,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,9,0,0,0,0,0,0,54,149,0,0,0,0,0,0,38,167,0,0,0,0,0,96,19,167,0,0,0,0,0,96,18,180,0,0,0,0,0,38,23,184,0,0,0,0,96,65,37,184,0,0,0,96,38,35,53,9,0,0,0,54,116,20,50,10,0,0,96,67,87,71,129,11,0,0,22,67,85,85,146,11,0,0,22,66,85,71,168,0,0,0,137,35,17,130,187,0,0,0,154,136,136,185,11,0,0,0,160,170,187,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,14,0,0,0,0,0,0,75,234,0,0,0,0,0,0,59,230,0,0,0,0,0,176,35,230,0,0,0,0,0,176,18,250,0,0,0,0,0,27,25,253,0,0,0,0,176,161,38,254,0,0,0,176,59,33,38,14,0,0,0,27,65,21,51,14,0,0,176,49,105,53,209,15,0,0,27,154,116,150,225,15,0,0,27,100,92,55,237,0,0,0,222,35,17,210,255,0,0,0,239,222,221,254,15,0,0,0,240,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,176,15,0,0,0,0,0,176,124,15,0,0,0,0,0,141,87,248,0,0,0,0,80,44,163,75,95,15,0,0,112,97,106,115,138,15,0,0,40,150,66,21,252,0,0,112,97,26,105,67,15,0,0,23,101,49,42,247,0,0,96,66,54,137,177,213,253,0,48,179,49,54,171,237,15,0,224,60,41,213,238,253,0,0,0,204,130,238,255,15,0,0,0,108,252,255,0,0,0,0,0,240,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,136,0,0,0,0,0,128,21,83,8,0,0,0,0,128,50,84,8,0,0,0,0,128,67,101,8,0,0,0,0,128,85,118,8,0,0,0,0,0,136,136,135,0,0,0,0,0,0,128,134,0,0,0,0,0,0,88,133,0,0,0,0,0,0,104,8,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,102,6,0,0,0,96,22,18,17,98,6,0,0,39,18,34,34,33,114,0,0,119,35,18,18,49,119,0,0,71,115,55,115,55,118,0,0,112,68,84,83,101,7,0,0,0,119,85,85,119,0,0,0,0,0,119,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,34,66,6,0,0,0,32,66,38,34,34,2,0,0,34,17,17,33,17,82,0,32,17,21,65,22,20,18,2,64,37,33,82,22,37,17,2,32,17,65,33,17,18,65,2,32,33,97,17,33,18,18,2,48,34,18,66,22,81,33,3,112,35,21,17,17,17,50,7,0,55,35,34,98,50,115,0,0,112,55,51,51,115,7,0,0,0,112,119,119,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,0,0,0,0,0,0,112,50,5,0,0,0,0,0,183,36,99,0,0,0,0,144,219,24,99,0,0,0,0,169,187,24,83,0,0,0,112,187,159,24,83,0,0,0,185,171,185,24,99,0,0,112,171,190,171,20,99,0,0,167,188,151,137,49,5,0,48,66,136,136,20,83,6,0,96,35,17,17,49,101,0,0,0,54,51,51,99,6,0,0,0,0,102,85,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,213,0,0,0,0,0,0,88,136,14,0,0,0,0,120,133,198,0,0,0,0,51,103,199,232,0,0,0,48,18,218,253,207,14,0,0,35,65,148,11,0,15,0,144,19,66,153,11,0,0,0,57,34,148,186,0,0,0,0,35,68,169,11,0,0,0,48,146,186,187,0,0,0,0,0,187,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,136,12,0,0,0,0,138,68,180,197,12,0,0,0,24,33,171,117,202,0,0,128,36,43,131,120,202,15,0,128,37,51,118,120,202,14,0,128,133,97,183,168,204,14,0,128,136,135,221,202,236,0,0,192,137,136,171,236,14,0,0,0,204,170,204,14,0,0,0,0,0,238,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,36,10,0,0,0,0,71,42,167,161,12,0,0,0,36,162,26,166,165,0,0,144,58,26,97,171,168,13,0,112,115,42,166,74,168,14,0,64,163,97,58,243,170,14,0,80,165,170,83,168,250,0,0,160,167,53,138,234,15,0,0,0,170,136,170,15,0,0,0,0,0,238,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,104,12,0,0,0,0,138,51,163,197,11,0,0,0,40,18,138,100,183,0,0,128,19,23,131,104,183,12,0,96,20,17,132,104,217,14,0,80,21,134,255,217,237,0,0,192,85,134,157,235,14,0,0,0,204,169,221,14,0,0,0,0,0,238,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,116,71,4,0,0,0,64,212,140,168,76,4,0,0,196,138,136,137,168,76,0,64,173,152,120,139,136,202,4,16,172,85,85,197,139,218,1,32,84,221,238,133,168,77,2,32,221,237,94,170,77,33,3,96,221,254,95,17,33,98,15,0,102,15,32,34,50,246,0,0,0,0,32,50,246,15,0,0,0,0,240,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,3,0,0,0,0,0,0,16,19,0,0,0,0,0,0,48,117,7,0,0,16,1,36,100,87,5,0,0,17,66,66,130,170,10,0,0,33,36,36,100,0,0,0,0,66,66,66,134,0,0,0,32,36,20,81,152,0,0,0,64,66,81,133,6,0,0,0,34,36,36,104,9,0,0,0,178,66,130,150,0,0,0,0,34,98,104,9,0,0,0,0,105,102,153,0,0,0,0,0,144,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,2,0,0,0,0,0,0,16,2,0,0,0,0,0,0,32,98,6,0,0,17,2,147,154,38,2,0,16,33,73,169,169,204,12,0,16,146,147,154,154,0,0,0,32,73,169,169,169,0,0,0,144,147,26,33,202,0,0,0,64,169,33,162,11,0,0,0,136,154,154,186,12,0,0,0,215,172,169,203,0,0,0,0,199,87,186,12,0,0,0,0,12,32,204,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,0,0,0,0,0,0,0,119,12,0,0,0,0,0,0,151,201,0,0,0,187,144,71,148,153,13,0,176,167,121,25,228,238,0,0,176,149,151,151,8,0,0,0,160,36,134,137,9,0,0,0,151,55,35,152,14,0,0,0,117,121,39,147,0,0,0,112,19,179,219,226,0,0,0,112,159,212,125,14,0,0,0,144,119,17,233,0,0,0,0,224,153,233,14,0,0,0,0,0,238,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,1,28,158,12,176,0,0,0,92,137,136,24,187,13,0,193,137,87,117,177,219,0,0,92,55,51,159,183,221,28,0,28,245,57,57,115,125,1,27,117,145,35,54,83,119,12,189,123,53,243,63,17,151,1,208,29,23,243,62,83,197,12,0,206,25,51,51,117,193,21,0,80,121,119,116,145,201,14,0,1,158,153,146,201,94,0,0,0,80,206,153,229,0,1,0,0,16,224,229,16,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,5,0,0,0,0,0,0,16,21,0,0,0,0,0,0,80,166,10,0,0,0,0,35,115,106,6,0,0,0,51,34,114,221,13,0,0,48,50,40,114,0,0,0,0,51,130,51,131,0,0,0,48,50,40,50,183,0,0,0,48,130,51,131,11,0,0,0,68,40,50,183,0,0,0,0,228,52,131,11,0,0,0,0,68,148,187,0,0,0,0,0,156,153,0,0,0,0,0,0,192,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,2,0,0,0,0,0,0,16,2,0,0,0,0,0,0,32,146,9,0,0,0,0,99,104,41,2,0,0,0,118,134,134,204,12,0,0,96,99,104,104,0,0,0,0,118,134,134,134,0,0,0,96,99,24,33,200,0,0,0,112,134,33,130,11,0,0,0,170,104,104,184,12,0,0,0,213,140,134,203,0,0,0,0,197,69,184,12,0,0,0,0,12,32,204,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,99,51,51,51,51,99,51,67,54,51,54,51,70,53,51,52,51,52,51,52,53,99,82,51,98,51,98,51,67,82,51,67,51,66,51,35,81,51,70,53,33,53,38,84,51,66,53,36,54,20,86,99,33,53,38,84,18,53,67,98,53,19,82,17,52,67,81,53,20,82,22,82,35,81,51,18,86,19,81,35,33,51,17,53,20,84,67,17,53,20,52,83,85,51,85,53,83,85,34,34,34,34,34,34,34,18,34,34,34,34,34,34,34,34,34,34,34,18,33,34,34,34,34,34,34,34,34,34,34,18,17,34,34,34,34,34,34,34,34,34,34,18,17,33,34,34,34,34,34,34,34,34,34,18,17,17,34,34,34,34,34,34,34,34,34,18,17,17,33,34,18,17,17,17,17,17,17,17,17,17,17,34,18,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,35,50,51,51,51,51,51,51,19,17,17,49,34,34,34,34,34,34,34,34,18,17,17,35,34,34,34,34,34,34,34,34,18,17,49,34,34,34,34,34,34,34,34,34,18,17,35,34,34,34,34,34,34,34,34,34,18,49,34,34,34,34,34,34,34,34,34,34,18,35,34,34,34,34,34,34,34,34,34,34,50,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,64,4,0,68,0,20,66,64,33,4,36,34,36,34,4,52,34,34,50,4,64,34,34,66,0,64,34,34,66,0,64,34,34,66,0,64,51,51,67,0,0,68,68,4,0,80,5,0,85,0,37,81,80,68,5,37,34,69,68,5,53,34,69,68,5,80,34,69,84,0,80,34,69,84,0,80,34,69,84,0,80,51,69,84,0,0,85,85,5,0,0,0,1,0,0,1,0,1,16,0,18,0,2,33,0,32,0,0,2,0,0,0,0,0,0,1,0,0,16,1,2,1,0,32,2,16,2,0,1,0,32,0,0,2,0,0,17,16,1,0,16,34,33,18,0,33,34,34,34,1,33,34,34,34,1,33,34,34,34,1,16,34,34,18,0,0,33,34,1,0,0,16,18,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,68,68,68,68,68,68,68,4,0,64,17,17,17,17,17,17,17,17,17,17,17,65,0,20,17,17,17,17,17,17,17,17,17,17,17,33,4,20,17,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,0,68,68,68,68,68,68,68,68,68,68,68,4,0,64,17,17,17,17,17,17,17,17,17,17,17,65,0,20,17,17,17,17,17,17,17,17,17,17,17,33,4,20,17,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,19,20,33,34,34,34,34,34,34,34,34,34,34,50,17,20,33,34,34,34,34,34,34,34,34,34,34,34,34,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,51,67,64,50,51,51,51,51,51,51,51,51,51,51,51,67,0,52,51,51,51,51,51,51,51,51,51,51,51,4,0,64,68,68,68,68,68,68,68,68,68,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,33,34,34,34,34,34,34,34,34,34,34,34,34,20,33,34,34,34,34,34,34,34,34,34,34,50,51,20,33,34,34,34,34,34,34,34,34,34,34,50,51,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,50,67,20,33,34,34,34,34,34,34,34,34,34,34,51,67,64,50,51,51,51,51,51,51,51,51,51,51,51,67,0,52,51,51,51,51,51,51,51,51,51,51,51,4,0,64,68,68,68,68,68,68,68,68,68,68,68,0,17,17,17,17,17,49,33,34,34,34,34,66,33,51,51,51,51,66,33,34,34,34,34,66,33,51,51,51,51,66,33,34,34,34,34,66,33,51,51,51,51,66,33,34,34,34,34,66,33,51,51,51,51,66,33,34,34,34,34,66,33,51,51,51,51,66,33,34,34,34,34,66,33,51,51,51,51,66,33,34,34,34,34,66,67,68,68,68,68,68,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,246,31,102,102,102,151,148,102,102,70,102,150,169,120,72,148,102,54,148,119,121,102,151,138,102,134,102,101,151,66,102,53,101,151,84,101,105,134,102,104,168,89,34,150,152,86,168,105,70,102,84,137,102,102,102,134,86,163,71,102,134,152,105,83,102,121,70,69,102,102,86,150,136,54,85,66,102,83,100,104,118,39,166,102,102,85,103,54,102,102,51,102,118,35,101,102,86,86,37,169,253,31,151,102,134,100,102,86,99,168,104,53,70,102,102,102,102,101,118,151,170,100,168,100,102,102,86,98,152,154,154,103,134,122,102,102,53,57,101,36,101,36,166,104,134,138,151,103,151,105,83,100,37,82,168,104,86,71,134,73,98,102,102,102,102,151,87,83,102,135,100,37,132,138,101,134,154,72,82,168,153,103,104,100,134,86,99,121,102,100,102,37,100,102,102,102,102,100,102,150,252,31,86,121,70,102,102,152,151,154,134,138,168,122,53,101,102,102,135,83,102,102,100,121,102,152,138,134,154,118,118,121,102,102,168,87,152,102,35,98,138,70,99,121,151,138,102,103,102,151,103,102,102,121,102,86,83,53,52,101,134,70,137,121,102,102,102,102,131,168,70,102,102,70,83,102,104,86,67,167,104,102,134,170,104,99,121,102,100,86,114,104,69,121,71,67,121,66,36,168,253,31,86,148,70,134,122,102,54,84,100,102,102,134,70,153,170,90,66,82,102,151,102,104,168,136,154,151,154,70,102,102,53,134,105,118,56,53,50,102,104,101,102,151,121,102,150,103,102,118,170,104,150,99,103,67,66,167,154,102,102,151,105,53,100,102,104,168,120,102,99,119,105,102,134,154,102,102,104,83,102,86,120,102,102,102,102,87,150,169,121,136,137,137,121,102,150,103,151,120,252,31,103,102,70,150,103,102,118,105,102,118,72,102,169,105,68,102,85,83,52,150,103,102,70,85,104,99,70,153,104,102,167,138,102,86,134,53,101,53,150,118,102,37,132,152,103,102,134,102,169,104,37,101,150,105,151,121,102,120,152,102,102,102,102,86,99,85,134,122,37,50,133,105,104,102,106,134,154,151,170,168,120,169,104,102,103,102,134,154,138,102,104,53,137,102,136,122,134,135,252,31,151,70,51,85,98,121,102,102,102,70,102,168,104,86,104,150,154,138,102,37,101,102,102,86,34,99,118,70,51,101,53,150,132,154,53,101,86,50,102,102,102,37,36,85,102,168,74,68,102,102,102,70,53,134,152,119,102,86,83,70,34,100,102,70,102,104,102,102,100,102,102,102,86,67,137,121,70,70,102,83,102,86,83,99,102,85,102,69,83,102,102,102,86,99,102,102,151,104,252,31,121,168,103,102,53,134,153,103,102,102,102,104,121,118,137,104,36,149,70,102,53,103,118,116,138,102,100,120,82,102,118,121,102,118,169,136,138,102,102,102,70,102,102,102,150,137,102,68,101,153,121,169,169,54,101,53,148,136,134,170,136,68,118,136,54,52,101,102,102,102,122,67,101,102,134,54,101,102,102,102,138,151,103,118,153,102,134,150,170,120,37,149,103,102,116,36,166,104,252,31,102,118,101,102,102,53,101,102,151,86,134,154,68,50,102,35,68,36,66,148,152,73,53,34,82,153,118,83,52,102,118,137,153,89,70,101,102,134,102,102,102,102,151,105,102,134,154,102,99,102,102,102,169,153,150,70,82,102,168,38,101,70,66,86,83,134,153,101,70,85,102,85,102,102,151,103,53,133,105,37,34,67,66,102,102,102,151,103,118,101,134,134,138,86,82,102,102,166,254,31,87,66,35,101,134,70,53,72,82,102,102,152,100,118,102,104,102,101,134,102,102,116,73,101,37,101,86,98,138,102,102,134,102,37,101,102,120,88,34,34,98,86,82,102,102,102,102,151,38,101,37,100,104,151,136,103,54,167,71,118,121,38,99,152,116,102,118,102,149,82,70,102,100,102,118,72,102,169,137,138,100,53,137,105,100,104,102,134,150,154,151,103,102,102,102,99,134,152,252,31,102,102,101,153,103,168,105,134,154,68,102,100,103,37,66,86,83,99,102,102,102,104,100,102,102,102,102,102,100,102,70,134,70,86,83,86,102,86,118,169,103,152,54,36,137,102,52,100,102,102,102,134,103,66,148,57,101,134,138,120,169,87,105,153,103,104,102,102,102,100,70,154,102,102,151,119,105,164,130,70,105,102,104,102,84,68,82,152,105,150,137,134,118,121,135,83,102,53,252,31,102,70,85,134,170,136,170,38,133,100,102,166,136,86,83,151,136,102,102,102,102,102,102,85,100,83,102,102,70,50,83,69,100,102,100,83,101,121,86,50,100,72,101,105,105,53,150,102,169,71,170,138,70,102,115,121,134,105,100,102,54,101,70,102,72,85,121,102,103,137,102,134,74,53,50,150,154,102,104,36,83,34,99,100,118,121,134,122,86,102,102,118,168,104,152,103,101,134,254,31,100,134,73,102,120,70,102,134,137,102,83,101,165,89,135,70,85,118,39,154,153,134,102,100,168,104,118,153,103,150,121,102,102,102,134,105,102,102,102,102,168,104,118,137,166,154,37,101,70,85,103,86,102,134,138,138,100,102,86,83,37,102,102,135,149,154,154,102,102,53,101,151,152,72,66,102,100,118,72,150,135,137,136,105,105,121,102,121,36,84,82,87,185,122,134,137,169,122,252,31,35,101,134,102,102,118,51,102,102,118,102,102,102,100,105,150,103,102,169,121,102,102,102,134,102,102,151,100,102,151,152,102,102,86,99,136,41,101,150,106,83,102,102,83,100,70,118,133,134,106,34,101,70,50,83,167,154,170,89,52,101,86,34,166,153,71,152,101,121,102,102,137,134,138,102,118,104,102,118,73,36,98,118,153,100,102,54,85,132,70,167,136,121,168,104,134,37,68,252,31,102,70,102,102,103,168,104,118,121,53,118,72,36,83,121,102,134,154,102,134,86,66,67,68,134,138,102,53,69,102,98,101,70,102,104,100,102,133,103,168,54,101,68,137,151,119,118,102,104,166,169,88,102,102,104,37,100,70,100,102,70,117,137,168,58,101,100,102,100,104,102,151,135,105,83,86,82,104,86,102,99,121,102,102,136,154,134,153,121,151,152,35,84,104,37,66,102,53,252,31,134,104,151,154,54,132,73,66,134,106,82,104,67,82,134,170,152,166,104,168,104,102,167,171,83,168,55,66,100,102,86,83,102,70,102,53,132,152,87,98,152,100,86,51,101,100,102,86,83,102,134,102,86,83,37,82,134,102,118,168,104,86,83,102,101,118,105,102,102,70,102,37,51,150,103,118,102,102,152,102,169,103,100,134,101,153,168,104,86,151,83,117,153,154,102,102,86,66,252,63,204,221,204,221,221,222,204,204,204,204,204,187,221,204,237,238,189,187,204,204,204,205,204,204,221,205,204,220,205,204,236,204,203,204,188,204,204,220,204,219,204,220,221,188,222,205,188,204,237,204,204,204,204,204,220,205,203,188,204,221,204,188,187,204,204,221,205,188,220,221,204,204,204,220,205,187,204,205,220,222,205,221,204,220,237,205,204,204,204,204,220,204,188,203,204,204,204,204,252,143,204,187,204,220,220,204,205,204,204,204,237,189,220,204,220,204,188,221,205,204,204,204,204,220,205,204,204,220,205,237,221,222,204,221,204,188,204,205,204,204,204,204,204,222,220,221,205,220,206,204,204,204,204,205,203,205,220,204,205,204,204,204,204,204,188,204,204,220,205,189,204,220,205,204,203,203,204,204,203,220,188,204,220,205,204,220,237,221,204,204,204,220,220,204,204,204,204,204,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,31,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,245,31,85,85,85,134,131,85,85,53,85,133,168,103,40,131,85,37,131,102,105,85,150,122,85,117,85,83,150,50,85,36,84,134,66,84,88,133,85,88,167,73,34,133,151,69,168,89,53,85,66,121,85,85,85,117,69,162,38,85,133,151,89,66,85,105,53,36,85,85,69,149,135,37,52,50,85,50,83,87,101,38,165,85,85,52,86,37,85,85,34,85,101,34,84,85,69,69,35,169,253,31,150,85,117,82,85,69,82,168,87,36,53,85,85,85,85,84,101,150,170,83,167,83,85,85,53,82,151,154,154,86,117,106,85,85,36,40,84,35,84,35,165,87,133,138,150,86,150,89,50,83,36,50,167,87,69,54,117,57,82,85,85,85,85,150,70,66,85,134,83,35,115,122,84,133,138,55,50,167,152,86,88,83,133,69,82,105,85,83,85,36,83,85,85,85,85,83,85,149,252,31,69,105,53,85,85,151,150,138,117,122,168,106,36,84,85,85,134,66,85,85,82,105,85,136,138,117,154,101,101,104,85,85,167,54,135,85,34,82,122,53,82,105,150,122,85,86,85,150,86,85,85,105,85,69,66,36,35,84,133,37,137,104,85,85,85,85,130,168,53,85,85,53,66,85,88,69,34,166,87,85,133,170,87,82,105,85,83,53,98,88,51,105,38,34,104,50,35,168,253,31,69,146,37,133,106,85,37,66,83,85,85,117,53,137,170,74,34,50,85,150,85,87,168,120,154,150,154,53,85,85,36,133,88,101,39,35,34,85,88,83,85,150,105,85,149,86,85,101,170,87,133,82,86,50,50,166,154,85,85,150,88,35,82,85,87,167,104,85,82,102,89,85,133,138,85,85,88,66,85,69,104,85,85,85,85,54,149,169,105,119,137,121,104,85,149,86,150,103,252,31,86,85,53,149,86,85,101,89,85,101,56,85,169,89,51,85,52,50,35,149,86,85,53,52,87,82,37,153,88,85,166,138,85,69,133,36,84,36,149,101,85,35,115,151,86,85,117,85,169,87,35,83,133,88,150,105,85,103,152,85,85,85,85,69,82,52,117,106,35,34,116,89,87,85,90,117,154,134,170,168,103,169,87,85,86,85,117,154,138,85,87,36,137,85,136,106,133,134,252,31,150,53,34,68,82,105,85,85,85,37,85,168,88,69,87,149,154,122,85,35,83,85,85,69,34,82,101,53,34,84,35,149,115,138,36,84,53,34,85,85,85,35,34,51,85,167,42,51,85,85,85,53,36,133,151,102,85,69,66,53,34,83,85,53,85,87,85,85,83,85,85,85,69,50,137,105,53,37,85,66,85,53,50,82,85,68,85,51,66,85,85,85,53,82,85,85,150,88,252,31,105,167,86,85,36,117,137,86,85,85,85,87,105,101,121,88,35,148,37,85,36,86,101,99,122,85,83,103,50,85,101,105,85,101,169,119,138,85,85,85,53,85,85,85,133,136,85,35,84,153,105,168,169,37,84,36,147,119,117,170,136,35,101,136,37,35,84,85,85,85,106,34,83,85,117,37,84,85,85,85,138,150,86,101,153,85,117,133,170,103,35,148,86,85,99,35,165,87,252,31,85,101,84,85,85,36,84,85,150,53,117,138,50,34,85,34,51,35,50,147,136,40,36,34,66,137,101,50,35,85,101,121,153,72,53,83,85,133,85,85,85,85,150,89,85,133,138,85,82,85,85,85,169,152,149,37,66,85,168,37,83,53,50,69,66,117,153,83,37,68,85,67,85,85,150,86,36,116,89,36,34,50,50,85,85,85,150,86,101,83,133,117,122,53,50,85,85,165,254,31,54,50,34,84,133,53,35,56,50,85,85,151,83,101,85,88,85,83,133,85,85,99,57,84,36,84,53,82,138,85,85,133,85,35,83,85,104,71,34,34,82,53,50,85,85,85,85,150,37,83,35,82,87,150,119,86,37,166,38,101,104,37,82,151,99,85,101,85,131,50,53,85,83,85,101,39,85,168,136,122,83,36,137,89,83,88,85,117,133,138,150,86,85,85,85,82,133,151,252,31,85,85,83,152,86,168,89,117,154,35,85,82,86,36,50,53,50,82,85,85,85,87,83,85,85,85,85,85,83,85,53,133,37,69,66,53,85,53,101,169,86,151,37,35,121,85,34,83,85,85,85,117,86,50,147,41,84,133,138,103,169,70,89,153,86,87,85,85,85,83,53,154,85,85,150,102,89,162,114,53,88,85,87,85,67,51,66,151,89,133,121,117,101,105,118,50,85,36,252,31,85,53,68,117,170,135,170,37,116,82,85,165,136,69,66,150,119,85,85,85,85,85,85,68,83,66,85,85,53,34,50,51,82,85,82,50,83,105,69,34,82,55,84,89,89,36,133,85,168,38,170,122,37,85,98,105,133,89,82,85,37,83,53,85,56,52,105,85,86,136,85,117,58,35,34,133,138,85,87,35,50,34,82,83,101,105,117,106,53,85,85,101,168,88,151,86,83,133,254,31,83,117,57,85,104,53,85,117,121,85,66,84,163,73,134,37,52,101,38,138,153,133,85,83,167,88,101,153,86,133,105,85,85,85,117,89,85,85,85,85,167,87,101,137,165,138,36,83,53,52,86,69,85,133,138,138,83,85,69,66,35,85,85,134,131,154,154,85,85,36,84,150,152,55,50,85,82,101,39,149,118,137,120,89,89,105,85,105,35,51,66,70,169,106,117,137,169,106,252,31,34,84,117,85,85,101,34,85,85,101,85,85,85,83,88,149,86,85,168,105,85,85,85,133,85,85,150,83,85,150,136,85,85,69,82,136,41,83,133,90,66,85,85,50,83,37,101,132,133,90,34,84,53,34,66,166,154,170,73,35,84,69,34,165,152,54,151,83,105,85,85,121,117,122,85,101,88,85,101,40,34,82,101,137,82,85,37,68,130,53,166,136,105,167,87,133,35,51,252,31,85,53,85,85,86,167,87,101,105,36,101,39,35,66,104,85,117,154,85,117,53,50,34,51,117,122,85,36,52,85,82,83,53,85,88,83,85,132,86,167,37,84,34,121,134,102,101,85,87,165,169,55,85,85,88,36,82,53,82,85,53,100,137,168,42,84,83,85,83,88,85,150,118,89,66,53,66,88,69,85,82,105,85,85,136,138,117,153,105,150,136,34,67,88,35,50,85,36,252,31,117,88,150,138,37,114,57,50,133,90,66,87,50,66,117,170,136,165,88,167,87,85,166,170,66,167,38,50,82,85,69,66,85,53,85,36,115,152,54,82,151,83,69,34,84,83,85,69,66,85,117,85,69,66,36,66,117,85,101,168,88,69,66,85,83,101,89,85,85,53,85,35,34,149,86,101,85,85,151,85,169,86,83,133,84,137,167,87,53,150,50,100,137,138,85,85,69,50,252,47,204,237,204,221,221,222,204,204,204,204,204,204,222,204,237,238,189,203,204,204,204,205,204,204,221,205,204,220,205,204,236,204,204,204,204,204,204,220,204,220,204,220,222,204,238,205,204,204,237,204,204,204,204,204,236,206,203,204,204,221,204,204,188,204,204,221,205,188,220,222,204,204,204,220,205,203,204,205,220,222,205,221,204,220,237,205,204,204,204,204,220,204,188,204,204,204,204,204,252,127,204,188,204,220,220,204,205,204,204,204,237,205,220,204,220,204,204,237,206,204,204,204,204,220,205,204,204,220,205,237,221,222,204,221,204,204,204,205,204,204,204,204,204,222,220,221,205,220,206,204,204,204,204,205,204,205,220,204,205,204,204,204,204,204,188,204,204,236,205,205,204,220,205,204,204,203,204,204,204,220,204,204,236,205,204,220,237,221,204,204,204,220,220,204,204,204,204,204,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,143,168,103,85,119,116,138,119,119,119,87,119,217,121,119,121,151,174,155,119,70,118,119,119,119,20,117,135,103,69,119,70,167,150,157,71,119,103,82,119,119,119,54,69,102,119,217,93,102,119,119,119,103,87,151,169,136,119,119,116,103,19,118,119,103,119,121,119,119,118,119,119,119,119,100,154,137,103,87,119,117,119,103,101,117,119,119,119,102,116,119,119,119,103,117,119,119,168,121,247,127,119,119,119,152,150,119,119,103,119,151,185,137,89,150,119,87,150,136,138,119,168,155,119,151,119,118,168,99,119,71,119,152,117,119,121,151,119,121,185,121,67,151,169,119,185,121,103,119,117,154,119,119,119,151,119,181,88,119,151,169,122,116,119,138,103,87,119,119,119,167,153,71,103,98,119,101,118,121,135,56,183,119,119,103,120,87,119,119,85,119,135,52,119,119,119,119,70,217,253,143,168,119,151,117,119,119,116,185,121,87,103,119,119,119,119,119,135,168,188,118,185,118,119,119,103,115,169,171,171,120,151,139,119,119,87,89,119,70,119,38,183,121,151,157,152,120,168,122,101,118,39,98,185,121,119,104,151,106,116,119,119,119,119,168,120,116,119,152,118,70,150,156,119,151,157,105,100,185,169,120,121,118,151,119,117,138,119,118,119,39,118,119,119,119,119,118,119,167,250,127,119,137,103,119,119,153,168,157,151,155,217,139,87,119,119,119,152,116,119,119,117,138,119,153,157,151,155,135,135,137,119,119,185,104,153,119,52,116,155,103,116,137,168,155,119,120,119,168,120,119,119,137,119,119,116,71,86,119,151,87,153,137,119,119,119,119,149,185,103,119,119,103,116,119,121,119,84,184,121,119,151,189,121,117,137,119,118,103,132,121,102,138,88,85,137,97,70,185,251,127,119,165,87,151,139,119,87,117,118,119,119,151,103,153,187,123,84,98,119,152,119,121,217,153,171,152,157,103,119,119,71,151,121,135,89,86,81,119,121,118,119,168,138,119,167,120,119,135,187,121,151,116,120,101,99,184,171,119,119,168,121,86,117,119,121,185,137,119,117,136,121,119,151,157,119,119,121,117,119,119,137,119,119,119,119,104,167,201,137,153,154,154,137,119,167,120,168,137,248,143,120,119,103,167,120,119,135,122,119,135,105,119,218,122,102,119,103,100,70,167,120,119,103,103,121,116,87,170,121,119,184,157,119,119,151,71,119,71,167,135,119,70,150,169,120,119,151,119,186,121,70,118,151,121,168,138,119,137,153,119,119,119,119,119,117,103,151,139,38,68,151,122,121,119,123,151,171,152,190,185,137,186,121,119,120,119,151,171,157,119,121,87,154,119,153,139,151,152,249,143,168,103,85,119,116,138,119,119,119,87,119,217,121,119,121,151,174,155,119,70,118,119,119,119,20,117,135,103,69,119,70,167,150,157,71,119,103,82,119,119,119,54,69,102,119,217,93,102,119,119,119,103,87,151,169,136,119,119,116,103,19,118,119,103,119,121,119,119,118,119,119,119,119,100,154,137,103,87,119,117,119,103,101,117,119,119,119,102,116,119,119,119,103,117,119,119,168,121,247,159,137,185,120,119,87,151,154,120,119,119,119,121,137,135,154,121,38,167,87,119,87,120,135,134,155,119,118,137,100,119,135,137,119,135,186,153,155,119,119,119,103,119,119,119,151,153,119,86,119,154,138,217,186,87,119,71,150,153,151,187,153,86,135,153,87,70,119,119,119,119,140,85,118,119,151,87,119,119,119,119,155,168,120,135,170,119,151,151,222,137,38,167,120,119,134,54,183,121,247,127,119,135,119,119,119,71,119,119,168,103,151,155,101,67,119,68,102,54,98,166,153,89,87,33,116,153,135,100,70,119,135,153,170,121,103,118,119,151,119,119,119,119,168,122,119,151,157,119,117,119,119,119,186,153,151,87,116,119,217,55,118,103,97,119,116,151,153,118,87,119,119,118,119,119,152,120,71,151,122,71,68,101,98,119,119,119,168,120,135,118,151,151,155,103,98,119,119,199,252,143,104,98,37,119,151,103,86,105,98,119,119,169,118,135,119,121,119,118,151,119,119,134,106,119,71,119,103,114,157,119,119,151,119,38,118,119,137,121,66,18,116,103,98,119,119,119,119,168,55,118,70,117,121,168,153,120,87,184,88,135,137,71,117,169,134,119,135,119,150,100,103,119,118,119,135,89,119,233,153,157,118,87,154,122,118,121,119,151,151,158,168,120,119,119,119,117,151,169,250,127,119,119,118,169,120,217,122,151,155,86,119,117,120,39,97,103,101,117,119,119,119,121,118,119,119,119,119,119,118,119,103,151,87,119,117,103,119,103,135,186,120,169,87,70,153,119,69,118,119,119,119,151,120,100,166,73,119,151,155,137,186,120,122,170,120,121,119,119,119,118,103,171,119,119,168,136,121,181,148,103,121,119,121,119,118,102,116,169,121,151,153,151,135,138,152,101,119,71,244,127,119,103,119,151,187,153,221,71,151,117,119,183,153,119,116,168,153,119,119,119,119,119,119,119,118,116,119,119,103,81,100,102,117,119,117,101,118,137,119,84,117,105,119,122,121,87,151,119,217,88,187,155,87,119,133,138,151,121,117,119,87,118,103,119,105,103,138,119,120,153,119,151,107,70,66,151,157,119,121,22,100,68,117,118,135,138,151,139,103,119,119,135,185,121,169,120,118,151,249,111,118,151,106,119,137,103,119,151,154,119,117,119,182,122,152,87,103,135,56,155,170,151,119,118,185,121,135,170,120,151,138,119,119,119,151,122,119,119,119,119,185,121,135,154,183,158,71,118,103,103,120,119,119,151,156,156,118,119,119,117,70,119,119,152,150,171,158,119,119,87,119,152,169,105,98,119,117,135,89,167,152,154,153,122,122,137,119,137,22,102,116,120,233,139,151,154,218,139,248,95,69,119,151,119,119,135,85,119,119,135,119,119,119,118,121,167,120,119,233,138,119,119,119,151,119,119,152,118,119,168,153,119,119,119,116,153,74,118,151,123,117,119,119,101,118,87,135,151,151,125,66,119,103,81,116,184,155,221,122,70,119,119,68,183,169,104,169,118,138,119,119,154,151,155,119,135,121,119,135,89,21,113,135,154,117,119,71,119,149,103,184,153,137,185,121,151,38,102,246,127,119,103,119,119,120,185,121,135,138,87,135,89,38,117,137,119,151,155,119,151,103,99,84,102,151,155,119,87,103,119,116,118,103,119,121,118,119,151,120,185,87,119,85,154,152,136,135,119,121,215,186,105,119,119,121,71,117,103,117,119,103,135,154,217,92,119,118,119,118,121,119,168,152,122,117,103,114,121,119,119,117,138,119,119,153,155,151,169,138,168,153,53,118,121,38,100,119,71,244,127,151,121,152,158,87,149,105,97,151,123,116,121,100,116,151,188,153,215,121,185,121,119,184,190,117,185,88,99,117,119,119,117,119,103,119,71,150,169,104,116,169,118,119,68,119,118,119,119,116,119,151,119,119,117,71,116,151,119,135,217,121,119,116,119,118,135,122,119,119,103,119,38,84,167,120,135,119,119,169,119,186,120,118,151,119,154,185,121,103,152,100,135,154,155,119,119,119,100,246,143,168,103,85,119,116,138,119,119,119,87,119,217,121,119,121,151,174,155,119,70,118,119,119,119,20,117,135,103,69,119,70,167,150,157,71,119,103,82,119,119,119,54,69,102,119,217,93,102,119,119,119,103,87,151,169,136,119,119,116,103,19,118,119,103,119,121,119,119,118,119,119,119,119,100,154,137,103,87,119,117,119,103,101,117,119,119,119,102,116,119,119,119,103,117,119,119,168,121,247,159,137,185,120,119,87,151,154,120,119,119,119,121,137,135,154,121,38,167,87,119,87,120,135,134,155,119,118,137,100,119,135,137,119,135,186,153,155,119,119,119,103,119,119,119,151,153,119,86,119,154,138,217,186,87,119,71,150,153,151,187,153,86,135,153,87,70,119,119,119,119,140,85,118,119,151,87,119,119,119,119,155,168,120,135,170,119,151,151,222,137,38,167,120,119,134,54,183,121,247,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,17,17,1,0,0,0,0,1,0,0,16,0,0,0,16,0,0,0,0,1,0,0,16,0,0,0,0,1,0,0,16,0,0,0,0,1,0,0,16,16,1,16,1,1,0,0,16,0,0,0,0,1,0,0,0,1,0,0,16,0,0,0,0,1,0,0,16,0,0,0,0,16,0,0,1,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,17,0,0,0,17,0,0,0,0,17,0,16,0,0,0,0,0,0,1,16,0,0,0,0,0,0,1,16,0,0,0,0,0,0,1,0,1,0,0,0,0,16,0,0,1,0,0,0,0,16,0,0,16,0,0,0,0,1,0,0,16,0,0,0,0,1,0,0,16,0,0,0,0,1,0,0,16,0,0,0,0,1,0,0,0,1,0,0,16,0,0,0,0,16,17,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,17,0,0,0,16,0,0,0,0,1,0,0,16,0,0,0,0,1,0,0,16,0,0,0,0,1,0,0,16,0,16,1,0,1,0,0,16,0,1,16,0,1,0,0,16,0,1,16,0,1,0,0,16,0,1,16,0,1,0,0,16,0,1,16,0,1,0,0,16,0,1,16,0,1,0,0,16,0,1,16,0,1,0,0,16,0,1,16,0,1,0,0,16,17,1,16,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,1,16,17,0,0,0,16,0,1,16,0,1,0,0,16,0,1,16,0,1,0,0,16,0,1,16,0,1,0,0,16,0,1,16,0,1,0,0,16,0,1,16,0,1,0,0,1,0,1,16,0,16,0,16,0,0,1,16,0,0,1,16,0,16,0,0,1,0,1,16,17,1,0,0,16,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,255,255,255,255,255,0,0,0,0,0,0,0,240,255,255,255,255,255,255,0,0,0,0,0,0,0,240,255,255,255,255,255,255,0,0,0,0,0,0,0,240,85,85,85,85,117,247,0,0,0,0,0,0,0,240,85,85,85,85,117,247,0,0,0,0,0,0,0,96,85,102,150,89,149,153,0,0,0,0,0,0,0,96,85,102,150,89,149,153,0,0,0,0,0,0,0,80,17,221,87,213,29,97,0,0,0,0,0,0,0,176,119,85,204,92,149,185,0,0,0,0,0,0,0,176,119,85,204,92,149,185,0,0,0,0,0,0,0,176,187,204,204,204,188,187,0,0,0,0,0,0,0,176,187,204,204,204,188,187,0,0,0,0,0,0,0,192,204,187,203,188,187,203,0,0,0,0,68,35,50,131,68,187,185,187,75,68,51,34,67,4,68,35,50,131,68,187,185,187,75,68,51,34,67,4,34,35,66,52,51,68,187,75,36,34,68,34,35,2,34,35,66,52,51,68,187,75,36,34,68,34,35,2,51,34,34,34,34,51,132,56,35,34,34,34,50,3,51,34,34,34,34,51,132,56,35,34,34,34,50,3,68,34,66,36,34,34,132,40,34,34,68,34,66,4,102,102,102,134,136,34,130,40,130,136,102,102,102,6,102,102,102,134,136,34,130,40,130,136,102,102,102,6,102,105,102,134,136,34,131,40,50,131,102,102,105,6,102,105,102,134,136,34,131,40,50,131,102,102,105,6,102,105,150,137,34,34,56,35,50,131,153,102,105,6,102,102,150,137,34,34,56,35,50,131,153,102,102,6,102,102,150,137,34,34,56,35,50,131,153,102,102,6,102,102,150,41,34,34,56,35,34,130,153,102,102,6,102,102,150,41,34,34,56,35,34,130,153,102,102,6,102,102,102,134,136,136,35,50,35,130,102,102,102,6,102,150,105,214,221,221,221,221,45,130,102,153,102,6,102,150,105,214,221,221,221,221,45,130,102,153,102,6,153,150,153,217,221,221,221,221,221,141,153,153,150,9,153,150,153,217,221,221,221,221,221,141,153,153,150,9,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,208,221,221,221,221,221,221,0,0,0,0,0,0,0,160,170,170,170,170,170,170,0,0,0,0,0,0,0,160,170,170,170,170,170,170,0,0,0,0,0,0,0,160,170,170,170,170,170,170,0,0,0,0,0,0,36,66,202,202,0,0,0,0,34,34,202,202,0,0,0,0,34,66,172,172,0,0,0,0,36,66,172,172,0,0,102,102,69,67,102,102,51,51,187,107,67,83,182,107,51,51,182,107,52,51,182,107,51,51,182,107,53,83,182,107,51,51,136,152,17,17,137,136,17,17,136,152,113,17,152,136,17,17,137,152,113,113,152,136,113,23,137,136,17,113,152,152,17,17,137,137,17,113,136,152,17,17,136,137,17,17,136,136,113,113,136,137,17,23,137,137,113,113,136,136,23,119,137,136,113,113,33,98,22,34,102,103,22,22,38,103,38,115,22,98,38,119,97,118,97,102,97,102,119,97,66,97,114,22,34,38,22,98,98,18,39,102,114,70,38,103,118,34,38,119,103,118,102,22,113,102,99,22,97,17,38,38,97,17,34,102,114,34,102,34,98,38,38,118,38,98,102,103,34,103,118,103,102,102,17,38,34,22,97,33,23,97,34,99,98,38,18,38,36,98,39,118,118,98,34,97,102,102,102,17,38,102,101,34,118,113,22,34,98,23,118,118,102,118,102,34,98,33,98,35,34,102,34,118};
+const uint8_t spr_px[64017] = {0,48,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,3,0,48,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,3,48,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,3,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,17,34,34,34,34,34,34,34,17,51,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,19,17,17,17,17,17,17,17,49,51,48,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,51,51,17,17,17,17,17,17,17,51,3,48,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,3,0,48,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,3,0,0,16,17,17,17,17,17,17,17,17,1,0,0,17,17,17,17,17,17,17,17,17,17,0,16,17,0,0,0,0,0,0,0,0,17,1,17,1,0,0,0,0,0,0,0,0,16,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,1,0,0,0,0,0,0,0,0,16,17,16,17,0,0,0,0,0,0,0,0,17,1,0,17,17,17,17,17,17,17,17,17,17,0,0,16,17,17,17,17,17,17,17,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,1,16,0,0,0,0,0,16,0,0,1,0,0,0,0,16,0,0,1,0,0,0,0,0,1,16,0,0,0,0,0,0,16,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,2,34,0,0,18,33,17,2,0,18,17,17,2,0,18,17,17,2,0,32,17,33,0,0,0,18,2,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,48,3,51,0,0,19,49,34,3,0,19,34,34,50,0,35,34,34,50,0,48,34,34,3,0,0,35,50,0,0,0,48,3,0,0,0,0,0,0,0,0,0,0,0,0,64,4,68,0,0,20,65,51,4,0,20,34,51,67,0,36,34,51,67,0,64,34,51,4,0,0,36,67,0,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,2,0,32,17,17,33,0,18,17,17,17,2,18,17,17,17,2,32,34,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,4,0,64,17,33,66,0,20,18,34,50,4,36,34,34,51,4,64,68,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,4,0,64,17,51,67,0,20,18,51,51,4,36,34,51,51,4,64,68,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,34,34,34,0,18,17,17,17,2,18,17,17,17,2,18,17,17,17,2,32,17,17,33,0,32,17,17,33,0,0,18,17,2,0,0,32,34,0,0,0,0,0,0,0,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,1,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,16,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,1,32,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,2,18,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,33,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,32,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,2,0,51,51,0,0,48,33,34,3,0,19,34,34,50,0,35,34,34,50,0,35,34,34,50,0,48,34,34,3,0,0,51,51,0,0,0,0,0,0,0,0,0,0,0,0,48,3,51,0,0,19,49,34,3,0,19,34,34,50,0,35,34,34,50,0,48,34,34,3,0,0,35,50,0,0,0,48,3,0,0,0,0,0,0,0,0,0,0,0,0,64,4,68,0,0,20,65,51,4,0,20,34,51,67,0,36,34,51,67,0,64,34,51,4,0,0,36,67,0,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,2,0,32,17,17,33,0,18,17,17,17,2,18,17,17,17,2,32,34,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,4,0,64,17,33,66,0,20,18,34,50,4,36,34,34,51,4,64,68,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,4,0,64,17,51,67,0,20,18,51,51,4,36,34,51,51,4,64,68,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,0,0,48,34,3,0,35,34,50,0,19,17,49,0,48,17,3,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,222,237,15,0,0,0,0,0,0,0,0,0,223,188,154,169,203,253,0,0,0,0,0,0,0,224,172,120,86,101,135,202,14,0,0,0,0,0,0,190,120,69,51,51,84,135,235,0,0,0,0,0,224,139,69,18,17,17,33,84,184,14,0,0,0,0,207,88,36,17,17,17,17,66,133,252,0,0,0,0,173,71,18,17,17,17,17,33,116,218,0,0,0,0,140,37,17,17,17,17,17,17,82,200,0,0,0,240,123,20,17,17,17,17,17,17,65,183,15,0,0,224,106,19,17,17,17,17,17,17,49,166,14,0,0,208,89,19,17,17,17,17,17,17,49,149,13,0,0,208,89,19,17,17,17,17,17,17,49,149,13,0,0,224,106,19,17,17,17,17,17,17,49,166,14,0,0,240,123,20,17,17,17,17,17,17,65,183,15,0,0,0,140,37,17,17,17,17,17,17,82,200,0,0,0,0,173,71,18,17,17,17,17,33,116,218,0,0,0,0,207,88,36,17,17,17,17,66,133,252,0,0,0,0,224,139,69,18,17,17,33,84,184,14,0,0,0,0,0,190,120,69,51,51,84,135,235,0,0,0,0,0,0,224,172,120,86,101,135,202,14,0,0,0,0,0,0,0,223,188,154,169,203,253,0,0,0,0,0,0,0,0,0,240,222,237,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,18,0,0,0,0,0,17,17,17,33,0,0,0,16,17,34,33,17,1,0,0,17,33,17,17,17,17,0,0,17,18,17,17,17,17,0,16,17,17,17,17,17,17,1,16,17,17,17,17,18,33,1,16,17,17,17,17,17,17,1,16,17,17,17,17,17,33,2,0,17,17,17,17,17,17,0,0,17,17,17,18,17,18,0,0,32,17,17,17,17,1,0,0,0,17,18,17,17,0,0,0,0,0,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,19,17,0,0,0,0,0,19,17,17,18,0,0,0,48,17,17,18,17,1,0,0,51,17,17,17,17,17,0,0,51,17,17,17,17,17,0,48,19,17,34,33,17,17,1,48,35,17,17,17,17,18,1,48,19,18,17,17,17,17,1,48,19,33,17,17,17,17,1,0,51,17,17,17,33,17,0,0,51,17,34,33,17,33,0,0,48,17,17,17,34,1,0,0,0,19,17,17,17,0,0,0,0,0,19,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,17,0,0,0,0,0,51,51,18,17,0,0,0,48,51,51,17,17,1,0,0,51,51,51,17,17,17,0,0,51,51,51,18,33,17,0,48,51,51,51,17,17,34,1,48,51,51,51,17,17,17,1,48,51,51,51,17,17,17,1,48,51,51,51,17,17,17,1,0,51,51,51,17,17,17,0,0,51,51,51,17,34,17,0,0,48,51,51,17,17,2,0,0,0,51,51,17,18,0,0,0,0,0,51,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,35,0,0,0,0,0,51,51,51,19,0,0,0,48,51,51,51,51,1,0,0,51,51,51,51,51,18,0,0,51,51,51,51,51,17,0,48,51,51,51,51,51,19,1,48,51,51,51,51,51,19,1,48,51,51,51,51,51,35,2,48,51,51,51,51,51,19,1,0,51,51,51,51,51,18,0,0,51,51,51,51,51,17,0,0,48,51,51,51,51,1,0,0,0,51,51,51,19,0,0,0,0,0,51,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,17,17,17,17,0,0,0,16,18,17,17,17,1,0,0,17,17,18,18,17,17,0,0,17,17,17,33,17,18,0,16,17,17,17,17,17,17,1,16,18,33,17,18,17,17,1,16,17,17,18,18,17,17,1,16,33,17,17,33,17,17,1,0,33,33,17,17,17,17,0,0,17,17,17,17,17,17,0,0,16,17,17,17,17,1,0,0,0,33,17,17,17,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,49,0,0,0,0,0,33,17,17,49,0,0,0,16,33,17,17,17,3,0,0,17,17,17,17,34,51,0,0,17,17,17,17,17,51,0,32,17,17,17,17,33,49,3,32,17,18,17,17,17,49,3,16,18,17,33,17,17,49,3,16,17,17,17,17,17,49,3,0,17,17,17,17,18,51,0,0,17,17,17,17,17,51,0,0,16,17,17,18,17,3,0,0,0,17,17,34,49,0,0,0,0,0,17,49,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,51,0,0,0,0,0,17,17,51,51,0,0,0,32,17,17,51,51,3,0,0,17,17,17,51,51,51,0,0,33,17,33,51,51,51,0,16,17,18,17,51,51,51,3,16,17,17,18,51,51,51,3,16,17,17,17,51,51,51,3,16,18,17,17,51,51,51,3,0,17,17,17,51,51,51,0,0,17,17,17,51,51,51,0,0,16,17,17,51,51,3,0,0,0,17,17,51,51,0,0,0,0,0,17,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,49,51,0,0,0,0,0,49,51,51,51,0,0,0,16,51,51,51,51,3,0,0,17,51,51,51,51,51,0,0,17,51,51,51,51,51,0,16,49,51,51,51,51,51,3,16,49,51,51,51,51,51,3,16,49,51,51,51,51,51,3,16,49,51,51,51,51,51,3,0,17,51,51,51,51,51,0,0,33,51,51,51,51,51,0,0,16,51,51,51,51,3,0,0,0,49,51,51,51,0,0,0,0,0,49,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,3,0,0,0,0,0,16,177,68,4,0,0,0,48,19,27,59,67,2,0,32,17,59,178,178,52,68,3,71,178,177,19,27,177,59,212,119,40,27,59,19,178,171,221,227,135,182,18,177,219,220,156,94,126,119,39,194,205,221,249,103,69,136,136,221,253,159,207,126,229,228,238,159,169,250,251,53,103,110,85,249,159,202,159,230,227,87,102,201,205,252,169,112,78,110,118,252,143,168,11,0,96,53,51,152,250,15,0,0,0,224,238,175,10,0,0,0,0,0,112,13,0,0,0,0,0,0,80,3,0,0,0,0,0,48,114,37,3,0,0,0,48,49,51,82,36,2,0,64,97,83,17,49,17,37,4,88,117,67,50,20,33,81,228,166,72,118,50,50,21,227,236,167,167,56,19,50,245,255,203,153,119,120,41,242,239,190,221,150,74,150,119,255,206,190,223,151,118,136,150,255,172,253,255,165,152,153,101,219,235,205,188,135,169,118,154,219,206,238,204,144,168,119,186,221,252,223,11,0,112,106,86,251,255,15,0,0,0,144,117,251,15,0,0,0,0,0,160,11,0,0,0,0,0,0,16,1,0,0,0,0,0,16,65,36,1,0,0,0,16,33,50,34,18,1,0,16,49,34,67,36,34,34,1,149,52,67,68,52,34,66,249,102,101,34,50,35,34,166,252,134,87,100,51,35,166,202,254,133,119,86,149,169,187,235,254,101,135,102,184,235,220,222,253,101,135,119,183,205,238,222,252,133,136,136,166,203,237,238,253,136,119,136,167,218,236,206,253,176,103,135,166,202,236,237,15,0,160,118,167,218,188,15,0,0,0,160,185,237,15,0,0,0,0,0,240,15,0,0,0,0,0,0,32,5,0,0,0,0,0,48,33,18,4,0,0,0,80,84,34,20,101,3,0,48,65,50,19,33,51,85,2,41,65,34,83,67,53,65,195,118,57,53,52,17,33,226,205,102,118,55,35,85,212,252,206,137,121,153,70,193,237,220,187,105,121,152,153,191,237,238,203,104,120,151,118,190,188,219,236,118,152,119,134,187,236,189,187,153,118,134,118,206,223,238,190,96,136,105,119,188,219,220,12,0,160,152,105,187,255,15,0,0,0,112,153,188,15,0,0,0,0,0,144,14,0,0,0,0,0,0,16,1,0,0,0,0,0,16,68,36,1,0,0,0,32,68,52,34,18,1,0,32,67,52,51,34,34,35,1,149,52,35,34,34,67,68,249,104,101,34,50,67,68,169,251,152,87,117,51,68,169,202,253,136,103,102,149,169,186,203,254,152,103,118,169,235,188,203,254,152,103,118,201,237,188,203,254,152,103,134,201,221,172,202,254,136,103,134,200,237,188,203,254,176,103,118,217,237,188,203,15,0,160,118,201,221,188,15,0,0,0,160,200,221,15,0,0,0,0,0,240,15,0,0,0,0,0,0,80,1,0,0,0,0,0,16,98,69,2,0,0,0,128,54,53,37,66,3,0,80,66,51,66,54,20,20,5,86,37,35,50,51,17,17,209,150,71,36,66,19,36,242,189,151,170,25,18,34,212,236,235,150,154,167,26,196,204,207,220,138,168,105,167,251,252,188,237,136,119,153,86,253,253,207,252,136,84,136,86,255,206,222,203,151,105,105,121,252,203,189,253,128,104,88,150,223,190,203,11,0,112,150,136,239,251,15,0,0,0,144,153,253,13,0,0,0,0,0,96,12,0,0,0,0,0,0,16,1,0,0,0,0,0,32,68,36,1,0,0,0,16,67,68,50,19,1,0,32,68,52,34,34,34,36,1,149,68,35,17,33,66,84,249,136,117,34,34,35,67,169,254,153,104,133,67,68,169,235,254,152,103,103,150,185,203,203,254,152,103,134,185,235,188,187,253,136,102,118,217,238,189,187,254,152,103,118,201,238,187,203,254,153,104,118,200,237,188,219,254,192,120,119,201,237,189,219,15,0,176,135,201,238,189,15,0,0,0,176,217,237,15,0,0,0,0,0,240,15,0,0,0,0,0,0,64,4,0,0,0,0,0,16,52,50,3,0,0,0,32,115,17,52,66,4,0,16,52,50,67,17,55,66,4,22,17,68,50,66,17,52,212,175,73,17,71,67,67,225,253,102,95,118,17,36,130,254,222,86,89,175,70,225,254,238,206,102,185,169,111,253,236,142,189,105,182,165,107,203,136,238,238,89,166,171,106,200,252,222,238,154,105,170,90,204,205,140,216,144,105,166,105,205,136,140,12,0,144,85,169,184,204,8,0,0,0,96,86,205,13,0,0,0,0,0,96,13,0,0,0,0,0,0,112,7,0,0,0,0,0,32,103,100,6,0,0,0,64,134,66,103,116,7,0,32,103,100,134,34,104,116,7,33,34,120,100,116,34,103,55,17,129,36,120,118,119,52,51,153,17,129,36,72,52,51,239,153,91,17,129,50,51,255,239,153,219,203,17,51,254,175,222,155,217,201,156,237,170,255,255,155,201,205,156,234,254,239,255,188,155,204,156,238,238,174,234,176,155,201,155,238,170,94,14,0,176,85,203,218,237,5,0,0,0,176,153,238,14,0,0,0,0,0,144,14,0,0,0,0,0,0,48,2,0,0,0,0,0,16,50,82,3,0,0,0,48,50,19,51,49,2,0,48,51,50,83,97,51,53,2,55,35,35,99,102,97,86,210,167,42,51,34,51,21,226,205,117,25,55,17,83,131,254,222,39,25,169,87,243,30,255,222,119,185,186,122,205,253,143,205,121,199,178,107,220,136,255,238,42,183,187,122,216,253,239,255,154,122,186,43,204,221,141,232,144,121,167,121,205,136,141,13,0,144,17,170,200,220,8,0,0,0,144,39,222,13,0,0,0,0,0,112,13,0,0,0,0,0,0,16,11,0,0,0,0,0,176,187,187,4,0,0,0,176,34,178,100,187,11,0,64,182,33,178,187,187,187,11,190,187,187,187,43,179,17,242,238,183,187,187,187,187,241,152,126,126,78,180,68,243,255,152,69,231,238,190,244,255,255,152,85,174,62,85,255,221,185,255,62,229,229,52,255,255,255,207,234,238,94,62,153,248,255,204,234,238,238,238,137,248,255,205,224,238,238,119,143,255,223,15,0,224,238,170,252,255,15,0,0,0,112,126,253,15,0,0,0,0,0,112,13,0,0,0,0,0,0,32,8,0,0,0,0,0,208,52,129,4,0,0,0,128,42,131,40,66,3,0,128,211,51,52,68,39,216,10,47,56,18,67,209,211,52,243,229,141,210,55,18,135,253,191,83,246,45,67,141,248,239,204,37,22,246,127,250,31,238,204,85,182,153,230,191,236,126,172,86,181,146,89,202,119,238,204,41,149,154,89,199,252,206,238,105,86,153,41,187,204,124,199,96,86,149,86,188,119,76,12,0,96,17,153,183,203,4,0,0,0,96,37,204,12,0,0,0,0,0,80,12,0,0,0,0,0,0,16,1,0,0,0,0,0,16,55,17,1,0,0,0,16,19,118,119,97,5,0,16,19,113,17,103,23,17,1,18,23,119,17,17,17,51,193,34,82,86,85,22,17,225,75,154,41,121,118,49,209,77,76,146,186,170,18,65,68,68,68,40,171,42,134,68,221,79,68,34,34,42,39,228,254,68,68,40,171,34,34,223,68,223,204,34,43,153,130,68,79,220,68,32,146,169,40,74,205,222,4,0,144,153,130,68,212,13,0,0,0,144,34,244,4,0,0,0,0,0,32,4,0,0,0,0,0,0,48,1,0,0,0,0,0,48,129,50,1,0,0,0,16,131,67,145,19,2,0,16,68,24,148,34,50,25,3,36,24,66,73,66,24,36,248,117,37,56,146,66,49,232,253,212,120,133,34,129,163,250,251,103,213,182,135,148,187,252,250,215,104,214,214,170,159,235,156,215,167,215,215,159,172,170,186,216,216,165,166,186,255,171,158,215,214,118,197,255,252,159,218,176,198,213,103,234,251,171,15,0,208,103,181,250,252,15,0,0,0,192,119,253,10,0,0,0,0,0,208,11,0,0,0,0,0,0,64,1,0,0,0,0,0,32,113,49,1,0,0,0,16,114,67,129,20,2,0,32,52,23,131,19,51,23,3,37,24,68,40,34,24,50,232,101,37,55,130,51,49,231,251,165,118,118,34,113,130,233,234,117,197,198,134,132,186,252,233,197,86,182,198,153,143,234,138,165,183,181,197,142,171,153,153,199,199,181,165,169,239,171,142,198,199,102,197,239,251,143,202,160,198,197,102,233,252,156,14,0,144,102,164,234,235,15,0,0,0,160,102,252,9,0,0,0,0,0,192,9,0,0,0,0,0,0,48,1,0,0,0,0,0,32,113,50,1,0,0,0,16,114,35,129,20,3,0,16,52,24,114,18,68,23,3,53,24,51,56,50,24,52,247,102,53,71,113,51,33,232,236,197,102,134,67,129,131,233,251,102,164,198,118,130,203,235,234,181,102,183,198,153,142,252,139,199,182,198,199,158,154,154,169,183,182,197,182,169,255,153,158,199,198,102,197,254,249,142,154,160,182,181,101,249,233,171,14,0,192,102,197,233,234,15,0,0,0,176,101,249,9,0,0,0,0,0,192,11,0,0,0,0,0,0,48,1,0,0,0,0,0,32,113,35,2,0,0,0,16,130,51,146,19,3,0,16,51,24,132,19,52,24,3,69,24,50,41,33,23,51,248,86,53,56,129,51,33,247,253,181,102,150,34,129,146,250,251,118,213,214,135,147,189,253,250,213,86,215,231,202,159,253,157,215,215,198,215,159,204,170,171,214,183,197,214,186,255,203,159,215,230,102,196,255,251,159,187,208,197,213,86,250,251,173,15,0,208,118,181,253,250,15,0,0,0,176,117,251,11,0,0,0,0,0,224,12,0,0,0,0,0,0,48,1,0,0,0,0,0,32,129,66,1,0,0,0,16,146,51,129,20,3,0,32,52,40,130,19,67,40,3,69,25,51,57,34,24,67,248,87,37,72,146,51,49,232,236,197,119,134,34,129,146,235,235,118,197,198,135,147,204,252,234,197,102,199,198,170,159,235,155,167,198,199,182,158,188,154,170,215,199,181,182,186,239,188,159,198,214,118,197,238,251,158,187,192,198,197,102,234,235,171,14,0,160,87,196,235,234,15,0,0,0,160,102,251,11,0,0,0,0,0,208,10,0,0,0,0,0,0,32,1,0,0,0,0,0,32,113,34,2,0,0,0,16,114,68,130,19,2,0,48,51,39,115,18,68,39,3,36,24,67,56,33,23,51,247,86,37,70,129,52,49,231,251,181,103,117,34,97,145,250,252,101,213,199,118,131,189,251,249,213,87,214,215,154,143,250,139,182,166,214,214,142,170,154,154,214,214,165,165,201,255,219,159,214,214,102,180,239,253,143,185,208,197,197,101,249,253,156,15,0,176,87,196,250,233,15,0,0,0,176,118,252,9,0,0,0,0,0,208,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,16,34,33,2,0,0,0,0,32,18,34,33,0,0,0,0,34,33,18,34,0,0,0,0,16,34,33,2,0,0,0,0,0,18,34,0,0,0,0,0,0,32,16,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,16,34,33,2,0,0,0,0,32,18,34,33,0,0,0,0,34,33,18,34,0,0,0,0,16,34,33,2,0,0,0,0,0,18,34,0,0,0,0,0,0,32,16,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,32,51,50,3,0,0,0,0,48,35,51,50,0,0,0,0,51,50,35,51,0,0,0,0,32,51,50,3,0,0,0,0,0,35,51,0,0,0,0,0,0,48,32,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,16,34,33,2,0,0,0,0,32,18,34,33,0,0,0,0,34,33,18,34,0,0,0,0,16,34,33,2,0,0,0,0,0,18,34,0,0,0,0,0,0,32,16,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,16,34,33,2,0,0,0,0,32,18,34,33,0,0,0,0,34,33,18,34,0,0,0,0,16,34,33,2,0,0,0,0,0,18,34,0,0,0,0,0,0,32,16,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,16,51,49,3,0,0,0,0,48,19,51,49,0,0,0,0,51,49,19,51,0,0,0,0,16,51,49,3,0,0,0,0,0,19,51,0,0,0,0,0,0,48,16,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,1,0,0,0,0,0,208,122,29,3,0,0,0,48,221,138,221,29,2,0,208,221,221,221,45,209,221,13,36,18,221,221,50,66,102,243,78,22,61,50,101,77,165,191,188,94,213,210,214,173,249,252,206,238,230,222,141,249,191,188,238,94,132,231,248,175,143,191,238,238,238,153,204,252,255,255,238,238,101,238,220,255,191,251,52,94,151,126,255,255,249,255,80,228,230,103,255,143,154,15,0,224,100,233,255,249,15,0,0,0,224,238,152,9,0,0,0,0,0,224,9,0,0,0,0,0,0,16,1,0,0,0,0,0,48,50,50,3,0,0,0,32,18,84,52,17,3,0,64,68,19,65,69,17,33,2,22,84,36,50,68,66,68,225,118,40,82,85,19,33,197,205,151,119,40,51,35,241,204,255,152,121,102,55,211,206,252,255,119,170,134,136,204,238,221,204,122,166,153,122,252,255,223,187,137,118,121,170,237,204,221,252,151,169,122,150,206,219,239,238,112,169,154,102,222,254,223,14,0,96,135,152,239,223,11,0,0,0,112,170,254,13,0,0,0,0,0,128,12,0,0,0,0,0,0,16,2,0,0,0,0,0,48,86,101,6,0,0,0,48,21,198,22,17,3,0,96,57,18,49,153,51,33,3,36,102,57,17,53,147,105,227,68,42,149,153,35,17,185,189,170,119,23,51,53,225,136,238,199,74,68,87,185,141,232,255,71,204,167,119,216,190,219,139,74,196,172,124,251,255,190,184,124,68,119,199,237,187,221,251,116,172,71,196,139,184,191,238,112,204,124,68,190,251,190,11,0,64,164,170,223,223,8,0,0,0,112,204,235,11,0,0,0,0,0,64,8,0,0,0,0,0,0,16,2,0,0,0,0,0,64,25,35,2,0,0,0,64,68,52,66,19,3,0,16,34,65,84,67,66,18,2,72,50,66,34,65,36,35,209,166,22,33,50,19,66,212,188,156,153,24,49,66,185,204,220,137,135,136,38,242,238,238,252,138,170,152,103,220,205,253,237,103,90,170,153,220,239,238,253,104,119,117,153,237,253,236,238,102,167,105,167,189,207,187,205,128,152,104,119,188,220,187,11,0,96,199,104,189,190,11,0,0,0,96,134,206,14,0,0,0,0,0,128,12,0,0,0,0,0,0,80,3,0,0,0,0,0,80,52,66,5,0,0,0,48,51,33,19,69,1,0,16,33,21,37,18,84,66,3,40,85,83,17,50,83,18,178,105,74,19,68,18,83,180,207,121,102,38,21,20,179,205,205,136,152,167,40,211,252,207,255,152,154,121,119,204,252,220,251,150,122,120,102,206,221,190,239,150,122,151,154,191,223,206,255,134,153,168,152,255,190,238,235,144,135,153,105,251,237,255,12,0,96,150,137,255,237,13,0,0,0,144,170,251,13,0,0,0,0,0,112,11,0,0,0,0,0,0,192,5,0,0,0,0,0,80,196,44,12,0,0,0,192,33,87,92,44,2,0,192,193,196,60,195,33,204,1,56,60,196,204,204,33,76,242,238,206,204,204,17,204,243,169,231,238,54,204,193,252,249,191,190,174,102,35,252,255,159,191,228,234,100,238,251,223,143,255,238,126,78,126,251,191,255,249,117,238,238,110,223,191,159,248,238,231,238,238,249,255,159,255,128,231,110,230,191,255,255,9,0,80,71,228,255,251,10,0,0,0,224,230,255,15,0,0,0,0,0,224,13,0,0,0,0,0,0,112,6,0,0,0,0,0,32,17,119,2,0,0,0,32,34,28,97,103,3,0,48,19,33,195,35,118,119,6,121,195,17,19,49,194,108,214,161,51,60,60,35,194,179,221,225,169,199,54,195,210,221,253,136,161,170,58,220,221,221,186,102,97,153,170,221,255,175,159,17,230,230,158,164,196,244,171,119,110,129,104,250,73,185,191,238,225,102,230,175,186,251,253,160,136,110,120,154,180,203,12,0,128,136,232,207,249,15,0,0,0,224,142,204,13,0,0,0,0,0,112,11,0,0,0,0,0,0,48,3,0,0,0,0,0,48,187,68,6,0,0,0,96,51,43,50,52,1,0,48,34,107,179,179,52,68,6,71,177,19,17,27,177,59,211,120,24,59,75,52,179,147,204,238,136,180,51,179,214,221,253,102,133,136,24,219,221,205,169,119,70,136,120,221,245,95,207,129,231,230,142,93,170,245,210,69,136,94,70,249,207,220,173,238,38,120,231,223,45,253,251,112,126,142,130,253,223,202,9,0,64,103,230,197,252,15,0,0,0,224,126,155,8,0,0,0,0,0,64,9,0,0,0,0,0,0,32,2,0,0,0,0,0,16,255,34,2,0,0,0,32,17,27,43,34,4,0,64,35,27,177,177,227,40,2,38,180,178,18,27,177,43,146,108,70,43,235,24,177,203,170,223,101,183,36,178,171,234,137,85,109,86,69,164,169,250,232,68,69,230,102,153,233,142,158,101,196,212,221,143,152,233,233,119,245,93,85,232,254,232,206,221,214,69,67,158,153,249,204,80,131,237,85,233,190,202,12,0,112,103,102,206,236,14,0,0,0,208,221,204,12,0,0,0,0,0,96,12,0,0,0,0,0,0,80,5,0,0,0,0,0,80,35,50,5,0,0,0,80,51,17,17,51,5,0,80,37,17,51,51,17,82,5,84,37,17,51,51,17,82,181,135,84,51,17,17,51,181,218,231,136,86,35,50,181,218,175,104,231,135,84,181,219,175,188,230,104,231,135,218,175,189,191,119,228,104,231,175,188,191,218,231,135,228,120,189,191,219,175,120,231,135,230,191,218,175,188,224,121,231,135,218,175,187,15,0,224,120,231,175,188,15,0,0,0,224,120,188,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,32,194,52,1,0,0,0,48,193,18,195,52,1,0,32,195,52,193,34,195,51,1,197,19,194,51,193,35,195,148,101,197,19,195,52,193,147,216,229,102,197,34,195,148,216,143,87,230,102,197,147,217,143,171,229,87,230,102,216,143,157,175,102,229,87,230,143,155,159,216,230,102,229,87,157,175,217,143,87,229,102,229,175,216,143,171,224,87,230,102,216,143,154,15,0,224,87,230,143,155,15,0,0,0,224,86,171,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,32,194,52,1,0,0,0,48,193,18,195,52,1,0,32,195,52,193,34,195,51,1,197,19,194,51,193,35,195,148,101,197,19,195,52,193,147,216,229,102,197,34,195,148,216,143,87,230,102,197,147,217,143,171,229,87,230,102,216,143,157,175,102,229,87,230,143,155,159,216,230,102,229,87,157,175,217,143,87,229,102,229,175,216,143,171,224,87,230,102,216,143,154,15,0,224,87,230,143,155,15,0,0,0,224,86,171,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,32,194,52,1,0,0,0,48,193,18,195,52,1,0,32,195,52,193,34,195,51,1,197,19,194,51,193,35,195,148,101,197,19,195,52,193,147,216,229,102,197,34,195,148,216,143,87,230,102,197,147,217,143,171,229,87,230,102,216,143,157,175,102,229,87,230,143,155,159,216,230,102,229,87,157,175,217,143,87,229,102,229,175,216,143,171,224,87,230,102,216,143,154,15,0,224,87,230,143,155,15,0,0,0,224,86,171,15,0,0,0,0,0,224,15,0,0,0,0,0,0,96,6,0,0,0,0,0,96,35,50,6,0,0,0,96,51,17,17,51,6,0,96,38,17,34,34,17,98,6,100,38,17,34,34,17,98,198,135,100,51,17,17,51,198,219,229,133,100,35,50,182,218,175,88,229,135,100,198,219,175,189,228,88,231,133,218,175,188,175,117,228,89,229,175,188,191,218,229,119,228,89,188,191,219,175,72,229,119,228,175,218,175,189,224,88,229,119,218,175,188,15,0,224,89,229,175,189,15,0,0,0,224,88,188,15,0,0,0,0,0,224,15,0,0,0,0,0,0,64,1,0,0,0,0,0,32,211,68,1,0,0,0,64,209,18,211,68,1,0,16,209,68,209,35,212,68,1,213,19,211,68,209,19,210,180,119,213,34,211,68,209,179,202,230,118,213,35,211,180,201,159,103,230,119,213,179,202,159,188,229,103,231,118,201,159,187,159,118,229,104,230,159,187,175,201,230,119,229,104,171,191,202,159,103,230,119,229,159,217,159,188,224,104,230,119,201,159,187,15,0,224,104,230,159,172,15,0,0,0,224,103,187,15,0,0,0,0,0,224,15,0,0,0,0,0,0,64,1,0,0,0,0,0,32,211,68,1,0,0,0,64,209,18,211,68,1,0,16,209,68,209,35,212,68,1,213,19,211,68,209,19,210,180,119,213,34,211,68,209,179,202,230,118,213,35,211,180,201,159,103,230,119,213,179,202,159,188,229,103,231,118,201,159,187,159,118,229,104,230,159,187,175,201,230,119,229,104,171,191,202,159,103,230,119,229,159,217,159,188,224,104,230,119,201,159,187,15,0,224,104,230,159,172,15,0,0,0,224,103,187,15,0,0,0,0,0,224,15,0,0,0,0,0,0,64,1,0,0,0,0,0,32,211,68,1,0,0,0,64,209,18,211,68,1,0,16,209,68,209,35,212,68,1,213,19,211,68,209,19,210,180,119,213,34,211,68,209,179,202,230,118,213,35,211,180,201,159,103,230,119,213,179,202,159,188,229,103,231,118,201,159,187,159,118,229,104,230,159,187,175,201,230,119,229,104,171,191,202,159,103,230,119,229,159,217,159,188,224,104,230,119,201,159,187,15,0,224,104,230,159,172,15,0,0,0,224,103,187,15,0,0,0,0,0,224,15,0,0,0,0,0,0,16,1,0,0,0,0,0,16,78,228,1,0,0,0,16,174,35,50,234,1,0,16,65,35,170,170,50,20,1,22,65,35,170,170,50,20,209,120,22,174,35,50,234,177,187,104,89,22,78,228,209,220,191,104,88,151,22,209,219,191,204,246,136,101,136,187,191,219,189,134,247,102,136,223,205,221,221,134,149,248,101,189,189,221,223,152,153,105,246,219,187,191,219,240,153,103,136,221,207,189,11,0,240,121,86,223,203,12,0,0,0,240,118,219,13,0,0,0,0,0,240,11,0,0,0,0,0,0,64,2,0,0,0,0,0,48,212,17,1,0,0,0,64,82,17,212,20,1,0,64,210,37,19,67,209,84,2,39,68,213,18,68,20,212,194,136,23,51,211,84,34,163,170,120,105,71,33,210,196,203,175,120,104,152,87,196,202,175,187,231,136,118,152,170,175,202,172,151,232,119,136,207,188,204,204,151,150,232,118,172,172,204,207,152,153,121,231,202,170,175,202,224,153,120,136,204,191,172,10,0,224,137,103,207,186,11,0,0,0,224,135,202,12,0,0,0,0,0,224,10,0,0,0,0,0,0,64,2,0,0,0,0,0,48,212,17,1,0,0,0,64,82,17,212,20,1,0,64,210,37,19,67,209,84,2,39,68,213,18,68,20,212,194,136,23,51,211,84,34,163,170,120,105,71,33,210,196,203,175,120,104,152,87,196,202,175,187,231,136,118,152,170,175,202,172,151,232,119,136,207,188,204,204,151,150,232,118,172,172,204,207,152,153,121,231,202,170,175,202,224,153,120,136,204,191,172,10,0,224,137,103,207,186,11,0,0,0,224,135,202,12,0,0,0,0,0,224,10,0,0,0,0,0,0,64,2,0,0,0,0,0,48,212,17,1,0,0,0,64,82,17,212,20,1,0,64,210,37,19,67,209,84,2,39,68,213,18,68,20,212,194,136,23,51,211,84,34,163,170,120,105,71,33,210,196,203,175,120,104,152,87,196,202,175,187,231,136,118,152,170,175,202,172,151,232,119,136,207,188,204,204,151,150,232,118,172,172,204,207,152,153,121,231,202,170,175,202,224,153,120,136,204,191,172,10,0,224,137,103,207,186,11,0,0,0,224,135,202,12,0,0,0,0,0,224,10,0,0,0,0,0,0,80,5,0,0,0,0,0,80,36,66,5,0,0,0,80,52,17,17,67,5,0,80,37,17,51,51,17,82,5,86,37,17,51,51,17,82,197,136,86,52,17,17,67,197,219,231,136,86,36,66,181,219,175,105,232,136,86,197,219,175,205,230,121,231,152,219,175,204,191,136,230,121,232,175,204,207,219,232,136,230,105,205,207,219,175,105,232,136,230,207,218,175,188,224,105,232,152,219,175,204,15,0,224,105,231,175,205,15,0,0,0,224,105,204,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,16,178,51,1,0,0,0,32,177,18,178,51,1,0,16,178,51,177,18,178,51,1,181,18,178,51,177,18,178,147,102,181,34,178,51,177,146,216,230,102,181,19,178,131,216,143,86,230,102,181,146,216,143,157,229,103,230,102,216,143,153,143,102,229,103,230,143,154,159,216,230,102,229,86,157,159,216,143,86,230,102,229,159,216,143,138,224,87,230,102,216,143,201,15,0,224,86,230,143,157,15,0,0,0,224,86,156,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,16,178,51,1,0,0,0,32,177,18,178,51,1,0,16,178,51,177,18,178,51,1,181,18,178,51,177,18,178,147,102,181,34,178,51,177,146,216,230,102,181,19,178,131,216,143,86,230,102,181,146,216,143,157,229,103,230,102,216,143,153,143,102,229,103,230,143,154,159,216,230,102,229,86,157,159,216,143,86,230,102,229,159,216,143,138,224,87,230,102,216,143,201,15,0,224,86,230,143,157,15,0,0,0,224,86,156,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,16,178,51,1,0,0,0,32,177,18,178,51,1,0,16,178,51,177,18,178,51,1,181,18,178,51,177,18,178,147,102,181,34,178,51,177,146,216,230,102,181,19,178,131,216,143,86,230,102,181,146,216,143,157,229,103,230,102,216,143,153,143,102,229,103,230,143,154,159,216,230,102,229,86,157,159,216,143,86,230,102,229,159,216,143,138,224,87,230,102,216,143,201,15,0,224,86,230,143,157,15,0,0,0,224,86,156,15,0,0,0,0,0,224,15,0,0,0,0,0,0,96,3,0,0,0,0,0,16,32,49,1,0,0,0,64,22,37,35,35,5,0,144,33,52,81,99,82,50,6,24,21,65,6,34,84,66,212,8,102,37,22,49,5,226,238,64,120,42,100,37,227,206,219,138,168,144,74,178,219,239,207,218,105,87,153,191,191,239,251,167,166,121,135,251,219,189,220,100,5,167,7,252,251,189,190,148,100,169,169,220,252,236,204,144,136,138,117,235,189,224,14,0,0,121,106,219,255,15,0,0,0,112,105,251,15,0,0,0,0,0,112,15,0,0,0,0,0,0,16,2,0,0,0,0,0,16,52,53,5,0,0,0,144,53,23,68,115,7,0,16,17,67,17,53,65,36,2,72,66,50,145,51,18,66,242,136,122,113,69,82,2,228,190,89,154,58,17,101,210,239,188,172,9,138,56,243,223,190,237,250,112,134,105,251,189,192,221,120,150,121,152,206,254,188,201,87,105,136,128,249,252,201,253,88,7,172,152,237,190,221,221,64,137,250,108,203,191,190,13,0,128,166,250,254,191,11,0,0,0,112,166,206,13,0,0,0,0,0,112,13,0,0,0,0,0,0,80,1,0,0,0,0,0,32,35,98,4,0,0,0,32,98,130,50,64,6,0,32,19,19,51,16,81,50,5,70,33,16,17,82,64,68,179,5,88,5,52,85,32,197,206,8,9,41,82,80,211,186,190,103,150,137,57,211,12,222,237,118,6,116,128,190,12,15,234,84,135,103,121,176,10,206,206,103,154,103,137,189,206,238,238,152,64,118,144,188,172,0,205,144,119,136,150,202,240,190,12,0,112,144,0,191,236,13,0,0,0,144,122,174,14,0,0,0,0,0,96,10,0,0,0,0,0,0,32,2,0,0,0,0,0,64,21,81,3,0,0,0,32,21,49,51,17,3,0,48,34,67,85,35,34,34,1,54,17,83,3,54,70,150,181,160,72,52,35,17,84,217,235,106,154,40,96,65,196,203,251,154,168,137,22,179,189,14,254,202,102,119,112,190,206,254,254,168,138,119,74,235,203,236,223,135,105,170,70,173,205,188,15,198,120,151,137,203,206,13,205,160,121,7,102,204,190,14,15,0,144,166,166,171,222,12,0,0,0,160,166,191,11,0,0,0,0,0,144,13,0,0,0,0,0,0,32,2,0,0,0,0,0,32,162,68,4,0,0,0,64,19,49,52,36,3,0,32,42,33,84,52,68,69,4,167,35,33,19,17,59,36,209,150,57,50,52,17,162,227,207,167,127,183,18,33,196,252,206,104,136,136,40,227,237,238,222,104,138,169,104,237,221,252,239,119,168,133,104,239,238,204,236,93,153,118,137,204,254,204,236,103,102,102,135,205,222,204,221,160,104,105,150,206,204,222,14,0,96,102,150,206,220,12,0,0,0,208,135,237,13,0,0,0,0,0,96,15,0,0,0,0,0,0,32,2,0,0,0,0,0,32,0,0,2,0,0,0,32,0,17,17,0,2,0,32,0,0,0,0,0,0,2,36,0,0,0,0,0,0,98,0,36,0,0,0,0,98,96,0,0,36,0,0,98,0,96,0,3,0,36,98,0,0,96,0,0,0,64,0,0,0,96,0,0,0,64,0,0,0,96,0,0,0,64,80,0,0,96,0,0,0,64,0,0,0,103,64,0,0,64,0,0,0,6,0,64,0,64,0,0,6,0,0,0,64,64,0,6,0,0,0,0,0,64,6,0,0,0,0,0,0,48,3,0,0,0,0,0,32,146,221,3,0,0,0,48,221,57,57,85,1,0,48,34,57,146,147,51,51,3,54,145,146,35,57,146,57,179,86,22,41,57,35,146,99,188,228,22,146,18,85,179,187,251,97,222,102,22,41,219,187,184,77,70,102,119,252,252,159,159,126,20,228,110,175,201,251,203,68,215,110,70,251,223,186,146,226,228,71,228,189,204,252,255,96,78,126,102,252,143,168,6,0,32,70,229,168,251,15,0,0,0,224,110,111,6,0,0,0,0,0,32,12,0,0,0,0,0,0,16,1,0,0,0,0,0,16,85,85,1,0,0,0,16,68,68,68,69,1,0,16,66,180,18,65,75,68,1,178,85,181,85,85,91,85,59,115,178,34,34,34,34,59,252,151,121,178,102,102,59,168,253,153,54,51,178,59,205,200,250,55,51,126,233,200,253,252,248,51,118,153,231,218,63,253,248,118,158,231,227,173,200,138,253,153,231,227,227,141,204,207,252,224,51,99,231,168,141,218,15,0,224,151,233,216,138,15,0,0,0,224,231,204,15,0,0,0,0,0,224,15,0,0,0,0,0,0,80,5,0,0,0,0,0,80,50,36,5,0,0,0,80,68,51,50,68,5,0,80,52,51,18,17,51,67,5,86,35,18,17,17,34,34,181,105,86,68,17,33,68,181,235,120,102,86,68,67,181,203,237,122,103,102,86,181,203,220,253,119,122,103,103,219,204,252,222,119,152,138,135,222,253,238,221,136,136,153,138,254,238,238,237,122,119,153,137,221,238,205,253,160,106,118,119,237,205,252,15,0,160,106,136,237,252,15,0,0,0,160,154,254,15,0,0,0,0,0,160,15,0,0,0,0,0,0,80,5,0,0,0,0,0,80,50,36,5,0,0,0,80,68,51,50,68,5,0,80,52,51,18,17,51,67,5,86,35,18,17,17,34,34,181,104,86,68,17,33,68,181,219,153,104,86,68,67,181,203,238,153,121,104,86,181,203,204,189,150,118,119,105,219,204,220,239,249,247,135,153,222,188,187,237,153,119,134,150,238,191,223,237,154,120,247,249,190,188,204,253,160,122,135,153,239,204,253,15,0,160,138,153,222,252,15,0,0,0,160,138,253,15,0,0,0,0,0,160,15,0,0,0,0,0,0,80,5,0,0,0,0,0,80,50,36,5,0,0,0,80,68,51,50,68,5,0,80,52,51,18,17,51,67,5,90,35,18,17,17,34,34,245,170,90,68,17,33,68,245,255,153,153,89,68,67,229,239,238,136,152,152,90,245,239,221,221,102,119,136,169,255,222,204,203,119,102,118,152,223,204,188,204,137,102,102,119,205,188,204,237,154,120,103,118,204,203,220,254,160,153,136,118,204,220,238,15,0,144,152,137,220,238,14,0,0,0,144,154,255,14,0,0,0,0,0,160,15,0,0,0,1,0,0,16,0,0,0,16,16,0,16,16,16,0,0,1,0,1,1,16,0,1,16,0,0,16,0,16,0,16,1,0,0,1,17,17,17,16,1,0,16,0,16,16,16,1,16,0,0,0,1,17,16,1,0,0,16,0,1,16,1,1,16,0,17,17,17,17,17,17,17,17,16,0,17,17,16,1,16,0,0,1,16,17,17,1,1,0,0,16,1,16,0,16,0,0,0,16,1,16,0,1,1,0,0,1,16,16,16,0,16,0,16,0,0,16,0,0,0,1,1,0,0,16,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,0,1,0,0,16,0,1,1,16,0,0,0,0,1,16,0,1,0,0,0,0,16,16,16,0,0,0,0,0,0,1,1,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,1,1,3,3,16,0,0,2,3,3,4,4,48,0,0,3,5,5,6,6,82,0,0,6,7,7,8,8,116,0,0,8,9,9,9,9,96,0,0,9,10,10,10,10,154,0,0,11,11,11,12,12,171,0,0,12,12,12,13,13,204,0,0,14,14,14,14,14,222,0,0,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,80,81,49,0,96,66,80,49,0,2,2,1,32,0,32,0,128,131,115,82,57,21,88,49,0,4,4,3,80,32,64,2,176,182,166,133,108,57,155,115,0,7,7,6,128,80,112,5,224,233,217,248,201,231,201,183,0,10,10,10,10,9,10,9,0,11,11,11,12,11,11,11,0,13,13,12,13,12,13,12,0,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,1,0,1,0,0,16,0,1,1,16,0,0,0,0,1,16,0,1,0,0,0,0,16,16,16,0,0,0,0,0,0,1,1,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,80,2,0,0,0,0,0,64,50,82,1,0,0,0,80,50,66,66,82,1,0,80,50,82,65,82,49,82,1,72,66,65,65,50,82,49,209,137,71,81,65,81,50,209,189,152,122,70,81,66,209,190,239,138,152,106,71,210,189,223,189,152,122,151,122,190,223,189,239,138,151,138,151,239,190,239,189,152,122,152,138,189,239,190,223,138,167,106,152,239,189,239,189,144,138,151,122,205,223,189,15,0,160,122,151,223,190,15,0,0,0,144,122,189,15,0,0,0,0,0,144,15,0,0,0,0,0,0,64,2,0,0,0,0,0,80,66,81,1,0,0,0,80,82,82,65,82,1,0,80,65,66,66,82,50,82,2,71,82,65,81,65,66,65,209,106,71,82,65,98,49,209,190,151,138,71,82,49,226,189,223,137,151,122,71,209,189,223,189,152,122,151,138,189,223,189,239,122,152,122,150,239,189,223,189,150,138,151,122,189,223,190,223,137,151,106,150,239,189,223,189,144,122,151,122,189,223,189,15,0,144,122,150,223,189,15,0,0,0,144,121,189,15,0,0,0,0,0,144,15,0,0,0,0,0,0,80,2,0,0,0,0,0,64,50,81,1,0,0,0,80,66,66,49,81,2,0,80,65,81,66,82,49,82,2,71,82,49,82,50,81,65,225,122,54,82,66,65,65,210,189,151,121,71,82,66,209,190,223,106,150,122,55,226,190,223,189,151,122,150,106,190,223,189,223,122,167,122,150,223,190,239,189,150,122,151,106,190,239,189,223,122,150,106,150,223,189,239,189,144,121,151,106,190,223,189,15,0,144,122,151,223,205,15,0,0,0,160,106,205,15,0,0,0,0,0,144,15,0,0,0,0,0,0,64,2,0,0,0,0,0,80,65,82,1,0,0,0,64,49,82,50,66,2,0,80,50,65,66,81,49,81,1,71,81,66,81,66,82,65,210,122,70,82,66,65,50,209,189,150,106,71,66,49,210,189,223,138,151,106,70,226,189,223,189,150,138,150,106,190,239,190,223,105,151,106,150,223,189,239,189,152,106,151,138,190,239,189,223,138,151,138,152,239,190,223,189,144,122,152,105,189,223,190,15,0,144,122,166,223,189,15,0,0,0,144,105,189,15,0,0,0,0,0,144,15,0,0,0,0,0,0,80,1,0,0,0,0,0,80,66,66,1,0,0,0,80,50,81,66,82,1,0,80,66,82,66,82,65,81,2,70,81,65,82,66,81,65,209,122,70,66,50,82,66,209,190,151,122,70,65,66,209,190,223,122,151,106,71,226,206,239,206,151,122,150,122,206,239,205,239,138,151,122,150,239,206,239,205,151,106,167,122,206,239,205,223,122,150,106,151,223,205,223,205,144,138,151,122,205,223,205,15,0,160,122,151,223,205,15,0,0,0,144,106,189,15,0,0,0,0,0,144,15,0,0,0,0,0,0,80,1,0,0,0,0,0,80,65,82,2,0,0,0,80,65,81,66,82,2,0,80,66,81,50,82,49,82,2,70,82,65,81,65,66,65,210,138,71,81,66,81,66,210,205,151,106,71,82,65,209,205,223,106,151,138,72,209,205,223,205,150,122,151,122,206,239,205,239,105,151,138,150,223,205,239,206,152,122,150,122,205,239,206,239,138,166,138,152,239,205,239,205,144,137,151,122,190,223,205,15,0,144,122,151,239,190,15,0,0,0,144,138,206,15,0,0,0,0,0,144,15,0,0,0,0,0,0,80,1,0,0,0,0,0,80,65,81,2,0,0,0,80,65,81,65,81,2,0,80,50,82,66,66,65,81,2,70,82,65,65,66,82,66,210,106,71,66,65,82,66,209,190,134,121,71,81,66,210,189,223,106,150,122,71,226,189,223,189,150,122,134,122,190,223,189,223,106,151,122,135,239,188,223,189,151,106,135,122,190,239,190,223,106,150,105,151,239,190,239,189,144,106,150,122,190,223,190,15,0,144,122,151,223,190,15,0,0,0,144,122,189,15,0,0,0,0,0,128,15,0,0,0,0,0,0,80,1,0,0,0,0,0,96,67,98,3,0,0,0,96,66,98,65,97,3,0,80,67,99,65,83,82,83,1,71,97,65,99,82,99,83,226,138,88,81,67,83,82,227,206,168,123,73,81,65,210,205,239,138,167,138,71,225,205,239,205,168,122,168,154,205,223,205,239,122,167,139,168,239,206,239,206,168,138,168,138,205,223,206,223,122,167,123,168,239,206,239,206,160,122,168,123,205,223,206,15,0,160,122,167,239,205,15,0,0,0,160,138,205,15,0,0,0,0,0,160,15,0,0,0,0,0,0,80,2,0,0,0,0,0,80,66,81,1,0,0,0,64,66,81,66,82,1,0,80,65,82,50,66,65,81,2,55,81,66,81,66,82,66,225,106,71,81,66,82,65,209,190,152,121,70,82,66,225,189,223,106,152,106,72,226,205,223,189,151,106,150,122,189,223,206,239,138,152,122,167,223,206,223,190,150,122,151,122,189,239,206,223,138,152,106,150,223,190,239,189,144,106,152,122,206,223,206,15,0,144,105,151,223,190,15,0,0,0,144,106,189,15,0,0,0,0,0,144,15,0,0,0,0,0,0,64,1,0,0,0,0,0,64,65,81,1,0,0,0,64,49,66,65,82,1,0,80,66,82,66,65,50,66,2,54,82,66,82,65,65,50,209,105,70,81,49,82,65,194,190,134,105,70,82,66,226,188,223,105,134,120,55,193,189,207,188,134,104,134,105,190,207,172,207,121,134,105,135,223,173,239,189,134,105,134,104,188,239,190,207,105,135,105,134,207,190,239,174,128,121,134,121,188,223,190,15,0,128,105,135,207,173,15,0,0,0,128,120,189,15,0,0,0,0,0,128,15,0,0,0,0,0,0,80,1,0,0,0,0,0,80,66,82,1,0,0,0,80,65,82,65,81,1,0,64,65,65,65,81,65,82,2,70,81,66,82,50,65,66,209,122,70,82,66,81,65,225,206,167,122,55,82,49,226,205,223,122,150,139,55,226,206,239,206,151,107,150,123,205,223,205,223,138,167,107,167,239,205,239,206,150,122,151,122,206,223,206,223,123,151,123,166,239,206,239,206,144,107,151,107,206,239,206,15,0,144,123,150,239,205,15,0,0,0,144,107,205,15,0,0,0,0,0,144,15,0,0,0,0,0,0,96,3,0,0,0,0,0,80,67,97,2,0,0,0,96,65,82,67,83,3,0,96,66,81,67,82,65,99,3,88,81,82,82,81,99,65,193,122,88,99,65,81,81,210,188,152,121,72,99,66,193,189,223,121,152,138,72,209,189,223,190,151,122,151,138,189,239,189,239,138,152,121,151,223,189,223,189,151,122,151,122,189,223,189,239,138,152,137,151,239,189,207,190,144,137,151,122,188,239,190,15,0,144,137,151,207,188,15,0,0,0,144,138,188,15,0,0,0,0,0,144,15,0,0,0,0,0,0,80,2,0,0,0,0,0,64,65,65,2,0,0,0,64,50,81,65,65,1,0,64,65,65,65,65,49,82,2,55,66,66,66,50,66,50,193,105,55,65,49,81,65,193,172,134,121,54,66,65,194,188,239,105,134,105,55,209,174,207,173,135,105,134,105,173,239,188,207,105,134,105,135,223,172,223,190,134,104,134,121,172,239,174,239,105,135,105,134,207,188,207,172,128,121,134,120,173,207,190,15,0,128,105,134,207,172,15,0,0,0,128,105,188,15,0,0,0,0,0,128,15,0,0,0,0,0,0,96,2,0,0,0,0,0,80,83,83,1,0,0,0,80,81,99,83,98,3,0,80,66,99,66,99,82,82,3,88,98,81,82,67,97,81,227,138,71,97,82,99,82,227,206,168,139,88,99,81,226,205,223,122,168,138,72,209,205,223,205,167,123,168,155,205,239,206,239,139,167,139,167,223,205,223,205,167,138,168,139,205,223,205,239,139,167,123,168,239,206,239,206,160,122,168,139,206,223,206,15,0,160,122,167,239,206,15,0,0,0,160,138,206,15,0,0,0,0,0,160,15,0,0,0,0,0,0,80,2,0,0,0,0,0,80,65,82,1,0,0,0,80,49,66,65,66,2,0,80,66,82,65,82,66,65,1,71,81,49,82,49,82,66,226,121,55,82,50,82,65,210,189,134,121,71,81,66,210,172,239,121,134,105,54,194,189,239,189,134,121,135,121,188,239,190,239,121,135,121,135,223,189,239,188,135,105,134,105,188,239,188,207,120,134,105,134,223,189,207,188,128,121,135,121,188,207,190,15,0,128,105,135,207,190,15,0,0,0,128,105,174,15,0,0,0,0,0,128,15,0,0,0,0,0,0,64,2,0,0,0,0,0,64,49,82,2,0,0,0,80,65,82,65,65,1,0,80,65,81,65,82,65,81,1,71,82,66,82,65,65,66,210,121,71,81,66,81,66,194,189,150,121,70,66,66,209,172,206,105,150,105,70,194,173,206,189,134,105,134,121,189,206,173,206,105,134,121,135,222,188,222,172,134,105,134,121,189,222,173,206,121,135,105,151,207,189,206,188,128,121,135,105,173,206,188,14,0,128,105,135,222,173,14,0,0,0,128,121,188,14,0,0,0,0,0,144,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,0,0,0,0,0,0,32,17,2,0,0,0,0,0,32,17,2,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,48,64,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,64,48,0,0,0,0,0,0,64,3,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,4,68,0,0,0,0,0,36,66,34,4,0,0,0,0,64,34,66,0,0,0,0,0,0,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,16,48,0,0,0,0,0,0,0,49,0,0,0,0,0,0,0,48,16,0,0,0,0,0,0,48,1,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,16,1,17,0,0,0,0,0,0,65,1,0,0,0,0,0,16,1,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,32,48,0,0,0,0,0,0,0,50,0,0,0,0,0,0,0,48,32,0,0,0,0,0,0,48,2,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,4,0,0,0,0,0,64,67,67,0,0,0,0,0,48,52,52,0,0,0,0,0,0,52,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,16,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,16,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,16,18,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,48,64,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,64,48,0,0,0,0,0,0,64,3,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,64,0,0,0,0,0,0,64,68,0,0,0,0,0,0,64,67,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,16,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,16,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,0,0,0,0,0,0,48,51,0,0,0,0,0,0,48,49,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,32,64,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,64,32,0,0,0,0,0,0,64,2,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,32,0,0,0,0,0,0,32,34,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,48,64,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,64,48,0,0,0,0,0,0,64,3,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,0,0,0,0,0,0,16,17,0,0,0,0,0,0,16,19,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,32,64,0,0,0,0,0,0,0,66,0,0,0,0,0,0,0,64,32,0,0,0,0,0,0,64,2,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,16,16,0,0,0,0,0,1,17,1,1,0,0,0,0,16,34,18,0,0,0,0,0,1,17,1,1,0,0,0,0,16,16,16,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,48,64,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,64,48,0,0,0,0,0,0,64,3,0,0,0,0,0,0,64,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,51,0,0,0,0,0,35,34,34,3,0,0,0,48,34,34,34,50,0,0,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,17,0,0,0,0,0,0,16,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,51,0,0,0,0,0,51,49,51,3,0,0,0,48,51,51,19,51,0,0,0,48,49,51,51,51,0,0,0,0,0,34,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,34,0,0,0,0,0,0,32,34,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,16,68,68,1,0,0,0,16,36,34,34,34,1,0,16,34,114,18,33,39,34,1,117,68,116,68,68,71,68,135,101,117,33,33,34,18,135,252,102,103,117,68,68,135,170,254,103,86,85,117,135,173,234,252,86,85,107,183,201,253,253,249,85,102,119,183,234,143,254,250,102,123,182,181,174,234,170,253,119,182,181,181,157,220,207,253,176,85,85,182,169,174,234,15,0,176,102,183,218,154,15,0,0,0,176,182,220,15,0,0,0,0,0,176,15,0,0,0,0,0,0,16,1,0,0,0,0,0,16,51,51,1,0,0,0,16,51,51,51,50,1,0,16,34,146,18,33,41,34,1,148,67,148,68,51,73,67,153,102,148,34,34,34,34,153,252,135,121,148,84,85,153,187,254,120,103,102,148,153,190,235,252,103,86,125,216,202,253,252,250,86,118,136,215,235,159,254,251,118,157,215,214,205,235,171,254,152,216,214,214,174,220,207,253,208,86,102,215,187,174,235,15,0,208,135,217,234,171,15,0,0,0,208,215,205,15,0,0,0,0,0,208,15,0,0,0,0,0,0,16,1,0,0,0,0,0,16,67,19,1,0,0,0,32,83,52,35,18,1,0,16,66,52,35,34,34,19,1,133,51,34,35,35,51,68,248,120,117,34,34,67,84,169,253,151,87,116,50,67,169,218,254,151,120,118,119,168,186,203,253,193,136,119,185,219,204,237,111,135,193,152,185,237,238,111,253,152,153,193,185,237,111,222,254,153,135,152,193,111,221,221,254,176,119,135,184,235,189,187,15,0,160,118,184,237,189,15,0,0,0,160,184,237,15,0,0,0,0,0,240,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,32,117,38,1,0,0,0,48,118,103,53,19,1,0,32,116,103,70,52,51,37,1,161,101,68,69,69,101,119,154,169,145,67,51,118,119,154,253,169,170,145,99,118,154,221,253,170,169,170,145,153,221,220,253,192,153,153,202,220,205,204,15,0,176,153,202,221,205,15,0,0,0,192,202,220,15,0,0,0,0,0,240,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,96,50,36,6,0,0,0,96,85,51,50,68,6,0,96,52,51,18,17,51,67,6,104,35,18,17,17,34,34,198,136,105,69,17,33,85,230,204,153,153,105,68,67,230,221,236,138,152,153,105,198,238,204,252,160,122,135,152,220,188,251,15,0,160,122,153,220,251,15,0,0,0,160,154,254,15,0,0,0,0,0,160,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,1,0,0,0,0,0,80,145,83,1,0,0,0,16,149,84,162,20,3,0,32,102,25,165,35,68,26,5,56,26,99,106,82,25,53,170,216,56,74,162,84,65,185,203,233,232,151,51,161,245,204,191,216,231,135,150,245,253,175,219,192,215,231,120,251,252,204,15,0,208,120,198,252,253,15,0,0,0,208,136,253,12,0,0,0,0,0,224,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,16,56,17,1,0,0,0,16,19,135,136,97,5,0,16,19,129,17,105,24,17,1,25,25,136,17,17,17,51,65,34,82,86,85,22,17,65,68,42,204,130,150,49,65,239,221,34,44,187,18,65,79,238,68,32,178,203,41,76,239,239,4,0,160,187,162,68,228,15,0,0,0,176,34,244,4,0,0,0,0,0,32,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,6,0,0,0,0,0,128,20,68,3,0,0,0,112,19,97,19,113,3,0,96,20,104,20,116,20,136,4,25,129,22,97,22,65,19,81,185,25,132,19,116,19,216,95,41,42,26,97,23,81,223,229,42,42,187,25,231,93,85,237,32,155,40,44,254,213,94,5,0,32,43,42,85,223,5,0,0,0,32,186,94,5,0,0,0,0,0,32,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,1,0,0,0,0,0,64,98,21,1,0,0,0,32,129,36,100,53,1,0,80,70,34,129,66,81,67,1,135,86,83,40,129,53,49,216,167,134,56,68,38,129,216,237,154,201,135,35,98,244,237,222,122,201,170,134,211,253,221,222,192,199,121,153,222,253,221,15,0,192,154,167,238,254,15,0,0,0,192,154,238,15,0,0,0,0,0,192,15,0,0,0,0,0,0,112,6,0,0,0,0,0,112,21,85,4,0,0,0,96,20,97,20,97,4,0,80,21,103,21,117,21,119,5,25,113,21,81,22,81,20,49,154,24,117,20,101,20,199,61,40,40,24,97,22,49,254,195,41,39,171,24,198,61,51,253,40,137,40,41,207,195,62,51,185,40,42,40,51,206,195,62,40,41,41,154,61,51,223,211,42,41,171,40,211,61,51,237,32,138,40,43,253,195,62,3,0,32,42,42,51,207,3,0,0,0,32,185,62,3,0,0,0,0,0,32,3,0,0,0,0,0,0,112,7,0,0,0,0,0,112,51,51,7,0,0,0,112,119,51,51,119,7,0,112,51,51,119,119,51,51,7,116,51,51,119,119,51,51,151,68,117,119,51,51,119,135,153,68,85,116,51,51,151,136,153,70,85,68,117,135,153,136,169,22,86,68,85,136,153,168,162,100,102,70,85,136,169,170,154,68,101,102,86,168,170,138,153,68,85,100,97,42,154,136,153,64,85,68,101,138,153,136,9,0,80,68,85,136,153,8,0,0,0,64,85,136,9,0,0,0,0,0,80,8,0,0,0,0,0,0,64,2,0,0,0,0,0,64,130,67,2,0,0,0,32,132,68,130,35,3,0,32,68,38,132,35,51,40,4,52,40,67,72,66,38,52,168,97,38,56,130,67,66,166,169,24,161,102,51,130,148,93,165,184,167,177,134,148,87,189,174,230,167,189,155,186,231,189,159,193,230,189,155,186,231,159,151,200,113,230,155,186,175,92,151,200,119,113,230,175,92,204,151,224,119,124,97,90,204,204,15,0,224,124,151,218,204,15,0,0,0,224,103,218,15,0,0,0,0,0,224,15,0,0,0,0,0,0,16,3,0,0,0,0,0,16,35,19,1,0,0,0,16,24,56,131,129,8,0,80,19,145,19,131,25,17,1,21,25,153,51,19,17,136,227,39,130,56,131,24,21,241,188,117,44,156,152,49,243,110,190,82,199,204,18,99,102,102,102,41,199,44,120,183,251,111,102,87,85,44,89,187,123,171,187,39,85,85,34,251,182,250,174,39,92,87,151,182,187,238,182,32,82,199,41,108,191,255,6,0,192,204,82,107,246,15,0,0,0,192,34,251,6,0,0,0,0,0,32,11,0,0,0,0,0,0,96,13,0,0,0,0,0,32,213,17,1,0,0,0,208,221,210,29,93,6,0,208,221,221,67,211,102,213,13,222,221,221,221,221,109,84,245,30,210,221,49,34,61,196,207,40,226,26,50,18,253,203,200,238,238,169,222,93,244,250,204,238,118,169,120,79,245,255,255,238,86,238,119,255,129,122,248,238,78,238,119,124,138,127,246,238,238,85,110,255,255,120,248,224,238,51,229,255,255,127,6,0,224,46,227,255,255,10,0,0,0,224,228,255,15,0,0,0,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,64,66,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,2,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,64,66,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,2,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,64,66,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,2,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,64,66,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,2,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,64,66,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,2,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,80,3,0,0,0,0,0,0,64,4,0,0,0,0,0,64,0,0,4,0,0,0,64,0,64,4,0,4,0,64,0,4,4,64,64,0,4,70,0,4,4,64,64,0,116,0,70,0,64,4,0,116,112,0,6,70,0,0,116,0,112,48,6,0,70,116,5,0,117,0,54,0,48,0,5,5,112,6,22,48,48,0,5,0,112,0,6,0,48,5,37,112,112,0,6,6,48,0,117,0,112,48,6,0,54,112,5,0,5,0,48,0,48,0,5,5,0,0,0,48,48,0,5,0,0,0,0,0,48,5,0,0,0,0,0,0,48,1,0,0,0,0,0,48,129,50,1,0,0,0,16,131,67,145,19,2,0,16,68,24,148,34,50,25,3,36,24,66,73,66,24,36,248,117,37,56,146,66,49,232,253,212,120,133,34,129,163,250,251,103,213,182,135,148,187,252,250,215,104,214,214,170,159,235,156,215,167,215,215,159,172,170,186,216,216,165,166,186,255,171,158,215,214,118,197,255,252,159,218,176,198,213,103,234,251,171,15,0,208,103,181,250,252,15,0,0,0,192,119,253,10,0,0,0,0,0,208,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,67,50,0,0,0,0,0,67,34,66,52,0,0,0,67,34,66,68,34,50,0,0,35,66,68,34,66,52,0,102,0,67,34,66,52,0,10,86,103,0,67,52,0,154,8,91,85,103,0,0,154,136,8,118,27,85,7,154,136,200,9,86,23,91,5,138,200,153,8,86,85,119,11,202,153,136,8,118,87,85,7,154,136,152,9,0,118,87,5,138,152,169,0,0,0,118,7,154,169,0,0,0,0,0,6,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,4,0,0,0,0,0,48,204,52,1,0,0,0,80,51,60,76,68,3,0,80,19,81,34,51,67,52,4,71,195,195,85,60,193,60,164,119,52,92,92,53,195,163,187,238,119,197,53,196,165,187,251,102,126,119,55,188,187,171,163,119,81,119,119,187,251,153,172,136,226,229,126,154,169,250,221,39,137,110,81,249,178,218,207,238,22,120,231,207,204,253,253,96,46,158,136,45,47,218,9,0,96,104,231,210,253,15,0,0,0,224,142,157,10,0,0,0,0,0,96,9,0,0,0,0,0,0,16,1,0,0,0,0,0,16,52,52,1,0,0,0,16,51,35,51,51,1,0,16,34,178,18,33,43,34,1,181,68,180,68,68,75,68,155,102,181,34,34,34,34,155,252,136,136,181,68,68,155,169,254,136,103,86,181,155,172,233,250,103,101,141,216,201,252,252,249,101,118,136,216,234,159,254,250,134,141,216,214,172,233,154,254,136,216,214,213,158,204,207,252,208,86,102,215,169,174,234,15,0,208,135,216,233,154,15,0,0,0,208,215,204,15,0,0,0,0,0,208,15,0,0,0,0,0,0,208,13,0,0,0,0,0,208,81,34,13,0,0,0,208,82,130,88,18,13,0,208,18,24,88,129,130,21,13,223,21,40,40,129,133,34,253,244,223,37,129,40,17,253,239,130,244,143,17,81,248,239,199,68,178,245,223,253,143,235,230,196,179,181,244,175,110,232,106,164,68,179,180,108,59,106,168,165,68,163,180,247,206,170,108,180,181,68,162,204,231,108,122,176,180,178,68,234,232,123,14,0,128,68,162,232,234,14,0,0,0,176,84,231,6,0,0,0,0,0,176,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,32,0,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,32,0,32,2,0,32,0,0,32,0,32,2,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,32,0,32,0,0,2,0,2,32,0,32,0,0,2,16,2,33,0,33,0,16,2,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,32,0,0,32,0,2,0,32,32,0,0,32,0,2,0,32,32,0,0,32,0,2,0,32,32,0,0,32,0,2,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,32,0,2,32,0,32,0,0,32,0,2,32,1,32,1,0,32,1,18,32,0,32,0,0,32,0,2,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,2,0,32,0,2,32,0,0,2,0,32,0,2,32,0,0,2,0,32,0,2,32,0,0,2,0,32,0,2,32,1,0,18,0,32,1,18,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,16,2,16,2,16,2,16,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,2,0,18,0,18,0,18,0,18,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,16,1,17,0,17,0,16,1,48,3,51,0,51,0,48,3,64,4,68,0,68,0,64,4,0,5,80,0,80,0,0,5,32,5,82,0,82,0,32,5,0,5,80,0,80,0,0,5,0,5,80,0,80,0,0,5,0,37,0,37,0,37,80,2,0,5,0,5,0,5,80,0,0,5,0,5,0,5,80,0,32,5,32,5,32,5,82,0,0,5,0,5,0,5,80,0,0,5,0,5,0,5,80,0,0,37,0,37,0,37,80,2,0,5,0,5,0,5,80,0,0,0,0,64,2,0,0,0,0,0,16,177,83,2,0,0,0,48,162,19,178,49,2,0,48,179,51,194,81,179,53,2,167,51,130,83,213,97,181,227,166,169,51,162,51,83,227,206,117,25,182,17,179,132,254,238,55,23,151,182,243,79,255,207,118,183,169,105,206,253,143,206,105,183,179,107,219,136,255,239,57,166,171,122,216,253,239,255,121,121,170,58,204,222,140,232,112,121,150,105,206,136,141,12,0,112,17,169,200,220,8,0,0,0,112,55,222,14,0,0,0,0,0,112,14,0,0,0,0,0,0,192,7,0,0,0,0,0,64,244,216,8,0,0,0,144,246,73,247,161,6,0,160,248,169,247,228,248,158,7,243,153,248,233,252,228,252,185,99,245,169,246,170,233,217,171,50,21,243,66,248,44,237,189,19,21,99,243,235,29,238,173,51,133,101,53,171,234,78,139,53,131,113,55,184,68,222,221,21,115,103,54,180,235,206,238,86,53,102,22,170,187,74,212,80,53,99,53,171,68,43,10,0,80,17,101,148,169,2,0,0,0,48,19,173,11,0,0,0,0,0,48,11,0,0,0,0,0,0,16,1,0,0,0,0,0,32,50,18,1,0,0,0,32,83,52,35,18,1,0,16,66,68,85,51,34,18,1,109,34,51,68,84,52,35,230,152,109,34,50,68,85,231,187,213,136,109,34,51,231,187,236,109,138,136,109,230,188,187,152,121,86,138,137,187,236,142,190,141,255,213,141,142,152,234,204,102,255,111,86,234,190,203,142,213,255,255,215,203,204,236,234,208,109,255,136,231,158,169,14,0,208,86,213,169,234,14,0,0,0,208,125,142,14,0,0,0,0,0,208,14,0,0,0,0,0,0,16,1,0,0,0,0,0,32,50,18,1,0,0,0,32,67,52,35,18,1,0,16,66,68,68,52,34,18,1,110,34,51,68,68,52,35,247,168,110,34,50,68,68,247,204,228,136,110,34,67,247,204,252,126,139,136,110,246,204,204,168,138,70,139,138,204,253,143,207,142,153,228,142,143,170,251,220,103,153,121,102,250,207,220,175,228,149,153,232,219,220,253,250,224,126,149,136,248,175,186,15,0,224,102,230,170,250,15,0,0,0,224,126,143,15,0,0,0,0,0,224,15,0,0,0,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,66,68,68,68,68,36,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,85,85,85,85,85,85,85,85,51,51,51,51,51,51,51,51,19,33,18,17,17,33,18,49,19,33,18,17,17,33,18,49,19,33,50,51,51,35,18,49,19,33,51,0,0,51,18,49,19,49,3,0,0,48,19,49,19,49,0,0,0,0,19,49,19,49,0,0,0,0,19,49,19,49,0,0,0,0,19,49,19,49,0,0,0,0,19,49,19,49,3,0,0,48,19,49,19,33,51,0,0,51,18,49,19,33,50,51,51,35,18,49,19,33,18,17,17,33,18,49,19,33,18,17,17,33,18,49,19,33,18,17,17,33,18,49,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,18,17,17,17,17,33,0,0,66,68,68,68,68,36,0,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,18,17,17,17,17,33,0,0,66,68,68,68,68,36,0,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,18,17,17,17,17,33,0,0,66,68,68,68,68,36,0,0,50,0,0,0,0,35,0,0,50,0,0,0,0,35,0,0,16,3,0,0,48,1,0,32,18,35,34,34,50,33,2,64,20,67,68,68,52,65,4,0,16,3,0,0,48,1,0,0,16,3,0,0,48,1,0,32,18,35,34,34,50,33,2,64,20,67,68,68,52,65,4,0,16,3,0,0,48,1,0,0,16,3,0,0,48,1,0,32,18,35,34,34,50,33,2,64,20,67,68,68,52,65,4,0,16,3,0,0,48,1,0,0,16,3,0,0,48,1,0,32,18,35,34,34,50,33,2,64,20,67,68,68,52,65,4,0,16,3,0,0,48,1,0,0,0,0,16,1,0,0,0,0,0,16,55,17,1,0,0,0,16,19,118,119,97,5,0,16,19,113,17,103,23,17,1,18,23,119,17,17,17,51,193,34,82,86,85,22,17,225,75,154,41,121,118,49,209,77,76,146,186,170,18,65,68,68,68,40,171,42,134,68,221,79,68,34,34,42,39,228,254,68,68,40,171,34,34,223,68,223,204,34,43,153,130,68,79,220,68,32,146,169,40,74,205,222,4,0,144,153,130,68,212,13,0,0,0,144,34,244,4,0,0,0,0,0,32,4,0,0,0,0,0,0,144,1,0,0,0,0,0,48,187,34,2,0,0,0,32,18,91,43,34,2,0,64,25,43,178,52,34,34,2,33,178,179,153,91,179,43,162,89,37,75,43,34,177,139,138,238,149,182,52,179,155,170,200,119,94,101,37,162,169,138,252,52,103,85,101,169,248,207,143,86,228,230,238,218,220,254,248,153,149,126,119,252,79,167,223,238,230,69,51,175,152,248,141,80,126,94,101,248,207,220,10,0,80,103,102,159,253,15,0,0,0,224,238,141,10,0,0,0,0,0,80,10,0,0,0,0,0,0,80,5,0,0,0,0,0,16,34,84,5,0,0,0,16,34,36,33,67,3,0,16,65,84,35,51,66,50,3,73,85,85,35,49,67,68,242,151,57,85,37,82,52,177,203,119,151,40,17,17,241,190,189,119,119,119,40,244,221,205,190,119,136,135,153,239,221,219,204,119,120,135,121,203,222,237,190,151,137,119,120,235,187,189,187,153,153,121,137,235,220,191,235,144,153,121,120,235,255,189,12,0,128,121,119,235,254,14,0,0,0,112,119,238,15,0,0,0,0,0,144,15,0,0,0,0,0,0,32,2,0,0,0,0,0,48,19,67,4,0,0,0,32,67,20,68,52,3,0,32,34,67,68,68,52,34,2,38,51,67,68,65,51,50,211,117,24,65,35,33,67,196,220,135,137,39,34,18,241,205,253,135,154,103,38,211,254,222,253,151,170,121,118,236,255,239,237,134,89,121,135,188,251,223,189,118,169,117,151,253,255,190,219,118,152,120,135,190,255,190,220,112,152,103,118,219,239,203,13,0,144,104,118,220,190,14,0,0,0,96,86,236,11,0,0,0,0,0,112,13,0,0,0,0,0,0,80,5,0,0,0,0,0,16,34,84,5,0,0,0,16,34,36,33,67,3,0,16,65,84,35,51,66,50,3,73,85,85,35,49,67,68,242,151,57,85,37,82,52,177,203,119,151,40,17,17,241,190,189,119,119,119,40,244,221,205,190,119,136,135,153,239,221,219,204,119,120,135,121,203,222,237,190,151,137,119,120,235,187,189,187,153,153,121,137,235,220,191,235,144,153,121,120,235,255,189,12,0,128,121,119,235,254,14,0,0,0,112,119,238,15,0,0,0,0,0,144,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,51,34,34,51,0,0,0,51,34,17,17,34,51,0,4,51,34,17,17,34,51,0,68,4,51,34,34,51,80,5,68,68,4,51,51,80,85,5,68,68,68,4,80,85,85,5,68,68,68,4,85,85,85,5,68,68,68,4,85,85,85,5,68,68,68,4,85,85,85,5,68,68,68,4,85,85,85,5,64,68,68,4,85,85,85,5,0,64,68,4,85,85,5,0,0,0,64,4,85,5,0,0,0,0,0,0,5,0,0,0,0,0,0,64,4,0,0,0,0,0,48,66,49,1,0,0,0,64,68,19,17,49,1,0,64,68,20,33,33,67,68,4,24,19,17,17,34,67,51,227,104,22,17,36,67,34,210,222,118,102,70,67,68,161,221,188,120,102,136,40,177,186,220,189,120,102,136,120,191,170,202,174,136,102,134,104,207,170,189,173,137,102,102,135,203,187,219,221,120,102,135,102,173,170,219,191,128,102,136,104,223,170,204,14,0,96,136,136,191,187,11,0,0,0,128,103,207,11,0,0,0,0,0,96,15,0,0,0,0,64,5,0,84,0,84,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,32,3,0,50,16,50,0,0,64,5,0,84,0,84,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,32,3,16,50,0,50,0,0,33,3,0,50,0,50,0,0,64,5,0,84,0,84,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,32,3,0,50,0,50,0,0,64,5,0,84,0,84,0,0,0,0,48,1,0,0,0,0,0,48,129,50,1,0,0,0,16,131,67,145,19,2,0,16,68,24,148,34,50,25,3,36,24,66,73,66,24,36,248,117,37,56,146,66,49,232,253,212,120,133,34,129,163,250,251,103,213,182,135,148,187,252,250,215,104,214,214,170,159,235,156,215,167,215,215,159,172,170,186,216,216,165,166,186,255,171,158,215,214,118,197,255,252,159,218,176,198,213,103,234,251,171,15,0,208,103,181,250,252,15,0,0,0,192,119,253,10,0,0,0,0,0,208,11,0,0,0,0,0,0,64,2,0,0,0,0,0,64,18,33,4,0,0,0,64,18,33,36,17,2,0,64,18,33,36,17,66,18,1,21,33,36,17,66,18,33,148,53,39,17,66,18,33,132,150,53,55,69,18,33,100,136,150,165,55,85,35,100,105,136,150,53,55,85,115,104,105,136,150,53,55,165,115,104,105,136,150,165,55,85,115,104,105,136,150,53,58,85,115,104,105,136,150,48,55,85,122,104,105,136,6,0,48,85,115,104,105,8,0,0,0,80,115,104,9,0,0,0,0,0,112,8,0,0,0,0,0,0,80,3,0,0,0,0,0,80,19,49,5,0,0,0,80,19,49,53,17,3,0,80,19,49,53,17,83,19,1,22,49,53,17,83,19,49,165,70,56,17,83,19,49,149,167,70,72,86,19,49,117,153,167,38,72,102,52,117,122,153,167,70,72,102,132,121,122,153,167,70,72,38,132,121,122,153,167,38,72,102,132,121,122,153,167,70,66,102,132,121,122,153,167,64,72,102,130,121,122,153,7,0,64,102,132,121,122,9,0,0,0,96,132,121,10,0,0,0,0,0,128,9,0,0,0,0,0,0,64,3,0,0,0,0,0,16,177,68,4,0,0,0,48,19,27,59,67,2,0,32,17,59,178,178,52,68,3,71,178,177,19,27,177,59,212,119,40,27,59,19,178,171,221,227,135,182,18,177,219,220,156,94,126,119,39,194,205,221,249,103,69,136,136,221,253,159,207,126,229,228,238,159,169,250,251,53,103,110,85,249,159,202,159,230,227,87,102,201,205,252,169,112,78,110,118,252,143,168,11,0,96,53,51,152,250,15,0,0,0,224,238,175,10,0,0,0,0,0,112,13,0,0,0,0,0,0,48,1,0,0,0,0,0,48,66,20,1,0,0,0,16,113,35,67,52,1,0,64,52,33,113,49,65,51,1,117,68,66,23,113,35,49,247,136,117,39,51,36,113,151,252,102,104,117,34,66,179,203,251,102,88,136,117,147,222,238,252,165,101,101,168,237,190,219,207,134,165,133,165,204,155,207,217,104,166,165,168,222,255,235,190,104,166,136,165,207,252,204,205,160,166,104,104,158,253,203,15,0,160,136,134,237,253,15,0,0,0,160,104,238,15,0,0,0,0,0,160,15,0,0,0,0,0,0,16,3,0,0,0,0,0,48,83,53,3,0,0,0,48,115,51,83,53,3,0,80,53,51,115,19,81,17,3,118,21,81,55,115,51,51,167,151,118,55,51,17,115,167,253,102,103,118,17,81,195,172,252,102,23,169,118,195,238,234,253,181,22,97,168,237,206,234,223,118,181,118,182,221,204,223,236,25,182,182,183,238,255,172,202,25,186,151,181,223,253,173,218,176,182,23,106,206,250,172,10,0,176,137,154,174,250,15,0,0,0,128,121,238,15,0,0,0,0,0,160,15,0,0,0,0,0,0,48,1,0,0,0,0,0,48,66,20,1,0,0,0,32,113,35,77,52,1,0,64,52,33,113,49,65,51,1,117,68,66,39,113,35,49,231,247,117,39,51,45,113,167,235,102,102,117,34,66,163,186,234,102,95,120,117,163,205,220,235,149,101,101,151,204,172,202,190,118,149,117,149,187,170,190,202,104,150,149,151,205,238,250,173,104,150,247,149,190,235,187,188,144,150,102,102,173,236,186,14,0,144,120,134,220,236,14,0,0,0,144,104,221,14,0,0,0,0,0,144,14,0,0,0,0,0,0,16,1,0,0,0,0,0,16,66,36,1,0,0,0,16,33,50,35,17,1,0,16,50,34,56,131,34,35,1,133,68,51,72,132,67,67,232,119,101,33,50,52,34,150,250,118,87,100,66,35,134,185,237,117,103,86,133,152,153,186,234,101,204,102,183,219,171,191,234,101,204,119,183,219,187,187,234,118,119,119,150,169,255,221,235,119,119,108,150,169,255,171,253,176,103,118,151,169,171,170,15,0,144,117,151,202,154,14,0,0,0,144,168,221,14,0,0,0,0,0,224,14,0,0,0,0,0,0,32,2,0,0,0,0,0,80,68,83,6,0,0,0,64,84,37,50,82,5,0,80,82,83,85,36,33,69,2,87,36,52,101,37,66,85,197,152,105,84,68,17,49,178,236,152,152,41,17,19,245,220,207,137,135,119,71,210,191,251,190,136,121,151,153,206,188,188,220,153,153,153,137,191,203,205,219,135,152,137,151,221,236,188,236,153,136,121,135,236,252,190,188,144,137,121,135,206,219,189,11,0,144,119,136,191,205,12,0,0,0,112,119,203,13,0,0,0,0,0,112,13,0,0,0,0,0,0,16,1,0,0,0,0,0,48,50,17,1,0,0,0,64,68,68,36,67,3,0,64,68,34,51,17,50,20,1,38,17,34,51,50,67,68,195,102,38,51,33,66,67,196,219,151,102,23,17,33,212,220,222,136,121,104,22,179,219,251,238,153,105,134,102,187,189,219,253,137,104,150,104,251,191,236,253,120,118,151,105,221,189,203,252,118,119,134,152,239,220,187,219,96,102,102,152,207,188,188,11,0,144,104,150,205,219,13,0,0,0,112,150,191,11,0,0,0,0,0,112,11,0,0,0,0,0,0,16,1,0,0,0,0,0,64,67,18,1,0,0,0,80,85,85,37,84,4,0,80,85,50,68,17,66,21,1,58,17,35,68,67,84,85,196,121,42,68,50,83,84,245,204,121,154,23,17,33,229,219,205,137,168,152,41,196,220,237,221,122,136,151,121,239,254,251,205,138,136,167,138,207,223,253,206,120,169,151,154,188,221,220,206,121,170,151,152,204,204,252,204,112,170,135,153,188,239,220,15,0,160,135,137,207,238,13,0,0,0,128,154,222,15,0,0,0,0,0,112,13,0,0,0,0,0,0,80,6,0,0,0,0,0,48,83,69,5,0,0,0,48,67,84,51,83,5,0,64,68,84,68,51,50,35,2,90,85,20,49,34,17,35,245,154,74,86,86,35,34,226,252,24,170,90,84,81,242,207,235,137,120,136,55,229,223,203,204,151,122,119,168,255,191,27,204,152,121,23,135,30,206,188,204,153,120,119,119,238,205,219,237,145,25,136,135,221,30,239,241,144,169,138,136,238,255,239,13,0,160,154,129,253,255,15,0,0,0,128,152,241,15,0,0,0,0,0,144,15,0,0,0,0,0,0,16,1,0,0,0,0,0,48,50,17,1,0,0,0,64,68,68,36,67,3,0,64,68,34,51,17,50,20,1,38,17,34,51,50,67,68,195,102,38,51,33,66,67,196,219,151,102,23,17,33,212,220,222,136,121,104,22,179,219,251,238,153,105,134,102,187,189,219,253,137,104,150,104,251,191,236,253,120,118,151,105,221,189,203,252,118,119,134,152,239,220,187,219,96,102,102,152,207,188,188,11,0,144,104,150,205,219,13,0,0,0,112,150,191,11,0,0,0,0,0,112,11,0,0,0,0,0,0,16,1,0,0,0,0,0,64,67,18,1,0,0,0,80,85,85,37,84,4,0,80,85,50,68,17,66,21,1,58,17,35,68,67,84,85,196,121,42,68,50,83,84,245,204,121,154,23,17,33,229,219,205,137,168,152,41,196,220,237,221,122,136,151,121,239,254,251,205,138,136,167,138,207,223,253,206,120,169,151,154,188,221,220,206,121,170,151,152,204,204,252,204,112,170,135,153,188,239,220,15,0,160,135,137,207,238,13,0,0,0,128,154,222,15,0,0,0,0,0,112,13,0,0,0,34,34,34,34,34,34,34,34,2,0,0,0,0,0,0,32,2,3,0,0,0,0,0,32,2,0,0,1,0,0,0,32,2,0,16,0,0,0,0,32,2,0,1,0,0,0,0,32,2,16,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,2,0,0,0,0,0,48,32,2,0,0,0,0,0,0,32,34,34,34,34,34,34,34,34,0,0,0,16,1,0,0,0,0,0,48,51,51,3,0,0,0,48,49,51,51,19,3,0,16,19,19,51,51,49,49,1,21,19,19,51,51,49,49,65,37,53,49,51,51,19,67,70,34,37,53,51,51,67,70,102,82,34,37,21,65,70,102,100,82,82,34,37,70,102,100,100,82,82,82,34,102,100,100,100,85,82,82,82,100,100,100,68,37,85,82,82,100,100,68,70,32,37,85,82,100,68,70,6,0,32,37,85,68,70,6,0,0,0,32,37,70,6,0,0,0,0,0,32,6,0,0,0,0,27,19,0,112,1,0,29,0,160,10,0,32,0,0,8,0,80,9,0,0,5,96,0,0,30,144,1,240,1,23,0,0,10,48,0,14,0,6,0,208,0,0,6,7,144,0,0,96,1,0,89,1,0,24,0,240,0,144,192,0,0,4,0,192,0,9,160,0,0,8,0,192,49,1,192,1,0,31,0,48,0,2,128,0,0,4,0,112,0,64,0,11,0,48,0,18,0,80,1,31,0,20,0,8,0,8,0,13,0,15,0,192,0,5,0,12,208,0,0,21,112,1,0,19,0,30,0,0,0,0,16,3,0,0,0,0,0,16,34,17,1,0,0,0,16,55,51,18,51,2,0,48,49,50,35,119,19,114,7,55,23,17,50,115,115,35,129,134,40,115,17,51,50,195,216,102,121,55,115,119,193,252,239,105,89,137,55,199,88,255,239,102,217,170,122,216,254,191,222,105,217,166,109,237,187,255,255,106,166,173,106,235,254,239,255,154,154,170,106,221,238,190,235,144,106,166,105,222,187,142,14,0,144,85,170,219,237,8,0,0,0,144,105,238,14,0,0,0,0,0,144,14,0,0,0,0,0,0,0,0,0,0,0,0,0,16,17,17,1,0,0,0,32,17,34,34,17,2,0,0,18,34,34,34,34,33,0,0,33,34,17,17,34,18,0,16,33,18,34,34,33,2,0,16,34,33,34,34,2,0,0,16,34,33,18,1,0,0,0,16,34,33,18,33,18,34,0,16,34,33,34,34,18,34,1,16,33,18,34,34,33,18,1,0,33,34,17,17,34,18,0,0,18,34,34,34,34,33,0,0,32,17,34,34,17,2,0,0,0,16,17,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,32,195,35,3,0,0,0,80,53,220,61,19,1,0,48,35,92,197,197,35,34,2,54,195,221,53,92,50,60,163,54,39,44,92,85,195,181,170,231,22,193,51,194,165,157,250,158,109,102,86,172,170,169,202,119,126,118,102,170,253,175,191,145,233,230,110,223,204,252,206,87,146,126,121,252,171,203,157,231,237,119,231,202,204,254,250,96,119,30,113,244,157,169,11,0,112,103,229,173,255,15,0,0,0,224,126,191,9,0,0,0,0,0,112,9,0,0,0,0,0,0,16,1,0,0,0,0,0,16,67,52,1,0,0,0,16,51,51,51,51,1,0,16,34,163,19,49,42,35,1,161,68,164,68,68,74,68,90,101,161,34,34,34,34,90,252,134,136,161,68,68,90,185,253,136,86,85,161,90,189,217,252,86,85,110,232,199,252,252,249,85,134,136,232,217,95,254,251,101,142,232,229,205,217,155,253,136,232,229,229,156,220,207,252,224,85,101,232,185,158,219,15,0,224,136,232,217,155,15,0,0,0,224,230,220,15,0,0,0,0,0,224,15,0,0,0,0,0,0,16,1,0,0,0,0,0,16,55,17,1,0,0,0,16,19,118,119,97,5,0,16,19,113,17,103,23,17,1,18,23,119,17,17,17,51,193,34,82,86,85,22,17,225,75,154,41,121,118,49,209,77,76,146,186,170,18,65,68,68,68,40,171,42,134,68,221,79,68,34,34,42,39,228,254,68,68,40,171,34,34,223,68,223,204,34,43,153,130,68,79,220,68,32,146,169,40,74,205,222,4,0,144,153,130,68,212,13,0,0,0,144,34,244,4,0,0,0,0,0,32,4,0,0,0,0,0,0,48,3,0,0,0,0,0,80,52,34,2,0,0,0,32,83,102,69,34,1,0,96,52,33,66,84,86,20,1,72,85,85,20,33,84,86,181,119,55,85,86,36,34,177,236,137,119,55,66,86,180,235,255,170,153,136,23,193,187,254,190,136,154,170,137,187,253,223,203,119,135,153,170,235,239,188,237,137,120,119,151,255,190,219,255,170,153,136,120,190,219,255,190,128,169,170,153,187,254,207,11,0,128,152,170,252,239,12,0,0,0,112,135,255,13,0,0,0,0,0,112,14,0,0,0,0,0,0,32,2,0,0,0,0,0,64,20,17,2,0,0,0,32,67,69,52,18,1,0,80,51,18,49,83,69,35,1,55,84,53,18,17,67,68,180,102,55,84,69,35,18,177,252,121,102,38,66,68,196,236,255,154,153,103,22,209,203,254,190,152,170,170,137,188,253,222,203,102,118,152,170,236,238,203,236,120,103,102,135,255,190,236,239,169,154,120,102,206,203,255,189,128,169,170,137,204,254,222,12,0,112,152,169,237,239,12,0,0,0,96,119,239,12,0,0,0,0,0,96,14,0,0,0,0,0,0,16,2,0,0,0,0,0,64,35,17,1,0,0,0,16,67,84,52,17,1,0,64,36,17,34,84,85,35,1,55,85,53,18,17,66,85,180,102,38,83,68,19,17,177,236,119,103,38,66,85,181,219,238,153,136,103,22,193,188,253,189,135,153,153,120,187,237,207,186,102,119,136,153,220,239,187,253,120,103,118,119,238,189,219,239,153,153,119,102,205,202,238,189,128,153,137,136,186,253,206,11,0,112,136,153,252,223,12,0,0,0,96,135,255,12,0,0,0,0,0,96,14,0,0,0,0,0,0,32,3,0,0,0,0,0,80,35,17,1,0,0,0,16,66,84,52,18,1,0,64,36,17,50,84,69,19,1,56,84,69,18,33,66,85,197,103,39,83,69,35,17,178,253,136,102,22,51,85,197,219,239,170,153,120,22,193,220,254,206,135,169,170,152,204,237,206,204,118,135,153,170,220,239,188,253,137,103,118,135,239,189,219,238,170,154,120,102,206,204,238,189,128,153,154,153,188,253,222,11,0,112,137,170,236,222,12,0,0,0,96,136,238,12,0,0,0,0,0,96,13,0,0,0,0,0,0,32,3,0,0,0,0,0,80,52,17,2,0,0,0,32,50,85,68,17,1,0,80,51,17,34,83,85,20,1,56,68,53,34,33,51,85,196,102,39,68,85,36,17,178,236,121,103,38,50,85,196,236,255,170,154,136,38,209,204,254,206,151,169,170,138,204,253,223,204,118,119,153,170,253,239,204,253,136,118,102,135,255,205,236,239,170,154,120,102,222,220,255,206,144,169,154,138,204,254,222,12,0,112,152,170,237,239,12,0,0,0,112,135,239,13,0,0,0,0,0,96,14,0,0,0,0,0,0,32,3,0,0,0,0,0,64,35,17,1,0,0,0,32,50,85,52,18,1,0,64,35,18,49,84,85,36,1,55,85,52,18,33,67,85,181,102,54,83,84,35,18,178,236,120,102,22,50,84,181,218,239,153,136,119,22,178,187,238,190,135,153,153,136,171,252,206,186,102,118,135,153,219,223,187,252,120,119,103,135,254,189,219,222,153,152,119,103,189,186,253,189,128,136,153,121,187,236,206,11,0,112,136,153,235,223,11,0,0,0,96,134,239,12,0,0,0,0,0,96,13,0,0,0,0,0,0,32,3,0,0,0,0,0,80,51,17,2,0,0,0,16,50,85,68,34,1,0,80,36,18,50,83,84,20,2,72,84,52,18,33,67,85,196,102,55,83,85,36,17,178,253,120,103,22,50,84,180,235,254,170,138,121,23,209,219,254,205,135,154,154,153,188,253,222,203,102,119,169,170,252,223,189,237,137,103,103,151,255,205,236,255,170,153,120,102,206,203,254,206,144,170,170,137,203,253,206,12,0,112,152,170,237,223,12,0,0,0,96,120,239,13,0,0,0,0,0,96,14,0,0,0,0,0,0,32,3,0,0,0,0,0,80,19,17,2,0,0,0,16,66,84,52,18,1,0,64,51,17,34,68,85,35,1,72,84,52,18,17,50,69,196,102,39,67,69,35,17,178,236,137,103,22,66,85,181,220,239,170,154,120,22,193,203,253,205,151,170,170,121,188,236,206,187,102,135,152,170,235,223,187,252,120,102,118,151,239,189,203,239,170,153,120,103,206,203,253,189,128,169,154,153,187,253,206,11,0,112,152,170,235,223,11,0,0,0,96,134,239,12,0,0,0,0,0,96,14,0,0,0,0,0,0,32,3,0,0,0,0,0,48,35,17,2,0,0,0,32,66,68,53,18,1,0,80,36,17,33,68,69,35,1,56,85,69,18,33,67,85,180,102,39,67,85,35,17,177,252,120,103,38,66,84,180,219,255,154,138,104,22,193,219,254,189,151,169,170,137,187,237,222,187,118,118,152,170,253,239,187,253,121,103,118,151,239,205,220,254,170,154,120,102,223,203,254,205,128,169,154,137,188,253,222,11,0,112,151,169,236,239,12,0,0,0,112,135,255,13,0,0,0,0,0,112,13,0,0,0,0,0,0,16,2,0,0,0,0,0,64,35,17,1,0,0,0,16,50,84,69,33,1,0,80,51,17,34,84,85,19,2,72,85,52,18,33,66,69,196,119,38,68,69,35,17,194,237,120,103,22,66,84,197,236,239,170,154,120,23,209,204,254,205,151,169,154,137,204,253,223,204,102,135,152,170,237,239,204,253,120,120,102,135,255,189,236,255,169,153,120,102,207,204,254,206,144,154,170,137,204,253,223,11,0,112,168,169,237,239,13,0,0,0,112,135,255,13,0,0,0,0,0,96,14,0,0,0,0,0,0,16,3,0,0,0,0,0,64,51,18,2,0,0,0,16,66,68,52,18,1,0,64,35,33,33,68,68,35,1,55,84,53,35,18,51,68,195,102,39,84,84,35,17,177,220,119,102,38,51,68,181,219,255,137,137,103,22,193,203,254,190,135,153,136,120,187,253,222,187,102,118,136,153,220,239,187,252,120,103,102,119,238,188,219,255,152,137,103,102,190,203,253,189,128,153,153,136,187,237,206,11,0,112,136,153,251,222,11,0,0,0,96,134,239,12,0,0,0,0,0,96,13,0,0,0,0,0,0,32,3,0,0,0,0,0,64,35,17,1,0,0,0,16,50,68,52,18,1,0,64,36,17,49,68,69,35,1,72,84,52,18,17,50,69,196,102,55,83,69,51,17,193,237,121,118,38,66,68,212,236,255,170,154,119,22,210,220,254,206,151,169,171,121,204,253,223,204,103,118,168,187,237,239,205,238,122,102,102,135,255,222,237,239,186,153,121,102,222,236,255,222,128,185,171,137,205,254,223,12,0,128,168,169,237,239,12,0,0,0,96,136,255,13,0,0,0,0,0,96,14,0,0,0,0,0,0,32,3,0,0,0,0,0,64,51,17,1,0,0,0,16,67,85,53,19,1,0,80,52,17,50,84,85,20,2,72,85,68,19,17,67,85,197,119,55,84,85,52,17,179,252,136,119,23,66,85,181,219,239,170,154,120,23,193,203,255,206,152,153,170,137,187,253,207,203,119,135,153,170,235,223,187,253,153,119,119,151,255,188,219,255,169,153,136,119,189,203,254,189,128,169,170,154,187,252,207,11,0,128,152,170,252,223,12,0,0,0,112,152,255,13,0,0,0,0,0,112,13,0,0,0,0,0,0,32,2,0,0,0,0,0,64,35,17,1,0,0,0,32,50,84,52,18,1,0,48,35,17,49,83,53,35,1,55,67,36,18,18,67,68,179,102,38,67,68,35,17,177,236,120,103,22,50,67,180,218,239,153,137,103,22,193,186,254,174,135,152,137,120,171,237,206,186,102,118,135,153,219,239,188,252,120,102,102,119,254,189,219,255,153,137,120,102,189,187,255,173,128,137,137,136,170,253,206,10,0,112,136,152,219,223,11,0,0,0,96,119,239,12,0,0,0,0,0,96,14,0,0,0,0,0,0,48,4,0,0,0,0,0,80,52,18,2,0,0,0,32,67,85,69,19,2,0,80,52,17,49,85,85,20,2,72,85,85,19,33,83,101,197,119,55,84,85,52,17,195,253,120,120,23,82,101,181,236,239,170,138,120,23,211,203,254,205,152,170,154,137,204,237,223,204,119,119,153,170,236,239,204,252,137,119,119,136,254,205,220,239,170,154,120,119,206,220,255,206,144,153,154,137,204,253,207,12,0,128,153,169,252,239,11,0,0,0,112,152,239,13,0,0,0,0,0,112,14,0,0,0,0,0,0,16,3,0,0,0,0,0,64,35,18,1,0,0,0,16,66,85,53,34,1,0,80,35,17,50,67,85,35,1,72,84,53,19,17,67,85,180,102,54,68,69,36,17,178,237,137,103,23,66,85,181,220,239,170,154,120,22,210,203,255,205,151,169,170,153,203,254,222,188,102,119,153,154,220,223,187,252,120,103,103,135,254,205,235,239,170,154,120,102,191,220,239,206,128,169,154,137,188,254,222,11,0,112,153,170,236,239,12,0,0,0,96,119,239,13,0,0,0,0,0,96,14,0,0,0,0,0,0,32,3,0,0,0,0,0,80,35,17,1,0,0,0,32,66,101,52,17,1,0,96,52,17,34,100,85,20,2,73,85,53,18,33,67,86,213,136,40,100,86,52,17,194,237,154,136,24,51,86,198,236,239,187,170,137,24,194,204,239,222,169,187,187,154,204,237,223,220,136,153,185,187,237,239,204,253,154,136,136,153,254,205,236,239,187,171,153,136,206,220,255,222,160,186,187,155,204,254,222,12,0,144,169,187,237,239,12,0,0,0,128,153,255,13,0,0,0,0,0,128,14,0,0,0,0,0,0,64,4,0,0,0,0,0,64,49,19,4,0,0,0,64,145,34,34,25,4,0,64,52,34,57,147,34,67,4,69,52,34,57,147,34,67,180,119,69,145,34,34,25,180,219,231,119,69,49,19,180,218,175,88,230,118,69,180,219,175,188,229,88,230,135,218,175,204,191,134,229,104,230,175,204,191,218,230,119,229,88,204,191,218,175,104,230,119,229,191,218,175,188,224,104,230,118,218,175,205,15,0,224,88,231,175,188,15,0,0,0,224,104,204,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,32,147,52,1,0,0,0,64,145,19,146,68,1,0,32,146,68,145,35,146,68,1,150,35,146,68,145,19,146,164,119,150,35,146,68,145,179,218,231,119,150,35,147,180,218,159,103,230,118,150,179,202,159,188,230,103,230,119,202,175,204,191,118,230,103,230,159,204,191,218,230,119,230,103,204,191,218,159,103,230,119,230,191,218,159,188,224,103,230,118,218,159,204,15,0,224,103,231,175,188,15,0,0,0,224,103,204,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,32,147,52,1,0,0,0,64,145,19,146,68,1,0,32,146,68,145,35,146,68,1,150,35,146,68,145,19,146,164,119,150,35,146,68,145,179,218,231,119,150,35,147,180,218,159,103,230,118,150,179,202,159,188,230,103,230,119,202,175,204,191,118,230,103,230,159,204,191,218,230,119,230,103,204,191,218,159,103,230,119,230,191,218,159,188,224,103,230,118,218,159,204,15,0,224,103,231,175,188,15,0,0,0,224,103,204,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,32,147,52,1,0,0,0,64,145,19,146,68,1,0,32,146,68,145,35,146,68,1,150,35,146,68,145,19,146,164,119,150,35,146,68,145,179,218,231,119,150,35,147,180,218,159,103,230,118,150,179,202,159,188,230,103,230,119,202,175,204,191,118,230,103,230,159,204,191,218,230,119,230,103,204,191,218,159,103,230,119,230,191,218,159,188,224,103,230,118,218,159,204,15,0,224,103,231,175,188,15,0,0,0,224,103,204,15,0,0,0,0,0,224,15,0,0,0,0,0,0,80,5,0,0,0,0,0,80,35,50,5,0,0,0,80,51,17,17,51,5,0,80,37,17,34,34,17,82,5,84,37,17,34,34,17,82,165,118,84,51,17,17,51,197,202,230,135,84,35,50,165,218,175,104,230,118,84,197,218,175,188,228,72,230,136,202,175,188,191,119,228,72,231,175,188,207,219,230,136,228,104,204,191,218,175,104,230,134,228,191,218,175,188,224,104,230,135,219,175,204,15,0,224,72,230,175,204,15,0,0,0,224,104,188,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,32,210,51,1,0,0,0,48,209,19,210,51,1,0,32,210,51,209,34,210,51,1,213,34,210,51,209,34,211,147,102,212,19,210,51,209,178,201,229,118,213,35,210,147,217,159,88,230,102,213,178,217,159,171,229,88,229,119,201,159,172,175,102,229,87,230,159,172,191,202,230,119,228,88,188,175,201,159,87,229,117,228,175,217,159,171,224,87,229,118,218,159,187,15,0,224,88,229,159,187,15,0,0,0,224,88,172,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,32,210,51,1,0,0,0,48,209,19,210,51,1,0,32,210,51,209,34,210,51,1,213,34,210,51,209,34,211,147,102,212,19,210,51,209,178,201,229,118,213,35,210,147,217,159,88,230,102,213,178,217,159,171,229,88,229,119,201,159,172,175,102,229,87,230,159,172,191,202,230,119,228,88,188,175,201,159,87,229,117,228,175,217,159,171,224,87,229,118,218,159,187,15,0,224,88,229,159,187,15,0,0,0,224,88,172,15,0,0,0,0,0,224,15,0,0,0,0,0,0,48,1,0,0,0,0,0,32,210,51,1,0,0,0,48,209,19,210,51,1,0,32,210,51,209,34,210,51,1,213,34,210,51,209,34,211,147,102,212,19,210,51,209,178,201,229,118,213,35,210,147,217,159,88,230,102,213,178,217,159,171,229,88,229,119,201,159,172,175,102,229,87,230,159,172,191,202,230,119,228,88,188,175,201,159,87,229,117,228,175,217,159,171,224,87,229,118,218,159,187,15,0,224,88,229,159,187,15,0,0,0,224,88,172,15,0,0,0,0,0,224,15,0,0,0,0,0,0,16,4,0,0,0,0,0,80,53,67,0,0,0,0,32,2,66,67,17,1,0,64,69,17,35,4,34,38,1,42,68,84,33,52,82,83,194,112,0,2,2,17,65,224,222,138,169,19,53,85,217,255,11,137,9,104,149,226,205,191,15,135,128,103,152,238,0,223,219,136,169,170,9,222,224,223,255,122,166,105,102,206,222,190,255,10,122,133,163,14,189,188,206,96,151,120,56,190,207,255,11,0,160,150,138,221,192,12,0,0,0,112,166,239,0,0,0,0,0,0,96,0,0,0,0,0,0,0,48,2,0,0,0,0,0,32,66,22,4,0,0,0,96,17,34,35,51,4,0,80,19,131,1,34,53,49,1,71,34,83,84,33,48,97,245,153,137,99,67,20,50,164,253,166,6,89,83,67,193,172,236,6,103,134,86,225,221,170,237,134,137,105,119,255,191,0,236,104,149,88,102,189,207,238,174,152,133,150,134,191,207,236,192,9,119,152,150,171,234,222,172,128,105,151,135,192,237,202,11,0,96,137,119,235,220,11,0,0,0,112,136,188,10,0,0,0,0,0,64,10,0,0,0,0,0,0,32,2,0,0,0,0,0,112,35,50,7,0,0,0,96,49,38,98,19,6,0,16,23,23,53,83,113,113,1,25,23,23,53,83,113,113,193,69,100,49,38,98,19,214,186,238,68,117,35,50,215,221,255,149,238,84,43,178,202,255,186,136,69,238,69,186,255,173,189,149,152,152,238,255,173,173,187,238,133,75,88,170,186,186,255,73,238,89,133,219,173,255,221,128,68,238,123,218,255,172,11,0,112,132,238,255,172,11,0,0,0,176,148,220,10,0,0,0,0,0,128,10,0,0,0,0,0,0,16,1,0,0,0,0,0,16,84,68,1,0,0,0,16,67,67,51,52,1,0,16,51,178,18,33,59,50,1,178,86,181,85,85,91,85,91,99,178,34,34,34,34,91,251,151,153,178,102,118,91,152,253,137,87,67,178,91,173,216,250,71,68,126,233,184,252,251,247,84,133,153,232,217,95,253,249,134,158,232,230,172,216,154,252,153,232,230,228,140,187,207,252,224,53,99,232,153,156,218,15,0,224,152,233,217,138,15,0,0,0,224,230,203,15,0,0,0,0,0,224,15,0,0,0,0,0,0,144,9,0,0,0,0,0,16,145,73,4,0,0,0,32,57,147,68,68,9,0,144,41,51,147,73,68,20,3,155,153,153,41,145,25,34,249,166,154,153,153,153,17,195,252,182,170,155,41,153,233,238,204,139,170,186,152,249,238,254,220,107,171,170,187,255,238,254,204,107,104,187,135,253,255,255,255,139,107,182,119,220,221,253,254,107,187,187,102,223,252,255,255,176,187,187,106,223,255,255,13,0,176,187,187,207,255,15,0,0,0,112,183,255,15,0,0,0,0,0,176,15,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,17,17,0,0,0,0,16,17,17,17,17,0,0,0,17,65,67,67,17,1,0,0,17,52,52,52,20,1,0,0,17,65,52,68,17,1,0,0,16,17,17,17,17,0,0,0,0,16,17,17,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,2,0,0,0,0,0,0,50,50,2,0,0,0,0,48,50,50,50,0,0,0,0,50,50,50,50,2,0,0,0,48,50,50,50,0,0,0,0,0,50,50,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,16,0,0,0,16,0,1,0,16,0,0,0,1,0,1,0,32,0,0,0,2,0,2,0,48,1,16,0,3,0,3,0,48,2,32,0,3,0,3,4,0,5,0,3,5,0,5,5,0,6,0,99,0,64,6,6,0,7,0,117,0,96,7,8,0,8,0,134,0,112,8,9,0,9,0,152,0,128,9,144,0,169,0,144,0,144,10,176,0,186,0,171,0,10,11,192,0,203,0,188,0,12,12,208,0,221,0,221,0,13,13,224,0,238,0,238,0,14,14,0,15,15,15,15,15,15,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,0,2,0,1,0,1,0,0,32,2,0,2,0,2,0,0,48,3,0,3,0,3,0,0,48,4,0,3,0,3,0,0,80,5,0,5,0,5,0,0,96,119,0,102,0,101,0,0,8,153,0,136,0,135,0,0,10,187,0,170,0,169,0,0,12,221,0,204,0,204,0,0,14,238,0,238,0,238,0,0,15,15,15,15,15,15,15,0,0,0,17,0,0,0,0,0,0,64,49,48,33,0,0,0,0,0,1,0,17,0,0,0,0,96,66,19,20,3,0,0,0,0,2,16,34,0,0,99,0,128,99,96,114,82,0,3,0,64,4,48,2,3,0,132,0,187,149,154,147,116,0,5,0,96,6,80,4,5,0,182,0,238,183,205,214,166,0,112,0,128,8,112,119,112,0,159,253,249,249,249,143,159,13,160,0,11,11,10,170,160,0,192,0,12,12,12,188,192,0,208,0,13,13,13,221,208,0,0,14,14,14,14,14,14,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,49,0,80,49,0,1,0,16,16,0,0,1,0,66,0,87,49,84,113,98,0,3,0,48,50,0,2,3,0,116,0,138,99,135,163,133,0,96,0,96,80,0,85,96,0,125,234,215,108,201,108,126,11,128,0,9,136,0,136,144,0,160,0,10,154,0,153,160,0,192,0,13,204,0,204,208,0,0,15,15,15,15,15,15,15,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,3,0,48,0,0,0,0,48,49,0,19,3,0,0,0,0,3,48,48,0,0,0,0,3,48,49,0,48,0,0,48,49,0,3,0,19,3,0,0,3,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,33,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,0,0,0,0,16,18,18,18,1,0,0,0,17,18,18,18,17,0,0,0,16,17,17,17,1,0,0,0,0,16,17,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,80,5,0,0,0,0,0,80,18,18,5,0,0,0,80,66,51,35,17,5,0,80,17,68,68,68,51,17,5,88,17,67,68,68,36,33,181,134,88,33,67,51,51,181,187,103,134,88,33,34,181,187,203,155,104,134,88,181,187,204,254,153,123,103,134,187,203,252,238,153,153,123,104,188,254,236,238,151,137,153,155,252,238,204,206,122,119,153,153,238,238,204,251,160,122,134,152,238,204,250,15,0,160,106,151,206,251,15,0,0,0,160,122,251,15,0,0,0,0,0,160,15,0,0,0,0,0,0,208,13,0,0,0,0,0,208,221,17,13,0,0,0,32,51,221,18,17,13,0,208,51,18,85,211,221,221,13,222,221,45,17,221,221,221,253,238,222,17,210,51,213,253,255,78,238,222,51,51,253,248,255,238,68,229,222,253,143,255,255,230,71,238,238,143,255,255,252,102,103,231,238,255,191,171,252,86,78,238,230,255,252,184,250,238,78,100,231,170,143,185,252,224,78,116,231,169,159,184,15,0,224,126,231,171,143,15,0,0,0,112,238,255,15,0,0,0,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,51,0,0,0,0,0,53,51,35,51,0,0,0,53,51,50,51,35,51,0,53,35,51,51,50,51,51,83,102,51,35,51,51,50,83,119,102,102,51,35,51,83,119,119,17,102,102,51,83,119,119,68,8,17,102,102,119,119,68,144,0,0,17,102,119,68,0,0,0,0,0,17,68,0,0,0,0,0,0,128,9,0,0,0,0,0,0,128,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,17,0,0,0,0,0,24,17,17,17,0,0,0,88,85,21,17,17,17,0,88,85,85,85,21,17,17,33,51,85,85,85,85,21,33,153,51,51,85,85,85,133,153,153,102,51,51,85,133,148,153,119,10,102,51,51,68,148,119,176,0,0,102,51,68,119,0,0,0,0,0,102,119,0,0,0,0,0,0,160,11,0,0,0,0,0,0,160,11,0,0,0,0,0,0,16,2,0,0,0,0,0,96,102,54,2,0,0,0,96,35,17,34,102,6,0,32,17,99,102,54,19,18,1,103,102,35,18,34,51,102,166,85,23,98,99,102,35,209,234,187,187,43,34,17,242,173,222,119,87,119,101,166,237,250,173,120,135,136,120,234,173,223,234,187,139,139,187,223,234,172,206,85,85,85,85,173,222,234,172,136,135,136,136,234,173,175,234,128,136,136,139,222,250,172,15,0,80,85,69,205,207,12,0,0,0,128,136,250,10,0,0,0,0,0,128,14,0,0,0,0,0,0,16,1,0,0,0,0,0,144,157,90,2,0,0,0,160,35,34,34,150,13,0,16,33,99,218,106,51,33,1,212,170,53,17,34,83,218,182,84,36,99,150,109,51,193,248,238,222,62,18,49,243,140,207,85,69,69,100,137,255,248,139,119,119,87,87,248,140,191,248,238,238,221,238,252,251,188,207,68,84,68,68,139,191,251,187,119,119,119,215,248,139,207,248,112,237,215,231,191,248,136,15,0,64,68,68,140,191,11,0,0,0,208,119,248,12,0,0,0,0,0,112,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,1,0,0,0,0,0,80,145,83,1,0,0,0,16,149,84,162,20,3,0,32,102,25,165,35,68,26,5,56,26,99,106,82,25,53,170,216,56,74,162,84,65,185,203,233,232,151,51,161,245,204,191,216,231,135,150,245,253,175,219,192,215,231,120,251,252,204,15,0,208,120,198,252,253,15,0,0,0,208,136,253,12,0,0,0,0,0,224,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,2,0,0,0,0,0,48,129,66,2,0,0,0,16,131,85,145,21,3,0,64,69,24,149,36,69,40,4,55,25,85,57,50,25,83,153,183,55,88,146,68,65,168,170,216,216,135,51,129,227,188,175,215,216,119,150,229,252,175,219,192,215,215,119,234,253,189,15,0,176,119,182,251,236,15,0,0,0,176,119,253,10,0,0,0,0,0,208,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,1,0,0,0,0,0,48,145,83,2,0,0,0,16,147,52,161,22,3,0,32,70,26,147,19,86,41,4,87,26,69,74,82,26,85,185,232,87,90,145,67,50,186,220,217,216,167,84,161,244,204,191,233,232,136,151,243,252,175,204,208,216,215,135,252,252,206,15,0,224,120,230,252,252,15,0,0,0,224,135,252,12,0,0,0,0,0,224,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,1,0,0,0,0,0,48,146,53,2,0,0,0,32,162,84,162,20,4,0,16,84,26,165,21,69,25,5,87,42,83,58,50,25,69,185,232,72,73,161,85,49,185,188,232,201,167,50,161,242,220,191,233,231,136,150,243,252,175,204,208,215,214,120,251,252,189,15,0,208,135,198,253,251,15,0,0,0,192,135,252,12,0,0,0,0,0,224,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,2,0,0,0,0,0,32,145,83,1,0,0,0,16,146,52,129,21,4,0,32,85,40,131,37,101,41,5,87,25,68,89,34,24,84,169,183,55,88,146,68,49,168,187,215,216,135,35,129,243,205,175,215,215,135,134,244,252,175,204,208,215,215,119,251,252,188,14,0,176,119,214,252,251,15,0,0,0,176,119,252,12,0,0,0,0,0,208,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,1,0,0,0,0,0,32,145,50,2,0,0,0,16,162,85,163,20,2,0,64,85,41,148,19,101,57,4,39,26,100,90,34,25,69,169,200,56,104,161,86,65,185,188,232,232,151,34,129,242,236,191,232,231,136,150,245,253,175,203,224,215,215,135,251,254,189,15,0,192,121,198,251,251,15,0,0,0,192,151,253,11,0,0,0,0,0,224,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,32,32,0,2,0,0,2,0,32,32,0,2,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,32,0,2,2,0,0,2,0,32,0,2,2,0,0,2,0,32,0,2,2,0,0,2,0,32,0,2,2,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,0,2,32,0,32,0,32,0,0,2,32,0,32,0,32,0,0,2,32,0,32,0,32,0,0,2,32,0,32,1,32,1,0,18,32,1,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,32,32,0,32,0,0,2,0,32,32,0,32,0,0,2,0,32,32,0,32,0,0,2,0,32,32,0,32,0,0,2,0,33,33,0,33,0,16,2,0,32,32,0,32,0,0,2,0,32,32,0,32,0,0,2,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,67,0,67,0,67,48,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,32,0,32,2,0,0,32,0,32,0,32,2,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,32,32,0,32,0,32,0,0,32,32,0,32,0,32,0,0,32,32,0,32,0,32,0,0,32,32,0,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,2,0,32,0,2,0,32,0,2,0,32,0,2,0,32,0,2,0,32,0,2,0,32,0,2,0,32,0,2,0,32,1,18,0,32,1,18,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,16,2,16,2,16,2,33,0,0,2,0,2,0,2,32,0,0,2,0,2,0,2,32,0,0,18,0,18,0,18,32,1,0,2,0,2,0,2,32,0,0,0,0,0,0,0,0,0,64,0,64,0,0,4,4,0,64,0,64,0,0,4,4,0,64,0,64,0,0,4,4,0,64,0,64,0,0,4,4,0,67,0,67,0,48,52,4,0,64,0,64,0,0,4,4,0,64,0,64,0,0,4,4,0,0,52,0,52,0,52,64,3,0,4,0,4,0,4,64,0,0,4,0,4,0,4,64,0,48,4,48,4,48,4,67,0,0,4,0,4,0,4,64,0,0,4,0,4,0,4,64,0,0,52,0,52,0,52,64,3,0,33,0,33,0,33,16,2,0,0,0,16,2,0,0,0,0,0,96,102,54,2,0,0,0,96,35,17,34,102,6,0,32,17,99,102,54,19,18,1,103,102,35,18,34,51,102,166,85,23,98,99,102,35,209,234,187,187,43,34,17,242,173,222,119,87,119,101,166,237,250,173,120,135,136,120,234,173,223,234,187,139,139,187,223,234,172,206,85,85,85,85,173,222,234,172,136,135,136,136,234,173,175,234,128,136,136,139,222,250,172,15,0,80,85,69,205,207,12,0,0,0,128,136,250,10,0,0,0,0,0,128,14,0,0,0,0,0,0,16,2,0,0,0,0,0,96,102,54,2,0,0,0,96,35,17,34,102,6,0,32,17,99,102,54,19,18,1,103,102,35,18,34,51,102,166,85,23,98,99,102,35,209,234,187,187,43,34,17,242,173,222,119,87,119,101,166,237,250,173,120,135,136,120,234,173,223,234,187,139,139,187,223,234,172,206,85,85,85,85,173,222,234,172,136,135,136,136,234,173,175,234,128,136,136,139,222,250,172,15,0,80,85,69,205,207,12,0,0,0,128,136,250,10,0,0,0,0,0,128,14,0,0,0,0,0,0,16,2,0,0,0,0,0,96,102,54,2,0,0,0,96,35,17,34,102,6,0,32,17,99,102,54,19,18,1,103,102,35,18,34,51,102,166,85,23,98,99,102,35,209,234,187,187,43,34,17,242,173,222,119,87,119,101,166,237,250,173,120,135,136,120,234,173,223,234,187,139,139,187,223,234,172,206,85,85,85,85,173,222,234,172,136,135,136,136,234,173,175,234,128,136,136,139,222,250,172,15,0,80,85,69,205,207,12,0,0,0,128,136,250,10,0,0,0,0,0,128,14,0,0,0,0,0,0,16,2,0,0,0,0,0,96,102,54,2,0,0,0,96,35,17,34,102,6,0,32,17,99,102,54,19,18,1,103,102,35,18,34,51,102,166,85,23,98,99,102,35,209,234,187,187,43,34,17,242,173,222,119,87,119,101,166,237,250,173,120,135,136,120,234,173,223,234,187,139,139,187,223,234,172,206,85,85,85,85,173,222,234,172,136,135,136,136,234,173,175,234,128,136,136,139,222,250,172,15,0,80,85,69,205,207,12,0,0,0,128,136,250,10,0,0,0,0,0,128,14,0,0,0,0,0,0,16,2,0,0,0,0,0,96,102,54,2,0,0,0,96,35,17,34,102,6,0,32,17,99,102,54,19,18,1,103,102,35,18,34,51,102,166,85,23,98,99,102,35,209,234,187,187,43,34,17,242,173,222,119,87,119,101,166,237,250,173,120,135,136,120,234,173,223,234,187,139,139,187,223,234,172,206,85,85,85,85,173,222,234,172,136,135,136,136,234,173,175,234,128,136,136,139,222,250,172,15,0,80,85,69,205,207,12,0,0,0,128,136,250,10,0,0,0,0,0,128,14,0,0,0,0,0,0,16,2,0,0,0,0,0,96,102,54,2,0,0,0,96,35,17,34,102,6,0,32,17,99,102,54,19,18,1,103,102,35,18,34,51,102,166,85,23,98,99,102,35,209,234,187,187,43,34,17,242,173,222,119,87,119,101,166,237,250,173,120,135,136,120,234,173,223,234,187,139,139,187,223,234,172,206,85,85,85,85,173,222,234,172,136,135,136,136,234,173,175,234,128,136,136,139,222,250,172,15,0,80,85,69,205,207,12,0,0,0,128,136,250,10,0,0,0,0,0,128,14,0,0,0,0,0,0,16,2,0,0,0,0,0,96,102,54,2,0,0,0,96,35,17,34,102,6,0,32,17,99,102,54,19,18,1,103,102,35,18,34,51,102,166,85,23,98,99,102,35,209,234,187,187,43,34,17,242,173,222,119,87,119,101,166,237,250,173,120,135,136,120,234,173,223,234,187,139,139,187,223,234,172,206,85,85,85,85,173,222,234,172,136,135,136,136,234,173,175,234,128,136,136,139,222,250,172,15,0,80,85,69,205,207,12,0,0,0,128,136,250,10,0,0,0,0,0,128,14,0,0,0,0,0,0,16,1,0,0,0,0,0,144,157,90,2,0,0,0,160,35,34,34,150,13,0,16,33,99,218,106,51,33,1,212,170,53,17,34,83,218,182,84,36,99,150,109,51,193,248,238,222,62,18,49,243,140,207,85,69,69,100,137,255,248,139,119,119,87,87,248,140,191,248,238,238,221,238,252,251,188,207,68,84,68,68,139,191,251,187,119,119,119,215,248,139,207,248,112,237,215,231,191,248,136,15,0,64,68,68,140,191,11,0,0,0,208,119,248,12,0,0,0,0,0,112,15,0,0,0,0,0,0,16,1,0,0,0,0,0,144,157,90,2,0,0,0,160,35,34,34,150,13,0,16,33,99,218,106,51,33,1,212,170,53,17,34,83,218,182,84,36,99,150,109,51,193,248,238,222,62,18,49,243,140,207,85,69,69,100,137,255,248,139,119,119,87,87,248,140,191,248,238,238,221,238,252,251,188,207,68,84,68,68,139,191,251,187,119,119,119,215,248,139,207,248,112,237,215,231,191,248,136,15,0,64,68,68,140,191,11,0,0,0,208,119,248,12,0,0,0,0,0,112,15,0,0,0,0,0,0,16,1,0,0,0,0,0,144,157,90,2,0,0,0,160,35,34,34,150,13,0,16,33,99,218,106,51,33,1,212,170,53,17,34,83,218,182,84,36,99,150,109,51,193,248,238,222,62,18,49,243,140,207,85,69,69,100,137,255,248,139,119,119,87,87,248,140,191,248,238,238,221,238,252,251,188,207,68,84,68,68,139,191,251,187,119,119,119,215,248,139,207,248,112,237,215,231,191,248,136,15,0,64,68,68,140,191,11,0,0,0,208,119,248,12,0,0,0,0,0,112,15,0,0,0,0,0,0,48,1,0,0,0,0,0,48,129,50,1,0,0,0,16,131,67,145,19,2,0,16,68,24,148,34,50,25,3,36,24,66,73,66,24,36,248,117,37,56,146,66,49,232,253,212,120,133,34,129,163,250,251,103,213,182,135,148,187,252,250,215,104,214,214,170,159,235,156,215,167,215,215,159,172,170,186,216,216,165,166,186,255,171,158,215,214,118,197,255,252,159,218,176,198,213,103,234,251,171,15,0,208,103,181,250,252,15,0,0,0,192,119,253,10,0,0,0,0,0,208,11,0,0,0,0,0,0,16,1,0,0,0,0,0,16,55,17,1,0,0,0,16,19,118,119,97,5,0,16,19,113,17,103,23,17,1,18,23,119,17,17,17,51,193,34,82,86,85,22,17,225,75,154,41,121,118,49,209,77,76,146,186,170,18,65,68,68,68,40,171,42,134,68,221,79,68,34,34,42,39,228,254,68,68,40,171,34,34,223,68,223,204,34,43,153,130,68,79,220,68,32,146,169,40,74,205,222,4,0,144,153,130,68,212,13,0,0,0,144,34,244,4,0,0,0,0,0,32,4,0,0,0,0,0,0,48,1,0,0,0,0,0,48,129,50,1,0,0,0,16,131,67,145,19,2,0,16,68,24,148,34,50,25,3,36,24,66,73,66,24,36,248,117,37,56,146,66,49,232,253,212,120,133,34,129,163,250,251,103,213,182,135,148,187,252,250,215,104,214,214,170,159,235,156,215,167,215,215,159,172,170,186,216,216,165,166,186,255,171,158,215,214,118,197,255,252,159,218,176,198,213,103,234,251,171,15,0,208,103,181,250,252,15,0,0,0,192,119,253,10,0,0,0,0,0,208,11,0,0,0,0,0,0,16,1,0,0,0,0,0,16,55,17,1,0,0,0,16,19,118,119,97,5,0,16,19,113,17,103,23,17,1,18,23,119,17,17,17,51,193,34,82,86,85,22,17,225,75,154,41,121,118,49,209,77,76,146,186,170,18,65,68,68,68,40,171,42,134,68,221,79,68,34,34,42,39,228,254,68,68,40,171,34,34,223,68,223,204,34,43,153,130,68,79,220,68,32,146,169,40,74,205,222,4,0,144,153,130,68,212,13,0,0,0,144,34,244,4,0,0,0,0,0,32,4,0,0,0,0,0,0,48,1,0,0,0,0,0,48,129,50,1,0,0,0,16,131,67,145,19,2,0,16,68,24,148,34,50,25,3,36,24,66,73,66,24,36,248,117,37,56,146,66,49,232,253,212,120,133,34,129,163,250,251,103,213,182,135,148,187,252,250,215,104,214,214,170,159,235,156,215,167,215,215,159,172,170,186,216,216,165,166,186,255,171,158,215,214,118,197,255,252,159,218,176,198,213,103,234,251,171,15,0,208,103,181,250,252,15,0,0,0,192,119,253,10,0,0,0,0,0,208,11,0,0,0,0,0,0,16,1,0,0,0,0,0,16,55,17,1,0,0,0,16,19,118,119,97,5,0,16,19,113,17,103,23,17,1,18,23,119,17,17,17,51,193,34,82,86,85,22,17,225,75,154,41,121,118,49,209,77,76,146,186,170,18,65,68,68,68,40,171,42,134,68,221,79,68,34,34,42,39,228,254,68,68,40,171,34,34,223,68,223,204,34,43,153,130,68,79,220,68,32,146,169,40,74,205,222,4,0,144,153,130,68,212,13,0,0,0,144,34,244,4,0,0,0,0,0,32,4,0,0,0,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,66,68,68,68,68,36,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,85,85,85,85,85,85,85,85,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,66,68,68,68,68,36,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,85,85,85,85,85,85,85,85,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,66,68,68,68,68,36,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,85,85,85,85,85,85,85,85,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,66,68,68,68,68,36,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,85,85,85,85,85,85,85,85,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,66,68,68,68,68,36,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,85,85,85,85,85,85,85,85,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,66,68,68,68,68,36,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,85,85,85,85,85,85,85,85,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,33,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,66,68,68,68,68,36,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,37,50,35,34,34,50,35,82,85,85,85,85,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,0,0,0,15,0,240,0,224,0,0,0,14,0,224,15,224,15,240,0,254,240,208,254,192,14,239,0,236,224,192,237,176,13,222,15,219,208,191,219,175,11,189,254,186,176,157,186,157,250,171,220,169,175,139,169,139,217,154,186,152,157,122,135,106,183,120,169,118,123,104,118,88,150,103,135,101,105,70,85,70,117,85,102,84,87,52,67,52,83,52,68,51,53,35,34,35,50,34,50,34,35,17,17,17,17,17,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,54,98,0,0,0,0,0,96,83,6,0,0,0,0,0,54,101,0,0,0,0,0,96,83,6,0,0,0,0,0,54,101,0,0,0,0,0,96,83,6,0,0,0,96,0,54,101,0,0,0,0,70,102,83,6,0,0,0,0,96,52,101,0,0,0,0,0,0,70,6,0,0,0,0,0,96,101,100,0,0,0,0,0,86,6,70,6,0,0,0,96,101,0,96,0,0,0,0,22,6,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,80,17,34,5,0,0,0,0,21,33,34,82,0,0,0,0,21,34,34,84,0,0,0,0,37,34,66,84,0,0,0,0,37,34,68,84,0,0,0,0,80,66,68,5,0,0,0,0,53,84,85,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,0,80,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,5,0,0,0,0,0,80,21,81,5,0,0,0,0,21,33,18,81,0,0,0,80,82,68,68,37,5,0,0,80,68,85,85,68,82,0,0,0,85,0,0,53,84,0,0,0,0,0,80,67,36,5,0,0,0,0,53,84,69,5,0,0,0,80,67,5,80,82,0,0,0,53,84,0,80,82,0,0,80,67,5,0,0,5,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,0,80,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,5,0,0,0,0,0,80,17,82,0,0,0,0,0,80,17,34,5,0,0,0,0,80,17,34,84,0,0,0,0,80,17,34,84,0,0,0,0,80,17,34,84,0,0,0,0,80,17,34,5,0,0,0,0,80,17,82,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,0,80,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,4,0,0,0,0,64,17,17,65,0,0,0,0,64,51,51,19,4,0,0,0,0,68,68,52,4,0,0,0,0,0,36,67,0,0,0,0,0,64,50,4,0,0,0,0,0,36,67,0,0,0,0,0,64,50,4,0,0,0,0,0,36,67,0,0,0,0,0,64,50,4,0,0,0,0,0,36,67,0,0,0,0,0,64,50,4,0,0,0,0,0,36,67,0,0,0,0,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,0,0,0,0,55,114,0,0,0,0,0,112,67,7,0,0,0,0,0,55,116,0,0,0,0,0,112,67,7,0,0,0,0,0,55,116,0,0,0,0,0,112,67,7,0,0,0,112,0,55,116,0,0,0,0,103,119,67,7,0,0,0,0,112,54,116,0,0,0,0,0,0,103,7,0,0,0,0,0,112,117,118,0,0,0,0,0,87,7,103,7,0,0,0,112,117,0,112,0,0,0,0,23,7,0,0,0,0,0,0,0,0,0,0,0,102,102,0,0,0,0,0,96,17,34,6,0,0,0,0,22,33,34,98,0,0,0,0,22,34,34,99,0,0,0,0,38,34,50,99,0,0,0,0,38,34,51,99,0,0,0,0,96,50,51,6,0,0,0,0,70,101,102,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,96,22,97,6,0,0,0,0,22,33,18,97,0,0,0,96,98,51,51,38,6,0,0,96,51,102,102,51,98,0,0,0,102,0,0,70,99,0,0,0,0,0,96,84,35,6,0,0,0,0,70,101,54,6,0,0,0,96,84,6,96,98,0,0,0,70,101,0,96,98,0,0,96,84,6,0,0,6,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,6,0,0,0,0,0,96,17,98,0,0,0,0,0,96,17,34,6,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,6,0,0,0,0,96,17,98,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,5,0,0,0,0,80,17,17,81,0,0,0,0,80,34,34,18,5,0,0,0,0,85,85,37,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,0,80,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,0,0,0,0,39,113,0,0,0,0,0,112,66,7,0,0,0,0,0,39,116,0,0,0,0,0,112,66,7,0,0,0,0,0,39,116,0,0,0,0,0,112,66,7,0,0,0,112,0,39,116,0,0,0,0,103,119,66,7,0,0,0,0,112,38,116,0,0,0,0,0,0,103,7,0,0,0,0,0,112,117,118,0,0,0,0,0,87,7,103,7,0,0,0,112,117,0,112,0,0,0,0,55,7,0,0,0,0,0,0,0,0,0,0,0,102,102,0,0,0,0,0,96,17,34,6,0,0,0,0,22,33,34,98,0,0,0,0,22,34,34,99,0,0,0,0,38,34,50,99,0,0,0,0,38,34,51,99,0,0,0,0,96,50,51,6,0,0,0,0,70,101,102,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,96,22,97,6,0,0,0,0,22,33,18,97,0,0,0,96,98,51,51,38,6,0,0,96,51,102,102,51,98,0,0,0,102,0,0,70,99,0,0,0,0,0,96,84,35,6,0,0,0,0,70,101,54,6,0,0,0,96,84,6,96,98,0,0,0,70,101,0,96,98,0,0,96,84,6,0,0,6,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,6,0,0,0,0,0,96,17,98,0,0,0,0,0,96,17,34,6,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,6,0,0,0,0,96,17,98,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,5,0,0,0,0,80,17,17,81,0,0,0,0,80,34,34,18,5,0,0,0,0,85,85,37,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,0,80,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,0,0,0,0,39,113,0,0,0,0,0,112,66,7,0,0,0,0,0,39,116,0,0,0,0,0,112,66,7,0,0,0,0,0,39,116,0,0,0,0,0,112,66,7,0,0,0,112,0,39,116,0,0,0,0,103,119,66,7,0,0,0,0,112,38,116,0,0,0,0,0,0,103,7,0,0,0,0,0,112,117,118,0,0,0,0,0,87,7,103,7,0,0,0,112,117,0,112,0,0,0,0,55,7,0,0,0,0,0,0,0,0,0,0,0,102,102,0,0,0,0,0,96,17,34,6,0,0,0,0,22,33,34,98,0,0,0,0,22,34,34,99,0,0,0,0,38,34,50,99,0,0,0,0,38,34,51,99,0,0,0,0,96,50,51,6,0,0,0,0,70,101,102,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,96,22,97,6,0,0,0,0,22,33,18,97,0,0,0,96,98,51,51,38,6,0,0,96,51,102,102,51,98,0,0,0,102,0,0,70,99,0,0,0,0,0,96,84,35,6,0,0,0,0,70,101,54,6,0,0,0,96,84,6,96,98,0,0,0,70,101,0,96,98,0,0,96,84,6,0,0,6,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,6,0,0,0,0,0,96,17,98,0,0,0,0,0,96,17,34,6,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,6,0,0,0,0,96,17,98,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,5,0,0,0,0,80,17,17,81,0,0,0,0,80,34,34,18,5,0,0,0,0,85,85,37,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,0,80,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,7,0,0,0,0,0,0,55,113,0,0,0,0,0,112,67,7,0,0,0,0,0,55,116,0,0,0,0,0,112,67,7,0,0,0,0,0,55,116,0,0,0,0,0,112,67,7,0,0,0,112,0,55,116,0,0,0,0,103,119,67,7,0,0,0,0,112,54,116,0,0,0,0,0,0,103,7,0,0,0,0,0,112,117,118,0,0,0,0,0,87,7,103,7,0,0,0,112,117,0,112,0,0,0,0,39,7,0,0,0,0,0,0,0,0,0,0,0,102,102,0,0,0,0,0,96,17,34,6,0,0,0,0,22,33,34,98,0,0,0,0,22,34,34,99,0,0,0,0,38,34,50,99,0,0,0,0,38,34,51,99,0,0,0,0,96,50,51,6,0,0,0,0,70,101,102,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,96,22,97,6,0,0,0,0,22,33,18,97,0,0,0,96,98,51,51,38,6,0,0,96,51,102,102,51,98,0,0,0,102,0,0,70,99,0,0,0,0,0,96,84,35,6,0,0,0,0,70,101,54,6,0,0,0,96,84,6,96,98,0,0,0,70,101,0,96,98,0,0,96,84,6,0,0,6,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,6,0,0,0,0,0,96,17,98,0,0,0,0,0,96,17,34,6,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,99,0,0,0,0,96,17,34,6,0,0,0,0,96,17,98,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,96,84,6,0,0,0,0,0,70,101,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,5,0,0,0,0,80,17,17,81,0,0,0,0,80,34,34,18,5,0,0,0,0,85,85,37,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,80,67,5,0,0,0,0,0,53,84,0,0,0,0,0,0,80,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,0,0,0,0,0,0,0,35,3,0,0,48,0,0,48,50,0,0,0,19,3,0,19,3,0,0,0,48,49,48,49,0,0,0,0,0,19,19,3,0,0,0,0,0,48,49,0,0,0,0,0,0,19,19,3,0,0,0,0,48,49,48,49,0,0,0,0,19,3,0,19,51,0,0,48,50,0,0,48,34,3,0,35,3,0,0,48,34,3,0,48,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,119,0,0,0,0,0,0,23,34,7,0,0,0,0,0,39,66,7,0,0,0,0,0,112,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,119,0,0,0,0,0,0,112,85,7,0,0,0,0,0,112,101,7,0,0,0,0,0,0,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,0,0,0,0,0,0,19,34,51,0,0,0,0,0,48,49,34,51,0,0,0,0,0,19,51,34,3,0,0,0,0,48,49,51,50,0,0,0,0,0,19,3,35,3,0,0,0,0,48,49,48,50,0,0,0,0,48,49,48,50,0,0,0,0,0,19,51,50,0,0,0,0,0,48,49,35,3,0,0,0,0,0,19,35,3,0,0,0,0,0,48,49,50,0,0,0,0,0,0,19,50,0,0,0,0,0,0,48,49,0,0,0,0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,5,0,0,0,0,0,0,53,82,0,0,0,0,0,0,69,83,0,0,0,0,0,80,84,5,0,0,0,0,0,69,5,0,0,0,0,0,80,84,0,0,0,0,0,0,69,5,0,0,0,0,0,80,84,0,0,0,0,0,0,69,5,0,0,0,0,0,85,84,0,0,0,0,0,80,65,5,0,0,0,0,0,80,17,81,0,0,0,0,0,0,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,17,17,34,34,4,0,0,64,33,34,34,50,4,0,0,64,66,0,0,52,4,0,0,64,2,0,0,48,4,0,0,64,4,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,68,4,0,0,20,17,4,64,34,67,0,0,20,34,66,36,34,67,0,0,20,34,34,34,34,67,0,0,64,33,34,34,50,4,0,0,0,36,34,34,66,0,0,0,0,36,18,34,67,0,0,0,0,36,34,34,67,0,0,0,0,36,34,34,67,0,0,0,0,68,68,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,0,20,33,34,67,0,0,0,0,20,34,34,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,68,4,64,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,68,4,0,0,64,65,0,0,36,4,0,0,64,65,0,0,36,4,0,0,64,33,4,0,36,67,0,0,20,34,4,64,34,67,0,0,68,68,4,64,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,0,0,0,80,19,19,35,35,5,0,0,80,49,50,50,50,5,0,0,80,83,0,0,69,5,0,0,80,2,0,0,48,5,0,0,80,5,0,0,80,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,0,0,85,5,0,0,53,49,5,80,50,84,0,0,21,35,83,37,35,83,0,0,53,50,50,50,50,84,0,0,80,35,35,35,67,5,0,0,0,53,50,50,82,0,0,0,0,37,19,35,83,0,0,0,0,53,50,50,84,0,0,0,0,37,35,35,83,0,0,0,0,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,0,0,0,0,53,49,50,84,0,0,0,0,21,35,35,83,0,0,0,0,53,82,53,84,0,0,0,0,21,83,37,83,0,0,0,0,53,82,53,84,0,0,0,0,21,83,37,83,0,0,0,0,53,82,53,84,0,0,0,0,85,5,80,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,0,0,85,5,0,0,80,83,0,0,37,5,0,0,80,81,0,0,53,5,0,0,80,35,5,0,37,83,0,0,53,50,5,80,50,84,0,0,85,85,5,80,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,17,17,34,34,4,0,0,64,33,34,34,50,4,0,0,64,66,0,0,52,4,0,0,64,2,0,0,48,4,0,0,64,4,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,68,4,0,0,20,17,4,64,34,67,0,0,20,34,66,36,34,67,0,0,20,34,34,34,34,67,0,0,64,33,34,34,50,4,0,0,0,36,34,34,66,0,0,0,0,36,18,34,67,0,0,0,0,36,34,34,67,0,0,0,0,36,34,34,67,0,0,0,0,68,68,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,0,20,33,34,67,0,0,0,0,20,34,34,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,68,4,64,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,68,4,0,0,64,65,0,0,36,4,0,0,64,65,0,0,36,4,0,0,64,33,4,0,36,67,0,0,20,34,4,64,34,67,0,0,68,68,4,64,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,17,17,34,34,4,0,0,64,33,34,34,50,4,0,0,64,66,0,0,52,4,0,0,64,2,0,0,48,4,0,0,64,4,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,68,4,0,0,20,17,4,64,34,67,0,0,20,34,66,36,34,67,0,0,20,34,34,34,34,67,0,0,64,33,34,34,50,4,0,0,0,36,34,34,66,0,0,0,0,36,18,34,67,0,0,0,0,36,34,34,67,0,0,0,0,36,34,34,67,0,0,0,0,68,68,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,0,20,33,34,67,0,0,0,0,20,34,34,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,68,4,64,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,68,4,0,0,64,65,0,0,36,4,0,0,64,65,0,0,36,4,0,0,64,33,4,0,36,67,0,0,20,34,4,64,34,67,0,0,68,68,4,64,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,17,17,34,34,4,0,0,64,33,34,34,50,4,0,0,64,66,0,0,52,4,0,0,64,2,0,0,48,4,0,0,64,4,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,68,4,0,0,20,17,4,64,34,67,0,0,20,34,66,36,34,67,0,0,20,34,34,34,34,67,0,0,64,33,34,34,50,4,0,0,0,36,34,34,66,0,0,0,0,36,18,34,67,0,0,0,0,36,34,34,67,0,0,0,0,36,34,34,67,0,0,0,0,68,68,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,0,20,33,34,67,0,0,0,0,20,34,34,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,68,4,64,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,68,4,0,0,64,65,0,0,36,4,0,0,64,65,0,0,36,4,0,0,64,33,4,0,36,67,0,0,20,34,4,64,34,67,0,0,68,68,4,64,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,3,0,0,0,0,0,0,19,50,0,0,0,0,0,48,33,3,0,0,0,0,0,19,50,0,0,0,0,0,48,33,3,0,0,0,0,0,19,50,0,0,0,0,0,48,33,3,0,0,0,0,0,19,50,0,0,0,0,0,48,33,3,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,0,0,0,0,0,68,17,34,68,0,0,0,64,17,33,34,50,4,0,0,64,33,34,34,50,67,0,0,20,34,34,34,34,51,4,0,36,34,34,34,50,67,0,0,64,34,51,51,51,67,0,0,0,68,51,51,68,0,0,0,0,0,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,0,0,0,0,0,68,17,34,68,0,0,0,64,17,33,34,50,4,0,0,64,33,34,34,50,67,0,0,20,34,34,34,34,51,4,0,36,34,34,34,50,67,0,0,64,34,51,51,51,67,0,0,0,68,51,51,68,0,0,0,0,0,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,0,0,0,0,0,68,17,33,68,0,0,0,64,17,17,34,50,4,0,0,68,68,68,68,68,68,0,0,64,33,34,34,50,4,0,0,0,20,34,34,67,0,0,0,0,64,33,50,4,0,0,0,0,0,36,67,0,0,0,0,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,17,17,17,34,4,0,0,20,34,34,34,34,67,0,64,33,34,34,34,34,50,4,64,51,51,51,51,51,51,4,64,68,68,68,68,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,17,17,17,34,4,0,0,20,34,34,34,34,67,0,64,33,34,34,34,34,50,4,64,51,51,51,51,51,51,4,64,68,68,68,68,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,4,0,0,0,0,0,64,17,66,0,0,0,0,0,64,33,67,0,0,0,0,0,0,68,68,4,0,0,0,0,0,0,20,66,0,0,0,0,0,0,36,67,0,0,0,0,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,0,0,0,0,0,68,17,33,68,0,0,0,64,17,17,34,50,4,0,0,68,68,68,68,68,68,0,0,64,33,34,34,50,4,0,0,0,20,34,34,67,0,0,0,0,64,33,50,4,0,0,0,0,0,36,67,0,0,0,0,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,34,32,0,0,3,0,2,0,0,2,33,35,1,2,0,0,0,0,3,34,2,0,0,0,0,2,0,0,0,0,0,0,0,0,16,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,0,0,0,0,20,33,4,0,0,0,0,64,33,34,67,0,0,0,0,64,34,50,67,0,0,0,0,0,36,51,4,0,0,0,0,0,64,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,3,0,0,0,0,0,0,19,3,0,0,0,0,0,48,17,3,0,0,0,0,0,19,49,0,0,0,0,0,48,17,50,0,0,0,0,0,19,33,3,0,0,0,0,48,17,50,0,0,0,0,0,19,50,3,0,0,0,0,0,35,3,0,0,0,0,0,48,50,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,16,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,17,1,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,18,2,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,18,2,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,18,34,0,0,0,0,0,0,32,33,0,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,2,0,1,0,0,0,0,0,0,0,32,0,0,0,0,0,2,16,34,0,0,0,0,0,0,2,3,2,2,0,0,0,19,2,33,48,0,0,0,0,0,1,17,16,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,4,0,0,0,64,17,33,34,66,0,0,0,20,34,34,34,50,4,0,0,36,34,34,34,50,4,0,0,64,34,34,34,51,4,0,0,64,34,34,50,67,0,0,0,36,34,34,34,67,0,0,0,64,68,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,33,33,33,0,0,0,0,0,16,16,16,0,0,0,0,0,18,18,18,0,0,0,0,0,18,18,18,0,0,0,0,32,32,32,0,0,0,0,0,32,32,32,0,0,0,0,0,32,32,32,0,0,0,0,0,2,2,2,0,0,0,0,0,2,2,2,0,0,0,0,32,32,32,0,0,0,0,0,32,32,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,32,0,0,0,0,0,0,32,0,16,0,0,0,0,2,16,32,0,0,0,0,0,0,2,0,2,0,0,0,0,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,16,2,16,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,1,0,0,0,0,0,0,3,51,0,1,0,0,0,0,1,50,1,0,0,0,0,32,33,32,3,48,0,0,0,48,0,33,32,35,0,0,0,0,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,51,51,51,3,0,0,48,17,17,17,17,3,0,0,48,33,34,34,17,3,0,0,48,17,17,17,17,3,0,0,48,33,34,18,17,3,0,0,48,17,17,17,17,3,0,0,48,33,34,34,17,3,0,0,48,17,17,17,17,3,0,0,48,51,51,51,51,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,68,68,4,0,0,52,51,51,51,51,4,0,0,52,34,34,34,51,4,0,0,52,50,51,35,51,4,0,0,52,34,34,34,51,4,0,0,52,51,51,51,51,4,0,0,52,51,51,51,51,4,0,0,20,17,17,17,17,4,0,0,64,68,68,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,0,0,0,0,0,64,17,34,4,0,0,0,0,20,34,34,67,0,0,0,0,36,34,34,67,0,0,0,0,64,34,51,4,0,0,0,0,0,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,17,17,17,34,4,0,0,20,34,34,34,34,67,0,64,33,34,34,34,34,50,4,64,51,51,51,51,51,51,4,64,68,68,68,68,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,68,68,0,0,20,17,34,34,34,67,0,0,64,34,34,34,50,4,0,0,0,36,34,34,67,0,0,0,0,64,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,48,17,17,3,0,0,0,0,19,17,17,50,0,0,0,0,19,17,17,50,0,0,0,0,48,17,34,3,0,0,0,0,0,51,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,0,0,0,0,0,0,19,17,3,0,0,0,0,48,17,17,49,0,0,0,0,48,17,17,50,0,0,0,0,48,17,17,50,0,0,0,0,0,19,34,3,0,0,0,0,0,48,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,0,0,0,0,0,64,17,34,4,0,0,0,0,20,34,34,67,0,0,0,0,36,34,50,67,0,0,0,0,64,50,51,67,0,0,0,0,0,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,48,0,16,0,0,0,0,0,0,16,0,0,0,0,0,0,0,3,32,2,0,0,0,0,16,2,18,50,49,0,0,0,0,0,35,2,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,0,4,0,0,0,4,0,0,64,0,0,0,0,4,0,0,4,0,0,0,0,4,0,0,84,85,85,85,85,69,0,0,53,51,51,51,51,83,0,0,21,33,34,34,34,83,0,0,80,33,34,34,50,5,0,0,80,33,34,34,50,5,0,0,0,21,34,34,83,0,0,0,0,85,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,0,0,0,0,5,0,0,0,5,0,0,80,0,0,0,0,5,0,0,5,0,0,0,0,5,0,0,101,102,102,102,102,86,0,0,70,68,68,68,68,100,0,0,22,33,34,34,34,99,0,0,96,33,34,34,50,6,0,0,96,33,34,34,50,6,0,0,0,22,34,34,99,0,0,0,0,102,102,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,0,0,0,0,5,0,0,0,5,0,0,80,0,0,0,0,5,0,0,5,0,0,0,0,5,0,0,101,102,102,102,102,86,0,0,70,68,68,68,68,100,0,0,22,33,34,34,34,99,0,0,96,33,34,34,50,6,0,0,96,33,34,34,50,6,0,0,0,22,34,34,99,0,0,0,0,102,102,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,85,85,0,0,0,0,5,0,0,0,5,0,0,80,0,0,0,0,5,0,0,5,0,0,0,0,5,0,0,101,102,102,102,102,86,0,0,22,17,17,17,17,97,0,0,38,50,51,51,51,100,0,0,96,50,51,51,67,6,0,0,96,50,51,51,67,6,0,0,0,38,51,51,100,0,0,0,0,102,102,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,85,85,0,0,0,0,80,51,51,83,0,0,0,0,80,3,2,83,0,0,0,0,80,35,34,83,0,0,0,0,80,3,2,83,0,0,0,0,80,51,51,83,0,0,0,0,80,67,68,83,0,0,0,0,80,51,51,81,0,0,0,0,80,67,68,83,0,0,0,0,80,51,51,83,0,0,0,0,80,67,68,83,0,0,0,0,80,51,51,83,0,0,0,0,80,85,85,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,20,68,68,68,68,68,0,0,20,33,34,34,34,66,0,0,68,68,68,68,68,68,0,0,52,0,0,0,0,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,3,0,0,0,0,0,51,51,51,51,0,0,0,48,19,17,17,49,3,0,0,19,17,17,17,18,49,0,48,19,17,17,17,18,49,3,48,17,17,17,33,17,17,3,48,17,17,17,33,17,17,3,51,17,17,65,18,17,17,51,51,17,17,20,18,17,17,51,48,17,17,20,17,17,17,3,48,17,65,17,17,17,17,3,48,19,17,17,17,17,49,3,0,19,17,17,17,17,49,0,0,48,19,17,17,49,3,0,0,0,51,51,51,51,0,0,0,0,0,48,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,32,1,0,0,0,0,0,0,2,16,0,0,0,0,0,32,0,16,0,0,0,0,0,2,0,16,0,0,0,0,32,0,0,16,0,0,0,0,32,0,0,16,0,0,0,0,2,0,0,16,0,0,0,32,0,0,0,16,0,0,0,2,0,0,0,16,0,0,32,0,0,0,0,48,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,3,0,0,0,0,0,51,51,51,51,0,0,0,48,19,17,17,49,3,0,0,19,17,17,18,17,49,0,48,19,17,17,18,17,49,3,48,17,17,17,18,17,17,3,48,17,17,17,18,17,17,3,51,17,17,65,18,17,17,51,51,17,17,20,18,17,17,51,48,17,17,20,17,17,17,3,48,17,65,17,17,17,17,3,48,19,17,17,17,17,49,3,0,19,17,17,17,17,49,0,0,48,19,17,17,49,3,0,0,0,51,51,51,51,0,0,0,0,0,48,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,0,34,34,0,0,0,0,0,80,85,85,5,0,0,0,0,21,17,17,81,0,0,0,80,65,68,68,20,5,0,0,80,68,68,68,68,5,0,0,80,68,68,68,100,5,0,0,80,68,68,68,102,5,0,0,0,69,68,100,86,0,0,0,0,80,85,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,65,68,68,20,6,0,0,96,68,68,68,68,6,0,0,96,68,68,68,84,6,0,0,96,68,68,68,85,6,0,0,0,70,68,84,101,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,49,51,51,19,6,0,0,96,51,51,51,51,6,0,0,96,51,51,51,83,6,0,0,96,51,51,51,85,6,0,0,0,54,51,83,101,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,65,68,68,20,6,0,0,96,68,68,68,68,6,0,0,96,68,68,68,84,6,0,0,96,68,68,68,85,6,0,0,0,70,68,84,101,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,65,68,68,20,6,0,0,96,68,68,68,68,6,0,0,96,68,68,68,84,6,0,0,96,68,68,68,85,6,0,0,0,70,68,84,101,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,65,68,68,20,6,0,0,96,68,68,68,68,6,0,0,96,68,68,68,84,6,0,0,96,68,68,68,85,6,0,0,0,70,68,84,101,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,49,51,51,19,6,0,0,96,51,51,51,51,6,0,0,96,51,51,51,83,6,0,0,96,51,51,51,85,6,0,0,0,54,51,83,101,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,49,51,51,19,6,0,0,96,51,51,51,51,6,0,0,96,51,51,51,67,6,0,0,96,51,51,51,68,6,0,0,0,54,51,67,100,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,65,68,68,20,6,0,0,96,68,68,68,68,6,0,0,96,68,68,68,84,6,0,0,96,68,68,68,85,6,0,0,0,70,68,84,101,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,49,51,51,19,6,0,0,96,51,51,51,51,6,0,0,96,51,51,51,67,6,0,0,96,51,51,51,68,6,0,0,0,54,51,67,100,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,0,51,51,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,33,34,34,18,6,0,0,96,34,34,34,34,6,0,0,96,34,34,34,66,6,0,0,96,34,34,34,68,6,0,0,0,38,34,66,100,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,0,51,51,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,33,34,34,18,6,0,0,96,34,34,34,34,6,0,0,96,34,34,34,66,6,0,0,96,34,34,34,68,6,0,0,0,38,34,66,100,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,0,51,51,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,33,34,34,18,6,0,0,96,34,34,34,34,6,0,0,96,34,34,34,66,6,0,0,96,34,34,34,68,6,0,0,0,38,34,66,100,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,65,68,68,20,6,0,0,96,68,68,68,68,6,0,0,96,68,68,68,84,6,0,0,96,68,68,68,85,6,0,0,0,70,68,84,101,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,0,34,34,0,0,0,0,0,96,102,102,6,0,0,0,0,22,17,17,97,0,0,0,96,49,51,51,19,6,0,0,96,51,51,51,51,6,0,0,96,51,51,51,67,6,0,0,96,51,51,51,68,6,0,0,0,54,51,67,100,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,85,85,0,0,0,0,0,0,68,68,0,0,0,0,0,96,102,102,6,0,0,0,0,38,34,34,98,0,0,0,96,18,17,17,33,6,0,0,96,17,17,17,17,6,0,0,96,17,17,17,49,6,0,0,96,17,17,17,51,6,0,0,0,22,17,49,99,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,2,0,0,0,0,0,96,54,102,0,0,0,0,0,70,68,68,6,0,0,0,96,20,68,68,100,0,0,0,96,68,68,68,101,0,0,0,96,68,68,84,101,0,0,0,0,70,68,85,6,0,0,0,0,96,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,3,0,0,0,0,0,96,86,102,0,0,0,0,0,38,34,34,6,0,0,0,96,18,34,34,98,0,0,0,96,34,34,34,100,0,0,0,96,34,34,66,100,0,0,0,0,38,34,68,6,0,0,0,0,96,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,68,0,0,0,0,20,17,34,34,4,0,0,64,33,33,18,34,67,0,0,20,34,34,34,34,67,0,0,36,34,34,34,50,67,0,0,64,68,68,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,85,0,0,0,0,0,37,51,51,5,0,0,0,80,50,51,51,83,0,0,0,37,51,51,51,67,5,0,0,53,51,51,51,68,5,0,0,80,51,51,67,84,0,0,0,0,85,51,84,0,0,0,0,0,0,21,5,0,0,0,0,0,0,21,5,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,85,0,0,0,0,0,37,51,51,5,0,0,0,80,50,51,51,83,0,0,0,37,51,51,51,67,5,0,0,53,51,51,51,68,5,0,0,80,51,51,67,84,0,0,0,0,85,51,84,0,0,0,0,0,0,21,5,0,0,0,0,0,0,21,5,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,0,0,0,0,0,20,34,34,4,0,0,0,64,33,34,34,66,0,0,0,20,34,34,34,50,4,0,0,36,34,34,34,51,4,0,0,64,34,34,50,67,0,0,0,0,68,34,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,0,0,0,0,0,20,34,34,4,0,0,0,64,33,34,34,66,0,0,0,20,34,34,34,50,4,0,0,36,34,34,34,51,4,0,0,64,34,34,50,67,0,0,0,0,68,34,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,85,0,0,0,0,0,21,51,51,5,0,0,0,80,49,51,51,83,0,0,0,21,51,51,51,67,5,0,0,53,51,51,51,68,5,0,0,80,51,51,67,84,0,0,0,0,85,51,84,0,0,0,0,0,0,37,5,0,0,0,0,0,0,37,5,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,85,0,0,0,0,0,37,51,51,5,0,0,0,80,50,51,51,83,0,0,0,37,51,51,51,67,5,0,0,53,51,51,51,68,5,0,0,80,51,51,67,84,0,0,0,0,85,51,84,0,0,0,0,0,0,21,5,0,0,0,0,0,0,21,5,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,85,0,0,0,0,0,21,51,51,5,0,0,0,80,49,51,51,83,0,0,0,21,51,51,51,67,5,0,0,53,51,51,51,68,5,0,0,80,51,51,67,84,0,0,0,0,85,51,84,0,0,0,0,0,0,37,5,0,0,0,0,0,0,37,5,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,85,0,0,0,0,0,37,51,51,5,0,0,0,80,50,51,51,83,0,0,0,37,51,51,51,67,5,0,0,53,51,51,51,68,5,0,0,80,51,51,67,84,0,0,0,0,85,51,84,0,0,0,0,0,0,21,5,0,0,0,0,0,0,21,5,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,4,0,0,0,64,36,18,34,66,4,0,0,36,18,34,34,33,66,0,0,36,34,50,34,34,67,0,0,52,34,34,34,50,67,0,0,64,51,34,50,51,4,0,0,0,64,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,0,0,0,0,0,64,34,17,4,0,0,0,0,36,50,35,65,0,0,0,0,36,51,51,66,0,0,0,0,36,50,35,66,0,0,0,0,64,34,34,4,0,0,0,0,0,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,83,53,3,0,0,0,0,102,102,102,102,102,102,0,0,22,17,34,34,34,100,0,0,96,34,34,34,66,6,0,0,0,38,34,34,100,0,0,0,0,96,102,102,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,0,0,0,0,0,48,17,17,3,0,0,0,0,19,18,17,49,0,0,0,0,19,17,33,49,0,0,0,0,19,18,17,49,0,0,0,0,48,17,33,3,0,0,0,0,0,51,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,51,51,51,3,0,0,0,19,17,20,49,0,0,0,0,48,17,17,3,0,0,0,0,0,19,49,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,34,3,0,0,0,0,0,48,49,0,0,0,0,0,0,19,49,0,0,0,0,0,48,17,3,0,0,0,0,0,19,49,0,0,0,0,0,48,17,3,0,0,0,0,0,19,49,0,0,0,0,0,48,49,0,0,0,0,0,0,48,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,5,0,0,0,0,0,21,33,82,0,0,0,0,80,33,34,36,5,0,0,0,80,66,34,34,83,0,0,0,0,37,34,50,83,0,0,0,0,80,85,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,5,0,0,0,0,0,37,50,83,0,0,0,0,80,50,17,51,5,0,0,0,80,19,17,51,84,0,0,0,0,53,51,67,84,0,0,0,0,80,85,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,85,5,0,0,0,0,0,21,33,82,0,0,0,0,80,33,34,36,5,0,0,0,80,66,34,34,83,0,0,0,0,37,34,50,83,0,0,0,0,80,85,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,4,0,0,0,64,52,51,51,67,4,0,0,52,49,51,19,51,67,0,0,36,34,34,34,34,66,0,0,64,68,68,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,4,0,0,0,0,68,17,33,66,4,4,0,64,33,34,37,34,67,67,0,20,34,34,34,34,50,67,0,64,34,34,34,34,67,67,0,0,68,34,50,67,4,4,0,0,0,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,4,0,0,0,0,68,17,33,66,4,4,0,64,33,34,37,34,67,67,0,20,34,34,34,34,50,67,0,64,34,34,34,34,67,67,0,0,68,34,50,67,4,4,0,0,0,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,4,0,0,0,0,68,17,33,66,4,4,0,64,33,34,37,34,67,67,0,20,34,34,34,34,50,67,0,64,34,34,34,34,67,67,0,0,68,34,50,67,4,4,0,0,0,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,48,48,0,0,0,0,0,51,51,51,3,0,0,0,48,34,34,34,52,0,0,0,48,34,34,34,50,0,0,0,48,34,33,34,50,0,0,0,0,51,51,51,3,0,0,0,0,48,48,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,4,0,0,0,0,68,17,33,66,4,4,0,64,33,34,37,34,67,67,0,20,34,34,34,34,50,67,0,64,34,34,34,34,67,67,0,0,68,34,50,67,4,4,0,0,0,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,4,0,0,0,0,68,17,33,66,4,4,0,64,33,34,37,34,67,67,0,20,34,34,34,34,50,67,0,64,34,34,34,34,67,67,0,0,68,34,50,67,4,4,0,0,0,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,0,0,0,0,0,0,32,0,0,0,0,0,0,34,2,0,0,0,0,0,34,2,0,0,0,0,32,34,34,0,0,0,0,32,18,34,0,0,0,0,34,18,34,2,0,0,0,34,17,33,2,0,0,32,34,17,33,34,0,0,32,34,17,33,34,0,0,34,18,17,17,34,2,0,34,18,17,17,34,2,32,34,17,17,17,33,34,32,34,17,17,17,33,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,17,1,0,0,17,17,17,17,17,17,17,17,17,17,1,0,17,17,17,17,17,17,17,17,17,17,17,0,17,17,17,17,17,17,17,17,17,17,1,0,17,17,17,17,17,17,17,17,17,17,0,0,0,0,0,0,0,0,0,17,17,0,0,0,0,0,0,0,0,0,0,17,1,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,68,0,20,33,34,50,4,20,34,34,50,4,20,34,34,50,4,64,34,34,67,0,64,34,34,67,0,0,36,50,4,0,0,64,68,0,0,0,0,0,0,0,64,68,68,68,0,20,33,51,51,4,20,34,51,51,4,20,34,51,51,4,64,34,51,67,0,64,34,51,67,0,0,36,51,4,0,0,64,68,0,0,0,0,0,0,0,16,0,16,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,16,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,2,34,0,0,18,33,17,2,0,18,17,17,2,0,18,17,17,2,0,32,17,33,0,0,0,18,2,0,0,0,32,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,34,34,34,34,34,34,34,34,34,34,2,0,32,18,17,17,17,17,17,17,17,17,17,17,33,2,32,17,17,17,17,17,17,17,17,17,17,17,17,2,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,32,17,17,17,17,17,17,17,17,17,17,17,17,2,32,18,17,17,17,17,17,17,17,17,17,17,33,2,0,32,34,34,34,34,34,34,34,34,34,34,2,0,0,32,34,34,34,34,34,34,34,34,34,34,2,0,32,18,17,17,17,17,17,17,17,17,17,17,33,2,32,17,17,17,17,17,17,17,17,17,17,17,17,2,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,16,17,17,17,17,17,17,17,17,17,17,17,17,1,16,17,17,17,17,17,17,17,17,17,17,17,17,1,16,17,17,17,17,17,17,17,17,17,17,17,17,1,0,32,34,34,34,34,34,34,34,34,34,34,2,0,32,18,17,17,17,17,17,17,17,17,17,17,33,2,32,17,17,17,17,17,17,17,17,17,17,17,17,2,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,32,17,17,17,17,17,17,17,17,17,17,17,17,2,32,18,17,17,17,17,17,17,17,17,17,17,33,2,0,32,34,34,34,34,34,34,34,34,34,34,2,0,16,17,17,17,17,17,17,17,17,17,17,17,17,1,16,17,17,17,17,17,17,17,17,17,17,17,17,1,16,17,17,17,17,17,17,17,17,17,17,17,17,1,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,18,17,17,17,17,17,17,17,17,17,17,17,17,33,32,17,17,17,17,17,17,17,17,17,17,17,17,2,32,18,17,17,17,17,17,17,17,17,17,17,33,2,0,32,34,34,34,34,34,34,34,34,34,34,2,0,0,34,34,34,34,0,32,17,17,17,17,2,18,17,17,17,17,33,18,17,17,17,17,33,18,17,17,17,17,33,18,17,17,17,17,33,18,17,17,17,17,33,18,17,17,17,17,33,18,17,17,17,17,33,18,17,17,17,17,33,18,17,17,17,17,33,18,17,17,17,17,33,18,17,17,17,17,33,32,17,17,17,17,2,0,34,34,34,34,0,0,0,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,0,0,0,48,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,3,0,0,35,34,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,34,50,0,48,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,3,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,48,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,3,0,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,0,0,48,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,3,0,0,0,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,16,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,1,0,0,49,51,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,51,19,0,16,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,1,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,16,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,1,0,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,0,0,16,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,1,0,0,0,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,0,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,0,0,0,48,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,3,0,0,35,34,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,34,50,0,48,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,3,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,48,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,3,0,35,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,50,0,0,48,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,3,0,0,0,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,64,17,17,34,34,4,0,0,64,33,34,34,50,4,0,0,64,66,0,0,52,4,0,0,64,2,0,0,48,4,0,0,64,4,0,0,64,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,68,4,0,0,20,17,4,64,34,67,0,0,20,34,66,36,34,67,0,0,20,34,34,34,34,67,0,0,64,33,34,34,50,4,0,0,0,36,34,34,66,0,0,0,0,36,18,34,67,0,0,0,0,36,34,34,67,0,0,0,0,36,34,34,67,0,0,0,0,68,68,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,68,0,0,0,0,20,33,34,67,0,0,0,0,20,34,34,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,20,66,36,67,0,0,0,0,68,4,64,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,0,0,68,4,0,0,64,65,0,0,36,4,0,0,64,65,0,0,36,4,0,0,64,33,4,0,36,67,0,0,20,34,4,64,34,67,0,0,68,68,4,64,68,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,34,34,34,34,34,34,0,0,0,0,0,0,0,32,34,34,34,34,34,34,0,0,0,0,0,0,0,80,85,85,85,85,85,85,0,0,0,0,0,0,0,96,102,102,102,102,102,102,0,0,0,0,0,0,0,96,102,102,102,102,102,102,0,0,0,0,0,0,0,96,17,187,102,182,27,97,0,0,0,0,0,0,0,96,17,187,102,182,27,97,0,0,0,0,0,0,0,96,102,102,102,102,102,102,0,0,0,0,0,0,0,96,102,102,153,105,102,102,0,0,0,0,0,0,0,96,102,102,153,105,102,102,0,0,0,0,0,0,0,96,102,153,153,153,105,102,0,0,0,0,0,0,0,96,102,153,153,153,105,102,0,0,0,0,0,0,0,96,102,102,102,102,102,102,0,0,0,0,119,119,119,39,34,34,34,34,34,34,119,119,119,7,119,119,119,39,34,34,34,34,34,34,119,119,119,7,119,119,119,39,34,34,34,34,34,34,119,119,119,7,119,119,119,39,34,34,34,34,34,34,119,119,119,7,119,119,119,119,119,119,239,126,119,119,119,119,119,7,119,119,119,119,119,119,239,126,119,119,119,119,119,7,119,119,119,119,119,119,31,113,119,119,119,119,119,7,119,119,119,119,119,119,239,126,119,119,119,119,119,7,119,119,119,119,119,119,239,126,119,119,119,119,119,7,204,204,204,124,119,119,239,126,119,119,204,204,204,12,204,204,204,124,119,119,239,126,119,119,204,204,204,12,68,68,68,116,119,119,31,113,119,119,68,68,68,4,68,68,52,115,119,119,239,126,119,119,68,68,52,3,68,68,52,115,119,119,239,126,119,119,68,68,52,3,136,136,136,120,119,119,239,126,119,119,136,136,136,8,136,136,136,120,119,119,239,126,119,119,136,136,136,8,68,67,68,116,119,119,31,113,119,119,68,51,68,4,51,68,68,212,221,221,239,222,221,221,51,68,68,4,51,68,68,212,221,221,239,222,221,221,51,68,68,4,68,68,68,212,221,221,239,222,221,221,68,68,68,4,68,68,68,212,221,221,239,222,221,221,68,68,68,4,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,176,187,187,187,187,187,187,0,0,0,0,0,0,0,160,170,170,170,170,170,170,0,0,0,0,0,0,0,160,170,170,170,170,170,170,0,0,0,0,0,0,0,160,170,170,170,170,170,170,0,0,0,0,0,0,0,160,170,170,170,170,170,170,0,0,0,0,0,0,0,160,170,170,170,170,170,170,0,0,0,0,0,0,51,51,68,68,0,0,0,0,51,51,68,68,0,0,0,0,51,51,68,68,0,0,0,0,51,51,68,68,0,0,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,102,102,102,102,102,102,102,102,34,34,34,34,34,34,34,34,34,18,34,18,34,18,34,18,34,33,85,85,34,33,85,85,18,34,18,34,18,34,18,34,33,34,33,34,33,34,33,34,34,34,34,34,34,34,34,34,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,51,51,51,51,68,68,68,68,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,34,34,34,66,17,17,17,49,68,68,68,68,51,51,51,51};
 const uint32_t spr_off[430] = {0,2002,2290,2418,2463,2508,2553,2598,2643,2688,2733,3188,3643,3688,3733,3778,3823,3868,3913,3945,4073,4465,4593,4721,4849,4977,5105,5233,5361,5489,5617,5745,5873,6001,6129,6257,6385,6513,6641,6769,6897,7025,7153,7281,7409,7537,7665,7793,7921,8049,8177,8305,8433,8561,8689,8817,8945,9073,9201,9329,9457,9585,9713,9841,9969,10097,10225,10353,10481,10609,10737,10865,10993,11121,11249,11377,11505,11633,11761,11889,12017,12145,12273,12401,12529,12657,12785,12913,13041,13169,13297,13425,13553,13681,13809,13937,14065,14193,14321,14449,14577,14705,14833,14961,15089,15217,15345,15473,15601,15729,15857,15985,16113,16241,16369,16497,16625,16753,16881,17009,17137,17265,17393,17521,17649,17777,17905,18033,18161,18289,18417,18545,18673,18801,18929,19057,19185,19313,19441,19569,19697,19825,19953,20081,20209,20337,20465,20593,20721,20849,20977,21105,21233,21361,21489,21617,21745,21873,22001,22129,22257,22385,22513,22641,22769,22897,23025,23153,23281,23409,23537,23665,23793,23921,24049,24177,24305,24433,24561,24689,24817,24945,25073,25201,25329,25457,25585,25713,25841,25969,26097,26225,26353,26481,26609,26737,26865,26993,27121,27249,27377,27505,27633,27761,27889,28017,28145,28273,28401,28529,28657,28785,28913,29041,29169,29297,29425,29553,29681,29809,29937,30065,30193,30321,30449,30577,30705,30833,30961,31089,31217,31345,31473,31601,31729,31857,31985,32113,32241,32369,32497,32625,32753,32881,33009,33137,33265,33393,33521,33649,33777,33905,34033,34161,34289,34417,34545,34673,34801,34929,35057,35185,35313,35441,35569,35697,35825,35953,36081,36209,36337,36465,36593,36721,36849,36977,37105,37233,37361,37489,37617,37745,37873,38001,38129,38257,38385,38513,38641,38769,38897,39025,39153,39281,39409,39537,39665,39793,39921,40049,40177,40305,40433,40561,40689,40817,40945,41073,41201,41329,41457,41585,41713,41841,41969,42097,42225,42353,42481,42609,42737,42865,42993,43121,43249,43377,43505,43633,43761,43889,44017,44145,44273,44401,44529,44657,44785,44913,45041,45169,45297,45425,45553,45681,45809,45937,46065,46193,46321,46449,46577,46705,46833,46961,47089,47217,47345,47473,47601,47729,47857,47985,48113,48241,48369,48497,48625,48753,48881,49009,49137,49265,49393,49521,49649,49777,49905,50033,50161,50289,50417,50545,50673,50801,50929,51057,51185,51313,51441,51569,51697,51825,51953,52081,52209,52337,52465,52593,52721,52849,52977,53105,53233,53361,53489,53617,53745,53873,54001,54129,54227,54431,54476,54521,54566,54611,55059,55507,55955,56403,56493,58493,60493,62493,62621,62749,62877,63005,63761,63889};
 const uint8_t spr_w[430] = {182,24,16,9,9,9,9,9,9,9,182,182,9,9,9,9,9,9,8,16,28,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,24,9,9,9,9,28,28,28,28,12,200,200,200,16,16,16,16,27,16,16};
 const uint8_t spr_h[430] = {22,24,16,9,9,9,9,9,9,9,5,5,9,9,9,9,9,9,8,16,28,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,16,14,17,9,9,9,9,32,32,32,32,15,20,20,20,16,16,16,16,54,16,16};
-const uint8_t spr_alpha[430] = {0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,0};
+const uint8_t spr_alpha[430] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0};
 const uint16_t spr_pal[430][16] = {
-  {0x0000,0x94B2,0x8410,0x7BEF,0x738E,0x630C,0x5AEB,0x41E5,0x2921,0x2920,0x2120,0x2120,0x2100,0x10A0,0x0020,0x0000},
-  {0x0000,0xF7DE,0xDF7A,0xD75A,0xD739,0xB615,0xA5B4,0xA593,0x9D73,0x740E,0x638B,0x5B6B,0x5B4B,0x532A,0x0020,0x0000},
+  {0x0000,0x3A2B,0x29A8,0x1926,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF627,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
   {0x0000,0xFFFF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFE59,0xF882,0xB882,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFE59,0xF882,0xB882,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFBB,0xE6B5,0xDD91,0xBC2B,0x9B68,0x7A85,0xD145,0xB0C3,0x61E3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFBB,0xE6B5,0xEE34,0xD4AF,0xBC2B,0x9B68,0x7A85,0x61E3,0xD145,0xB0C3,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x39E7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3207,0x29C6,0x29A5,0x2985,0x2164,0x2144,0x1923,0x10E3,0x0881,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9E8D,0x8E0B,0x858B,0x7549,0x6CE8,0x74C9,0x6487,0x5C27,0x4BC5,0x4344,0x2A63,0x21E4,0x19A2,0x1163,0x08E2},
-  {0x0000,0xD75F,0x55DF,0x04BF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xABD4,0x93C3,0x8C22,0x6A81,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xABD4,0x93C3,0x8C22,0x6A81,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x1201,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFF4F,0xE648,0xDDAF,0x942B,0x742B,0xAC08,0x9366,0x5B68,0x82E4,0x41E3,0x5861,0x2800,0x0000,0x0000,0x0000},
-  {0x0000,0xFF4F,0xE648,0xDDAF,0x742B,0x5B68,0x7A85,0x41E3,0x5861,0x2800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xD69A,0x9492,0xD145,0x88A2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x94B2,0x8B24,0x6A63,0x4228,0x49A2,0x31A6,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFF71,0x2121,0x18E1,0x18C1,0x10A1,0x1080,0x0860,0x0860,0x0840,0x0020,0x0020,0x0020,0x0000,0x0000,0x0000},
-  {0x0000,0xDF3F,0xADD9,0x94B4,0x73F2,0x5B2F,0x52AC,0x10A5,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x0884,0x0883},
-  {0x0000,0xDF3F,0xADD9,0x94B4,0x73F2,0x5B2F,0x52AC,0x2967,0x10A5,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x0884,0x0883},
-  {0x0000,0xDF3F,0x9D36,0x73F2,0x5B2F,0x52AC,0x2967,0x10A5,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x0884,0x0883},
-  {0x0000,0x5B2F,0x52AC,0x2967,0x10A5,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x0884,0x0883,0x0000,0x0000,0x0000},
-  {0x0000,0x2967,0x10A5,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x0884,0x0883,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x5B2F,0x52AC,0x2967,0x10A5,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x0884,0x0883,0x0000,0x0000,0x0000},
-  {0x0000,0xDF3F,0xADD9,0x94B4,0x73F2,0x5B2F,0x52AC,0x2967,0x10A5,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x0884,0x0883},
-  {0x0000,0xDF3F,0xADD9,0x7C33,0x5B2F,0x52AC,0x2967,0x10A5,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x08A4,0x0884,0x0883},
-  {0x0000,0x8C71,0x8410,0x7BEF,0x73AE,0x738E,0x6B4D,0x632C,0x5AEB,0x52AA,0x528A,0x4A69,0x4228,0x39E7,0x0000,0x0000},
-  {0x0000,0xCD12,0xAC2E,0x9BCD,0x9B4B,0x8B6C,0x830A,0x7AEA,0x7AA9,0x6A88,0x6227,0x6A27,0x5A27,0x5A06,0x51C6,0x4164},
-  {0x0000,0xBC6F,0xA3AC,0x9B6B,0x8B0A,0x7B2B,0x7AA8,0x72C9,0x6A88,0x6A48,0x5A48,0x6227,0x5A06,0x5A06,0x51C6,0x4164},
-  {0x0000,0xE71C,0xCE59,0xBDD7,0xAD76,0xA514,0x9CF4,0x94B3,0x8C51,0x8410,0x7BF0,0x7BCF,0x7BCF,0x738E,0x5AEC,0x4A6A},
-  {0x0000,0xDEFC,0xCE59,0xBDF8,0xB596,0xA535,0x9CF4,0x9CD3,0x9492,0x8410,0x7BEF,0x7BCF,0x73AE,0x6B4D,0x630C,0x4A69},
-  {0x0000,0xAD54,0x8430,0x8410,0x7BCF,0x738E,0x6B4D,0x632D,0x632C,0x630B,0x5ACB,0x52AA,0x4A69,0x4A69,0x4228,0x39E7},
-  {0x0000,0xA534,0x8C50,0x8411,0x8410,0x7BCF,0x6B6D,0x6B4D,0x6B4C,0x630C,0x5ACB,0x528A,0x4A6A,0x4A6A,0x4A69,0x39E7},
-  {0x0000,0x6467,0x5C07,0x5BA6,0x6367,0x4B45,0x7AA7,0x4B25,0x4305,0x42C5,0x6A66,0x6225,0x5205,0x4984,0x4184,0x3123},
-  {0x0000,0xC659,0x94D3,0x6C29,0x6387,0x5366,0x7AA7,0x5346,0x4B05,0x42C5,0x6A66,0x6225,0x5205,0x4984,0x4184,0x3123},
-  {0x0000,0xBC2B,0x8430,0x9369,0x9349,0x7AA7,0x72C8,0x7AA7,0x6A66,0x6225,0x5A05,0x59E5,0x4984,0x4208,0x4184,0x3123},
-  {0x0000,0xB40B,0x9369,0x7AC7,0x7AA7,0x7286,0x6246,0x5A25,0x5A05,0x51C5,0x41C5,0x4984,0x4184,0x4163,0x3123,0x20C2},
-  {0x0000,0x9B26,0x7AA7,0x6A66,0x6A43,0x6225,0x6203,0x5224,0x59E3,0x51C3,0x49A3,0x49A4,0x41C3,0x4183,0x3962,0x3102},
-  {0x0000,0xA534,0x8C51,0x8410,0x73AE,0x6B4D,0x632C,0x632C,0x630C,0x5ACB,0x528A,0x4A69,0x4A69,0x4228,0x39C7,0x3186},
-  {0x0000,0xBCCC,0xB48B,0x9C29,0x93C9,0x9389,0x7B47,0x72E7,0x72C7,0x6AA6,0x6AA6,0x5A65,0x5A45,0x5205,0x41C4,0x3983},
-  {0x0000,0x82E6,0x7AC6,0x6265,0x6245,0x5A25,0x51E4,0x49E4,0x49C4,0x49C4,0x49A4,0x4184,0x3963,0x3963,0x3143,0x28E2},
-  {0x0000,0xD651,0xD610,0xCDAF,0xBD4E,0xAD0E,0xACAD,0xA48C,0x9C4C,0x942B,0x83CA,0x83AA,0x8389,0x7B69,0x6B28,0x62A7},
-  {0x0000,0xBC2C,0xB40B,0x9B89,0x936A,0x8B28,0x7AC7,0x6A87,0x7286,0x6A66,0x6225,0x5A05,0x5A05,0x51C4,0x4183,0x3943},
-  {0x0000,0xBB47,0xBB06,0xAAE6,0xA2A6,0x9285,0x9265,0x8A45,0x8A25,0x7A24,0x69E4,0x71E4,0x69C4,0x61A3,0x61A3,0x5163},
-  {0x0000,0x4962,0x4162,0x3942,0x3922,0x3922,0x3101,0x28E1,0x28E1,0x28C1,0x28C1,0x20C1,0x20C1,0x20A1,0x20A1,0x1880},
-  {0x0000,0x5567,0x4465,0x7B07,0x72A6,0x72A6,0x2363,0x1B23,0x7285,0x59E3,0x51C3,0x4982,0x1282,0x0000,0x0000,0x0000},
-  {0x0000,0x3AC7,0x2A45,0x51A3,0x21A4,0x28E1,0x1040,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xCF17,0xA64F,0x6467,0x53A5,0x3A83,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3404,0x2BC2,0x2B63,0x2342,0x2A41,0x39E1,0x31A1,0x2981,0x29A1,0x2181,0x1940,0x2120,0x18E0,0x0000,0x0000},
-  {0x0000,0x7CC4,0x7463,0x7463,0x7443,0x63E2,0x8322,0x7AE1,0x7AE1,0x7AC1,0x72C1,0x7281,0x6A61,0x0000,0x0000,0x0000},
-  {0x0000,0x44A6,0x4486,0x3404,0x5B05,0x1B23,0x1282,0x6A65,0x6A65,0x6244,0x6224,0x59E3,0x51C3,0x51C3,0x1A42,0x4982},
-  {0x0000,0x94B2,0x7BCF,0x630C,0x5ACB,0x52AA,0x4228,0x39C7,0x31A6,0x3186,0x2945,0x18E3,0x0020,0x0020,0x0020,0x0000},
-  {0x0000,0x329D,0x2A3C,0x29FE,0x29F5,0x29FE,0x21D8,0x21B8,0x21D2,0x2198,0x2198,0x2192,0x1952,0x1932,0x1932,0x1932},
-  {0x0000,0xE528,0xC405,0xDB63,0xAB44,0xD2C2,0xD281,0xAAA2,0x8AA3,0xB221,0xB9E1,0x9201,0xA180,0x81E1,0x7981,0x7940},
-  {0x0000,0xEF16,0xDEB4,0xDE93,0xD674,0xCE53,0xBDD1,0xB570,0xAD2F,0xA4CE,0x946D,0x8C0C,0x83EC,0x83EB,0x83EB,0x7BCB},
-  {0x0000,0xBB25,0xAAC4,0xAAC4,0xA2A4,0xA283,0x9263,0x8A43,0x8A43,0x8223,0x79E2,0x71C2,0x69A2,0x61A2,0x6182,0x6182},
-  {0x0000,0x9CB2,0x8C50,0x83EF,0x83EF,0x7BCF,0x738D,0x736D,0x632C,0x632C,0x5ACB,0x528A,0x5289,0x4A69,0x4228,0x31A6},
-  {0x0000,0xDEF5,0xED86,0x9492,0xAC65,0x7BEF,0x73AE,0x7B8B,0x6B4D,0x632C,0x5AEB,0x52AA,0x528A,0x4A69,0x4228,0x39E7},
-  {0x0000,0xACD2,0xAC6E,0x7BEF,0x93CC,0x73AE,0x738D,0x6B4D,0x632C,0x6AA9,0x5AEB,0x52AA,0x528A,0x4A69,0x4228,0x39E7},
-  {0x0000,0x8C71,0x7BEF,0x73AE,0x738E,0x6B4D,0x632C,0x5AEB,0x52AA,0x528A,0x4A69,0x4228,0x39E7,0x31A6,0x3186,0x2124},
-  {0x0000,0xBCAC,0xB48B,0xA42A,0x93A8,0x7B07,0x6AA6,0x6266,0x5A45,0x5205,0x49C4,0x3983,0x3963,0x3123,0x20E2,0x20C1},
-  {0x0000,0x8B88,0x7B07,0x6AC6,0x6A86,0x6266,0x5A45,0x5225,0x5205,0x49E4,0x41A4,0x3983,0x3983,0x3963,0x3123,0x20E2},
-  {0x0000,0x8B88,0x7B07,0x6AC6,0x6A86,0x6266,0x5A45,0x5225,0x5205,0x49E4,0x41A4,0x3983,0x3983,0x3963,0x3123,0x20E2},
-  {0x0000,0x8B88,0x7B07,0x6AC6,0x6A86,0x6266,0x5A45,0x5225,0x5205,0x49E4,0x41A4,0x3983,0x3983,0x3963,0x3123,0x20E2},
-  {0x0000,0x82E7,0x7AC6,0x6AA6,0x5204,0x4162,0x2902,0x28E1,0x28C1,0x20A1,0x20A0,0x1880,0x1880,0x1040,0x0820,0x0820},
-  {0x0000,0x4983,0x3942,0x3101,0x28E1,0x28E1,0x28E1,0x28C1,0x20C1,0x20A1,0x18A0,0x1880,0x1040,0x1040,0x0820,0x0820},
-  {0x0000,0x4983,0x3942,0x3101,0x28E1,0x28E1,0x28E1,0x28C1,0x20C1,0x20A1,0x18A0,0x1880,0x1040,0x1040,0x0820,0x0820},
-  {0x0000,0x4983,0x3942,0x3101,0x28E1,0x28E1,0x28E1,0x28C1,0x20C1,0x20A1,0x18A0,0x1880,0x1040,0x1040,0x0820,0x0820},
-  {0x0000,0xDEFB,0xBDF5,0xC5D5,0xB5D6,0xC58E,0xB595,0xBD4F,0x9CF3,0xA46A,0x9470,0x8C71,0x8C51,0x842F,0x738D,0x2924},
-  {0x0000,0xF7BE,0xEF5C,0xE73B,0xDEDA,0xC638,0xBDF6,0xBDD6,0xB595,0xA534,0x8C91,0x8C71,0x8C70,0x842F,0x738D,0x2924},
-  {0x0000,0xF7BE,0xEF5C,0xE73B,0xDEDA,0xC638,0xBDF6,0xBDD6,0xB595,0xA534,0x8C91,0x8C71,0x8C70,0x842F,0x738D,0x2924},
-  {0x0000,0xF7BE,0xEF5C,0xE73B,0xDEDA,0xC638,0xBDF6,0xBDD6,0xB595,0xA534,0x8C91,0x8C71,0x8C70,0x842F,0x738D,0x2924},
-  {0x0000,0xBC6C,0xB42B,0xA44A,0x9BE9,0x6263,0x5A03,0x41C2,0x41A2,0x4182,0x3962,0x3142,0x3141,0x3121,0x2901,0x20E1},
-  {0x0000,0x7AE4,0x6283,0x6243,0x5A23,0x5203,0x49C2,0x41C2,0x41A2,0x3962,0x3962,0x3142,0x3121,0x2901,0x20E1,0x20C1},
-  {0x0000,0x7AE4,0x6283,0x6243,0x5A23,0x5203,0x49C2,0x41C2,0x41A2,0x3962,0x3962,0x3142,0x3121,0x2901,0x20E1,0x20C1},
-  {0x0000,0x7AE4,0x6283,0x6243,0x5A23,0x5203,0x49C2,0x41C2,0x41A2,0x3962,0x3962,0x3142,0x3121,0x2901,0x20E1,0x20C1},
-  {0x0000,0x6407,0x5366,0x4B26,0x4B25,0x42C5,0x42A5,0x3A64,0x3224,0x3203,0x31E3,0x29E3,0x29C3,0x2182,0x1922,0x1902},
-  {0x0000,0x3AE7,0x3AC7,0x3266,0x2A45,0x21E4,0x21A4,0x1983,0x1963,0x1923,0x1923,0x10E2,0x10E2,0x08A1,0x08A1,0x0881},
-  {0x0000,0x5B87,0x4B06,0x42C5,0x42C5,0x3A85,0x3244,0x3204,0x3204,0x29E3,0x29C3,0x29A3,0x2163,0x1942,0x1902,0x10E1},
-  {0x0000,0x6C05,0x5BA6,0x5324,0x4AE5,0x4AE5,0x42A3,0x3A44,0x3A44,0x3A22,0x3224,0x3202,0x29E3,0x29E3,0x29A3,0x2162},
-  {0x0000,0xDECC,0xD68B,0xCE4B,0xC62B,0xB5CA,0xA528,0xA508,0x9CE9,0x9CC8,0x8C47,0x7BE6,0x7BC6,0x7BC6,0x73A6,0x6325},
-  {0x0000,0xFFFF,0xC7BF,0xCE59,0xB6BB,0x9E39,0x8D55,0x9CD3,0x7493,0x6C10,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x8C71,0x7BEF,0x73AE,0x738E,0x632C,0x5AEB,0x2B32,0x52AA,0x4A69,0x4228,0x1A53,0x19F0,0x31E9,0x116F,0x090D},
-  {0x0000,0x2A91,0x2A50,0x2212,0x2A0F,0x19CF,0x19B0,0x21CC,0x21AB,0x1970,0x116C,0x1969,0x1949,0x112C,0x1129,0x10EA},
-  {0x0000,0xE6D4,0xDEB4,0xDE93,0xD673,0xCE32,0xBDB2,0xB571,0xAD50,0xA50E,0x9CAC,0x944D,0x8C2D,0x840C,0x83EB,0x7389},
-  {0x0000,0xE6D4,0xDEB4,0xDE93,0xD693,0xD652,0xBDB2,0xB570,0xAD2F,0xA4ED,0x9CAC,0x8C4D,0x83EC,0x7BCA,0x7389,0x7368},
-  {0x0000,0xE6D4,0xDEB4,0xDE93,0xD652,0xBDB2,0xB570,0xAD50,0xAD2F,0x9CAC,0x8C4D,0x8C2D,0x840C,0x83EB,0x7BCA,0x7368},
-  {0x0000,0xFFFF,0xEF7D,0xDEFB,0xCE79,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9325,0x59A0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x6407,0x5B86,0x5386,0x5366,0x5366,0x5366,0x5346,0x5346,0x5346,0x4B26,0x4B25,0x4B05,0x42E5,0x42A5,0x42A5},
-  {0x0000,0x6427,0x42E5,0x3224,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9325,0x59A0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xF79E,0xEF5D,0xE71C,0xDEDB,0xCE79,0xCE59,0xC618,0xBDF7,0xB5B6,0xAD75,0x94B2,0x8C51,0x8410,0x7BEF,0x738E},
-  {0x0000,0xDC29,0xDC08,0xDBE8,0xDBC7,0xD386,0xB388,0xB347,0xB347,0xB326,0xAB05,0x8A85,0x8244,0x8244,0x8223,0x8203},
-  {0x0000,0xBB38,0xBAD8,0xAAD6,0xB298,0x9AB4,0xB257,0x9273,0x9253,0x9A14,0x89D2,0x71AF,0x698E,0x696E,0x694D,0x612C},
-  {0x0000,0x7CDA,0x7499,0x6C59,0x6C36,0x6BF5,0x63D4,0x63D4,0x5BD6,0x5394,0x4B55,0x42D0,0x42AF,0x3A6E,0x324E,0x2A0E},
-  {0x0000,0xC5C5,0xBD85,0xBD85,0xB545,0xAD04,0xA4C4,0x9CA4,0x9C64,0x9444,0x8C03,0x7383,0x6B23,0x6302,0x62E2,0x5A82},
-  {0x0000,0x4DE8,0x45C7,0x45A7,0x4567,0x3D46,0x3CE6,0x3CA6,0x34A6,0x3485,0x3445,0x2BA4,0x2344,0x2324,0x2303,0x22C3},
-  {0x0000,0xDCD5,0xD474,0xD433,0xB432,0xCBF2,0xBBD1,0xABD1,0xAB90,0xAB4F,0xAB0E,0x8ACC,0x7A8B,0x7A4B,0x7A2A,0x71E9},
-  {0x0000,0x4228,0x4228,0x4208,0x4208,0x39E7,0x39C7,0x39C7,0x31A6,0x31A6,0x3186,0x2945,0x2124,0x2124,0x2104,0x2104},
-  {0x0000,0xAD75,0xA555,0x9D34,0x94F3,0x8CB2,0x8C92,0x8471,0x8451,0x7C30,0x7BEF,0x634D,0x5B0C,0x5AEB,0x52CB,0x4A8A},
-  {0x0000,0x33D2,0x33B2,0x33B1,0x2B91,0x2B50,0x2B2F,0x2B0F,0x2B0E,0x22EE,0x22CE,0x22AD,0x1A2A,0x1A09,0x19E9,0x19C8},
-  {0x0000,0x8236,0x8217,0x81F7,0x71F4,0x79D6,0x71B5,0x69D3,0x69B3,0x6992,0x6171,0x514F,0x492E,0x490D,0x410C,0x40EB},
-  {0x0000,0x31F3,0x31F2,0x29D1,0x29B1,0x2990,0x298F,0x298F,0x218E,0x216E,0x216D,0x192B,0x190A,0x190A,0x18E9,0x10E8},
-  {0x0000,0x59C4,0x51A4,0x51A4,0x4983,0x4963,0x4963,0x4163,0x4143,0x4143,0x3923,0x30E2,0x28E2,0x28E2,0x28E2,0x28C2},
-  {0x0000,0x3A63,0x3A43,0x3243,0x3223,0x3203,0x3203,0x29E3,0x29E3,0x29C2,0x29A2,0x2162,0x2142,0x1942,0x1921,0x1921},
-  {0x0000,0xA1C6,0x99A6,0x99A6,0x9186,0x8985,0x8165,0x8165,0x7945,0x7124,0x6104,0x58E3,0x58E3,0x50E3,0x50E3,0x48C3},
-  {0x0000,0x18E3,0x18C3,0x18A2,0x18A2,0x18A2,0x18A2,0x1082,0x1082,0x1082,0x1082,0x1061,0x0861,0x0841,0x0841,0x0820},
-  {0x0000,0xF7C0,0xCE80,0xB5E0,0x8C80,0x1420,0x1300,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x1420,0x1380,0xF021,0x1360,0x1300,0xD021,0xB821,0x9000,0x8800,0x6000,0x4800,0x3800,0x0000,0x0000,0x0000},
-  {0x0000,0x2E7F,0x2DFF,0x2D7F,0x1C9A,0x3C61,0x1420,0x1BA1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xE61F,0xDDDF,0xD55F,0xCC7F,0xC43F,0x8E4C,0x7E0B,0x6DA9,0x6D87,0x6568,0x5D27,0xBBBF,0xBB7F,0xBB3F,0xB2DF},
-  {0x0000,0xE75E,0xF793,0xDEFC,0x5486,0x4C25,0x3BA3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x6587,0x5D67,0x5D26,0x5CE7,0x54C6,0x4C85,0x4443,0xD1C2,0xD1A2,0xD160,0xC161,0xC161,0xC140,0x0000,0x0000},
-  {0x0000,0xE3C4,0xDB83,0x5526,0xE384,0xE382,0xD342,0xCAE2,0xD2C2,0x5505,0x4CC4,0x5485,0x4C64,0x4424,0x33E2,0x33A2},
-  {0x0000,0xF79E,0xE73C,0xDEDB,0xD69A,0x5505,0x4CE5,0x4CA4,0x4C65,0x4424,0x3C03,0x33C1,0x2B81,0x0000,0x0000,0x0000},
-  {0x0000,0xF6BE,0xEDFD,0xDD3B,0x5526,0x54E6,0x54C5,0x5486,0x4C45,0x4424,0x3BE2,0x33A2,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xF7BE,0xEF5D,0xDEFB,0xEF35,0xD623,0x5526,0x5486,0x4C45,0x3BE2,0x33A2,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xCCCF,0x936A,0x72A8,0x6ACA,0x4A07,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xCE79,0x94B2,0x7A08,0x5165,0xF945,0xC0E4,0x98A3,0xE082,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFED,0xFFCA,0xFFA9,0xF6E7,0xEE67,0xCE4A,0xCE28,0xCE48,0xD5E6,0xBD25,0x9CC7,0x94A6,0x9C85,0x94A5,0x93E4},
-  {0x0000,0xEF7D,0xE73C,0xDEFB,0xD69A,0xC618,0xBDD7,0xBDD7,0xB5B6,0xB596,0xA534,0x9492,0x8C71,0x8C51,0x8410,0x6B6D},
-  {0x0000,0xB596,0xAD55,0xA534,0xA514,0x9CF3,0x8C71,0x8430,0x8430,0x8410,0x7BEF,0x6B6D,0x6B4D,0x632C,0x630C,0x528A},
-  {0x0000,0xB596,0xAD55,0xA534,0xA514,0x9CD3,0x8C71,0x8430,0x8430,0x8410,0x8410,0x738E,0x6B4D,0x632C,0x630C,0x528A},
-  {0x0000,0xE6F5,0xDEB4,0xDEB4,0xDEB3,0xDE93,0xD673,0xD652,0xC5F2,0xBD91,0xAD50,0xA4ED,0x946C,0x8C2D,0x83EC,0x7389},
-  {0x0000,0xBCCC,0xB48B,0x9C29,0x93C9,0x9389,0x7B47,0x7B07,0x72E7,0x72C7,0x6AA6,0x6AA6,0x5A65,0x5A45,0x5205,0x41A4},
-  {0x0000,0xAD55,0x9492,0x8430,0x8410,0x73AE,0x6B4D,0x632C,0x630C,0x5AEB,0x5ACB,0x528A,0x4A69,0x4A49,0x39C7,0x3186},
-  {0x0000,0xB4F3,0x9C50,0x942F,0x8BCE,0xA2E9,0x9AA8,0x6B0B,0x8A67,0x7A26,0x7A26,0x6269,0x69E5,0x61A5,0x5985,0x4944},
-  {0x0000,0x9CD3,0x8C71,0x7BEF,0x7BEF,0x7BCF,0x738E,0x6B6D,0x632C,0x630C,0x5AEB,0x5ACB,0x528A,0x4A69,0x4A49,0x39E7},
-  {0x0000,0xA491,0x9430,0x93CE,0x7B6D,0x9AA8,0x6AEB,0x62AA,0x8247,0x7A26,0x7206,0x69E5,0x61A5,0x5184,0x4944,0x4123},
-  {0x0000,0xAD75,0xA534,0x8430,0x738E,0xDA23,0x52AA,0xA182,0x9982,0x9162,0x7121,0x7121,0x6101,0x60E1,0x50C1,0x0000},
-  {0x0000,0xBCCC,0xB48B,0x9C29,0x93C9,0x83A8,0x72E7,0x72C7,0x3B05,0x6286,0x5205,0x29C7,0x7881,0x48A0,0x20E2,0x1881},
-  {0x0000,0xA534,0x7C6F,0x7BEF,0x43A8,0x6B4D,0x632C,0x530A,0x3326,0x528A,0x4A69,0x3266,0x3246,0x3A07,0x21E4,0x2985},
-  {0x0000,0x3128,0x18C5,0x18A4,0x1083,0x1082,0x0863,0x0862,0x0862,0x0862,0x0862,0x0842,0x0841,0x0841,0x0021,0x0021},
-  {0x0000,0xFFF9,0xFEC0,0xFC60,0x9BEA,0x9BC9,0x93A9,0x93A8,0x7B07,0x6286,0x49E4,0x41A4,0x4184,0x3983,0x3963,0x3963},
-  {0x0000,0xFFF9,0xFEC0,0xFC60,0x9BEA,0x9BC9,0x93A9,0x93A8,0x7B07,0x6286,0x49E4,0x41A4,0x4184,0x3983,0x3963,0x3963},
-  {0x0000,0xFFF9,0xFEC0,0xFC60,0x9BEA,0x9BC9,0x93A9,0x93A8,0x7B07,0x6286,0x49E4,0x41A4,0x4184,0x3983,0x3963,0x3963},
-  {0x0000,0xFFF9,0xFEC0,0xFC60,0x9BEA,0x9BC9,0x93A9,0x93A8,0x7B07,0x6286,0x49E4,0x41A4,0x4184,0x3983,0x3963,0x3963},
-  {0x0000,0xFFF9,0xFEC0,0xFC60,0x9BEA,0x9BC9,0x93A9,0x93A8,0x7B07,0x6286,0x49E4,0x41A4,0x4184,0x3983,0x3963,0x3963},
-  {0x0000,0x2166,0x1946,0x1925,0x1925,0x1904,0x1105,0x10E4,0x10E4,0x10C4,0x10C3,0x10C3,0x10A3,0x08A3,0x0882,0x0882},
-  {0x0000,0xBCCC,0xB48B,0x9C29,0x93C9,0x9389,0x7B47,0x72E7,0x72C7,0x6AA6,0x6AA6,0x5A65,0x5A45,0x5205,0x41C4,0x3983},
-  {0x0000,0xA3C6,0x9B65,0x9344,0x8304,0x82C3,0x6A83,0x6222,0x6223,0x59E3,0x51E2,0x49C2,0x3984,0x3164,0x2923,0x20E2},
-  {0x0000,0xBE7B,0x5F3D,0x8CB3,0x7BEF,0x3472,0x73AE,0x738E,0x5B6E,0x632C,0x5AEB,0x52AA,0x528A,0x4A69,0x4228,0x39E7},
-  {0x0000,0x9F5C,0x8F3C,0x8699,0x7DD6,0x6E58,0x6DB6,0x3658,0x0616,0x5D13,0x5C51,0x04F2,0x4C50,0x4430,0x0BCE,0x036C},
-  {0x0000,0xA514,0x93C9,0xA388,0xA368,0x8348,0x7AC6,0x6265,0x5A45,0x49C4,0x4983,0x3983,0x20E1,0x18A1,0x1081,0x0860},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3E60,0x0722,0x06A2,0x0642,0x05C2,0x3DA1,0x05A2,0x0562,0x2D42,0x3CC2,0x14C2,0x04A2,0x1462,0x0380,0x0340},
-  {0x0000,0x0661,0x15C1,0x4521,0x0542,0x6481,0x3CE2,0x14A2,0x04A2,0x5422,0x3C22,0x0421,0x0B80,0x02C0,0x0260,0x01C0},
-  {0x0000,0x5DE0,0x4DA1,0x4561,0x5CC1,0x0621,0x05A1,0x2C82,0x04E1,0x5422,0x1C21,0x0BE1,0x0B80,0x1300,0x0A80,0x0A00},
-  {0x0000,0x5DC0,0x35E1,0x0600,0x0540,0x64C1,0x6421,0x2461,0x63E1,0x3B81,0x13A1,0x0B20,0x1280,0x1220,0x09A0,0x0120},
-  {0x0000,0x6E20,0x5DE1,0x6561,0x7CA1,0x6C21,0x4CE2,0x33E1,0x5B61,0x3B41,0x1360,0x1300,0x2AA0,0x1200,0x0120,0x0060},
-  {0x0000,0x7E00,0x8580,0x8D20,0x7521,0x7CA1,0x6C01,0x3C41,0x63A2,0x5B61,0x3B61,0x2320,0x2AC0,0x2A60,0x11C0,0x00E0},
-  {0x0000,0x9DA0,0x9520,0x8CA1,0x7C41,0x7BE1,0x8362,0x6381,0x4381,0x5321,0x5281,0x32C0,0x2A40,0x2980,0x1160,0x08A0},
-  {0x0000,0x9B48,0x9349,0x7AA7,0x7AA6,0x6A66,0x6225,0x5A05,0x5A05,0x4208,0x61E4,0x4984,0x4184,0x4142,0x3123,0x0000},
-  {0x0000,0x9349,0x7AA7,0x6A66,0x6225,0x69C2,0x5A05,0x4208,0x4984,0x5982,0x4184,0x4941,0x4121,0x4101,0x3122,0x30C0},
-  {0x0000,0x8C71,0x7BEF,0x738E,0x6B4D,0x630C,0x5ACB,0x528A,0x4A69,0x4228,0x39C7,0x3186,0x2965,0x2124,0x18E3,0x0861},
-  {0x0000,0xB5B1,0x8C2F,0x7BCF,0x6B6D,0x632C,0x5ACB,0x528A,0x4228,0x88C3,0x31A6,0x3186,0x2945,0x2104,0x18E3,0x0841},
-  {0x0000,0xAC89,0xA448,0xA408,0x8BA8,0x9367,0x9366,0x8B46,0x8B46,0x82C5,0x7AC5,0x72A5,0x7264,0x6A24,0x59E3,0x49C3},
-  {0x0000,0xB4AA,0xAC69,0xA428,0x93A7,0x9367,0x9366,0x8B46,0x8B46,0x6B6D,0x82C5,0x7AC5,0x7A84,0x6A44,0x6224,0x51C4},
-  {0x0000,0xAC4A,0xA409,0x8B87,0x6A85,0x6A85,0x6265,0x6265,0x5A44,0x5A24,0x49C4,0x49A3,0x4183,0x4183,0x0000,0x0000},
-  {0x0000,0xA534,0xAC4A,0xA409,0x8B87,0x8368,0x6B4D,0x8328,0x72E6,0x6AA7,0x6A85,0x6265,0x5A45,0x5205,0x49E4,0x41A4},
-  {0x0000,0xA534,0x8C51,0x8410,0x73AE,0x6B4D,0x632C,0x632C,0x630C,0x5ACB,0x528A,0x4A69,0x4A69,0x4228,0x39C7,0x3186},
-  {0x0000,0x8C71,0x7BEF,0x73AE,0x738E,0x6B4D,0x632C,0x5AEB,0xB000,0x7800,0x52AA,0x5800,0x528A,0x4A69,0x4228,0x39E7},
-  {0x0000,0xFFFF,0xFFFF,0xEFFF,0xE79E,0xCE79,0xCE79,0xBE79,0xB618,0x9CD3,0x8CD3,0x8C92,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xCE79,0x8DFF,0x755F,0x9CD3,0x74D9,0x5C39,0x5393,0x4333,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xFFFF,0xEFFF,0xE79E,0xCE79,0xCE79,0xBE79,0xB618,0x9CD3,0x8CD3,0x8C92,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x1424,0x1383,0x0B43,0x0B23,0x0B02,0x0AE2,0x0AA2,0x0A82,0x0A62,0x0A22,0x0A22,0x01C1,0x0161,0x0121,0x0020},
-  {0x0000,0xA557,0xA536,0x9D15,0x9D15,0x9CF5,0x8C73,0x8432,0x7C31,0x7C11,0x73F0,0x6B4E,0x632D,0x5B0D,0x5B0D,0x5AEC},
-  {0x0000,0x8589,0x6505,0x5582,0x5464,0x4461,0x4BE3,0x3B23,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xBCCC,0xB48B,0x9C29,0x93C9,0x9389,0x7B47,0x72E7,0x72C7,0x6AA6,0x6AA6,0x5A65,0x5A45,0x5205,0x41C4,0x3983},
-  {0x0000,0xE529,0xE483,0xB420,0xD3E2,0xB427,0xB382,0xA302,0x8B05,0xA2C1,0x8AA2,0x8241,0x7A41,0x61A0,0x3060,0x2000},
-  {0x0000,0xC5A8,0x9CE5,0xE483,0xBC82,0xD3E2,0xAC44,0xB3A2,0xA302,0x8B05,0xA2C1,0x8AA2,0x8241,0x7A41,0x61A0,0x3800},
-  {0x0000,0x8C71,0x8410,0x7BEF,0x73AE,0x738E,0x6B4D,0x632C,0x5AEB,0x52AA,0x528A,0x4A69,0x4228,0x39E7,0x0000,0x0000},
-  {0x0000,0x94B2,0x7BEF,0x7BCF,0x73AE,0x6B6D,0x632C,0x630C,0x5AEB,0x5AEB,0x52AA,0x4A69,0x4A49,0x4228,0x39E7,0x31A6},
-  {0x0000,0x842F,0x73CE,0x6B6D,0x6389,0x632C,0x630C,0x5B08,0x5ACA,0x4AA6,0x4A69,0x4265,0x4A49,0x4227,0x39E6,0x31A6},
-  {0x0000,0x9CD3,0x9492,0x8410,0x7BCF,0x6B6D,0x630C,0x5AEB,0x52AA,0x4A69,0x4A69,0x4A49,0x4A49,0x4208,0x39C7,0x31A6},
-  {0x0000,0x94B2,0x8430,0x7BCF,0x738E,0x6B6D,0x630C,0x5AEB,0x5AEB,0x5ACB,0x52AA,0x4A69,0x4228,0x4208,0x39C7,0x31A6},
-  {0x0000,0x9BAB,0x938B,0x936A,0x8B4A,0x8309,0x7AE9,0x72C8,0x72A8,0x7288,0x6247,0x5A26,0x5206,0x5206,0x51E6,0x49C5},
-  {0x0000,0xD58F,0xD58F,0xCD6F,0xCD6F,0xCD4F,0xAC8C,0xAC6C,0xA46C,0xA44C,0xA44C,0x8B8A,0x7B49,0x7B49,0x7B29,0x6AE8},
-  {0x0000,0xD58F,0xD58F,0xCD6F,0xCD4F,0xAD54,0xAD54,0xAD54,0xA533,0xAC8D,0x94B1,0x840F,0x840F,0x83EF,0x7BEE,0x738D},
-  {0x0000,0xB2EB,0xB103,0xB0E3,0xB0E3,0x98E3,0xB0C3,0x98C3,0x90C2,0x90A2,0x70C2,0x8882,0x7082,0x6882,0x6881,0x6861},
-  {0x0000,0xD58F,0xD58F,0xCD6F,0xCD6F,0xCD4F,0xAC8C,0xAC6C,0xA46C,0xA44C,0xA44C,0x8B8A,0x7B49,0x7B49,0x7B29,0x6AE8},
-  {0x0000,0xD58F,0xD58F,0xCD6F,0xCD4F,0xAD54,0xAD54,0xAD54,0xA533,0xAC8D,0x94B1,0x840F,0x840F,0x83EF,0x7BEE,0x738D},
-  {0x0000,0xFFFF,0xC7BF,0xB6BB,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xBDC5,0xB564,0xA524,0x9CC4,0x8444,0x7BE4,0x7363,0x6383,0x6B43,0x5B43,0x5B03,0x52C2,0x4A82,0x4242,0x39E2},
-  {0x0000,0x63E7,0x4B05,0x42A4,0x3A64,0x29E3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x7B4D,0x6B2D,0x6AEC,0x62EB,0x72A8,0x6A87,0x5AAB,0x526A,0x6225,0x5249,0x5A05,0x39C7,0x4984,0x3943,0x20C2},
-  {0x0000,0x1243,0x09E2,0x09A2,0x0942,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x5D4F,0x2C29,0x7BEF,0x53AB,0x6B6D,0x632C,0x530A,0x5AEB,0x52AA,0x4A69,0x4A69,0x4228,0x39E7,0x39C7,0x19E4},
-  {0x0000,0x7F53,0x572F,0x3E8C,0x5DCE,0x45CC,0x360A,0x3D8B,0x2D29,0x2CC8,0x4C6B,0x2C68,0x3449,0x2C08,0x23A6,0x1B65},
-  {0x0000,0xA534,0x8C51,0x8410,0x73AE,0x6B4D,0x632C,0x632C,0x630C,0x5ACB,0x528A,0x4A69,0x4A69,0x4228,0x39C7,0x3186},
-  {0x0000,0x9B08,0x92E8,0x92C8,0x92C8,0x8287,0x7A66,0x7A46,0x7246,0x7226,0x7226,0x59C5,0x59C5,0x59A5,0x59A4,0x59A4},
-  {0x0000,0xD5B4,0xD594,0xD594,0xD574,0xB4B1,0xAC90,0xAC70,0xA470,0xA470,0xA470,0x8BAD,0x7B6C,0x7B4C,0x7B4C,0x7B4B},
-  {0x0000,0xA2A5,0xA2A4,0xA284,0xA284,0x9A84,0x8A24,0x8223,0x8203,0x7A03,0x71E3,0x6182,0x6182,0x6182,0x6182,0x5982},
-  {0x0000,0x9ACD,0x92CD,0x92AD,0x92AD,0x826C,0x7A4B,0x722A,0x722A,0x722A,0x720A,0x59A8,0x59A8,0x59A8,0x5988,0x5988},
-  {0x0000,0x7371,0x7371,0x7371,0x7371,0x6B51,0x6B51,0x5ACD,0x5ACD,0x5AAD,0x5AAD,0x420A,0x420A,0x420A,0x420A,0x420A},
-  {0x0000,0xBC44,0xBC24,0xBC24,0xBC04,0xA3A3,0x9363,0x9343,0x9343,0x9343,0x9323,0x7282,0x6A82,0x6A62,0x6A62,0x6A62},
-  {0x0000,0x6BC6,0x6BA6,0x63A6,0x63A6,0x5B25,0x52E5,0x52E5,0x52E5,0x4AA4,0x3A24,0x3A24,0x3A24,0x3A23,0x3A23,0x3A23},
-  {0x0000,0xA28A,0xA269,0xA269,0x9249,0x8208,0x81E7,0x81E7,0x79E7,0x79E7,0x6186,0x6165,0x6165,0x6165,0x6165,0x5965},
-  {0x0000,0x3964,0x3944,0x3944,0x3944,0x3944,0x3123,0x2903,0x2903,0x2903,0x20E2,0x20C2,0x20C2,0x20C2,0x20C2,0x20C2},
-  {0x0000,0x8B6C,0x834C,0x834C,0x834C,0x72CA,0x6AA9,0x6AA9,0x6AA9,0x6AA9,0x5227,0x5207,0x5207,0x5207,0x51E7,0x51E7},
-  {0x0000,0x5AEB,0x52EB,0x52CB,0x52CB,0x52AA,0x4249,0x4249,0x4249,0x4228,0x39C7,0x31A6,0x31A6,0x31A6,0x31A6,0x31A6},
-  {0x0000,0x7A4B,0x7A2A,0x722A,0x722A,0x722A,0x61C9,0x59C8,0x59C8,0x59A8,0x59A8,0x4966,0x4146,0x4146,0x4146,0x4126},
-  {0x0000,0x49EB,0x49EB,0x49CB,0x49CB,0x3989,0x3989,0x3969,0x3969,0x3127,0x2926,0x2906,0x2906,0x2906,0x2906,0x2906},
-  {0x0000,0x49A4,0x49A4,0x4984,0x4984,0x4984,0x3943,0x3943,0x3943,0x3943,0x3103,0x28E2,0x30E2,0x28E2,0x28E2,0x28E2},
-  {0x0000,0x4AA5,0x4AA5,0x4A85,0x4A85,0x4224,0x3A04,0x3A04,0x3A04,0x3A04,0x2983,0x2983,0x2983,0x2983,0x2982,0x2983},
-  {0x0000,0x91E6,0x89E5,0x89E5,0x89C5,0x89C5,0x79A5,0x7184,0x7184,0x7184,0x7164,0x5943,0x5123,0x5123,0x5103,0x5103},
-  {0x0000,0x20C2,0x20A2,0x20A2,0x20A2,0x1881,0x1881,0x1881,0x1881,0x1061,0x1061,0x1061,0x1061,0x1061,0x1061,0x1061},
-  {0x0000,0xBAE7,0xB2C7,0x9AE7,0x8309,0x6B2B,0x62EA,0x5289,0x5268,0x5268,0x4A27,0x41E7,0x41E6,0x39C6,0x39A6,0x2944},
-  {0x0000,0x83EE,0x734C,0x6B2B,0x6B2B,0x62EA,0x5289,0x5289,0x5268,0x5268,0x4A48,0x4207,0x41E6,0x39C6,0x39A6,0x2944},
-  {0x0000,0x83EE,0x734C,0x6B2B,0x6B2B,0x62EA,0x5289,0x5289,0x5268,0x5268,0x4A48,0x4207,0x41E6,0x39C6,0x39A6,0x2944},
-  {0x0000,0x83EE,0x734C,0x6B2B,0x6B2B,0x62EA,0x5289,0x5289,0x5268,0x5268,0x4A48,0x4207,0x41E6,0x39C6,0x39A6,0x2944},
-  {0x0000,0x6266,0x5A46,0x5205,0x49C4,0x3983,0x3143,0x3122,0x2922,0x2902,0x20E2,0x20C1,0x18A1,0x18A1,0x1061,0x1060},
-  {0x0000,0x49C4,0x3983,0x3143,0x3142,0x3122,0x2922,0x2902,0x2902,0x20E2,0x20C1,0x20C1,0x18C1,0x18A1,0x1881,0x1061},
-  {0x0000,0x49C4,0x3983,0x3143,0x3142,0x3122,0x2922,0x2902,0x2902,0x20E2,0x20C1,0x20C1,0x18C1,0x18A1,0x1881,0x1061},
-  {0x0000,0x49C4,0x3983,0x3143,0x3142,0x3122,0x2922,0x2902,0x2902,0x20E2,0x20C1,0x20C1,0x18C1,0x18A1,0x1881,0x1061},
-  {0x0000,0x6407,0x5366,0x4B26,0x4B25,0x42C5,0x42A5,0x3A64,0x3224,0x3203,0x31E3,0x29E3,0x29C3,0x2182,0x1922,0x1902},
-  {0x0000,0x6407,0x5366,0x4B26,0x4B25,0x42C5,0x42A5,0x3A64,0x3224,0x3203,0x31E3,0x29E3,0x29C3,0x2182,0x1922,0x1902},
-  {0x0000,0xB4C2,0xA462,0xA422,0x9C22,0x9BE2,0x93C2,0x8362,0x7B61,0x7B21,0x7301,0x6AC1,0x5A81,0x8981,0x5A21,0x4121},
-  {0x0000,0x2104,0x2104,0x18E3,0x18C3,0x18C3,0x10A2,0x1082,0x0861,0x0861,0x0841,0x0020,0x0020,0x0020,0x0000,0x0000},
-  {0x0000,0xB67E,0xAE5F,0xA61E,0xA61E,0x9DBC,0x8D19,0x84F9,0x84F8,0x84D8,0x7C97,0x6BD2,0x63B2,0x63B2,0x6392,0x5B71},
-  {0x0000,0x5447,0x4BA6,0x4365,0x3B24,0x3B04,0x32C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x5447,0x4BA6,0x4365,0x3B04,0x32C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xDE1C,0xBCF7,0x9BD4,0x5526,0x748B,0x54C5,0x4CA5,0x6C2B,0x6C0A,0x5486,0x4C85,0x4C45,0x4404,0x3C03,0x33A2},
-  {0x0000,0xDE1C,0xBCF7,0x9BD4,0x5526,0x748B,0x5486,0x4C45,0x33A2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x74A8,0x6C48,0x6C27,0x6407,0x63E7,0x5386,0x4B25,0x4B25,0x42E5,0x42E5,0x42A5,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x6C48,0x6C27,0x6407,0x63E7,0x5386,0x4B25,0x42E5,0x42A5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x6427,0x6427,0x5BA6,0x4B05,0x4AE5,0x42E5,0x42E5,0x42C5,0x42C5,0x3A64,0x3244,0x3224,0x3224,0x3224,0x3224},
-  {0x0000,0x6C27,0x6427,0x5BC7,0x5346,0x4AE5,0x4AE5,0x42E5,0x42E5,0x42C5,0x42C5,0x3A64,0x3A44,0x3244,0x3224,0x3224},
-  {0x0000,0x7222,0x2C40,0x1420,0x13E0,0x0B60,0x0AE0,0x0AA0,0x0300,0x0240,0x01E0,0xF021,0xD021,0xB821,0x9000,0x19A0},
-  {0x0000,0xF228,0x3A20,0x34E0,0x1420,0x1380,0x1360,0x1300,0xF021,0xD021,0xB821,0x9000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xF71E,0xEEBE,0xE5DE,0xDD1E,0x22C4,0x2A65,0x2204,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xF71E,0xEEBE,0xEE5E,0xEDFF,0xE5FE,0xE5DE,0xE57E,0xDD1E,0x9BF5,0x22C4,0x2AA5,0x2284,0x2264,0x2A65,0x2204},
-  {0x0000,0xAAC3,0xAAA3,0xA2A3,0xA283,0x9A83,0x8A43,0x8223,0x7A02,0x71E2,0x69C2,0x69A2,0x61A2,0x6182,0x5961,0x5161},
-  {0x0000,0xEE54,0xB4CE,0xBC69,0x9B87,0x9B87,0x7369,0x7AC5,0x5AC7,0x72A5,0x6244,0x4205,0x49C2,0x49A3,0x3961,0x2901},
-  {0x0000,0x6AA5,0x79E5,0x8965,0x4142,0x98E3,0x88A2,0x88A2,0x78A2,0x8862,0x8041,0x8061,0x6861,0x5020,0x4841,0x4000},
-  {0x0000,0xF79E,0xDEFC,0xCE79,0xC618,0xAD55,0x94B2,0x840F,0x7308,0x9246,0x9104,0x51C3,0x3922,0x8882,0x8021,0x5820},
-  {0x0000,0x433E,0x32BB,0x325B,0x2A3E,0x2A58,0x2A1E,0x29FE,0x29F6,0x21B8,0x21B8,0x2198,0x21B2,0x1952,0x1932,0x1932},
-  {0x0000,0xDBC4,0xD322,0xB344,0xAAC3,0xCA81,0xCA41,0x9A62,0x8242,0xAA21,0xA1E1,0x99A1,0x7981,0x7960,0x7940,0x7120},
-  {0x0000,0xBCCC,0xB48B,0x9C29,0x93C9,0x9389,0x7B47,0x7B07,0x72E7,0x72C7,0x6AA6,0x6AA6,0x5A65,0x5A45,0x5205,0x41A4},
-  {0x0000,0x82E6,0x7AC6,0x6265,0x6245,0x6225,0x51E4,0x49E4,0x49C4,0x49C4,0x4184,0x4184,0x3983,0x3963,0x3963,0x2902},
-  {0x0000,0xD651,0xD610,0xCDAF,0xBD4E,0xAD0E,0xACCD,0xA4AC,0xA48C,0x9C4C,0x942B,0x83AA,0x83CA,0x8389,0x7B69,0x62C7},
-  {0x0000,0xBC2C,0xB40B,0x9B89,0x936A,0x8B29,0x82E7,0x7AA7,0x7286,0x6A87,0x6A66,0x6A25,0x5A05,0x5A05,0x49A4,0x3943},
-  {0x0000,0xBB47,0xBB06,0xAAE6,0xA2A6,0x9285,0x9265,0x8A65,0x8A45,0x8A25,0x8224,0x71E4,0x69E4,0x69C4,0x61A3,0x5163},
-  {0x0000,0x4962,0x4162,0x3942,0x3922,0x3922,0x3101,0x30E1,0x28E1,0x28E1,0x28C1,0x28C1,0x20C1,0x20A1,0x20A1,0x1880},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x04A1,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x04C1,0x04A1,0x0441,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xDCC1,0x15A0,0x0D00,0x0E20,0x04C0,0x0440,0x0440,0x0420,0x5A02,0x1A81,0x03E0,0x03A0,0x0320,0x02E0,0x0260},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x04A1,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x0702,0x0622,0x05E2,0x05C2,0x0562,0x04C1,0x04A1,0x0441,0x0340,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xC66B,0xA587,0x0703,0x0603,0x05C5,0x05C2,0x0563,0x0543,0x9424,0x3D29,0x0462,0x0442,0x03A2,0x0000,0x0000},
-  {0x0000,0x433E,0x32BB,0x325B,0x2A3E,0x2A58,0x2A1E,0x29FE,0x29F6,0x21B8,0x21B8,0x2198,0x21B2,0x1952,0x1932,0x1932},
-  {0x0000,0x433E,0x32BB,0x325B,0x2A3E,0x2A58,0x2A1E,0x29FE,0x29F6,0x21B8,0x21B8,0x2198,0x21B2,0x1952,0x1932,0x1932},
-  {0x0000,0x433E,0x32BB,0x325B,0x2A3E,0x2A58,0x2A1E,0x29FE,0x29F6,0x21B8,0x21B8,0x2198,0x21B2,0x1952,0x1932,0x1932},
-  {0x0000,0x433E,0x32BB,0x325B,0x2A3E,0x2A58,0x2A1E,0x29FE,0x29F6,0x21B8,0x21B8,0x2198,0x21B2,0x1952,0x1932,0x1932},
-  {0x0000,0x433E,0x32BB,0x325B,0x2A3E,0x2A58,0x2A1E,0x29FE,0x29F6,0x21B8,0x21B8,0x2198,0x21B2,0x1952,0x1932,0x1932},
-  {0x0000,0x433E,0x32BB,0x325B,0x2A3E,0x2A58,0x2A1E,0x29FE,0x29F6,0x21B8,0x21B8,0x2198,0x21B2,0x1952,0x1932,0x1932},
-  {0x0000,0x433E,0x32BB,0x325B,0x2A3E,0x2A58,0x2A1E,0x29FE,0x29F6,0x21B8,0x21B8,0x2198,0x21B2,0x1952,0x1932,0x1932},
-  {0x0000,0xDBC4,0xD322,0xB344,0xAAC3,0xCA81,0xCA41,0x9A62,0x8242,0xAA21,0xA1E1,0x99A1,0x7981,0x7960,0x7940,0x7120},
-  {0x0000,0xDBC4,0xD322,0xB344,0xAAC3,0xCA81,0xCA41,0x9A62,0x8242,0xAA21,0xA1E1,0x99A1,0x7981,0x7960,0x7940,0x7120},
-  {0x0000,0xDBC4,0xD322,0xB344,0xAAC3,0xCA81,0xCA41,0x9A62,0x8242,0xAA21,0xA1E1,0x99A1,0x7981,0x7960,0x7940,0x7120},
-  {0x0000,0xBCCC,0xB48B,0x9C29,0x93C9,0x9389,0x7B47,0x72E7,0x72C7,0x6AA6,0x6AA6,0x5A65,0x5A45,0x5205,0x41C4,0x3983},
-  {0x0000,0xA534,0x8C51,0x8410,0x73AE,0x6B4D,0x632C,0x632C,0x630C,0x5ACB,0x528A,0x4A69,0x4A69,0x4228,0x39C7,0x3186},
-  {0x0000,0xBCCC,0xB48B,0x9C29,0x93C9,0x9389,0x7B47,0x72E7,0x72C7,0x6AA6,0x6AA6,0x5A65,0x5A45,0x5205,0x41C4,0x3983},
-  {0x0000,0xA534,0x8C51,0x8410,0x73AE,0x6B4D,0x632C,0x632C,0x630C,0x5ACB,0x528A,0x4A69,0x4A69,0x4228,0x39C7,0x3186},
-  {0x0000,0xBCCC,0xB48B,0x9C29,0x93C9,0x9389,0x7B47,0x72E7,0x72C7,0x6AA6,0x6AA6,0x5A65,0x5A45,0x5205,0x41C4,0x3983},
-  {0x0000,0xA534,0x8C51,0x8410,0x73AE,0x6B4D,0x632C,0x632C,0x630C,0x5ACB,0x528A,0x4A69,0x4A69,0x4228,0x39C7,0x3186},
-  {0x0000,0xAC89,0xA448,0xA408,0x8BA8,0x9367,0x9366,0x8B46,0x8B46,0x82C5,0x7AC5,0x72A5,0x7264,0x6A24,0x59E3,0x49C3},
-  {0x0000,0xAC89,0xA448,0xA408,0x8BA8,0x9367,0x9366,0x8B46,0x8B46,0x82C5,0x7AC5,0x72A5,0x7264,0x6A24,0x59E3,0x49C3},
-  {0x0000,0xAC89,0xA448,0xA408,0x8BA8,0x9367,0x9366,0x8B46,0x8B46,0x82C5,0x7AC5,0x72A5,0x7264,0x6A24,0x59E3,0x49C3},
-  {0x0000,0xAC89,0xA448,0xA408,0x8BA8,0x9367,0x9366,0x8B46,0x8B46,0x82C5,0x7AC5,0x72A5,0x7264,0x6A24,0x59E3,0x49C3},
-  {0x0000,0xAC89,0xA448,0xA408,0x8BA8,0x9367,0x9366,0x8B46,0x8B46,0x82C5,0x7AC5,0x72A5,0x7264,0x6A24,0x59E3,0x49C3},
-  {0x0000,0xAC89,0xA448,0xA408,0x8BA8,0x9367,0x9366,0x8B46,0x8B46,0x82C5,0x7AC5,0x72A5,0x7264,0x6A24,0x59E3,0x49C3},
-  {0x0000,0xAC89,0xA448,0xA408,0x8BA8,0x9367,0x9366,0x8B46,0x8B46,0x82C5,0x7AC5,0x72A5,0x7264,0x6A24,0x59E3,0x49C3},
-  {0x0000,0xFFFF,0xFFDC,0xF6F1,0xEDE7,0xE564,0xDCC2,0xD461,0xD3E1,0xCB80,0xCB40,0xC320,0xC2E0,0xBAA0,0xBA60,0xB220},
-  {0x0000,0x8B24,0x8324,0x72C4,0x6A63,0x5A03,0x49A2,0x41A2,0x3142,0x2901,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x8B24,0x8324,0x72C4,0x6A83,0x6A63,0x49A2,0x3142,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x8B24,0x8324,0x72C4,0x6A83,0x6A63,0x49A2,0x3142,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x8B24,0x8324,0x72C4,0x6A83,0x6A63,0x5A03,0x49A2,0x3142,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x8B24,0x8324,0x72C4,0x6A83,0x6A63,0x49A2,0x3142,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9CD3,0x8C51,0x6B6D,0x8B24,0x5ACB,0x6A63,0x4A49,0x39E7,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9CD3,0x8C51,0x7BEF,0x8B24,0x6A63,0x4A49,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9CD3,0x8C51,0x7BEF,0x8B24,0x6A63,0x4A49,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9CD3,0x8C51,0x7BEF,0x8B24,0x6B6D,0x6A63,0x4A49,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9CD3,0x8C51,0x7BEF,0x8B24,0x6A63,0x4A49,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xDEDB,0x94B2,0x8B24,0x6B4D,0x6A63,0x4228,0x49A2,0x2945,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xDEDB,0xC618,0x8B24,0x6A63,0x4228,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xDEDB,0xC618,0x8B24,0x6A63,0x4228,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xDEDB,0xC618,0x94B2,0x8B24,0x6A63,0x4228,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xDEDB,0xC618,0x8B24,0x6A63,0x4228,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3759,0x2E35,0x1C4E,0x8B24,0x6A63,0x130A,0x09E6,0x49A2,0x28E1,0x0924,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3759,0x2E35,0x2593,0x8B24,0x6A63,0x09E6,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3759,0x2E35,0x2593,0x8B24,0x6A63,0x09E6,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3759,0x2E35,0x2593,0x8B24,0x1C4E,0x6A63,0x09E6,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3759,0x2E35,0x2593,0x8B24,0x6A63,0x09E6,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xEF6A,0xCE8A,0x9CE8,0x7BE7,0x8B24,0x6A63,0x39E5,0x39E4,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xEF6A,0xCE8A,0xBDE9,0x8B24,0x6A63,0x39E4,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xEF6A,0xCE8A,0xBDE9,0x8B24,0x6A63,0x39E4,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xEF6A,0xCE8A,0xBDE9,0x9CE8,0x8B24,0x6A63,0x39E4,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xEF6A,0xCE8A,0xBDE9,0x8B24,0x6A63,0x39E4,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xD6BA,0xAD55,0x738E,0x630C,0x528A,0x4A69,0x6206,0x4208,0x51E6,0x51C6,0x4185,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xD69A,0xBDD7,0x9CF3,0x7BEF,0x4228,0x3186,0x2945,0x10A2,0x0861,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x94B2,0x6B4D,0x8B24,0x6A63,0x4228,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xE71C,0xDEDB,0xC638,0x94B2,0x8B24,0x4228,0x39E7,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x92E7,0x7245,0x7245,0x3102,0x3102,0x20A1,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x92E7,0x7245,0x61E5,0x3102,0x20A1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x92E7,0x92E7,0x7245,0x7245,0x3102,0x3102,0x20A1,0x20A1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x92E7,0x92E7,0x7245,0x7245,0x3102,0x3102,0x20A1,0x20A1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x94B2,0x6B6D,0x52AA,0x2965,0x2104,0x18C3,0x1861,0x1082,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x94B2,0x6B6D,0x52AA,0x2965,0x2104,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x94B2,0x6B6D,0x52AA,0x2965,0x2104,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x94B2,0x6B6D,0x52AA,0x2965,0x2104,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x94B2,0x2965,0x18C3,0x1861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x94B2,0x2965,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x94B2,0x2965,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x94B2,0x2965,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xEF6A,0xDD02,0x2965,0x18C3,0x1861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xEF6A,0xDD02,0x2965,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xEF6A,0xDD02,0x2965,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xEF6A,0xDD02,0x2965,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0x3759,0x1C4E,0x2965,0x18C3,0x1861,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0x3759,0x1C4E,0x2965,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0x3759,0x1C4E,0x2965,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0x3759,0x1C4E,0x2965,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x8B24,0x6A63,0x49A2,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x3186,0x2965,0x2945,0x2124,0x2104,0x18E3,0x18C3,0x18C3,0x10A2,0x10A2,0x1082,0x0861,0x0841,0x0841,0x0000},
-  {0x0000,0x62A8,0x4A06,0x41E6,0x3985,0x3164,0x3164,0x2923,0x20E3,0x18E2,0x18C2,0x18A2,0x1081,0x1061,0x0861,0x0820},
-  {0x0000,0xFFFF,0xD7DE,0xA7BC,0x8FBC,0x4F7A,0x36D7,0x2E76,0x24B0,0x1BCD,0x09A6,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xDEDB,0xAD55,0x94B2,0x8410,0x7BEF,0x738E,0x6B4D,0x4228,0x31A6,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xFFF1,0xFFE1,0xDEE0,0xDD02,0xAD60,0xDBA2,0xB302,0x8420,0x5280,0x39E0,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xFFF1,0xFFE1,0xFFE0,0xDEE0,0x7BC0,0xDBA2,0x4A42,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xBFFA,0xB7D9,0x8FD6,0x6793,0x4790,0x16EC,0x05C8,0x0546,0x0506,0x04A5,0x0444,0x03C2,0x0280,0x01C0,0x0160},
-  {0x0000,0xF800,0x7000,0x5000,0x4800,0x3000,0x2800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xD69A,0x7BEF,0x52AA,0x3186,0x2945,0x10A2,0x0020,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xDEDB,0xD69A,0x8C51,0x6B4D,0x31A6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xF7BE,0xDEDB,0x4228,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFD,0xFFFC,0xFFDC,0xFFBC,0xF7BA,0xF7BA,0xF79A,0xEF59,0xE71A,0x7BCE,0x73CE},
-  {0x0000,0x8C51,0x738E,0x5ACB,0x52AA,0x4A49,0x31A6,0x2965,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xC2E6,0x9A45,0x5122,0x38E2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xD6C8,0xAD87,0xAD65,0x8464,0x7C05,0x7BC2,0x63A4,0x6322,0x5B22,0x7304,0x52E2,0x3A82,0x21A1,0x21A1,0x1920},
-  {0x0000,0xAD87,0x6D87,0x0702,0x6B84,0x4384,0x2A01,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xC7F0,0xAECE,0x960C,0x854B,0x6C28,0x5347,0x29C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xEF5D,0xD6BB,0xBDD9,0x52AD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xEF5D,0xD6BA,0x528A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xD6BA,0xB5B6,0x9CD3,0x5ACB,0x6242,0x51E2,0x3941,0x20C1,0x1080,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xA557,0x8C95,0x634F,0x5AEE,0x31C8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xB2C8,0x8A26,0x79E5,0x69A4,0x6164,0x5943,0x38E2,0x28A2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x7261,0x51C1,0x3920,0x18A0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xFFFF,0xEFFF,0xE79E,0xDEFB,0xCEFB,0xC69A,0xAD75,0xA575,0x9D34,0x73EF,0x6B6D,0x0000,0x0000,0x0000},
-  {0x0000,0xDE73,0xB52F,0xA4AE,0x734A,0x5267,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0x864E,0x864E,0x7E4E,0x75ED,0x756C,0x6D6C,0x650B,0x5C29,0x5429,0x5409,0x3AE6,0x3285,0x0000,0x0000},
-  {0x0000,0xFFE0,0xD680,0x9CC0,0x8420,0x6300,0x5280,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xDEDB,0xAD55,0x9CD3,0x94B2,0x7BCF,0x738E,0x6B6D,0x52AA,0x528A,0x31A6,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xDEDB,0xAD55,0x94B2,0x63F7,0x738E,0x5355,0x3B5C,0x3B3B,0x4B34,0x32FB,0x32FA,0x3AD5,0x528A,0x31A6},
-  {0x0000,0xF7BE,0xDEDB,0xDE90,0xE66B,0xAD54,0xAD0D,0xBCAF,0x94B2,0xE468,0xBC48,0xA3CC,0x738E,0xCA24,0x528A,0x31A6},
-  {0x0000,0xFFFF,0xDEDB,0xC618,0xAD55,0x94B2,0x738E,0x528A,0x31A6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xB4AA,0x9C29,0x6AA6,0x20C1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xEF5D,0xBDF7,0x9C29,0x738E,0x6AA6,0x41A4,0x9924,0x88A2,0x8020,0x7000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xC618,0x7BEF,0x632C,0x630C,0x31A6,0x2965,0xF8A2,0x18A0,0x10A2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0x94B2,0x8B24,0x6A63,0x4228,0x49A2,0x31A6,0x28E1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xE71C,0xDEF2,0xFFE0,0xCE60,0xBDE5,0x7383,0xB365,0x4B5B,0x4221,0x3A95,0x3181,0x18A2,0x0000,0x0000,0x0000},
-  {0x0000,0xBC70,0x934B,0x7B2E,0x732E,0x630E,0x62CC,0x52AC,0x7A47,0x4A09,0x39C8,0x18E4,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xDA69,0xD208,0xB986,0xA104,0x7820,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x6425,0x53C4,0x4B43,0x3281,0x21A0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9328,0x8AC6,0x7224,0x61C3,0x4942,0x4101,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x74BD,0x5C1C,0x437A,0x32F8,0x1A95,0x1A73,0x2255,0x1175,0x094F,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xB33B,0xA299,0x89D7,0x8196,0x50CE,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x4CF8,0x3C76,0x2BF3,0x2371,0x1B30,0x1AEF,0x0A0B,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xDEDB,0xCE59,0xBDD8,0xAD77,0x9CF6,0x39E9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x94B2,0x8430,0x73AE,0x6B4D,0x5AEB,0x4208,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xF5BA,0xED39,0xDC56,0xCBD4,0x81AB,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x86A3,0x7622,0x6561,0x5CC1,0x3B60,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xE72D,0xE725,0xDEA4,0xD604,0xCD84,0xBCC3,0xB483,0x8B42,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xBEBF,0x8DDE,0x857C,0x7D1B,0x6479,0x2AB1,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xDBDA,0xCB58,0xBAF7,0xAA75,0x690C,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xF587,0xE4E6,0xDC45,0xCBC4,0xC3C3,0x9221,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xEF5D,0xD6BB,0xBDD9,0x7390,0x52AD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFCF4,0xFACC,0x6961,0x40E0,0xF8E5,0xF0C5,0xD8A4,0x30A0,0xD0A4,0xC0A4,0xB083,0xA883,0x7862,0x5041,0x30A0},
-  {0x0000,0xFFFF,0xEF6A,0xDD02,0x5121,0x30A0,0x30A0,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x9B84,0x9364,0x7AC3,0x72A3,0x6242,0x51E2,0x49C2,0x49C2,0x3961,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFE38,0xEDB6,0xFD75,0xFC71,0xFBAE,0xEB8E,0xBB4D,0xA28A,0x9A28,0x81E7,0x5124,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xE675,0xDE33,0xD5F2,0xCDB0,0xC58F,0xC56F,0xBD2E,0xB4EE,0xACAC,0xA42A,0x9BC8,0x8B87,0x8B46,0x7B06,0x5A64},
-  {0x0000,0xE38D,0xE30B,0xE30B,0xE289,0xDA68,0xE248,0xDA07,0xD9C6,0xC9E6,0xA985,0x8903,0x7881,0x5861,0x4040,0x4040},
-  {0x0000,0x9B29,0x92C8,0x92A7,0x8AA7,0x8A67,0x8247,0x8247,0x71E5,0x69E5,0x69C5,0x69C5,0x61A4,0x3902,0x28A1,0x20A1},
-  {0x0000,0xFF9C,0xFF5C,0xFF5B,0xFF3B,0xFF1A,0xFED9,0xFE98,0xEDF5,0xDD12,0xDD11,0xC44F,0xC42D,0xBC2E,0xB3CC,0x8288},
-  {0x0000,0xEE55,0xE5F4,0xE591,0xDD0F,0xDCEF,0xD46C,0xCC4B,0xCBC8,0xAAE6,0x8A24,0x8224,0x5962,0x5962,0x5962,0x5962},
-  {0x0000,0xEC50,0xE38D,0xE30B,0xE248,0xD9C6,0xA985,0xD164,0x8903,0x7881,0x5861,0x4040,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xA38B,0x9B4A,0x9B08,0x92C8,0x8A87,0x8247,0x7A46,0x7A26,0x71E5,0x71E5,0x69C5,0x69C5,0x5163,0x3902,0x28A1},
-  {0x0000,0xBC0A,0xBB48,0xBAA5,0x8284,0xB224,0x9A24,0x8223,0x6202,0x9984,0x8183,0x7162,0x6182,0x5902,0x48E2,0x2081},
-  {0x0000,0xE659,0xE576,0xC2ED,0x98E5,0x7864,0x6025,0x5004,0x2802,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xCCCF,0xCC6D,0x936A,0x7261,0x51C1,0x3920,0x18A0,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xE488,0xDC07,0xBB86,0x8A45,0x5163,0x4942,0x4142,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xD5B3,0xC48F,0x8444,0xCB8B,0x5B23,0x4261,0xC1E5,0xC1A4,0xB984,0xB922,0xB8A1,0x78C1,0x58E2,0x58C1,0x48E2},
-  {0x0000,0xFE0E,0xFD27,0xFC83,0xFC61,0x35C6,0x14C2,0x2C45,0x0BC1,0xD341,0xB2A0,0xA9C0,0x0360,0x0320,0x02C0,0x0260},
-  {0x0000,0xFF58,0xFF37,0xFF37,0xFED3,0xF670,0xEE2E,0xEE0D,0xEDCC,0xE5AB,0xD4E7,0xB428,0xBBC2,0x8B46,0x9AA0,0xA280},
-  {0x0000,0xFEF3,0xF60F,0xFDCE,0xF58C,0xED2A,0xC54F,0xE4C9,0xD445,0xD405,0xB321,0x8BEC,0x9A60,0x9A20,0x9220,0x9200},
-  {0x0000,0xF796,0xF777,0xEF54,0xEECF,0xC6A8,0xE64C,0xD647,0xE60B,0xD588,0xC4E6,0xA4E2,0x8CA2,0xB444,0x73E1,0x9B84},
-  {0x0000,0xFE6F,0xEDAC,0xD4E9,0xECEC,0xEC6C,0xCC68,0xE40A,0xDBC8,0xD388,0xD367,0xDB46,0xD305,0xCAC4,0xC2A3,0x8B03},
-  {0x0000,0xADFB,0x6CF2,0x8494,0x5C2F,0x6BD1,0x432B,0x52ED,0x3AA9,0x1965,0x2105,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xBC91,0x9B8D,0x9A49,0x91E7,0x6AEA,0x5A07,0x42C9,0x3A27,0xA9A6,0x71A6,0x6186,0x1965,0x0000,0x0000,0x0000},
-  {0x0000,0xFED8,0xFEB8,0xFE97,0xEE56,0xED30,0xEC08,0xF364,0xE344,0xD324,0xC2C4,0xAA43,0x8A44,0x61C4,0x1965,0x18C3},
-  {0x0000,0xEEE7,0xEEA6,0xEEA4,0xEEA4,0xEE83,0xE684,0xEE20,0xC540,0xB4C1,0x8C46,0x44D7,0x8381,0x4B8C,0x5282,0x1964},
-  {0x0000,0xADFB,0xC596,0xACD3,0x6CF2,0x8494,0x6BD1,0x83CF,0x734D,0x432B,0x52ED,0x4A08,0x1965,0x2105,0x0000,0x0000},
-  {0x0000,0xD4EE,0xBBE9,0xB2E6,0x8306,0x62A6,0xBA64,0xA285,0x8204,0x6A24,0x5224,0x71E4,0x2943,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xFFE3,0xC638,0xFDA0,0x8C51,0xDA68,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x6B4D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xE73E,0xBDD8,0x6B4E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xE73E,0xBDD8,0x6B4E,0x39E7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x04BF,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0x8C51,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0x8C51,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x8C51,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xAD55,0x73AE,0x738E,0x738E,0x738E,0x6B6D,0x6B6D,0x6B6D,0x6B6D,0x6B4D,0x5AEB,0x52AA,0x528A,0x4A69,0x0000},
-  {0x0000,0xB5DE,0x8478,0x8458,0x7C57,0x7C57,0x7C37,0x7C37,0x7C37,0x7C17,0x7417,0x6395,0x5B33,0x5B13,0x52F2,0x0000},
-  {0x0000,0x3186,0x3186,0x3186,0x2965,0x2965,0x2965,0x2965,0x2945,0x2945,0x2945,0x2945,0x2124,0x2124,0x2124,0x0000},
-  {0x0000,0x1904,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x1904,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x1904,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0x1904,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0x0575,0x0555,0x04F3,0xBC4E,0xABEC,0xB3CC,0x04D3,0x9B8B,0x6B4D,0x8AC7,0x6A07,0x41D4,0x396B,0x28E1},
-  {0x0000,0xABEC,0x0679,0x0575,0x0555,0x04F3,0x03EF,0x936B,0x92E8,0x82A7,0x6A06,0x034D,0x5184,0x0000,0x0000,0x0000},
-  {0x0000,0x2902,0x20C2,0x2104,0x18C3,0x18A2,0x18A1,0x1061,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFD94,0xF289,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFD94,0xF289,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF64F,0xDCA9,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF64F,0xDCA9,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE5DF,0xB35E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFFF,0x8E3E,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDF94,0x7D47,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDF94,0x7D47,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x4AC5,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xBE4F,0x7C47,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xBE4F,0x7C47,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xEA03,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x7A68,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFBA,0xEE2D,0xD58C,0xC52B,0xA449,0x93E8,0x8BA8,0x72E6,0x5A65,0x5A45,0x49E4,0x3163,0x18C1,0x1081,0x0020},
+  {0x0000,0xE73E,0xCE5A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE73E,0xCE5A,0x2946,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE73E,0xCE5A,0x2946,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE73E,0xCE5A,0x2946,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE73E,0xCE5A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE73E,0xCE5A,0x2946,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE73E,0xCE5A,0x2946,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE73E,0xCE5A,0x2946,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x7C75,0x6BF3,0x63B1,0x6391,0x5B50,0x530F,0x52EE,0x4ACD,0x4A8C,0x426B,0x3A4B,0x3A2A,0x3A0A,0x31C9,0x2146},
+  {0x0000,0xBC2E,0xABCD,0xABAC,0xA36B,0x9B4B,0x932A,0x8B0A,0x8AEA,0x82C9,0x7AA9,0x7268,0x6A47,0x6227,0x6207,0x59E6},
+  {0x0000,0xCC8F,0xBC4F,0xBC4E,0xBC2E,0xA3AC,0x9B8C,0x9B6B,0x936B,0x932B,0x7AC9,0x72A9,0x7289,0x7288,0x7288,0x6227},
+  {0x0000,0xDEFC,0xD6BB,0xCE7A,0xC639,0xBDF8,0xB596,0xA555,0x9D14,0x9CF4,0x8C71,0x8410,0x7BF0,0x7BCF,0x73AF,0x6B6E},
+  {0x0000,0xE73D,0xDEFC,0xD6BB,0xCE9A,0xBDF8,0xAD96,0xAD76,0xA555,0xA514,0x8451,0x8410,0x8410,0x7BF0,0x7BEF,0x632D},
+  {0x0000,0x9CD2,0x9491,0x8C70,0x8430,0x840F,0x7BCE,0x73AE,0x738D,0x6B6D,0x632C,0x5ACB,0x52AA,0x52AA,0x5289,0x4A69},
+  {0x0000,0xA513,0x9CD2,0x94B2,0x9491,0x8C50,0x7BEF,0x7BCE,0x7BCE,0x73AE,0x632C,0x5AEB,0x5ACB,0x5ACA,0x5ACA,0x4A49},
+  {0x0000,0x54AE,0x4C0D,0x43CC,0x3B8B,0x8AC8,0x8246,0x432A,0x7226,0x7A06,0x71E5,0x69C5,0x59A4,0x5984,0x5984,0x4923},
+  {0x0000,0xB5B7,0x5CD0,0x6C8F,0x4C0D,0x734A,0x43CC,0x3BAB,0x3B4A,0x8246,0x7226,0x7A06,0x71E5,0x61A5,0x59A4,0x5964},
+  {0x0000,0xAB8B,0xA2E8,0x9AA7,0x8A87,0x8A67,0x8A47,0x8246,0x7226,0x7A26,0x7A06,0x71C5,0x61C5,0x59A4,0x5984,0x5964},
+  {0x0000,0xAB28,0xA2E8,0x9287,0x8A47,0x8246,0x8226,0x71E5,0x61E5,0x61C5,0x69A5,0x5964,0x5964,0x5144,0x4903,0x30C2},
+  {0x0000,0x8B28,0x8AE7,0x8286,0x7265,0x8246,0x7A26,0x7225,0x6A24,0x79E5,0x61E4,0x61A5,0x59A4,0x59C4,0x5184,0x4943},
+  {0x0000,0xC5F5,0x9CB0,0x6BF3,0x738C,0x5B50,0x5B2F,0x530F,0x52EE,0x4A8D,0x426C,0x426C,0x3A2A,0x31E9,0x31C9,0x31C9},
+  {0x0000,0xDCCD,0xCC6C,0xC44B,0xBC2B,0xABAA,0xA369,0x9B69,0x9328,0x82E8,0x7AA7,0x7287,0x7287,0x7266,0x5A05,0x51C5},
+  {0x0000,0x82CC,0x7AAC,0x7A8B,0x726B,0x6A29,0x6209,0x59E8,0x51A7,0x4987,0x4966,0x4166,0x4166,0x3925,0x3105,0x3104},
+  {0x0000,0xFF9B,0xEF19,0xE6D8,0xDE97,0xBDB4,0xB573,0xAD32,0x9490,0x8C2F,0x840E,0x840E,0x83EE,0x736C,0x62EA,0x5ACA},
+  {0x0000,0xED2A,0xDCCA,0xD4A9,0xCC69,0xB3E8,0xABA7,0xA387,0x9B67,0x9326,0x82E6,0x82C5,0x7AA5,0x7AA5,0x7264,0x5A04},
+  {0x0000,0xDB6C,0xCB2B,0xC30B,0xC2EA,0xAA89,0x9A69,0x9A48,0x9248,0x8A07,0x79E7,0x71C6,0x71C6,0x69A6,0x5144,0x5144},
+  {0x0000,0x6248,0x6227,0x5A07,0x51E6,0x49C6,0x49A5,0x4185,0x3964,0x3944,0x3944,0x3124,0x3124,0x3124,0x28E3,0x20E3},
+  {0x0000,0x6E08,0x5466,0x7AA6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x43E9,0x32E7,0x7AA6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEEF9,0x9EEB,0x7508,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x4586,0x3404,0x7AA6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x9E08,0x7466,0x7AA6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x33C5,0x7AA6,0x22C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x52AB,0x4A8B,0x4A6A,0x4229,0x4208,0x39E8,0x31A7,0x3186,0x2986,0x2966,0x2945,0x2104,0x10A3,0x1082,0x0861},
+  {0x0000,0x43FB,0x3BBA,0x3B9A,0x3B79,0x3358,0x3316,0x32F5,0x2AD4,0x2AD4,0x2AB4,0x2A71,0x224F,0x222F,0x220F,0x19EF},
+  {0x0000,0xFD27,0xECA6,0xF404,0xCC26,0xE3A4,0xE343,0xC323,0x9B24,0xDAC3,0xBA82,0x92A3,0xBA22,0x9A02,0x89E2,0x8161},
+  {0x0000,0xF71A,0xF6D9,0xEE99,0xEE78,0xDE17,0xC595,0xC574,0xBD54,0xC534,0xBD13,0x942F,0x940F,0x8C0F,0x8BEF,0x8BCE},
+  {0x0000,0xD3E8,0xD3A7,0xCB66,0xC326,0xBB05,0xAB06,0xA2E5,0xA2C5,0x9A84,0x9264,0x8244,0x7A24,0x7A24,0x7A04,0x71C3},
+  {0x0000,0x9D16,0x8CD5,0x7C53,0x7C12,0x73F1,0x6BD1,0x636F,0x5B2E,0x5B0D,0x52ED,0x4A8C,0x4A48,0x3A0A,0x39C7,0x2945},
+  {0x0000,0xBD2A,0x7C54,0x7413,0x7BCD,0x738D,0x6370,0x5B50,0x5B2F,0x52AC,0x4A8C,0x426B,0x3A4B,0x3A0A,0x31C9,0x2146},
+  {0x0000,0x9C93,0x8BCD,0x6391,0x6371,0x730B,0x5B2F,0x52CE,0x4AAD,0x4A8C,0x426B,0x3A4B,0x3A2A,0x3A0A,0x31C9,0x2146},
+  {0x0000,0x7C75,0x7413,0x6BF3,0x63B1,0x6370,0x5B4F,0x530F,0x52CC,0x4A8C,0x426B,0x3A4B,0x3A2A,0x31C9,0x2166,0x18E4},
+  {0x0000,0xD48C,0xCC6C,0x9B29,0x61C6,0x59C7,0x59C6,0x59C6,0x59A6,0x5185,0x4145,0x4144,0x4144,0x4144,0x3104,0x20C3},
+  {0x0000,0x7248,0x7228,0x7228,0x6A07,0x59C6,0x59C6,0x51A6,0x4145,0x4144,0x4144,0x4144,0x4145,0x4144,0x3104,0x20C3},
+  {0x0000,0x7248,0x7228,0x7228,0x6A07,0x59C6,0x59C6,0x51A6,0x4145,0x4144,0x4144,0x4144,0x4145,0x4144,0x3104,0x20C3},
+  {0x0000,0x7248,0x7228,0x7228,0x6A07,0x59C6,0x59C6,0x51A6,0x4145,0x4144,0x4144,0x4144,0x4145,0x4144,0x3104,0x20C3},
+  {0x0000,0x82CC,0x7A8B,0x59E9,0x3926,0x3925,0x3926,0x3925,0x3925,0x3105,0x28E4,0x28C4,0x28C4,0x28C4,0x20A3,0x1862},
+  {0x0000,0x4987,0x4967,0x4967,0x4967,0x4126,0x3925,0x3925,0x3105,0x28E4,0x28C4,0x28C4,0x28C4,0x28C4,0x20A3,0x1862},
+  {0x0000,0x4987,0x4967,0x4967,0x4967,0x4126,0x3925,0x3925,0x3105,0x28E4,0x28C4,0x28C4,0x28C4,0x28C4,0x20A3,0x1862},
+  {0x0000,0x4987,0x4967,0x4967,0x4967,0x4126,0x3925,0x3925,0x3105,0x28E4,0x28C4,0x28C4,0x28C4,0x28C4,0x20A3,0x1862},
+  {0x0000,0xF77C,0xEF1A,0xEF19,0xE6F9,0xC617,0xC617,0xC617,0xC5F7,0xC5F7,0xBDB4,0x9491,0x9491,0x9471,0x6B6E,0x39E9},
+  {0x0000,0xF79D,0xF79D,0xF79D,0xF77C,0xF77C,0xC617,0xC617,0xC5F7,0xC5F7,0x9491,0x9491,0x9471,0x7BD0,0x52AC,0x39E9},
+  {0x0000,0xF79D,0xF79D,0xF79D,0xF77C,0xF77C,0xC617,0xC617,0xC5F7,0xC5F7,0x9491,0x9491,0x9471,0x7BD0,0x52AC,0x39E9},
+  {0x0000,0xF79D,0xF79D,0xF79D,0xF77C,0xF77C,0xC617,0xC617,0xC5F7,0xC5F7,0x9491,0x9491,0x9471,0x7BD0,0x52AC,0x39E9},
+  {0x0000,0xDCEA,0xDCC9,0xBC29,0x8BA7,0x6AC5,0x6AA5,0x62A5,0x62A5,0x6284,0x4A03,0x4A03,0x49E3,0x49E3,0x3982,0x2922},
+  {0x0000,0x8366,0x7B46,0x7B46,0x6AE5,0x62A5,0x62A5,0x5A64,0x4A03,0x49E3,0x49E3,0x49E3,0x49E3,0x49E3,0x3982,0x2922},
+  {0x0000,0x8366,0x7B46,0x7B46,0x6AE5,0x62A5,0x62A5,0x5A64,0x4A03,0x49E3,0x49E3,0x49E3,0x49E3,0x49E3,0x3982,0x2922},
+  {0x0000,0x8366,0x7B46,0x7B46,0x6AE5,0x62A5,0x62A5,0x5A64,0x4A03,0x49E3,0x49E3,0x49E3,0x49E3,0x49E3,0x3982,0x2922},
+  {0x0000,0x3CEF,0x3CAE,0x3C6D,0x342D,0x33EC,0x33CB,0x33AB,0x2B8B,0x2B4A,0x2309,0x22E8,0x22C8,0x22A8,0x2287,0x1A47},
+  {0x0000,0x3BAE,0x336D,0x334C,0x330B,0x2AEB,0x2AEB,0x2ACB,0x2AAA,0x2269,0x2248,0x2228,0x1A07,0x19E7,0x19C7,0x19A6},
+  {0x0000,0x7590,0x6D4F,0x650E,0x64CD,0x5C8C,0x5C6C,0x542B,0x4BCB,0x4B8A,0x4349,0x4329,0x3B08,0x3AE8,0x32A7,0x3267},
+  {0x0000,0x3CEF,0x3CAE,0x3C6D,0x344D,0x33EC,0x33CB,0x2BAB,0x2B8A,0x2B4A,0x2B29,0x22E8,0x22A8,0x2287,0x1A67,0x1A46},
+  {0x0000,0xDE8B,0xDE4A,0xD629,0xD609,0xBD68,0xB508,0xACE7,0xACC7,0xA4C7,0xA4A6,0x8C06,0x83C6,0x83A5,0x7BA5,0x6B24},
+  {0x0000,0xF7DF,0xD75E,0xC659,0xADD8,0x94B3,0x7C52,0x7431,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x7435,0x6391,0x5B71,0x52EE,0x42D4,0x4AAD,0x4AAD,0x424B,0x3A4B,0x3A2A,0x3A0A,0x31E9,0x21CF,0x31C9,0x2148},
+  {0x0000,0x957E,0x5C1C,0x5375,0x4B7B,0x3B19,0x3AD7,0x2A76,0x3A91,0x2A33,0x2A11,0x19D3,0x21CF,0x19AE,0x196F,0x110B},
+  {0x0000,0xE6B4,0xE693,0xE673,0xDE72,0xCDD0,0xBD4F,0xB50E,0xACEE,0xACEE,0x944C,0x8C0B,0x83CB,0x83CA,0x83AA,0x7349},
+  {0x0000,0xE6B4,0xE693,0xE673,0xDE72,0xCDD0,0xBD70,0xB54F,0xB52F,0xB50E,0x944C,0x8C0B,0x8BEB,0x83EB,0x83CB,0x6B08},
+  {0x0000,0xE6B4,0xE693,0xE673,0xDE72,0xCDD0,0xBD50,0xB54F,0xB52F,0xB50E,0xACEE,0x8C0C,0x8BEB,0x83EB,0x83CB,0x83AA},
+  {0x0000,0xEF7E,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8B06,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6591,0x6591,0x5D50,0x5D30,0x5D10,0x54EF,0x54EF,0x54CF,0x54AE,0x4C6E,0x4C4D,0x4C0D,0x43EC,0x43CC,0x3B8B},
+  {0x0000,0x6591,0x5D50,0x5D10,0x54EF,0x54CF,0x54AF,0x548E,0x4C6E,0x4C4D,0x4C2D,0x440C,0x43CC,0x43CC,0x43AB,0x3B8B},
+  {0x0000,0x8B06,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFFF,0xF7DF,0xEF5D,0xDEFC,0xD6DB,0xCE79,0xCE59,0xC638,0xB5B6,0xAD76,0x9CD3,0x8C71,0x8410,0x7BF0,0x73AE},
+  {0x0000,0xFC85,0xFC85,0xEC45,0xE405,0xDBE5,0xCBA4,0xCBA4,0xC384,0xB324,0xAB03,0x92A3,0x8A63,0x8243,0x7A42,0x7202},
+  {0x0000,0xCADA,0xCADA,0xBA98,0xB277,0xB276,0xA235,0xA234,0x9A14,0x9212,0x89F2,0x79B0,0x718E,0x696D,0x696D,0x614C},
+  {0x0000,0x661F,0x661F,0x5DBD,0x555B,0x553A,0x4CF9,0x4CD8,0x4CB8,0x4456,0x4435,0x3BB3,0x3351,0x3310,0x330F,0x2ACE},
+  {0x0000,0xFF07,0xFEC7,0xF687,0xE626,0xDDE6,0xCD86,0xCD66,0xC545,0xBCE5,0xB4C5,0xA444,0x93E4,0x8383,0x8383,0x7B43},
+  {0x0000,0x8EE7,0x8EC7,0x8667,0x7E27,0x7DE6,0x75A6,0x7566,0x6D66,0x64E5,0x64A5,0x5C44,0x5404,0x4B84,0x4B84,0x4323},
+  {0x0000,0xFD39,0xFD18,0xF4D7,0xE496,0xDC75,0xCC34,0xCC13,0xBBD2,0xB3B2,0xAB91,0x9B0F,0x8ACD,0x82AD,0x82AC,0x726B},
+  {0x0000,0x5AEC,0x5AEC,0x5AEC,0x52AB,0x4A8A,0x4A6A,0x4A6A,0x424A,0x4229,0x3A08,0x39E8,0x31A7,0x2986,0x2986,0x2945},
+  {0x0000,0xAD96,0xAD76,0xA535,0x9CF4,0x94B3,0x8C72,0x8C51,0x8431,0x7BF0,0x73CF,0x6B6E,0x632D,0x5ACB,0x52CB,0x4A8A},
+  {0x0000,0x2536,0x2535,0x1CD4,0x1C93,0x1C72,0x1C31,0x1C10,0x13AF,0x138F,0x134D,0x12EC,0x12AB,0x12AB,0x12AB,0x0A6A},
+  {0x0000,0x8218,0x81F8,0x79F7,0x71D6,0x71B5,0x69B4,0x6993,0x6192,0x5971,0x5971,0x5950,0x512E,0x410C,0x410C,0x38EB},
+  {0x0000,0x3AB8,0x3297,0x3297,0x3276,0x3255,0x2A34,0x2A13,0x2A12,0x21D1,0x21D0,0x218E,0x196C,0x194C,0x194C,0x192B},
+  {0x0000,0x8285,0x7A85,0x7245,0x7245,0x6A24,0x6204,0x61E4,0x59C4,0x59C4,0x5183,0x4963,0x4143,0x4142,0x4142,0x3922},
+  {0x0000,0x5405,0x5405,0x53E5,0x4BA5,0x4B84,0x4364,0x4324,0x4324,0x3B04,0x3AC3,0x32A3,0x3263,0x2A02,0x2A02,0x21C2},
+  {0x0000,0xD1E6,0xD1E6,0xC1C6,0xB9A6,0xB1A5,0xA985,0xA185,0x9144,0x9144,0x8124,0x7903,0x68E3,0x68E3,0x68E3,0x60E3},
+  {0x0000,0x2125,0x2125,0x2125,0x2105,0x2104,0x18E4,0x18E4,0x18E4,0x18C3,0x10A3,0x10A3,0x10A3,0x1082,0x1082,0x1082},
+  {0x0000,0xFF94,0xF687,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6DE9,0xF34B,0x4CC6,0xD1C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x5DDE,0x6DE9,0x4CC6,0x3297,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6DE9,0x4CC6,0x9B1B,0xC2B9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xF687,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6DE9,0x4CC6,0xF34B,0xD1C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF687,0x6DE9,0xF445,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFFF,0xF7BE,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF4F8,0x6DE9,0xF34B,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xF687,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEEF9,0xB3CA,0x8B29,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xEEF9,0xD1C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF51,0xF66A,0xE60A,0xE5C6,0xC54A,0xC4E6,0xC483,0xAC87,0x9C26,0x93C5,0x9B82,0x93A4,0x8B83,0x8B63,0x72A1},
+  {0x0000,0xEF7D,0xCEBB,0xC65A,0xBE18,0xB5B7,0xAD76,0x9D14,0x94B3,0x8C92,0x8431,0x7C10,0x73CF,0x6B8F,0x6B8E,0x5AEC},
+  {0x0000,0x7C54,0x7413,0x6BF3,0x6BD2,0x6BB1,0x634F,0x5B2F,0x5B2F,0x530E,0x4AAC,0x426B,0x426B,0x424B,0x424B,0x31E9},
+  {0x0000,0x8474,0x7434,0x7413,0x7413,0x73F3,0x6BF3,0x6BD2,0x6390,0x5B2F,0x5B0F,0x52CE,0x426B,0x424B,0x3A2A,0x31C9},
+  {0x0000,0xE6B4,0xE693,0xE673,0xDE72,0xDE52,0xCDD0,0xB52F,0xB50E,0xACEE,0x9C8D,0x83EB,0x83CB,0x83AA,0x83AA,0x7329},
+  {0x0000,0xE4CD,0xD48C,0xCC6C,0xCC4B,0xC42B,0xBC0B,0xA389,0x9B69,0x9328,0x8AE8,0x7AA7,0x7A87,0x7266,0x7266,0x51C5},
+  {0x0000,0xC5F5,0x9CB0,0x6BF3,0x738C,0x5B50,0x5B2F,0x532F,0x530F,0x530F,0x52CE,0x4A8D,0x426C,0x424B,0x31E9,0x31C9},
+  {0x0000,0xCDD5,0xA4B1,0xB2A8,0xAA87,0x7B8C,0xA287,0x9A67,0x9246,0x8A06,0x8206,0x79E5,0x71C5,0x6184,0x6164,0x5964},
+  {0x0000,0x7434,0x7413,0x6BD2,0x6BD2,0x6BB2,0x6391,0x5B4F,0x5B0D,0x530E,0x52EE,0x4AAD,0x426A,0x424B,0x3A2A,0x39E8},
+  {0x0000,0xCDD5,0xA4B1,0x7B8C,0xB2A8,0xAA87,0xA287,0x9246,0x8A06,0x8206,0x79E5,0x79C5,0x6984,0x6184,0x5964,0x5964},
+  {0x0000,0xC4E5,0x93A4,0xD1C5,0xA964,0x9123,0x2924,0x8903,0x7903,0x68C2,0x20E3,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xD550,0xD48C,0xCC4C,0xC42B,0xAC2C,0x9B69,0x43D2,0x9307,0x7AA7,0x7205,0x618D,0x3AAA,0x39C7,0x4127,0x2905},
+  {0x0000,0xC5F5,0x9CB0,0x64E7,0x5C2A,0x4BC5,0x738C,0x4385,0x5B2F,0x530F,0x4326,0x3AE4,0x428C,0x3286,0x3A0A,0x31C9},
+  {0x0000,0x28E8,0x20A6,0x18A6,0x1885,0x1885,0x1084,0x1064,0x1063,0x1063,0x1063,0x1043,0x0843,0x0842,0x0822,0x0021},
+  {0x0000,0xFFB8,0xFE07,0xCC4B,0xF305,0x7A68,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFB8,0xFE07,0xCC4B,0xF305,0x7A68,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFB8,0xFE07,0xCC4B,0xF305,0x7A68,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFB8,0xFE07,0xCC4B,0xF305,0x7A68,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFB8,0xFE07,0xCC4B,0xF305,0x7A68,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8974,0x690F,0x3A0A,0x29A8,0x2987,0x2146,0x18E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDCCD,0xCC6C,0xC44B,0xBC2B,0xABAA,0xA369,0x9B69,0x9328,0x82E8,0x7AA7,0x7287,0x7287,0x7266,0x5A05,0x51C5},
+  {0x0000,0xC4E5,0xCB0B,0x5B0D,0xB2AA,0xA269,0x4A6A,0x9228,0x79C6,0x6986,0x31C7,0x2987,0x2125,0x0000,0x0000,0x0000},
+  {0x0000,0x7577,0x4C52,0x7413,0x73F3,0x6BB1,0x5B50,0x5B2F,0x530E,0x52CD,0x426B,0x424B,0x3A4B,0x3A2A,0x31C9,0x2146},
+  {0x0000,0xCFFE,0x877D,0x675C,0x56FB,0x8E38,0x6617,0x4DF6,0x4575,0x6491,0x3C91,0x2536,0x3430,0x1C31,0x2C0F,0x132D},
+  {0x0000,0xD48C,0xC42B,0xA3CB,0x9B69,0x9328,0x82C7,0x7A87,0x7A87,0x7286,0x7287,0x7266,0x59E5,0x59C7,0x51C5,0x4144},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EA9,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xE609,0x8EA9,0xD589,0xC528,0x7DC8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xABAB,0xA2E8,0xA2C8,0x8AA8,0x8A67,0x8246,0x7A26,0x7226,0x7A06,0x71E5,0x69C5,0x61A4,0x61A4,0x5984,0x5964},
+  {0x0000,0x8B2A,0x7A67,0x7A46,0x7A26,0x7A06,0x71E5,0x69E5,0x69C5,0x61A5,0x61A4,0x5984,0x5984,0x5984,0x5964,0x4123},
+  {0x0000,0x8495,0x7413,0x6BF3,0x6BD2,0x6BB1,0x6350,0x52EE,0x4AAD,0x4A8C,0x426B,0x3A0A,0x31E9,0x31C9,0x2146,0x10A3},
+  {0x0000,0x8C73,0x7413,0x6BF3,0x6BD2,0x838E,0x6370,0x5B2F,0x4ACD,0x6A69,0x4A8C,0x424B,0x3A0A,0x31E9,0x31C9,0x2146},
+  {0x0000,0xC65A,0xD46C,0xBC0B,0x6208,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xD46C,0xBC0B,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8ACC,0x7A6B,0x61E9,0x59C8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0x9450,0x7C11,0x736D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC5F5,0x9CB0,0x6BF3,0x738C,0x5B50,0x5B2F,0x530F,0x52EE,0x4A8D,0x426C,0x426C,0x3A2A,0x31E9,0x31C9,0x31C9},
+  {0x0000,0x8C53,0x73F3,0x6BB2,0x5B50,0x5B2F,0x530E,0x4A8C,0x426B,0x98E5,0x424B,0x3A4B,0x3A2B,0x3A0A,0x31C9,0x2146},
+  {0x0000,0xF7BF,0xEFBF,0xEF9F,0xEF9F,0xEF9E,0xC659,0xBE18,0xBE18,0xBE18,0xAD76,0x9492,0x8C92,0x8C92,0x8C92,0x8C72},
+  {0x0000,0xCF3F,0xAEBE,0xA69E,0xA69E,0xA65D,0x8D78,0x8558,0x8538,0x7D38,0x7D18,0x84B3,0x6412,0x63F2,0x63F2,0x5BD2},
+  {0x0000,0xF7BF,0xEFBF,0xEF9F,0xEF9F,0xEF9E,0xC659,0xBE18,0xBE18,0xBE18,0xAD76,0x9492,0x8C92,0x8C92,0x8C92,0x8C72},
+  {0x0000,0x65AB,0x3CA8,0x2BC7,0x33A7,0x22C5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x9D16,0x9516,0x94F6,0x94F5,0x8473,0x7C11,0x7BF1,0x73F1,0x73B0,0x5B0D,0x5B0D,0x5AED,0x5AED,0x5AED,0x5AEC},
+  {0x0000,0x5D50,0x54CF,0x4C0D,0x3B8B,0x32E9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDCCD,0xCC6C,0xC44B,0xBC2B,0xABAA,0xA369,0x9B69,0x9328,0x82E8,0x7AA7,0x7287,0x7287,0x7266,0x5A05,0x51C5},
+  {0x0000,0xF4C7,0xE3E4,0xC3C6,0xCB23,0xB323,0x92E4,0xA282,0x8242,0x79E1,0x20A1,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF4C7,0xCD4A,0xE3E4,0xC3C6,0xCB23,0xB323,0x92E4,0xA282,0x8242,0x79E1,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x7C75,0x6BF3,0x63B1,0x6391,0x5B50,0x530F,0x52EE,0x4ACD,0x4A8C,0x426B,0x3A4B,0x3A2A,0x3A0A,0x31C9,0x2146},
+  {0x0000,0x7434,0x6BF3,0x6BD2,0x63B1,0x5B50,0x5B2F,0x5B0D,0x52EE,0x426C,0x4A6A,0x426B,0x424B,0x424A,0x3A2A,0x31C8},
+  {0x0000,0x64CA,0x6C2E,0x6BF2,0x5BCC,0x6391,0x5B4F,0x5B0D,0x4B2A,0x4ACD,0x32C4,0x4A6A,0x426B,0x424B,0x3A2A,0x31C8},
+  {0x0000,0x7434,0x73F3,0x6BD2,0x6BB1,0x5B50,0x5B2F,0x5B0D,0x4AAD,0x4A6A,0x426B,0x424B,0x424A,0x3A2A,0x31C7,0x2987},
+  {0x0000,0x7C54,0x7413,0x7413,0x6BF3,0x6370,0x5B4F,0x5B2F,0x530E,0x4A8C,0x426B,0x426B,0x426B,0x424B,0x39E9,0x31C8},
+  {0x0000,0x9349,0x8B49,0x8B29,0x8B29,0x8B29,0x82E8,0x7287,0x7287,0x6A87,0x6246,0x51E5,0x51E5,0x51E5,0x51C5,0x51C5},
+  {0x0000,0xE696,0xE696,0xDE75,0xDE75,0xC5B3,0xB531,0xB531,0xB531,0xB511,0x8C0D,0x83ED,0x83ED,0x83CD,0x83CC,0x83CC},
+  {0x0000,0xE696,0xE696,0xE696,0xDE75,0xDE75,0xD614,0xB573,0xB552,0xAD32,0xAD11,0x8C2E,0x83EE,0x83ED,0x83CD,0x7BCD},
+  {0x0000,0xC5D5,0xC986,0xC185,0xB965,0xB965,0xB165,0xA144,0x9924,0x9924,0x9124,0x78E3,0x78E3,0x70E3,0x70E3,0x68C3},
+  {0x0000,0xE696,0xE696,0xDE75,0xDE75,0xC5B3,0xB531,0xB531,0xB531,0xB511,0x8C0D,0x83ED,0x83ED,0x83CD,0x83CC,0x83CC},
+  {0x0000,0xE696,0xE696,0xE696,0xDE75,0xDE75,0xD614,0xB573,0xB552,0xAD32,0xAD11,0x8C2E,0x83EE,0x83ED,0x83CD,0x7BCD},
+  {0x0000,0xF7DF,0xD75E,0xBEFD,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x7E09,0x64C7,0x3C45,0x4BA5,0x3364,0x2283,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x3CAE,0x3CAE,0x3C8E,0x3C4D,0x344D,0x342C,0x340C,0x33CB,0x33AB,0x2BAB,0x2B8B,0x2B8A,0x2B6A,0x2B29,0x2B09},
+  {0x0000,0x8BF2,0x8BD2,0x8391,0x836E,0x8B2C,0x8246,0x732F,0x62AC,0x7A26,0x7A05,0x7226,0x59E7,0x61A5,0x59A4,0x5964},
+  {0x0000,0x2C8C,0x23CA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x450E,0x7C54,0x7433,0x53EF,0x6391,0x6370,0x5B2F,0x430C,0x4AAC,0x426B,0x424B,0x3A4B,0x0AA5,0x31E9,0x2146},
+  {0x0000,0xAF98,0x6732,0x3ECF,0x2E4D,0x55CF,0x2D8C,0x44EC,0x24C9,0x3C6A,0x1468,0x2409,0x1BC7,0x1BA7,0x0B86,0x0AA5},
+  {0x0000,0xC5F5,0x9CB0,0x6BF3,0x738C,0x5B50,0x5B2F,0x530F,0x52EE,0x4A8D,0x426C,0x426C,0x3A2A,0x31E9,0x31C9,0x31C9},
+  {0x0000,0xA349,0xA329,0x9B29,0x9B08,0x92E8,0x8AC8,0x8287,0x7A87,0x7A67,0x7246,0x61E5,0x61E5,0x59C5,0x59C5,0x59A5},
+  {0x0000,0xD637,0xD617,0xCDD6,0xC5B5,0xBD54,0xACF2,0xA4D2,0xA4B1,0x9C91,0x9C70,0x83AE,0x7BAD,0x7B8D,0x736D,0x734C},
+  {0x0000,0xD407,0xD3E7,0xCBC6,0xC3A6,0xBB86,0xAB45,0xA325,0x9B05,0x9AE5,0x8284,0x7A64,0x7A64,0x7A44,0x7223,0x7223},
+  {0x0000,0xBAF4,0xB2F3,0xAAD3,0xAAB2,0xA2B2,0x9270,0x924F,0x8A2F,0x8A2F,0x822E,0x71CC,0x69AC,0x69AB,0x618B,0x618A},
+  {0x0000,0x7517,0x74F7,0x6CD6,0x6C95,0x6C75,0x5C13,0x5BF2,0x5BD2,0x53B1,0x5390,0x4B2E,0x42ED,0x42ED,0x42CD,0x3AAC},
+  {0x0000,0xDD88,0xD568,0xCD28,0xCD07,0xC4E7,0xB486,0xAC46,0xA406,0x9C06,0x8B65,0x8344,0x7B24,0x7B04,0x7304,0x72E4},
+  {0x0000,0x9588,0x8D68,0x8D48,0x8507,0x84E7,0x7486,0x7466,0x6C46,0x6C06,0x63E6,0x5B65,0x5345,0x5324,0x4B04,0x4AE4},
+  {0x0000,0xDC73,0xD453,0xCC32,0xC411,0xBBF1,0xAB8F,0xAB6F,0xA36E,0x9B4E,0x9B2D,0x82AB,0x7A8B,0x7A6A,0x726A,0x724A},
+  {0x0000,0x730B,0x6AEB,0x6ACA,0x62CA,0x62AA,0x5A69,0x5269,0x5248,0x5228,0x4A28,0x41C6,0x41C6,0x39A6,0x39A6,0x39A6},
+  {0x0000,0xA4B1,0xA491,0x9C70,0x9450,0x9430,0x83AE,0x83AE,0x7B8D,0x7B6D,0x734C,0x62EB,0x62CA,0x5AAA,0x5A89,0x5A89},
+  {0x0000,0x4C91,0x4C71,0x4430,0x440F,0x43EF,0x3B8D,0x3B6D,0x334C,0x332C,0x32CB,0x2AAA,0x2A8A,0x2A69,0x2A69,0x2A69},
+  {0x0000,0x8A73,0x8272,0x8252,0x7A51,0x7A30,0x71EF,0x69EF,0x69EE,0x61CE,0x61CD,0x61AD,0x516B,0x516B,0x496A,0x494A},
+  {0x0000,0x5AF3,0x5AD2,0x52D2,0x52B1,0x5291,0x4A70,0x424F,0x422E,0x420E,0x420D,0x31AB,0x31AB,0x318A,0x318A,0x318A},
+  {0x0000,0x8AC7,0x82A7,0x7A86,0x7A86,0x7266,0x6A45,0x6A25,0x6205,0x6205,0x51A4,0x51A4,0x4984,0x4984,0x4983,0x4983},
+  {0x0000,0x6BA7,0x6BA7,0x6BA6,0x6366,0x6366,0x5B26,0x52E5,0x52E5,0x4AA5,0x4AA5,0x4244,0x3A24,0x3A24,0x3A03,0x39E3},
+  {0x0000,0xBA67,0xBA47,0xB247,0xAA27,0xAA27,0x99E6,0x91E6,0x91C6,0x89C5,0x81A5,0x7164,0x6964,0x6964,0x6944,0x6144},
+  {0x0000,0x49E7,0x49E7,0x49C6,0x49C6,0x41C6,0x41C6,0x41A5,0x3985,0x3985,0x3965,0x3965,0x2924,0x2904,0x2903,0x2903},
+  {0x0000,0xAC0F,0xD34C,0xCB2B,0x7B6D,0x734C,0x6B2C,0x6B2C,0x6B0B,0x8AAA,0x5269,0x5269,0x5249,0x5248,0x41E7,0x3165},
+  {0x0000,0x8C2F,0x8C0F,0x8BEF,0x83EE,0x736D,0x6B2C,0x6B2C,0x62CA,0x5269,0x5269,0x5269,0x5249,0x5248,0x41E7,0x3165},
+  {0x0000,0x8C2F,0x8C0F,0x8BEF,0x83EE,0x736D,0x6B2C,0x6B2C,0x62CA,0x5269,0x5269,0x5269,0x5249,0x5248,0x41E7,0x3165},
+  {0x0000,0x8C2F,0x8C0F,0x8BEF,0x83EE,0x736D,0x6B2C,0x6B2C,0x62CA,0x5269,0x5269,0x5269,0x5249,0x5248,0x41E7,0x3165},
+  {0x0000,0x6248,0x5A07,0x49C6,0x3125,0x3125,0x3125,0x3124,0x3124,0x2904,0x28E3,0x20E3,0x20C3,0x20C3,0x18A2,0x1082},
+  {0x0000,0x4186,0x4166,0x4166,0x3945,0x3125,0x3124,0x3124,0x2904,0x28E3,0x20E3,0x20C3,0x20C3,0x20C3,0x18A3,0x1082},
+  {0x0000,0x4186,0x4166,0x4166,0x3945,0x3125,0x3124,0x3124,0x2904,0x28E3,0x20E3,0x20C3,0x20C3,0x20C3,0x18A3,0x1082},
+  {0x0000,0x4186,0x4166,0x4166,0x3945,0x3125,0x3124,0x3124,0x2904,0x28E3,0x20E3,0x20C3,0x20C3,0x20C3,0x18A3,0x1082},
+  {0x0000,0x3CEF,0x3C8E,0x344D,0x340C,0x33EC,0x33CB,0x2BAB,0x2B8B,0x2B6A,0x2B29,0x22E9,0x22C8,0x22A8,0x2287,0x1A47},
+  {0x0000,0x3CEF,0x3CAE,0x3C6D,0x342C,0x33EC,0x33CB,0x2B8B,0x2B4A,0x2B29,0x22E9,0x22C8,0x22A8,0x2287,0x1A67,0x1A47},
+  {0x0000,0xEE6C,0xD568,0xC4E7,0xBCE9,0xB4A6,0xB465,0xAC44,0xA425,0x93E5,0x8BC6,0x8B85,0x8344,0x72E3,0x69E4,0x5163},
+  {0x0000,0x4A6B,0x39E8,0x31A7,0x31A7,0x3187,0x2966,0x2945,0x2125,0x2125,0x2104,0x18E4,0x18E3,0x18C3,0x18C3,0x1082},
+  {0x0000,0xC71F,0xBF1F,0xBEFF,0xA69E,0x9E1B,0x9DB9,0x9D98,0x9598,0x7D9B,0x8538,0x6475,0x7432,0x7432,0x63F2,0x4B50},
+  {0x0000,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF687,0x4CC6,0x8B29,0x2945,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x4CC6,0x9B1B,0xC2B9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6591,0x5D71,0x5D30,0x5D0F,0x54EF,0x54CF,0x54AF,0x548E,0x4C6D,0x4C4D,0x4C2D,0x440C,0x43EC,0x43AB,0x3B8B},
+  {0x0000,0x6591,0x5D50,0x5D10,0x54CF,0x54AF,0x548E,0x4C6E,0x4C4D,0x4C4D,0x4C2D,0x4C2D,0x43EC,0x43EC,0x43CC,0x3B8B},
+  {0x0000,0x6591,0x5D30,0x54EF,0x54CF,0x54AE,0x4C8E,0x4C4D,0x4C4D,0x4C2D,0x440C,0x43EC,0x43CC,0x43AB,0x3B8B,0x3B6B},
+  {0x0000,0x6571,0x5D30,0x5D10,0x54CF,0x54CF,0x548E,0x4C6E,0x4C4D,0x4C0D,0x440C,0x43EC,0x43CC,0x43CC,0x43AB,0x3B8B},
+  {0x0000,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF34B,0x4CC6,0xD1C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6DE9,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF4F8,0xF34B,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCB67,0xCB46,0xC326,0xC326,0xB306,0xA2E6,0xA2C5,0xA2C5,0x9AA5,0x8224,0x7A24,0x7A04,0x7A04,0x7A04,0x69A3},
+  {0x0000,0xFF11,0xF66D,0xEDC9,0xCD6B,0xCD29,0xBCA7,0xAC46,0x942A,0x9BE6,0x8B85,0x8B45,0x8304,0x8AC3,0x6A42,0x51A2},
+  {0x0000,0xA369,0x441C,0x3B78,0x7A87,0x2AD3,0x2AD3,0x220E,0x4965,0x3904,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xBE18,0xBE18,0x8C92,0x3B78,0xA369,0x7A87,0x2AD3,0x220E,0x4965,0x3904,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x545B,0x43FB,0x3BB9,0x3B78,0x3B56,0x3338,0x3316,0x2AB3,0x2A92,0x2A70,0x2273,0x2250,0x220F,0x19EF,0x19EE},
+  {0x0000,0xFDCA,0xF507,0xFC65,0xCC66,0xDBC4,0xD343,0xC303,0x9B44,0xD2C3,0xCA42,0x92A3,0x9242,0xC1C1,0x9981,0x8161},
+  {0x0000,0xE4CD,0xD48C,0xCC6C,0xCC4B,0xC42B,0xBC0B,0xA389,0x9B69,0x9328,0x8AE8,0x7AA7,0x7A87,0x7266,0x7266,0x51C5},
+  {0x0000,0x8ACD,0x82AC,0x7AAC,0x7A8B,0x7A6B,0x6A4A,0x6209,0x59E8,0x51A8,0x4987,0x4987,0x4166,0x4166,0x3125,0x3104},
+  {0x0000,0xFF9B,0xF75A,0xE6F9,0xE6D8,0xDEB8,0xD677,0xBDB4,0xB553,0xAD12,0x9CD1,0x9470,0x8C2F,0x840E,0x83EE,0x62EA},
+  {0x0000,0xED2A,0xE4EA,0xDCC9,0xD4A9,0xD489,0xC428,0xB3C7,0xABA7,0xA367,0x9346,0x82E6,0x82C5,0x7AA5,0x7A85,0x59E4},
+  {0x0000,0xDB6C,0xD32C,0xCB2B,0xC30B,0xC2EB,0xBACA,0xA269,0x9248,0x8A28,0x81E7,0x79E7,0x71C6,0x71A6,0x6165,0x5144},
+  {0x0000,0x6248,0x6227,0x5A27,0x5A07,0x5A07,0x51E6,0x49A6,0x49A5,0x4185,0x4165,0x3944,0x3124,0x3124,0x3124,0x20E3},
+  {0x0000,0x6E08,0x5D47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6E08,0x5D47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6E08,0x5D47,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6E08,0x5D47,0xF445,0xCBA4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x5D87,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x5D87,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x5D87,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDD8E,0xBCAB,0x5D87,0x4CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x545B,0x43FB,0x3BB9,0x3B78,0x3B56,0x3338,0x3316,0x2AB3,0x2A92,0x2A70,0x2273,0x2250,0x220F,0x19EF,0x19EE},
+  {0x0000,0x545B,0x43FB,0x3BB9,0x3B78,0x3B56,0x3338,0x3316,0x2AB3,0x2A92,0x2A70,0x2273,0x2250,0x220F,0x19EF,0x19EE},
+  {0x0000,0x545B,0x43FB,0x3BB9,0x3B78,0x3B56,0x3338,0x3316,0x2AB3,0x2A92,0x2A70,0x2273,0x2250,0x220F,0x19EF,0x19EE},
+  {0x0000,0x545B,0x43FB,0x3BB9,0x3B78,0x3B56,0x3338,0x3316,0x2AB3,0x2A92,0x2A70,0x2273,0x2250,0x220F,0x19EF,0x19EE},
+  {0x0000,0x545B,0x43FB,0x3BB9,0x3B78,0x3B56,0x3338,0x3316,0x2AB3,0x2A92,0x2A70,0x2273,0x2250,0x220F,0x19EF,0x19EE},
+  {0x0000,0x545B,0x43FB,0x3BB9,0x3B78,0x3B56,0x3338,0x3316,0x2AB3,0x2A92,0x2A70,0x2273,0x2250,0x220F,0x19EF,0x19EE},
+  {0x0000,0x545B,0x43FB,0x3BB9,0x3B78,0x3B56,0x3338,0x3316,0x2AB3,0x2A92,0x2A70,0x2273,0x2250,0x220F,0x19EF,0x19EE},
+  {0x0000,0xFDCA,0xF507,0xFC65,0xCC66,0xDBC4,0xD343,0xC303,0x9B44,0xD2C3,0xCA42,0x92A3,0x9242,0xC1C1,0x9981,0x8161},
+  {0x0000,0xFDCA,0xF507,0xFC65,0xCC66,0xDBC4,0xD343,0xC303,0x9B44,0xD2C3,0xCA42,0x92A3,0x9242,0xC1C1,0x9981,0x8161},
+  {0x0000,0xFDCA,0xF507,0xFC65,0xCC66,0xDBC4,0xD343,0xC303,0x9B44,0xD2C3,0xCA42,0x92A3,0x9242,0xC1C1,0x9981,0x8161},
+  {0x0000,0xDCCD,0xCC6C,0xC44B,0xBC2B,0xABAA,0xA369,0x9B69,0x9328,0x82E8,0x7AA7,0x7287,0x7287,0x7266,0x5A05,0x51C5},
+  {0x0000,0xC5F5,0x9CB0,0x6BF3,0x738C,0x5B50,0x5B2F,0x530F,0x52EE,0x4A8D,0x426C,0x426C,0x3A2A,0x31E9,0x31C9,0x31C9},
+  {0x0000,0xDCCD,0xCC6C,0xC44B,0xBC2B,0xABAA,0xA369,0x9B69,0x9328,0x82E8,0x7AA7,0x7287,0x7287,0x7266,0x5A05,0x51C5},
+  {0x0000,0xC5F5,0x9CB0,0x6BF3,0x738C,0x5B50,0x5B2F,0x530F,0x52EE,0x4A8D,0x426C,0x426C,0x3A2A,0x31E9,0x31C9,0x31C9},
+  {0x0000,0xDCCD,0xCC6C,0xC44B,0xBC2B,0xABAA,0xA369,0x9B69,0x9328,0x82E8,0x7AA7,0x7287,0x7287,0x7266,0x5A05,0x51C5},
+  {0x0000,0xC5F5,0x9CB0,0x6BF3,0x738C,0x5B50,0x5B2F,0x530F,0x52EE,0x4A8D,0x426C,0x426C,0x3A2A,0x31E9,0x31C9,0x31C9},
+  {0x0000,0xC65A,0xD46C,0xBC0B,0x6208,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0xD46C,0xBC0B,0x6208,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0xD46C,0xBC0B,0x6208,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0xD46C,0xBC0B,0x6208,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0xD46C,0xBC0B,0x6208,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0xD46C,0xBC0B,0x6208,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0xD46C,0xBC0B,0x6208,0x59C7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFB8,0xFF53,0xFEF1,0xFEAD,0xFE6B,0xFE07,0xFD87,0xFD06,0xFC66,0xF3E6,0xF325,0xEAC5,0xE285,0xDA24,0xC9C4},
+  {0x0000,0xF627,0xDD0E,0xCC4B,0x39E8,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDD0E,0xCC4B,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDD0E,0xCC4B,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDD0E,0xCC4B,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCC4B,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF627,0xAD97,0x8473,0x5B0D,0x59C7,0x39E8,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xAD97,0x8473,0x5B0D,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xAD97,0x8473,0x5B0D,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xAD97,0x8473,0x5B0D,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8473,0x5B0D,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0xF627,0x8C92,0x59C7,0x39E8,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0x8C92,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCFFE,0x4EBA,0xF627,0x1C72,0x59C7,0x39E8,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCFFE,0x4EBA,0x1C72,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCFFE,0x4EBA,0x1C72,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCFFE,0x4EBA,0x1C72,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x4EBA,0x1C72,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xF627,0xEDA5,0xB3C2,0x59C7,0x39E8,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xEDA5,0xB3C2,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xEDA5,0xB3C2,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xEDA5,0xB3C2,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEDA5,0xB3C2,0x7A68,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0xC9C6,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0xFE07,0x8C92,0x52AB,0x31A7,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF5D,0x7A68,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xAD97,0x8473,0xCC4B,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC409,0x9AE6,0x69E4,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC409,0x9AE6,0x69E4,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC409,0x9AE6,0x69E4,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC409,0x9AE6,0x69E4,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC639,0x8C93,0x632D,0x4A8B,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC639,0x8C93,0x632D,0x4A8B,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC639,0x8C93,0x632D,0x4A8B,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC639,0x8C93,0x632D,0x4A8B,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xEDA5,0xB3C2,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xEDA5,0xB3C2,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xEDA5,0xB3C2,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xEDA5,0xB3C2,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCFFE,0x4EBA,0x1C72,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCFFE,0x4EBA,0x1C72,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCFFE,0x4EBA,0x1C72,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCFFE,0x4EBA,0x1C72,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCC4B,0x59C7,0x18C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x52AB,0x31A7,0x18E4,0x1083,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x6AC9,0x49C5,0x2903,0x1083,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDFFF,0x5F5C,0x2536,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xEDA5,0xB3C2,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xEDA5,0xB3C2,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xBFFA,0x2EAD,0x1468,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFD36,0xE1A9,0x98A5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8C72,0x52AB,0x31A7,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xBDF8,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF5D,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF5B,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8C72,0x5AEC,0x39C8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC409,0x9AE6,0x69E4,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEE4B,0xBCC7,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xBE8C,0x6CC5,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8609,0x5CC6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFFF,0xE75D,0xCE7A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF77C,0xBDB5,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF77C,0xF627,0x2BCD,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xA598,0x9D16,0x8CB5,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCB4A,0xA287,0x79A4,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDD0E,0xCC4B,0x7A68,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7DF,0xCEBC,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF719,0xD614,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xBF94,0x6E8B,0x3CC7,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF96,0xF609,0xCC65,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0x5B0D,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0x3B9A,0x5B0D,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x8C92,0xFBC4,0x5B0D,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xF7BE,0xC65A,0x8C92,0x5B0D,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xC65A,0xAEDE,0xCC4B,0x7A68,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0x3B78,0x7A68,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDF1D,0xC9C6,0x5B0D,0x39E8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF5D,0x7A68,0xC9C6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF68F,0xC9C6,0x5B0D,0x39E8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0x8B29,0x2125,0x20E4,0x18E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0x8B29,0xC9C6,0x9164,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0x4BC5,0x8B29,0x3AE4,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0x8B29,0x7A65,0x59C4,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0x8B29,0x3297,0x29F1,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0x8B29,0x79F7,0x5971,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0x1CF4,0x8B29,0x13AF,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0xA535,0x7BF0,0x8B29,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0x8B29,0x52CB,0x4208,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0xF4F8,0xB3B2,0x8B29,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0x8687,0xCD8F,0x64E5,0x8B29,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xF687,0xCD8F,0xBCE5,0x8B29,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0x5DDE,0xCD8F,0x4456,0x8B29,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0x8B29,0xC2B9,0x9212,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xCD8F,0xF445,0xB344,0x8B29,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xEF9E,0xB5B6,0xCD8F,0x8B29,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFC4F,0x5D47,0x6A86,0xD1C7,0x9924,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF94,0xF627,0x5D47,0xC483,0x6A86,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEDCD,0xCC47,0x9B05,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF5B,0xFE9A,0xF515,0xD38F,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF5B,0xED8F,0xC409,0x8A86,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF44F,0xD207,0x9944,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xB3C9,0x8A86,0x59A4,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF9C,0xEF5B,0xF698,0xDD73,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF5B,0xF60F,0xDCA9,0xAB25,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF77C,0xEF5B,0xD2CB,0x99C7,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF5B,0xE697,0xAB48,0x7A25,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x9BCA,0x7AC6,0x5205,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8EB4,0x3C4B,0x1123,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDD0E,0xCC4B,0xA40B,0x7A68,0xD1C7,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xDCA9,0x4963,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF289,0x3C45,0x20E4,0x28C2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF445,0x5D47,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEE52,0xD54C,0xAC07,0x8B06,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFF31,0xDD4C,0xB3C7,0x7A85,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCED2,0xA5CC,0x6C47,0x4B45,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF611,0xCC47,0xE3E4,0x20E4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xCEBC,0x8D37,0x5BB1,0x20E4,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF5D4,0xE3CB,0xAA87,0x20E4,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0x79F7,0x48F1,0x20E4,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xF627,0x20E4,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEE96,0xC50F,0x8B49,0x20E4,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xED30,0xCB89,0x8A46,0x20E4,0x18C3,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFE07,0xF305,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x2C51,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF7BE,0xC65A,0x41A7,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF79E,0x1883,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xBD51,0x5A26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF39,0x5A26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xBD51,0x5A26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF39,0x5A26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x2C51,0x1AEC,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x3575,0x2C51,0x1ACB,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF627,0x4EFA,0x3D95,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x8C94,0x6BB0,0x4A6A,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x7BCF,0x6B6D,0x632C,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x7BCF,0x6B6D,0x632C,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x7BCF,0x6B6D,0x632C,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x7BCF,0x6B6D,0x632C,0x52AA,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xEF9E,0xF627,0xFD88,0xED07,0xC4E5,0xCC8D,0x2C51,0xA386,0x9AC9,0x6A45,0x3A0B,0x59C4,0x49C5,0x236E,0x22AC},
+  {0x0000,0xFD88,0xED07,0x2C51,0xC446,0xA385,0x59C4,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0x0904,0x08E3,0x08A3,0x08A2,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
 };
 const uint16_t blk_icon[B_COUNT] = {65535,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279};
 const uint16_t blk_item[B_COUNT] = {65535,1,2,3,4,5,6,7,8,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,65535,65535,29,30,31,32,33,34,35,35,35,35,39,39,39,39,43,43,43,43,47,47,47,47,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,109,109,109,109,114,115,116,117,118,119,321,321,321,321,321,321,321,321,128,128,130,130,337,337,134,135,136,137,138,139,140,141,142,322,144,145,146,1,148,149,150,151,152,152,152,155,155,155,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,183,183,183,187,187,187,187,191,192,193,194,195,196,196,198,198,200,200,202,202,204,204,206,206,208,209,338,338,65535,65535,214,215,216,217,218,219,374,374,374,374,375,375,375,375,65535,65535,65535,65535,65535,65535,65535,65535,65535,65535,115,136,115,136,115,136,337,337,337,337,337,337,337,251};
-const uint16_t blk_fuel[B_COUNT] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,300,300,300,300,300,300,100,100,100,100,100,100,0,0,0,0,0,0,0,0,0,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,0,0,0,0,0,300,0,0,0,0,0,0,0,0,300,300,0,0,300,0,0,0,0,0,0,0,0,0,0,0,0,300,0,0,0,0,0,0,0,0,0,0,0,300,0,0,0,0,0,0,0,300,0,0,300,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,300,300,300,300,300,300,300,300,0,0,0,16000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,150,150,150,150,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-const char *const blk_label[B_COUNT] = {0,T("Stone"),T("Granite"),T("Polished Granite"),T("Diorite"),T("Polished Diorite"),T("Andesite"),T("Polished Andesite"),T("Grass Block"),0,T("Dirt"),T("Coarse Dirt"),T("Podzol"),T("Cobblestone"),T("Oak Wood Planks"),T("Spruce Wood Planks"),T("Birch Wood Planks"),T("Jungle Wood Planks"),T("Acacia Wood Planks"),T("Dark Oak Wood Planks"),T("Oak Sapling"),T("Spruce Sapling"),T("Birch Sapling"),T("Jungle Sapling"),T("Acacia Sapling"),T("Dark Oak Sapling"),T("Bedrock"),0,0,T("Sand"),T("Red Sand"),T("Gravel"),T("Gold Ore"),T("Iron Ore"),T("Coal Ore"),T("Oak Wood"),0,0,0,T("Spruce Wood"),0,0,0,T("Birch Wood"),0,0,0,T("Jungle Wood"),0,0,0,T("Oak Leaves"),T("Spruce Leaves"),T("Birch Leaves"),T("Jungle Leaves"),T("Sponge"),T("Glass"),T("Lapis Lazuli Ore"),T("Lapis Lazuli Block"),T("Sandstone"),T("Chiseled Sandstone"),T("Smooth Sandstone"),T("Cobweb"),T("Shrub"),T("Grass"),T("Fern"),T("Dead Bush"),T("Wool"),T("Orange Wool"),T("Magenta Wool"),T("Light Blue Wool"),T("Yellow Wool"),T("Lime Wool"),T("Pink Wool"),T("Gray Wool"),T("Light Gray Wool"),T("Cyan Wool"),T("Purple Wool"),T("Blue Wool"),T("Brown Wool"),T("Green Wool"),T("Red Wool"),T("Black Wool"),T("Dandelion"),T("Poppy"),T("Blue Orchid"),T("Allium"),T("Azure Bluet"),T("Red Tulip"),T("Orange Tulip"),T("White Tulip"),T("Pink Tulip"),T("Oxeye Daisy"),T("Mushroom"),T("Mushroom"),T("Block of Gold"),T("Block of Iron"),T("Stone Slab"),T("Stone Slab"),T("Sandstone Slab"),T("Wooden Slab"),T("Cobblestone Slab"),T("Bricks Slab"),T("Stone Bricks Slab"),T("Bricks"),T("TNT"),T("Bookshelf"),T("Moss Stone"),T("Obsidian"),T("Torch"),0,0,0,0,T("Monster Spawner"),T("Oak Wood Stairs"),T("Chest"),T("Diamond Ore"),T("Block of Diamond"),T("Crafting Table"),0,0,0,0,0,0,0,0,T("Farmland"),0,T("Furnace"),0,0,0,T("Ladder"),T("Rail"),T("Cobblestone Stairs"),T("Redstone Ore"),T("Snow"),T("Ice"),T("Snow"),T("Cactus"),T("Clay"),0,T("Oak Fence"),T("Pumpkin"),T("Jack o'Lantern"),0,T("Stone Bricks"),T("Mossy Stone Bricks"),T("Cracked Stone Bricks"),T("Chiseled Stone Bricks"),T("Mushroom"),0,0,T("Mushroom"),0,0,T("Glass Pane"),T("Melon"),T("Vines"),T("Mycelium"),T("Lily Pad"),T("Emerald Ore"),T("Block of Emerald"),T("Cobblestone Wall"),T("Hardened Clay"),T("White Stained Clay"),T("Orange Stained Clay"),T("Magenta Stained Clay"),T("Light Blue Stained Clay"),T("Yellow Stained Clay"),T("Lime Stained Clay"),T("Pink Stained Clay"),T("Gray Stained Clay"),T("Light Gray Stained Clay"),T("Cyan Stained Clay"),T("Purple Stained Clay"),T("Blue Stained Clay"),T("Brown Stained Clay"),T("Green Stained Clay"),T("Red Stained Clay"),T("Black Stained Clay"),T("Acacia Wood"),0,0,0,T("Dark Oak Wood"),0,0,0,T("Acacia Leaves"),T("Dark Oak Leaves"),T("Hay Bale"),T("Block of Coal"),T("Packed Ice"),T("Sunflower"),0,T("Lilac"),0,T("Double Tallgrass"),0,T("Large Fern"),0,T("Rose Bush"),0,T("Peony"),0,T("Red Sandstone"),T("Glowstone"),0,0,0,0,T("Oak Wood Slab"),T("Spruce Wood Slab"),T("Birch Wood Slab"),T("Jungle Wood Slab"),T("Acacia Wood Slab"),T("Dark Oak Wood Slab"),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-const char *const it_label[N_ITEMS] = {T("Wooden Sword"),T("Wooden Shovel"),T("Wooden Pickaxe"),T("Wooden Axe"),T("Wooden Hoe"),T("Stone Sword"),T("Stone Shovel"),T("Stone Pickaxe"),T("Stone Axe"),T("Stone Hoe"),T("Iron Sword"),T("Iron Shovel"),T("Iron Pickaxe"),T("Iron Axe"),T("Iron Hoe"),T("Diamond Sword"),T("Diamond Shovel"),T("Diamond Pickaxe"),T("Diamond Axe"),T("Diamond Hoe"),T("Golden Sword"),T("Golden Shovel"),T("Golden Pickaxe"),T("Golden Axe"),T("Golden Hoe"),T("Shears"),T("Flint and Steel"),T("Bow"),T("Arrow"),T("Leather Cap"),T("Leather Tunic"),T("Leather Pants"),T("Leather Boots"),T("Chain Helmet"),T("Chain Chestplate"),T("Chain Leggings"),T("Chain Boots"),T("Iron Helmet"),T("Iron Chestplate"),T("Iron Leggings"),T("Iron Boots"),T("Golden Helmet"),T("Golden Chestplate"),T("Golden Leggings"),T("Golden Boots"),T("Diamond Helmet"),T("Diamond Chestplate"),T("Diamond Leggings"),T("Diamond Boots"),T("Stick"),T("Coal"),T("Charcoal"),T("Diamond"),T("Iron Ingot"),T("Gold Ingot"),T("Gold Nugget"),T("Emerald"),T("Redstone"),T("Flint"),T("Feather"),T("String"),T("Bone"),T("Gunpowder"),T("Leather"),T("Wheat"),T("Seeds"),T("Sugar Canes"),T("Sugar"),T("Paper"),T("Book"),T("Clay"),T("Brick"),T("Bowl"),T("Snowball"),T("Egg"),T("Slimeball"),T("Glowstone Dust"),T("Bucket"),T("Water Bucket"),T("Lava Bucket"),T("Milk"),T("Oak Door"),T("Bed"),T("Compass"),T("Fishing Rod"),T("Clock"),T("Ink Sac"),T("Rose Red"),T("Cactus Green"),T("Cocoa Beans"),T("Lapis Lazuli"),T("Purple Dye"),T("Cyan Dye"),T("Light Gray Dye"),T("Gray Dye"),T("Pink Dye"),T("Lime Dye"),T("Dandelion Yellow"),T("Light Blue Dye"),T("Magenta Dye"),T("Orange Dye"),T("Bone Meal"),T("Apple"),T("Golden Apple"),T("Bread"),T("Raw Porkchop"),T("Cooked Porkchop"),T("Raw Beef"),T("Steak"),T("Raw Chicken"),T("Cooked Chicken"),T("Raw Mutton"),T("Cooked Mutton"),T("Rotten Flesh"),T("Spider Eye"),T("Mushroom Stew"),T("Cookie"),T("Melon"),T("Carrot"),T("Potato"),T("Baked Potato"),T("Poisonous Potato"),T("Pumpkin Pie"),T("Raw Fish"),T("Raw Salmon"),T("Clownfish"),T("Pufferfish"),T("Cooked Fish"),T("Cooked Salmon")};
+const uint16_t blk_fuel[B_COUNT] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,260,260,260,260,260,260,60,60,60,60,60,60,0,0,0,0,0,0,0,0,0,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,260,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,0,0,0,0,0,260,0,0,0,0,0,0,0,0,260,260,0,0,260,0,0,0,0,0,0,0,0,0,0,0,0,260,0,0,0,0,0,0,0,0,0,0,0,260,0,0,0,0,0,0,0,260,0,0,260,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,260,260,260,260,260,260,260,260,0,0,0,12600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,130,130,130,130,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+const char *const blk_label[B_COUNT] = {0,T("Stone"),T("Granite"),T("Polished Granite"),T("Diorite"),T("Polished Diorite"),T("Andesite"),T("Polished Andesite"),T("Grassy Dirt"),0,T("Dirt"),T("Coarse Dirt"),T("Podzol"),T("Cobblestone"),T("Oak Wood Planks"),T("Spruce Wood Planks"),T("Birch Wood Planks"),T("Jungle Wood Planks"),T("Acacia Wood Planks"),T("Dark Oak Wood Planks"),T("Oak Sapling"),T("Spruce Sapling"),T("Birch Sapling"),T("Jungle Sapling"),T("Acacia Sapling"),T("Dark Oak Sapling"),T("Bedrock"),0,0,T("Sand"),T("Red Sand"),T("Gravel"),T("Gold Ore"),T("Iron Ore"),T("Coal Ore"),T("Oak Wood"),0,0,0,T("Spruce Wood"),0,0,0,T("Birch Wood"),0,0,0,T("Jungle Wood"),0,0,0,T("Oak Leaves"),T("Spruce Leaves"),T("Birch Leaves"),T("Jungle Leaves"),T("Sponge"),T("Glass"),T("Lapis Lazuli Ore"),T("Lapis Lazuli Block"),T("Sandstone"),T("Chiseled Sandstone"),T("Smooth Sandstone"),T("Cobweb"),T("Shrub"),T("Grass Tuft"),T("Fern"),T("Dead Bush"),T("Wool"),T("Orange Wool"),T("Magenta Wool"),T("Light Blue Wool"),T("Yellow Wool"),T("Lime Wool"),T("Pink Wool"),T("Gray Wool"),T("Light Gray Wool"),T("Cyan Wool"),T("Purple Wool"),T("Blue Wool"),T("Brown Wool"),T("Green Wool"),T("Red Wool"),T("Black Wool"),T("Dandelion"),T("Poppy"),T("Blue Orchid"),T("Allium"),T("Azure Bluet"),T("Red Tulip"),T("Orange Tulip"),T("White Tulip"),T("Pink Tulip"),T("Oxeye Daisy"),T("Mushroom"),T("Mushroom"),T("Block of Gold"),T("Block of Iron"),T("Stone Slab"),T("Stone Slab"),T("Sandstone Slab"),T("Wooden Slab"),T("Cobblestone Slab"),T("Bricks Slab"),T("Stone Bricks Slab"),T("Bricks"),T("TNT"),T("Bookshelf"),T("Mossy Cobblestone"),T("Obsidian"),T("Torch"),0,0,0,0,T("Monster Cage"),T("Oak Wood Stairs"),T("Chest"),T("Diamond Ore"),T("Block of Diamond"),T("Crafting Table"),0,0,0,0,0,0,0,0,T("Farmland"),0,T("Furnace"),0,0,0,T("Ladder"),T("Rail"),T("Cobblestone Stairs"),T("Ruby Ore"),T("Snow"),T("Ice"),T("Snow"),T("Cactus"),T("Clay"),0,T("Oak Fence"),T("Pumpkin"),T("Jack o'Lantern"),0,T("Stone Bricks"),T("Mossy Stone Bricks"),T("Cracked Stone Bricks"),T("Chiseled Stone Bricks"),T("Mushroom"),0,0,T("Mushroom"),0,0,T("Glass Pane"),T("Melon"),T("Vines"),T("Mycelium"),T("Lily Pad"),T("Emerald Ore"),T("Block of Emerald"),T("Cobblestone Wall"),T("Baked Clay"),T("White Baked Clay"),T("Orange Baked Clay"),T("Magenta Baked Clay"),T("Light Blue Baked Clay"),T("Yellow Baked Clay"),T("Lime Baked Clay"),T("Pink Baked Clay"),T("Gray Baked Clay"),T("Light Gray Baked Clay"),T("Cyan Baked Clay"),T("Purple Baked Clay"),T("Blue Baked Clay"),T("Brown Baked Clay"),T("Green Baked Clay"),T("Red Baked Clay"),T("Black Baked Clay"),T("Acacia Wood"),0,0,0,T("Dark Oak Wood"),0,0,0,T("Acacia Leaves"),T("Dark Oak Leaves"),T("Hay Bale"),T("Block of Coal"),T("Packed Ice"),T("Sunflower"),0,T("Lilac"),0,T("Tall Grass"),0,T("Large Fern"),0,T("Rose Bush"),0,T("Peony"),0,T("Red Sandstone"),T("Glow Crystal"),0,0,0,0,T("Oak Wood Slab"),T("Spruce Wood Slab"),T("Birch Wood Slab"),T("Jungle Wood Slab"),T("Acacia Wood Slab"),T("Dark Oak Wood Slab"),0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+const char *const it_label[N_ITEMS] = {T("Wooden Sword"),T("Wooden Shovel"),T("Wooden Pickaxe"),T("Wooden Axe"),T("Wooden Hoe"),T("Stone Sword"),T("Stone Shovel"),T("Stone Pickaxe"),T("Stone Axe"),T("Stone Hoe"),T("Iron Sword"),T("Iron Shovel"),T("Iron Pickaxe"),T("Iron Axe"),T("Iron Hoe"),T("Diamond Sword"),T("Diamond Shovel"),T("Diamond Pickaxe"),T("Diamond Axe"),T("Diamond Hoe"),T("Golden Sword"),T("Golden Shovel"),T("Golden Pickaxe"),T("Golden Axe"),T("Golden Hoe"),T("Shears"),T("Flint and Steel"),T("Bow"),T("Arrow"),T("Leather Cap"),T("Leather Tunic"),T("Leather Pants"),T("Leather Boots"),T("Chain Helmet"),T("Chain Chestplate"),T("Chain Leggings"),T("Chain Boots"),T("Iron Helmet"),T("Iron Chestplate"),T("Iron Leggings"),T("Iron Boots"),T("Golden Helmet"),T("Golden Chestplate"),T("Golden Leggings"),T("Golden Boots"),T("Diamond Helmet"),T("Diamond Chestplate"),T("Diamond Leggings"),T("Diamond Boots"),T("Stick"),T("Coal"),T("Charcoal"),T("Diamond"),T("Iron Ingot"),T("Gold Ingot"),T("Gold Nugget"),T("Emerald"),T("Ruby Dust"),T("Flint"),T("Feather"),T("String"),T("Bone"),T("Gunpowder"),T("Leather"),T("Wheat"),T("Seeds"),T("Sugar Canes"),T("Sugar"),T("Paper"),T("Book"),T("Clay"),T("Brick"),T("Bowl"),T("Snowball"),T("Egg"),T("Slime Ball"),T("Glow Dust"),T("Bucket"),T("Water Bucket"),T("Lava Bucket"),T("Milk"),T("Oak Door"),T("Bed"),T("Compass"),T("Fishing Rod"),T("Clock"),T("Black Dye"),T("Red Dye"),T("Green Dye"),T("Cocoa Beans"),T("Lapis Lazuli"),T("Purple Dye"),T("Cyan Dye"),T("Light Gray Dye"),T("Gray Dye"),T("Pink Dye"),T("Lime Dye"),T("Yellow Dye"),T("Light Blue Dye"),T("Magenta Dye"),T("Orange Dye"),T("Bone Meal"),T("Apple"),T("Golden Apple"),T("Bread"),T("Raw Ham"),T("Roast Ham"),T("Raw Ox Meat"),T("Ox Steak"),T("Raw Drumstick"),T("Roast Drumstick"),T("Raw Shank"),T("Roast Shank"),T("Mud Cake"),T("Beetle Eye"),T("Mushroom Stew"),T("Cookie"),T("Melon"),T("Carrot"),T("Potato"),T("Baked Potato"),T("Poisonous Potato"),T("Pumpkin Pie"),T("Raw Fish"),T("Raw Salmon"),T("Violet Fish"),T("Pufferfish"),T("Cooked Fish"),T("Cooked Salmon")};
 const uint16_t it_icon[N_ITEMS] = {280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,385,386,387,388,389,390,391,392,393,394,395,396,397,398,399,400,401,402,403,404,405,406,407,408};
 const uint8_t it_kind[N_ITEMS] = {6,4,2,3,5,6,4,2,3,5,6,4,2,3,5,6,4,2,3,5,6,4,2,3,5,7,19,20,0,8,9,10,11,8,9,10,11,8,9,10,11,8,9,10,11,8,9,10,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,0,0,0,0,0,0,22,23,0,0,14,15,16,17,18,18,0,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,21,12,12,12,12,12,12,12,12,12,12,12,12,12,13,12,12,12,12,12,12,12,12,12,12,12,12,12};
-const uint8_t it_stack[N_ITEMS] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,16,16,64,64,16,1,1,1,64,1,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,1,64,64,64,64,64,64,64,64,64,64,64,64,64};
-const uint16_t it_dur[N_ITEMS] = {59,59,59,59,59,131,131,131,131,131,250,250,250,250,250,1561,1561,1561,1561,1561,32,32,32,32,32,238,64,384,0,55,80,75,65,165,240,225,195,165,240,225,195,77,112,105,91,363,528,495,429,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+const uint8_t it_stack[N_ITEMS] = {1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,20,12,50,50,10,1,1,1,50,1,50,1,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,50,1,50,50,50,50,50,50,50,50,50,50,50,50,50};
+const uint16_t it_dur[N_ITEMS] = {48,48,48,48,48,110,110,110,110,110,300,300,300,300,300,1200,1200,1200,1200,1200,60,60,60,60,60,200,50,320,0,40,60,52,44,120,180,156,132,140,210,182,154,80,120,104,88,280,420,364,308,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
 const uint8_t it_tier[N_ITEMS] = {0,0,0,0,0,1,1,1,1,1,2,2,2,2,2,3,3,3,3,3,4,4,4,4,4,0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-const uint8_t it_a[N_ITEMS] = {5,2,3,4,1,6,3,4,5,1,7,4,5,6,1,8,5,6,7,1,5,2,3,4,1,0,0,0,0,1,3,2,1,2,5,4,1,2,6,5,2,2,5,3,1,3,8,6,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,4,5,3,8,3,8,2,6,2,6,4,2,6,2,2,3,1,5,2,8,2,2,1,1,5,6};
-const uint8_t it_b[N_ITEMS] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,6,3,8,3,8,3,6,3,8,1,8,6,1,3,6,3,6,3,3,1,1,1,1,6,8};
+const uint8_t it_a[N_ITEMS] = {4,2,2,3,1,5,3,3,4,1,6,4,4,5,1,7,5,5,6,1,5,3,3,4,1,0,0,0,0,1,2,2,1,2,4,3,1,2,5,4,2,2,4,3,1,3,7,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,6,6,2,7,2,7,2,5,2,5,3,1,7,2,2,3,2,6,1,7,2,3,1,1,5,6};
+const uint8_t it_b[N_ITEMS] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,10,5,2,7,2,9,2,6,2,7,1,6,6,2,2,5,2,5,2,4,2,2,2,1,5,7};
 const uint8_t it_place[N_ITEMS] = {255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,120,143,255,255,255,255,255,255,255,255,255,255,255,255,255,255,132,210,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,220,224,255,255,255,255,255,255,255,255,255};
-const uint16_t it_fuel[N_ITEMS] = {200,200,200,200,200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,1600,1600,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-const Recipe recipes[187] = {{258,1,3,3,{61440,61440,61440,0,305,0,0,305,0}},{257,1,1,3,{61440,305,305,0,0,0,0,0,0}},{259,1,2,3,{61440,61440,61440,305,0,305,0,0,0}},{260,1,2,3,{61440,61440,0,305,0,305,0,0,0}},{256,1,1,3,{61440,61440,305,0,0,0,0,0,0}},{263,1,3,3,{13,13,13,0,305,0,0,305,0}},{262,1,1,3,{13,305,305,0,0,0,0,0,0}},{264,1,2,3,{13,13,13,305,0,305,0,0,0}},{265,1,2,3,{13,13,0,305,0,305,0,0,0}},{261,1,1,3,{13,13,305,0,0,0,0,0,0}},{268,1,3,3,{309,309,309,0,305,0,0,305,0}},{267,1,1,3,{309,305,305,0,0,0,0,0,0}},{269,1,2,3,{309,309,309,305,0,305,0,0,0}},{270,1,2,3,{309,309,0,305,0,305,0,0,0}},{266,1,1,3,{309,309,305,0,0,0,0,0,0}},{273,1,3,3,{308,308,308,0,305,0,0,305,0}},{272,1,1,3,{308,305,305,0,0,0,0,0,0}},{274,1,2,3,{308,308,308,305,0,305,0,0,0}},{275,1,2,3,{308,308,0,305,0,305,0,0,0}},{271,1,1,3,{308,308,305,0,0,0,0,0,0}},{278,1,3,3,{310,310,310,0,305,0,0,305,0}},{277,1,1,3,{310,305,305,0,0,0,0,0,0}},{279,1,2,3,{310,310,310,305,0,305,0,0,0}},{280,1,2,3,{310,310,0,305,0,305,0,0,0}},{276,1,1,3,{310,310,305,0,0,0,0,0,0}},{281,1,2,2,{0,309,309,0,0,0,0,0,0}},{283,1,3,3,{0,305,316,305,0,316,0,305,316}},{340,1,3,3,{0,0,305,0,305,316,305,0,316}},{284,4,1,3,{314,305,315,0,0,0,0,0,0}},{285,1,3,2,{319,319,319,319,0,319,0,0,0}},{286,1,3,3,{319,0,319,319,319,319,319,319,319}},{287,1,3,3,{319,319,319,319,0,319,319,0,319}},{288,1,3,2,{319,0,319,319,0,319,0,0,0}},{293,1,3,2,{309,309,309,309,0,309,0,0,0}},{294,1,3,3,{309,0,309,309,309,309,309,309,309}},{295,1,3,3,{309,309,309,309,0,309,309,0,309}},{296,1,3,2,{309,0,309,309,0,309,0,0,0}},{301,1,3,2,{308,308,308,308,0,308,0,0,0}},{302,1,3,3,{308,0,308,308,308,308,308,308,308}},{303,1,3,3,{308,308,308,308,0,308,308,0,308}},{304,1,3,2,{308,0,308,308,0,308,0,0,0}},{297,1,3,2,{310,310,310,310,0,310,0,0,0}},{298,1,3,3,{310,0,310,310,310,310,310,310,310}},{299,1,3,3,{310,310,310,310,0,310,310,0,310}},{300,1,3,2,{310,0,310,310,0,310,0,0,0}},{95,1,3,3,{310,310,310,310,310,310,310,310,310}},{310,9,1,1,{95,0,0,0,0,0,0,0,0}},{96,1,3,3,{309,309,309,309,309,309,309,309,309}},{309,9,1,1,{96,0,0,0,0,0,0,0,0}},{118,1,3,3,{308,308,308,308,308,308,308,308,308}},{308,9,1,1,{118,0,0,0,0,0,0,0,0}},{164,1,3,3,{312,312,312,312,312,312,312,312,312}},{312,9,1,1,{164,0,0,0,0,0,0,0,0}},{58,1,3,3,{346,346,346,346,346,346,346,346,346}},{346,9,1,1,{58,0,0,0,0,0,0,0,0}},{194,1,3,3,{306,306,306,306,306,306,306,306,306}},{306,9,1,1,{194,0,0,0,0,0,0,0,0}},{193,1,3,3,{320,320,320,320,320,320,320,320,320}},{320,9,1,1,{193,0,0,0,0,0,0,0,0}},{310,1,3,3,{311,311,311,311,311,311,311,311,311}},{311,9,1,1,{310,0,0,0,0,0,0,0,0}},{371,1,0,3,{93,94,328,0,0,0,0,0,0}},{372,8,3,1,{320,345,320,0,0,0,0,0,0}},{159,1,3,3,{373,373,373,373,373,373,373,373,373}},{378,1,0,3,{145,323,330,0,0,0,0,0,0}},{116,1,3,3,{61440,61440,61440,61440,0,61440,61440,61440,61440}},{130,1,3,3,{13,13,13,13,0,13,13,13,13}},{119,1,2,2,{61440,61440,61440,61440,0,0,0,0,0}},{59,1,2,2,{29,29,29,29,0,0,0,0,0}},{208,1,2,2,{30,30,30,30,0,0,0,0,0}},{61,4,2,2,{59,59,59,59,0,0,0,0,0}},{60,1,1,2,{99,99,0,0,0,0,0,0,0}},{148,4,2,2,{1,1,1,1,0,0,0,0,0}},{151,1,1,2,{103,103,0,0,0,0,0,0,0}},{149,1,0,2,{148,160,0,0,0,0,0,0,0}},{107,1,0,2,{13,160,0,0,0,0,0,0,0}},{158,16,3,2,{56,56,56,56,56,56,0,0,0}},{11,4,2,2,{10,31,31,10,0,0,0,0,0}},{5,4,2,2,{4,4,4,4,0,0,0,0,0}},{3,4,2,2,{2,2,2,2,0,0,0,0,0}},{7,4,2,2,{6,6,6,6,0,0,0,0,0}},{6,2,0,2,{4,13,0,0,0,0,0,0,0}},{82,1,0,2,{342,67,0,0,0,0,0,0,0}},{182,8,3,3,{166,166,166,166,342,166,166,166,166}},{81,1,0,2,{343,67,0,0,0,0,0,0,0}},{181,8,3,3,{166,166,166,166,343,166,166,166,166}},{80,1,0,2,{344,67,0,0,0,0,0,0,0}},{180,8,3,3,{166,166,166,166,344,166,166,166,166}},{79,1,0,2,{345,67,0,0,0,0,0,0,0}},{179,8,3,3,{166,166,166,166,345,166,166,166,166}},{78,1,0,2,{346,67,0,0,0,0,0,0,0}},{178,8,3,3,{166,166,166,166,346,166,166,166,166}},{77,1,0,2,{347,67,0,0,0,0,0,0,0}},{177,8,3,3,{166,166,166,166,347,166,166,166,166}},{76,1,0,2,{348,67,0,0,0,0,0,0,0}},{176,8,3,3,{166,166,166,166,348,166,166,166,166}},{75,1,0,2,{349,67,0,0,0,0,0,0,0}},{175,8,3,3,{166,166,166,166,349,166,166,166,166}},{74,1,0,2,{350,67,0,0,0,0,0,0,0}},{174,8,3,3,{166,166,166,166,350,166,166,166,166}},{73,1,0,2,{351,67,0,0,0,0,0,0,0}},{173,8,3,3,{166,166,166,166,351,166,166,166,166}},{72,1,0,2,{352,67,0,0,0,0,0,0,0}},{172,8,3,3,{166,166,166,166,352,166,166,166,166}},{71,1,0,2,{353,67,0,0,0,0,0,0,0}},{171,8,3,3,{166,166,166,166,353,166,166,166,166}},{70,1,0,2,{354,67,0,0,0,0,0,0,0}},{170,8,3,3,{166,166,166,166,354,166,166,166,166}},{69,1,0,2,{355,67,0,0,0,0,0,0,0}},{169,8,3,3,{166,166,166,166,355,166,166,166,166}},{68,1,0,2,{356,67,0,0,0,0,0,0,0}},{168,8,3,3,{166,166,166,166,356,166,166,166,166}},{167,8,3,3,{166,166,166,166,357,166,166,166,166}},{353,1,0,1,{83,0,0,0,0,0,0,0,0}},{343,1,0,1,{84,0,0,0,0,0,0,0,0}},{357,3,0,1,{317,0,0,0,0,0,0,0,0}},{351,2,0,2,{343,357,0,0,0,0,0,0,0}},{356,2,0,2,{343,353,0,0,0,0,0,0,0}},{352,2,0,2,{344,357,0,0,0,0,0,0,0}},{350,2,0,2,{342,357,0,0,0,0,0,0,0}},{349,2,0,2,{350,357,0,0,0,0,0,0,0}},{349,3,0,3,{342,357,357,0,0,0,0,0,0}},{354,2,0,2,{346,357,0,0,0,0,0,0,0}},{348,2,0,2,{346,344,0,0,0,0,0,0,0}},{347,2,0,2,{346,343,0,0,0,0,0,0,0}},{355,2,0,2,{347,351,0,0,0,0,0,0,0}},{355,3,0,3,{346,343,351,0,0,0,0,0,0}},{355,4,0,4,{346,343,343,357,0,0,0,0,0}},{354,1,0,1,{85,0,0,0,0,0,0,0,0}},{355,1,0,1,{86,0,0,0,0,0,0,0,0}},{349,1,0,1,{87,0,0,0,0,0,0,0,0}},{343,1,0,1,{88,0,0,0,0,0,0,0,0}},{356,1,0,1,{89,0,0,0,0,0,0,0,0}},{349,1,0,1,{90,0,0,0,0,0,0,0,0}},{351,1,0,1,{91,0,0,0,0,0,0,0,0}},{349,1,0,1,{92,0,0,0,0,0,0,0,0}},{353,2,0,1,{196,0,0,0,0,0,0,0,0}},{355,2,0,1,{198,0,0,0,0,0,0,0,0}},{343,2,0,1,{204,0,0,0,0,0,0,0,0}},{351,2,0,1,{206,0,0,0,0,0,0,0,0}},{324,3,3,1,{322,322,322,0,0,0,0,0,0}},{325,1,0,4,{324,324,324,319,0,0,0,0,0}},{144,3,3,2,{14,305,14,14,305,14,0,0,0}},{165,6,3,2,{13,13,13,13,13,13,0,0,0}},{106,1,3,3,{61440,61440,61440,325,325,325,61440,61440,61440}},{140,1,2,2,{329,329,329,329,0,0,0,0,0}},{138,6,3,1,{140,140,140,0,0,0,0,0,0}},{142,1,2,2,{326,326,326,326,0,0,0,0,0}},{104,1,2,2,{327,327,327,327,0,0,0,0,0}},{209,1,2,2,{332,332,332,332,0,0,0,0,0}},{67,1,2,2,{316,316,316,316,0,0,0,0,0}},{105,1,3,3,{318,29,318,29,318,29,318,29,318}},{101,6,3,1,{13,13,13,0,0,0,0,0,0}},{98,6,3,1,{1,1,1,0,0,0,0,0,0}},{99,6,3,1,{59,59,59,0,0,0,0,0,0}},{102,6,3,1,{104,104,104,0,0,0,0,0,0}},{103,6,3,1,{148,148,148,0,0,0,0,0,0}},{214,6,3,1,{14,14,14,0,0,0,0,0,0}},{14,4,1,1,{35,0,0,0,0,0,0,0,0}},{215,6,3,1,{15,15,15,0,0,0,0,0,0}},{15,4,1,1,{39,0,0,0,0,0,0,0,0}},{216,6,3,1,{16,16,16,0,0,0,0,0,0}},{16,4,1,1,{43,0,0,0,0,0,0,0,0}},{217,6,3,1,{17,17,17,0,0,0,0,0,0}},{17,4,1,1,{47,0,0,0,0,0,0,0,0}},{218,6,3,1,{18,18,18,0,0,0,0,0,0}},{18,4,1,1,{183,0,0,0,0,0,0,0,0}},{219,6,3,1,{19,19,19,0,0,0,0,0,0}},{19,4,1,1,{187,0,0,0,0,0,0,0,0}},{134,3,3,3,{305,0,305,305,305,305,305,0,305}},{337,3,2,3,{14,14,14,14,14,14,0,0,0}},{323,1,1,1,{322,0,0,0,0,0,0,0,0}},{305,4,1,2,{61440,61440,0,0,0,0,0,0,0}},{109,4,1,2,{306,305,0,0,0,0,0,0,0}},{109,4,1,2,{307,305,0,0,0,0,0,0,0}},{328,4,3,2,{61440,0,61440,0,61440,0,0,0,0}},{135,16,3,3,{309,0,309,309,305,309,309,0,309}},{146,1,1,2,{145,109,0,0,0,0,0,0,0}},{333,1,3,2,{309,0,309,0,309,0,0,0,0}},{282,1,0,2,{309,314,0,0,0,0,0,0,0}},{360,1,3,1,{320,320,320,0,0,0,0,0,0}},{115,4,3,3,{14,0,0,14,14,0,14,14,14}},{136,4,3,3,{13,0,0,13,13,0,13,13,13}},{359,1,3,3,{310,310,310,310,358,310,310,310,310}},{341,1,3,3,{0,310,0,310,313,310,0,310,0}},{339,1,3,3,{0,309,0,309,313,309,0,309,0}},{338,1,3,2,{61441,61441,61441,61440,61440,61440,0,0,0}}};
+const uint16_t it_fuel[N_ITEMS] = {180,180,180,180,180,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,1400,1200,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15000,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
+const Recipe recipes[185] = {{258,1,3,3,{0,61440,0,61440,305,61440,0,305,0}},{257,1,2,2,{0,61440,305,0,0,0,0,0,0}},{259,1,3,3,{61440,61440,0,61440,305,0,0,0,305}},{260,1,3,1,{61440,61440,305,0,0,0,0,0,0}},{256,1,3,3,{0,0,61440,0,61440,0,305,0,0}},{263,1,3,3,{0,13,0,13,305,13,0,305,0}},{262,1,2,2,{0,13,305,0,0,0,0,0,0}},{264,1,3,3,{13,13,0,13,305,0,0,0,305}},{265,1,3,1,{13,13,305,0,0,0,0,0,0}},{261,1,3,3,{0,0,13,0,13,0,305,0,0}},{268,1,3,3,{0,309,0,309,305,309,0,305,0}},{267,1,2,2,{0,309,305,0,0,0,0,0,0}},{269,1,3,3,{309,309,0,309,305,0,0,0,305}},{270,1,3,1,{309,309,305,0,0,0,0,0,0}},{266,1,3,3,{0,0,309,0,309,0,305,0,0}},{273,1,3,3,{0,308,0,308,305,308,0,305,0}},{272,1,2,2,{0,308,305,0,0,0,0,0,0}},{274,1,3,3,{308,308,0,308,305,0,0,0,305}},{275,1,3,1,{308,308,305,0,0,0,0,0,0}},{271,1,3,3,{0,0,308,0,308,0,305,0,0}},{278,1,3,3,{0,310,0,310,305,310,0,305,0}},{277,1,2,2,{0,310,305,0,0,0,0,0,0}},{279,1,3,3,{310,310,0,310,305,0,0,0,305}},{280,1,3,1,{310,310,305,0,0,0,0,0,0}},{276,1,3,3,{0,0,310,0,310,0,305,0,0}},{281,1,2,1,{309,309,0,0,0,0,0,0,0}},{283,1,2,3,{305,316,305,316,305,316,0,0,0}},{340,1,3,3,{305,0,0,0,305,0,0,0,316}},{284,3,0,3,{314,305,315,0,0,0,0,0,0}},{285,1,3,2,{0,319,0,319,319,319,0,0,0}},{286,1,3,3,{319,0,319,319,319,319,0,319,0}},{287,1,3,3,{319,0,319,319,0,319,319,0,319}},{288,1,3,1,{319,0,319,0,0,0,0,0,0}},{293,1,3,2,{0,309,0,309,309,309,0,0,0}},{294,1,3,3,{309,0,309,309,309,309,0,309,0}},{295,1,3,3,{309,0,309,309,0,309,309,0,309}},{296,1,3,1,{309,0,309,0,0,0,0,0,0}},{301,1,3,2,{0,308,0,308,308,308,0,0,0}},{302,1,3,3,{308,0,308,308,308,308,0,308,0}},{303,1,3,3,{308,0,308,308,0,308,308,0,308}},{304,1,3,1,{308,0,308,0,0,0,0,0,0}},{297,1,3,2,{0,310,0,310,310,310,0,0,0}},{298,1,3,3,{310,0,310,310,310,310,0,310,0}},{299,1,3,3,{310,0,310,310,0,310,310,0,310}},{300,1,3,1,{310,0,310,0,0,0,0,0,0}},{95,1,2,2,{310,310,310,310,0,0,0,0,0}},{310,4,0,1,{95,0,0,0,0,0,0,0,0}},{96,1,2,2,{309,309,309,309,0,0,0,0,0}},{309,4,0,1,{96,0,0,0,0,0,0,0,0}},{118,1,2,2,{308,308,308,308,0,0,0,0,0}},{308,4,0,1,{118,0,0,0,0,0,0,0,0}},{164,1,2,2,{312,312,312,312,0,0,0,0,0}},{312,4,0,1,{164,0,0,0,0,0,0,0,0}},{58,1,2,2,{346,346,346,346,0,0,0,0,0}},{346,4,0,1,{58,0,0,0,0,0,0,0,0}},{194,1,2,2,{306,306,306,306,0,0,0,0,0}},{306,4,0,1,{194,0,0,0,0,0,0,0,0}},{193,1,2,2,{320,320,320,320,0,0,0,0,0}},{320,4,0,1,{193,0,0,0,0,0,0,0,0}},{310,1,0,5,{311,311,311,311,311,0,0,0,0}},{311,5,0,1,{310,0,0,0,0,0,0,0,0}},{371,1,0,2,{93,328,0,0,0,0,0,0,0}},{371,1,0,3,{94,375,328,0,0,0,0,0,0}},{372,4,0,3,{320,345,323,0,0,0,0,0,0}},{159,1,2,2,{373,373,373,373,0,0,0,0,0}},{378,1,0,3,{145,330,320,0,0,0,0,0,0}},{116,1,2,2,{61440,61440,61440,305,0,0,0,0,0}},{130,1,3,2,{13,13,13,13,0,13,0,0,0}},{119,1,2,2,{61440,305,305,61440,0,0,0,0,0}},{59,1,0,3,{29,29,29,0,0,0,0,0,0}},{208,1,0,3,{30,30,30,0,0,0,0,0,0}},{61,1,0,1,{59,0,0,0,0,0,0,0,0}},{60,2,0,2,{61,59,0,0,0,0,0,0,0}},{148,3,3,1,{1,1,1,0,0,0,0,0,0}},{151,2,0,2,{148,1,0,0,0,0,0,0,0}},{149,1,0,2,{148,64,0,0,0,0,0,0,0}},{107,1,0,2,{13,64,0,0,0,0,0,0,0}},{158,8,3,1,{56,56,56,0,0,0,0,0,0}},{11,2,0,2,{10,31,0,0,0,0,0,0,0}},{5,2,0,2,{4,4,0,0,0,0,0,0,0}},{3,2,0,2,{2,2,0,0,0,0,0,0,0}},{7,2,0,2,{6,6,0,0,0,0,0,0,0}},{6,2,0,2,{4,31,0,0,0,0,0,0,0}},{82,2,0,3,{342,67,67,0,0,0,0,0,0}},{182,3,0,4,{166,166,166,342,0,0,0,0,0}},{81,2,0,3,{343,67,67,0,0,0,0,0,0}},{181,3,0,4,{166,166,166,343,0,0,0,0,0}},{80,2,0,3,{344,67,67,0,0,0,0,0,0}},{180,3,0,4,{166,166,166,344,0,0,0,0,0}},{79,2,0,3,{345,67,67,0,0,0,0,0,0}},{179,3,0,4,{166,166,166,345,0,0,0,0,0}},{78,2,0,3,{346,67,67,0,0,0,0,0,0}},{178,3,0,4,{166,166,166,346,0,0,0,0,0}},{77,2,0,3,{347,67,67,0,0,0,0,0,0}},{177,3,0,4,{166,166,166,347,0,0,0,0,0}},{76,2,0,3,{348,67,67,0,0,0,0,0,0}},{176,3,0,4,{166,166,166,348,0,0,0,0,0}},{75,2,0,3,{349,67,67,0,0,0,0,0,0}},{175,3,0,4,{166,166,166,349,0,0,0,0,0}},{74,2,0,3,{350,67,67,0,0,0,0,0,0}},{174,3,0,4,{166,166,166,350,0,0,0,0,0}},{73,2,0,3,{351,67,67,0,0,0,0,0,0}},{173,3,0,4,{166,166,166,351,0,0,0,0,0}},{72,2,0,3,{352,67,67,0,0,0,0,0,0}},{172,3,0,4,{166,166,166,352,0,0,0,0,0}},{71,2,0,3,{353,67,67,0,0,0,0,0,0}},{171,3,0,4,{166,166,166,353,0,0,0,0,0}},{70,2,0,3,{354,67,67,0,0,0,0,0,0}},{170,3,0,4,{166,166,166,354,0,0,0,0,0}},{69,2,0,3,{355,67,67,0,0,0,0,0,0}},{169,3,0,4,{166,166,166,355,0,0,0,0,0}},{68,2,0,3,{356,67,67,0,0,0,0,0,0}},{168,3,0,4,{166,166,166,356,0,0,0,0,0}},{167,3,0,4,{166,166,166,357,0,0,0,0,0}},{353,2,0,1,{83,0,0,0,0,0,0,0,0}},{343,2,0,1,{84,0,0,0,0,0,0,0,0}},{354,2,0,1,{85,0,0,0,0,0,0,0,0}},{355,2,0,1,{86,0,0,0,0,0,0,0,0}},{349,2,0,1,{87,0,0,0,0,0,0,0,0}},{343,2,0,1,{88,0,0,0,0,0,0,0,0}},{356,2,0,1,{89,0,0,0,0,0,0,0,0}},{349,2,0,1,{90,0,0,0,0,0,0,0,0}},{351,2,0,1,{91,0,0,0,0,0,0,0,0}},{349,2,0,1,{92,0,0,0,0,0,0,0,0}},{353,3,0,1,{196,0,0,0,0,0,0,0,0}},{355,3,0,1,{198,0,0,0,0,0,0,0,0}},{343,3,0,1,{204,0,0,0,0,0,0,0,0}},{351,3,0,1,{206,0,0,0,0,0,0,0,0}},{357,2,0,1,{317,0,0,0,0,0,0,0,0}},{351,3,0,2,{343,357,0,0,0,0,0,0,0}},{356,3,0,2,{343,353,0,0,0,0,0,0,0}},{352,3,0,2,{344,357,0,0,0,0,0,0,0}},{350,3,0,2,{342,357,0,0,0,0,0,0,0}},{349,3,0,2,{350,357,0,0,0,0,0,0,0}},{354,3,0,2,{346,357,0,0,0,0,0,0,0}},{348,3,0,2,{346,344,0,0,0,0,0,0,0}},{347,3,0,2,{346,343,0,0,0,0,0,0,0}},{355,3,0,2,{347,351,0,0,0,0,0,0,0}},{324,2,2,1,{322,322,0,0,0,0,0,0,0}},{325,1,0,3,{324,324,319,0,0,0,0,0,0}},{144,3,3,2,{305,0,305,14,14,14,0,0,0}},{165,4,3,2,{13,0,13,13,13,13,0,0,0}},{106,1,3,2,{61440,325,61440,61440,325,61440,0,0,0}},{140,1,0,3,{329,329,329,0,0,0,0,0,0}},{138,4,0,1,{140,0,0,0,0,0,0,0,0}},{142,1,0,3,{326,326,326,0,0,0,0,0,0}},{104,1,0,3,{327,327,327,0,0,0,0,0,0}},{209,1,0,3,{332,332,332,0,0,0,0,0,0}},{67,1,0,3,{316,316,316,0,0,0,0,0,0}},{105,1,3,2,{318,318,318,29,29,29,0,0,0}},{101,4,2,1,{13,13,0,0,0,0,0,0,0}},{98,4,2,1,{1,1,0,0,0,0,0,0,0}},{99,4,2,1,{59,59,0,0,0,0,0,0,0}},{102,4,2,1,{104,104,0,0,0,0,0,0,0}},{103,4,2,1,{148,148,0,0,0,0,0,0,0}},{214,4,2,1,{14,14,0,0,0,0,0,0,0}},{14,3,0,1,{35,0,0,0,0,0,0,0,0}},{215,4,2,1,{15,15,0,0,0,0,0,0,0}},{15,3,0,1,{39,0,0,0,0,0,0,0,0}},{216,4,2,1,{16,16,0,0,0,0,0,0,0}},{16,3,0,1,{43,0,0,0,0,0,0,0,0}},{217,4,2,1,{17,17,0,0,0,0,0,0,0}},{17,3,0,1,{47,0,0,0,0,0,0,0,0}},{218,4,2,1,{18,18,0,0,0,0,0,0,0}},{18,3,0,1,{183,0,0,0,0,0,0,0,0}},{219,4,2,1,{19,19,0,0,0,0,0,0,0}},{19,3,0,1,{187,0,0,0,0,0,0,0,0}},{134,2,3,2,{305,0,305,305,305,305,0,0,0}},{337,1,2,2,{14,14,14,14,0,0,0,0,0}},{323,2,0,1,{322,0,0,0,0,0,0,0,0}},{305,2,0,1,{61440,0,0,0,0,0,0,0,0}},{109,3,0,2,{306,305,0,0,0,0,0,0,0}},{109,3,0,2,{307,305,0,0,0,0,0,0,0}},{328,2,3,1,{61440,0,61440,0,0,0,0,0,0}},{135,4,3,1,{309,305,309,0,0,0,0,0,0}},{146,1,0,2,{145,109,0,0,0,0,0,0,0}},{333,1,3,2,{309,0,309,309,309,309,0,0,0}},{282,1,2,1,{314,309,0,0,0,0,0,0,0}},{360,1,0,2,{320,320,0,0,0,0,0,0,0}},{115,2,2,2,{14,0,14,14,0,0,0,0,0}},{136,2,2,2,{13,0,13,13,0,0,0,0,0}},{359,1,0,4,{358,310,310,310,0,0,0,0,0}},{341,1,0,3,{310,310,313,0,0,0,0,0,0}},{339,1,0,3,{309,309,313,0,0,0,0,0,0}},{338,1,2,2,{61441,61441,61440,61440,0,0,0,0,0}}};
 const uint16_t smelting[27][2] = {{33,309},{32,310},{117,308},{29,56},{30,56},{361,362},{363,364},{365,366},{367,368},{13,1},{148,150},{326,327},{142,166},{141,344},{163,312},{375,376},{34,306},{137,313},{57,346},{379,383},{380,384},{35,307},{39,307},{43,307},{47,307},{183,307},{187,307}};
 const uint16_t group_planks[] = {14,15,16,17,18,19,0xFFFF};
 const uint16_t group_wool[] = {67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,0xFFFF};
 const uint16_t group_log[] = {35,39,43,47,183,187,0xFFFF};
 const uint16_t group_sapling[] = {20,21,22,23,24,25,0xFFFF};
 const uint8_t skin_px[9][1024] = {
-  {0,0,0,0,119,122,167,170,170,170,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,85,167,170,170,169,153,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,149,167,170,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,90,167,119,117,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,151,89,117,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,153,85,117,170,255,255,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,117,169,117,170,170,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,153,153,119,170,170,170,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,153,87,85,117,149,154,119,85,117,153,153,119,122,167,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,153,119,87,119,87,51,151,117,119,153,153,167,85,167,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,121,151,121,55,51,51,83,151,121,151,121,87,149,167,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,119,153,87,51,51,51,85,117,153,119,151,90,167,119,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,153,154,85,243,63,243,63,85,169,153,153,87,151,89,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,151,149,149,53,163,58,149,89,89,121,153,119,153,85,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,151,167,85,169,85,121,167,151,154,85,122,121,151,117,169,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,149,85,167,170,170,169,169,122,85,85,149,169,153,153,154,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,204,255,255,0,0,0,0,161,170,170,26,136,136,136,136,0,0,0,0,18,33,170,170,0,0,0,0,0,0,0,0,204,204,255,255,0,0,0,0,161,170,170,26,136,136,136,136,0,0,0,0,17,17,170,170,0,0,0,0,0,0,0,0,204,204,255,255,0,0,0,0,161,170,170,26,136,136,136,136,0,0,0,0,17,33,170,170,0,0,0,0,0,0,0,0,204,204,255,255,0,0,0,0,161,170,170,26,136,136,136,136,0,0,0,0,18,33,170,170,0,0,0,0,0,0,238,238,204,204,238,238,204,236,68,132,36,89,153,34,68,68,34,34,17,34,68,68,34,33,68,68,17,17,0,0,0,0,238,238,204,204,238,238,204,204,132,72,34,146,41,17,132,136,18,17,17,34,136,72,33,33,132,72,17,17,0,0,0,0,238,238,204,204,238,238,204,204,136,72,17,34,36,17,136,136,17,17,17,33,132,72,18,17,132,72,17,17,0,0,0,0,238,238,204,204,238,238,204,204,136,136,17,33,20,17,136,136,17,20,66,33,132,72,18,33,132,72,17,17,0,0,0,0,238,238,204,204,238,238,238,238,136,136,68,17,20,68,136,136,33,20,66,17,85,117,51,51,87,85,51,51,0,0,0,0,238,238,236,206,238,238,238,238,136,136,68,33,20,66,136,136,65,20,66,18,85,117,83,51,117,85,51,51,0,0,0,0,238,238,204,204,238,238,204,204,136,136,20,65,18,66,136,136,33,36,65,20,87,117,83,83,117,85,83,53,0,0,0,0,238,238,204,204,238,238,204,204,132,72,20,65,18,66,132,136,17,36,65,20,87,85,51,83,117,117,51,51,0,0,0,0,238,238,204,204,238,238,204,204,132,72,17,65,18,65,132,72,17,17,17,17,87,87,51,83,85,117,51,51,0,0,0,0,221,238,204,204,238,221,102,102,132,68,68,36,33,65,132,72,68,20,68,33,85,87,51,51,85,85,83,83,0,0,0,0,221,221,102,102,221,221,102,102,238,238,204,204,236,65,228,238,236,46,68,206,85,87,51,53,87,87,83,83,0,0,0,0,221,221,102,102,221,221,102,102,238,238,204,204,204,78,238,238,204,236,196,204,85,85,53,85,87,85,83,83,0,0,0,0},
-  {0,0,0,0,119,124,199,188,221,221,221,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,68,199,204,13,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,164,199,204,13,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,76,199,119,116,13,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,71,167,74,116,13,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,170,68,116,13,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,132,186,116,13,0,0,208,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,170,170,119,221,221,221,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,170,56,85,101,148,172,118,85,131,170,153,119,124,199,188,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,170,134,38,102,38,17,150,98,104,170,153,199,68,199,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,138,151,139,22,17,17,33,184,121,168,105,71,164,199,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,121,101,169,70,17,17,18,34,100,154,86,151,76,199,119,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,153,139,35,241,31,241,31,50,184,153,153,71,167,74,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,151,149,133,19,209,29,162,88,89,121,153,119,170,68,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,150,229,66,217,245,255,255,159,157,36,94,105,167,132,186,116,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,153,148,82,215,221,221,217,200,125,34,34,148,217,170,170,157,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,104,0,0,0,0,0,0,0,0,0,0,0,85,131,170,153,0,0,0,98,104,0,0,0,0,0,0,0,0,0,0,184,121,0,0,0,0,0,0,0,0,0,0,0,98,104,170,153,0,0,0,184,121,0,0,0,0,0,0,0,0,0,119,119,119,119,0,0,0,0,0,0,0,0,0,0,184,121,168,105,0,0,119,119,119,119,0,0,0,0,0,0,0,0,199,199,199,199,0,0,0,0,0,0,0,0,0,0,100,154,86,151,0,0,199,199,199,199,0,0,0,0,0,0,0,0,71,71,71,71,0,0,0,0,206,238,204,0,0,204,238,238,204,124,199,204,71,71,71,71,0,0,0,0,0,0,0,0,76,76,76,76,0,0,0,0,0,0,238,12,192,238,0,0,0,112,12,0,76,76,76,76,0,0,0,0,0,0,0,0,71,71,71,71,0,0,0,0,238,238,204,206,236,204,238,238,204,124,196,204,71,71,71,71,0,0,0,0,0,0,0,0,119,119,119,119,0,0,0,0,0,0,206,236,206,236,0,0,0,192,4,0,119,119,119,119,0,0,0,0,0,0,0,0,167,167,167,167,0,0,0,0,238,238,236,206,236,206,238,238,204,124,196,204,167,167,167,167,0,0,0,0,0,0,0,0,135,135,135,135,0,0,0,0,0,0,192,192,12,12,0,0,0,112,7,0,135,135,135,135,0,0,0,0,0,0,0,0,101,101,101,101,0,0,0,0,0,0,224,12,224,14,0,0,0,112,10,0,101,101,101,101,0,0,0,0,0,0,0,0,102,102,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,112,8,0,102,102,102,102,0,0,0,0,0,0,0,0,153,153,153,153,0,0,0,0,0,0,0,0,0,0,0,0,0,80,6,0,153,153,153,153,0,0,0,0,0,0,0,0,153,153,153,153,0,0,0,0,0,0,0,0,0,0,0,0,0,96,6,0,153,153,153,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,83,85,70,201,106,87,53,168,154,121,199,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,106,104,98,102,18,97,41,134,166,154,121,76,0,0,0,0,0,0,0,0,0,0,0,0},
-  {0,0,0,0,91,51,227,146,40,151,61,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,117,213,209,43,103,210,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,187,106,25,101,18,57,93,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,125,25,150,34,17,97,75,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,184,34,25,150,97,22,145,45,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,142,212,161,145,98,25,157,26,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,140,209,221,141,209,61,105,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,204,209,162,120,137,215,101,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,136,132,216,153,195,75,81,214,103,196,236,153,145,25,114,217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,216,229,91,91,158,107,109,25,233,194,60,22,26,201,108,73,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,67,227,94,251,79,253,31,26,180,220,26,101,194,140,100,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,120,35,68,248,127,251,111,22,119,33,17,101,194,76,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,201,123,88,149,244,47,126,24,101,81,70,148,145,38,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,73,206,124,59,211,255,255,39,25,109,97,38,211,146,125,40,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,78,230,189,69,161,255,255,217,26,212,106,33,162,158,97,216,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23,49,131,211,87,79,243,126,56,52,98,209,118,61,145,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,77,84,255,255,0,0,0,0,30,18,57,35,211,114,73,134,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,225,69,255,254,0,0,0,0,229,36,221,116,232,228,187,181,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,109,40,255,255,0,0,0,0,190,24,119,125,56,183,188,24,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,113,57,255,255,0,0,0,0,133,24,102,142,57,200,88,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,114,71,204,45,185,69,91,187,181,91,133,45,158,85,72,152,114,91,243,79,0,0,0,0,0,0,0,0,0,0,0,0,133,75,204,26,157,195,213,181,237,223,159,29,239,227,212,146,115,219,255,93,0,0,0,0,0,0,0,0,0,0,0,0,157,227,46,103,49,202,233,238,190,229,223,184,236,63,212,221,157,253,45,135,0,0,0,0,0,0,0,0,0,0,0,0,86,113,213,102,129,231,229,229,139,133,247,190,200,252,228,161,232,141,199,156,0,0,0,0,0,0,0,0,0,0,0,0,101,145,255,255,145,73,132,235,184,101,217,254,204,219,237,255,254,133,203,252,0,0,0,0,0,0,0,0,0,0,0,0,214,241,255,255,95,88,190,91,235,213,57,88,204,91,142,91,235,229,219,78,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,94,53,229,94,232,93,158,83,78,37,253,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,238,45,67,152,237,72,142,23,232,61,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,201,140,237,71,149,227,223,239,223,254,131,88,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,203,190,229,79,229,149,109,72,59,190,131,91,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,233,190,221,162,189,133,235,74,213,190,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,72,85,181,243,117,77,130,142,40,69,179,229,0,0,0,0,0,0,0,0,0,0,0,0},
-  {0,0,0,190,187,238,236,188,238,0,171,175,250,185,95,45,244,51,121,95,245,105,52,95,246,169,0,0,0,0,0,0,0,0,0,190,171,236,238,188,238,0,153,159,249,249,155,127,246,119,35,45,210,18,34,77,247,121,0,0,0,0,0,0,0,0,0,190,172,204,238,187,238,251,36,29,210,51,67,61,243,153,191,151,159,250,171,153,159,249,153,0,0,0,0,0,0,0,0,190,172,236,206,187,238,191,153,159,249,170,169,159,250,153,251,119,63,247,119,103,111,212,119,0,0,0,0,0,0,0,0,191,174,236,190,203,238,0,0,0,0,0,0,0,0,0,0,0,34,17,49,71,33,17,34,81,0,0,0,0,0,0,0,191,171,235,187,187,239,0,0,0,0,0,0,0,0,0,0,0,34,18,81,71,33,17,34,65,0,0,0,0,170,186,187,191,171,254,171,154,153,238,175,190,0,0,0,0,0,0,0,0,18,18,74,55,33,17,34,81,0,0,0,0,186,187,187,174,170,254,238,238,190,238,175,190,0,0,0,0,0,0,0,0,194,205,74,53,50,17,34,81,0,0,0,0,187,187,203,174,187,238,206,188,187,238,191,190,0,0,0,0,0,0,0,0,194,205,65,37,50,202,45,81,0,0,0,0,238,238,239,174,187,238,188,187,187,238,191,190,0,0,0,0,0,0,0,0,194,29,49,37,34,202,45,81,0,0,0,0,187,187,187,174,187,238,190,187,187,238,191,190,0,0,0,0,0,0,0,0,18,18,49,37,35,17,35,81,0,0,0,0,187,187,187,174,187,236,188,203,206,235,191,188,0,0,0,0,0,0,0,0,18,17,49,53,34,17,50,49,0,0,0,0,0,0,0,0,0,0,87,147,119,119,105,70,85,84,119,117,52,50,51,34,177,17,33,47,33,34,34,34,19,18,18,18,0,0,0,0,0,0,87,114,118,87,73,69,212,85,151,103,35,221,35,34,18,31,178,38,50,211,45,34,19,17,18,18,0,0,0,0,0,0,71,218,125,105,73,101,220,69,119,103,35,221,34,18,27,17,34,20,43,34,221,45,36,193,18,29,0,0,0,0,0,0,215,220,117,121,57,103,220,55,151,71,247,223,52,179,31,177,177,181,31,17,220,28,20,193,205,29,0,0,0,0,0,0,103,115,117,215,57,87,83,41,221,71,210,61,68,51,18,251,251,37,50,83,245,85,197,28,205,35,0,0,0,0,0,0,87,148,101,221,63,87,83,201,221,61,17,17,17,31,19,33,23,36,242,33,210,17,23,17,209,34,0,0,0,0,0,0,86,116,86,214,73,102,67,201,221,77,34,34,241,31,19,47,247,33,242,47,34,34,22,17,18,34,0,0,0,0,0,0,101,118,116,118,73,71,82,89,213,71,34,50,243,35,19,47,244,33,17,31,17,17,21,17,34,34,102,119,102,102,69,68,85,118,100,102,73,85,119,119,119,153,170,35,117,71,119,115,121,0,0,0,0,0,0,0,0,0,221,76,68,117,101,68,84,125,116,102,199,221,125,119,119,119,119,34,150,87,105,83,121,0,0,0,0,0,0,0,0,0,223,221,103,69,68,196,220,125,116,87,201,204,76,52,195,204,51,35,117,221,87,116,119,0,0,0,0,0,0,0,0,0,118,119,103,68,52,204,220,125,212,87,167,221,221,102,215,221,205,163,220,221,109,85,119,0,0,0,0,0,0,0,0,0,121,103,68,68,51,172,220,125,212,221,39,68,102,85,70,212,52,195,221,221,119,87,119,0,0,0,0,0,0,0,0,0,34,35,170,76,84,213,108,157,84,221,39,119,151,153,153,170,154,68,85,103,118,55,119,0,0,0,0,0,0,0,0,0,68,196,204,93,117,151,122,149,84,215,37,221,221,157,153,153,153,68,85,103,117,201,119,0,0,0,0,0,0,0,0,0,153,255,255,223,119,153,82,150,100,103,52,249,255,221,121,102,84,67,205,119,116,205,119,0,0,0,0,0,0,0,0,0,153,221,125,103,102,103,98,149,220,87,68,151,221,119,102,85,68,67,204,109,220,205,118,0,0,0,0,0,0,0,0,0,68,85,69,68,85,85,114,244,220,221,70,101,101,214,221,221,151,100,205,89,220,173,86,0,0,0,0,0,0,0,0,0,153,153,153,151,153,119,114,252,124,215,61,119,119,119,214,221,86,116,69,105,220,39,87,0,0,0,0,0,0,0,0,0,51,34,50,67,84,119,115,252,116,103,61,86,102,87,69,100,118,148,69,119,116,39,73,0,0,0,0,0,0,0,0,0},
-  {0,0,0,0,51,67,51,34,34,17,18,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,68,36,83,34,18,17,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,115,51,116,34,34,33,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,164,115,114,115,34,18,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,114,179,114,34,18,33,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,180,115,49,35,18,33,33,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,115,114,50,34,17,33,50,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,115,52,82,35,34,33,17,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,104,213,90,85,180,52,34,18,33,33,19,34,50,52,51,72,0,0,66,101,101,104,152,150,166,138,104,137,0,0,0,0,186,173,182,188,132,34,35,17,65,119,59,51,163,164,183,75,0,0,67,68,101,105,134,136,172,136,136,106,0,0,0,0,220,120,223,52,36,34,34,17,33,187,180,72,180,213,165,52,0,0,50,52,83,101,134,202,169,255,135,136,0,0,0,0,233,88,255,59,31,34,33,241,178,191,52,34,162,180,131,115,0,0,35,68,85,86,150,200,249,135,175,168,0,0,0,0,170,104,255,77,36,34,35,33,177,191,69,84,212,180,117,101,0,0,34,34,68,85,168,166,249,250,169,108,0,0,0,0,217,125,255,52,34,34,34,17,17,191,84,68,84,69,183,37,0,0,68,34,83,133,135,169,252,138,202,202,0,0,0,0,222,121,105,54,68,34,33,17,119,34,179,84,101,87,117,69,0,0,55,67,69,102,102,201,137,255,159,136,0,0,0,0,152,134,102,85,51,18,17,17,34,50,67,85,69,117,87,84,0,0,101,69,68,102,170,168,136,168,172,152,0,0,0,0,0,0,101,101,79,31,0,0,32,18,178,75,7,0,86,100,134,184,136,103,117,134,153,184,169,170,105,153,136,86,86,134,0,0,135,86,79,47,0,0,18,17,33,0,0,0,86,70,136,85,168,134,136,137,169,154,204,156,154,106,106,134,101,86,0,0,136,103,79,47,0,0,242,18,47,0,0,0,186,157,138,157,169,200,138,136,168,233,204,204,152,106,69,132,103,77,0,0,86,86,95,47,0,0,18,17,33,0,0,0,121,110,136,206,202,156,138,137,217,234,172,206,136,134,88,84,86,91,118,102,100,104,84,52,35,52,0,0,0,0,0,0,153,157,142,174,222,204,156,202,201,233,205,206,152,101,181,84,91,91,168,70,102,104,53,52,68,50,0,0,0,0,0,0,185,157,174,158,221,237,205,206,201,236,140,174,136,102,181,83,91,77,137,103,133,86,69,52,34,66,0,0,0,0,0,0,154,158,206,206,221,157,206,205,202,236,142,158,138,88,167,68,91,91,134,168,184,103,85,52,66,68,0,0,0,0,0,0,202,206,206,238,236,236,206,201,204,238,206,174,103,119,181,70,107,92,218,170,204,140,86,83,53,83,0,0,0,0,0,0,204,206,222,222,238,254,222,206,221,237,221,206,153,136,182,86,91,85,169,156,207,159,104,69,245,243,0,0,0,0,0,0,156,238,237,239,222,238,206,222,221,238,156,206,168,120,214,86,107,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,238,205,238,237,238,206,236,204,236,204,174,169,117,183,120,86,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,197,238,222,222,205,254,238,239,238,238,108,141,104,88,216,86,55,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,156,222,222,204,204,221,238,205,206,157,154,153,137,136,216,86,86,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,201,201,153,206,238,238,238,205,172,170,136,153,134,133,88,102,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,156,204,205,220,238,238,236,205,173,103,154,152,168,136,136,102,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,172,200,216,204,237,221,172,205,108,134,150,139,104,136,136,88,69},
-  {0,0,0,204,204,85,204,204,204,206,236,144,13,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,68,68,68,0,0,0,172,204,85,204,236,204,238,204,137,153,0,0,0,0,0,0,0,0,0,0,0,0,0,68,68,68,0,0,0,0,0,0,204,204,53,206,236,238,206,204,221,221,0,0,0,0,0,0,0,0,0,0,0,0,0,132,102,72,0,0,0,0,0,0,204,58,51,206,238,238,238,204,221,221,0,0,0,0,0,0,0,0,0,0,0,0,0,100,102,70,0,0,0,0,0,0,172,51,131,88,238,204,236,236,0,0,0,136,133,133,88,206,206,136,85,133,85,136,236,100,102,70,0,0,0,0,0,0,204,85,133,85,238,204,238,238,0,0,0,53,136,200,238,235,204,133,88,133,133,83,204,132,102,72,0,0,0,204,204,206,188,60,131,232,204,85,204,172,58,195,202,136,85,204,206,238,236,136,133,133,133,136,236,68,68,68,0,0,0,236,98,198,170,58,51,190,108,120,88,172,58,195,202,88,195,188,206,236,236,136,133,133,53,136,204,0,0,0,0,0,0,236,110,230,17,59,179,17,110,230,88,172,172,163,202,56,206,236,206,188,83,88,88,56,53,229,204,0,0,0,0,0,0,204,238,198,31,92,204,241,108,238,236,172,172,170,202,206,206,190,188,140,85,56,88,236,88,181,203,0,0,0,0,0,0,204,204,206,204,204,204,204,238,204,204,204,172,170,202,238,236,236,188,136,85,206,203,188,206,236,236,0,0,0,0,0,0,204,204,238,236,17,17,206,238,204,206,170,170,172,204,238,236,236,140,136,133,238,204,204,206,238,236,0,0,0,0,0,0,238,206,238,28,159,249,225,238,204,206,172,172,172,170,236,206,236,140,83,85,188,238,206,238,235,204,0,0,0,0,0,0,204,236,204,28,217,157,193,204,236,204,170,170,170,202,206,204,236,92,136,133,238,76,68,68,196,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,206,56,133,131,83,238,236,236,206,206,206,206,190,133,235,91,238,140,133,88,88,206,0,0,0,0,0,0,0,0,0,0,238,85,88,53,133,188,238,206,238,235,204,238,204,206,188,236,188,142,88,136,131,204,0,0,0,88,203,159,249,0,0,0,238,190,238,133,227,238,204,204,206,238,236,238,190,238,236,235,238,92,85,88,136,236,0,0,0,181,206,159,249,0,0,0,206,204,203,238,188,206,203,188,206,236,140,200,204,203,238,188,206,203,53,88,133,236,0,0,0,204,190,159,249,0,0,0,238,238,190,236,238,190,206,236,206,188,83,136,238,190,236,238,190,206,133,88,53,203,0,0,0,206,206,255,255,0,0,0,206,204,204,238,204,206,206,190,188,140,85,88,197,204,238,204,88,206,56,53,133,204,0,203,236,204,206,206,236,206,238,0,238,206,204,236,204,136,229,236,188,136,85,136,200,204,236,204,136,229,133,53,136,204,0,188,236,203,140,181,204,188,204,0,238,203,235,204,188,136,133,229,236,142,133,136,83,235,85,53,136,133,133,133,136,236,0,206,236,235,140,227,206,206,206,0,206,236,206,187,136,133,88,236,236,91,85,88,133,88,51,136,133,200,140,133,83,204,0,206,238,236,140,229,190,188,206,0,206,204,238,136,133,88,197,236,204,142,133,88,85,238,136,133,88,197,140,85,136,236,0,188,206,204,140,229,190,204,190,0,188,204,238,53,133,190,203,236,187,236,85,181,85,238,188,140,56,203,236,51,229,204,0,188,136,238,92,200,203,236,190,0,238,238,206,85,232,238,238,204,236,236,236,238,136,206,204,142,136,238,204,236,229,236,0,188,92,206,203,238,236,235,88,0,204,203,236,136,204,188,68,68,68,236,187,204,203,236,238,204,204,238,236,236,236,187,0,204,188,206,188,206,206,140,51,0,204,188,204,236,203,203,132,102,72,204,236,204,188,204,236,203,203,236,236,236,204,236,0,203,206,238,188,190,190,142,200,0,236,238,236,238,206,238,100,102,70,206,238,236,238,236,238,206,206,204,236,204,206,142,0,204,206,238,204,190,206,204,238,0,235,204,188,204,204,206,100,102,70,206,236,235,204,188,204,204,190,206,203,204,206,140,0,238,238,238,238,238,238,236,238,0,204,203,204,188,204,206,132,102,72,206,236,204,203,204,188,204,206,238,88,136,88,229,0,255,255,255,255,255,255,159,249,0,238,204,236,188,204,190,68,68,68,206,235,238,204,236,188,204,206,133,136,85,88,131,0},
-  {0,0,0,0,51,69,100,102,104,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,49,69,102,70,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,49,69,102,70,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,19,99,102,70,99,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,33,86,86,20,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,20,33,86,86,20,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,34,37,86,83,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,65,101,70,50,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,70,19,34,53,68,102,102,102,53,65,52,86,102,86,0,0,0,117,119,25,152,150,172,204,187,61,0,0,0,0,0,0,51,68,151,89,204,204,219,198,89,69,82,69,83,54,0,0,0,137,135,130,153,106,170,165,201,60,0,0,0,0,0,0,68,52,158,60,31,221,241,214,249,35,19,49,99,35,0,0,0,185,149,146,50,172,169,150,201,203,0,0,0,0,0,0,84,54,68,75,222,238,254,214,53,34,19,50,98,34,0,0,0,154,147,153,153,119,135,153,154,221,0,0,0,0,0,0,100,54,17,70,228,119,62,68,102,66,18,50,100,19,0,0,0,161,148,151,147,133,73,153,203,198,0,0,0,0,0,0,101,85,102,102,230,121,46,51,104,102,36,67,102,19,0,0,0,146,170,147,121,135,148,153,180,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,29,205,19,146,170,155,169,84,149,42,186,220,155,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,35,171,171,170,121,55,153,154,187,221,220,102,237,0,0,0,0,0,0,54,53,175,252,0,0,0,0,0,0,0,0,209,99,156,202,171,154,153,105,202,44,221,222,221,211,0,0,0,0,0,0,70,102,175,253,0,0,0,0,0,0,0,0,154,164,150,102,169,147,153,177,193,213,221,46,237,237,0,0,0,0,0,0,102,69,159,251,0,0,0,0,0,0,0,0,193,170,106,186,153,58,147,169,156,198,212,46,229,102,0,0,0,0,0,0,52,51,255,255,0,0,0,0,0,0,0,0,185,169,150,153,166,151,72,168,171,193,237,227,238,230,0,0,0,0,82,49,51,19,33,33,17,17,0,0,0,0,0,0,198,203,169,153,89,119,152,25,43,28,238,238,230,238,0,0,0,0,52,35,34,18,18,17,18,50,0,0,0,0,0,0,138,102,169,154,68,153,152,168,195,220,29,225,238,238,0,0,0,0,51,99,18,17,17,17,17,17,0,0,0,0,0,0,139,182,148,153,105,73,56,170,27,222,225,238,238,238,0,0,0,0,70,51,33,17,67,20,17,17,0,0,0,0,0,0,107,92,25,203,153,105,151,164,187,44,221,238,94,238,0,0,0,0,238,222,221,171,170,186,185,187,0,0,0,0,0,0,170,182,51,18,154,134,153,57,202,209,108,188,53,226,0,0,0,0,238,222,204,156,170,169,185,204,0,0,0,0,0,0,170,186,172,17,146,73,41,152,203,193,92,92,221,237,0,0,0,0,238,221,220,205,188,186,219,203,0,0,0,0,0,0,185,162,179,155,148,100,153,169,185,195,214,206,212,238,0,0,0,0,238,205,203,186,220,203,205,188,0,0,0,0,0,0,188,185,154,39,147,169,58,154,58,204,221,221,237,227,0,0,0,0,206,205,221,205,222,206,188,203,0,0,0,0,0,0,155,153,89,119,56,169,137,114,161,163,198,205,229,51,0,0,0,0,238,237,221,221,204,187,154,203,0,0,0,0,0,0,148,154,152,120,19,136,153,57,178,162,170,220,229,238,0,0,0,0,222,238,205,204,203,186,154,186,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,255,255,255,255,175,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  {0,0,0,102,154,215,222,223,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,36,82,139,254,126,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,23,213,255,125,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,50,205,191,40,122,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,50,74,191,166,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,145,219,159,99,86,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,141,39,179,119,237,207,91,129,87,188,238,189,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,135,118,138,205,223,189,139,180,139,183,125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,120,119,120,215,184,222,155,53,37,98,213,53,0,0,0,0,0,218,38,18,245,204,139,197,53,103,0,0,0,0,0,0,167,126,39,56,115,253,106,51,21,66,195,36,0,0,0,0,0,255,90,19,19,202,189,139,98,86,0,0,0,0,0,0,216,127,242,121,74,136,205,115,19,83,200,21,0,0,0,0,0,203,91,19,100,151,134,93,202,40,0,0,0,0,0,0,202,202,255,253,69,101,255,254,72,134,222,23,0,0,0,0,0,37,86,70,69,141,86,169,253,205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,56,198,198,123,137,149,185,221,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,50,135,154,205,89,67,121,190,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,33,195,23,115,217,185,88,184,171,56,18,212,200,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,53,53,65,190,186,87,101,85,20,51,101,255,121,0,0,0,0,0,0,108,122,52,17,0,0,0,0,0,0,0,0,113,215,102,85,126,139,71,196,113,53,117,179,235,247,0,0,0,0,0,0,125,221,55,34,0,0,0,0,0,0,0,0,83,152,222,254,254,39,37,65,49,138,199,37,251,207,0,0,0,0,0,0,238,156,37,33,0,0,0,0,0,0,0,0,65,218,255,143,255,91,116,19,17,173,232,53,235,238,0,0,0,0,0,0,88,86,72,19,0,0,0,0,0,0,0,0,133,217,239,255,223,123,149,50,17,50,89,85,214,238,0,0,0,0,195,114,103,21,66,50,17,17,0,0,0,0,0,0,237,221,238,255,189,121,54,17,51,37,19,97,221,255,0,0,0,0,103,53,51,18,34,17,19,83,0,0,0,0,0,0,255,223,252,255,152,187,41,52,133,22,17,33,193,251,0,0,0,0,119,214,18,17,33,18,33,33,0,0,0,0,0,0,255,223,121,251,219,125,70,87,23,19,18,83,231,206,0,0,0,0,157,85,33,17,116,25,17,34,0,0,0,0,0,0,255,205,21,132,213,222,88,136,93,66,21,133,188,156,0,0,0,0,120,118,183,49,101,197,34,84,0,0,0,0,0,0,254,220,87,19,181,204,104,83,18,17,197,251,92,244,0,0,0,0,116,229,158,66,87,136,103,184,0,0,0,0,0,0,186,150,55,33,99,154,52,193,33,34,182,204,131,254,0,0,0,0,152,248,223,252,94,252,139,166,0,0,0,0,0,0,255,50,85,34,135,217,103,52,51,132,252,139,136,251,0,0,0,0,197,254,253,255,190,235,58,121,0,0,0,0,0,0,138,35,228,67,119,170,103,181,115,54,223,249,57,230,0,0,0,0,238,254,223,239,217,237,190,190,0,0,0,0,0,0,119,37,181,86,69,134,19,51,113,183,238,255,106,86,0,0,0,0,237,237,201,207,168,221,236,250,0,0,0,0,0,0,232,104,102,52,37,55,35,81,50,163,253,238,202,104,0,0,0,0,239,238,222,139,204,104,200,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,190,85,159,167,235,220,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
-  {0,48,52,4,0,0,0,0,102,102,119,119,0,0,0,0,80,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,66,2,0,0,0,0,105,150,119,119,0,0,0,0,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,35,3,0,0,0,102,102,102,102,119,119,0,0,0,85,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,50,34,34,34,35,35,35,119,119,119,119,119,119,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,67,163,17,58,52,52,52,0,136,136,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,34,66,66,66,66,0,136,136,0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,50,50,34,35,35,35,35,136,136,136,136,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,67,67,136,52,52,52,52,136,136,136,136,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0,0,0,0,36,36,136,66,66,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,35,35,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,52,52,52,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,66,66,66,66,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,35,35,35,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,52,52,52,52,0,0,0,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,66,66,66,66,66,0,0,0,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,35,35,35,35,35,35,35,35,35,35,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,52,52,52,52,52,52,52,52,52,52,0,0,0,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,66,66,66,66,66,66,66,66,66,66,66,66,0,0,0,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,35,35,35,35,35,35,35,35,35,35,0,0,0,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,52,52,52,52,52,52,52,52,52,52,67,67,67,51,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,66,66,66,66,66,66,66,66,66,66,66,66,36,36,36,68,36,36,36,0,0,0,0,0,0,0,0,0,0,0,0,0,35,35,35,35,35,35,35,35,35,35,35,35,50,50,50,34,50,50,50,0,0,0,0,0,0,0,0,0,0,0,0,0,52,52,52,52,52,52,52,52,52,52,52,52,67,67,67,51,67,67,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,0,85,136,68,101,121,34,187,34,220,187,0,0,0,0,0,0,64,119,73,213,189,205,11,0,0,0,0,0,0,0,0,0,88,152,72,149,100,34,187,34,221,189,0,0,0,0,0,0,64,73,73,216,188,187,11,0,0,0,0,0,0,0,0,0,34,73,132,136,71,188,34,221,203,204,0,0,0,0,0,0,144,36,34,178,219,204,13,0,0,0,0,0,0,0,0,0,34,69,68,137,135,205,34,219,205,205,0,0,0,0,0,0,112,37,34,178,204,204,11,0,0,0,0,0,0,0,0,0,121,68,137,148,73,203,220,187,219,203,0,0,0,0,0,0,144,72,148,185,219,187,11,0,0,0,0,0,0,0,0,0,100,148,133,68,152,187,188,189,188,187,0,0,0,0,154,105,73,36,34,146,84,72,153,148,85,0,0,0,0,0,0,0,71,116,34,34,34,221,34,205,205,205,0,0,0,0,136,71,69,33,18,66,86,102,137,68,85,0,0,0,0,0,0,0,135,120,34,34,34,221,34,203,205,219,0,0,0,0,34,117,37,130,153,85,68,37,84,121,136,0,0,0,148,153,137,137,85,34,68,85,34,34,101,34,153,34,84,34,136,68,34,136,41,255,255,73,89,40,132,120,72,0,0,0,116,133,89,132,72,34,72,70,34,34,68,34,120,34,85,34,136,73,34,89,146,41,34,146,137,102,68,89,68,0,0,0,105,86,73,34,152,137,167,34,73,68,34,120,89,85,34,137,100,103,0,0,238,238,255,255,0,0,0,176,219,255,15,0,136,135,101,34,148,85,137,34,148,153,34,69,121,136,34,164,89,121,0,0,238,239,255,255,0,0,0,208,219,238,15,0,34,34,84,34,73,132,136,71,34,137,34,71,132,100,149,85,148,85,0,0,255,254,255,255,0,0,0,192,204,255,2,0,34,34,153,34,149,116,120,153,34,153,34,89,89,68,71,74,72,69,0,0,254,238,255,255,0,0,221,203,44,205,219,221,89,150,117,153,151,72,89,84,149,153,34,135,88,137,34,136,137,136,238,239,255,255,238,238,238,238,203,204,45,204,188,203,149,84,100,105,88,154,149,71,136,152,34,84,132,137,34,132,121,148,238,254,254,238,255,255,238,255,221,189,203,203,210,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,238,238,254,238,255,239,238,187,220,221,204,194,44,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,239,238,238,255,238,255,239,189,205,189,34,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,239,254,238,254,239,238,239,205,171,219,34,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,16,161,170,185,204,17,204,12,0,0,0,0,0,0,0,141,238,238,136,238,221,222,221,0,0,0,0,0,0,0,0,0,16,193,154,203,204,17,255,12,0,0,0,0,0,0,0,136,238,238,216,238,237,238,221,0,0,0,0,0,0,0,0,0,176,185,187,154,252,204,204,12,0,0,0,0,0,0,0,136,136,141,136,238,238,221,238,0,0,0,0,0,0,0,0,0,144,185,156,154,207,252,204,12,0,0,0,0,0,0,0,216,141,141,141,237,238,221,237,0,0,0,0,0,0,0,0,0,176,204,169,156,204,207,17,15,0,0,0,0,0,0,0,238,238,136,238,221,238,221,237,0,0,0,0,0,0,0,0,0,176,154,169,201,252,204,17,12,0,0,0,0,0,0,0,238,238,141,238,221,238,238,221,0,0,0,0,0,0,0,0,0,160,155,25,161,17,252,204,15,0,0,0,0,0,0,0,238,238,216,141,221,238,221,238,0,0,0,0,0,0,203,203,156,156,169,170,186,154,17,204,170,26,145,153,0,0,0,0,238,238,136,136,238,222,222,222,0,0,0,0,0,0,202,155,154,155,155,154,155,187,17,153,169,26,193,172,136,136,141,216,141,136,136,136,238,136,136,216,238,136,141,136,0,0,185,170,202,202,26,27,187,186,201,153,185,172,169,154,141,221,141,136,216,136,136,216,238,136,141,221,238,216,221,136,0,0,170,185,187,187,188,202,169,169,203,203,202,169,188,187,0,0,99,36,119,119,0,0,0,32,34,34,82,69,52,3,0,0,154,17,172,188,238,238,190,169,155,17,171,202,25,193,0,0,84,84,119,103,0,0,0,32,34,34,82,70,52,3,0,0,204,17,201,169,255,255,175,202,202,17,154,156,27,145,0,0,54,83,102,119,0,0,0,32,34,34,66,86,102,4,0,0,170,17,202,156,172,201,154,171,186,204,25,177,188,203,0,0,38,82,102,118,0,0,34,34,34,34,34,34,34,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,101,67,68,35,86,84,85,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,34,37,52,51,53,68,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,53,54,98,51,52,34,67,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,99,85,70,51,53,67,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,69,82,98,68,52,51,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,53,50,83,68,37,85,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,51,85,38,102,66,34,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,100,50,83,83,51,37,98,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,99,34,82,52,35,98,52,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,119,119,119,119,119,119,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,101,37,51,83,82,51,102,66,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,68,50,35,68,36,102,101,83,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,0,51,34,34,170,153,153,170,170,0,0,0,0,0,0,238,235,238,0,0,32,2,0,0,0,0,0,0,0,0,0,0,0,115,37,114,170,170,153,153,153,0,0,0,0,0,0,222,237,254,0,0,34,34,0,0,0,0,0,0,0,0,0,0,0,134,66,85,88,238,170,169,153,0,0,0,0,0,0,235,238,238,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,130,34,87,130,238,170,153,153,0,0,0,0,0,0,238,238,238,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,40,54,98,55,153,169,154,169,0,0,0,0,237,221,238,219,189,235,238,255,255,0,0,0,0,0,0,0,0,0,0,0,104,40,130,50,154,153,154,153,0,0,0,0,235,237,190,238,238,222,237,0,0,0,0,0,0,0,0,0,0,0,0,0,56,115,40,36,153,170,153,169,0,0,0,0,219,190,189,237,238,235,235,0,0,0,0,0,0,0,0,0,0,0,0,0,53,83,35,101,169,169,169,153,0,0,0,0,187,187,237,219,189,189,189,0,0,0,0,0,0,0,0,0,34,53,120,35,119,119,85,101,34,102,102,34,67,84,135,136,189,237,222,187,189,187,222,0,0,0,0,0,0,0,0,0,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,222,222,189,219,237,238,238,0,0,0,0,0,0,0,0,0,88,131,135,170,131,50,34,72,170,130,38,52,170,119,133,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,119,34,170,116,18,113,130,170,87,54,130,170,120,83,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,37,40,170,115,34,17,17,39,83,170,72,131,53,102,38,117,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,34,99,170,35,22,241,31,113,34,170,38,38,56,85,55,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,38,98,51,120,26,241,31,65,136,103,37,82,34,136,35,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,39,98,130,170,17,17,53,35,117,88,34,130,131,98,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,38,115,118,82,18,49,170,54,37,170,37,40,39,170,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,82,54,103,50,133,131,130,170,52,88,170,69,34,102,170,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,53,130,36,56,103,102,170,131,35,117,82,53,170,131,56,103,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,37,82,133,34,103,170,55,54,82,117,82,170,52,38,98,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,39,115,35,66,50,82,86,170,34,170,98,103,35,170,115,136,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,0,0,0,34,132,34,115,85,155,204,169,170,204,0,0,0,0,0,0,0,0,237,220,189,255,255,239,0,0,0,0,0,0,0,0,34,116,34,67,87,187,153,153,186,170,0,0,0,0,0,0,0,0,235,235,189,255,255,255,0,0,0,0,0,0,0,0,87,83,53,83,117,218,186,187,157,153,0,0,0,0,0,0,0,0,235,205,171,255,255,255,0,0,0,0,0,0,0,0,135,86,117,86,86,154,185,188,155,153,0,0,0,0,0,0,0,0,219,205,219,239,255,255,0,0,0,0,0,0,0,0,51,34,68,34,115,153,201,153,201,156,0,0,0,0,0,0,222,235,189,204,205,203,221,222,221,188,0,0,0,0,0,0,55,34,71,34,100,204,202,204,202,204,0,0,0,0,0,0,190,189,27,235,209,189,221,238,221,221,0,0,0,0,0,0,116,71,101,103,34,170,51,154,170,153,0,0,0,0,0,0,221,189,238,219,190,237,221,189,238,219,0,0,0,0,0,0,52,51,53,100,34,170,51,171,154,155,0,0,0,0,0,0,221,219,221,173,205,203,221,187,206,221,0,0,0,0,0,0,51,119,85,34,53,170,51,187,204,169,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,0,0,0,0,0,0,53,71,88,34,135,153,51,171,201,153,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,0,0,0,0,0,0,83,67,117,133,115,188,156,201,186,171,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,0,0,0,0,0,0,51,69,69,135,67,188,204,154,170,188,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,54,117,117,84,119,85,67,68,55,51,51,53,115,104,53,51,102,55,136,83,85,119,0,0,16,1,0,0,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,0,131,54,88,53,71,116,118,87,133,87,117,117,103,120,131,69,86,133,118,119,56,51,224,239,255,238,255,255,255,255,255,15,53,117,132,100,51,83,103,88,86,88,86,84,115,119,69,131,120,69,100,119,55,52,255,255,255,254,255,255,254,254,255,239,86,132,115,88,34,103,119,87,84,53,118,84,55,34,133,115,119,51,115,51,116,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,0,0,0,153,135,136,118,221,237,238,206,0,0,0,0,0,0,0,0,64,68,100,198,156,172,10,0,0,0,0,0,0,0,0,0,185,122,184,106,238,204,204,238,0,0,0,0,0,0,0,0,64,85,100,197,172,170,10,0,0,0,0,0,0,0,0,0,107,152,170,167,204,238,205,204,0,0,0,0,0,0,0,0,64,100,69,151,202,187,11,0,0,0,0,0,0,0,0,0,184,120,171,183,206,236,237,205,0,0,0,0,0,0,0,0,112,100,100,183,187,203,12,0,0,0,0,0,0,0,0,0,118,154,167,155,222,238,206,238,0,0,0,0,0,0,0,0,64,117,70,165,204,170,9,0,0,0,0,0,0,0,0,0,33,34,34,33,220,238,222,221,0,0,0,0,0,0,101,85,69,68,116,86,69,68,102,116,68,0,0,0,0,0,0,0,33,18,34,18,204,236,205,236,0,0,0,0,0,0,100,69,116,98,36,101,102,70,85,68,68,0,0,0,0,0,0,0,18,17,18,17,204,205,236,204,0,0,0,0,0,0,84,68,84,92,197,100,119,68,68,70,85,0,0,0,0,0,0,0,33,33,33,18,204,206,237,221,0,0,0,0,0,0,68,68,84,70,84,85,69,117,84,69,117,0,0,0,0,0,0,0,139,169,104,122,204,238,238,205,0,0,0,0,0,0,69,69,100,69,70,68,85,100,100,69,68,0,0,0,0,0,0,0,123,155,119,167,206,205,220,238,0,0,0,0,0,0,0,0,64,68,4,0,0,0,222,255,0,0,0,0,0,0,0,0,120,107,123,152,237,221,206,236,0,0,0,0,0,0,0,0,64,68,4,0,0,0,254,255,0,0,120,154,23,33,146,184,187,187,170,170,136,186,26,34,145,184,153,169,187,107,0,0,64,68,4,0,0,237,223,239,237,0,139,185,42,34,97,120,151,155,150,139,119,119,25,17,145,122,187,136,136,170,0,0,64,68,4,0,0,239,253,222,238,0,166,185,43,18,177,171,121,152,136,151,120,103,27,17,130,152,135,187,105,136,0,0,64,68,4,0,0,253,238,238,223,0,123,187,24,34,146,184,185,120,187,103,154,171,26,34,145,118,139,183,169,137,68,68,52,67,68,68,68,237,223,239,255,0,138,123,24,34,162,120,120,153,167,123,169,155,38,34,177,119,154,170,139,186,68,68,52,67,68,68,68,239,254,239,239,0,136,185,43,34,162,151,186,139,119,184,135,187,26,18,145,136,150,170,155,153,144,153,9,0,0,0,0,254,238,238,238,0,138,167,41,33,113,167,150,139,186,153,103,187,26,33,145,137,120,183,121,183,41,146,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,146,153,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,0,0,0,32,102,36,85,83,204,153,187,204,9,0,0,0,0,0,0,0,160,187,221,13,0,0,0,0,0,0,0,0,0,0,0,32,52,36,35,83,204,139,119,204,10,0,0,0,0,0,0,0,144,167,221,13,0,0,0,0,0,0,0,0,0,0,0,32,67,99,51,134,155,171,185,183,11,0,0,0,0,0,0,0,112,122,205,13,0,0,0,0,0,0,0,0,0,0,0,64,67,70,67,133,187,167,169,122,11,0,0,0,0,0,0,155,122,123,155,186,186,0,0,0,0,0,0,0,0,0,0,128,40,66,34,34,122,170,122,170,12,0,0,0,0,0,0,151,183,167,168,170,186,0,0,0,0,0,0,0,0,0,0,128,88,66,69,50,171,170,123,153,12,0,0,0,0,0,0,187,171,137,154,185,167,0,0,0,0,0,0,0,0,0,0,80,34,84,52,36,204,187,204,187,7,0,0,0,0,0,0,139,154,122,120,122,152,0,0,0,0,0,0,0,0,0,0,96,34,34,52,82,204,184,204,183,11,0,0,0,0,0,0,151,171,154,119,187,171,0,0,0,0,0,0,0,0,0,0,80,37,34,132,136,204,187,154,153,11,0,0,0,0,0,0,122,139,187,153,170,170,0,0,0,0,0,0,0,0,0,0,80,50,34,130,136,204,187,170,187,11,0,0,0,0,0,0,255,255,255,255,255,255,0,0,0,0,0,0,0,0,0,0,32,35,51,54,38,170,119,155,170,10,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,64,34,86,54,66,167,154,187,171,7,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,48,67,98,38,53,187,139,167,123,12,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,53,136,36,38,98,34,70,70,52,52,131,136,36,36,136,68,102,134,56,83,134,56,0,0,17,0,0,0,0,0,0,0,100,136,35,83,100,66,99,83,84,99,131,136,53,98,136,35,35,133,104,34,130,56,17,17,17,17,17,0,0,0,0,0,86,136,69,82,52,66,40,98,35,82,35,69,84,98,86,52,35,102,67,52,37,86,0,0,0,0,0,0,0,0,0,0,38,136,101,54,84,85,72,52,70,37,53,82,50,35,100,70,98,102,38,52,51,82,0,0,0,0,0,0,0,0,0,0,53,86,99,68,99,136,54,134,136,104,38,102,50,99,136,136,136,66,50,68,66,132,0,0,0,0,0,0,0,0,0,0,66,54,54,83,38,136,52,133,136,104,52,68,68,98,136,136,136,86,51,99,50,130,0,0,0,0,0,0,0,0,0,0,83,37,50,136,36,66,82,66,54,36,100,86,68,136,34,35,98,134,88,133,104,38,0,0,0,0,0,0,0,0,0,0,0,0,64,102,82,162,169,122,11,0,0,0,0,0,221,220,220,238,238,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,50,83,132,184,186,11,0,0,0,0,0,220,220,221,238,238,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,68,66,229,158,119,10,0,0,0,0,0,238,205,221,238,238,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,96,68,37,230,142,171,10,0,0,0,0,0,238,205,205,238,238,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,211,61,131,183,153,9,0,0,0,0,0,220,221,205,238,238,255,0,0,0,0,0,0,0,0,0,0,0,0,221,53,50,38,50,82,50,53,52,68,98,0,0,0,237,205,205,238,238,255,0,0,0,0,0,0,0,0,0,0,0,0,221,102,244,36,35,47,34,67,34,70,85,238,205,220,221,238,221,220,205,238,221,205,238,0,0,0,0,0,0,0,0,0,36,66,34,68,102,213,45,99,221,35,66,238,205,204,220,238,221,220,221,238,221,204,238,0,0,0,0,0,0,0,0,0,50,53,19,17,17,209,61,68,221,98,67,205,221,238,221,204,205,204,204,238,204,221,221,0,0,0,0,0,0,0,0,0,34,36,20,28,193,97,38,68,34,54,35,220,237,238,221,204,221,220,221,238,220,221,205,0,0,0,0,0,0,0,0,0,36,66,22,17,17,33,35,83,34,54,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,0,32,66,52,83,153,137,221,13,0,0,0,0,0,0,192,236,254,255,15,0,0,0,139,255,0,240,15,0,0,0,0,0,32,38,52,38,238,187,187,8,0,0,0,0,0,0,224,236,249,239,14,0,0,0,141,255,0,255,255,0,0,0,0,0,96,98,102,35,203,217,136,12,0,0,0,0,0,0,192,142,234,254,15,0,0,237,152,172,187,255,255,0,0,0,0,0,32,99,50,36,219,222,152,11,0,0,0,0,0,0,208,203,250,238,15,0,0,184,237,204,171,255,255,0,0,0,0,0,80,97,83,49,216,140,232,12,0,0,0,0,0,0,128,189,251,254,15,0,0,190,235,188,221,0,0,0,0,0,0,0,80,36,67,98,221,140,238,13,0,0,0,0,222,188,157,153,137,216,189,238,238,236,190,202,216,0,0,0,0,0,0,0,48,53,34,85,184,202,153,10,0,0,0,0,141,218,28,190,177,187,235,204,153,154,204,187,170,0,0,0,0,0,0,0,16,54,101,85,186,168,201,9,0,0,0,0,174,234,205,222,187,219,235,154,219,184,157,221,238,0,0,0,0,0,0,0,48,85,19,98,221,222,138,11,0,0,0,0,153,185,222,235,154,238,205,155,201,217,158,222,205,0,0,0,84,34,101,50,102,102,38,17,51,17,17,68,36,34,98,102,0,119,238,0,0,0,0,0,0,220,238,188,205,0,0,0,54,19,81,36,66,98,82,98,85,85,34,34,102,70,52,20,0,122,238,0,0,0,0,0,0,155,221,152,238,0,0,0,65,18,82,38,83,66,84,35,85,19,34,67,54,36,22,66,136,119,136,136,0,0,0,0,0,255,255,255,255,0,0,0,97,69,34,19,38,35,49,36,66,101,22,101,70,101,37,50,103,117,119,136,0,0,0,0,0,0,0,0,0,0,0,0,82,66,35,101,54,98,82,53,82,38,38,86,38,70,17,86,103,136,134,87,0,0,0,0,0,0,0,0,0,0,0,0,83,17,81,68,19,51,67,18,100,99,17,52,81,85,98,86,133,104,135,167,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,135,118,88,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,119,152,135,118,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,152,103,135,151,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,167,118,88,135,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,0,0,0,34,120,153,103,99,241,223,237,238,222,253,0,0,0,0,0,0,0,0,130,37,238,238,0,0,0,0,0,0,0,0,0,37,56,149,54,98,249,239,238,223,221,253,0,0,0,0,0,0,0,0,118,133,221,238,0,0,0,0,0,0,0,0,0,70,130,51,204,204,252,222,254,255,255,223,0,0,0,0,0,0,0,0,88,100,238,237,0,0,0,0,0,0,0,0,0,134,151,83,204,204,236,238,254,255,255,239,0,0,0,0,0,0,0,0,40,103,237,220,0,0,0,0,0,0,0,0,0,103,66,116,204,121,198,221,253,255,223,237,0,0,0,0,0,0,204,204,204,39,71,147,101,117,0,0,0,0,0,0,0,116,97,119,204,133,197,222,253,255,223,222,0,0,0,0,0,0,204,204,204,82,98,18,83,136,0,0,0,0,0,0,0,98,204,204,204,38,236,238,238,236,254,239,0,0,0,0,0,0,118,18,82,52,204,121,120,98,0,0,0,0,0,0,0,50,204,204,204,70,236,238,220,238,255,239,0,0,0,0,0,0,115,67,38,135,204,19,131,34,0,0,0,0,0,0,0,99,116,204,39,35,229,238,221,252,239,254,0,0,0,0,0,0,0,0,34,68,222,221,0,0,0,0,0,0,0,0,0,97,36,204,71,54,245,223,221,253,239,255,0,0,0,0,0,0,0,0,82,71,220,238,0,0,0,0,0,0,0,0,0,87,66,204,115,87,236,253,255,255,255,255,0,0,0,0,0,0,0,0,37,104,238,205,0,0,0,0,0,0,0,0,0,151,86,204,130,150,220,253,255,255,255,255,0,0,0,0,0,0,0,0,33,40,238,236,0,0,0,204,204,204,40,204,148,85,204,51,52,204,204,76,68,132,39,197,204,60,98,102,70,195,84,33,204,119,102,51,85,69,0,204,204,204,131,204,23,114,204,99,97,204,204,108,39,34,50,195,204,140,136,57,67,196,54,114,204,37,153,153,34,119,0,99,38,204,149,150,83,204,130,137,98,55,114,105,199,204,204,44,152,87,198,204,204,76,0,0,0,0,0,0,0,0,0,87,85,204,68,114,133,204,151,86,118,71,41,51,197,204,204,140,134,85,198,204,204,108,0,0,0,0,0,0,0,0,0,204,103,150,38,204,204,23,204,115,87,204,60,34,197,124,194,124,38,67,195,204,60,85,0,0,0,0,0,0,0,0,0,204,20,69,40,204,204,68,204,135,133,204,140,88,197,156,196,156,33,54,195,204,60,39,0,0,0,0,0,0,0,0,0,204,132,34,101,72,115,204,72,69,34,115,98,71,149,51,193,156,114,105,119,82,200,124,0,0,0,0,0,0,0,0,0,204,88,148,150,114,51,204,116,82,50,73,133,82,51,150,199,108,119,104,66,119,201,124,0,0,0,0,0,0,0,0,0,38,204,37,70,101,204,147,114,114,119,34,34,148,83,147,35,193,140,118,69,194,140,200,0,0,0,0,0,0,0,0,0,0,0,0,0,34,17,170,241,159,249,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,98,19,170,243,239,254,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,49,170,209,185,154,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,17,170,209,221,237,251,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,36,65,181,174,252,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,17,17,193,154,249,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,17,226,254,255,223,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,18,211,252,255,159,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,52,53,34,170,17,170,74,165,170,170,26,161,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,170,170,33,21,19,170,18,170,26,161,170,170,106,165,170,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,170,33,20,53,99,67,18,17,65,161,42,17,17,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
+  {0,0,0,0,85,118,37,34,34,0,0,0,0,0,0,183,216,221,0,0,0,0,208,14,0,0,0,18,68,0,144,9,0,0,0,0,85,182,37,34,34,0,0,0,0,0,0,187,200,221,0,0,0,0,208,14,0,0,0,18,68,0,153,153,0,0,0,0,85,136,43,34,34,0,0,0,0,0,0,139,216,205,0,0,0,0,208,14,0,0,18,34,18,65,153,153,0,0,0,0,85,136,43,34,34,0,0,0,0,0,0,123,203,205,0,0,0,0,192,14,0,0,33,18,17,34,153,153,0,0,0,0,120,85,40,34,34,0,0,0,0,184,135,191,191,136,139,139,0,0,208,14,0,0,36,18,17,17,153,153,0,0,0,0,123,85,43,34,34,0,0,0,0,119,123,187,119,123,134,184,205,220,221,205,220,220,18,36,33,33,153,153,0,0,0,0,184,187,39,34,34,0,0,0,0,187,103,135,184,187,187,123,221,220,220,205,221,221,34,17,17,34,153,153,0,0,0,0,136,183,39,34,34,0,0,0,0,0,48,9,0,0,0,0,220,221,221,204,204,205,33,18,33,34,153,153,136,136,139,139,187,107,187,139,136,104,119,135,184,0,48,9,0,224,239,255,15,0,144,9,0,0,33,34,33,17,153,153,184,123,123,139,184,183,120,119,183,187,107,139,184,0,48,3,0,239,238,238,255,0,144,9,0,0,0,0,0,0,153,153,184,123,85,183,183,136,136,87,181,107,91,85,101,51,51,51,51,254,238,238,254,0,144,9,0,0,0,0,0,0,153,153,34,34,34,34,136,139,43,34,34,34,82,85,133,51,51,51,51,238,255,254,238,153,153,153,153,0,0,0,0,0,0,0,34,34,34,34,135,183,40,34,34,34,82,181,184,51,51,51,51,238,238,238,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,239,255,238,238,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
 };
 const uint16_t skin_pal[9][16] = {
-  {0x0000,0x05B6,0x0534,0x644A,0x0471,0x4BA7,0x5B6A,0x4346,0x0B4B,0x3B25,0x3AA5,0x1AE8,0x49F5,0x39CA,0x314E,0x2106},
-  {0x0000,0xC618,0xAD55,0xA534,0xA514,0xA514,0x9CD3,0x9CD3,0x94B2,0x9492,0x8C71,0x8C51,0x8C51,0x8430,0x7BCF,0x4A49},
-  {0x0000,0xCEF8,0xC698,0xA6D3,0x9E92,0x7EAE,0x7E4D,0x5E89,0x5E29,0x65EA,0x5D0A,0x45A6,0x1D03,0x546A,0x3C66,0x2AC4},
-  {0x0000,0x5227,0x41E6,0x41C6,0x39A5,0x3985,0x3185,0x3164,0x3124,0x2924,0x2102,0x20C2,0x18C2,0x18C1,0x18A2,0x1061},
-  {0x0000,0xF575,0xED14,0xECF3,0xECB2,0xEC92,0xEC71,0xE471,0xEC30,0xEC0F,0xE40F,0xDC0F,0xE3AE,0xDB8E,0xE34D,0xAAAA},
-  {0x0000,0xCE59,0xFD96,0xB596,0xF575,0xA514,0xCC92,0xB430,0x8410,0x62CB,0x41A4,0x41A4,0x3984,0x3186,0x3143,0x10A2},
-  {0x0000,0xEF5D,0xE71C,0xDEDB,0xD6BA,0xD69A,0xCE59,0xCD94,0xC574,0xC532,0xBCF1,0xB4D0,0xB4AF,0xAC6E,0xA40D,0x72E9},
-  {0x0000,0xFFFF,0xFFDF,0xF79E,0xF79E,0xEF7D,0xEF7D,0xEF5D,0xEF5D,0xE73C,0xE73C,0xE73C,0xE71C,0xDEFB,0xDEFB,0xD6BA},
-  {0x0000,0xFFFF,0xE71C,0xD69A,0xC638,0xE66D,0xC488,0x9386,0xF800,0x62A8,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xF70B,0x5C47,0x6AE6,0x7286,0x7286,0x6A86,0x6A86,0x6A66,0x6A66,0x6246,0x6225,0x5A25,0x5A05,0x51E5,0x49C4},
+  {0x0000,0xB5EB,0x5487,0x5466,0x4C46,0x4C26,0x4C06,0x3B65,0x7286,0x91EC,0x89CB,0x81CB,0x81AB,0x6245,0x51C4,0x5967},
+  {0x0000,0xBCAE,0xA347,0xA347,0xA327,0xA327,0x9B27,0x9B07,0x9B06,0x92A6,0x7A65,0x7245,0x5B0D,0x7225,0x6A25,0x4184},
+  {0x0000,0xEDA7,0x53EC,0x1A6A,0x1A69,0x1A49,0x1A49,0x1A29,0x1A28,0x1A08,0x19E8,0x19E7,0x19E7,0x19C7,0x11C7,0x1186},
+  {0x0000,0xF75B,0xE71A,0x732D,0x3187,0x3167,0x3166,0x3166,0x2946,0x2946,0x2946,0x2946,0x2925,0x2125,0x2105,0x2105},
+  {0x0000,0x9CD4,0x73F2,0x73F2,0x6BD1,0x6BB1,0x6BB0,0x636F,0x634F,0x634F,0x5B4F,0x5B2E,0x52ED,0x4AAC,0x426B,0x31E9},
+  {0x0000,0x9BAA,0x936A,0x936A,0x934A,0x8B4A,0x8B29,0x8329,0x82E9,0x82E8,0x7AE8,0x7AC8,0x7AC8,0x7AC8,0x72A8,0x6246},
+  {0x0000,0xE6FF,0xE6DE,0xDEBE,0xDE9D,0xDE7D,0xD67C,0xD65C,0xCE3B,0xCE1B,0xC5FA,0xC5FA,0xC5DA,0xBDB9,0xB578,0xAD16},
+  {0x0000,0xF759,0xEF19,0xF5C7,0xDE95,0x4536,0x3494,0x3494,0x2C73,0xE425,0x542F,0x2C32,0x2BF1,0x2390,0x232D,0x1AAC},
 };
-const uint8_t cracks[10][32] = {{0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,128,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,64,0,64,0,192,2,128,3,0,1,0,1,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,64,0,64,0,64,12,192,14,128,3,0,1,0,1,128,1,128,0,0,0,0,0,0,0},{0,0,0,0,0,0,128,0,192,0,64,18,96,30,224,14,128,3,0,1,0,1,192,1,192,0,0,0,0,0,0,0},{0,0,0,0,0,1,128,1,192,34,64,50,112,30,248,14,136,3,0,1,0,1,224,1,224,1,0,1,0,0,0,0},{0,0,0,0,64,3,192,3,192,98,80,114,112,30,248,14,140,3,4,1,32,1,224,1,240,1,16,3,0,2,0,0},{0,0,32,0,96,3,192,3,208,98,80,114,112,30,248,14,140,11,20,1,52,3,224,3,240,1,24,15,8,14,0,0},{0,0,48,0,112,3,204,35,220,102,80,246,112,158,248,14,172,11,52,25,52,19,224,15,242,13,30,15,28,31,16,17},{64,65,120,20,122,55,206,35,222,102,82,246,112,158,248,14,172,11,52,89,53,115,227,47,242,45,30,15,60,63,52,113},{68,85,124,20,122,55,206,35,223,102,83,246,112,158,251,14,175,139,52,217,53,115,227,47,242,237,30,207,60,63,52,113}};
+const uint8_t cracks[10][32] = {{0,0,0,0,0,0,0,0,0,0,0,0,128,1,64,1,32,1,16,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,0,0,0,0,0,0,0,136,1,76,1,48,1,16,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,1,0,1,0,1,0,1,136,1,78,1,56,1,16,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,3,0,5,0,1,0,1,139,1,206,3,56,1,16,0,0,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,3,0,5,208,1,80,1,171,1,222,3,56,1,16,0,32,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,3,8,5,216,1,120,1,235,1,222,3,120,1,24,0,32,0,0,0,0,0,0,0,0,0,0,0},{0,0,0,0,0,3,8,5,216,1,120,1,235,1,222,3,248,1,120,0,96,0,16,0,16,0,0,0,0,0,0,0},{2,0,4,0,4,3,8,5,217,1,121,9,235,5,222,3,253,1,120,0,96,0,16,0,16,0,0,0,0,0,0,0},{2,0,5,0,5,3,12,5,219,3,249,9,235,5,222,3,253,1,248,1,224,0,144,0,16,0,0,0,0,0,0,0},{2,0,5,0,21,3,44,5,219,3,251,9,239,7,222,3,253,3,249,13,230,0,152,0,16,0,0,0,0,0,0,0}};
 const uint16_t tab_items[586] = {1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,26,29,30,31,32,33,34,35,39,43,47,55,56,57,58,59,60,61,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,95,96,97,98,99,100,101,102,103,104,106,107,108,114,115,117,118,128,136,137,139,140,142,145,146,148,149,150,151,159,161,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,187,193,194,195,208,209,214,215,216,217,218,219,20,21,22,23,24,25,51,52,53,54,62,63,64,65,66,83,84,85,86,87,88,89,90,91,92,93,94,109,116,119,130,134,138,141,144,158,160,162,191,192,196,198,200,202,204,206,338,105,337,135,324,325,329,331,333,334,335,336,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,39,43,47,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,114,115,116,117,118,119,128,130,134,135,136,137,138,139,140,141,142,144,145,146,148,149,150,151,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,187,191,192,193,194,195,196,198,200,202,204,206,208,209,214,215,216,217,218,219,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384,257,258,259,260,262,263,264,265,267,268,269,270,272,273,274,275,277,278,279,280,281,282,339,340,341,256,261,266,271,276,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,326,327,328,330,332,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357};
 const uint16_t tab_start[13] = {0,116,163,165,166,174,467,494,519,546,546,586,586};
-const char *const tab_name[12] = {T("Building Blocks"),T("Decoration Blocks"),T("Redstone"),T("Transportation"),T("Miscellaneous"),T("Search Items"),T("Foodstuffs"),T("Tools"),T("Combat"),T("Brewing"),T("Materials"),T("Survival Inventory")};
-const uint8_t font_bits[96 * 8] = {0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,10,10,5,0,0,0,0,0,10,10,31,10,31,10,10,0,4,30,1,14,16,15,4,0,17,9,8,4,2,18,17,0,4,10,4,22,13,9,22,0,2,2,1,0,0,0,0,0,12,2,1,1,1,2,12,0,3,4,8,8,8,4,3,0,0,0,9,6,9,0,0,0,0,4,4,31,4,4,0,0,0,0,0,0,0,1,1,1,0,0,0,31,0,0,0,0,0,0,0,0,0,1,1,0,16,8,8,4,2,2,1,0,14,17,25,21,19,17,14,0,4,6,4,4,4,4,31,0,14,17,16,12,2,17,31,0,14,17,16,12,16,17,14,0,24,20,18,17,31,16,16,0,31,1,15,16,16,17,14,0,12,2,1,15,17,17,14,0,31,17,16,8,4,4,4,0,14,17,17,14,17,17,14,0,14,17,17,30,16,8,6,0,0,1,1,0,0,1,1,0,0,1,1,0,0,1,1,1,8,4,2,1,2,4,8,0,0,0,31,0,0,31,0,0,1,2,4,8,4,2,1,0,14,17,16,8,4,0,4,0,30,33,45,45,61,1,30,0,14,17,31,17,17,17,17,0,15,17,15,17,17,17,15,0,14,17,1,1,1,17,14,0,15,17,17,17,17,17,15,0,31,1,7,1,1,1,31,0,31,1,7,1,1,1,1,0,30,1,25,17,17,17,14,0,17,17,31,17,17,17,17,0,7,2,2,2,2,2,7,0,16,16,16,16,16,17,14,0,17,9,7,9,17,17,17,0,1,1,1,1,1,1,31,0,17,27,21,17,17,17,17,0,17,19,21,25,17,17,17,0,14,17,17,17,17,17,14,0,15,17,15,1,1,1,1,0,14,17,17,17,17,9,22,0,15,17,15,17,17,17,17,0,30,1,14,16,16,17,14,0,31,4,4,4,4,4,4,0,17,17,17,17,17,17,14,0,17,17,17,17,10,10,4,0,17,17,17,17,21,27,17,0,17,10,4,10,17,17,17,0,17,10,4,4,4,4,4,0,31,16,8,4,2,1,31,0,7,1,1,1,1,1,7,0,1,2,2,4,8,8,16,0,7,4,4,4,4,4,7,0,4,10,17,0,0,0,0,0,0,0,0,0,0,0,0,31,1,1,2,0,0,0,0,0,0,0,14,16,30,17,30,0,1,1,13,19,17,17,15,0,0,0,14,17,1,17,14,0,16,16,22,25,17,17,30,0,0,0,14,17,31,1,30,0,12,2,15,2,2,2,2,0,0,0,30,17,17,30,16,15,1,1,13,19,17,17,17,0,1,0,1,1,1,1,1,0,16,0,16,16,16,17,17,14,1,1,9,5,3,5,9,0,1,1,1,1,1,1,2,0,0,0,11,21,21,17,17,0,0,0,15,17,17,17,17,0,0,0,14,17,17,17,14,0,0,0,13,19,17,15,1,1,0,0,22,25,17,30,16,16,0,0,13,19,1,1,1,0,0,0,30,1,14,16,15,0,2,2,7,2,2,2,4,0,0,0,17,17,17,17,30,0,0,0,17,17,17,10,4,0,0,0,17,17,21,21,30,0,0,0,17,10,4,10,17,0,0,0,17,17,17,30,16,15,0,0,31,8,4,2,31,0,12,2,2,1,2,2,12,0,1,1,1,0,1,1,1,0,3,4,4,8,4,4,3,0,38,25,0,0,0,0,0,0,0,0,4,10,17,17,31,0};
-const uint8_t font_w[96] = {4,2,5,6,6,6,6,3,5,5,5,6,2,6,2,6,6,6,6,6,6,6,6,6,6,6,2,2,5,6,5,6,7,6,6,6,6,6,6,6,6,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,4,6,4,6,6,3,6,6,6,6,6,5,6,6,2,6,5,3,6,6,6,6,6,6,6,4,6,6,6,6,6,6,5,2,5,7,6};
-const uint8_t img_rle[23445] = {1,111,155,2,0,96,31,155,96,1,96,31,156,32,96,0,96,18,47,153,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,35,95,1,48,95,37,48,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,48,31,1,80,111,36,16,47,78,65,96,96,17,35,95,1,48,80,111,36,16,39,95,1,48,95,1,48,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,4,95,1,48,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,4,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,42,48,39,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,42,49,38,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,42,50,37,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,42,51,36,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,42,52,35,80,63,0,16,43,65,96,96,17,35,48,31,1,80,111,36,16,39,48,31,1,48,31,1,33,62,34,80,63,0,16,43,65,96,96,17,35,95,1,48,80,111,36,16,39,95,1,48,95,1,48,33,63,0,33,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,33,62,34,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,42,52,35,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,42,51,36,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,42,50,37,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,42,49,38,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,42,48,39,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,4,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,4,80,63,0,16,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,4,48,31,1,43,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,80,63,0,16,80,111,36,16,39,80,63,0,16,80,63,0,16,47,34,65,96,96,17,35,48,31,1,80,111,36,16,39,48,31,1,48,31,1,47,34,65,96,96,17,35,95,1,48,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,80,63,0,16,80,111,36,16,47,78,65,96,96,17,35,48,31,1,48,31,37,47,78,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,153,66,96,0,96,32,79,156,96,1,96,79,155,96,0,2,111,155,1,1,111,155,2,0,96,31,155,96,1,96,31,156,32,96,0,96,18,47,153,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,10,95,1,48,95,1,48,95,1,48,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,20,95,9,48,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,20,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,20,80,63,8,16,47,12,65,96,96,17,47,10,48,31,1,48,31,1,48,31,1,47,20,80,63,8,16,47,12,65,96,96,17,47,10,95,1,48,95,1,48,95,1,48,47,20,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,48,45,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,49,44,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,50,43,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,51,42,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,52,41,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,53,40,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,38,63,5,39,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,38,63,6,38,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,38,63,5,39,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,53,40,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,52,41,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,51,42,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,50,43,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,49,44,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,5,48,45,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,20,80,63,8,16,47,12,65,96,96,17,47,10,48,31,1,48,31,1,48,31,1,47,20,80,63,8,16,47,12,65,96,96,17,47,10,95,1,48,95,1,48,95,1,48,47,20,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,20,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,20,80,63,8,16,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,20,48,31,9,47,12,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,80,63,0,16,80,63,0,16,80,63,0,16,47,74,65,96,96,17,47,10,48,31,1,48,31,1,48,31,1,47,74,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,153,66,96,0,96,32,79,156,96,1,96,79,155,96,0,2,111,155,1,1,111,155,2,0,96,31,155,96,1,96,31,156,32,96,0,96,18,47,153,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,36,95,1,48,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,22,95,9,48,47,20,65,96,96,17,47,36,80,63,0,16,47,22,80,63,8,16,47,20,65,96,96,17,47,36,80,63,0,16,47,22,80,63,8,16,47,20,65,96,96,17,47,36,48,31,1,47,22,80,63,8,16,47,20,65,96,96,17,47,92,80,63,8,16,47,20,65,96,96,17,47,75,48,47,0,80,63,8,16,47,20,65,96,96,17,47,75,49,46,80,63,8,16,47,20,65,96,96,17,47,39,48,40,48,47,9,50,45,80,63,8,16,47,20,65,96,96,17,47,39,48,40,48,47,9,51,44,80,63,8,16,47,20,65,96,96,17,47,40,48,34,48,34,48,47,10,52,43,80,63,8,16,47,20,65,96,96,17,47,40,48,34,48,34,48,47,10,53,42,80,63,8,16,47,20,65,96,96,17,47,39,49,35,48,33,49,42,63,5,41,80,63,8,16,47,20,65,96,96,17,47,39,49,35,48,33,49,42,63,6,40,80,63,8,16,47,20,65,96,96,17,47,38,50,34,49,33,50,41,63,5,41,80,63,8,16,47,20,65,96,96,17,47,38,49,35,49,34,49,47,8,53,42,80,63,8,16,47,20,65,96,96,17,47,38,49,34,50,34,49,47,8,52,43,80,63,8,16,47,20,65,96,96,17,47,38,50,33,49,34,50,47,8,51,44,80,63,8,16,47,20,65,96,96,17,47,39,49,33,49,34,49,47,9,50,45,80,63,8,16,47,20,65,96,96,17,47,39,49,33,50,33,49,47,9,49,46,80,63,8,16,47,20,65,96,96,17,47,38,50,33,50,33,50,47,8,48,47,0,80,63,8,16,47,20,65,96,96,17,47,92,80,63,8,16,47,20,65,96,96,17,47,92,80,63,8,16,47,20,65,96,96,17,47,36,95,1,48,47,22,80,63,8,16,47,20,65,96,96,17,47,36,80,63,0,16,47,22,80,63,8,16,47,20,65,96,96,17,47,36,80,63,0,16,47,22,80,63,8,16,47,20,65,96,96,17,47,36,80,63,0,16,47,22,48,31,9,47,20,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,80,63,0,16,47,84,65,96,96,17,47,36,48,31,1,47,84,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,153,66,96,0,96,32,79,156,96,1,96,79,155,96,0,2,111,155,1,1,111,155,2,0,96,31,155,96,1,96,31,156,32,96,0,96,18,47,153,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,35,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,65,96,96,17,35,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,154,65,96,96,17,47,153,66,96,0,96,32,79,156,96,1,96,79,155,96,0,2,111,155,1,1,111,174,2,0,96,31,174,96,1,96,31,175,32,96,0,96,18,47,172,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,36,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,92,48,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,80,59,16,35,65,96,96,17,36,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,80,59,16,35,65,96,96,17,36,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,80,59,16,35,65,96,96,17,36,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,80,59,16,35,65,96,96,17,36,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,80,59,16,35,65,96,96,17,47,155,80,59,16,35,65,96,96,17,47,155,80,59,16,35,65,96,96,17,47,155,80,59,16,35,65,96,96,17,47,155,80,59,16,35,65,96,96,17,36,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,95,1,48,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,80,63,0,16,35,80,59,16,35,65,96,96,17,36,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,48,31,1,35,48,28,35,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,173,65,96,96,17,47,172,66,96,0,96,32,79,175,96,1,96,79,174,96,0,2,111,174,1};
-const uint32_t img_rows[801] = {0,4,10,16,22,28,34,40,53,68,83,98,113,128,143,158,173,188,203,218,233,248,263,278,293,307,328,352,376,400,424,448,472,496,520,544,572,601,631,661,691,721,751,778,806,836,866,896,926,956,986,1015,1044,1072,1096,1120,1144,1168,1192,1216,1240,1261,1275,1290,1305,1320,1335,1350,1365,1380,1395,1410,1425,1440,1455,1470,1485,1500,1515,1528,1534,1540,1546,1552,1585,1627,1669,1711,1753,1795,1837,1879,1921,1963,2005,2047,2089,2131,2173,2215,2257,2290,2323,2365,2407,2449,2491,2533,2575,2617,2659,2701,2743,2785,2827,2869,2911,2953,2995,3028,3061,3103,3145,3187,3229,3271,3313,3355,3397,3439,3481,3523,3565,3607,3649,3691,3733,3766,3772,3778,3784,3790,3823,3865,3907,3949,3991,4033,4075,4117,4159,4201,4243,4285,4327,4369,4411,4453,4495,4528,4534,4540,4546,4552,4558,4564,4568,4572,4578,4584,4590,4596,4602,4608,4614,4620,4626,4632,4638,4644,4650,4656,4662,4679,4699,4719,4739,4759,4779,4799,4819,4839,4859,4879,4899,4919,4939,4964,4990,5016,5039,5062,5090,5118,5146,5174,5202,5230,5258,5286,5314,5342,5370,5398,5426,5454,5482,5508,5531,5554,5580,5606,5631,5651,5671,5691,5711,5731,5751,5771,5791,5811,5831,5851,5871,5891,5908,5914,5920,5926,5932,5938,5944,5950,5956,5962,5968,5974,5980,5986,6019,6061,6103,6145,6187,6229,6271,6313,6355,6397,6439,6481,6523,6565,6607,6649,6691,6724,6757,6799,6841,6883,6925,6967,7009,7051,7093,7135,7177,7219,7261,7303,7345,7387,7429,7462,7495,7537,7579,7621,7663,7705,7747,7789,7831,7873,7915,7957,7999,8041,8083,8125,8167,8200,8206,8212,8218,8224,8257,8299,8341,8383,8425,8467,8509,8551,8593,8635,8677,8719,8761,8803,8845,8887,8929,8962,8968,8974,8980,8986,8992,8998,9002,9006,9012,9018,9024,9030,9036,9042,9048,9054,9060,9066,9072,9078,9084,9090,9096,9107,9119,9131,9143,9155,9167,9179,9191,9203,9215,9227,9239,9251,9263,9280,9298,9316,9333,9345,9360,9374,9393,9412,9433,9454,9475,9496,9517,9538,9559,9580,9601,9622,9644,9656,9668,9685,9703,9721,9738,9750,9762,9774,9786,9798,9810,9822,9834,9846,9858,9870,9882,9894,9905,9911,9917,9923,9929,9935,9941,9947,9953,9959,9965,9971,9977,9983,10016,10058,10100,10142,10184,10226,10268,10310,10352,10394,10436,10478,10520,10562,10604,10646,10688,10721,10754,10796,10838,10880,10922,10964,11006,11048,11090,11132,11174,11216,11258,11300,11342,11384,11426,11459,11492,11534,11576,11618,11660,11702,11744,11786,11828,11870,11912,11954,11996,12038,12080,12122,12164,12197,12203,12209,12215,12221,12254,12296,12338,12380,12422,12464,12506,12548,12590,12632,12674,12716,12758,12800,12842,12884,12926,12959,12965,12971,12977,12983,12989,12995,12999,13003,13009,13015,13021,13027,13033,13039,13045,13051,13057,13063,13069,13075,13081,13087,13093,13099,13132,13174,13216,13258,13300,13342,13384,13426,13468,13510,13552,13594,13636,13678,13720,13762,13804,13837,13870,13912,13954,13996,14038,14080,14122,14164,14206,14248,14290,14332,14374,14416,14458,14500,14542,14575,14608,14650,14692,14734,14776,14818,14860,14902,14944,14986,15028,15070,15112,15154,15196,15238,15280,15313,15319,15325,15331,15337,15343,15349,15355,15361,15367,15373,15379,15385,15391,15424,15466,15508,15550,15592,15634,15676,15718,15760,15802,15844,15886,15928,15970,16012,16054,16096,16129,16162,16204,16246,16288,16330,16372,16414,16456,16498,16540,16582,16624,16666,16708,16750,16792,16834,16867,16900,16942,16984,17026,17068,17110,17152,17194,17236,17278,17320,17362,17404,17446,17488,17530,17572,17605,17611,17617,17623,17629,17662,17704,17746,17788,17830,17872,17914,17956,17998,18040,18082,18124,18166,18208,18250,18292,18334,18367,18373,18379,18385,18391,18397,18403,18407,18411,18417,18423,18429,18435,18441,18447,18453,18459,18465,18471,18477,18483,18489,18495,18501,18507,18543,18589,18635,18681,18727,18773,18819,18865,18911,18957,19003,19049,19095,19141,19187,19233,19279,19316,19353,19399,19445,19491,19537,19583,19629,19675,19721,19767,19813,19859,19905,19951,19997,20043,20089,20126,20163,20209,20255,20301,20347,20393,20439,20485,20531,20577,20623,20669,20715,20761,20807,20853,20899,20936,20973,21019,21065,21111,21157,21203,21249,21295,21341,21387,21433,21479,21525,21571,21617,21663,21709,21746,21783,21829,21875,21921,21967,22013,22059,22105,22151,22197,22243,22289,22335,22381,22427,22473,22519,22556,22566,22576,22586,22596,22633,22679,22725,22771,22817,22863,22909,22955,23001,23047,23093,23139,23185,23231,23277,23323,23369,23405,23411,23417,23423,23429,23435,23441};
-const uint16_t img_row0[5] = {0,166,332,498,665};
-const uint8_t img_w[5] = {176,176,176,176,195};
-const uint8_t img_h[5] = {166,166,166,167,136};
+const char *const tab_name[12] = {T("Building"),T("Nature and Decor"),T("Gadgets"),T("Travel"),T("Other"),T("Search"),T("Food"),T("Tools"),T("Fighting"),T("Unused"),T("Materials"),T("Your Bag")};
+const uint8_t font_bits[96 * 8] = {0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,5,5,0,0,0,0,0,0,10,31,10,10,31,10,0,0,4,30,5,14,20,15,4,0,19,11,4,2,25,24,0,0,6,9,6,25,9,22,0,0,1,1,0,0,0,0,0,0,2,1,1,1,1,1,2,0,1,2,2,2,2,2,1,0,0,5,2,5,0,0,0,0,0,4,4,31,4,4,0,0,0,0,0,0,0,2,1,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,1,0,16,8,4,2,1,0,0,0,14,25,21,21,19,17,14,0,2,3,2,2,2,2,7,0,14,17,16,12,2,1,31,0,15,16,8,14,16,17,14,0,8,12,10,9,31,8,8,0,31,1,15,16,16,17,14,0,12,2,1,15,17,17,14,0,31,16,8,4,4,2,2,0,14,17,17,14,17,17,14,0,14,17,17,30,16,8,6,0,0,0,1,0,0,1,0,0,0,0,2,0,0,2,1,0,8,4,2,1,2,4,8,0,0,0,15,0,15,0,0,0,1,2,4,8,4,2,1,0,14,17,8,4,4,0,4,0,14,17,29,21,29,1,14,0,14,17,17,31,17,17,17,0,15,17,17,15,17,17,15,0,14,17,1,1,1,17,14,0,7,9,17,17,17,9,7,0,31,1,1,15,1,1,31,0,31,1,1,15,1,1,1,0,14,17,1,29,17,17,30,0,17,17,17,31,17,17,17,0,7,2,2,2,2,2,7,0,28,8,8,8,9,9,6,0,17,9,5,3,5,9,17,0,1,1,1,1,1,1,31,0,17,27,21,21,17,17,17,0,17,19,21,25,17,17,17,0,14,17,17,17,17,17,14,0,15,17,17,15,1,1,1,0,14,17,17,17,21,9,22,0,15,17,17,15,5,9,17,0,30,1,1,14,16,16,15,0,31,4,4,4,4,4,4,0,17,17,17,17,17,17,14,0,17,17,17,17,10,10,4,0,17,17,17,21,21,27,17,0,17,10,4,4,4,10,17,0,17,17,10,4,4,4,4,0,31,16,8,4,2,1,31,0,3,1,1,1,1,1,3,0,1,2,4,8,16,0,0,0,3,2,2,2,2,2,3,0,2,5,0,0,0,0,0,0,0,0,0,0,0,0,0,31,1,2,0,0,0,0,0,0,0,0,14,16,30,17,30,0,1,1,13,19,17,17,15,0,0,0,14,1,1,17,14,0,16,16,22,25,17,17,30,0,0,0,14,17,31,1,14,0,12,2,15,2,2,2,2,0,0,0,30,17,17,30,16,15,1,1,13,19,17,17,17,0,1,0,1,1,1,1,1,0,8,0,12,8,8,8,9,6,1,1,9,5,3,5,9,0,3,2,2,2,2,2,6,0,0,0,11,21,21,17,17,0,0,0,13,19,17,17,17,0,0,0,14,17,17,17,14,0,0,0,15,17,17,15,1,1,0,0,30,17,17,30,16,16,0,0,13,3,1,1,1,0,0,0,30,1,14,16,15,0,2,2,15,2,2,2,12,0,0,0,17,17,17,25,22,0,0,0,17,17,10,10,4,0,0,0,17,17,21,21,10,0,0,0,17,10,4,10,17,0,0,0,17,17,17,30,16,15,0,0,31,8,4,2,31,0,4,2,2,1,2,2,4,0,1,1,1,1,1,1,1,1,1,2,2,4,2,2,1,0,0,0,18,13,0,0,0,0,0,0,0,0,0,0,0,0};
+const uint8_t font_w[96] = {4,2,4,6,6,6,6,2,3,3,4,6,3,5,2,6,6,4,6,6,6,6,6,6,6,6,2,3,5,5,5,6,6,6,6,6,6,6,6,6,6,4,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,3,6,3,4,6,3,6,6,6,6,6,5,6,6,2,5,5,4,6,6,6,6,6,5,6,5,6,6,6,6,6,6,4,2,4,6,1};
+const uint8_t img_rle[25135] = {2,127,178,2,1,113,47,176,113,1,0,112,33,31,176,33,112,0,113,47,180,113,112,47,182,112,112,47,182,112,112,47,42,143,18,47,90,112,112,47,40,143,22,47,88,112,112,47,40,143,22,47,88,112,112,47,39,143,24,47,87,112,112,47,39,143,24,47,87,112,112,41,111,0,35,111,0,40,143,24,47,87,112,112,40,96,79,0,96,33,96,79,0,96,39,143,24,47,87,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,47,87,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,47,87,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,47,87,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,47,87,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,47,87,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,47,87,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,47,87,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,47,87,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,46,111,0,35,111,0,47,36,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,96,33,96,79,0,96,47,35,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,35,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,35,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,35,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,35,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,9,111,8,33,112,112,41,96,62,35,96,62,40,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,96,32,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,41,111,0,35,111,0,40,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,40,96,79,0,96,33,96,79,0,96,39,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,0,112,38,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,0,113,37,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,0,115,35,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,0,116,34,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,46,96,62,35,96,62,34,127,5,32,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,47,38,127,6,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,47,38,127,5,32,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,46,111,0,35,111,0,34,127,4,33,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,96,33,96,79,0,96,47,0,115,35,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,0,114,36,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,0,113,37,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,0,112,38,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,40,96,79,0,48,33,96,79,0,48,39,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,41,96,62,35,96,62,40,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,8,96,79,8,48,32,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,9,96,63,7,33,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,35,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,35,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,35,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,35,112,112,47,39,143,24,45,96,79,0,48,33,96,79,0,48,47,35,112,112,47,39,143,24,46,96,62,35,96,62,47,36,112,112,47,39,143,24,47,87,112,112,47,39,143,24,47,87,112,112,47,39,143,24,47,87,112,112,47,39,143,24,47,87,112,112,47,39,143,24,47,87,112,112,47,39,143,24,47,87,112,112,47,39,143,24,47,87,112,112,47,39,143,24,47,87,112,112,47,40,143,22,47,88,112,112,47,40,143,22,47,88,112,112,47,42,143,18,47,90,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,39,95,164,41,112,112,47,182,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,113,47,180,113,0,112,33,95,176,33,112,0,1,113,47,176,113,1,2,127,178,2,2,127,178,2,1,113,47,176,113,1,0,112,33,31,176,33,112,0,113,47,180,113,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,14,111,0,35,111,0,35,111,0,47,96,112,112,47,13,96,79,0,96,33,96,79,0,96,33,96,79,0,96,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,32,111,8,47,23,112,112,47,14,96,62,35,96,62,35,96,62,47,32,96,79,8,96,47,22,112,112,47,118,96,79,8,48,47,22,112,112,47,118,96,79,8,48,47,22,112,112,47,14,111,0,35,111,0,35,111,0,47,32,96,79,8,48,47,22,112,112,47,13,96,79,0,96,33,96,79,0,96,33,96,79,0,96,47,31,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,31,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,12,112,47,2,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,12,113,47,1,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,12,115,46,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,12,116,45,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,45,127,5,43,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,45,127,6,42,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,45,127,5,43,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,45,127,4,44,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,12,115,46,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,12,114,47,0,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,12,113,47,1,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,12,112,47,2,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,31,96,79,8,48,47,22,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,31,96,79,8,48,47,22,112,112,47,14,96,62,35,96,62,35,96,62,47,32,96,79,8,48,47,22,112,112,47,118,96,79,8,48,47,22,112,112,47,118,96,79,8,48,47,22,112,112,47,14,111,0,35,111,0,35,111,0,47,32,96,79,8,48,47,22,112,112,47,13,96,79,0,96,33,96,79,0,96,33,96,79,0,96,47,32,96,63,7,47,23,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,13,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,95,112,112,47,14,96,62,35,96,62,35,96,62,47,96,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,39,95,164,41,112,112,47,182,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,113,47,180,113,0,112,33,95,176,33,112,0,1,113,47,176,113,1,2,127,178,2,2,127,178,2,1,113,47,176,113,1,0,112,33,31,176,33,112,0,113,47,180,113,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,109,111,8,47,33,112,112,47,108,96,79,8,96,47,32,112,112,47,108,96,79,8,48,47,32,112,112,47,108,96,79,8,48,47,32,112,112,47,4,111,0,47,8,111,0,47,32,96,79,8,48,47,32,112,112,47,3,96,79,0,96,47,6,96,79,0,96,47,31,96,79,8,48,47,32,112,112,47,3,96,79,0,48,40,80,43,96,79,0,48,47,31,96,79,8,48,47,32,112,112,47,3,96,79,0,48,40,80,43,96,79,0,48,47,8,80,47,6,96,79,8,48,47,32,112,112,47,3,96,79,0,48,39,82,42,96,79,0,48,47,8,81,47,5,96,79,8,48,47,32,112,112,47,3,96,79,0,48,39,82,42,96,79,0,48,47,8,83,47,3,96,79,8,48,47,32,112,112,47,3,96,79,0,48,38,84,41,96,79,0,48,47,8,84,47,2,96,79,8,48,47,32,112,112,47,3,96,79,0,48,38,84,41,96,79,0,48,41,95,5,47,0,96,79,8,48,47,32,112,112,47,3,96,79,0,48,37,86,40,96,79,0,48,41,95,6,46,96,79,8,48,47,32,112,112,47,3,96,79,0,48,37,86,40,96,79,0,48,41,95,5,47,0,96,79,8,48,47,32,112,112,47,3,96,79,0,48,36,88,39,96,79,0,48,41,95,4,47,1,96,79,8,48,47,32,112,112,47,3,96,79,0,48,36,88,39,96,79,0,48,47,8,83,47,3,96,79,8,48,47,32,112,112,47,3,96,79,0,48,35,90,38,96,79,0,48,47,8,82,47,4,96,79,8,48,47,32,112,112,47,3,96,79,0,48,35,90,38,96,79,0,48,47,8,81,47,5,96,79,8,48,47,32,112,112,47,3,96,79,0,48,34,92,37,96,79,0,48,47,8,80,47,6,96,79,8,48,47,32,112,112,47,3,96,79,0,48,47,6,96,79,0,48,47,31,96,79,8,48,47,32,112,112,47,3,96,79,0,48,47,6,96,79,0,48,47,31,96,79,8,48,47,32,112,112,47,4,96,62,47,8,96,62,47,32,96,79,8,48,47,32,112,112,47,108,96,79,8,48,47,32,112,112,47,108,96,79,8,48,47,32,112,112,47,108,96,79,8,48,47,32,112,112,47,109,96,63,7,47,33,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,39,95,164,41,112,112,47,182,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,113,47,180,113,0,112,33,95,176,33,112,0,1,113,47,176,113,1,2,127,178,2,2,127,178,2,1,113,47,176,113,1,0,112,33,31,176,33,112,0,113,47,180,113,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,39,95,164,41,112,112,47,182,112,112,47,182,112,112,47,182,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,43,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,42,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,43,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,112,47,182,112,113,47,180,113,0,112,33,95,176,33,112,0,1,113,47,176,113,1,2,127,178,2,2,127,194,2,1,113,47,192,113,1,0,112,33,31,192,33,112,0,113,47,196,113,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,42,105,38,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,40,107,37,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,40,109,36,112,112,47,179,109,36,112,112,47,179,109,36,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,40,109,36,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,40,109,36,112,112,47,179,109,36,112,112,47,179,109,36,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,40,109,36,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,40,109,36,112,112,47,179,109,36,112,112,47,179,109,36,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,40,109,36,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,40,109,36,112,112,47,179,109,36,112,112,47,179,109,36,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,40,109,36,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,39,109,36,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,41,107,37,112,112,47,181,105,38,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,47,198,112,112,41,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,35,111,0,47,12,112,112,40,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,33,96,79,0,96,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,40,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,33,96,79,0,48,47,11,112,112,41,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,35,96,62,47,12,112,112,47,198,112,112,47,198,112,112,47,198,112,113,47,196,113,0,112,33,95,192,33,112,0,1,113,47,192,113,1,2,127,194,2};
+const uint32_t img_rows[868] = {0,4,10,18,22,26,30,38,46,54,62,70,83,100,117,134,151,168,185,202,219,236,259,286,313,340,367,394,424,452,475,498,526,558,590,624,658,692,726,756,780,805,835,869,903,937,971,1003,1035,1063,1086,1109,1132,1154,1172,1190,1208,1226,1244,1258,1266,1274,1282,1290,1298,1306,1314,1322,1330,1338,1346,1350,1354,1358,1362,1366,1370,1374,1378,1382,1386,1390,1394,1398,1402,1406,1410,1414,1444,1492,1540,1588,1636,1684,1732,1780,1828,1876,1924,1972,2020,2068,2116,2164,2212,2242,2246,2250,2280,2328,2376,2424,2472,2520,2568,2616,2664,2712,2760,2808,2856,2904,2952,3000,3048,3078,3082,3086,3116,3164,3212,3260,3308,3356,3404,3452,3500,3548,3596,3644,3692,3740,3788,3836,3884,3914,3918,3922,3926,3930,3936,3940,3944,3948,3978,4026,4074,4122,4170,4218,4266,4314,4362,4410,4458,4506,4554,4602,4650,4698,4746,4776,4780,4784,4788,4792,4796,4800,4808,4814,4818,4822,4828,4836,4840,4844,4848,4852,4856,4860,4864,4868,4872,4876,4880,4894,4914,4934,4954,4974,4994,5014,5034,5054,5074,5094,5114,5134,5154,5174,5194,5218,5238,5248,5258,5278,5304,5330,5359,5388,5416,5444,5472,5500,5528,5556,5584,5613,5642,5671,5697,5723,5743,5753,5763,5783,5808,5828,5848,5868,5888,5908,5928,5948,5968,5988,6008,6028,6048,6068,6088,6108,6122,6126,6130,6134,6138,6142,6146,6150,6154,6158,6162,6166,6170,6174,6178,6182,6212,6260,6308,6356,6404,6452,6500,6548,6596,6644,6692,6740,6788,6836,6884,6932,6980,7010,7014,7018,7048,7096,7144,7192,7240,7288,7336,7384,7432,7480,7528,7576,7624,7672,7720,7768,7816,7846,7850,7854,7884,7932,7980,8028,8076,8124,8172,8220,8268,8316,8364,8412,8460,8508,8556,8604,8652,8682,8686,8690,8694,8698,8704,8708,8712,8716,8746,8794,8842,8890,8938,8986,9034,9082,9130,9178,9226,9274,9322,9370,9418,9466,9514,9544,9548,9552,9556,9560,9564,9568,9576,9582,9586,9590,9596,9604,9608,9612,9616,9620,9624,9628,9632,9636,9640,9644,9648,9652,9656,9660,9664,9668,9672,9676,9680,9684,9688,9692,9696,9700,9704,9708,9712,9716,9724,9734,9744,9754,9772,9794,9817,9843,9869,9895,9921,9947,9972,9998,10024,10050,10076,10102,10128,10150,10172,10190,10200,10210,10220,10229,10233,10237,10241,10245,10249,10253,10257,10261,10265,10269,10273,10277,10281,10285,10289,10293,10297,10301,10305,10309,10313,10317,10321,10325,10329,10333,10337,10341,10345,10349,10379,10427,10475,10523,10571,10619,10667,10715,10763,10811,10859,10907,10955,11003,11051,11099,11147,11177,11181,11185,11215,11263,11311,11359,11407,11455,11503,11551,11599,11647,11695,11743,11791,11839,11887,11935,11983,12013,12017,12021,12051,12099,12147,12195,12243,12291,12339,12387,12435,12483,12531,12579,12627,12675,12723,12771,12819,12849,12853,12857,12861,12865,12871,12875,12879,12883,12913,12961,13009,13057,13105,13153,13201,13249,13297,13345,13393,13441,13489,13537,13585,13633,13681,13711,13715,13719,13723,13727,13731,13735,13743,13749,13753,13757,13763,13771,13775,13779,13783,13787,13791,13795,13799,13803,13807,13811,13815,13845,13893,13941,13989,14037,14085,14133,14181,14229,14277,14325,14373,14421,14469,14517,14565,14613,14643,14647,14651,14681,14729,14777,14825,14873,14921,14969,15017,15065,15113,15161,15209,15257,15305,15353,15401,15449,15479,15483,15487,15517,15565,15613,15661,15709,15757,15805,15853,15901,15949,15997,16045,16093,16141,16189,16237,16285,16315,16319,16323,16327,16331,16335,16339,16343,16347,16351,16355,16359,16363,16367,16371,16375,16405,16453,16501,16549,16597,16645,16693,16741,16789,16837,16885,16933,16981,17029,17077,17125,17173,17203,17207,17211,17241,17289,17337,17385,17433,17481,17529,17577,17625,17673,17721,17769,17817,17865,17913,17961,18009,18039,18043,18047,18077,18125,18173,18221,18269,18317,18365,18413,18461,18509,18557,18605,18653,18701,18749,18797,18845,18875,18879,18883,18887,18891,18897,18901,18905,18909,18939,18987,19035,19083,19131,19179,19227,19275,19323,19371,19419,19467,19515,19563,19611,19659,19707,19737,19741,19745,19749,19753,19757,19761,19769,19775,19779,19783,19789,19797,19801,19805,19809,19813,19817,19821,19825,19829,19833,19837,19841,19845,19849,19853,19885,19935,19985,20035,20085,20135,20185,20235,20285,20335,20385,20435,20485,20535,20585,20635,20685,20717,20723,20729,20761,20811,20861,20911,20961,21011,21061,21111,21161,21211,21261,21311,21361,21411,21461,21511,21561,21593,21599,21605,21637,21687,21737,21787,21837,21887,21937,21987,22037,22087,22137,22187,22237,22287,22337,22387,22437,22469,22475,22481,22513,22563,22613,22663,22713,22763,22813,22863,22913,22963,23013,23063,23113,23163,23213,23263,23313,23345,23351,23357,23389,23439,23489,23539,23589,23639,23689,23739,23789,23839,23889,23939,23989,24039,24089,24139,24189,24221,24227,24231,24235,24239,24243,24247,24251,24255,24286,24335,24384,24433,24482,24531,24580,24629,24678,24727,24776,24825,24874,24923,24972,25021,25070,25101,25105,25109,25113,25117,25125,25131};
+const uint16_t img_row0[5] = {0,180,360,540,720};
+const uint8_t img_w[5] = {200,200,200,200,216};
+const uint8_t img_h[5] = {180,180,180,180,148};
 const uint16_t img_pal[5][16] = {
-  {0x0000,0xFFFF,0xC638,0x8C51,0x52AA,0x31A6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x8C51,0x52AA,0x31A6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x8C51,0x52AA,0x31A6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x8C51,0x52AA,0x31A6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
-  {0x0000,0xFFFF,0xC638,0x8C51,0x52AA,0x31A6,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFBD,0xEF39,0xCEBA,0x9D95,0xBD51,0x6C30,0x5A26,0x29C9,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFBD,0xEF39,0xCEBA,0x9D95,0xBD51,0x6C30,0x5A26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFBD,0xEF39,0xCEBA,0x9D95,0xBD51,0x6C30,0x5A26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFBD,0xEF39,0xCEBA,0x9D95,0xBD51,0x6C30,0x5A26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
+  {0x0000,0xFFBD,0xEF39,0xCEBA,0x9D95,0xBD51,0x6C30,0x5A26,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000},
 };
-const uint8_t clouds[8192] = {0,0,30,2,0,0,0,0,0,0,0,0,176,5,30,0,0,8,0,0,0,0,128,12,0,112,8,54,0,0,0,0,3,32,30,19,96,0,0,24,28,0,192,0,64,62,14,0,2,12,0,64,96,0,0,0,0,60,0,62,0,0,0,0,6,0,14,48,0,0,0,16,0,0,200,1,64,31,0,0,3,0,0,0,60,0,0,1,0,24,128,127,0,0,128,0,14,0,78,0,0,0,0,0,0,0,60,6,224,31,225,192,7,0,0,128,63,192,128,15,0,0,224,255,0,0,192,0,15,0,254,33,0,0,0,0,0,0,0,4,224,31,246,0,12,0,0,192,7,0,136,9,0,32,224,255,1,0,0,2,15,0,255,1,0,0,0,0,0,0,0,0,224,31,254,17,62,0,0,64,0,0,64,0,128,97,241,255,28,128,24,0,63,128,249,1,0,0,0,0,0,0,0,0,224,55,253,7,62,0,0,0,6,0,224,131,56,0,96,255,1,0,120,0,60,248,240,1,0,0,0,0,0,0,0,0,192,247,248,15,252,1,0,0,11,0,240,1,120,0,4,56,0,0,240,0,220,0,64,0,0,0,0,0,0,8,0,0,192,255,253,15,127,32,0,0,0,0,224,0,8,0,0,40,0,0,224,0,207,129,3,0,0,0,0,0,16,27,0,128,184,255,127,14,63,96,0,0,0,0,98,0,0,0,0,64,0,0,192,0,199,195,3,0,0,0,0,0,128,31,0,192,216,255,63,140,255,8,0,0,0,0,39,0,0,0,0,0,32,0,0,0,240,220,66,0,0,0,0,0,0,12,0,192,248,255,31,152,255,8,0,0,0,0,0,0,0,0,8,0,64,0,0,0,248,200,96,0,0,0,0,0,0,8,0,224,61,255,31,6,255,15,2,0,0,0,0,0,0,0,8,0,0,0,0,0,254,1,240,1,0,0,0,80,0,0,0,0,124,239,15,6,224,7,0,0,0,0,0,0,0,0,8,0,176,3,0,0,90,32,240,1,0,0,0,0,0,0,0,128,62,94,60,134,3,55,0,0,0,0,0,24,0,128,13,0,224,0,0,32,19,64,224,7,0,0,0,0,0,8,0,0,38,126,60,158,7,62,128,0,0,0,0,18,0,128,156,1,96,0,0,48,0,192,112,15,0,0,0,0,0,8,0,0,32,127,2,8,34,55,0,0,0,0,0,0,0,128,182,205,0,0,0,0,0,226,22,14,0,0,0,0,0,0,0,0,0,15,3,72,224,31,0,0,0,0,0,0,0,0,190,248,3,0,0,0,0,98,3,2,156,0,0,0,0,6,0,0,128,125,2,0,128,31,0,0,0,0,0,0,0,0,254,221,3,0,8,0,0,176,133,64,48,0,0,0,0,14,0,0,128,252,67,0,0,12,2,0,0,0,0,0,64,48,254,255,7,0,64,48,0,128,157,192,32,0,0,0,0,164,0,0,0,112,96,0,8,14,2,0,0,0,0,0,0,32,254,255,7,136,0,0,0,4,255,192,70,0,0,0,128,252,0,0,0,120,0,0,80,6,0,0,0,0,0,0,0,0,254,231,31,128,1,0,0,2,50,192,1,0,0,0,0,28,0,2,0,26,0,0,126,0,0,0,0,0,0,0,0,192,255,135,15,0,0,0,0,242,48,128,17,0,0,0,0,0,132,7,0,30,64,1,190,1,0,0,0,0,0,0,0,248,167,7,14,0,0,0,0,130,120,7,18,0,0,0,192,48,8,0,0,4,0,0,240,0,0,0,0,0,0,0,0,248,245,15,142,0,0,0,0,128,255,255,15,0,0,0,224,63,27,0,0,0,0,0,224,0,0,0,0,32,0,0,0,249,184,4,155,1,48,4,128,128,249,221,63,0,0,0,240,15,31,0,0,0,0,0,128,0,0,0,8,32,0,0,128,124,7,0,224,41,0,0,240,225,225,236,25,0,0,0,190,14,14,0,0,0,0,32,152,0,0,192,0,96,0,0,128,252,15,0,224,15,0,0,224,243,241,241,29,0,0,0,218,4,7,128,0,0,0,0,222,33,0,0,0,96,2,0,0,252,15,0,224,29,6,0,192,243,241,19,12,0,0,0,152,173,3,0,12,0,49,0,255,61,0,0,0,224,3,0,0,248,7,0,224,241,23,0,120,159,0,0,32,0,0,0,28,160,7,12,0,32,38,128,253,63,0,0,0,0,0,32,0,224,7,0,232,1,7,0,106,31,14,0,32,0,0,128,61,0,14,12,0,48,14,192,224,30,0,0,0,20,0,48,0,224,7,0,222,3,28,0,96,15,14,0,32,0,0,0,56,2,14,12,4,0,0,0,32,28,0,8,0,0,0,62,0,96,0,0,14,0,24,0,224,111,63,0,0,0,0,0,224,3,26,31,0,0,0,12,0,0,0,28,0,0,0,124,0,112,0,0,0,176,143,3,224,15,63,0,0,0,0,0,250,3,48,15,2,0,128,32,0,0,0,24,0,8,0,252,3,112,0,0,0,0,254,1,128,3,15,0,0,128,0,0,255,3,224,7,0,6,192,0,0,32,0,24,128,12,0,252,102,32,0,0,12,0,248,3,128,255,1,0,4,0,0,0,240,3,128,12,0,128,0,0,0,224,0,28,128,8,0,247,34,0,0,0,12,136,253,3,240,252,0,0,6,24,4,0,224,1,0,28,16,128,0,0,32,225,225,127,128,0,0,31,160,1,0,0,0,252,204,224,224,255,64,0,0,56,0,8,0,0,128,24,28,216,23,0,96,123,240,63,0,0,0,14,120,0,0,2,6,252,193,255,240,243,249,0,0,96,0,8,4,64,224,73,28,252,63,0,96,24,240,30,0,0,0,0,56,0,64,6,6,255,251,239,240,247,255,9,0,64,0,12,130,0,224,217,15,48,0,32,2,8,32,28,0,0,0,8,12,0,0,0,0,246,9,97,112,255,231,31,1,249,0,28,224,6,224,251,7,0,128,3,0,0,0,142,0,2,64,14,2,0,0,0,0,194,8,248,127,255,255,31,0,144,8,222,96,3,248,255,7,0,0,66,0,0,0,192,1,0,136,0,2,0,0,8,0,2,152,248,111,255,255,127,0,0,129,121,224,129,255,254,7,0,64,224,7,7,0,240,1,0,8,128,2,0,0,8,0,26,0,232,48,246,215,63,0,0,128,121,96,1,242,115,63,0,96,226,0,14,0,252,0,0,0,128,96,0,0,2,0,30,0,240,48,240,199,63,3,0,206,224,243,1,192,131,127,0,96,2,0,56,6,255,0,130,0,0,241,1,240,0,0,12,0,96,56,216,3,113,0,0,207,249,243,1,192,129,126,0,112,2,32,188,6,124,0,128,0,32,80,2,240,1,0,188,0,32,0,240,129,113,0,0,195,185,231,1,128,0,56,0,48,128,48,0,6,62,0,0,0,96,12,6,224,1,0,56,0,236,224,224,224,253,0,0,0,240,96,0,112,131,8,0,224,128,0,32,2,30,2,0,0,0,8,4,240,0,0,0,0,12,120,4,240,127,0,80,0,96,0,0,120,128,0,0,224,1,0,240,3,30,0,0,0,0,29,8,248,24,0,0,0,24,104,131,240,112,0,0,2,48,0,0,120,0,0,0,32,0,0,32,0,12,0,0,0,128,12,156,216,43,0,0,0,62,4,128,65,204,64,0,2,32,0,0,0,0,0,0,0,0,0,0,128,13,0,0,0,240,24,252,248,15,0,0,0,4,32,0,128,220,128,8,0,0,0,0,192,0,0,0,0,0,0,192,243,8,0,0,0,32,12,34,248,15,0,0,2,0,0,0,128,159,129,0,0,65,0,192,208,1,0,0,0,3,1,224,255,60,0,0,0,0,12,35,40,0,0,0,0,0,0,0,0,156,0,0,0,1,2,32,192,0,0,0,0,2,222,193,255,11,0,0,0,0,156,35,160,1,0,0,0,0,0,0,0,0,0,0,64,16,24,48,0,0,0,0,0,64,254,199,255,3,0,0,0,0,24,0,128,3,0,0,0,0,8,0,38,6,0,32,0,2,12,0,8,0,0,0,0,0,254,227,255,99,0,0,0,4,12,0,96,0,0,0,0,0,156,0,255,7,0,32,0,3,28,128,28,0,0,4,0,0,59,248,255,241,0,0,0,62,14,64,32,0,0,0,0,0,140,0,255,7,0,0,0,2,56,0,16,0,0,0,0,0,126,127,242,248,3,0,0,60,14,0,32,0,2,0,0,0,0,4,63,16,0,64,0,0,192,143,192,0,128,0,0,0,254,31,246,248,0,0,0,28,8,192,3,0,0,0,0,224,0,0,127,9,0,0,0,0,0,136,0,0,192,0,0,0,222,31,198,0,0,0,0,14,4,0,0,0,0,0,128,192,4,128,15,207,0,0,120,0,0,192,0,0,224,0,0,0,154,15,135,129,0,0,32,15,1,0,240,7,0,0,128,128,0,128,1,216,1,0,60,0,0,0,0,0,32,32,0,2,134,15,135,19,0,0,0,0,1,0,200,5,0,0,128,128,1,128,1,142,1,64,126,0,0,0,0,0,32,0,0,0,6,143,131,127,0,0,0,0,0,0,77,6,32,0,64,132,0,0,0,31,0,0,60,0,0,0,0,0,48,4,0,0,4,252,4,31,0,0,0,0,32,192,28,15,0,0,96,2,0,0,80,31,0,16,48,125,0,0,0,0,176,15,0,0,4,248,132,7,0,0,0,0,96,192,127,31,0,0,64,15,0,0,192,63,0,0,240,61,0,0,0,0,242,3,0,0,0,248,160,39,0,0,0,2,0,192,255,127,0,0,96,63,192,1,32,15,0,0,224,63,0,0,0,0,102,0,0,0,0,248,224,127,0,0,96,0,0,128,191,127,0,0,252,15,0,0,96,15,0,0,240,121,0,0,0,0,54,8,0,0,0,240,195,255,0,0,0,0,0,0,255,127,0,0,0,143,0,0,224,15,0,6,112,224,1,0,0,0,7,126,0,32,0,240,131,227,0,0,0,0,0,12,254,127,0,48,1,8,0,128,0,32,0,0,112,52,0,0,0,4,38,124,0,0,0,16,2,94,0,0,0,0,0,12,254,255,67,32,0,12,0,128,0,0,0,128,56,31,0,0,0,4,176,25,0,0,0,24,2,31,0,0,0,0,48,128,255,255,219,0,0,60,128,8,0,64,0,0,8,31,0,0,0,12,28,141,0,0,0,0,130,63,0,0,0,0,0,142,255,247,195,0,0,60,198,47,236,192,0,0,192,79,2,0,0,8,207,0,0,0,0,0,194,60,1,0,0,0,0,30,242,254,113,0,0,30,227,167,61,224,0,128,131,15,0,0,0,0,158,9,0,0,0,0,128,31,128,3,0,0,0,2,222,254,13,0,0,31,3,62,35,128,0,128,7,28,0,0,0,192,208,15,4,0,0,0,0,31,0,0,0,0,0,0,134,255,15,0,0,223,221,15,2,128,0,128,132,156,0,0,0,128,128,15,0,0,0,0,0,12,0,0,0,0,0,8,2,248,63,0,0,14,252,14,6,64,0,0,28,200,32,0,0,192,0,14,0,0,0,0,12,24,0,0,0,0,0,48,0,240,63,0,0,18,126,14,0,0,0,0,24,222,3,0,0,112,0,24,0,0,0,0,30,8,2,0,0,0,0,0,0,250,210,0,0,0,63,6,0,8,0,0,128,127,2,0,0,56,0,48,0,16,0,0,0,12,4,0,0,0,0,0,0,62,224,1,6,64,0,2,0,0,0,128,0,127,0,0,0,120,0,32,0,0,0,0,6,30,0,0,0,0,0,0,0,116,216,0,4,192,0,0,64,0,0,0,120,255,0,0,50,224,0,0,0,0,0,0,6,159,0,32,128,0,0,0,6,184,195,0,0,248,0,0,2,56,0,0,97,255,0,0,2,248,1,0,0,0,0,0,131,31,0,2,128,0,0,0,222,220,240,1,128,216,0,0,4,62,0,192,97,239,1,0,6,188,1,32,0,0,96,3,15,64,0,2,128,0,0,64,156,239,112,196,1,0,32,0,0,0,0,0,112,255,1,0,14,124,9,0,6,0,0,0,248,0,0,0,0,0,0,64,13,130,96,224,32,32,64,0,0,0,0,0,224,127,0,0,158,159,49,0,7,0,0,0,108,0,0,0,0,0,0,128,1,0,120,48,32,32,0,2,0,0,2,0,200,127,0,0,128,143,113,0,0,0,2,136,60,0,0,0,2,0,0,192,3,0,0,0,48,0,0,0,0,96,0,0,254,127,0,0,0,128,102,0,0,0,0,128,24,0,0,0,6,0,0,128,225,128,0,4,54,0,0,0,0,224,0,0,254,255,0,6,0,0,32,0,0,0,8,128,152,0,0,0,2,0,8,0,0,0,0,14,0,64,0,0,0,247,0,0,254,255,0,14,0,0,0,0,0,0,0,0,128,0,128,0,24,0,56,0,0,0,24,24,0,248,0,0,128,7,0,0,255,127,1,12,0,0,0,0,128,2,0,0,0,0,128,0,8,0,0,0,16,0,216,33,0,248,0,0,136,7,0,0,255,255,3,12,0,0,0,0,192,1,0,0,0,0,0,0,0,0,0,8,208,0,200,1,0,224,0,0,136,31,0,0,246,255,131,6,0,0,0,0,128,128,0,0,32,11,0,0,0,0,0,0,0,0,136,0,0,224,0,0,152,125,0,0,2,236,194,7,0,0,12,0,48,8,0,0,240,63,24,32,0,0,0,0,0,0,193,0,0,60,0,0,152,60,0,0,0,120,16,14,0,0,30,0,112,66,3,0,224,63,0,64,3,0,32,0,0,0,1,0,128,0,0,0,204,28,0,0,198,121,1,8,0,128,73,0,108,1,3,0,128,96,0,0,7,0,0,0,96,0,48,8,0,1,146,0,252,157,0,0,226,32,0,8,0,0,240,0,120,1,0,0,224,8,0,32,32,0,18,0,32,0,96,0,0,0,231,128,223,201,0,0,242,0,0,6,0,0,176,96,48,6,0,16,224,11,48,224,56,2,126,0,0,0,224,0,4,16,127,0,223,207,1,0,242,0,0,0,0,0,224,0,248,3,0,32,98,2,96,8,120,3,248,3,0,0,96,0,0,240,62,129,31,135,1,0,194,15,0,0,0,0,224,1,252,7,0,0,0,64,224,15,124,31,192,3,64,0,98,4,0,240,198,247,127,226,0,0,192,7,0,0,0,8,248,0,152,7,0,0,8,0,104,12,32,198,249,3,0,0,32,66,0,32,199,255,63,128,0,0,240,2,0,0,32,72,60,64,12,4,0,0,8,184,121,28,48,194,255,6,0,0,0,1,0,0,128,255,255,0,0,0,64,2,0,0,0,136,63,0,32,12,0,0,0,240,15,252,240,195,255,0,0,0,0,143,0,0,17,255,255,7,1,0,64,48,0,0,0,0,123,6,48,17,48,0,128,224,31,252,56,199,131,0,0,0,6,4,0,0,0,127,255,5,0,96,130,0,0,0,0,0,120,0,54,128,0,0,128,0,183,222,251,223,99,0,0,8,2,0,0,0,0,239,191,0,0,240,3,1,0,0,0,0,96,0,120,128,1,12,0,0,143,199,251,127,224,0,0,4,0,0,0,0,0,255,253,10,0,224,3,0,0,0,0,0,248,7,124,192,247,1,0,128,63,224,255,127,128,0,0,128,24,0,0,0,7,103,240,9,0,224,15,24,2,28,0,0,252,7,124,227,255,8,0,192,60,224,252,31,3,0,0,128,16,0,0,0,13,246,243,9,0,200,15,0,0,0,0,0,240,9,120,99,195,8,0,192,29,64,248,223,7,0,0,224,0,0,0,0,25,243,247,7,24,195,121,0,0,0,0,0,118,72,0,102,0,64,0,128,15,128,131,255,39,0,0,240,0,0,0,0,31,246,251,7,0,255,60,0,0,0,0,0,246,1,224,127,0,127,0,0,0,128,128,255,3,0,0,192,0,0,0,0,31,254,159,63,0,255,13,192,0,0,0,0,252,1,224,119,64,24,17,64,112,0,192,159,1,112,0,0,0,0,0,0,254,255,9,201,48,64,28,8,0,0,0,0,254,193,255,51,134,13,0,0,96,0,0,159,128,96,0,0,0,0,48,0,255,255,0,136,57,0,248,155,192,4,0,0,255,192,63,0,159,13,0,0,97,192,243,255,112,36,0,0,0,0,48,4,252,223,8,200,127,8,216,15,64,24,0,0,222,225,127,224,221,0,0,0,0,0,247,63,32,112,0,0,0,0,48,0,236,127,0,252,255,28,252,7,224,24,0,128,255,193,251,224,56,0,0,0,192,1,254,31,0,113,0,0,0,0,2,0,252,55,0,246,127,142,253,7,96,0,0,224,63,200,221,248,109,11,0,0,0,32,220,15,128,105,0,0,0,0,128,136,252,7,0,231,51,200,127,62,0,0,0,240,62,216,255,249,227,47,0,0,0,0,15,3,192,229,3,0,0,0,192,220,248,3,0,119,243,223,255,63,0,0,0,56,62,192,255,121,35,50,0,0,0,0,32,0,128,224,0,0,0,0,96,192,248,0,128,112,239,29,255,63,188,1,6,56,100,199,255,48,0,120,0,0,0,0,112,0,0,0,0,0,0,0,96,128,251,0,128,96,137,156,191,127,143,0,0,0,124,255,255,36,192,112,0,0,0,0,96,0,128,0,0,0,0,0,128,192,235,0,0,96,24,8,39,231,15,12,0,0,254,255,252,44,192,225,32,0,0,0,32,0,128,1,0,0,67,128,0,0,9,0,0,0,12,0,140,199,159,19,0,2,208,255,125,28,0,128,3,0,0,0,32,0,128,8,0,48,0,0,0,8,4,0,0,0,0,64,236,247,31,3,32,2,176,255,127,0,0,2,1,0,0,0,0,0,226,0,0,112,0,0,0,28,35,0,0,0,2,0,128,242,31,0,32,0,224,255,255,15,0,38,0,0,0,0,0,0,32,128,0,8,105,0,0,12,115,0,16,0,4,192,128,13,15,0,0,0,224,247,255,15,2,68,0,0,0,60,0,0,0,0,0,1,248,0,0,14,99,0,16,0,0,0,128,60,2,0,0,32,224,199,255,3,14,8,0,0,0,120,0,0,8,0,8,0,248,1,8,62,3,0,96,224,0,0,140,28,96,0,0,32,48,0,56,4,15,0,0,0,4,240,0,0,200,33,63,0,0,4,4,124,0,0,48,0,0,0,8,0,64,0,0,0,208,2,32,0,0,0,0,0,140,240,0,0,200,112,6,0,12,4,0,54,0,0,0,7,0,0,1,0,58,0,0,192,224,18,0,0,0,0,4,7,204,4,0,0,192,127,6,0,14,15,0,7,0,32,160,7,0,128,0,0,96,0,8,192,127,0,0,0,0,0,128,7,254,3,0,0,130,115,12,0,48,124,129,12,0,6,176,1,3,0,0,0,224,0,0,64,60,0,0,0,0,0,128,7,254,251,0,0,15,243,60,0,64,255,65,24,0,4,156,7,0,128,0,0,192,0,0,128,60,0,0,0,2,0,0,60,254,31,0,0,132,243,239,0,0,246,97,2,0,16,243,7,8,0,0,0,0,0,2,0,196,0,0,192,7,0,64,120,190,63,192,64,192,254,192,5,0,248,192,3,0,0,50,0,0,0,0,0,0,0,0,32,0,0,0,128,3,0,0,62,248,31,0,0,156,252,143,0,0,255,253,35,0,32,66,0,0,0,0,0,0,0,0,0,129,0,0,192,0,0,0,62,224,59,0,16,159,253,12,4,32,254,255,56,0,32,210,0,0,0,0,0,0,0,0,0,192,0,0,128,0,0,0,220,231,127,0,64,142,29,12,8,160,255,127,32,0,32,255,7,0,0,0,6,0,16,0,0,0,0,224,0,192,0,0,248,119,254,1,192,128,56,0,203,191,31,7,192,0,0,242,1,0,0,0,2,7,0,128,0,0,0,0,0,192,1,0,240,7,248,131,248,0,39,1,194,255,199,3,0,0,192,225,0,0,0,0,2,7,0,0,0,0,0,0,0,192,1,2,240,71,201,129,248,0,198,1,194,207,192,3,0,0,0,96,0,0,0,0,14,4,0,0,0,0,0,0,0,192,1,2,224,127,223,9,96,0,130,0,98,151,244,1,0,12,0,96,0,0,0,24,14,24,0,0,0,0,0,0,0,128,1,0,224,252,255,0,192,1,0,0,160,25,62,25,4,29,128,1,0,0,0,120,2,14,8,0,0,0,0,0,0,0,32,0,48,246,255,0,8,0,128,0,160,8,254,0,0,124,192,0,0,0,0,236,64,0,8,0,0,0,0,0,0,0,0,0,8,243,63,17,192,0,192,0,16,124,255,128,0,32,0,32,34,0,0,248,1,0,12,0,0,8,0,0,0,0,0,0,0,194,63,2,192,0,128,0,0,126,127,224,0,0,32,112,123,0,0,216,1,0,0,0,0,30,14,12,0,36,0,0,0,6,126,0,224,0,67,0,128,255,7,96,0,0,32,120,126,6,0,216,1,0,0,0,0,63,12,28,0,0,0,0,0,0,119,64,115,128,7,0,0,252,143,32,0,0,0,102,252,7,0,254,1,0,0,0,192,27,152,13,0,0,0,0,0,224,55,224,32,0,60,0,0,252,159,1,65,0,0,160,253,15,0,255,1,0,0,0,0,80,3,55,0,0,0,0,0,224,127,226,0,0,14,0,0,252,223,29,64,0,0,0,15,7,160,251,16,0,0,0,0,96,3,126,0,0,0,0,0,240,127,224,1,112,7,0,0,54,254,63,65,0,0,0,63,6,160,253,127,0,0,0,0,96,3,24,0,0,16,0,0,224,127,72,1,32,0,7,0,48,255,29,0,0,128,64,30,6,0,248,127,0,0,0,0,96,96,0,0,0,112,0,0,192,255,223,3,0,0,7,0,224,255,65,0,0,192,0,30,2,0,112,8,0,0,0,12,104,224,192,0,0,32,0,0,128,255,159,7,0,0,0,0,0,253,9,0,0,96,64,8,2,0,96,0,0,0,0,255,124,128,208,0,0,1,0,0,16,255,127,16,48,6,0,0,0,216,31,4,0,32,0,0,0,0,0,0,0,0,0,255,13,192,0,0,0,0,0,0,0,255,55,96,32,2,0,0,2,200,247,0,27,32,2,7,0,0,0,12,0,0,0,190,15,240,1,64,0,96,0,0,6,244,7,227,1,0,0,192,0,12,254,0,0,32,34,6,0,0,4,0,0,0,0,62,0,0,192,0,0,0,0,0,30,246,95,240,1,0,0,192,0,30,7,0,0,70,99,120,0,0,0,0,0,0,0,79,0,0,240,1,0,0,0,0,14,255,123,236,3,0,0,96,0,15,3,8,3,252,39,60,0,0,16,0,0,0,0,24,0,0,112,0,0,0,0,0,158,247,47,248,3,0,0,48,128,133,39,8,3,252,15,12,0,0,147,1,6,0,0,56,0,0,96,0,1,0,0,0,31,255,3,120,4,0,0,32,0,241,127,8,0,176,204,29,0,0,192,7,2,32,0,56,0,64,8,0,0,0,0,0,28,31,0,28,0,0,0,32,0,48,142,0,0,0,206,24,0,0,224,14,0,48,2,60,1,64,24,64,0,6,0,0,128,11,0,31,0,0,0,0,128,48,4,0,0,128,207,31,0,0,224,15,8,34,0,53,0,0,128,1,8,38,0,0,240,31,0,31,0,8,0,0,128,45,132,1,0,224,143,63,0,2,240,199,3,0,0,57,0,16,2,96,124,6,0,0,224,30,0,6,0,0,0,0,192,143,253,3,0,224,221,63,0,0,240,15,0,0,14,60,0,0,6,224,16,0,0,0,0,0,0,0,0,0,0,0,96,13,220,1,0,32,252,120,0,0,248,31,0,0,14,4,1,128,30,0,1,1,0,0,0,192,3,0,192,0,0,0,48,12,236,0,0,32,255,15,0,0,248,15,0,0,12,0,0,150,7,96,61,2,0,0,0,136,3,0,192,0,0,0,56,8,241,1,0,128,163,15,192,17,225,3,0,0,16,96,0,131,1,98,30,0,0,32,1,12,12,64,16,0,0,64,12,128,243,1,0,0,32,253,0,0,224,3,0,0,2,96,0,12,32,247,31,0,0,32,0,6,0,8,0,0,0,0,180,128,113,0,1,28,0,252,1,96,224,71,0,0,128,7,0,60,240,127,0,0,0,32,48,32,0,28,64,0,64,0,55,14,124,1,248,1,0,126,0,32,0,32,0,0,128,117,0,52,128,124,0,0,0,32,60,6,0,254,3,0,0,0,56,8,120,0,192,3,128,31,0,0,0,0,0,0,32,120,1,15,223,39,0,0,0,0,15,30,0,255,15,0,0,0,120,0,120,192,218,0,0,14,0,0,0,0,0,0,32,0,32,159,242,39,0,0,0,0,7,12,0,210,15,0,0,0,0,0,252,3,130,0,0,0,0,0,0,0,0,0,0,0,96,50,56,51,0,32,0,0,30,207,17,16,0,1,0,110,0,128,207,3,0,0,0,0,0,0,0,0,0,0,0,0,254,167,125,56,0,0,0,0,8,141,135,0,3,0,0,0,8,128,221,135,0,48,128,7,0,0,0,28,0,192,128,0,255,191,255,244,0,8,0,0,0,16,134,3,15,0,0,0,72,0,129,140,0,32,0,0,0,0,0,12,0,64,156,0,254,15,192,48,0,56,0,0,0,32,222,2,0,0,0,0,136,32,140,221,0,96,4,0,0,0,0,158,0,0,60,0,252,1,128,129,3,112,0,0,128,15,248,28,0,0,6,0,128,248,204,255,0,120,0,0,0,0,0,220,1,128,30,0,255,1,224,224,39,112,128,0,0,0,32,24,0,0,32,0,0,144,8,255,0,240,16,0,0,0,0,252,64,132,6,240,255,15,0,240,15,96,199,0,0,0,0,0,0,0,0,0,0,0,0,255,0,224,7,0,0,0,0,252,192,255,7,128,255,1,0,96,15,240,7,0,0,0,32,0,0,0,0,0,32,0,128,247,0,192,15,0,0,0,0,175,176,255,7,0,241,0,0,64,6,240,3,0,0,15,240,96,0,0,0,0,96,130,152,63,0,192,15,0,0,0,0,127,224,255,55,0,8,3,0,0,35,240,15,0,36,8,176,0,3,0,0,0,48,130,252,127,192,3,8,0,0,0,0,226,192,254,63,0,12,8,0,0,112,240,7,0,12,24,0,0,0,0,0,0,112,128,252,56,0,0,12,0,0,0,0,8,128,252,3,0,12,0,0,0,240,242,3,0,8,32,159,0,32,248,0,0,0,130,124,31,0,120,4,0,112,0,0,8,160,220,128,4,12,0,0,0,240,255,1,3,24,0,31,0,0,252,1,0,0,128,239,3,128,24,0,0,240,0,0,136,0,216,128,0,0,0,0,0,248,11,32,0,8,122,59,0,128,248,0,0,129,129,127,0,192,9,96,0,242,1,0,0,4,240,193,3,0,0,0,0,240,25,0,0,24,254,99,0,192,225,0,128,193,192,63,0,192,31,0,0,14,0,0,0,8,224,201,2,0,0,0,0,224,57,8,2,0,247,51,0,200,113,0,8,128,0,159,0,208,31,0,0,15,0,0,0,8,192,193,3,16,0,0,0,224,239,207,3,0,227,63,0,224,49,0,0,0,28,192,1,192,23,0,0,13,32,0,0,44,124,98,0,0,0,0,0,96,63,192,9,0,160,32,0,246,55,0,0,0,128,15,0,192,226,1,192,28,4,0,0,8,56,6,6,96,0,0,0,4,24,96,28,0,176,48,0,49,62,0,0,0,0,12,12,128,247,0,128,8,0,0,0,8,152,2,6,0,0,0,0,118,8,96,96,128,0,0,0,0,38,0,0,0,134,28,8,144,255,69,0,8,15,0,0,0,4,3,31,16,0,0,0,254,15,96,224,128,64,0,0,0,34,0,0,0,142,28,0,210,255,243,0,8,2,0,0,0,0,3,31,146,0,0,32,248,1,0,194,129,96,0,0,8,0,0,128,0,2,48,0,192,253,247,145,8,0,0,0,0,144,7,248,14,0,0,0,248,192,0,181,0,32,0,0,56,0,0,240,1,0,240,0,194,255,255,134,0,0,0,2,0,128,13,34,6,2,0,0,240,193,128,240,1,0,0,0,32,0,0,8,0,0,160,0,240,255,63,14,4,0,0,6,0,192,188,1,0,4,0,0,251,202,0,184,1,0,0,0,0,7,0,24,0,0,0,0,64,251,127,28,0,32,0,0,0,152,220,0,0,0,0,2,255,131,3,56,0,0,0,0,0,3,0,0,128,0,2,0,224,239,127,152,0,56,0,0,0,20,65,224,0,16,0,0,220,193,3,96,0,0,0,0,4,0,0,0,225,0,2,0,244,255,191,4,0,62,0,0,0,0,124,224,0,0,0,0,156,8,0,8,0,2,0,0,8,0,0,128,32,0,0,0,238,246,143,7,0,31,0,0,0,0,126,176,0,0,0,0,31,0,0,0,136,1,0,0,24,0,0,0,48,0,0,0,253,99,158,7,128,159,0,0,0,0,127,179,0,0,0,0,30,0,0,0,0,128,0,0,8,0,0,0,118,8,24,0,253,224,127,12,132,79,0,0,0,96,255,47,0,0,0,0,124,0,0,6,0,198,1,0,0,0,0,16,255,99,22,0,128,224,63,12,12,31,0,0,0,32,222,57,0,0,0,0,240,0,0,0,0,0,0,0,0,0,0,0,222,99,0,0,128,224,127,12,3,156,3,0,64,0,222,113,0,1,0,16,128,15,0,0,48,0,0,0,0,0,0,0,143,63,0,0,128,200,127,25,0,220,1,0,16,0,156,0,0,0,0,6,192,15,3,0,176,0,0,0,0,0,0,60,0,0,3,0,192,217,247,71,14,248,1,0,24,0,1,0,0,0,0,0,128,1,3,6,56,0,0,0,0,0,0,62,0,0,3,0,226,205,115,32,2,2,0,0,12,0,0,64,0,0,0,0,200,96,0,128,28,0,0,0,0,0,0,6,32,4,0,0,255,141,127,0,192,7,64,0,199,0,0,64,0,0,0,128,120,56,0,208,12,0,0,0,0,192,12,8,64,0,0,0,255,197,125,32,0,1,0,28,7,0,0,0,0,2,0,128,56,0,0,24,30,0,0,0,0,192,15,56,0,0,0,0,251,3,61,64,4,0,0,127,31,0,0,0,0,224,0,0,0,0,4,4,222,0,0,0,0,192,31,48,0,64,8,128,255,98,253,128,0,0,128,61,127,0,0,0,0,0,0,0,0,28,0,0,2,0,0,0,0,96,15,32,0,0,32,130,252,113,126,128,0,0,240,30,255,3,0,8,0,6,8,4,0,62,197,1,2,0,0,0,0,112,132,1,0,224,99,2,192,97,126,128,0,8,96,31,252,1,0,0,0,66,8,0,0,255,221,1,0,2,0,0,128,55,140,129,32,128,135,3,153,224,126,0,0,8,32,251,32,0,0,128,4,113,8,0,0,255,201,0,3,2,0,0,128,47,8,196,0,0,7,129,221,0,118,96,0,0,32,200,0,0,0,0,0,114,8,0,0,254,217,0,0,0,0,0,0,24,14,62,0,8,12,0,126,0,192,99,0,8,0,198,0,0,0,0,96,246,81,0,0,252,208,0,2,0,0,0,0,28,15,24,130,9,56,0,127,0,200,33,0,0,0,0,0,0,0,0,0,254,7,0,0,252,1,0,128,0,0,0,0,2,7,126,128,8,0,0,99,7,152,1,0,4,0,0,0,0,0,0,64,156,15,0,0,232,7,4,128,1,2,0,0,0,51,126,216,200,0,0,2,0,248,33,0,0,0,0,0,0,0,0,192,159,13,0,0,192,48,2,128,0,0,0,0,12,96,36,204,11,0,0,2,0,255,1,0,0,240,0,0,0,0,128,240,155,7,64,0,0,56,2,12,0,0,0,0,28,129,1,4,3,0,0,0,0,255,0,18,0,248,39,0,0,0,128,193,207,39,64,0,0,24,2,0,0,0,0,0,24,0,3,84,2,128,128,0,0,30,3,63,0,64,127,0,0,0,0,192,231,63,129,1,128,15,0,16,0,0,0,0,0,0,0,122,0,0,151,0,0,192,3,0,0,0,2,0,0,0,0,192,225,28,128,0,0,136,0,0,0,0,32,0,8,0,0,0,32,32,128,0,0,128,16,0,0,0,0,0,0,0,0,128,1,24,0,0,0,24,64,12,1,0,0,7,4,0,0,4,112,102,192,0,0,128,19,0,0,0,128,1,0,0,0,8,0,124,0,0,0,0,0,0,0,96,0,12,3,0,0,0,48,6,192,0,0,128,1,0,0,0,192,1,0,0,0,24,236,127,0,0,32,3,0,1,0,192,64,12,1,0,128,0,12,1,192,0,0,194,0,0,0,0,32,8,0,0,0,0,248,255,0,0,96,0,0,4,0,64,8,0,0,0,0,0,2,12,226,192,0,196,0,0,0,0,32,0,126,0,0,0,252,255,0,8,0,16,0,12,0,64,24,0,0,0,0,0,0,28,114,128,0,220,32,0,32,128,32,32,134,2,0,128,255,247,0,8,0,0,0,14,0,0,62,0,0,0,0,0,0,24,96,6,0,252,9,2,0,128,32,0,70,0,0,224,255,127,0,0,0,0,2,0,0,0,6,2,24,0,0,0,132,0,0,0,0,252,91,2,0,0,0,0,0,0,0,224,253,25,0,0,0,0,2,0,0,0,28,2,118,0,0,0,128,0,0,0,192,252,255,0,0,0,0,0,0,0,0,224,244,1,0,0,0,0,26,0,0,0,28,227,255,1,0,0,224,1,0,0,0,255,243,0,2,0,0,0,0,8,0,192,255,0,0,0,0,0,12,8,0,0,216,227,255,1,96,0,242,3,0,0,0,255,227,7,23,6,0,0,0,0,16,0,191,1,0,0,0,0,4,120,0,0,240,99,159,0,224,1,242,1,0,0,0,242,247,3,18,6,8,0,0,0,4,0,31,0,0,0,0,0,6,128,0,0,210,33,255,129,0,0,96,0,0,64,0,224,255,0,96,6,0,0,0,0,12,0,30,0,0,0,0,0,7,0,0,0,194,3,254,1,0,0,0,0,0,2,0,248,255,5,48,7,0,0,8,0,8,0,54,0,0,0,0,0,0,128,0,0,198,3,126,0,0,0,0,0,32,0,3,252,239,1,60,7,0,0,24,0,28,0,2,0,0,0,0,64,0,128,0,0,31,7,254,0,0,0,0,2,48,0,0,248,61,0,8,0,36,0,0,0,10,0,128,0,0,0,0,0,0,0,0,0,31,134,240,0,0,0,0,2,192,0,4,96,28,0,0,0,230,6,132,65,3,0,0,0,0,14,0,8,34,0,0,32,30,15,192,16,0,0,0,6,192,0,0,32,31,0,0,32,231,3,0,0,7,2,0,0,0,8,0,8,0,0,0,160,31,0,0,0,0,128,0,0,0,0,0,158,31,0,0,0,7,3,0,0,4,3,0,0,0,0,0,8,1,0,128,128,14,0,88,0,0,0,0,0,0,32,0,0,31,0,128,0,6,38,0,0,60,0,0,0,0,12,0,8,0,0,128,160,31,0,220,0,0,128,0,32,32,56,0,0,14,4,128,28,7,126,0,0,60,0,0,0,0,4,0,0,224,0,24,190,31,1,254,3,2,2,4,56,248,24,0,0,6,2,128,30,0,62,0,0,56,0,2,0,0,0,0,0,0,0,28,230,63,0,126,0,128,0,8,176,244,64,4,0,0,114,0,220,0,28,0,0,120,3,3,0,0,0,0,0,0,0,24,252,95,0,120,225,128,0,0,176,14,0,0,0,14,0,0,156,0,14,0,0,0,0,0,0,0,0,0,0,0,32,156,223,93,0,120,128,0,32,2,12,136,16,0,0,15,0,0,12,4,31,0,0,0,0,12,0,0,0,0,0,14,225,159,143,3,192,12,128,113,96,0,6,0,32,0,0,36,34,8,188,0,28,0,0,2,0,0,0,8,32,0,0,248,255,159,159,159,216,128,128,0,96,0,7,0,0,0,64,140,7,12,120,4,64,0,3,3,0,0,4,136,32,0,0,96,159,207,207,63,140,113,0,0,96,0,7,0,0,0,200,29,0,128,8,2,0,0,2,0,0,136,0,0,0,0,0,32,15,30,191,63,136,96,0,0,32,128,2,224,0,0,192,63,0,128,0,0,11,0,0,0,1,140,1,3,0,0,0,0,0,30,255,255,200,32,25,0,0,67,48,192,0,0,194,31,0,0,2,0,0,0,240,128,1,128,0,3,0,0,0,0,0,54,252,63,136,97,28,32,32,3,24,24,16,0,195,3,0,0,2,196,0,0,240,16,1,128,192,0,0,48,0,0,1,103,156,39,140,1,12,12,96,0,0,28};
-const uint8_t rain_run[93][4] = {{0,3,15,221},{0,22,3,74},{0,30,3,74},{0,44,5,120},{1,27,4,98},{3,47,3,64},{8,0,4,98},{9,43,7,114},{10,63,7,114},{11,2,1,45},{13,2,1,44},{15,2,1,45},{19,10,2,94},{22,10,1,134},{23,35,1,29},{25,10,16,203},{25,35,1,29},{27,40,1,30},{33,40,1,47},{39,55,6,97},{40,40,1,31},{45,41,4,64},{65,59,10,162},{65,60,2,48},{69,60,1,47},{78,59,1,84},{81,63,2,32},{82,19,3,93},{85,12,8,130},{86,19,1,95},{89,19,2,92},{91,27,3,64},{92,5,4,75},{93,44,10,155},{95,27,1,62},{99,60,1,29},{101,5,1,121},{101,60,1,29},{102,0,1,50},{102,26,2,34},{103,5,1,104},{105,5,3,150},{106,6,15,188},{109,5,1,164},{109,56,3,102},{111,5,5,130},{111,29,2,32},{113,38,5,81},{115,56,5,113},{119,17,7,114},{120,1,5,97},{121,54,5,97},{122,0,2,65},{122,42,6,97},{126,1,1,95},{127,54,1,95},{128,57,4,90},{129,25,3,48},{134,57,1,97},{137,57,1,69},{142,18,8,138},{149,25,1,84},{151,25,4,80},{153,18,1,84},{155,42,9,143},{160,43,5,81},{167,54,5,81},{168,17,11,164},{184,24,15,188},{185,43,4,81},{191,43,1,80},{191,63,2,32},{197,58,5,81},{199,50,11,164},{201,20,4,64},{211,0,4,98},{217,30,2,32},{218,21,1,117},{220,21,11,173},{223,8,5,81},{227,0,4,98},{232,14,3,134},{233,24,11,164},{235,61,10,167},{236,14,8,162},{236,45,3,48},{237,13,2,32},{240,3,3,48},{241,48,3,48},{248,61,2,103},{252,43,4,99},{253,48,1,34},{255,48,1,44}};
-const uint8_t rain_idx[257] = {0,4,5,5,6,6,6,6,6,7,8,9,10,10,11,11,12,12,12,12,13,13,13,14,15,15,17,17,18,18,18,18,18,18,19,19,19,19,19,19,20,21,21,21,21,21,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,24,24,24,24,25,25,25,25,25,25,25,25,25,26,26,26,27,28,28,28,29,30,30,30,31,31,32,33,34,34,35,35,35,35,36,36,38,40,41,41,42,43,43,43,45,45,47,47,48,48,49,49,49,49,50,51,52,54,54,54,54,55,56,57,58,58,58,58,58,59,59,59,60,60,60,60,60,61,61,61,61,61,61,61,62,62,63,63,64,64,65,65,65,65,65,66,66,66,66,66,66,66,67,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,69,70,70,70,70,70,70,72,72,72,72,72,72,73,73,74,74,75,75,75,75,75,75,75,75,75,75,76,76,76,76,76,76,77,78,78,79,79,79,80,80,80,80,81,81,81,81,81,82,83,83,84,86,87,87,87,88,89,89,89,89,89,89,89,90,90,90,90,91,92,92,93};
-const uint8_t snow_run[115][4] = {{0,43,1,255},{1,42,1,255},{1,44,1,255},{2,43,1,255},{15,37,1,255},{15,55,1,255},{15,57,1,255},{16,56,1,255},{17,55,1,255},{17,57,1,255},{19,24,3,255},{19,59,3,255},{20,23,1,255},{20,25,1,255},{20,58,1,255},{20,60,1,255},{26,25,1,255},{33,6,1,255},{42,61,1,255},{44,30,1,255},{45,29,1,255},{45,31,1,255},{46,30,1,255},{53,25,3,255},{54,24,1,255},{54,26,1,255},{65,43,1,255},{65,45,1,255},{66,44,1,255},{67,1,1,255},{67,43,1,255},{67,45,1,255},{72,8,1,255},{79,12,1,255},{80,11,1,255},{80,13,1,255},{81,12,1,255},{83,55,1,255},{84,54,1,255},{84,56,1,255},{85,55,1,255},{92,12,1,255},{92,14,1,255},{92,56,1,255},{93,13,1,255},{94,12,1,255},{94,14,1,255},{104,8,1,255},{104,46,1,255},{105,45,1,255},{105,47,1,255},{106,46,1,255},{127,51,1,255},{128,38,3,255},{129,37,1,255},{129,39,1,255},{130,25,1,255},{136,18,1,255},{136,20,1,255},{137,19,1,255},{138,18,1,255},{138,20,1,255},{146,3,1,255},{147,2,1,255},{147,4,1,255},{148,3,1,255},{155,41,1,255},{156,40,1,255},{156,42,1,255},{157,41,1,255},{167,0,1,255},{173,13,1,255},{173,15,1,255},{174,14,1,255},{175,13,1,255},{175,15,1,255},{178,5,1,255},{178,26,1,255},{183,24,1,255},{184,23,1,255},{184,25,1,255},{185,24,1,255},{193,42,1,255},{194,41,1,255},{194,43,1,255},{195,42,1,255},{200,54,1,255},{201,46,3,255},{202,45,1,255},{202,47,1,255},{204,38,1,255},{206,58,1,255},{208,22,1,255},{209,21,1,255},{209,23,1,255},{210,22,1,255},{226,43,1,255},{229,46,3,255},{230,12,3,255},{230,45,1,255},{230,47,1,255},{231,11,1,255},{231,13,1,255},{235,53,1,255},{239,6,1,255},{239,8,1,255},{240,7,1,255},{241,6,1,255},{241,8,1,255},{246,42,1,255},{247,41,1,255},{247,43,1,255},{248,28,1,255},{248,42,1,255},{252,7,1,255}};
-const uint8_t snow_idx[257] = {0,1,3,4,4,4,4,4,4,4,4,4,4,4,4,4,7,8,10,10,12,16,16,16,16,16,16,17,17,17,17,17,17,17,18,18,18,18,18,18,18,18,18,19,19,20,22,23,23,23,23,23,23,23,24,26,26,26,26,26,26,26,26,26,26,26,28,29,32,32,32,32,32,33,33,33,33,33,33,33,34,36,37,37,38,40,41,41,41,41,41,41,41,44,45,47,47,47,47,47,47,47,47,47,47,49,51,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,52,53,54,56,57,57,57,57,57,57,59,60,62,62,62,62,62,62,62,62,63,65,66,66,66,66,66,66,66,67,69,70,70,70,70,70,70,70,70,70,70,71,71,71,71,71,71,73,74,76,76,76,78,78,78,78,78,79,81,82,82,82,82,82,82,82,82,83,85,86,86,86,86,86,87,88,90,90,91,91,92,92,93,95,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,96,97,97,97,98,101,103,103,103,103,104,104,104,104,106,107,109,109,109,109,109,110,112,114,114,114,114,115,115,115,115};
-const uint16_t biome_grass[256] = {0x8DCE,0x95EB,0xBDAA,0x8DB1,0x7E0B,0x85B0,0x6B87,0x8DCE,0xBDAA,0x8DCE,0x85B2,0x85B2,0x85B2,0x85B2,0x5647,0x5647,0x95EB,0xBDAA,0x7E0B,0x85B0,0x8DB1,0x5E47,0x5E47,0x6627,0x8DCE,0x8DB1,0x85B2,0x8DCC,0x8DCC,0x53C6,0x85B2,0x85B2,0x85CF,0x85CF,0x8DB1,0xBDAA,0xBDAA,0x9409,0x9409,0x9409,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x95EB,0xBDAA,0x8DB1,0x7E0B,0x85B0,0x6B87,0x8DCE,0xBDAA,0x8DCE,0x85B2,0x85B2,0x85B2,0x85B2,0x5647,0x5647,0x95EB,0xBDAA,0x7E0B,0x85B0,0x8DB1,0x5E47,0x5E47,0x6627,0x8DCE,0x8DB1,0x85B2,0x8DCC,0x8DCC,0x53C6,0x85B2,0x85B2,0x85B0,0x85B0,0x8DB1,0xBDAA,0xBDAA,0x9409,0x9409,0x9409,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE,0x8DCE};
-const uint16_t biome_foliage[256] = {0x7529,0x7545,0xAD25,0x6D0D,0x5D66,0x6D2C,0x6B87,0x7529,0xAD25,0x7529,0x650F,0x650F,0x650F,0x650F,0x2DC1,0x2DC1,0x7545,0xAD25,0x5D66,0x6D2C,0x6D0D,0x35C1,0x35C1,0x3DC1,0x7529,0x6D0D,0x650F,0x6D48,0x6D48,0x5D66,0x650F,0x650F,0x6D2B,0x6D2B,0x6D0D,0xAD25,0xAD25,0x9C09,0x9C09,0x9C09,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7545,0xAD25,0x6D0D,0x5D66,0x6D2C,0x6B87,0x7529,0xAD25,0x7529,0x650F,0x650F,0x650F,0x650F,0x2DC1,0x2DC1,0x7545,0xAD25,0x5D66,0x6D2C,0x6D0D,0x35C1,0x35C1,0x3DC1,0x7529,0x6D0D,0x650F,0x6D48,0x6D48,0x5D66,0x650F,0x650F,0x6D2C,0x6D2C,0x6D0D,0xAD25,0xAD25,0x9C09,0x9C09,0x9C09,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529,0x7529};
-const uint16_t biome_water[256] = {0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE7F5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE7F5,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF};
-const int8_t biome_temp[256] = {25,40,100,10,35,12,40,25,100,25,0,0,0,0,45,45,40,100,35,12,10,48,48,48,25,10,2,30,30,35,-25,-25,15,15,10,60,50,100,100,100,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,40,100,10,35,12,40,25,100,25,0,0,0,0,45,45,40,100,35,12,10,48,48,48,25,10,2,30,30,35,-25,-25,15,15,10,60,50,100,100,100,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25,25};   /* x 50 */
-const uint8_t biome_rain[256] = {1,1,0,1,1,1,1,1,0,0,3,3,3,3,1,1,1,0,1,1,1,1,1,1,1,1,3,1,1,1,3,3,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,0,0,3,3,3,3,1,1,1,0,1,1,1,1,1,1,1,1,3,1,1,1,3,3,1,1,1,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
+const uint8_t clouds[8192] = {0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,3,254,255,255,127,0,0,0,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,3,255,255,255,127,0,0,0,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,1,255,255,255,63,0,0,0,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,255,255,255,31,0,0,0,192,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,255,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,255,255,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,126,0,254,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,252,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,0,0,0,0,0,0,0,0,248,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,1,0,0,0,0,0,0,0,248,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,3,0,0,0,0,0,0,128,255,31,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,3,0,0,0,0,0,0,192,255,63,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,7,0,0,0,0,0,0,192,255,63,252,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,15,0,0,0,0,0,0,192,255,63,252,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,31,0,0,0,0,0,0,128,255,63,254,15,0,0,0,192,7,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,31,124,0,0,0,0,0,128,255,63,254,15,0,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,31,254,0,0,0,0,0,0,255,31,255,7,0,0,0,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,255,255,29,0,0,0,0,0,248,143,255,1,0,0,0,248,255,1,0,0,0,0,0,0,0,0,0,0,0,0,240,255,255,255,127,0,0,0,0,0,248,135,255,1,0,0,0,252,255,7,0,0,0,0,0,0,0,0,0,0,0,0,240,255,255,255,127,0,0,0,0,0,252,135,255,1,0,0,0,252,255,7,0,0,0,0,0,0,0,0,0,0,0,0,240,255,255,255,255,0,0,0,0,0,252,7,255,1,0,0,0,252,255,15,192,1,0,0,0,0,0,0,0,0,0,0,240,255,255,255,255,0,0,0,0,0,252,7,254,0,0,0,0,252,255,15,224,63,0,0,0,0,0,0,0,0,0,0,248,255,255,255,255,0,0,0,0,0,248,3,0,0,0,0,0,252,255,15,240,127,0,0,0,0,0,0,0,0,0,0,248,255,231,255,255,0,0,0,0,0,248,3,0,0,0,0,0,248,255,15,240,255,0,0,0,0,0,0,0,0,0,0,248,255,143,255,255,0,0,0,0,0,224,0,0,0,0,0,0,252,255,15,240,255,3,0,0,0,128,3,0,0,0,0,240,255,15,255,255,0,0,0,0,0,0,0,0,0,0,0,0,252,255,15,224,255,7,0,0,0,192,7,0,0,0,0,240,255,15,254,255,0,0,0,0,0,0,0,0,0,0,0,0,252,255,7,192,255,7,0,0,0,224,15,0,0,0,0,192,193,7,252,127,0,0,0,0,0,0,0,0,0,0,0,0,248,255,3,192,255,7,0,0,0,224,15,0,0,0,0,0,128,3,128,63,0,0,0,0,0,0,0,0,0,0,0,0,240,255,193,195,255,3,0,0,0,224,31,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,224,255,254,135,255,0,0,0,0,192,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,127,255,143,255,0,0,0,0,224,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,191,255,143,255,0,0,0,0,240,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,143,255,0,0,0,0,240,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,7,127,0,0,0,0,248,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,3,127,0,0,0,0,248,255,7,0,0,0,0,0,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,0,192,255,7,28,0,0,0,0,248,255,15,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,0,0,0,192,255,7,0,0,0,0,0,252,255,31,0,0,0,0,0,0,0,0,0,0,0,192,255,1,0,0,0,0,0,0,0,128,255,15,0,0,0,0,0,254,255,31,0,0,0,0,0,0,0,0,0,0,0,224,255,3,0,0,0,0,0,0,0,0,255,15,0,0,0,0,0,255,255,31,0,0,0,0,0,0,0,0,0,0,0,224,255,3,0,0,0,0,0,0,0,0,254,15,0,0,0,0,128,255,255,15,0,0,0,0,0,0,0,0,0,0,0,252,255,7,0,0,0,0,0,0,0,0,240,7,0,0,0,0,128,255,255,7,0,0,128,15,0,0,0,0,0,0,0,255,255,7,0,0,0,0,0,0,0,0,240,7,0,0,0,0,128,255,127,0,0,0,192,31,0,0,0,0,0,0,0,255,255,7,0,0,0,0,0,0,0,0,192,1,0,0,0,0,128,255,31,0,0,0,224,191,3,0,0,0,0,0,128,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,15,0,0,0,240,255,7,0,0,0,0,0,128,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,7,0,0,0,252,255,15,0,0,0,0,0,128,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,3,0,0,0,255,255,15,0,0,0,0,0,0,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,1,0,0,0,255,255,15,0,0,0,0,0,0,255,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,3,0,0,128,255,255,255,14,0,0,0,0,0,252,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,3,0,0,128,255,255,255,63,0,0,0,0,0,224,255,63,0,0,0,0,0,0,128,15,0,0,0,0,0,0,128,255,3,0,0,128,255,255,255,63,0,0,0,0,0,224,255,63,0,0,0,0,0,0,192,31,0,0,0,0,0,0,128,255,3,0,0,0,255,255,255,127,0,0,0,0,0,192,255,31,0,0,0,0,0,0,224,63,0,0,0,0,0,0,192,255,31,0,0,0,255,255,255,127,0,0,0,0,0,0,255,15,0,0,0,0,0,0,240,127,0,0,0,0,0,0,224,255,63,0,0,0,252,239,255,127,0,0,0,0,0,0,224,7,0,0,0,0,0,0,248,255,0,0,0,0,0,0,240,255,127,0,0,0,56,224,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,124,0,0,0,0,0,240,255,255,0,0,0,0,224,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,254,0,0,0,0,0,254,255,255,1,0,0,0,224,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,255,1,0,0,0,0,255,255,255,1,0,0,0,224,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,255,3,0,0,0,0,255,255,255,1,0,0,0,224,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,255,7,0,0,0,0,255,255,255,1,0,0,0,224,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,255,7,0,0,0,0,254,255,255,1,0,0,0,224,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,255,7,0,0,0,0,254,255,255,0,0,0,0,224,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,255,7,0,0,0,0,254,255,127,0,0,0,0,192,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,255,7,0,0,0,0,254,255,63,0,0,0,0,128,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,255,3,0,0,0,0,252,127,31,0,0,0,0,0,159,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,255,1,0,0,0,7,248,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,255,0,0,0,192,31,248,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,127,0,0,0,192,31,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,3,0,0,0,224,63,247,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,1,0,0,0,224,255,207,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,112,124,0,0,0,0,224,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,192,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,192,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,192,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,7,0,0,0,0,0,0,0,0,0,0,248,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,15,0,0,0,0,0,0,0,0,0,0,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,240,31,0,0,0,0,0,0,0,0,0,0,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,248,31,0,0,0,0,0,0,0,0,0,0,192,1,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,254,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,0,0,0,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,0,0,0,255,7,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,0,0,0,255,15,0,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,56,224,0,0,0,0,224,255,0,0,0,254,31,0,0,0,0,0,0,0,0,0,128,255,1,0,0,0,0,0,0,0,254,255,3,0,0,0,224,255,0,0,0,254,31,0,0,0,0,0,0,0,0,0,128,255,1,0,0,0,0,0,0,0,254,255,3,0,0,0,224,255,0,0,0,254,31,0,0,0,0,0,0,0,0,0,192,255,3,0,0,0,0,0,0,0,255,255,7,0,0,0,240,255,1,0,0,252,15,0,0,0,0,0,0,0,0,0,192,255,7,0,0,0,0,0,0,0,255,255,7,0,0,0,240,255,1,0,0,56,7,0,0,0,0,0,0,0,0,0,192,255,15,0,0,0,0,0,0,0,255,255,7,0,0,0,248,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,15,0,0,0,0,0,0,0,254,255,3,0,0,0,248,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,15,0,192,29,0,0,0,0,254,255,7,0,0,0,248,255,195,3,0,0,0,0,0,0,0,0,0,0,0,0,0,255,15,0,240,63,0,0,0,0,248,255,7,0,0,0,248,255,227,15,0,0,0,0,0,0,0,0,0,0,0,0,0,255,15,0,240,63,0,0,0,0,224,255,7,0,0,0,248,255,243,15,0,0,0,0,0,0,0,0,0,0,0,0,128,255,7,0,252,127,0,0,0,0,224,255,3,0,0,0,252,255,253,31,0,0,0,0,0,0,0,0,0,0,0,0,128,255,7,0,254,127,0,0,0,0,224,255,3,0,0,0,254,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,128,255,7,0,254,127,0,0,0,0,224,227,0,0,0,0,254,255,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,255,7,0,254,63,0,0,0,0,192,1,0,0,0,0,254,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,255,3,0,252,31,0,0,0,0,0,0,0,0,0,0,124,255,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,252,3,0,192,1,0,0,0,0,0,0,0,0,0,0,56,254,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,7,0,0,0,0,0,0,0,0,0,0,0,0,240,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,255,7,0,0,0,0,0,0,0,0,0,0,0,0,248,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,7,0,0,0,0,0,0,0,0,0,0,0,0,252,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,7,0,0,0,0,0,0,0,0,0,0,0,0,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,15,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,15,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,15,0,0,0,0,0,0,0,0,0,0,0,128,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,7,0,0,0,0,0,0,0,0,0,0,0,128,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,3,0,0,0,0,0,0,0,0,0,0,0,142,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,31,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,128,63,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,240,191,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,63,0,0,0,0,252,191,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,0,0,0,0,254,159,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,0,0,0,0,255,159,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,59,0,0,0,255,31,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,127,0,0,128,255,63,254,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,128,255,127,252,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,255,0,0,128,255,255,252,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,255,0,0,128,255,255,249,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,127,0,0,128,255,255,115,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,63,0,0,0,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,31,0,0,0,255,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,31,0,0,0,254,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,15,0,0,0,252,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,15,0,0,0,240,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,7,0,0,0,128,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,3,0,0,0,0,255,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,0,0,0,0,0,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,253,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,127,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,127,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,63,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,31,0,0,0,0,0,128,255,1,0,0,0,0,0,0,128,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,15,0,0,0,0,0,192,255,1,0,0,0,0,0,0,192,223,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,127,0,0,0,0,0,0,224,255,239,3,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,192,255,255,0,0,0,0,0,0,240,255,255,15,0,0,0,0,0,0,0,0,0,0,0,240,1,0,0,0,0,0,0,128,255,255,1,0,0,0,0,0,240,255,255,31,0,0,0,0,0,0,0,0,0,0,0,252,3,0,0,0,0,0,0,192,255,255,3,0,0,0,0,0,240,255,255,63,0,0,0,0,0,0,0,0,0,0,0,255,3,0,0,0,0,0,0,192,255,255,7,0,0,0,0,0,240,255,255,63,0,0,0,0,0,0,0,0,0,0,0,255,3,0,0,0,0,0,0,224,255,255,7,0,0,0,0,0,240,255,255,127,0,0,0,0,0,0,0,0,0,0,128,255,1,0,1,0,0,0,0,224,255,255,7,0,0,0,0,0,224,255,255,127,0,0,0,0,0,0,0,0,0,0,128,255,0,240,7,0,0,0,0,224,255,255,7,0,0,0,0,0,224,255,255,127,0,0,0,0,0,0,0,0,0,0,128,255,1,252,15,0,0,0,0,224,255,255,7,0,0,0,0,0,224,255,255,127,0,0,0,0,0,0,0,0,0,0,192,255,3,254,31,0,0,0,0,224,255,255,3,0,0,0,0,0,240,255,255,127,0,0,0,0,0,0,0,0,0,0,192,255,3,255,31,0,0,0,0,192,255,255,1,0,0,0,0,0,240,255,255,255,0,0,0,0,0,0,0,0,0,0,192,255,3,255,63,0,0,0,0,192,255,255,0,0,0,0,0,0,240,255,255,255,0,0,0,0,0,0,0,0,0,0,128,255,129,255,63,0,0,0,0,128,255,127,0,0,0,0,0,0,240,255,255,255,1,0,0,0,0,0,0,0,0,0,0,254,128,255,63,0,0,0,0,0,255,1,0,0,0,0,0,0,240,255,255,255,1,0,0,0,0,0,0,0,0,0,0,124,128,255,63,0,0,0,0,0,252,1,0,0,0,0,0,0,224,255,227,255,1,0,0,0,0,0,0,0,0,0,0,0,128,255,63,0,0,0,0,0,252,1,0,0,0,0,0,0,224,255,3,254,0,0,0,0,0,0,0,0,0,0,0,0,128,255,31,0,0,0,0,0,252,1,0,0,0,0,0,0,192,255,7,254,0,0,0,0,0,0,0,0,0,0,0,0,0,255,31,0,0,0,0,0,248,0,0,0,0,0,0,0,128,255,7,56,0,0,0,0,0,0,0,0,0,14,0,0,0,255,15,0,0,0,0,0,112,0,0,0,0,0,0,0,0,254,7,0,0,0,0,0,0,0,0,0,128,63,0,0,128,255,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,3,0,0,0,0,0,0,0,0,0,192,63,0,0,128,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,224,127,0,0,128,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,127,0,0,0,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,0,0,0,254,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,0,0,0,240,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,0,0,0,240,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,0,248,127,0,0,0,192,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,1,0,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,1,0,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,1,0,248,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,0,0,240,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,1,0,240,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,1,0,240,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,1,0,240,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,224,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,128,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,56,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,124,0,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,129,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,195,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,127,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,0,0,0,0,0,0,0,0,0,0,0,0,192,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,255,255,1,0,0,0,0,0,0,0,0,0,0,0,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,255,255,15,0,0,0,0,0,0,0,0,0,0,0,240,127,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,255,255,31,0,0,0,0,0,0,0,0,0,0,0,248,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,255,255,31,0,0,0,0,0,0,0,0,0,0,0,248,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,255,31,0,0,0,0,0,0,0,0,0,0,0,248,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,238,255,15,0,0,0,0,0,0,0,0,0,0,0,240,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,255,1,0,0,0,0,0,0,0,0,0,0,0,240,255,63,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,0,0,0,0,0,0,0,0,0,0,0,0,240,255,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,127,0,0,0,0,0,0,0,0,0,0,0,0,224,255,31,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,255,0,0,0,0,0,0,0,0,0,0,0,0,192,255,7,0,0,0,0,0,0,248,0,0,0,112,31,0,0,0,128,255,0,0,0,0,0,0,0,0,0,0,0,0,0,254,0,0,0,0,0,0,0,248,0,0,0,252,63,0,0,0,128,255,0,0,0,0,0,192,3,0,0,0,0,0,0,124,0,0,0,0,0,0,0,252,1,0,0,252,127,0,0,0,128,127,0,0,0,0,0,224,7,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,3,0,0,254,255,0,0,0,0,127,0,0,0,0,0,224,7,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,7,0,0,254,255,0,0,0,0,28,0,62,0,0,0,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,7,0,0,254,255,0,0,0,0,0,0,127,31,0,0,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,192,255,15,0,28,252,255,0,0,0,0,0,128,255,63,0,0,248,15,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,31,0,127,252,255,0,0,0,0,0,192,255,127,0,0,248,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,255,31,0,127,248,127,0,0,0,0,0,240,255,255,0,0,248,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,254,31,128,255,240,63,0,0,0,0,0,248,255,255,0,0,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,252,31,128,255,224,63,0,0,0,0,0,252,255,255,0,0,248,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,248,15,128,255,224,63,0,0,0,0,0,252,255,255,0,0,248,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,240,7,0,255,193,31,0,0,0,0,0,252,255,255,0,0,248,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,0,128,255,131,3,0,192,29,0,0,248,255,127,0,0,240,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,3,248,124,240,63,0,0,240,255,63,0,0,224,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,255,3,252,255,252,127,0};
+const uint8_t rain_run[189][4] = {{0,8,4,203},{0,14,8,172},{0,34,4,134},{0,44,2,194},{0,51,1,192},{1,2,8,172},{2,62,6,187},{3,22,9,209},{3,46,10,174},{6,8,8,175},{6,18,10,135},{7,4,10,195},{7,6,7,154},{7,9,6,174},{8,49,11,160},{9,37,8,150},{12,33,9,159},{12,45,5,209},{12,56,10,175},{13,19,5,204},{14,47,7,154},{16,20,11,143},{19,1,7,170},{21,41,5,140},{21,42,8,113},{24,43,6,152},{25,37,7,136},{26,61,7,153},{28,45,10,159},{30,18,6,139},{31,2,10,121},{31,13,11,210},{31,28,11,114},{31,54,7,134},{35,36,7,168},{38,46,5,141},{43,7,8,118},{43,11,11,185},{43,17,11,144},{43,34,7,111},{44,31,5,182},{48,36,5,141},{49,25,7,163},{49,43,11,130},{49,47,6,134},{54,49,8,197},{55,39,6,174},{56,52,10,152},{58,27,9,191},{61,21,11,191},{62,58,9,199},{66,0,10,184},{67,60,11,174},{68,53,11,176},{69,23,11,208},{70,28,7,197},{73,59,13,176},{74,3,6,138},{74,10,10,191},{76,25,11,165},{78,0,7,174},{79,6,9,182},{85,4,10,203},{85,31,7,175},{86,20,7,155},{87,14,7,114},{87,16,11,142},{89,62,8,208},{90,23,8,124},{93,27,10,175},{96,19,10,190},{97,4,11,119},{97,46,5,156},{98,38,9,162},{99,25,8,146},{102,51,10,180},{104,50,11,143},{106,42,8,142},{107,12,6,158},{107,41,6,119},{108,27,5,169},{108,58,10,191},{112,59,7,190},{113,3,8,179},{113,5,9,145},{114,12,5,139},{114,38,9,148},{115,57,7,191},{119,22,10,122},{122,58,10,172},{123,35,6,156},{124,62,9,178},{126,3,6,167},{126,26,11,130},{127,36,9,127},{129,31,9,124},{130,1,10,185},{130,63,9,170},{131,5,6,139},{133,47,6,114},{134,37,7,111},{135,12,7,144},{137,57,10,127},{140,29,6,160},{141,44,5,146},{142,60,10,194},{145,15,6,134},{148,23,7,127},{148,41,9,202},{148,50,6,200},{149,35,5,180},{152,10,11,136},{153,56,5,204},{154,18,8,160},{156,33,7,127},{157,54,9,180},{159,20,9,135},{161,32,9,167},{161,45,11,169},{163,17,7,205},{163,63,9,133},{164,29,10,172},{166,55,10,161},{167,15,6,207},{168,22,9,167},{171,49,11,180},{173,53,10,204},{174,61,8,186},{176,38,6,169},{177,2,10,138},{180,24,9,154},{181,56,10,120},{182,10,5,184},{182,52,10,164},{183,48,6,132},{184,13,9,192},{187,40,9,144},{188,42,5,204},{188,55,6,145},{190,54,10,135},{192,9,8,168},{196,55,6,190},{197,40,10,151},{202,13,7,186},{204,7,5,139},{204,21,8,131},{205,32,16,179},{206,8,8,148},{206,35,10,164},{208,19,10,114},{211,7,6,127},{212,5,9,137},{213,0,11,155},{214,16,8,207},{215,29,9,142},{216,39,9,137},{217,9,10,111},{217,30,9,123},{217,48,10,150},{217,57,7,206},{218,28,9,120},{219,44,5,179},{219,53,7,145},{220,24,7,205},{220,61,6,149},{223,51,6,167},{227,11,5,197},{227,63,5,141},{228,52,11,166},{230,50,5,153},{234,16,7,143},{235,17,10,170},{235,40,10,148},{236,26,5,176},{236,30,5,136},{237,15,11,183},{239,1,11,208},{239,34,8,146},{243,39,6,115},{244,24,10,187},{244,43,9,114},{245,26,9,184},{247,11,5,161},{247,14,9,130},{248,33,6,138},{248,44,8,194},{248,51,8,192},{249,8,7,203},{254,34,2,134}};
+const uint8_t rain_idx[257] = {0,5,6,7,9,9,9,11,14,15,16,16,16,19,20,21,21,22,22,22,23,23,25,25,25,26,27,28,28,29,29,30,34,34,34,34,35,35,35,36,36,36,36,36,40,41,41,41,41,42,45,45,45,45,45,46,47,48,48,49,49,49,50,51,51,51,51,52,53,54,55,56,56,56,57,59,59,60,60,61,62,62,62,62,62,62,64,65,67,67,68,69,69,69,70,70,70,71,73,74,75,75,75,76,76,77,77,78,80,82,82,82,82,83,85,87,88,88,88,88,89,89,89,90,91,92,92,94,95,95,96,98,99,99,100,101,102,102,103,103,103,104,105,106,106,106,107,107,107,110,111,111,111,112,113,114,114,115,116,116,117,117,119,119,121,122,122,123,124,125,125,125,126,126,127,128,128,129,130,130,130,131,132,134,135,136,136,136,137,139,139,140,140,141,141,141,141,142,143,143,143,143,143,144,144,146,147,149,149,150,150,150,151,152,153,154,155,156,160,161,163,165,165,165,166,166,166,166,168,169,169,170,170,170,170,171,173,175,176,176,178,178,178,178,179,181,182,182,184,187,188,188,188,188,188,189,189};
+const uint8_t snow_run[250][4] = {{0,62,2,195},{1,49,2,195},{2,35,2,195},{2,60,2,195},{3,59,2,195},{4,19,2,195},{4,37,2,195},{8,18,2,195},{12,9,2,195},{13,50,2,195},{14,13,2,195},{15,8,2,195},{16,40,2,195},{18,42,2,195},{18,46,2,195},{19,2,2,195},{21,11,2,195},{21,23,2,195},{21,39,2,195},{21,51,2,195},{22,29,2,195},{25,43,2,195},{27,10,2,195},{27,53,2,195},{30,2,2,195},{30,21,2,195},{30,31,2,195},{30,50,2,195},{31,4,2,195},{31,56,2,195},{33,19,2,195},{33,39,2,195},{34,15,2,195},{34,29,2,195},{34,56,2,195},{35,59,2,195},{36,44,2,195},{37,6,2,195},{40,52,2,195},{41,9,2,195},{45,42,2,195},{46,1,2,195},{51,55,2,195},{52,49,2,195},{54,14,2,195},{54,40,2,195},{55,31,2,195},{55,51,2,195},{55,54,2,195},{56,12,3,183},{56,17,2,195},{56,60,2,195},{57,8,2,195},{59,33,2,195},{62,57,2,195},{63,5,2,195},{63,45,2,195},{66,58,2,195},{67,48,2,195},{68,15,3,207},{68,35,2,195},{68,44,2,195},{69,32,2,195},{69,34,2,195},{70,6,2,195},{70,7,2,195},{72,18,2,195},{74,24,2,195},{74,27,2,195},{74,36,2,195},{77,1,2,195},{78,10,4,195},{78,35,2,195},{79,2,2,195},{79,46,2,195},{80,41,2,195},{81,3,2,195},{82,13,2,195},{82,55,2,195},{88,23,2,195},{88,32,2,195},{90,11,3,183},{91,33,2,195},{91,58,2,195},{94,58,2,195},{95,23,2,195},{95,35,2,195},{96,3,2,195},{99,39,2,195},{100,41,2,195},{103,9,2,195},{103,55,2,195},{103,59,2,195},{105,22,2,195},{106,48,2,195},{107,12,2,195},{108,19,2,195},{110,20,2,195},{110,54,2,195},{111,26,2,195},{111,36,2,195},{112,16,2,195},{112,57,2,195},{114,9,2,195},{114,61,2,195},{118,1,2,195},{119,27,2,195},{119,60,2,195},{120,26,2,195},{121,38,2,195},{122,20,2,195},{122,37,2,195},{122,40,2,195},{123,36,2,195},{124,12,2,195},{125,8,2,195},{125,25,2,195},{126,4,2,195},{127,31,2,195},{127,37,2,195},{129,27,2,195},{129,38,2,195},{130,47,2,195},{130,51,2,195},{132,44,2,195},{133,17,2,195},{135,0,2,195},{135,62,2,195},{137,36,2,195},{139,22,2,195},{140,5,2,195},{140,43,2,195},{142,7,2,195},{142,44,2,195},{143,21,2,195},{143,43,2,195},{144,23,2,195},{149,0,2,195},{149,21,2,195},{150,17,2,195},{150,39,2,195},{151,28,2,195},{152,16,2,195},{154,33,2,195},{154,47,2,195},{154,53,2,195},{155,16,2,195},{155,52,2,195},{156,32,2,195},{156,49,2,195},{159,19,2,195},{161,41,2,195},{161,45,2,195},{161,61,2,195},{162,32,2,195},{163,63,2,195},{164,57,2,195},{167,52,2,195},{168,28,2,195},{168,62,2,195},{170,50,2,195},{172,1,2,195},{172,15,2,195},{172,20,2,195},{173,59,2,195},{174,0,2,195},{174,17,2,195},{175,4,2,195},{176,30,2,195},{178,22,2,195},{178,28,2,195},{179,13,2,195},{179,26,2,195},{180,24,2,195},{181,30,2,195},{182,29,2,195},{184,3,2,195},{184,28,2,195},{184,49,2,195},{184,53,4,195},{185,25,2,195},{185,45,2,195},{186,22,2,195},{186,24,2,195},{186,31,2,195},{187,7,2,195},{187,16,2,195},{187,18,2,195},{189,14,2,195},{189,24,2,195},{192,40,2,195},{193,25,2,195},{193,37,2,195},{193,42,2,195},{197,3,2,195},{199,2,2,195},{199,55,2,195},{200,13,2,195},{201,25,2,195},{201,63,2,195},{202,5,2,195},{202,18,2,195},{203,6,2,195},{203,34,2,195},{203,61,2,195},{206,8,2,195},{209,54,2,195},{211,60,2,195},{213,6,2,195},{214,20,2,195},{215,41,2,195},{215,52,2,195},{216,5,2,195},{216,63,2,195},{217,30,2,195},{217,45,2,195},{217,48,2,195},{218,42,2,195},{221,4,2,195},{221,51,2,195},{225,38,2,195},{227,14,2,195},{228,61,2,195},{229,34,2,195},{230,14,2,195},{231,11,2,195},{231,30,2,195},{231,47,2,195},{231,48,2,195},{234,47,2,195},{236,26,2,195},{238,56,2,195},{239,7,2,195},{239,34,2,195},{240,46,2,195},{240,58,2,195},{240,62,2,195},{244,57,2,195},{245,29,2,195},{246,33,2,195},{246,38,2,195},{246,54,2,195},{247,50,2,195},{248,56,2,195},{252,27,2,195},{253,43,2,195},{253,46,2,195},{254,10,2,195},{254,21,2,195},{254,63,2,195}};
+const uint8_t snow_idx[257] = {0,1,2,4,5,7,7,7,7,8,8,8,8,9,10,11,12,13,13,15,16,16,20,21,21,21,22,22,24,24,24,28,30,30,32,35,36,37,38,38,38,39,40,40,40,40,41,42,42,42,42,42,43,44,44,46,49,52,53,53,54,54,54,55,57,57,57,58,59,62,64,66,66,67,67,70,70,70,71,73,75,76,77,79,79,79,79,79,79,81,81,82,84,84,84,85,87,88,88,88,89,90,90,90,93,93,94,95,96,97,97,99,101,103,103,105,105,105,105,106,108,109,110,113,114,115,117,118,120,120,122,124,124,125,126,126,128,128,129,129,130,132,132,134,136,137,137,137,137,137,139,141,142,143,143,146,148,150,150,150,151,151,154,155,156,157,157,157,158,160,160,161,161,164,165,167,168,169,169,171,173,174,175,176,176,180,182,185,188,188,190,190,190,191,194,194,194,194,195,195,197,198,200,202,205,205,205,206,206,206,207,207,208,208,209,210,212,214,217,218,218,218,220,220,220,220,221,221,222,223,224,225,229,229,229,230,230,231,231,232,234,237,237,237,237,238,239,242,243,244,244,244,244,245,247,250,250};
+const uint16_t biome_grass[256] = {0x5DB2,0x6E33,0xC5AE,0x7D73,0x55B1,0x6D33,0x6C4B,0x65F3,0x9E58,0x9E58,0x8E74,0x8675,0x3C6D,0x3631,0xBDCD,0x9C8C,0x9E58,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33,0x6E33};
+const uint16_t biome_foliage[256] = {0x3CEF,0x4550,0xAD0B,0x5CD0,0x2CCE,0x4C70,0x4BA9,0x4530,0x7D95,0x7D95,0x65B1,0x5DD2,0x236A,0x1D6E,0x9D2A,0xA44B,0x7D95,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550,0x4550};
+const uint16_t biome_water[256] = {0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xCF18,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF};
+const int8_t biome_temp[256] = {25,38,90,10,32,15,38,25,0,-5,38,28,32,45,65,90,0,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38,38};   /* x 50 */
+const uint8_t biome_rain[256] = {1,1,0,1,1,1,1,1,3,3,1,1,1,1,0,0,3,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1};
diff --git a/games/numblocks/src/data.h b/games/numblocks/src/data.h
index a6bfe66..77ccad8 100644
--- a/games/numblocks/src/data.h
+++ b/games/numblocks/src/data.h
@@ -296,7 +296,7 @@ extern const uint16_t blk_icon[B_COUNT];   /* sprite of its icon */
 #define SP_SLOT_CHESTPLATE 424
 #define SP_SLOT_LEGGINGS 425
 #define SP_SLOT_BOOTS 426
-#define SP_STEVE 427
+#define SP_PLAYER 427
 #define SP_ARM 428
 #define SP_DIRT_BG 429
 
@@ -309,7 +309,7 @@ extern const uint16_t it_icon[N_ITEMS], it_dur[N_ITEMS], it_fuel[N_ITEMS];
 extern const uint8_t it_kind[N_ITEMS], it_stack[N_ITEMS], it_tier[N_ITEMS], it_a[N_ITEMS], it_b[N_ITEMS];
 extern const uint8_t it_place[N_ITEMS];   /* the block it places (255: none) */
 typedef struct { uint16_t out; uint8_t n, w, h; uint16_t in[9]; } Recipe;   /* w 0: shapeless, h of them */
-#define N_RECIPES 187
+#define N_RECIPES 185
 extern const Recipe recipes[N_RECIPES];
 #define N_SMELTING 27
 extern const uint16_t smelting[N_SMELTING][2];
@@ -319,7 +319,7 @@ extern const uint16_t group_log[];   /* ends with 0xFFFF */
 extern const uint16_t group_sapling[];   /* ends with 0xFFFF */
 extern const uint8_t skin_px[][1024];   /* mob skins, 64 x 32 */
 extern const uint16_t skin_pal[][16];
-enum { SKIN_ZOMBIE, SKIN_SKELETON, SKIN_CREEPER, SKIN_SPIDER, SKIN_PIG, SKIN_COW, SKIN_SHEEP, SKIN_SHEEP_FUR, SKIN_CHICKEN };
+enum { SKIN_MUDLING, SKIN_THORNLING, SKIN_FIZZLER, SKIN_SKITTER, SKIN_SNUFFLER, SKIN_HUMPOX, SKIN_WOOLLY, SKIN_WOOLLY_FUR, SKIN_STRIDER };
 extern const uint8_t cracks[10][32];   /* destroy stages, 1 bit a texel */
 extern const uint16_t tab_items[], tab_start[13];   /* the creative tabs' items */
 extern const char *const tab_name[12];
diff --git a/games/numblocks/src/entity.c b/games/numblocks/src/entity.c
index 1b355fc..6106ffe 100644
--- a/games/numblocks/src/entity.c
+++ b/games/numblocks/src/entity.c
@@ -1,34 +1,34 @@
-/* Entities: dropped items (EntityItem) here, mobs and arrows in mob.c.
+/* Entities: dropped items and the fishing hook here, creatures and arrows in mob.c.
  *
- * An item falls (0.04 a tick, drag 0.98), slides (0.6 x 0.98 on the ground),
- * bounces a little, joins the same items near it, can be picked up after 10
- * ticks (40 when the player threw it) and disappears after 5 minutes. */
+ * A dropped item falls (0.05 a tick, 0.97 of its speed kept), slides to a stop on the ground (0.55),
+ * hops a little when it lands, gathers with the same items close by, can be picked up after 8 ticks
+ * (30 when thrown) and crumbles away after 4.5 minutes. */
 #include <math.h>
 #include "nb.h"
 #include "mob.h"
 
 Entity ents[N_ENT];
 
-/* ---------------------------------------------------------------- particles (EntityDiggingFX, EntityRainFX) */
+/* ---------------------------------------------------------------- particles */
 Particle parts[N_PART];
 
-/* breaking a block: its bits, coloured like its texture, fly out and fall (EffectRenderer.addBlockDestroyEffects) */
+/* breaking a block: its bits, coloured like its texture, fly out and fall */
 void particles_break(int x, int y, int z, int b) {
   int tex = blk_tex[b][2];
-  for (int k = 0; k < 12; k++) {
+  for (int k = 0; k < 10; k++) {
     Particle *p = &parts[rnd(N_PART)];
     int u = rnd(16), v = rnd(16);
     uint8_t q = tex_px[tex][(v * 16 + u) >> 1];
     int i = (u & 1) ? q >> 4 : q & 15;
     if (!i && (tex_flags[tex] & 0x20)) continue;
     p->c = tex_pal[tex][i];
-    if (i >= (tex_flags[tex] & 0x1F)) p->c = 0x5CA9;   /* (tinted: a grass green) */
+    if (i >= (tex_flags[tex] & 0x1F)) p->c = 0x6E33;   /* (tinted: our sea-green grass) */
     p->x = x + 0.2f + rndf() * 0.6f, p->y = y + 0.2f + rndf() * 0.6f, p->z = z + 0.2f + rndf() * 0.6f;
-    p->vx = (p->x - x - 0.5f) * 0.3f + (rndf() - 0.5f) * 0.1f;
-    p->vy = (p->y - y - 0.5f) * 0.3f + 0.1f + rndf() * 0.1f;
-    p->vz = (p->z - z - 0.5f) * 0.3f + (rndf() - 0.5f) * 0.1f;
+    p->vx = (p->x - x - 0.5f) * 0.25f + (rndf() - 0.5f) * 0.08f;
+    p->vy = (p->y - y - 0.5f) * 0.2f + 0.14f + rndf() * 0.08f;
+    p->vz = (p->z - z - 0.5f) * 0.25f + (rndf() - 0.5f) * 0.08f;
     p->age = 0;
-    p->life = (uint8_t)(4 / (rndf() * 0.9f + 0.1f));
+    p->life = (uint8_t)(6 + rnd(18));
   }
 }
 
@@ -44,28 +44,27 @@ void particle_add(float x, float y, float z, float vx, float vy, float vz, uint1
   *p = (Particle){x, y, z, vx, vy, vz, c, 0, (uint8_t)life};
 }
 
-/* EntityRenderer.addRainParticles: drops splash on whatever the rain falls on
- * within 10 blocks, up to 100 a tick in a full downpour (half with Fast
- * graphics); here only as many as there are free particles */
+/* drops splash on what the rain falls on around the player (8 blocks), up to 60 tries a tick in a
+ * full downpour (a third of that with Fast graphics), as far as free particles go */
 static void rain_splashes(void) {
-  float f = opt.fancy ? rain_str : rain_str / 2;
-  int n = (int)(100 * f * f), px = (int)floorf(pl.x), py = (int)floorf(pl.y), pz = (int)floorf(pl.z);
+  float f = opt.fancy ? rain_str : rain_str / 3;
+  int n = (int)(60 * f), px = (int)floorf(pl.x), py = (int)floorf(pl.y), pz = (int)floorf(pl.z);
   for (int i = 0; i < N_PART && n > 0; i++) {
     Particle *p = &parts[i];
     if (p->age < (p->life & P_LIFE)) continue;
-    /* a free one: look for where it lands (a few tries, as most of the 100 would) */
-    for (int k = 0; k < 4 && n > 0; k++, n--) {
-      int x = px + rnd(10) - rnd(10), z = pz + rnd(10) - rnd(10), y = world_rain_top(x, z);
-      if (y > py + 10 || y < py - 10 || !world_loaded(x, y - 1, z)) continue;
+    /* a free one: a few tries at a spot the rain reaches */
+    for (int k = 0; k < 3 && n > 0; k++, n--) {
+      int x = px + rnd(17) - 8, z = pz + rnd(17) - 8, y = world_rain_top(x, z);
+      if (y > py + 8 || y < py - 8 || !world_loaded(x, y - 1, z)) continue;
       int lx = x - vc_x0, lz = z - vc_z0, below = world_get(x, y - 1, z);
       if (biome_rain[vbiome[lz * VCX + lx]] != 1 || temp_at(x, y, z) < 0.15f || below == B_AIR || is_lava(below)) continue;
       float b[6], top = (float)y;
       if (block_box(x, y - 1, z, b)) top = b[4];
       p->x = x + rndf(), p->y = top + 0.1f, p->z = z + rndf();
-      p->vx = (rndf() - 0.5f) * 0.03f, p->vz = (rndf() - 0.5f) * 0.03f, p->vy = rndf() * 0.2f + 0.1f;
-      p->c = 0x1A59;   /* (24, 72, 204), the splash sprites' blue */
+      p->vx = (rndf() - 0.5f) * 0.04f, p->vz = (rndf() - 0.5f) * 0.04f, p->vy = rndf() * 0.12f + 0.12f;
+      p->c = 0x3A7B;   /* a rain blue */
       p->age = 0;
-      p->life = (uint8_t)(RAIN_DROP | (int)(8 / (rndf() * 0.8f + 0.2f)));
+      p->life = (uint8_t)(RAIN_DROP | (6 + rnd(12)));
       break;
     }
   }
@@ -78,14 +77,14 @@ static void particles_tick(void) {
     bool drop = p->life & RAIN_DROP;
     if (p->age >= (p->life & P_LIFE)) continue;
     p->age++;
-    p->vy -= p->life & P_FLOAT ? 0 : drop ? 0.06f : 0.04f;
+    p->vy -= p->life & P_FLOAT ? 0 : drop ? 0.07f : 0.045f;
     float np[3] = {p->x, p->y, p->z}, v[3] = {p->vx, p->vy, p->vz};
     bool ground = phys_move(np, v, 0.1f, 0.1f);
     p->x = np[0], p->y = np[1], p->z = np[2];
-    p->vx = v[0] * 0.98f, p->vy = v[1] * 0.98f, p->vz = v[2] * 0.98f;
+    p->vx = v[0] * 0.96f, p->vy = v[1] * 0.96f, p->vz = v[2] * 0.96f;
     if (ground) {
-      p->vx *= 0.7f, p->vz *= 0.7f;
-      if (drop && rnd(2)) p->age = p->life & P_LIFE;   /* half the drops are gone when they land */
+      p->vx *= 0.5f, p->vz *= 0.5f;
+      if (drop && rnd(3)) p->age = p->life & P_LIFE;   /* (most drops are gone when they land) */
     }
   }
 }
@@ -111,11 +110,11 @@ Entity *ent_new(int type, float x, float y, float z) {
   e->y = e->py = y;
   e->z = e->pz = z;
   e->gx = x, e->gz = z;
-  if (type >= E_ZOMBIE && type <= E_CHICKEN) e->tx = (int16_t)floorf(x), e->tz = (int16_t)floorf(z);   /* (going nowhere yet) */
+  if (type >= E_FIRST_MOB && type <= E_LAST_MOB) e->tx = (int16_t)floorf(x), e->tz = (int16_t)floorf(z);   /* (going nowhere yet) */
   return e;
 }
 
-/* Block.spawnAsEntity / EntityPlayer.dropItem */
+/* dropping an item */
 Entity *ent_drop(int id, int count, int dmg, float x, float y, float z, bool thrown) {
   if (!id || count <= 0) return NULL;
   Entity *e = ent_new(E_ITEM, x, y, z);
@@ -123,51 +122,45 @@ Entity *ent_drop(int id, int count, int dmg, float x, float y, float z, bool thr
   e->item.id = (uint16_t)id;
   e->item.aux = (uint16_t)(item_dur(id) ? dmg : count);
   if (thrown) {
-    /* EntityPlayer.dropItem: 0.3 forwards, a little up, a little at random */
-    float yaw = pl.yaw * 0.017453292f, pitch = pl.pitch * 0.017453292f;
-    e->vx = -sinf(yaw) * cosf(pitch) * 0.3f;
-    e->vz = cosf(yaw) * cosf(pitch) * 0.3f;
-    e->vy = -sinf(pitch) * 0.3f + 0.1f;
-    float a = rndf() * 6.2831853f, f = 0.02f * rndf();
-    e->vx += cosf(a) * f;
-    e->vy += (rndf() - rndf()) * 0.1f;
-    e->vz += sinf(a) * f;
-    e->delay = 40;
+    /* tossed where the player looks, a bit upwards */
+    float yaw = pl.yaw * 0.017453292f, pitch = pl.pitch * 0.017453292f, k = 0.32f + rndf() * 0.04f;
+    e->vx = -sinf(yaw) * cosf(pitch) * k + (rndf() - 0.5f) * 0.03f;
+    e->vz = cosf(yaw) * cosf(pitch) * k + (rndf() - 0.5f) * 0.03f;
+    e->vy = -sinf(pitch) * k + 0.2f;
+    e->delay = 30;
   } else {
-    e->vx = rndf() * 0.2f - 0.1f;
-    e->vy = 0.2f;
-    e->vz = rndf() * 0.2f - 0.1f;
-    e->delay = 10;
+    float a = rndf() * 6.2831853f;
+    e->vx = cosf(a) * 0.08f;
+    e->vy = 0.22f;
+    e->vz = sinf(a) * 0.08f;
+    e->delay = 8;
   }
   e->yaw = rndf() * 360;
   return e;
 }
 
 static void item_tick(Entity *e) {
-  float p[3] = {e->x, e->y, e->z}, v[3] = {e->vx, e->vy - 0.04f, e->vz};
-  /* stuck in a block: pushed up out of it */
   float b[6];
-  if (block_box((int)floorf(e->x), (int)floorf(e->y + 0.125f), (int)floorf(e->z), b) && e->y + 0.125f < b[4])
-    v[1] = 0.1f;
-  bool ground = phys_move(p, v, 0.25f, 0.25f);
+  bool stuck = block_box((int)floorf(e->x), (int)floorf(e->y + 0.12f), (int)floorf(e->z), b) && e->y + 0.12f < b[4];
+  float p[3] = {e->x, e->y, e->z}, v[3] = {e->vx, stuck ? 0.12f : e->vy - 0.05f, e->vz};   /* (stuck: rises out) */
+  bool landed = phys_move(p, v, 0.25f, 0.25f);
   e->x = p[0], e->y = p[1], e->z = p[2];
-  float f = ground ? 0.6f * 0.98f : 0.98f;
-  e->vx = v[0] * f;
-  e->vy = v[1] * 0.98f;
-  e->vz = v[2] * f;
-  if (ground) e->vy *= -0.5f;
-  e->on_ground = ground;
+  float keep = landed ? 0.55f : 0.97f;
+  e->vx = v[0] * keep, e->vz = v[2] * keep;
+  e->vy = landed && !e->on_ground ? 0.08f : v[1] * 0.97f;   /* a little hop when it lands */
+  e->on_ground = landed;
   if (e->delay > 0) e->delay--;
-  if (e->age >= 6000) {
+  if (e->age >= 5400) {
     e->type = E_NONE;
     return;
   }
-  /* EntityItem.searchForOtherItemsNearby: the same items within half a block join */
-  if ((e->age & 7) == 0 && !item_dur(e->item.id)) {
+  /* the same items within about a block gather into one */
+  if ((e->age % 10) == 0 && !item_dur(e->item.id)) {
     for (int i = 0; i < N_ENT; i++) {
       Entity *o = &ents[i];
       if (o == e || o->type != E_ITEM || o->item.id != e->item.id) continue;
-      if (fabsf(o->x - e->x) > 0.75f || fabsf(o->y - e->y) > 0.5f || fabsf(o->z - e->z) > 0.75f) continue;
+      float dx = o->x - e->x, dy = o->y - e->y, dz = o->z - e->z;
+      if (dx * dx + dy * dy + dz * dz > 0.8f) continue;
       int room = item_max(e->item.id) - e->item.aux;
       if (room <= 0) break;
       int k = o->item.aux < room ? o->item.aux : room;
@@ -177,24 +170,21 @@ static void item_tick(Entity *e) {
       if (o->delay > e->delay) e->delay = o->delay;
     }
   }
-  /* picked up: the player's box grown by 1, 0.5, 1 touches it */
-  if (!e->delay && !pl.dead && fabsf(e->x - pl.x) < 0.3f + 0.125f + 1 && e->y + 0.25f > pl.y - 0.5f &&
-      e->y < pl.y + 1.8f + 0.5f && fabsf(e->z - pl.z) < 0.3f + 0.125f + 1) {
+  /* picked up within 1.3 blocks of the player's middle (across), from the feet to above the head */
+  float px = e->x - pl.x, pz = e->z - pl.z;
+  if (!e->delay && !pl.dead && px * px + pz * pz < 1.3f * 1.3f && e->y > pl.y - 0.6f && e->y < pl.y + PLAYER_H + 0.3f) {
     int left = inv_add(pl.inv, 36, e->item.id, item_count(&e->item), item_dur(e->item.id) ? e->item.aux : 0);
     if (!left) e->type = E_NONE;
     else if (!item_dur(e->item.id)) e->item.aux = (uint16_t)left;
   }
 }
 
-/* ---------------------------------------------------------------- fishing (EntityFishHook) */
-/* The hook flies, then floats where the water holds half of it. Under the
- * open sky (faster in rain, slower under a roof), a fish is on its way after
- * 5 to 45 seconds; its wake comes towards the hook for 1 to 4 seconds, the
- * hook dips, and for half a second to a second and a half reeling in brings
- * it out. Fields: timer the bite's time left (ticksCatchable), delay the
- * fish's way in (ticksCatchableDelay), panic the wait (ticksCaughtDelay), yaw
- * the way the fish comes, love the creature hooked (its index + 1). */
-#define WAKE 0x9DBF   /* light blue, as the splash sprites look on water */
+/* ---------------------------------------------------------------- fishing */
+/* The hook flies, lands and bobs on the water. A fish takes notice after 4 to 30 seconds (sooner in
+ * rain, later under a roof); it then circles in, leaving ripples, for 1 to 3 seconds; the hook ducks
+ * and for 12 to 24 ticks reeling in lands it. Fields: panic the wait for a fish, delay its way in,
+ * timer the bite, yaw where it comes from, love the creature hooked (its index + 1). */
+#define RIPPLE 0xAEDF
 
 Entity *bobber(void) {
   for (int i = 0; i < N_ENT; i++)
@@ -202,159 +192,127 @@ Entity *bobber(void) {
   return NULL;
 }
 
-static float gauss(void) { return (rndf() + rndf() + rndf() + rndf() - 2) * 1.7320508f; }
+static float wobble(void) { return rndf() - rndf(); }
 
 void fish_cast(void) {
   float yaw = pl.yaw * 0.017453292f, pitch = pl.pitch * 0.017453292f;
-  Entity *e = ent_new(E_BOBBER, pl.x - cosf(yaw) * 0.16f, pl.y + 1.62f - 0.1f, pl.z - sinf(yaw) * 0.16f);
+  Entity *e = ent_new(E_BOBBER, pl.x, pl.y + EYE - 0.15f, pl.z);
   if (!e) return;
-  /* 0.4 the way the player looks, then (handleHookCasting) 1.5 times that, a little off */
-  float v[3] = {-sinf(yaw) * cosf(pitch), -sinf(pitch), cosf(yaw) * cosf(pitch)};
-  for (int k = 0; k < 3; k++) v[k] = (v[k] + gauss() * 0.0075f) * 1.5f;
-  e->vx = v[0], e->vy = v[1], e->vz = v[2];
+  float k = 0.9f;   /* a cast, a little upwards */
+  e->vx = -sinf(yaw) * cosf(pitch) * k + wobble() * 0.02f;
+  e->vy = -sinf(pitch) * k + 0.2f;
+  e->vz = cosf(yaw) * cosf(pitch) * k + wobble() * 0.02f;
   e->yaw = 0;
+  e->panic = (int16_t)(80 + rnd(521));
 }
 
-/* EntityFishHook.getFishingResult: 10% junk, 5% treasure, 85% fish (weights as in 1.8;
- * the junk and treasure NumBlocks does not have are left out) */
+/* what comes out: mostly fish, sometimes junk (1 in 8), rarely something good (1 in 25) */
 static Entity *fish_catch(float x, float y, float z) {
-  static const uint16_t junk[][3] = {{I_LEATHER_BOOTS, 10, 1}, {I_LEATHER, 10, 1}, {I_BONE, 10, 1}, {I_STRING, 5, 1},
-                                     {I_FISHING_ROD, 2, 1}, {I_BOWL, 10, 1}, {I_STICK, 5, 1}, {I_DYE_BLACK, 1, 10},
-                                     {I_ROTTEN_FLESH, 10, 1}};
-  static const uint16_t treasure[][3] = {{B_LILY_PAD, 1, 1}, {I_BOW, 1, 1}, {I_FISHING_ROD, 1, 1}, {I_BOOK, 1, 1}};
-  static const uint16_t fish[][3] = {{I_RAW_FISH, 60, 1}, {I_RAW_SALMON, 25, 1}, {I_CLOWNFISH, 2, 1},
-                                     {I_PUFFERFISH, 13, 1}};
-  float f = rndf();
-  const uint16_t(*t)[3] = f < 0.1f ? junk : f < 0.15f ? treasure : fish;
-  int n = f < 0.1f ? 9 : 4, sum = 0;
+  static const uint16_t junk[][2] = {{I_LEATHER_BOOTS, 3}, {I_LEATHER, 4}, {I_BONE, 5}, {I_STRING, 4}, {I_BOWL, 3},
+                                     {I_STICK, 6}, {I_MUD_CAKE, 3}, {I_CLAY_BALL, 4}};
+  static const uint16_t good[][2] = {{B_LILY_PAD, 4}, {I_BOW, 1}, {I_FISHING_ROD, 1}, {I_BOOK, 2}, {I_GOLD_NUGGET, 3}};
+  static const uint16_t fish[][2] = {{I_RAW_FISH, 12}, {I_RAW_SALMON, 7}, {I_CLOWNFISH, 1}, {I_PUFFERFISH, 2}};
+  int r = rnd(200);
+  const uint16_t(*t)[2] = r < 25 ? junk : r < 33 ? good : fish;
+  int n = r < 25 ? 8 : r < 33 ? 5 : 4, sum = 0;
   for (int i = 0; i < n; i++) sum += t[i][1];
-  int r = rnd(sum), i = 0;
-  while (r >= t[i][1]) r -= t[i++][1];
-  int id = t[i][0], dmg = 0, max = item_dur(id);
-  if (max) {
-    /* WeightedRandomFishable: worn, up to 90% (junk) or 25% (treasure) */
-    int most = (int)((f < 0.1f ? 0.9f : 0.25f) * max);
-    dmg = max - rnd(rnd(most + 1) + 1);
-    dmg = dmg > most ? most : dmg < 1 ? 1 : dmg;
-  }
-  return ent_drop(id, t[i][2], dmg, x, y, z, false);
+  int w = rnd(sum), i = 0;
+  while (w >= t[i][1]) w -= t[i++][1];
+  int id = t[i][0], max = item_dur(id), dmg = 0;
+  if (max) dmg = r < 25 ? max / 3 + rnd(max / 2 + 1) : rnd(max / 5 + 1);   /* (junk comes worn) */
+  return ent_drop(id, 1, dmg, x, y, z, false);
 }
 
+/* reeling in: what it costs the rod (2 for a catch, 3 for a creature or a hook in the ground) */
 int fish_reel(Entity *e) {
   int wear = 0;
   Entity *c = e->love ? &ents[e->love - 1] : NULL;
   float dx = pl.x - e->x, dy = pl.y - e->y, dz = pl.z - e->z, d = sqrtf(dx * dx + dy * dy + dz * dz);
   if (c && c->type != E_NONE) {
-    /* a creature: pulled in */
-    c->vx += (pl.x - c->x) * 0.1f, c->vy += (pl.y - c->y) * 0.1f + sqrtf(d) * 0.08f, c->vz += (pl.z - c->z) * 0.1f;
+    c->vx += dx * 0.12f, c->vy += dy * 0.08f + 0.25f, c->vz += dz * 0.12f;
     wear = 3;
   } else if (e->timer > 0) {
-    /* a bite: what it caught flies to the player, and some experience */
-    Entity *it = fish_catch(e->x, e->y, e->z);
-    if (it) it->vx = dx * 0.1f, it->vy = dy * 0.1f + sqrtf(d) * 0.08f, it->vz = dz * 0.1f, it->delay = 0;
-    player_add_xp(rnd(6) + 1);
-    wear = 1;
+    Entity *it = fish_catch(e->x, e->y + 0.2f, e->z);
+    if (it) it->vx = dx * 0.11f, it->vy = dy * 0.11f + sqrtf(d) * 0.07f + 0.1f, it->vz = dz * 0.11f, it->delay = 0;
+    player_add_xp(1 + rnd(4));
+    wear = 2;
   }
-  if (e->on_ground) wear = 2;   /* (stuck in the ground) */
+  if (e->on_ground) wear = 3;
   e->type = E_NONE;
   return wear;
 }
 
+static void ripple(float x, float y, float z, float vx, float vz) {
+  particle_add(x, y, z, vx, 0.01f, vz, RIPPLE, P_FLOAT | (8 + rnd(10)));
+}
+
 static void bobber_tick(Entity *e) {
   float dx = e->x - pl.x, dy = e->y - pl.y, dz = e->z - pl.z;
-  if (pl.dead || held()->id != I_FISHING_ROD || dx * dx + dy * dy + dz * dz > 1024) {
+  if (pl.dead || held()->id != I_FISHING_ROD || dx * dx + dy * dy + dz * dz > 900) {
     e->type = E_NONE;
     return;
   }
-  if (e->love) {
-    /* on a creature: it goes where it goes */
+  if (e->love) {   /* hooked onto a creature: it follows it */
     Entity *c = &ents[e->love - 1];
     if (c->type != E_NONE && c->state != 255) {
-      e->x = c->x, e->y = c->y + mob_height(c->type) * 0.8f, e->z = c->z;
+      e->x = c->x, e->y = c->y + mob_height(c->type) * 0.75f, e->z = c->z;
       return;
     }
     e->love = 0;
   }
-  /* flying: does it hit a creature? */
   if (!e->on_ground)
     for (int i = 0; i < N_ENT; i++) {
       Entity *c = &ents[i];
-      if (c->type < E_ZOMBIE || c->type > E_CHICKEN || c->state == 255) continue;
-      float w = mob_width(c->type) / 2 + 0.125f;
-      if (fabsf(c->x - e->x) < w && fabsf(c->z - e->z) < w && e->y + 0.25f > c->y && e->y < c->y + mob_height(c->type)) {
+      if (c->type < E_FIRST_MOB || c->type > E_LAST_MOB || c->state == 255) continue;
+      float w = mob_width(c->type) / 2 + 0.1f;
+      if (fabsf(c->x - e->x) < w && fabsf(c->z - e->z) < w && e->y + 0.2f > c->y && e->y < c->y + mob_height(c->type)) {
         mob_hooked(c);
         e->love = (int16_t)(i + 1);
         return;
       }
     }
   float p[3] = {e->x, e->y, e->z}, v[3] = {e->vx, e->vy, e->vz};
-  bool ground = phys_move(p, v, 0.25f, 0.25f);
-  bool wall = (v[0] == 0 && e->vx != 0) || (v[2] == 0 && e->vz != 0);
+  e->on_ground = phys_move(p, v, 0.2f, 0.2f);
   e->x = p[0], e->y = p[1], e->z = p[2];
   e->vx = v[0], e->vy = v[1], e->vz = v[2];
-  e->on_ground = ground;
-  float f6 = ground || wall ? 0.5f : 0.92f;
-  /* how much of it is in water: five slices of its 0.25 height */
-  float wet = 0;
-  for (int k = 0; k < 5; k++) {
-    float y = e->y + 0.25f * (k + 0.5f) / 5;
-    int bx = (int)floorf(e->x), by = (int)floorf(y), bz = (int)floorf(e->z), b = world_get(bx, by, bz);
-    if (is_water(b) && y < by + 1 - (blk_meta[b] < 8 ? blk_meta[b] : 0) / 8.0f) wet += 0.2f;
-  }
-  if (wet > 0) {
-    int bx = (int)floorf(e->x), by = (int)floorf(e->y) + 1, bz = (int)floorf(e->z);
-    int l = 1;
-    if (rndf() < 0.25f && rain_at(bx, by, bz)) l = 2;
-    if (rndf() < 0.5f && world_rain_top(bx, bz) > by) l--;
-    float surface = floorf(e->y) + 1.05f;   /* (just above the water) */
-    if (e->timer > 0) {
-      if (--e->timer <= 0) e->panic = 0, e->delay = 0;
-    } else if (e->delay > 0) {
-      e->delay = (int16_t)(e->delay - l);
-      if (e->delay <= 0) {
-        /* the bite: the hook dips, bubbles and a splash */
-        e->vy -= 0.2f;
-        for (int k = 0; k < 4; k++)
-          particle_add(e->x + gauss() * 0.1f, surface - 0.1f, e->z + gauss() * 0.1f, gauss() * 0.05f, 0.1f, gauss() * 0.05f,
-                       0xCEFF, P_FLOAT | 8);
-        for (int k = 0; k < 6; k++)
-          particle_add(e->x + gauss() * 0.1f, surface, e->z + gauss() * 0.1f, gauss() * 0.05f, 0.15f + rndf() * 0.1f,
-                       gauss() * 0.05f, WAKE, RAIN_DROP | 12);
-        e->timer = (int16_t)(10 + rnd(21));
-      } else {
-        /* the fish's wake, coming in (its way wanders) */
-        e->yaw += gauss() * 4;
-        float a = e->yaw * 0.017453292f, sa = sinf(a), ca = cosf(a);
-        float wx = e->x + sa * e->delay * 0.1f, wz = e->z + ca * e->delay * 0.1f;
-        if (is_water(world_get((int)floorf(wx), (int)floorf(surface) - 1, (int)floorf(wz)))) {
-          if (rndf() < 0.15f) particle_add(wx, surface - 0.1f, wz, sa * 0.05f, 0.01f, ca * 0.05f, 0xCEFF, P_FLOAT | 6);
-          particle_add(wx, surface, wz, ca * 0.04f, 0.01f, -sa * 0.04f, WAKE, P_FLOAT | (int)(8 / (rndf() * 0.8f + 0.2f)));
-          particle_add(wx, surface, wz, -ca * 0.04f, 0.01f, sa * 0.04f, WAKE, P_FLOAT | (int)(8 / (rndf() * 0.8f + 0.2f)));
-        }
-      }
-    } else if (e->panic > 0) {
-      e->panic = (int16_t)(e->panic - l);
-      /* now and then, more so as the fish nears, a splash somewhere about */
-      float ch = 0.15f;
-      if (e->panic < 20) ch += (20 - e->panic) * 0.05f;
-      else if (e->panic < 40) ch += (40 - e->panic) * 0.02f;
-      else if (e->panic < 60) ch += (60 - e->panic) * 0.01f;
-      if (rndf() < ch) {
-        float a = rndf() * 6.2831853f, r = (25 + rndf() * 35) * 0.1f;
-        float sx = e->x + sinf(a) * r, sz = e->z + cosf(a) * r;
-        if (is_water(world_get((int)floorf(sx), (int)floorf(surface) - 1, (int)floorf(sz))))
-          for (int k = 0; k < 2 + rnd(2); k++)
-            particle_add(sx + gauss() * 0.1f, surface, sz + gauss() * 0.1f, 0, 0.1f + rndf() * 0.1f, 0, WAKE, RAIN_DROP | 10);
-      }
-      if (e->panic <= 0) e->yaw = rndf() * 360, e->delay = (int16_t)(20 + rnd(61));
-    } else
-      e->panic = (int16_t)(100 + rnd(801));
-    if (e->timer > 0) e->vy -= rndf() * rndf() * rndf() * 0.2f;
+  /* in water? the surface of the block it is in */
+  int bx = (int)floorf(e->x), by = (int)floorf(e->y + 0.1f), bz = (int)floorf(e->z), b = world_get(bx, by, bz);
+  bool wet = is_water(b);
+  float surface = by + 1 - (blk_meta[b] < 8 ? blk_meta[b] : 0) / 9.0f;
+  if (!wet) {
+    e->vy -= 0.035f;
+    float keep = e->on_ground ? 0.5f : 0.93f;
+    e->vx *= keep, e->vy *= 0.97f, e->vz *= keep;
+    return;
   }
-  e->vy += 0.04f * (wet * 2 - 1);   /* falls in the air, floats in water */
-  if (wall) e->vx *= rndf() * 0.2f, e->vz *= rndf() * 0.2f;
-  if (wet > 0) f6 *= 0.9f, e->vy *= 0.8f;
-  e->vx *= f6, e->vy *= f6, e->vz *= f6;
+  /* floating: drawn to just under the surface, a slow bob */
+  e->vy += (surface - 0.08f - e->y) * 0.15f + sinf(e->age * 0.15f) * 0.004f;
+  e->vx *= 0.8f, e->vy *= 0.75f, e->vz *= 0.8f;
+  int step = 1;
+  if (rain_at(bx, by + 1, bz)) step = rnd(3) ? 2 : 1;
+  else if (world_rain_top(bx, bz) > by + 1 && rnd(2)) step = 0;
+  if (e->timer > 0) {   /* a bite */
+    e->vy -= 0.03f;
+    if (--e->timer <= 0) e->panic = (int16_t)(80 + rnd(521));
+  } else if (e->delay > 0) {   /* a fish circling in */
+    e->delay = (int16_t)(e->delay - step);
+    e->yaw += 9 + wobble() * 6;
+    float a = e->yaw * 0.017453292f, r = e->delay * 0.06f;
+    float wx = e->x + sinf(a) * r, wz = e->z + cosf(a) * r;
+    if (is_water(world_get((int)floorf(wx), by, (int)floorf(wz)))) ripple(wx, surface, wz, cosf(a) * 0.02f, -sinf(a) * 0.02f);
+    if (e->delay <= 0) {
+      e->vy -= 0.25f;
+      for (int k = 0; k < 6; k++)
+        particle_add(e->x + wobble() * 0.2f, surface, e->z + wobble() * 0.2f, wobble() * 0.04f, 0.12f + rndf() * 0.08f,
+                     wobble() * 0.04f, RIPPLE, RAIN_DROP | 10);
+      e->timer = (int16_t)(12 + rnd(13));
+    }
+  } else if (e->panic > 0) {   /* waiting */
+    e->panic = (int16_t)(e->panic - step);
+    if (rnd(40) == 0) ripple(e->x + wobble(), surface, e->z + wobble(), 0, 0);
+    if (e->panic <= 0) e->yaw = rndf() * 360, e->delay = (int16_t)(20 + rnd(41));
+  } else
+    e->panic = (int16_t)(80 + rnd(521));
 }
 
 void ents_tick(void) {
@@ -375,7 +333,7 @@ void ents_tick(void) {
     if (e->y < -64) e->type = E_NONE;
   }
   static int spawn_wait;
-  if (++spawn_wait >= 20) {
+  if (++spawn_wait >= 16) {
     spawn_wait = 0;
     if (rule(GR_MOB_SPAWNING)) mobs_spawn();
   }
diff --git a/games/numblocks/src/gen.c b/games/numblocks/src/gen.c
index a31e81c..4ee8b0d 100644
--- a/games/numblocks/src/gen.c
+++ b/games/numblocks/src/gen.c
@@ -1,5627 +1,676 @@
-/* NumBlocks world generator: Minecraft 1.8.8's overworld generator in C.
+/* NumBlocks world generator (Calcade, 19 October 2026).
  *
- * Ported from the decompiled 1.8.8 server (Spigot v1_8_R3 names in comments):
- * GenLayer* (biomes), ChunkProviderGenerate (terrain noise, surface),
- * WorldGenCaves / WorldGenCanyon (caves, ravines), BiomeDecorator and the
- * WorldGen* features (population), WorldServer's spawn search.
+ * NumBlocks' own generator, written from scratch for the NumWorks calculator:
+ * every world it makes is its own (the seed is only a starting number for the
+ * noise below). Nothing here comes from another game's generator.
  *
- * ---------------------------------------------------------------------------
- * DEVIATIONS FROM MINECRAFT 1.8.8 (everything else is meant to be exact)
- * ---------------------------------------------------------------------------
- * Arithmetic
- *  - java.util.Random, GenLayer LCGs and all integer logic are bit exact, and so
- *    is MathHelper.sin/cos (its table value is rebuilt from a float kernel plus a
- *    correction table, checked for all 65536 indices). Draws are made in Java's
- *    left-to-right order (C leaves the order inside one expression open).
- *  - Perlin/simplex noise: the cell index and the fraction of every sample are
- *    computed exactly (fixed point setup per octave), but the gradient, fade and
- *    lerp math, the octave sums and the density formula run in float instead of
- *    double, so a block can flip only where the density is within ~1e-6 of 0
- *    (tests/gen/t_refcmp: 0 blocks in 500+ chunks against a double transcription).
- *    Java's quirk of reusing stale x-lerps while the y cell does not change is kept.
- *    Noise is only evaluated where it decides a block: the density is bounded
- *    without noise, then with the 6 lowest-frequency octaves (each octave is < 2 in
- *    magnitude), and only points of grid cells whose sign is not settled get the
- *    exact Java-order sum.
- *  - Terrain interpolation is done per column (bilinear then linear, float) rather
- *    than with Java's incremental double steps: same maths, different rounding.
- *  - Caves, ravines, ore veins, lakes, big oak trees, swamp/flower-forest noise use
- *    float where Java uses double (cave positions are kept in 32.32 fixed point so
- *    they do not drift; the few tests too close to call are redone in double).
- *  - Voronoi biome zoom uses exact integer distances (double only for ties).
- *  - Bedrock: nextInt(5) is drawn 256 times per column; the draws whose value is
- *    unused are skipped with an LCG jump (identical unless a draw would have hit
- *    Java's rejection loop, probability 1.4e-9 per draw).
- * Session-dependent behaviour of Minecraft, made deterministic
- *  - WorldGenBigTree keeps the height of the first big oak of a biome for the
- *    whole server session (and shortens it when blocked): here every big oak
- *    draws its own height, as the first one of a session would.
- *  - The decorator's huge mushroom keeps the first mushroom's colour for the
- *    session: here each one draws its colour.
- *  - Mutable biome top blocks (mega taiga podzol, extreme hills stone...) used
- *    when caves expose dirt: the biome's default top block is used.
- * Population (decoration)
- *  - Minecraft populates chunk P (writing into the 32x32 area P+8..P+24 that
- *    spans four chunks) once P and its +x/+z neighbours exist, reading the live
- *    world, so the result depends on chunk load order. Here gen_slab(C) replays
- *    the four populations that write into C ((cx-1,cz-1), (cx,cz-1), (cx-1,cz),
- *    (cx,cz)); each population P decides everything that affects its random
- *    stream from a "view" that is identical whatever chunk is being generated:
- *    the undecorated terrain of the 3x3 chunks around (a cached per-column
- *    summary: top block, water floor, filler depth; no caves) plus P's own
- *    earlier writes (height map, top block, plants). So objects crossing chunk
- *    borders are always complete and consistent, but a population does not see
- *    the other populations' trees, and does not see caves except where
- *    Minecraft's outcome needs them: dungeons and lakes query the real caves
- *    and ravines of their box (exact walk). Writes landing in C are re-checked
- *    against C's real blocks (caves included), e.g. leaves never replace logs.
- *  - Light is not computed: mushrooms need "shade" = an opaque block above in
- *    the view; snow and ice ignore block light.
- *  - Dungeon chests and spawners are placed; chest loot is not stored. The loot's
- *    item draws are replayed, but not the enchanted book's enchantment draws
- *    (TODO, see dungeon_book), so after a dungeon chest the rest of that
- *    population draws differently from Minecraft (still a valid decoration).
- *  - Structures are not generated (see TODO below), which matches Minecraft
- *    only where no structure exists.
- * Slabs (gen_slab's y range)
- *  - Everything is computed for the whole height except where only the slab's
- *    rows can be affected; reads of C outside its slab come from the summary. The
- *    blocks of a slab can therefore differ in rare cases with the y range asked
- *    (e.g. a plant at the slab's bottom row over ground that a lake removed in
- *    the row below; snowy grass under a snow layer above the slab's top row).
- *    c_top (gen_top) follows the writes of the populations including those above
- *    and below the slab, without their replace rules.
- * TODO: structures (villages, strongholds, mineshafts, temples, monuments);
- *       the enchanted book draws of dungeon chests.
+ *  - Noise: gradient noise on a grid whose gradients come from an integer hash of
+ *    the cell and the world seed (no table of permutations), summed in octaves.
+ *  - The land: a slow "continent" noise sets oceans and plains, a detail noise the
+ *    small hills, a ridged noise under a mask the mountain ranges; rivers follow the
+ *    zero line of a fourth noise and dig a valley to the water.
+ *  - Biomes: from a temperature and a humidity noise, the height and the rivers
+ *    (17 of them, see gen.h).
+ *  - Underground: stone with patches of granite, diorite and andesite, caves where two
+ *    3D noises are both near zero (tunnels) or where a third is high (chambers), lava at
+ *    the bottom; ores, dirt and gravel in small veins; now and then a mossy room with
+ *    a monster cage and a chest.
+ *  - On top: grass, flowers, ferns, cacti, canes, pumpkins, lily pads, snow and ice,
+ *    and trees of six kinds, each with its own shape (round oaks, tall birches,
+ *    spruce cones, jungle giants with vines, bent acacias, flat dark oaks).
  *
- * ---------------------------------------------------------------------------
- * HOW IT STAYS FAST AND SMALL (Cortex-M7, ~28 KB of static RAM, no malloc)
- * ---------------------------------------------------------------------------
- *  - Noise permutations are rebuilt per octave from saved random states (68 per
- *    chunk) instead of being kept (17 KB).
- *  - Column summaries (2 bytes per column) of up to 20 chunks are cached, so the
- *    chunks around the ones the game asks for are computed once per burst.
- *  - Biomes: an 18 x 18 window of 1:4 cells is kept (the layers cost about the
- *    same for one chunk as for 3 x 3); the 18 base layers run once per window.
- *  - Caves: one walk records, for every tunnel that can reach a 9 x 9 chunk area,
- *    its name and the box it may change; carving the chunk asked for and the
- *    populations' cave queries replay only the tunnels whose box meets theirs,
- *    each walked once for all its target chunks.
- *  - Populations remember (per chunk, 16 kept) which lakes and dungeons passed;
- *    a known failure only makes its random draws.
- *  - The file asks for -Os, IEEE float semantics (no fast-math, no FMA
- *    contraction, whatever the build flags) and -O2 for the hot loops (HOT).
- * ---------------------------------------------------------------------------
- */
-#include "gen.h"
-
-#include <math.h>
-#include <string.h>
-
-#include "blocks.h"
-
-/* The float arithmetic here must be done as written (IEEE single precision, each operation
- * rounded): the game builds with -ffast-math, which would fuse multiply-adds, reassociate sums
- * and turn divisions into multiplications, and change the terrain. Size first by default; the
- * hot loops ask for O2 (HOT). Constants meant as doubles are written so that
- * -fsingle-precision-constant cannot change them (exact in float, or computed). */
-#if defined(__clang__)
-#pragma clang fp contract(off)
-#pragma clang fp reassociate(off)
-#elif defined(__GNUC__)
-#pragma GCC optimize("no-fast-math", "fp-contract=off", "Os")
-#endif
-#if defined(__GNUC__) && !defined(__clang__)
-#define HOT __attribute__((hot, optimize("O2", "no-fast-math", "fp-contract=off")))
-#else
-#define HOT
-#endif
-
-/* small helpers of the hot loops: inlined even when the file is compiled for size */
-#if defined(__GNUC__)
-#define INLINE static inline __attribute__((always_inline))
-#define NOINLINE __attribute__((noinline))
-#else
-#define INLINE static inline
-#define NOINLINE
-#endif
-
-typedef int64_t i64;
-typedef uint64_t u64;
-typedef int32_t i32;
-typedef uint32_t u32;
-
-#define SEA 63
-
-/* left shifts of possibly negative values, without undefined behaviour */
-#define SHL(v, k) ((i64)((u64)(i64)(v) << (k)))
-
-/* ======================================================================== */
-/* java.util.Random                                                          */
-/* ======================================================================== */
-
-#define JMUL 0x5DEECE66DULL
-#define JADD 0xBULL
-#define JMASK ((1ULL << 48) - 1)
-
-typedef struct {
-    u64 s;
-} JRand;
-
-static void jr_seed(JRand *r, i64 seed) { r->s = ((u64)seed ^ JMUL) & JMASK; }
-
-/* next(bits); the _i helpers are the inlined twins used by the hot loops (the file is compiled
- * for size, and the compiler does not inline across optimisation levels) */
-INLINE i32 jr_next_i(JRand *r, int bits) {
-    r->s = (r->s * JMUL + JADD) & JMASK;
-    return (i32)(u32)(r->s >> (48 - bits));
-}
-static i32 jr_next(JRand *r, int bits) { return jr_next_i(r, bits); }
-
-/* float <-> int64 conversions done with integer operations: the C casts are exact and
- * cheap on a 64-bit host but go through soft double arithmetic on the Cortex-M7. */
-typedef union {
-    float f;
-    u32 u;
-} FBits;
-
-/* (i64)(v * 2^k) for |v * 2^k| < 2^62: scaling by 2^k is exact, the cast truncates toward 0 */
-INLINE i64 f2i64_scaled(float v, int k) {
-    FBits c = {v};
-    int e = (int)((c.u >> 23) & 255) - 150 + k; /* v * 2^k = m * 2^e */
-    if (e <= -25) return 0;
-    u64 m = (c.u & 0x7fffffu) | 0x800000u;
-    u64 a = e >= 0 ? m << e : m >> -e;
-    return (c.u >> 31) ? -(i64)a : (i64)a;
-}
-
-/* (float)v * 2^-k, rounded to nearest even like the cast */
-static float i64_to_f_big(i64 v, int k);
-INLINE float i64_to_f_scaled(i64 v, int k) {
-    FBits s;
-    if (v >= INT32_MIN && v <= INT32_MAX) {
-        s.u = (u32)(127 - k) << 23;
-        return (float)(i32)v * s.f;
-    }
-    return i64_to_f_big(v, k);
-}
-
-HOT static float i64_to_f_big(i64 v, int k) {
-    FBits s;
-    u64 a = v < 0 ? 0 - (u64)v : (u64)v;
-    int sh = 40 - __builtin_clzll(a); /* bits below the 24 kept, >= 8 here */
-    u32 m = (u32)(a >> sh);
-    u64 rem = a & ((1ULL << sh) - 1), half = 1ULL << (sh - 1);
-    if (rem > half || (rem == half && (m & 1))) m++;
-    s.u = (u32)(127 + sh - k) << 23;
-    float f = (float)m * s.f;
-    return v < 0 ? -f : f;
-}
-
-/* nextInt(n), inlined in the hot loops (jr_int is the same, called) */
-INLINE i32 jr_int_i(JRand *r, i32 n) {
-    if ((n & -n) == n) return (i32)(((i64)n * (i64)jr_next_i(r, 31)) >> 31);
-    i32 bits, val;
-    do {
-        bits = jr_next_i(r, 31);
-        val = bits % n;
-    } while ((i32)((u32)bits - (u32)val + (u32)(n - 1)) < 0);
-    return val;
-}
-
-static i32 jr_int(JRand *r, i32 n) {
-    if ((n & -n) == n) return (i32)(((i64)n * (i64)jr_next(r, 31)) >> 31);
-    i32 bits, val;
-    do {
-        bits = jr_next(r, 31);
-        val = bits % n;
-    } while ((i32)((u32)bits - (u32)val + (u32)(n - 1)) < 0);
-    return val;
-}
-
-static i64 jr_long(JRand *r) {
-    i64 hi = jr_next(r, 32);
-    i64 lo = jr_next(r, 32);
-    return (i64)((u64)hi << 32) + lo;
-}
-
-static inline int jr_bool(JRand *r) { return jr_next(r, 1) != 0; }
-
-INLINE float jr_float_i(JRand *r) { return (float)jr_next_i(r, 24) * (1.0f / 16777216.0f); }
-static float jr_float(JRand *r) { return jr_float_i(r); }
-
-/* nextDouble as the exact 53-bit integer numerator (value = n / 2^53) */
-static i64 jr_double_bits(JRand *r) {
-    i64 a = jr_next(r, 26);
-    i64 b = jr_next(r, 27);
-    return (a << 27) + b;
-}
-
-
-/* nextDouble rounded to float (one rounding from the exact value) */
-static float jr_doublef(JRand *r) { return i64_to_f_scaled(jr_double_bits(r), 53); }
-INLINE float jr_doublef_i(JRand *r) {
-    i64 a = jr_next_i(r, 26), b = jr_next_i(r, 27);
-    return i64_to_f_scaled((a << 27) + b, 53);
-}
-
-/* LCG jump: advance by n steps (n < 1024) */
-static u64 jump_mul[10], jump_add[10];
-
-static void jr_jump_init(void) {
-    u64 m = JMUL, a = JADD;
-    for (int i = 0; i < 10; i++) {
-        jump_mul[i] = m;
-        jump_add[i] = a;
-        a = (a * m + a) & JMASK;
-        m = (m * m) & JMASK;
-    }
-}
-
-static void jr_skip(JRand *r, unsigned n) {
-    for (int i = 0; n; i++, n >>= 1)
-        if (n & 1) r->s = (r->s * jump_mul[i] + jump_add[i]) & JMASK;
-}
-
-/* ======================================================================== */
-/* MathHelper                                                                */
-/* ======================================================================== */
-
-/* sin of table index i (0..65535): (float)Math.sin(i * 2pi / 65536), as MathHelper's table.
- * A float kernel (fdlibm's sinf/cosf kernels) on the first quadrant gets within an ulp; a
- * 2-bit-per-entry correction table (generated on a host from the exact values) makes it exact.
- * The kernels must not be contracted into FMAs, or the corrections would not apply. */
-#if defined(__GNUC__) && !defined(__clang__)
-#define NO_CONTRACT __attribute__((optimize("fp-contract=off")))
-#else
-#define NO_CONTRACT
-#endif
-/* MathHelper sin table corrections (generated by tests/gen/t_sintab2.c): 2 bits per
- * first-quadrant index, value = correction in ulps + 1, 3 = see SIN_EXC */
-static const uint8_t SIN_CORR[4097] = {
-85,20,84,69,80,84,21,84,21,21,68,84,1,20,96,21,85,68,21,84,84,84,84,21,
-69,65,84,85,85,69,65,65,85,65,69,20,21,69,21,81,68,21,85,65,84,5,69,65,
-85,81,81,20,5,85,85,21,84,5,22,68,21,84,1,20,1,21,65,21,81,5,84,16,
-21,64,85,20,0,85,129,85,81,165,85,21,4,86,21,69,84,85,68,64,85,69,1,100,
-69,85,65,69,21,5,85,69,4,69,85,5,16,85,21,5,85,21,5,16,85,21,4,101,
-85,1,4,5,20,1,80,69,65,68,21,81,5,85,85,20,80,85,20,1,84,85,1,65,
-85,0,17,84,85,5,80,85,85,1,21,81,65,80,21,21,0,85,5,150,85,85,69,17,
-20,84,153,21,80,17,5,0,81,86,85,85,85,80,0,160,89,85,84,65,68,0,84,85,
-21,85,20,64,16,164,86,21,85,20,5,0,101,85,21,69,21,68,0,84,85,85,68,0,
-16,80,85,85,85,17,1,64,0,106,85,85,69,84,21,16,85,85,85,85,1,16,65,85,
-85,64,81,0,1,148,85,85,17,1,16,1,64,85,21,81,21,17,64,84,85,69,21,21,
-0,17,144,85,80,85,21,16,64,80,85,85,21,1,0,0,84,85,85,1,69,65,0,84,
-85,80,20,20,1,0,84,85,85,4,1,1,0,85,21,85,68,5,1,0,85,17,21,81,
-21,1,4,85,84,69,84,1,65,64,85,81,84,64,86,85,89,85,21,85,85,17,85,85,
-68,80,84,84,89,85,85,85,85,21,81,85,81,20,0,4,0,170,85,85,85,85,85,65,
-69,20,0,68,4,0,65,149,101,85,69,85,81,85,21,17,84,65,4,85,64,101,85,85,
-85,85,69,1,84,20,84,16,65,21,80,101,85,85,85,69,21,4,85,1,80,4,85,0,
-84,86,85,85,85,85,85,17,85,5,65,85,16,4,100,101,85,85,85,21,81,64,17,1,
-16,16,64,16,105,86,85,85,85,85,81,65,65,68,85,64,0,64,149,85,85,85,17,85,
-21,5,64,81,64,17,5,65,85,101,85,85,68,85,69,1,80,81,21,17,0,80,85,85,
-85,85,85,21,81,21,20,0,1,85,16,164,85,85,85,85,85,81,85,20,0,81,0,17,
-0,148,85,81,85,69,81,17,1,16,1,64,16,4,1,85,85,85,85,85,85,80,4,0,
-65,21,16,64,0,85,85,85,85,85,85,84,20,64,4,64,4,0,80,89,85,85,85,21,
-21,85,84,17,1,69,0,1,100,85,85,21,69,85,21,65,69,20,4,84,1,0,80,85,
-85,85,21,80,20,20,1,16,5,1,85,64,84,85,21,85,81,1,68,0,17,0,65,5,
-0,0,85,85,85,20,69,21,20,85,17,4,0,64,16,0,85,21,21,81,21,5,68,0,
-21,64,4,16,68,64,85,85,85,85,21,21,21,20,1,68,64,0,64,80,85,85,20,80,
-1,69,85,20,89,169,149,101,149,85,85,85,85,85,85,85,81,69,17,21,64,17,81,85,
-16,81,0,5,64,1,88,102,149,85,85,101,85,85,85,85,84,85,85,17,69,21,84,20,
-0,68,4,20,16,65,85,65,4,64,101,86,85,89,85,85,85,85,69,85,85,85,69,69,
-85,81,85,0,20,69,85,16,81,65,1,80,64,96,86,90,85,85,85,85,85,69,81,85,
-85,85,85,21,81,84,80,21,0,20,65,85,16,1,0,1,1,84,102,165,86,85,85,85,
-21,85,85,21,64,21,5,80,68,1,20,17,0,4,4,0,1,1,64,64,0,101,101,85,
-149,85,101,85,85,85,85,65,69,84,80,17,85,21,81,0,4,4,0,17,5,4,17,0,
-148,101,101,85,85,85,85,85,85,85,85,81,1,85,21,64,81,84,81,20,64,17,5,20,
-16,0,68,64,85,102,85,85,85,85,85,85,21,85,85,17,85,81,81,21,21,85,69,84,
-80,68,0,4,4,64,64,0,89,89,85,89,85,85,85,21,85,65,85,5,80,85,64,17,
-85,69,20,80,68,1,69,80,5,65,64,96,89,85,85,85,85,85,85,69,81,20,69,21,
-85,69,84,21,81,0,17,5,69,4,64,4,21,0,80,84,101,85,85,85,85,85,85,85,
-85,81,85,85,84,20,21,20,81,85,68,85,17,5,5,4,64,4,0,85,85,85,86,85,
-85,85,84,21,85,85,85,5,20,65,69,69,21,4,85,16,84,65,80,65,4,0,144,85,
-85,85,85,85,85,85,85,5,65,69,85,68,85,81,84,16,21,5,4,16,81,21,16,0,
-1,0,85,153,85,85,85,85,21,69,81,84,85,20,69,81,64,17,0,69,65,65,1,68,
-80,65,64,64,16,0,85,85,85,86,85,85,85,69,85,20,21,85,84,0,69,1,69,1,
-68,84,16,1,4,20,4,20,5,68,85,85,85,85,85,85,85,85,85,21,80,84,84,84,
-84,85,85,20,80,20,80,20,80,4,64,4,64,84,85,89,85,81,21,85,85,69,65,84,
-84,81,69,21,20,65,64,80,65,80,65,0,16,1,4,80,16,85,86,85,85,65,85,85,
-85,85,81,85,85,85,20,80,4,64,20,16,65,65,80,65,0,16,84,16,148,85,85,85,
-85,85,85,21,80,84,85,81,81,81,17,85,69,1,17,21,4,5,17,64,16,16,1,0,
-84,85,85,85,85,85,85,69,85,69,69,84,69,80,20,20,68,85,68,5,65,69,4,4,
-84,16,20,64,85,85,85,85,85,85,85,1,85,85,68,21,69,69,84,65,1,5,85,4,
-0,1,0,0,16,84,0,64,85,85,85,69,85,84,0,85,80,20,20,5,84,0,5,21,
-81,5,5,68,0,4,21,16,16,1,0,84,85,85,85,85,85,85,69,81,80,5,80,1,
-68,64,81,85,80,69,0,68,21,4,16,0,16,0,4,85,85,85,85,84,85,20,80,17,
-84,64,81,21,1,20,85,68,38,18,17,22,34,81,17,17,18,18,17,17,81,17,17,17,
-17,17,17,209,209,29,17,17,93,72,149,137,152,84,132,68,84,69,69,68,68,68,69,68,
-68,68,4,68,68,68,68,68,68,7,67,48,87,101,21,37,101,85,22,18,17,81,17,81,
-17,81,85,21,81,85,81,21,69,21,17,21,20,85,81,21,85,85,85,85,85,69,85,85,
-68,84,68,69,68,85,20,85,84,68,68,69,84,68,68,65,21,5,64,84,97,85,18,97,
-85,85,21,86,82,21,85,85,81,81,80,85,81,21,17,21,81,17,21,81,17,81,21,69,
-84,68,69,84,88,84,69,85,73,68,85,85,68,85,69,68,69,85,85,84,65,68,68,68,
-68,4,68,85,21,81,85,97,85,17,86,21,85,17,81,17,85,85,85,81,21,17,21,81,
-16,84,21,85,65,1,81,85,85,68,85,73,85,85,84,68,84,69,85,84,85,85,85,85,
-85,69,85,81,84,69,85,0,84,68,85,82,85,85,85,85,85,82,21,17,21,85,85,17,
-81,85,17,21,16,85,81,21,85,81,21,21,17,80,69,69,84,68,85,85,85,68,84,85,
-69,69,84,68,69,84,68,85,5,64,85,69,84,68,5,84,4,69,85,85,85,82,85,81,
-85,81,85,85,85,85,85,17,81,85,21,21,81,17,85,21,16,69,21,81,1,89,69,85,
-84,73,68,85,73,84,68,69,88,85,68,84,69,85,84,69,68,85,20,69,85,84,84,84,
-68,85,85,21,85,21,81,85,17,21,81,17,85,21,81,17,21,81,85,21,21,81,69,1,
-81,21,85,16,145,149,84,84,85,89,85,69,84,149,84,69,68,85,85,69,85,68,69,68,
-64,69,5,68,68,69,68,5,37,85,85,37,21,86,85,21,38,85,85,85,85,21,21,81,
-85,17,21,81,81,1,81,17,17,85,65,5,85,152,148,85,85,85,69,84,132,85,73,84,
-68,85,85,84,85,0,84,68,68,85,84,69,68,64,68,80,85,81,37,21,85,21,85,21,
-85,21,17,85,85,21,21,85,81,81,85,80,81,81,21,21,5,84,21,85,84,84,69,68,
-85,84,85,84,84,85,85,85,85,84,145,69,65,69,69,69,80,21,4,69,69,84,68,102,
-97,81,85,85,81,86,85,85,85,17,86,37,81,81,85,81,81,85,81,17,17,81,65,17,
-85,81,85,85,148,84,69,84,85,85,69,84,84,68,85,73,84,85,85,85,85,85,85,81,
-84,84,69,68,69,68,84,85,37,81,33,101,85,21,21,37,85,85,21,81,81,17,21,21,
-17,81,17,21,5,65,21,85,1,21,85,69,85,84,84,133,73,85,68,69,88,69,85,85,
-85,85,85,85,85,68,68,20,69,69,81,84,20,69,85,21,38,85,81,82,21,81,17,85,
-81,81,21,21,20,85,84,5,65,85,85,1,16,81,21,17,0,69,84,69,133,149,68,69,
-84,85,84,69,85,21,69,20,85,84,68,69,69,84,85,81,68,1,69,68,4,85,85,85,
-18,85,21,97,21,85,85,81,21,81,21,17,17,85,81,81,85,69,85,85,17,17,1,16,
-132,149,84,84,84,85,69,85,85,85,85,69,84,85,84,84,69,69,84,69,68,68,85,68,
-4,20,5,68,20,38,85,85,85,85,37,85,85,85,21,85,81,81,21,81,85,17,85,17,
-17,81,21,81,17,17,21,85,153,105,170,154,153,153,153,85,149,149,165,89,89,153,85,85,
-89,149,89,149,85,85,149,165,148,85,85,85,86,102,169,101,86,102,86,102,102,85,89,86,
-86,101,86,85,85,102,85,101,86,82,165,81,85,85,102,85,102,154,150,149,149,89,153,153,
-154,85,85,105,88,153,85,149,149,89,149,149,149,85,85,85,149,88,84,101,85,89,86,86,
-105,85,22,86,86,166,85,85,85,85,101,22,149,101,85,85,85,101,21,85,85,85,169,105,
-150,105,89,89,153,153,149,85,101,85,149,89,149,152,153,153,85,149,85,85,90,85,85,85,
-85,85,101,85,102,86,154,85,101,102,90,22,86,102,86,102,85,85,85,101,85,85,85,101,
-105,85,85,22,85,85,102,154,150,89,101,85,149,89,149,89,105,89,106,137,85,153,85,85,
-89,89,133,85,85,84,149,149,68,85,102,101,101,102,146,165,86,105,101,86,86,102,85,85,
-86,101,85,85,85,85,101,21,85,85,97,101,101,101,101,149,149,153,166,85,153,85,153,85,
-85,85,101,85,85,149,105,165,89,85,85,85,85,85,69,153,85,153,86,101,105,154,101,90,
-101,101,102,102,102,101,101,85,102,85,102,85,25,86,102,86,86,85,85,97,86,165,150,153,
-89,85,149,89,85,85,89,85,149,149,149,148,85,85,89,149,85,89,85,85,153,84,85,85,
-104,86,85,101,86,85,85,101,101,102,101,85,85,85,102,85,85,166,85,102,85,85,102,81,
-85,85,17,85,86,149,153,85,89,153,150,85,85,89,105,86,85,85,85,149,149,89,85,149,
-89,85,149,85,149,85,84,84,90,102,102,105,85,86,102,89,85,101,85,102,85,102,85,102,
-85,86,85,85,102,85,85,102,81,21,86,101,85,153,85,85,154,85,85,153,85,153,85,85,
-85,85,154,85,154,85,153,85,153,85,152,85,152,84,152,100,169,101,165,102,102,102,102,102,
-102,102,102,102,101,101,101,101,105,85,85,85,85,85,85,86,86,101,85,153,149,85,153,153,
-85,85,89,153,85,100,85,85,85,85,72,89,89,89,85,85,85,85,85,85,73,85,85,85,
-86,150,102,102,101,101,101,101,102,86,82,85,85,101,90,85,101,86,101,86,101,86,85,101,
-18,85,89,165,85,153,86,153,85,105,149,85,85,89,153,153,153,149,89,89,85,85,149,101,
-85,85,85,85,133,85,85,101,86,85,85,101,85,101,86,150,85,85,85,85,85,86,102,85,
-85,102,85,85,85,85,85,86,86,150,150,89,85,165,150,149,149,85,85,85,153,85,153,85,
-85,154,149,149,148,85,89,73,85,85,85,85,149,85,101,85,101,90,21,101,101,86,86,101,
-85,89,102,85,85,102,85,85,85,85,101,85,21,21,21,86,85,85,153,85,89,153,153,149,
-149,89,85,85,85,85,85,149,133,85,85,85,85,85,85,89,149,149,85,89,85,85,85,85,
-101,86,85,85,85,169,101,101,85,85,102,85,85,86,85,86,86,21,85,21,85,85,81,85,
-85,85,85,85,85,85,85,89,85,133,85,85,85,153,85,85,89,89,85,85,149,73,85,148,
-149,85,69,85,101,101,85,86,85,102,101,89,101,150,149,21,101,86,86,102,85,85,86,37,
-81,21,101,85,85,82,85,149,85,85,90,89,85,150,89,85,85,85,101,153,85,89,153,153,
-85,84,133,85,85,69,84,149,85,89,149,85,85,85,85,85,85,85,101,85,86,21,85,85,
-85,89,150,86,89,85,105,86,86,101,85,101,149,85,85,149,86,85,101,105,85,85,86,85,
-85,85,149,21,85,85,85,149,149,149,89,101,89,85,101,85,85,86,101,85,86,101,85,89,
-85,89,85,85,85,85,85,85,81,85,85,86,89,85,85,149,85,90,149,86,85,89,85,85,
-85,85,85,149,86,85,85,85,89,85,85,85,101,85,101,89,89,86,85,85,106,89,85,85,
-149,149,85,85,85,86,85,85,149,85,85,85,85,85,85,85,149,85,85,149,85,85,85,150,
-149,101,85,85,85,85,149,101,85,85,85,85,85,149,85,85,85,81,81,85,85,85,85,85,
-101,85,149,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,80,85,85,105,
-86,85,85,89,85,149,85,89,165,85,105,85,106,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,149,165,86,85,85,85,101,85,149,85,85,85,85,85,85,101,85,89,
-85,85,85,85,85,85,85,85,86,86,85,86,85,86,85,86,85,89,85,85,85,85,85,85,
-85,85,85,85,85,85,85,81,85,85,149,89,85,85,85,101,85,85,85,85,86,85,85,85,
-85,86,89,89,85,85,85,85,85,85,85,85,69,85,85,85,85,89,85,85,85,85,85,85,
-85,85,86,85,86,89,85,85,85,85,85,85,85,85,85,85,85,85,85,101,86,85,85,85,
-85,86,149,149,85,105,85,85,85,149,85,85,85,85,85,85,89,85,85,85,86,85,86,85,
-85,101,85,150,86,85,89,85,85,85,85,85,85,85,85,89,85,85,85,85,85,85,85,85,
-85,149,85,85,85,101,85,85,153,85,101,149,85,85,85,85,85,85,85,85,85,85,85,85,
-84,85,85,85,85,89,85,85,85,86,86,85,101,85,86,85,85,85,85,86,85,85,149,85,
-85,85,85,85,85,85,85,85,149,85,85,85,86,85,86,101,105,85,85,85,85,85,85,101,
-89,85,85,85,85,85,85,85,85,85,85,85,85,149,101,86,85,85,85,85,89,101,85,85,
-85,85,85,86,149,85,89,85,85,85,85,85,85,85,85,85,85,85,86,85,89,85,85,85,
-85,101,85,85,85,85,85,149,85,85,85,85,85,85,85,85,85,85,85,85,85,149,89,85,
-85,85,85,85,86,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-150,85,85,85,85,85,85,85,85,85,89,85,85,89,85,85,85,85,69,85,85,85,85,85,
-85,85,85,149,85,89,86,101,105,149,85,149,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,84,101,89,149,85,86,85,149,89,85,101,101,85,89,85,85,86,85,149,
-85,85,85,85,85,85,85,85,85,85,85,85,85,149,149,85,85,85,149,85,85,149,85,85,
-85,85,85,85,85,85,85,89,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,101,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,149,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,149,85,101,85,85,85,85,85,85,85,85,85,85,85,85,101,85,
-85,85,85,85,85,85,85,85,85,85,101,85,85,85,149,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,101,85,85,89,85,85,85,85,85,85,85,85,85,
-85,101,85,85,85,89,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,101,85,
-85,85,85,85,85,85,89,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,81,85,85,85,85,101,85,85,85,85,85,85,85,85,85,85,85,
-101,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,149,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,149,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,69,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,81,85,
-85,85,149,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,89,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,89,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,101,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,1,};
-/* entries whose correction is beyond one ulp: index, exact float bits */
-static const u32 SIN_EXC[][2] = {{5295, 0x3ef8e592u},{5299, 0x3ef9117eu},{5301, 0x3ef92773u},{5313, 0x3ef9ab25u},{5412, 0x3efde662u},{5416, 0x3efe1207u},{5422, 0x3efe537au},{5424, 0x3efe694au},{65536, 0}};
-
-HOT static float sin_quadrant(u32 r) { /* r in [0, 16384] */
-    if (r <= 8192) {
-        float x = (float)r * 9.58737992428526e-05f;
-        float z = x * x, v = z * x;
-        float rr = 8.3333337680e-03f + z * (-1.9841270114e-04f + z * 2.7183114939e-06f);
-        return x + v * (-1.6666667163e-01f + z * rr);
-    } else {
-        float x = (float)(16384 - r) * 9.58737992428526e-05f;
-        float z = x * x;
-        float rr = z * (4.1666667908e-02f + z * (-1.3888889225e-03f + z * (2.4801587642e-05f + z * -2.7557314297e-07f)));
-        float hz = 0.5f * z, w = 1.0f - hz;
-        return w + (((1.0f - w) - hz) + z * rr);
-    }
-}
-
-HOT static float sin_index(u32 i) {
-    i &= 65535;
-    if (i == 32768) return 1.2246467991473532e-16f;
-    u32 q = i >> 14, r = i & 16383;
-    if (q & 1) r = 16384 - r;
-    float v = sin_quadrant(r);
-    int d = (int)((SIN_CORR[r >> 2] >> ((r & 3) * 2)) & 3) - 1;
-    if (d == 2) {
-        for (int k = 0;; k++)
-            if (SIN_EXC[k][0] == r || SIN_EXC[k][0] == 65536) {
-                memcpy(&v, &SIN_EXC[k][1], 4);
-                break;
-            }
-    } else if (d) {
-        u32 b;
-        memcpy(&b, &v, 4);
-        b = (u32)((i32)b + d);
-        memcpy(&v, &b, 4);
-    }
-    return (q & 2) ? -v : v;
-}
-
-INLINE float mh_sin_i(float f) { return sin_index((u32)(i32)(f * 10430.378f)); }
-INLINE float mh_cos_i(float f) { return sin_index((u32)(i32)(f * 10430.378f + 16384.0f)); }
-static float mh_sin(float f) { return mh_sin_i(f); }
-static float mh_cos(float f) { return mh_cos_i(f); }
-
-INLINE int floor_f_i(float f) {
-    int i = (int)f;
-    return f < (float)i ? i - 1 : i;
-}
-static int floor_f(float f) {
-    int i = (int)f;
-    return f < (float)i ? i - 1 : i;
-}
-
-
-/* ======================================================================== */
-/* Biomes                                                                    */
-/* ======================================================================== */
-
-enum {
-    BI_OCEAN = 0, BI_PLAINS = 1, BI_DESERT = 2, BI_EXTREME_HILLS = 3, BI_FOREST = 4, BI_TAIGA = 5, BI_SWAMP = 6,
-    BI_RIVER = 7, BI_FROZEN_OCEAN = 10, BI_FROZEN_RIVER = 11, BI_ICE_PLAINS = 12, BI_ICE_MOUNTAINS = 13,
-    BI_MUSHROOM = 14, BI_MUSHROOM_SHORE = 15, BI_BEACH = 16, BI_DESERT_HILLS = 17, BI_FOREST_HILLS = 18,
-    BI_TAIGA_HILLS = 19, BI_EH_EDGE = 20, BI_JUNGLE = 21, BI_JUNGLE_HILLS = 22, BI_JUNGLE_EDGE = 23,
-    BI_DEEP_OCEAN = 24, BI_STONE_BEACH = 25, BI_COLD_BEACH = 26, BI_BIRCH = 27, BI_BIRCH_HILLS = 28,
-    BI_ROOFED = 29, BI_COLD_TAIGA = 30, BI_COLD_TAIGA_HILLS = 31, BI_MEGA_TAIGA = 32, BI_MEGA_TAIGA_HILLS = 33,
-    BI_EH_PLUS = 34, BI_SAVANNA = 35, BI_SAVANNA_PLATEAU = 36, BI_MESA = 37, BI_MESA_PLATEAU_F = 38,
-    BI_MESA_PLATEAU = 39
-};
-
-/* Biome class (getClass(), with BiomeBaseSub reporting its parent's class) */
-enum {
-    C_OCEAN, C_PLAINS, C_DESERT, C_HILLS, C_FOREST, C_TAIGA, C_SWAMP, C_RIVER, C_ICE, C_MUSHROOM, C_BEACH,
-    C_JUNGLE, C_STONEBEACH, C_SAVANNA, C_MESA
-};
-
-/* Surface builders */
-enum { S_DEFAULT, S_HILLS, S_TAIGA_MEGA, S_SWAMP, S_SAVANNA_M, S_MESA };
-
-/* Decoration (biome .a(World, Random, BlockPosition)) kinds */
-enum {
-    D_PLAIN,       /* decorator only */
-    D_PLAINS,      /* BiomePlains */
-    D_DESERT,      /* BiomeDesert (well) */
-    D_HILLS,       /* BiomeBigHills (emerald, silverfish) */
-    D_FOREST,      /* BiomeForest */
-    D_TAIGA,       /* BiomeTaiga */
-    D_ICE,         /* BiomeIcePlains */
-    D_JUNGLE,      /* BiomeJungle (melon, vine draws) */
-    D_SAVANNA,     /* BiomeSavanna (double grass) */
-    D_ROOFED_SUB   /* Roofed Forest M: parent's BiomeForest.a with the parent biome */
-};
-
-/* Tree selector kinds (biome.a(Random)) */
-enum {
-    T_DEFAULT, T_HILLS, T_FOREST0, T_FOREST1, T_BIRCH, T_ROOFED, T_BIRCH_SUB, T_TAIGA0, T_TAIGA1, T_TAIGA2,
-    T_SWAMP, T_ICE, T_JUNGLE, T_JUNGLE_EDGE, T_SAVANNA, T_MESA
-};
-
-/* Flower selector kinds; grass selector kinds */
-enum { F_DEFAULT, F_PLAINS, F_FLOWER_FOREST, F_SWAMP };
-enum { G_DEFAULT, G_TAIGA, G_JUNGLE };
-
-typedef struct {
-    uint8_t id;
-    uint8_t cls, surf, deco, tree, flower, grass;
-    uint8_t snowy;   /* ax: BiomeBase.c() */
-    uint8_t temp_cat; /* 0 ocean 1 cold 2 medium 3 warm */
-    uint8_t top, filler;
-    uint8_t mode;    /* hills: aI; taiga: aI; forest: aG; mesa: bit0 bryce, bit1 plateau F; plains: sunflower; ice: spikes; jungle: edge */
-    float depth, scale, temp;
-    /* decorator: A trees, B flowers, C grass, D deadbush, E mushrooms, F reeds, G cactus, H gravel,
-     * I sand, J clay, K big mushrooms, Z lily pads */
-    int16_t dA;
-    int8_t dB, dC, dD, dE, dF, dG, dH, dI, dJ, dK, dZ;
-    u32 color;
-} Biome;
-
-#define DEC(A, B, C, D, E, F, G, H, I, J, K, Z) A, B, C, D, E, F, G, H, I, J, K, Z
-#define DDEF DEC(0, 2, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0)
-
-static const Biome BIOMES[] = {
-    {0, C_OCEAN, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 0, 0, B_GRASS, B_DIRT, 0, -1.0f, 0.1f, 0.5f, DDEF, 0x000070},
-    {1, C_PLAINS, S_DEFAULT, D_PLAINS, T_DEFAULT, F_PLAINS, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 0, 0.125f, 0.05f, 0.8f, DEC(-999, 4, 10, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x8DB360},
-    {2, C_DESERT, S_DEFAULT, D_DESERT, T_DEFAULT, F_DEFAULT, G_DEFAULT, 0, 3, B_SAND, B_SAND, 0, 0.125f, 0.05f, 2.0f, DEC(-999, 2, 1, 2, 0, 50, 10, 1, 3, 1, 0, 0), 0xFA9418},
-    {3, C_HILLS, S_HILLS, D_HILLS, T_HILLS, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 0, 1.0f, 0.5f, 0.2f, DDEF, 0x606060},
-    {4, C_FOREST, S_DEFAULT, D_FOREST, T_FOREST0, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 0, 0.1f, 0.2f, 0.7f, DEC(10, 2, 2, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x056621},
-    {5, C_TAIGA, S_DEFAULT, D_TAIGA, T_TAIGA0, F_DEFAULT, G_TAIGA, 0, 2, B_GRASS, B_DIRT, 0, 0.2f, 0.2f, 0.25f, DEC(10, 2, 1, 0, 1, 0, 0, 1, 3, 1, 0, 0), 0x0B6659},
-    {6, C_SWAMP, S_SWAMP, D_PLAIN, T_SWAMP, F_SWAMP, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 0, -0.2f, 0.1f, 0.8f, DEC(2, 1, 5, 1, 8, 10, 0, 0, 0, 1, 0, 4), 0x07F9B2},
-    {7, C_RIVER, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 0, -0.5f, 0.0f, 0.5f, DDEF, 0x0000FF},
-    {10, C_OCEAN, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 1, 0, B_GRASS, B_DIRT, 0, -1.0f, 0.1f, 0.0f, DDEF, 0x9090A0},
-    {11, C_RIVER, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 1, 1, B_GRASS, B_DIRT, 0, -0.5f, 0.0f, 0.0f, DDEF, 0xA0A0FF},
-    {12, C_ICE, S_DEFAULT, D_ICE, T_ICE, F_DEFAULT, G_DEFAULT, 1, 1, B_GRASS, B_DIRT, 0, 0.125f, 0.05f, 0.0f, DDEF, 0xFFFFFF},
-    {13, C_ICE, S_DEFAULT, D_ICE, T_ICE, F_DEFAULT, G_DEFAULT, 1, 1, B_GRASS, B_DIRT, 0, 0.45f, 0.3f, 0.0f, DDEF, 0xA0A0A0},
-    {14, C_MUSHROOM, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 0, 2, B_MYCELIUM, B_DIRT, 0, 0.2f, 0.3f, 0.9f, DEC(-100, -100, -100, 0, 1, 0, 0, 1, 3, 1, 1, 0), 0xFF00FF},
-    {15, C_MUSHROOM, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 0, 2, B_MYCELIUM, B_DIRT, 0, 0.0f, 0.025f, 0.9f, DEC(-100, -100, -100, 0, 1, 0, 0, 1, 3, 1, 1, 0), 0xA000FF},
-    {16, C_BEACH, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 0, 2, B_SAND, B_SAND, 0, 0.0f, 0.025f, 0.8f, DEC(-999, 2, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0xFADE55},
-    {17, C_DESERT, S_DEFAULT, D_DESERT, T_DEFAULT, F_DEFAULT, G_DEFAULT, 0, 3, B_SAND, B_SAND, 0, 0.45f, 0.3f, 2.0f, DEC(-999, 2, 1, 2, 0, 50, 10, 1, 3, 1, 0, 0), 0xD25F12},
-    {18, C_FOREST, S_DEFAULT, D_FOREST, T_FOREST0, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 0, 0.45f, 0.3f, 0.7f, DEC(10, 2, 2, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x22551C},
-    {19, C_TAIGA, S_DEFAULT, D_TAIGA, T_TAIGA0, F_DEFAULT, G_TAIGA, 0, 2, B_GRASS, B_DIRT, 0, 0.45f, 0.3f, 0.25f, DEC(10, 2, 1, 0, 1, 0, 0, 1, 3, 1, 0, 0), 0x163933},
-    {20, C_HILLS, S_HILLS, D_HILLS, T_HILLS, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 1, 0.8f, 0.3f, 0.2f, DEC(3, 2, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x72789A},
-    {21, C_JUNGLE, S_DEFAULT, D_JUNGLE, T_JUNGLE, F_DEFAULT, G_JUNGLE, 0, 2, B_GRASS, B_DIRT, 0, 0.1f, 0.2f, 0.95f, DEC(50, 4, 25, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x537B09},
-    {22, C_JUNGLE, S_DEFAULT, D_JUNGLE, T_JUNGLE, F_DEFAULT, G_JUNGLE, 0, 2, B_GRASS, B_DIRT, 0, 0.45f, 0.3f, 0.95f, DEC(50, 4, 25, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x2C4205},
-    {23, C_JUNGLE, S_DEFAULT, D_JUNGLE, T_JUNGLE_EDGE, F_DEFAULT, G_JUNGLE, 0, 2, B_GRASS, B_DIRT, 1, 0.1f, 0.2f, 0.95f, DEC(2, 4, 25, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x628B17},
-    {24, C_OCEAN, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 0, 0, B_GRASS, B_DIRT, 0, -1.8f, 0.1f, 0.5f, DDEF, 0x000030},
-    {25, C_STONEBEACH, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 0, 2, B_STONE, B_STONE, 0, 0.1f, 0.8f, 0.2f, DEC(-999, 2, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0xA2A284},
-    {26, C_BEACH, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 1, 1, B_SAND, B_SAND, 0, 0.0f, 0.025f, 0.05f, DEC(-999, 2, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0xFAF0C0},
-    {27, C_FOREST, S_DEFAULT, D_FOREST, T_BIRCH, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 2, 0.1f, 0.2f, 0.6f, DEC(10, 2, 2, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x307444},
-    {28, C_FOREST, S_DEFAULT, D_FOREST, T_BIRCH, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 2, 0.45f, 0.3f, 0.6f, DEC(10, 2, 2, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x1F5F32},
-    {29, C_FOREST, S_DEFAULT, D_FOREST, T_ROOFED, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 3, 0.1f, 0.2f, 0.7f, DEC(-999, 2, 2, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x40511A},
-    {30, C_TAIGA, S_DEFAULT, D_TAIGA, T_TAIGA0, F_DEFAULT, G_TAIGA, 1, 1, B_GRASS, B_DIRT, 0, 0.2f, 0.2f, -0.5f, DEC(10, 2, 1, 0, 1, 0, 0, 1, 3, 1, 0, 0), 0x31554A},
-    {31, C_TAIGA, S_DEFAULT, D_TAIGA, T_TAIGA0, F_DEFAULT, G_TAIGA, 1, 1, B_GRASS, B_DIRT, 0, 0.45f, 0.3f, -0.5f, DEC(10, 2, 1, 0, 1, 0, 0, 1, 3, 1, 0, 0), 0x243F36},
-    {32, C_TAIGA, S_TAIGA_MEGA, D_TAIGA, T_TAIGA1, F_DEFAULT, G_TAIGA, 0, 2, B_GRASS, B_DIRT, 1, 0.2f, 0.2f, 0.3f, DEC(10, 2, 7, 1, 3, 0, 0, 1, 3, 1, 0, 0), 0x596651},
-    {33, C_TAIGA, S_TAIGA_MEGA, D_TAIGA, T_TAIGA1, F_DEFAULT, G_TAIGA, 0, 2, B_GRASS, B_DIRT, 1, 0.45f, 0.3f, 0.3f, DEC(10, 2, 7, 1, 3, 0, 0, 1, 3, 1, 0, 0), 0x454F3E},
-    {34, C_HILLS, S_HILLS, D_HILLS, T_HILLS, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 1, 1.0f, 0.5f, 0.2f, DEC(3, 2, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x507050},
-    {35, C_SAVANNA, S_DEFAULT, D_SAVANNA, T_SAVANNA, F_DEFAULT, G_DEFAULT, 0, 3, B_GRASS, B_DIRT, 0, 0.125f, 0.05f, 1.2f, DEC(1, 4, 20, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0xBDB25F},
-    {36, C_SAVANNA, S_DEFAULT, D_SAVANNA, T_SAVANNA, F_DEFAULT, G_DEFAULT, 0, 3, B_GRASS, B_DIRT, 0, 1.5f, 0.025f, 1.0f, DEC(1, 4, 20, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0xA79D64},
-    {37, C_MESA, S_MESA, D_PLAIN, T_MESA, F_DEFAULT, G_DEFAULT, 0, 3, B_RED_SAND, B_STAINED_CLAY_WHITE, 0, 0.1f, 0.2f, 2.0f, DEC(-999, 0, 1, 20, 0, 3, 5, 1, 3, 1, 0, 0), 0xD94515},
-    {38, C_MESA, S_MESA, D_PLAIN, T_MESA, F_DEFAULT, G_DEFAULT, 0, 3, B_RED_SAND, B_STAINED_CLAY_WHITE, 2, 1.5f, 0.025f, 2.0f, DEC(5, 0, 1, 20, 0, 3, 5, 1, 3, 1, 0, 0), 0xB09765},
-    {39, C_MESA, S_MESA, D_PLAIN, T_MESA, F_DEFAULT, G_DEFAULT, 0, 3, B_RED_SAND, B_STAINED_CLAY_WHITE, 0, 1.5f, 0.025f, 2.0f, DEC(-999, 0, 1, 20, 0, 3, 5, 1, 3, 1, 0, 0), 0xCA8C65},
-    /* mutated variants */
-    {129, C_PLAINS, S_DEFAULT, D_PLAINS, T_DEFAULT, F_PLAINS, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 1, 0.125f, 0.05f, 0.8f, DEC(-999, 4, 10, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0xB5DB88},
-    {130, C_DESERT, S_DEFAULT, D_PLAIN, T_DEFAULT, F_DEFAULT, G_DEFAULT, 0, 3, B_SAND, B_SAND, 0, 0.225f, 0.25f, 2.0f, DEC(-999, 2, 1, 2, 0, 50, 10, 1, 3, 1, 0, 0), 0xFFBC40},
-    {131, C_HILLS, S_HILLS, D_HILLS, T_HILLS, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 2, 1.0f, 0.5f, 0.2f, DDEF, 0x888888},
-    {132, C_FOREST, S_DEFAULT, D_FOREST, T_FOREST1, F_FLOWER_FOREST, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 1, 0.1f, 0.4f, 0.7f, DEC(6, 100, 1, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x6A7425},
-    {133, C_TAIGA, S_DEFAULT, D_PLAIN, T_TAIGA0, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 0, 0.3f, 0.4f, 0.25f, DEC(10, 2, 1, 0, 1, 0, 0, 1, 3, 1, 0, 0), 0x338E81},
-    {134, C_SWAMP, S_SWAMP, D_PLAIN, T_SWAMP, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 0, -0.1f, 0.3f, 0.8f, DEC(2, 1, 5, 1, 8, 10, 0, 0, 0, 1, 0, 4), 0x2FFFDA},
-    {140, C_ICE, S_DEFAULT, D_ICE, T_ICE, F_DEFAULT, G_DEFAULT, 1, 1, B_SNOW, B_DIRT, 1, 0.425f, 0.45f, 0.0f, DDEF, 0xB4DCDC},
-    {149, C_JUNGLE, S_DEFAULT, D_PLAIN, T_JUNGLE, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 0, 0.2f, 0.4f, 0.95f, DEC(50, 4, 25, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x7BA331},
-    {151, C_JUNGLE, S_DEFAULT, D_PLAIN, T_JUNGLE_EDGE, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 1, 0.2f, 0.4f, 0.95f, DEC(2, 4, 25, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x8AB33F},
-    {155, C_FOREST, S_DEFAULT, D_PLAIN, T_BIRCH_SUB, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 2, 0.2f, 0.4f, 0.6f, DEC(10, 2, 2, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x589C6C},
-    {156, C_FOREST, S_DEFAULT, D_PLAIN, T_BIRCH_SUB, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 2, 0.55f, 0.5f, 0.6f, DEC(10, 2, 2, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x47875A},
-    {157, C_FOREST, S_DEFAULT, D_ROOFED_SUB, T_ROOFED, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 3, 0.2f, 0.4f, 0.7f, DEC(-999, 2, 2, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0x687942},
-    {158, C_TAIGA, S_DEFAULT, D_PLAIN, T_TAIGA0, F_DEFAULT, G_DEFAULT, 1, 1, B_GRASS, B_DIRT, 0, 0.3f, 0.4f, -0.5f, DEC(10, 2, 1, 0, 1, 0, 0, 1, 3, 1, 0, 0), 0x597D72},
-    {160, C_TAIGA, S_TAIGA_MEGA, D_TAIGA, T_TAIGA2, F_DEFAULT, G_TAIGA, 0, 2, B_GRASS, B_DIRT, 2, 0.2f, 0.2f, 0.25f, DEC(10, 2, 7, 1, 3, 0, 0, 1, 3, 1, 0, 0), 0x818E79},
-    {161, C_TAIGA, S_TAIGA_MEGA, D_TAIGA, T_TAIGA2, F_DEFAULT, G_TAIGA, 0, 2, B_GRASS, B_DIRT, 2, 0.2f, 0.2f, 0.25f, DEC(10, 2, 7, 1, 3, 0, 0, 1, 3, 1, 0, 0), 0x6D7766},
-    {162, C_HILLS, S_HILLS, D_HILLS, T_HILLS, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 2, 1.0f, 0.5f, 0.2f, DDEF, 0x789878},
-    {163, C_SAVANNA, S_SAVANNA_M, D_PLAIN, T_SAVANNA, F_DEFAULT, G_DEFAULT, 0, 3, B_GRASS, B_DIRT, 0, 0.3625f, 1.225f, 1.1f, DEC(2, 2, 5, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0xE5DA87},
-    {164, C_SAVANNA, S_SAVANNA_M, D_PLAIN, T_SAVANNA, F_DEFAULT, G_DEFAULT, 0, 2, B_GRASS, B_DIRT, 0, 1.05f, 1.2125f, 1.0f, DEC(2, 2, 5, 0, 0, 0, 0, 1, 3, 1, 0, 0), 0xCFC58C},
-    {165, C_MESA, S_MESA, D_PLAIN, T_MESA, F_DEFAULT, G_DEFAULT, 0, 3, B_RED_SAND, B_STAINED_CLAY_WHITE, 1, 0.1f, 0.2f, 2.0f, DEC(-999, 0, 1, 20, 0, 3, 5, 1, 3, 1, 0, 0), 0xFF6D3D},
-    {166, C_MESA, S_MESA, D_PLAIN, T_MESA, F_DEFAULT, G_DEFAULT, 0, 3, B_RED_SAND, B_STAINED_CLAY_WHITE, 2, 0.45f, 0.3f, 2.0f, DEC(5, 0, 1, 20, 0, 3, 5, 1, 3, 1, 0, 0), 0xD8BF8D},
-    {167, C_MESA, S_MESA, D_PLAIN, T_MESA, F_DEFAULT, G_DEFAULT, 0, 3, B_RED_SAND, B_STAINED_CLAY_WHITE, 0, 0.45f, 0.3f, 2.0f, DEC(-999, 0, 1, 20, 0, 3, 5, 1, 3, 1, 0, 0), 0xF2B48D},
-};
-#define NBIOMES ((int)(sizeof(BIOMES) / sizeof(BIOMES[0])))
-
-static uint8_t biome_index[256]; /* id -> index in BIOMES, 255 = none */
-
-static const Biome *bio(int id) {
-    if (id < 0 || id > 255 || biome_index[id] == 255) return &BIOMES[0]; /* BiomeBase.getBiome(id, OCEAN) */
-    return &BIOMES[biome_index[id]];
-}
-
-static int bio_exists(int id) { return id >= 0 && id < 256 && biome_index[id] != 255; }
-
-/* GenLayer.a(int, int): same biome "kind" */
-static int bio_same(int i, int j) {
-    if (i == j) return 1;
-    if (i == BI_MESA_PLATEAU_F || i == BI_MESA_PLATEAU) return j == BI_MESA_PLATEAU_F || j == BI_MESA_PLATEAU;
-    if (!bio_exists(i) || !bio_exists(j)) return 0;
-    return bio(i)->cls == bio(j)->cls;
-}
-
-static int is_ocean_id(int i) { return i == BI_OCEAN || i == BI_DEEP_OCEAN || i == BI_FROZEN_OCEAN; }
-
-/* ======================================================================== */
-/* GenLayer stack                                                            */
-/* ======================================================================== */
-
-#define LMUL 6364136223846793005ULL
-#define LADD 1442695040888963407ULL
-
-enum {
-    L_ISLAND0, L_ZOOM, L_FUZZY, L_ISLAND, L_ICEPLAINS, L_TOPSOIL, L_SPEC1, L_SPEC2, L_SPEC3, L_MUSHISLAND,
-    L_DEEPOCEAN, L_CLEANER, L_BIOME, L_DESERT, L_HILLS, L_PLAINS, L_MUSHSHORE, L_RIVER, L_SMOOTH
-};
-
-typedef struct {
-    uint8_t type;
-    int16_t seed;
-    uint8_t noworld; /* never initialised with the world seed (c stays 0) */
-} LayerDef;
-
-static const LayerDef LBASE[] = {
-    {L_ISLAND0, 1, 0},    {L_FUZZY, 2000, 0},  {L_ISLAND, 1, 0},     {L_ZOOM, 2001, 0},  {L_ISLAND, 2, 0},
-    {L_ISLAND, 50, 0},    {L_ISLAND, 70, 0},   {L_ICEPLAINS, 2, 0},  {L_TOPSOIL, 2, 0},  {L_ISLAND, 3, 0},
-    {L_SPEC1, 2, 0},      {L_SPEC2, 2, 0},     {L_SPEC3, 3, 0},      {L_ZOOM, 2002, 0},  {L_ZOOM, 2003, 0},
-    {L_ISLAND, 4, 0},     {L_MUSHISLAND, 5, 0}, {L_DEEPOCEAN, 4, 0},
-};
-#define NBASE 18
-/* the river noise used by GenLayerRegionHills: its two zoom layers are never seeded with the world seed */
-static const LayerDef LHILLSRIVER[] = {{L_CLEANER, 100, 0}, {L_ZOOM, 1000, 1}, {L_ZOOM, 1001, 1}};
-static const LayerDef LRIVER[] = {{L_CLEANER, 100, 0}, {L_ZOOM, 1000, 0}, {L_ZOOM, 1001, 0}, {L_ZOOM, 1000, 0},
-                                  {L_ZOOM, 1001, 0},   {L_ZOOM, 1002, 0}, {L_ZOOM, 1003, 0}, {L_RIVER, 1, 0},
-                                  {L_SMOOTH, 1000, 0}};
-static const LayerDef LBIOME1[] = {{L_BIOME, 200, 0}, {L_ZOOM, 1000, 0}, {L_ZOOM, 1001, 0}, {L_DESERT, 1000, 0}};
-static const LayerDef LBIOME2[] = {{L_HILLS, 1000, 0}, {L_PLAINS, 1001, 0}, {L_ZOOM, 1000, 0},
-                                   {L_ISLAND, 3, 0},   {L_ZOOM, 1001, 0},   {L_MUSHSHORE, 1000, 0},
-                                   {L_ZOOM, 1002, 0},  {L_ZOOM, 1003, 0},   {L_SMOOTH, 1000, 0}};
-
-static i64 g_seed;
-static i64 lay_wseed[19 + 32]; /* world-seeded "c" per distinct layer seed, see layer_c() */
-
-static i64 layer_base(i64 s) {
-    u64 b = (u64)s;
-    for (int i = 0; i < 3; i++) {
-        b *= b * LMUL + LADD;
-        b += (u64)s;
-    }
-    return (i64)b;
-}
-
-static i64 layer_world(i64 s) {
-    u64 b = (u64)layer_base(s);
-    u64 c = (u64)g_seed;
-    for (int i = 0; i < 3; i++) {
-        c *= c * LMUL + LADD;
-        c += b;
-    }
-    return (i64)c;
-}
-
-/* cache of world-seeded c by layer seed (the seeds used are few) */
-static const int16_t LSEEDS[] = {1, 2, 3, 4, 5, 10, 50, 70, 100, 200, 1000, 1001, 1002, 1003, 2000, 2001, 2002, 2003};
-#define NLSEEDS 18
-
-static i64 layer_c(int seed, int noworld) {
-    if (noworld) return 0;
-    for (int i = 0; i < NLSEEDS; i++)
-        if (LSEEDS[i] == seed) return lay_wseed[i];
-    return layer_world(seed);
-}
-
-/* layer RNG state */
-typedef struct {
-    i64 c, d;
-} LRand;
-
-INLINE void lr_chunk(LRand *r, i64 x, i64 z) {
-    u64 d = (u64)r->c;
-    d *= d * LMUL + LADD;
-    d += (u64)x;
-    d *= d * LMUL + LADD;
-    d += (u64)z;
-    d *= d * LMUL + LADD;
-    d += (u64)x;
-    d *= d * LMUL + LADD;
-    d += (u64)z;
-    r->d = (i64)d;
-}
-
-/* (d >> 24) mod n in [0, n) (Java's % then + n). The 40-bit dividend is split so that
- * only 32-bit divisions are needed (a 64-bit one is a slow library call on the M7). */
-#if defined(__GNUC__)
-__attribute__((noinline))
-#endif
-HOT static int lr_int(LRand *r, int n) {
-    i64 x = r->d >> 24;
-    int j;
-    if ((n & (n - 1)) == 0) {
-        j = (int)((u64)x & (u64)(n - 1));
-    } else if (n <= 65536) {
-        u32 un = (u32)n, lo = (u32)x;
-        i32 h = (i32)(x >> 32) % n;
-        if (h < 0) h += n;
-        u32 t = (((u32)h << 16) | (lo >> 16)) % un;
-        j = (int)(((t << 16) | (lo & 0xffffu)) % un);
-    } else {
-        j = (int)(x % (i64)n);
-        if (j < 0) j += n;
-    }
-    u64 d = (u64)r->d;
-    d *= d * LMUL + LADD;
-    d += (u64)r->c;
-    r->d = (i64)d;
-    return j;
-}
-
-static inline int sel_mode(LRand *r, int i, int j, int k, int l) {
-    if (j == k && k == l) return j;
-    if (i == j && i == k) return i;
-    if (i == j && i == l) return i;
-    if (i == k && i == l) return i;
-    if (i == j && k != l) return i;
-    if (i == k && j != l) return i;
-    if (i == l && j != k) return i;
-    if (j == k && i != l) return j;
-    if (j == l && i != k) return j;
-    if (k == l && i != j) return k;
-    int a[4] = {i, j, k, l};
-    return a[lr_int(r, 4)];
-}
-
-/* Layer scratch: one bump-allocated int32 area */
-static i32 *lay_mem; /* points into the shared scratch union */
-static int lay_top, lay_peak, lay_cap;
-
-static i32 *lay_alloc(int n) {
-    i32 *p = lay_mem + lay_top;
-    lay_top += n;
-    if (lay_top > lay_peak) lay_peak = lay_top;
-    if (lay_top > lay_cap) {
-        /* should not happen with the request sizes used; clamp to avoid corruption */
-        lay_top = lay_cap;
-        return lay_mem + lay_cap - n;
-    }
-    return p;
-}
-
-/* parent window of a layer for an output window */
-static void layer_parent_win(int type, int x, int z, int w, int h, int *px, int *pz, int *pw, int *ph) {
-    switch (type) {
-    case L_ZOOM:
-    case L_FUZZY:
-        *px = x >> 1;
-        *pz = z >> 1;
-        *pw = (w >> 1) + 2;
-        *ph = (h >> 1) + 2;
-        break;
-    case L_SPEC3:
-    case L_CLEANER:
-    case L_BIOME:
-        *px = x;
-        *pz = z;
-        *pw = w;
-        *ph = h;
-        break;
-    default:
-        *px = x - 1;
-        *pz = z - 1;
-        *pw = w + 2;
-        *ph = h + 2;
-        break;
-    }
-}
-
-/* Applies one layer: in = parent window (px,pz,pw,ph), out = (x,z,w,h). in2 is the second
- * input (hills river noise, same window as in). */
-static void layer_apply(const LayerDef *L, const i32 *in, const i32 *in2, i32 *out, int x, int z, int w, int h) {
-    LRand r;
-    r.c = layer_c(L->seed, L->noworld);
-    int pw = w + 2;
-    switch (L->type) {
-    case L_ISLAND0:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                lr_chunk(&r, x + i, z + j);
-                out[i + j * w] = lr_int(&r, 10) == 0 ? 1 : 0;
-            }
-        if (x > -w && x <= 0 && z > -h && z <= 0) out[-x + -z * w] = 1;
-        break;
-    case L_ZOOM:
-    case L_FUZZY: {
-        int px = x >> 1, pz = z >> 1, ppw = (w >> 1) + 2;
-        int cx0 = x >> 1, cx1 = (x + w - 1) >> 1, cz0 = z >> 1, cz1 = (z + h - 1) >> 1;
-        for (int cz = cz0; cz <= cz1; cz++)
-            for (int cx = cx0; cx <= cx1; cx++) {
-                int ix = cx - px, iz = cz - pz;
-                int a = in[ix + iz * ppw], b = in[ix + (iz + 1) * ppw];
-                int c = in[ix + 1 + iz * ppw], d = in[ix + 1 + (iz + 1) * ppw];
-                lr_chunk(&r, SHL(cx, 1), SHL(cz, 1));
-                int v00 = a;
-                int v01 = lr_int(&r, 2) ? b : a;
-                int v10 = lr_int(&r, 2) ? c : a;
-                int v11;
-                if (L->type == L_FUZZY) {
-                    int arr[4] = {a, c, b, d};
-                    v11 = arr[lr_int(&r, 4)];
-                } else {
-                    v11 = sel_mode(&r, a, c, b, d);
-                }
-                int bx = cx * 2 - x, bz = cz * 2 - z;
-                if (bx >= 0 && bz >= 0) out[bx + bz * w] = v00;
-                if (bx >= 0 && bz + 1 < h) out[bx + (bz + 1) * w] = v01;
-                if (bx + 1 < w && bz >= 0) out[bx + 1 + bz * w] = v10;
-                if (bx + 1 < w && bz + 1 < h) out[bx + 1 + (bz + 1) * w] = v11;
-            }
-        break;
-    }
-    case L_ISLAND:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                int a = in[i + j * pw], b = in[i + 2 + j * pw], c = in[i + (j + 2) * pw], d = in[i + 2 + (j + 2) * pw];
-                int k = in[i + 1 + (j + 1) * pw];
-                lr_chunk(&r, x + i, z + j);
-                int v;
-                if (k == 0 && (a != 0 || b != 0 || c != 0 || d != 0)) {
-                    int l3 = 1, i4 = 1;
-                    if (a != 0 && lr_int(&r, l3++) == 0) i4 = a;
-                    if (b != 0 && lr_int(&r, l3++) == 0) i4 = b;
-                    if (c != 0 && lr_int(&r, l3++) == 0) i4 = c;
-                    if (d != 0 && lr_int(&r, l3++) == 0) i4 = d;
-                    if (lr_int(&r, 3) == 0) v = i4;
-                    else if (i4 == 4) v = 4;
-                    else v = 0;
-                } else if (k > 0 && (a == 0 || b == 0 || c == 0 || d == 0)) {
-                    if (lr_int(&r, 5) == 0) v = k == 4 ? 4 : 0;
-                    else v = k;
-                } else {
-                    v = k;
-                }
-                out[i + j * w] = v;
-            }
-        break;
-    case L_ICEPLAINS:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                int n = in[i + 1 + j * pw], e = in[i + 2 + (j + 1) * pw], ww = in[i + (j + 1) * pw];
-                int s = in[i + 1 + (j + 2) * pw], k = in[i + 1 + (j + 1) * pw];
-                out[i + j * w] = k;
-                lr_chunk(&r, x + i, z + j);
-                if (k == 0 && n == 0 && e == 0 && ww == 0 && s == 0 && lr_int(&r, 2) == 0) out[i + j * w] = 1;
-            }
-        break;
-    case L_TOPSOIL:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                int k = in[i + 1 + (j + 1) * pw];
-                lr_chunk(&r, x + i, z + j);
-                if (k == 0) {
-                    out[i + j * w] = 0;
-                } else {
-                    int l = lr_int(&r, 6);
-                    out[i + j * w] = l == 0 ? 4 : (l <= 1 ? 3 : 1);
-                }
-            }
-        break;
-    case L_SPEC1:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                lr_chunk(&r, x + i, z + j);
-                int k = in[i + 1 + (j + 1) * pw];
-                if (k == 1) {
-                    int n = in[i + 1 + j * pw], e = in[i + 2 + (j + 1) * pw], ww = in[i + (j + 1) * pw],
-                        s = in[i + 1 + (j + 2) * pw];
-                    if (n == 3 || e == 3 || ww == 3 || s == 3 || n == 4 || e == 4 || ww == 4 || s == 4) k = 2;
-                }
-                out[i + j * w] = k;
-            }
-        break;
-    case L_SPEC2:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                int k = in[i + 1 + (j + 1) * pw];
-                if (k == 4) {
-                    int n = in[i + 1 + j * pw], e = in[i + 2 + (j + 1) * pw], ww = in[i + (j + 1) * pw],
-                        s = in[i + 1 + (j + 2) * pw];
-                    if (n == 2 || e == 2 || ww == 2 || s == 2 || n == 1 || e == 1 || ww == 1 || s == 1) k = 3;
-                }
-                out[i + j * w] = k;
-            }
-        break;
-    case L_SPEC3:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                lr_chunk(&r, x + i, z + j);
-                int k = in[i + j * w];
-                if (k != 0 && lr_int(&r, 13) == 0) k |= (1 + lr_int(&r, 15)) << 8 & 3840;
-                out[i + j * w] = k;
-            }
-        break;
-    case L_MUSHISLAND:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                int a = in[i + j * pw], b = in[i + 2 + j * pw], c = in[i + (j + 2) * pw], d = in[i + 2 + (j + 2) * pw];
-                int k = in[i + 1 + (j + 1) * pw];
-                lr_chunk(&r, x + i, z + j);
-                if (k == 0 && a == 0 && b == 0 && c == 0 && d == 0 && lr_int(&r, 100) == 0) out[i + j * w] = BI_MUSHROOM;
-                else out[i + j * w] = k;
-            }
-        break;
-    case L_DEEPOCEAN:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                int n = in[i + 1 + j * pw], e = in[i + 2 + (j + 1) * pw], ww = in[i + (j + 1) * pw],
-                    s = in[i + 1 + (j + 2) * pw], k = in[i + 1 + (j + 1) * pw];
-                int c = (n == 0) + (e == 0) + (ww == 0) + (s == 0);
-                out[i + j * w] = (k == 0 && c > 3) ? BI_DEEP_OCEAN : k;
-            }
-        break;
-    case L_CLEANER:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                lr_chunk(&r, x + i, z + j);
-                out[i + j * w] = in[i + j * w] > 0 ? lr_int(&r, 299999) + 2 : 0;
-            }
-        break;
-    case L_BIOME: {
-        static const uint8_t warm[6] = {BI_DESERT, BI_DESERT, BI_DESERT, BI_SAVANNA, BI_SAVANNA, BI_PLAINS};
-        static const uint8_t medium[6] = {BI_FOREST, BI_ROOFED, BI_EXTREME_HILLS, BI_PLAINS, BI_BIRCH, BI_SWAMP};
-        static const uint8_t cold[4] = {BI_FOREST, BI_EXTREME_HILLS, BI_TAIGA, BI_PLAINS};
-        static const uint8_t ice[4] = {BI_ICE_PLAINS, BI_ICE_PLAINS, BI_ICE_PLAINS, BI_COLD_TAIGA};
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                lr_chunk(&r, x + i, z + j);
-                int k = in[i + j * w];
-                int sp = (k & 3840) >> 8;
-                k &= ~3840;
-                int v;
-                if (is_ocean_id(k) || k == BI_MUSHROOM) v = k;
-                else if (k == 1) v = sp > 0 ? (lr_int(&r, 3) == 0 ? BI_MESA_PLATEAU : BI_MESA_PLATEAU_F) : warm[lr_int(&r, 6)];
-                else if (k == 2) v = sp > 0 ? BI_JUNGLE : medium[lr_int(&r, 6)];
-                else if (k == 3) v = sp > 0 ? BI_MEGA_TAIGA : cold[lr_int(&r, 4)];
-                else if (k == 4) v = ice[lr_int(&r, 4)];
-                else v = BI_MUSHROOM;
-                out[i + j * w] = v;
-            }
-        break;
-    }
-    case L_DESERT:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                lr_chunk(&r, x + i, z + j);
-                int k = in[i + 1 + (j + 1) * pw];
-                int n = in[i + 1 + j * pw], e = in[i + 2 + (j + 1) * pw], ww = in[i + (j + 1) * pw],
-                    s = in[i + 1 + (j + 2) * pw];
-                int v;
-                /* a(...): extreme hills edge */
-                if (bio_same(k, BI_EXTREME_HILLS)) {
-                    /* b(int,int): same kind, or compatible temperatures */
-#define TEMPOK(q, t) (bio_same(q, t) || (bio_exists(q) && bio_exists(t) && (bio(q)->temp_cat == bio(t)->temp_cat || bio(q)->temp_cat == 2 || bio(t)->temp_cat == 2)))
-                    v = (TEMPOK(n, BI_EXTREME_HILLS) && TEMPOK(e, BI_EXTREME_HILLS) && TEMPOK(ww, BI_EXTREME_HILLS) &&
-                         TEMPOK(s, BI_EXTREME_HILLS))
-                            ? k
-                            : BI_EH_EDGE;
-                } else if (k == BI_MESA_PLATEAU_F) {
-                    v = (bio_same(n, k) && bio_same(e, k) && bio_same(ww, k) && bio_same(s, k)) ? k : BI_MESA;
-                } else if (k == BI_MESA_PLATEAU) {
-                    v = (bio_same(n, k) && bio_same(e, k) && bio_same(ww, k) && bio_same(s, k)) ? k : BI_MESA;
-                } else if (k == BI_MEGA_TAIGA) {
-                    v = (bio_same(n, k) && bio_same(e, k) && bio_same(ww, k) && bio_same(s, k)) ? k : BI_TAIGA;
-                } else if (k == BI_DESERT) {
-                    v = (n != BI_ICE_PLAINS && e != BI_ICE_PLAINS && ww != BI_ICE_PLAINS && s != BI_ICE_PLAINS) ? k : BI_EH_PLUS;
-                } else if (k == BI_SWAMP) {
-                    if (n != BI_DESERT && e != BI_DESERT && ww != BI_DESERT && s != BI_DESERT && n != BI_COLD_TAIGA &&
-                        e != BI_COLD_TAIGA && ww != BI_COLD_TAIGA && s != BI_COLD_TAIGA && n != BI_ICE_PLAINS &&
-                        e != BI_ICE_PLAINS && ww != BI_ICE_PLAINS && s != BI_ICE_PLAINS)
-                        v = (n != BI_JUNGLE && s != BI_JUNGLE && e != BI_JUNGLE && ww != BI_JUNGLE) ? k : BI_JUNGLE_EDGE;
-                    else
-                        v = BI_PLAINS;
-                } else {
-                    v = k;
-                }
-                out[i + j * w] = v;
-            }
-        break;
-    case L_HILLS:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                lr_chunk(&r, x + i, z + j);
-                int k = in[i + 1 + (j + 1) * pw];
-                int l = in2[i + 1 + (j + 1) * pw];
-                int flag = (l - 2) % 29 == 0;
-                int v;
-                if (k != 0 && l >= 2 && (l - 2) % 29 == 1 && k < 128) {
-                    v = bio_exists(k + 128) ? k + 128 : k;
-                } else if (lr_int(&r, 3) != 0 && !flag) {
-                    v = k;
-                } else {
-                    int i2 = k;
-                    if (k == BI_DESERT) i2 = BI_DESERT_HILLS;
-                    else if (k == BI_FOREST) i2 = BI_FOREST_HILLS;
-                    else if (k == BI_BIRCH) i2 = BI_BIRCH_HILLS;
-                    else if (k == BI_ROOFED) i2 = BI_PLAINS;
-                    else if (k == BI_TAIGA) i2 = BI_TAIGA_HILLS;
-                    else if (k == BI_MEGA_TAIGA) i2 = BI_MEGA_TAIGA_HILLS;
-                    else if (k == BI_COLD_TAIGA) i2 = BI_COLD_TAIGA_HILLS;
-                    else if (k == BI_PLAINS) i2 = lr_int(&r, 3) == 0 ? BI_FOREST_HILLS : BI_FOREST;
-                    else if (k == BI_ICE_PLAINS) i2 = BI_ICE_MOUNTAINS;
-                    else if (k == BI_JUNGLE) i2 = BI_JUNGLE_HILLS;
-                    else if (k == BI_OCEAN) i2 = BI_DEEP_OCEAN;
-                    else if (k == BI_EXTREME_HILLS) i2 = BI_EH_PLUS;
-                    else if (k == BI_SAVANNA) i2 = BI_SAVANNA_PLATEAU;
-                    else if (bio_same(k, BI_MESA_PLATEAU_F)) i2 = BI_MESA;
-                    else if (k == BI_DEEP_OCEAN && lr_int(&r, 3) == 0) i2 = lr_int(&r, 2) == 0 ? BI_PLAINS : BI_FOREST;
-                    if (flag && i2 != k) i2 = bio_exists(i2 + 128) ? i2 + 128 : k;
-                    if (i2 == k) {
-                        v = k;
-                    } else {
-                        int n = in[i + 1 + j * pw], e = in[i + 2 + (j + 1) * pw], ww = in[i + (j + 1) * pw],
-                            s = in[i + 1 + (j + 2) * pw];
-                        int c = bio_same(n, k) + bio_same(e, k) + bio_same(ww, k) + bio_same(s, k);
-                        v = c >= 3 ? i2 : k;
-                    }
-                }
-                out[i + j * w] = v;
-            }
-        break;
-    case L_PLAINS:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                lr_chunk(&r, x + i, z + j);
-                int k = in[i + 1 + (j + 1) * pw];
-                out[i + j * w] = (lr_int(&r, 57) == 0 && k == BI_PLAINS) ? BI_PLAINS + 128 : k;
-            }
-        break;
-    case L_MUSHSHORE:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                lr_chunk(&r, x + i, z + j);
-                int k = in[i + 1 + (j + 1) * pw];
-                int n = in[i + 1 + j * pw], e = in[i + 2 + (j + 1) * pw], ww = in[i + (j + 1) * pw],
-                    s = in[i + 1 + (j + 2) * pw];
-                int v;
-                const Biome *b = bio_exists(k) ? bio(k) : 0;
-#define JUNGLEOK(q) ((bio_exists(q) && bio(q)->cls == C_JUNGLE) || (q) == BI_JUNGLE_EDGE || (q) == BI_JUNGLE || (q) == BI_JUNGLE_HILLS || (q) == BI_FOREST || (q) == BI_TAIGA || is_ocean_id(q))
-#define ISMESA(q) (bio_exists(q) && bio(q)->cls == C_MESA)
-                if (k == BI_MUSHROOM) {
-                    v = (n != BI_OCEAN && e != BI_OCEAN && ww != BI_OCEAN && s != BI_OCEAN) ? k : BI_MUSHROOM_SHORE;
-                } else if (b && b->cls == C_JUNGLE) {
-                    if (JUNGLEOK(n) && JUNGLEOK(e) && JUNGLEOK(ww) && JUNGLEOK(s))
-                        v = (!is_ocean_id(n) && !is_ocean_id(e) && !is_ocean_id(ww) && !is_ocean_id(s)) ? k : BI_BEACH;
-                    else
-                        v = BI_JUNGLE_EDGE;
-                } else if (k != BI_EXTREME_HILLS && k != BI_EH_PLUS && k != BI_EH_EDGE) {
-                    if (b && b->snowy) {
-                        v = is_ocean_id(k) ? k : ((!is_ocean_id(n) && !is_ocean_id(e) && !is_ocean_id(ww) && !is_ocean_id(s)) ? k : BI_COLD_BEACH);
-                    } else if (k != BI_MESA && k != BI_MESA_PLATEAU_F) {
-                        if (k != BI_OCEAN && k != BI_DEEP_OCEAN && k != BI_RIVER && k != BI_SWAMP)
-                            v = (!is_ocean_id(n) && !is_ocean_id(e) && !is_ocean_id(ww) && !is_ocean_id(s)) ? k : BI_BEACH;
-                        else
-                            v = k;
-                    } else {
-                        if (!is_ocean_id(n) && !is_ocean_id(e) && !is_ocean_id(ww) && !is_ocean_id(s))
-                            v = (ISMESA(n) && ISMESA(e) && ISMESA(ww) && ISMESA(s)) ? k : BI_DESERT;
-                        else
-                            v = k;
-                    }
-                } else {
-                    v = is_ocean_id(k) ? k : ((!is_ocean_id(n) && !is_ocean_id(e) && !is_ocean_id(ww) && !is_ocean_id(s)) ? k : BI_STONE_BEACH);
-                }
-                out[i + j * w] = v;
-            }
-        break;
-    case L_RIVER:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-#define RC(q) ((q) >= 2 ? 2 + ((q) & 1) : (q))
-                int a = RC(in[i + (j + 1) * pw]), b = RC(in[i + 2 + (j + 1) * pw]);
-                int c = RC(in[i + 1 + j * pw]), d = RC(in[i + 1 + (j + 2) * pw]);
-                int k = RC(in[i + 1 + (j + 1) * pw]);
-                out[i + j * w] = (k == a && k == c && k == b && k == d) ? -1 : BI_RIVER;
-            }
-        break;
-    case L_SMOOTH:
-        for (int j = 0; j < h; j++)
-            for (int i = 0; i < w; i++) {
-                int a = in[i + (j + 1) * pw], b = in[i + 2 + (j + 1) * pw];
-                int c = in[i + 1 + j * pw], d = in[i + 1 + (j + 2) * pw];
-                int k = in[i + 1 + (j + 1) * pw];
-                if (a == b && c == d) {
-                    lr_chunk(&r, x + i, z + j);
-                    k = lr_int(&r, 2) == 0 ? a : c;
-                } else {
-                    if (a == b) k = a;
-                    if (c == d) k = c;
-                }
-                out[i + j * w] = k;
-            }
-        break;
-    }
-}
-
-/* Runs a chain of layers (the last one producing window x,z,w,h), starting from the
- * output of `base` layers (computed recursively by run_base) or from `start`.
- * Returns a pointer to the result (allocated at the bump allocator). */
-typedef struct {
-    int x, z, w, h;
-} Win;
-
-static i32 *run_chain(const LayerDef *const *defs, int n, int x, int z, int w, int h, const i32 *second, const i32 *in0) {
-    /* windows, top down */
-    Win win[40];
-    win[n - 1] = (Win){x, z, w, h};
-    for (int i = n - 1; i > 0; i--)
-        layer_parent_win(defs[i]->type, win[i].x, win[i].z, win[i].w, win[i].h, &win[i - 1].x, &win[i - 1].z,
-                         &win[i - 1].w, &win[i - 1].h);
-    /* bottom up: each layer's output is allocated right after its input, then moved down
-     * over it (peak = largest input + output pair); in0: input of the first layer, if any
-     * (it is overwritten) */
-    int mark = in0 ? (int)(in0 - lay_mem) : lay_top;
-    const i32 *cur = in0;
-    for (int i = 0; i < n; i++) {
-        i32 *dst = lay_alloc(win[i].w * win[i].h);
-        layer_apply(defs[i], cur, (defs[i]->type == L_HILLS) ? second : 0, dst, win[i].x, win[i].z, win[i].w,
-                    win[i].h);
-        memmove(lay_mem + mark, dst, sizeof(i32) * (size_t)(win[i].w * win[i].h));
-        cur = lay_mem + mark;
-        lay_top = mark + win[i].w * win[i].h;
-    }
-    return lay_mem + mark;
-}
-
-/* window at the input of the first of n layers whose last outputs `top` */
-static Win chain_in_win(const LayerDef *defs, int n, Win top) {
-    for (int i = n - 1; i >= 0; i--) layer_parent_win(defs[i].type, top.x, top.z, top.w, top.h, &top.x, &top.z, &top.w, &top.h);
-    return top;
-}
-
-/* sub-window sw of the base layers' output (window bw at base) copied to a new block */
-static i32 *base_sub(const i32 *base, Win bw, Win sw) {
-    i32 *p = lay_alloc(sw.w * sw.h);
-    for (int j = 0; j < sw.h; j++)
-        memcpy(p + j * sw.w, base + (sw.z - bw.z + j) * bw.w + (sw.x - bw.x), sizeof(i32) * (size_t)sw.w);
-    return p;
-}
-
-static const LayerDef *chain_buf[40];
-
-static int chain_build(const LayerDef *tail, int ntail, int with_base) {
-    int n = 0;
-    if (with_base)
-        for (int i = 0; i < NBASE; i++) chain_buf[n++] = &LBASE[i];
-    for (int i = 0; i < ntail; i++) chain_buf[n++] = &tail[i];
-    return n;
-}
-
-/* GenLayerRiverMix output for window (x,z,w,h) into dst (biome ids) */
-static void layers_rivermix(int x, int z, int w, int h, i32 *dst) {
-    int mark0 = lay_top, mark = mark0;
-    /* biome branch: base + biome1 to desert, then hills (needs the hills river noise), then biome2 */
-    /* window of the hills layer input */
-    const LayerDef *b2[9];
-    for (int i = 0; i < 9; i++) b2[i] = &LBIOME2[i];
-    Win wb2[9];
-    wb2[8] = (Win){x - 1, z - 1, w + 2, h + 2}; /* the smooth layer input is fed by b2[7]; RiverMix needs smooth(x,z,w,h) */
-    /* compute windows for b2 chain from its top (smooth outputs x,z,w,h) */
-    wb2[8] = (Win){x, z, w, h};
-    for (int i = 8; i > 0; i--)
-        layer_parent_win(b2[i]->type, wb2[i].x, wb2[i].z, wb2[i].w, wb2[i].h, &wb2[i - 1].x, &wb2[i - 1].z,
-                         &wb2[i - 1].w, &wb2[i - 1].h);
-    Win hin; /* input window of the hills layer */
-    layer_parent_win(L_HILLS, wb2[0].x, wb2[0].z, wb2[0].w, wb2[0].h, &hin.x, &hin.z, &hin.w, &hin.h);
-    /* the base layers (shared by the three branches; each cell's value only depends on the
-     * cell) once, over the union of the windows the branches need from them */
-    Win w1 = chain_in_win(LHILLSRIVER, 3, hin), w2 = chain_in_win(LBIOME1, 4, hin);
-    Win w3 = chain_in_win(LRIVER, 9, (Win){x, z, w, h});
-    Win bw = w1;
-    for (int k = 0; k < 2; k++) {
-        Win o = k ? w3 : w2;
-        int x1 = bw.x + bw.w > o.x + o.w ? bw.x + bw.w : o.x + o.w, z1 = bw.z + bw.h > o.z + o.h ? bw.z + bw.h : o.z + o.h;
-        bw.x = bw.x < o.x ? bw.x : o.x;
-        bw.z = bw.z < o.z ? bw.z : o.z;
-        bw.w = x1 - bw.x;
-        bw.h = z1 - bw.z;
-    }
-    int n = chain_build(0, 0, 1);
-    i32 *base = run_chain(chain_buf, n, bw.x, bw.z, bw.w, bw.h, 0, 0);
-    /* river branch first (its result stays below the biome branch's work) */
-    n = chain_build(LRIVER, 9, 0);
-    i32 *river = run_chain(chain_buf, n, x, z, w, h, 0, base_sub(base, bw, w3));
-    /* hills river noise */
-    n = chain_build(LHILLSRIVER, 3, 0);
-    i32 *hr = run_chain(chain_buf, n, hin.x, hin.z, hin.w, hin.h, 0, base_sub(base, bw, w1));
-    /* biome chain up to desert */
-    n = chain_build(LBIOME1, 4, 0);
-    i32 *bd = run_chain(chain_buf, n, hin.x, hin.z, hin.w, hin.h, 0, base_sub(base, bw, w2));
-    mark = (int)(hr - lay_mem); /* the biome branch's results go over hr and bd */
-    /* hills .. smooth, fed by bd (the hills layer also reads hr) */
-    {
-        int mark2 = (int)(bd - lay_mem);
-        const i32 *cur = bd;
-        for (int i = 0; i < 9; i++) {
-            i32 *dst = lay_alloc(wb2[i].w * wb2[i].h);
-            layer_apply(b2[i], cur, hr, dst, wb2[i].x, wb2[i].z, wb2[i].w, wb2[i].h);
-            if (i == 0) {
-                /* hr is no longer needed: move the hills output down to mark (over hr and bd) */
-                memmove(lay_mem + mark, dst, sizeof(i32) * (size_t)(wb2[0].w * wb2[0].h));
-                cur = lay_mem + mark;
-                lay_top = mark + wb2[0].w * wb2[0].h;
-            } else {
-                memmove(lay_mem + mark, dst, sizeof(i32) * (size_t)(wb2[i].w * wb2[i].h));
-                cur = lay_mem + mark;
-                lay_top = mark + wb2[i].w * wb2[i].h;
-            }
-        }
-        (void)mark2;
-    }
-    i32 *biomes = lay_mem + mark;
-    for (int i = 0; i < w * h; i++) {
-        int b = biomes[i], rv = river[i];
-        int v;
-        if (b != BI_OCEAN && b != BI_DEEP_OCEAN) {
-            if (rv == BI_RIVER) {
-                if (b == BI_ICE_PLAINS) v = BI_FROZEN_RIVER;
-                else if (b != BI_MUSHROOM && b != BI_MUSHROOM_SHORE) v = rv & 255;
-                else v = BI_MUSHROOM_SHORE;
-            } else {
-                v = b;
-            }
-        } else {
-            v = b;
-        }
-        dst[i] = v;
-    }
-    lay_top = mark0;
-}
-
-static i64 vor_c;
-
-/* jitter values for the 4 corner points of a cell, as integers u = a(1024) - 512 */
-static void vor_cell(i64 cx4, i64 cz4, int u[8]) {
-    LRand r;
-    r.c = vor_c;
-    lr_chunk(&r, SHL(cx4, 2), SHL(cz4, 2));
-    u[0] = lr_int(&r, 1024) - 512; /* d1 x */
-    u[1] = lr_int(&r, 1024) - 512; /* d2 z */
-    lr_chunk(&r, SHL(cx4 + 1, 2), SHL(cz4, 2));
-    u[2] = lr_int(&r, 1024) - 512; /* d3 x (+4) */
-    u[3] = lr_int(&r, 1024) - 512; /* d4 z */
-    lr_chunk(&r, SHL(cx4, 2), SHL(cz4 + 1, 2));
-    u[4] = lr_int(&r, 1024) - 512; /* d5 x */
-    u[5] = lr_int(&r, 1024) - 512; /* d6 z (+4) */
-    lr_chunk(&r, SHL(cx4 + 1, 2), SHL(cz4 + 1, 2));
-    u[6] = lr_int(&r, 1024) - 512; /* d7 x (+4) */
-    u[7] = lr_int(&r, 1024) - 512; /* d8 z (+4) */
-}
-
-/* which corner (0: x0z0, 1: x1z0, 2: x0z1, 3: x1z1) sub-position (sx, sz) of a cell picks */
-static int vor_pick(const int u[8], int sx, int sz) {
-    /* (i - d) * 2560 = 2560 * (i - off) - 9u, exact */
-    static const int offx[4] = {0, 4, 0, 4}, offz[4] = {0, 0, 4, 4};
-    i64 dd[4];
-    for (int k = 0; k < 4; k++) {
-        i64 nx = 2560LL * (sx - offx[k]) - 9LL * u[2 * k];
-        i64 nz = 2560LL * (sz - offz[k]) - 9LL * u[2 * k + 1];
-        dd[k] = nx * nx + nz * nz;
-    }
-    if (dd[0] == dd[1] || dd[0] == dd[2] || dd[0] == dd[3] || dd[1] == dd[2] || dd[1] == dd[3] || dd[2] == dd[3]) {
-        /* exact tie: replay Java's double arithmetic */
-        double d[8];
-        for (int k = 0; k < 8; k++) {
-            d[k] = ((double)(u[k] + 512) / 1024 - (double)1 / 2) * ((double)36 / 10); /* 3.6 */
-            if ((k == 2) || (k == 5) || (k == 6) || (k == 7)) d[k] += 4;
-        }
-        double i4 = sz, k4 = sx;
-        double d9 = (i4 - d[1]) * (i4 - d[1]) + (k4 - d[0]) * (k4 - d[0]);
-        double d10 = (i4 - d[3]) * (i4 - d[3]) + (k4 - d[2]) * (k4 - d[2]);
-        double d11 = (i4 - d[5]) * (i4 - d[5]) + (k4 - d[4]) * (k4 - d[4]);
-        double d12 = (i4 - d[7]) * (i4 - d[7]) + (k4 - d[6]) * (k4 - d[6]);
-        if (d9 < d10 && d9 < d11 && d9 < d12) return 0;
-        if (d10 < d9 && d10 < d11 && d10 < d12) return 1;
-        if (d11 < d9 && d11 < d10 && d11 < d12) return 2;
-        return 3;
-    }
-    if (dd[0] < dd[1] && dd[0] < dd[2] && dd[0] < dd[3]) return 0;
-    if (dd[1] < dd[0] && dd[1] < dd[2] && dd[1] < dd[3]) return 1;
-    if (dd[2] < dd[0] && dd[2] < dd[1] && dd[2] < dd[3]) return 2;
-    return 3;
-}
-
-/* GenLayerZoomVoronoi for the block window (x, z, w, h); rm = rivermix window starting at
- * ((x-2)>>2, (z-2)>>2), row stride rw. Output uint8 biome ids, row stride ostride. */
-static void voronoi(const i32 *rm, int rx, int rz, int rw, int x, int z, int w, int h, uint8_t *out, int ostride) {
-    int u[8];
-    i64 lastx = INT64_MIN, lastz = INT64_MIN;
-    for (int j = 0; j < h; j++)
-        for (int i = 0; i < w; i++) {
-            int X = x + i - 2, Z = z + j - 2;
-            int cx4 = X >> 2, cz4 = Z >> 2;
-            if (cx4 != lastx || cz4 != lastz) {
-                vor_cell(cx4, cz4, u);
-                lastx = cx4;
-                lastz = cz4;
-            }
-            int k = vor_pick(u, X & 3, Z & 3);
-            int ix = cx4 - rx + (k & 1), iz = cz4 - rz + (k >> 1);
-            out[i + j * ostride] = (uint8_t)(rm[ix + iz * rw] & 255);
-        }
-}
-
-/* ======================================================================== */
-/* Noise                                                                     */
-/* ======================================================================== */
-
-/* A NoiseGeneratorPerlin / NoiseGenerator3Handler is fully determined by the
- * java.util.Random state at its construction: 3 nextDouble (offsets) then 256
- * swaps. We keep only that state and rebuild the permutation when needed. */
-typedef struct {
-    u64 st;
-} Octave;
-
-static const uint8_t PERM_ID[256] = {
-#define R16(b) b, b + 1, b + 2, b + 3, b + 4, b + 5, b + 6, b + 7, b + 8, b + 9, b + 10, b + 11, b + 12, b + 13, b + 14, b + 15
-    R16(0), R16(16), R16(32), R16(48), R16(64), R16(80), R16(96), R16(112),
-    R16(128), R16(144), R16(160), R16(176), R16(192), R16(208), R16(224), R16(240)
-#undef R16
-};
-
-HOT static void perm_build(u64 st, uint8_t *perm, i64 off[3]) {
-    JRand r = {st};
-    for (int k = 0; k < 3; k++) {
-        i64 n = jr_double_bits(&r);
-        if (off) off[k] = n >> 13; /* offset * 2^32 (offset = n / 2^53 * 256), Q32 */
-    }
-    memcpy(perm, PERM_ID, 256);
-    for (int i = 0; i < 256; i++) {
-        int j = jr_int_i(&r, 256 - i) + i;
-        uint8_t t = perm[i];
-        perm[i] = perm[j];
-        perm[j] = t;
-    }
-}
-
-static void perm_skip(JRand *r) {
-    for (int k = 0; k < 6; k++) jr_next(r, 27);
-    for (int i = 0; i < 256; i++) jr_int(r, 256 - i);
-}
-
-INLINE float fade(float t) { return t * t * t * (t * (t * 6.0f - 15.0f) + 10.0f); }
-INLINE float lerp(float t, float a, float b) { return a + t * (b - a); }
-
-INLINE float grad3(int h, float x, float y, float z) {
-    switch (h & 15) {
-    case 0: return x + y;
-    case 1: return -x + y;
-    case 2: return x - y;
-    case 3: return -x - y;
-    case 4: return x + z;
-    case 5: return -x + z;
-    case 6: return x - z;
-    case 7: return -x - z;
-    case 8: return y + z;
-    case 9: return -y + z;
-    case 10: return y - z;
-    case 11: return -y - z;
-    case 12: return x + y;
-    case 13: return -y + z;
-    case 14: return -x + y;
-    default: return -y - z;
-    }
-}
-
-/* Coordinates of samples: for octave `oct` (frequency 2^-oct) of a generator whose
- * scale (Java double from a float) is S_fx = scale * 2^32, the sample index n of a
- * request starting at integer position base gives
- *   coord = (base * scale + n * scale) * 2^-oct + offset
- * We compute it modulo 2^32 * 256 in Q32 fixed point: cell = bits 32..39, frac = bits 0..31. */
-INLINE u64 coord_q32(i64 base, u64 S_fx, int oct, i64 n, i64 off) {
-    u64 b = ((u64)base * S_fx) >> oct;
-    return b + (u64)n * (S_fx >> oct) + (u64)off;
-}
-
-INLINE void coord_split(u64 c, int *cell, float *frac) {
-    *cell = (int)((c >> 32) & 255);
-    *frac = (float)(u32)c * (1.0f / 4294967296.0f);
-}
-
-/* Fixed-point scales (value * 2^32) of the generators' sample spacings: Java passes
- * (double)float, and these floats are exactly representable in Q32. */
-#define FX(f) ((u64)((double)(f) * (double)(1ULL << 32)))
-static u64 SC_LIMIT, SC_MAINXZ, SC_MAINY, SC_DEPTH;
-
-/* One 3D octave over the chunk grid (5 x 33 x 5, index (x*5+z)*33+y), Java's
- * NoiseGeneratorPerlin.a with its stale-cache quirk: the four x-lerps are recomputed only
- * when the y cell changes, with the y fraction of the first sample of that run of samples in
- * the same cell. need: bitmask per point or NULL; rng: per column, the range [lo, hi] of y
- * holding the points needed (or NULL: all); mul: per-point multiplier array (or NULL for 1). */
-HOT static void perlin3_octave(const uint8_t *P, float *acc, const uint8_t *need, int bit, const uint8_t *rng,
-                               const float *mul, const int *xc, const float *xf, const int *zc, const float *zf,
-                               const int *yc, const float *yf, float amp) {
-    float uyv[33];
-    uint8_t run[33]; /* first y of the run of samples in the same cell as y */
-    for (int y = 0; y < 33; y++) {
-        uyv[y] = fade(yf[y]);
-        run[y] = (uint8_t)(y > 0 && yc[y] == yc[y - 1] ? run[y - 1] : y);
-    }
-    for (int x = 0; x < 5; x++) {
-        float fx = xf[x], ux = fade(fx), gx1 = fx - 1;
-        int l1 = xc[x], pa = P[l1], pb = P[(l1 + 1) & 255];
-        for (int z = 0; z < 5; z++) {
-            int col = x * 5 + z, lo = rng ? rng[col * 2] : 0, hi = rng ? rng[col * 2 + 1] : 32;
-            if (lo > hi) continue;
-            float fz = zf[z], uz = fade(fz), gz1 = fz - 1;
-            int j4 = zc[z], cur = -1;
-            float d16 = 0, d7 = 0, d17 = 0, d8 = 0;
-            for (int y = lo; y <= hi; y++) {
-                int idx = col * 33 + y;
-                if (need && !(need[idx] & bit)) continue;
-                if (run[y] != cur) {
-                    cur = run[y];
-                    float fy = yf[cur], gy1 = fy - 1;
-                    int i5 = yc[cur];
-                    int j5 = pa + i5;
-                    int k5 = P[j5 & 255] + j4;
-                    int l5 = P[(j5 + 1) & 255] + j4;
-                    int i6 = pb + i5;
-                    int i2 = P[i6 & 255] + j4;
-                    int j6 = P[(i6 + 1) & 255] + j4;
-                    d16 = lerp(ux, grad3(P[k5 & 255], fx, fy, fz), grad3(P[i2 & 255], gx1, fy, fz));
-                    d7 = lerp(ux, grad3(P[l5 & 255], fx, gy1, fz), grad3(P[j6 & 255], gx1, gy1, fz));
-                    d17 = lerp(ux, grad3(P[(k5 + 1) & 255], fx, fy, gz1), grad3(P[(i2 + 1) & 255], gx1, fy, gz1));
-                    d8 = lerp(ux, grad3(P[(l5 + 1) & 255], fx, gy1, gz1), grad3(P[(j6 + 1) & 255], gx1, gy1, gz1));
-                }
-                float uy = uyv[y];
-                float v = lerp(uz, lerp(uy, d16, d7), lerp(uy, d17, d8));
-                if (mul) acc[idx] += v * amp * mul[idx];
-                else acc[idx] += v * amp;
-            }
-        }
-    }
-}
-
-/* per grid column, the range [lo, hi] of y whose points have one of the bits (lo > hi: none);
- * returns whether any point has them */
-static int need_ranges(const uint8_t *cls, int bits, uint8_t *rng) {
-    int any = 0;
-    for (int c = 0; c < 25; c++) {
-        int lo = 33, hi = -1;
-        for (int y = 0; y < 33; y++)
-            if (cls[c * 33 + y] & bits) {
-                if (lo == 33) lo = y;
-                hi = y;
-            }
-        rng[c * 2] = (uint8_t)(lo == 33 ? 1 : lo);
-        rng[c * 2 + 1] = (uint8_t)(lo == 33 ? 0 : hi);
-        any |= lo != 33;
-    }
-    return any;
-}
-
-/* 2D octave (Java's j == 1 path) over 5 x 5 */
-HOT static void perlin2_octave(const uint8_t *P, float *acc, const int *xc, const float *xf, const int *zc,
-                           const float *zf, float amp) {
-    int idx = 0;
-    for (int x = 0; x < 5; x++) {
-        float fx = xf[x], ux = fade(fx);
-        int i3 = xc[x];
-        for (int z = 0; z < 5; z++, idx++) {
-            float fz = zf[z], uz = fade(fz);
-            int l1 = zc[z];
-            int l = P[i3];
-            int j3 = P[l & 255] + l1;
-            int k3 = P[(i3 + 1) & 255];
-            int i1 = P[k3 & 255] + l1;
-            float d11 = lerp(ux, grad3(P[j3 & 255], fx, 0, fz), grad3(P[i1 & 255], fx - 1, 0, fz));
-            float d12 = lerp(ux, grad3(P[(j3 + 1) & 255], fx, 0, fz - 1), grad3(P[(i1 + 1) & 255], fx - 1, 0, fz - 1));
-            acc[idx] += lerp(uz, d11, d12) * amp;
-        }
-    }
-}
-
-/* ---- simplex (NoiseGenerator3Handler) ---- */
-/* constants as Q64 fractions for exact integer setup */
-#define F2D 0.36602540378443864676 /* 0.5 * (sqrt(3) - 1) */
-#define G2D 0.21132486540518711775 /* (3 - sqrt(3)) / 6 */
-#define H2D 0.57735026918962576451 /* 1 - 2 * G2 = sqrt(3) / 3 */
-static const u64 F2_Q64 = 0x5DB3D742C265539DULL; /* F2 * 2^64 */
-
-/* (k * frac) in Q32 (k signed, frac = q/2^64), exact to ~2^-32 */
-static inline i64 mul_q64(i64 k, u64 q) {
-    u64 hi = q >> 32, lo = q & 0xFFFFFFFFULL;
-    i64 a = k * (i64)hi;               /* Q32 */
-    i64 b = (k * (i64)lo) >> 32;       /* Q32 (|k| < 2^31) */
-    return a + b;
-}
-
-static const float SGRAD[12][2] = {{1, 1}, {-1, 1}, {1, -1}, {-1, -1}, {1, 0}, {-1, 0},
-                                   {1, 0}, {-1, 0}, {0, 1}, {0, -1}, {0, 1}, {0, -1}};
-
-/* simplex value at (xi + xf, zi + zf); xf, zf small (|.| < ~4) */
-HOT static float simplex2(const uint8_t *P, i32 xi, float xf, i32 zi, float zf) {
-    i32 K = xi + zi;
-    i64 sq = mul_q64(K, F2_Q64); /* K*F2, Q32 */
-    i32 si = (i32)(sq >> 32);
-    float sf = (float)(u32)sq * (1.0f / 4294967296.0f);
-    float t = (xf + zf) * (float)F2D;
-    float sx = xf + sf + t, sz = zf + sf + t;
-    int fsx = floor_f_i(sx), fsz = floor_f_i(sz);
-    i32 ci = xi + si + fsx, cj = zi + si + fsz;
-    /* unskew: x0 = xf - fsx + (fsx + fsz) * G2 + (K * G2 - si * (1 - 2 G2)), and the last
-     * term equals sf * (1 - 2 G2) because F2 * (1 - 2 G2) = G2 */
-    float u = (float)(fsx + fsz) * (float)G2D + sf * (float)H2D;
-    float x0 = (xf - (float)fsx) + u, z0 = (zf - (float)fsz) + u;
-    int b0, b1;
-    if (x0 > z0) {
-        b0 = 1;
-        b1 = 0;
-    } else {
-        b0 = 0;
-        b1 = 1;
-    }
-    float x1 = x0 - (float)b0 + (float)G2D, z1 = z0 - (float)b1 + (float)G2D;
-    float x2 = x0 - 1.0f + 2.0f * (float)G2D, z2 = z0 - 1.0f + 2.0f * (float)G2D;
-    int k = ci & 255, l = cj & 255;
-    int g0 = P[(k + P[l]) & 255] % 12;
-    int g1 = P[(k + b0 + P[(l + b1) & 255]) & 255] % 12;
-    int g2 = P[(k + 1 + P[(l + 1) & 255]) & 255] % 12;
-    float n = 0;
-    float t0 = 0.5f - x0 * x0 - z0 * z0;
-    if (t0 >= 0) {
-        t0 *= t0;
-        n += t0 * t0 * (SGRAD[g0][0] * x0 + SGRAD[g0][1] * z0);
-    }
-    float t1 = 0.5f - x1 * x1 - z1 * z1;
-    if (t1 >= 0) {
-        t1 *= t1;
-        n += t1 * t1 * (SGRAD[g1][0] * x1 + SGRAD[g1][1] * z1);
-    }
-    float t2 = 0.5f - x2 * x2 - z2 * z2;
-    if (t2 >= 0) {
-        t2 *= t2;
-        n += t2 * t2 * (SGRAD[g2][0] * x2 + SGRAD[g2][1] * z2);
-    }
-    return 70.0f * n;
-}
-
-/* Java's single-point NoiseGenerator3Handler.a(double, double) in double: used only to
- * settle values the float version puts within 1e-5 of a threshold that matters. */
-static int jfloor_s(double d) { return d > 0 ? (int)d : (int)d - 1; }
-
-static double simplex2_d(const uint8_t *P, double d0, double d1) {
-    const double s3 = sqrt((double)3), F = (s3 - 1) / 2, G = (3 - s3) / 6;
-    double d3 = (d0 + d1) * F;
-    int i = jfloor_s(d0 + d3), j = jfloor_s(d1 + d3);
-    double d5 = (double)(i + j) * G;
-    double d8 = d0 - ((double)i - d5), d9 = d1 - ((double)j - d5);
-    int b0 = d8 > d9, b1 = !b0;
-    double d10 = d8 - b0 + G, d11 = d9 - b1 + G, d12 = d8 - 1 + 2 * G, d13 = d9 - 1 + 2 * G;
-    int k = i & 255, l = j & 255;
-    int g0 = P[(k + P[l]) & 255] % 12, g1 = P[(k + b0 + P[(l + b1) & 255]) & 255] % 12,
-        g2 = P[(k + 1 + P[(l + 1) & 255]) & 255] % 12;
-    double n = 0, t;
-    t = (double)1 / 2 - d8 * d8 - d9 * d9;
-    if (t >= 0) {
-        t *= t;
-        n += t * t * ((double)SGRAD[g0][0] * d8 + (double)SGRAD[g0][1] * d9);
-    }
-    t = (double)1 / 2 - d10 * d10 - d11 * d11;
-    if (t >= 0) {
-        t *= t;
-        n += t * t * ((double)SGRAD[g1][0] * d10 + (double)SGRAD[g1][1] * d11);
-    }
-    t = (double)1 / 2 - d12 * d12 - d13 * d13;
-    if (t >= 0) {
-        t *= t;
-        n += t * t * ((double)SGRAD[g2][0] * d12 + (double)SGRAD[g2][1] * d13);
-    }
-    return 70 * n;
-}
-
-/* ======================================================================== */
-/* World state                                                               */
-/* ======================================================================== */
-
-static Octave oc_min[16], oc_max[16], oc_main[8], oc_surf[4], oc_depth[16];
-static uint8_t perm_temp[256], perm_grass[256]; /* BiomeBase.ae (1234), .af (2345) */
-static Octave oc_mesa[6];                          /* aH, aF[0..3], aG */
-static uint8_t mesa_bands[64];                     /* B_ ids */
-static i64 pop_mul_x, pop_mul_z;                   /* population seed multipliers */
-static i64 cave_mul_x, cave_mul_z;                 /* MapGenBase seed multipliers */
-
-/* temperature noise (BiomeBase.ae) at block x, z: ae.a(x/8, z/8) */
-static float temp_noise(int x, int z) {
-    return simplex2(perm_temp, x >> 3, (float)(x & 7) * 0.125f, z >> 3, (float)(z & 7) * 0.125f);
-}
-
-/* BiomeBase.a(BlockPosition): temperature at height */
-static float biome_temp_at(const Biome *b, int x, int y, int z) {
-    if (y > 64) {
-        float f = temp_noise(x, z) * 4.0f;
-        return b->temp - (f + (float)y - 64.0f) * 0.05f / 30.0f;
-    }
-    return b->temp;
-}
-
-/* af.a(x / d, z / d) for an integer divisor d (exact split) */
-static float grass_noise_div(int x, int z, int d) {
-    int xi = x >= 0 ? x / d : -((-x + d - 1) / d), zi = z >= 0 ? z / d : -((-z + d - 1) / d);
-    return simplex2(perm_grass, xi, (float)(x - xi * d) / (float)d, zi, (float)(z - zi * d) / (float)d);
-}
-
-/* ======================================================================== */
-/* Scratch memory (phases never overlap)                                     */
-/* ======================================================================== */
-
-#define LAY_INTS 1650 /* the 18 x 18 biome window peaks at 1084 + its output; spawn_rows must fit in U */
-
-typedef struct {
-    float grid[825];      /* main noise, then density */
-    union {
-        float acc[825];   /* limit noise accumulator (density pass) */
-        struct {          /* surface pass, after the density */
-            float surf[256];       /* surface depth noise, index z*16+x */
-            uint8_t mperm[6][256]; /* mesa noises (built when a mesa column shows up) */
-            uint8_t col[256];
-        };
-    };
-    uint8_t cls[825];     /* per grid point: sign decided by bounds / noise needed / limits needed */
-    uint8_t perm[256];
-    uint8_t mesa_ready;
-} TerrainScratch;
-
-typedef struct {
-    int x, y, z; /* lake box origin (world) */
-    uint8_t liquid;
-    uint8_t shape[256]; /* 16x16x8 bits: index (x*16+z)*8+y */
-} LakeRec;
-
-typedef struct {
-    int px, pz, ox, oz;            /* populated chunk, frame origin (frame = 32x32 columns) */
-    uint8_t top[1024], tb[1024];   /* highest non-plant block of each frame column, and the block */
-    uint8_t pl[1024];              /* plant-like block right above top (0 = none) */
-    int nlake;
-    LakeRec lake[2];
-    /* cave query mask active for reads */
-    int qon, qx0, qy0, qz0, qx1, qy1, qz1;
-} View;
-
-typedef struct {
-    View v;
-    uint8_t qmask[2048];
-} PopScratch;
-
-typedef struct {
-    int x, y, z, q;
-} BigPos;
-
-/* Scratch memory. The phases never overlap: layers (in the terrain pass), terrain, then caves
- * and populations (PopScratch plus the cave walk's and big oak's tables after it). */
-static union {
-    TerrainScratch t;
-    i32 lay[LAY_INTS];
-    PopScratch p;
-    struct {
-        PopScratch p_;
-        float canyon_w[256]; /* WorldGenCanyon.d */
-        BigPos big_list[48]; /* WorldGenBigTree's branch ends */
-    } x;
-    uint8_t spawn_rows[sizeof(i32) * LAY_INTS + 8 * 129];
-} U;
-#define canyon_w (U.x.canyon_w)
-#define big_list (U.x.big_list)
-
-/* ======================================================================== */
-/* Terrain                                                                   */
-/* ======================================================================== */
-
-static float bweights[25]; /* ChunkProviderGenerate.q */
-
-/* biomes of chunk (cx, cz): 1:4 grid 10x10 at (cx*4-2, cz*4-2) and 16x16 blocks */
-static uint8_t cb4[100], cb16[256];
-
-static int bc_cx = 0x7fffffff, bc_cz; /* chunk whose biomes cb16 holds */
-
-/* River-mix biomes (1:4 cells) of 3 x 3 chunks, kept between calls: running the layers costs
- * mostly the same for a chunk's 10 x 10 cells as for this 18 x 18 window, and the chunks whose
- * terrain a gen_slab call computes are around the same place. */
-#define BG_W 18
-static uint8_t bgrid[BG_W * BG_W];
-static int bg_x, bg_z; /* cell of bgrid[0] */
-static int64_t bg_seed;
-static int bg_ok;
-
-static void chunk_biomes(int cx, int cz) {
-    bc_cx = cx;
-    bc_cz = cz;
-    int x0 = cx * 4 - 2, z0 = cz * 4 - 2;
-    if (!bg_ok || bg_seed != g_seed || x0 < bg_x || z0 < bg_z || x0 + 10 > bg_x + BG_W || z0 + 10 > bg_z + BG_W) {
-        bg_x = x0 - 4;
-        bg_z = z0 - 4;
-        bg_seed = g_seed;
-        bg_ok = 1;
-        lay_mem = U.lay + BG_W * BG_W;
-        lay_cap = LAY_INTS - BG_W * BG_W;
-        lay_top = 0;
-        layers_rivermix(bg_x, bg_z, BG_W, BG_W, U.lay);
-        for (int i = 0; i < BG_W * BG_W; i++) bgrid[i] = (uint8_t)U.lay[i];
-    }
-    i32 *rm = U.lay;
-    for (int j = 0; j < 10; j++)
-        for (int i = 0; i < 10; i++) rm[i + j * 10] = bgrid[(x0 - bg_x + i) + (z0 - bg_z + j) * BG_W];
-    for (int i = 0; i < 100; i++) cb4[i] = (uint8_t)rm[i];
-    /* voronoi window for blocks (cx*16, cz*16, 16, 16) is rivermix (cx*4-1, cz*4-1, 6, 6),
-     * a sub-window of the 10x10 one at offset (1, 1) */
-    voronoi(rm + 1 + 10, cx * 4 - 1, cz * 4 - 1, 10, cx * 16, cz * 16, 16, 16, cb16, 16);
-}
-
-static void octave_setup(const Octave *o, i64 off[3]) { perm_build(o->st, U.t.perm, off); }
-
-/* octave o (generator state oc) of a 3D noise over the chunk grid at grid origin (bx, bz):
- * horizontal / vertical sample spacings sxz, sy (Q32), accumulated into acc as perlin3_octave */
-HOT static void noise3_octave(const Octave *oc, int o, i64 bx, i64 bz, u64 sxz, u64 sy, float *acc, const uint8_t *need,
-                          int bit, const uint8_t *rng, const float *mul) {
-    int xc[5], zc[5], yc[33];
-    float xf[5], zf[5], yf[33];
-    i64 off[3];
-    octave_setup(oc, off);
-    for (int n = 0; n < 5; n++) {
-        coord_split(coord_q32(bx, sxz, o, n, off[0]), &xc[n], &xf[n]);
-        coord_split(coord_q32(bz, sxz, o, n, off[2]), &zc[n], &zf[n]);
-    }
-    for (int n = 0; n < 33; n++) coord_split(coord_q32(0, sy, o, n, off[1]), &yc[n], &yf[n]);
-    perlin3_octave(U.t.perm, acc, need, bit, rng, mul, xc, xf, zc, zf, yc, yf, (float)(1 << o));
-}
-
-/* the density's height offset at grid level j2 (ChunkProviderGenerate: d4) */
-INLINE float dens_offset(int j2, float d3, float d2) {
-    float d4 = ((float)j2 - d3) * 12.0f * 128.0f / 256.0f / d2;
-    return d4 < 0.0f ? d4 * 4.0f : d4;
-}
-
-/* noise grid for chunk (cx, cz) -> U.t.grid holds the 5x5x33 densities.
- * The density is lerp(min, max, main) / 512 - offset(y); each limit noise is a sum of 16
- * octaves of amplitude 2^o whose values are within [-2, 2] (gradient dots of fractions,
- * lerped), so the noise part is within +-256. Grid points where offset(y) alone decides the
- * sign for every cell around them do not need any noise: they get +-1 instead (cells whose
- * 8 corners all agree interpolate to the same sign whatever the values). */
-HOT static void chunk_density(int cx, int cz) {
-    TerrainScratch *T = &U.t;
-    int xc[5], zc[5];
-    float xf[5], zf[5];
-    i64 off[3];
-    i64 bx = (i64)cx * 4, bz = (i64)cz * 4;
-    /* depth noise (2D, 16 octaves) */
-    float depth[25];
-    memset(depth, 0, sizeof depth);
-    for (int o = 0; o < 16; o++) {
-        octave_setup(&oc_depth[o], off);
-        for (int n = 0; n < 5; n++) {
-            coord_split(coord_q32(bx, SC_DEPTH, o, n, off[0]), &xc[n], &xf[n]);
-            coord_split(coord_q32(bz, SC_DEPTH, o, n, off[2]), &zc[n], &zf[n]);
-        }
-        perlin2_octave(T->perm, depth, xc, xf, zc, zf, (float)(1 << o));
-    }
-    /* per grid column: height (d3) and scale (d2) from the blended biomes and the depth noise */
-    float colD3[25], colD2[25];
-    for (int j1 = 0, i1 = 0; j1 < 5; j1++)
-        for (int k1 = 0; k1 < 5; k1++, i1++) {
-            float f2 = 0, f3 = 0, f4 = 0;
-            const Biome *bc = bio(cb4[j1 + 2 + (k1 + 2) * 10]);
-            for (int l1 = -2; l1 <= 2; l1++)
-                for (int i2 = -2; i2 <= 2; i2++) {
-                    const Biome *b1 = bio(cb4[j1 + l1 + 2 + (k1 + i2 + 2) * 10]);
-                    float f5 = 0.0f + b1->depth * 1.0f;
-                    float f6 = 0.0f + b1->scale * 1.0f;
-                    float f7 = bweights[l1 + 2 + (i2 + 2) * 5] / (f5 + 2.0f);
-                    if (b1->depth > bc->depth) f7 /= 2.0f;
-                    f2 += f6 * f7;
-                    f3 += f5 * f7;
-                    f4 += f7;
-                }
-            f2 /= f4;
-            f3 /= f4;
-            f2 = f2 * 0.9f + 0.1f;
-            f3 = (f3 * 4.0f - 1.0f) / 8.0f;
-            float d0 = depth[i1] / 8000.0f;
-            if (d0 < 0.0f) d0 = -d0 * 0.3f;
-            d0 = d0 * 3.0f - 2.0f;
-            if (d0 < 0.0f) {
-                d0 /= 2.0f;
-                if (d0 < -1.0f) d0 = -1.0f;
-                d0 /= 1.4f;
-                d0 /= 2.0f;
-            } else {
-                if (d0 > 1.0f) d0 = 1.0f;
-                d0 /= 8.0f;
-            }
-            float d1 = f3;
-            d1 += d0 * 0.2f;
-            d1 = d1 * 8.5f / 8.0f;
-            colD3[i1] = 8.5f + d1 * 4.0f;
-            colD2[i1] = f2;
-        }
-    /* T->cls per grid point: D_SOLID / D_EMPTY when bounds decide the sign of the density,
-     * D_NEED when its exact value is needed, then D_MIN / D_MAX for the limit noises the
-     * clamped lerp uses. Bounds: each octave of a limit noise is below 2 in magnitude (gradient
-     * dots of fractions, lerped), times its amplitude 2^o; the clamped lerp lies between the two
-     * limits. First with no noise at all (+-256 after the / 512), then, for the points still
-     * undecided, with the sums of the 6 lowest-frequency octaves (10..15) of both limits, which
-     * leave +-2 * (2^10 - 1) / 512 < 4 for the rest (4.05 with room for float rounding). */
-    enum { D_MIN = 1, D_MAX = 2, D_NEED = 4, D_UND = 8, D_SOLID = 16, D_EMPTY = 32 };
-    uint8_t *cls = T->cls;
-    for (int c = 0; c < 25; c++)
-        for (int j2 = 0; j2 < 33; j2++) {
-            float d4 = dens_offset(j2, colD3[c], colD2[c]);
-            float lo = -256.5f - d4, hi = 256.5f - d4;
-            if (j2 > 29) {
-                float d9 = (float)(j2 - 29) / 3.0f;
-                lo = lo * (1.0f - d9) + -10.0f * d9;
-                hi = hi * (1.0f - d9) + -10.0f * d9;
-            }
-            cls[c * 33 + j2] = lo > 0.0f ? D_SOLID : (hi <= 0.0f ? D_EMPTY : D_UND);
-        }
-    memset(T->grid, 0, sizeof T->grid); /* min partial sums */
-    memset(T->acc, 0, sizeof T->acc);   /* max partial sums */
-    uint8_t rng[50];
-    if (need_ranges(cls, D_UND, rng))
-        for (int o = 10; o < 16; o++) {
-            noise3_octave(&oc_min[o], o, bx, bz, SC_LIMIT, SC_LIMIT, T->grid, cls, D_UND, rng, 0);
-            noise3_octave(&oc_max[o], o, bx, bz, SC_LIMIT, SC_LIMIT, T->acc, cls, D_UND, rng, 0);
-        }
-    for (int i = 0; i < 825; i++) {
-        if (!(cls[i] & D_UND)) continue;
-        int j2 = i % 33;
-        float a = T->grid[i], b = T->acc[i];
-        float d4 = dens_offset(j2, colD3[i / 33], colD2[i / 33]);
-        float lo = (a < b ? a : b) / 512.0f - 4.05f - d4, hi = (a < b ? b : a) / 512.0f + 4.05f - d4;
-        if (j2 > 29) {
-            float d9 = (float)(j2 - 29) / 3.0f;
-            lo = lo * (1.0f - d9) + -10.0f * d9;
-            hi = hi * (1.0f - d9) + -10.0f * d9;
-        }
-        cls[i] = lo > 0.0f ? D_SOLID : (hi <= 0.0f ? D_EMPTY : 0);
-    }
-    /* a point needs noise if one of the cells around it has corners of different classes */
-    for (int gx = 0; gx < 4; gx++)
-        for (int gz = 0; gz < 4; gz++)
-            for (int gy = 0; gy < 32; gy++) {
-                int c0 = (gx * 5 + gz) * 33 + gy, c1 = (gx * 5 + gz + 1) * 33 + gy;
-                int c2 = ((gx + 1) * 5 + gz) * 33 + gy, c3 = ((gx + 1) * 5 + gz + 1) * 33 + gy;
-                int k = cls[c0] & (D_SOLID | D_EMPTY);
-                if (k && (cls[c1] & (D_SOLID | D_EMPTY)) == k && (cls[c2] & (D_SOLID | D_EMPTY)) == k &&
-                    (cls[c3] & (D_SOLID | D_EMPTY)) == k && (cls[c0 + 1] & (D_SOLID | D_EMPTY)) == k &&
-                    (cls[c1 + 1] & (D_SOLID | D_EMPTY)) == k && (cls[c2 + 1] & (D_SOLID | D_EMPTY)) == k &&
-                    (cls[c3 + 1] & (D_SOLID | D_EMPTY)) == k)
-                    continue;
-                cls[c0] |= D_NEED, cls[c1] |= D_NEED, cls[c2] |= D_NEED, cls[c3] |= D_NEED;
-                cls[c0 + 1] |= D_NEED, cls[c1 + 1] |= D_NEED, cls[c2 + 1] |= D_NEED, cls[c3 + 1] |= D_NEED;
-            }
-    /* main noise (8 octaves) */
-    memset(T->grid, 0, sizeof T->grid);
-    if (need_ranges(cls, D_NEED, rng))
-        for (int o = 0; o < 8; o++) noise3_octave(&oc_main[o], o, bx, bz, SC_MAINXZ, SC_MAINY, T->grid, cls, D_NEED, rng, 0);
-    /* which limits the clamped lerp needs: min only (d7 < 0), max only (d7 > 1) or both */
-    for (int i = 0; i < 825; i++) {
-        if (!(cls[i] & D_NEED)) continue;
-        float d7 = (T->grid[i] / 10.0f + 1.0f) / 2.0f;
-        T->grid[i] = d7;
-        cls[i] |= d7 < 0.0f ? D_MIN : (d7 > 1.0f ? D_MAX : D_MIN | D_MAX);
-    }
-    memset(T->acc, 0, sizeof T->acc);
-    if (need_ranges(cls, D_MIN, rng))
-        for (int o = 0; o < 16; o++) noise3_octave(&oc_min[o], o, bx, bz, SC_LIMIT, SC_LIMIT, T->acc, cls, D_MIN, rng, 0);
-    for (int i = 0; i < 825; i++) {
-        int k = cls[i] & (D_MIN | D_MAX);
-        if (k == (D_MIN | D_MAX)) T->acc[i] *= 1.0f - T->grid[i];
-        if (k == D_MAX) T->grid[i] = 1.0f;
-    }
-    if (need_ranges(cls, D_MAX, rng))
-        for (int o = 0; o < 16; o++) noise3_octave(&oc_max[o], o, bx, bz, SC_LIMIT, SC_LIMIT, T->acc, cls, D_MAX, rng, T->grid);
-    /* density (decided points get +-1: only their sign matters) */
-    for (int i = 0; i < 825; i++) {
-        int j2 = i % 33;
-        if (!(cls[i] & D_NEED)) {
-            T->grid[i] = cls[i] & D_SOLID ? 1.0f : -1.0f;
-            continue;
-        }
-        float d8 = T->acc[i] / 512.0f - dens_offset(j2, colD3[i / 33], colD2[i / 33]);
-        if (j2 > 29) {
-            float d9 = (float)(j2 - 29) / 3.0f;
-            d8 = d8 * (1.0f - d9) + -10.0f * d9;
-        }
-        T->grid[i] = d8;
-    }
-}
-
-/* surface depth noise (NoiseGenerator3, 4 octaves) for chunk -> U.t.surf[z*16+x] */
-static void chunk_surface_noise(int cx, int cz) {
-    TerrainScratch *T = &U.t;
-    i64 off[3];
-    memset(T->surf, 0, sizeof T->surf);
-    for (int o = 0; o < 4; o++) {
-        perm_build(oc_surf[o].st, T->perm, off);
-        /* coordinate = (X + i) * 0.0625 * 2^-o + offset */
-        int sh = 4 + o;
-        float amp = 0.55f * (float)(1 << o);
-        /* offsets b (x) = off[0], c (z) = off[1] in Q32 */
-        i32 bxi = (i32)(off[0] >> 32), bzi = (i32)(off[1] >> 32);
-        float bxf = (float)(u32)off[0] * (1.0f / 4294967296.0f), bzf = (float)(u32)off[1] * (1.0f / 4294967296.0f);
-        float scale = 1.0f / (float)(1 << sh);
-        for (int j = 0; j < 16; j++) {
-            int Z = cz * 16 + j;
-            i32 zi = (Z >> sh) + bzi;
-            float zf = (float)(Z & ((1 << sh) - 1)) * scale + bzf;
-            for (int i = 0; i < 16; i++) {
-                int X = cx * 16 + i;
-                i32 xi = (X >> sh) + bxi;
-                float xf = (float)(X & ((1 << sh) - 1)) * scale + bxf;
-                T->surf[j * 16 + i] += simplex2(T->perm, xi, xf, zi, zf) * amp;
-            }
-        }
-    }
-}
-
-/* ---- surface builders (BiomeBase.b and the overrides) ---- */
-
-/* Column summary of the undecorated, cave-less terrain, in 2 bytes. Below the sea a column
- * ends in water, so a column whose highest block is solid has it at y >= 62, and a column
- * whose highest block is liquid (water, ice, or water under a lily pad) has it at y = 62
- * with its floor (highest solid block below) at y <= 61. Hence:
- *   y >= 62: solid top at y; c = top block code << 4 | filler depth (non-stone blocks below)
- *   y <= 61: liquid top at 62, floor at y; c = liquid kind */
-typedef struct {
-    uint8_t y, c;
-} ColSum;
-static const uint8_t SUM_TOPS[16] = {B_STONE, B_GRASS, B_COARSE_DIRT, B_PODZOL, B_SAND, B_RED_SAND, B_GRAVEL, B_SNOW,
-                                     B_MYCELIUM, B_HARDENED_CLAY, B_STAINED_CLAY_WHITE, B_STAINED_CLAY_ORANGE,
-                                     B_STAINED_CLAY_YELLOW, B_STAINED_CLAY_BROWN, B_STAINED_CLAY_RED,
-                                     B_STAINED_CLAY_SILVER};
-static const uint8_t SUM_LIQ[4] = {B_WATER, B_ICE, B_LILY_PAD, B_LAVA};
-static unsigned sum_odd; /* columns the encoding could not hold exactly (tests expect 0) */
-
-INLINE int cs_top(const ColSum *s) { return s->y < 62 ? 62 : s->y; }
-/* the top block; B_LILY_PAD means water at the top with a lily pad above */
-INLINE uint8_t cs_blk(const ColSum *s) { return s->y < 62 ? SUM_LIQ[s->c & 3] : SUM_TOPS[s->c >> 4]; }
-
-/* one step of BiomeBase.b's loop at height y (no bedrock); returns 1 if it needs a sandstone
- * draw (then the caller draws and calls sand_after) */
-typedef struct {
-    uint8_t top0, fill0, top, fill;
-    int l, i1;
-    float temp;
-} SurfState;
-
-INLINE int surf_step(SurfState *s, uint8_t *col, int y) {
-    uint8_t blk = col[y];
-    if (blk == B_AIR) {
-        s->l = -1;
-        return 0;
-    }
-    if (blk != B_STONE) return 0;
-    if (s->l == -1) {
-        if (s->i1 <= 0) {
-            s->top = B_AIR;
-            s->fill = B_STONE;
-        } else if (y >= SEA - 4 && y <= SEA + 1) {
-            s->top = s->top0;
-            s->fill = s->fill0;
-        }
-        if (y < SEA && s->top == B_AIR) s->top = s->temp < 0.15f ? B_ICE : B_WATER;
-        s->l = s->i1;
-        if (y >= SEA - 1) {
-            col[y] = s->top;
-        } else if (y < SEA - 7 - s->i1) {
-            s->top = B_AIR;
-            s->fill = B_STONE;
-            col[y] = B_GRAVEL;
-        } else {
-            col[y] = s->fill;
-        }
-    } else if (s->l > 0) {
-        --s->l;
-        col[y] = s->fill;
-        if (s->l == 0 && (s->fill == B_SAND || s->fill == B_RED_SAND)) return 1;
-    }
-    return 0;
-}
-
-/* highest non-air y of the column being built (column_density's result) */
-static int col_top;
-
-HOT static void build_default(uint8_t *col, const Biome *b, JRand *r, float noise, uint8_t top0, uint8_t fill0) {
-    SurfState s;
-    s.top0 = s.top = top0;
-    s.fill0 = s.fill = fill0;
-    s.l = -1;
-    s.temp = b->temp;
-    s.i1 = (int)(noise / 3.0f + 3.0f + jr_doublef(r) * 0.25f);
-    /* every y > 4 draws one bedrock nextInt(5) that is not used: count them, jump over them
-     * before a draw that matters. Above the top all is air (nothing to do); in stone with no
-     * filler left and in water, nothing happens either. */
-    int y = col_top > 4 ? col_top : 4;
-    unsigned skip = (unsigned)(255 - y);
-    for (; y >= 0; y--) {
-        if (y <= 4) {
-            jr_skip(r, skip);
-            skip = 0;
-            if (y <= jr_int_i(r, 5)) {
-                col[y] = B_BEDROCK;
-                continue;
-            }
-        } else {
-            skip++;
-            uint8_t blk = col[y];
-            if ((blk == B_STONE && s.l == 0) || blk == B_WATER) {
-                int y2 = y - 1;
-                /* 4 blocks at a time (col is word aligned) */
-                u32 w4 = blk * 0x01010101u, word;
-                while (y2 > 7 && (y2 & 3) != 3 && col[y2] == blk) y2--;
-                if ((y2 & 3) == 3)
-                    while (y2 > 7 && (memcpy(&word, col + y2 - 3, 4), word == w4)) y2 -= 4;
-                while (y2 > 4 && col[y2] == blk) y2--;
-                skip += (unsigned)(y - 1 - y2);
-                y = y2 + 1;
-                continue;
-            }
-        }
-        if (surf_step(&s, col, y)) {
-            jr_skip(r, skip);
-            skip = 0;
-            s.l = jr_int_i(r, 4) + (y - SEA > 0 ? y - SEA : 0);
-            s.fill = s.fill == B_RED_SAND ? B_RED_SANDSTONE : B_SANDSTONE;
-        }
-    }
-}
-
-/* BiomeMesa band at (x, y): aD[(y + round(aH(x/512, x/512) * 2) + 64) % 64] */
-static uint8_t mesa_band(int x, int y) {
-    const uint8_t *P = U.t.mperm[0];
-    float xf = (float)(x & 511) / 512.0f;
-    float v = simplex2(P, x >> 9, xf, x >> 9, xf) * 2.0f;
-    int l = (int)floor_f(v + 0.5f);
-    return mesa_bands[(y + l + 64) % 64];
-}
-
-static void mesa_prepare(void) {
-    if (U.t.mesa_ready) return;
-    for (int i = 0; i < 6; i++) perm_build(oc_mesa[i].st, U.t.mperm[i], 0);
-    U.t.mesa_ready = 1;
-}
-
-/* NoiseGenerator3.a(x, z) (single point, no offsets) over n octaves with perms P[o] */
-static float simplex_oct_point(int n, uint8_t (*P)[256], i32 xi, float xf, i32 zi, float zf, int shift0) {
-    /* coordinates (xi + xf) * 2^-shift0 * 2^-o */
-    float sum = 0;
-    for (int o = 0; o < n; o++) {
-        int sh = shift0 + o;
-        /* split (xi + xf) / 2^sh into integer + fraction exactly enough */
-        i32 xa = xi >> sh, za = zi >> sh;
-        float xr = ((float)(xi & ((1 << sh) - 1)) + xf) / (float)(1 << sh);
-        float zr = ((float)(zi & ((1 << sh) - 1)) + zf) / (float)(1 << sh);
-        sum += simplex2(P[o], xa, xr, za, zr) * (float)(1 << o);
-    }
-    return sum;
-}
-
-static void build_mesa(uint8_t *col, const Biome *b, JRand *r, int bx, int bz, float noise) {
-    mesa_prepare();
-    float d1 = 0.0f;
-    if (b->mode & 1) { /* bryce */
-        int k = (bx & -16) + (bz & 15), l = (bz & -16) + (bx & 15);
-        /* aF: 4 octaves at (k*0.25, l*0.25): perms mperm[0..3] (aF[0] == aH) */
-        uint8_t(*P)[256] = U.t.mperm;
-        float d2 = simplex_oct_point(4, P, k, 0.0f, l, 0.0f, 2);
-        float an = noise < 0 ? -noise : noise;
-        if (an < d2) d2 = an;
-        if (d2 > 0.0f) {
-            float d4 = simplex_oct_point(1, &U.t.mperm[4], k, 0.0f, l, 0.0f, 9);
-            if (d4 < 0) d4 = -d4;
-            d1 = d2 * d2 * 2.5f;
-            float c = d4 * 50.0f;
-            int ci = (int)c;
-            float d5 = (float)(c > (float)ci ? ci + 1 : ci) + 14.0f;
-            if (d1 > d5) d1 = d5;
-            d1 += 64.0f;
-        }
-    }
-    int d1i = (int)d1;
-    uint8_t top = B_STAINED_CLAY_WHITE, fill = b->filler;
-    int j1 = (int)(noise / 3.0f + 3.0f + jr_doublef(r) * 0.25f);
-    /* Math.cos(d0 / 3.0 * pi) > 0 */
-    float ph = noise / 3.0f;
-    float m = ph - 2.0f * (float)floor_f(ph * 0.5f); /* in [0, 2) */
-    int flag = (m < 0.5f || m > 1.5f);
-    int k1 = -1, flag1 = 0;
-    unsigned skip = 0;
-    for (int y = 255; y >= 0; y--) {
-        if (col[y] == B_AIR && y < d1i) col[y] = B_STONE;
-        if (y <= 4) {
-            jr_skip(r, skip);
-            skip = 0;
-            if (y <= jr_int(r, 5)) {
-                col[y] = B_BEDROCK;
-                continue;
-            }
-        } else {
-            skip++;
-        }
-        uint8_t blk = col[y];
-        if (blk == B_AIR) {
-            k1 = -1;
-        } else if (blk == B_STONE) {
-            if (k1 == -1) {
-                flag1 = 0;
-                if (j1 <= 0) {
-                    top = B_AIR;
-                    fill = B_STONE;
-                } else if (y >= SEA - 4 && y <= SEA + 1) {
-                    top = B_STAINED_CLAY_WHITE;
-                    fill = b->filler;
-                }
-                if (y < SEA && top == B_AIR) top = B_WATER;
-                k1 = j1 + (y - SEA > 0 ? y - SEA : 0);
-                if (y >= SEA - 1) {
-                    if ((b->mode & 2) && y > 86 + j1 * 2) {
-                        col[y] = flag ? B_COARSE_DIRT : B_GRASS;
-                    } else if (y > SEA + 3 + j1) {
-                        col[y] = (y >= 64 && y <= 127) ? (flag ? B_HARDENED_CLAY : mesa_band(bx, y)) : B_STAINED_CLAY_ORANGE;
-                    } else {
-                        col[y] = b->top;
-                        flag1 = 1;
-                    }
-                } else {
-                    col[y] = fill == B_STAINED_CLAY_WHITE ? B_STAINED_CLAY_ORANGE : fill;
-                }
-            } else if (k1 > 0) {
-                --k1;
-                col[y] = flag1 ? B_STAINED_CLAY_ORANGE : mesa_band(bx, y);
-            }
-        }
-    }
-    (void)top;
-}
-
-static void build_surface(uint8_t *col, const Biome *b, JRand *r, int bx, int bz, float noise) {
-    uint8_t top = b->top, fill = b->filler;
-    switch (b->surf) {
-    case S_HILLS:
-        top = B_GRASS;
-        fill = B_DIRT;
-        if ((noise < -1.0f || noise > 2.0f) && b->mode == 2) top = fill = B_GRAVEL;
-        else if (noise > 1.0f && b->mode != 1) top = fill = B_STONE;
-        break;
-    case S_TAIGA_MEGA:
-        top = B_GRASS;
-        fill = B_DIRT;
-        if (noise > 1.75f) top = B_COARSE_DIRT;
-        else if (noise > -0.95f) top = B_PODZOL;
-        break;
-    case S_SAVANNA_M:
-        top = B_GRASS;
-        fill = B_DIRT;
-        if (noise > 1.75f) top = fill = B_STONE;
-        else if (noise > -0.5f) top = B_COARSE_DIRT;
-        break;
-    case S_SWAMP: {
-        /* Java: d1 = af.a(x * 0.25, z * 0.25) > 0, then < 0.12 for a lily pad. In float, the
-         * value is recomputed in double when it is too close to either threshold; for a float,
-         * "< 0.12" (the double) is "<= 0.12f". */
-        float f1 = simplex2(perm_grass, bx >> 2, (float)(bx & 3) * 0.25f, bz >> 2, (float)(bz & 3) * 0.25f);
-        int pos = f1 > 0.0f, lily = f1 <= 0.12f;
-        if ((f1 > -1e-5f && f1 < 1e-5f) || (f1 > 0.12f - 1e-5f && f1 < 0.12f + 1e-5f)) {
-            double d1 = simplex2_d(perm_grass, (double)bx / 4, (double)bz / 4);
-            pos = d1 > 0;
-            lily = d1 < (double)12 / 100; /* 0.12 */
-        }
-        if (pos) {
-            for (int y = col_top; y >= 0; y--)
-                if (col[y] != B_AIR) {
-                    if (y == 62 && col[y] != B_WATER) {
-                        col[y] = B_WATER;
-                        if (lily) col[y + 1] = B_LILY_PAD;
-                    }
-                    break;
-                }
-        }
-        break;
-    }
-    case S_MESA:
-        build_mesa(col, b, r, bx, bz, noise);
-        col_top = 255; /* bryce pillars rise above the terrain */
-        return;
-    }
-    build_default(col, b, r, noise, top, fill);
-}
-
-/* ---- per-chunk terrain pipeline ---- */
-
-INLINE int is_liquid_top(int blk) { return blk == B_WATER || blk == B_ICE || blk == B_LILY_PAD || blk == B_LAVA; }
-
-/* column summary of the undecorated, cave-less terrain (see ColSum) */
-HOT static void column_summary(const uint8_t *col, ColSum *s) {
-    int y = col_top + 2 < 255 ? col_top + 2 : 255; /* builders add at most a lily pad above it */
-    while (y > 0 && col[y] == B_AIR) y--;
-    int lily = 0;
-    if (col[y] == B_LILY_PAD) {
-        lily = 1;
-        y--;
-    }
-    uint8_t blk = lily ? B_LILY_PAD : col[y];
-    if (is_liquid_top(blk)) {
-        int f = y;
-        while (f > 0 && (col[f] == B_WATER || col[f] == B_ICE || col[f] == B_LAVA || col[f] == B_AIR)) f--;
-        int k = blk == B_WATER ? 0 : blk == B_ICE ? 1 : blk == B_LILY_PAD ? 2 : 3;
-        if (y != 62 || f > 61) {
-            sum_odd++;
-            if (f > 61) f = 61;
-        }
-        s->y = (uint8_t)f;
-        s->c = (uint8_t)k;
-    } else {
-        int d = 0;
-        for (int k = y - 1; k > 0 && d < 15; k--, d++) {
-            uint8_t b = col[k];
-            if (b == B_STONE || b == B_AIR || b == B_BEDROCK || b == B_WATER) break;
-        }
-        int code = 0;
-        while (code < 16 && SUM_TOPS[code] != blk) code++;
-        if (code == 16 || y < 62) {
-            sum_odd++;
-            if (code == 16) code = 0;
-            if (y < 62) y = 62;
-        }
-        s->y = (uint8_t)y;
-        s->c = (uint8_t)(code << 4 | d);
-    }
-}
-
-/* Sign classes of the density grid for column_density: for each of the 4 x 4 grid cells and
- * each level, 1 if its four corners are > 0, 2 if they are all <= 0, else 0 (kept in U.t.cls,
- * free after chunk_density). Bilinear values between corners of one sign keep it. */
-static void column_signs(void) {
-    const float *g = U.t.grid;
-    uint8_t *sg = U.t.cls;
-    for (int gx = 0; gx < 4; gx++)
-        for (int gz = 0; gz < 4; gz++) {
-            const float *c00 = g + (gx * 5 + gz) * 33, *c01 = c00 + 33, *c10 = c00 + 165, *c11 = c00 + 198;
-            uint8_t *o = sg + (gx * 4 + gz) * 33;
-            for (int k = 0; k < 33; k++) {
-                int pos = (c00[k] > 0.0f) + (c01[k] > 0.0f) + (c10[k] > 0.0f) + (c11[k] > 0.0f);
-                o[k] = (uint8_t)(pos == 4 ? 1 : pos == 0 ? 2 : 0);
-            }
-        }
-}
-
-/* Blocks of column (x, z) from the density grid: stone, water below the sea, air. Cells whose
- * two ends have the same sign are filled at once (the interpolated values between them keep
- * it: their distance to 0 is at least an eighth of an end's, far above rounding); levels are
- * interpolated only for the other cells. Returns the highest non-air y. */
-HOT static int column_density(int x, int z, uint8_t *col) {
-    const float *g = U.t.grid;
-    int gx = x >> 2, gz = z >> 2;
-    float fx = (float)(x & 3) * 0.25f, fz = (float)(z & 3) * 0.25f;
-    const float *c00 = g + (gx * 5 + gz) * 33, *c01 = g + (gx * 5 + gz + 1) * 33;
-    const float *c10 = g + ((gx + 1) * 5 + gz) * 33, *c11 = g + ((gx + 1) * 5 + gz + 1) * 33;
-    const uint8_t *sg = U.t.cls + (gx * 4 + gz) * 33;
-    float v0 = 0.0f, v1;
-    int have = -1; /* level whose value v0 holds */
-    int top = 0;
-    for (int k2 = 0; k2 < 32; k2++) {
-        int y = k2 * 8;
-        if (sg[k2] == 1 && sg[k2 + 1] == 1) {
-            memset(col + y, B_STONE, 8);
-            top = y + 7;
-            continue;
-        }
-        if (sg[k2] == 2 && sg[k2 + 1] == 2) {
-            if (y >= SEA) {
-                memset(col + y, B_AIR, 8);
-                continue;
-            }
-            if (y + 8 <= SEA) {
-                memset(col + y, B_WATER, 8);
-                top = y + 7;
-                continue;
-            }
-            for (int l2 = 0; l2 < 8; l2++, y++) col[y] = y < SEA ? B_WATER : B_AIR;
-            top = SEA - 1;
-            continue;
-        }
-        if (have != k2) {
-            float a = c00[k2] + (c10[k2] - c00[k2]) * fx;
-            float b = c01[k2] + (c11[k2] - c01[k2]) * fx;
-            v0 = a + (b - a) * fz;
-        }
-        {
-            int k = k2 + 1;
-            float a = c00[k] + (c10[k] - c00[k]) * fx;
-            float b = c01[k] + (c11[k] - c01[k]) * fx;
-            v1 = a + (b - a) * fz;
-        }
-        float base = v0, step = (v1 - v0) * 0.125f;
-        v0 = v1;
-        have = k2 + 1;
-        if (base > 0.0f && v1 > 0.0f) {
-            memset(col + y, B_STONE, 8);
-            top = y + 7;
-            continue;
-        }
-        if (base <= 0.0f && v1 <= 0.0f) {
-            if (y >= SEA) {
-                memset(col + y, B_AIR, 8);
-                continue;
-            }
-            if (y + 8 <= SEA) {
-                memset(col + y, B_WATER, 8);
-                top = y + 7;
-                continue;
-            }
-        }
-        for (int l2 = 0; l2 < 8; l2++, y++) {
-            float val = base + (float)l2 * step;
-            col[y] = val > 0.0f ? B_STONE : (y < SEA ? B_WATER : B_AIR);
-            if (col[y] != B_AIR) top = y;
-        }
-    }
-    return top;
-}
-
-/* Terrain and surface of chunk (cx, cz) before caves. Rows y0..y0+h-1 go to out (if out),
- * the column summaries to sum (if sum). Also leaves the biomes in cb4/cb16. */
-HOT static void chunk_terrain(int cx, int cz, uint8_t *out, int y0, int h, ColSum *sum) {
-    chunk_biomes(cx, cz);
-    U.t.mesa_ready = 0;
-    chunk_density(cx, cz);
-    column_signs();
-    chunk_surface_noise(cx, cz);
-    JRand r;
-    jr_seed(&r, (i64)((u64)(i64)cx * 341873128712ULL + (u64)(i64)cz * 132897987541ULL));
-    uint8_t *col = U.t.col;
-    for (int z = 0; z < 16; z++)
-        for (int x = 0; x < 16; x++) {
-            col_top = column_density(x, z, col);
-            const Biome *b = bio(cb16[x + z * 16]);
-            build_surface(col, b, &r, cx * 16 + z, cz * 16 + x, U.t.surf[z * 16 + x]);
-            if (sum) column_summary(col, &sum[x + z * 16]);
-            if (out)
-                for (int y = 0; y < h; y++) out[y * 256 + z * 16 + x] = col[y0 + y];
-        }
-}
-
-/* ======================================================================== */
-/* Block properties                                                          */
-/* ======================================================================== */
-
-/* flags per block id */
-enum {
-    BF_OPAQUE = 1,    /* light opacity != 0: counts in the height map */
-    BF_SOLID = 2,     /* Material.isSolid() */
-    BF_BUILD = 4,     /* Material.isBuildable() */
-    BF_LEAVES = 8,
-    BF_LOG = 16,
-    BF_PLANT = 32,    /* REPLACEABLE_PLANT or PLANT material (flowers, grass, saplings...) */
-    BF_CUBE = 64,     /* Block.o(): opaque full cube (leaves included on the server) */
-    BF_LIQUID = 128,
-    BF_RPLANT = 256   /* Material.REPLACEABLE_PLANT (tall grass, ferns, double plants, vines, dead bush) */
-};
-static uint16_t bflags[256];
-
-static void bflags_init(void) {
-    for (int i = 0; i < 256; i++) bflags[i] = BF_OPAQUE | BF_SOLID | BF_BUILD | BF_CUBE;
-    bflags[B_AIR] = 0;
-    bflags[B_WATER] = bflags[B_FLOWING_WATER] = BF_OPAQUE | BF_LIQUID;
-    bflags[B_LAVA] = bflags[B_FLOWING_LAVA] = BF_LIQUID;
-    static const uint8_t leaves[] = {B_LEAVES_OAK, B_LEAVES_SPRUCE, B_LEAVES_BIRCH, B_LEAVES_JUNGLE, B_LEAVES_ACACIA,
-                                     B_LEAVES_DARK_OAK};
-    for (unsigned i = 0; i < sizeof leaves; i++) bflags[leaves[i]] = BF_OPAQUE | BF_SOLID | BF_BUILD | BF_LEAVES | BF_CUBE;
-    static const uint8_t logs[] = {B_LOG_OAK, B_LOG_OAK_X, B_LOG_OAK_Z, B_LOG_OAK_BARK, B_LOG_SPRUCE, B_LOG_SPRUCE_X,
-                                   B_LOG_SPRUCE_Z, B_LOG_SPRUCE_BARK, B_LOG_BIRCH, B_LOG_BIRCH_X, B_LOG_BIRCH_Z,
-                                   B_LOG_BIRCH_BARK, B_LOG_JUNGLE, B_LOG_JUNGLE_X, B_LOG_JUNGLE_Z, B_LOG_JUNGLE_BARK,
-                                   B_LOG_ACACIA, B_LOG_ACACIA_X, B_LOG_ACACIA_Z, B_LOG_ACACIA_BARK, B_LOG_DARK_OAK,
-                                   B_LOG_DARK_OAK_X, B_LOG_DARK_OAK_Z, B_LOG_DARK_OAK_BARK};
-    for (unsigned i = 0; i < sizeof logs; i++) bflags[logs[i]] |= BF_LOG;
-    static const uint8_t plants[] = {B_SAPLING_OAK, B_SAPLING_SPRUCE, B_SAPLING_BIRCH, B_SAPLING_JUNGLE,
-                                     B_SAPLING_ACACIA, B_SAPLING_DARK_OAK, B_DEAD_SHRUB, B_TALL_GRASS, B_FERN,
-                                     B_DEAD_BUSH, B_DANDELION, B_POPPY, B_BLUE_ORCHID, B_ALLIUM, B_AZURE_BLUET,
-                                     B_RED_TULIP, B_ORANGE_TULIP, B_WHITE_TULIP, B_PINK_TULIP, B_OXEYE_DAISY,
-                                     B_BROWN_MUSHROOM, B_RED_MUSHROOM, B_SUGAR_CANE, B_VINE, B_LILY_PAD,
-                                     B_SUNFLOWER_LOWER, B_SUNFLOWER_UPPER, B_LILAC_LOWER, B_LILAC_UPPER,
-                                     B_DOUBLE_GRASS_LOWER, B_DOUBLE_GRASS_UPPER, B_LARGE_FERN_LOWER,
-                                     B_LARGE_FERN_UPPER, B_ROSE_BUSH_LOWER, B_ROSE_BUSH_UPPER, B_PEONY_LOWER,
-                                     B_PEONY_UPPER};
-    for (unsigned i = 0; i < sizeof plants; i++) bflags[plants[i]] = BF_PLANT;
-    static const uint8_t rplants[] = {B_DEAD_SHRUB, B_TALL_GRASS, B_FERN, B_DEAD_BUSH, B_VINE, B_SUNFLOWER_LOWER,
-                                      B_SUNFLOWER_UPPER, B_LILAC_LOWER, B_LILAC_UPPER, B_DOUBLE_GRASS_LOWER,
-                                      B_DOUBLE_GRASS_UPPER, B_LARGE_FERN_LOWER, B_LARGE_FERN_UPPER, B_ROSE_BUSH_LOWER,
-                                      B_ROSE_BUSH_UPPER, B_PEONY_LOWER, B_PEONY_UPPER};
-    for (unsigned i = 0; i < sizeof rplants; i++) bflags[rplants[i]] |= BF_RPLANT;
-    bflags[B_SNOW_LAYER] = 0; /* not solid, opacity 0 */
-    bflags[B_ICE] = BF_OPAQUE | BF_SOLID | BF_BUILD;
-    bflags[B_PACKED_ICE] = BF_OPAQUE | BF_SOLID | BF_BUILD | BF_CUBE;
-    bflags[B_CACTUS] = BF_SOLID | BF_BUILD;
-    bflags[B_COBWEB] = BF_OPAQUE;
-    bflags[B_MOB_SPAWNER] = BF_SOLID | BF_BUILD;
-    bflags[B_CHEST] = BF_SOLID | BF_BUILD;
-    bflags[B_GLASS] = BF_SOLID | BF_BUILD;
-    bflags[B_PUMPKIN] = BF_OPAQUE | BF_SOLID | BF_BUILD | BF_CUBE;
-    bflags[B_SANDSTONE_SLAB] = BF_SOLID | BF_BUILD;
-    bflags[B_STONE_SLAB] = BF_SOLID | BF_BUILD;
-}
-
-#define IS_AIR(b) ((b) == B_AIR)
-#define IS_LEAVES(b) (bflags[b] & BF_LEAVES)
-#define IS_LOG(b) (bflags[b] & BF_LOG)
-#define IS_SOLID(b) (bflags[b] & BF_SOLID)
-#define IS_BUILD(b) (bflags[b] & BF_BUILD)
-#define IS_OPAQUE(b) (bflags[b] & BF_OPAQUE)
-#define IS_CUBE(b) (bflags[b] & BF_CUBE)
-#define IS_PLANT(b) (bflags[b] & BF_PLANT)
-#define IS_RPLANT(b) (bflags[b] & BF_RPLANT)
-#define IS_WATER(b) ((b) == B_WATER || (b) == B_FLOWING_WATER)
-#define IS_DIRTISH(b) ((b) == B_DIRT || (b) == B_COARSE_DIRT || (b) == B_PODZOL)
-#define IS_CLAY(b) ((b) == B_HARDENED_CLAY || ((b) >= B_STAINED_CLAY_WHITE && (b) <= B_STAINED_CLAY_BLACK))
-
-/* filler below a top block (for summary-based reads) */
-static uint8_t filler_of(uint8_t top) {
-    switch (top) {
-    case B_SAND: return B_SAND;
-    case B_RED_SAND: return B_STAINED_CLAY_ORANGE;
-    case B_GRAVEL: return B_GRAVEL;
-    case B_STONE: return B_STONE;
-    default:
-        if (IS_CLAY(top)) return B_STAINED_CLAY_ORANGE;
-        return B_DIRT;
-    }
-}
-
-/* block of a column from its summary (no caves, no decoration) */
-HOT static uint8_t sum_block(const ColSum *s, int y) {
-    if (y < 0) return B_BEDROCK;
-    if (s->y < 62) { /* liquid top at 62, floor at s->y */
-        uint8_t blk = SUM_LIQ[s->c & 3];
-        if (y > 62) return y == 63 && blk == B_LILY_PAD ? B_LILY_PAD : B_AIR;
-        if (y == 0) return B_BEDROCK;
-        if (y == 62) return blk == B_LILY_PAD ? B_WATER : blk;
-        if (y > s->y) return blk == B_LAVA ? B_LAVA : B_WATER;
-        if (y == s->y) return B_SAND; /* floor (sand, gravel, dirt or clay: all buildable) */
-        return B_STONE;
-    }
-    if (y > s->y) return B_AIR;
-    if (y == 0) return B_BEDROCK;
-    uint8_t blk = SUM_TOPS[s->c >> 4];
-    if (y == s->y) return blk;
-    if (y >= s->y - (s->c & 15)) return filler_of(blk);
-    return B_STONE;
-}
-
-/* ======================================================================== */
-/* Caves and ravines (WorldGenCaves, WorldGenCanyon)                         */
-/* ======================================================================== */
-
-/* A carve target: one chunk (tcx, tcz) and, inside it, the region we care about.
- * mode CAVE_OUT: the chunk being generated (blocks in out / its summary).
- * mode CAVE_MASK: a query box (world coords) whose carved blocks are marked in a bitmap;
- *   blocks come from the summary of the target chunk. */
-enum { CAVE_OUT, CAVE_MASK };
-
-typedef struct {
-    int mode;
-    int tcx, tcz;
-    const ColSum *sum;  /* summary of the target chunk */
-    /* CAVE_OUT */
-    uint8_t *out;
-    int y0, h;
-    /* CAVE_MASK: box [bx0,bx1) x [by0,by1) x [bz0,bz1) in world coords, bitmap of carved cells */
-    int bx0, bx1, by0, by1, bz0, bz1;
-    uint8_t *mask;
-    /* region of the chunk that matters (chunk-local, inclusive-exclusive), for early skips */
-    int rx0, rx1, rz0, rz1, ry0, ry1;
-} CaveCtx;
-
-static CaveCtx *cv;
-static uint8_t c_b16[256];  /* biomes of the chunk being generated */
-
-INLINE int mask_index(int X, int Y, int Z) {
-    return ((Y - cv->by0) * (cv->bz1 - cv->bz0) + (Z - cv->bz0)) * (cv->bx1 - cv->bx0) + (X - cv->bx0);
-}
-
-/* block at chunk-local (x, y, z) of the target, as the carver sees it */
-HOT static uint8_t cv_get(int x, int y, int z) {
-    if (y < 0 || y > 255) return B_AIR;
-    if (cv->mode == CAVE_OUT) {
-        if (y >= cv->y0 && y < cv->y0 + cv->h) return cv->out[(y - cv->y0) * 256 + z * 16 + x];
-        return sum_block(&cv->sum[x + z * 16], y);
-    }
-    int X = cv->tcx * 16 + x, Z = cv->tcz * 16 + z;
-    if (X >= cv->bx0 && X < cv->bx1 && y >= cv->by0 && y < cv->by1 && Z >= cv->bz0 && Z < cv->bz1) {
-        uint8_t m = cv->mask[mask_index(X, y, Z)];
-        if (m) return (uint8_t)(m - 1); /* mask stores block id + 1, 0 = untouched */
-    }
-    return sum_block(&cv->sum[x + z * 16], y);
-}
-
-/* chunk being generated: highest non-air y of each column (whole height, after caves and
- * decoration so far) and highest solid-or-liquid y (precipitation height - 1) */
-static uint8_t c_top[256], c_sl[256];
-
-static int cave_track_on;
-static void cave_track(int x, int y, int z, uint8_t b);
-/* carving the chunk being generated: the lowest row that can still matter (the slab's, or a
- * column's tracked top / surface, which only go down), checked before walking a tunnel */
-static int crep_dyn, crep_lo;
-
-HOT static void cv_set(int x, int y, int z, uint8_t b) {
-    if (y < 0 || y > 255) return;
-    if (cv->mode == CAVE_OUT) {
-        if (y >= cv->y0 && y < cv->y0 + cv->h) cv->out[(y - cv->y0) * 256 + z * 16 + x] = b;
-        if (cave_track_on) cave_track(x, y, z, b);
-        return;
-    }
-    int X = cv->tcx * 16 + x, Z = cv->tcz * 16 + z;
-    if (X >= cv->bx0 && X < cv->bx1 && y >= cv->by0 && y < cv->by1 && Z >= cv->bz0 && Z < cv->bz1)
-        cv->mask[mask_index(X, y, Z)] = (uint8_t)(b + 1);
-}
-
-/* position in 32.32 fixed point (world coordinates) */
-typedef i64 Q32;
-#define Q32_ONE (1LL << 32)
-INLINE Q32 q32_of_float(float v) { return f2i64_scaled(v, 32); }
-INLINE float q32_to_float(Q32 v) { return i64_to_f_scaled(v, 32); }
-INLINE int q32_floor(Q32 v) { return (int)(v >> 32); }
-
-/* One block of a carve step: the body of WorldGenCaves / WorldGenCanyon's innermost loop at
- * chunk-local (x, y, z), with h2 the horizontal part of the ellipsoid. Returns flag3 (a grass
- * block was met above in this column). */
-INLINE int carve_block(int x, int y, int z, float h2, Q32 py, float d7, int canyon, int flag3) {
-    float d14 = q32_to_float(SHL(y - 1, 32) + (Q32_ONE >> 1) - py) / d7;
-    if (canyon) {
-        if (!(h2 * canyon_w[y - 1] + d14 * d14 / 6.0f < 1.0f)) return flag3;
-        uint8_t b = cv_get(x, y, z);
-        if (b == B_GRASS) flag3 = 1;
-        if (b == B_STONE || IS_DIRTISH(b) || b == B_GRASS) {
-            if (y - 1 < 10) {
-                cv_set(x, y, z, B_LAVA);
-            } else {
-                cv_set(x, y, z, B_AIR);
-                if (flag3 && IS_DIRTISH(cv_get(x, y - 1, z)))
-                    cv_set(x, y - 1, z, bio(cv->mode == CAVE_OUT ? c_b16[x + z * 16] : BI_PLAINS)->top);
-            }
-        }
-        return flag3;
-    }
-    if (!(d14 > -0.7f && h2 + d14 * d14 < 1.0f)) return flag3;
-    uint8_t b = cv_get(x, y, z), up = cv_get(x, y + 1, z);
-    if (b == B_GRASS || b == B_MYCELIUM) flag3 = 1;
-    int carvable = b == B_STONE || IS_DIRTISH(b) || b == B_GRASS || IS_CLAY(b) || b == B_SANDSTONE ||
-                   b == B_RED_SANDSTONE || b == B_MYCELIUM || b == B_SNOW_LAYER ||
-                   ((b == B_SAND || b == B_RED_SAND || b == B_GRAVEL) && !IS_WATER(up));
-    if (!carvable) return flag3;
-    if (y - 1 < 10) {
-        cv_set(x, y, z, B_LAVA);
-    } else {
-        cv_set(x, y, z, B_AIR);
-        if (up == B_SAND) cv_set(x, y + 1, z, B_SANDSTONE);
-        else if (up == B_RED_SAND) cv_set(x, y + 1, z, B_RED_SANDSTONE);
-        if (flag3 && IS_DIRTISH(cv_get(x, y - 1, z))) {
-            uint8_t t = bio(cv->mode == CAVE_OUT ? c_b16[x + z * 16] : BI_PLAINS)->top;
-            if (t == B_PODZOL || t == B_COARSE_DIRT) t = B_DIRT; /* ak.getBlock().getBlockData() */
-            cv_set(x, y - 1, z, t);
-        }
-    }
-    return flag3;
-}
-
-/* Is there water among blocks y of column (x, z) of the target chunk, for y in [a, b] (an
- * empty range when a > b)? Caves add no water and never carve it, so this is the terrain's:
- * in the slab of the chunk being generated from its blocks, elsewhere from the summary. */
-static int water_col(int x, int z, int a, int b) {
-    if (a < 0) a = 0;
-    if (b > 255) b = 255;
-    if (a > b) return 0;
-    const ColSum *s = &cv->sum[x + z * 16];
-    int wlo = 256, whi = -1; /* the summary's water: (floor, 62], or (floor, 61] under ice; none */
-    if (s->y < 62 && (s->c & 3) != 3) {
-        wlo = s->y + 1;
-        whi = (s->c & 3) == 1 ? 61 : 62;
-    }
-    if (cv->mode != CAVE_OUT) return a <= whi && b >= wlo;
-    int s0 = cv->y0, s1 = cv->y0 + cv->h - 1;
-    /* below and above the slab */
-    int lo = a, hi = b < s0 - 1 ? b : s0 - 1;
-    if (lo <= hi && hi >= wlo && lo <= whi) return 1;
-    lo = a > s1 + 1 ? a : s1 + 1, hi = b;
-    if (lo <= hi && hi >= wlo && lo <= whi) return 1;
-    /* in the slab */
-    lo = a > s0 ? a : s0, hi = b < s1 ? b : s1;
-    for (int y = lo; y <= hi; y++) {
-        uint8_t blk = cv->out[(y - s0) * 256 + z * 16 + x];
-        if (blk == B_WATER || blk == B_FLOWING_WATER) return 1;
-    }
-    return 0;
-}
-
-/* One carve step of a tunnel (cave or canyon) into the target chunk.
- * px,py,pz: centre; r6, r7: horizontal and vertical radii (Q32). Returns 0 when water aborts
- * the step (only rooms care: Java's room stops after its first unaborted step). */
-HOT static int cave_carve(Q32 px, Q32 py, Q32 pz, Q32 r6, Q32 r7, int canyon, int room) {
-    int j = cv->tcx, k = cv->tcz;
-    int l1 = q32_floor(px - r6) - j * 16 - 1, i2 = q32_floor(px + r6) - j * 16 + 1;
-    int j2 = q32_floor(py - r7) - 1, k2 = q32_floor(py + r7) + 1;
-    int l2 = q32_floor(pz - r6) - k * 16 - 1, i3 = q32_floor(pz + r6) - k * 16 + 1;
-    if (l1 < 0) l1 = 0;
-    if (i2 > 16) i2 = 16;
-    if (j2 < 1) j2 = 1;
-    if (k2 > 248) k2 = 248;
-    if (l2 < 0) l2 = 0;
-    if (i3 > 16) i3 = 16;
-    /* outside the region we care about the step changes nothing we keep: only a room needs
-     * to know whether water aborts it */
-    int outside = l1 >= cv->rx1 || i2 <= cv->rx0 || l2 >= cv->rz1 || i3 <= cv->rz0 || j2 >= cv->ry1 || k2 + 1 < cv->ry0;
-    if (outside && !room) return 1;
-    /* water check (shell of the box plus top and bottom layers): water aborts this step */
-    int out_mode = cv->mode == CAVE_OUT;
-    for (int x = l1; x < i2; x++)
-        for (int z = l2; z < i3; z++) {
-            int edge = x == l1 || x == i2 - 1 || z == l2 || z == i3 - 1;
-            if (edge ? water_col(x, z, j2 - 1, k2 + 1) : water_col(x, z, k2 + 1, k2 + 1) || water_col(x, z, j2 - 1, j2 - 1))
-                return 0;
-        }
-    if (outside) return 1;
-    float d6 = q32_to_float(r6), d7 = q32_to_float(r7);
-    /* Only the rows of the region (and the one above and below, which a carve can change from
-     * there) are carved; another visit only matters at the summary's grass top (it sets flag3:
-     * blocks out of the region are read from the summary) or, in the chunk being generated, at
-     * the column's tracked top / surface (c_top, c_sl). Columns out of a query box are skipped. */
-    int wlo = out_mode ? cv->y0 - 1 : cv->ry0 - 1, whi = out_mode ? cv->y0 + cv->h : cv->ry1;
-    int x0 = l1, x1 = i2, z0 = l2, z1 = i3;
-    if (!out_mode) {
-        if (x0 < cv->rx0) x0 = cv->rx0;
-        if (x1 > cv->rx1) x1 = cv->rx1;
-        if (z0 < cv->rz0) z0 = cv->rz0;
-        if (z1 > cv->rz1) z1 = cv->rz1;
-    }
-    for (int x = x0; x < x1; x++) {
-        float d12 = q32_to_float(SHL(j * 16 + x, 32) + (Q32_ONE >> 1) - px) / d6;
-        for (int z = z0; z < z1; z++) {
-            float d13 = q32_to_float(SHL(k * 16 + z, 32) + (Q32_ONE >> 1) - pz) / d6;
-            float h2 = d12 * d12 + d13 * d13;
-            if (h2 >= 1.0f) continue;
-            int flag3 = 0, i = z * 16 + x, gtop = -1, t1 = -1, t2 = -1;
-            uint8_t tb = cs_blk(&cv->sum[i]);
-            if (tb == B_GRASS || (!canyon && tb == B_MYCELIUM)) gtop = cs_top(&cv->sum[i]);
-            for (int y = k2; y > j2; --y) {
-                if (out_mode) t1 = c_top[i], t2 = c_sl[i];
-                if ((y < wlo || y > whi) && y != t1 && y != t2 && y != gtop) continue;
-                flag3 = carve_block(x, y, z, h2, py, d7, canyon, flag3);
-            }
-        }
-    }
-    return 1;
-}
-
-/* MapGenCaves' "cannot reach the chunk any more" test, d8^2 + d9^2 - d10^2 > d11^2, in float,
- * settled in double when the float result is too close to call (the positions are exact) */
-static int cave_too_far(Q32 dx, Q32 dz, int d10i, float d11) {
-    float d8 = q32_to_float(dx), d9 = q32_to_float(dz), d10 = (float)d10i;
-    float lhs = d8 * d8 + d9 * d9 - d10 * d10, rhs = d11 * d11;
-    float diff = lhs - rhs;
-    if (diff > 0.05f) return 1;
-    if (diff < -0.05f) return 0;
-    double e8 = (double)dx * (double)0x1p-32f, e9 = (double)dz * (double)0x1p-32f, e10 = d10i, e11 = (double)d11;
-    return e8 * e8 + e9 * e9 - e10 * e10 > e11 * e11;
-}
-
-/* can a tunnel at (x, z) with `left` steps (and branches) still reach the region of interest?
- * Each step moves at most one block horizontally; radius <= 1.5 + 12 for caves, 1.5 + 6 for canyons. */
-static Q32 reg_x0, reg_x1, reg_z0, reg_z1;
-
-INLINE int cave_can_reach(Q32 x, Q32 z, int left) {
-    Q32 dx = x < reg_x0 ? reg_x0 - x : (x > reg_x1 ? x - reg_x1 : 0);
-    Q32 dz = z < reg_z0 ? reg_z0 - z : (z > reg_z1 ? z - reg_z1 : 0);
-    Q32 d = dx > dz ? dx : dz; /* Chebyshev distance is <= the Euclidean one */
-    return d <= SHL(left + 16, 32);
-}
-
-/* ---- several targets at once ----
- * Java carves one target chunk at a time: it replays the tunnels of every source chunk within
- * 8 chunks, and a tunnel stops for that target when it gets too far from it (a room also stops
- * after its first carve). Where a tunnel goes (its random numbers, its branches) does not depend
- * on the target, only where it stops does; so each tunnel is walked once for several targets,
- * with a bit mask of the targets it still runs for (branches inherit it: a branch only exists for
- * the targets its parent was still running for when it split).
- * Targets are indexed by their place around the chunk being generated: (dz + 1) * 3 + (dx + 1).
- * Bit T_REC of the mask is not a target: a recording walk (see the tunnel records below). */
-#define NTGT 9
-#define T_REC (1u << NTGT)
-static CaveCtx *tg[NTGT];
-static Q32 tg_cx[NTGT], tg_cz[NTGT]; /* target chunk centres, world coords */
-/* recording: box (world blocks, inclusive) that the current top-level tunnel may change */
-static int rb_x0, rb_x1, rb_y0, rb_y1, rb_z0, rb_z1;
-
-/* One step of a tunnel for the targets in act: Java's "too far: stop" test and range test,
- * then the carve. Returns the targets still running. Both tests are first settled with integer
- * bounds from the whole-block distances (exactly where those decide them). */
-HOT static unsigned cave_step(unsigned act, Q32 d0, Q32 d1, Q32 d2, Q32 r6, Q32 r7, int left, float f, int room,
-                          int canyon) {
-    if (act & T_REC) {
-        /* blocks a carve step can change, or read for a room's water test (cave_carve) */
-        int x0 = q32_floor(d0 - r6) - 1, x1 = q32_floor(d0 + r6) + 1;
-        int z0 = q32_floor(d2 - r6) - 1, z1 = q32_floor(d2 + r6) + 1;
-        int y0 = q32_floor(d1 - r7) - 2, y1 = q32_floor(d1 + r7) + 2;
-        if (x0 < rb_x0) rb_x0 = x0;
-        if (x1 > rb_x1) rb_x1 = x1;
-        if (y0 < rb_y0) rb_y0 = y0;
-        if (y1 > rb_y1) rb_y1 = y1;
-        if (z0 < rb_z0) rb_z0 = z0;
-        if (z1 > rb_z1) rb_z1 = z1;
-    }
-    int d11 = (int)(f + 18.0f);                /* d11 in [d11, d11 + 1] */
-    int far_hi = (d11 + 1) * (d11 + 1) + left * left, far_lo = d11 * d11 + left * left;
-    int lim = 16 + 2 * (int)(r6 >> 32);        /* range limit in [lim, lim + 2) */
-    for (int ti = 0; ti < NTGT; ti++) {
-        if (!(act >> ti & 1)) continue;
-        Q32 dx = d0 - tg_cx[ti], dz = d2 - tg_cz[ti];
-        int ax = (int)((dx < 0 ? -dx : dx) >> 32), az = (int)((dz < 0 ? -dz : dz) >> 32); /* |d| in [a, a+1) */
-        if (ax > 255 || az > 255 || ax * ax + az * az > far_hi) { /* surely too far */
-            act &= ~(1u << ti);
-            continue;
-        }
-        int near = (ax + 1) * (ax + 1) + (az + 1) * (az + 1) <= far_lo;
-        if (!near && cave_too_far(dx, dz, left, f + 2.0f + 16.0f)) {
-            act &= ~(1u << ti);
-            continue;
-        }
-        if (ax > lim + 2 || az > lim + 2) continue; /* surely out of range */
-        if (!(ax + 1 <= lim && az + 1 <= lim)) {
-            float flim = 16.0f + q32_to_float(r6) * 2.0f;
-            float d8 = q32_to_float(dx), d9 = q32_to_float(dz);
-            if (!(d8 >= -flim && d9 >= -flim && d8 <= flim && d9 <= flim)) continue;
-        }
-        cv = tg[ti];
-        if (cave_carve(d0, d1, d2, r6, r7, canyon, room) && room) act &= ~(1u << ti);
-    }
-    return act;
-}
-
-/* tunnel stack (branches) */
-typedef struct {
-    i64 seed;
-    Q32 x, y, z;
-    float f, f1, f2;
-    int16_t l, i1;
-    uint8_t room;
-    uint16_t act;
-} Tunnel;
-#define TSTACK 4 /* branches (width < 1) never branch again: depth <= 2 */
-static Tunnel tstack[TSTACK];
-
-/* Walks one cave tunnel (WorldGenCaves.a, 13-argument version) and its branches. */
-NOINLINE HOT static void cave_tunnel(i64 seed0, Q32 x0, Q32 y0, Q32 z0, float f0, float f10, float f20, int l0, int i10, int room0,
-                        unsigned act0) {
-    int sp = 0;
-    tstack[sp++] = (Tunnel){seed0, x0, y0, z0, f0, f10, f20, (int16_t)l0, (int16_t)i10, (uint8_t)room0, (uint16_t)act0};
-    while (sp > 0) {
-        Tunnel t = tstack[--sp];
-        unsigned act = t.act;
-        float f3 = 0, f4 = 0;
-        JRand r;
-        jr_seed(&r, t.seed);
-        int i1 = t.i1, l = t.l;
-        if (i1 <= 0) {
-            int j1 = 8 * 16 - 16;
-            i1 = j1 - jr_int_i(&r, j1 / 4);
-        }
-        int flag = 0;
-        if (t.room) {
-            l = i1 / 2;
-            flag = 1;
-        }
-        int k1 = jr_int_i(&r, i1 / 2) + i1 / 4;
-        int flag1 = jr_int_i(&r, 6) == 0;
-        float f = t.f, f1 = t.f1, f2 = t.f2;
-        Q32 d0 = t.x, d1 = t.y, d2 = t.z;
-        for (; l < i1; ++l) {
-            if (!cave_can_reach(d0, d2, i1 - l)) break; /* nothing left to carve here (no side effects) */
-            float sv = mh_sin_i((float)l * 3.1415927f / (float)i1) * f * 1.0f;
-            Q32 r6 = (Q32)(3LL << 31) + q32_of_float(sv); /* 1.5 + ... */
-            Q32 r7 = t.room ? r6 / 2 : r6;
-            float f5 = mh_cos_i(f2), f6 = mh_sin_i(f2);
-            d0 += q32_of_float(mh_cos_i(f1) * f5);
-            d1 += q32_of_float(f6);
-            d2 += q32_of_float(mh_sin_i(f1) * f5);
-            f2 *= flag1 ? 0.92f : 0.7f;
-            f2 += f4 * 0.1f;
-            f1 += f3 * 0.1f;
-            f4 *= 0.9f;
-            f3 *= 0.75f;
-            {
-                float a = jr_float_i(&r), b = jr_float_i(&r), c = jr_float_i(&r);
-                f4 += (a - b) * c * 2.0f;
-            }
-            {
-                float a = jr_float_i(&r), b = jr_float_i(&r), c = jr_float_i(&r);
-                f3 += (a - b) * c * 4.0f;
-            }
-            if (!flag && l == k1 && f > 1.0f && i1 > 0) {
-                if (sp + 2 <= TSTACK) {
-                    i64 s1 = jr_long(&r);
-                    float w1 = jr_float_i(&r) * 0.5f + 0.5f;
-                    i64 s2 = jr_long(&r);
-                    float w2 = jr_float_i(&r) * 0.5f + 0.5f;
-                    /* second branch below the first: the first runs (with its sub-branches) first */
-                    tstack[sp++] = (Tunnel){s2, d0, d1, d2, w2, f1 + 1.5707964f, f2 / 3.0f, (int16_t)l, (int16_t)i1, 0,
-                                            (uint16_t)act};
-                    tstack[sp++] = (Tunnel){s1, d0, d1, d2, w1, f1 - 1.5707964f, f2 / 3.0f, (int16_t)l, (int16_t)i1, 0,
-                                            (uint16_t)act};
-                }
-                break;
-            }
-            if (flag || jr_int_i(&r, 4) != 0) {
-                act = cave_step(act, d0, d1, d2, r6, r7, i1 - l, f, flag, 0);
-                if (!act) break;
-            }
-        }
-    }
-}
-
-NOINLINE HOT static void canyon_tunnel(i64 seed, Q32 d0, Q32 d1, Q32 d2, float f, float f1, float f2, unsigned act) {
-    JRand r;
-    jr_seed(&r, seed);
-    float f3 = 0, f4 = 0;
-    int j1 = 8 * 16 - 16;
-    int i1 = j1 - jr_int_i(&r, j1 / 4);
-    int l = 0;
-    /* (the canyon has its own random: stopping before its width table changes nothing else) */
-    if (!cave_can_reach(d0, d2, i1)) return;
-    float f5 = 1.0f;
-    for (int k1 = 0; k1 < 256; ++k1) {
-        if (k1 == 0 || jr_int_i(&r, 3) == 0) {
-            float a = jr_float_i(&r), b = jr_float_i(&r);
-            f5 = 1.0f + a * b * 1.0f;
-        }
-        canyon_w[k1] = f5 * f5;
-    }
-    for (; l < i1; ++l) {
-        if (!cave_can_reach(d0, d2, i1 - l)) return;
-        float sv = mh_sin_i((float)l * 3.1415927f / (float)i1) * f * 1.0f;
-        Q32 r6 = (Q32)(3LL << 31) + q32_of_float(sv);
-        Q32 r7 = r6 * 3; /* d3 = 3.0 */
-        /* d6 *= nextFloat * 0.25 + 0.75: nextFloat = n / 2^24, factor = (n + 3 * 2^24) / 2^26 */
-        i64 n6 = jr_next_i(&r, 24), n7 = jr_next_i(&r, 24);
-        r6 = (Q32)(((r6 >> 6) * (n6 + 3 * 16777216LL)) >> 20);
-        r7 = (Q32)(((r7 >> 6) * (n7 + 3 * 16777216LL)) >> 20);
-        float f6 = mh_cos_i(f2), f7 = mh_sin_i(f2);
-        d0 += q32_of_float(mh_cos_i(f1) * f6);
-        d1 += q32_of_float(f7);
-        d2 += q32_of_float(mh_sin_i(f1) * f6);
-        f2 *= 0.7f;
-        f2 += f4 * 0.05f;
-        f1 += f3 * 0.05f;
-        f4 *= 0.8f;
-        f3 *= 0.5f;
-        {
-            float a = jr_float_i(&r), b = jr_float_i(&r), c = jr_float_i(&r);
-            f4 += (a - b) * c * 2.0f;
-        }
-        {
-            float a = jr_float_i(&r), b = jr_float_i(&r), c = jr_float_i(&r);
-            f3 += (a - b) * c * 4.0f;
-        }
-        if (jr_int_i(&r, 4) != 0) {
-            act = cave_step(act, d0, d1, d2, r6, r7, i1 - l, f, 0, 1);
-            if (!act) return;
-        }
-    }
-}
-
-/* ---- tunnel records ----
- * A recording walk goes once through every tunnel that can reach an area of 9 x 9 chunks and
- * keeps, for each top-level tunnel that comes near it, its name (source chunk, pass, rank among
- * the source's tunnels) and the box of blocks it may change there (with its branches). Carving
- * the chunk being generated and the populations' cave queries then replay only the tunnels whose
- * box meets theirs, with the exact rules. The area is recomputed when the 3 x 3 chunks around
- * the chunk being generated leave it, so neighbouring calls share it. */
-typedef struct {
-    int8_t sx, sz;           /* source chunk - area origin chunk */
-    uint8_t pass, ord;
-    uint8_t x0, x1, z0, z1;  /* box, blocks from the area origin (clipped to the area) */
-    uint8_t y0, y1;
-} CaveRec;
-#define NCREC 192
-#define CA_SIZE 9            /* area: chunks [crec_ax, crec_ax + 9) x [crec_az, crec_az + 9) */
-static CaveRec crec[NCREC];
-static int ncrec, crec_ok, crec_ax = 1 << 30, crec_az;
-static int64_t crec_seed;
-
-static void crec_add(int j1, int k1, int pass, int ord) {
-    if (rb_x0 > rb_x1) return; /* nothing carved (and its INT32_MAX box would overflow below) */
-    int ox = crec_ax * 16, oz = crec_az * 16, n = CA_SIZE * 16 - 1;
-    int x0 = rb_x0 - ox, x1 = rb_x1 - ox, z0 = rb_z0 - oz, z1 = rb_z1 - oz;
-    if (x1 < 0 || x0 > n || z1 < 0 || z0 > n || rb_y1 < 0 || rb_y0 > 255) return; /* never came near */
-    if (ncrec == NCREC) {
-        crec_ok = 0; /* too many: everything is walked again */
-        return;
-    }
-    crec[ncrec++] = (CaveRec){(int8_t)(j1 - crec_ax),
-                              (int8_t)(k1 - crec_az),
-                              (uint8_t)pass,
-                              (uint8_t)ord,
-                              (uint8_t)(x0 < 0 ? 0 : x0),
-                              (uint8_t)(x1 > n ? n : x1),
-                              (uint8_t)(z0 < 0 ? 0 : z0),
-                              (uint8_t)(z1 > n ? n : z1),
-                              (uint8_t)(rb_y0 < 0 ? 0 : rb_y0),
-                              (uint8_t)(rb_y1 > 255 ? 255 : rb_y1)};
-}
-
-static inline void rb_reset(void) {
-    rb_x0 = rb_y0 = rb_z0 = INT32_MAX;
-    rb_x1 = rb_y1 = rb_z1 = INT32_MIN;
-}
-
-/* The tunnels of source chunk (j1, k1) for one pass (MapGenCaves.a / MapGenCanyon.a), walked for
- * targets `act`. With recs (records of this source and pass, by rank), only those tunnels are
- * walked; a record whose ord is 255 is skipped. */
-HOT static void cave_source(int j1, int k1, int pass, unsigned act, const CaveRec *recs, int nrec) {
-    JRand r;
-    jr_seed(&r, (i64)((u64)(i64)j1 * (u64)cave_mul_x) ^ (i64)((u64)(i64)k1 * (u64)cave_mul_z) ^ g_seed);
-    int ord = 0, ri = 0;
-    int rec = (act & T_REC) != 0;
-    /* walk tunnel `ord`? */
-#define WANT() (recs ? (ri < nrec && recs[ri].ord == ord ? (ri++, !crep_dyn || recs[ri - 1].y1 >= crep_lo) : 0) : 1)
-    if (pass == 0) {
-        int n = jr_int_i(&r, jr_int_i(&r, jr_int_i(&r, 15) + 1) + 1);
-        if (jr_int_i(&r, 7) != 0) n = 0;
-        for (int c = 0; c < n; ++c) {
-            if (recs && ri == nrec) return;
-            int xx = j1 * 16 + jr_int_i(&r, 16);
-            int yy = jr_int_i(&r, jr_int_i(&r, 120) + 8);
-            int zz = k1 * 16 + jr_int_i(&r, 16);
-            Q32 d0 = SHL(xx, 32), d1 = SHL(yy, 32), d2 = SHL(zz, 32);
-            int k = 1;
-            if (jr_int_i(&r, 4) == 0) {
-                i64 s = jr_long(&r);
-                float w = 1.0f + jr_float_i(&r) * 6.0f;
-                if (WANT()) {
-                    rb_reset();
-                    cave_tunnel(s, d0, d1, d2, w, 0.0f, 0.0f, -1, -1, 1, act);
-                    if (rec) crec_add(j1, k1, pass, ord);
-                }
-                ord++;
-                k += jr_int_i(&r, 4);
-            }
-            for (int l1 = 0; l1 < k; ++l1) {
-                float f = jr_float_i(&r) * 3.1415927f * 2.0f;
-                float f1 = (jr_float_i(&r) - 0.5f) * 2.0f / 8.0f;
-                float f2 = jr_float_i(&r) * 2.0f;
-                f2 += jr_float_i(&r); /* (draws in Java's left-to-right order) */
-                if (jr_int_i(&r, 10) == 0) {
-                    float a = jr_float_i(&r), b = jr_float_i(&r);
-                    f2 *= a * b * 3.0f + 1.0f;
-                }
-                i64 s = jr_long(&r);
-                if (WANT()) {
-                    rb_reset();
-                    cave_tunnel(s, d0, d1, d2, f2, f, f1, 0, 0, 0, act);
-                    if (rec) crec_add(j1, k1, pass, ord);
-                }
-                ord++;
-            }
-        }
-    } else if (jr_int_i(&r, 50) == 0) {
-        int xx = j1 * 16 + jr_int_i(&r, 16);
-        int yy = jr_int_i(&r, jr_int_i(&r, 40) + 8) + 20;
-        int zz = k1 * 16 + jr_int_i(&r, 16);
-        float f = jr_float_i(&r) * 3.1415927f * 2.0f;
-        float f1 = (jr_float_i(&r) - 0.5f) * 2.0f / 8.0f;
-        float f2 = jr_float_i(&r) * 2.0f;
-        f2 = (f2 + jr_float_i(&r)) * 2.0f;
-        i64 s = jr_long(&r);
-        if (WANT()) {
-            rb_reset();
-            canyon_tunnel(s, SHL(xx, 32), SHL(yy, 32), SHL(zz, 32), f2, f, f1, act);
-            if (rec) crec_add(j1, k1, pass, ord);
-        }
-    }
-#undef WANT
-}
-
-/* targets (bits of tmask) whose range (8 chunks) holds source chunk (j1, k1) */
-static unsigned src_targets(unsigned tmask, int j1, int k1) {
-    unsigned act = 0;
-    for (int ti = 0; ti < NTGT; ti++)
-        if ((tmask >> ti & 1) && j1 >= tg[ti]->tcx - 8 && j1 <= tg[ti]->tcx + 8 && k1 >= tg[ti]->tcz - 8 &&
-            k1 <= tg[ti]->tcz + 8)
-            act |= 1u << ti;
-    return act;
-}
-
-/* reach region: union of the targets' regions (and of the record area when recording) */
-static void caves_setup(unsigned tmask) {
-    int first = 1;
-    for (int ti = 0; ti <= NTGT; ti++) {
-        Q32 x0, x1, z0, z1;
-        if (ti < NTGT) {
-            if (!(tmask >> ti & 1)) continue;
-            const CaveCtx *c = tg[ti];
-            tg_cx[ti] = SHL(c->tcx * 16 + 8, 32);
-            tg_cz[ti] = SHL(c->tcz * 16 + 8, 32);
-            x0 = SHL(c->tcx * 16 + c->rx0, 32), x1 = SHL(c->tcx * 16 + c->rx1, 32);
-            z0 = SHL(c->tcz * 16 + c->rz0, 32), z1 = SHL(c->tcz * 16 + c->rz1, 32);
-        } else {
-            if (!(tmask & T_REC)) continue;
-            x0 = SHL(crec_ax * 16, 32), x1 = SHL((crec_ax + CA_SIZE) * 16, 32);
-            z0 = SHL(crec_az * 16, 32), z1 = SHL((crec_az + CA_SIZE) * 16, 32);
-        }
-        if (first || x0 < reg_x0) reg_x0 = x0;
-        if (first || x1 > reg_x1) reg_x1 = x1;
-        if (first || z0 < reg_z0) reg_z0 = z0;
-        if (first || z1 > reg_z1) reg_z1 = z1;
-        first = 0;
-    }
-}
-
-/* MapGenBase.a (caves, then canyons) for the targets tmask (and the record area if T_REC is
- * set): every source chunk within 8 chunks of a target, in Java's order (x outer, z inner),
- * each walked for the targets in its range */
-static void caves_run(unsigned tmask) {
-    int x0 = 1 << 30, x1 = -(1 << 30), z0 = 1 << 30, z1 = -(1 << 30);
-    for (int ti = 0; ti < NTGT; ti++) {
-        if (!(tmask >> ti & 1)) continue;
-        if (tg[ti]->tcx < x0) x0 = tg[ti]->tcx;
-        if (tg[ti]->tcx > x1) x1 = tg[ti]->tcx;
-        if (tg[ti]->tcz < z0) z0 = tg[ti]->tcz;
-        if (tg[ti]->tcz > z1) z1 = tg[ti]->tcz;
-    }
-    if (tmask & T_REC) {
-        if (crec_ax < x0) x0 = crec_ax;
-        if (crec_ax + CA_SIZE - 1 > x1) x1 = crec_ax + CA_SIZE - 1;
-        if (crec_az < z0) z0 = crec_az;
-        if (crec_az + CA_SIZE - 1 > z1) z1 = crec_az + CA_SIZE - 1;
-    }
-    caves_setup(tmask);
-    for (int pass = 0; pass < 2; pass++)
-        for (int j1 = x0 - 8; j1 <= x1 + 8; ++j1)
-            for (int k1 = z0 - 8; k1 <= z1 + 8; ++k1) {
-                unsigned act = src_targets(tmask, j1, k1) | (tmask & T_REC);
-                if (act) cave_source(j1, k1, pass, act, 0, 0);
-            }
-}
-
-/* the same for the box [x0, x1] x [y0, y1] x [z0, z1] (world, inclusive), from the records */
-static void caves_replay(unsigned tmask, int x0, int y0, int z0, int x1, int y1, int z1) {
-    caves_setup(tmask);
-    x0 -= crec_ax * 16, x1 -= crec_ax * 16, z0 -= crec_az * 16, z1 -= crec_az * 16;
-    CaveRec sel[16];
-    for (int i = 0; i < ncrec;) {
-        int j = i, n = 0;
-        int j1 = crec_ax + crec[i].sx, k1 = crec_az + crec[i].sz;
-        unsigned act = src_targets(tmask, j1, k1);
-        for (; j < ncrec && crec[j].sx == crec[i].sx && crec[j].sz == crec[i].sz && crec[j].pass == crec[i].pass; j++) {
-            const CaveRec *c = &crec[j];
-            if (act && c->x1 >= x0 && c->x0 <= x1 && c->z1 >= z0 && c->z0 <= z1 && c->y1 >= y0 && c->y0 <= y1) {
-                if (n == 16) { /* full: the ranks are increasing, so walking these first keeps the order */
-                    cave_source(j1, k1, crec[i].pass, act, sel, n);
-                    n = 0;
-                }
-                sel[n++] = *c;
-            }
-        }
-        if (n) cave_source(j1, k1, crec[i].pass, act, sel, n);
-        i = j;
-    }
-}
-
-/* make the records cover the 3 x 3 chunks around (cx, cz) */
-static void crec_cover(int cx, int cz) {
-    if (crec_seed == g_seed && crec_ok && cx - 1 >= crec_ax && cx + 1 < crec_ax + CA_SIZE && cz - 1 >= crec_az &&
-        cz + 1 < crec_az + CA_SIZE)
-        return;
-    crec_seed = g_seed;
-    crec_ax = cx - CA_SIZE / 2;
-    crec_az = cz - CA_SIZE / 2;
-    ncrec = 0;
-    crec_ok = 1;
-    caves_run(T_REC);
-}
-
-/* ======================================================================== */
-/* Summary cache                                                             */
-/* ======================================================================== */
-
-#define NSUM 25
-typedef struct {
-    int cx, cz;
-    uint32_t age;
-    uint8_t valid;
-    uint8_t b00;  /* biome of block (0, 0): the biome of the population of chunk (cx-1, cz-1) */
-    ColSum s[256];
-} SumEntry;
-_Static_assert(sizeof(SumEntry) * NSUM == GEN_CACHE_BYTES, "nb.h's GEN_CACHE_BYTES: the summary cache's size");
-#ifdef HOST
-static SumEntry sumc_mem[NSUM];
-static SumEntry *sumc = sumc_mem;
-#else
-static SumEntry *sumc;   /* on main's stack (gen_set_cache): calculator software gives apps 32 KB of it apart */
-void gen_set_cache(void *mem) { sumc = mem; }
-#endif
-static uint32_t sum_clock;
-
-static SumEntry *sum_find(int cx, int cz) {
-    for (int i = 0; i < NSUM; i++)
-        if (sumc[i].valid && sumc[i].cx == cx && sumc[i].cz == cz) {
-            sumc[i].age = ++sum_clock;
-            return &sumc[i];
-        }
-    return 0;
-}
-
-/* entry to (re)fill: the least recently used one not pinned */
-static uint8_t sum_pin[NSUM];
-static SumEntry *sum_slot(int cx, int cz) {
-    int best = -1;
-    for (int i = 0; i < NSUM; i++) {
-        if (sum_pin[i]) continue;
-        if (!sumc[i].valid) {
-            best = i;
-            break;
-        }
-        if (best < 0 || sumc[i].age < sumc[best].age) best = i;
-    }
-    SumEntry *e = &sumc[best];
-    e->cx = cx;
-    e->cz = cz;
-    e->valid = 1;
-    e->age = ++sum_clock;
-    return e;
-}
-
-static SumEntry *sum_get(int cx, int cz) {
-    SumEntry *e = sum_find(cx, cz);
-    if (e) return e;
-    e = sum_slot(cx, cz);
-    chunk_terrain(cx, cz, 0, 0, 0, e->s);
-    e->b00 = cb16[0];
-    return e;
-}
-
-/* the 3x3 summaries around the chunk being generated, pinned during gen_slab */
-static SumEntry *nb[3][3]; /* [dz+1][dx+1] */
-static int nb_cx, nb_cz;
-
-static const ColSum *col_sum(int X, int Z) {
-    int cx = X >> 4, cz = Z >> 4;
-    int dx = cx - nb_cx + 1, dz = cz - nb_cz + 1;
-    if (dx < 0 || dx > 2 || dz < 0 || dz > 2) return 0;
-    return &nb[dz][dx]->s[(X & 15) + (Z & 15) * 16];
-}
-
-/* ======================================================================== */
-/* Population: the chunk being generated (C), the view of a population (P)   */
-/* ======================================================================== */
-
-/* chunk C: blocks for y in [c_y0, c_y0 + c_h) in c_out; c_top: highest non-air y of each column
- * (whole height), c_sl: highest solid-or-liquid y (precipitation height - 1) */
-static uint8_t *c_out;
-static int c_y0, c_h, c_cx, c_cz;
-/* (c_top, c_sl: declared with the caves, which keep them right) */
-
-#define PV (U.p.v)
-
-static inline int lake_bit(const LakeRec *L, int x, int y, int z) {
-    int i = (x * 16 + z) * 8 + y;
-    return (L->shape[i >> 3] >> (i & 7)) & 1;
-}
-
-/* view block at world (X, Y, Z) */
-HOT static uint8_t vget(int X, int Y, int Z) {
-    if (Y < 0) return B_BEDROCK;
-    if (Y > 255) return B_AIR;
-    View *v = &PV;
-    int lx = X - v->ox, lz = Z - v->oz;
-    if (lx < 0) lx = 0;
-    if (lx > 31) lx = 31;
-    if (lz < 0) lz = 0;
-    if (lz > 31) lz = 31;
-    X = v->ox + lx;
-    Z = v->oz + lz;
-    int i = lz * 32 + lx;
-    if (Y > v->top[i]) return (Y == v->top[i] + 1 && v->pl[i]) ? v->pl[i] : B_AIR;
-    if (Y == v->top[i]) return v->tb[i];
-    for (int k = 0; k < v->nlake; k++) {
-        const LakeRec *L = &v->lake[k];
-        int ax = X - L->x, ay = Y - L->y, az = Z - L->z;
-        if (ax >= 0 && ax < 16 && az >= 0 && az < 16 && ay >= 0 && ay < 8 && lake_bit(L, ax, ay, az))
-            return ay >= 4 ? B_AIR : L->liquid;
-    }
-    const ColSum *s = col_sum(X, Z);
-    if (!s) return Y < SEA ? B_STONE : B_AIR;
-    if (Y > cs_top(s)) return B_AIR;
-    if (v->qon && X >= v->qx0 && X < v->qx1 && Y >= v->qy0 && Y < v->qy1 && Z >= v->qz0 && Z < v->qz1) {
-        uint8_t m = U.p.qmask[((Y - v->qy0) * (v->qz1 - v->qz0) + (Z - v->qz0)) * (v->qx1 - v->qx0) + (X - v->qx0)];
-        if (m) return (uint8_t)(m - 1);
-    }
-    return sum_block(s, Y);
-}
-
-static inline int v_empty(int X, int Y, int Z) { return vget(X, Y, Z) == B_AIR; }
-
-/* World.getHighestBlockYAt(...).getY(): first y above the highest opaque block */
-static int hm(int X, int Z) {
-    View *v = &PV;
-    int lx = X - v->ox, lz = Z - v->oz;
-    if (lx < 0) lx = 0;
-    if (lx > 31) lx = 31;
-    if (lz < 0) lz = 0;
-    if (lz > 31) lz = 31;
-    return v->top[lz * 32 + lx] + 1;
-}
-
-/* World.r(pos) (top solid-or-liquid... actually top solid non-leaves block) + 1 */
-static int top_solid(int X, int Z) {
-    int y = hm(X, Z) + 1;
-    for (; y >= 0; y--) {
-        uint8_t b = vget(X, y, Z);
-        if (IS_SOLID(b) && !IS_LEAVES(b)) break;
-    }
-    return y + 1;
-}
-
-/* write rules: checked against C's real blocks before a write lands in C */
-enum {
-    R_ALWAYS, R_TREE,     /* air, leaves, replaceable plant */
-    R_AIRLEAF, R_NOTCUBE, R_TREEOK, R_AIR, R_STONE, R_DIRTGRASS, R_DIRTCLAY, R_ICE, R_ICE2, R_BUILD,
-    R_NOTCHEST, R_WALL, R_SAND_SANDY
-};
-
-static int rule_ok(int rule, uint8_t b) {
-    switch (rule) {
-    case R_ALWAYS: return 1;
-    case R_TREE: return b == B_AIR || IS_LEAVES(b) || IS_RPLANT(b);
-    case R_AIRLEAF: return b == B_AIR || IS_LEAVES(b);
-    case R_NOTCUBE: return !IS_CUBE(b);
-    case R_TREEOK:
-        return b == B_AIR || IS_LEAVES(b) || b == B_GRASS || IS_DIRTISH(b) || IS_LOG(b) || b == B_VINE ||
-               (b >= B_SAPLING_OAK && b <= B_SAPLING_DARK_OAK);
-    case R_AIR: return b == B_AIR;
-    case R_STONE: return b == B_STONE;
-    case R_DIRTGRASS: return IS_DIRTISH(b) || b == B_GRASS;
-    case R_DIRTCLAY: return IS_DIRTISH(b) || b == B_CLAY;
-    case R_ICE: return b == B_AIR || IS_DIRTISH(b) || b == B_SNOW || b == B_ICE;
-    case R_ICE2: return b == B_AIR || IS_DIRTISH(b) || b == B_SNOW || b == B_ICE || b == B_PACKED_ICE;
-    case R_BUILD: return IS_BUILD(b);
-    case R_NOTCHEST: return b != B_CHEST;
-    case R_WALL: return IS_BUILD(b) && b != B_CHEST;
-    }
-    return 1;
-}
-
-static inline int is_plantish(uint8_t b) {
-    return IS_PLANT(b) || IS_RPLANT(b) || b == B_CACTUS || b == B_SNOW_LAYER || b == B_SUGAR_CANE;
-}
-
-/* top of column (x, z) of C after removing the block at y: next non-air below */
-static void c_lower_top(int i, int y) {
-    int x = i & 15, z = i >> 4;
-    const ColSum *s = &nb[1][1]->s[i];
-    while (y > 0) {
-        y--;
-        uint8_t b = (y >= c_y0 && y < c_y0 + c_h) ? c_out[(y - c_y0) * 256 + z * 16 + x] : sum_block(s, y);
-        if (b != B_AIR) break;
-    }
-    c_top[i] = (uint8_t)y;
-}
-
-/* chunk C bookkeeping for a block that was (or, out of the y range, presumably was) written */
-static void c_track(int i, int Y, uint8_t b) {
-    if (b == B_AIR) {
-        if (Y == c_top[i]) c_lower_top(i, Y);
-        if (Y == c_sl[i]) c_sl[i] = c_top[i] < c_sl[i] ? c_top[i] : (uint8_t)(Y - 1);
-    } else {
-        if (Y > c_top[i]) c_top[i] = (uint8_t)Y;
-        if ((IS_SOLID(b) || (bflags[b] & BF_LIQUID)) && Y > c_sl[i]) c_sl[i] = (uint8_t)Y;
-    }
-}
-
-static int put_skip_c; /* set: put() updates the view only */
-
-/* writes block b at world (X, Y, Z): into the view, and into C if the rule holds there */
-static void put(int X, int Y, int Z, uint8_t b, int rule) {
-    if (Y < 0 || Y > 255) return;
-    View *v = &PV;
-    int lx = X - v->ox, lz = Z - v->oz;
-    if (lx >= 0 && lx < 32 && lz >= 0 && lz < 32) {
-        int i = lz * 32 + lx;
-        if (b == B_AIR) {
-            if (Y == v->top[i] + 1) v->pl[i] = 0;
-            if (Y == v->top[i]) {
-                v->pl[i] = 0;
-                int y = Y;
-                v->top[i] = (uint8_t)(Y - 1); /* provisional so vget sees below */
-                while (y > 0) {
-                    y--;
-                    v->top[i] = (uint8_t)y;
-                    v->tb[i] = B_AIR;
-                    /* read what lies below with the column top above it */
-                    v->top[i] = 255;
-                    uint8_t u = vget(X, y, Z);
-                    v->top[i] = (uint8_t)y;
-                    if (u != B_AIR) {
-                        v->tb[i] = u;
-                        break;
-                    }
-                }
-            }
-        } else if (is_plantish(b)) {
-            if (Y == v->top[i] + 1) v->pl[i] = b;
-        } else {
-            if (Y > v->top[i]) {
-                v->top[i] = (uint8_t)Y;
-                v->tb[i] = b;
-                v->pl[i] = 0;
-            } else if (Y == v->top[i]) {
-                v->tb[i] = b;
-            }
-        }
-    }
-    int cx = X - c_cx * 16, cz = Z - c_cz * 16;
-    if (!put_skip_c && cx >= 0 && cx < 16 && cz >= 0 && cz < 16) {
-        int i = cz * 16 + cx;
-        if (Y >= c_y0 && Y < c_y0 + c_h) {
-            uint8_t *o = &c_out[(Y - c_y0) * 256 + i];
-            if (!rule_ok(rule, *o)) return;
-            *o = b;
-        }
-        c_track(i, Y, b);
-    }
-}
-
-/* only into C (features whose result never feeds a later decision: ores...) */
-static void put_c(int X, int Y, int Z, uint8_t b, int rule) {
-    int cx = X - c_cx * 16, cz = Z - c_cz * 16;
-    if (cx < 0 || cx > 15 || cz < 0 || cz > 15 || Y < c_y0 || Y >= c_y0 + c_h) return;
-    uint8_t *o = &c_out[(Y - c_y0) * 256 + cz * 16 + cx];
-    if (rule_ok(rule, *o)) {
-        *o = b;
-        c_track(cz * 16 + cx, Y, b);
-    }
-}
-
-/* C's real block if (X, Y, Z) is in C and in range, else the view's */
-static uint8_t cget(int X, int Y, int Z) {
-    int cx = X - c_cx * 16, cz = Z - c_cz * 16;
-    if (cx >= 0 && cx < 16 && cz >= 0 && cz < 16 && Y >= c_y0 && Y < c_y0 + c_h)
-        return c_out[(Y - c_y0) * 256 + cz * 16 + cx];
-    return vget(X, Y, Z);
-}
-
-static inline int in_c_range(int X, int Y, int Z) {
-    int cx = X - c_cx * 16, cz = Z - c_cz * 16;
-    return cx >= 0 && cx < 16 && cz >= 0 && cz < 16 && Y >= c_y0 && Y < c_y0 + c_h;
-}
-
-static inline int in_c_cols(int X, int Z) {
-    int cx = X - c_cx * 16, cz = Z - c_cz * 16;
-    return cx >= 0 && cx < 16 && cz >= 0 && cz < 16;
-}
-
-/* ======================================================================== */
-/* Population features                                                       */
-/* ======================================================================== */
-
-static JRand PR;           /* the population random (ChunkProviderGenerate.h) */
-static int PK, PL;         /* origin of the populated chunk (k = px*16, l = pz*16) */
-
-#define RI(n) jr_int(&PR, (n))
-#define RF() jr_float(&PR)
-
-/* ---- cave query: marks carved blocks of box [x0,x1)x[y0,y1)x[z0,z1) for vget ---- */
-static void cave_query(int x0, int y0, int z0, int x1, int y1, int z1) {
-    View *v = &PV;
-    if (y0 < 0) y0 = 0;
-    if (y1 > 256) y1 = 256;
-    if ((x1 - x0) * (y1 - y0) * (z1 - z0) > (int)sizeof U.p.qmask || y1 <= y0) {
-        v->qon = 0;
-        return;
-    }
-    memset(U.p.qmask, 0, sizeof U.p.qmask);
-    CaveCtx ctx[4];
-    unsigned tmask = 0;
-    int n = 0;
-    for (int tcz = z0 >> 4; tcz <= (z1 - 1) >> 4; tcz++)
-        for (int tcx = x0 >> 4; tcx <= (x1 - 1) >> 4; tcx++) {
-            int dx = tcx - nb_cx + 1, dz = tcz - nb_cz + 1;
-            if (dx < 0 || dx > 2 || dz < 0 || dz > 2 || n == 4) continue;
-            CaveCtx *c = &ctx[n++];
-            memset(c, 0, sizeof *c);
-            c->mode = CAVE_MASK;
-            c->bx0 = x0;
-            c->bx1 = x1;
-            c->by0 = y0;
-            c->by1 = y1;
-            c->bz0 = z0;
-            c->bz1 = z1;
-            c->mask = U.p.qmask;
-            c->tcx = tcx;
-            c->tcz = tcz;
-            c->sum = nb[dz][dx]->s;
-            c->rx0 = x0 - tcx * 16 < 0 ? 0 : x0 - tcx * 16;
-            c->rx1 = x1 - tcx * 16 > 16 ? 16 : x1 - tcx * 16;
-            c->rz0 = z0 - tcz * 16 < 0 ? 0 : z0 - tcz * 16;
-            c->rz1 = z1 - tcz * 16 > 16 ? 16 : z1 - tcz * 16;
-            c->ry0 = y0;
-            c->ry1 = y1;
-            tg[dz * 3 + dx] = c;
-            tmask |= 1u << (dz * 3 + dx);
-        }
-    if (tmask) {
-        if (crec_ok) caves_replay(tmask, x0, y0, z0, x1 - 1, y1 - 1, z1 - 1);
-        else caves_run(tmask);
-    }
-    v->qon = 1;
-    v->qx0 = x0;
-    v->qx1 = x1;
-    v->qy0 = y0;
-    v->qy1 = y1;
-    v->qz0 = z0;
-    v->qz1 = z1;
-}
-
-/* ---- outcomes of a population's cave-dependent tests ----
- * Lakes and dungeons read the caves (cave queries). A population is replayed by the up to four
- * gen_slab calls whose chunk it writes into, and each time these tests give the same result;
- * a failed one draws the same random numbers whatever made it fail. So the outcomes are kept
- * per population and a known failure only makes its draws. */
-typedef struct {
-    int px, pz;
-    uint8_t valid, lakes, dungeons; /* bit set: lake (0 water, 1 lava) placed, dungeon attempt passed */
-} PopMemo;
-#define NPMEMO 16
-static PopMemo pmemo[NPMEMO];
-static int pmemo_next;
-static PopMemo *pm;   /* the current population's */
-static int pm_known;  /* its outcomes are known */
-static int dung_idx;  /* attempt being made */
-
-static void pmemo_begin(int px, int pz) {
-    for (int i = 0; i < NPMEMO; i++)
-        if (pmemo[i].valid && pmemo[i].px == px && pmemo[i].pz == pz) {
-            pm = &pmemo[i];
-            pm_known = 1;
-            return;
-        }
-    pm = &pmemo[pmemo_next];
-    pmemo_next = (pmemo_next + 1) % NPMEMO;
-    *pm = (PopMemo){px, pz, 0, 0, 0};
-    pm_known = 0;
-}
-
-/* ---- lakes (WorldGenLakes) ---- */
-static int lake_flag(const uint8_t *sh, int j, int k1, int j1) {
-#define LB(x, z, y) ((sh[((((x) * 16 + (z)) * 8 + (y))) >> 3] >> ((((x) * 16 + (z)) * 8 + (y)) & 7)) & 1)
-    return !LB(j, k1, j1) && ((j < 15 && LB(j + 1, k1, j1)) || (j > 0 && LB(j - 1, k1, j1)) ||
-                              (k1 < 15 && LB(j, k1 + 1, j1)) || (k1 > 0 && LB(j, k1 - 1, j1)) ||
-                              (j1 < 7 && LB(j, k1, j1 + 1)) || (j1 > 0 && LB(j, k1, j1 - 1)));
-}
-
-static int lake_border_ok(const LakeRec *L) {
-    for (int j = 0; j < 16; j++)
-        for (int k1 = 0; k1 < 16; k1++)
-            for (int j1 = 0; j1 < 8; j1++)
-                if (lake_flag(L->shape, j, k1, j1)) {
-                    uint8_t b = vget(L->x + j, L->y + j1, L->z + k1);
-                    if (j1 >= 4 && (bflags[b] & BF_LIQUID)) return 0;
-                    if (j1 < 4 && !IS_BUILD(b) && b != L->liquid) return 0;
-                }
-    return 1;
-}
-
-static void lake(uint8_t liquid, int X, int Y, int Z) {
-    View *v = &PV;
-    X -= 8;
-    Z -= 8;
-    while (Y > 5 && v_empty(X, Y, Z)) Y--;
-    if (Y <= 4) return;
-    Y -= 4;
-    int bit = liquid == B_LAVA ? 2 : 1;
-    if (pm_known && !(pm->lakes & bit)) { /* failed before: only its draws */
-        int n = RI(4) + 4;
-        jr_skip(&PR, 12u * (unsigned)n); /* 6 nextDouble per blob */
-        return;
-    }
-    LakeRec tmp, *L = v->nlake < 2 ? &v->lake[v->nlake] : &tmp;
-    L->x = X;
-    L->y = Y;
-    L->z = Z;
-    L->liquid = liquid;
-    memset(L->shape, 0, sizeof L->shape);
-    int n = RI(4) + 4;
-    for (int j = 0; j < n; j++) {
-        float d0 = jr_doublef(&PR) * 6.0f + 3.0f, d1 = jr_doublef(&PR) * 4.0f + 2.0f, d2 = jr_doublef(&PR) * 6.0f + 3.0f;
-        float d3 = jr_doublef(&PR) * (16.0f - d0 - 2.0f) + 1.0f + d0 / 2.0f;
-        float d4 = jr_doublef(&PR) * (8.0f - d1 - 4.0f) + 2.0f + d1 / 2.0f;
-        float d5 = jr_doublef(&PR) * (16.0f - d2 - 2.0f) + 1.0f + d2 / 2.0f;
-        for (int k = 1; k < 15; k++)
-            for (int l = 1; l < 15; l++)
-                for (int i1 = 1; i1 < 7; i1++) {
-                    float d6 = ((float)k - d3) / (d0 / 2.0f), d7 = ((float)i1 - d4) / (d1 / 2.0f),
-                          d8 = ((float)l - d5) / (d2 / 2.0f);
-                    if (d6 * d6 + d7 * d7 + d8 * d8 < 1.0f) {
-                        int idx = (k * 16 + l) * 8 + i1;
-                        L->shape[idx >> 3] |= (uint8_t)(1 << (idx & 7));
-                    }
-                }
-    }
-    /* caves can only make the border test fail: test without, then with them */
-    if (!lake_border_ok(L)) return;
-    cave_query(X, Y, Z, X + 16, Y + 8, Z + 16);
-    int ok = lake_border_ok(L);
-    if (!ok) {
-        v->qon = 0;
-        return;
-    }
-    pm->lakes |= (uint8_t)bit;
-    /* place: record the lake for the view, write into C */
-    const uint8_t *sh = L->shape;
-    if (L == &v->lake[v->nlake]) v->nlake++;
-    for (int j = 0; j < 16; j++)
-        for (int k1 = 0; k1 < 16; k1++) {
-            int any = 0;
-            for (int j1 = 0; j1 < 8; j1++)
-                if (LB(j, k1, j1)) {
-                    any = 1;
-                    put_c(X + j, Y + j1, Z + k1, j1 >= 4 ? B_AIR : liquid, R_ALWAYS);
-                }
-            if (!any) continue;
-            int lx = X + j - v->ox, lz = Z + k1 - v->oz;
-            if (lx < 0 || lx > 31 || lz < 0 || lz > 31) continue;
-            int i = lz * 32 + lx;
-            if (v->top[i] <= Y + 7) {
-                int y = v->top[i];
-                v->pl[i] = 0;
-                v->top[i] = 255; /* read the lake and terrain below */
-                while (y > 0 && vget(X + j, y, Z + k1) == B_AIR) y--;
-                v->tb[i] = vget(X + j, y, Z + k1);
-                v->top[i] = (uint8_t)y;
-            }
-        }
-    /* exposed dirt becomes grass (mycelium in mushroom biomes) */
-    for (int j = 0; j < 16; j++)
-        for (int k1 = 0; k1 < 16; k1++)
-            for (int j1 = 4; j1 < 8; j1++)
-                if (LB(j, k1, j1)) {
-                    int x = X + j, y = Y + j1 - 1, z = Z + k1;
-                    if (IS_DIRTISH(vget(x, y, z)) && y + 1 >= hm(x, z) - 1) {
-                        const Biome *b = in_c_cols(x, z) ? bio(c_b16[(x & 15) + (z & 15) * 16]) : bio(BI_PLAINS);
-                        uint8_t g = b->top == B_MYCELIUM ? B_MYCELIUM : B_GRASS;
-                        put(x, y, z, g, R_DIRTGRASS);
-                    }
-                }
-    if (liquid == B_LAVA) {
-        for (int j = 0; j < 16; j++)
-            for (int k1 = 0; k1 < 16; k1++)
-                for (int j1 = 0; j1 < 8; j1++)
-                    if (lake_flag(L->shape, j, k1, j1) && (j1 < 4 || RI(2) != 0) &&
-                        IS_BUILD(vget(X + j, Y + j1, Z + k1)))
-                        put(X + j, Y + j1, Z + k1, B_STONE, R_BUILD);
-    }
-    if (liquid == B_WATER) {
-        for (int j = 0; j < 16; j++)
-            for (int k1 = 0; k1 < 16; k1++) {
-                int x = X + j, y = Y + 4, z = Z + k1;
-                if (vget(x, y, z) != B_WATER) continue;
-                const Biome *b = in_c_cols(x, z) ? bio(c_b16[(x & 15) + (z & 15) * 16]) : bio(BI_PLAINS);
-                if (biome_temp_at(b, x, y, z) <= 0.15f) put(x, y, z, B_ICE, R_ALWAYS);
-            }
-    }
-    v->qon = 0;
-#undef LB
-}
-
-/* ---- dungeons (WorldGenDungeons) ---- */
-
-/* RNG draws of the chest loot (StructurePieceTreasure.a with the dungeon list plus an
- * enchanted book) -- see dungeon_book() for the book */
-static void dungeon_book(void);
-
-static void dungeon_loot(void) {
-    dungeon_book();
-    for (int j = 0; j < 8; j++) {
-        static const uint8_t W[16] = {10, 10, 10, 10, 10, 10, 10, 1, 10, 4, 4, 10, 2, 5, 1, 1};
-        static const uint8_t MX[16] = {1, 4, 1, 4, 4, 4, 1, 1, 4, 1, 1, 1, 1, 1, 1, 1};
-        int r = RI(108), k = 0;
-        while (k < 15 && (r -= W[k]) >= 0) k++;
-        RI(MX[k]); /* count = min + nextInt(max - min + 1), min = 1 */
-        RI(27);    /* slot */
-    }
-}
-
-static void dungeon(int X, int Y, int Z) {
-    int i = RI(2) + 2, j = -i - 1, k = i + 1;
-    int l = RI(2) + 2, i1 = -l - 1, j1 = l + 1;
-    if (pm_known && !(pm->dungeons >> dung_idx & 1)) return; /* failed before */
-    /* floor and ceiling must be buildable: caves only remove blocks, so test the view first */
-    for (int a = j; a <= k; a++)
-        for (int c = i1; c <= j1; c++)
-            if (!IS_BUILD(vget(X + a, Y - 1, Z + c)) || !IS_BUILD(vget(X + a, Y + 4, Z + c))) return;
-    cave_query(X + j, Y - 2, Z + i1, X + k + 1, Y + 6, Z + j1 + 1);
-    int k1 = 0;
-    for (int a = j; a <= k; a++)
-        for (int b = -1; b <= 4; b++)
-            for (int c = i1; c <= j1; c++) {
-                uint8_t m = vget(X + a, Y + b, Z + c);
-                if ((b == -1 || b == 4) && !IS_BUILD(m)) {
-                    PV.qon = 0;
-                    return;
-                }
-                if ((a == j || a == k || c == i1 || c == j1) && b == 0 && m == B_AIR && v_empty(X + a, Y + 1, Z + c)) ++k1;
-            }
-    if (k1 < 1 || k1 > 5) {
-        PV.qon = 0;
-        return;
-    }
-    pm->dungeons |= (uint8_t)(1 << dung_idx);
-    for (int a = j; a <= k; a++)
-        for (int b = 3; b >= -1; b--)
-            for (int c = i1; c <= j1; c++) {
-                int x = X + a, y = Y + b, z = Z + c;
-                uint8_t m = vget(x, y, z);
-                if (a != j && b != -1 && c != i1 && a != k && b != 4 && c != j1) {
-                    if (m != B_CHEST) put(x, y, z, B_AIR, R_NOTCHEST);
-                } else if (y >= 0 && !IS_BUILD(vget(x, y - 1, z))) {
-                    put(x, y, z, B_AIR, R_ALWAYS);
-                } else if (IS_BUILD(m) && m != B_CHEST) {
-                    if (b == -1 && RI(4) != 0) put(x, y, z, B_MOSSY_COBBLESTONE, R_WALL);
-                    else put(x, y, z, B_COBBLESTONE, R_WALL);
-                }
-            }
-    /* chests: candidates are interior cells (air after the loop above, or the first chest);
-     * neighbours are interior cells or the wall ring, which keeps its buildability */
-    int chx = 0x7fffffff, chz = 0;
-    for (int a = 0; a < 2; a++)
-        for (int t = 0; t < 3; t++) {
-            int x = X + RI(i * 2 + 1) - i, y = Y, z = Z + RI(l * 2 + 1) - l;
-            if (x == chx && z == chz) continue; /* not empty */
-            int n = 0;
-            static const int8_t D[4][2] = {{0, -1}, {1, 0}, {0, 1}, {-1, 0}};
-            for (int d = 0; d < 4; d++) {
-                int nx = x + D[d][0], nz = z + D[d][1];
-                if (nx > X + j && nx < X + k && nz > Z + i1 && nz < Z + j1) n += (nx == chx && nz == chz);
-                else n += IS_BUILD(vget(nx, y, nz)) != 0;
-            }
-            if (n == 1) {
-                put(x, y, z, B_CHEST, R_ALWAYS);
-                chx = x;
-                chz = z;
-                dungeon_loot();
-                break;
-            }
-        }
-    put(X, Y, Z, B_MOB_SPAWNER, R_ALWAYS);
-    RI(4); /* mob type */
-    PV.qon = 0;
-}
-
-/* ---- ores (WorldGenMinable) ---- */
-HOT static void minable(int X, int Y, int Z, int n, uint8_t blk) {
-    float f = RF() * 3.1415927f;
-    float s = mh_sin_i(f) * (float)n / 8.0f, c = mh_cos_i(f) * (float)n / 8.0f;
-    /* Java: (float)(x + 8) + sin * n / 8, in float with absolute coordinates */
-    float d0 = (float)(X + 8) + s, d1 = (float)(X + 8) - s, d2 = (float)(Z + 8) + c, d3 = (float)(Z + 8) - c;
-    int d4 = Y + RI(3) - 2, d5 = Y + RI(3) - 2;
-    /* can the vein touch C (and its y range)? radius <= n/16 + 1 around the segment */
-    float rmax = (float)n / 8.0f + 2.0f;
-    float minx = (d0 < d1 ? d0 : d1) - rmax, maxx = (d0 > d1 ? d0 : d1) + rmax;
-    float minz = (d2 < d3 ? d2 : d3) - rmax, maxz = (d2 > d3 ? d2 : d3) + rmax;
-    int miny = (d4 < d5 ? d4 : d5) - (int)rmax - 1, maxy = (d4 > d5 ? d4 : d5) + (int)rmax + 1;
-    int touch = maxx >= (float)(c_cx * 16) && minx < (float)(c_cx * 16 + 16) && maxz >= (float)(c_cz * 16) &&
-                minz < (float)(c_cz * 16 + 16) && maxy >= c_y0 && miny < c_y0 + c_h;
-    if (!touch) {
-        jr_skip(&PR, 2u * (unsigned)n); /* the n nextDouble (two steps each) */
-        return;
-    }
-    /* positions relative to an integer base so float keeps its precision */
-    int bx = floor_f(d0), bz = floor_f(d2);
-    float r0 = d0 - (float)bx, r1 = d1 - (float)bx, r2 = d2 - (float)bz, r3 = d3 - (float)bz;
-    /* C's blocks, relative to the base */
-    int cx0 = c_cx * 16 - bx, cx1 = cx0 + 15, cz0 = c_cz * 16 - bz, cz1 = cz0 + 15;
-    float hmax = (float)n / 16.0f + 1.0f; /* > the sphere radius, (sin + 1) * d9 / 2 + 1/2 */
-    for (int i = 0; i < n; i++) {
-        float f1 = (float)i / (float)n;
-        float d6 = r0 + (r1 - r0) * f1, d7 = (float)d4 + (float)(d5 - d4) * f1, d8 = r2 + (r3 - r2) * f1;
-        if (d6 + hmax < (float)cx0 || d6 - hmax > (float)(cx1 + 1) || d8 + hmax < (float)cz0 ||
-            d8 - hmax > (float)(cz1 + 1) || d7 + hmax < (float)c_y0 || d7 - hmax > (float)(c_y0 + c_h)) {
-            jr_skip(&PR, 2); /* its nextDouble */
-            continue;
-        }
-        float d9 = jr_doublef_i(&PR) * (float)n / 16.0f;
-        float d10 = (mh_sin_i(3.1415927f * f1) + 1.0f) * d9 + 1.0f, h = d10 / 2.0f;
-        int j = floor_f_i(d6 - h), k = floor_f_i(d7 - h), l = floor_f_i(d8 - h);
-        int i1 = floor_f_i(d6 + h), j1 = floor_f_i(d7 + h), k1 = floor_f_i(d8 + h);
-        /* only C's columns and rows can be written */
-        if (j < cx0) j = cx0;
-        if (i1 > cx1) i1 = cx1;
-        if (k < c_y0) k = c_y0;
-        if (j1 > c_y0 + c_h - 1) j1 = c_y0 + c_h - 1;
-        if (l < cz0) l = cz0;
-        if (k1 > cz1) k1 = cz1;
-        if (j > i1 || k > j1 || l > k1) continue;
-        /* squares of the per-axis distances (the same operations as Java's, hoisted); the
-         * writes replace stone only, which leaves C's column tracking as it is */
-        float q14[16];
-        for (int j2 = l; j2 <= k1; j2++) {
-            float d14 = ((float)j2 + 0.5f - d8) / h;
-            q14[j2 - l] = d14 * d14;
-        }
-        for (int l1 = j; l1 <= i1; l1++) {
-            float d12 = ((float)l1 + 0.5f - d6) / h, q12 = d12 * d12;
-            if (q12 >= 1.0f) continue;
-            uint8_t *colp = c_out + ((bx + l1) & 15);
-            for (int i2 = k; i2 <= j1; i2++) {
-                float d13 = ((float)i2 + 0.5f - d7) / h, q = q12 + d13 * d13;
-                if (q >= 1.0f) continue;
-                uint8_t *row = colp + (i2 - c_y0) * 256;
-                for (int j2 = l; j2 <= k1; j2++)
-                    if (q + q14[j2 - l] < 1.0f) {
-                        uint8_t *o = row + ((bz + j2) & 15) * 16;
-                        if (*o == B_STONE) *o = blk;
-                    }
-            }
-        }
-    }
-}
-
-static void ores(void) {
-    static const struct {
-        uint8_t n, size, lo, hi, blk;
-    } O[] = {{10, 33, 0, 255, 0}, {8, 33, 0, 255, 1}, {10, 33, 0, 80, 2}, {10, 33, 0, 80, 3},
-             {10, 33, 0, 80, 4},  {20, 17, 0, 128, 5}, {20, 9, 0, 64, 6},  {2, 9, 0, 32, 7},
-             {8, 8, 0, 16, 8},    {1, 8, 0, 16, 9}};
-    const uint8_t blocks[10] = {B_DIRT, B_GRAVEL, B_DIORITE, B_GRANITE, B_ANDESITE,
-                                B_COAL_ORE, B_IRON_ORE, B_GOLD_ORE, B_REDSTONE_ORE, B_DIAMOND_ORE};
-    for (int t = 0; t < 10; t++) {
-        int hi = O[t].hi == 255 ? 256 : O[t].hi;
-        for (int c = 0; c < O[t].n; c++) {
-            int x = RI(16), y = RI(hi - O[t].lo) + O[t].lo, z = RI(16);
-            minable(PK + x, y, PL + z, O[t].size, blocks[O[t].blk]);
-        }
-    }
-    /* lapis: b(1, lapis, 16, 16): y = nextInt(16) + nextInt(16) + 16 - 16 */
-    int x = RI(16), y = RI(16) + RI(16), z = RI(16);
-    minable(PK + x, y, PL + z, 7, B_LAPIS_ORE);
-}
-
-/* ---- disks (WorldGenSand, WorldGenClay) ---- */
-static void disk(uint8_t blk, int size, int yr, int clay) {
-    int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-    int y = top_solid(x, z);
-    uint8_t m = vget(x, y, z);
-    if (!(m == B_WATER || m == B_FLOWING_WATER)) return;
-    int i = RI(size - 2) + 2;
-    for (int a = x - i; a <= x + i; a++)
-        for (int b = z - i; b <= z + i; b++) {
-            int dx = a - x, dz = b - z;
-            if (dx * dx + dz * dz > i * i) continue;
-            for (int c = y - yr; c <= y + yr; c++) put_c(a, c, b, blk, clay ? R_DIRTCLAY : R_DIRTGRASS);
-        }
-}
-
-/* ---- trees ---- */
-
-enum {
-    TR_OAK, TR_JUNGLE_SMALL, TR_BIG, TR_BIRCH, TR_BIRCH_TALL, TR_DARK, TR_TAIGA1, TR_TAIGA2, TR_MEGA_SPRUCE,
-    TR_MEGA_SPRUCE_H, TR_SWAMP, TR_ACACIA, TR_JUNGLE_MEGA, TR_BUSH
-};
-
-/* WorldGenTreeAbstract.a(Block) */
-static inline int tree_ok(uint8_t b) {
-    return b == B_AIR || IS_LEAVES(b) || b == B_GRASS || IS_DIRTISH(b) || IS_LOG(b) || b == B_VINE ||
-           (b >= B_SAPLING_OAK && b <= B_SAPLING_DARK_OAK);
-}
-#define AIR_OR_LEAVES(b) ((b) == B_AIR || IS_LEAVES(b))
-#define TREE_REPL(b) ((b) == B_AIR || IS_LEAVES(b) || IS_RPLANT(b))
-
-/* WorldGenTreeAbstract.a(world, pos): make the ground dirt */
-static void tree_dirt(int x, int y, int z) {
-    if (!IS_DIRTISH(vget(x, y, z))) put(x, y, z, B_DIRT, R_ALWAYS);
-}
-
-/* The current tree's own blocks around its trunk (7x7 columns, 32 high): vine passes and
- * trunk vines read them. 0 = untouched, else block id + 1. */
-static uint8_t tov[7 * 7 * 32];
-static int tov_on, tov_x, tov_y, tov_z;
-
-static uint8_t tget(int x, int y, int z) {
-    if (tov_on) {
-        int dx = x - tov_x + 3, dz = z - tov_z + 3, dy = y - tov_y;
-        if (dx >= 0 && dx < 7 && dz >= 0 && dz < 7 && dy >= 0 && dy < 32) {
-            uint8_t m = tov[(dy * 7 + dz) * 7 + dx];
-            if (m) return (uint8_t)(m - 1);
-        }
-    }
-    return vget(x, y, z);
-}
-
-static void tput(int x, int y, int z, uint8_t b, int rule) {
-    if (tov_on) {
-        int dx = x - tov_x + 3, dz = z - tov_z + 3, dy = y - tov_y;
-        if (dx >= 0 && dx < 7 && dz >= 0 && dz < 7 && dy >= 0 && dy < 32) tov[(dy * 7 + dz) * 7 + dx] = (uint8_t)(b + 1);
-    }
-    put(x, y, z, b, rule);
-}
-
-static void tov_begin(int x, int y, int z) {
-    memset(tov, 0, sizeof tov);
-    tov_on = 1;
-    tov_x = x;
-    tov_y = y;
-    tov_z = z;
-}
-
-static const int8_t HDIR[4][2] = {{0, -1}, {1, 0}, {0, 1}, {-1, 0}}; /* N, E, S, W */
-
-/* hanging vine (WorldGenTrees.b / WorldGenSwampTree.a) */
-static void vine_hang(int x, int y, int z) {
-    tput(x, y, z, B_VINE, R_AIR);
-    for (int i = 4; --y, tget(x, y, z) == B_AIR && i > 0; --i) tput(x, y, z, B_VINE, R_AIR);
-}
-
-/* WorldGenTrees (oak, small jungle): base height c, vines */
-/* A tree's space test: every block of the columns at Chebyshev distance d <= rmax around
- * (x, z), from y = lo[d < 2 ? d : 2] up to yhi, must pass (kind 0: air or leaves, 1: tree_ok).
- * The block loops it replaces have no side effects, so the order does not matter; in the
- * view, a column above its top is air but for a plant right above it. */
-static int col_pass(uint8_t b, int kind) { return kind ? tree_ok(b) : AIR_OR_LEAVES(b); }
-
-static int space_ok(int x, int z, int rmax, const int lo[3], int yhi, int kind) {
-    if (yhi >= 256) return 0;
-    View *v = &PV;
-    for (int dx = -rmax; dx <= rmax; dx++)
-        for (int dz = -rmax; dz <= rmax; dz++) {
-            int d = (dx < 0 ? -dx : dx) > (dz < 0 ? -dz : dz) ? (dx < 0 ? -dx : dx) : (dz < 0 ? -dz : dz);
-            int ya = lo[d < 2 ? d : 2], yb = yhi;
-            if (ya > yb) continue;
-            int X = x + dx, Z = z + dz, lx = X - v->ox, lz = Z - v->oz;
-            lx = lx < 0 ? 0 : lx > 31 ? 31 : lx;
-            lz = lz < 0 ? 0 : lz > 31 ? 31 : lz;
-            int i = lz * 32 + lx, top = v->top[i];
-            if (yb > top) {
-                if (v->pl[i] && ya <= top + 1 && !col_pass(v->pl[i], kind)) return 0;
-                if (ya > top) continue;
-                yb = top;
-            }
-            for (int y = ya; y <= yb; y++)
-                if (!col_pass(vget(X, y, Z), kind)) return 0;
-        }
-    return 1;
-}
-
-static int gen_trees(int x, int y, int z, int c, uint8_t log, uint8_t leaf, int vines) {
-    int i = RI(3) + c;
-    if (y < 1 || y + i + 1 > 256) return 0;
-    {
-        int lo[3] = {y, y + 1, y + i - 1}; /* radius 0 at y, 1 above, 2 from y + i - 1 */
-        if (!space_ok(x, z, 2, lo, y + 1 + i, 1)) return 0;
-    }
-    uint8_t below = vget(x, y - 1, z);
-    if (!((below == B_GRASS || IS_DIRTISH(below) || below == B_FARMLAND) && y < 256 - i - 1)) return 0;
-    if (vines) tov_begin(x, y, z);
-    tree_dirt(x, y - 1, z);
-    for (int j = y - 3 + i; j <= y + i; j++) {
-        int k = j - (y + i), i1 = 1 - k / 2;
-        for (int l1 = x - i1; l1 <= x + i1; l1++) {
-            int j1 = l1 - x;
-            for (int k1 = z - i1; k1 <= z + i1; k1++) {
-                int i2 = k1 - z;
-                if ((j1 < 0 ? -j1 : j1) != i1 || (i2 < 0 ? -i2 : i2) != i1 || (RI(2) != 0 && k != 0)) {
-                    if (TREE_REPL(tget(l1, j, k1))) tput(l1, j, k1, leaf, R_TREE);
-                }
-            }
-        }
-    }
-    for (int j = 0; j < i; j++) {
-        if (!TREE_REPL(tget(x, y + j, z))) continue;
-        tput(x, y + j, z, log, R_TREE);
-        if (vines && j > 0) {
-            if (RI(3) > 0 && tget(x - 1, y + j, z) == B_AIR) tput(x - 1, y + j, z, B_VINE, R_AIR);
-            if (RI(3) > 0 && tget(x + 1, y + j, z) == B_AIR) tput(x + 1, y + j, z, B_VINE, R_AIR);
-            if (RI(3) > 0 && tget(x, y + j, z - 1) == B_AIR) tput(x, y + j, z - 1, B_VINE, R_AIR);
-            if (RI(3) > 0 && tget(x, y + j, z + 1) == B_AIR) tput(x, y + j, z + 1, B_VINE, R_AIR);
-        }
-    }
-    if (vines) {
-        for (int j = y - 3 + i; j <= y + i; j++) {
-            int k = j - (y + i), i1 = 2 - k / 2;
-            for (int j1 = x - i1; j1 <= x + i1; j1++)
-                for (int k1 = z - i1; k1 <= z + i1; k1++) {
-                    if (!IS_LEAVES(tget(j1, j, k1))) continue;
-                    if (RI(4) == 0 && tget(j1 - 1, j, k1) == B_AIR) vine_hang(j1 - 1, j, k1);
-                    if (RI(4) == 0 && tget(j1 + 1, j, k1) == B_AIR) vine_hang(j1 + 1, j, k1);
-                    if (RI(4) == 0 && tget(j1, j, k1 - 1) == B_AIR) vine_hang(j1, j, k1 - 1);
-                    if (RI(4) == 0 && tget(j1, j, k1 + 1) == B_AIR) vine_hang(j1, j, k1 + 1);
-                }
-        }
-        if (RI(5) == 0 && i > 5) {
-            for (int j = 0; j < 2; j++)
-                for (int d = 0; d < 4; d++)
-                    if (RI(4 - j) == 0) {
-                        RI(3); /* cocoa age (cocoa is not a NumBlocks block: not placed) */
-                    }
-        }
-        tov_on = 0;
-    }
-    return 1;
-}
-
-/* WorldGenForest (birch, tall birch) */
-static int gen_birch(int x, int y, int z, int tall) {
-    int i = RI(3) + 5;
-    if (tall) i += RI(7);
-    if (y < 1 || y + i + 1 > 256) return 0;
-    {
-        int lo[3] = {y, y + 1, y + i - 1}; /* radius 0 at y, 1 above, 2 from y + i - 1 */
-        if (!space_ok(x, z, 2, lo, y + 1 + i, 1)) return 0;
-    }
-    uint8_t below = vget(x, y - 1, z);
-    if (!((below == B_GRASS || IS_DIRTISH(below) || below == B_FARMLAND) && y < 256 - i - 1)) return 0;
-    tree_dirt(x, y - 1, z);
-    for (int i1 = y - 3 + i; i1 <= y + i; i1++) {
-        int j1 = i1 - (y + i), j = 1 - j1 / 2;
-        for (int k = x - j; k <= x + j; k++) {
-            int k1 = k - x;
-            for (int l1 = z - j; l1 <= z + j; l1++) {
-                int i2 = l1 - z;
-                if ((k1 < 0 ? -k1 : k1) != j || (i2 < 0 ? -i2 : i2) != j || (RI(2) != 0 && j1 != 0))
-                    if (AIR_OR_LEAVES(vget(k, i1, l1))) put(k, i1, l1, B_LEAVES_BIRCH, R_AIRLEAF);
-            }
-        }
-    }
-    for (int i1 = 0; i1 < i; i1++)
-        if (AIR_OR_LEAVES(vget(x, y + i1, z))) put(x, y + i1, z, B_LOG_BIRCH, R_AIRLEAF);
-    return 1;
-}
-
-static int gen_taiga1(int x, int y, int z) {
-    int i = RI(5) + 7, j = i - RI(2) - 3, k = i - j, l = 1 + RI(k + 1);
-    if (y < 1 || y + i + 1 > 256) return 0;
-    {
-        int lo[3] = {y, y + (j > 0 ? j : 0), y + (j > 0 ? j : 0)}; /* radius 0 below y + j, l above */
-        if (!space_ok(x, z, l, lo, y + 1 + i, 1)) return 0;
-    }
-    uint8_t below = vget(x, y - 1, z);
-    if (!((below == B_GRASS || IS_DIRTISH(below)) && y < 256 - i - 1)) return 0;
-    tree_dirt(x, y - 1, z);
-    int k1 = 0;
-    for (int i2 = y + i; i2 >= y + j; i2--) {
-        for (int i1 = x - k1; i1 <= x + k1; i1++) {
-            int j1 = i1 - x;
-            for (int j2 = z - k1; j2 <= z + k1; j2++) {
-                int k2 = j2 - z;
-                if ((j1 < 0 ? -j1 : j1) != k1 || (k2 < 0 ? -k2 : k2) != k1 || k1 <= 0)
-                    if (!IS_CUBE(vget(i1, i2, j2))) put(i1, i2, j2, B_LEAVES_SPRUCE, R_NOTCUBE);
-            }
-        }
-        if (k1 >= 1 && i2 == y + j + 1) --k1;
-        else if (k1 < l) ++k1;
-    }
-    for (int i2 = 0; i2 < i - 1; i2++)
-        if (AIR_OR_LEAVES(vget(x, y + i2, z))) put(x, y + i2, z, B_LOG_SPRUCE, R_AIRLEAF);
-    return 1;
-}
-
-static int gen_taiga2(int x, int y, int z) {
-    int i = RI(4) + 6, j = 1 + RI(2), k = i - j, l = 2 + RI(2);
-    if (y < 1 || y + i + 1 > 256) return 0;
-    {
-        int lo[3] = {y, y + j, y + j}; /* radius 0 below y + j, l above */
-        if (!space_ok(x, z, l, lo, y + 1 + i, 0)) return 0;
-    }
-    uint8_t below = vget(x, y - 1, z);
-    if (!((below == B_GRASS || IS_DIRTISH(below) || below == B_FARMLAND) && y < 256 - i - 1)) return 0;
-    tree_dirt(x, y - 1, z);
-    int j1 = RI(2), i2 = 1, b0 = 0;
-    for (int i1 = 0; i1 <= k; i1++) {
-        int j2 = y + i - i1;
-        for (int k2 = x - j1; k2 <= x + j1; k2++) {
-            int l2 = k2 - x;
-            for (int i3 = z - j1; i3 <= z + j1; i3++) {
-                int j3 = i3 - z;
-                if ((l2 < 0 ? -l2 : l2) != j1 || (j3 < 0 ? -j3 : j3) != j1 || j1 <= 0)
-                    if (!IS_CUBE(vget(k2, j2, i3))) put(k2, j2, i3, B_LEAVES_SPRUCE, R_NOTCUBE);
-            }
-        }
-        if (j1 >= i2) {
-            j1 = b0;
-            b0 = 1;
-            ++i2;
-            if (i2 > l) i2 = l;
-        } else {
-            ++j1;
-        }
-    }
-    int i1 = RI(3);
-    for (int j2 = 0; j2 < i - i1; j2++)
-        if (AIR_OR_LEAVES(vget(x, y + j2, z))) put(x, y + j2, z, B_LOG_SPRUCE, R_AIRLEAF);
-    return 1;
-}
-
-static int gen_swamp_tree(int x, int y, int z) {
-    int i = RI(4) + 5;
-    while (IS_WATER(vget(x, y - 1, z))) y--;
-    if (y < 1 || y + i + 1 > 256) return 0;
-    for (int l = y; l <= y + 1 + i; l++) {
-        int b0 = 1;
-        if (l == y) b0 = 0;
-        if (l >= y + 1 + i - 2) b0 = 3;
-        for (int j = x - b0; j <= x + b0; j++)
-            for (int k = z - b0; k <= z + b0; k++) {
-                if (l < 0 || l >= 256) return 0;
-                uint8_t b = vget(j, l, k);
-                if (!AIR_OR_LEAVES(b)) {
-                    if (!IS_WATER(b)) return 0;
-                    if (l > y) return 0;
-                }
-            }
-    }
-    uint8_t below = vget(x, y - 1, z);
-    if (!((below == B_GRASS || IS_DIRTISH(below)) && y < 256 - i - 1)) return 0;
-    tov_begin(x, y, z);
-    tree_dirt(x, y - 1, z);
-    for (int j1 = y - 3 + i; j1 <= y + i; j1++) {
-        int k1 = j1 - (y + i), j = 2 - k1 / 2;
-        for (int k = x - j; k <= x + j; k++) {
-            int l1 = k - x;
-            for (int i1 = z - j; i1 <= z + j; i1++) {
-                int i2 = i1 - z;
-                if ((l1 < 0 ? -l1 : l1) != j || (i2 < 0 ? -i2 : i2) != j || (RI(2) != 0 && k1 != 0))
-                    if (!IS_CUBE(tget(k, j1, i1))) tput(k, j1, i1, B_LEAVES_OAK, R_NOTCUBE);
-            }
-        }
-    }
-    for (int j1 = 0; j1 < i; j1++) {
-        uint8_t b = tget(x, y + j1, z);
-        if (AIR_OR_LEAVES(b) || IS_WATER(b)) tput(x, y + j1, z, B_LOG_OAK, R_ALWAYS);
-    }
-    for (int j1 = y - 3 + i; j1 <= y + i; j1++) {
-        int k1 = j1 - (y + i), j = 2 - k1 / 2;
-        for (int l1 = x - j; l1 <= x + j; l1++)
-            for (int i1 = z - j; i1 <= z + j; i1++) {
-                if (!IS_LEAVES(tget(l1, j1, i1))) continue;
-                if (RI(4) == 0 && tget(l1 - 1, j1, i1) == B_AIR) vine_hang(l1 - 1, j1, i1);
-                if (RI(4) == 0 && tget(l1 + 1, j1, i1) == B_AIR) vine_hang(l1 + 1, j1, i1);
-                if (RI(4) == 0 && tget(l1, j1, i1 - 1) == B_AIR) vine_hang(l1, j1, i1 - 1);
-                if (RI(4) == 0 && tget(l1, j1, i1 + 1) == B_AIR) vine_hang(l1, j1, i1 + 1);
-            }
-    }
-    tov_on = 0;
-    return 1;
-}
-
-static void acacia_leaf(int x, int y, int z) {
-    if (AIR_OR_LEAVES(vget(x, y, z))) put(x, y, z, B_LEAVES_ACACIA, R_AIRLEAF);
-}
-
-static int gen_acacia(int x, int y, int z) {
-    int i = RI(3) + RI(3) + 5;
-    if (y < 1 || y + i + 1 > 256) return 0;
-    for (int l = y; l <= y + 1 + i; l++) {
-        int b0 = 1;
-        if (l == y) b0 = 0;
-        if (l >= y + 1 + i - 2) b0 = 2;
-        for (int j = x - b0; j <= x + b0; j++)
-            for (int k = z - b0; k <= z + b0; k++)
-                if (l < 0 || l >= 256 || !tree_ok(vget(j, l, k))) return 0;
-    }
-    uint8_t below = vget(x, y - 1, z);
-    if (!((below == B_GRASS || IS_DIRTISH(below)) && y < 256 - i - 1)) return 0;
-    tree_dirt(x, y - 1, z);
-    int dir = RI(4);
-    int i1 = i - RI(4) - 1, j = 3 - RI(3), k = x, j1 = z, k1 = 0;
-    for (int i2 = 0; i2 < i; i2++) {
-        int l1 = y + i2;
-        if (i2 >= i1 && j > 0) {
-            k += HDIR[dir][0];
-            j1 += HDIR[dir][1];
-            --j;
-        }
-        if (AIR_OR_LEAVES(vget(k, l1, j1))) {
-            put(k, l1, j1, B_LOG_ACACIA, R_ALWAYS);
-            k1 = l1;
-        }
-    }
-    for (int a = -3; a <= 3; a++)
-        for (int b = -3; b <= 3; b++)
-            if ((a < 0 ? -a : a) != 3 || (b < 0 ? -b : b) != 3) acacia_leaf(k + a, k1, j1 + b);
-    for (int a = -1; a <= 1; a++)
-        for (int b = -1; b <= 1; b++) acacia_leaf(k + a, k1 + 1, j1 + b);
-    acacia_leaf(k + 2, k1 + 1, j1);
-    acacia_leaf(k - 2, k1 + 1, j1);
-    acacia_leaf(k, k1 + 1, j1 + 2);
-    acacia_leaf(k, k1 + 1, j1 - 2);
-    k = x;
-    j1 = z;
-    int dir1 = RI(4);
-    if (dir1 != dir) {
-        int l1 = i1 - RI(2) - 1, j2 = 1 + RI(3);
-        k1 = 0;
-        for (int l2 = l1; l2 < i && j2 > 0; --j2) {
-            if (l2 >= 1) {
-                int k2 = y + l2;
-                k += HDIR[dir1][0];
-                j1 += HDIR[dir1][1];
-                if (AIR_OR_LEAVES(vget(k, k2, j1))) {
-                    put(k, k2, j1, B_LOG_ACACIA, R_ALWAYS);
-                    k1 = k2;
-                }
-            }
-            ++l2;
-        }
-        if (k1 > 0) {
-            for (int a = -2; a <= 2; a++)
-                for (int b = -2; b <= 2; b++)
-                    if ((a < 0 ? -a : a) != 2 || (b < 0 ? -b : b) != 2) acacia_leaf(k + a, k1, j1 + b);
-            for (int a = -1; a <= 1; a++)
-                for (int b = -1; b <= 1; b++) acacia_leaf(k + a, k1 + 1, j1 + b);
-        }
-    }
-    return 1;
-}
-
-static void dark_log(int x, int y, int z) {
-    if (tree_ok(vget(x, y, z))) put(x, y, z, B_LOG_DARK_OAK, R_TREEOK);
-}
-static void dark_leaf(int x, int y, int z) {
-    if (vget(x, y, z) == B_AIR) put(x, y, z, B_LEAVES_DARK_OAK, R_AIR);
-}
-
-static int gen_dark_oak(int x, int y, int z) {
-    int i = RI(3);
-    i += RI(2) + 6;
-    if (y < 1 || y + i + 1 >= 256) return 0;
-    uint8_t below = vget(x, y - 1, z);
-    if (below != B_GRASS && !IS_DIRTISH(below)) return 0;
-    for (int i1 = 0; i1 <= i + 1; i1++) {
-        int b0 = 1;
-        if (i1 == 0) b0 = 0;
-        if (i1 >= i - 1) b0 = 2;
-        for (int j1 = -b0; j1 <= b0; j1++)
-            for (int k1 = -b0; k1 <= b0; k1++)
-                if (!tree_ok(vget(x + j1, y + i1, z + k1))) return 0;
-    }
-    tree_dirt(x, y - 1, z);
-    tree_dirt(x + 1, y - 1, z);
-    tree_dirt(x, y - 1, z + 1);
-    tree_dirt(x + 1, y - 1, z + 1);
-    int dir = RI(4);
-    int i1 = i - RI(4), j1 = 2 - RI(3), k1 = x, l1 = z, i2 = y + i - 1;
-    for (int j2 = 0; j2 < i; j2++) {
-        if (j2 >= i1 && j1 > 0) {
-            k1 += HDIR[dir][0];
-            l1 += HDIR[dir][1];
-            --j1;
-        }
-        int k2 = y + j2;
-        if (AIR_OR_LEAVES(vget(k1, k2, l1))) {
-            dark_log(k1, k2, l1);
-            dark_log(k1 + 1, k2, l1);
-            dark_log(k1, k2, l1 + 1);
-            dark_log(k1 + 1, k2, l1 + 1);
-        }
-    }
-    for (int j2 = -2; j2 <= 0; j2++)
-        for (int k2 = -2; k2 <= 0; k2++) {
-            dark_leaf(k1 + j2, i2 - 1, l1 + k2);
-            dark_leaf(1 + k1 - j2, i2 - 1, l1 + k2);
-            dark_leaf(k1 + j2, i2 - 1, 1 + l1 - k2);
-            dark_leaf(1 + k1 - j2, i2 - 1, 1 + l1 - k2);
-            if ((j2 > -2 || k2 > -1) && (j2 != -1 || k2 != -2)) {
-                dark_leaf(k1 + j2, i2 + 1, l1 + k2);
-                dark_leaf(1 + k1 - j2, i2 + 1, l1 + k2);
-                dark_leaf(k1 + j2, i2 + 1, 1 + l1 - k2);
-                dark_leaf(1 + k1 - j2, i2 + 1, 1 + l1 - k2);
-            }
-        }
-    if (jr_bool(&PR)) {
-        dark_leaf(k1, i2 + 2, l1);
-        dark_leaf(k1 + 1, i2 + 2, l1);
-        dark_leaf(k1 + 1, i2 + 2, l1 + 1);
-        dark_leaf(k1, i2 + 2, l1 + 1);
-    }
-    for (int j2 = -3; j2 <= 4; j2++)
-        for (int k2 = -3; k2 <= 4; k2++)
-            if ((j2 != -3 || k2 != -3) && (j2 != -3 || k2 != 4) && (j2 != 4 || k2 != -3) && (j2 != 4 || k2 != 4) &&
-                ((j2 < 0 ? -j2 : j2) < 3 || (k2 < 0 ? -k2 : k2) < 3))
-                dark_leaf(k1 + j2, i2, l1 + k2);
-    for (int j2 = -1; j2 <= 2; j2++)
-        for (int k2 = -1; k2 <= 2; k2++)
-            if ((j2 < 0 || j2 > 1 || k2 < 0 || k2 > 1) && RI(3) <= 0) {
-                int l2 = RI(3) + 2;
-                for (int i3 = 0; i3 < l2; i3++) dark_log(x + j2, i2 - i3 - 1, z + k2);
-                for (int i3 = -1; i3 <= 1; i3++)
-                    for (int j3 = -1; j3 <= 1; j3++) dark_leaf(k1 + j2 + i3, i2, l1 + k2 + j3);
-                for (int i3 = -2; i3 <= 2; i3++)
-                    for (int j3 = -2; j3 <= 2; j3++)
-                        if ((i3 < 0 ? -i3 : i3) != 2 || (j3 < 0 ? -j3 : j3) != 2) dark_leaf(k1 + j2 + i3, i2 - 1, l1 + k2 + j3);
-            }
-    return 1;
-}
-
-/* WorldGenMegaTreeAbstract helpers */
-static int mega_height(int a, int d) {
-    int i = RI(3) + a;
-    if (d > 1) i += RI(d);
-    return i;
-}
-
-static int mega_check(int x, int y, int z, int i) {
-    if (y < 1 || y + i + 1 > 256) return 0;
-    for (int j = 0; j <= 1 + i; j++) {
-        int b0 = 2;
-        if (j == 0) b0 = 1;
-        else if (j >= 1 + i - 2) b0 = 2;
-        for (int k = -b0; k <= b0; k++)
-            for (int l = -b0; l <= b0; l++) {
-                if (y + j < 0 || y + j >= 256) return 0;
-                if (!tree_ok(vget(x + k, y + j, z + l))) return 0;
-            }
-    }
-    uint8_t below = vget(x, y - 1, z);
-    if (!((below == B_GRASS || IS_DIRTISH(below)) && y >= 2)) return 0;
-    tree_dirt(x, y - 1, z);
-    tree_dirt(x + 1, y - 1, z);
-    tree_dirt(x, y - 1, z + 1);
-    tree_dirt(x + 1, y - 1, z + 1);
-    return 1;
-}
-
-static void mega_leaves2(int x, int y, int z, int r, uint8_t leaf) { /* 2x2-centred blob */
-    int j = r * r;
-    for (int k = -r; k <= r + 1; k++)
-        for (int l = -r; l <= r + 1; l++) {
-            int i1 = k - 1, j1 = l - 1;
-            if (k * k + l * l <= j || i1 * i1 + j1 * j1 <= j || k * k + j1 * j1 <= j || i1 * i1 + l * l <= j)
-                if (AIR_OR_LEAVES(vget(x + k, y, z + l))) put(x + k, y, z + l, leaf, R_AIRLEAF);
-        }
-}
-
-static void mega_leaves1(int x, int y, int z, int r, uint8_t leaf) { /* disc */
-    int j = r * r;
-    for (int k = -r; k <= r; k++)
-        for (int l = -r; l <= r; l++)
-            if (k * k + l * l <= j && AIR_OR_LEAVES(vget(x + k, y, z + l))) put(x + k, y, z + l, leaf, R_AIRLEAF);
-}
-
-static int gen_mega_spruce(int x, int y, int z, int h) {
-    int i = mega_height(13, 15);
-    if (!mega_check(x, y, z, i)) return 0;
-    /* crown */
-    int k = y + i;
-    int i1 = RI(5) + (h ? 13 : 3), j1 = 0;
-    for (int k1 = k - i1; k1 <= k; k1++) {
-        int l1 = k - k1;
-        int i2 = floor_f((float)l1 / (float)i1 * 3.5f);
-        mega_leaves2(x, k1, z, i2 + (l1 > 0 && i2 == j1 && (k1 & 1) == 0 ? 1 : 0), B_LEAVES_SPRUCE);
-        j1 = i2;
-    }
-    for (int j = 0; j < i; j++) {
-        if (AIR_OR_LEAVES(vget(x, y + j, z))) put(x, y + j, z, B_LOG_SPRUCE, R_AIRLEAF);
-        if (j < i - 1) {
-            if (AIR_OR_LEAVES(vget(x + 1, y + j, z))) put(x + 1, y + j, z, B_LOG_SPRUCE, R_AIRLEAF);
-            if (AIR_OR_LEAVES(vget(x + 1, y + j, z + 1))) put(x + 1, y + j, z + 1, B_LOG_SPRUCE, R_AIRLEAF);
-            if (AIR_OR_LEAVES(vget(x, y + j, z + 1))) put(x, y + j, z + 1, B_LOG_SPRUCE, R_AIRLEAF);
-        }
-    }
-    return 1;
-}
-
-static void podzol_col(int x, int y, int z) {
-    for (int i = 2; i >= -3; i--) {
-        uint8_t b = vget(x, y + i, z);
-        if (b == B_GRASS || IS_DIRTISH(b)) {
-            put(x, y + i, z, B_PODZOL, R_DIRTGRASS);
-            break;
-        }
-        if (b != B_AIR && i < 0) break;
-    }
-}
-
-static void podzol_patch(int x, int y, int z) {
-    for (int i = -2; i <= 2; i++)
-        for (int j = -2; j <= 2; j++)
-            if ((i < 0 ? -i : i) != 2 || (j < 0 ? -j : j) != 2) podzol_col(x + i, y, z + j);
-}
-
-static void mega_spruce_post(int x, int y, int z) {
-    podzol_patch(x - 1, y, z - 1);
-    podzol_patch(x + 2, y, z - 1);
-    podzol_patch(x - 1, y, z + 2);
-    podzol_patch(x + 2, y, z + 2);
-    for (int i = 0; i < 5; i++) {
-        int j = RI(64), k = j % 8, l = j / 8;
-        if (k == 0 || k == 7 || l == 0 || l == 7) podzol_patch(x - 3 + k, y, z - 3 + l);
-    }
-}
-
-static void jvine(int x, int y, int z) {
-    if (RI(3) > 0 && vget(x, y, z) == B_AIR) put(x, y, z, B_VINE, R_AIR);
-}
-
-static int gen_jungle_mega(int x, int y, int z) {
-    int i = mega_height(10, 20);
-    if (!mega_check(x, y, z, i)) return 0;
-    for (int j = -2; j <= 0; j++) mega_leaves2(x, y + i + j, z, 2 + 1 - j, B_LEAVES_JUNGLE);
-    for (int j = y + i - 2 - RI(4); j > y + i / 2; j -= 2 + RI(4)) {
-        float f = RF() * 3.1415927f * 2.0f;
-        int k = x + (int)(0.5f + mh_cos(f) * 4.0f), l = z + (int)(0.5f + mh_sin(f) * 4.0f);
-        for (int i1 = 0; i1 < 5; i1++) {
-            k = x + (int)(1.5f + mh_cos(f) * (float)i1);
-            l = z + (int)(1.5f + mh_sin(f) * (float)i1);
-            put(k, j - 3 + i1 / 2, l, B_LOG_JUNGLE, R_ALWAYS);
-        }
-        int i1 = 1 + RI(2), j1 = j;
-        for (int k1 = j - i1; k1 <= j1; k1++) mega_leaves1(k, k1, l, 1 - (k1 - j1), B_LEAVES_JUNGLE);
-    }
-    for (int i2 = 0; i2 < i; i2++) {
-        int yy = y + i2;
-        if (tree_ok(vget(x, yy, z))) {
-            put(x, yy, z, B_LOG_JUNGLE, R_TREEOK);
-            if (i2 > 0) {
-                jvine(x - 1, yy, z);
-                jvine(x, yy, z - 1);
-            }
-        }
-        if (i2 < i - 1) {
-            if (tree_ok(vget(x + 1, yy, z))) {
-                put(x + 1, yy, z, B_LOG_JUNGLE, R_TREEOK);
-                if (i2 > 0) {
-                    jvine(x + 2, yy, z);
-                    jvine(x + 1, yy, z - 1);
-                }
-            }
-            if (tree_ok(vget(x + 1, yy, z + 1))) {
-                put(x + 1, yy, z + 1, B_LOG_JUNGLE, R_TREEOK);
-                if (i2 > 0) {
-                    jvine(x + 2, yy, z + 1);
-                    jvine(x + 1, yy, z + 2);
-                }
-            }
-            if (tree_ok(vget(x, yy, z + 1))) {
-                put(x, yy, z + 1, B_LOG_JUNGLE, R_TREEOK);
-                if (i2 > 0) {
-                    jvine(x - 1, yy, z + 1);
-                    jvine(x, yy, z + 2);
-                }
-            }
-        }
-    }
-    return 1;
-}
-
-static int gen_bush(int x, int y, int z) {
-    uint8_t b;
-    while ((b = vget(x, y, z), AIR_OR_LEAVES(b)) && y > 0) y--;
-    b = vget(x, y, z);
-    if (!(IS_DIRTISH(b) || b == B_GRASS)) return 0;
-    y++;
-    put(x, y, z, B_LOG_JUNGLE, R_ALWAYS);
-    for (int i = y; i <= y + 2; i++) {
-        int j = i - y, k = 2 - j;
-        for (int l = x - k; l <= x + k; l++) {
-            int i1 = l - x;
-            for (int j1 = z - k; j1 <= z + k; j1++) {
-                int k1 = j1 - z;
-                if ((i1 < 0 ? -i1 : i1) != k || (k1 < 0 ? -k1 : k1) != k || RI(2) != 0)
-                    if (!IS_CUBE(vget(l, i, j1))) put(l, i, j1, B_LEAVES_OAK, R_NOTCUBE);
-            }
-        }
-    }
-    return 1;
-}
-
-/* ---- WorldGenBigTree (own java.util.Random; float instead of double) ---- */
-
-/* line from a to b: -1 if every block is replaceable for a tree, else the index of the first that is not */
-static int big_line_check(int ax, int ay, int az, int bx, int by, int bz) {
-    int dx = bx - ax, dy = by - ay, dz = bz - az;
-    int adx = dx < 0 ? -dx : dx, ady = dy < 0 ? -dy : dy, adz = dz < 0 ? -dz : dz;
-    int i = adz > adx && adz > ady ? adz : (ady > adx ? ady : adx);
-    if (i == 0) return -1;
-    float f = (float)dx / (float)i, f1 = (float)dy / (float)i, f2 = (float)dz / (float)i;
-    for (int j = 0; j <= i; j++) {
-        int px = ax + floor_f(0.5f + (float)j * f), py = ay + floor_f(0.5f + (float)j * f1),
-            pz = az + floor_f(0.5f + (float)j * f2);
-        if (!tree_ok(vget(px, py, pz))) return j;
-    }
-    return -1;
-}
-
-static void big_line_place(int ax, int ay, int az, int bx, int by, int bz) {
-    int dx = bx - ax, dy = by - ay, dz = bz - az;
-    int adx = dx < 0 ? -dx : dx, ady = dy < 0 ? -dy : dy, adz = dz < 0 ? -dz : dz;
-    int i = adz > adx && adz > ady ? adz : (ady > adx ? ady : adx);
-    float f = (float)dx / (float)i, f1 = (float)dy / (float)i, f2 = (float)dz / (float)i;
-    for (int j = 0; j <= i; j++) {
-        int px = ax + floor_f(0.5f + (float)j * f), py = ay + floor_f(0.5f + (float)j * f1),
-            pz = az + floor_f(0.5f + (float)j * f2);
-        int ex = px - ax < 0 ? ax - px : px - ax, ez = pz - az < 0 ? az - pz : pz - az, m = ex > ez ? ex : ez;
-        uint8_t b = B_LOG_OAK;
-        if (m > 0) b = ex == m ? B_LOG_OAK_X : B_LOG_OAK_Z;
-        put(px, py, pz, b, R_ALWAYS);
-    }
-}
-
-static int gen_big_tree(int x, int y, int z) {
-    JRand k;
-    jr_seed(&k, jr_long(&PR));
-    int a = 5 + jr_int(&k, 12); /* height (fresh each tree, see the deviations) */
-    const int li = 5;           /* leaf distance (e() sets 5) */
-    uint8_t below = vget(x, y - 1, z);
-    if (!(IS_DIRTISH(below) || below == B_GRASS || below == B_FARMLAND)) return 0;
-    int c = big_line_check(x, y, z, x, y + a - 1, z);
-    if (c != -1) {
-        if (c < 6) return 0;
-        a = c;
-    }
-    /* prepare */
-    int b = (int)((double)a * ((double)618 / 1000)); /* 0.618 */
-    if (b >= a) b = a - 1;
-    double pw = (double)a / 13;
-    int ni = (int)((double)1382 / 1000 + pw * pw); /* 1.382 */
-    if (ni < 1) ni = 1;
-    int j = y + b, kk = a - li, n = 0;
-    big_list[n++] = (BigPos){x, y + kk, z, j};
-    for (; kk >= 0; --kk) {
-        float fs; /* WorldGenBigTree.a(int): crown radius at this layer */
-        if ((float)kk < (float)a * 0.3f) {
-            fs = -1.0f;
-        } else {
-            float f = (float)a / 2.0f, f1 = f - (float)kk;
-            if (f1 == 0.0f) fs = f * 0.5f;
-            else if ((f1 < 0 ? -f1 : f1) >= f) fs = 0.0f;
-            else fs = sqrtf(f * f - f1 * f1) * 0.5f;
-        }
-        if (fs < 0.0f) continue;
-        for (int l = 0; l < ni; l++) {
-            float d0 = fs * (jr_float(&k) + 0.328f);
-            float d1 = jr_float(&k) * 2.0f * 3.14159265f;
-            float d2 = d0 * sinf(d1) + 0.5f, d3 = d0 * cosf(d1) + 0.5f;
-            int px = x + floor_f(d2), py = y + kk - 1, pz = z + floor_f(d3);
-            if (big_line_check(px, py, pz, px, py + li, pz) == -1) {
-                int i1 = x - px, j1 = z - pz;
-                float d4 = (float)py - sqrtf((float)(i1 * i1 + j1 * j1)) * 0.381f;
-                int k1 = d4 > (float)j ? j : (int)d4;
-                if (big_line_check(x, k1, z, px, py, pz) == -1 && n < 48) big_list[n++] = (BigPos){px, py, pz, k1};
-            }
-        }
-    }
-    /* leaves */
-    for (int p = 0; p < n; p++)
-        for (int i = 0; i < li; i++) {
-            int f = (i != 0 && i != li - 1) ? 3 : 2, r = (int)((float)f + 0.618f);
-            for (int dx = -r; dx <= r; dx++)
-                for (int dz = -r; dz <= r; dz++) {
-                    int ax = dx < 0 ? -dx : dx, az = dz < 0 ? -dz : dz;
-                    if ((2 * ax + 1) * (2 * ax + 1) + (2 * az + 1) * (2 * az + 1) <= 4 * f * f) {
-                        int px = big_list[p].x + dx, py = big_list[p].y + i, pz = big_list[p].z + dz;
-                        if (AIR_OR_LEAVES(vget(px, py, pz))) put(px, py, pz, B_LEAVES_OAK, R_AIRLEAF);
-                    }
-                }
-        }
-    /* trunk */
-    big_line_place(x, y, z, x, y + b, z);
-    /* branches */
-    for (int p = 0; p < n; p++) {
-        int q = big_list[p].q;
-        if ((q != big_list[p].y || x != big_list[p].x || z != big_list[p].z) && (double)(q - y) >= (double)a * ((double)2 / 10))
-            big_line_place(x, q, z, big_list[p].x, big_list[p].y, big_list[p].z);
-    }
-    return 1;
-}
-
-/* ---- huge mushrooms ---- */
-static int gen_huge_mushroom(int x, int y, int z) {
-    int red = !jr_bool(&PR); /* nextBoolean ? brown : red */
-    int i = RI(3) + 4;
-    if (y < 1 || y + i + 1 >= 256) return 0;
-    for (int l = y; l <= y + 1 + i; l++) {
-        int b0 = 3;
-        if (l <= y + 3) b0 = 0;
-        for (int j = x - b0; j <= x + b0; j++)
-            for (int k = z - b0; k <= z + b0; k++) {
-                if (l < 0 || l >= 256) return 0;
-                if (!AIR_OR_LEAVES(vget(j, l, k))) return 0;
-            }
-    }
-    uint8_t below = vget(x, y - 1, z);
-    if (!(IS_DIRTISH(below) || below == B_GRASS || below == B_MYCELIUM)) return 0;
-    uint8_t cap = red ? B_RED_MUSHROOM_CAP : B_BROWN_MUSHROOM_CAP, stem = red ? B_RED_MUSHROOM_STEM : B_BROWN_MUSHROOM_STEM;
-    int i1 = y + i;
-    if (red) i1 = y + i - 3;
-    for (int j1 = i1; j1 <= y + i; j1++) {
-        int j = 1;
-        if (j1 < y + i) ++j;
-        if (!red) j = 3;
-        int k = x - j, k1 = x + j, l1 = z - j, i2 = z + j;
-        for (int j2 = k; j2 <= k1; j2++)
-            for (int k2 = l1; k2 <= i2; k2++) {
-                int l2 = 5;
-                if (j2 == k) --l2;
-                else if (j2 == k1) ++l2;
-                if (k2 == l1) l2 -= 3;
-                else if (k2 == i2) l2 += 3;
-                if (!red || j1 < y + i) {
-                    if ((j2 == k || j2 == k1) && (k2 == l1 || k2 == i2)) continue;
-                    if (j2 == x - (j - 1) && k2 == l1) l2 = 1;
-                    if (j2 == k && k2 == z - (j - 1)) l2 = 1;
-                    if (j2 == x + (j - 1) && k2 == l1) l2 = 3;
-                    if (j2 == k1 && k2 == z - (j - 1)) l2 = 3;
-                    if (j2 == x - (j - 1) && k2 == i2) l2 = 7;
-                    if (j2 == k && k2 == z + (j - 1)) l2 = 7;
-                    if (j2 == x + (j - 1) && k2 == i2) l2 = 9;
-                    if (j2 == k1 && k2 == z + (j - 1)) l2 = 9;
-                }
-                if (l2 == 5 && j1 < y + i) l2 = 0; /* ALL_INSIDE */
-                if (l2 != 0 && !IS_CUBE(vget(j2, j1, k2))) put(j2, j1, k2, cap, R_NOTCUBE);
-            }
-    }
-    for (int j1 = 0; j1 < i; j1++)
-        if (!IS_CUBE(vget(x, y + j1, z))) put(x, y + j1, z, stem, R_NOTCUBE);
-    return 1;
-}
-
-/* selection of a tree generator (biome.a(Random)) */
-typedef struct {
-    uint8_t type, c;
-} TreeSel;
-
-static TreeSel tree_select(const Biome *b) {
-    TreeSel t = {TR_OAK, 4};
-    switch (b->tree) {
-    case T_DEFAULT: t.type = RI(10) == 0 ? TR_BIG : TR_OAK; break;
-    case T_HILLS: t.type = RI(3) > 0 ? TR_TAIGA2 : (RI(10) == 0 ? TR_BIG : TR_OAK); break;
-    case T_FOREST0:
-    case T_FOREST1: t.type = RI(5) != 0 ? TR_OAK : TR_BIRCH; break;
-    case T_BIRCH: t.type = TR_BIRCH; break;
-    case T_ROOFED: t.type = RI(3) > 0 ? TR_DARK : (RI(5) != 0 ? TR_OAK : TR_BIRCH); break;
-    case T_BIRCH_SUB: t.type = jr_bool(&PR) ? TR_BIRCH_TALL : TR_BIRCH; break;
-    case T_TAIGA0: t.type = RI(3) == 0 ? TR_TAIGA1 : TR_TAIGA2; break;
-    case T_TAIGA1:
-        if (RI(3) == 0) t.type = RI(13) != 0 ? TR_MEGA_SPRUCE : TR_MEGA_SPRUCE_H;
-        else t.type = RI(3) == 0 ? TR_TAIGA1 : TR_TAIGA2;
-        break;
-    case T_TAIGA2:
-        if (RI(3) == 0) t.type = TR_MEGA_SPRUCE_H;
-        else t.type = RI(3) == 0 ? TR_TAIGA1 : TR_TAIGA2;
-        break;
-    case T_SWAMP: t.type = TR_SWAMP; break;
-    case T_ICE: t.type = TR_TAIGA2; break;
-    case T_JUNGLE:
-    case T_JUNGLE_EDGE:
-        if (RI(10) == 0) t.type = TR_BIG;
-        else if (RI(2) == 0) t.type = TR_BUSH;
-        else if (b->tree == T_JUNGLE && RI(3) == 0) t.type = TR_JUNGLE_MEGA;
-        else {
-            t.type = TR_JUNGLE_SMALL;
-            t.c = (uint8_t)(4 + RI(7));
-        }
-        break;
-    case T_SAVANNA: t.type = RI(5) > 0 ? TR_ACACIA : TR_OAK; break;
-    case T_MESA: t.type = TR_OAK; break;
-    }
-    return t;
-}
-
-/* generate() then, on success, the post step (podzol of mega spruces) */
-static void tree_grow(TreeSel t, int x, int y, int z) {
-    int ok = 0;
-    switch (t.type) {
-    case TR_OAK: ok = gen_trees(x, y, z, 4, B_LOG_OAK, B_LEAVES_OAK, 0); break;
-    case TR_JUNGLE_SMALL: ok = gen_trees(x, y, z, t.c, B_LOG_JUNGLE, B_LEAVES_JUNGLE, 1); break;
-    case TR_BIG: ok = gen_big_tree(x, y, z); break;
-    case TR_BIRCH: ok = gen_birch(x, y, z, 0); break;
-    case TR_BIRCH_TALL: ok = gen_birch(x, y, z, 1); break;
-    case TR_DARK: ok = gen_dark_oak(x, y, z); break;
-    case TR_TAIGA1: ok = gen_taiga1(x, y, z); break;
-    case TR_TAIGA2: ok = gen_taiga2(x, y, z); break;
-    case TR_MEGA_SPRUCE: ok = gen_mega_spruce(x, y, z, 0); break;
-    case TR_MEGA_SPRUCE_H: ok = gen_mega_spruce(x, y, z, 1); break;
-    case TR_SWAMP: ok = gen_swamp_tree(x, y, z); break;
-    case TR_ACACIA: ok = gen_acacia(x, y, z); break;
-    case TR_JUNGLE_MEGA: ok = gen_jungle_mega(x, y, z); break;
-    case TR_BUSH: ok = gen_bush(x, y, z); break;
-    }
-    if (ok && (t.type == TR_MEGA_SPRUCE || t.type == TR_MEGA_SPRUCE_H)) mega_spruce_post(x, y, z);
-}
-
-/* ---- plants ---- */
-enum { SOIL_PLANT, SOIL_DEADBUSH, SOIL_LILY, SOIL_MUSH, SOIL_GRASS, SOIL_ANY };
-
-static inline int is_replaceable(uint8_t b) {
-    return b == B_AIR || IS_RPLANT(b) || b == B_SNOW_LAYER || IS_WATER(b) || b == B_LAVA || b == B_FLOWING_LAVA;
-}
-
-/* can a plant of this soil kind stay at (x, y, z) given the block below and above, using rd() */
-static int soil_ok(int soil, uint8_t below, int shaded) {
-    switch (soil) {
-    case SOIL_PLANT: return below == B_GRASS || IS_DIRTISH(below) || below == B_FARMLAND;
-    case SOIL_DEADBUSH: return below == B_SAND || below == B_RED_SAND || IS_CLAY(below) || IS_DIRTISH(below);
-    case SOIL_LILY: return below == B_WATER;
-    case SOIL_MUSH: return below == B_MYCELIUM || below == B_PODZOL || (shaded && IS_CUBE(below));
-    case SOIL_GRASS: return below == B_GRASS;
-    }
-    return 1;
-}
-
-/* a plant placed after a view decision: into the view; into C if C agrees */
-static void put_plant(int x, int y, int z, uint8_t b, int soil) {
-    if (in_c_range(x, y, z)) {
-        uint8_t cur = c_out[(y - c_y0) * 256 + (z - c_cz * 16) * 16 + (x - c_cx * 16)];
-        int shaded = y < c_top[(z & 15) * 16 + (x & 15)];
-        uint8_t below = cget(x, y - 1, z);
-        if (cur != B_AIR || !soil_ok(soil, below, shaded)) {
-            /* only the view */
-            put_skip_c = 1;
-            put(x, y, z, b, R_ALWAYS);
-            put_skip_c = 0;
-            return;
-        }
-    }
-    put(x, y, z, b, R_ALWAYS);
-}
-
-static inline int v_shaded(int x, int y, int z) { return y < hm(x, z) - 1; }
-
-/* the 6-draw offset of most plant features */
-/* the 6-draw offset of most plant features: nextInt(8) - nextInt(8), nextInt(4) - nextInt(4),
- * nextInt(8) - nextInt(8), drawn left to right (nextInt(2^k) is next(31) >> (31 - k)) */
-HOT static void ofs8(int *dx, int *dy, int *dz) {
-    int a = jr_next_i(&PR, 31) >> 28;
-    *dx = a - (jr_next_i(&PR, 31) >> 28);
-    a = jr_next_i(&PR, 31) >> 29;
-    *dy = a - (jr_next_i(&PR, 31) >> 29);
-    a = jr_next_i(&PR, 31) >> 28;
-    *dz = a - (jr_next_i(&PR, 31) >> 28);
-}
-#define OFS8(dx, dy, dz) ofs8(&(dx), &(dy), &(dz))
-
-/* v_empty(x, y, z) && soil_ok(soil, vget(x, y - 1, z), 0), soil not SOIL_ANY: in the view a
- * spot more than one block above its column's top is air over air, which no soil allows */
-HOT static int plant_ok(int x, int y, int z, int soil) {
-    View *v = &PV;
-    int lx = x - v->ox, lz = z - v->oz;
-    lx = lx < 0 ? 0 : lx > 31 ? 31 : lx;
-    lz = lz < 0 ? 0 : lz > 31 ? 31 : lz;
-    int i = lz * 32 + lx, top = v->top[i];
-    if (y > top + 1) return 0;
-    if (y == top + 1) return !v->pl[i] && soil_ok(soil, v->tb[i], 0);
-    return v_empty(x, y, z) && soil_ok(soil, vget(x, y - 1, z), 0);
-}
-
-static void feat_flowers(int X, int Y, int Z, uint8_t b) {
-    for (int i = 0; i < 64; i++) {
-        int dx, dy, dz;
-        OFS8(dx, dy, dz);
-        int x = X + dx, y = Y + dy, z = Z + dz;
-        if (plant_ok(x, y, z, SOIL_PLANT)) put_plant(x, y, z, b, SOIL_PLANT);
-    }
-}
-
-static void scan_down(int X, int *Y, int Z) {
-    uint8_t b;
-    while ((b = vget(X, *Y, Z), AIR_OR_LEAVES(b)) && *Y > 0) (*Y)--;
-}
-
-static void feat_grass(int X, int Y, int Z, uint8_t b) {
-    scan_down(X, &Y, Z);
-    for (int i = 0; i < 128; i++) {
-        int dx, dy, dz;
-        OFS8(dx, dy, dz);
-        int x = X + dx, y = Y + dy, z = Z + dz;
-        if (plant_ok(x, y, z, SOIL_PLANT)) put_plant(x, y, z, b, SOIL_PLANT);
-    }
-}
-
-static void feat_deadbush(int X, int Y, int Z) {
-    scan_down(X, &Y, Z);
-    for (int i = 0; i < 4; i++) {
-        int dx, dy, dz;
-        OFS8(dx, dy, dz);
-        int x = X + dx, y = Y + dy, z = Z + dz;
-        if (plant_ok(x, y, z, SOIL_DEADBUSH)) put_plant(x, y, z, B_DEAD_BUSH, SOIL_DEADBUSH);
-    }
-}
-
-static void feat_lily(int X, int Y, int Z) {
-    for (int i = 0; i < 10; i++) {
-        int dx, dy, dz;
-        OFS8(dx, dy, dz);
-        int x = X + dx, y = Y + dy, z = Z + dz;
-        if (plant_ok(x, y, z, SOIL_LILY)) put_plant(x, y, z, B_LILY_PAD, SOIL_LILY);
-    }
-}
-
-static void feat_mushrooms(int X, int Y, int Z, uint8_t b) {
-    for (int i = 0; i < 64; i++) {
-        int dx, dy, dz;
-        OFS8(dx, dy, dz);
-        int x = X + dx, y = Y + dy, z = Z + dz;
-        if (v_empty(x, y, z) && y < 255 && soil_ok(SOIL_MUSH, vget(x, y - 1, z), v_shaded(x, y, z)))
-            put_plant(x, y, z, b, SOIL_MUSH);
-    }
-}
-
-static int water_around(int x, int y, int z) {
-    return IS_WATER(vget(x - 1, y, z)) || IS_WATER(vget(x + 1, y, z)) || IS_WATER(vget(x, y, z - 1)) ||
-           IS_WATER(vget(x, y, z + 1));
-}
-
-static int reed_can(int x, int y, int z) {
-    uint8_t b = vget(x, y - 1, z);
-    if (b == B_SUGAR_CANE) return 1;
-    if (b != B_GRASS && !IS_DIRTISH(b) && b != B_SAND && b != B_RED_SAND) return 0;
-    return water_around(x, y - 1, z);
-}
-
-static void feat_reeds(int X, int Y, int Z) {
-    for (int i = 0; i < 20; i++) {
-        int dx = RI(4), dz;
-        dx -= RI(4);
-        dz = RI(4), dz -= RI(4);
-        int x = X + dx, y = Y, z = Z + dz;
-        if (!v_empty(x, y, z)) continue;
-        if (!water_around(x, y - 1, z)) continue;
-        int j = 2 + RI(RI(3) + 1);
-        int can = reed_can(x, y, z);
-        for (int k = 0; k < j; k++)
-            if (can) put(x, y + k, z, B_SUGAR_CANE, R_AIR);
-    }
-}
-
-static void feat_pumpkin(int X, int Y, int Z) {
-    for (int i = 0; i < 64; i++) {
-        int dx, dy, dz;
-        OFS8(dx, dy, dz);
-        int x = X + dx, y = Y + dy, z = Z + dz;
-        if (v_empty(x, y, z) && vget(x, y - 1, z) == B_GRASS) {
-            put_plant(x, y, z, B_PUMPKIN, SOIL_GRASS);
-            RI(4); /* facing */
-        }
-    }
-}
-
-static int cactus_can(int x, int y, int z) {
-    if (IS_BUILD(vget(x, y, z - 1)) || IS_BUILD(vget(x + 1, y, z)) || IS_BUILD(vget(x, y, z + 1)) ||
-        IS_BUILD(vget(x - 1, y, z)))
-        return 0;
-    uint8_t b = vget(x, y - 1, z);
-    return b == B_CACTUS || b == B_SAND || b == B_RED_SAND;
-}
-
-static void feat_cactus(int X, int Y, int Z) {
-    for (int i = 0; i < 10; i++) {
-        int dx, dy, dz;
-        OFS8(dx, dy, dz);
-        int x = X + dx, y = Y + dy, z = Z + dz;
-        if (!v_empty(x, y, z)) continue;
-        int j = 1 + RI(RI(3) + 1);
-        int can = cactus_can(x, y, z);
-        for (int k = 0; k < j; k++)
-            if (can) put(x, y + k, z, B_CACTUS, R_AIR);
-    }
-}
-
-static void feat_melon(int X, int Y, int Z) {
-    for (int i = 0; i < 64; i++) {
-        int dx, dy, dz;
-        OFS8(dx, dy, dz);
-        int x = X + dx, y = Y + dy, z = Z + dz;
-        if (is_replaceable(vget(x, y, z)) && vget(x, y - 1, z) == B_GRASS) put(x, y, z, B_MELON, R_ALWAYS);
-    }
-}
-
-/* WorldGenTallPlant: returns whether one was placed */
-static int feat_tallplant(int X, int Y, int Z, uint8_t lower) {
-    int placed = 0;
-    for (int i = 0; i < 64; i++) {
-        int dx, dy, dz;
-        OFS8(dx, dy, dz);
-        int x = X + dx, y = Y + dy, z = Z + dz;
-        if (plant_ok(x, y, z, SOIL_PLANT) && v_empty(x, y + 1, z)) {
-            int cok = 1;
-            if (in_c_cols(x, z)) {
-                if (y >= c_y0 && y < c_y0 + c_h && cget(x, y, z) != B_AIR) cok = 0;
-                if (y + 1 >= c_y0 && y + 1 < c_y0 + c_h && cget(x, y + 1, z) != B_AIR) cok = 0;
-                if (!soil_ok(SOIL_PLANT, cget(x, y - 1, z), 0)) cok = 0;
-            }
-            if (cok) {
-                put(x, y, z, lower, R_ALWAYS);
-                put(x, y + 1, z, (uint8_t)(lower + 1), R_ALWAYS);
-            } else {
-                put_skip_c = 1;
-                put(x, y, z, lower, R_ALWAYS);
-                put_skip_c = 0;
-            }
-            placed = 1;
-        }
-    }
-    return placed;
-}
-
-/* ---- biome specials ---- */
-static void feat_desert_well(int X, int Y, int Z) {
-    while (v_empty(X, Y, Z) && Y > 2) Y--;
-    if (vget(X, Y, Z) != B_SAND) return;
-    for (int i = -2; i <= 2; i++)
-        for (int j = -2; j <= 2; j++)
-            if (v_empty(X + i, Y - 1, Z + j) && v_empty(X + i, Y - 2, Z + j)) return;
-    for (int i = -1; i <= 0; i++)
-        for (int j = -2; j <= 2; j++)
-            for (int k = -2; k <= 2; k++) put(X + j, Y + i, Z + k, B_SANDSTONE, R_ALWAYS);
-    put(X, Y, Z, B_WATER, R_ALWAYS);
-    for (int d = 0; d < 4; d++) put(X + HDIR[d][0], Y, Z + HDIR[d][1], B_WATER, R_ALWAYS);
-    for (int i = -2; i <= 2; i++)
-        for (int j = -2; j <= 2; j++)
-            if (i == -2 || i == 2 || j == -2 || j == 2) put(X + i, Y + 1, Z + j, B_SANDSTONE, R_ALWAYS);
-    put(X + 2, Y + 1, Z, B_SANDSTONE_SLAB, R_ALWAYS);
-    put(X - 2, Y + 1, Z, B_SANDSTONE_SLAB, R_ALWAYS);
-    put(X, Y + 1, Z + 2, B_SANDSTONE_SLAB, R_ALWAYS);
-    put(X, Y + 1, Z - 2, B_SANDSTONE_SLAB, R_ALWAYS);
-    for (int i = -1; i <= 1; i++)
-        for (int j = -1; j <= 1; j++) put(X + i, Y + 4, Z + j, (i == 0 && j == 0) ? B_SANDSTONE : B_SANDSTONE_SLAB, R_ALWAYS);
-    for (int i = 1; i <= 3; i++) {
-        put(X - 1, Y + i, Z - 1, B_SANDSTONE, R_ALWAYS);
-        put(X - 1, Y + i, Z + 1, B_SANDSTONE, R_ALWAYS);
-        put(X + 1, Y + i, Z - 1, B_SANDSTONE, R_ALWAYS);
-        put(X + 1, Y + i, Z + 1, B_SANDSTONE, R_ALWAYS);
-    }
-}
-
-static void feat_ice_disk(int X, int Y, int Z) { /* WorldGenPackedIce1(4) */
-    while (v_empty(X, Y, Z) && Y > 2) Y--;
-    if (vget(X, Y, Z) != B_SNOW) return;
-    int i = RI(4 - 2) + 2;
-    for (int a = X - i; a <= X + i; a++)
-        for (int b = Z - i; b <= Z + i; b++) {
-            int dx = a - X, dz = b - Z;
-            if (dx * dx + dz * dz > i * i) continue;
-            for (int y = Y - 1; y <= Y + 1; y++) {
-                uint8_t m = vget(a, y, b);
-                if (IS_DIRTISH(m) || m == B_SNOW || m == B_ICE) put(a, y, b, B_PACKED_ICE, R_ICE);
-            }
-        }
-}
-
-static void feat_ice_spike(int X, int Y, int Z) { /* WorldGenPackedIce2 */
-    while (v_empty(X, Y, Z) && Y > 2) Y--;
-    if (vget(X, Y, Z) != B_SNOW) return;
-    Y += RI(4);
-    int i = RI(4) + 7, j = i / 4 + RI(2);
-    if (j > 1 && RI(60) == 0) Y += 10 + RI(30);
-    for (int k = 0; k < i; k++) {
-        float f = (1.0f - (float)k / (float)i) * (float)j;
-        int l = (int)f;
-        if (f > (float)l) l++; /* MathHelper.f: ceil */
-        for (int i1 = -l; i1 <= l; i1++) {
-            float f1 = (float)(i1 < 0 ? -i1 : i1) - 0.25f;
-            for (int j1 = -l; j1 <= l; j1++) {
-                float f2 = (float)(j1 < 0 ? -j1 : j1) - 0.25f;
-                if (((i1 == 0 && j1 == 0) || f1 * f1 + f2 * f2 <= f * f) &&
-                    ((i1 != -l && i1 != l && j1 != -l && j1 != l) || RF() <= 0.75f)) {
-                    uint8_t b = vget(X + i1, Y + k, Z + j1);
-                    if (b == B_AIR || IS_DIRTISH(b) || b == B_SNOW || b == B_ICE) put(X + i1, Y + k, Z + j1, B_PACKED_ICE, R_ICE);
-                    if (k != 0 && l > 1) {
-                        b = vget(X + i1, Y - k, Z + j1);
-                        if (b == B_AIR || IS_DIRTISH(b) || b == B_SNOW || b == B_ICE) put(X + i1, Y - k, Z + j1, B_PACKED_ICE, R_ICE);
-                    }
-                }
-            }
-        }
-    }
-    int k = j - 1;
-    if (k < 0) k = 0;
-    else if (k > 1) k = 1;
-    for (int k1 = -k; k1 <= k; k1++)
-        for (int l = -k; l <= k;) {
-            int y = Y - 1, l1 = 50;
-            if ((k1 < 0 ? -k1 : k1) == 1 && (l < 0 ? -l : l) == 1) l1 = RI(5);
-            while (y > 50) {
-                uint8_t b = vget(X + k1, y, Z + l);
-                if (!(b == B_AIR || IS_DIRTISH(b) || b == B_SNOW || b == B_ICE || b == B_PACKED_ICE)) break;
-                put(X + k1, y, Z + l, B_PACKED_ICE, R_ICE2);
-                y--;
-                --l1;
-                if (l1 <= 0) {
-                    y -= RI(5) + 1;
-                    l1 = RI(5);
-                }
-            }
-            ++l;
-        }
-}
-
-static void feat_boulder(int X, int Y, int Z) { /* WorldGenTaigaStructure(mossy cobblestone, 0) */
-    for (;;) {
-        if (Y > 3) {
-            if (!v_empty(X, Y - 1, Z)) {
-                uint8_t b = vget(X, Y - 1, Z);
-                if (b == B_GRASS || IS_DIRTISH(b) || b == B_STONE) break;
-            }
-            Y--;
-            continue;
-        }
-        break;
-    }
-    if (Y <= 3) return;
-    int i = 0;
-    for (int j = 0; i >= 0 && j < 3; ++j) {
-        int k = i + RI(2), l = i + RI(2), i1 = i + RI(2);
-        float f = (float)(k + l + i1) * 0.333f + 0.5f;
-        for (int a = -k; a <= k; a++)
-            for (int b = -l; b <= l; b++)
-                for (int c = -i1; c <= i1; c++)
-                    if ((float)(a * a + b * b + c * c) <= f * f) put(X + a, Y + b, Z + c, B_MOSSY_COBBLESTONE, R_ALWAYS);
-        X += -(i + 1) + RI(2 + i * 2);
-        Y += 0 - RI(2);
-        Z += -(i + 1) + RI(2 + i * 2);
-    }
-}
-
-/* ---- the decorator ---- */
-static uint8_t flower_select(const Biome *b, int x, int z) {
-    switch (b->flower) {
-    case F_SWAMP: return B_BLUE_ORCHID;
-    case F_FLOWER_FOREST: {
-        double d0 = (1 + (double)grass_noise_div(x, z, 48)) / 2;
-        if (d0 < 0) d0 = 0;
-        if (d0 > (double)9999 / 10000) d0 = (double)9999 / 10000; /* 0.9999 */
-        static const uint8_t V[10] = {B_DANDELION, B_POPPY, B_POPPY /* blue orchid -> poppy */, B_ALLIUM, B_AZURE_BLUET,
-                                      B_RED_TULIP, B_ORANGE_TULIP, B_WHITE_TULIP, B_PINK_TULIP, B_OXEYE_DAISY};
-        return V[(int)(d0 * 10)];
-    }
-    case F_PLAINS: {
-        float d0 = grass_noise_div(x, z, 200);
-        if (d0 < -0.8f) {
-            static const uint8_t T[4] = {B_ORANGE_TULIP, B_RED_TULIP, B_PINK_TULIP, B_WHITE_TULIP};
-            return T[RI(4)];
-        }
-        if (RI(3) > 0) {
-            int i = RI(3);
-            return i == 0 ? B_POPPY : (i == 1 ? B_AZURE_BLUET : B_OXEYE_DAISY);
-        }
-        return B_DANDELION;
-    }
-    default: return RI(3) > 0 ? B_DANDELION : B_POPPY;
-    }
-}
-
-static uint8_t grass_select(const Biome *b) {
-    switch (b->grass) {
-    case G_TAIGA: return RI(5) > 0 ? B_FERN : B_TALL_GRASS;
-    case G_JUNGLE: return RI(4) == 0 ? B_FERN : B_TALL_GRASS;
-    default: return B_TALL_GRASS;
-    }
-}
-
-static void spring(uint8_t still, uint8_t flowing, int x, int y, int z) {
-    if (!in_c_cols(x, z) || y < 0 || y > 255) return; /* only the block itself matters */
-    if (cget(x, y + 1, z) != B_STONE || cget(x, y - 1, z) != B_STONE) return;
-    uint8_t m = cget(x, y, z);
-    if (m != B_AIR && m != B_STONE) return;
-    int st = 0, air = 0, ad = -1;
-    for (int d = 0; d < 4; d++) {
-        uint8_t n = cget(x + HDIR[d][0], y, z + HDIR[d][1]);
-        st += n == B_STONE;
-        if (n == B_AIR) {
-            air++;
-            ad = d;
-        }
-    }
-    if (st == 3 && air == 1) {
-        put_c(x, y, z, still, R_ALWAYS);
-        put_c(x + HDIR[ad][0], y, z + HDIR[ad][1], flowing, R_AIR);
-    }
-}
-
-static void decorate_core(const Biome *b, int nB, int nC) {
-    ores();
-    for (int i = 0; i < b->dI; i++) disk(B_SAND, 7, 2, 0);
-    for (int i = 0; i < b->dJ; i++) disk(B_CLAY, 4, 1, 1);
-    for (int i = 0; i < b->dH; i++) disk(B_GRAVEL, 6, 2, 0);
-    int nt = b->dA;
-    if (RI(10) == 0) ++nt;
-    for (int j = 0; j < nt; j++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        TreeSel t = tree_select(b);
-        tree_grow(t, x, hm(x, z), z);
-    }
-    for (int j = 0; j < b->dK; j++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        gen_huge_mushroom(x, hm(x, z), z);
-    }
-    for (int j = 0; j < nB; j++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int i1 = hm(x, z) + 32;
-        if (i1 > 0) {
-            int y = RI(i1);
-            uint8_t f = flower_select(b, x, z);
-            feat_flowers(x, y, z, f);
-        }
-    }
-    for (int j = 0; j < nC; j++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int i1 = hm(x, z) * 2;
-        if (i1 > 0) {
-            int y = RI(i1);
-            uint8_t g = grass_select(b);
-            feat_grass(x, y, z, g);
-        }
-    }
-    for (int j = 0; j < b->dD; j++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int i1 = hm(x, z) * 2;
-        if (i1 > 0) feat_deadbush(x, RI(i1), z);
-    }
-    for (int j = 0; j < b->dZ; j++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int i1 = hm(x, z) * 2;
-        if (i1 > 0) {
-            int y = RI(i1);
-            while (y > 0 && v_empty(x, y - 1, z)) y--;
-            feat_lily(x, y, z);
-        }
-    }
-    for (int j = 0; j < b->dE; j++) {
-        if (RI(4) == 0) {
-            int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-            feat_mushrooms(x, hm(x, z), z, B_BROWN_MUSHROOM);
-        }
-        if (RI(8) == 0) {
-            int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-            int i1 = hm(x, z) * 2;
-            if (i1 > 0) feat_mushrooms(x, RI(i1), z, B_RED_MUSHROOM);
-        }
-    }
-    if (RI(4) == 0) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int i1 = hm(x, z) * 2;
-        if (i1 > 0) feat_mushrooms(x, RI(i1), z, B_BROWN_MUSHROOM);
-    }
-    if (RI(8) == 0) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int i1 = hm(x, z) * 2;
-        if (i1 > 0) feat_mushrooms(x, RI(i1), z, B_RED_MUSHROOM);
-    }
-    for (int j = 0; j < b->dF + 10; j++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int i1 = hm(x, z) * 2;
-        if (i1 > 0) feat_reeds(x, RI(i1), z);
-    }
-    if (RI(32) == 0) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int i1 = hm(x, z) * 2;
-        if (i1 > 0) feat_pumpkin(x, RI(i1), z);
-    }
-    for (int j = 0; j < b->dG; j++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int i1 = hm(x, z) * 2;
-        if (i1 > 0) feat_cactus(x, RI(i1), z);
-    }
-    for (int j = 0; j < 50; j++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int i1 = RI(248) + 8;
-        spring(B_WATER, B_FLOWING_WATER, x, RI(i1), z);
-    }
-    for (int j = 0; j < 20; j++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int y = RI(RI(RI(240) + 8) + 8);
-        spring(B_LAVA, B_FLOWING_LAVA, x, y, z);
-    }
-}
-
-static void double_plants(uint8_t lower, int n) {
-    for (int i = 0; i < n; i++) {
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int y = RI(hm(x, z) + 32);
-        feat_tallplant(x, y, z, lower);
-    }
-}
-
-/* BiomeForest.a */
-static void decorate_forest(const Biome *b) {
-    if (b->mode == 3) {
-        for (int i = 0; i < 4; i++)
-            for (int j = 0; j < 4; j++) {
-                int x = PK + i * 4 + 1 + 8 + RI(3), z = PL + j * 4 + 1 + 8 + RI(3);
-                int y = hm(x, z);
-                if (RI(20) == 0) {
-                    gen_huge_mushroom(x, y, z);
-                } else {
-                    TreeSel t = tree_select(b);
-                    tree_grow(t, x, y, z);
-                }
-            }
-    }
-    int n = RI(5) - 3;
-    if (b->mode == 1) n += 2;
-    for (int j = 0; j < n;) {
-        int k = RI(3);
-        uint8_t v = k == 0 ? B_LILAC_LOWER : (k == 1 ? B_ROSE_BUSH_LOWER : B_PEONY_LOWER);
-        int l = 0;
-        for (;;) {
-            if (l < 5) {
-                int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-                int y = RI(hm(x, z) + 32);
-                if (!feat_tallplant(x, y, z, v)) {
-                    ++l;
-                    continue;
-                }
-            }
-            ++j;
-            break;
-        }
-    }
-    decorate_core(b, b->dB, b->dC);
-}
-
-static void decorate(const Biome *b) {
-    switch (b->deco) {
-    case D_PLAINS: {
-        float d0 = grass_noise_div(PK + 8, PL + 8, 200);
-        int nB, nC;
-        if (d0 < -0.8f) {
-            nB = 15;
-            nC = 5;
-        } else {
-            nB = 4;
-            nC = 10;
-            double_plants(B_DOUBLE_GRASS_LOWER, 7);
-        }
-        if (b->mode) double_plants(B_SUNFLOWER_LOWER, 10);
-        decorate_core(b, nB, nC);
-        break;
-    }
-    case D_DESERT:
-        decorate_core(b, b->dB, b->dC);
-        if (RI(1000) == 0) {
-            int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-            feat_desert_well(x, hm(x, z) + 1, z);
-        }
-        break;
-    case D_HILLS: {
-        decorate_core(b, b->dB, b->dC);
-        int n = 3 + RI(6);
-        for (int j = 0; j < n; j++) {
-            int x = PK + RI(16), y = RI(28) + 4, z = PL + RI(16);
-            put_c(x, y, z, B_EMERALD_ORE, R_STONE);
-        }
-        for (int i = 0; i < 7; i++) {
-            int x = RI(16), y = RI(64), z = RI(16);
-            minable(PK + x, y, PL + z, 9, B_MONSTER_EGG_STONE);
-        }
-        break;
-    }
-    case D_FOREST: decorate_forest(b); break;
-    case D_ROOFED_SUB: decorate_forest(bio(BI_ROOFED)); break;
-    case D_TAIGA:
-        if (b->mode == 1 || b->mode == 2) {
-            int n = RI(3);
-            for (int j = 0; j < n; j++) {
-                int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-                feat_boulder(x, hm(x, z), z);
-            }
-        }
-        double_plants(B_LARGE_FERN_LOWER, 7);
-        decorate_core(b, b->dB, b->dC);
-        break;
-    case D_ICE:
-        if (b->mode) {
-            for (int i = 0; i < 3; i++) {
-                int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-                feat_ice_spike(x, hm(x, z), z);
-            }
-            for (int i = 0; i < 2; i++) {
-                int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-                feat_ice_disk(x, hm(x, z), z);
-            }
-        }
-        decorate_core(b, b->dB, b->dC);
-        break;
-    case D_JUNGLE: {
-        decorate_core(b, b->dB, b->dC);
-        int x = PK + RI(16) + 8, z = PL + RI(16) + 8;
-        int y = RI(hm(x, z) * 2);
-        feat_melon(x, y, z);
-        /* the 50 vine features start at y = 128 and place nothing; their draws come last */
-        break;
-    }
-    case D_SAVANNA:
-        double_plants(B_DOUBLE_GRASS_LOWER, 7);
-        decorate_core(b, b->dB, b->dC);
-        break;
-    default: decorate_core(b, b->dB, b->dC); break;
-    }
-}
-
-/* ---- one population ---- */
-
-static void populate(int px, int pz, int biome) {
-    View *v = &PV;
-    v->px = px;
-    v->pz = pz;
-    v->ox = px * 16;
-    v->oz = pz * 16;
-    v->nlake = 0;
-    v->qon = 0;
-    for (int lz = 0; lz < 32; lz++)
-        for (int lx = 0; lx < 32; lx++) {
-            const ColSum *s = col_sum(v->ox + lx, v->oz + lz);
-            int i = lz * 32 + lx;
-            uint8_t blk = cs_blk(s);
-            v->top[i] = (uint8_t)cs_top(s);
-            v->tb[i] = blk == B_LILY_PAD ? B_WATER : blk;
-            v->pl[i] = blk == B_LILY_PAD ? B_LILY_PAD : 0;
-        }
-    PK = px * 16;
-    PL = pz * 16;
-    const Biome *b = bio(biome);
-    jr_seed(&PR, (i64)((u64)(i64)px * (u64)pop_mul_x + (u64)(i64)pz * (u64)pop_mul_z) ^ g_seed);
-    pmemo_begin(px, pz);
-    /* TODO: structures (mineshafts, villages, strongholds, temples, monuments) would draw here */
-    if (b->id != BI_DESERT && b->id != BI_DESERT_HILLS && RI(4) == 0) {
-        int x = PK + RI(16) + 8, y = RI(256), z = PL + RI(16) + 8;
-        lake(B_WATER, x, y, z);
-    }
-    if (RI(8) == 0) {
-        int x = PK + RI(16) + 8, y = RI(RI(248) + 8), z = PL + RI(16) + 8;
-        if (y < SEA || RI(10) == 0) lake(B_LAVA, x, y, z);
-    }
-    for (int i = 0; i < 8; i++) {
-        int x = PK + RI(16) + 8, y = RI(256), z = PL + RI(16) + 8;
-        dung_idx = i;
-        dungeon(x, y, z);
-    }
-    pm->valid = 1; /* outcomes complete */
-    decorate(b);
-    /* SpawnerCreature draws next: nothing below depends on them */
-    /* freeze: ice on still water, snow on top, for the columns of this population inside C */
-    for (int dz = 0; dz < 16; dz++)
-        for (int dx = 0; dx < 16; dx++) {
-            int x = PK + 8 + dx, z = PL + 8 + dz;
-            if (!in_c_cols(x, z)) continue;
-            int i = (z & 15) * 16 + (x & 15);
-            int y1 = c_sl[i] + 1, y2 = c_sl[i];
-            const Biome *cb = bio(c_b16[i]);
-            if (biome_temp_at(cb, x, y2, z) <= 0.15f) {
-                uint8_t w = in_c_range(x, y2, z) ? cget(x, y2, z) : B_AIR;
-                if (w == B_WATER) put_c(x, y2, z, B_ICE, R_ALWAYS);
-            }
-            if (biome_temp_at(cb, x, y1, z) <= 0.15f && y1 < 256) {
-                uint8_t a = in_c_range(x, y1, z) ? cget(x, y1, z) : (y1 > c_top[i] ? B_AIR : B_STONE);
-                uint8_t u = in_c_range(x, y2, z) ? cget(x, y2, z) : vget(x, y2, z);
-                if (a == B_AIR && u != B_ICE && u != B_PACKED_ICE && (IS_LEAVES(u) || (IS_CUBE(u) && IS_SOLID(u)))) {
-                    if (in_c_range(x, y1, z)) {
-                        put_c(x, y1, z, B_SNOW_LAYER, R_AIR);
-                        if (u == B_GRASS && in_c_range(x, y2, z)) put_c(x, y2, z, B_GRASS_SNOWED, R_ALWAYS);
-                    } else if (y1 > c_top[i]) {
-                        c_top[i] = (uint8_t)y1;
-                    }
-                }
-            }
-        }
-}
-
-/* ======================================================================== */
-/* Enchanted book draws (EnchantmentManager.a(random, book, 30))             */
-/* ======================================================================== */
-static void dungeon_book(void) {
-    /* TODO: exact replay of the enchantment selection draws */
-}
+ * Everything at a block is a function of the seed and the block's position: a chunk
+ * comes out the same whatever order chunks are made in and whatever rows are asked.
+ * Trees reach up to 4 blocks from their trunk, so a chunk looks at the columns
+ * 4 blocks around it (the "area", cached for the last chunk). */
+#include <math.h>
+#include <string.h>
+#include "nb.h"
+#include "gen.h"
 
-/* ======================================================================== */
-/* Public API                                                                */
-/* ======================================================================== */
+#define SEA 61          /* the highest water block of seas and rivers */
+#define AREA 24         /* the chunk and 4 columns on each side */
+#define AR 4
 
-static int last_cx = 0x7fffffff, last_cz; /* chunk of the last gen_slab: c_top, c_b16 valid */
-static uint8_t col_tmp[256];
+static uint32_t g_seed;
+static int g_flat;
 
-/* carve hook: keep c_top / c_sl of C right when caves open the surface */
-static void cave_track(int x, int y, int z, uint8_t b) {
-    int i = z * 16 + x;
-    if (b == B_AIR && y == c_top[i]) c_lower_top(i, y);
-    if (y == c_sl[i] && b == B_AIR) c_sl[i] = c_top[i];
-    if (c_sl[i] < crep_lo) crep_lo = c_sl[i];
-    if (c_top[i] < crep_lo) crep_lo = c_top[i];
-}
+/* ---------------------------------------------------------------- hashing */
+static inline uint32_t mix32(uint32_t h) {
+  h ^= h >> 16;
+  h *= 0x7FEB352Du;
+  h ^= h >> 15;
+  h *= 0x846CA68Bu;
+  h ^= h >> 16;
+  return h;
+}
+static inline uint32_t hash2(int x, int z, uint32_t salt) {
+  return mix32((uint32_t)x * 0x9E3779B1u ^ mix32((uint32_t)z * 0x85EBCA77u ^ salt ^ g_seed));
+}
+static inline uint32_t hash3(int x, int y, int z, uint32_t salt) {
+  return mix32((uint32_t)x * 0x9E3779B1u ^ mix32((uint32_t)y * 0xC2B2AE3Du ^ mix32((uint32_t)z * 0x85EBCA77u ^ salt ^ g_seed)));
+}
+/* a small random stream (xorshift) for one chunk's veins and rooms */
+static uint32_t rs;
+static inline uint32_t rnext(void) {
+  rs ^= rs << 13;
+  rs ^= rs >> 17;
+  rs ^= rs << 5;
+  return rs;
+}
+static inline int rint_(int n) { return (int)((rnext() >> 8) % (uint32_t)n); }
+
+/* ---------------------------------------------------------------- noise */
+static inline float fade(float t) { return t * t * t * (t * (t * 6 - 15) + 10); }
+static inline float lerpf(float a, float b, float t) { return a + (b - a) * t; }
+static inline int fl(float f) { int i = (int)f; return f < i ? i - 1 : i; }
+
+/* 16 directions, turned 11 degrees off the axes */
+static const float G2[16][2] = {
+  {0.9816f, 0.1908f}, {0.7997f, 0.6004f}, {0.4695f, 0.8829f}, {0.0523f, 0.9986f}, {-0.3746f, 0.9272f},
+  {-0.7193f, 0.6947f}, {-0.9336f, 0.3584f}, {-0.9986f, -0.0523f}, {-0.8829f, -0.4695f}, {-0.6004f, -0.7997f},
+  {-0.1908f, -0.9816f}, {0.2250f, -0.9744f}, {0.5878f, -0.8090f}, {0.8660f, -0.5000f}, {0.9903f, -0.1392f},
+  {0.6947f, -0.7193f}};
+
+static float grad2(int ix, int iz, float dx, float dz, uint32_t salt) {
+  const float *g = G2[hash2(ix, iz, salt) & 15];
+  return g[0] * dx + g[1] * dz;
+}
+
+static float noise2(float x, float z, uint32_t salt) {
+  int ix = fl(x), iz = fl(z);
+  float fx = x - ix, fz = z - iz, u = fade(fx), v = fade(fz);
+  float a = grad2(ix, iz, fx, fz, salt), b = grad2(ix + 1, iz, fx - 1, fz, salt);
+  float c = grad2(ix, iz + 1, fx, fz - 1, salt), d = grad2(ix + 1, iz + 1, fx - 1, fz - 1, salt);
+  return lerpf(lerpf(a, b, u), lerpf(c, d, u), v) * 1.42f;
+}
+
+/* octaves: each twice as fine and 0.5 as strong, turned a little so their grids don't line up */
+static float fbm2(float x, float z, int oct, uint32_t salt) {
+  float s = 0, amp = 1, norm = 0;
+  for (int o = 0; o < oct; o++) {
+    s += noise2(x, z, salt + (uint32_t)o * 0x3C6EF372u) * amp;
+    norm += amp;
+    amp *= 0.5f;
+    float nx = x * 1.6f - z * 1.2f, nz = x * 1.2f + z * 1.6f;   /* x2, turned 37 degrees */
+    x = nx + 17.3f;
+    z = nz - 9.1f;
+  }
+  return s / norm;
+}
+
+static const int8_t G3[16][3] = {{1, 1, 0}, {-1, 1, 0}, {1, -1, 0}, {-1, -1, 0}, {1, 0, 1}, {-1, 0, 1}, {1, 0, -1},
+                                 {-1, 0, -1}, {0, 1, 1}, {0, -1, 1}, {0, 1, -1}, {0, -1, -1}, {1, 1, 1}, {-1, 1, -1},
+                                 {1, -1, -1}, {-1, -1, 1}};
+static float grad3(int ix, int iy, int iz, float dx, float dy, float dz, uint32_t salt) {
+  const int8_t *g = G3[hash3(ix, iy, iz, salt) & 15];
+  return g[0] * dx + g[1] * dy + g[2] * dz;
+}
+static float noise3(float x, float y, float z, uint32_t salt) {
+  int ix = fl(x), iy = fl(y), iz = fl(z);
+  float fx = x - ix, fy = y - iy, fz = z - iz, u = fade(fx), v = fade(fy), w = fade(fz);
+  float a0 = lerpf(grad3(ix, iy, iz, fx, fy, fz, salt), grad3(ix + 1, iy, iz, fx - 1, fy, fz, salt), u);
+  float a1 = lerpf(grad3(ix, iy + 1, iz, fx, fy - 1, fz, salt), grad3(ix + 1, iy + 1, iz, fx - 1, fy - 1, fz, salt), u);
+  float b0 = lerpf(grad3(ix, iy, iz + 1, fx, fy, fz - 1, salt), grad3(ix + 1, iy, iz + 1, fx - 1, fy, fz - 1, salt), u);
+  float b1 = lerpf(grad3(ix, iy + 1, iz + 1, fx, fy - 1, fz - 1, salt),
+                   grad3(ix + 1, iy + 1, iz + 1, fx - 1, fy - 1, fz - 1, salt), u);
+  return lerpf(lerpf(a0, a1, v), lerpf(b0, b1, v), w) * 0.95f;
+}
+
+static inline float smooth01(float a, float b, float t) {
+  t = (t - a) / (b - a);
+  t = t < 0 ? 0 : t > 1 ? 1 : t;
+  return t * t * (3 - 2 * t);
+}
+
+enum { S_CONT = 0x1001, S_DET = 0x2002, S_MASK = 0x3003, S_RIDGE = 0x4004, S_TEMP = 0x5005, S_HUM = 0x6006,
+       S_RIV = 0x7007, S_SWAMP = 0x8008, S_CAVE_A = 0x9009, S_CAVE_B = 0xA00A, S_CHAMBER = 0xB00B, S_ROCK = 0xC00C,
+       S_PATCH = 0xD00D, S_TNOISE = 0xE00E, S_PLANT = 0xF00F, S_TREE = 0x1101, S_BAND = 0x1202 };
+
+/* ---------------------------------------------------------------- the land and its biomes */
+/* the height of the top solid block of column (x, z) and its biome */
+static int land(int x, int z, uint8_t *biome) {
+  float fx = (float)x, fz = (float)z;
+  float cont = fbm2(fx / 330.0f, fz / 330.0f, 4, S_CONT);
+  float det = fbm2(fx / 70.0f, fz / 70.0f, 3, S_DET);
+  float mask = smooth01(0.12f, 0.5f, fbm2(fx / 520.0f, fz / 520.0f, 2, S_MASK));
+  float r = 1 - fabsf(fbm2(fx / 150.0f, fz / 150.0f, 3, S_RIDGE)) * 2.2f;
+  r = r < 0 ? 0 : r * r;
+  float temp = fbm2(fx / 450.0f, fz / 450.0f, 3, S_TEMP) * 1.7f;
+  float hum = fbm2(fx / 380.0f, fz / 380.0f, 3, S_HUM) * 1.7f;
+  float riv = fabsf(fbm2(fx / 280.0f, fz / 280.0f, 3, S_RIV));
+  float mount = mask * r * 48;
+  float hf = 62.5f + cont * 34 + det * (cont > 0 ? 5.0f : 2.5f) + mount;
+  /* swamps: flat and wet (blended in as the humidity rises) */
+  float sw = smooth01(0.42f, 0.62f, hum) * (1 - smooth01(-0.2f, 0.2f, temp - 0.25f)) * (hf < 70 ? 1.0f : 0.0f);
+  if (sw > 0) hf = lerpf(hf, 61.6f + det * 1.5f, sw);
+  /* rivers: a valley down to the water along the noise's zero line */
+  int river = 0;
+  if (hf > SEA - 2 && mount < 22) {
+    float w = 0.028f, t = riv / w;
+    if (t < 2.2f) {
+      float k = smooth01(0.0f, 2.2f, t);
+      hf = lerpf(SEA - 2.6f, hf, k);
+      if (t < 1) river = 1;
+    }
+  }
+  int h = (int)floorf(hf);
+  h = h < 6 ? 6 : h > 124 ? 124 : h;
+  uint8_t b;
+  bool cold = temp < -0.5f;
+  if (river && h < SEA) b = cold ? BIO_FROZEN_RIVER : BIO_RIVER;
+  else if (h < SEA - 1) b = cold ? BIO_FROZEN_OCEAN : BIO_OCEAN;
+  else if (h <= SEA + 1 && cont < 0.04f && sw < 0.5f) b = cold ? BIO_SNOWY : BIO_BEACH;
+  else if (mount > 20 && h > 80) b = BIO_MOUNTAINS;
+  else if (temp < -0.55f) b = BIO_SNOWY;
+  else if (temp < -0.25f) b = BIO_TAIGA;
+  else if (temp > 0.45f) b = hum < -0.15f ? (hum < -0.45f && h > 66 ? BIO_BADLANDS : BIO_DESERT)
+                         : hum < 0.25f ? BIO_SAVANNA : BIO_JUNGLE;
+  else if (sw >= 0.5f) b = BIO_SWAMP;
+  else if (hum > 0.42f) b = BIO_DARK_FOREST;
+  else if (hum > 0.08f) b = temp < -0.05f ? BIO_BIRCH_FOREST : BIO_FOREST;
+  else b = BIO_PLAINS;
+  /* swamp pools */
+  if (b == BIO_SWAMP && h <= SEA + 1 && fbm2(fx / 9.0f, fz / 9.0f, 2, S_SWAMP) < -0.18f) h = SEA - 1;
+  if (biome) *biome = b;
+  return h;
+}
+
+/* ---------------------------------------------------------------- the area around the chunk (cached) */
+static struct {
+  int cx, cz;
+  bool valid;
+  uint8_t h[AREA * AREA], b[AREA * AREA];
+  int8_t grid[4][5][33][5];   /* cave a, cave b, chamber, rock: every 4 blocks, x 127 */
+  uint8_t top[256];   /* the highest block (not air) of each column */
+  uint8_t sky[256];   /* the highest block that stops light (see opacity in world.c) */
+} A;
+
+static void area_make(int cx, int cz) {
+  if (A.valid && A.cx == cx && A.cz == cz) return;
+  A.cx = cx, A.cz = cz, A.valid = true;
+  for (int z = 0; z < AREA; z++)
+    for (int x = 0; x < AREA; x++) A.h[z * AREA + x] = (uint8_t)land(cx * 16 + x - AR, cz * 16 + z - AR, &A.b[z * AREA + x]);
+  static const uint32_t salt[4] = {S_CAVE_A, S_CAVE_B, S_CHAMBER, S_ROCK};
+  static const float freq[4] = {1 / 40.0f, 1 / 40.0f, 1 / 28.0f, 1 / 14.0f};
+  for (int c = 0; c < 4; c++)
+    for (int gx = 0; gx < 5; gx++)
+      for (int gz = 0; gz < 5; gz++)
+        for (int gy = 0; gy < 33; gy++) {
+          float X = (float)(cx * 16 + gx * 4), Y = (float)(gy * 4), Z = (float)(cz * 16 + gz * 4);
+          float yk = c < 2 ? 1.7f : 1.0f;   /* tunnels: flatter than tall */
+          float n = noise3(X * freq[c], Y * freq[c] * yk, Z * freq[c], salt[c]);
+          if (c == 2) n = n * 0.7f + noise3(X * freq[c] * 2.1f, Y * freq[c] * 2.1f, Z * freq[c] * 2.1f, salt[c] + 7) * 0.3f;
+          int v = (int)lrintf(n * 127);
+          A.grid[c][gx][gy][gz] = (int8_t)(v < -127 ? -127 : v > 127 ? 127 : v);
+        }
+  A.top[0] = 255;   /* (tops: made by the next gen_slab) */
+}
+
+static inline int area_h(int x, int z) { return A.h[(z + AR) * AREA + x + AR]; }   /* x, z from the chunk's corner */
+static inline int area_b(int x, int z) { return A.b[(z + AR) * AREA + x + AR]; }
+
+static float grid_at(int c, int x, int y, int z) {
+  int gx = x >> 2, gy = y >> 2, gz = z >> 2;
+  float fx = (x & 3) * 0.25f, fy = (y & 3) * 0.25f, fz = (z & 3) * 0.25f;
+  if (gy >= 32) gy = 31, fy = 1;
+  int8_t (*g)[33][5] = A.grid[c];
+  float a = lerpf(lerpf(g[gx][gy][gz], g[gx + 1][gy][gz], fx), lerpf(g[gx][gy][gz + 1], g[gx + 1][gy][gz + 1], fx), fz);
+  float b = lerpf(lerpf(g[gx][gy + 1][gz], g[gx + 1][gy + 1][gz], fx),
+                  lerpf(g[gx][gy + 1][gz + 1], g[gx + 1][gy + 1][gz + 1], fx), fz);
+  return lerpf(a, b, fy) * (1 / 127.0f);
+}
+
+static bool cave_at(int x, int y, int z, int h) {
+  if (y < 5 || y > h - 4) return false;
+  if (h < SEA && y > h - 9) return false;   /* (under the water: a thick floor) */
+  float a = grid_at(0, x, y, z), b = grid_at(1, x, y, z);
+  if (a * a + b * b < 0.0105f) return true;
+  return y < 52 && grid_at(2, x, y, z) > 0.5f + (52 - y) * -0.002f;
+}
+
+/* ---------------------------------------------------------------- columns */
+static bool frozen(int b) { return b == BIO_SNOWY || b == BIO_FROZEN_OCEAN || b == BIO_FROZEN_RIVER; }
+
+/* the bands of the badlands: our own pattern of coloured clay, shifted a little by a noise */
+static const uint8_t BANDS[16] = {B_HARDENED_CLAY, B_STAINED_CLAY_ORANGE, B_HARDENED_CLAY, B_STAINED_CLAY_YELLOW,
+                                  B_STAINED_CLAY_ORANGE, B_STAINED_CLAY_WHITE, B_HARDENED_CLAY, B_HARDENED_CLAY,
+                                  B_STAINED_CLAY_RED, B_STAINED_CLAY_BROWN, B_HARDENED_CLAY, B_STAINED_CLAY_SILVER,
+                                  B_STAINED_CLAY_ORANGE, B_HARDENED_CLAY, B_STAINED_CLAY_PINK, B_HARDENED_CLAY};
+
+typedef struct { uint8_t top, filler, deep; int8_t nfill, ndeep; } Layers;
+
+static Layers layers(int x, int z, int h, int b) {
+  uint32_t r = hash2(x, z, S_PATCH);
+  Layers L = {B_GRASS, B_DIRT, B_STONE, (int8_t)(3 + (r & 1)), 0};
+  float patch = noise2(x / 11.0f, z / 11.0f, S_PATCH);
+  switch (b) {
+    case BIO_DESERT: L.top = L.filler = B_SAND; L.deep = B_SANDSTONE; L.nfill = 4; L.ndeep = 3; break;
+    case BIO_BEACH: L.top = L.filler = B_SAND; L.deep = B_SANDSTONE; L.ndeep = 1; break;
+    case BIO_SNOWY: L.top = h >= SEA ? B_GRASS_SNOWED : B_DIRT; break;
+    case BIO_TAIGA: if (patch > 0.35f) L.top = B_PODZOL; else if (patch < -0.55f) L.top = B_COARSE_DIRT; break;
+    case BIO_SAVANNA: if (patch > 0.5f) L.top = B_COARSE_DIRT; break;
+    case BIO_MOUNTAINS:
+      if (h > 92 + (int)(r >> 28)) L.top = L.filler = B_STONE;
+      else if (patch > 0.55f) L.top = L.filler = B_GRAVEL;
+      break;
+    case BIO_BADLANDS: L.top = B_RED_SAND; L.filler = B_HARDENED_CLAY; L.nfill = 1; break;
+    default: break;
+  }
+  if (h < SEA) {   /* the bottom of seas, rivers and pools */
+    if (b == BIO_SWAMP) L.top = B_DIRT;
+    else if (patch > 0.45f && h > SEA - 8) L.top = L.filler = B_CLAY;
+    else if (h < SEA - 12 || patch < -0.4f) L.top = L.filler = B_GRAVEL;
+    else L.top = L.filler = B_SAND;
+  }
+  return L;
+}
+
+static uint8_t rock(int x, int y, int z) {
+  float n = grid_at(3, x & 15, y, z & 15);
+  if (n > 0.48f) return B_GRANITE;
+  if (n < -0.48f) return B_DIORITE;
+  if (n > 0.3f && n < 0.36f) return B_ANDESITE;
+  return B_STONE;
+}
+
+/* ---------------------------------------------------------------- plants */
+typedef struct { uint8_t lo, hi, n; } Plant;   /* n: how many blocks tall (0: none) */
+
+static Plant plant_at(int lx, int lz) {
+  Plant p = {0, 0, 0};
+  int x = A.cx * 16 + lx, z = A.cz * 16 + lz, h = area_h(lx, lz), b = area_b(lx, lz);
+  if (h < SEA) {
+    if (b == BIO_SWAMP && h == SEA - 1 && hash2(x, z, S_PLANT + 1) % 100 < 7) p = (Plant){B_LILY_PAD, 0, 1};
+    return p;
+  }
+  Layers L = layers(x, z, h, b);
+  if (frozen(b) || (b == BIO_MOUNTAINS && h >= 96)) return (Plant){B_SNOW_LAYER, 0, 1};
+  uint32_t r = hash2(x, z, S_PLANT) % 1000;
+  bool grass = L.top == B_GRASS || L.top == B_PODZOL || L.top == B_COARSE_DIRT;
+  /* canes by the water */
+  if ((grass || L.top == B_SAND) && h == SEA && r < 130) {
+    bool wet = area_h(lx + 1, lz) < SEA || area_h(lx - 1, lz) < SEA || area_h(lx, lz + 1) < SEA || area_h(lx, lz - 1) < SEA;
+    if (wet) return (Plant){B_SUGAR_CANE, B_SUGAR_CANE, (uint8_t)(1 + hash2(x, z, S_PLANT + 2) % 3)};
+  }
+  if (L.top == B_SAND || L.top == B_RED_SAND) {
+    if (b == BIO_DESERT && !(lx & 1) && !(lz & 1) && r < 24) return (Plant){B_CACTUS, B_CACTUS, (uint8_t)(1 + hash2(x, z, 3) % 3)};
+    if ((b == BIO_DESERT || b == BIO_BADLANDS) && r >= 990) return (Plant){B_DEAD_BUSH, 0, 1};
+    return p;
+  }
+  if (!grass) return p;
+  static const uint8_t FLOW[9] = {B_DANDELION, B_POPPY, B_OXEYE_DAISY, B_AZURE_BLUET, B_RED_TULIP, B_ORANGE_TULIP,
+                                  B_WHITE_TULIP, B_PINK_TULIP, B_ALLIUM};
+  uint32_t k = hash2(x >> 3, z >> 3, S_PLANT + 4);   /* flowers of a kind grow together */
+  uint8_t flower = FLOW[k % 9];
+  switch (b) {
+    case BIO_PLAINS:
+      if (r < 170) return (Plant){B_TALL_GRASS, 0, 1};
+      if (r < 205) return (Plant){flower, 0, 1};
+      if (r < 209) return (Plant){B_SUNFLOWER_LOWER, B_SUNFLOWER_UPPER, 2};
+      if (r < 211) return (Plant){B_PUMPKIN, 0, 1};
+      break;
+    case BIO_FOREST: case BIO_BIRCH_FOREST: case BIO_DARK_FOREST:
+      if (r < 60) return (Plant){B_TALL_GRASS, 0, 1};
+      if (r < 75) return (Plant){flower, 0, 1};
+      if (r < 79) return (Plant){(k & 3) == 0 ? B_LILAC_LOWER : (k & 3) == 1 ? B_PEONY_LOWER : B_ROSE_BUSH_LOWER,
+                                 (k & 3) == 0 ? B_LILAC_UPPER : (k & 3) == 1 ? B_PEONY_UPPER : B_ROSE_BUSH_UPPER, 2};
+      if (b == BIO_DARK_FOREST && r < 92) return (Plant){(r & 1) ? B_RED_MUSHROOM : B_BROWN_MUSHROOM, 0, 1};
+      break;
+    case BIO_TAIGA:
+      if (r < 80) return (Plant){B_FERN, 0, 1};
+      if (r < 110) return (Plant){B_TALL_GRASS, 0, 1};
+      if (r < 116) return (Plant){B_LARGE_FERN_LOWER, B_LARGE_FERN_UPPER, 2};
+      if (r < 121) return (Plant){B_BROWN_MUSHROOM, 0, 1};
+      break;
+    case BIO_JUNGLE:
+      if (r < 250) return (Plant){B_TALL_GRASS, 0, 1};
+      if (r < 350) return (Plant){B_FERN, 0, 1};
+      if (r < 354) return (Plant){B_MELON, 0, 1};
+      break;
+    case BIO_SAVANNA:
+      if (r < 200) return (Plant){B_TALL_GRASS, 0, 1};
+      if (r < 240) return (Plant){B_DOUBLE_GRASS_LOWER, B_DOUBLE_GRASS_UPPER, 2};
+      break;
+    case BIO_SWAMP:
+      if (r < 40) return (Plant){B_TALL_GRASS, 0, 1};
+      if (r < 55) return (Plant){B_BLUE_ORCHID, 0, 1};
+      if (r < 60) return (Plant){B_RED_MUSHROOM, 0, 1};
+      break;
+    case BIO_MOUNTAINS:
+      if (r < 50) return (Plant){B_TALL_GRASS, 0, 1};
+      break;
+    default: break;
+  }
+  return p;
+}
+
+/* ---------------------------------------------------------------- writing into the slab */
+static uint8_t *S;   /* the slab being made */
+static int SY0, SH;
+
+static inline int sget(int x, int y, int z) {
+  return (x | z) >> 4 || y < SY0 || y >= SY0 + SH ? -1 : S[((y - SY0) * 16 + z) * 16 + x];
+}
+static inline bool soft(int b) {
+  return b == B_AIR || b == B_TALL_GRASS || b == B_FERN || b == B_SNOW_LAYER || b == B_DEAD_BUSH || b == B_VINE ||
+         (b >= B_DANDELION && b <= B_OXEYE_DAISY) || b == B_RED_MUSHROOM || b == B_BROWN_MUSHROOM;
+}
+static inline bool stops_light(int b) {
+  return (blk_flags[b] & BF_OPAQUE) || blk_model[b] == M_LEAVES || blk_model[b] == M_LIQUID || b == B_COBWEB;
+}
+static void sput(int x, int y, int z, uint8_t b, bool force) {
+  if ((x | z) >> 4 || y < 1 || y >= WORLD_H) return;
+  if (A.top[z * 16 + x] < y || A.top[z * 16 + x] == 255) A.top[z * 16 + x] = (uint8_t)y;
+  if (stops_light(b) && A.sky[z * 16 + x] < y) A.sky[z * 16 + x] = (uint8_t)y;
+  if (y < SY0 || y >= SY0 + SH) return;
+  uint8_t *p = &S[((y - SY0) * 16 + z) * 16 + x];
+  if (force ? *p != B_BEDROCK : soft(*p)) *p = b;
+}
+
+/* ---------------------------------------------------------------- trees */
+typedef struct { uint8_t log, leaves; } Wood;
+static const Wood OAK = {B_LOG_OAK, B_LEAVES_OAK}, BIRCH = {B_LOG_BIRCH, B_LEAVES_BIRCH},
+                  SPRUCE = {B_LOG_SPRUCE, B_LEAVES_SPRUCE}, JUNGLE = {B_LOG_JUNGLE, B_LEAVES_JUNGLE},
+                  ACACIA = {B_LOG_ACACIA, B_LEAVES_ACACIA}, DARK = {B_LOG_DARK_OAK, B_LEAVES_DARK_OAK};
+
+static void blob(int x, int y, int z, float rx, float ry, uint8_t leaves, uint32_t r) {
+  int ix = (int)ceilf(rx), iy = (int)ceilf(ry);
+  for (int dy = -iy; dy <= iy; dy++)
+    for (int dz = -ix; dz <= ix; dz++)
+      for (int dx = -ix; dx <= ix; dx++) {
+        float d = (dx * dx + dz * dz) / (rx * rx) + (dy * dy) / (ry * ry);
+        float j = ((hash3(x + dx, y + dy, z + dz, r) & 255) / 255.0f) * 0.35f;   /* a ragged edge */
+        if (d <= 1.0f - j + 0.12f) sput(x + dx, y + dy, z + dz, leaves, false);
+      }
+}
+
+static void trunk(int x, int y, int z, int n, uint8_t log) {
+  for (int k = 0; k < n; k++) sput(x, y + k, z, log, true);
+}
+
+static void tree(int lx, int y, int lz, int kind, uint32_t r) {
+  int t;
+  switch (kind) {
+    case 0:   /* oak: a round crown */
+      t = 4 + (int)(r % 3);
+      blob(lx, y + t - 1, lz, 2.3f, 2.0f, OAK.leaves, r);
+      trunk(lx, y, lz, t, OAK.log);
+      break;
+    case 1:   /* birch: tall, a narrow crown */
+      t = 5 + (int)(r % 3);
+      blob(lx, y + t - 1, lz, 1.7f, 2.6f, BIRCH.leaves, r);
+      trunk(lx, y, lz, t, BIRCH.log);
+      break;
+    case 2: {   /* spruce: a cone of rings */
+      t = 6 + (int)(r % 4);
+      int top = y + t + 1;
+      for (int yy = y + 2; yy <= top; yy++) {
+        int k = top - yy;
+        float rad = 0.6f + k * 0.42f + ((k & 1) ? 0.0f : 0.6f);
+        if (rad > 3.0f) rad = 3.0f;
+        int ir = (int)rad;
+        for (int dz = -ir; dz <= ir; dz++)
+          for (int dx = -ir; dx <= ir; dx++)
+            if (dx * dx + dz * dz <= rad * rad + 0.3f) sput(lx + dx, yy, lz + dz, SPRUCE.leaves, false);
+      }
+      trunk(lx, y, lz, t, SPRUCE.log);
+      break;
+    }
+    case 3: {   /* jungle giant: a tall trunk, a wide crown, vines */
+      t = 9 + (int)(r % 6);
+      blob(lx, y + t, lz, 3.0f, 2.0f, JUNGLE.leaves, r);
+      blob(lx + (int)(r >> 8) % 3 - 1, y + t - 4, lz + (int)(r >> 12) % 3 - 1, 1.6f, 1.0f, JUNGLE.leaves, r + 1);
+      trunk(lx, y, lz, t, JUNGLE.log);
+      for (int k = 0; k < 6; k++) {   /* vines down the crown's edge */
+        uint32_t q = hash2(lx + k, lz - k, r);
+        int dx = (int)(q % 7) - 3, dz = (int)((q >> 4) % 7) - 3;
+        if (dx * dx + dz * dz < 6) continue;
+        for (int d = 1; d <= 2 + (int)((q >> 8) % 4); d++) sput(lx + dx, y + t - 1 - d, lz + dz, B_VINE, false);
+      }
+      break;
+    }
+    case 4: {   /* acacia: up, then leaning, a flat crown */
+      t = 4 + (int)(r % 2);
+      int dir = (int)((r >> 4) & 3), ddx = dir == 0 ? 1 : dir == 1 ? -1 : 0, ddz = dir == 2 ? 1 : dir == 3 ? -1 : 0;
+      trunk(lx, y, lz, t, ACACIA.log);
+      int x = lx, yy = y + t, z = lz;
+      for (int k = 0; k < 2; k++) {
+        x += ddx, z += ddz;
+        sput(x, yy, z, ACACIA.log, true);
+        yy++;
+      }
+      for (int dz = -3; dz <= 3; dz++)
+        for (int dx = -3; dx <= 3; dx++) {
+          int d = dx * dx + dz * dz;
+          if (d <= 7 && ((x + dx < lx + 4 && x + dx > lx - 4) && (z + dz < lz + 4 && z + dz > lz - 4)))
+            sput(x + dx, yy, z + dz, ACACIA.leaves, false);
+          if (d <= 2) sput(x + dx, yy + 1, z + dz, ACACIA.leaves, false);
+        }
+      break;
+    }
+    case 5: {   /* dark oak: short and thick, a wide flat crown */
+      t = 5 + (int)(r % 2);
+      for (int k = 0; k < 2; k++)
+        for (int dz = -3; dz <= 3; dz++)
+          for (int dx = -3; dx <= 3; dx++) {
+            int d = dx * dx + dz * dz;
+            if (d <= (k ? 5 : 11) && (hash3(lx + dx, y + k, lz + dz, r) & 7)) sput(lx + dx, y + t - 1 + k, lz + dz, DARK.leaves, false);
+          }
+      blob(lx, y + t + 1, lz, 1.6f, 1.0f, DARK.leaves, r);
+      trunk(lx, y, lz, t, DARK.log);
+      sput(lx + 1, y, lz, DARK.log, true);   /* roots */
+      sput(lx, y, lz + 1, DARK.log, true);
+      break;
+    }
+  }
+}
+
+/* trees per 1000 columns, and which kinds */
+static int tree_kind(int b, uint32_t r, int *per1000) {
+  int k = 0, d = 0;
+  switch (b) {
+    case BIO_PLAINS: d = 3, k = 0; break;
+    case BIO_FOREST: d = 45, k = (r >> 20) % 5 == 0 ? 1 : 0; break;
+    case BIO_BIRCH_FOREST: d = 45, k = (r >> 20) % 6 == 0 ? 0 : 1; break;
+    case BIO_DARK_FOREST: d = 60, k = (r >> 20) % 4 == 0 ? 0 : 5; break;
+    case BIO_TAIGA: d = 40, k = 2; break;
+    case BIO_SNOWY: d = 5, k = 2; break;
+    case BIO_JUNGLE: d = 50, k = (r >> 20) % 3 == 0 ? 3 : 0; break;
+    case BIO_SAVANNA: d = 6, k = (r >> 20) % 5 == 0 ? 0 : 4; break;
+    case BIO_SWAMP: d = 14, k = 0; break;
+    case BIO_MOUNTAINS: d = 6, k = (r >> 20) % 2 ? 2 : 0; break;
+    default: break;
+  }
+  *per1000 = d;
+  return k;
+}
+
+static void trees(void) {
+  for (int lz = -AR; lz < 16 + AR; lz++)
+    for (int lx = -AR; lx < 16 + AR; lx++) {
+      int x = A.cx * 16 + lx, z = A.cz * 16 + lz, b = area_b(lx, lz), h = area_h(lx, lz), d;
+      uint32_t r = hash2(x, z, S_TREE);
+      int kind = tree_kind(b, r, &d);
+      if ((int)(r % 1000) >= d || h < SEA || h > 118) continue;
+      Layers L = layers(x, z, h, b);
+      if (L.top != B_GRASS && L.top != B_PODZOL && L.top != B_COARSE_DIRT && L.top != B_GRASS_SNOWED) continue;
+      /* not two trunks side by side */
+      if (hash2(x - 1, z, S_TREE) % 1000 < (uint32_t)d || hash2(x, z - 1, S_TREE) % 1000 < (uint32_t)d) continue;
+      if ((lx | lz) >= 0 && lx < 16 && lz < 16) sput(lx, h, lz, B_DIRT, true);
+      tree(lx, h + 1, lz, kind, r);
+    }
+}
+
+/* ---------------------------------------------------------------- veins and rooms */
+typedef struct { uint8_t block, tries, ylo, yhi, size; } Vein;
+static const Vein VEINS[] = {{B_DIRT, 8, 0, 120, 22}, {B_GRAVEL, 6, 0, 120, 22}, {B_COAL_ORE, 18, 5, 120, 9},
+                             {B_IRON_ORE, 16, 5, 62, 7}, {B_GOLD_ORE, 2, 5, 30, 7}, {B_REDSTONE_ORE, 7, 5, 15, 6},
+                             {B_DIAMOND_ORE, 1, 5, 15, 6}, {B_LAPIS_ORE, 1, 12, 30, 5}};
+
+static bool is_rock(int b) { return b == B_STONE || b == B_GRANITE || b == B_DIORITE || b == B_ANDESITE; }
+
+static void veins(void) {
+  for (unsigned v = 0; v < sizeof VEINS / sizeof VEINS[0]; v++) {
+    const Vein *V = &VEINS[v];
+    for (int t = 0; t < V->tries; t++) {
+      int x = 1 + rint_(14), y = V->ylo + rint_(V->yhi - V->ylo + 1), z = 1 + rint_(14);
+      for (int k = 0; k < V->size; k++) {
+        int c = sget(x, y, z);
+        if (c >= 0 && is_rock(c)) S[((y - SY0) * 16 + z) * 16 + x] = V->block;
+        switch (rint_(6)) {   /* a random walk, kept in the chunk */
+          case 0: x += x < 14; break;
+          case 1: x -= x > 1; break;
+          case 2: z += z < 14; break;
+          case 3: z -= z > 1; break;
+          case 4: y++; break;
+          default: y--; break;
+        }
+      }
+    }
+  }
+  if (area_b(8, 8) == BIO_MOUNTAINS)   /* emeralds, one at a time, in the mountains */
+    for (int t = 0; t < 5; t++) {
+      int x = rint_(16), y = 4 + rint_(28), z = rint_(16), c = sget(x, y, z);
+      if (c >= 0 && is_rock(c)) S[((y - SY0) * 16 + z) * 16 + x] = B_EMERALD_ORE;
+    }
+}
+
+/* a mossy room deep in the rock: a monster cage in the middle, a chest by a wall */
+static void room(void) {
+  if (rint_(7)) return;
+  int Y = 12 + rint_(34);
+  for (int z = 3; z <= 13; z += 5)
+    for (int x = 3; x <= 13; x += 5)
+      if (area_h(x, z) < Y + 12) return;
+  for (int y = Y - 1; y <= Y + 4; y++)
+    for (int z = 4; z <= 12; z++)
+      for (int x = 4; x <= 12; x++) {
+        bool wall = x == 4 || x == 12 || z == 4 || z == 12 || y == Y - 1 || y == Y + 4;
+        if (y < SY0 || y >= SY0 + SH) continue;
+        uint8_t *p = &S[((y - SY0) * 16 + z) * 16 + x];
+        if (!wall) *p = B_AIR;
+        else if (*p != B_AIR || y == Y - 1)
+          *p = (hash3(x, y, z, A.cx * 31 + A.cz) & 3) == 0 ? B_MOSSY_COBBLESTONE : B_COBBLESTONE;
+      }
+  int cz = 5 + rint_(7);
+  if (Y >= SY0 && Y < SY0 + SH) {
+    S[((Y - SY0) * 16 + 8) * 16 + 8] = B_MOB_SPAWNER;
+    S[((Y - SY0) * 16 + cz) * 16 + 5] = B_CHEST;
+  }
+}
+
+/* ---------------------------------------------------------------- the chunk */
+void gen_set_cache(void *mem) { (void)mem; }
+void gen_set_flat(int flat) { g_flat = flat; }
 
 void gen_init(int64_t seed) {
-    jr_jump_init();
-    bflags_init();
-    g_seed = seed;
-    memset(biome_index, 255, sizeof biome_index);
-    for (int i = 0; i < NBIOMES; i++) biome_index[BIOMES[i].id] = (uint8_t)i;
-    for (int i = 0; i < NLSEEDS; i++) lay_wseed[i] = layer_world(LSEEDS[i]);
-    vor_c = layer_world(10);
-    /* ChunkProviderGenerate's noise generators */
-    JRand r;
-    jr_seed(&r, seed);
-    for (int i = 0; i < 16; i++) oc_min[i].st = r.s, perm_skip(&r);
-    for (int i = 0; i < 16; i++) oc_max[i].st = r.s, perm_skip(&r);
-    for (int i = 0; i < 8; i++) oc_main[i].st = r.s, perm_skip(&r);
-    for (int i = 0; i < 4; i++) oc_surf[i].st = r.s, perm_skip(&r);
-    for (int i = 0; i < 10; i++) perm_skip(&r); /* scale noise (unused) */
-    for (int i = 0; i < 16; i++) oc_depth[i].st = r.s, perm_skip(&r);
-    SC_LIMIT = FX(684.412f);
-    SC_MAINXZ = FX(684.412f / 80.0f);
-    SC_MAINY = FX(684.412f / 160.0f);
-    SC_DEPTH = FX(200.0f);
-    for (int j = -2; j <= 2; j++)
-        for (int k = -2; k <= 2; k++)
-            bweights[j + 2 + (k + 2) * 5] = 10.0f / sqrtf((float)(j * j + k * k) + 0.2f);
-    JRand t;
-    jr_seed(&t, 1234);
-    perm_build(t.s, perm_temp, 0);
-    jr_seed(&t, 2345);
-    perm_build(t.s, perm_grass, 0);
-    /* BiomeMesa: bands and noises */
-    jr_seed(&r, seed);
-    oc_mesa[0].st = r.s;
-    perm_skip(&r);
-    for (int j = 0; j < 64; j++) mesa_bands[j] = B_HARDENED_CLAY;
-    for (int j = 0; j < 64; ++j) {
-        j += jr_int(&r, 5) + 1;
-        if (j < 64) mesa_bands[j] = B_STAINED_CLAY_ORANGE;
-    }
-    static const uint8_t col3[3] = {B_STAINED_CLAY_YELLOW, B_STAINED_CLAY_BROWN, B_STAINED_CLAY_RED};
-    for (int c = 0; c < 3; c++) {
-        int n = jr_int(&r, 4) + 2;
-        for (int k = 0; k < n; ++k) {
-            int len = jr_int(&r, 3) + (c == 1 ? 2 : 1), at = jr_int(&r, 64);
-            for (int q = 0; at + q < 64 && q < len; ++q) mesa_bands[at + q] = col3[c];
-        }
-    }
-    int n = jr_int(&r, 3) + 3, at = 0;
-    for (int k = 0; k < n; ++k) {
-        at += jr_int(&r, 16) + 4;
-        if (at < 64) {
-            mesa_bands[at] = B_STAINED_CLAY_WHITE;
-            if (at > 1 && jr_bool(&r)) mesa_bands[at - 1] = B_STAINED_CLAY_SILVER;
-            if (at < 63 && jr_bool(&r)) mesa_bands[at + 1] = B_STAINED_CLAY_SILVER;
-        }
-    }
-    jr_seed(&r, seed);
-    for (int o = 0; o < 4; o++) oc_mesa[o].st = r.s, perm_skip(&r);
-    oc_mesa[4].st = r.s;
-    /* population and cave seeds */
-    jr_seed(&r, seed);
-    pop_mul_x = jr_long(&r) / 2 * 2 + 1;
-    pop_mul_z = jr_long(&r) / 2 * 2 + 1;
-    jr_seed(&r, seed);
-    cave_mul_x = jr_long(&r);
-    cave_mul_z = jr_long(&r);
-    /* caches */
-    memset(sumc, 0, NSUM * sizeof *sumc);
-    memset(pmemo, 0, sizeof pmemo);
-    memset(sum_pin, 0, sizeof sum_pin);
-    last_cx = bc_cx = 0x7fffffff;
+  g_seed = mix32((uint32_t)seed ^ mix32((uint32_t)((uint64_t)seed >> 32) + 0x632BE5ABu));
+  A.valid = false;
 }
 
-/* Caves and ravines of chunk (cx, cz) into out (whole height: the c_top tracking needs it) */
-#if defined(__GNUC__)
-__attribute__((noinline))
-#endif
-static void slab_caves(int cx, int cz, const ColSum *sum, uint8_t *out, int y0, int h) {
-    crec_cover(cx, cz);
-    CaveCtx c;
-    memset(&c, 0, sizeof c);
-    c.mode = CAVE_OUT;
-    c.tcx = cx;
-    c.tcz = cz;
-    c.sum = sum;
-    c.out = out;
-    c.y0 = y0;
-    c.h = h;
-    c.rx1 = 16;
-    c.rz1 = 16;
-    c.ry1 = 256;
-    tg[4] = &c;
-    cave_track_on = 1;
-    int hi = y0 + h;
-    crep_lo = y0 - 1;
-    for (int i = 0; i < 256; i++) {
-        if (c_top[i] > hi) hi = c_top[i];
-        if (c_sl[i] < crep_lo) crep_lo = c_sl[i];
-        if (c_top[i] < crep_lo) crep_lo = c_top[i];
-    }
-    if (crec_ok) {
-        crep_dyn = 1;
-        caves_replay(1u << 4, cx * 16, 0, cz * 16, cx * 16 + 15, hi + 1, cz * 16 + 15);
-        crep_dyn = 0;
-    } else {
-        caves_run(1u << 4);
-    }
-    cave_track_on = 0;
+int gen_prepare(int cx, int cz) {
+  (void)cx, (void)cz;
+  return 0;
 }
 
-/* Ahead of gen_slab(cx, cz): one of the summaries of the chunks around it that it will need, if
- * one is not kept (each is a chunk's terrain, so the work of a chunk can be spread over frames).
- * 0 when they are all there. */
-/* ---------------------------------------------------------------- superflat (ChunkProviderFlat) */
-static int g_flat;
-void gen_set_flat(int flat) { g_flat = flat; }
-static int flat_block(int y) { return y == 0 ? B_BEDROCK : y < 3 ? B_DIRT : y == 3 ? B_GRASS : B_AIR; }
-
-int gen_prepare(int cx, int cz) {
-    if (g_flat) return 0;
-    for (int dz = -1; dz <= 1; dz++)
-        for (int dx = -1; dx <= 1; dx++)
-            if ((dx || dz) && !sum_find(cx + dx, cz + dz)) {
-                sum_get(cx + dx, cz + dz);
-                return 1;
-            }
-    return 0;
+static void flat_slab(int y0, int h, uint8_t *out) {
+  for (int y = y0; y < y0 + h; y++)
+    memset(out + (y - y0) * 256, y == 0 ? B_BEDROCK : y < 3 ? B_DIRT : y == 3 ? B_GRASS : B_AIR, 256);
 }
 
 void gen_slab(int cx, int cz, int y0, int h, uint8_t *out) {
-    if (y0 < 0) {
-        h += y0;
-        y0 = 0;
-    }
-    if (y0 + h > 128) h = 128 - y0;
-    if (h <= 0) return;
-    if (g_flat) {
-        for (int y = 0; y < h; y++) memset(out + y * 256, flat_block(y0 + y), 256);
-        return;
-    }
-    c_out = out;
-    c_y0 = y0;
-    c_h = h;
-    c_cx = cx;
-    c_cz = cz;
-    nb_cx = cx;
-    nb_cz = cz;
-    /* terrain of C, and its summary */
-    SumEntry *e = sum_find(cx, cz);
-    if (!e) e = sum_slot(cx, cz);
-    int ie = (int)(e - sumc);
-    sum_pin[ie] = 1;
-    chunk_terrain(cx, cz, out, y0, h, e->s);
-    e->b00 = cb16[0];
-    memcpy(c_b16, cb16, 256);
-    for (int i = 0; i < 256; i++) {
-        c_top[i] = (uint8_t)(cs_top(&e->s[i]) + (cs_blk(&e->s[i]) == B_LILY_PAD));
-        c_sl[i] = (uint8_t)cs_top(&e->s[i]);
-    }
-    nb[1][1] = e;
-    /* caves and ravines */
-    slab_caves(cx, cz, e->s, out, y0, h);
-    /* the 3x3 summaries */
-    for (int dz = -1; dz <= 1; dz++)
-        for (int dx = -1; dx <= 1; dx++) {
-            if (!dx && !dz) continue;
-            SumEntry *n = sum_get(cx + dx, cz + dz);
-            sum_pin[n - sumc] = 1;
-            nb[dz + 1][dx + 1] = n;
-        }
-    /* the four populations writing into C (their biome is the one at +16, +16) */
-    int pb[4]; /* World.getBiome(population origin + (16, 16)): block (0, 0) of the next chunk */
-    for (int k = 0; k < 4; k++) pb[k] = nb[1 + (k >> 1)][1 + (k & 1)]->b00;
-    populate(cx - 1, cz - 1, pb[0]);
-    populate(cx, cz - 1, pb[1]);
-    populate(cx - 1, cz, pb[2]);
-    populate(cx, cz, pb[3]);
-    memset(sum_pin, 0, sizeof sum_pin);
-    last_cx = cx;
-    last_cz = cz;
+  if (g_flat) {
+    flat_slab(y0, h, out);
+    return;
+  }
+  area_make(cx, cz);
+  S = out, SY0 = y0, SH = h;
+  for (int z = 0; z < 16; z++)
+    for (int x = 0; x < 16; x++) {
+      int X = cx * 16 + x, Z = cz * 16 + z, th = area_h(x, z), b = area_b(x, z);
+      Layers L = layers(X, Z, th, b);
+      bool ice = frozen(b);
+      A.top[z * 16 + x] = A.sky[z * 16 + x] = (uint8_t)(th < SEA ? SEA : th);
+      for (int y = y0; y < y0 + h; y++) {
+        uint8_t v;
+        int d = th - y;
+        if (y == 0) v = B_BEDROCK;
+        else if (y <= 3 && (int)(hash3(X, y, Z, 0x55) % 5) < 4 - y) v = B_BEDROCK;
+        else if (d < 0) v = y <= SEA ? (y == SEA && ice ? B_ICE : B_WATER) : B_AIR;
+        else if (cave_at(x, y, z, th)) v = y < 11 ? B_LAVA : B_AIR;
+        else if (d == 0) v = L.top;
+        else if (b == BIO_BADLANDS && d < 18 + (th - SEA)) {
+          int k = (y + (int)(noise2(X / 40.0f, Z / 40.0f, S_BAND) * 3)) & 15;
+          v = d < L.nfill + 1 ? L.filler : BANDS[k];
+        } else if (d < L.nfill) v = L.filler;
+        else if (d < L.nfill + L.ndeep) v = L.deep;
+        else v = rock(X, y, Z);
+        out[((y - y0) * 16 + z) * 16 + x] = v;
+      }
+    }
+  rs = hash2(cx, cz, 0xA5A5) | 1;
+  veins();
+  room();
+  for (int z = 0; z < 16; z++)
+    for (int x = 0; x < 16; x++) {
+      Plant p = plant_at(x, z);
+      int y = area_h(x, z) + 1;
+      if (y <= SEA) y = SEA + 1;   /* (lily pads: on the water) */
+      if (!p.n) continue;
+      for (int k = 0; k < p.n; k++) sput(x, y + k, z, k == 0 ? p.lo : p.hi ? p.hi : p.lo, false);
+    }
+  trees();
 }
 
 int gen_biome(int x, int z) {
-    if (g_flat) return BI_PLAINS;
-    int cx = x >> 4, cz = z >> 4, i = (x & 15) + (z & 15) * 16;
-    if (cx == last_cx && cz == last_cz) return c_b16[i];
-    if (cx != bc_cx || cz != bc_cz) chunk_biomes(cx, cz);
-    return cb16[i];
+  if (g_flat) return BIO_PLAINS;
+  uint8_t b;
+  land(x, z, &b);
+  return b;
 }
 
 int gen_top(int x, int z) {
-    if (g_flat) return 3;
-    int cx = x >> 4, cz = z >> 4, i = (x & 15) + (z & 15) * 16;
-    if (cx != last_cx || cz != last_cz) gen_slab(cx, cz, 127, 1, col_tmp);
-    int t = c_top[i];
-    return t > 127 ? 127 : t;
+  if (g_flat) return 3;
+  int cx = x >> 4, cz = z >> 4;
+  if (!A.valid || A.cx != cx || A.cz != cz || A.top[0] == 255) {
+    static uint8_t tmp[256];
+    gen_slab(cx, cz, 0, 1, tmp);   /* (one row: the tops are made for every row) */
+  }
+  return A.top[(z & 15) * 16 + (x & 15)];
 }
 
-float gen_temp_noise(int x, int z) { return temp_noise(x, z); }
-
-/* World.c(x, z) == GRASS on the undecorated terrain */
-static int can_spawn(int x, int z) {
-    SumEntry *e = sum_get(x >> 4, z >> 4);
-    const ColSum *s = &e->s[(x & 15) + (z & 15) * 16];
-    if (cs_top(s) < SEA) return 0;
-    return cs_blk(s) == B_GRASS;
+int gen_sky_top(int x, int z) {
+  if (g_flat) return 3;
+  gen_top(x, z);   /* (makes the chunk's tops) */
+  return A.sky[(z & 15) * 16 + (x & 15)];
 }
 
+float gen_temp_noise(int x, int z) { return g_flat ? 0 : fbm2(x / 60.0f, z / 60.0f, 2, S_TNOISE); }
+
 void gen_spawn(int *px, int *py, int *pz) {
-    JRand r;
-    jr_seed(&r, g_seed);
-    if (g_flat) {
-        /* WorldChunkManagerHell.findBiomePosition(0, 0, 256): anywhere within 256, all of it grass */
-        *px = -256 + jr_int(&r, 513);
-        *pz = -256 + jr_int(&r, 513);
-        *py = 4;
-        return;
-    }
-    /* WorldChunkManager.a(0, 0, 256, spawn biomes, random): 129 x 129 cells of rivermix */
-    int found = 0, fx = 0, fz = 0, j2 = 0;
-    uint8_t *rows = (uint8_t *)U.lay + sizeof(i32) * LAY_INTS; /* 8 rows x 129, after the layer scratch */
-    for (int tz = 0; tz < 129; tz += 8) {
-        int th = 129 - tz < 8 ? 129 - tz : 8;
-        for (int tx = 0; tx < 129; tx += 43) { /* 43 x 8 tiles: the layers' cost is mostly per run */
-            int tw = 43;
-            i32 *rm = U.lay;
-            lay_mem = U.lay + 43 * 8;
-            lay_cap = LAY_INTS - 43 * 8;
-            lay_top = 0;
-            layers_rivermix(-64 + tx, -64 + tz, tw, th, rm);
-            for (int j = 0; j < th; j++)
-                for (int i = 0; i < tw; i++) rows[j * 129 + tx + i] = (uint8_t)rm[j * tw + i];
-        }
-        for (int j = 0; j < th; j++)
-            for (int i = 0; i < 129; i++) {
-                int id = rows[j * 129 + i];
-                int ok = id == BI_FOREST || id == BI_PLAINS || id == BI_TAIGA || id == BI_TAIGA_HILLS ||
-                         id == BI_FOREST_HILLS || id == BI_JUNGLE || id == BI_JUNGLE_HILLS;
-                if (ok && (!found || jr_int(&r, j2 + 1) == 0)) {
-                    fx = (-64 + i) * 4;
-                    fz = (-64 + tz + j) * 4;
-                    found = 1;
-                    ++j2;
-                }
-            }
+  if (g_flat) {
+    *px = 0, *py = 4, *pz = 0;
+    return;
+  }
+  /* a spiral out from the middle, every 8 blocks: the first dry grass far from the water */
+  int x = 0, z = 0, dx = 8, dz = 0, run = 1, left = 1, turns = 0;
+  for (int i = 0; i < 4000; i++) {
+    uint8_t b;
+    int h = land(x, z, &b);
+    if (h > SEA + 1 && b != BIO_BEACH && b != BIO_RIVER && b != BIO_MOUNTAINS && b != BIO_SWAMP && gen_top(x, z) <= h + 1) {
+      *px = x, *pz = z, *py = h + 1;
+      return;
     }
-    int x = found ? fx : 0, z = found ? fz : 0;
-    for (int l = 0; !can_spawn(x, z);) {
-        x += jr_int(&r, 64), x -= jr_int(&r, 64);
-        z += jr_int(&r, 64), z -= jr_int(&r, 64);
-        if (++l == 1000) break;
+    x += dx, z += dz;
+    if (--left == 0) {
+      int t = dx;
+      dx = -dz, dz = t;
+      if (++turns % 2 == 0) run++;
+      left = run;
     }
-    *px = x;
-    *pz = z;
-    *py = gen_top(x, z) + 1;
+  }
+  *px = 0, *pz = 0, *py = land(0, 0, 0) + 1;
 }
 
-/* every static object of this file (the list follows the object file's symbols) */
-unsigned gen_ram_bytes(void) {
-    return (unsigned)(sizeof PK + sizeof PL + sizeof bc_cx + sizeof bc_cz + sizeof bg_ok + sizeof bg_x +
-                      sizeof bg_z + sizeof c_cx + sizeof c_cz + sizeof c_h + sizeof c_out + sizeof c_y0 +
-                      sizeof cave_track_on + sizeof col_top + sizeof crec_ax + sizeof crec_az +
-                      sizeof crec_ok + sizeof crep_dyn + sizeof crep_lo + sizeof cv + sizeof dung_idx +
-                      sizeof last_cx + sizeof last_cz + sizeof lay_cap + sizeof lay_mem + sizeof lay_peak +
-                      sizeof lay_top + sizeof nb_cx + sizeof nb_cz + sizeof ncrec + sizeof pm +
-                      sizeof pm_known + sizeof pmemo_next + sizeof put_skip_c + sizeof rb_x0 + sizeof rb_x1 +
-                      sizeof rb_y0 + sizeof rb_y1 + sizeof rb_z0 + sizeof rb_z1 + sizeof sum_clock +
-                      sizeof sum_odd + sizeof tov_on + sizeof tov_x + sizeof tov_y + sizeof tov_z +
-                      sizeof PR + sizeof SC_DEPTH + sizeof SC_LIMIT + sizeof SC_MAINXZ + sizeof SC_MAINY +
-                      sizeof bg_seed + sizeof cave_mul_x + sizeof cave_mul_z + sizeof crec_seed +
-                      sizeof g_seed + sizeof pop_mul_x + sizeof pop_mul_z + sizeof reg_x0 + sizeof reg_x1 +
-                      sizeof reg_z0 + sizeof reg_z1 + sizeof vor_c + sizeof sum_pin + sizeof oc_surf +
-                      sizeof nb + sizeof tg + sizeof oc_mesa + sizeof mesa_bands + sizeof oc_main +
-                      sizeof tg_cx + sizeof tg_cz + sizeof jump_add + sizeof jump_mul + sizeof bweights +
-                      sizeof cb4 + sizeof oc_depth + sizeof oc_max + sizeof oc_min + sizeof chain_buf +
-                      sizeof pmemo + sizeof tstack + sizeof biome_index + sizeof c_b16 + sizeof c_sl +
-                      sizeof c_top + sizeof cb16 + sizeof col_tmp + sizeof perm_grass + sizeof perm_temp +
-                      sizeof bgrid + sizeof lay_wseed + sizeof bflags + sizeof tov + sizeof crec + sizeof U +
-                      NSUM * sizeof *sumc);
-}
+unsigned gen_ram_bytes(void) { return (unsigned)(sizeof A + sizeof g_seed + sizeof g_flat + sizeof rs); }
diff --git a/games/numblocks/src/gen.h b/games/numblocks/src/gen.h
index 8bfc033..0da88c1 100644
--- a/games/numblocks/src/gen.h
+++ b/games/numblocks/src/gen.h
@@ -1,52 +1,46 @@
-/* NumBlocks world generator: a port of Minecraft 1.8.8's default overworld
- * generator (ChunkProviderGenerate and everything it calls), sized for the
- * NumWorks calculator (all state static, no malloc, about 28 KB of RAM).
- * See the comment at the top of gen.c for what differs from Minecraft. */
+/* NumBlocks world generator: NumBlocks' own generator (Calcade, 19 October 2026),
+ * written from scratch: gradient noise, its own biomes, caves, ores and trees.
+ * All state static, no malloc, a few KB of RAM. See the comment at the top of gen.c. */
 #ifndef NB_GEN_H
 #define NB_GEN_H
 #include <stdint.h>
 
-/* Starts a world: seed as a Java long (what /seed prints). Call before anything else. */
+/* Starts a world from its seed (what /seed prints). Call before anything else. */
 void gen_init(int64_t seed);
-#define GEN_CACHE_BYTES (25 * 528)   /* the summary cache: on main's stack on the calculator (gen_set_cache) */
+#define GEN_CACHE_BYTES 64   /* main gives the generator this much of its stack (unused here) */
 void gen_set_cache(void *mem);
 
-/* The world type: 0 Minecraft's default, 1 superflat (FlatGeneratorInfo's default preset
- * "2;7,2x3,2;1": bedrock, two dirt, grass, all plains, nothing else). Kept across gen_init. */
+/* The world type: 0 the default, 1 superflat (bedrock, two dirt, grass). Kept across gen_init. */
 void gen_set_flat(int flat);
 
-/* Blocks of chunk (cx, cz) for y in [y0, y0 + h), after terrain, caves, ravines
- * and the decoration (population) that Minecraft would put in this chunk:
- * out[(y - y0) * 256 + z * 16 + x], x and z in 0..15, values from blocks.h (B_*).
- * Only y < 128 is ever written (y0 + h must be <= 128).
- * Cost: work around the chunk is cached, so neighbouring chunks asked one after the
- * other are much cheaper than scattered ones (Cortex-M7 at 216 MHz, h = 24, rows of
- * 3-4 neighbours: about 60-80 ms per call; the first call after gen_init or after a
- * jump to a new place about 190 ms). */
+/* Blocks of chunk (cx, cz) for y in [y0, y0 + h): out[(y - y0) * 256 + z * 16 + x],
+ * x and z in 0..15, values from blocks.h (B_*). Only y < 128 is ever written. */
 void gen_slab(int cx, int cz, int y0, int h, uint8_t *out);
 
-/* Minecraft biome id at block (x, z) (0 ocean, 1 plains, ... 129+ mutated).
- * Cheap for the chunk of the last gen_slab call, a few ms elsewhere. */
+/* Some of the work for gen_slab(cx, cz) done ahead; 0: nothing left to do. */
+int gen_prepare(int cx, int cz);
+
+/* The biome at block (x, z): one of the BIO_ values below. */
 int gen_biome(int x, int z);
+enum {
+  BIO_OCEAN, BIO_PLAINS, BIO_DESERT, BIO_MOUNTAINS, BIO_FOREST, BIO_TAIGA, BIO_SWAMP, BIO_RIVER,
+  BIO_FROZEN_OCEAN, BIO_SNOWY, BIO_BEACH, BIO_BIRCH_FOREST, BIO_DARK_FOREST, BIO_JUNGLE, BIO_SAVANNA,
+  BIO_BADLANDS, BIO_FROZEN_RIVER, BIO_COUNT
+};
 
-/* y (0..127) of the highest non-air block of column (x, z) after generation
- * (including trees and other decoration, whatever the y range of the slab asked).
- * Cheap for the chunk of the last gen_slab call; elsewhere it costs a gen_slab. */
+/* y (0..127) of the highest non-air block of column (x, z) once generated. */
 int gen_top(int x, int z);
 
-/* Temperature noise at block (x, z): Minecraft's BiomeBase.ae.a(x / 8.0, z / 8.0), the raw
- * simplex value. BiomeBase.a(BlockPosition) is then, for y > 64:
- *   temperature - (gen_temp_noise(x, z) * 4 + y - 64) * 0.05 / 30
- * (and the biome temperature for y <= 64); below 0.15 it snows and water freezes.
- * Cheap (one simplex sample), usable any time after gen_init. */
+/* y of the highest block of column (x, z) that stops light (opaque, leaves, water), once generated. */
+int gen_sky_top(int x, int z);
+
+/* A slow noise in about -1..1: the temperature drops with it, a little, above y 64 (tick.c). */
 float gen_temp_noise(int x, int z);
 
-/* The world spawn point, as Minecraft chooses it (WorldChunkManager.findBiomePosition
- * then the random walk until the top block is grass); y is the first air block above it.
- * About 0.4 s on the calculator. */
+/* Where a new world starts: land near (0, 0); y is the first air block above it. */
 void gen_spawn(int *x, int *y, int *z);
 
-/* Statistics for tests: bytes of static RAM the generator uses (27108 on the M7). */
+/* For tests: bytes of static RAM the generator uses. */
 unsigned gen_ram_bytes(void);
 
 #endif
diff --git a/games/numblocks/src/gui.c b/games/numblocks/src/gui.c
index cd95440..f66aef3 100644
--- a/games/numblocks/src/gui.c
+++ b/games/numblocks/src/gui.c
@@ -2,8 +2,7 @@
  * hotbar, hearts, food, armour, air, experience), the inventory, the
  * crafting table, the furnace and the chest, the game menu and the death
  * screen. All drawn strip by strip just before each strip goes to the
- * screen (render.c calls hud_strip), at Minecraft's GUI scale 1, which is
- * what 1.8 picks for a 320 x 240 window.
+ * screen (render.c calls hud_strip), at scale 1 (one GUI pixel a screen pixel).
  *
  * In a container a cursor jumps between slots with the arrows: OK is the
  * left click, EXE the right click, shift + OK the shift click, a digit swaps
@@ -84,7 +83,7 @@ static void tint_rect(int x, int y, int w, int h, uint16_t k, int a) {
   }
 }
 
-/* GuiScreen.drawDefaultBackground: the world behind, darkened (0xC0101010 to 0xD0101010) */
+/* the world behind, darkened (0xC0101010 to 0xD0101010) */
 static void dark_background(void) {
   for (int y = clip_y0; y < clip_y1; y++) {
     int a = 24 + (y * 2) / SCREEN_H;
@@ -95,7 +94,7 @@ static void dark_background(void) {
 
 #define RGB(r, g, b) (uint16_t)(((r) & 0xF8) << 8 | ((g) & 0xFC) << 3 | (b) >> 3)
 
-/* ---------------------------------------------------------------- text (FontRenderer) */
+/* ---------------------------------------------------------------- text */
 /* symbols the font lacks, for the key sheet: \1 pi, \2 the square root, \3 backspace, \4 times, \5 divided by */
 static const uint8_t sym_bits[5][8] = {{0x00, 0x3F, 0x12, 0x12, 0x12, 0x12, 0x21, 0x00},
                                        {0x78, 0x08, 0x08, 0x08, 0x09, 0x0A, 0x04, 0x00},
@@ -107,7 +106,7 @@ static int char_w(int c) { return c >= 1 && c <= 5 ? sym_w[c - 1] : c >= 32 && c
 #if NP_TEXT_EXTRA
 /* Other languages: an accented letter is the font's own with np_accent() in the two rows over lowercase letters
  * (a capital under it as a small capital: its rows 0, 1, 2, 4 and 6), a cedilla under it; an accented i three
- * columns wide, as Minecraft's are; œ and æ two letters sharing a column. Chinese comes from the 12-pixel font
+ * columns wide; œ and æ two letters sharing a column. Chinese comes from the 12-pixel font
  * (11 pixels tall), its line's top 2 pixels over the text's; a Chinese build's lines are further apart (TALL). */
 #define TALL ((uint8_t)T("Done")[0] >= 0xE0)
 static uint16_t pen;
@@ -202,7 +201,7 @@ static void number(int n, char *buf) {
   *buf = 0;
 }
 
-/* ---------------------------------------------------------------- items (RenderItem.renderItemOverlays) */
+/* ---------------------------------------------------------------- items */
 static void draw_stack(const Stack *s, int x, int y) {
   if (!s->id) return;
   int ic = item_icon(s->id);
@@ -227,12 +226,12 @@ static void draw_stack(const Stack *s, int x, int y) {
   }
 }
 
-/* ---------------------------------------------------------------- the chat (GuiNewChat) */
+/* ---------------------------------------------------------------- the chat */
 /* what was said, oldest first, each: its colour, the tick it came (2 bytes), the text, 0 */
 #define CHAT_BUF 512
 static char chat[CHAT_BUF];
 static int chat_used;
-static uint16_t chat_clock;   /* ticks (GuiIngame.updateCounter) */
+static uint16_t chat_clock;   /* ticks */
 static bool chat_list;        /* the last line is a list of completions (the next one replaces it) */
 static const uint16_t chat_col[5] = {0xFFFF, RGB(0xFF, 0x55, 0x55), RGB(0x55, 0xFF, 0x55), RGB(0x00, 0xAA, 0x00),
                                      RGB(0xAA, 0xAA, 0xAA)};
@@ -259,7 +258,7 @@ void chat_add(const char *s, int color) {
 void gui_message(const char *s) { chat_add(s, CHAT_WHITE); }
 static int chat_age(int i) { return (uint16_t)(chat_clock - ((uint8_t)chat[i + 1] | (uint8_t)chat[i + 2] << 8)); }
 
-/* how much of s fits on a line w pixels wide: up to a space if it can (FontRenderer.sizeStringToWidth) */
+/* how much of s fits on a line w pixels wide: up to a space if it can */
 static int wrap_len(const char *s, int w) {
 #if NP_TEXT_EXTRA /* (by letter; a line may end after a Chinese one too) */
   int x = 0, sp = -1;
@@ -284,12 +283,12 @@ static int wrap_len(const char *s, int w) {
 #endif
 }
 
-/* GuiNewChat.drawChat: the newest at the bottom, 9 pixels a line on a dark band; each fades out after
+/* the newest at the bottom, 9 pixels a line on a dark band; each fades out after
  * 10 seconds (10 lines at most), or with the chat open all of them (20 lines) */
 #define CHAT_H (TALL ? 12 : 9)   /* a line's height */
 static void chat_lines(void) {
   bool open = gui == GUI_CHAT;
-  if (SCREEN_H - 28 - (open ? 20 : 10) * CHAT_H >= clip_y1 || SCREEN_H - 28 <= clip_y0) return;
+  if (SCREEN_H - 38 - (open ? 20 : 10) * CHAT_H >= clip_y1 || SCREEN_H - 38 <= clip_y0) return;
   int at[64], n = 0;
   for (int i = 0; i < chat_used && n < 64; i += chat_size(i)) at[n++] = i;
   int line = 0, most = open ? (TALL ? 15 : 20) : 10;
@@ -310,7 +309,7 @@ static void chat_lines(void) {
       if (*s == ' ') s++;
     }
     for (int j = k - 1; j >= 0 && line < most; j--, line++) {
-      int y = SCREEN_H - 28 - line * CHAT_H;
+      int y = SCREEN_H - 38 - line * CHAT_H;
       if (y <= clip_y0 || y - CHAT_H >= clip_y1) continue;
       tint_rect(2, y - CHAT_H, SCREEN_W - 2, CHAT_H, 0, a / 2);
       if (a > 3) {
@@ -323,95 +322,122 @@ static void chat_lines(void) {
   }
 }
 
-/* ---------------------------------------------------------------- the HUD (GuiIngame) */
+/* ---------------------------------------------------------------- the HUD */
 static int name_timer, last_slot = -1, last_id;
 
+/* NumBlocks' HUD: the life and food gauges as rounded bars with their own little icons at the top
+ * left (experience, armour and breath beside them); the nine belt slots as round sockets along a
+ * shallow arc at the bottom; a crosshair of four diagonal ticks */
+static const uint8_t ICON_LIFE[7] = {0x08, 0x1C, 0x1C, 0x3E, 0x7F, 0x7F, 0x3E};    /* a drop */
+static const uint8_t ICON_FOOD[7] = {0x0C, 0x18, 0x3E, 0x7F, 0x7F, 0x7F, 0x3E};    /* a berry with its stalk */
+static const uint8_t ICON_AIR[7] = {0x1C, 0x22, 0x49, 0x41, 0x41, 0x22, 0x1C};     /* a bubble */
+static const uint8_t ICON_SHIELD[7] = {0x7F, 0x7F, 0x7F, 0x3E, 0x3E, 0x1C, 0x08};  /* a shield */
+static const uint8_t ICON_STAR[7] = {0x08, 0x08, 0x7F, 0x3E, 0x1C, 0x36, 0x63};    /* a star */
+static void icon7(const uint8_t *rows, int x, int y, uint16_t c) {
+  for (int r = 0; r < 7; r++)
+    for (int k = 0; k < 7; k++)
+      if (rows[r] >> (6 - k) & 1) {
+        fill(x + k + 1, y + r + 1, 1, 1, 0);   /* (its shadow) */
+        fill(x + k, y + r, 1, 1, c);
+      }
+}
+/* a gauge: a dark rounded case, filled from the left to f, with a lit top row */
+static void gauge(int x, int y, int w, float f, uint16_t col, bool flash) {
+  const int h = 7;
+  int fw = (int)(f * (w - 2) + 0.5f);
+  for (int r = 0; r < h; r++) {
+    int in = r == 0 || r == h - 1 ? 2 : r == 1 || r == h - 2 ? 1 : 0;
+    tint_rect(x + in, y + r, w - 2 * in, 1, 0, 22);
+    int a = 1 + (in > 1 ? 1 : in), b = fw - (in > 1 ? 1 : in) * 2;
+    if (r > 0 && r < h - 1 && b > 0) fill(x + a, y + r, b, 1, r == 1 ? blend(col, 0xFFFF, 12) : r >= h - 2 ? blend(col, 0, 8) : col);
+  }
+  if (flash) {
+    fill(x + 2, y, w - 4, 1, 0xFFFF);
+    fill(x + 2, y + h - 1, w - 4, 1, 0xFFFF);
+  }
+}
+/* a round socket for a belt slot */
+static void socket(int cx, int cy, int r, bool sel) {
+  for (int dy = -r; dy <= r; dy++) {
+    int w = (int)sqrtf((float)(r * r - dy * dy) + 0.5f);
+    tint_rect(cx - w, cy + dy, 2 * w + 1, 1, RGB(0x10, 0x18, 0x24), 20);
+    uint16_t rim = sel ? RGB(0xF2, 0xC5, 0x3A) : RGB(0x6E, 0x86, 0x9A);
+    fill(cx - w, cy + dy, 1, 1, rim), fill(cx + w, cy + dy, 1, 1, rim);
+    if (dy == -r || dy == r) fill(cx - w, cy + dy, 2 * w + 1, 1, rim);
+    if (sel && (dy == -r + 1 || dy == r - 1)) fill(cx - w + 1, cy + dy, 2 * w - 1, 1, rim);
+  }
+}
+#define BELT_GAP 23
+static int belt_y(int i) { int d = i - 4; return SCREEN_H - 13 - d * d / 2; }
+
 static void hud(void) {
-  int hx = (SCREEN_W - 182) / 2, hy = SCREEN_H - 22;
   if (gui == GUI_NONE || gui == GUI_CHAT) {
-    /* Minecraft draws its crosshair inverting what is behind it */
-    for (int k = -4; k <= 4; k++) {
-      int pts[2][2] = {{SCREEN_W / 2 + k, SCREEN_H / 2}, {SCREEN_W / 2, SCREEN_H / 2 + k}};
-      for (int p = 0; p < 2; p++) {
-        if (p == 1 && k == 0) continue;
-        int x = pts[p][0], y = pts[p][1];
-        if (y < clip_y0 || y >= clip_y1) continue;
-        uint16_t *d = row_at(y) + x;
-        *d = (uint16_t)~*d;
-      }
+    /* the crosshair: four little diagonal ticks and a dot, inverting what is behind them */
+    static const int8_t pts[9][2] = {{0, 0}, {-3, -3}, {-4, -4}, {3, -3}, {4, -4}, {-3, 3}, {-4, 4}, {3, 3}, {4, 4}};
+    for (int k = 0; k < 9; k++) {
+      int x = SCREEN_W / 2 + pts[k][0], y = SCREEN_H / 2 + pts[k][1];
+      if (y < clip_y0 || y >= clip_y1) continue;
+      uint16_t *d = row_at(y) + x;
+      *d = (uint16_t)~*d;
     }
   }
-  if (clip_y1 <= SCREEN_H - 60) return;
-  sprite(SP_HOTBAR, hx, hy);
-  sprite(SP_HOTBAR_SEL, hx - 1 + pl.slot * 20, hy - 1);
-  for (int i = 0; i < 9; i++) draw_stack(&pl.inv[i], hx + 3 + i * 20, hy + 3);
-  if (pl.mode == 0) {
-    /* experience: the bar and the level */
-    int by = SCREEN_H - 32 + 3;
-    sprite(SP_XP_BG, hx, by);
-    int w = (int)(pl.xp * 183);
-    if (w > 0) sprite_part(SP_XP, hx, by, 0, 0, w > 182 ? 182 : w, 5);
+  if (clip_y0 < 44 && pl.mode == 0) {
+    /* life (red; green when poisoned; it trembles when low), food (amber; olive when hungry) */
+    int hp = (int)ceilf(pl.health), jig = hp <= 4 ? (int)((frame_no * 7) % 3) - 1 : 0;
+    bool flash = pl.invuln > 7 && (pl.invuln / 3) % 2 == 1;
+    uint16_t lc = pl.eff[EF_POISON] ? RGB(0x6E, 0xB8, 0x3A) : RGB(0xE8, 0x4A, 0x5A);
+    if (pl.eff[EF_REGEN] && (frame_no / 4) & 1) lc = blend(lc, 0xFFFF, 10);
+    icon7(ICON_LIFE, 6, 6 + jig, lc);
+    gauge(16, 6 + jig, 72, pl.health / 20, lc, flash);
+    uint16_t fc = pl.eff[EF_HUNGER] ? RGB(0x8A, 0x9A, 0x3A) : RGB(0xF2, 0xA0, 0x3A);
+    icon7(ICON_FOOD, 6, 17, fc);
+    gauge(16, 17, 72, pl.food / 20.0f, fc, false);
+    /* experience: a thin bar and the level by a star */
+    tint_rect(16, 27, 72, 3, 0, 22);
+    fill(17, 28, (int)(pl.xp * 70), 1, RGB(0x8A, 0xE8, 0xD0));
     if (pl.xp_level > 0) {
       char b[12];
       number(pl.xp_level, b);
-      int tx = (SCREEN_W - text_width(b)) / 2, ty = SCREEN_H - 31 - 4;
-      glyphs(b, tx + 1, ty, 0, 1);
-      glyphs(b, tx - 1, ty, 0, 1);
-      glyphs(b, tx, ty + 1, 0, 1);
-      glyphs(b, tx, ty - 1, 0, 1);
-      glyphs(b, tx, ty, RGB(0x80, 0xFF, 0x20), 1);
+      icon7(ICON_STAR, 92, 24, RGB(0x8A, 0xE8, 0xD0));
+      text(b, 101, 24, RGB(0x8A, 0xE8, 0xD0), true);
     }
-    /* hearts, from the left; they shake at 2 hearts or less */
-    int top = SCREEN_H - 39, left = SCREEN_W / 2 - 91, right = SCREEN_W / 2 + 91;
-    int hp = (int)ceilf(pl.health);
-    bool flash = pl.invuln > 10 && (pl.invuln / 3) % 2 == 1;
-    /* poisoned: green; regenerating: a wave runs along them (GuiIngame.renderPlayerStats) */
-    extern uint32_t game_time;
-    bool poison = pl.eff[EF_POISON] > 0;
-    int wave = pl.eff[EF_REGEN] ? (int)(game_time % 25) : -1;
-    for (int i = 0; i < 10; i++) {
-      int x = left + i * 8, y = top;
-      if (hp <= 4) y += (int)((frame_no * 7 + i * 13) % 3) - 1;
-      if (i == wave) y -= 2;
-      sprite(flash ? SP_HEART_HIT : SP_HEART_BG, x, y);
-      if (i * 2 + 1 < hp) sprite(poison ? SP_HEART_POISON : SP_HEART, x, y);
-      else if (i * 2 + 1 == hp) sprite(poison ? SP_HEART_POISON_HALF : SP_HEART_HALF, x, y);
-    }
-    /* armour, over the hearts */
+    /* armour: a shield and its points, by the life gauge */
     int ap = 0;
     for (int i = 0; i < 4; i++)
       if (pl.armor[i].id >= 256) ap += it_a[pl.armor[i].id - 256];
-    if (ap > 0)
-      for (int i = 0; i < 10; i++) {
-        int x = left + i * 8;
-        sprite(i * 2 + 1 < ap ? SP_ARMOR_FULL : i * 2 + 1 == ap ? SP_ARMOR_HALF : SP_ARMOR_BG, x, top - 10);
-      }
-    /* food, from the right */
-    for (int i = 0; i < 10; i++) {
-      int x = right - i * 8 - 9, y = top;
-      if (pl.sat <= 0 && (frame_no % (unsigned)(pl.food * 3 + 1)) == 0) y += (int)(frame_no % 3) - 1;
-      bool hunger = pl.eff[EF_HUNGER] > 0;   /* (green with the hunger effect) */
-      sprite(hunger ? SP_FOOD_HUNGER_BG : SP_FOOD_BG, x, y);
-      if (i * 2 + 1 < pl.food) sprite(hunger ? SP_FOOD_HUNGER : SP_FOOD, x, y);
-      else if (i * 2 + 1 == pl.food) sprite(hunger ? SP_FOOD_HUNGER_HALF : SP_FOOD_HALF, x, y);
+    if (ap > 0) {
+      char b[12];
+      number(ap, b);
+      icon7(ICON_SHIELD, 92, 6, RGB(0xC8, 0xD0, 0xDC));
+      text(b, 101, 6, RGB(0xC8, 0xD0, 0xDC), true);
     }
-    /* air, over the food */
-    if (pl.air < 300) {
-      int full = (int)ceilf((pl.air - 2) * 10 / 300.0f), part = (int)ceilf(pl.air * 10 / 300.0f) - full;
-      for (int i = 0; i < full + part; i++) sprite(i < full ? SP_BUBBLE : SP_BUBBLE_POP, right - i * 8 - 9, top - 10);
+    /* breath, under water: a blue gauge */
+    if (pl.air < AIR_TICKS) {
+      icon7(ICON_AIR, 6, 33, RGB(0x8A, 0xC8, 0xF2));
+      gauge(16, 33, 72, pl.air > 0 ? pl.air / (float)AIR_TICKS : 0, RGB(0x5A, 0xA8, 0xE8), false);
+    }
+  }
+  if (clip_y1 > SCREEN_H - 36) {
+    /* the belt: nine round sockets on an arc, the chosen one bigger and raised */
+    for (int i = 0; i < 9; i++) {
+      bool sel = i == pl.slot;
+      int cx = SCREEN_W / 2 + (i - 4) * BELT_GAP, cy = belt_y(i) - (sel ? 2 : 0);
+      socket(cx, cy, sel ? 12 : 10, sel);
+      draw_stack(&pl.inv[i], cx - 8, cy - 8);
     }
   }
   /* the name of the item just picked, for two seconds */
   if (gui == GUI_NONE && name_timer > 0 && held()->id) {
     const char *n = item_label(held()->id);
-    int y = SCREEN_H - 59 + (pl.mode ? 14 : 0);
-    text(n, (SCREEN_W - text_width(n)) / 2, y, 0xFFFF, true);
+    int y = SCREEN_H - 50;
+    if (y + 10 > clip_y0 && y < clip_y1) text(n, (SCREEN_W - text_width(n)) / 2, y, 0xFFFF, true);
   }
 }
 
 /* ---------------------------------------------------------------- chests and furnaces */
 typedef struct { int16_t x, z; uint8_t y, used; Stack s[27]; } Chest;
 typedef struct { int16_t x, z; uint8_t y, used; Stack s[3]; int16_t burn, burn_max, cook; } Furnace;
+#define COOK_TICKS 160   /* an oven's time for one thing */
 #define N_CHESTS 8
 #define N_FURNACES 6
 static struct {
@@ -470,7 +496,7 @@ void tiles_forget(int x, int y, int z) {
   if (f) f->used = 0;
 }
 
-/* TileEntityFurnace.update */
+/* the furnace at work */
 static bool can_smelt(const Furnace *f) {
   if (!f->s[0].id) return false;
   int out = smelt_of(f->s[0].id);
@@ -484,29 +510,32 @@ void gui_tick(void) {
   if (!(chat_clock & 255))
     for (int i = 0; i < chat_used; i += chat_size(i))
       if (chat_age(i) > 1000) chat[i + 1] = (char)((chat_clock - 1000) & 255), chat[i + 2] = (char)((chat_clock - 1000) >> 8);
+  /* ovens: a piece of fuel is put on only when there is something to cook and room for what comes
+   * out; each thing takes COOK_TICKS of heat; without heat the half-cooked thing cools back slowly */
   for (int i = 0; i < N_FURNACES; i++) {
     Furnace *f = &furnaces[i];
     if (!f->used) continue;
-    bool was = f->burn > 0;
-    if (f->burn > 0) f->burn--;
-    if ((f->burn > 0 || f->s[1].id) && f->s[0].id) {
-      if (f->burn == 0 && can_smelt(f)) {
-        f->burn = f->burn_max = (int16_t)item_fuel(f->s[1].id);
-        if (f->burn > 0) {
-          if (f->s[1].id == I_LAVA_BUCKET) f->s[1].id = I_BUCKET;
-          else stack_take(&f->s[1], 1);
-        }
+    bool was = f->burn > 0, ready = f->s[0].id && can_smelt(f);
+    if (ready && f->burn <= 0 && f->s[1].id) {
+      int heat = item_fuel(f->s[1].id);
+      if (heat > 0) {
+        f->burn = f->burn_max = (int16_t)(heat > 32000 ? 32000 : heat);
+        if (f->s[1].id == I_LAVA_BUCKET) f->s[1].id = I_BUCKET;
+        else stack_take(&f->s[1], 1);
       }
-      if (f->burn > 0 && can_smelt(f)) {
-        if (++f->cook >= 200) {
-          f->cook = 0;
-          int out = smelt_of(f->s[0].id);
-          if (!f->s[2].id) f->s[2].id = (uint16_t)out, f->s[2].aux = 1;
-          else f->s[2].aux++;
-          stack_take(&f->s[0], 1);
-        }
-      } else f->cook = 0;
-    } else if (f->burn == 0 && f->cook > 0) f->cook = (int16_t)(f->cook > 2 ? f->cook - 2 : 0);
+    }
+    if (f->burn > 0) {
+      f->burn--;
+      if (ready && ++f->cook >= COOK_TICKS) {
+        int out = smelt_of(f->s[0].id);
+        if (f->s[2].id) f->s[2].aux++;
+        else f->s[2].id = (uint16_t)out, f->s[2].aux = 1;
+        stack_take(&f->s[0], 1);
+        f->cook = 0;
+      }
+      if (!ready) f->cook = 0;
+    } else if (f->cook > 0)
+      f->cook--;
     if (was != (f->burn > 0) && world_loaded(f->x, f->y, f->z)) {
       int b = world_get(f->x, f->y, f->z);
       if (b == B_FURNACE || b == B_FURNACE_LIT) world_set(f->x, f->y, f->z, f->burn > 0 ? B_FURNACE_LIT : B_FURNACE);
@@ -528,10 +557,20 @@ static Stack *grid;
 static void add_slot(int x, int y, int kind, int k, Stack *s) {
   slots[nslots++] = (Slot){(int16_t)x, (int16_t)y, (uint8_t)kind, (uint8_t)k, s};
 }
-static void add_player_slots(int y_main, int y_hot) {
+/* NumBlocks' screens (drawn by tools/conformite/numblocks_art.py, gui_images, at the same places):
+ * slots PITCH apart, panels PANEL_W x PANEL_H, the bag's three rows from BAG_Y, the hotbar apart below */
+#define PITCH 20
+#define PANEL_W 200
+#define PANEL_H 180
+#define BAG_X 11
+#define BAG_Y 88
+#define HOT_Y 154
+#define CREATIVE_W 216
+#define CREATIVE_H 148
+static void add_player_slots(void) {
   for (int r = 0; r < 3; r++)
-    for (int c = 0; c < 9; c++) add_slot(8 + c * 18, y_main + r * 18, SL_NORMAL, 0, &pl.inv[9 + r * 9 + c]);
-  for (int c = 0; c < 9; c++) add_slot(8 + c * 18, y_hot, SL_NORMAL, 0, &pl.inv[c]);
+    for (int c = 0; c < 9; c++) add_slot(BAG_X + c * PITCH, BAG_Y + r * PITCH, SL_NORMAL, 0, &pl.inv[9 + r * 9 + c]);
+  for (int c = 0; c < 9; c++) add_slot(BAG_X + c * PITCH, HOT_Y, SL_NORMAL, 0, &pl.inv[c]);
 }
 
 static void update_result(void) {
@@ -548,11 +587,11 @@ static Stack cshown[45], ctabs[12];
 static const uint16_t tab_icon[12] = {B_BRICKS, B_PEONY_LOWER, I_REDSTONE, B_RAIL, I_LAVA_BUCKET, I_COMPASS,
                                       I_APPLE, I_IRON_AXE, I_GOLDEN_SWORD, 0, I_STICK, B_CHEST};
 #define TAB_SEARCH 5
-static char csearch[16];   /* Search Items: what is typed (GuiContainerCreative.searchField) */
-/* an item whose name has what is typed in it (updateCreativeSearch) */
+static char csearch[16];   /* Search Items: what is typed */
+/* an item whose name has what is typed in it */
 #if NP_TEXT_EXTRA
-/* (other languages: accented letters found by their plain letter; and by Minecraft's name, typed with spaces for
- * its _, as letters typed can't be Chinese ones) */
+/* (other languages: accented letters found by their plain letter; and by the name commands use, typed with spaces
+ * for its _, as letters typed can't be Chinese ones) */
 static bool has(const char *n) {
   for (; *n; n++) {
     const char *p = n;
@@ -569,11 +608,8 @@ static bool has(const char *n) {
 }
 static bool found(int id) {
   if (!csearch[0] || has(item_label(id))) return true;
-  for (int g = 0; g < n_give; g++)
-    if (give_id[g] == id) {
-      int k = give_key[g] >> 4;
-      return has(k < 256 ? mc_block_name[k] : mc_item_name[k - 256]);
-    }
+  for (int g = 0; g < n_cmd_items; g++)   /* (or by the name commands know it by) */
+    if (cmd_item_id[g] == id) return has(cmd_item_name[g]);
   return false;
 }
 #else
@@ -614,44 +650,44 @@ void gui_open(int screen, int x, int y, int z) {
   cur = 0, drag = 0, ndragged = 0;
   grid = NULL;
   origin_x = x, origin_y = y, origin_z = z;
-  panel_h = 166;
+  panel_h = PANEL_H;
   switch (screen) {
-    case GUI_INVENTORY:
-      add_slot(144, 36, SL_RESULT, 0, &result);
-      for (int i = 0; i < 4; i++) add_slot(88 + (i & 1) * 18, 26 + (i >> 1) * 18, SL_NORMAL, 0, &pl.craft[i]);
-      for (int i = 0; i < 4; i++) add_slot(8, 8 + i * 18, SL_ARMOR, (uint8_t)(3 - i), &pl.armor[3 - i]);
-      add_player_slots(84, 142);
+    case GUI_INVENTORY:   /* armour two by two, the player, the 2 x 2 grid and what it makes */
+      add_slot(177, 32, SL_RESULT, 0, &result);
+      for (int i = 0; i < 4; i++) add_slot(111 + (i & 1) * PITCH, 22 + (i >> 1) * PITCH, SL_NORMAL, 0, &pl.craft[i]);
+      for (int i = 0; i < 4; i++) add_slot(11 + (i & 1) * PITCH, 12 + (i >> 1) * PITCH, SL_ARMOR, (uint8_t)(3 - i), &pl.armor[3 - i]);
+      add_player_slots();
       grid = pl.craft, grid_w = 2;
       cur = 5 + 4 + 27;   /* the first hotbar slot */
       break;
     case GUI_CRAFTING:
-      add_slot(124, 35, SL_RESULT, 0, &result);
+      add_slot(140, 35, SL_RESULT, 0, &result);
       memset(table_grid, 0, sizeof table_grid);
-      for (int i = 0; i < 9; i++) add_slot(30 + (i % 3) * 18, 17 + (i / 3) * 18, SL_NORMAL, 0, &table_grid[i]);
-      add_player_slots(84, 142);
+      for (int i = 0; i < 9; i++) add_slot(31 + (i % 3) * PITCH, 15 + (i / 3) * PITCH, SL_NORMAL, 0, &table_grid[i]);
+      add_player_slots();
       grid = table_grid, grid_w = 3;
       cur = 10 + 27;
       break;
-    case GUI_FURNACE:
+    case GUI_FURNACE:   /* in a row: fuel, its flame, what cooks, the arrow, what comes out */
       furnace = furnace_at(x, y, z, true);
       if (!furnace) {
         gui = GUI_NONE;
         return;
       }
-      add_slot(56, 17, SL_NORMAL, 0, &furnace->s[0]);
-      add_slot(56, 53, SL_FUEL, 0, &furnace->s[1]);
-      add_slot(116, 35, SL_OUTPUT, 0, &furnace->s[2]);
-      add_player_slots(84, 142);
+      add_slot(61, 36, SL_NORMAL, 0, &furnace->s[0]);
+      add_slot(21, 36, SL_FUEL, 0, &furnace->s[1]);
+      add_slot(130, 36, SL_OUTPUT, 0, &furnace->s[2]);
+      add_player_slots();
       cur = 3 + 27;
       break;
     case GUI_CREATIVE:
-      for (int i = 0; i < 45; i++) add_slot(9 + (i % 9) * 18, 18 + (i / 9) * 18, SL_CREATIVE, (uint8_t)i, &cshown[i]);
-      for (int c = 0; c < 9; c++) add_slot(9 + c * 18, 112, SL_NORMAL, 0, &pl.inv[c]);
+      for (int i = 0; i < 45; i++) add_slot(11 + (i % 9) * PITCH, 18 + (i / 9) * PITCH, SL_CREATIVE, (uint8_t)i, &cshown[i]);
+      for (int c = 0; c < 9; c++) add_slot(11 + c * PITCH, 124, SL_NORMAL, 0, &pl.inv[c]);
       for (int t = 0; t < 12; t++)
-        if (t != 9) add_slot(28 * (t % 6) + 6, t < 6 ? -28 + 9 : 136 + 6, SL_TAB, (uint8_t)t, &ctabs[t]);
+        if (t != 9) add_slot(28 * (t % 6) + 10, t < 6 ? -28 + 9 : CREATIVE_H + 6, SL_TAB, (uint8_t)t, &ctabs[t]);
       cscroll = 0;
       creative_refresh();
-      panel_h = 136;
+      panel_h = CREATIVE_H;
       cur = 45;
       break;
     case GUI_CHEST:
@@ -660,13 +696,12 @@ void gui_open(int screen, int x, int y, int z) {
         gui = GUI_NONE;
         return;
       }
-      for (int i = 0; i < 27; i++) add_slot(8 + (i % 9) * 18, 18 + (i / 9) * 18, SL_NORMAL, 0, &chest->s[i]);
-      add_player_slots(85, 143);
-      panel_h = 167;
+      for (int i = 0; i < 27; i++) add_slot(11 + (i % 9) * PITCH, 15 + (i / 9) * PITCH, SL_NORMAL, 0, &chest->s[i]);
+      add_player_slots();
       cur = 27 + 27;
       break;
   }
-  panel_x = (SCREEN_W - (screen == GUI_CREATIVE ? 195 : 176)) / 2;
+  panel_x = (SCREEN_W - (screen == GUI_CREATIVE ? CREATIVE_W : PANEL_W)) / 2;
   panel_y = (SCREEN_H - panel_h) / 2;
   update_result();
 }
@@ -685,7 +720,7 @@ void gui_close(void) {
     Stack *s = back[i];
     if (!s->id) continue;
     int left = inv_add(pl.inv, 36, s->id, item_count(s), s->aux);
-    if (left) ent_drop(s->id, left, s->aux, pl.x, pl.y + 1.32f, pl.z, true);
+    if (left) ent_drop(s->id, left, s->aux, pl.x, pl.y + 1.3f, pl.z, true);
     s->id = 0, s->aux = 0;
   }
   gui = GUI_NONE;
@@ -710,15 +745,12 @@ static void take_result(void) {
 
 static int smelt_xp_left;
 static void furnace_xp(int id, int n) {
-  /* RecipesFurnace's experience, x 100 */
-  int x = 10;
-  if (id == I_IRON_INGOT || id == I_REDSTONE) x = 70;
-  else if (id == I_GOLD_INGOT || id == I_DIAMOND || id == I_EMERALD) x = 100;
-  else if (id >= I_COOKED_PORKCHOP && id <= I_COOKED_FISH) x = 35;
-  else if (id == I_CHARCOAL) x = 15;
-  else if (id == I_DYE_GREEN || id == I_DYE_BLUE) x = 20;
-  else if (id == I_BRICK) x = 30;
-  else if (id == B_HARDENED_CLAY) x = 35;
+  /* experience for what comes out of an oven, in hundredths: metals and gems most, food some */
+  int x = 15;
+  if (id == I_IRON_INGOT || id == I_REDSTONE) x = 60;
+  else if (id == I_GOLD_INGOT || id == I_DIAMOND || id == I_EMERALD) x = 90;
+  else if (id >= I_COOKED_PORKCHOP && id <= I_COOKED_FISH) x = 25;
+  else if (id == I_BRICK || id == B_HARDENED_CLAY) x = 20;
   smelt_xp_left += x * n;
   player_add_xp(smelt_xp_left / 100);
   smelt_xp_left %= 100;
@@ -738,7 +770,7 @@ static void click(Slot *sl, int button) {
     return;
   }
   if (sl->kind == SL_CREATIVE) {
-    /* GuiContainerCreative: a click takes a stack of it (right: one); a held stack clicked there is gone */
+    /* a click takes a stack of it (right: one); a held stack clicked there is gone */
     if (c->id) c->id = 0, c->aux = 0;
     else if (s->id) {
       c->id = s->id;
@@ -799,7 +831,7 @@ static void click(Slot *sl, int button) {
   if (grid) update_result();
 }
 
-/* spreading a held stack over slots (GuiContainer's drag): OK held while the cursor goes over slots
+/* spreading a held stack over slots : OK held while the cursor goes over slots
  * shares the stack out evenly between them, EXE held puts one in each; it happens when the key is
  * let go, what is left stays held. Over one slot only, it is a plain click. */
 static bool can_drag(int i) {
@@ -936,8 +968,8 @@ static void move_cursor(int dx, int dy) {
 }
 
 /* ---------------------------------------------------------------- menus
- * GuiMainMenu, GuiSelectWorld, GuiCreateWorld, GuiYesNo, GuiOptions,
- * GuiIngameMenu, GuiGameOver: their buttons where 1.8 puts them. */
+ * the title, the worlds, a new world, yes or no, the settings, the pause and
+ * the end screens, and their buttons. */
 typedef struct { int16_t x, y, w; uint8_t on, id; char label[NP_TEXT_EXTRA ? 48 : 32]; } Button;
 static Button buttons[12];
 static int nbuttons, bcur;
@@ -956,7 +988,7 @@ char name_text[WORLD_NAME + 1];   /* the new world's name, or the world being re
 int play_slot;              /* the world to play */
 static int options_from;    /* the screen the options go back to */
 /* the Controls list's selection: -1 the Key Sheet button, 0.. the actions (kcol 1: their Reset), N_ACTIONS Done
- * (kcol 1: Reset Keys); waiting for a key (GuiControls.buttonId) */
+ * (kcol 1: Reset Keys); waiting for a key */
 static int ksel = -1, kcol, kscroll;
 static bool kwait;
 static void keys_input(uint32_t pressed);
@@ -1041,7 +1073,7 @@ static void field_input(void) {
   }
 }
 
-/* ---------------------------------------------------------------- the chat line (GuiChat) */
+/* ---------------------------------------------------------------- the chat line */
 /* typed as fields are, and some keys type what commands need: x,n,t ":", var "_", x10^x "~",
  * ans a space, and 0 among the letters "@"; toolbox finishes the word (as Tab does), up brings
  * back the line sent last; OK or EXE sends, Back closes */
@@ -1071,7 +1103,7 @@ static void put_word(int at, const char *w) {
   if (at + n > CHAT_MAX) n = CHAT_MAX - at;
   memcpy(chat_text + at, w, (size_t)n), chat_text[at + n] = 0;
 }
-/* GuiChat.autocompletePlayerNames: the first press finishes the word as far as every way agrees,
+/* the first press finishes the word as far as every way agrees,
  * else lists the ways and shows the first; each press after shows the next */
 static void complete(void) {
   char line[CHAT_MAX + 25], w[40];
@@ -1139,7 +1171,7 @@ static void chat_input(void) {
       gui = GUI_NONE;
       return;
     } else if (k == RK_OK || k == RK_EXE) {
-      /* GuiChat.sendChatMessage: without the spaces around it */
+      /* without the spaces around it */
       gui = GUI_NONE;
       char *t = chat_text;
       while (*t == ' ') t++;
@@ -1198,38 +1230,39 @@ static void menu(int screen) {
   char t[NP_TEXT_EXTRA ? 64 : 40];
   switch (screen) {
     case GUI_TITLE: {
-      int j = h / 4 + 48;
-      add_button(w / 2 - 100, j, 200, 1, B_SINGLE, T("Singleplayer"));
-      add_button(w / 2 - 100, j + 24, 200, 0, B_NO, T("Multiplayer"));
-      add_button(w / 2 - 100, j + 72 + 12 - 24, 98, 1, B_OPTIONS, T("Options..."));
-      add_button(w / 2 + 2, j + 72 + 12 - 24, 98, 1, B_QUITAPP, T("Quit Game"));
+      /* NumBlocks' title: one column of four buttons under the logo */
+      int j = h / 2 - 14, bw = 160;
+      add_button(w / 2 - bw / 2, j, bw, 1, B_SINGLE, T("Play"));
+      add_button(w / 2 - bw / 2, j + 26, bw, 0, B_NO, T("Play Together"));
+      add_button(w / 2 - bw / 2, j + 52, bw, 1, B_OPTIONS, T("Settings"));
+      add_button(w / 2 - bw / 2, j + 78, bw, 1, B_QUITAPP, T("Leave"));
       break;
     }
     case GUI_WORLDS: {
       bool any = nworlds > 0;
-      add_button(w / 2 - 154, h - 52, 150, any, B_PLAY, T("Play Selected World"));
-      add_button(w / 2 + 4, h - 52, 150, world_free_slot() != 0, B_CREATE, T("Create New World"));
+      add_button(w / 2 - 154, h - 52, 150, any, B_PLAY, T("Play This World"));
+      add_button(w / 2 + 4, h - 52, 150, world_free_slot() != 0, B_CREATE, T("New World"));
       add_button(w / 2 - 154, h - 28, 72, any, B_RENAME, T("Rename"));
       add_button(w / 2 - 76, h - 28, 72, any, B_DELETE, T("Delete"));
-      add_button(w / 2 + 4, h - 28, 72, any && world_free_slot() != 0, B_RECREATE, T("Re-Create"));
+      add_button(w / 2 + 4, h - 28, 72, any && world_free_slot() != 0, B_RECREATE, T("Same Settings"));
       add_button(w / 2 + 82, h - 28, 72, 1, B_CANCEL, T("Cancel"));
       break;
     }
     case GUI_CREATE:
       add_button(w / 2 - 100, 60, 200, 1, B_NAME, name_text);   /* (drawn as a field) */
-      cat(t, T("Game Mode: "), create_mode ? T("Creative") : T("Survival"));
+      cat(t, T("Mode: "), create_mode ? T("Creative") : T("Survival"));
       add_button(w / 2 - 155, 100, 150, 1, B_MODE, t);
-      cat(t, T("Allow Cheats: "), create_cheats ? T("ON") : T("OFF"));
+      cat(t, T("Commands: "), create_cheats ? T("ON") : T("OFF"));
       add_button(w / 2 + 5, 100, 150, 1, B_CHEATS, t);
-      cat(t, T("Seed: "), seed_text[0] ? seed_text : (field == F_SEED ? "" : T("(random)")));
+      cat(t, T("World Number: "), seed_text[0] ? seed_text : (field == F_SEED ? "" : T("(any)")));
       add_button(w / 2 - 100, 146, 200, 1, B_SEED, t);
-      cat(t, T("World Type: "), create_type == WT_FLAT ? T("Superflat") : T("Default"));
+      cat(t, T("Land: "), create_type == WT_FLAT ? T("Flat") : T("Natural"));
       add_button(w / 2 - 100, 182, 200, 1, B_TYPE, t);
-      add_button(w / 2 - 155, h - 28, 150, 1, B_DOCREATE, T("Create New World"));
+      add_button(w / 2 - 155, h - 28, 150, 1, B_DOCREATE, T("New World"));
       add_button(w / 2 + 5, h - 28, 150, 1, B_CANCEL, T("Cancel"));
       break;
     case GUI_RENAME:
-      /* GuiRenameWorld */
+      /* renaming */
       add_button(w / 2 - 100, 60, 200, 1, B_NAME, name_text);
       add_button(w / 2 - 100, h / 4 + 96 + 12, 200, name_text[0] != 0, B_DORENAME, T("Rename"));
       add_button(w / 2 - 100, h / 4 + 120 + 12, 200, 1, B_CANCEL, T("Cancel"));
@@ -1239,10 +1272,10 @@ static void menu(int screen) {
       add_button(w / 2 + 5, h / 6 + 96, 150, 1, B_CANCEL, T("Cancel"));
       break;
     case GUI_OPTIONS: {
-      static const char *const diff[4] = {T("Peaceful"), T("Easy"), T("Normal"), T("Hard")};
+      static const char *const diff[4] = {T("Calm"), T("Easy"), T("Normal"), T("Hard")};
       cat(t, T("Difficulty: "), diff[opt.difficulty & 3]);
       add_button(w / 2 - 155, h / 6 - 12, 150, 1, B_DIFF, t);
-      cat(t, T("Graphics: "), opt.fancy ? T("Fancy") : T("Fast"));
+      cat(t, T("Detail: "), opt.fancy ? T("High") : T("Low"));
       add_button(w / 2 + 5, h / 6 - 12, 150, 1, B_GFX, t);
       char n[8];
       number(opt.look, n);
@@ -1252,9 +1285,9 @@ static void menu(int screen) {
       add_button(w / 2 - 155, h / 6 + 12, 150, 1, B_LOOK, t);
       cat(t, T("Clouds: "), opt.clouds ? T("ON") : T("OFF"));
       add_button(w / 2 + 5, h / 6 + 12, 150, 1, B_CLOUDS, t);
-      cat(t, T("View Bobbing: "), opt.bobbing ? T("ON") : T("OFF"));
+      cat(t, T("Head Sway: "), opt.bobbing ? T("ON") : T("OFF"));
       add_button(w / 2 - 155, h / 6 + 36, 150, 1, B_BOB, t);
-      add_button(w / 2 + 5, h / 6 + 36, 150, 1, B_CONTROLS, T("Controls..."));
+      add_button(w / 2 + 5, h / 6 + 36, 150, 1, B_CONTROLS, T("Keys"));
       add_button(w / 2 - 100, h / 6 + 168, 200, 1, B_DONE, T("Done"));
       break;
     case GUI_CONTROLS:
@@ -1262,25 +1295,25 @@ static void menu(int screen) {
       break;
     }
     case GUI_PAUSE:
-      add_button(w / 2 - 100, h / 4 + 24 - 16, 200, 1, B_BACK_GAME, T("Back to Game"));
-      add_button(w / 2 - 100, h / 4 + 48 - 16, 98, 0, B_NO, T("Achievements"));
-      add_button(w / 2 + 2, h / 4 + 48 - 16, 98, 0, B_NO, T("Statistics"));
-      add_button(w / 2 - 100, h / 4 + 96 - 16, 98, 1, B_OPTIONS, T("Options..."));
-      add_button(w / 2 + 2, h / 4 + 96 - 16, 98, !lan_open, B_LAN, T("Open to LAN"));
-      add_button(w / 2 - 100, h / 4 + 120 - 16, 200, 1, B_SAVEQUIT, T("Save and Quit to Title"));
+      add_button(w / 2 - 100, h / 4 + 24 - 16, 200, 1, B_BACK_GAME, T("Resume"));
+      add_button(w / 2 - 100, h / 4 + 48 - 16, 98, 0, B_NO, T("Journal"));
+      add_button(w / 2 + 2, h / 4 + 48 - 16, 98, 0, B_NO, T("Records"));
+      add_button(w / 2 - 100, h / 4 + 96 - 16, 98, 1, B_OPTIONS, T("Settings"));
+      add_button(w / 2 + 2, h / 4 + 96 - 16, 98, !lan_open, B_LAN, T("Turn On Commands"));
+      add_button(w / 2 - 100, h / 4 + 120 - 16, 200, 1, B_SAVEQUIT, T("Save and Leave"));
       break;
     case GUI_LAN:
-      /* GuiShareToLan */
-      cat(t, T("Game Mode: "), lan_mode ? T("Creative") : T("Survival"));
+      /* turning on commands */
+      cat(t, T("Mode: "), lan_mode ? T("Creative") : T("Survival"));
       add_button(w / 2 - 155, 100, 150, 1, B_LAN_MODE, t);
-      cat(t, T("Allow Cheats: "), lan_allow ? T("ON") : T("OFF"));
+      cat(t, T("Commands: "), lan_allow ? T("ON") : T("OFF"));
       add_button(w / 2 + 5, 100, 150, 1, B_LAN_CHEATS, t);
-      add_button(w / 2 - 155, h - 28, 150, 1, B_LAN_START, T("Start LAN World"));
+      add_button(w / 2 - 155, h - 28, 150, 1, B_LAN_START, T("Use These Settings"));
       add_button(w / 2 + 5, h - 28, 150, 1, B_CANCEL, T("Cancel"));
       break;
     case GUI_DEATH:
-      add_button(w / 2 - 100, h / 4 + 72, 200, 1, B_RESPAWN, T("Respawn"));
-      add_button(w / 2 - 100, h / 4 + 96, 200, 1, B_TITLE, T("Title screen"));
+      add_button(w / 2 - 100, h / 4 + 72, 200, 1, B_RESPAWN, T("Try Again"));
+      add_button(w / 2 - 100, h / 4 + 96, 200, 1, B_TITLE, T("Main Menu"));
       break;
   }
   if (bcur >= nbuttons || !buttons[bcur].on)
@@ -1303,7 +1336,7 @@ static int selected(WorldInfo *w) { return nworlds && world_info(wlist[wsel], w)
 
 static void button(const Button *b, bool hover) {
   int sp = !b->on ? SP_BUTTON_OFF : hover ? SP_BUTTON_HOVER : SP_BUTTON;
-  /* GuiButton.drawButton: the left half from the texture's left, the right half from its right */
+  /* the left half from the texture's left, the right half from its right */
   sprite_part(sp, b->x, b->y, 0, 0, b->w / 2, 20);
   sprite_part(sp, b->x + b->w / 2, b->y, 200 - b->w / 2, 0, b->w / 2, 20);
   uint16_t col = !b->on ? RGB(0xA0, 0xA0, 0xA0) : hover ? RGB(0xFF, 0xFF, 0xA0) : RGB(0xE0, 0xE0, 0xE0);
@@ -1330,7 +1363,7 @@ static void press(int id) {
       gui_menu(GUI_CREATE);
       break;
     case B_RECREATE: {
-      /* GuiCreateWorld.func_146318_a: a new world as the selected one began, "Copy of" its name */
+      /* a new world as the selected one began, "Copy of" its name */
       if (!selected(&wi)) break;
       char n[WORLD_NAME + 9];
       cat(n, T("Copy of "), wi.name);
@@ -1381,7 +1414,7 @@ static void press(int id) {
     case B_LAN_MODE: lan_mode = !lan_mode; break;
     case B_LAN_CHEATS: lan_allow = !lan_allow; break;
     case B_LAN_START:
-      /* IntegratedServer.shareToLAN: the game mode is for players who join; cheats for everyone */
+      /* the game mode is for players who join; cheats for everyone */
       lan_open = true, lan_cheats = lan_allow;
       gui = GUI_NONE;
       break;
@@ -1444,61 +1477,49 @@ static void menu_input(uint32_t keys, uint32_t pressed) {
   }
 }
 
-/* the title's name, in stone, like the game's logo (but its own) */
+/* the title: NumBlocks, each letter cut from another block (wood, grass, sand, brick...), on a teal shadow
+ * (Calcade, 19 October 2026: NumBlocks' own logo) */
 static void logo(int y) {
   const char *s = "NumBlocks";
   const int sc = 4;
+  static const uint8_t fill[9] = {B_PLANKS_OAK, B_SAND, B_BRICKS, B_PLANKS_BIRCH, B_COBBLESTONE, B_GOLD_BLOCK,
+                                  B_PLANKS_ACACIA, B_LAPIS_BLOCK, B_STONE_BRICKS};
   int w = text_width(s) * sc, x0 = (SCREEN_W - w) / 2;
-  if (y + 8 * sc + 4 <= clip_y0 || y >= clip_y1) return;
-  for (int d = 3; d >= 1; d--) glyphs(s, x0 + d, y + d, RGB(0x30 + d * 8, 0x30 + d * 8, 0x30 + d * 8), sc);
-  /* the face: stone texels, 4 screen pixels each */
-  int tex = blk_tex[B_STONE][0];
+  if (y + 8 * sc + 6 <= clip_y0 || y >= clip_y1) return;
+  glyphs(s, x0 + 3, y + 4, RGB(0x12, 0x4A, 0x4C), sc);
+  glyphs(s, x0 + 2, y + 2, RGB(0x1E, 0x6E, 0x70), sc);
   for (int r = 0; r < 8 * sc; r++) {
     int ty = y + r;
     if (ty < clip_y0 || ty >= clip_y1) continue;
     uint16_t *d = row_at(ty);
-    int x = x0;
-    for (const char *c = s; *c; c++) {
+    int x = x0, k = 0;
+    for (const char *c = s; *c; c++, k++) {
       const uint8_t *g = font_bits + (*c - 32) * 8;
-      for (int k = 0; k < 8 * sc; k++)
-        if (g[r / sc] & (1 << (k / sc))) {
-          int u = ((x + k) / 2) & 15, v = (ty / 2) & 15;
+      int tex = blk_tex[fill[k % 9]][2];
+      for (int q = 0; q < 8 * sc; q++)
+        if (g[r / sc] & (1 << (q / sc))) {
+          int u = ((x + q) / 2) & 15, v = (ty / 2) & 15;
           uint8_t p = tex_px[tex][(v * 16 + u) >> 1];
           uint16_t col = tex_pal[tex][(u & 1) ? p >> 4 : p & 15];
-          if (r < sc) col = blend(col, 0xFFFF, 8);   /* a lit top edge */
-          d[x + k] = col;
+          if (r % sc == 0 && !(r && (g[r / sc - 1] & (1 << (q / sc))))) col = blend(col, 0xFFFF, 10);   /* lit tops */
+          d[x + q] = col;
         }
       x += font_w[*c - 32] * sc;
     }
   }
 }
 
-/* the yellow splash, turned 20 degrees */
-static void splash(const char *s, int cx, int cy, float scale) {
-  float a = -20 * 0.017453292f, ca = cosf(a), sa = sinf(a);
-  int tw = text_width(s);
-  int half = (int)(tw * scale / 2) + 12;
-  for (int y = cy - half; y < cy + half; y++) {
-    if (y < clip_y0 || y >= clip_y1) continue;
-    uint16_t *d = row_at(y);
-    for (int x = cx - half; x < cx + half; x++) {
-      if ((unsigned)x >= SCREEN_W) continue;
-      float dx = (x - cx) / scale, dy = (y - cy) / scale;
-      for (int sh = 1; sh >= 0; sh--) {
-        float u = ca * (dx - sh) + sa * (dy - sh) + tw / 2.0f, v = -sa * (dx - sh) + ca * (dy - sh) + 4;
-        if (u < 0 || v < 0 || u >= tw || v >= 8) continue;
-        int px = (int)u, row = (int)v, cx2 = 0;
-        const char *c = s;
-        while (*c && cx2 + font_w[*c - 32] <= px) cx2 += font_w[*c - 32], c++;
-        if (!*c) continue;
-        if (font_bits[(*c - 32) * 8 + row] & (1 << (px - cx2))) d[x] = sh ? RGB(0x3F, 0x3F, 0) : RGB(0xFF, 0xFF, 0);
-      }
-    }
-  }
+/* the line under the title: a teal ribbon with one of our sayings */
+static void ribbon(const char *s, int cy) {
+  int tw = text_width(s), x = (SCREEN_W - tw) / 2 - 8, w = tw + 16, h = TALL ? 15 : 12;
+  fill(x + 2, cy, w - 4, h, RGB(0x2A, 0x8A, 0x8C));
+  fill(x, cy + 2, w, h - 4, RGB(0x2A, 0x8A, 0x8C));
+  fill(x + 2, cy + h, w - 4, 1, RGB(0x1A, 0x5A, 0x5C));
+  text(s, x + 8, cy + (TALL ? 3 : 2), RGB(0xFF, 0xF4, 0xC0), true);
 }
 
 static void dirt_background(void) {
-  /* GuiScreen.drawBackground: the options background, 32 pixel tiles, darkened */
+  /* the options background, 32 pixel tiles, darkened */
   int id = SP_DIRT_BG;
   const uint8_t *px = spr_px + spr_off[id];
   const uint16_t *pal = spr_pal[id];
@@ -1562,23 +1583,23 @@ static void arrow_pad(int cx, int cy, int r) {
   }
   text_center(T("Look"), cx, cy - 4, RGB(0xFF, 0xFF, 0xA0));
 }
-/* ---------------------------------------------------------------- the keys (KeyBinding) */
+/* ---------------------------------------------------------------- the keys */
 typedef struct { uint32_t bit; uint8_t key; const char *name, *what; } Action;
 /* (what: the key sheet's word for it; key: where it starts) */
 static const Action actions[N_ACTIONS] = {
-    {K_ATTACK, 4, T("Attack/Destroy"), T("Mine, attack")}, {0, 20, T("Pick Block"), T("Pick block")},
-    {K_USE, 5, T("Use Item/Place Block"), T("Place, use")}, {K_DROP, 14, T("Drop Item"), T("Drop")},
-    {K_SLOT1, 42, T("Hotbar Slot 1"), T("Slot 1")}, {K_SLOT1 << 1, 43, T("Hotbar Slot 2"), T("Slot 2")},
-    {K_SLOT1 << 2, 44, T("Hotbar Slot 3"), T("Slot 3")}, {K_SLOT1 << 3, 36, T("Hotbar Slot 4"), T("Slot 4")},
-    {K_SLOT1 << 4, 37, T("Hotbar Slot 5"), T("Slot 5")}, {K_SLOT1 << 5, 38, T("Hotbar Slot 6"), T("Slot 6")},
-    {K_SLOT1 << 6, 30, T("Hotbar Slot 7"), T("Slot 7")}, {K_SLOT1 << 7, 31, T("Hotbar Slot 8"), T("Slot 8")},
-    {K_SLOT1 << 8, 32, T("Hotbar Slot 9"), T("Slot 9")}, {K_INV, 15, T("Inventory"), T("Inventory")},
-    {K_PAUSE, 51, T("Pause"), T("Pause")}, {K_JUMP, 12, T("Jump"), T("Jump")}, {K_SNEAK, 13, T("Sneak"), T("Sneak")},
-    {K_SPRINT, 17, T("Sprint"), T("Sprint")}, {K_STRAFE_L, 27, T("Strafe Left"), T("Left")},
-    {K_STRAFE_R, 29, T("Strafe Right"), T("Right")}, {K_BACKW, 28, T("Walk Backwards"), T("Backward")},
-    {K_FWD, 22, T("Walk Forwards"), T("Forward")}, {K_CHAT, 39, T("Open Chat"), T("Chat")},
-    {K_COMMAND, 40, T("Open Command"), T("Command")}};
-static const char *const categories[5] = {T("Gameplay"), T("Inventory"), T("Miscellaneous"), T("Movement"), T("Multiplayer")};
+    {K_ATTACK, 4, T("Break, Hit"), T("Break, hit")}, {0, 20, T("Copy Block"), T("Copy block")},
+    {K_USE, 5, T("Use, Place"), T("Place, use")}, {K_DROP, 14, T("Throw Item"), T("Throw")},
+    {K_SLOT1, 42, T("Belt Slot 1"), T("Slot 1")}, {K_SLOT1 << 1, 43, T("Belt Slot 2"), T("Slot 2")},
+    {K_SLOT1 << 2, 44, T("Belt Slot 3"), T("Slot 3")}, {K_SLOT1 << 3, 36, T("Belt Slot 4"), T("Slot 4")},
+    {K_SLOT1 << 4, 37, T("Belt Slot 5"), T("Slot 5")}, {K_SLOT1 << 5, 38, T("Belt Slot 6"), T("Slot 6")},
+    {K_SLOT1 << 6, 30, T("Belt Slot 7"), T("Slot 7")}, {K_SLOT1 << 7, 31, T("Belt Slot 8"), T("Slot 8")},
+    {K_SLOT1 << 8, 32, T("Belt Slot 9"), T("Slot 9")}, {K_INV, 15, T("Bag"), T("Bag")},
+    {K_PAUSE, 51, T("Pause"), T("Pause")}, {K_JUMP, 12, T("Jump"), T("Jump")}, {K_SNEAK, 13, T("Crouch"), T("Crouch")},
+    {K_SPRINT, 17, T("Run"), T("Run")}, {K_STRAFE_L, 27, T("Step Left"), T("Left")},
+    {K_STRAFE_R, 29, T("Step Right"), T("Right")}, {K_BACKW, 28, T("Go Back"), T("Backward")},
+    {K_FWD, 22, T("Go Forward"), T("Forward")}, {K_CHAT, 39, T("Chat Box"), T("Chat")},
+    {K_COMMAND, 40, T("Command Box"), T("Command")}};
+static const char *const categories[5] = {T("Actions"), T("Bag"), T("Other"), T("Moving"), T("Play Together")};
 static const uint8_t category_at[5] = {A_ATTACK, A_DROP, A_PAUSE, A_JUMP, A_CHAT};
 
 void keys_reset(void) {
@@ -1640,7 +1661,7 @@ static void key_sheet(void) {
     char t[NP_TEXT_EXTRA ? 64 : 32];
     if (a == -1) {
       if (!digits) continue;
-      strcpy(t, T("1 to 9: hotbar slot."));
+      strcpy(t, T("1 to 9: belt slot."));
     } else if (a == N_ACTIONS) strcpy(t, T("EXE: as OK."));
     else {
       int k = opt.keys[a];
@@ -1658,7 +1679,7 @@ static void key_sheet(void) {
     strcat(line[n], t);
     len++;
   }
-  static const char *const notes[3] = {T("Forward twice: sprint.   Jump twice: fly (Creative)."),
+  static const char *const notes[3] = {T("Forward twice: run.   Jump twice: fly (Creative)."),
                                        T("Menus: OK takes or puts, EXE one, shift+OK moves."),
                                        T("Hold OK and move over slots to spread a stack out.")};
   int rows = line[1][0] ? 2 : 1;
@@ -1667,7 +1688,7 @@ static void key_sheet(void) {
   for (int i = 0; i + rows < 4; i++) text_center(notes[i], SCREEN_W / 2, y0 + (i + rows) * dy, 0xFFFF);
 }
 
-/* GuiControls: the actions by category, each with its key and Reset; Done and Reset Keys under them */
+/* the actions by category, each with its key and Reset; Done and Reset Keys under them */
 #define KLIST_Y 42
 #define KLIST_ROWS 8
 static int krow_of(int a) {
@@ -1678,7 +1699,7 @@ static int krow_of(int a) {
 static void keys_screen(void) {
   int w = SCREEN_W, h = SCREEN_H;
   text_center(T("Controls"), w / 2, 8, 0xFFFF);
-  Button b = {(int16_t)(w / 2 - 100), 18, 200, 1, 0, T("Key Sheet...")};
+  Button b = {(int16_t)(w / 2 - 100), 18, 200, 1, 0, T("Key Sheet")};
   button(&b, ksel == -1);
   /* the label column: as wide as the widest label */
   int lw = 0;
@@ -1717,7 +1738,7 @@ static void keys_screen(void) {
   Button done = {(int16_t)(w / 2 - 155), (int16_t)(h - 29), 150, 1, 0, T("Done")};
   bool any = false;
   for (int a = 0; a < N_ACTIONS; a++) any |= opt.keys[a] != actions[a].key;
-  Button all = {(int16_t)(w / 2 + 5), (int16_t)(h - 29), 150, any, 0, T("Reset Keys")};
+  Button all = {(int16_t)(w / 2 + 5), (int16_t)(h - 29), 150, any, 0, T("Default Keys")};
   button(&done, ksel == N_ACTIONS && kcol == 0);
   button(&all, ksel == N_ACTIONS && kcol == 1);
 }
@@ -1761,7 +1782,7 @@ static void keys_input(uint32_t pressed) {
   }
 }
 
-/* GuiTextField: grey framed (white when chosen), the text, and while typing a blinking cursor
+/* grey framed (white when chosen), the text, and while typing a blinking cursor
  * and what the keys type (abc, Abc for one capital, ABC, 123) */
 static void text_field(const Button *b, bool hover, bool typing) {
   fill(b->x - 1, b->y - 1, b->w + 2, 22, hover || typing ? 0xFFFF : RGB(0xA0, 0xA0, 0xA0));
@@ -1779,17 +1800,21 @@ static void menu_screen(void) {
   int w = SCREEN_W, h = SCREEN_H;
   switch (gui) {
     case GUI_TITLE:
-      logo(30);
-      splash("Also try Minecraft!", w / 2 + 72, 72, 1.25f + 0.08f * fabsf(sinf((frame_no % 60) * 0.1047f)));
+      logo(26);
+      {
+        static const char *const say[6] = {T("Build anything!"), T("One block at a time"), T("Dig deep, look up"),
+                                           T("Mind the fizzlers"), T("Made for your calculator"), T("Plant a tree today")};
+        ribbon(say[(frame_no / 120) % 6], 66);   /* (a new one every few seconds) */
+      }
       text("NumBlocks 1.0", 2, h - 10, 0xFFFF, true);
-      text(T("Inspired by Minecraft, not affiliated with Mojang"),
-           w - text_width(T("Inspired by Minecraft, not affiliated with Mojang")) - 2, h - (TALL ? 24 : 20), 0xFFFF, true);
-      text(T("Made by Mason Chen as part of NumPlay"), w - text_width(T("Made by Mason Chen as part of NumPlay")) - 2, h - 10,
+      text(T("A block-building game of Calcade"),
+           w - text_width(T("A block-building game of Calcade")) - 2, h - (TALL ? 24 : 20), 0xFFFF, true);
+      text(T("Original game by Mason Chen"), w - text_width(T("Original game by Mason Chen")) - 2, h - 10,
            0xFFFF, true);
       break;
     case GUI_WORLDS: {
-      text_center(T("Select World"), w / 2, 20, 0xFFFF);
-      /* GuiSlot: 36 pixels a world, the selected one framed */
+      text_center(T("Your Worlds"), w / 2, 20, 0xFFFF);
+      /* 36 pixels a world, the selected one framed */
       int first = wsel > 3 ? wsel - 3 : 0;
       for (int k = first; k < nworlds && k < first + 4; k++) {
         WorldInfo wi;
@@ -1803,7 +1828,7 @@ static void menu_screen(void) {
         char f[4] = {'n', 'b', (char)('0' + wlist[k]), 0};
         text(f, x + 2, y + 12, RGB(0x80, 0x80, 0x80), true);
         char m[NP_TEXT_EXTRA ? 48 : 24];
-        cat(m, wi.mode == 1 ? T("Creative Mode") : T("Survival Mode"), wi.cheats ? T(", Cheats") : "");
+        cat(m, wi.mode == 1 ? T("Creative") : T("Survival"), wi.cheats ? T(", commands") : "");
         text(m, x + 2, y + 22, RGB(0x80, 0x80, 0x80), true);
       }
       if (!nworlds) text_center(T("No worlds yet"), w / 2, 60, RGB(0x80, 0x80, 0x80));
@@ -1815,39 +1840,39 @@ static void menu_screen(void) {
       break;
     }
     case GUI_CREATE:
-      text_center(T("Create New World"), w / 2, 20, 0xFFFF);
-      text(T("World Name"), w / 2 - 100, 47, RGB(0xA0, 0xA0, 0xA0), true);
-      text_center(create_mode ? T("Unlimited resources, free flying and") : T("Search for resources, crafting, gain"),
+      text_center(T("New World"), w / 2, 20, 0xFFFF);
+      text(T("Name"), w / 2 - 100, 47, RGB(0xA0, 0xA0, 0xA0), true);
+      text_center(create_mode ? T("Every block, flying, and blocks") : T("Gather, build and craft, and keep"),
                   w / 2, 122, RGB(0xA0, 0xA0, 0xA0));
-      text_center(create_mode ? T("destroy blocks instantly") : T("levels, health and hunger"), w / 2, 134,
+      text_center(create_mode ? T("that break at once") : T("yourself fed and healthy"), w / 2, 134,
                   RGB(0xA0, 0xA0, 0xA0));
-      text_center(field ? T("alpha: letters or digits, shift: capitals, OK: done") : T("Leave blank for a random seed"),
+      text_center(field ? T("alpha: letters or digits, shift: capitals, OK: done") : T("Leave it empty for any world"),
                   w / 2, 169, RGB(0xA0, 0xA0, 0xA0));
       break;
     case GUI_RENAME:
-      text_center(T("Rename World"), w / 2, 20, 0xFFFF);
-      text(T("Enter Name"), w / 2 - 100, 47, RGB(0xA0, 0xA0, 0xA0), true);
+      text_center(T("Rename"), w / 2, 20, 0xFFFF);
+      text(T("Name"), w / 2 - 100, 47, RGB(0xA0, 0xA0, 0xA0), true);
       if (field) text_center(T("alpha: letters or digits, shift: capitals, OK: done"), w / 2, 90, RGB(0xA0, 0xA0, 0xA0));
       break;
     case GUI_CONFIRM: {
       WorldInfo wi;
       char t[NP_TEXT_EXTRA ? 96 : 64];
-      text_center(T("Are you sure you want to delete this world?"), w / 2, 70, 0xFFFF);
+      text_center(T("Delete this world?"), w / 2, 70, 0xFFFF);
       cat(t, T("'"), nworlds && world_info(wlist[wsel], &wi) ? wi.name : "");
-      cat(t + strlen(t), T("' will be lost forever! (A long time!)"), "");
+      cat(t + strlen(t), T("' will be gone for good."), "");
       text_center(t, w / 2, 90, 0xFFFF);
       break;
     }
-    case GUI_OPTIONS: text_center(T("Options"), w / 2, 15, 0xFFFF); break;
+    case GUI_OPTIONS: text_center(T("Settings"), w / 2, 15, 0xFFFF); break;
     case GUI_CONTROLS: key_sheet(); break;
-    case GUI_PAUSE: text_center(T("Game menu"), w / 2, 40, 0xFFFF); break;
+    case GUI_PAUSE: text_center(T("Paused"), w / 2, 40, 0xFFFF); break;
     case GUI_LAN:
-      text_center(T("LAN World"), w / 2, 50, 0xFFFF);
-      text_center(T("Settings for Other Players"), w / 2, 82, 0xFFFF);
+      text_center(T("Commands"), w / 2, 50, 0xFFFF);
+      text_center(T("Settings for This World"), w / 2, 82, 0xFFFF);
       break;
     case GUI_LOADING:
-      text_center(T("Loading world"), w / 2, h / 2 - 50, 0xFFFF);
-      text_center(T("Building terrain"), w / 2, h / 2 - 20, 0xFFFF);
+      text_center(T("Opening the world"), w / 2, h / 2 - 50, 0xFFFF);
+      text_center(T("Making the land"), w / 2, h / 2 - 20, 0xFFFF);
       break;
   }
   for (int i = 0; i < nbuttons; i++)
@@ -1971,7 +1996,7 @@ void gui_input(uint32_t keys, uint32_t pressed) {
   if (pressed & K_DROP) {
     Slot *sl = &slots[cur];
     if (sl->s->id && sl->kind != SL_RESULT && sl->kind < SL_CREATIVE) {
-      ent_drop(sl->s->id, 1, sl->s->aux, pl.x, pl.y + 1.32f, pl.z, true);
+      ent_drop(sl->s->id, 1, sl->s->aux, pl.x, pl.y + 1.3f, pl.z, true);
       stack_take(sl->s, 1);
     }
   }
@@ -1979,7 +2004,7 @@ void gui_input(uint32_t keys, uint32_t pressed) {
 
 /* ---------------------------------------------------------------- drawing a screen */
 static void tooltip(const char *s, int x, int y) {
-  /* GuiScreen.drawHoveringText: dark violet box with a blue to purple frame */
+  /* dark violet box with a blue to purple frame */
   int w = text_width(s), h = TALL ? 11 : 8;
   x += 12, y -= 12;
   if (x + w + 4 > SCREEN_W) x = SCREEN_W - w - 4;
@@ -2001,50 +2026,50 @@ static void container(void) {
   static const uint8_t img[] = {0, IMG_INVENTORY, IMG_CRAFTING_TABLE, IMG_FURNACE, IMG_CHEST, IMG_CREATIVE};
   if (gui == GUI_CREATIVE)
     for (int t = 0; t < 12; t++)
-      if (t != ctab && t != 9) sprite(t < 6 ? SP_TAB_TOP : SP_TAB_BOTTOM, px + 28 * (t % 6), t < 6 ? py - 28 : py + 136 - 4);
+      if (t != ctab && t != 9) sprite(t < 6 ? SP_TAB_TOP : SP_TAB_BOTTOM, px + 4 + 28 * (t % 6), t < 6 ? py - 28 : py + CREATIVE_H - 4);
   image(img[gui], px, py);
   if (gui == GUI_CREATIVE) {
     int t = ctab;
-    sprite(t < 6 ? SP_TAB_TOP_SEL : SP_TAB_BOTTOM_SEL, px + 28 * (t % 6), t < 6 ? py - 28 : py + 136 - 4);
-    text(tab_name[ctab], px + 8, py + 6, RGB(0x40, 0x40, 0x40), false);
+    sprite(t < 6 ? SP_TAB_TOP_SEL : SP_TAB_BOTTOM_SEL, px + 4 + 28 * (t % 6), t < 6 ? py - 28 : py + CREATIVE_H - 4);
+    text(tab_name[ctab], px + 11, py + 5, RGB(0x40, 0x40, 0x40), false);
     if (ctab == TAB_SEARCH) {
-      /* the search box (tab_item_search.png), what is typed in it, and the cursor */
-      fill(px + 80, py + 4, 90, 12, RGB(0x55, 0x55, 0x55));
-      fill(px + 81, py + 5, 89, 11, 0xFFFF);
-      fill(px + 81, py + 5, 88, 10, RGB(0x8B, 0x8B, 0x8B));
-      text(csearch, px + 82, py + 6, 0xFFFF, false);
-      if ((frame_no / 6) & 1) text("_", px + 82 + text_width(csearch), py + 6, 0xFFFF, false);
+      /* the search field, what is typed in it, and the cursor */
+      fill(px + 108, py + 3, 98, 12, RGB(0x1E, 0x26, 0x33));
+      fill(px + 109, py + 4, 96, 10, RGB(0x2E, 0x3A, 0x4E));
+      text(csearch, px + 111, py + 5, 0xFFFF, false);
+      if ((frame_no / 6) & 1) text("_", px + 111 + text_width(csearch), py + 5, 0xFFFF, false);
     }
     int rows = tab_rows(), y = 18;
-    if (rows > 5) y += (112 - 17) * cscroll / (rows - 5);
-    sprite(SP_SCROLLER, px + 175, py + y);
+    if (rows > 5) y += (115 - 18 - 15) * cscroll / (rows - 5);
+    sprite(SP_SCROLLER, px + 197, py + y);
   }
   uint16_t label = RGB(0x40, 0x40, 0x40);
   switch (gui) {
     case GUI_INVENTORY:
-      sprite(SP_STEVE, px + 51 - 13, py + 75 - 54 + 2);
-      text(T("Crafting"), px + 86, py + 16, label, false);
+      sprite(SP_PLAYER, px + 62, py + 11);
+      text(T("Make"), px + 111, py + 9, label, false);
       for (int i = 0; i < 4; i++)
-        if (!pl.armor[3 - i].id) sprite(SP_SLOT_HELMET + i, px + 8, py + 8 + i * 18);
+        if (!pl.armor[3 - i].id) sprite(SP_SLOT_HELMET + i, px + 11 + (i & 1) * PITCH, py + 12 + (i >> 1) * PITCH);
+      text(T("Bag"), px + BAG_X, py + BAG_Y - 11, label, false);
       break;
     case GUI_CRAFTING:
-      text(T("Crafting"), px + 28, py + 6, label, false);
-      text(T("Inventory"), px + 8, py + panel_h - 96 + 2, label, false);
+      text(T("Make"), px + 100, py + 15, label, false);
+      text(T("Bag"), px + BAG_X, py + BAG_Y - 11, label, false);
       break;
     case GUI_FURNACE: {
-      text(T("Furnace"), px + 88 - text_width(T("Furnace")) / 2, py + 6, label, false);
-      text(T("Inventory"), px + 8, py + panel_h - 96 + 2, label, false);
+      text(T("Furnace"), px + PANEL_W / 2 - text_width(T("Furnace")) / 2, py + 9, label, false);
+      text(T("Bag"), px + BAG_X, py + BAG_Y - 11, label, false);
       if (furnace->burn > 0) {
-        int k = furnace->burn * 13 / (furnace->burn_max ? furnace->burn_max : 200);
-        sprite_part(SP_FLAME, px + 56, py + 36 + 12 - k, 0, 12 - k, 14, k + 1);
+        int k = furnace->burn * 13 / (furnace->burn_max ? furnace->burn_max : COOK_TICKS);
+        sprite_part(SP_FLAME, px + 40, py + 37 + 12 - k, 0, 12 - k, 14, k + 1);
       }
-      int a = furnace->cook * 24 / 200;
-      if (a > 0) sprite_part(SP_ARROW, px + 79, py + 34, 0, 0, a + 1, 16);
+      int a = furnace->cook * 24 / COOK_TICKS;
+      if (a > 0) sprite_part(SP_ARROW, px + 88, py + 35, 0, 0, a + 1, 16);
       break;
     }
     case GUI_CHEST:
-      text(T("Chest"), px + 8, py + 6, label, false);
-      text(T("Inventory"), px + 8, py + panel_h - 96 + 2, label, false);
+      text(T("Chest"), px + BAG_X, py + 3, label, false);
+      text(T("Bag"), px + BAG_X, py + BAG_Y - 11, label, false);
       break;
   }
   bool spread = drag && ndragged > 1;
@@ -2058,7 +2083,7 @@ static void container(void) {
     }
     draw_stack(st, px + slots[i].x, py + slots[i].y);
   }
-  /* the slot under the cursor: lightened (drawGradientRect 0x80FFFFFF) */
+  /* the slot under the cursor: lightened */
   Slot *sl = &slots[cur];
   tint_rect(px + sl->x, py + sl->y, 16, 16, 0xFFFF, 16);
   Stack held_now = pl.cursor;
@@ -2079,7 +2104,7 @@ void hud_strip(uint16_t *buf, int y0, int rows) {
   if (y0 == 0) frame_no++, hand_frame();
   hand_strip(buf, y0, rows);
   if (pl.sleep_timer) {
-    /* falling asleep: the screen darkens (GuiIngame.renderSleep) */
+    /* falling asleep: the screen darkens */
     int a = pl.sleep_timer * 32 / 100;
     tint_rect(0, y0, SCREEN_W, rows, 0x0841, a > 30 ? 30 : a);
   }
@@ -2088,7 +2113,7 @@ void hud_strip(uint16_t *buf, int y0, int rows) {
     hud();
   if (gui == GUI_NONE || gui == GUI_CHAT) chat_lines();
   if (pl.hurt_time > 0 && gui == GUI_NONE) {
-    /* (Minecraft tilts the camera; a red flash says the same here) */
+    /* (a red flash) */
     tint_rect(0, y0, SCREEN_W, rows, RGB(0xFF, 0, 0), pl.hurt_time * 2 / 3);
   }
   switch (gui) {
@@ -2115,18 +2140,18 @@ void hud_strip(uint16_t *buf, int y0, int rows) {
       menu_screen();
       break;
     case GUI_DEATH: {
-      /* GuiGameOver: red gradient 0x60500000 to 0xA0803030 */
+      /* red gradient 0x60500000 to 0xA0803030 */
       for (int y = y0; y < y0 + rows; y++) {
         int a = 12 + y * 8 / SCREEN_H;
         uint16_t k = blend(RGB(0x50, 0, 0), RGB(0x80, 0x30, 0x30), y * 32 / SCREEN_H);
         uint16_t *d = row_at(y);
         for (int x = 0; x < SCREEN_W; x++) d[x] = blend(d[x], k, a);
       }
-      text_big(T("You died!"), SCREEN_W / 2, 60 / 2 * 2, 0xFFFF, 2);
+      text_big(T("Knocked out!"), SCREEN_W / 2, 60 / 2 * 2, 0xFFFF, 2);
 #if NP_TEXT_EXTRA
       char b[40], n[12];
       number(pl.xp_total, n);
-      cat(b, T("Score: "), n);
+      cat(b, T("Points: "), n);
 #else
       char b[24] = "Score: ", n[12];
       number(pl.xp_total, n);
diff --git a/games/numblocks/src/hand.c b/games/numblocks/src/hand.c
index b0c1325..3676f1f 100644
--- a/games/numblocks/src/hand.c
+++ b/games/numblocks/src/hand.c
@@ -1,8 +1,8 @@
-/* NumBlocks: the hand and what it holds, in 3D, as 1.8's ItemRenderer.renderItemInFirstPerson
- * places them: the arm is a box of the skin (RenderPlayer.renderRightArm), a block its model at
- * twice the size, an item its icon one pixel thick (ItemModelGenerator), each moved by the same
+/* NumBlocks: what the player holds, in 3D, in front of the camera (no hand is drawn; the arm box is
+ * kept for later), a block its model at
+ * twice the size, an item its icon one pixel thick, each moved by the same
  * transforms (the swing, the dip when it changes, eating, drawing a bow, the view bobbing and a
- * sway when turning) and lit by the two item lights (RenderHelper.enableStandardItemLighting).
+ * sway when turning) and lit by the two item lights.
  * Each frame the model's transform is set up once; each pixel then traces its ray through the
  * model, the way the world is drawn. */
 #include <math.h>
@@ -13,33 +13,34 @@ int view_light(void);
 int held_texel(int b, int face, int u, int v);
 
 /* ---------------------------------------------------------------- the state (per tick) */
-static int swing_t = -1;                        /* ticks into the swing (6), -1: none */
+#define SWING 7                                 /* a swing's ticks */
+static int swing_t = -1;                        /* ticks into the swing, -1: none */
 static float equipped = 1, prev_equipped = 1;   /* 1: raised, 0: lowered (changing what is held) */
 static int shown = -1;                          /* the item drawn (the old one while lowering) */
 static float arm_pitch, arm_yaw, prev_arm_pitch, prev_arm_yaw;   /* the view, lagging (the sway) */
 
 void player_swing(void) {
-  if (swing_t < 0 || swing_t >= 3) swing_t = 0;   /* EntityLivingBase.swingItem: 6 ticks */
+  if (swing_t < 0 || swing_t > SWING / 2) swing_t = 0;   /* (again once half done) */
 }
 
 void hand_tick(void) {
-  if (swing_t >= 0 && ++swing_t >= 6) swing_t = -1;
-  /* ItemRenderer.updateEquippedItem: down 0.4 a tick, the new item once below 0.1, up again */
+  if (swing_t >= 0 && ++swing_t >= SWING) swing_t = -1;
+  /* a change of item: the hand goes down (a third a tick), takes the new one at the bottom, comes up */
   int id = held()->id;
   prev_equipped = equipped;
-  float d = (id != shown ? 0.0f : 1.0f) - equipped;
-  equipped += d < -0.4f ? -0.4f : d > 0.4f ? 0.4f : d;
-  if (equipped < 0.1f) shown = id;
-  /* EntityPlayerSP: renderArmPitch and renderArmYaw follow the view halfway each tick */
+  if (id != shown) {
+    equipped -= 0.34f;
+    if (equipped <= 0) equipped = 0, shown = id;
+  } else if (equipped < 1)
+    equipped = equipped + 0.34f > 1 ? 1 : equipped + 0.34f;
+  /* the hand's own view trails the camera's, catching up 40% a tick */
   prev_arm_pitch = arm_pitch, prev_arm_yaw = arm_yaw;
-  float dy = pl.yaw - arm_yaw;
-  while (dy >= 180) dy -= 360;
-  while (dy < -180) dy += 360;
-  arm_pitch += (pl.pitch - arm_pitch) * 0.5f;
-  arm_yaw += dy * 0.5f;
+  float dy = fmodf(pl.yaw - arm_yaw + 540, 360) - 180;
+  arm_pitch += (pl.pitch - arm_pitch) * 0.4f;
+  arm_yaw += dy * 0.4f;
 }
 
-/* ---------------------------------------------------------------- transforms (GlStateManager) */
+/* ---------------------------------------------------------------- transforms */
 typedef struct { float m[3][4]; } Mat;   /* affine: rows x, y, z; column 3 the translation */
 static const Mat IDENT = {{{1, 0, 0, 0}, {0, 1, 0, 0}, {0, 0, 1, 0}}};
 
@@ -79,19 +80,18 @@ typedef struct { int8_t b, f; bool near; float sx[4], sy[4], ymin, ymax; } Face;
 static Face faces[15];
 static int nfaces;
 
-#define FOCAL 171.38f   /* pixels: 120 / tan(35 degrees), 1.8's 70 degree field of view */
-/* 1.8's window is 16:9: the hand is drawn as it is at the right of one as tall as the screen */
+#define FOCAL 171.38f   /* pixels: 120 / tan(35 degrees), a 70 degree field of view */
+/* the hand is drawn as at the right of a 16:9 view as tall as the screen */
 #define HAND_CX (SCREEN_W - SCREEN_H * 16 / 9.0f / 2)
 
-/* ItemRenderer.transformFirstPersonItem */
+/* where the held thing goes (NumBlocks' own placing): low on the right, turned in; the swing chops down
+ * and in */
 static void first_person_item(Mat *m, float equip, float swing) {
-  translate(m, 0.56f, -0.52f, -0.72f);
-  translate(m, 0, equip * -0.6f, 0);
-  rotate(m, 45, 1);
-  float f = sinf(swing * swing * 3.14159265f), f1 = sinf(sqrtf(swing) * 3.14159265f);
-  rotate(m, f * -20, 1);
-  rotate(m, f1 * -20, 2);
-  rotate(m, f1 * -80, 0);
+  translate(m, 0.6f, -0.36f - equip * 0.6f, -0.86f);
+  rotate(m, 38, 1);
+  float k = sinf(swing * 3.14159265f);
+  rotate(m, -k * 45, 0);
+  rotate(m, -sinf(sqrtf(swing) * 3.14159265f) * 15, 1);
   scale(m, 0.4f, 0.4f, 0.4f);
 }
 
@@ -105,93 +105,64 @@ void hand_frame(void) {
   kind = H_NONE;
   if (pl.dead || pl.sleep_timer || gui > GUI_PAUSE) return;
   float t = tick_frac;
-  float swing = swing_t < 0 ? 0 : (swing_t + t) / 6.0f;
+  float swing = swing_t < 0 ? 0 : (swing_t + t) / SWING;
   if (swing > 1) swing = 1;
   float equip = 1 - (prev_equipped + (equipped - prev_equipped) * t);
   int id = shown < 0 ? held()->id : shown;
   Mat m = IDENT, bob = IDENT;
   if (opt.bobbing && !pl.flying) {
-    /* EntityRenderer.setupViewBobbing, applied to the hand too */
-    float w = -(pl.prev_walked + (pl.walked - pl.prev_walked) * t) * 3.14159265f;
+    /* walking: the hand rocks side to side and dips with each step */
+    float w = (pl.prev_walked + (pl.walked - pl.prev_walked) * t) * 3.14159265f;
     float b = pl.prev_bob + (pl.bob - pl.prev_bob) * t;
-    translate(&bob, sinf(w) * b * 0.5f, -fabsf(cosf(w) * b), 0);
-    rotate(&bob, sinf(w) * b * 3, 2);
-    rotate(&bob, fabsf(cosf(w - 0.2f) * b) * 5, 0);
+    translate(&bob, sinf(w) * b * 0.35f, -fabsf(sinf(w)) * b * 0.7f, 0);
+    rotate(&bob, sinf(w) * b * 4, 2);
     m = bob;
   }
-  /* rotateWithPlayerRotations: the sway */
+  /* the sway: the hand lags behind when you turn */
   float ap = prev_arm_pitch + (arm_pitch - prev_arm_pitch) * t, ay = prev_arm_yaw + (arm_yaw - prev_arm_yaw) * t;
-  float dyaw = pl.yaw - ay;
-  while (dyaw >= 180) dyaw -= 360;
-  while (dyaw < -180) dyaw += 360;
-  rotate(&m, (pl.pitch - ap) * 0.1f, 0);
-  rotate(&m, dyaw * 0.1f, 1);
+  float dyaw = fmodf(pl.yaw - ay + 540, 360) - 180;
+  rotate(&m, (pl.pitch - ap) * 0.08f, 0);
+  rotate(&m, dyaw * 0.12f, 1);
   model_id = id;
   if (!id) {
-    /* renderPlayerArm */
-    float sq = sinf(sqrtf(swing) * 3.14159265f);
-    translate(&m, -0.3f * sq, 0.4f * sinf(sqrtf(swing) * 6.2831853f), -0.4f * sinf(swing * 3.14159265f));
-    translate(&m, 0.64f, -0.6f, -0.72f);
-    translate(&m, 0, equip * -0.6f, 0);
-    rotate(&m, 45, 1);
-    rotate(&m, sq * 70, 1);
-    rotate(&m, sinf(swing * swing * 3.14159265f) * -20, 2);
-    translate(&m, -1, 3.6f, 3.5f);
-    rotate(&m, 120, 2);
-    rotate(&m, 200, 0);
-    rotate(&m, -135, 1);
-    translate(&m, 5.6f, 0, 0);
-    /* ModelPlayer's right arm: at (-5, 2, 0), turned 0.1 radians about z, a 4 x 12 x 4 box */
-    translate(&m, -5 / 16.0f, 2 / 16.0f, 0);
-    rotate(&m, 5.729578f, 2);
-    scale(&m, 1 / 16.0f, 1 / 16.0f, 1 / 16.0f);
-    kind = H_ARM, nbox = 1;
-    static const float arm[6] = {-3, -2, -2, 1, 10, 2};
-    memcpy(box[0], arm, sizeof arm);
+    /* NumBlocks shows no hand: with nothing held there is nothing in front of the camera, only
+     * what is held is drawn (on its own, as if floating at the right) */
+    kind = H_NONE;
+    return;
   } else {
     bool block = !flat_item(id);
     int k = item_kind(id);
     if (pl.using_ticks > 0 && k == IK_BOW) {
       first_person_item(&m, equip, 0);
-      /* doBowTransformations */
-      rotate(&m, -18, 2);
-      rotate(&m, -12, 1);
-      rotate(&m, -8, 0);
-      translate(&m, -0.9f, 0.2f, 0);
-      float f = pl.using_ticks + t - 1, f1 = f / 20;
-      f1 = (f1 * f1 + f1 * 2) / 3;
-      if (f1 > 1) f1 = 1;
-      if (f1 > 0.1f) translate(&m, 0, sinf((f - 0.1f) * 1.3f) * (f1 - 0.1f) * 0.01f, 0);
-      translate(&m, 0, 0, f1 * 0.1f);
-      scale(&m, 1, 1, 1 + f1 * 0.2f);
+      /* drawing the bow: brought to the middle, upright, drawn back towards the eye; it shakes when
+       * fully drawn (22 ticks) */
+      float f = (pl.using_ticks + t) / 22;
+      if (f > 1) f = 1;
+      translate(&m, -0.7f, 0.2f, 0.25f * f);
+      rotate(&m, -20, 2);
+      rotate(&m, -14, 1);
+      if (f >= 1) translate(&m, 0, sinf((pl.using_ticks + t) * 2.1f) * 0.006f, 0);
     } else if (pl.using_ticks > 0) {
-      /* performDrinking: up to the mouth, bobbing */
-      float f = 32 - pl.using_ticks - t + 1, f1 = f / 32;
-      float f2 = f1 >= 0.8f ? 0 : fabsf(cosf(f / 4 * 3.14159265f) * 0.1f);
-      translate(&m, 0, f2, 0);
-      float f3 = 1 - powf(f1, 27);
-      translate(&m, f3 * 0.6f, f3 * -0.5f, 0);
-      rotate(&m, f3 * 90, 1);
-      rotate(&m, f3 * 10, 0);
-      rotate(&m, f3 * 30, 2);
+      /* eating (30 ticks): up to the middle of the view in 5 ticks, nibbled at (a quick up and down) */
+      float f = pl.using_ticks + t, up = f < 5 ? f / 5 : 1;
+      translate(&m, -0.45f * up, 0.3f * up + (f >= 5 ? fabsf(sinf(f * 1.3f)) * 0.05f : 0), 0.1f * up);
+      rotate(&m, up * 60, 1);
+      rotate(&m, up * -10, 0);
       first_person_item(&m, equip, 0);
     } else {
-      /* doItemUsedTransformations */
-      float sq = sinf(sqrtf(swing) * 3.14159265f);
-      translate(&m, -0.4f * sq, 0.2f * sinf(sqrtf(swing) * 6.2831853f), -0.2f * sinf(swing * 3.14159265f));
       first_person_item(&m, equip, swing);
     }
     if (block) {
-      /* a block: twice the size, its model's first person transform none */
+      /* a block: twice the size */
       scale(&m, 2, 2, 2);
     } else {
-      /* an item: its model's first person transform (the rod's is turned the other way) */
-      translate(&m, 0, 0.25f, 0.125f);
-      rotate(&m, id == I_FISHING_ROD ? 45 : -135, 1);
-      rotate(&m, 25, 2);
-      scale(&m, 1.7f, 1.7f, 1.7f);
+      /* an item: held by its lower corner, its tip up and away (the rod the other way) */
+      translate(&m, 0, 0.22f, 0.1f);
+      rotate(&m, id == I_FISHING_ROD ? 50 : -125, 1);
+      rotate(&m, 28, 2);
+      scale(&m, 1.6f, 1.6f, 1.6f);
     }
-    /* RenderItem.renderItem: half the size, centred */
+    /* half the size, centred */
     scale(&m, 0.5f, 0.5f, 0.5f);
     translate(&m, -0.5f, -0.5f, -0.5f);
     scale(&m, 1 / 16.0f, 1 / 16.0f, 1 / 16.0f);
@@ -302,7 +273,7 @@ static inline int sprite_texel(int id, int u, int v) {   /* -1: see-through */
 }
 static inline int clamp15(float x) { int i = (int)x; return i < 0 ? 0 : i > 15 ? 15 : i; }   /* (below 0 is 0 anyway) */
 
-/* a block face's texel at point p (Minecraft's default UVs) */
+/* a block face's texel at point p (the usual UVs) */
 static int block_texel(int f, const float *p) {
   static const uint8_t tex_face[6] = {4, 5, 0, 1, 2, 3};   /* -x +x -y +y -z +z in blk_tex's order */
   float u, v;
@@ -319,7 +290,7 @@ static int block_texel(int f, const float *p) {
   return c;
 }
 
-/* the arm's texel (ModelBox: the skin's 4 x 12 x 4 box unfolded, from (40, 16)) */
+/* the arm's texel (the skin's 4 x 12 x 4 box unfolded, from (40, 16)) */
 static int arm_texel(int f, const float *p) {
   float x = p[0] + 3, y = p[1] + 2, z = p[2] + 2, u, v;
   switch (f) {
diff --git a/games/numblocks/src/icon.png b/games/numblocks/src/icon.png
index d39e2d4eec296128c426d764207993a95963b610..e9fea6b778b3c85bfdbe422b4f0a9cd725e030c3 100644
GIT binary patch
literal 4160
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
KMNUMnLSTY+7*%Be

literal 3532
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
GLSTYGp_~8!

diff --git a/games/numblocks/src/inv.c b/games/numblocks/src/inv.c
index 7710a9f..0505ca5 100644
--- a/games/numblocks/src/inv.c
+++ b/games/numblocks/src/inv.c
@@ -1,13 +1,12 @@
 /* Items: what they are, stacks, the player's inventory, crafting, smelting
- * and what blocks drop (Minecraft 1.8.8: InventoryPlayer, ShapedRecipes,
- * ShapelessRecipes, the Block*.getItemDropped and quantityDropped methods). */
+ * and what blocks drop. */
 #include "nb.h"
 #pragma GCC optimize("Os")   /* (not where the time goes: small) */
 
 /* ---------------------------------------------------------------- items */
 int item_max(int id) {
   if (id <= 0) return 0;
-  return id < 256 ? 64 : it_stack[id - 256];
+  return id < 256 ? 50 : it_stack[id - 256];   /* (blocks: 50 to a stack) */
 }
 int item_dur(int id) { return id >= 256 ? it_dur[id - 256] : 0; }
 int item_kind(int id) { return id >= 256 ? it_kind[id - 256] : (id > 0 ? IK_BLOCK : IK_NONE); }
@@ -32,8 +31,7 @@ static int room(const Stack *s, int id) {
   return item_max(id) - s->aux;
 }
 
-/* InventoryPlayer.addItemStackToInventory: on stacks of the same item first
- * (hotbar first), then in the first empty slots; what does not fit is left */
+/* onto stacks of the same item first, then into empty slots, in slot order; returns what is left */
 int inv_add(Stack *inv, int n, int id, int count, int dmg) {
   if (item_dur(id)) {
     for (int i = 0; i < n && count; i++)
@@ -89,7 +87,8 @@ static bool fits(int want, int have) {
   return false;
 }
 
-/* the recipe the grid (w x w) makes, or -1 (ShapedRecipes.matches, mirrored too; ShapelessRecipes.matches) */
+/* the recipe the grid (w x w) makes, or -1: a pattern anywhere in the grid (or its mirror image), or
+ * a loose list of ingredients in any slots */
 int craft_find(const Stack *grid, int w) {
   /* the grid's used rectangle */
   int x0 = w, y0 = w, x1 = -1, y1 = -1, used = 0;
@@ -148,13 +147,13 @@ static int tool_kind_of(int b) {
   return -1;
 }
 
-/* does the block need the right tool to drop anything (Material.isToolNotRequired false)? */
+/* does the block give nothing without the right tool? */
 static bool needs_tool(int b) {
   if (b == B_ICE || b == B_PACKED_ICE) return false;
   return blk_tool[b] == T_PICKAXE || b == B_SNOW || b == B_SNOW_LAYER || b == B_COBWEB;
 }
 
-/* EntityPlayer.canHarvestBlock with the held item */
+/* can the held item get a drop from this block? */
 bool can_harvest(int b, int held) {
   if (!needs_tool(b)) return true;
   int k = item_kind(held);
@@ -165,18 +164,18 @@ bool can_harvest(int b, int held) {
   return level[it_tier[held - 256]] >= blk_level[b];
 }
 
-/* ItemTool.getStrVsBlock and friends: how much faster than a hand */
+/* how much faster than a hand */
 float dig_speed(int b, int held) {
-  static const uint8_t eff[5] = {2, 4, 6, 8, 12};
+  static const float eff[5] = {2.5f, 4, 6.5f, 9, 11};   /* wood stone iron diamond gold */
   int k = item_kind(held);
   if (k == IK_SWORD) {
-    if (b == B_COBWEB) return 15;
+    if (b == B_COBWEB) return 12;
     int m = blk_model[b];
-    return m == M_CROSS || m == M_LEAVES || m == M_VINE || b == B_PUMPKIN || b == B_MELON ? 1.5f : 1;
+    return m == M_CROSS || m == M_LEAVES || m == M_VINE || b == B_PUMPKIN || b == B_MELON ? 1.6f : 1;
   }
   if (k == IK_SHEARS) {
-    if (b == B_COBWEB || blk_model[b] == M_LEAVES) return 15;
-    return b >= B_WOOL_WHITE && b <= B_WOOL_BLACK ? 5 : 1;
+    if (b == B_COBWEB || blk_model[b] == M_LEAVES) return 12;
+    return b >= B_WOOL_WHITE && b <= B_WOOL_BLACK ? 4 : 1;
   }
   if (k >= IK_PICKAXE && k <= IK_SHOVEL) {
     if (tool_kind_of(b) == k || (k == IK_PICKAXE && (b == B_ICE || b == B_PACKED_ICE))) return eff[it_tier[held - 256]];
@@ -208,14 +207,14 @@ int block_drops(int b, int held, Stack *out) {
     case B_COAL_ORE: DROP(I_COAL, 1); return n;
     case B_DIAMOND_ORE: DROP(I_DIAMOND, 1); return n;
     case B_EMERALD_ORE: DROP(I_EMERALD, 1); return n;
-    case B_LAPIS_ORE: DROP(I_DYE_BLUE, 4 + rnd(5)); return n;
-    case B_REDSTONE_ORE: DROP(I_REDSTONE, 4 + rnd(2)); return n;
-    case B_GRAVEL: DROP(rnd(10) == 0 ? I_FLINT : B_GRAVEL, 1); return n;
-    case B_CLAY: DROP(I_CLAY_BALL, 4); return n;
-    case B_GLOWSTONE: DROP(I_GLOWSTONE_DUST, 2 + rnd(3)); return n;
-    case B_MELON: DROP(I_MELON_SLICE, 3 + rnd(5)); return n;
-    case B_BOOKSHELF: DROP(I_BOOK, 3); return n;
-    case B_SNOW: DROP(I_SNOWBALL, 4); return n;
+    case B_LAPIS_ORE: DROP(I_DYE_BLUE, 3 + rnd(4)); return n;
+    case B_REDSTONE_ORE: DROP(I_REDSTONE, 3 + rnd(3)); return n;
+    case B_GRAVEL: DROP(rnd(8) == 0 ? I_FLINT : B_GRAVEL, 1); return n;
+    case B_CLAY: DROP(I_CLAY_BALL, 3 + rnd(2)); return n;
+    case B_GLOWSTONE: DROP(I_GLOWSTONE_DUST, 1 + rnd(3)); return n;
+    case B_MELON: DROP(I_MELON_SLICE, 2 + rnd(5)); return n;
+    case B_BOOKSHELF: DROP(I_BOOK, 2); return n;
+    case B_SNOW: DROP(I_SNOWBALL, 3); return n;
     case B_SNOW_LAYER: DROP(I_SNOWBALL, 1); return n;
     case B_STONE_SLAB_DOUBLE: DROP(B_STONE_SLAB, 2); return n;
     case B_COBWEB: DROP(shears ? B_COBWEB : I_STRING, 1); return n;
@@ -225,29 +224,29 @@ int block_drops(int b, int held, Stack *out) {
     case B_TALL_GRASS: case B_FERN: case B_DOUBLE_GRASS_LOWER: case B_DOUBLE_GRASS_UPPER: case B_LARGE_FERN_LOWER:
     case B_LARGE_FERN_UPPER:
       if (shears) DROP(blk_item[b], b == B_DOUBLE_GRASS_LOWER || b == B_DOUBLE_GRASS_UPPER ? 2 : 1);
-      else if (rnd(8) == 0) DROP(I_WHEAT_SEEDS, 1);
+      else if (rnd(6) == 0) DROP(I_WHEAT_SEEDS, 1);
       return n;
     case B_DEAD_BUSH: case B_DEAD_SHRUB:
       if (shears) DROP(B_DEAD_BUSH, 1);
-      else DROP(I_STICK, rnd(3));
+      else DROP(I_STICK, rnd(2));
       return n;
     case B_VINE:
       if (shears) DROP(B_VINE, 1);
       return n;
     case B_BROWN_MUSHROOM_CAP: case B_BROWN_MUSHROOM_INSIDE: case B_BROWN_MUSHROOM_STEM:
-      DROP(B_BROWN_MUSHROOM, rnd(10) - 7);
+      DROP(B_BROWN_MUSHROOM, rnd(4) == 0);
       return n;
     case B_RED_MUSHROOM_CAP: case B_RED_MUSHROOM_INSIDE: case B_RED_MUSHROOM_STEM:
-      DROP(B_RED_MUSHROOM, rnd(10) - 7);
+      DROP(B_RED_MUSHROOM, rnd(4) == 0);
       return n;
     case B_WHEAT_7:
       DROP(I_WHEAT, 1);
-      DROP(I_WHEAT_SEEDS, 1 + rnd(4));   /* 0-3 more, and the one planted */
+      DROP(I_WHEAT_SEEDS, 1 + rnd(3));
       return n;
-    case B_CARROTS_3: DROP(I_CARROT, 1 + rnd(4)); return n;
+    case B_CARROTS_3: DROP(I_CARROT, 2 + rnd(3)); return n;
     case B_POTATOES_3:
-      DROP(I_POTATO, 1 + rnd(4));
-      if (rnd(50) == 0) DROP(I_POISONOUS_POTATO, 1);
+      DROP(I_POTATO, 1 + rnd(3));
+      if (rnd(30) == 0) DROP(I_POISONOUS_POTATO, 1);
       return n;
   }
   if (blk_model[b] == M_LEAVES) {
@@ -255,13 +254,13 @@ int block_drops(int b, int held, Stack *out) {
       DROP(b, 1);
       return n;
     }
-    /* BlockLeaves: a sapling 1 in 20 (jungle 1 in 40), an apple 1 in 200 (oak, dark oak) */
+    /* a sapling 1 in 16 (jungle 1 in 32), an apple 1 in 120 (oak, dark oak) */
     static const uint16_t sap[6] = {B_SAPLING_OAK, B_SAPLING_SPRUCE, B_SAPLING_BIRCH, B_SAPLING_JUNGLE,
                                     B_SAPLING_ACACIA, B_SAPLING_DARK_OAK};
     int v = b == B_LEAVES_OAK ? 0 : b == B_LEAVES_SPRUCE ? 1 : b == B_LEAVES_BIRCH ? 2 : b == B_LEAVES_JUNGLE ? 3
             : b == B_LEAVES_ACACIA ? 4 : 5;
-    if (rnd(v == 3 ? 40 : 20) == 0) DROP(sap[v], 1);
-    if ((v == 0 || v == 5) && rnd(200) == 0) DROP(I_APPLE, 1);
+    if (rnd(v == 3 ? 32 : 16) == 0) DROP(sap[v], 1);
+    if ((v == 0 || v == 5) && rnd(120) == 0) DROP(I_APPLE, 1);
     return n;
   }
   if (b == B_BED_HEAD) return 0;   /* the foot drops the bed */
diff --git a/games/numblocks/src/items.h b/games/numblocks/src/items.h
index 56912a8..d51c572 100644
--- a/games/numblocks/src/items.h
+++ b/games/numblocks/src/items.h
@@ -118,8 +118,8 @@ enum {
   I_COOKED_CHICKEN = 366,
   I_MUTTON = 367,
   I_COOKED_MUTTON = 368,
-  I_ROTTEN_FLESH = 369,
-  I_SPIDER_EYE = 370,
+  I_MUD_CAKE = 369,
+  I_BEETLE_EYE = 370,
   I_MUSHROOM_STEW = 371,
   I_COOKIE = 372,
   I_MELON_SLICE = 373,
diff --git a/games/numblocks/src/main.c b/games/numblocks/src/main.c
index 5e5612e..1f636c2 100644
--- a/games/numblocks/src/main.c
+++ b/games/numblocks/src/main.c
@@ -1,5 +1,4 @@
-/* NumBlocks: the game loop. Game ticks run 20 times a second, as in
- * Minecraft; frames are drawn as fast as the calculator can, with the camera
+/* NumBlocks: the game loop. Game ticks run 20 times a second; frames are drawn as fast as the calculator can, with the camera
  * placed between the last two ticks so it moves smoothly. */
 #include <math.h>
 #include "nb.h"
@@ -14,7 +13,7 @@ const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level")))
 uint32_t perf_frames __attribute__((used));   /* read by tools/emu.py */
 uint32_t perf_max __attribute__((used));      /* (and the slowest frame in a world, ms) */
 uint32_t ticks_run;   /* ticks played (what waits a few ticks counts these: the time of day can stop or jump) */
-uint32_t game_time = 1000;                    /* Minecraft's time of day: 0 sunrise, 6000 noon */
+uint32_t game_time = 1000;                    /* the time of day: 0 sunrise, 5000 noon (DAY_TICKS a day) */
 bool start_in_world;                          /* tests: straight into a new world */
 int64_t start_seed;                           /* (its seed) */
 int start_type;                               /* (and type) */
@@ -26,7 +25,7 @@ static float title_yaw;
 
 void camera_reset(void) {
   px = pl.x, py = pl.y, pz = pl.z;
-  player_look(pl.x, pl.y + 1.62f, pl.z, pl.yaw, pl.pitch);
+  player_look(pl.x, pl.y + EYE, pl.z, pl.yaw, pl.pitch);
 }
 
 /* the title's backdrop: the saved world where the player is, else a world of seed 0 */
@@ -62,7 +61,7 @@ static void loading(void) {
   last = plat_millis();
 }
 
-/* GuiCreateWorld: the seed typed, a number (Long.parseLong) or else words (String.hashCode);
+/* the seed typed, a number or else words;
  * none, or 0: random */
 static int64_t parse_seed(void) {
   const char *s = seed_text;
@@ -175,7 +174,7 @@ bool game_frame(void) {
   if (!in_world) {
     /* the title: the world turns slowly, nothing moves */
     title_yaw += dt * 0.006f;
-    Camera c = {pl.x, pl.y + 1.62f, pl.z, title_yaw, 8};
+    Camera c = {pl.x, pl.y + EYE, pl.z, title_yaw, 8};
     render_frame(gui == GUI_TITLE ? &c : NULL, game_time);
     perf_frames++;
     return true;
@@ -216,7 +215,7 @@ bool game_frame(void) {
     ticks_run++;
     if (rule(GR_DAYLIGHT_CYCLE)) game_time++;
     acc -= 50;
-    /* Minecraft saves every 45 seconds */
+    /* a save every 45 seconds */
     if (++autosave >= 900) {
       autosave = 0;
       save_world();
@@ -229,16 +228,15 @@ bool game_frame(void) {
   world_follow(pl.x, pl.y, pl.z);
   float t = acc / 50.0f;
   tick_frac = t;
-  Camera c = {px + (pl.x - px) * t, py + (pl.y - py) * t + (pl.sneaking ? 1.54f : 1.62f), pz + (pl.z - pz) * t, pl.yaw,
+  Camera c = {px + (pl.x - px) * t, py + (pl.y - py) * t + (pl.sneaking ? EYE_LOW : EYE), pz + (pl.z - pz) * t, pl.yaw,
               pl.pitch};
   if (opt.bobbing && !pl.flying) {
-    /* EntityRenderer.setupViewBobbing: the eyes sway side to side and dip with each step */
+    /* the eyes sway side to side and dip with each step */
     float w = (pl.prev_walked + (pl.walked - pl.prev_walked) * t) * 3.14159265f;
     float b = pl.prev_bob + (pl.bob - pl.prev_bob) * t;
-    float side = sinf(w) * b * 0.5f, dip = -fabsf(cosf(w) * b);
+    float side = sinf(w) * b * 0.35f, dip = -fabsf(sinf(w)) * b * 0.7f;
     float yr = pl.yaw * 0.017453292f;
     c.x += -cosf(yr) * side, c.z += -sinf(yr) * side, c.y += dip;
-    c.pitch += fabsf(cosf(w - 0.2f) * b) * 5;
   }
   /* what the crosshair is on: the ray through the middle of this picture */
   if (!pl.dead) player_look(c.x, c.y, c.z, c.yaw, c.pitch);
diff --git a/games/numblocks/src/mob.c b/games/numblocks/src/mob.c
index 5d9f1df..d9ec631 100644
--- a/games/numblocks/src/mob.c
+++ b/games/numblocks/src/mob.c
@@ -1,41 +1,46 @@
-/* Mobs: their models (mob.h), how they move, fight, spawn and die.
- *
- * Minecraft 1.8.8's numbers: health, speed, damage (scaled by difficulty),
- * the walk animation, zombies and skeletons burning in daylight, creepers'
- * 1.5 second fuse and power 3 explosion, skeletons' arrows, spiders neutral
- * in daylight, animals wandering and panicking when hit, and the loot. The
- * AI steers straight at its target instead of searching a path, jumping over
- * single blocks; mobs spawn in the dark from 14 blocks away (the calculator
- * keeps only about 20 blocks of the world around you). */
+/* NumBlocks' creatures (Calcade, 19 October 2026): their shapes (mob_skin.h), how they live, move,
+ * fight, are born and die. Our own creatures and rules:
+ *  - the mudling, a lump of mud: out at night and in the dark, it waddles to you and leaps; the sun
+ *    dries it out, so by day it looks for shade;
+ *  - the thornling, a walking plant: it roots itself when it sees you and spits thorns two at a time,
+ *    backing off if you come too close; rain heals it;
+ *  - the skitter, a beetle: it creeps up on you when you look away, freezes when you look at it, and
+ *    runs if you stare;
+ *  - the fizzler, a powder keg: close to you its fuse lights and nothing stops it but water;
+ *  - snufflers, humpoxen, woollies and striders: they graze, follow the food they like, run when hurt, and two
+ *    fed ones near each other have a young one.
+ * They steer along a way found over the blocks (find_way, an A* search of NumPlay's). */
 #include <math.h>
 #include <stdlib.h>
 #include "mob.h"
+#include "mob_skin.h"
 
-/* ---------------------------------------------------------------- what each mob is */
+/* ---------------------------------------------------------------- what each one is */
 typedef struct {
   float w, h, speed;
-  uint8_t health;
-} MobInfo;
-static const MobInfo info[] = {
-    [E_ZOMBIE] = {0.6f, 1.95f, 0.23f, 20}, [E_SKELETON] = {0.6f, 1.99f, 0.25f, 20},
-    [E_CREEPER] = {0.6f, 1.7f, 0.25f, 20},  [E_SPIDER] = {1.4f, 0.9f, 0.3f, 16},
-    [E_PIG] = {0.9f, 0.9f, 0.25f, 10},      [E_COW] = {0.9f, 1.3f, 0.2f, 10},
-    [E_SHEEP] = {0.9f, 1.3f, 0.23f, 8},     [E_CHICKEN] = {0.4f, 0.7f, 0.25f, 4},
+  uint8_t health, sense;   /* sense: how far it notices you (blocks) */
+} Kind;
+static const Kind kinds[] = {
+    [E_MUDLING] = {0.8f, 1.15f, 0.2f, 18, 12}, [E_THORNLING] = {0.6f, 1.45f, 0.14f, 14, 15},
+    [E_FIZZLER] = {0.7f, 1.5f, 0.22f, 16, 12},  [E_SKITTER] = {1.0f, 0.6f, 0.3f, 12, 10},
+    [E_SNUFFLER] = {0.8f, 0.85f, 0.22f, 9, 8},  [E_HUMPOX] = {1.0f, 1.25f, 0.17f, 12, 8},
+    [E_WOOLLY] = {0.8f, 1.6f, 0.21f, 9, 8},     [E_STRIDER] = {0.5f, 1.3f, 0.27f, 6, 8},
 };
-float mob_width(int t) { return t >= E_ZOMBIE && t <= E_CHICKEN ? info[t].w : 0.25f; }
-float mob_height(int t) { return t >= E_ZOMBIE && t <= E_CHICKEN ? info[t].h : 0.25f; }
-static bool hostile(int t) { return t >= E_ZOMBIE && t <= E_SPIDER; }
+static bool is_mob(int t) { return t >= E_FIRST_MOB && t <= E_LAST_MOB; }
+float mob_width(int t) { return is_mob(t) ? kinds[t].w : 0.25f; }
+float mob_height(int t) { return is_mob(t) ? kinds[t].h : 0.25f; }
+static bool hostile(int t) { return t >= E_MUDLING && t <= E_SKITTER; }
 
 float mob_scale(const Entity *e, float pt) {
-  if (e->growth < 0) return 0.5f;   /* a baby */
-  if (e->type != E_CREEPER || e->delay <= 0) return 1;
-  /* RenderCreeper: swells by up to 40% (and flickers) over the fuse */
-  float f = (e->delay + pt) / 28.0f;
-  if (f > 1) f = 1;
-  return 1 + f * f * f * f * 0.4f;
+  if (e->growth < 0) return 0.5f;   /* a young one */
+  if (e->type != E_FIZZLER || e->delay <= 0) return 1;
+  /* the fizzler puffs up a quarter as its fuse burns down */
+  float f = (e->delay + pt) / 40.0f;
+  return 1 + (f > 1 ? 1 : f) * 0.25f;
 }
 
-/* ---------------------------------------------------------------- models */
+/* ---------------------------------------------------------------- models
+ * Model pixels: y down, feet at y = 24, the face towards -z. */
 static int np;
 static Part *out_parts;
 static Part *box(float x, float y, float z, int w, int h, int d, int u, int v, float px, float py, float pz, int skin) {
@@ -49,202 +54,180 @@ static Part *box(float x, float y, float z, int w, int h, int d, int u, int v, f
 int mob_parts(const Entity *e, float pt, Part *o) {
   np = 0;
   out_parts = o;
-  float f = e->limb + e->limb_amt * pt, a = e->limb_amt;   /* limbSwing, limbSwingAmount */
+  float f = e->limb + e->limb_amt * pt, a = e->limb_amt;   /* how far it has walked, how fast */
   if (a > 1) a = 1;
   float pitch = e->pitch * 0.017453292f, age = e->age + pt;
-  float sw = cosf(f * 0.6662f), swo = cosf(f * 0.6662f + PI);
+  float step = cosf(f * 0.55f) * 1.2f * a, step2 = -step;   /* legs: one forward, the other back */
   switch (e->type) {
-    case E_ZOMBIE:
-    case E_SKELETON: {
-      int sk = e->type == E_ZOMBIE ? SKIN_ZOMBIE : SKIN_SKELETON;
-      box(-4, -8, -4, 8, 8, 8, 0, 0, 0, 0, 0, sk)->rx = pitch;
-      box(-4, 0, -2, 8, 12, 4, 16, 16, 0, 0, 0, sk);
-      Part *ra, *la, *rl, *ll;
-      if (e->type == E_ZOMBIE) {
-        ra = box(-3, -2, -2, 4, 12, 4, 40, 16, -5, 2, 0, sk);
-        la = box(-1, -2, -2, 4, 12, 4, 40, 16, 5, 2, 0, sk);
-        rl = box(-2, 0, -2, 4, 12, 4, 0, 16, -1.9f, 12, 0, sk);
-        ll = box(-2, 0, -2, 4, 12, 4, 0, 16, 1.9f, 12, 0, sk);
-        /* ModelZombie: arms held out, swaying a little */
-        ra->rx = la->rx = -PI / 2 + sinf(age * 0.067f) * 0.05f;
-        ra->rz = cosf(age * 0.09f) * 0.05f + 0.05f;
-        la->rz = -ra->rz;
-      } else {
-        ra = box(-1, -2, -1, 2, 12, 2, 40, 16, -5, 2, 0, sk);
-        la = box(-1, -2, -1, 2, 12, 2, 40, 16, 5, 2, 0, sk);
-        rl = box(-1, 0, -1, 2, 12, 2, 0, 16, -2, 12, 0, sk);
-        ll = box(-1, 0, -1, 2, 12, 2, 0, 16, 2, 12, 0, sk);
-        /* aiming its bow */
-        ra->rx = la->rx = -PI / 2 + pitch;
-        ra->ry = -0.1f;
-        la->ry = 0.5f;
+    case E_MUDLING: {   /* squat: a lump of a body, a small head, stubby arms swinging as it waddles */
+      box(-3, -5, -3.5f, SZ_MUDLING_HEAD, UV_MUDLING_HEAD, 0, 11, -1.5f, SKIN_MUDLING)->rx = pitch * 0.6f;
+      Part *b = box(-5, 0, -4, SZ_MUDLING_BODY, UV_MUDLING_BODY, 0, 11, 0, SKIN_MUDLING);
+      b->rz = sinf(f * 0.5f) * 0.12f * a;
+      box(-1.5f, -1, -1.5f, SZ_MUDLING_ARM, UV_MUDLING_ARM, -6.5f, 12, 0, SKIN_MUDLING)->rx = step2 * 0.6f - 0.3f;
+      box(-1.5f, -1, -1.5f, SZ_MUDLING_ARM, UV_MUDLING_ARM, 6.5f, 12, 0, SKIN_MUDLING)->rx = step * 0.6f - 0.3f;
+      box(-2, 0, -2, SZ_MUDLING_LEG, UV_MUDLING_LEG, -2.5f, 19, 0, SKIN_MUDLING)->rx = step * 0.7f;
+      box(-2, 0, -2, SZ_MUDLING_LEG, UV_MUDLING_LEG, 2.5f, 19, 0, SKIN_MUDLING)->rx = step2 * 0.7f;
+      break;
+    }
+    case E_THORNLING: {   /* a stalk on its roots, a thorny pod for a head, two leaves that wave */
+      box(-4, -2, -4, SZ_THORNLING_ROOTS, UV_THORNLING_ROOTS, 0, 24, 0, SKIN_THORNLING);
+      Part *st = box(-2, 0, -2, SZ_THORNLING_STALK, UV_THORNLING_STALK, 0, 8, 0, SKIN_THORNLING);
+      st->rx = sinf(age * 0.07f) * 0.05f + step * 0.1f;
+      box(-3.5f, -7, -3.5f, SZ_THORNLING_POD, UV_THORNLING_POD, 0, 8, 0, SKIN_THORNLING)->rx = pitch * 0.7f;
+      float wave = sinf(age * 0.15f) * 0.3f;
+      box(-6, 0, -1.5f, SZ_THORNLING_LEAF, UV_THORNLING_LEAF, -2, 14, 0, SKIN_THORNLING)->rz = 0.4f + wave;
+      box(0, 0, -1.5f, SZ_THORNLING_LEAF, UV_THORNLING_LEAF, 2, 14, 0, SKIN_THORNLING)->rz = -0.4f - wave;
+      break;
+    }
+    case E_SKITTER: {   /* a beetle: a low shell, six legs scuttling in turn, two feelers */
+      box(-5, -5, -6, SZ_SKITTER_SHELL, UV_SKITTER_SHELL, 0, 21, 1, SKIN_SKITTER);
+      box(-3, -4, -4, SZ_SKITTER_HEAD, UV_SKITTER_HEAD, 0, 21, -5, SKIN_SKITTER)->rx = pitch * 0.5f;
+      for (int k = 0; k < 2; k++) {
+        Part *fe = box(-0.5f, -0.5f, -5, SZ_SKITTER_FEELER, UV_SKITTER_FEELER, k ? 1.5f : -1.5f, 18, -8, SKIN_SKITTER);
+        fe->rx = -0.5f + sinf(age * 0.3f + k) * 0.15f, fe->ry = k ? -0.3f : 0.3f;
       }
-      la->mirror = ll->mirror = 1;
-      rl->rx = sw * 1.4f * a;
-      ll->rx = swo * 1.4f * a;
+      for (int l = 0; l < 6; l++) {
+        bool right = l & 1;
+        int k = l >> 1;
+        float ph = f * 1.2f + k * 2.1f + (right ? PI : 0);
+        Part *p = box(right ? 0 : -9, -0.5f, -0.5f, SZ_SKITTER_LEG, UV_SKITTER_LEG, right ? 4 : -4, 20, -3 + k * 3.5f,
+                      SKIN_SKITTER);
+        float fan = (k - 1) * 0.5f, sw = cosf(ph) * 0.3f * a;
+        p->ry = right ? -fan - sw : fan + sw;
+        p->rz = right ? 0.45f + fabsf(sinf(ph)) * 0.25f * a : -0.45f - fabsf(sinf(ph)) * 0.25f * a;
+      }
+      break;
+    }
+    case E_FIZZLER: {   /* the fizzler: a powder keg on two stubby legs, one eye, a lit fuse */
+      Part *b = box(-4, 0, -4, SZ_FIZZLER_BODY, UV_FIZZLER_BODY, 0, 4, 0, SKIN_FIZZLER);
+      b->rz = sinf(f * 0.55f) * 0.08f * a;
+      b->rx = pitch * 0.3f;
+      Part *fz = box(-0.5f, -4, -0.5f, SZ_FIZZLER_FUSE, UV_FIZZLER_FUSE, 0, 4, 0, SKIN_FIZZLER);
+      fz->rz = b->rz + sinf(age * 0.3f) * 0.15f;
+      box(-1.5f, 0, -2, SZ_FIZZLER_LEG, UV_FIZZLER_LEG, -2, 18, 0, SKIN_FIZZLER)->rx = step;
+      box(-1.5f, 0, -2, SZ_FIZZLER_LEG, UV_FIZZLER_LEG, 2, 18, 0, SKIN_FIZZLER)->rx = step2;
       break;
     }
-    case E_CREEPER: {
-      box(-4, -8, -4, 8, 8, 8, 0, 0, 0, 6, 0, SKIN_CREEPER)->rx = pitch;
-      box(-4, 0, -2, 8, 12, 4, 16, 16, 0, 6, 0, SKIN_CREEPER);
-      box(-2, 0, -2, 4, 6, 4, 0, 16, -2, 18, 4, SKIN_CREEPER)->rx = sw * 1.4f * a;
-      box(-2, 0, -2, 4, 6, 4, 0, 16, 2, 18, 4, SKIN_CREEPER)->rx = swo * 1.4f * a;
-      box(-2, 0, -2, 4, 6, 4, 0, 16, -2, 18, -4, SKIN_CREEPER)->rx = swo * 1.4f * a;
-      box(-2, 0, -2, 4, 6, 4, 0, 16, 2, 18, -4, SKIN_CREEPER)->rx = sw * 1.4f * a;
+    case E_SNUFFLER: {   /* a round striped rooter: the snout swings as it sniffs about */
+      float sniff = sinf(age * 0.2f) * 0.15f;
+      box(-4, -7, -6, SZ_SNUFFLER_BODY, UV_SNUFFLER_BODY, 0, 18, 0, SKIN_SNUFFLER)->rz = sinf(f * 0.55f) * 0.05f * a;
+      box(-3, -3, -5, SZ_SNUFFLER_HEAD, UV_SNUFFLER_HEAD, 0, 14, -5.5f, SKIN_SNUFFLER)->rx = pitch * 0.8f;
+      Part *sn = box(-1, -1, -5, SZ_SNUFFLER_SNOUT, UV_SNUFFLER_SNOUT, 0, 15, -10, SKIN_SNUFFLER);
+      sn->rx = 0.5f + pitch * 0.8f + sniff, sn->ry = sniff;
+      box(-1, -2, 0, SZ_SNUFFLER_EAR, UV_SNUFFLER_EAR, -2.5f, 11, -8, SKIN_SNUFFLER)->rz = -0.3f;
+      box(-1, -2, 0, SZ_SNUFFLER_EAR, UV_SNUFFLER_EAR, 2.5f, 11, -8, SKIN_SNUFFLER)->rz = 0.3f;
+      for (int k = 0; k < 4; k++)
+        box(-1, 0, -1, SZ_SNUFFLER_LEG, UV_SNUFFLER_LEG, k & 1 ? 2.5f : -2.5f, 18, k & 2 ? 4 : -4, SKIN_SNUFFLER)->rx =
+            (k == 1 || k == 2) ? step : step2;
       break;
     }
-    case E_SPIDER: {
-      box(-4, -4, -8, 8, 8, 8, 32, 4, 0, 15, -3, SKIN_SPIDER)->rx = pitch;
-      box(-3, -3, -3, 6, 6, 6, 0, 0, 0, 15, 0, SKIN_SPIDER);
-      box(-5, -4, -6, 10, 8, 12, 0, 12, 0, 15, 9, SKIN_SPIDER);
-      /* ModelSpider: eight legs fanned out, swinging in pairs */
-      static const float rz[8] = {-0.7853982f, 0.7853982f, -0.5811946f, 0.5811946f, -0.5811946f, 0.5811946f,
-                                  -0.7853982f, 0.7853982f};
-      static const float ry[8] = {0.7853982f, -0.7853982f, 0.3926991f, -0.3926991f, -0.3926991f, 0.3926991f,
-                                  -0.7853982f, 0.7853982f};
-      static const float pzs[4] = {2, 1, 0, -1};
-      float g = f * 0.6662f * 2;
-      float swy[4] = {-cosf(g) * 0.4f * a, -cosf(g + PI) * 0.4f * a, -cosf(g + PI / 2) * 0.4f * a,
-                      -cosf(g + PI * 1.5f) * 0.4f * a};
-      float swz[4] = {fabsf(sinf(f * 0.6662f)) * 0.4f * a, fabsf(sinf(f * 0.6662f + PI)) * 0.4f * a,
-                      fabsf(sinf(f * 0.6662f + PI / 2)) * 0.4f * a, fabsf(sinf(f * 0.6662f + PI * 1.5f)) * 0.4f * a};
-      for (int l = 0; l < 8; l++) {
-        bool right = !(l & 1);
-        Part *p = box(right ? -15 : -1, -1, -1, 16, 2, 2, 18, 0, right ? -4 : 4, 15, pzs[l >> 1], SKIN_SPIDER);
-        p->rz = rz[l] + (right ? swz[l >> 1] : -swz[l >> 1]);
-        p->ry = ry[l] + (right ? swy[l >> 1] : -swy[l >> 1]);
+    case E_HUMPOX: {   /* low and long, a hump over the shoulders, the head held low, horns ahead */
+      box(-4.5f, -7, -6.5f, SZ_HUMPOX_BODY, UV_HUMPOX_BODY, 0, 17, 0.5f, SKIN_HUMPOX);
+      box(-3, -4, -3, SZ_HUMPOX_HUMP, UV_HUMPOX_HUMP, 0, 10, -3, SKIN_HUMPOX)->rz = sinf(f * 0.4f) * 0.04f * a;
+      float hp = pitch * 0.6f + 0.15f + sinf(age * 0.06f) * 0.05f;
+      box(-3, -3, -5, SZ_HUMPOX_HEAD, UV_HUMPOX_HEAD, 0, 14, -6, SKIN_HUMPOX)->rx = hp;
+      for (int k = 0; k < 2; k++) {
+        Part *hn = box(-0.5f, -0.5f, -4, SZ_HUMPOX_HORN, UV_HUMPOX_HORN, k ? 3 : -3, 11.5f, -9, SKIN_HUMPOX);
+        hn->rx = hp - 0.25f, hn->ry = k ? -0.35f : 0.35f;
       }
+      for (int k = 0; k < 4; k++)
+        box(-1.5f, 0, -1.5f, SZ_HUMPOX_LEG, UV_HUMPOX_LEG, k & 1 ? 3 : -3, 17, k & 2 ? 4.5f : -4, SKIN_HUMPOX)->rx =
+            ((k == 0 || k == 3) ? step : step2) * 0.7f;
       break;
     }
-    case E_PIG:
-    case E_COW:
-    case E_SHEEP: {
-      int sk = e->type == E_PIG ? SKIN_PIG : e->type == E_COW ? SKIN_COW : SKIN_SHEEP;
-      float lh = e->type == E_PIG ? 6 : 12;
-      Part *body;
-      if (e->type == E_PIG) {
-        box(-4, -4, -8, 8, 8, 8, 0, 0, 0, 12, -6, sk)->rx = pitch;
-        box(-2, 0, -9, 4, 3, 1, 16, 16, 0, 12, -6, sk)->rx = pitch;   /* the snout */
-        body = box(-5, -10, -7, 10, 16, 8, 28, 8, 0, 11, 2, sk);
-      } else if (e->type == E_COW) {
-        box(-4, -4, -6, 8, 8, 6, 0, 0, 0, 4, -8, sk)->rx = pitch;
-        box(-5, -5, -4, 1, 3, 1, 22, 0, 0, 4, -8, sk)->rx = pitch;   /* horns */
-        box(4, -5, -4, 1, 3, 1, 22, 0, 0, 4, -8, sk)->rx = pitch;
-        body = box(-6, -10, -7, 12, 18, 10, 18, 4, 0, 5, 2, sk);
-        box(-2, 2, -8, 4, 6, 1, 52, 0, 0, 5, 2, sk)->rx = PI / 2;   /* the udder */
-      } else {
-        box(-3, -4, -6, 6, 6, 8, 0, 0, 0, 6, -8, sk)->rx = pitch;
-        body = box(-4, -10, -7, 8, 16, 6, 28, 8, 0, 5, 2, sk);
+    case E_WOOLLY: {   /* a ball of fleece on four long legs, a long upright neck, the head high, tall ears */
+      Part *legs[4];
+      for (int k = 0; k < 4; k++) {
+        legs[k] = box(-1, 0, -1, SZ_WOOLLY_LEG, UV_WOOLLY_LEG, k & 1 ? 2.5f : -2.5f, 14, k & 2 ? 3 : -3, SKIN_WOOLLY);
+        legs[k]->rx = ((k == 0 || k == 3) ? step : step2) * 0.8f;
       }
-      body->rx = PI / 2;
-      float lx = e->type == E_COW ? 4 : 3, lz0 = 7, lz1 = e->type == E_COW ? -6 : -5;
-      float ly = 24 - lh;
-      Part *l1 = box(-2, 0, -2, 4, (int)lh, 4, 0, 16, -lx, ly, lz0, sk);
-      Part *l2 = box(-2, 0, -2, 4, (int)lh, 4, 0, 16, lx, ly, lz0, sk);
-      Part *l3 = box(-2, 0, -2, 4, (int)lh, 4, 0, 16, -lx, ly, lz1, sk);
-      Part *l4 = box(-2, 0, -2, 4, (int)lh, 4, 0, 16, lx, ly, lz1, sk);
-      l1->rx = l4->rx = sw * 1.4f * a;
-      l2->rx = l3->rx = swo * 1.4f * a;
-      if (e->type == E_SHEEP && !e->sheared) {
-        /* the wool (ModelSheep1), inflated */
-        Part *h = box(-3, -4, -4, 6, 6, 6, 0, 0, 0, 6, -8, SKIN_SHEEP_FUR);
-        h->grow = 0.6f, h->rx = pitch;
-        Part *b = box(-4, -10, -7, 8, 16, 6, 28, 8, 0, 5, 2, SKIN_SHEEP_FUR);
-        b->grow = 1.75f, b->rx = PI / 2;
-        Part *ls[4] = {l1, l2, l3, l4};
-        for (int k = 0; k < 4; k++) {
-          Part *w = box(-2, 0, -2, 4, 6, 4, 0, 16, ls[k]->px, ls[k]->py, ls[k]->pz, SKIN_SHEEP_FUR);
-          w->grow = 0.5f, w->rx = ls[k]->rx;
-        }
+      float bounce = fabsf(sinf(f * 0.55f)) * 0.6f * a;
+      box(-3.5f, -6, -4.5f, SZ_WOOLLY_BODY, UV_WOOLLY_BODY, 0, 14.5f - bounce, 0, SKIN_WOOLLY);
+      Part *nk = box(-1, -8, -1, SZ_WOOLLY_NECK, UV_WOOLLY_NECK, 0, 10 - bounce, -4.5f, SKIN_WOOLLY);
+      nk->rx = -0.15f + pitch * 0.2f;
+      float hp = pitch * 0.7f;
+      box(-2, -2, -4, SZ_WOOLLY_HEAD, UV_WOOLLY_HEAD, 0, 2.5f - bounce, -4.5f, SKIN_WOOLLY)->rx = hp;
+      box(-0.5f, -3, 0, SZ_WOOLLY_EAR, UV_WOOLLY_EAR, -1.5f, 0.5f - bounce, -5.5f, SKIN_WOOLLY)->rz = -0.25f;
+      box(-0.5f, -3, 0, SZ_WOOLLY_EAR, UV_WOOLLY_EAR, 1.5f, 0.5f - bounce, -5.5f, SKIN_WOOLLY)->rz = 0.25f;
+      if (!e->sheared) {
+        box(-5.5f, -8, -6, SZ_WOOLLY_FUR_BALL, UV_WOOLLY_FUR_BALL, 0, 15.5f - bounce, 0.5f, SKIN_WOOLLY_FUR);
+        box(-3.5f, -2, -4, SZ_WOOLLY_FUR_PUFF, UV_WOOLLY_FUR_PUFF, 0, 7.5f - bounce, 0.5f, SKIN_WOOLLY_FUR);
+        box(-2, -2, -2, SZ_WOOLLY_FUR_COLLAR, UV_WOOLLY_FUR_COLLAR, 0, 7 - bounce, -4.5f, SKIN_WOOLLY_FUR);
+        box(-2, -1.5f, -2.5f, SZ_WOOLLY_FUR_CAP, UV_WOOLLY_FUR_CAP, 0, 0.5f - bounce, -6, SKIN_WOOLLY_FUR)->rx = hp;
       }
       break;
     }
-    case E_CHICKEN: {
-      float hp = pitch;
-      box(-2, -6, -2, 4, 6, 3, 0, 0, 0, 15, -4, SKIN_CHICKEN)->rx = hp;
-      box(-2, -4, -4, 4, 2, 2, 14, 0, 0, 15, -4, SKIN_CHICKEN)->rx = hp;   /* the bill */
-      box(-1, -2, -3, 2, 2, 2, 14, 4, 0, 15, -4, SKIN_CHICKEN)->rx = hp;   /* the wattle */
-      box(-3, -4, -3, 6, 8, 6, 0, 9, 0, 16, 0, SKIN_CHICKEN)->rx = PI / 2;
-      box(-1, 0, -3, 3, 5, 3, 26, 0, -2, 19, 1, SKIN_CHICKEN)->rx = sw * 1.4f * a;
-      box(-1, 0, -3, 3, 5, 3, 26, 0, 1, 19, 1, SKIN_CHICKEN)->rx = swo * 1.4f * a;
-      float flap = e->on_ground ? 0 : (sinf(age * 1.5f) + 1) * 0.6f;
-      box(0, 0, -3, 1, 4, 6, 24, 13, -4, 13, 0, SKIN_CHICKEN)->rz = flap;
-      box(-1, 0, -3, 1, 4, 6, 24, 13, 4, 13, 0, SKIN_CHICKEN)->rz = -flap;
+    case E_STRIDER: {   /* a running bird: long legs, a small body, a long neck that bobs as it runs */
+      float run = sinf(f * 0.7f) * 0.9f * a, bob = fabsf(cosf(f * 0.7f)) * 0.8f * a;
+      box(-2.5f, -5, -4, SZ_STRIDER_BODY, UV_STRIDER_BODY, 0, 14.5f - bob, 0.5f, SKIN_STRIDER)->rx = -0.1f;
+      box(-1.5f, -5, 0, SZ_STRIDER_PLUME, UV_STRIDER_PLUME, 0, 11 - bob, 4, SKIN_STRIDER)->rx = 0.5f;
+      Part *nk = box(-1, -7, -1, SZ_STRIDER_NECK, UV_STRIDER_NECK, 0, 11 - bob, -3, SKIN_STRIDER);
+      nk->rx = -0.15f - run * 0.15f;
+      float hp = pitch * 0.6f - run * 0.1f;
+      box(-1.5f, -2, -3, SZ_STRIDER_HEAD, UV_STRIDER_HEAD, 0, 4.5f - bob, -4, SKIN_STRIDER)->rx = hp;
+      box(-0.5f, -0.5f, -3, SZ_STRIDER_BEAK, UV_STRIDER_BEAK, 0, 4 - bob, -7, SKIN_STRIDER)->rx = hp;
+      box(-0.5f, -3, -1, SZ_STRIDER_CREST, UV_STRIDER_CREST, 0, 3 - bob, -4, SKIN_STRIDER)->rx = hp - 0.3f;
+      float flap = e->on_ground ? 0.1f : (sinf(age * 1.4f) + 1) * 0.6f;
+      box(-1, 0, -2.5f, SZ_STRIDER_WING, UV_STRIDER_WING, -2.5f, 11 - bob, 0, SKIN_STRIDER)->rz = flap;
+      box(0, 0, -2.5f, SZ_STRIDER_WING, UV_STRIDER_WING, 2.5f, 11 - bob, 0, SKIN_STRIDER)->rz = -flap;
+      box(-0.5f, 0, -0.5f, SZ_STRIDER_LEG, UV_STRIDER_LEG, -1.5f, 14, 0.5f, SKIN_STRIDER)->rx = run;
+      box(-0.5f, 0, -0.5f, SZ_STRIDER_LEG, UV_STRIDER_LEG, 1.5f, 14, 0.5f, SKIN_STRIDER)->rx = -run;
       break;
     }
   }
   return np;
 }
 
-/* ---------------------------------------------------------------- the world around a mob */
+/* ---------------------------------------------------------------- the world around it */
 extern uint32_t game_time;
 static inline int ifl(float v) { return (int)floorf(v); }
-
-/* World.isDaytime */
-static bool daylight(void) { return sky_sub() < 4; }
-/* the light where a mob would stand: sky light less the night's darkness */
+static bool sunny(void) { return sky_sub() < 4; }
 static int light_there(int x, int y, int z) {
   if (!world_loaded(x, y, z)) return 15;
-  int i = VC_I(x - vc_x0, y - vc_y0, z - vc_z0);
-  int sky = light_at(i), blk = block_light_at(i);
-  sky -= sky_sub();
-  return sky > blk ? sky : blk;
+  int i = VC_I(x - vc_x0, y - vc_y0, z - vc_z0), sky = light_at(i) - sky_sub(), lamp = block_light_at(i);
+  return sky > lamp ? sky : lamp;
 }
-static bool can_stand(int x, int y, int z) {
+static bool room_at(int x, int y, int z) {
   int below = world_get(x, y - 1, z), feet = world_get(x, y, z), head = world_get(x, y + 1, z);
   return (blk_flags[below] & BF_OPAQUE) && !(blk_flags[feet] & BF_SOLID) && blk_model[feet] != M_LIQUID &&
          !(blk_flags[head] & BF_SOLID) && blk_model[head] != M_LIQUID;
 }
-
-/* ---------------------------------------------------------------- spawning */
-static int count(bool host) {
+static int population(bool wild) {
   int n = 0;
-  for (int i = 0; i < N_ENT; i++)
-    if (ents[i].type >= E_ZOMBIE && ents[i].type <= E_CHICKEN && hostile(ents[i].type) == host) n++;
+  for (int i = 0; i < N_ENT; i++) n += is_mob(ents[i].type) && hostile(ents[i].type) == wild;
   return n;
 }
 
-static Entity *spawn(int type, float x, float y, float z) {
+/* ---------------------------------------------------------------- coming into the world */
+static Entity *born(int type, float x, float y, float z) {
   Entity *e = ent_new(type, x, y, z);
   if (!e) return NULL;
-  e->health = info[type].health;
+  e->health = kinds[type].health;
   e->yaw = rndf() * 360;
-  e->gx = x, e->gz = z;
+  e->gx = x, e->gz = z, e->tx = (int16_t)ifl(x), e->tz = (int16_t)ifl(z);
   return e;
 }
-Entity *mob_summon(int type, float x, float y, float z) { return spawn(type, x, y, z); }
+Entity *mob_summon(int type, float x, float y, float z) { return born(type, x, y, z); }
 
-/* SpawnerAnimals, made small: a try every second */
+/* called once a second: up to three places tried, 16 to 26 blocks from you */
 void mobs_spawn(void) {
   if (pl.dead) return;
-  for (int k = 0; k < 4; k++) {
-    int x = ifl(pl.x) + rnd(41) - 20, z = ifl(pl.z) + rnd(41) - 20;
-    float dx = x + 0.5f - pl.x, dz = z + 0.5f - pl.z;
-    if (dx * dx + dz * dz < 14 * 14) continue;
-    int y0 = ifl(pl.y) + 8;
-    for (int y = y0; y > y0 - 20; y--) {
-      if (!world_loaded(x, y + 1, z) || !world_loaded(x, y - 1, z)) continue;
-      if (!can_stand(x, y, z)) continue;
-      int below = world_get(x, y - 1, z);
-      int light = light_there(x, y, z);
-      /* EntityMob.isValidLightLevel: in a storm, the sky counts as night's */
-      if (thunder_str * rain_str > 0.9f) {
-        int i = VC_I(x - vc_x0, y - vc_y0, z - vc_z0), sky = light_at(i) - 10, blk = block_light_at(i);
-        light = sky > blk ? sky : blk;
-      }
-      if (opt.difficulty > 0 && count(true) < 4 && light <= rnd(8) && below != B_BEDROCK) {
-        static const uint8_t kinds[4] = {E_ZOMBIE, E_SKELETON, E_CREEPER, E_SPIDER};
-        int t = kinds[rnd(4)];
-        if (t == E_SPIDER && !(can_stand(x + 1, y, z) && can_stand(x, y, z + 1))) t = E_ZOMBIE;
-        spawn(t, x + 0.5f, (float)y, z + 0.5f);
+  for (int k = 0; k < 3; k++) {
+    float a = rndf() * 6.2831853f, r = 16 + rndf() * 10;
+    int x = ifl(pl.x + cosf(a) * r), z = ifl(pl.z + sinf(a) * r);
+    for (int y = ifl(pl.y) + 6; y > ifl(pl.y) - 14; y--) {
+      if (!world_loaded(x, y + 1, z) || !world_loaded(x, y - 1, z) || !room_at(x, y, z)) continue;
+      int below = world_get(x, y - 1, z), light = light_there(x, y, z);
+      if (opt.difficulty && population(true) < 5 && light < 6 && below != B_BEDROCK && rnd(3) == 0) {
+        static const uint8_t wild[5] = {E_MUDLING, E_MUDLING, E_THORNLING, E_FIZZLER, E_SKITTER};
+        born(wild[rnd(5)], x + 0.5f, (float)y, z + 0.5f);
         return;
       }
-      if (below == B_GRASS && light > 8 && count(false) < 4 && rnd(4) == 0) {
-        /* sheep 12, pig 10, chicken 10, cow 8 */
-        int r = rnd(40);
-        int t = r < 12 ? E_SHEEP : r < 22 ? E_PIG : r < 32 ? E_CHICKEN : E_COW;
-        int n = 1 + rnd(2);
-        for (int i = 0; i < n; i++) spawn(t, x + 0.5f + i * 0.3f, (float)y, z + 0.5f);
+      if (below == B_GRASS && light >= 9 && population(false) < 6 && rnd(5) == 0) {
+        static const uint8_t tame[11] = {E_WOOLLY, E_WOOLLY, E_WOOLLY, E_SNUFFLER, E_SNUFFLER, E_SNUFFLER, E_STRIDER, E_STRIDER,
+                                         E_STRIDER, E_HUMPOX, E_HUMPOX};
+        int t = tame[rnd(11)], n = 1 + rnd(3);
+        for (int i = 0; i < n; i++) born(t, x + 0.5f + i * 0.4f, (float)y, z + 0.5f - i * 0.3f);
         return;
       }
       break;
@@ -252,87 +235,62 @@ void mobs_spawn(void) {
   }
 }
 
-/* ---------------------------------------------------------------- dying, loot */
-static void drop(int id, int n, const Entity *e) {
-  if (n > 0) ent_drop(id, n, 0, e->x, e->y + 0.5f, e->z, false);
+/* ---------------------------------------------------------------- hurt, dying, what it leaves */
+static void leave(int id, int n, const Entity *e) {
+  if (n > 0) ent_drop(id, n, 0, e->x, e->y + 0.4f, e->z, false);
 }
-static void loot(Entity *e) {
-  if (e->growth < 0 || !rule(GR_MOB_LOOT)) return;   /* babies drop nothing */
+static void remains(Entity *e) {
+  if (e->growth < 0 || !rule(GR_MOB_LOOT)) return;
+  bool cooked = e->fire > 0;
   switch (e->type) {
-    case E_ZOMBIE: drop(I_ROTTEN_FLESH, rnd(3), e); break;
-    case E_SKELETON:
-      drop(I_BONE, rnd(3), e);
-      drop(I_ARROW, rnd(3), e);
-      break;
-    case E_CREEPER: drop(I_GUNPOWDER, rnd(3), e); break;
-    case E_SPIDER:
-      drop(I_STRING, rnd(3), e);
-      if (rnd(3) == 0) drop(I_SPIDER_EYE, 1, e);
-      break;
-    case E_PIG: drop(e->fire > 0 ? I_COOKED_PORKCHOP : I_PORKCHOP, 1 + rnd(3), e); break;
-    case E_COW:
-      drop(e->fire > 0 ? I_COOKED_BEEF : I_BEEF, 1 + rnd(3), e);
-      drop(I_LEATHER, rnd(3), e);
-      break;
-    case E_SHEEP:
-      if (!e->sheared) drop(B_WOOL_WHITE, 1, e);
-      drop(e->fire > 0 ? I_COOKED_MUTTON : I_MUTTON, 1 + rnd(2), e);
-      break;
-    case E_CHICKEN:
-      drop(I_FEATHER, rnd(3), e);
-      drop(e->fire > 0 ? I_COOKED_CHICKEN : I_CHICKEN, 1, e);
+    case E_MUDLING: leave(I_CLAY_BALL, rnd(3), e), leave(I_MUD_CAKE, rnd(2), e), leave(I_BONE, rnd(4) == 0, e); break;
+    case E_THORNLING: leave(I_STICK, rnd(3), e), leave(I_ARROW, rnd(3), e), leave(I_WHEAT_SEEDS, rnd(2), e); break;
+    case E_FIZZLER: leave(I_GUNPOWDER, 1 + rnd(2), e); break;
+    case E_SKITTER: leave(I_STRING, rnd(3), e), leave(I_BEETLE_EYE, rnd(3) == 0, e); break;
+    case E_SNUFFLER: leave(cooked ? I_COOKED_PORKCHOP : I_PORKCHOP, 1 + rnd(2), e); break;
+    case E_HUMPOX: leave(cooked ? I_COOKED_BEEF : I_BEEF, 1 + rnd(2), e), leave(I_LEATHER, rnd(2) + (rnd(3) == 0), e); break;
+    case E_WOOLLY:
+      if (!e->sheared) leave(B_WOOL_WHITE, 1, e);
+      leave(cooked ? I_COOKED_MUTTON : I_MUTTON, 1 + rnd(2), e);
       break;
+    case E_STRIDER: leave(I_FEATHER, 1 + rnd(2), e), leave(cooked ? I_COOKED_CHICKEN : I_CHICKEN, 1, e); break;
   }
-  player_add_xp(hostile(e->type) ? 5 : 1 + rnd(3));
+  player_add_xp(hostile(e->type) ? 4 + rnd(3) : 1 + rnd(2));
 }
 
-static void hurt(Entity *e, float dmg, float kx, float kz) {
-  if (e->state == 255 || e->invuln > 10) return;
+static void harm(Entity *e, float dmg, float kx, float kz) {
+  if (e->state == 255 || e->invuln > 0) return;
   e->health = (int16_t)(e->health - (int)ceilf(dmg));
-  e->invuln = 20;
-  e->hurt = 10;
-  /* EntityLivingBase.knockBack */
+  e->invuln = 12, e->hurt = 8;
   float d = sqrtf(kx * kx + kz * kz);
-  if (d > 0) {
-    e->vx = e->vx / 2 + kx / d * 0.4f;
-    e->vz = e->vz / 2 + kz / d * 0.4f;
-    e->vy = e->vy / 2 + 0.4f;
-    if (e->vy > 0.4f) e->vy = 0.4f;
-  }
-  if (!hostile(e->type)) e->panic = 100;
-  else if (kx != 0 || kz != 0) e->panic = e->panic > 100 ? e->panic : 100;   /* EntityAIHurtByTarget */
-  if (e->type == E_SPIDER) e->panic = 600;   /* a hit spider fights back, even by day */
-  if (e->health <= 0) {
-    e->state = 255;
-    e->timer = 0;
-  }
+  if (d > 0) e->vx = kx / d * 0.35f, e->vz = kz / d * 0.35f, e->vy = 0.3f;
+  e->panic = hostile(e->type) ? 200 : 80;   /* (wild ones: angry; tame ones: frightened) */
+  if (e->health <= 0) e->state = 255, e->timer = 0;
 }
 
-/* ---------------------------------------------------------------- the player and mobs */
+/* ---------------------------------------------------------------- you and them */
 Entity *entity_looked_at(float reach, float block_t) {
-  float ex = look_ray[0], ey = look_ray[1], ez = look_ray[2], *d = look_ray + 3;
+  float o[3] = {look_ray[0], look_ray[1], look_ray[2]}, *d = look_ray + 3;
   float best = reach < block_t ? reach : block_t;
   Entity *hit = NULL;
   for (int i = 0; i < N_ENT; i++) {
     Entity *e = &ents[i];
-    if (e->type < E_ZOMBIE || e->type > E_CHICKEN || e->state == 255) continue;
-    float w = info[e->type].w / 2 + 0.1f, h = info[e->type].h + 0.1f;
-    float lo[3] = {e->x - w, e->y, e->z - w}, hi[3] = {e->x + w, e->y + h, e->z + w}, o[3] = {ex, ey, ez};
-    float t0 = 0, t1 = best;
+    if (!is_mob(e->type) || e->state == 255) continue;
+    float w = kinds[e->type].w / 2 + 0.1f, h = kinds[e->type].h + 0.1f;
+    float lo[3] = {e->x - w, e->y, e->z - w}, hi[3] = {e->x + w, e->y + h, e->z + w}, t0 = 0, t1 = best;
     bool miss = false;
-    for (int a = 0; a < 3 && !miss; a++) {
-      if (fabsf(d[a]) < 1e-6f) {
-        if (o[a] < lo[a] || o[a] > hi[a]) miss = true;
+    for (int k = 0; k < 3 && !miss; k++) {   /* (the ray through the box, slab by slab) */
+      if (fabsf(d[k]) < 1e-6f) {
+        miss = o[k] < lo[k] || o[k] > hi[k];
         continue;
       }
-      float ta = (lo[a] - o[a]) / d[a], tb = (hi[a] - o[a]) / d[a];
+      float ta = (lo[k] - o[k]) / d[k], tb = (hi[k] - o[k]) / d[k];
       if (ta > tb) {
         float t = ta;
         ta = tb, tb = t;
       }
-      if (ta > t0) t0 = ta;
-      if (tb < t1) t1 = tb;
-      if (t0 > t1) miss = true;
+      t0 = ta > t0 ? ta : t0, t1 = tb < t1 ? tb : t1;
+      miss = t0 > t1;
     }
     if (!miss) best = t0, hit = e;
   }
@@ -344,64 +302,49 @@ bool mob_attack(const Entity *ce) {
   Stack *h = held();
   int k = item_kind(h->id);
   float dmg = h->id >= 256 && k >= IK_PICKAXE && k <= IK_SWORD ? it_a[h->id - 256] : 1;
-  /* a critical hit: falling, not on a ladder or in water */
-  if (pl.vy < 0 && !pl.on_ground && !pl.in_water) dmg *= 1.5f;
+  if (pl.vy < -0.1f && !pl.on_ground && !pl.in_water) dmg *= 1.3f;   /* (coming down on it) */
   float kx = e->x - pl.x, kz = e->z - pl.z;
-  if (pl.sprinting) {
-    /* a sprinting hit knocks harder, slows you and ends the sprint */
-    e->vx += kx * 0.2f, e->vz += kz * 0.2f;
-    pl.vx *= 0.6f, pl.vz *= 0.6f;
-    pl.sprinting = false;
-  }
-  hurt(e, dmg, kx, kz);
-  if (pl.mode == 0) {
-    if (k == IK_SWORD) stack_wear(h, 1);
-    else if (k >= IK_PICKAXE && k <= IK_HOE) stack_wear(h, 2);
-  }
-  pl.exhaustion += 0.3f;
+  harm(e, dmg, kx, kz);
+  if (pl.sprinting) e->vx *= 1.6f, e->vz *= 1.6f;   /* (running into it: a bigger knock) */
+  if (pl.mode == 0 && k >= IK_PICKAXE && k <= IK_SWORD) stack_wear(h, k == IK_SWORD ? 1 : 2);
+  pl.exhaustion += 0.25f;
   return true;
 }
 
-/* what each animal is fed to breed (EntityAnimal.isBreedingItem) */
-static int food_of(int type) {
+/* the food each animal follows and is fed with */
+static int liked(int type) {
   switch (type) {
-    case E_COW: case E_SHEEP: return I_WHEAT;
-    case E_PIG: return I_CARROT;
-    case E_CHICKEN: return I_WHEAT_SEEDS;
+    case E_HUMPOX: case E_WOOLLY: return I_WHEAT;
+    case E_SNUFFLER: return I_POTATO;
+    case E_STRIDER: return I_WHEAT_SEEDS;
   }
   return 0;
 }
 
-/* hit by a fishing hook: no damage, but it flinches (and runs, if it can) */
-void mob_hooked(Entity *e) { hurt(e, 0, 0, 0); }
-
-/* Entity.onStruckByLightning */
+void mob_hooked(Entity *e) { harm(e, 0, 0, 0); }
 void mob_struck(Entity *e) {
-  hurt(e, 5, 0, 0);
-  if (e->fire < 160) e->fire = 160;
+  harm(e, 4, 0, 0);
+  if (e->fire < 140) e->fire = 140;
 }
 
 bool mob_use(Entity *e) {
   Stack *h = held();
-  if (h->id && h->id == food_of(e->type) && e->state != 255 && e->growth >= 0 && !e->love && e->timer <= 0) {
-    /* fed: in love for 30 seconds */
-    e->love = 600;
-    if (pl.mode == 0) stack_take(h, 1);
-    return true;
-  }
-  if (h->id && h->id == food_of(e->type) && e->growth < 0) {
-    /* a baby fed grows up a tenth faster */
-    e->growth = (int16_t)(e->growth / 10 * 9);
+  if (e->state == 255) return false;
+  int food = liked(e->type);
+  if (food && h->id == food) {
+    if (e->growth < 0) e->growth = (int16_t)(e->growth * 3 / 4);   /* a young one grows faster */
+    else if (!e->love && e->timer <= 0) e->love = 400;              /* fed: ready for a young one */
+    else return false;
     if (pl.mode == 0) stack_take(h, 1);
     return true;
   }
-  if (e->type == E_SHEEP && h->id == I_SHEARS && !e->sheared && e->state != 255) {
+  if (e->type == E_WOOLLY && h->id == I_SHEARS && !e->sheared) {
     e->sheared = 1;
-    drop(B_WOOL_WHITE, 1 + rnd(3), e);
+    leave(B_WOOL_WHITE, 1 + rnd(2), e);
     if (pl.mode == 0) stack_wear(h, 1);
     return true;
   }
-  if (e->type == E_COW && h->id == I_BUCKET) {
+  if (e->type == E_HUMPOX && h->id == I_BUCKET) {
     if (pl.mode == 1) return true;
     if (h->aux <= 1) h->id = I_MILK_BUCKET, h->aux = 1;
     else {
@@ -413,140 +356,113 @@ bool mob_use(Entity *e) {
   return false;
 }
 
-/* difficulty scales what mobs do to the player (EntityPlayer.attackEntityFrom) */
-static float scaled(float d) {
-  switch (opt.difficulty) {
-    case 0: return 0;
-    case 1: return d / 2 + 1 < d ? d / 2 + 1 : d;
-    case 3: return d * 1.5f;
-  }
-  return d;
+/* how hard the wild ones hit, by difficulty */
+static float by_level(float d) {
+  static const float k[4] = {0, 0.6f, 1, 1.4f};
+  return d * k[opt.difficulty & 3];
 }
-
-static void push_player(float kx, float kz, float s) {
+static void shove(float kx, float kz, float s) {
   float d = sqrtf(kx * kx + kz * kz);
   if (d <= 0) return;
-  pl.vx += kx / d * s;
-  pl.vz += kz / d * s;
-  pl.vy += 0.4f * (s / 0.4f);
-  if (pl.vy > 0.4f) pl.vy = 0.4f;
+  pl.vx += kx / d * s, pl.vz += kz / d * s;
+  if (pl.vy < 0.3f) pl.vy = 0.3f;
 }
 
-/* ---------------------------------------------------------------- explosions (Explosion, power 3) */
-/* EntityTNTPrimed: lit TNT hops up, a little to one side, and blows when its fuse is out */
+/* ---------------------------------------------------------------- blasts */
 void tnt_light(int x, int y, int z, int fuse) {
   Entity *t = ent_new(E_TNT, x + 0.5f, (float)y, z + 0.5f);
   if (!t) return;
-  float a = rndf() * 6.2831853f;
   t->delay = (int16_t)fuse, t->item.id = B_TNT;
-  t->vx = -sinf(a) * 0.02f, t->vy = 0.2f, t->vz = -cosf(a) * 0.02f;
+  t->vy = 0.18f, t->vx = (rndf() - 0.5f) * 0.04f, t->vz = (rndf() - 0.5f) * 0.04f;
 }
 
+/* a blast of `power`: a rough ball of blocks blown away (the harder ones resist), a third of them
+ * dropped; what is near is hurt and pushed, less the farther */
 void explode(float x, float y, float z, float power, bool blocks) {
-  int r = blocks ? (int)ceilf(power) : -1;
+  int r = blocks ? (int)(power + 0.5f) + 1 : -1;
   for (int dy = -r; dy <= r; dy++)
     for (int dz = -r; dz <= r; dz++)
       for (int dx = -r; dx <= r; dx++) {
         float d = sqrtf((float)(dx * dx + dy * dy + dz * dz));
-        /* the blast fades with distance and randomly (0.7 to 1.3 of the power), blocks resist it */
-        float f = power * (0.7f + rndf() * 0.6f) - d * 0.9f;
-        int bx = ifl(x) + dx, by = ifl(y) + dy, bz = ifl(z) + dz;
-        int b = world_get(bx, by, bz);
+        float force = (power * 1.15f - d) * (0.8f + rndf() * 0.4f);
+        int bx = ifl(x) + dx, by = ifl(y) + dy, bz = ifl(z) + dz, b = world_get(bx, by, bz);
         if (b == B_AIR || blk_model[b] == M_LIQUID || blk_hard[b] == 255 || b == B_OBSIDIAN) continue;
-        float resist = blk_hard[b] / 20.0f * 5 / 5 + 0.3f;   /* (blast resistance, about the hardness) */
-        if (f - resist * 0.3f <= 0) continue;
+        if (force <= blk_hard[b] / 20.0f * 0.3f + 0.2f) continue;
         if (b == B_CHEST || b == B_FURNACE || b == B_FURNACE_LIT) tiles_removed(bx, by, bz);
         world_set(bx, by, bz, B_AIR);
         if (b == B_TNT) {
-          /* TNT caught in a blast is lit, with a shorter fuse */
-          tnt_light(bx, by, bz, 10 + rnd(20));
+          tnt_light(bx, by, bz, 8 + rnd(16));
           continue;
         }
-        /* one in power of the blocks drop */
-        if (rnd((int)power) == 0 && rule(GR_TILE_DROPS)) {
+        if (rnd(3) == 0 && rule(GR_TILE_DROPS)) {
           Stack out[2];
           int n = block_drops(b, I_DIAMOND_PICKAXE, out);
           for (int i = 0; i < n; i++) ent_drop(out[i].id, out[i].aux, 0, bx + 0.5f, by + 0.5f, bz + 0.5f, false);
         }
       }
-  /* the player: up to 2 x power blocks away, (impact^2 + impact) / 2 x 7 x 2 power + 1 */
-  float px = pl.x - x, py = pl.y + 0.9f - y, pz = pl.z - z;
-  float dist = sqrtf(px * px + py * py + pz * pz) / (power * 2);
-  if (dist <= 1) {
-    float impact = 1 - dist;
-    float dmg = (impact * impact + impact) / 2 * 7 * power * 2 + 1;
-    player_hurt(scaled(dmg), DMG_EXPLOSION);
-    push_player(px, pz, impact);
+  float reach = power * 1.8f;
+  float px = pl.x - x, py = pl.y + 0.9f - y, pz = pl.z - z, d = sqrtf(px * px + py * py + pz * pz) / reach;
+  if (d < 1) {
+    player_hurt(by_level((1 - d) * power * 4 + 1), DMG_EXPLOSION);
+    shove(px, pz, (1 - d) * 0.9f);
   }
   for (int i = 0; i < N_ENT; i++) {
     Entity *e = &ents[i];
-    if (e->type < E_ZOMBIE || e->type > E_CHICKEN) continue;
-    float ex = e->x - x, ez = e->z - z, ey = e->y - y;
-    float d = sqrtf(ex * ex + ey * ey + ez * ez) / (power * 2);
-    if (d <= 1) hurt(e, ((1 - d) * (1 - d) + (1 - d)) / 2 * 7 * power * 2 + 1, ex, ez);
+    if (!is_mob(e->type)) continue;
+    float ex = e->x - x, ey = e->y - y, ez = e->z - z, de = sqrtf(ex * ex + ey * ey + ez * ez) / reach;
+    if (de < 1) harm(e, (1 - de) * power * 4 + 1, ex, ez);
   }
 }
 
-/* ---------------------------------------------------------------- arrows */
-static void shoot(const Entity *from) {
-  Entity *a = ent_new(E_ARROW, from->x, from->y + 1.5f, from->z);
+/* ---------------------------------------------------------------- thorns, arrows, snowballs, eggs */
+static void spit(const Entity *from) {
+  Entity *a = ent_new(E_ARROW, from->x, from->y + kinds[from->type].h * 0.8f, from->z);
   if (!a) return;
   a->item.id = I_ARROW;
-  float dx = pl.x - a->x, dy = pl.y + 0.6f - a->y, dz = pl.z - a->z;
-  float h = sqrtf(dx * dx + dz * dz);
-  dy += h * 0.2f;   /* aimed a little up, to arc */
-  float d = sqrtf(dx * dx + dy * dy + dz * dz);
-  /* EntityArrow.setThrowableHeading: speed 1.6, spread 14 - difficulty x 4 */
-  float spread = (14 - opt.difficulty * 4) * 0.0075f;
-  a->vx = (dx / d + (rndf() - 0.5f) * 2 * spread) * 1.6f;
-  a->vy = (dy / d + (rndf() - 0.5f) * 2 * spread) * 1.6f;
-  a->vz = (dz / d + (rndf() - 0.5f) * 2 * spread) * 1.6f;
+  float dx = pl.x - a->x, dy = pl.y + 0.9f - a->y, dz = pl.z - a->z, flat = sqrtf(dx * dx + dz * dz);
+  dy += flat * 0.15f;   /* (a little up: it arcs) */
+  float d = sqrtf(dx * dx + dy * dy + dz * dz), wobble = (10 - opt.difficulty * 2) * 0.008f;
+  a->vx = (dx / d + (rndf() - 0.5f) * wobble) * 1.4f;
+  a->vy = (dy / d + (rndf() - 0.5f) * wobble) * 1.4f;
+  a->vz = (dz / d + (rndf() - 0.5f) * wobble) * 1.4f;
   a->yaw = atan2f(-a->vx, a->vz) * 57.29578f;
 }
 
-/* the player throws or shoots: from the eyes, the way they look (EntityThrowable, EntityArrow) */
 void throw_item(int id, float speed, bool from_player) {
   float yaw = pl.yaw * 0.017453292f, pitch = pl.pitch * 0.017453292f;
-  Entity *a = ent_new(E_ARROW, pl.x - cosf(yaw) * 0.16f, pl.y + 1.52f, pl.z - sinf(yaw) * 0.16f);
+  Entity *a = ent_new(E_ARROW, pl.x, pl.y + 1.5f, pl.z);
   if (!a) return;
   a->item.id = (uint16_t)id;
-  a->item.aux = from_player;   /* the player's arrows can be picked up again */
+  a->item.aux = from_player;   /* (yours can be picked up again) */
   float dx = -sinf(yaw) * cosf(pitch), dy = -sinf(pitch), dz = cosf(yaw) * cosf(pitch);
-  a->vx = (dx + (rndf() - 0.5f) * 0.015f) * speed + pl.vx;
-  a->vy = (dy + (rndf() - 0.5f) * 0.015f) * speed + (pl.on_ground ? 0 : pl.vy);
-  a->vz = (dz + (rndf() - 0.5f) * 0.015f) * speed + pl.vz;
+  a->vx = dx * speed + pl.vx, a->vy = dy * speed + (pl.on_ground ? 0 : pl.vy), a->vz = dz * speed + pl.vz;
   a->yaw = pl.yaw;
 }
 
-static void arrow_tick(Entity *e) {
+static void flying_tick(Entity *e) {
   bool arrow = e->item.id == I_ARROW;
-  if (e->state) {   /* stuck in a block: the player's can be picked up */
+  if (e->state) {   /* stuck */
     float px = pl.x - e->x, py = pl.y + 0.9f - e->y, pz = pl.z - e->z;
-    if (e->item.aux && px * px + py * py + pz * pz < 2.0f && !inv_add(pl.inv, 36, I_ARROW, 1, 0)) e->type = E_NONE;
-    if (++e->timer > 1200) e->type = E_NONE;
+    if (e->item.aux && px * px + py * py + pz * pz < 2 && !inv_add(pl.inv, 36, I_ARROW, 1, 0)) e->type = E_NONE;
+    if (++e->timer > 1000) e->type = E_NONE;
     return;
   }
   float nx = e->x + e->vx, ny = e->y + e->vy, nz = e->z + e->vz;
   float sp = sqrtf(e->vx * e->vx + e->vy * e->vy + e->vz * e->vz);
-  /* the player in the way of a mob's arrow */
   float px = pl.x - nx, pz = pl.z - nz;
-  if (!e->item.aux && !pl.dead && px * px + pz * pz < 0.5f && ny > pl.y && ny < pl.y + 1.8f) {
-    player_hurt(scaled(ceilf(sp * 2.2f)), DMG_ARROW);
-    push_player(e->vx, e->vz, 0.4f);
+  if (!e->item.aux && !pl.dead && px * px + pz * pz < 0.45f && ny > pl.y && ny < pl.y + PLAYER_H) {
+    player_hurt(by_level(2 + (sp > 1.2f)), DMG_ARROW);
+    shove(e->vx, e->vz, 0.3f);
     e->type = E_NONE;
     return;
   }
-  /* a mob in the way of the player's */
   if (e->item.aux)
     for (int i = 0; i < N_ENT; i++) {
       Entity *m = &ents[i];
-      if (m->type < E_ZOMBIE || m->type > E_CHICKEN || m->state == 255) continue;
-      float w = info[m->type].w / 2 + 0.15f, mx = m->x - nx, mz = m->z - nz;
-      if (fabsf(mx) < w && fabsf(mz) < w && ny > m->y - 0.1f && ny < m->y + info[m->type].h) {
-        /* EntityArrow: damage 2 x speed, rounded up (a full draw sometimes more) */
-        float dmg = arrow ? ceilf(sp * 2) + (sp > 2.9f ? rnd((int)(sp * 2) / 2 + 2) : 0) : 0;
-        hurt(m, dmg, e->vx, e->vz);
-        if (!arrow && dmg == 0) m->vx += e->vx * 0.2f, m->vz += e->vz * 0.2f;
+      if (!is_mob(m->type) || m->state == 255) continue;
+      float w = kinds[m->type].w / 2 + 0.15f, mx = m->x - nx, mz = m->z - nz;
+      if (fabsf(mx) < w && fabsf(mz) < w && ny > m->y - 0.1f && ny < m->y + kinds[m->type].h) {
+        harm(m, arrow ? ceilf(sp * 1.8f) : 0, e->vx, e->vz);
         e->type = E_NONE;
         return;
       }
@@ -554,71 +470,71 @@ static void arrow_tick(Entity *e) {
   int b = world_get(ifl(nx), ifl(ny), ifl(nz));
   if (blk_flags[b] & BF_SOLID) {
     if (!arrow) {
-      /* EntityEgg: one in eight hatches a chick (a chicken here) */
-      if (e->item.id == I_EGG && rnd(8) == 0) spawn(E_CHICKEN, e->x, e->y, e->z);
+      if (e->item.id == I_EGG && rnd(10) == 0) {
+        Entity *c = born(E_STRIDER, e->x, e->y, e->z);
+        if (c) c->growth = -14000;
+      }
       e->type = E_NONE;
       return;
     }
-    e->state = 1;
-    e->vx = e->vy = e->vz = 0;
+    e->state = 1, e->vx = e->vy = e->vz = 0;
     return;
   }
   e->x = nx, e->y = ny, e->z = nz;
-  bool water = blk_model[b] == M_LIQUID;
-  float drag = water ? 0.8f : 0.99f;
+  float drag = blk_model[b] == M_LIQUID ? 0.7f : 0.985f;
   e->vx *= drag, e->vy *= drag, e->vz *= drag;
-  e->vy -= arrow ? 0.05f : 0.03f;
+  e->vy -= arrow ? 0.045f : 0.03f;
   if (++e->timer > 400) e->type = E_NONE;
 }
 
-/* lit TNT: falls, flashes, and blows with power 4 after 80 ticks (EntityTNTPrimed) */
 static void tnt_tick(Entity *e) {
   float p[3] = {e->x, e->y, e->z}, v[3] = {e->vx, e->vy - 0.04f, e->vz};
   bool ground = phys_move(p, v, 0.98f, 0.98f);
   e->x = p[0], e->y = p[1], e->z = p[2];
-  e->vx = v[0] * 0.98f, e->vy = v[1] * 0.98f, e->vz = v[2] * 0.98f;
-  if (ground) e->vx *= 0.7f, e->vz *= 0.7f, e->vy *= -0.5f;
+  e->vx = v[0] * 0.97f, e->vy = v[1] * 0.97f, e->vz = v[2] * 0.97f;
+  if (ground) e->vx *= 0.6f, e->vz *= 0.6f, e->vy *= -0.4f;
   if (--e->delay <= 0) {
     e->type = E_NONE;
-    explode(e->x, e->y + 0.49f, e->z, 4, true);
+    explode(e->x, e->y + 0.5f, e->z, 3.6f, true);
   }
 }
 
-/* ---------------------------------------------------------------- a tick */
 /* ---------------------------------------------------------------- finding the way */
-/* EntitySenses.canSee: nothing opaque between its eyes and the player's */
 static bool sees(const Entity *e) {
-  float x = e->x, y = e->y + info[e->type].h * 0.85f, z = e->z;
-  float dx = pl.x - x, dy = pl.y + 1.62f - y, dz = pl.z - z, d = sqrtf(dx * dx + dy * dy + dz * dz);
-  int n = (int)(d / 0.4f);
+  float x = e->x, y = e->y + kinds[e->type].h * 0.8f, z = e->z;
+  float dx = pl.x - x, dy = pl.y + 1.6f - y, dz = pl.z - z, d = sqrtf(dx * dx + dy * dy + dz * dz);
+  int n = (int)(d * 2.5f);
   for (int k = 1; k < n; k++) {
     float t = (float)k / n;
     if (blk_flags[world_get(ifl(x + dx * t), ifl(y + dy * t), ifl(z + dz * t))] & BF_OPAQUE) return false;
   }
   return true;
 }
-/* where a mob as tall as h can stand, going from height y onto the column (x, z): up a step, level,
- * or down up to three (PathFinder.getSafePoint); -1: nowhere */
-static bool clear(int b) { return !(blk_flags[b] & BF_SOLID) && !is_lava(b) && b != B_FIRE && b != B_CACTUS; }
-static int stand_at(int x, int y, int z, int tall) {
+/* does the player look at it (within 20 degrees or so)? */
+static bool watched(const Entity *e) {
+  float dx = e->x - look_ray[0], dy = e->y + kinds[e->type].h / 2 - look_ray[1], dz = e->z - look_ray[2];
+  float d = sqrtf(dx * dx + dy * dy + dz * dz);
+  return d > 0 && (dx * look_ray[3] + dy * look_ray[4] + dz * look_ray[5]) / d > 0.94f && sees(e);
+}
+/* where it can stand going from height y onto column (x, z): a step up, level, or down up to three */
+static bool passable(int b) { return !(blk_flags[b] & BF_SOLID) && !is_lava(b) && b != B_FIRE && b != B_CACTUS; }
+static int foothold(int x, int y, int z, int tall) {
   for (int k = 0; k < 5; k++) {
     int ny = k == 0 ? y + 1 : y - k + 1;
     int below = world_get(x, ny - 1, z);
-    bool water = is_water(world_get(x, ny, z));
-    if (!clear(world_get(x, ny, z)) || (tall && !clear(world_get(x, ny + 1, z)))) {
-      if (k > 1) return -1;   /* (going down: something in the way) */
+    if (!passable(world_get(x, ny, z)) || (tall && !passable(world_get(x, ny + 1, z)))) {
+      if (k > 1) return -1;
       continue;
     }
-    if (k == 0 && !clear(world_get(x, y + 1 + tall, z))) continue;   /* (no room over its head to step up) */
-    if (water || ((blk_flags[below] & BF_SOLID) && blk_model[below] != M_FENCE && !is_lava(below) && below != B_CACTUS))
+    if (k == 0 && !passable(world_get(x, y + 1 + tall, z))) continue;
+    if (is_water(world_get(x, ny, z)) ||
+        ((blk_flags[below] & BF_SOLID) && blk_model[below] != M_FENCE && !is_lava(below) && below != B_CACTUS))
       return ny;
   }
   return -1;
 }
-/* PathFinder: the way to its goal over the blocks about it (A*, four ways from each); the nearest it can
- * get if it cannot get there. It steers to the end of the way's first straight */
 #define PG 32
-typedef struct { uint8_t y, g, from; } PNode;   /* from: the way it came (4: the start), +8 done */
+typedef struct { uint8_t y, g, from; } PNode;   /* from: the way it came (4: the start), +8: done */
 static void find_way(Entity *e, float h) {
   PNode *n = (PNode *)world_scratch(PG * PG * sizeof(PNode) + PG * PG * 2);
   if (!n) return;
@@ -631,9 +547,8 @@ static void find_way(Entity *e, float h) {
   n[s].y = (uint8_t)ifl(e->y + 0.01f), n[s].from = 4;
   heap[nh++] = (uint16_t)s;
   static const int8_t DX[4] = {1, -1, 0, 0}, DZ[4] = {0, 0, 1, -1};
-  #define F(i) (n[i].g + abs((i) % PG - tx) + abs((i) / PG - tz))
+#define F(i) (n[i].g + abs((i) % PG - tx) + abs((i) / PG - tz))
   for (int done = 0; nh && done < 300;) {
-    /* the open one nearest by its cost and what is left (a heap) */
     int c = heap[0];
     heap[0] = heap[--nh];
     for (int i = 0;;) {
@@ -654,7 +569,7 @@ static void find_way(Entity *e, float h) {
       if (nx < 0 || nx >= PG || nz < 0 || nz >= PG) continue;
       int i = nz * PG + nx;
       if (n[i].from & 8) continue;
-      int ny = stand_at(x0 + nx, n[c].y, z0 + nz, tall);
+      int ny = foothold(x0 + nx, n[c].y, z0 + nz, tall);
       if (ny < 1 || ny > 255) continue;
       int g = n[c].g + 1 + is_water(world_get(x0 + nx, ny, z0 + nz));
       if (g > 250 || (n[i].y && n[i].g <= g)) continue;
@@ -669,9 +584,7 @@ static void find_way(Entity *e, float h) {
       }
     }
   }
-  #undef F
-  /* the way, from its end back to the start (in the heap's room); then from the start, as far as its
-   * first straight goes */
+#undef F
   int len = 0;
   for (int c = best; c != s && len < PG * PG; c = (c % PG - DX[n[c].from & 7]) + (c / PG - DZ[n[c].from & 7]) * PG)
     heap[len++] = (uint16_t)c;
@@ -683,239 +596,204 @@ static void find_way(Entity *e, float h) {
   while (end > 0 && (n[heap[end - 1]].from & 7) == k0) end--;
   e->gx = x0 + heap[end] % PG + 0.5f, e->gz = z0 + heap[end] / PG + 0.5f;
 }
-/* RandomPositionGenerator.findRandomTarget: of ten places within 10 blocks, the one it likes best */
-static void wander_to(Entity *e) {
+
+/* a place to go: of six tries within 8 blocks, the best for it (shade for the wild ones, grass in
+ * the light for the tame ones) */
+static void roam(Entity *e, bool shade) {
   int best = -1000;
-  for (int k = 0; k < 10; k++) {
-    int x = ifl(e->x) + rnd(21) - 10, z = ifl(e->z) + rnd(21) - 10, y = ifl(e->y) + rnd(7) - 3;
+  for (int k = 0; k < 6; k++) {
+    int x = ifl(e->x) + rnd(17) - 8, z = ifl(e->z) + rnd(17) - 8, y = ifl(e->y) + rnd(5) - 2;
     if (!world_loaded(x, y, z)) continue;
-    int w = hostile(e->type) ? -light_there(x, y, z) : world_get(x, y - 1, z) == B_GRASS ? 10 : light_there(x, y, z) - 8;
+    int l = light_there(x, y, z), w = shade ? -l : (world_get(x, y - 1, z) == B_GRASS) * 8 + l;
     if (w > best) best = w, e->tx = (int16_t)x, e->tz = (int16_t)z;
   }
 }
+static void go_to(Entity *e, float x, float z) { e->tx = (int16_t)ifl(x), e->tz = (int16_t)ifl(z); }
 
-static float wrap(float a) {
-  while (a > 180) a -= 360;
-  while (a < -180) a += 360;
-  return a;
+static float turn_to(float from, float to, float most) {
+  float d = to - from;
+  while (d > 180) d -= 360;
+  while (d < -180) d += 360;
+  return from + (d > most ? most : d < -most ? -most : d);
 }
 
+/* ---------------------------------------------------------------- a tick of a creature's life */
+enum { WANT_STAY, WANT_GO, WANT_FLEE };
+
 void mob_tick(Entity *e) {
-  if (e->type == E_ARROW) {
-    arrow_tick(e);
-    return;
-  }
-  if (e->type == E_TNT) {
-    tnt_tick(e);
-    return;
-  }
-  const MobInfo *mi = &info[e->type];
+  if (e->type == E_ARROW) return flying_tick(e);
+  if (e->type == E_TNT) return tnt_tick(e);
+  const Kind *kd = &kinds[e->type];
   if (e->hurt > 0) e->hurt--;
   if (e->invuln > 0) e->invuln--;
-  if (e->state == 255) {
-    if (++e->timer >= 20) {
-      loot(e);
-      e->type = E_NONE;
-    }
-    e->vx *= 0.5f, e->vz *= 0.5f;
+  if (e->state == 255) {   /* falling over */
+    if (++e->timer >= 16) remains(e), e->type = E_NONE;
+    e->vx *= 0.4f, e->vz *= 0.4f;
   }
-  float dx = pl.x - e->x, dz = pl.z - e->z, dy = pl.y - e->y;
-  float dist = sqrtf(dx * dx + dz * dz);
-  /* far away: gone (EntityLiving.despawnEntity) */
-  if (hostile(e->type) && dist > 32) {
+  float dx = pl.x - e->x, dz = pl.z - e->z, dy = pl.y - e->y, dist = sqrtf(dx * dx + dz * dz);
+  if (hostile(e->type) && dist > 40) {
     e->type = E_NONE;
     return;
   }
   int bx = ifl(e->x), by = ifl(e->y), bz = ifl(e->z);
-  bool in_water = blk_model[world_get(bx, ifl(e->y + 0.4f), bz)] == M_LIQUID;
-  bool in_lava = is_lava(world_get(bx, ifl(e->y + 0.4f), bz));
-  /* daylight burns zombies and skeletons (EntityZombie.onLivingUpdate) */
-  if ((e->type == E_ZOMBIE || e->type == E_SKELETON) && daylight() && !in_water &&
-      light_there(bx, ifl(e->y + 1.6f), bz) >= 15 && world_get(bx, ifl(e->y + 1.6f), bz) == B_AIR) {
-    if (e->fire < 160) e->fire = 160;
-  }
-  if (in_lava) e->fire = 300, hurt(e, 4, 0, 0);
-  if (world_get(bx, by, bz) == B_FIRE || world_get(bx, ifl(e->y + 1), bz) == B_FIRE) {
-    hurt(e, 1, 0, 0);
-    if (e->fire < 160) e->fire = 160;
-  }
-  if (in_water || rain_at(bx, by, bz) || rain_at(bx, ifl(e->y + 1.6f), bz)) e->fire = 0;   /* Entity.isWet */
-  if (e->fire > 0) {
-    if (e->fire % 20 == 0) hurt(e, 1, 0, 0);
-    e->fire--;
-  }
+  int at = world_get(bx, ifl(e->y + 0.4f), bz);
+  bool swim = blk_model[at] == M_LIQUID, wet = swim || rain_at(bx, ifl(e->y + kd->h), bz);
+  bool open_sky = light_there(bx, ifl(e->y + kd->h), bz) >= 15 && sunny();
+  /* fire and lava, water and rain */
+  if (is_lava(at)) e->fire = 300, harm(e, 4, 0, 0);
+  if (world_get(bx, by, bz) == B_FIRE) harm(e, 1, 0, 0), e->fire = e->fire < 140 ? 140 : e->fire;
+  if (wet) e->fire = 0;
+  if (e->fire > 0 && --e->fire % 20 == 0) harm(e, 1, 0, 0);
   if (e->panic > 0) e->panic--;
   if (e->growth < 0) e->growth++;
-  /* (animals: the time before breeding again; in love, how long it has been by its mate) */
   if (e->timer > 0 && !hostile(e->type) && e->state != 255 && !e->love) e->timer--;
-  if (e->love > 0) {
-    e->love--;
-    /* EntityAIMate: to the nearest other one in love; close together for 3 seconds: a baby */
-    for (int i = 0; i < N_ENT; i++) {
-      Entity *o = &ents[i];
-      if (o == e || o->type != e->type || o->love <= 0 || o->state == 255) continue;
-      float mx = o->x - e->x, mz = o->z - e->z;
-      if (mx * mx + mz * mz > 64) continue;
-      e->gx = o->x, e->gz = o->z;
-      if (mx * mx + mz * mz < 2.5f && ++e->timer >= 60) {
-        Entity *b = spawn(e->type, e->x, e->y, e->z);
-        if (b) b->growth = -24000;
-        e->love = o->love = 0;
-        e->timer = o->timer = 6000;
-        player_add_xp(1 + rnd(7));
-      }
-      break;
-    }
-  }
-  if (e->delay > 0 && e->type != E_CREEPER) e->delay--;
-  /* what it wants (EntityAITasks, by priority): a hostile mob the player it saw lately or that hit it;
-   * an animal running when hit, going to its mate, after the food in the player's hand; then looking
-   * about and wandering */
-  bool chase = false, go = false, look = false;
-  float speed = mi->speed;
+  /* the sun dries a mudling out; rain heals a thornling */
+  if (e->type == E_MUDLING && open_sky && !wet && ticks_run % 40 == 0) harm(e, 1, 0, 0);
+  if (e->type == E_THORNLING && wet && ticks_run % 40 == 0 && e->health < kd->health) e->health++;
+
+  int want = WANT_STAY;
+  float speed = kd->speed;
+  bool aware = false, face = false;
   if (e->state != 255 && hostile(e->type)) {
-    bool can = opt.difficulty > 0 && !pl.dead && pl.mode == 0;
-    /* EntityAINearestAttackableTarget: seen within 16 (a spider only in the dark); EntityAITarget: kept
-     * while seen in the last 3 seconds, within 16 (zombies 35) */
-    bool dark = e->type != E_SPIDER || light_there(bx, by + 1, bz) < 8 || !daylight();
-    if (can && dist < 16 && (dark || e->panic > 60) && (ticks_run + (unsigned)(e - ents)) % 4 == 0 && sees(e))
-      e->panic = e->panic > 60 ? e->panic : 60;
-    chase = can && e->panic > 0 && dist < (e->type == E_ZOMBIE ? 35 : 16);
+    bool can = opt.difficulty && !pl.dead && pl.mode == 0;
+    if (can && dist < kd->sense && (ticks_run + (unsigned)(e - ents)) % 5 == 0 && sees(e)) e->panic = e->panic > 100 ? e->panic : 100;
+    aware = can && e->panic > 0;
     if (!can) e->panic = 0;
   }
-  if (chase) {
-    e->tx = (int16_t)ifl(pl.x), e->tz = (int16_t)ifl(pl.z);
-    go = true;
-    if (e->type == E_SKELETON && dist < 10 && sees(e)) go = false;   /* EntityAIArrowAttack: in range, it stands */
-    if (e->type == E_CREEPER) {
-      /* EntityAICreeperSwell: within 3, it stops and swells; past 7, or out of sight, it lets go */
-      if (dist < 3 && fabsf(dy) < 3) e->delay++, go = false;
-      else if (e->delay > 0 && dist > 7) e->delay--;
-      else if (e->delay > 0) e->delay++, go = dist > 2;
-      if (e->delay >= 30) {
-        e->type = E_NONE;
-        explode(e->x, e->y + 0.85f, e->z, opt.difficulty ? 3 : 0, rule(GR_MOB_GRIEFING));
-        return;
+  switch (e->state == 255 ? 0 : e->type) {
+    case E_MUDLING:
+      if (aware && !(open_sky && !wet)) {
+        go_to(e, pl.x, pl.z), want = WANT_GO, face = true;
+        if (dist < 3.5f && e->on_ground && !e->delay && fabsf(dy) < 1.5f) {   /* the leap */
+          e->vx = dx / dist * 0.45f, e->vz = dz / dist * 0.45f, e->vy = 0.38f;
+          e->delay = 40;
+        }
+      } else if (open_sky && !wet) {
+        if (ticks_run % 40 == 0) roam(e, true);
+        want = WANT_GO, speed *= 1.3f;
+      }
+      if (aware && dist < kd->w + 0.7f && fabsf(dy) < 1.2f && e->delay < 30) {
+        player_hurt(by_level(3), DMG_MOB);
+        shove(dx, dz, 0.35f);
+        e->delay = 40;
+      }
+      break;
+    case E_THORNLING:
+      if (aware && sees(e) && dist < 15) {
+        face = true;
+        if (dist < 4) go_to(e, e->x - dx, e->z - dz), want = WANT_FLEE;   /* too close: it backs off */
+        else if (!e->delay) spit(e), e->delay = 50;
+        else if (e->delay == 42) spit(e);                                 /* (the second thorn) */
+      } else if (aware) {
+        go_to(e, pl.x, pl.z), want = WANT_GO;
+      }
+      break;
+    case E_SKITTER:
+      if (aware || dist < 10) {
+        if (!pl.dead && pl.mode == 0 && watched(e)) {
+          e->timer++;                       /* stared at: it freezes, then runs */
+          if (e->timer > 30) go_to(e, e->x - dx * 2, e->z - dz * 2), want = WANT_FLEE, speed *= 1.5f;
+        } else if (opt.difficulty && !pl.dead && pl.mode == 0) {
+          e->timer = 0;
+          go_to(e, pl.x, pl.z), want = WANT_GO, speed *= 1.25f, face = true;
+          if (dist < kd->w + 0.6f && fabsf(dy) < 1.2f && !e->delay) {
+            player_hurt(by_level(2), DMG_MOB);
+            e->delay = 25;
+          }
+        }
+      }
+      break;
+    case E_FIZZLER:
+      if (e->delay > 0) {   /* lit: only water puts it out */
+        if (wet) e->delay = 0;
+        else if (++e->delay >= 40) {
+          e->type = E_NONE;
+          explode(e->x, e->y + 0.8f, e->z, opt.difficulty ? 3 : 0, rule(GR_MOB_GRIEFING));
+          return;
+        }
+        go_to(e, pl.x, pl.z), want = dist > 1.5f ? WANT_GO : WANT_STAY, face = true;
+        if (e->on_ground && ticks_run % 12 == 0) e->vy = 0.3f;   /* (it hops) */
+      } else if (aware) {
+        go_to(e, pl.x, pl.z), want = WANT_GO, face = true;
+        if (dist < 4 && fabsf(dy) < 2.5f && !wet) e->delay = 1;
+      }
+      break;
+    case 0: break;
+    default: {   /* the animals */
+      int food = liked(e->type);
+      if (e->panic > 0) {
+        if (e->panic % 25 == 24) go_to(e, e->x + rnd(13) - 6, e->z + rnd(13) - 6);
+        want = WANT_FLEE, speed *= 1.6f;
+      } else if (e->love > 0) {
+        e->love--;
+        for (int i = 0; i < N_ENT; i++) {   /* another fed one of its kind near: a young one */
+          Entity *o = &ents[i];
+          if (o == e || o->type != e->type || o->love <= 0 || o->state == 255) continue;
+          float mx = o->x - e->x, mz = o->z - e->z;
+          if (mx * mx + mz * mz > 100) continue;
+          go_to(e, o->x, o->z), want = WANT_GO;
+          if (mx * mx + mz * mz < 9) {
+            Entity *b = born(e->type, (e->x + o->x) / 2, e->y, (e->z + o->z) / 2);
+            if (b) b->growth = -18000;
+            e->love = o->love = 0, e->timer = o->timer = 4000;
+            player_add_xp(1 + rnd(3));
+          }
+          break;
+        }
+      } else if (food && held()->id == food && dist < 8 && !pl.dead) {
+        go_to(e, pl.x, pl.z), want = dist > 2 ? WANT_GO : WANT_STAY, face = true;
+      } else {
+        if (rnd(150) == 0) roam(e, false);
+        want = (e->tx != ifl(e->x) || e->tz != ifl(e->z)) ? WANT_GO : WANT_STAY;
+        face = want == WANT_STAY && dist < 5 && !pl.dead && rnd(3) == 0;
       }
-    }
-  } else if (e->state != 255) {
-    if (e->type == E_CREEPER && e->delay > 0) e->delay--;
-    int food = food_of(e->type);
-    if (e->panic > 0 && !hostile(e->type)) {
-      /* EntityAIPanic: somewhere within 5 blocks, fast, again and again */
-      if (e->panic % 20 == 19 || (ifl(e->x) == e->tx && ifl(e->z) == e->tz))
-        e->tx = (int16_t)(ifl(e->x) + rnd(11) - 5), e->tz = (int16_t)(ifl(e->z) + rnd(11) - 5);
-      go = true;
-      speed *= e->type == E_COW ? 2.0f : e->type == E_CHICKEN ? 1.4f : 1.25f;
-    } else if (e->love > 0 && e->gx != e->x) {
-      go = true;   /* (to its mate: set above) */
-      e->tx = (int16_t)ifl(e->gx), e->tz = (int16_t)ifl(e->gz);
-    } else if (food && held()->id == food && dist < 10 && !pl.dead) {
-      /* EntityAITempt: after the player holding its food, up to 2.5 blocks away, looking at them */
-      e->tx = (int16_t)ifl(pl.x), e->tz = (int16_t)ifl(pl.z);
-      go = dist > 2.5f, look = true;
-    } else {
-      /* EntityAIWander: one in 120 ticks somewhere within 10 blocks (RandomPositionGenerator: of ten
-       * tries, for an animal grass, for a monster the darkest); EntityAIWatchClosest: the player near */
-      if (rnd(120) == 0) wander_to(e);
-      int tx = e->tx - ifl(e->x), tz = e->tz - ifl(e->z);
-      go = tx * tx + tz * tz > 0;
-      look = !go && dist < 6 && !pl.dead;
     }
   }
-  if (go) {
-    /* the way there, now and then or at each turn (PathNavigate): steer to its next turn */
+  if (e->delay > 0 && e->type != E_FIZZLER) e->delay--;
+
+  /* steering: along its way, a turn of at most 25 degrees a tick, not off a cliff or into lava */
+  bool moving = want != WANT_STAY && e->state != 255;
+  if (moving) {
     float gx = e->gx - e->x, gz = e->gz - e->z;
-    if ((ticks_run + (unsigned)(e - ents)) % 10 == 0 || gx * gx + gz * gz < 0.09f) find_way(e, mi->h);
+    if ((ticks_run + (unsigned)(e - ents)) % 12 == 0 || gx * gx + gz * gz < 0.1f) find_way(e, kd->h);
     gx = e->gx - e->x, gz = e->gz - e->z;
-    if (gx * gx + gz * gz < 0.04f) {
-      go = false;
-      if (!chase) e->tx = (int16_t)ifl(e->x), e->tz = (int16_t)ifl(e->z);   /* (there) */
-    } else {
-      float want = atan2f(-gx, gz) * 57.29578f;
-      float turn = wrap(want - e->yaw);
-      if (turn > 30) turn = 30;
-      if (turn < -30) turn = -30;
-      e->yaw += turn;
-      /* do not walk off a cliff or into lava or fire (the way avoids them; a push may not) */
+    if (gx * gx + gz * gz < 0.05f) moving = false;
+    else {
+      e->yaw = turn_to(e->yaw, atan2f(-gx, gz) * 57.29578f, 25);
       float yr = e->yaw * 0.017453292f;
-      int ax = ifl(e->x - sinf(yr) * (mi->w / 2 + 0.4f)), az = ifl(e->z + cosf(yr) * (mi->w / 2 + 0.4f));
-      bool ground = false;
-      for (int k = 1; k <= 4 && !ground; k++) ground = (blk_flags[world_get(ax, by - k + 1, az)] & BF_SOLID) != 0;
+      int ax = ifl(e->x - sinf(yr) * (kd->w / 2 + 0.4f)), az = ifl(e->z + cosf(yr) * (kd->w / 2 + 0.4f));
+      bool floor_ahead = false;
+      for (int k = 0; k < 4 && !floor_ahead; k++) floor_ahead = (blk_flags[world_get(ax, by - k, az)] & BF_SOLID) != 0;
       int ahead = world_get(ax, by, az);
-      if ((!ground && !in_water) || is_lava(ahead) || ahead == B_FIRE) go = false, e->gx = e->x, e->gz = e->z;
+      if ((!floor_ahead && !swim) || is_lava(ahead) || ahead == B_FIRE) moving = false, e->gx = e->x, e->gz = e->z;
     }
   }
-  if (look && !chase) {
-    /* EntityLookHelper: turned towards the player, the head up or down to their eyes */
-    float turn = wrap(atan2f(-dx, dz) * 57.29578f - e->yaw);
-    e->yaw += turn > 10 ? 10 : turn < -10 ? -10 : turn;
-    e->pitch = -atan2f(dy + 1.62f - mi->h * 0.85f, dist) * 57.29578f;
-  }
-  if (chase) {
-    float want = atan2f(-dx, dz) * 57.29578f;
-    float turn = wrap(want - e->yaw);
-    if (fabsf(turn) < 60) e->yaw += turn * 0.5f;
-    e->pitch = -atan2f(dy + 1.0f - mi->h * 0.85f, dist) * 57.29578f;
-  } else if (!look)
-    e->pitch *= 0.8f;
-  /* moving: EntityLivingBase.moveEntityWithHeading, the AI's speed twice (as forward and as friction) */
-  float fwd = go && e->state != 255 ? speed : 0;
-  float yr = e->yaw * 0.017453292f;
-  if (in_water) {
-    if (rndf() < 0.8f) e->vy += 0.04f;   /* EntityAISwimming */
-    e->vx += -sinf(yr) * fwd * 0.02f / (fwd > 0 ? fwd : 1);
-    e->vz += cosf(yr) * fwd * 0.02f / (fwd > 0 ? fwd : 1);
-  } else {
-    float fr = e->on_ground ? 0.546f : 0.91f;
-    float f = e->on_ground ? fwd * (0.16277136f / (fr * fr * fr)) : 0.02f;
-    e->vx += -sinf(yr) * fwd * f;
-    e->vz += cosf(yr) * fwd * f;
-  }
+  if (face) {
+    e->yaw = turn_to(e->yaw, atan2f(-dx, dz) * 57.29578f, moving ? 25 : 12);
+    e->pitch = -atan2f(dy + 1.6f - kd->h * 0.8f, dist) * 57.29578f;
+  } else
+    e->pitch *= 0.85f;
+
+  /* moving: a push forward on the ground, little in the air; water holds it up */
+  float yr = e->yaw * 0.017453292f, push = moving ? speed * (e->on_ground ? 0.25f : 0.05f) : 0;
+  if (swim) push = moving ? speed * 0.1f : 0, e->vy += 0.03f;
+  e->vx += -sinf(yr) * push, e->vz += cosf(yr) * push;
   float p[3] = {e->x, e->y, e->z}, v[3] = {e->vx, e->vy, e->vz};
-  float w = mi->w;
-  bool ground = phys_move(p, v, w, mi->h);
-  bool blocked = (v[0] != e->vx) || (v[2] != e->vz);
+  bool ground = phys_move(p, v, kd->w, kd->h);
+  bool bumped = v[0] != e->vx || v[2] != e->vz;
   float moved = sqrtf((p[0] - e->x) * (p[0] - e->x) + (p[2] - e->z) * (p[2] - e->z));
-  e->x = p[0], e->y = p[1], e->z = p[2];
-  e->vx = v[0], e->vy = v[1], e->vz = v[2];
-  e->on_ground = ground;
-  if (blocked && go && e->type == E_SPIDER) e->vy = 0.2f;   /* climbing */
-  if (in_water) e->vx *= 0.8f, e->vy *= 0.8f, e->vz *= 0.8f, e->vy -= 0.02f;
+  e->x = p[0], e->y = p[1], e->z = p[2], e->vx = v[0], e->vy = v[1], e->vz = v[2], e->on_ground = ground;
+  if (bumped && moving && e->type == E_SKITTER) e->vy = 0.22f;   /* (up walls) */
+  else if (bumped && moving && ground) e->vy = 0.45f;            /* (over a step) */
+  if (swim) e->vx *= 0.75f, e->vy *= 0.75f, e->vz *= 0.75f, e->vy -= 0.02f;
   else {
-    e->vy -= 0.08f;
-    e->vy *= 0.98f;
-    float fr = ground ? 0.546f : 0.91f;
-    e->vx *= fr, e->vz *= fr;
-    if (e->type == E_CHICKEN && !ground && e->vy < 0) e->vy *= 0.6f;   /* flapping */
+    e->vy = (e->vy - 0.075f) * 0.98f;
+    float drag = ground ? 0.6f : 0.92f;
+    e->vx *= drag, e->vz *= drag;
+    if (e->type == E_STRIDER && !ground && e->vy < -0.08f) e->vy = -0.08f;   /* (it flutters down) */
   }
-  /* against a wall: a jump (EntityJumpHelper), set for the next move as Minecraft sets it before
-   * moving, so the first rise is the whole 0.42 and a block is climbed */
-  if (blocked && go && ground && e->type != E_SPIDER) e->vy = 0.42f;
-  /* the walk's swing (limbSwingAmount follows how fast it moves) */
   float target = moved * 4;
-  if (target > 1) target = 1;
-  e->limb_amt += (target - e->limb_amt) * 0.4f;
+  e->limb_amt += ((target > 1 ? 1 : target) - e->limb_amt) * 0.4f;
   e->limb += e->limb_amt;
-  if (e->state == 255 || e->type == E_CREEPER || e->type == E_SKELETON) {}
-  /* attacks */
-  if (chase && e->state != 255) {
-    float reach = mi->w * 2 * mi->w * 2 + 0.6f;
-    if ((e->type == E_ZOMBIE || e->type == E_SPIDER) && dist * dist < reach + 0.5f && fabsf(dy) < 1.5f && !e->delay) {
-      player_hurt(scaled(e->type == E_ZOMBIE ? 3 : 2), DMG_MOB);
-      push_player(dx, dz, 0.4f);
-      e->delay = 20;
-    }
-    /* a spider leaps (EntityAILeapAtTarget) */
-    if (e->type == E_SPIDER && ground && dist > 2 && dist < 4 && rnd(5) == 0) {
-      e->vx += dx / dist * 0.4f;
-      e->vz += dz / dist * 0.4f;
-      e->vy = 0.4f;
-    }
-    if (e->type == E_SKELETON && dist < 15 && !e->delay) {
-      shoot(e);
-      e->delay = (int16_t)(20 + dist / 15 * 40);
-    }
-  }
   if (e->y < -64) e->type = E_NONE;
 }
diff --git a/games/numblocks/src/mob.h b/games/numblocks/src/mob.h
index 95ca6b3..5ac1ce7 100644
--- a/games/numblocks/src/mob.h
+++ b/games/numblocks/src/mob.h
@@ -1,5 +1,4 @@
-/* The mobs' models: Minecraft 1.8's boxes (ModelBiped, ModelQuadruped and the
- * others), in model pixels: y points down, the feet at y = 24, the face
+/* The mobs' models: NumBlocks' own boxes (mob.c, mob_skin.h), in model pixels: y points down, the feet at y = 24, the face
  * towards -z. Animated per frame by mob_parts (mob.c). */
 #ifndef NB_MOB_H
 #define NB_MOB_H
@@ -15,8 +14,8 @@ typedef struct {
   float grow;            /* inflated by this much on every side (sheep's wool) */
 } Part;
 
-#define MAX_PARTS 12
+#define MAX_PARTS 14
 int mob_parts(const Entity *e, float pt, Part *out);   /* this frame's parts */
 float mob_width(int type), mob_height(int type);
-float mob_scale(const Entity *e, float pt);            /* a creeper swells before it blows */
+float mob_scale(const Entity *e, float pt);            /* the fizzler puffs up before it blows */
 #endif
diff --git a/games/numblocks/src/mob_skin.h b/games/numblocks/src/mob_skin.h
new file mode 100644
index 0000000..c89f6a9
--- /dev/null
+++ b/games/numblocks/src/mob_skin.h
@@ -0,0 +1,89 @@
+/* Generated by tools/conformite/numblocks_models.py: where each part of NumBlocks' creatures
+ * has its faces in its skin (UV_) and its size in model pixels (SZ_: width, height, depth). */
+#ifndef NB_MOB_SKIN_H
+#define NB_MOB_SKIN_H
+#define SZ_MUDLING_HEAD 6, 5, 5
+#define UV_MUDLING_HEAD 36, 0
+#define SZ_MUDLING_BODY 10, 8, 8
+#define UV_MUDLING_BODY 0, 0
+#define SZ_MUDLING_ARM 3, 6, 3
+#define UV_MUDLING_ARM 52, 10
+#define SZ_MUDLING_LEG 4, 5, 4
+#define UV_MUDLING_LEG 36, 10
+#define SZ_THORNLING_POD 7, 7, 7
+#define UV_THORNLING_POD 0, 0
+#define SZ_THORNLING_STALK 4, 14, 4
+#define UV_THORNLING_STALK 28, 10
+#define SZ_THORNLING_LEAF 6, 1, 3
+#define UV_THORNLING_LEAF 44, 10
+#define SZ_THORNLING_ROOTS 8, 2, 8
+#define UV_THORNLING_ROOTS 28, 0
+#define SZ_FIZZLER_BODY 8, 14, 8
+#define UV_FIZZLER_BODY 0, 0
+#define SZ_FIZZLER_FUSE 1, 4, 1
+#define UV_FIZZLER_FUSE 46, 0
+#define SZ_FIZZLER_LEG 3, 6, 4
+#define UV_FIZZLER_LEG 32, 0
+#define SZ_SKITTER_SHELL 10, 5, 12
+#define UV_SKITTER_SHELL 0, 0
+#define SZ_SKITTER_HEAD 6, 4, 4
+#define UV_SKITTER_HEAD 44, 0
+#define SZ_SKITTER_LEG 9, 1, 1
+#define UV_SKITTER_LEG 44, 14
+#define SZ_SKITTER_FEELER 1, 1, 5
+#define UV_SKITTER_FEELER 44, 8
+#define SZ_SNUFFLER_HEAD 6, 5, 5
+#define UV_SNUFFLER_HEAD 40, 0
+#define SZ_SNUFFLER_SNOUT 2, 2, 5
+#define UV_SNUFFLER_SNOUT 40, 10
+#define SZ_SNUFFLER_EAR 2, 2, 1
+#define UV_SNUFFLER_EAR 40, 17
+#define SZ_SNUFFLER_BODY 8, 7, 12
+#define UV_SNUFFLER_BODY 0, 0
+#define SZ_SNUFFLER_LEG 2, 6, 2
+#define UV_SNUFFLER_LEG 54, 10
+#define SZ_HUMPOX_HEAD 6, 6, 5
+#define UV_HUMPOX_HEAD 0, 20
+#define SZ_HUMPOX_HORN 1, 1, 4
+#define UV_HUMPOX_HORN 44, 10
+#define SZ_HUMPOX_HUMP 6, 4, 6
+#define UV_HUMPOX_HUMP 22, 20
+#define SZ_HUMPOX_BODY 9, 7, 13
+#define UV_HUMPOX_BODY 0, 0
+#define SZ_HUMPOX_LEG 3, 7, 3
+#define UV_HUMPOX_LEG 44, 0
+#define SZ_WOOLLY_HEAD 4, 4, 5
+#define UV_WOOLLY_HEAD 32, 0
+#define SZ_WOOLLY_NECK 2, 8, 2
+#define UV_WOOLLY_NECK 32, 9
+#define SZ_WOOLLY_EAR 1, 3, 1
+#define UV_WOOLLY_EAR 58, 0
+#define SZ_WOOLLY_BODY 7, 6, 9
+#define UV_WOOLLY_BODY 0, 0
+#define SZ_WOOLLY_LEG 2, 10, 2
+#define UV_WOOLLY_LEG 50, 0
+#define SZ_WOOLLY_FUR_BALL 11, 9, 12
+#define UV_WOOLLY_FUR_BALL 0, 0
+#define SZ_WOOLLY_FUR_PUFF 7, 3, 8
+#define UV_WOOLLY_FUR_PUFF 0, 21
+#define SZ_WOOLLY_FUR_CAP 4, 2, 4
+#define UV_WOOLLY_FUR_CAP 46, 8
+#define SZ_WOOLLY_FUR_COLLAR 4, 4, 4
+#define UV_WOOLLY_FUR_COLLAR 46, 0
+#define SZ_STRIDER_HEAD 3, 3, 4
+#define UV_STRIDER_HEAD 26, 0
+#define SZ_STRIDER_BEAK 1, 1, 3
+#define UV_STRIDER_BEAK 42, 8
+#define SZ_STRIDER_CREST 1, 3, 3
+#define UV_STRIDER_CREST 26, 7
+#define SZ_STRIDER_NECK 2, 7, 2
+#define UV_STRIDER_NECK 52, 0
+#define SZ_STRIDER_BODY 5, 5, 8
+#define UV_STRIDER_BODY 0, 0
+#define SZ_STRIDER_PLUME 3, 5, 1
+#define UV_STRIDER_PLUME 34, 8
+#define SZ_STRIDER_WING 1, 3, 5
+#define UV_STRIDER_WING 40, 0
+#define SZ_STRIDER_LEG 1, 10, 1
+#define UV_STRIDER_LEG 60, 0
+#endif
diff --git a/games/numblocks/src/names.c b/games/numblocks/src/names.c
index 3d0a10c..caef3a1 100644
--- a/games/numblocks/src/names.c
+++ b/games/numblocks/src/names.c
@@ -1,10 +1,6 @@
-/* Generated by tools/names.py: Minecraft 1.8.8's names for blocks and items (see nb.h). */
+/* Generated by tools/names.py: NumBlocks' names for blocks and items in commands (see nb.h). */
 #include "nb.h"
 
-const char *const mc_block_name[198] = {"air","stone","grass","dirt","cobblestone","planks","sapling","bedrock","flowing_water","water","flowing_lava","lava","sand","gravel","gold_ore","iron_ore","coal_ore","log","leaves","sponge","glass","lapis_ore","lapis_block","","sandstone","","bed","","","","web","tallgrass","deadbush","","","wool","","yellow_flower","red_flower","brown_mushroom","red_mushroom","gold_block","iron_block","double_stone_slab","stone_slab","brick_block","tnt","bookshelf","mossy_cobblestone","obsidian","torch","fire","mob_spawner","oak_stairs","chest","","diamond_ore","diamond_block","crafting_table","wheat","farmland","furnace","lit_furnace","","wooden_door","ladder","rail","stone_stairs","","","","","","redstone_ore","","","","","snow_layer","ice","snow","cactus","clay","reeds","","fence","pumpkin","","","glowstone","","lit_pumpkin","","","","","","monster_egg","stonebrick","brown_mushroom_block","red_mushroom_block","","glass_pane","melon_block","","","vine","","","","mycelium","waterlily","","","","","","","","","","","","","","","wooden_slab","","","emerald_ore","","","","emerald_block","","","","","","cobblestone_wall","","carrots","potatoes","","","","","","","","","","","","","","","","","stained_hardened_clay","","leaves2","log2","","","","","","","","hay_block","","hardened_clay","coal_block","packed_ice","double_plant","","","","red_sandstone","","","","","","","","","","","","","","","","","",""};
-const char *const mc_item_name[176] = {"iron_shovel","iron_pickaxe","iron_axe","flint_and_steel","apple","bow","arrow","coal","diamond","iron_ingot","gold_ingot","iron_sword","wooden_sword","wooden_shovel","wooden_pickaxe","wooden_axe","stone_sword","stone_shovel","stone_pickaxe","stone_axe","diamond_sword","diamond_shovel","diamond_pickaxe","diamond_axe","stick","bowl","mushroom_stew","golden_sword","golden_shovel","golden_pickaxe","golden_axe","string","feather","gunpowder","wooden_hoe","stone_hoe","iron_hoe","diamond_hoe","golden_hoe","wheat_seeds","wheat","bread","leather_helmet","leather_chestplate","leather_leggings","leather_boots","chainmail_helmet","chainmail_chestplate","chainmail_leggings","chainmail_boots","iron_helmet","iron_chestplate","iron_leggings","iron_boots","diamond_helmet","diamond_chestplate","diamond_leggings","diamond_boots","golden_helmet","golden_chestplate","golden_leggings","golden_boots","flint","porkchop","cooked_porkchop","","golden_apple","","wooden_door","bucket","water_bucket","lava_bucket","","","","redstone","snowball","","leather","milk_bucket","brick","clay_ball","reeds","paper","book","slime_ball","","","egg","compass","fishing_rod","clock","glowstone_dust","fish","cooked_fish","dye","bone","sugar","","bed","","cookie","","shears","melon","","","beef","cooked_beef","chicken","cooked_chicken","rotten_flesh","","","","gold_nugget","","","","spider_eye","","","","","","","","","","","","","emerald","","","carrot","potato","baked_potato","poisonous_potato","","","","","","pumpkin_pie","","","","","","","","","","","","","","","","","","","","","","","mutton","cooked_mutton","","","","","","",""};
-/* the blocks that are items too (their names are items' names) */
-const uint8_t mc_block_item[25] = {254,240,127,193,233,255,119,55,14,194,103,10,196,196,0,64,34,8,0,128,6,244,8,0,0};
-const uint16_t give_key[293] = {16,17,18,19,20,21,22,32,48,49,50,64,80,81,82,83,84,85,96,97,98,99,100,101,112,192,193,208,224,240,256,272,273,274,275,288,289,290,291,304,320,336,352,384,385,386,480,496,497,498,512,560,561,562,563,564,565,566,567,568,569,570,571,572,573,574,575,592,608,609,610,611,612,613,614,615,616,624,640,656,672,688,704,705,706,707,708,709,720,736,752,768,784,800,832,848,864,896,912,928,960,976,1040,1056,1072,1168,1248,1264,1280,1296,1312,1360,1376,1424,1456,1568,1569,1570,1571,1632,1648,1696,1760,1776,2016,2017,2018,2019,2020,2021,2064,2128,2224,2544,2545,2546,2547,2548,2549,2550,2551,2552,2553,2554,2555,2556,2557,2558,2559,2576,2577,2592,2593,2720,2752,2768,2784,2800,2801,2802,2803,2804,2805,2864,4096,4112,4128,4144,4160,4176,4192,4208,4209,4224,4240,4256,4272,4288,4304,4320,4336,4352,4368,4384,4400,4416,4432,4448,4464,4480,4496,4512,4528,4544,4560,4576,4592,4608,4624,4640,4656,4672,4688,4704,4720,4736,4752,4768,4784,4800,4816,4832,4848,4864,4880,4896,4912,4928,4944,4960,4976,4992,5008,5024,5040,5056,5072,5088,5104,5120,5152,5184,5200,5216,5232,5296,5312,5344,5360,5376,5392,5408,5424,5440,5456,5504,5520,5536,5552,5568,5584,5585,5586,5587,5600,5601,5616,5617,5618,5619,5620,5621,5622,5623,5624,5625,5626,5627,5628,5629,5630,5631,5632,5648,5680,5712,5744,5760,5808,5824,5840,5856,5872,5936,6000,6208,6256,6272,6288,6304,6400,6768,6784};
-const uint16_t give_id[293] = {1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,39,43,47,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,114,115,116,117,118,119,128,130,134,135,136,137,138,139,140,141,142,144,145,209,146,148,149,150,151,158,159,160,161,162,214,215,216,217,218,219,163,164,165,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,191,192,183,187,193,166,194,195,196,198,200,202,204,206,208,267,268,269,282,358,283,284,306,307,308,309,310,266,256,257,258,259,261,262,263,264,271,272,273,274,305,328,371,276,277,278,279,316,315,318,260,265,270,275,280,321,320,360,285,286,287,288,289,290,291,292,293,294,295,296,301,302,303,304,297,298,299,300,314,361,362,359,337,333,334,335,313,329,319,336,327,326,322,324,325,331,330,339,340,341,332,379,380,381,382,383,384,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,317,323,338,372,281,373,363,364,365,366,369,311,370,312,374,375,376,377,378,367,368};
-const int n_give = 293;
+const char *const cmd_item_name[293] = {"stone","granite","polished_granite","diorite","polished_diorite","andesite","polished_andesite","grassy_dirt","dirt","coarse_dirt","podzol","cobblestone","oak_wood_planks","spruce_wood_planks","birch_wood_planks","jungle_wood_planks","acacia_wood_planks","dark_oak_wood_planks","oak_sapling","spruce_sapling","birch_sapling","jungle_sapling","acacia_sapling","dark_oak_sapling","bedrock","sand","red_sand","gravel","gold_ore","iron_ore","coal_ore","oak_wood","spruce_wood","birch_wood","jungle_wood","oak_leaves","spruce_leaves","birch_leaves","jungle_leaves","sponge","glass","lapis_lazuli_ore","lapis_lazuli_block","sandstone","chiseled_sandstone","smooth_sandstone","cobweb","shrub","grass_tuft","fern","dead_bush","wool","orange_wool","magenta_wool","light_blue_wool","yellow_wool","lime_wool","pink_wool","gray_wool","light_gray_wool","cyan_wool","purple_wool","blue_wool","brown_wool","green_wool","red_wool","black_wool","dandelion","poppy","blue_orchid","allium","azure_bluet","red_tulip","orange_tulip","white_tulip","pink_tulip","oxeye_daisy","mushroom","red_mushroom","block_of_gold","block_of_iron","stone_slab","stone_slab_2","sandstone_slab","wooden_slab","cobblestone_slab","bricks_slab","stone_bricks_slab","bricks","tnt","bookshelf","mossy_cobblestone","obsidian","torch","monster_cage","oak_wood_stairs","chest","diamond_ore","block_of_diamond","crafting_table","farmland","furnace","ladder","rail","cobblestone_stairs","ruby_ore","snow","ice","snow_2","cactus","clay","oak_fence","pumpkin","jack_o_lantern","stone_bricks","mossy_stone_bricks","cracked_stone_bricks","chiseled_stone_bricks","glass_pane","melon","vines","mycelium","lily_pad","emerald_ore","block_of_emerald","cobblestone_wall","baked_clay","white_baked_clay","orange_baked_clay","magenta_baked_clay","light_blue_baked_clay","yellow_baked_clay","lime_baked_clay","pink_baked_clay","gray_baked_clay","light_gray_baked_clay","cyan_baked_clay","purple_baked_clay","blue_baked_clay","brown_baked_clay","green_baked_clay","red_baked_clay","black_baked_clay","acacia_wood","dark_oak_wood","acacia_leaves","dark_oak_leaves","hay_bale","block_of_coal","packed_ice","sunflower","lilac","tall_grass","large_fern","rose_bush","peony","red_sandstone","glow_crystal","oak_wood_slab","spruce_wood_slab","birch_wood_slab","jungle_wood_slab","acacia_wood_slab","dark_oak_wood_slab","wooden_sword","wooden_shovel","wooden_pickaxe","wooden_axe","wooden_hoe","stone_sword","stone_shovel","stone_pickaxe","stone_axe","stone_hoe","iron_sword","iron_shovel","iron_pickaxe","iron_axe","iron_hoe","diamond_sword","diamond_shovel","diamond_pickaxe","diamond_axe","diamond_hoe","golden_sword","golden_shovel","golden_pickaxe","golden_axe","golden_hoe","shears","flint_and_steel","bow","arrow","leather_cap","leather_tunic","leather_pants","leather_boots","chain_helmet","chain_chestplate","chain_leggings","chain_boots","iron_helmet","iron_chestplate","iron_leggings","iron_boots","golden_helmet","golden_chestplate","golden_leggings","golden_boots","diamond_helmet","diamond_chestplate","diamond_leggings","diamond_boots","stick","coal","charcoal","diamond","iron_ingot","gold_ingot","gold_nugget","emerald","ruby_dust","flint","feather","string","bone","gunpowder","leather","wheat","seeds","sugar_canes","sugar","paper","book","clay_ball","brick","bowl","snowball","egg","slime_ball","glow_dust","bucket","water_bucket","lava_bucket","milk","oak_door","bed","compass","fishing_rod","clock","black_dye","red_dye","green_dye","cocoa_beans","lapis_lazuli","purple_dye","cyan_dye","light_gray_dye","gray_dye","pink_dye","lime_dye","yellow_dye","light_blue_dye","magenta_dye","orange_dye","bone_meal","apple","golden_apple","bread","raw_ham","roast_ham","raw_ox_meat","ox_steak","raw_drumstick","roast_drumstick","raw_shank","roast_shank","mud_cake","beetle_eye","mushroom_stew","cookie","melon_slice","carrot","potato","baked_potato","poisonous_potato","pumpkin_pie","raw_fish","raw_salmon","violet_fish","pufferfish","cooked_fish","cooked_salmon"};
+const uint16_t cmd_item_id[293] = {1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,35,39,43,47,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,114,115,116,117,118,119,128,130,134,135,136,137,138,139,140,141,142,144,145,146,148,149,150,151,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,187,191,192,193,194,195,196,198,200,202,204,206,208,209,214,215,216,217,218,219,256,257,258,259,260,261,262,263,264,265,266,267,268,269,270,271,272,273,274,275,276,277,278,279,280,281,282,283,284,285,286,287,288,289,290,291,292,293,294,295,296,297,298,299,300,301,302,303,304,305,306,307,308,309,310,311,312,313,314,315,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331,332,333,334,335,336,337,338,339,340,341,342,343,344,345,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,382,383,384};
+const int n_cmd_items = 293;
diff --git a/games/numblocks/src/nb.h b/games/numblocks/src/nb.h
index 18efc47..a9c7bba 100644
--- a/games/numblocks/src/nb.h
+++ b/games/numblocks/src/nb.h
@@ -1,11 +1,11 @@
-/* NumBlocks: Minecraft 1.8.8 for the NumWorks calculator.
+/* NumBlocks: a block-building game for the NumWorks calculator (NumPlay; made its own by Calcade, 19 October 2026).
  *
  * The world around the player lives in a block cache (vc) of VCX x VCY x VCZ
  * blocks that follows the player: whatever leaves it is generated again from
  * the seed when it comes back, with the player's changes (the edit log, edits.c)
  * applied on top. Light is kept per block too: sky light and block light.
  *
- * Minecraft's axes: +X east, +Y up, +Z south. Yaw 0 faces south (+Z) and
+ * The axes: +X east, +Y up, +Z south. Yaw 0 faces south (+Z) and
  * grows clockwise seen from above (90 faces west); pitch > 0 looks down. */
 #ifndef NB_H
 #define NB_H
@@ -70,8 +70,9 @@ void gen_slab(int cx, int cz, int y0, int h, uint8_t *out);   /* out[(y - y0) *
 int gen_prepare(int cx, int cz);   /* a slice of the work for gen_slab(cx, cz) ahead; 0: nothing left */
 int gen_biome(int x, int z);
 int gen_top(int x, int z);
+int gen_sky_top(int x, int z);   /* the highest block that stops light */
 void gen_spawn(int *x, int *y, int *z);
-float gen_temp_noise(int x, int z);   /* BiomeGenBase.temperatureNoise at (x / 8, z / 8) */
+float gen_temp_noise(int x, int z);   /* a slow noise the temperature drops with (gen.c) */
 
 /* ---------------------------------------------------------------- the world (world.c) */
 #define VCX 40
@@ -148,7 +149,7 @@ typedef struct {
   int food, food_timer, air, invuln, hurt_time, fire, using_ticks;
   int xp_level, xp_total;
   int sleep_timer;        /* ticks asleep in a bed (0: awake) */
-  float walked, bob, prev_walked, prev_bob;   /* view bobbing (EntityPlayer.cameraYaw) */
+  float walked, bob, prev_walked, prev_bob;   /* view bobbing */
   float xp;               /* 0..1 of the way to the next level */
   int spawn_x, spawn_y, spawn_z;
   uint8_t mode;           /* 0 survival, 1 creative */
@@ -171,14 +172,25 @@ void player_swing(void);   /* the arm swings (hand.c) */
 void hand_tick(void);
 void hand_frame(void);     /* the hand and what it holds, once a frame, */
 void hand_strip(uint16_t *buf, int y0, int rows);   /* then drawn on each strip */
-void gui_message(const char *s);   /* a line at the bottom left, as Minecraft's chat shows */
+void gui_message(const char *s);   /* a line at the bottom left, in the chat */
+
+/* a day: DAY_TICKS ticks (16 minutes 40 seconds), time 0 the dawn */
+#define DAY_TICKS 20000
+/* the player: 1.75 high, the eyes at 1.58 (1.48 crouching) */
+#define PLAYER_H 1.75f
+#define EYE 1.58f
+#define EYE_LOW 1.48f
+#define AIR_TICKS 240   /* breath under water, in ticks */
 
 /* ---------------------------------------------------------------- entities (entity.c) */
-enum { E_NONE, E_ITEM, E_ZOMBIE, E_SKELETON, E_CREEPER, E_SPIDER, E_PIG, E_COW, E_SHEEP, E_CHICKEN, E_ARROW, E_TNT,
+/* NumBlocks' creatures: the mudling, the thornling, the fizzler, the skitter (hostile), then the animals */
+enum { E_NONE, E_ITEM, E_MUDLING, E_THORNLING, E_FIZZLER, E_SKITTER, E_SNUFFLER, E_HUMPOX, E_WOOLLY, E_STRIDER, E_ARROW, E_TNT,
        E_BOBBER };
+#define E_FIRST_MOB E_MUDLING
+#define E_LAST_MOB E_STRIDER
 typedef struct {
   uint8_t type, on_ground, hurt, state;   /* hurt: ticks of red; state 255: dying (timer counts) */
-  int16_t age, health, timer, delay;   /* delay: an item's pickup delay, a mob's attack wait, a creeper's fuse */
+  int16_t age, health, timer, delay;   /* delay: an item's pickup delay, a mob's attack wait, a fizzler's fuse */
   float x, y, z, vx, vy, vz, yaw, pitch;
   float px, py, pz;       /* last tick's position */
   float limb, limb_amt;   /* the walk's swing */
@@ -207,7 +219,7 @@ typedef struct { float x, y, z, vx, vy, vz; uint16_t c; uint8_t age, life; } Par
 extern Particle parts[N_PART];
 void particles_break(int x, int y, int z, int b);
 void particle_add(float x, float y, float z, float vx, float vy, float vz, uint16_t c, int life);
-/* fishing (EntityFishHook) */
+/* fishing */
 Entity *bobber(void);       /* the player's hook, if out */
 void fish_cast(void);
 int fish_reel(Entity *e);   /* how much it wears the rod */
@@ -232,7 +244,7 @@ void fire_set(int x, int y, int z, int age);   /* fire there (age 0 to 15: older
 void bolt_start(float x, float y, float z);   /* lightning strikes there */
 void world_tick(void);                      /* 20 a second: weather, liquids, random block ticks */
 
-/* the weather (World.updateWeather), saved with the world */
+/* the weather, saved with the world */
 typedef struct {
   int32_t rain_time, thunder_time;   /* ticks until it starts or stops */
   uint8_t raining, thundering, pad[2];
@@ -244,11 +256,11 @@ float celestial(uint32_t t);          /* the sun's angle: 0 noon, 0.5 midnight *
 int sky_sub(void);                    /* how much darker the sky light is: 0 by day, 11 at night */
 float temp_at(int x, int y, int z);   /* the biome's temperature there */
 bool rain_at(int x, int y, int z);    /* rain (not snow) falls on it */
-/* a bolt of lightning (EntityLightningBolt): it shows (and the sky flashes)
+/* a bolt of lightning: it shows (and the sky flashes)
  * while state >= 0, and comes back `living` more times */
 typedef struct { float x, y, z; int8_t state, living, on; uint32_t seed; } Bolt;
 extern Bolt bolt;
-extern int last_bolt;                 /* ticks of the sky's flash left (World.lastLightningBolt) */
+extern int last_bolt;                 /* ticks of the sky's flash left */
 void sapling_grow(int x, int y, int z);      /* a step towards a tree */
 void neighbours_changed(int x, int y, int z);
 void break_block_at(int x, int y, int z, bool drops);
@@ -285,7 +297,7 @@ typedef struct {
   uint32_t plays;       /* worlds opened so far: each world keeps the count when it was last played */
   uint8_t keys[24];     /* the key of each action (A_*): the calculator's number for it, 255 none */
 } Options;
-/* the actions keys are set to (KeyBinding), in the order of Minecraft's list: by category, then name */
+/* the actions keys are set to, by category, then name */
 enum { A_ATTACK, A_PICK, A_USE, A_DROP, A_SLOT1, A_INVENTORY = A_SLOT1 + 9, A_PAUSE, A_JUMP, A_SNEAK, A_SPRINT,
        A_LEFT, A_RIGHT, A_BACK, A_FORWARD, A_CHAT, A_COMMAND, N_ACTIONS };
 uint32_t keys_of(uint64_t raw);   /* the K_ bits of the keys held (the calculator's keys, as bound) */
@@ -320,7 +332,7 @@ void save_options(void);
 void copy_restore(void);   /* the saves from numblocks_saves.py, when none are left (installed again) */
 void copy_write(void);     /* and the copy, up to date (not inside NumPlay, which keeps its own) */
 /* the world's settings, saved with it: cheats (Allow Cheats; or opened to LAN with them, until it
- * is left) and the game rules (GameRules) */
+ * is left) and the game rules */
 extern bool world_cheats, lan_open, lan_cheats;
 #define cheats_on() (world_cheats || lan_cheats)
 extern uint8_t game_rules;
@@ -335,10 +347,10 @@ void chat_add(const char *s, int color);   /* a line in the chat (gui.c) */
 void command_run(const char *line);        /* a line sent from the chat: a command ("/...") or said */
 /* tab completion: the k-th way to finish the last word of line (the word starts at *at); false: no more */
 bool command_complete(const char *line, int k, int *at, char *out, int max);
-extern const char *const mc_block_name[198], *const mc_item_name[176];   /* (names.c) */
-extern const uint8_t mc_block_item[25];
-extern const uint16_t give_key[], give_id[];   /* Minecraft's id << 4 | data, and NumBlocks' id */
-extern const int n_give;
+/* the names commands know blocks and items by, and their ids (block states, 256 + items) (names.c) */
+extern const char *const cmd_item_name[];
+extern const uint16_t cmd_item_id[];
+extern const int n_cmd_items;
 
 /* ---------------------------------------------------------------- drawing (render.c, hud.c) */
 #define RW 160
diff --git a/games/numblocks/src/phys.c b/games/numblocks/src/phys.c
index 8f22e06..995ee2a 100644
--- a/games/numblocks/src/phys.c
+++ b/games/numblocks/src/phys.c
@@ -1,5 +1,5 @@
-/* Collisions with blocks, for the player and every entity (Entity.moveEntity:
- * the box is moved along y, then x, then z, as far as block boxes let it). */
+/* Collisions with blocks, for the player and every entity: a box is slid along one axis at a time
+ * (sideways first, then up or down), as far as the block boxes let it. */
 #include "nb.h"
 
 static inline int ifloor(float v) { int i = (int)v; return v < (float)i ? i - 1 : i; }
@@ -55,8 +55,8 @@ int block_boxes(int b, int x, int y, int z, int8_t (*o)[6]) {
   return n;
 }
 
-/* the selection box of block b (Block.getSelectedBoundingBox, from its corner): its shape's bounds;
- * plants as BlockBush and its kin */
+/* the outline drawn round block b when looked at (from its corner): the bounds of its boxes; for
+ * plants a box of their own size */
 void select_box(int b, int x, int y, int z, float *o) {
   int8_t bx[5][6];
   int n = block_boxes(b, x, y, z, bx);
@@ -69,13 +69,13 @@ void select_box(int b, int x, int y, int z, float *o) {
         if (bx[k][i + 3] > hi[i]) hi[i] = bx[k][i + 3];
       }
   } else if (blk_model[b] == M_CROSS) {
-    float r = 6.4f, h = 12.8f;   /* tall grass, ferns, saplings, dead bushes: 0.4 around, 0.8 high */
-    if (b >= B_DANDELION && b <= B_OXEYE_DAISY) r = 3.2f, h = 9.6f;                       /* flowers */
-    else if (b == B_BROWN_MUSHROOM || b == B_RED_MUSHROOM) r = 3.2f, h = 6.4f;           /* mushrooms */
-    else if (b == B_SUGAR_CANE) r = 6, h = 16;
+    float r = 6, h = 13;   /* tall grass, ferns, saplings, dead bushes */
+    if (b >= B_DANDELION && b <= B_OXEYE_DAISY) r = 4, h = 10;                       /* flowers */
+    else if (b == B_BROWN_MUSHROOM || b == B_RED_MUSHROOM) r = 4, h = 7;            /* mushrooms */
+    else if (b == B_SUGAR_CANE) r = 7, h = 16;
     else if ((b >= B_WHEAT_0 && b <= B_WHEAT_7) || (b >= B_CARROTS_0 && b <= B_CARROTS_3) ||
              (b >= B_POTATOES_0 && b <= B_POTATOES_3))
-      r = 8, h = 4;   /* crops */
+      r = 8, h = 5;   /* crops */
     lo[0] = lo[2] = 8 - r, hi[0] = hi[2] = 8 + r, hi[1] = h;
   }
   for (int i = 0; i < 3; i++) o[i] = lo[i] / 16, o[i + 3] = hi[i] / 16;
@@ -95,8 +95,8 @@ static int block_cboxes(int x, int y, int z, float *b) {
     float *q = b + k * 6;
     q[0] = x + bx[k][0] / 16.0f, q[1] = y + bx[k][1] / 16.0f, q[2] = z + bx[k][2] / 16.0f;
     q[3] = x + bx[k][3] / 16.0f, q[4] = y + bx[k][4] / 16.0f, q[5] = z + bx[k][5] / 16.0f;
-    /* fences and walls are 1.5 blocks high to jump over (BlockFence) */
-    if (blk_model[s] == M_FENCE) q[4] = y + 1.5f;
+    /* fences and walls stand 1.4 blocks high, too high to jump (0.44 a jump reaches about 1.2) */
+    if (blk_model[s] == M_FENCE) q[4] = y + 1.4f;
   }
   return n;
 }
@@ -143,7 +143,7 @@ float phys_clip(const float *a, int axis, float d) {
   return d;
 }
 
-/* nothing solid overlaps the box a (World.getCollidingBoundingBoxes is empty) */
+/* nothing solid overlaps the box a */
 bool phys_free(const float *a) {
   for (int y = ifloor(a[1]) - 1; y <= ifloor(a[4]); y++)
     for (int z = ifloor(a[2]); z <= ifloor(a[5]); z++)
@@ -158,20 +158,19 @@ bool phys_free(const float *a) {
   return true;
 }
 
-/* moves a box (w wide, h high, feet at p) by v; stops on blocks, zeroes the
- * velocity along blocked axes; true if it landed on something */
+/* moves a box (w wide, h high, feet at p) by v: across (x then z), then up or down; a blocked axis
+ * loses its speed; true if it came down onto something */
 bool phys_move(float *p, float *v, float w, float h) {
-  float a[6] = {p[0] - w / 2, p[1], p[2] - w / 2, p[0] + w / 2, p[1] + h, p[2] + w / 2};
-  float dy = phys_clip(a, 1, v[1]);
-  a[1] += dy, a[4] += dy;
-  float dx = phys_clip(a, 0, v[0]);
-  a[0] += dx, a[3] += dx;
-  float dz = phys_clip(a, 2, v[2]);
-  a[2] += dz, a[5] += dz;
-  bool ground = dy != v[1] && v[1] < 0;
-  if (dy != v[1]) v[1] = 0;
-  if (dx != v[0]) v[0] = 0;
-  if (dz != v[2]) v[2] = 0;
+  float a[6] = {p[0] - w / 2, p[1], p[2] - w / 2, p[0] + w / 2, p[1] + h, p[2] + w / 2}, got[3];
+  static const int order[3] = {0, 2, 1};
+  for (int i = 0; i < 3; i++) {
+    int k = order[i];
+    got[k] = phys_clip(a, k, v[k]);
+    a[k] += got[k], a[k + 3] += got[k];
+  }
+  bool ground = v[1] < 0 && got[1] != v[1];
+  for (int k = 0; k < 3; k++)
+    if (got[k] != v[k]) v[k] = 0;
   p[0] = (a[0] + a[3]) / 2, p[1] = a[1], p[2] = (a[2] + a[5]) / 2;
   return ground;
 }
diff --git a/games/numblocks/src/player.c b/games/numblocks/src/player.c
index 7f612d0..dbf8078 100644
--- a/games/numblocks/src/player.c
+++ b/games/numblocks/src/player.c
@@ -1,10 +1,9 @@
-/* The player: Minecraft 1.8.8's movement (EntityLiving.moveEntityWithHeading,
- * Entity.moveEntity), the block looked at, mining and placing.
+/* The player (NumBlocks' rules, Calcade, 19 October 2026): moving, health and food, the block looked
+ * at, mining, placing and using things.
  *
- * Everything runs in game ticks, 20 a second, with the game's numbers:
- * gravity 0.08 and drag 0.98 a tick, a jump of 0.42, ground friction
- * 0.6 x 0.91, walking at 0.1 (x 1.3 sprinting, x 0.3 sneaking), 0.02 in the
- * air, a 0.6 x 1.8 box that steps up 0.6, eyes at 1.62. */
+ * In ticks, 20 a second: a push of 0.092 a tick on the ground (x 1.35 running, x 0.3 crouching),
+ * 0.022 in the air; the ground keeps 0.58 of the speed each tick, the air 0.92; gravity 0.078 with
+ * 0.981 kept; a jump of 0.44; steps of up to 0.55 are walked up; a box 0.6 wide, PLAYER_H high. */
 #include <math.h>
 #include "nb.h"
 #pragma GCC optimize("Os")   /* (not where the time goes: small) */
@@ -12,7 +11,8 @@
 Player pl;
 
 #define W 0.3f   /* half width */
-#define H 1.8f
+#define H PLAYER_H
+#define STEP_UP 0.55f
 
 static inline int ifloor(float v) { int i = (int)v; return v < (float)i ? i - 1 : i; }
 
@@ -20,84 +20,67 @@ static void box_of(float x, float y, float z, float *a) {
   a[0] = x - W, a[1] = y, a[2] = z - W, a[3] = x + W, a[4] = y + H, a[5] = z + W;
 }
 
-/* Entity.moveEntity: y first, then x and z; step up 0.6 if that goes further */
-static bool hit_wall;   /* the last move ran into something sideways (isCollidedHorizontally) */
+/* is there ground under the box (shifted by dx, dz) within a quarter block? */
+static bool ground_under(float dx, float dz) {
+  float t[6];
+  box_of(pl.x + dx, pl.y - 0.25f, pl.z + dz, t);
+  t[4] = pl.y;
+  return !phys_free(t);
+}
+
+/* sideways first (x, then z), then up or down; a ledge in the way is stepped onto when that gets
+ * further; crouching on the ground, the feet do not leave it */
+static bool hit_wall;   /* the last move ran into something sideways */
 static void move(float dx, float dy, float dz) {
-  float a[6];
-  box_of(pl.x, pl.y, pl.z, a);
-  float ody = dy, odx = dx, odz = dz;
-  /* sneaking on the ground: no walking off edges (Entity.moveEntity: the box moved down 1 must still
-   * touch a block, the one under the feet included, so sneaking along a one-block bridge works) */
   if (pl.on_ground && pl.sneaking) {
-    float t[6];
-#define STEP(v) (fabsf(v) < 0.05f ? 0 : (v) - ((v) > 0 ? 0.05f : -0.05f))
-    for (; dx != 0; dx = STEP(dx)) {
-      memcpy(t, a, sizeof t);
-      t[0] += dx, t[3] += dx, t[1] -= 1, t[4] -= 1;
-      if (!phys_free(t)) break;   /* something under */
-    }
-    for (; dz != 0; dz = STEP(dz)) {
-      memcpy(t, a, sizeof t);
-      t[2] += dz, t[5] += dz, t[1] -= 1, t[4] -= 1;
-      if (!phys_free(t)) break;
-    }
-    for (; dx != 0 && dz != 0; dx = STEP(dx), dz = STEP(dz)) {   /* (both at once: a corner) */
-      memcpy(t, a, sizeof t);
-      t[0] += dx, t[3] += dx, t[2] += dz, t[5] += dz, t[1] -= 1, t[4] -= 1;
-      if (!phys_free(t)) break;
-    }
-#undef STEP
-    odx = dx, odz = dz;
+    if (!ground_under(dx, 0)) dx = 0;
+    if (!ground_under(dx, dz)) dz = 0;
   }
-  float mdy = phys_clip(a, 1, dy);
-  a[1] += mdy, a[4] += mdy;
-  float mdx = phys_clip(a, 0, dx);
-  a[0] += mdx, a[3] += mdx;
-  float mdz = phys_clip(a, 2, dz);
-  a[2] += mdz, a[5] += mdz;
-  bool grounded = ody != mdy && ody < 0;
-  if ((grounded || pl.on_ground) && (odx != mdx || odz != mdz)) {
-    /* try again 0.6 higher */
+  float a[6];
+  box_of(pl.x, pl.y, pl.z, a);
+  float mx = phys_clip(a, 0, dx);
+  a[0] += mx, a[3] += mx;
+  float mz = phys_clip(a, 2, dz);
+  a[2] += mz, a[5] += mz;
+  bool blocked = mx != dx || mz != dz;
+  if (blocked && (pl.on_ground || dy < 0)) {
     float s[6];
     box_of(pl.x, pl.y, pl.z, s);
-    float up = phys_clip(s, 1, 0.6f);
+    float up = phys_clip(s, 1, STEP_UP);
     s[1] += up, s[4] += up;
-    float sx = phys_clip(s, 0, odx);
+    float sx = phys_clip(s, 0, dx);
     s[0] += sx, s[3] += sx;
-    float sz = phys_clip(s, 2, odz);
+    float sz = phys_clip(s, 2, dz);
     s[2] += sz, s[5] += sz;
-    float down = phys_clip(s, 1, -up);
-    s[1] += down, s[4] += down;
-    if (sx * sx + sz * sz > mdx * mdx + mdz * mdz) {
+    if (sx * sx + sz * sz > mx * mx + mz * mz + 1e-6f) {
+      float down = phys_clip(s, 1, -up);
+      s[1] += down, s[4] += down;
       memcpy(a, s, sizeof s);
-      mdx = sx, mdz = sz, mdy = up + down;
+      mx = sx, mz = sz, blocked = mx != dx || mz != dz;
+      if (dy < 0) dy = 0;
     }
   }
-  pl.x = (a[0] + a[3]) / 2;
-  pl.y = a[1];
-  pl.z = (a[2] + a[5]) / 2;
-  pl.on_ground = ody != mdy && ody < 0;
-  hit_wall = odx != mdx || odz != mdz;
-  if (ody != mdy) pl.vy = 0;
-  if (odx != mdx) pl.vx = 0;
-  if (odz != mdz) pl.vz = 0;
+  float my = phys_clip(a, 1, dy);
+  a[1] += my, a[4] += my;
+  pl.x = (a[0] + a[3]) / 2, pl.y = a[1], pl.z = (a[2] + a[5]) / 2;
+  pl.on_ground = my != dy && dy < 0;
+  if (!pl.on_ground && dy == 0) pl.on_ground = ground_under(0, 0) && pl.vy <= 0;
+  hit_wall = blocked;
+  if (my != dy) pl.vy = 0;
+  if (mx != dx) pl.vx = 0;
+  if (mz != dz) pl.vz = 0;
 }
 
-/* Entity.moveFlying */
-static void move_flying(float strafe, float fwd, float f) {
-  float d = strafe * strafe + fwd * fwd;
-  if (d < 1e-4f) return;
-  d = sqrtf(d);
-  if (d < 1) d = 1;
-  d = f / d;
-  strafe *= d;
-  fwd *= d;
-  float y = pl.yaw * 0.017453292f, s = sinf(y), c = cosf(y);
-  pl.vx += strafe * c - fwd * s;
-  pl.vz += fwd * c + strafe * s;
+/* a push of `power` along the keys' direction (forward, strafe), turned the way the player faces */
+static void push(float strafe, float fwd, float power) {
+  float len = sqrtf(strafe * strafe + fwd * fwd);
+  if (len < 0.01f) return;
+  float k = power / (len > 1 ? len : 1), y = pl.yaw * 0.017453292f, s = sinf(y), c = cosf(y);
+  pl.vx += (strafe * c - fwd * s) * k;
+  pl.vz += (fwd * c + strafe * s) * k;
 }
 
-/* World.isAnyLiquid: a liquid in any block the box touches */
+/* a liquid in any block the box touches */
 static bool liquid_in(const float *a) {
   for (int y = ifloor(a[1]); y <= ifloor(a[4]); y++)
     for (int z = ifloor(a[2]); z <= ifloor(a[5]); z++)
@@ -119,96 +102,77 @@ static float armor_points(void) {
   return (float)n;
 }
 
+/* experience: level n needs 10 + 3n points to the next */
 void player_add_xp(int n) {
   pl.xp_total += n;
   while (n > 0) {
-    /* EntityPlayer.xpBarCap */
-    int cap = pl.xp_level >= 30 ? 112 + (pl.xp_level - 30) * 9 : pl.xp_level >= 15 ? 37 + (pl.xp_level - 15) * 5
-                                                                                   : 7 + pl.xp_level * 2;
+    int cap = 10 + pl.xp_level * 3;
     float need = (1 - pl.xp) * cap;
-    if (n >= need) {
-      n -= (int)ceilf(need);
-      pl.xp = 0;
-      pl.xp_level++;
-    } else {
-      pl.xp += n / (float)cap;
-      n = 0;
-    }
+    if (n >= need) n -= (int)ceilf(need), pl.xp = 0, pl.xp_level++;
+    else pl.xp += n / (float)cap, n = 0;
   }
 }
 
 static void exhaust(float f) { pl.exhaustion += f; }
 
-/* EntityLivingBase.attackEntityFrom and EntityPlayer.damageEntity: 10 ticks of
- * grace after a hit (only more damage gets through), armour takes 4% a point */
+/* hurt: then 14 ticks of grace (in the first 7 only a bigger blow gets through, for the difference);
+ * armour takes the blow down to 12 / (12 + its points) of it, and wears */
 void player_hurt(float amount, int kind) {
   if (pl.dead || amount <= 0) return;
   if (pl.mode == 1 && kind != DMG_VOID) return;
-  if (pl.invuln > 10) {
+  if (pl.invuln > 7) {
     if (amount <= pl.last_damage) return;
     float a = amount;
-    amount -= pl.last_damage;
-    pl.last_damage = a;
-  } else {
-    pl.last_damage = amount;
-    pl.invuln = 20;
-    pl.hurt_time = 10;
-  }
-  bool armored = kind == DMG_MOB || kind == DMG_ARROW || kind == DMG_EXPLOSION || kind == DMG_LAVA ||
-                 kind == DMG_FIRE || kind == DMG_CACTUS || kind == DMG_GENERIC || kind == DMG_LIGHTNING;
-  if (armored) {
-    float ap = armor_points();
-    if (ap > 0) {
-      int wear = (int)(amount / 4);
-      if (wear < 1) wear = 1;
-      for (int i = 0; i < 4; i++)
-        if (pl.armor[i].id) stack_wear(&pl.armor[i], wear);
-      amount = amount * (25 - ap) / 25;
-    }
-  }
-  exhaust(0.3f);
-  pl.health -= amount;
-  if (pl.health <= 0) {
-    pl.health = 0;
-    pl.dead = true;
-    /* everything falls out (InventoryPlayer.dropAllItems), unless the game rule keeps it */
-    if (rule(GR_KEEP_INVENTORY)) return;
-    for (int i = 0; i < 36; i++)
-      if (pl.inv[i].id) ent_drop(pl.inv[i].id, item_count(&pl.inv[i]), pl.inv[i].aux, pl.x, pl.y + 1.3f, pl.z, false);
+    amount -= pl.last_damage, pl.last_damage = a;
+  } else
+    pl.last_damage = amount, pl.invuln = 14, pl.hurt_time = 8;
+  bool armoured = kind == DMG_MOB || kind == DMG_ARROW || kind == DMG_EXPLOSION || kind == DMG_LAVA ||
+                  kind == DMG_FIRE || kind == DMG_CACTUS || kind == DMG_GENERIC || kind == DMG_LIGHTNING;
+  float ap = armor_points();
+  if (armoured && ap > 0) {
     for (int i = 0; i < 4; i++)
-      if (pl.armor[i].id) ent_drop(pl.armor[i].id, 1, pl.armor[i].aux, pl.x, pl.y + 1.3f, pl.z, false);
-    memset(pl.inv, 0, sizeof pl.inv);
-    memset(pl.armor, 0, sizeof pl.armor);
+      if (pl.armor[i].id) stack_wear(&pl.armor[i], 1 + (int)(amount / 5));
+    amount = amount * 12 / (12 + ap);
   }
+  exhaust(0.25f);
+  pl.health -= amount;
+  if (pl.health > 0) return;
+  pl.health = 0, pl.dead = true;
+  if (rule(GR_KEEP_INVENTORY)) return;   /* (else everything falls out) */
+  for (int i = 0; i < 36; i++)
+    if (pl.inv[i].id) ent_drop(pl.inv[i].id, item_count(&pl.inv[i]), pl.inv[i].aux, pl.x, pl.y + 1.3f, pl.z, false);
+  for (int i = 0; i < 4; i++)
+    if (pl.armor[i].id) ent_drop(pl.armor[i].id, 1, pl.armor[i].aux, pl.x, pl.y + 1.3f, pl.z, false);
+  memset(pl.inv, 0, sizeof pl.inv);
+  memset(pl.armor, 0, sizeof pl.armor);
 }
 
-/* FoodStats.onUpdate (and on Peaceful, EntityPlayer.onLivingUpdate's healing and feeding) */
+/* food: effort tires (5 of it: a point of reserve, then of food); well fed (16 or more) a heart point
+ * comes back every 3 seconds for some effort; with no food left one goes every 3.5 seconds (Easy:
+ * down to 6, Normal: to 1, Hard: to nothing). On Calm, health and food come back on their own */
 extern uint32_t game_time;
 static void food_tick(void) {
   if (opt.difficulty == 0) {
-    if (pl.health < 20 && ticks_run % 20 == 0 && rule(GR_NATURAL_REGEN)) pl.health = pl.health + 1 > 20 ? 20 : pl.health + 1;
-    if (pl.food < 20 && ticks_run % 10 == 0) pl.food++;
+    if (pl.health < 20 && ticks_run % 30 == 0 && rule(GR_NATURAL_REGEN)) pl.health = pl.health + 1 > 20 ? 20 : pl.health + 1;
+    if (pl.food < 20 && ticks_run % 15 == 0) pl.food++;
     return;
   }
-  if (pl.exhaustion > 4) {
-    pl.exhaustion -= 4;
-    if (pl.sat > 0) pl.sat = pl.sat > 1 ? pl.sat - 1 : 0;
+  if (pl.exhaustion > 5) {
+    pl.exhaustion -= 5;
+    if (pl.sat >= 1) pl.sat -= 1;
+    else if (pl.sat > 0) pl.sat = 0;
     else if (pl.food > 0) pl.food--;
   }
-  if (pl.food >= 18 && pl.health > 0 && pl.health < 20 && rule(GR_NATURAL_REGEN)) {
-    if (++pl.food_timer >= 80) {
-      pl.health += 1;
-      if (pl.health > 20) pl.health = 20;
-      exhaust(3);
-      pl.food_timer = 0;
-    }
+  if (pl.food >= 16 && pl.health < 20 && rule(GR_NATURAL_REGEN)) {
+    if (++pl.food_timer >= 60) pl.health = pl.health + 1 > 20 ? 20 : pl.health + 1, exhaust(2.5f), pl.food_timer = 0;
   } else if (pl.food <= 0) {
-    if (++pl.food_timer >= 80) {
-      /* starving: Easy stops at 5 hearts, Normal at half a heart, Hard kills */
-      if (pl.health > 10 || opt.difficulty == 3 || (pl.health > 1 && opt.difficulty == 2)) player_hurt(1, DMG_STARVE);
+    static const float floor_[4] = {20, 6, 1, 0};
+    if (++pl.food_timer >= 70) {
+      if (pl.health > floor_[opt.difficulty & 3]) player_hurt(1, DMG_STARVE);
       pl.food_timer = 0;
     }
-  } else pl.food_timer = 0;
+  } else
+    pl.food_timer = 0;
 }
 
 /* ---------------------------------------------------------------- blocks */
@@ -230,7 +194,7 @@ static bool near_water(int x, int y, int z) {
   return false;
 }
 
-/* can block b stay at (x, y, z) (Block.canBlockStay / canPlaceBlockAt)? */
+/* can block b stay at (x, y, z) ? */
 static bool can_stay(int b, int x, int y, int z) {
   int below = world_get(x, y - 1, z);
   int m = blk_model[b];
@@ -337,7 +301,7 @@ static void set_block(int x, int y, int z, int b) {
 }
 
 /* ---------------------------------------------------------------- looking */
-/* the eyes' ray, as the last frame drew it (EntityRenderer.getMouseOver runs each frame, and the
+/* the eyes' ray, as the last frame drew it (it is worked out each frame, and the
  * clicks of the next ticks use what it found): the crosshair is where it points */
 float look_ray[6];
 float hit_t;   /* how far along it the block looked at is */
@@ -365,8 +329,8 @@ static bool ray_box(const float *o, const float *d, const float *lo, const float
   return true;
 }
 
-/* where the ray meets block b at (x, y, z): its selection box (Block.collisionRayTrace), the steps
- * of stairs one by one (BlockStairs); a ray passing beside a flower or over a slab goes on */
+/* where the ray meets block b at (x, y, z): its selection box, the steps
+ * of stairs one by one; a ray passing beside a flower or over a slab goes on */
 static bool ray_block(int b, int x, int y, int z, float *t, int *face) {
   float o[3] = {look_ray[0] - x, look_ray[1] - y, look_ray[2] - z}, s[6];
   if (blk_model[b] == M_STAIRS) {
@@ -385,7 +349,7 @@ static bool ray_block(int b, int x, int y, int z, float *t, int *face) {
   return ray_box(o, look_ray + 3, s, s + 3, t, face);
 }
 
-/* the first block the eyes' ray meets within reach (4.5, 5 in creative) */
+/* the first block the eyes' ray meets within reach (4.6, 5.5 in creative) */
 static void pick_block(void) {
   float ex = look_ray[0], ey = look_ray[1], ez = look_ray[2], dx = look_ray[3], dy = look_ray[4], dz = look_ray[5];
   int x = ifloor(ex), y = ifloor(ey), z = ifloor(ez);
@@ -394,7 +358,7 @@ static void pick_block(void) {
   float tx = dx > 0 ? (x + 1 - ex) * idx : (ex - x) * idx, ty = dy > 0 ? (y + 1 - ey) * idy : (ey - y) * idy,
         tz = dz > 0 ? (z + 1 - ez) * idz : (ez - z) * idz;
   int face = -1;
-  float t = 0, reach = pl.mode ? 5.0f : 4.5f;
+  float t = 0, reach = pl.mode ? 5.5f : 4.6f;
   pl.hit_face = -1;
   while (t <= reach) {
     int b = world_get(x, y, z);
@@ -414,11 +378,11 @@ static void pick_block(void) {
   }
 }
 
-/* what the crosshair is on (EntityRenderer.getMouseOver): a mob in front of the block takes it, so the
+/* what the crosshair is on: a mob in front of the block takes it, so the
  * block has no outline; past 3 blocks, in survival, nothing is in reach */
 static void pick(void) {
   pick_block();
-  if (entity_looked_at(pl.mode ? 5.0f : 4.5f, pl.hit_face >= 0 ? hit_t : 1e9f)) pl.hit_face = -1;
+  if (entity_looked_at(pl.mode ? 5.5f : 4.6f, pl.hit_face >= 0 ? hit_t : 1e9f)) pl.hit_face = -1;
 }
 
 void player_look(float ex, float ey, float ez, float yaw, float pitch) {
@@ -474,7 +438,7 @@ static bool place(int b) {
   /* the way the player looks: 0 south, 1 west, 2 north, 3 east */
   int way = (int)floorf(pl.yaw / 90 + 0.5f) & 3;
   if (b == B_OAK_STAIRS || b == B_COBBLESTONE_STAIRS) {
-    /* BlockStairs: rising the way the player looks */
+    /* rising the way the player looks */
     static const int8_t off[4] = {2, 1, 3, 0};   /* _S, _W, _N, (east) */
     if (way != 3) b = (b == B_OAK_STAIRS ? B_OAK_STAIRS_W : B_COBBLESTONE_STAIRS_W) + 2 * (off[way] - 1);
   }
@@ -491,7 +455,7 @@ static bool place(int b) {
     world_set(x, y + 1, z, door ? B_DOOR_OAK_UPPER : b + 1);
   }
   if (b == B_BED_FOOT) {
-    /* ItemBed: the head one block further, the way the player looks */
+    /* the head one block further, the way the player looks */
     static const int8_t wx[4] = {0, -1, 0, 1}, wz[4] = {1, 0, -1, 0};
     int hx = x + wx[way], hz = z + wz[way];
     if (!replaceable(world_get(hx, y, hz)) || !solid_top(world_get(x, y - 1, z)) || !solid_top(world_get(hx, y - 1, hz)) ||
@@ -503,21 +467,22 @@ static bool place(int b) {
   return true;
 }
 
-/* EntityLivingBase.addPotionEffect: a stronger or longer one replaces it */
+/* an effect: the stronger one wins, or at the same strength the longer one */
 static void add_effect(int k, int ticks, int amp) {
-  if (amp > pl.eff_amp[k] || (amp == pl.eff_amp[k] && ticks > pl.eff[k]) || !pl.eff[k])
+  if (!pl.eff[k] || amp > pl.eff_amp[k] || (amp == pl.eff_amp[k] && ticks > pl.eff[k]))
     pl.eff[k] = (uint16_t)ticks, pl.eff_amp[k] = (uint8_t)amp;
 }
 
-/* PotionEffect.onUpdate, Potion.isReady and performEffect */
+/* poison: a point every 30 ticks (twice as often for each strength), not below one; healing: a point
+ * every 40; hunger: tiring */
 static void effects_tick(void) {
   for (int k = 0; k < 3; k++) {
     if (!pl.eff[k]) continue;
-    int a = pl.eff_amp[k], d = pl.eff[k], n = (k == EF_POISON ? 25 : 50) >> a;
-    bool ready = n <= 0 || d % n == 0;
-    if (k == EF_POISON && ready && pl.health > 1) player_hurt(1, DMG_MAGIC);
-    else if (k == EF_REGEN && ready && pl.health < 20) pl.health = pl.health + 1 > 20 ? 20 : pl.health + 1;
-    else if (k == EF_HUNGER) exhaust(0.025f * (a + 1));
+    int a = pl.eff_amp[k], every = (k == EF_POISON ? 30 : 40) >> (a > 3 ? 3 : a);
+    bool now = every < 1 || pl.eff[k] % every == 0;
+    if (k == EF_POISON && now && pl.health > 1) player_hurt(1, DMG_MAGIC);
+    else if (k == EF_REGEN && now && pl.health < 20) pl.health = pl.health + 1 > 20 ? 20 : pl.health + 1;
+    else if (k == EF_HUNGER) exhaust(0.02f * (a + 1));
     pl.eff[k]--;
   }
 }
@@ -525,48 +490,45 @@ static void effects_tick(void) {
 static void eat_done(void) {
   Stack *h = held();
   int i = h->id - 256;
-  if (h->id == I_MILK_BUCKET) {
-    /* ItemBucketMilk: drunk, the effects are gone */
+  if (h->id == I_MILK_BUCKET) {   /* milk: no more effects */
     memset(pl.eff, 0, sizeof pl.eff);
     if (pl.mode == 0) h->id = I_BUCKET, h->aux = 1;
     return;
   }
-  pl.food += it_a[i];
-  if (pl.food > 20) pl.food = 20;
-  pl.sat += it_a[i] * it_b[i] / 10.0f * 2;
+  pl.food = pl.food + it_a[i] > 20 ? 20 : pl.food + it_a[i];
+  pl.sat += it_a[i] * it_b[i] / 10.0f * 1.5f;
   if (pl.sat > pl.food) pl.sat = (float)pl.food;
   if (it_kind[i] == IK_STEW) {
     h->id = I_BOWL, h->aux = 1;
     return;
   }
-  /* ItemFood.onFoodEaten, ItemFishFood, ItemAppleGold: their effects (and how likely) */
-  switch (h->id) {
-    case I_GOLDEN_APPLE: add_effect(EF_REGEN, 100, 1); break;
-    case I_ROTTEN_FLESH: if (rndf() < 0.8f) add_effect(EF_HUNGER, 600, 0); break;
-    case I_CHICKEN: if (rndf() < 0.3f) add_effect(EF_HUNGER, 600, 0); break;
-    case I_SPIDER_EYE: add_effect(EF_POISON, 100, 0); break;
-    case I_POISONOUS_POTATO: if (rndf() < 0.6f) add_effect(EF_POISON, 100, 0); break;
-    case I_PUFFERFISH: add_effect(EF_POISON, 1200, 3), add_effect(EF_HUNGER, 300, 2); break;
+  switch (h->id) {   /* what some foods do to you */
+    case I_GOLDEN_APPLE: add_effect(EF_REGEN, 120, 1); break;
+    case I_MUD_CAKE: if (rnd(10) < 7) add_effect(EF_HUNGER, 500, 0); break;
+    case I_CHICKEN: if (rnd(4) == 0) add_effect(EF_HUNGER, 500, 0); break;
+    case I_BEETLE_EYE: add_effect(EF_POISON, 80, 0); break;
+    case I_POISONOUS_POTATO: if (rnd(2)) add_effect(EF_POISON, 80, 0); break;
+    case I_PUFFERFISH: add_effect(EF_POISON, 900, 2), add_effect(EF_HUNGER, 300, 1); break;
   }
   use_up();
 }
 
-/* EntityPlayer.trySleep: at night (or in a storm), with no monster within 8 blocks; the bed is the new spawn point */
+/* in the dark (night or a storm), with no wild creature within 7 blocks; the bed is the new starting point */
 static void sleep_in(int x, int y, int z) {
   if (sky_sub() < 4) {
-    gui_message(T("You can only sleep at night"));
+    gui_message(T("You can sleep only at night"));
     return;
   }
   for (int i = 0; i < N_ENT; i++) {
     const Entity *e = &ents[i];
-    if (e->type >= E_ZOMBIE && e->type <= E_SPIDER && fabsf(e->x - x) < 8 && fabsf(e->y - y) < 5 &&
-        fabsf(e->z - z) < 8) {
-      gui_message(T("You may not rest now, there are monsters nearby"));
+    if (e->type >= E_MUDLING && e->type <= E_SKITTER && fabsf(e->x - x) < 7 && fabsf(e->y - y) < 4 &&
+        fabsf(e->z - z) < 7) {
+      gui_message(T("Too many monsters around to sleep"));
       return;
     }
   }
   pl.spawn_x = x, pl.spawn_y = y + 1, pl.spawn_z = z;
-  pl.x = x + 0.5f, pl.y = y + 0.5625f, pl.z = z + 0.5f;
+  pl.x = x + 0.5f, pl.y = y + 0.6f, pl.z = z + 0.5f;
   pl.vx = pl.vy = pl.vz = 0;
   pl.sleep_timer = 1;
 }
@@ -593,7 +555,7 @@ static void use(uint32_t pressed) {
       return;
     }
     if (is_door_lower(b) || b == B_DOOR_OAK_UPPER) {
-      /* BlockDoor.onBlockActivated: open or close (the lower half keeps it) */
+      /* open or close (the lower half keeps it) */
       int ly = b == B_DOOR_OAK_UPPER ? y - 1 : y, lb = world_get(x, ly, z);
       if (!is_door_lower(lb)) return;
       int st = lb == B_DOOR_OAK_LOWER ? 0 : lb - B_DOOR_OAK_LOWER_S + 1;   /* 0-3 closed, 4-7 open */
@@ -632,7 +594,7 @@ static void use(uint32_t pressed) {
     case IK_BONE_MEAL:
       if (!on_block) return;
       if (b >= B_WHEAT_0 && b < B_WHEAT_7) {
-        int st = b - B_WHEAT_0 + 2 + rnd(4);
+        int st = b - B_WHEAT_0 + 1 + rnd(3);
         set_block(x, y, z, B_WHEAT_0 + (st > 7 ? 7 : st));
         use_up();
       } else if ((b >= B_CARROTS_0 && b < B_CARROTS_3) || (b >= B_POTATOES_0 && b < B_POTATOES_3)) {
@@ -640,15 +602,14 @@ static void use(uint32_t pressed) {
         set_block(x, y, z, b + 1 > base + 3 ? base + 3 : b + 1);
         use_up();
       } else if (b >= B_SAPLING_OAK && b <= B_SAPLING_DARK_OAK) {
-        /* ItemDye.applyBonemeal: 45% of a step each time */
-        if (rndf() < 0.45f) sapling_grow(x, y, z);
+        if (rnd(3) == 0) sapling_grow(x, y, z);   /* (one in three) */
         use_up();
       } else if (b == B_GRASS && world_get(x, y + 1, z) == B_AIR) {
-        /* ItemDye.applyBonemeal on grass: tall grass and flowers around */
-        for (int i = 0; i < 64; i++) {
-          int gx = x + rnd(7) - 3, gz = z + rnd(7) - 3, gy = y + rnd(3) - 1;
+        /* bone meal on grass: tall grass and flowers around */
+        for (int i = 0; i < 40; i++) {
+          int gx = x + rnd(9) - 4, gz = z + rnd(9) - 4, gy = y + rnd(3) - 1;
           if (world_get(gx, gy, gz) == B_GRASS && world_get(gx, gy + 1, gz) == B_AIR)
-            set_block(gx, gy + 1, gz, rnd(8) ? B_TALL_GRASS : rnd(2) ? B_DANDELION : B_POPPY);
+            set_block(gx, gy + 1, gz, rnd(6) ? B_TALL_GRASS : rnd(3) ? B_OXEYE_DAISY : B_AZURE_BLUET);
         }
         use_up();
       }
@@ -679,19 +640,18 @@ static void use(uint32_t pressed) {
       }
       return;
     case IK_HELMET: case IK_CHESTPLATE: case IK_LEGGINGS: case IK_BOOTS: {
-      /* ItemArmor.onItemRightClick: worn at once if that slot is free */
+      /* worn at once if that slot is free */
       int slot = IK_BOOTS - k;
       if (!pl.armor[slot].id) pl.armor[slot] = *h, h->id = 0, h->aux = 0;
       return;
     }
     case IK_SNOWBALL: case IK_EGG:
-      throw_item(h->id, 1.5f, true);
+      throw_item(h->id, 1.4f, true);
       use_up();
       player_swing();
       return;
     case IK_FISHING_ROD: {
-      /* ItemFishingRod.onItemRightClick: cast, or reel in (which wears it: 1 for a catch,
-       * 2 off the ground, 3 with a creature) */
+      /* cast, or reel in (which wears it, see fish_reel) */
       Entity *bob = bobber();
       if (!bob) fish_cast();
       else {
@@ -704,12 +664,12 @@ static void use(uint32_t pressed) {
     case IK_FLINT_AND_STEEL:
       if (!on_block) return;
       if (b == B_TNT && !pl.sneaking) {
-        /* BlockTNT.onBlockActivated: lit, it falls and blows after 4 seconds */
+        /* TNT lit: it blows 3.5 seconds later */
         world_set(x, y, z, B_AIR);
         neighbours_changed(x, y, z);
-        tnt_light(x, y, z, 80);
+        tnt_light(x, y, z, 70);
       } else {
-        /* ItemFlintAndSteel.onItemUse: fire in the air against the face (BlockFire.onBlockAdded: out at once
+        /* fire in the air against the face (out at once
          * where it cannot stay) */
         int f = pl.hit_face, fx = x + NX[f], fy = y + NY[f], fz = z + NZ[f];
         if (world_get(fx, fy, fz) == B_AIR && fy >= 0 && fy < WORLD_H) {
@@ -723,8 +683,8 @@ static void use(uint32_t pressed) {
 }
 
 /* ---------------------------------------------------------------- a tick */
-/* Minecraft.middleClickMouse: the block looked at in the hand, from the hotbar if it is there; in
- * Creative, else into the first empty hotbar slot, or the one held (InventoryPlayer.setCurrentItem) */
+/* copying the block looked at: in the hand, from the hotbar if it is there; in
+ * Creative, else into the first empty hotbar slot, or the one held */
 void player_pick_block(void) {
   if (pl.hit_face < 0) return;
   int id = blk_item[world_get(pl.hit_x, pl.hit_y, pl.hit_z)];
@@ -753,14 +713,14 @@ void player_spawn(void) {
   pl.z = z + 0.5f;
   pl.health = 20;
   pl.food = 20;
-  pl.sat = 5;
-  pl.air = 300;
+  pl.sat = 4;
+  pl.air = AIR_TICKS;
 }
 
 void player_respawn(void) {
   pl.x = pl.spawn_x + 0.5f, pl.y = (float)pl.spawn_y, pl.z = pl.spawn_z + 0.5f;
   pl.vx = pl.vy = pl.vz = 0;
-  pl.health = 20, pl.food = 20, pl.sat = 5, pl.exhaustion = 0, pl.air = 300, pl.fall = 0, pl.fire = 0;
+  pl.health = 20, pl.food = 20, pl.sat = 4, pl.exhaustion = 0, pl.air = AIR_TICKS, pl.fall = 0, pl.fire = 0;
   if (!rule(GR_KEEP_INVENTORY)) pl.xp = 0, pl.xp_level = 0, pl.xp_total = 0;
   pl.dead = false;
   pl.pitch = 0;
@@ -770,51 +730,37 @@ static int break_cooldown, jump_timer, sprint_timer;
 static bool was_fwd;   /* forward was held last tick */
 static uint32_t prev_keys;
 
-/* the damage the world does: falls, drowning, lava, fire, cactus, suffocation, the void */
+/* the damage the world does: falls (beyond 3.5 blocks), drowning (after 12 seconds under water, 2 every
+ * 25 ticks), lava, fire (it sets you alight after 15 ticks in it), cactus, being stuck in a wall, the void */
 static void hazards(float fell_from) {
   int fx = ifloor(pl.x), fz = ifloor(pl.z);
-  int feet = world_get(fx, ifloor(pl.y + 0.1f), fz), head = world_get(fx, ifloor(pl.y + 1.62f), fz);
-  /* falling: the distance counts while going down, out of water */
+  int feet = world_get(fx, ifloor(pl.y + 0.1f), fz), head = world_get(fx, ifloor(pl.y + EYE), fz);
   if (pl.in_water || pl.flying || feet == B_LADDER || feet == B_VINE || feet == B_COBWEB) pl.fall = 0;
   else if (pl.y < fell_from) pl.fall += fell_from - pl.y;
   if (pl.on_ground) {
-    if (pl.fall > 3) player_hurt(ceilf(pl.fall - 3), DMG_FALL);
+    if (pl.fall > 3.5f) player_hurt(ceilf(pl.fall - 3.5f), DMG_FALL);
     pl.fall = 0;
   }
-  /* air: 300 ticks under water, then 2 damage every 20 */
   if (is_water(head)) {
-    if (pl.mode == 0 && --pl.air <= -20) {
-      pl.air = 0;
-      player_hurt(2, DMG_DROWN);
-    }
-  } else pl.air = 300;
-  bool lava = is_lava(feet) || is_lava(head);
-  if (lava) {
-    player_hurt(4, DMG_LAVA);
-    pl.fire = 300;
-  }
-  /* in fire (Entity.moveEntity, World.isFlammableWithin): it hurts, and after a second sets the player alight */
+    if (pl.mode == 0 && --pl.air <= -25) pl.air = 0, player_hurt(2, DMG_DROWN);
+  } else
+    pl.air = AIR_TICKS;
+  if (is_lava(feet) || is_lava(head)) player_hurt(4, DMG_LAVA), pl.fire = 280;
   static int in_fire;
   bool fire = false;
-  for (int y = ifloor(pl.y + 0.001f); y <= ifloor(pl.y + 1.799f) && !fire; y++)
-    for (int z = ifloor(pl.z - 0.299f); z <= ifloor(pl.z + 0.299f) && !fire; z++)
-      for (int x = ifloor(pl.x - 0.299f); x <= ifloor(pl.x + 0.299f) && !fire; x++) fire = world_get(x, y, z) == B_FIRE;
+  for (int y = ifloor(pl.y + 0.001f); y <= ifloor(pl.y + H - 0.001f) && !fire; y++)
+    for (int z = ifloor(pl.z - W + 0.001f); z <= ifloor(pl.z + W - 0.001f) && !fire; z++)
+      for (int x = ifloor(pl.x - W + 0.001f); x <= ifloor(pl.x + W - 0.001f) && !fire; x++) fire = world_get(x, y, z) == B_FIRE;
   if (fire) {
     player_hurt(1, DMG_FIRE);
-    if (++in_fire >= 20 && pl.fire < 160) pl.fire = 160;
+    if (++in_fire >= 15 && pl.fire < 140) pl.fire = 140;
   } else
     in_fire = 0;
-  if (pl.in_water || rain_at((int)floorf(pl.x), (int)floorf(pl.y), (int)floorf(pl.z)) ||
-      rain_at((int)floorf(pl.x), (int)floorf(pl.y + 1.8f), (int)floorf(pl.z)))
-    pl.fire = 0;   /* Entity.isWet */
-  if (pl.fire > 0) {
-    if (pl.fire % 20 == 0) player_hurt(1, DMG_FIRE);
-    pl.fire--;
-  }
-  if ((blk_flags[head] & BF_OPAQUE) && pl.mode == 0) player_hurt(1, DMG_WALL);
-  /* cactus: touching one hurts */
+  if (pl.in_water || rain_at(fx, ifloor(pl.y), fz) || rain_at(fx, ifloor(pl.y + PLAYER_H), fz)) pl.fire = 0;
+  if (pl.fire > 0 && --pl.fire % 25 == 0) player_hurt(1, DMG_FIRE);
+  if ((blk_flags[head] & BF_OPAQUE) && pl.mode == 0 && ticks_run % 10 == 0) player_hurt(1, DMG_WALL);
   for (int f = 2; f < 6; f++)
-    if (world_get(ifloor(pl.x + NX[f] * 0.31f), ifloor(pl.y + 0.5f), ifloor(pl.z + NZ[f] * 0.31f)) == B_CACTUS)
+    if (world_get(ifloor(pl.x + NX[f] * (W + 0.02f)), ifloor(pl.y + 0.5f), ifloor(pl.z + NZ[f] * (W + 0.02f))) == B_CACTUS)
       player_hurt(1, DMG_CACTUS);
   if (pl.y < -64) player_hurt(4, DMG_VOID);
 }
@@ -822,9 +768,9 @@ static void hazards(float fell_from) {
 void player_tick(uint32_t keys, uint32_t pressed) {
   if (pl.dead) return;
   if (pl.sleep_timer) {
-    /* asleep: after 100 ticks the night is over (WorldServer.wakeAllPlayers); a key gets you up */
-    if (++pl.sleep_timer >= 100) {
-      game_time += 24000 - game_time % 24000;
+    /* asleep: after 90 ticks it is dawn; a key gets you up */
+    if (++pl.sleep_timer >= 90) {
+      game_time += DAY_TICKS - game_time % DAY_TICKS;
       weather_clear();
       pl.sleep_timer = 0;
       pl.y += 0.5f;
@@ -836,106 +782,91 @@ void player_tick(uint32_t keys, uint32_t pressed) {
   float fwd = (keys & K_FWD ? 1.0f : 0) - (keys & K_BACKW ? 1.0f : 0);
   float strafe = (keys & K_STRAFE_L ? 1.0f : 0) - (keys & K_STRAFE_R ? 1.0f : 0);
   pl.sneaking = (keys & K_SNEAK) != 0 && !pl.flying;
-  fwd *= 0.98f;
-  strafe *= 0.98f;
   if (pl.sneaking) fwd *= 0.3f, strafe *= 0.3f;
-  if (pl.using_ticks) fwd *= 0.2f, strafe *= 0.2f, sprint_timer = 0;   /* eating slows you down */
-  /* EntityPlayerSP.onLivingUpdate: forward pressed twice within 7 ticks on the ground, or with the
-   * sprint key, sprints until forward is let go, you walk into a wall, sneak or get hungry */
-  bool fed = pl.food > 6 || pl.mode == 1, went = fwd >= 0.8f * 0.98f;
+  if (pl.using_ticks) fwd *= 0.25f, strafe *= 0.25f, sprint_timer = 0;   /* (eating, drawing a bow: slower) */
+  /* running: forward tapped twice within 8 ticks, or the run key; it stops when forward is let go, at a
+   * wall, crouching, or hungry (7 food or less) */
+  bool fed = pl.food > 7 || pl.mode == 1, ahead = fwd > 0.5f;
   if (sprint_timer) sprint_timer--;
-  if (pl.on_ground && !was_fwd && went && !pl.sprinting && fed && !pl.using_ticks) {
-    if (!sprint_timer && !(keys & K_SPRINT)) sprint_timer = 7;
-    else pl.sprinting = true;
+  if (ahead && !was_fwd && fed && !pl.using_ticks && !pl.sprinting) {
+    if (sprint_timer || (keys & K_SPRINT)) pl.sprinting = true;
+    else sprint_timer = 8;
   }
-  if (!pl.sprinting && went && fed && !pl.using_ticks && (keys & K_SPRINT)) pl.sprinting = true;
-  if (pl.sprinting && (!went || hit_wall || !fed)) pl.sprinting = false;
-  was_fwd = went;
+  if (!pl.sprinting && ahead && fed && !pl.using_ticks && (keys & K_SPRINT)) pl.sprinting = true;
+  if (pl.sprinting && (!ahead || hit_wall || !fed || pl.sneaking)) pl.sprinting = false;
+  was_fwd = ahead;
   pl.in_water = in_liquid();
-  /* creative: jump twice quickly to fly or land */
+  /* creative: two jumps in a row to fly, or to land */
   if (jump_timer) jump_timer--;
   if (pressed & K_JUMP && pl.mode == 1) {
-    if (jump_timer) {
-      pl.flying = !pl.flying;
-      jump_timer = 0;
-    } else jump_timer = 7;
+    if (jump_timer) pl.flying = !pl.flying, jump_timer = 0;
+    else jump_timer = 8;
   }
   float y0 = pl.y, ox = pl.x, oz = pl.z;
   if (pl.flying) {
-    /* PlayerCapabilities: flying speed 0.05, x2 sprinting; up with jump, down with sneak */
-    if (keys & K_JUMP) pl.vy += 0.15f;
-    if (keys & K_SNEAK) pl.vy -= 0.15f;
-    move_flying(strafe, fwd, pl.sprinting ? 0.1f : 0.05f);
+    if (keys & K_JUMP) pl.vy += 0.14f;
+    if (keys & K_SNEAK) pl.vy -= 0.14f;
+    push(strafe, fwd, pl.sprinting ? 0.12f : 0.06f);
     move(pl.vx, pl.vy, pl.vz);
-    pl.vx *= 0.91f, pl.vy *= 0.6f, pl.vz *= 0.91f;
+    pl.vx *= 0.9f, pl.vy *= 0.6f, pl.vz *= 0.9f;
     if (pl.on_ground) pl.flying = false;
   } else {
     if (keys & K_JUMP) {
-      if (pl.in_water) pl.vy += 0.04f;
+      if (pl.in_water) pl.vy += 0.045f;
       else if (pl.on_ground) {
-        pl.vy = 0.42f;
-        exhaust(pl.sprinting ? 0.8f : 0.2f);
-        if (pl.sprinting) {
+        pl.vy = 0.44f;
+        exhaust(pl.sprinting ? 0.7f : 0.15f);
+        if (pl.sprinting) {   /* a running jump carries on */
           float y = pl.yaw * 0.017453292f;
-          pl.vx -= sinf(y) * 0.2f;
-          pl.vz += cosf(y) * 0.2f;
+          pl.vx -= sinf(y) * 0.18f, pl.vz += cosf(y) * 0.18f;
         }
       }
     }
     int at = world_get(ifloor(pl.x), ifloor(pl.y), ifloor(pl.z));
     if (pl.in_water) {
-      move_flying(strafe, fwd, 0.02f);
+      push(strafe, fwd, 0.025f);
       float bvx = pl.vx, bvz = pl.vz;
       move(pl.vx, pl.vy, pl.vz);
       bool wall = bvx != pl.vx || bvz != pl.vz;
       pl.vx *= 0.8f, pl.vy *= 0.8f, pl.vz *= 0.8f;
       pl.vy -= 0.02f;
-      /* EntityLivingBase.moveEntityWithHeading: swimming into a wall with room above it
-       * (nothing solid, no water) lifts you out, onto the bank */
-      if (wall) {
-        float a[6], dy = pl.vy + 0.6f - pl.y + y0;
-        box_of(pl.x + pl.vx, pl.y + dy, pl.z + pl.vz, a);
+      if (wall) {   /* swimming into a bank with room above it: out onto it */
+        float a[6];
+        box_of(pl.x + bvx, pl.y + 0.6f, pl.z + bvz, a);
         if (phys_free(a) && !liquid_in(a)) pl.vy = 0.3f;
       }
     } else {
-      float fr = pl.on_ground ? 0.6f * 0.91f : 0.91f;
-      float speed = 0.1f * (pl.sprinting ? 1.3f : 1.0f);
-      float f = pl.on_ground ? speed * (0.16277136f / (fr * fr * fr)) : (pl.sprinting ? 0.026f : 0.02f);
-      move_flying(strafe, fwd, f);
-      /* ladders and vines: slow falls, climb when pushing into them */
       bool ladder = at == B_LADDER || at == B_VINE;
-      if (ladder) {
-        if (pl.vx < -0.15f) pl.vx = -0.15f;
-        if (pl.vx > 0.15f) pl.vx = 0.15f;
-        if (pl.vz < -0.15f) pl.vz = -0.15f;
-        if (pl.vz > 0.15f) pl.vz = 0.15f;
-        if (pl.vy < -0.15f) pl.vy = -0.15f;
+      push(strafe, fwd, pl.on_ground ? 0.092f * (pl.sprinting ? 1.35f : 1.0f) : (pl.sprinting ? 0.028f : 0.022f));
+      if (ladder) {   /* ladders and vines: slow, and up when pushing into them */
+        pl.vx = pl.vx < -0.14f ? -0.14f : pl.vx > 0.14f ? 0.14f : pl.vx;
+        pl.vz = pl.vz < -0.14f ? -0.14f : pl.vz > 0.14f ? 0.14f : pl.vz;
+        if (pl.vy < -0.14f) pl.vy = -0.14f;
         if (pl.sneaking && pl.vy < 0) pl.vy = 0;
       }
-      if (at == B_COBWEB) pl.vx *= 0.25f, pl.vy *= 0.05f, pl.vz *= 0.25f;
+      if (at == B_COBWEB) pl.vx *= 0.3f, pl.vy *= 0.06f, pl.vz *= 0.3f;
       float bvx = pl.vx, bvz = pl.vz;
       move(pl.vx, pl.vy, pl.vz);
-      if (ladder && (bvx != pl.vx || bvz != pl.vz)) pl.vy = 0.2f;
-      pl.vy -= 0.08f;
-      pl.vy *= 0.98f;
-      pl.vx *= fr;
-      pl.vz *= fr;
+      if (ladder && (bvx != pl.vx || bvz != pl.vz)) pl.vy = 0.18f;
+      pl.vy = (pl.vy - 0.078f) * 0.981f;
+      float keep = pl.on_ground ? 0.58f : 0.92f;
+      pl.vx *= keep, pl.vz *= keep;
     }
   }
-  /* walking, sprinting and swimming tire (EntityPlayer.addMovementStat) */
+  /* walking, sprinting and swimming tire */
   float moved = sqrtf((pl.x - ox) * (pl.x - ox) + (pl.z - oz) * (pl.z - oz));
   pl.prev_walked = pl.walked, pl.prev_bob = pl.bob;
-  pl.walked += moved * 0.6f;
-  float want = pl.on_ground ? (moved > 0.1f ? 0.1f : moved) : 0;
-  pl.bob += (want - pl.bob) * 0.4f;
-  if (pl.mode == 0) exhaust(moved * (pl.in_water ? 0.015f : pl.sprinting ? 0.1f : 0.0f));
+  pl.walked += moved * 0.7f;   /* (a step every 1.4 blocks) */
+  float want = pl.on_ground ? (moved > 0.12f ? 0.12f : moved) * 0.8f : 0;
+  pl.bob += (want - pl.bob) * 0.3f;
+  if (pl.mode == 0) exhaust(moved * (pl.in_water ? 0.02f : pl.sprinting ? 0.09f : 0.004f));
   hazards(y0);
   effects_tick();
   if (pl.mode == 0) food_tick();
   if (pl.dead) return;
   pick();
   /* a mob under the crosshair, nearer than the block: attacking hits it, using uses on it */
-  Entity *target = entity_looked_at(pl.mode ? 5.0f : 3.0f, pl.hit_face >= 0 ? hit_t : 1e9f);
+  Entity *target = entity_looked_at(pl.mode ? 5.5f : 3.2f, pl.hit_face >= 0 ? hit_t : 1e9f);
   if (target) {
     if (pressed & K_ATTACK) mob_attack(target), player_swing();
     if ((pressed & K_USE) && mob_use(target)) pressed &= ~K_USE;
@@ -954,7 +885,7 @@ void player_tick(uint32_t keys, uint32_t pressed) {
       pl.breaking = 0;
     }
   }
-  /* PlayerControllerMP.onPlayerDamageBlock: looking at another block starts over */
+  /* looking at another block starts over */
   static int bx_ = -1, by_, bz_;
   if (pl.hit_x != bx_ || pl.hit_y != by_ || pl.hit_z != bz_) pl.breaking = 0, bx_ = pl.hit_x, by_ = pl.hit_y, bz_ = pl.hit_z;
   if ((keys & K_ATTACK) && pl.hit_face >= 0 && !break_cooldown) {
@@ -966,31 +897,32 @@ void player_tick(uint32_t keys, uint32_t pressed) {
       break_cooldown = 5;
     } else if (hard == 255) pl.breaking = 0;
     else {
-      /* Block.getPlayerRelativeBlockHardness: speed / hardness / 30, or / 100 without the right tool */
+      /* each tick: the tool's speed / (the hardness x 32), x 3 slower where it gets nothing; 4 times
+       * slower with the head under water or off the ground */
       int h = held()->id;
       float speed = dig_speed(b, h);
-      if (pl.in_water && ifloor(pl.y + 1.62f) >= 0 && blk_model[world_get(ifloor(pl.x), ifloor(pl.y + 1.62f), ifloor(pl.z))] == M_LIQUID)
-        speed /= 5;
-      if (!pl.on_ground) speed /= 5;
-      float per = hard ? speed * 20.0f / hard / (can_harvest(b, h) ? 30.0f : 100.0f) : 1.0f;
+      if (pl.in_water && ifloor(pl.y + EYE) >= 0 && blk_model[world_get(ifloor(pl.x), ifloor(pl.y + EYE), ifloor(pl.z))] == M_LIQUID)
+        speed /= 4;
+      if (!pl.on_ground) speed /= 4;
+      float per = hard ? speed * 20.0f / hard / (can_harvest(b, h) ? 32.0f : 96.0f) : 1.0f;
       pl.breaking += per;
       if (pl.breaking >= 1) {
         break_block(pl.hit_x, pl.hit_y, pl.hit_z, true);
         exhaust(0.025f);
-        /* experience from ores (Block.dropXpOnBlockBreak) */
-        if (b == B_COAL_ORE) player_add_xp(rnd(3));
-        else if (b == B_DIAMOND_ORE || b == B_EMERALD_ORE) player_add_xp(3 + rnd(5));
-        else if (b == B_LAPIS_ORE) player_add_xp(2 + rnd(4));
-        else if (b == B_REDSTONE_ORE) player_add_xp(1 + rnd(5));
+        /* experience from ores */
+        if (b == B_COAL_ORE) player_add_xp(rnd(2));
+        else if (b == B_DIAMOND_ORE || b == B_EMERALD_ORE) player_add_xp(3 + rnd(3));
+        else if (b == B_LAPIS_ORE) player_add_xp(1 + rnd(3));
+        else if (b == B_REDSTONE_ORE) player_add_xp(1 + rnd(4));
         /* tools wear: 1 a block (swords 2), not for blocks that break at once */
         int k = item_kind(h);
         if (hard && k >= IK_PICKAXE && k <= IK_SHEARS && k != IK_HOE) stack_wear(held(), k == IK_SWORD ? 2 : 1);
         pl.breaking = 0;
-        break_cooldown = 5;
+        break_cooldown = 4;
       }
     }
   } else pl.breaking = 0;
-  /* a bow: OK held draws it, letting go shoots (ItemBow.onPlayerStoppedUsing) */
+  /* a bow: OK held draws it, letting go shoots */
   int k = item_kind(held()->id);
   static int draw;
   if (k == IK_BOW) {
@@ -998,11 +930,10 @@ void player_tick(uint32_t keys, uint32_t pressed) {
     for (int i = 0; i < 36 && !arrows; i++) arrows = pl.inv[i].id == I_ARROW;
     if ((keys & K_USE) && arrows) draw++;
     else if (draw) {
-      float f = draw / 20.0f;
-      f = (f * f + f * 2) / 3;
+      float f = draw / 22.0f;   /* (fully drawn after 22 ticks) */
       if (f > 1) f = 1;
-      if (f >= 0.1f) {
-        throw_item(I_ARROW, f * 3, true);
+      if (f >= 0.15f) {
+        throw_item(I_ARROW, f * 2.8f, true);
         if (pl.mode == 0) {
           stack_wear(held(), 1);
           for (int i = 0; i < 36; i++)
@@ -1021,12 +952,12 @@ void player_tick(uint32_t keys, uint32_t pressed) {
     return;
   }
   draw = 0;
-  /* eating (and drinking milk): OK held for 32 ticks */
+  /* eating (and drinking milk): OK held for 30 ticks */
   bool edible = k == IK_FOOD || k == IK_STEW || k == IK_MILK_BUCKET;
   if (edible && (keys & K_USE) && (pl.food < 20 || held()->id == I_GOLDEN_APPLE || k == IK_MILK_BUCKET || pl.mode == 1) &&
       !(pl.hit_face >= 0 && it_place[held()->id - 256] != 255 &&
         world_get(pl.hit_x, pl.hit_y, pl.hit_z) == B_FARMLAND)) {
-    if (++pl.using_ticks >= 32) {
+    if (++pl.using_ticks >= 30) {
       eat_done();
       pl.using_ticks = 0;
     }
@@ -1038,7 +969,7 @@ void player_tick(uint32_t keys, uint32_t pressed) {
   if (pressed & K_DROP && held()->id) {
     Stack *h = held();
     int n = pl.sneaking ? item_count(h) : 1;
-    ent_drop(h->id, n, h->aux, pl.x, pl.y + 1.32f, pl.z, true);
+    ent_drop(h->id, n, h->aux, pl.x, pl.y + 1.3f, pl.z, true);
     stack_take(h, n);
   }
   for (int n = 0; n < 9; n++)
diff --git a/games/numblocks/src/render.c b/games/numblocks/src/render.c
index c913aee..14d145c 100644
--- a/games/numblocks/src/render.c
+++ b/games/numblocks/src/render.c
@@ -1,14 +1,12 @@
 /* The 3D view: one ray per pixel of a 160 x 120 picture (shown at 2x), walked
  * through the block cache a block at a time until it meets something.
  *
- * Like Minecraft 1.8 with Fast graphics and smooth lighting off: each face is
- * lit by the light of the block in front of it, times its side's shade (top
+ * Each face is lit by the light of the block in front of it, times its side's shade (top
  * 1.0, bottom 0.5, north/south 0.8, east/west 0.6); grass and leaves take
  * their biome's colour; linear fog fades to the sky's horizon colour at the
- * edge of the view. Leaves are solid, their holes black, as Fast graphics
- * draws them; glass, plants and water let the ray go on through their
+ * edge of the view. Leaves are solid, their holes black (low detail); glass, plants and water let the ray go on through their
  * see-through texels. The sky has its gradient, the sun or the moon, and
- * Minecraft's flat clouds at y = 128. */
+ * soft round clouds at y = 150. */
 #include <math.h>
 #include "nb.h"
 
@@ -75,10 +73,10 @@ static uint16_t tint_of(int b, int col) {
   switch (blk_flags[b] & BF_TINT) {
     case 1: return biome_grass[biome];
     case 2: return biome_foliage[biome];
-    case 3: return 0x64CC;   /* spruce 0x619961 */
-    case 4: return 0x852A;   /* birch 0x80A755 */
+    case 3: return 0x3BEF;   /* spruce 0x3E7E7A */
+    case 4: return 0x7E11;   /* birch 0x7AC08A */
     case 5: return biome_water[biome];
-    case 6: return 0x2406;   /* lily pad 0x208030 */
+    case 6: return 0x2CCD;   /* lily pad 0x2E9A6E */
   }
   return 0xFFFF;
 }
@@ -105,14 +103,29 @@ static inline int texel_rgb(int b, int tex, int u, int v, int col, int *r, int *
   return 0;
 }
 
+/* Fast leaves: their holes are the leaves' own colour deep in shadow (about a third), not black */
+#define LEAF_SHADOW(k) ((uint16_t)((((k) >> 1) & 0x7BEF) - (((k) >> 3) & 0x18E3)))
+
 /* ---------------------------------------------------------------- the sky */
+/* how thick the clouds are at (x, z) in cells: the four cells around blended, so their edges are soft */
+static float cloud_density(float cx, float cz) {
+  extern const uint8_t clouds[256 * 256 / 8];
+  float fx = cx - 0.5f, fz = cz - 0.5f;
+  int x0 = (int)floorf(fx), z0 = (int)floorf(fz);
+  float tx = fx - x0, tz = fz - z0, d = 0;
+  for (int k = 0; k < 4; k++) {
+    int ix = (x0 + (k & 1)) & 255, iz = (z0 + (k >> 1)) & 255;
+    if (clouds[(iz * 256 + ix) >> 3] & (1 << (ix & 7))) d += (k & 1 ? tx : 1 - tx) * (k >> 1 ? tz : 1 - tz);
+  }
+  return d * d * (3 - 2 * d);
+}
 static __attribute__((noinline)) uint16_t sky(float dx, float dy, float dz, float len) {
   float e = dy / len;   /* elevation, -1..1 */
   /* horizon (fog colour) to the sky's colour above; below the horizon, fog */
-  uint32_t gc = sky_grad[e <= 0 ? 0 : e >= 0.4f ? 128 : (int)(e * 320)];
+  uint32_t gc = sky_grad[e <= 0 ? 0 : e >= 0.6f ? 128 : (int)(e * 213)];
   int r = (int)(gc >> 20), g = (int)(gc >> 10) & 1023, b = (int)gc & 1023;
   if (under_water) return pack(r / 4, g / 3, b / 2 + 40);
-  /* the sunrise and sunset glow (RenderGlobal's fan): towards the sun, on the horizon, fading above
+  /* the dawn and dusk glow: towards the sun, on the horizon, fading above
    * it and below it alike (the fan straddles it: cut there, it hung over a line in the air) */
   if (ss_a > 0) {
     float hl = sqrtf(dx * dx + dz * dz) + 1e-6f, w1 = dx * ss_side / hl, e = fabsf(dy) / len;
@@ -122,7 +135,7 @@ static __attribute__((noinline)) uint16_t sky(float dx, float dy, float dz, floa
       r += ((ss_r - r) * a) >> 8, g += ((ss_g - g) * a) >> 8, b += ((ss_b - b) * a) >> 8;
     }
   }
-  /* RenderGlobal.renderSky: the sun, the moon in its phase and the stars turn with the
+  /* the sun, the moon in its phase and the stars turn with the
    * sky; their textures add light (and rain hides them) */
   if (sun_a > 0 && dy > 0) {
     float sd = dx * sun_x + dy * sun_y + dz * sun_z;
@@ -142,7 +155,7 @@ static __attribute__((noinline)) uint16_t sky(float dx, float dy, float dz, floa
       }
     }
     if (star_k > 0) {
-      /* renderStars: about 800 white dots over the whole sky (here a pixel each), seen at night */
+      /* the stars: a few hundred dots over the whole sky (a pixel each), seen at night */
       float sx = dz, sy = dy * cos_c + -dx * sin_c, sz = -dy * sin_c + -dx * cos_c;
       float ax = fabsf(sx), ay = fabsf(sy), az = fabsf(sz), m = ax > ay ? (ax > az ? ax : az) : (ay > az ? ay : az);
       int face = m == ax ? (sx > 0) : m == ay ? 2 + (sy > 0) : 4 + (sz > 0);
@@ -153,16 +166,15 @@ static __attribute__((noinline)) uint16_t sky(float dx, float dy, float dz, floa
       if (((h ^ (h >> 16)) & 1023) < 6) r += star_k, g += star_k, b += star_k;
     }
   }
-  /* clouds: Minecraft's 12-block cells at y = 128.33 */
+  /* clouds: soft round puffs of 6-block cells, high at y = 150.5 */
   if (dy > 0.01f && opt.clouds) {
-    float t = (128.33f - (oy + vc_y0)) / dy;
+    float t = (150.5f - (oy + vc_y0)) / dy;
     float cx = (ox + vc_x0) + dx * t + cloud_off, cz = (oz + vc_z0) + dz * t;
     float dist = t * len;
     if (t > 0 && dist < 200) {
-      int ix = (int)floorf(cx / 12) & 255, iz = (int)floorf(cz / 12) & 255;
-      extern const uint8_t clouds[256 * 256 / 8];
-      if (clouds[(iz * 256 + ix) >> 3] & (1 << (ix & 7))) {
-        float a = 0.8f * (1 - dist / 200);
+      float dn = cloud_density(cx / 6, cz / 6);
+      if (dn > 0) {
+        float a = 0.62f * dn * (1 - dist / 200);
         r += (int)((cloud_r - r) * a);
         g += (int)((cloud_g - g) * a);
         b += (int)((cloud_b - b) * a);
@@ -184,7 +196,7 @@ static void sky_row(SkyRow *k, const float *row) {
   k->len2 = row[0] * row[0] + row[1] * row[1] + row[2] * row[2];   /* (+ su^2: rg is square to the row) */
   k->sd0 = row[0] * sun_x + row[1] * sun_y + row[2] * sun_z, k->sds = rgx * sun_x + rgz * sun_z;
   k->tx0 = row[0] * sun_tx + row[1] * sun_ty, k->txs = rgx * sun_tx;
-  k->ct = row[1] > 0.01f ? (128.33f - (oy + vc_y0)) / row[1] : 0;
+  k->ct = row[1] > 0.01f ? (150.5f - (oy + vc_y0)) / row[1] : 0;
   k->cx0 = (ox + vc_x0) + row[0] * k->ct + cloud_off, k->cxs = rgx * k->ct;
   k->cz0 = (oz + vc_z0) + row[2] * k->ct, k->czs = rgz * k->ct;
 }
@@ -193,7 +205,7 @@ static inline __attribute__((always_inline)) uint16_t sky_px(const SkyRow *k, fl
   float l2 = k->len2 + su * su, len = 0, dy = k->dy;
   int gi = 128;
   if (dy <= 0) gi = 0;
-  else if (dy * dy < 0.16f * l2) len = sqrtf(l2), gi = (int)(dy / len * 320);
+  else if (dy * dy < 0.36f * l2) len = sqrtf(l2), gi = (int)(dy / len * 213);
   uint32_t gc = sky_grad[gi];
   int r = (int)(gc >> 20), g = (int)(gc >> 10) & 1023, b = (int)gc & 1023;
   if (under_water) return pack(r / 4, g / 3, b / 2 + 40);
@@ -215,11 +227,10 @@ static inline __attribute__((always_inline)) uint16_t sky_px(const SkyRow *k, fl
     }
   }
   if (dy > 0.01f && k->ct > 0 && opt.clouds && k->ct * k->ct * l2 < 200 * 200) {
-    int ix = (int)floorf((k->cx0 + k->cxs * su) / 12) & 255, iz = (int)floorf((k->cz0 + k->czs * su) / 12) & 255;
-    extern const uint8_t clouds[256 * 256 / 8];
-    if (clouds[(iz * 256 + ix) >> 3] & (1 << (ix & 7))) {
+    float dn = cloud_density((k->cx0 + k->cxs * su) / 6, (k->cz0 + k->czs * su) / 6);
+    if (dn > 0) {
       if (!len) len = sqrtf(l2);
-      float a = 0.8f * (1 - k->ct * len / 200);
+      float a = 0.62f * dn * (1 - k->ct * len / 200);
       r += (int)((cloud_r - r) * a);
       g += (int)((cloud_g - g) * a);
       b += (int)((cloud_b - b) * a);
@@ -416,7 +427,7 @@ static __attribute__((noinline)) int cell_hit(Ray *R, int b, int i, int x, int y
     u &= 15;
     v &= 15;
     int tc = texel565(b, blk_front[b] ? face_tex(b, f, x, y, z) : blk_tex[b][f], u, v, col);
-    if (tc < 0 && m == M_LEAVES && !opt.fancy) tc = 0;   /* Fast graphics: the holes are black */
+    if (tc < 0 && m == M_LEAVES && !opt.fancy) tc = LEAF_SHADOW(tint_of(b, col));   /* Fast graphics: shadowed holes */
     if (tc >= 0) {
       tc = cracked(tc, i, u, v);
       last_t = t;
@@ -447,7 +458,7 @@ static __attribute__((noinline)) int cell_hit(Ray *R, int b, int i, int x, int y
     const int8_t (*bxs)[6] = shp;   /* the shape: its boxes */
     int nbx;
     if (m == M_LIQUID) {
-      /* BlockLiquid: (8 - level) / 9 high, full when falling or under the same liquid */
+      /* (8 - level) / 9 high, full when falling or under the same liquid */
       static const int8_t LIQH[9] = {14, 12, 11, 9, 7, 5, 4, 2, 16};
       int lv = blk_meta[b] > 8 ? 8 : blk_meta[b];
       int above = y + 1 < VCY ? vc[i + VCX * VCZ] : B_AIR;
@@ -711,7 +722,7 @@ static int face_pixel(float dx, float dy, float dz, int plane, int f, bool wet)
   }
   if ((unsigned)u > 15 || (unsigned)v > 15) return -1;
   int tc = texel565(b, blk_front[b] ? face_tex(b, f, x, y, z) : blk_tex[b][f], u, v, z * VCX + x);
-  if (tc < 0 && m == M_LEAVES && !opt.fancy) tc = 0;
+  if (tc < 0 && m == M_LEAVES && !opt.fancy) tc = LEAF_SHADOW(tint_of(b, z * VCX + x));
   if (tc < 0) return -1;
   if (cube) tc = cracked(tc, i, u, v);
   last_t = t;
@@ -756,11 +767,11 @@ static __attribute__((unused)) void sky_fill(uint16_t (*cb)[RW], float (*zb)[RW]
     if (!plain) {
       for (int x = x0; x < x0 + 4; x++) cb[r][x] = sky_px(k, col_su[x], rb[r][2] + rgz * col_su[x]);
     } else {
-      /* the gradient's place (320 a unit of elevation) at the row's ends, and its step a pixel */
+      /* the gradient's place (213 a unit of elevation) at the row's ends, and its step a pixel */
       float g0 = 0, gs = 0;
       if (dy > 0) {
-        g0 = dy / sqrtf(k->len2 + s0 * s0) * 320;
-        gs = (dy / sqrtf(k->len2 + s3 * s3) * 320 - g0) * (1 / 3.0f);
+        g0 = dy / sqrtf(k->len2 + s0 * s0) * 213;
+        gs = (dy / sqrtf(k->len2 + s3 * s3) * 213 - g0) * (1 / 3.0f);
       }
       bool cloud = dy > 0.01f && k->ct > 0 && opt.clouds && k->ct * k->ct * l2 < 200 * 200;
       for (int q = 0; q < 4; q++) {
@@ -769,9 +780,7 @@ static __attribute__((unused)) void sky_fill(uint16_t (*cb)[RW], float (*zb)[RW]
         uint16_t c = sky_pk[g >= 128 ? 128 : (int)g];
         if (cloud) {
           float su = col_su[x];
-          int ix = (int)floorf((k->cx0 + k->cxs * su) / 12) & 255, iz = (int)floorf((k->cz0 + k->czs * su) / 12) & 255;
-          extern const uint8_t clouds[256 * 256 / 8];
-          if (clouds[(iz * 256 + ix) >> 3] & (1 << (ix & 7))) {
+          if (cloud_density((k->cx0 + k->cxs * su) / 6, (k->cz0 + k->czs * su) / 6) > 0) {
             float pl2 = k->len2 + su * su;
             if (k->ct * k->ct * pl2 < 200 * 200) c = sky_px(k, su, rb[r][2] + rgz * su);
           }
@@ -802,7 +811,7 @@ static int face_cell(float dx, float dy, float dz, const Sample *s) {
   uint16_t c;
   if (!tx && (fl & 0x20)) {
     if (!(s->flags & 4)) return -1;
-    c = 0;   /* (Fast leaves: black) */
+    c = LEAF_SHADOW(s->tint);   /* (Fast leaves: the holes in shadow) */
   } else {
     c = tex_pal[tex][tx];
     if (tx >= (fl & 0x1F)) {
@@ -858,7 +867,7 @@ static __attribute__((unused)) void face_fill(uint16_t (*cb)[RW], float (*zb)[RW
       int u = iu ^ fu, v = iv ^ fv, p = px[(v * 16 + u) >> 1], tx = (u & 1) ? p >> 4 : p & 15;
       if (!tx && see) {
         if (!black) goto miss;
-        c = 0;   /* (Fast leaves: black) */
+        c = LEAF_SHADOW(s->tint);   /* (Fast leaves: the holes in shadow) */
       } else c = pal[tx];
       float d2 = t * t * (d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
       if (d2 > fog0 * fog0) {
@@ -942,7 +951,7 @@ static __attribute__((unused)) void plane_fill(uint16_t (*cb)[RW], float (*zb)[R
       uint16_t col;
       if (!tx && (fl & 0x20)) {
         if (!black) goto miss;
-        col = 0;
+        col = LEAF_SHADOW(tint);
       } else {
         col = tex_pal[tex][tx];
         if (tx >= (fl & 0x1F)) col = pack(r5(col) * r5(tint) >> 8, g6(col) * g6(tint) >> 8, b5(col) * b5(tint) >> 8);
@@ -1079,7 +1088,7 @@ static void quad(uint16_t (*cb)[RW], float (*zb)[RW], float (*rb)[3], int r, int
 
 /* ---------------------------------------------------------------- entities
  * Mobs are their models' boxes, each ray tested in the box's own frame and
- * textured from the skin as Minecraft maps a box (ModelBox, TexturedQuad);
+ * textured from the skin as a box model maps it;
  * dropped blocks are small spinning cubes, dropped items flat pictures facing
  * the camera, as Fast graphics draws them. A pixel shows the nearest hit that
  * is closer than the world behind it. */
@@ -1179,7 +1188,7 @@ static void ents_frame(void) {
     else if (e->type == E_TNT) w = 1.2f, h = 1.1f;
     else if (e->type == E_ARROW || e->type == E_BOBBER) w = 0.6f, h = 0.6f, ey -= 0.3f;
     else w = mob_width(e->type) * 2.2f, h = mob_height(e->type) * 1.2f;
-    if (e->type >= E_ZOMBIE && e->type <= E_CHICKEN && e->state == 255) w = h = 2.4f;   /* dying: lying down */
+    if (e->type >= E_MUDLING && e->type <= E_STRIDER && e->state == 255) w = h = 2.4f;   /* dying: lying down */
     float c[8][3];
     for (int k = 0; k < 8; k++)
       c[k][0] = ex + ((k & 1) ? w : -w) / 2, c[k][1] = ey + ((k & 2) ? h : 0), c[k][2] = ez + ((k & 4) ? w : -w) / 2;
@@ -1222,7 +1231,7 @@ static int make_boxes(const Draw *dr, Box *bx) {
   float yaw = e->yaw * 0.017453292f;
   float M[9], R[9], Z[9];
   rot(R, 1, 3.14159265f - yaw);
-  /* dying: falls on its side over a second (RendererLivingEntity.rotateCorpse) */
+  /* dying: falls on its side over a second */
   float death = e->state == 255 ? (e->timer + tick_frac) / 20.0f * 1.6f : 0;
   if (death > 0) {
     death = sqrtf(death);
@@ -1288,7 +1297,7 @@ static int make_boxes(const Draw *dr, Box *bx) {
   return n;
 }
 
-/* the skin texel the ray meets on a box face (ModelBox's layout), -1 if see-through */
+/* the skin texel the ray meets on a box face (the box layout), -1 if see-through */
 static int box_texel(const Box *b, int face, float x, float y, float z) {
   if (b->mirror) {
     x = b->x0 + b->x1 - x;
@@ -1366,14 +1375,14 @@ static bool item_hit(const Draw *dr, const float *d, float *best_t, uint16_t *co
   int id = e->item.id;
   float age = e->age + tick_frac;
   bool tnt = e->type == E_TNT;
-  float bob = tnt ? 0 : sinf(age / 10.0f + e->yaw) * 0.1f + 0.1f;
+  float bob = tnt ? 0 : sinf(age / 8.0f + e->yaw) * 0.07f + 0.09f;   /* (dropped items float up and down) */
   bool cube = id < 256 && (blk_model[id] == M_CUBE || blk_model[id] == M_LEAVES || blk_model[id] == M_GLASS ||
                            blk_model[id] == M_SLAB);
   float hs = tnt ? 0.49f : 0.125f;
   float cx = dr->ex, cy = dr->ey + bob + hs, cz = dr->ez;
-  if (e->type == E_BOBBER) cy = dr->ey + 0.3f - 0.125f, cube = false;   /* RenderFish: centred where it is */
+  if (e->type == E_BOBBER) cy = dr->ey + 0.3f - 0.125f, cube = false;   /* centred where it is */
   if (cube) {
-    /* EntityItem render: a quarter block, turning (lit TNT: a whole block, still) */
+    /* a dropped item: a quarter block, turning (lit TNT: a whole block, still) */
     float a = tnt ? 0 : age / 20.0f + e->yaw, ca = cosf(a), sa = sinf(a);
     float rel[3] = {ox - cx, oy - cy, oz - cz};
     float o[3] = {ca * rel[0] + sa * rel[2], rel[1], -sa * rel[0] + ca * rel[2]};
@@ -1412,7 +1421,7 @@ static bool item_hit(const Draw *dr, const float *d, float *best_t, uint16_t *co
     if (tc < 0) tc = 0;
     *best_t = t0;
     *col = lit565((uint16_t)tc, f0, dr->light, t0 * sqrtf(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]));
-    if (tnt && (e->delay / 5) % 2 == 0) *col = mix565(*col, 0xFFFF, 16);   /* RenderTNTPrimed: flashing */
+    if (tnt && (e->delay / 5) % 2 == 0) *col = mix565(*col, 0xFFFF, 16);   /* flashing */
     return true;
   }
   /* a flat picture half a block wide, facing the camera */
@@ -1459,7 +1468,7 @@ static void particles_strip(int py0, int rows, uint16_t (*cb)[RW], float (*zb)[R
 }
 
 /* ---------------------------------------------------------------- rain and snow */
-/* EntityRenderer.renderRainSnow: around the player (10 blocks with Fancy
+/* around the player (10 blocks with Fancy
  * graphics, 5 with Fast), every column where it rains or snows has a sheet one
  * block wide turned towards the player, from the ground (or 10 blocks down)
  * to 10 blocks up, with rain.png scrolling down it, or snow.png drifting.
@@ -1492,7 +1501,7 @@ static void rain_frame(void) {
   sheets = (Sheet *)world_scratch(nmax * sizeof(Sheet));
   if (!sheets) return;
   int r = opt.fancy ? 10 : 5;
-  int px = (int)floorf(pl.x), pz = (int)floorf(pl.z), j = (int)floorf(pl.y), l = (int)floorf(oy + vc_y0 - 1.62f);
+  int px = (int)floorf(pl.x), pz = (int)floorf(pl.z), j = (int)floorf(pl.y), l = (int)floorf(oy + vc_y0 - EYE);
   float cnt = (float)(game_time % 100000) + tick_frac;
   /* nearest first, ring by ring, in case they do not all fit */
   for (int d = 1; d <= r; d++)
@@ -1592,7 +1601,7 @@ static void rain_strip(int py0, int rows, uint16_t (*cb)[RW], float (*zb)[RW]) {
       int lo = r0 - base < 0 ? 0 : r0 - base, hi = r1 - base > 255 ? 255 : r1 - base;
       for (int i = idx[lo]; i < idx[hi + 1]; i += step) {
         int a = run[i][3] * s->alpha;
-        if (a <= 25 * 255) continue;   /* 1.8's alpha test */
+        if (a <= 25 * 255) continue;   /* (too faint to show) */
         float ya = (base + run[i][0] - s->v) * (1 / 64.0f), yb = ya + run[i][2] * (1 / 64.0f);
         if (ya < s->y0) ya = s->y0;
         if (yb > s->y1) yb = s->y1;
@@ -1627,7 +1636,7 @@ static void rain_strip(int py0, int rows, uint16_t (*cb)[RW], float (*zb)[RW]) {
 }
 
 /* ---------------------------------------------------------------- lightning */
-/* RenderLightningBolt: a path 128 blocks up in 16-block steps that wander up
+/* a path 128 blocks up in 16-block steps that wander up
  * to 5 blocks, and two branches that wander up to 15; each drawn four times,
  * 0.1, 0.3, 0.5 and 0.7 blocks wide, adding (0.45, 0.45, 0.5) x 0.3 of light */
 static float bolt_off[3][9][2];   /* the path's offsets from its foot at heights 16 i; then the branches' */
@@ -1728,7 +1737,7 @@ static void bolt_strip(int py0, int rows, uint16_t (*cb)[RW], float (*zb)[RW]) {
 }
 
 /* ---------------------------------------------------------------- the fishing line */
-/* RenderFish: from the rod's tip (in the right hand, 0.4 ahead of the eyes)
+/* from the rod's tip (in the right hand, 0.4 ahead of the eyes)
  * to the hook in 16 pieces, sagging, black */
 static float line_pt[17][3];   /* picture x, y, 1 / depth (0: behind the camera) */
 static bool line_on;
@@ -1776,7 +1785,7 @@ static void line_strip(int py0, int rows, uint16_t (*cb)[RW], float (*zb)[RW]) {
 }
 
 /* ---------------------------------------------------------------- the block looked at */
-/* RenderGlobal.drawSelectionBox: the edges of the block's selection box (its shape, grown
+/* the edges of the block's selection box (its shape, grown
  * by 0.002) in black at 40%, hidden where something is in front of them */
 static float sel_pt[8][3];   /* the corners on the picture: x, y, 1 / depth (0: behind the camera) */
 static float sel_w[8][3];    /* and in the cache */
@@ -1834,11 +1843,11 @@ static void ents_strip(int py0, int rows, uint16_t (*cb)[RW], float (*zb)[RW]) {
     const Draw *dr = &draws[k];
     if (dr->y1 <= py0 || dr->y0 >= py0 + rows) continue;
     const Entity *e = dr->e;
-    bool mob = e->type >= E_ZOMBIE && e->type <= E_CHICKEN;
+    bool mob = e->type >= E_MUDLING && e->type <= E_STRIDER;
     int n = mob ? make_boxes(dr, bx) : 0;
-    /* hurt (and dying): a red tint; a creeper about to blow flashes white */
+    /* hurt (and dying): a red tint; a fizzler about to blow flashes white */
     int red = mob && (e->hurt > 0 || e->state == 255) ? 10 : 0;
-    int white = e->type == E_CREEPER && e->delay > 0 && ((e->delay / 3) & 1) ? 16 : 0;
+    int white = e->type == E_FIZZLER && e->delay > 0 && ((e->delay / 3) & 1) ? 16 : 0;
     /* each part over its own rectangle (the depth buffer keeps the nearest); an item over the draw's */
     for (int p = 0; p < (mob ? n : 1); p++) {
       int x0 = dr->x0, y0 = dr->y0, x1 = dr->x1, y1 = dr->y1;
@@ -1870,17 +1879,16 @@ static void ents_strip(int py0, int rows, uint16_t (*cb)[RW], float (*zb)[RW]) {
 
 /* ---------------------------------------------------------------- the frame */
 static void setup_light(float sun) {
-  /* Minecraft's light table (gamma "Moody"): (1 - f) / (3f + 1), f = 1 - level / 15,
-   * sky light scaled by the sun, then brightened to at least 0.03 */
+  /* NumBlocks' light curve: (level / 15) to the power 1.8, so caves get dark quickly;
+   * sky light scaled by the sun, and never quite black (0.04) */
   static const float face_shade[4] = {1.0f, 0.8f, 0.6f, 0.5f};
   for (int l = 0; l < 16; l++) {
-    float f = 1 - l / 15.0f;
-    float bri = (1 - f) / (f * 3 + 1);
-    bri = bri * (sun * 0.95f + 0.05f);
-    bri = bri * 0.96f + 0.03f;
+    float c = powf(l / 15.0f, 1.8f);
+    float bri = c * (sun * 0.94f + 0.06f);
+    bri = bri * 0.96f + 0.04f;
     for (int s = 0; s < 4; s++) shade[s][l] = (int)(bri * face_shade[s] * 32 + 0.5f);
     /* block light does not follow the sun */
-    float blk = (1 - f) / (f * 3 + 1) * 0.96f + 0.03f;
+    float blk = c * 0.96f + 0.04f;
     for (int s = 0; s < 4; s++) shade_blk[s][l] = (int)(blk * face_shade[s] * 32 + 0.5f);
   }
 }
@@ -1965,18 +1973,19 @@ void render_frame(const Camera *c, uint32_t tod) {
   ox = c->x - vc_x0;
   oy = c->y - vc_y0;
   oz = c->z - vc_z0;
-  /* the time of day: 0 sunrise, 6000 noon, 18000 midnight (Minecraft's ticks) */
-  float ang = (tod % 24000) / 24000.0f - 0.25f;
+  /* the time of day (DAY_TICKS long): 0 sunrise, a quarter noon, three quarters midnight; the sun
+   * lingers a little near the top of the sky */
+  float ang = (float)(tod % DAY_TICKS) / DAY_TICKS - 0.25f;
   if (ang < 0) ang += 1;
-  ang = ang + ((1 - (cosf(ang * 3.14159265f) + 1) / 2) - ang) / 3;
-  float day = cosf(ang * 6.2831853f) * 2 + 0.5f;
-  if (day < 0) day = 0;
-  if (day > 1) day = 1;
-  /* World.getSunBrightness: dimmer in rain, dimmer still in a storm */
+  ang -= sinf(ang * 12.566371f) * 0.02f;
+  float high = cosf(ang * 6.2831853f);   /* the sun's height, -1 to 1 */
+  float day = (high + 0.12f) / 0.3f;
+  day = day < 0 ? 0 : day > 1 ? 1 : day;
+  /* the light: 0.18 at night up to 1 by mid-morning, less under rain and storms */
   float rs = rain_str, ts = thunder_str * rain_str;
-  float sunb = 1 - (cosf(ang * 6.2831853f) * 2 + 0.2f);
+  float sunb = (high + 0.08f) / 0.42f;
   sunb = sunb < 0 ? 0 : sunb > 1 ? 1 : sunb;
-  sunb = (1 - sunb) * (1 - rs * 5 / 16) * (1 - ts * 5 / 16) * 0.8f + 0.2f;
+  sunb = 0.18f + 0.82f * sunb * (1 - rs * 0.28f) * (1 - ts * 0.3f);
   setup_light(last_bolt > 0 ? 1 : sunb);   /* (a lightning flash lights everything) */
   night = day < 0.5f;
   /* the sun's direction: it rises in the east (+X) */
@@ -1986,42 +1995,29 @@ void render_frame(const Camera *c, uint32_t tod) {
   sun_z = 0;
   sun_tx = -cosf(sa), sun_ty = -sinf(sa);   /* (the sky's turn) */
   cos_c = cosf(sa), sin_c = sinf(sa);
-  moon_phase = (int)((tod / 24000) % 8);
-  /* World.getStarBrightness, added as RenderGlobal blends it (its square) */
+  moon_phase = (int)((tod / DAY_TICKS) % 6);   /* (six faces, one a night) */
+  /* the stars, coming out as the sun goes down */
   {
-    float f = 1 - (cosf(sa) * 2 + 0.25f);
+    float f = (0.05f - high) / 0.35f;
     f = f < 0 ? 0 : f > 1 ? 1 : f;
-    float k = f * f * 0.5f * (1 - rain_str);
+    float k = f * 0.6f * (1 - rain_str);
     star_k = (int)(k * k * 255);
   }
-  /* the sky's colour from the biome's temperature (1.8: HSB), and the fog's */
+  /* the sky's colour from the biome's temperature, and the fog's */
   int col = (int)(oz) * VCX + (int)(ox);
   if (col < 0 || col >= VCX * VCZ) col = 0;
   float temp = biome_temp[vbiome[col]] / 50.0f / 3.0f;
   if (temp < -1) temp = -1;
   if (temp > 1) temp = 1;
-  float h = 0.62222224f - temp * 0.05f, s = 0.5f + temp * 0.1f;
-  /* HSB to RGB, brightness 1 */
-  float hh = (h - floorf(h)) * 6, ff = hh - floorf(hh);
-  float p = 1 - s, q = 1 - s * ff, tt = 1 - s * (1 - ff);
-  float R, G, B;
-  switch ((int)hh) {
-    case 0: R = 1, G = tt, B = p; break;
-    case 1: R = q, G = 1, B = p; break;
-    case 2: R = p, G = 1, B = tt; break;
-    case 3: R = p, G = q, B = 1; break;
-    case 4: R = tt, G = p, B = 1; break;
-    default: R = 1, G = p, B = q; break;
-  }
+  /* NumBlocks' sky: a deep turquoise overhead (greener where it is hot, bluer where it is cold) going
+   * down to a pale mint-cream haze at the horizon (the fog's colour, below) */
+  float k = (temp + 1) / 2;
+  float R = 0.16f + 0.08f * k, G = 0.56f + 0.06f * k, B = 0.80f - 0.10f * k;
   float sr = R * day, sg = G * day, sbl = B * day;
-  /* World.getSkyColor: rain and storms turn it grey */
-  if (rs > 0) {
-    float lum = (sr * 0.3f + sg * 0.59f + sbl * 0.11f) * 0.6f, k = 1 - rs * 0.75f;
-    sr = sr * k + lum * (1 - k), sg = sg * k + lum * (1 - k), sbl = sbl * k + lum * (1 - k);
-  }
-  if (ts > 0) {
-    float lum = (sr * 0.3f + sg * 0.59f + sbl * 0.11f) * 0.2f, k = 1 - ts * 0.75f;
-    sr = sr * k + lum * (1 - k), sg = sg * k + lum * (1 - k), sbl = sbl * k + lum * (1 - k);
+  /* rain and storms turn it grey */
+  {   /* (towards a grey of the sky's mean: a light one in rain, a dark one in a storm) */
+    float grey = (sr + sg + sbl) / 3 * (0.7f - ts * 0.4f), k = rs * 0.6f + ts * 0.2f;
+    if (k > 0) sr += (grey - sr) * k, sg += (grey - sg) * k, sbl += (grey * 1.05f - sbl) * k;
   }
   if (last_bolt > 0) {
     /* the flash: towards a pale blue */
@@ -2032,16 +2028,17 @@ void render_frame(const Camera *c, uint32_t tod) {
   sky_r = (int)(sr * 255);
   sky_g = (int)(sg * 255);
   sky_b = (int)(sbl * 255);
-  float fr = 0.7529412f * (day * 0.94f + 0.06f), fg = 0.84705883f * (day * 0.94f + 0.06f), fb = 1.0f * (day * 0.91f + 0.09f);
-  /* 1.8 mixes the fog towards the sky at short view distances, then darkens it in rain and storms */
-  /* WorldProvider.calcSunriseSunsetColors; facing the sun, the fog takes the colour */
+  float fr = 0.90f * (day * 0.94f + 0.06f), fg = 0.95f * (day * 0.94f + 0.06f), fb = 0.86f * (day * 0.88f + 0.12f);
+  /* the fog goes towards the sky at short view distances, and darkens in rain and storms */
+  /* NumBlocks' dawn and dusk: an orange-pink glow while the sun is near the horizon, strongest as it
+   * crosses it; facing the sun, the fog takes the colour */
   ss_a = 0;
   {
     float f1 = cosf(ang * 6.2831853f);
-    if (f1 >= -0.4f && f1 <= 0.4f) {
-      float f3 = f1 / 0.4f * 0.5f + 0.5f, f4 = 1 - (1 - sinf(f3 * 3.14159265f)) * 0.99f;
-      ss_a = f4 * f4;
-      ss_r = (int)((f3 * 0.3f + 0.7f) * 255), ss_g = (int)((f3 * f3 * 0.7f + 0.2f) * 255), ss_b = (int)(0.2f * 255);
+    if (f1 >= -0.35f && f1 <= 0.35f) {
+      float t = f1 / 0.35f * 0.5f + 0.5f, g = 1 - fabsf(f1) / 0.35f;
+      ss_a = g * g * 0.85f;
+      ss_r = 255, ss_g = (int)((0.45f + 0.25f * t) * 255), ss_b = (int)((0.35f + 0.15f * t) * 255);
       ss_side = -sinf(ang * 6.2831853f) > 0 ? 1 : -1;
       float f5 = fwx * ss_side;
       if (f5 > 0) {
@@ -2051,25 +2048,18 @@ void render_frame(const Camera *c, uint32_t tod) {
       }
     }
   }
-  fr += (sr - fr) * 0.26f;
-  fg += (sg - fg) * 0.26f;
-  fb += (sbl - fb) * 0.26f;
-  fr *= (1 - rs * 0.5f) * (1 - ts * 0.5f);
-  fg *= (1 - rs * 0.5f) * (1 - ts * 0.5f);
-  fb *= (1 - rs * 0.4f) * (1 - ts * 0.5f);
-  /* World.getCloudColour */
+  fr += (sr - fr) * 0.12f;
+  fg += (sg - fg) * 0.12f;
+  fb += (sbl - fb) * 0.12f;
   {
-    float cr = 1, cg = 1, cbl = 1;
-    if (rs > 0) {
-      float lum = 0.6f, k = 1 - rs * 0.95f;
-      cr = cg = cbl = k + lum * (1 - k);
-    }
-    cr *= day * 0.9f + 0.1f, cg *= day * 0.9f + 0.1f, cbl *= day * 0.85f + 0.15f;
-    if (ts > 0) {
-      float lum = (cr * 0.3f + cg * 0.59f + cbl * 0.11f) * 0.2f, k = 1 - ts * 0.95f;
-      cr = cr * k + lum * (1 - k), cg = cg * k + lum * (1 - k), cbl = cbl * k + lum * (1 - k);
-    }
-    cloud_r = (int)(cr * 255), cloud_g = (int)(cg * 255), cloud_b = (int)(cbl * 255);
+    float dim = (1 - rs * 0.45f) * (1 - ts * 0.35f);
+    fr *= dim, fg *= dim, fb *= dim;
+  }
+  /* the clouds: white by day, slate at night, greyer under rain and darker in a storm */
+  {
+    /* (our clouds: a warm cream, faintly pink underneath the light) */
+    float lit = 0.12f + 0.88f * day, wet = 1 - rs * 0.35f - ts * 0.35f;
+    cloud_r = (int)(255 * lit * wet), cloud_g = (int)(244 * lit * wet), cloud_b = (int)(232 * lit * wet + 10);
   }
   sun_a = 1 - rs;
   fog_r = (int)(fr * 255);
@@ -2102,7 +2092,7 @@ void render_frame(const Camera *c, uint32_t tod) {
       sky_top = (k / (MCZ * MCX) + 1) * 4;
       break;
     }
-  cloud_off = (tod % 24000) * 0.03f;
+  cloud_off = (tod % DAY_TICKS) * 0.04f;
 
   /* the block being broken */
   brk_i = -1;
diff --git a/games/numblocks/src/save.c b/games/numblocks/src/save.c
index d25aea5..3b46314 100644
--- a/games/numblocks/src/save.c
+++ b/games/numblocks/src/save.c
@@ -1,6 +1,6 @@
 /* Saving: each world's record (its name, seed, the time, the weather, the player, chests and
  * furnaces) next to the records of its changed blocks (edits.c), and the options. A world
- * saves every 45 seconds of play, as Minecraft does, and when you quit; block changes reach
+ * saves every 45 seconds of play and when you quit; block changes reach
  * storage as they fill the journal. Worlds live in slots: the records of slot 3 are
  * "nb3.nbw" and "nb3r..." (its regions). */
 #include <stddef.h>
@@ -174,7 +174,7 @@ bool load_world(int s) {
   world_seed = h.h2.h.seed;
   game_time = h.h2.h.time;
   world_cheats = h.cheats, lan_open = lan_cheats = false, game_rules = h.rules, world_type = h.type;
-  /* World.calculateInitialWeather */
+  /* the weather as saved, at full strength */
   weather = h.h2.h.weather;
   rain_str = weather.raining ? 1 : 0;
   thunder_str = weather.thundering ? 1 : 0;
diff --git a/games/numblocks/src/tick.c b/games/numblocks/src/tick.c
index e0606bc..c192433 100644
--- a/games/numblocks/src/tick.c
+++ b/games/numblocks/src/tick.c
@@ -1,464 +1,368 @@
-/* The world's own changes: liquids flowing (BlockDynamicLiquid), random
- * block ticks (WorldServer.updateBlocks: 3 random blocks a 16 x 16 x 16
- * section each tick): crops and saplings grow, grass spreads and dies,
- * leaves far from a log decay, sugar cane and cactus grow; and the weather
- * (World.updateWeather): rain, thunder, snow piling up, water freezing; and
- * fire (BlockFire): it spreads to what burns and burns it away. */
+/* The world's own life (NumBlocks' rules, Calcade, 19 October 2026):
+ *  - liquids: a source keeps itself; below it falls, beside it spreads thinner one step a move
+ *    (water reaches 6 blocks, lava 3), towards a drop beside it if there is one; what is no longer
+ *    fed dries up step by step; three sources around a block of water make it a source;
+ *  - fire: it eats what burns (each kind of block its own appetite), lights the air by fuel
+ *    near it, grows old and goes out, and rain puts it out;
+ *  - growing: a few blocks of the world are picked each tick: grass spreads in the light and dies in
+ *    the dark, crops ripen, saplings become trees, canes and cacti climb, leaves without a log near
+ *    them fall, farmland dries;
+ *  - the sky: a day of DAY_TICKS ticks, rain and storms that come and go, lightning, snow and ice. */
 #include <math.h>
 #include <stdlib.h>
 #include "nb.h"
 
-static const int8_t NX[6] = {0, 0, 0, 0, -1, 1}, NY[6] = {-1, 1, 0, 0, 0, 0}, NZ[6] = {0, 0, -1, 1, 0, 0};
+static const int8_t SX[6] = {1, -1, 0, 0, 0, 0}, SY[6] = {0, 0, 0, 0, 1, -1}, SZ[6] = {0, 0, 1, -1, 0, 0};
 extern uint32_t game_time;
 
-/* ---------------------------------------------------------------- liquids */
+/* ---------------------------------------------------------------- the queue of things to do later */
 typedef struct {
   int16_t x, z;
-  uint8_t y, age;   /* (age: a fire's, 0 to 15: its block state's in Minecraft) */
-  uint16_t due;     /* the tick it runs (low 16 bits of ticks_run) */
-} Pending;
-#define N_PENDING 160
-static Pending pend[N_PENDING];
-static int npend;
+  uint8_t y, age;   /* (a fire's age) */
+  uint16_t at;      /* the tick (low 16 bits of ticks_run) */
+} Job;
+#define N_JOBS 160
+static Job jobs[N_JOBS];
+static int njobs;
+
+static void later(int x, int y, int z, int ticks, int age) {
+  for (int i = 0; i < njobs; i++)
+    if (jobs[i].x == x && jobs[i].y == y && jobs[i].z == z) return;
+  if (njobs < N_JOBS) jobs[njobs++] = (Job){(int16_t)x, (int16_t)z, (uint8_t)y, (uint8_t)age, (uint16_t)(ticks_run + ticks)};
+}
+
+/* ---------------------------------------------------------------- liquids */
+#define WATER_WAIT 6
+#define LAVA_WAIT 24
 
 void fluid_schedule(int x, int y, int z) {
   int b = world_get(x, y, z);
-  if (blk_model[b] != M_LIQUID) return;
-  for (int i = 0; i < npend; i++)
-    if (pend[i].x == x && pend[i].y == y && pend[i].z == z) return;
-  if (npend >= N_PENDING) return;
-  /* water moves every 5 ticks, lava every 30 */
-  pend[npend++] = (Pending){(int16_t)x, (int16_t)z, (uint8_t)y, 0, (uint16_t)(ticks_run + (is_lava(b) ? 30 : 5))};
+  if (blk_model[b] == M_LIQUID) later(x, y, z, is_lava(b) ? LAVA_WAIT : WATER_WAIT, 0);
 }
 
-static int level_of(int b) { return blk_meta[b]; }   /* 0 source, 1-7 flowing, 8 falling */
-static int liquid(int water, int level) {
-  if (water) {
-    if (level == 0) return B_WATER;
-    if (level >= 8) return B_FALLING_WATER;
-    return level == 1 ? B_FLOWING_WATER : B_FLOWING_WATER_2 + level - 2;
-  }
-  if (level == 0) return B_LAVA;
-  if (level >= 8) return B_FALLING_LAVA;
-  return level <= 2 ? B_FLOWING_LAVA : level <= 4 ? B_FLOWING_LAVA_4 : B_FLOWING_LAVA_6;
+/* a liquid's thinness: 0 a source, 1 to 7 thinner, 8 falling (the block's variant) */
+static int thin(int b) { return blk_meta[b]; }
+static int water_block(int t) {
+  return t == 0 ? B_WATER : t >= 8 ? B_FALLING_WATER : t == 1 ? B_FLOWING_WATER : B_FLOWING_WATER_2 + t - 2;
 }
-static bool same(int water, int b) { return water ? is_water(b) : is_lava(b); }
+static int lava_block(int t) {
+  return t == 0 ? B_LAVA : t >= 8 ? B_FALLING_LAVA : t <= 2 ? B_FLOWING_LAVA : t <= 4 ? B_FLOWING_LAVA_4 : B_FLOWING_LAVA_6;
+}
+static bool kin(bool water, int b) { return water ? is_water(b) : is_lava(b); }
 
-/* can the liquid flow into this block (BlockDynamicLiquid.canFlowInto)? */
-static bool open_to(int water, int b) {
-  if (same(water, b)) return false;
-  if (water && is_lava(b)) return false;   /* water never flows into lava: the lava turns to stone */
-  if (!water && is_water(b)) return true;
-  if (b == B_AIR) return true;
-  if (blk_flags[b] & BF_SOLID) return false;
-  /* plants, torches, snow... are washed away (doors, ladders and signs stop it) */
+/* the liquid may take this block's place (washing a plant or a torch away) */
+static bool takes(bool water, int b) {
+  if (b == B_AIR || b == B_FIRE) return true;
+  if (kin(water, b) || (blk_flags[b] & BF_SOLID)) return false;
+  if (is_water(b) || is_lava(b)) return true;   /* (the other liquid: they meet, see below) */
   int m = blk_model[b];
-  return m == M_CROSS || m == M_TORCH || m == M_FLAT || m == M_LAYER || m == M_VINE;   /* (and fire) */
+  return m == M_CROSS || m == M_TORCH || m == M_FLAT || m == M_LAYER || m == M_VINE;
 }
 
-static void set(int x, int y, int z, int b) {
+static void put(int x, int y, int z, int b) {
   world_set(x, y, z, b);
   neighbours_changed(x, y, z);
 }
 
-/* lava touching water (BlockLiquid.checkForMixing): obsidian from a source, cobblestone from flowing */
-static bool mix(int x, int y, int z, int b) {
+/* lava and water meeting: lava sources harden to obsidian, the rest of the lava to cobblestone */
+static bool meet(int x, int y, int z, int b) {
   if (!is_lava(b)) return false;
-  for (int f = 1; f < 6; f++)
-    if (is_water(world_get(x + NX[f], y + NY[f], z + NZ[f]))) {
-      int lv = level_of(b);
-      if (lv == 0) set(x, y, z, B_OBSIDIAN);
-      else if (lv <= 4) set(x, y, z, B_COBBLESTONE);
-      else continue;
+  for (int f = 0; f < 6; f++)
+    if (f != 5 && is_water(world_get(x + SX[f], y + SY[f], z + SZ[f]))) {
+      put(x, y, z, thin(b) == 0 ? B_OBSIDIAN : B_COBBLESTONE);
       return true;
     }
   return false;
 }
 
-static void flow_into(int water, int x, int y, int z, int level) {
+static void pour(bool water, int x, int y, int z, int t) {
   int b = world_get(x, y, z);
-  if (!open_to(water, b)) return;
-  if (!water && is_water(b)) {
-    set(x, y, z, B_STONE);   /* lava flowing onto water */
+  if (!takes(water, b)) return;
+  if (kin(!water, b)) {   /* into the other liquid: water over a lava source makes obsidian */
+    put(x, y, z, water && thin(b) == 0 ? B_OBSIDIAN : B_COBBLESTONE);
     return;
   }
-  if (b != B_AIR && !(water ? is_lava(b) : is_water(b))) break_block_at(x, y, z, true);
-  set(x, y, z, liquid(water, level));
-}
-
-/* how far (up to 4 for water, 2 for lava) a way down is going this way, 1000 if none */
-static int slope_dist(int water, int x, int y, int z, int dist, int from, int max) {
-  int best = 1000;
-  for (int f = 2; f < 6; f++) {
-    if (f == (from ^ 1)) continue;
-    int nx = x + NX[f], nz = z + NZ[f];
-    int b = world_get(nx, y, nz);
-    if ((blk_flags[b] & BF_SOLID) || (same(water, b) && level_of(b) == 0)) continue;
-    if (open_to(water, world_get(nx, y - 1, nz)) || same(water, world_get(nx, y - 1, nz))) return dist;
-    if (dist < max) {
-      int d = slope_dist(water, nx, y, nz, dist + 1, f, max);
-      if (d < best) best = d;
-    }
-  }
-  return best;
+  if (b != B_AIR && b != B_FIRE) break_block_at(x, y, z, true);
+  put(x, y, z, water ? water_block(t) : lava_block(t));
 }
 
-static void fluid_update(int x, int y, int z) {
+static void liquid_move(int x, int y, int z) {
   int b = world_get(x, y, z);
-  if (blk_model[b] != M_LIQUID) return;
-  int water = is_water(b);
-  if (mix(x, y, z, b)) return;
-  int level = level_of(b), decay = water ? 1 : 2;
-  if (level > 0) {
-    /* the level it should have: from the lowest neighbour, or falling from above */
-    int lowest = -1, sources = 0;
-    for (int f = 2; f < 6; f++) {
-      int n = world_get(x + NX[f], y, z + NZ[f]);
-      if (!same(water, n)) continue;
-      int l = level_of(n);
-      if (l == 0) sources++;
-      if (l >= 8) l = 0;
-      if (lowest < 0 || l < lowest) lowest = l;
-    }
-    int nl = lowest < 0 ? -1 : lowest + decay;
-    if (nl >= 8) nl = -1;
-    int above = world_get(x, y + 1, z);
-    if (same(water, above)) nl = 8;   /* falling */
-    /* two sources beside it and something under: a new source (infinite water) */
-    if (water && sources >= 2) {
-      int under = world_get(x, y - 1, z);
-      if ((blk_flags[under] & BF_SOLID) || (is_water(under) && level_of(under) == 0)) nl = 0;
+  if (blk_model[b] != M_LIQUID || meet(x, y, z, b)) return;
+  bool water = is_water(b);
+  int step = water ? 1 : 2, reach = water ? 6 : 6;   /* (lava: 2, 4, 6: three blocks) */
+  int t = thin(b);
+  if (t) {
+    /* what feeds it: liquid above (it falls), or the thinnest beside it */
+    int feed = 99, sources = 0;
+    for (int f = 0; f < 4; f++) {
+      int n = world_get(x + SX[f], y, z + SZ[f]);
+      if (!kin(water, n)) continue;
+      int nt = thin(n) >= 8 ? 0 : thin(n);
+      if (thin(n) == 0) sources++;
+      if (nt < feed) feed = nt;
     }
-    if (nl != level) {
-      if (nl < 0) {
-        set(x, y, z, B_AIR);
-        return;
-      }
-      level = nl;
-      set(x, y, z, liquid(water, level));
+    int want = kin(water, world_get(x, y + 1, z)) ? 8 : feed + step;
+    int below = world_get(x, y - 1, z);
+    if (water && sources >= 3 && ((blk_flags[below] & BF_SOLID) || (is_water(below) && !thin(below)))) want = 0;
+    if (want > reach && want != 8) {
+      /* not fed: thinner, then gone */
+      int nt = t >= 8 ? reach - step + 1 : t + step;
+      if (nt > reach) put(x, y, z, B_AIR);
+      else put(x, y, z, water ? water_block(nt) : lava_block(nt));
+      return;
     }
+    if (want != t) put(x, y, z, water ? water_block(want) : lava_block(want)), t = want;
   }
-  /* down first, then sideways towards the nearest way down */
   int under = world_get(x, y - 1, z);
-  if (y > 0 && open_to(water, under)) {
-    if (!water && is_water(under)) set(x, y - 1, z, B_STONE);
-    else flow_into(water, x, y - 1, z, 8);
+  if (y > 0 && takes(water, under)) {
+    pour(water, x, y - 1, z, 8);
     return;
   }
-  if (level == 0 || (!same(water, under) && !open_to(water, under))) {
-    int next = level >= 8 ? decay : level + decay;
-    if (next >= 8) return;
-    int dist[4], best = 1000, max = water ? 4 : 2;
-    for (int f = 2; f < 6; f++) {
-      int nx = x + NX[f], nz = z + NZ[f];
-      int n = world_get(nx, y, nz);
-      dist[f - 2] = 1000;
-      if ((blk_flags[n] & BF_SOLID) || (same(water, n) && level_of(n) == 0)) continue;
-      dist[f - 2] = open_to(water, world_get(nx, y - 1, nz)) || same(water, world_get(nx, y - 1, nz))
-                        ? 0
-                        : slope_dist(water, nx, y, nz, 1, f, max);
-      if (dist[f - 2] < best) best = dist[f - 2];
-    }
-    for (int f = 2; f < 6; f++)
-      if (dist[f - 2] == best || best == 1000) flow_into(water, x + NX[f], y, z + NZ[f], next);
+  if (kin(water, under) && t) return;   /* (thin liquid over liquid stays put) */
+  int nt = (t >= 8 ? 0 : t) + step;
+  if (nt > reach) return;
+  /* beside it: towards a drop beside it if there is one, else every way */
+  bool drop[4], any = false;
+  for (int f = 0; f < 4; f++) {
+    int nx = x + SX[f], nz = z + SZ[f];
+    drop[f] = takes(water, world_get(nx, y, nz)) && takes(water, world_get(nx, y - 1, nz));
+    any |= drop[f];
   }
-}
-
-static void fire_update(int x, int y, int z, int age);
-static void fluids_tick(void) {
-  uint16_t now = (uint16_t)ticks_run;
-  int done = 0;
-  for (int i = 0; i < npend && done < 24;) {
-    if ((int16_t)(now - pend[i].due) < 0) {
-      i++;
-      continue;
-    }
-    Pending p = pend[i];
-    pend[i] = pend[--npend];
-    if (!world_loaded(p.x, p.y, p.z)) continue;
-    if (world_get(p.x, p.y, p.z) == B_FIRE) fire_update(p.x, p.y, p.z, p.age);
-    else fluid_update(p.x, p.y, p.z);
-    done++;
+  for (int f = 0; f < 4; f++) {
+    int nx = x + SX[f], nz = z + SZ[f], n = world_get(nx, y, nz);
+    if (any && !drop[f]) continue;
+    if (kin(water, n) && (thin(n) >= 8 ? 0 : thin(n)) <= nt) continue;
+    pour(water, nx, y, nz, nt);
   }
 }
 
 /* ---------------------------------------------------------------- fire */
-/* Blocks.fire.setFireInfo: how readily a block sets fire to the air by it, and burns away (0: never) */
-static int fire_enc(int b) {
-  switch (blk_id[b]) {
-    case 5: case 125: case 126: case 85: case 107: case 53: case 134: case 135: case 136: case 163: case 164:
-    case 17: case 162: case 173: return 5;
-    case 18: case 161: case 47: case 35: return 30;
-    case 46: case 106: return 15;
-    case 31: case 175: case 37: case 38: case 32: case 170: case 171: return 60;
-  }
-  return 0;
-}
-static int fire_flam(int b) {
-  switch (blk_id[b]) {
-    case 5: case 125: case 126: case 85: case 107: case 53: case 134: case 135: case 136: case 163: case 164:
-    case 47: case 170: case 171: return 20;
-    case 17: case 162: case 173: return 5;
-    case 18: case 161: case 35: return 60;
-    case 46: case 106: case 31: case 175: case 37: case 38: case 32: return 100;
-  }
-  return 0;
-}
-static int fire_near(int x, int y, int z) {   /* BlockFire.getNeighborEncouragement: the most of the six */
+/* how readily each kind of block catches (lights the air by it) and is eaten (0: never) */
+typedef struct { uint8_t catches, eaten; } Fuel;
+static Fuel fuel(int b) {
+  int m = blk_model[b];
+  if (m == M_LEAVES) return (Fuel){25, 50};
+  if (b >= B_WOOL_WHITE && b <= B_WOOL_BLACK) return (Fuel){25, 50};
+  if (b == B_TNT) return (Fuel){15, 90};
+  if (b == B_VINE) return (Fuel){15, 90};
+  if (b == B_HAY_BALE) return (Fuel){50, 50};
+  if (b == B_BOOKSHELF) return (Fuel){25, 25};
+  if (m == M_CROSS && b != B_FIRE && !(b >= B_WHEAT_0 && b <= B_POTATOES_3)) return (Fuel){50, 90};
+  if ((b >= B_LOG_OAK && b <= B_LOG_JUNGLE_BARK) || (b >= B_LOG_ACACIA && b <= B_LOG_DARK_OAK_BARK)) return (Fuel){4, 4};
+  if ((b >= B_PLANKS_OAK && b <= B_PLANKS_DARK_OAK) || (b >= B_WOOD_SLAB_OAK && b <= B_WOOD_SLAB_DARK_OAK) ||
+      b == B_WOOD_SLAB_OLD || b == B_FENCE_OAK || b == B_OAK_STAIRS || b == B_OAK_STAIRS_N || b == B_OAK_STAIRS_S ||
+      b == B_OAK_STAIRS_W ||
+      b == B_CRAFTING_TABLE || b == B_CHEST)
+    return (Fuel){6, 16};
+  return (Fuel){0, 0};
+}
+static int hunger_near(int x, int y, int z) {   /* the most a neighbour catches */
   int m = 0;
   for (int f = 0; f < 6; f++) {
-    int e = fire_enc(world_get(x + NX[f], y + NY[f], z + NZ[f]));
-    if (e > m) m = e;
+    int c = fuel(world_get(x + SX[f], y + SY[f], z + SZ[f])).catches;
+    if (c > m) m = c;
   }
   return m;
 }
-/* BlockFire.canPlaceBlockAt: on a solid top, or by something that burns */
 bool fire_can_stay(int x, int y, int z) {
-  return (blk_flags[world_get(x, y - 1, z)] & BF_OPAQUE) || fire_near(x, y, z) > 0;
+  return (blk_flags[world_get(x, y - 1, z)] & BF_OPAQUE) || hunger_near(x, y, z) > 0;
 }
-/* BlockFire.canDie: rain falls on it or by it */
-static bool rained_on(int x, int y, int z) {
-  return rain_at(x, y, z) || rain_at(x - 1, y, z) || rain_at(x + 1, y, z) || rain_at(x, y, z - 1) || rain_at(x, y, z + 1);
-}
-static void fire_schedule(int x, int y, int z, int age) {
-  for (int i = 0; i < npend; i++)
-    if (pend[i].x == x && pend[i].y == y && pend[i].z == z) return;
-  if (npend >= N_PENDING) return;
-  /* BlockFire.tickRate: 30, and up to 10 more */
-  pend[npend++] = (Pending){(int16_t)x, (int16_t)z, (uint8_t)y, (uint8_t)age, (uint16_t)(ticks_run + 30 + rnd(10))};
+static bool wet(int x, int y, int z) {
+  for (int f = 0; f < 4; f++)
+    if (rain_at(x + SX[f], y, z + SZ[f])) return true;
+  return rain_at(x, y, z);
 }
 void fire_set(int x, int y, int z, int age) {
   world_set(x, y, z, B_FIRE);
-  fire_schedule(x, y, z, age);
+  later(x, y, z, 25 + rnd(11), age);
 }
-/* BlockFire.catchOnFire: what burns may burn away (or catch, the fire young enough); TNT is lit */
-static void catch_fire(int x, int y, int z, int chance, int age) {
-  int b = world_get(x, y, z);
-  if (rnd(chance) >= fire_flam(b)) return;
-  if (rnd(age + 10) < 5 && !rain_at(x, y, z)) {
-    int a = age + rnd(5) / 4;
-    fire_set(x, y, z, a > 15 ? 15 : a);
-  } else
-    world_set(x, y, z, B_AIR);
-  neighbours_changed(x, y, z);
-  if (b == B_TNT) tnt_light(x, y, z, 80);
-}
-/* BlockFire.updateTick */
-static void fire_update(int x, int y, int z, int age) {
+static void burn(int x, int y, int z, int age) {
   if (!rule(GR_FIRE_TICK)) return;
-  bool raining = rain_str > 0.2f;
-  if (!fire_can_stay(x, y, z) || (raining && rained_on(x, y, z) && rndf() < 0.2f + age * 0.03f)) {
+  if (!fire_can_stay(x, y, z) || (rain_str > 0.2f && wet(x, y, z) && rnd(10) < 3)) {
     world_set(x, y, z, B_AIR);
     return;
   }
-  if (age < 15) age += rnd(3) / 2;
-  fire_schedule(x, y, z, age);
-  if (!fire_near(x, y, z)) {
-    /* nothing to burn: out, soon (at once off a solid top) */
-    if (!(blk_flags[world_get(x, y - 1, z)] & BF_OPAQUE) || age > 3) world_set(x, y, z, B_AIR);
+  if (age < 15 && rnd(2)) age++;
+  int fed = hunger_near(x, y, z);
+  if (!fed) {
+    if (age > 3 || !(blk_flags[world_get(x, y - 1, z)] & BF_OPAQUE)) world_set(x, y, z, B_AIR);
+    else later(x, y, z, 25 + rnd(11), age);
     return;
   }
-  if (!fire_enc(world_get(x, y - 1, z)) && age == 15 && rnd(4) == 0) {
+  if (age >= 15 && rnd(3) == 0) {
     world_set(x, y, z, B_AIR);
     return;
   }
-  for (int f = 0; f < 6; f++) catch_fire(x + NX[f], y + NY[f], z + NZ[f], f < 2 ? 250 : 300, age);
-  /* the air about it, above more than below: where it is next to something that burns */
-  for (int dy = -1; dy <= 4; dy++)
-    for (int dz = -1; dz <= 1; dz++)
-      for (int dx = -1; dx <= 1; dx++) {
-        if (!dx && !dy && !dz) continue;
-        int nx = x + dx, ny = y + dy, nz = z + dz;
-        if (world_get(nx, ny, nz) != B_AIR || !world_loaded(nx, ny, nz)) continue;
-        int e = fire_near(nx, ny, nz);
-        if (!e) continue;
-        int k = (e + 40 + opt.difficulty * 7) / (age + 30);
-        if (k > 0 && rnd(dy > 1 ? dy * 100 : 100) <= k && !(raining && rained_on(nx, ny, nz))) {
-          int a = age + rnd(5) / 4;
-          fire_set(nx, ny, nz, a > 15 ? 15 : a);
-        }
-      }
+  later(x, y, z, 25 + rnd(11), age);
+  /* its neighbours: eaten (gone, or burning in turn); TNT is lit */
+  for (int f = 0; f < 6; f++) {
+    int nx = x + SX[f], ny = y + SY[f], nz = z + SZ[f], b = world_get(nx, ny, nz);
+    Fuel u = fuel(b);
+    if (!u.eaten || rnd(400) >= u.eaten) continue;
+    if (b == B_TNT) {
+      world_set(nx, ny, nz, B_AIR);
+      tnt_light(nx, ny, nz, 70);
+    } else if (rnd(age + 8) < 4 && !rain_at(nx, ny, nz))
+      fire_set(nx, ny, nz, age + 1 > 15 ? 15 : age + 1);
+    else
+      world_set(nx, ny, nz, B_AIR);
+    neighbours_changed(nx, ny, nz);
+  }
+  /* new fires: four tries in the air about it (more above), where fuel is near */
+  for (int k = 0; k < 4; k++) {
+    int nx = x + rnd(3) - 1, ny = y + rnd(5) - 1, nz = z + rnd(3) - 1;
+    if (world_get(nx, ny, nz) != B_AIR || !world_loaded(nx, ny, nz)) continue;
+    int c = hunger_near(nx, ny, nz);
+    if (c && rnd(age * 4 + 40) < c + opt.difficulty * 4 && !(rain_str > 0.2f && wet(nx, ny, nz)))
+      fire_set(nx, ny, nz, age);
+  }
 }
-/* BlockStaticLiquid.updateTick: lava sets fire to what is about it, now and then */
-static void lava_fire(int x, int y, int z) {
-  int n = rnd(3);
-  if (n > 0) {
-    for (int j = 0; j < n; j++) {
-      x += rnd(3) - 1, y++, z += rnd(3) - 1;
-      int b = world_get(x, y, z);
-      if (b == B_AIR) {
-        if (fire_near(x, y, z) || fire_flam(world_get(x, y - 1, z))) {
-          fire_set(x, y, z, 0);
-          return;
-        }
-      } else if (blk_flags[b] & BF_SOLID)
-        return;
-    }
-  } else
-    for (int k = 0; k < 3; k++) {
-      int bx = x + rnd(3) - 1, bz = z + rnd(3) - 1;
-      if (world_get(bx, y + 1, bz) == B_AIR && fire_flam(world_get(bx, y, bz))) fire_set(bx, y + 1, bz, 0);
+/* lava lights what is near it, now and then */
+static void lava_sparks(int x, int y, int z) {
+  if (rnd(3)) return;
+  int fx = x + rnd(5) - 2, fy = y + 1 + rnd(2), fz = z + rnd(5) - 2;
+  if (world_get(fx, fy, fz) == B_AIR && hunger_near(fx, fy, fz)) fire_set(fx, fy, fz, 0);
+}
+
+static void jobs_tick(void) {
+  uint16_t now = (uint16_t)ticks_run;
+  for (int i = 0, done = 0; i < njobs && done < 24;) {
+    if ((int16_t)(now - jobs[i].at) < 0) {
+      i++;
+      continue;
     }
+    Job j = jobs[i];
+    jobs[i] = jobs[--njobs];
+    done++;
+    if (!world_loaded(j.x, j.y, j.z)) continue;
+    if (world_get(j.x, j.y, j.z) == B_FIRE) burn(j.x, j.y, j.z, j.age);
+    else liquid_move(j.x, j.y, j.z);
+  }
 }
 
 /* ---------------------------------------------------------------- growing */
-static bool soil(int b) { return b == B_GRASS || b == B_DIRT || b == B_PODZOL || b == B_COARSE_DIRT; }
-static void grow_tree(int x, int y, int z, int sapling);
-
-/* BlockSapling.grow: two stages, then a tree (the stage is not kept: half a chance) */
-void sapling_grow(int x, int y, int z) {
-  int b = world_get(x, y, z);
-  if (b >= B_SAPLING_OAK && b <= B_SAPLING_DARK_OAK && soil(world_get(x, y - 1, z)) && rnd(2)) grow_tree(x, y, z, b);
+static bool earth(int b) { return b == B_GRASS || b == B_DIRT || b == B_PODZOL || b == B_COARSE_DIRT; }
+static bool is_log(int n) {
+  return (n >= B_LOG_OAK && n <= B_LOG_JUNGLE_BARK) || (n >= B_LOG_ACACIA && n <= B_LOG_DARK_OAK_BARK);
 }
 
-/* WorldGenTrees: a small tree of this wood (oak, birch, spruce and the others alike), if there is room */
-static void grow_tree(int x, int y, int z, int sapling) {
+/* a sapling's tree, NumBlocks' shapes: a round crown (oak, birch, jungle, acacia, dark oak),
+ * a cone (spruce); only if there is room */
+static void tree_from(int x, int y, int z, int sapling) {
   int v = sapling - B_SAPLING_OAK;
   static const uint16_t logs[6] = {B_LOG_OAK, B_LOG_SPRUCE, B_LOG_BIRCH, B_LOG_JUNGLE, B_LOG_ACACIA, B_LOG_DARK_OAK};
   static const uint16_t leaves[6] = {B_LEAVES_OAK, B_LEAVES_SPRUCE, B_LEAVES_BIRCH, B_LEAVES_JUNGLE, B_LEAVES_ACACIA,
                                      B_LEAVES_DARK_OAK};
-  int h = 4 + rnd(3) + (v == 2 ? 1 : 0) + (v == 1 ? 2 : 0);
+  int h = (v == 1 ? 6 : v == 2 ? 5 : 4) + rnd(3);
+  if (y + h + 3 >= WORLD_H) return;
   for (int dy = 1; dy <= h + 1; dy++)
     for (int dz = -1; dz <= 1; dz++)
       for (int dx = -1; dx <= 1; dx++) {
         int b = world_get(x + dx, y + dy, z + dz);
         if (b != B_AIR && blk_model[b] != M_LEAVES && blk_model[b] != M_CROSS) return;
       }
-  if (y + h + 2 >= WORLD_H) return;
-  if (v == 1) {
-    /* spruce (WorldGenTaiga2): rings of leaves narrowing to the top */
-    int r = 0;
-    for (int dy = h; dy >= 2; dy--) {
-      for (int dz = -r; dz <= r; dz++)
-        for (int dx = -r; dx <= r; dx++)
-          if ((abs(dx) != r || abs(dz) != r || r == 0) && world_get(x + dx, y + dy, z + dz) == B_AIR)
-            world_set(x + dx, y + dy, z + dz, leaves[v]);
-      r = r >= 2 ? 1 : r + 1;
-    }
-    world_set(x, y + h + 1, z, leaves[v]);
-  } else {
-    /* oak and the others: four layers of leaves, the corners left out at random */
-    for (int dy = h - 3; dy <= h; dy++) {
-      int r = dy >= h - 1 ? 1 : 2;
-      for (int dz = -r; dz <= r; dz++)
-        for (int dx = -r; dx <= r; dx++) {
-          if (abs(dx) == r && abs(dz) == r && (dy == h || rnd(2) == 0)) continue;
-          if (world_get(x + dx, y + dy, z + dz) == B_AIR) world_set(x + dx, y + dy, z + dz, leaves[v]);
-        }
-    }
-  }
+  for (int dy = -3; dy <= 2; dy++)
+    for (int dz = -3; dz <= 3; dz++)
+      for (int dx = -3; dx <= 3; dx++) {
+        float r;
+        if (v == 1) r = (2 - dy) * 0.55f + 0.4f;                          /* the cone, widest low down */
+        else r = 2.6f - (dy * dy) * 0.25f - (v == 2 ? 0.6f : 0);          /* the ball (birch: narrower) */
+        if (r <= 0 || dx * dx + dz * dz > r * r || (dx == 0 && dz == 0 && dy < 1)) continue;
+        int ly = y + h - 1 + dy;
+        if (world_get(x + dx, ly, z + dz) == B_AIR && rnd(9)) world_set(x + dx, ly, z + dz, leaves[v]);
+      }
+  world_set(x, y + h + 1, z, leaves[v]);
   for (int dy = 0; dy < h; dy++) world_set(x, y + dy, z, logs[v]);
   world_set(x, y - 1, z, B_DIRT);
 }
 
-static void random_tick(int x, int y, int z) {
+void sapling_grow(int x, int y, int z) {
+  int b = world_get(x, y, z);
+  if (b >= B_SAPLING_OAK && b <= B_SAPLING_DARK_OAK && earth(world_get(x, y - 1, z))) tree_from(x, y, z, b);
+}
+
+static void grow(int x, int y, int z) {
   int b = world_get(x, y, z);
+  if (b == B_AIR) return;
   if (b == B_FIRE) {
-    fire_schedule(x, y, z, 8);
+    later(x, y, z, 10, 6);
     return;
   }
-  if (b == B_LAVA && rule(GR_FIRE_TICK)) {
-    lava_fire(x, y, z);
+  if (b == B_LAVA) {
+    if (rule(GR_FIRE_TICK)) lava_sparks(x, y, z);
     return;
   }
   int i = VC_I(x - vc_x0, y - vc_y0, z - vc_z0);
-  int above = world_get(x, y + 1, z);
-  int light = i + VCX * VCZ < VCY * VCZ * VCX && y + 1 - vc_y0 < VCY ? light_at(i + VCX * VCZ) : 15;
-  int blight = y + 1 - vc_y0 < VCY ? block_light_at(i + VCX * VCZ) : 0;
-  int lit = light > blight ? light : blight;
+  bool top_in = y + 1 - vc_y0 < VCY;
+  int sky = top_in ? light_at(i + VCX * VCZ) : 15, lamp = top_in ? block_light_at(i + VCX * VCZ) : 0;
+  int lit = sky - sky_sub() > lamp ? sky - sky_sub() : lamp, above = world_get(x, y + 1, z);
+  int ground = world_get(x, y - 1, z);
+  bool watered = ground == B_FARMLAND_WET;
   if (b == B_GRASS) {
-    /* BlockGrass: dies under something dark, else spreads to dirt nearby */
-    if (lit < 4 && (blk_flags[above] & BF_OPAQUE)) world_set(x, y, z, B_DIRT);
-    else if (lit >= 9)
-      for (int k = 0; k < 4; k++) {
-        int gx = x + rnd(3) - 1, gy = y + rnd(5) - 3, gz = z + rnd(3) - 1;
-        if (world_get(gx, gy, gz) == B_DIRT && !(blk_flags[world_get(gx, gy + 1, gz)] & BF_OPAQUE)) world_set(gx, gy, gz, B_GRASS);
-      }
-    return;
-  }
-  if (b >= B_WHEAT_0 && b < B_WHEAT_7) {
-    /* BlockCrops: in the light, now and then, faster on wet farmland */
-    if (lit >= 9 && rnd(world_get(x, y - 1, z) == B_FARMLAND_WET ? 7 : 13) == 0) world_set(x, y, z, b + 1);
-    return;
-  }
-  if ((b >= B_CARROTS_0 && b < B_CARROTS_3) || (b >= B_POTATOES_0 && b < B_POTATOES_3)) {
-    /* four looks for eight ages: half as likely to show a change */
-    if (lit >= 9 && rnd(world_get(x, y - 1, z) == B_FARMLAND_WET ? 14 : 26) == 0) world_set(x, y, z, b + 1);
-    return;
-  }
-  if (b == B_FARMLAND || b == B_FARMLAND_WET) {
-    /* wet with water within 4 blocks */
-    bool wet = false;
-    for (int dz = -4; dz <= 4 && !wet; dz++)
-      for (int dx = -4; dx <= 4 && !wet; dx++)
-        for (int dy = 0; dy <= 1 && !wet; dy++) wet = is_water(world_get(x + dx, y + dy, z + dz));
-    if (rain_at(x, y + 1, z)) wet = true;
-    if (wet != (b == B_FARMLAND_WET)) world_set(x, y, z, wet ? B_FARMLAND_WET : B_FARMLAND);
-    else if (!wet && !(above >= B_WHEAT_0 && above <= B_WHEAT_7) && rnd(4) == 0) world_set(x, y, z, B_DIRT);
-    return;
-  }
-  if (b >= B_SAPLING_OAK && b <= B_SAPLING_DARK_OAK) {
-    /* BlockSapling: 1 in 7 in the light, two stages */
-    if (lit >= 9 && rnd(7) == 0) sapling_grow(x, y, z);
-    return;
-  }
-  if (b == B_SUGAR_CANE || b == B_CACTUS) {
-    /* up to three high, one block every 16 ticks of its */
-    if (above == B_AIR && rnd(16) == 0) {
+    if (lit < 3 && (blk_flags[above] & BF_OPAQUE)) world_set(x, y, z, B_DIRT);
+    else if (sky >= 8) {
+      int gx = x + rnd(3) - 1, gy = y + rnd(4) - 2, gz = z + rnd(3) - 1;
+      if (world_get(gx, gy, gz) == B_DIRT && !(blk_flags[world_get(gx, gy + 1, gz)] & BF_OPAQUE))
+        world_set(gx, gy, gz, B_GRASS);
+    }
+  } else if (b >= B_WHEAT_0 && b < B_WHEAT_7) {
+    if (lit >= 8 && rnd(watered ? 6 : 10) == 0) world_set(x, y, z, b + 1);
+  } else if ((b >= B_CARROTS_0 && b < B_CARROTS_3) || (b >= B_POTATOES_0 && b < B_POTATOES_3)) {
+    if (lit >= 8 && rnd(watered ? 12 : 20) == 0) world_set(x, y, z, b + 1);
+  } else if (b == B_FARMLAND || b == B_FARMLAND_WET) {
+    bool near = rain_at(x, y + 1, z);
+    for (int dz = -3; dz <= 3 && !near; dz++)
+      for (int dx = -3; dx <= 3 && !near; dx++) near = is_water(world_get(x + dx, y, z + dz)) || is_water(world_get(x + dx, y + 1, z + dz));
+    if (near != (b == B_FARMLAND_WET)) world_set(x, y, z, near ? B_FARMLAND_WET : B_FARMLAND);
+    else if (!near && !(above >= B_WHEAT_0 && above <= B_POTATOES_3) && rnd(5) == 0) world_set(x, y, z, B_DIRT);
+  } else if (b >= B_SAPLING_OAK && b <= B_SAPLING_DARK_OAK) {
+    if (lit >= 8 && rnd(8) == 0) sapling_grow(x, y, z);
+  } else if (b == B_SUGAR_CANE || b == B_CACTUS) {
+    if (above == B_AIR && rnd(20) == 0) {
       int h = 1;
-      while (h < 3 && world_get(x, y - h, z) == b) h++;
-      if (h < 3) {
-        world_set(x, y + 1, z, b);
-        neighbours_changed(x, y + 1, z);
-      }
+      while (h < 4 && world_get(x, y - h, z) == b) h++;
+      if (h < 4) put(x, y + 1, z, b);
     }
-    return;
-  }
-  if (blk_model[b] == M_LEAVES) {
-    /* BlockLeaves: no log within 4 blocks: it decays */
-    for (int dy = -4; dy <= 4; dy++)
-      for (int dz = -4; dz <= 4; dz++)
-        for (int dx = -4; dx <= 4; dx++) {
-          int n = world_get(x + dx, y + dy, z + dz);
-          if ((n >= B_LOG_OAK && n <= B_LOG_JUNGLE_BARK) || (n >= B_LOG_ACACIA && n <= B_LOG_DARK_OAK_BARK)) return;
-          if (!world_loaded(x + dx, y + dy, z + dz)) return;
-        }
+  } else if (blk_model[b] == M_LEAVES) {
+    for (int dy = -3; dy <= 3; dy++)
+      for (int dz = -5; dz <= 5; dz++)
+        for (int dx = -5; dx <= 5; dx++)
+          if (is_log(world_get(x + dx, y + dy, z + dz)) || !world_loaded(x + dx, y + dy, z + dz)) return;
     break_block_at(x, y, z, true);
-    return;
+  } else if ((b == B_SNOW_LAYER || b == B_ICE) && block_light_at(i) > 10) {
+    world_set(x, y, z, b == B_ICE ? B_WATER : B_AIR);
   }
-  if (b == B_SNOW_LAYER && blight > 11) world_set(x, y, z, B_AIR);
-  if (b == B_ICE && blight > 11) world_set(x, y, z, B_WATER);
 }
 
-/* ---------------------------------------------------------------- weather */
+/* ---------------------------------------------------------------- the sky */
 Weather weather;
 float rain_str, thunder_str;
 
-/* the sun's angle in the sky (WorldProvider.calculateCelestialAngle) */
+/* the sun's turn: 0 noon, 0.25 dusk, 0.5 midnight, 0.75 dawn (time 0 is dawn) */
 float celestial(uint32_t t) {
-  float a = (t % 24000) / 24000.0f - 0.25f;
-  if (a < 0) a += 1;
-  return a + ((1 - (cosf(a * 3.14159265f) + 1) / 2) - a) / 3;
+  float a = (float)(t % DAY_TICKS) / DAY_TICKS - 0.25f;
+  return a < 0 ? a + 1 : a;
 }
 
-/* World.calculateSkylightSubtracted: 0 by day, 11 at night, more in rain and storms */
+/* how much darker the sky light is: 0 while the sun is up, up to 11 deep in the night; rain and
+ * storms darken it too */
 int sky_sub(void) {
-  float f = 1 - (cosf(celestial(game_time) * 6.2831853f) * 2 + 0.5f);
-  f = f < 0 ? 0 : f > 1 ? 1 : f;
-  f = (1 - f) * (1 - rain_str * 5 / 16) * (1 - thunder_str * rain_str * 5 / 16);
-  return (int)((1 - f) * 11);
+  float up = cosf(celestial(game_time) * 6.2831853f);   /* 1 noon, -1 midnight */
+  float dark = (0.2f - up) * 2.6f;
+  dark = dark < 0 ? 0 : dark > 1 ? 1 : dark;
+  float k = dark * 11 + rain_str * 2.5f + thunder_str * rain_str * 2;
+  return k > 11 ? 11 : (int)k;
 }
 
-/* BiomeGenBase.getFloatTemperature: colder higher up */
 float temp_at(int x, int y, int z) {
   int lx = x - vc_x0, lz = z - vc_z0;
   int b = (unsigned)lx < VCX && (unsigned)lz < VCZ ? vbiome[lz * VCX + lx] : 1;
   float t = biome_temp[b] / 50.0f;
-  if (y > 64) t -= (gen_temp_noise(x, z) * 4 + y - 64) * 0.05f / 30;
+  if (y > 64) t -= (y - 64 + gen_temp_noise(x, z) * 6) / 260.0f;   /* (snow on the mountain tops) */
   return t;
 }
 
-/* World.canLightningStrike: rain falls here (not snow), out under the sky */
 bool rain_at(int x, int y, int z) {
   if (rain_str <= 0.2f) return false;
   int lx = x - vc_x0, lz = z - vc_z0;
@@ -468,108 +372,85 @@ bool rain_at(int x, int y, int z) {
   return temp_at(x, y, z) > 0.15f;
 }
 
-/* World.updateWeather: clear for 10 minutes to 2.5 hours, then rain for 10 to 20;
- * storms come and go on their own clock but only show while it rains */
+/* dry spells of 8 000 to 128 000 ticks, rain for 9 000 to 19 000; storms keep their own clock */
 void weather_tick(void) {
-  if (weather.thunder_time <= 0) weather.thunder_time = weather.thundering ? rnd(12000) + 3600 : rnd(168000) + 12000;
+  if (weather.thunder_time <= 0) weather.thunder_time = weather.thundering ? 4000 + rnd(9000) : 10000 + rnd(150000);
   else if (--weather.thunder_time <= 0) weather.thundering = !weather.thundering;
-  thunder_str += weather.thundering ? 0.01f : -0.01f;
-  thunder_str = thunder_str < 0 ? 0 : thunder_str > 1 ? 1 : thunder_str;
-  if (weather.rain_time <= 0) weather.rain_time = weather.raining ? rnd(12000) + 12000 : rnd(168000) + 12000;
+  if (weather.rain_time <= 0) weather.rain_time = weather.raining ? 9000 + rnd(10000) : 8000 + rnd(120000);
   else if (--weather.rain_time <= 0) weather.raining = !weather.raining;
-  rain_str += weather.raining ? 0.01f : -0.01f;
+  rain_str += weather.raining ? 0.0125f : -0.0125f;
+  thunder_str += weather.thundering ? 0.0125f : -0.0125f;
   rain_str = rain_str < 0 ? 0 : rain_str > 1 ? 1 : rain_str;
+  thunder_str = thunder_str < 0 ? 0 : thunder_str > 1 ? 1 : thunder_str;
+}
+
+void weather_clear(void) {
+  weather.rain_time = weather.thunder_time = 0;
+  weather.raining = weather.thundering = 0;
 }
 
 /* ---------------------------------------------------------------- lightning */
 Bolt bolt;
 int last_bolt;
 
-/* EntityLightningBolt.onUpdate: what is within 3 blocks (and 6 up) is struck:
- * 5 damage, and set on fire for 8 seconds (Entity.onStruckByLightning) */
-static void bolt_strikes(void) {
-  if (fabsf(pl.x - bolt.x) < 3.3f && fabsf(pl.z - bolt.z) < 3.3f && pl.y + 1.8f > bolt.y - 3 && pl.y < bolt.y + 9) {
-    player_hurt(5, DMG_LIGHTNING);
-    if (pl.mode != 1 && pl.fire < 160) pl.fire = 160;
+static void zap_near(void) {
+  if (fabsf(pl.x - bolt.x) < 3 && fabsf(pl.z - bolt.z) < 3 && pl.y + PLAYER_H > bolt.y - 2 && pl.y < bolt.y + 8) {
+    player_hurt(4, DMG_LIGHTNING);
+    if (pl.mode != 1 && pl.fire < 140) pl.fire = 140;
   }
   for (int i = 0; i < N_ENT; i++) {
     Entity *e = &ents[i];
-    if (e->type >= E_ZOMBIE && e->type <= E_CHICKEN && fabsf(e->x - bolt.x) < 3.3f && fabsf(e->z - bolt.z) < 3.3f &&
-        e->y > bolt.y - 4 && e->y < bolt.y + 9)
+    if (e->type >= E_FIRST_MOB && e->type <= E_LAST_MOB && fabsf(e->x - bolt.x) < 3 && fabsf(e->z - bolt.z) < 3 &&
+        e->y > bolt.y - 3 && e->y < bolt.y + 8)
       mob_struck(e);
   }
 }
-
-/* EntityLightningBolt: on Normal and Hard it sets fire where it strikes (and the first time, about it) */
-static void bolt_fire(int n) {
+static void zap_fire(int n) {
   if (!rule(GR_FIRE_TICK) || opt.difficulty < 2) return;
-  int bx = (int)floorf(bolt.x), by = (int)floorf(bolt.y), bz = (int)floorf(bolt.z);
   for (int k = 0; k < n; k++) {
-    int fx = bx, fy = by, fz = bz;
-    if (k) fx += rnd(3) - 1, fy += rnd(3) - 1, fz += rnd(3) - 1;
+    int fx = (int)floorf(bolt.x) + (k ? rnd(3) - 1 : 0), fy = (int)floorf(bolt.y) + (k ? rnd(2) : 0),
+        fz = (int)floorf(bolt.z) + (k ? rnd(3) - 1 : 0);
     if (world_loaded(fx, fy, fz) && world_get(fx, fy, fz) == B_AIR && fire_can_stay(fx, fy, fz)) fire_set(fx, fy, fz, 0);
   }
 }
 void bolt_start(float x, float y, float z) {
   bolt.x = x, bolt.y = y, bolt.z = z;
-  bolt.on = 1, bolt.state = 2, bolt.living = (int8_t)(rnd(3) + 1), bolt.seed = (uint32_t)rnd(1 << 30);
-  bolt_fire(5);
+  bolt.on = 1, bolt.state = 3, bolt.living = (int8_t)(1 + rnd(2)), bolt.seed = (uint32_t)rnd(1 << 30);
+  zap_fire(3);
 }
-
 static void bolt_tick(void) {
   if (last_bolt > 0) last_bolt--;
-  /* WorldServer.updateBlocks: in a storm, each of the 225 chunks about the
-   * player is struck one tick in 100000, where rain falls on it, and a
-   * creature within 3 blocks draws it (adjustPosToNearbyEntity) */
-  if (!bolt.on && rain_str > 0.2f && thunder_str * rain_str > 0.9f && rnd(100000) < 225) {
-    int x = (int)floorf(pl.x) + rnd(225) - 112, z = (int)floorf(pl.z) + rnd(225) - 112, y = 64;
-    if (world_loaded(x, vc_y0, z)) {
-      y = world_rain_top(x, z);
-      if (y > WORLD_H || !rain_at(x, y, z)) return;
-    } else if (!rain_at((int)floorf(pl.x), WORLD_H, (int)floorf(pl.z)))
-      return;   /* (too far to know: where it rains on the player) */
-    float bx = x + 0.5f, by = (float)y, bz = z + 0.5f;
-    if (fabsf(pl.x - bx) < 3.5f && fabsf(pl.z - bz) < 3.5f && !pl.dead &&
-        pl.y >= world_rain_top((int)floorf(pl.x), (int)floorf(pl.z)))
-      bx = pl.x, by = pl.y, bz = pl.z;
-    bolt_start(bx, by, bz);
+  /* in a full storm: about one strike every 25 seconds somewhere within 100 blocks, where it rains */
+  if (!bolt.on && thunder_str * rain_str > 0.9f && rnd(500) == 0) {
+    int x = (int)floorf(pl.x) + rnd(201) - 100, z = (int)floorf(pl.z) + rnd(201) - 100;
+    if (!world_loaded(x, vc_y0, z)) return;
+    int y = world_rain_top(x, z);
+    if (y > WORLD_H || !rain_at(x, y, z)) return;
+    bolt_start(x + 0.5f, (float)y, z + 0.5f);
   }
   if (!bolt.on) return;
   if (--bolt.state < 0) {
-    if (bolt.living == 0) {
+    if (!bolt.living) {
       bolt.on = 0;
       return;
     }
-    if (bolt.state < -rnd(10)) bolt.living--, bolt.state = 1, bolt.seed = (uint32_t)rnd(1 << 30), bolt_fire(1);
-  }
-  if (bolt.state >= 0) {
-    last_bolt = 2;
-    bolt_strikes();
+    if (bolt.state < -4 - rnd(6)) bolt.living--, bolt.state = 2, bolt.seed = (uint32_t)rnd(1 << 30), zap_fire(1);
   }
+  if (bolt.state >= 0) last_bolt = 2, zap_near();
 }
 
-/* WorldProvider.resetRainAndThunder: after a night's sleep */
-void weather_clear(void) {
-  weather.rain_time = weather.thunder_time = 0;
-  weather.raining = weather.thundering = 0;
-}
-
-/* WorldServer.updateBlocks, one column in 16 chunks a tick: still water
- * freezes where it is cold, and snow settles while it falls */
-static void freeze_tick(void) {
-  if (rnd(16) >= VCX * VCZ / 256) return;
-  int x = vc_x0 + rnd(VCX), z = vc_z0 + rnd(VCZ);
-  int y = world_rain_top(x, z);
+/* a column now and then: still water freezes where it is cold, snow settles while it falls */
+static void frost(void) {
+  if (rnd(10)) return;
+  int x = vc_x0 + rnd(VCX), z = vc_z0 + rnd(VCZ), y = world_rain_top(x, z);
   if (y > WORLD_H || !world_loaded(x, y - 1, z) || !world_loaded(x, y, z)) return;
   int i = VC_I(x - vc_x0, y - vc_y0, z - vc_z0), below = world_get(x, y - 1, z);
-  /* World.canBlockFreeze: still water with something other than water beside it */
+  /* (open water freezes from its edges: a block beside it not water, or now and then anyway) */
   if (below == B_WATER && temp_at(x, y - 1, z) <= 0.15f && block_light_at(i - VCX * VCZ) < 10 &&
-      !(is_water(world_get(x - 1, y - 1, z)) && is_water(world_get(x + 1, y - 1, z)) &&
-        is_water(world_get(x, y - 1, z - 1)) && is_water(world_get(x, y - 1, z + 1)))) {
+      (!is_water(world_get(x + rnd(3) - 1, y - 1, z + rnd(3) - 1)) || rnd(6) == 0)) {
     world_set(x, y - 1, z, B_ICE);
-    below = B_ICE;
+    return;
   }
-  /* World.canSnowAt and BlockSnow.canPlaceBlockAt: on leaves or a solid cube, not on ice */
   if (rain_str > 0.2f && world_get(x, y, z) == B_AIR && temp_at(x, y, z) <= 0.15f && block_light_at(i) < 10 &&
       below != B_ICE && below != B_PACKED_ICE &&
       (blk_model[below] == M_LEAVES || ((blk_flags[below] & BF_OPAQUE) && blk_model[below] == M_CUBE)))
@@ -579,12 +460,8 @@ static void freeze_tick(void) {
 void world_tick(void) {
   weather_tick();
   bolt_tick();
-  freeze_tick();
-  fluids_tick();
-  /* about 3 a section: the cache is VCX x VCY x VCZ blocks */
-  int n = VCX * VCY * VCZ * 3 / 4096;
-  for (int k = 0; k < n; k++) {
-    int x = vc_x0 + rnd(VCX), y = vc_y0 + rnd(VCY), z = vc_z0 + rnd(VCZ);
-    random_tick(x, y, z);
-  }
+  frost();
+  jobs_tick();
+  int n = VCX * VCY * VCZ / 2048;   /* about two blocks a 16 x 16 x 16 piece of the world */
+  for (int k = 0; k < n; k++) grow(vc_x0 + rnd(VCX), vc_y0 + rnd(VCY), vc_z0 + rnd(VCZ));
 }
diff --git a/games/numblocks/src/world.c b/games/numblocks/src/world.c
index e3fc889..8d313ea 100644
--- a/games/numblocks/src/world.c
+++ b/games/numblocks/src/world.c
@@ -23,21 +23,21 @@ static uint32_t slab32[16 * 16 * VCY / 4];
 static inline int floordiv(int a, int b) { return a >= 0 ? a / b : -((-a + b - 1) / b); }
 static inline int ifloor(float v) { int i = (int)v; return v < (float)i ? i - 1 : i; }
 
-/* light stops at opaque blocks; leaves and water let some through (1.8: opacity 1 and 3) */
+/* light stops at opaque blocks; leaves and water let some through (opacity 1 and 2) */
 static inline int opacity(int b) {
   if (blk_flags[b] & BF_OPAQUE) return 15;
   int m = blk_model[b];
   if (m == M_LEAVES || b == B_COBWEB) return 1;
-  if (m == M_LIQUID) return 3;
+  if (m == M_LIQUID) return 2;
   return 0;
 }
 
 /* ---------------------------------------------------------------- light */
 /* Light in the box [x0,x1) x [y0,y1) x [z0,z1) of the cache, both kinds at
  * once. Sky light: 15 straight under the open sky; block light: what the
- * block gives (torch 14, lava and glowstone 15...). Then both spread sideways
+ * block gives (torch 13, lava 14, glowstone 15...). Then both spread sideways
  * and down, one level less a block (more through leaves and water), as
- * Minecraft's light does: in sweeps along each direction, twice. */
+ * light does in such games: in sweeps along each direction, twice. */
 static void light_box(int x0, int y0, int z0, int x1, int y1, int z1) {
   if (x0 < 0) x0 = 0;
   if (z0 < 0) z0 = 0;
@@ -176,11 +176,10 @@ static void fill_chunk(int cx, int cz, const uint8_t *keep, int oy, int ylo, int
       }
       if (!old_col) {
         vbiome[col] = (uint8_t)gen_biome(cx * 16 + x, cz * 16 + z);
-        int gt = gen_top(cx * 16 + x, cz * 16 + z), lt = gt;
+        int gt = gen_top(cx * 16 + x, cz * 16 + z), lt = gen_sky_top(cx * 16 + x, cz * 16 + z);
         vgtop[col] = (uint8_t)gt;
         /* the sky light's top is the highest block that stops light: snow layers, flowers, tall
          * grass on top let it all through (else they and what they stand on were lit too dark) */
-        for (int ly = gt - vc_y0; ly >= 0 && ly < VCY && opacity(vc[VC_I(lx, ly, lz)]) == 0; ly--) lt--;
         int t = edits_top(cx * 16 + x, cz * 16 + z, lt + 1);
         vtop[col] = (uint8_t)(t < 0 ? 0 : t > 255 ? 255 : t);
       }
diff --git a/games/numblocks/tests/gen_map/map.c b/games/numblocks/tests/gen_map/map.c
new file mode 100644
index 0000000..faa60e3
--- /dev/null
+++ b/games/numblocks/tests/gen_map/map.c
@@ -0,0 +1,24 @@
+/* A top-down map of a world (NumBlocks' generator): map SEED SIZE out.ppm */
+#include <stdio.h>
+#include <stdlib.h>
+#include "../../src/nb.h"
+#include "../../src/gen.h"
+int main(int argc, char **argv) {
+  long long seed = argc > 1 ? atoll(argv[1]) : 1;
+  int n = argc > 2 ? atoi(argv[2]) : 512;
+  gen_init(seed);
+  static const unsigned char C[BIO_COUNT][3] = {{30,60,160},{120,190,80},{230,210,140},{140,140,140},{40,130,50},
+    {60,110,90},{80,100,60},{60,110,220},{150,180,230},{240,240,250},{250,230,170},{110,170,90},{30,80,30},
+    {20,150,30},{190,180,90},{200,100,50},{170,200,240}};
+  FILE *f = fopen(argc > 3 ? argv[3] : "map.ppm", "wb");
+  fprintf(f, "P6 %d %d 255\n", n, n);
+  for (int z = 0; z < n; z++) for (int x = 0; x < n; x++) {
+    int X = (x - n / 2) * 4, Z = (z - n / 2) * 4, b = gen_biome(X, Z);
+    int t = gen_top(X, Z);
+    float k = 0.6f + (t - 50) / 120.0f;
+    for (int c = 0; c < 3; c++) { int v = (int)(C[b][c] * k); fputc(v > 255 ? 255 : v < 0 ? 0 : v, f); }
+  }
+  fclose(f);
+  int x, y, z; gen_spawn(&x, &y, &z); printf("spawn %d %d %d, ram %u\n", x, y, z, gen_ram_bytes());
+  return 0;
+}
diff --git a/games/numblocks/tests/play.c b/games/numblocks/tests/play.c
index e1ccda1..d5e1247 100644
--- a/games/numblocks/tests/play.c
+++ b/games/numblocks/tests/play.c
@@ -34,6 +34,7 @@ static uint32_t key_bit(const char *s) {
   return 0;
 }
 
+static int open_gui;
 int main(int argc, char **argv) {
   const char *out = "build/play", *shots = "";
   int give = 0, showcase = 0, title_screen = 0, mobs = 0, animals = 0, start_time = -1, torches = 0, water = 0, creative = 0, build = 0, rain = 0;
@@ -47,6 +48,7 @@ int main(int argc, char **argv) {
     else if (!strcmp(argv[i], "--give")) give = 1;
     else if (!strcmp(argv[i], "--showcase")) showcase = 1;
     else if (!strcmp(argv[i], "--title")) title_screen = 1;
+    else if (!strcmp(argv[i], "--open") && i + 1 < argc) open_gui = atoi(argv[++i]);   /* (a GUI_ screen at frame 5) */
     else if (!strcmp(argv[i], "--mobs")) mobs = 1;
     else if (!strcmp(argv[i], "--animals")) animals = 1;
     else if (!strcmp(argv[i], "--torches")) torches = 1;
@@ -147,7 +149,7 @@ int main(int argc, char **argv) {
         for (int y = fy - 1; y < fy + 8; y++) world_set(x, y, z, y == fy - 1 ? B_GRASS : B_AIR);
     for (int k = 0; k < 8; k++) {
       float x = pl.x - 5.6f + k * 1.6f, z = pl.z + 4.5f;
-      Entity *e = ent_new(E_ZOMBIE + k, x, (float)fy, z);
+      Entity *e = ent_new(E_MUDLING + k, x, (float)fy, z);
       if (e) e->health = 20, e->yaw = 180, e->gx = e->x, e->gz = e->z;
     }
   }
@@ -156,7 +158,7 @@ int main(int argc, char **argv) {
      * the player */
     float a = pl.yaw * 3.14159265f / 180, fx = -sinf(a), fz = cosf(a), rx = -cosf(a), rz = -sinf(a);
     static const struct { int type; float f, r; } herd[] = {
-      {E_SHEEP, 5.2f, -1.7f}, {E_COW, 7.5f, 1.2f}, {E_PIG, 4.6f, 1.9f}, {E_CHICKEN, 3.6f, -0.6f}};
+      {E_WOOLLY, 5.2f, -1.7f}, {E_HUMPOX, 7.5f, 1.2f}, {E_SNUFFLER, 4.6f, 1.9f}, {E_STRIDER, 3.6f, -0.6f}};
     for (unsigned k = 0; k < sizeof herd / sizeof herd[0]; k++) {
       float x = pl.x + fx * herd[k].f + rx * herd[k].r, z = pl.z + fz * herd[k].f + rz * herd[k].r;
       for (int y = (int)pl.y + 8; y > (int)pl.y - 12; y--) {
@@ -185,6 +187,11 @@ int main(int argc, char **argv) {
       if (f >= holds[i].a && f <= holds[i].b) host_keys |= holds[i].k;
     host_time += mspf;
     clock_t f0 = clock();
+    if (open_gui && f == 5) {
+      int bx = (int)pl.x + 2, by = (int)pl.y, bz = (int)pl.z;
+      world_set(bx, by, bz, open_gui == GUI_FURNACE ? B_FURNACE : open_gui == GUI_CHEST ? B_CHEST : B_CRAFTING_TABLE);
+      gui_open(open_gui, bx, by, bz);
+    }
     if (!game_frame()) break;
     double fms = (clock() - f0) * 1000.0 / CLOCKS_PER_SEC;
     if (fms > slowest) slowest = fms, slowest_at = f;
diff --git a/games/numblocks/tests/unit.c b/games/numblocks/tests/unit.c
index 2a2d6b9..5dc0bcc 100644
--- a/games/numblocks/tests/unit.c
+++ b/games/numblocks/tests/unit.c
@@ -17,55 +17,54 @@ static int craft(const int *ids, int w) {
 }
 
 int main(void) {
-  /* planks from a log, anywhere in the grid */
+  /* planks from a log, anywhere in the grid (3 of them) */
   int a[4] = {0, B_LOG_BIRCH, 0, 0};
-  CHECK(craft(a, 2) == B_PLANKS_BIRCH * 100 + 4);
-  /* sticks from any planks */
-  int b[4] = {B_PLANKS_JUNGLE, 0, B_PLANKS_OAK, 0};
-  CHECK(craft(b, 2) == I_STICK * 100 + 4);
-  /* crafting table */
-  int c[4] = {B_PLANKS_OAK, B_PLANKS_SPRUCE, B_PLANKS_OAK, B_PLANKS_OAK};
+  CHECK(craft(a, 2) == B_PLANKS_BIRCH * 100 + 3);
+  /* two sticks from one plank, of any wood */
+  int b[4] = {0, 0, B_PLANKS_JUNGLE, 0};
+  CHECK(craft(b, 2) == I_STICK * 100 + 2);
+  /* the crafting table: planks and sticks crossed */
+  int c[4] = {B_PLANKS_OAK, I_STICK, I_STICK, B_PLANKS_SPRUCE};
   CHECK(craft(c, 2) == B_CRAFTING_TABLE * 100 + 1);
-  /* a pickaxe needs the 3 x 3 grid */
-  int p[9] = {B_COBBLESTONE, B_COBBLESTONE, B_COBBLESTONE, 0, I_STICK, 0, 0, I_STICK, 0};
+  /* a pickaxe needs the 3 x 3 grid: an arrow-shaped head */
+  int p[9] = {0, B_COBBLESTONE, 0, B_COBBLESTONE, I_STICK, B_COBBLESTONE, 0, I_STICK, 0};
   CHECK(craft(p, 3) == I_STONE_PICKAXE * 100 + 1);
   /* an axe, mirrored */
-  int x1[9] = {I_IRON_INGOT, I_IRON_INGOT, 0, I_IRON_INGOT, I_STICK, 0, 0, I_STICK, 0};
-  int x2[9] = {0, I_IRON_INGOT, I_IRON_INGOT, 0, I_STICK, I_IRON_INGOT, 0, I_STICK, 0};
+  int x1[9] = {I_IRON_INGOT, I_IRON_INGOT, 0, I_IRON_INGOT, I_STICK, 0, 0, 0, I_STICK};
+  int x2[9] = {0, I_IRON_INGOT, I_IRON_INGOT, 0, I_STICK, I_IRON_INGOT, I_STICK, 0, 0};
   CHECK(craft(x1, 3) == I_IRON_AXE * 100 + 1);
   CHECK(craft(x2, 3) == I_IRON_AXE * 100 + 1);
-  /* torches from coal or charcoal */
-  int t1[4] = {I_COAL, 0, I_STICK, 0}, t2[4] = {0, I_CHARCOAL, 0, I_STICK};
-  CHECK(craft(t1, 2) == B_TORCH * 100 + 4);
-  CHECK(craft(t2, 2) == B_TORCH * 100 + 4);
+  /* torches from coal or charcoal, in any slots */
+  int t1[4] = {I_COAL, 0, 0, I_STICK}, t2[4] = {I_STICK, I_CHARCOAL, 0, 0};
+  CHECK(craft(t1, 2) == B_TORCH * 100 + 3);
+  CHECK(craft(t2, 2) == B_TORCH * 100 + 3);
   /* shapeless: stew, in any order */
-  int s[9] = {I_BOWL, 0, 0, 0, B_RED_MUSHROOM, 0, 0, 0, B_BROWN_MUSHROOM};
+  int s[9] = {I_BOWL, 0, 0, 0, 0, 0, 0, 0, B_BROWN_MUSHROOM};
   CHECK(craft(s, 3) == I_MUSHROOM_STEW * 100 + 1);
   /* nothing */
   int n[4] = {B_DIRT, 0, 0, 0};
   CHECK(craft(n, 2) == 0);
-  /* a furnace and a chest */
-  int f[9] = {B_COBBLESTONE, B_COBBLESTONE, B_COBBLESTONE, B_COBBLESTONE, 0, B_COBBLESTONE, B_COBBLESTONE,
-              B_COBBLESTONE, B_COBBLESTONE};
+  /* a furnace (an arch of five cobblestones... and a sixth) and a bed */
+  int f[9] = {B_COBBLESTONE, B_COBBLESTONE, B_COBBLESTONE, B_COBBLESTONE, 0, B_COBBLESTONE, 0, 0, 0};
   CHECK(craft(f, 3) == B_FURNACE * 100 + 1);
-  int bed[9] = {B_WOOL_RED, B_WOOL_WHITE, B_WOOL_RED, B_PLANKS_OAK, B_PLANKS_BIRCH, B_PLANKS_OAK, 0, 0, 0};
+  int bed[9] = {B_WOOL_RED, B_WOOL_WHITE, 0, B_PLANKS_OAK, B_PLANKS_BIRCH, 0, 0, 0, 0};
   CHECK(craft(bed, 3) == I_BED * 100 + 1);
-  /* stacking: 64 at most, the same items first */
+  /* stacking: 50 at most, the same items first */
   Stack inv[36] = {{0}};
-  CHECK(inv_add(inv, 36, B_DIRT, 100, 0) == 0);
-  CHECK(inv[0].id == B_DIRT && inv[0].aux == 64 && inv[1].aux == 36);
+  CHECK(inv_add(inv, 36, B_DIRT, 80, 0) == 0);
+  CHECK(inv[0].id == B_DIRT && inv[0].aux == 50 && inv[1].aux == 30);
   CHECK(inv_add(inv, 36, I_IRON_PICKAXE, 1, 5) == 0 && inv[2].id == I_IRON_PICKAXE && inv[2].aux == 5);
-  CHECK(inv_add(inv, 36, B_DIRT, 30, 0) == 0 && inv[1].aux == 64 && inv[3].aux == 2);
-  CHECK(inv_add(inv, 36, I_EGG, 20, 0) == 0 && inv[4].aux == 16 && inv[5].aux == 4);
+  CHECK(inv_add(inv, 36, B_DIRT, 30, 0) == 0 && inv[1].aux == 50 && inv[3].aux == 10);
+  CHECK(inv_add(inv, 36, I_EGG, 20, 0) == 0 && inv[4].aux == 12 && inv[5].aux == 8);
   /* smelting */
   CHECK(smelt_of(B_IRON_ORE) == I_IRON_INGOT);
   CHECK(smelt_of(B_LOG_ACACIA) == I_CHARCOAL);
   CHECK(smelt_of(B_DIRT) == 0);
-  CHECK(item_fuel(I_COAL) == 1600 && item_fuel(B_PLANKS_OAK) == 300 && item_fuel(I_STICK) == 100);
+  CHECK(item_fuel(I_COAL) == 1400 && item_fuel(B_PLANKS_OAK) == 260 && item_fuel(I_STICK) == 80);
   /* harvesting */
   CHECK(!can_harvest(B_STONE, 0) && can_harvest(B_STONE, I_WOODEN_PICKAXE));
   CHECK(!can_harvest(B_DIAMOND_ORE, I_STONE_PICKAXE) && can_harvest(B_DIAMOND_ORE, I_IRON_PICKAXE));
-  CHECK(can_harvest(B_DIRT, 0) && dig_speed(B_DIRT, I_DIAMOND_SHOVEL) == 8 && dig_speed(B_DIRT, I_DIAMOND_PICKAXE) == 1);
+  CHECK(can_harvest(B_DIRT, 0) && dig_speed(B_DIRT, I_DIAMOND_SHOVEL) == 9 && dig_speed(B_DIRT, I_DIAMOND_PICKAXE) == 1);
   Stack out[2];
   CHECK(block_drops(B_STONE, I_WOODEN_PICKAXE, out) == 1 && out[0].id == B_COBBLESTONE);
   CHECK(block_drops(B_STONE, 0, out) == 0);
@@ -98,7 +97,7 @@ int main(void) {
     world_follow(8, 70, 8);
     CHECK(world_get(5, 62, 5) == base);
   }
-  /* water: 7 blocks out on a flat floor, then dry when the source is gone; lava meets water */
+  /* water: 6 blocks out on a flat floor, then dry when the source is gone; lava meets water */
   {
     world_new(0, "ut2");
     world_follow(8, 70, 8);
@@ -112,8 +111,8 @@ int main(void) {
     neighbours_changed(8, y, 8);
     for (int t = 0; t < 400; t++) ticks_run++, world_tick();
     CHECK(world_get(9, y, 8) == B_FLOWING_WATER);
-    CHECK(world_get(15, y, 8) == B_FLOWING_WATER_7);
-    CHECK(world_get(16, y, 8) == B_AIR);
+    CHECK(world_get(14, y, 8) == B_FLOWING_WATER_6);
+    CHECK(world_get(15, y, 8) == B_AIR);
     CHECK(world_get(11, y, 10) == B_FLOWING_WATER_5);
     world_set(8, y, 8, B_AIR);
     neighbours_changed(8, y, 8);
@@ -127,7 +126,7 @@ int main(void) {
     CHECK(world_get(5, y, 4) == B_OBSIDIAN);
     plat_remove_prefix("ut2");
   }
-  /* two cows fed wheat make a calf (EntityAIMate) */
+  /* two cows fed wheat make a calf */
   {
     extern uint32_t game_time;
     world_new(0, "ut3");
@@ -140,18 +139,18 @@ int main(void) {
       }
     memset(ents, 0, sizeof ents);
     opt.difficulty = 0;   /* (no monsters) */
-    Entity *a = ent_new(E_COW, 6.5f, (float)y, 8.5f), *b = ent_new(E_COW, 9.5f, (float)y, 8.5f);
+    Entity *a = ent_new(E_HUMPOX, 6.5f, (float)y, 8.5f), *b = ent_new(E_HUMPOX, 9.5f, (float)y, 8.5f);
     a->health = b->health = 10;
     pl.inv[0].id = I_WHEAT, pl.inv[0].aux = 5, pl.slot = 0, pl.mode = 0;
     CHECK(mob_use(a) && mob_use(b) && pl.inv[0].aux == 3);
     int calves = 0;
     for (int t = 0; t < 400; t++) ents_tick(), game_time++;
     for (int i = 0; i < N_ENT; i++)
-      if (ents[i].type == E_COW && ents[i].growth < 0) calves++;
+      if (ents[i].type == E_HUMPOX && ents[i].growth < 0) calves++;
     CHECK(calves == 1);
     plat_remove_prefix("ut3");
   }
-  /* a zombie after the player climbs a one-block step (the jump's first rise is the whole 0.42) */
+  /* a mudling after the player gets up a one-block step */
   {
     extern uint32_t game_time;
     world_new(0, "ut3z");
@@ -166,11 +165,11 @@ int main(void) {
     memset(ents, 0, sizeof ents);
     opt.difficulty = 2, pl.mode = 0, pl.dead = false, pl.health = 20;
     pl.x = 12.5f, pl.y = (float)y + 1, pl.z = 8.5f;
-    game_time = 18000;   /* (midnight: no burning) */
-    Entity *zb = ent_new(E_ZOMBIE, 5.5f, (float)y, 8.5f);
+    game_time = 15000;   /* (midnight: no drying out) */
+    Entity *zb = ent_new(E_MUDLING, 5.5f, (float)y, 8.5f);
     zb->health = 20, zb->panic = 60;
     for (int t = 0; t < 100; t++) ticks_run++, ents_tick(), game_time++;
-    CHECK(zb->type == E_ZOMBIE && zb->y >= y + 1 && zb->x > 10);
+    CHECK(zb->type == E_MUDLING && zb->y >= y + 1 && zb->x > 10);
     plat_remove_prefix("ut3z");
   }
   {
@@ -181,15 +180,15 @@ int main(void) {
     for (int i = 0; i < VCX * VCZ; i++) vbiome[i] = 1;   /* plains */
     memset(&weather, 0, sizeof weather);
     rain_str = thunder_str = 0;
-    game_time = 6000;   /* noon */
+    game_time = 5000;   /* noon */
     CHECK(sky_sub() == 0);
     world_tick();
-    CHECK(!weather.raining && weather.rain_time >= 12000 - 1 && weather.rain_time < 180000);
+    CHECK(!weather.raining && weather.rain_time >= 8000 - 1 && weather.rain_time < 128000);
     weather.rain_time = 1;
     world_tick();
     CHECK(weather.raining && rain_str > 0 && rain_str < 0.05f);
     for (int t = 0; t < 120; t++) world_tick();
-    CHECK(rain_str == 1 && sky_sub() == 3);   /* rain alone: still day, no sleeping */
+    CHECK(rain_str == 1 && sky_sub() == 2);   /* rain alone: still day, no sleeping */
     weather.thundering = 1, thunder_str = 1;
     CHECK(sky_sub() >= 4);                    /* a storm: dark enough to sleep */
     int y = 110;
@@ -205,14 +204,14 @@ int main(void) {
     CHECK(world_rain_top(3, 3) == y);
     vbiome[(2 - vc_z0) * VCX + 1 - vc_x0] = 2;  /* deserts get none */
     CHECK(!rain_at(1, y, 2));
-    vbiome[(2 - vc_z0) * VCX + 1 - vc_x0] = 12; /* snowy biomes get snow */
+    vbiome[(2 - vc_z0) * VCX + 1 - vc_x0] = BIO_SNOWY; /* snowy biomes get snow */
     CHECK(!rain_at(1, y, 2));
-    /* a bolt on the player: 5 damage and fire, and the sky flashes */
+    /* a bolt on the player: 4 damage and fire, and the sky flashes */
     pl.x = 2.5f, pl.y = (float)y, pl.z = 2.5f, pl.mode = 0, pl.dead = false, pl.health = 20, pl.invuln = 0, pl.fire = 0;
     memset(pl.armor, 0, sizeof pl.armor);
     bolt = (Bolt){2.5f, (float)y, 2.5f, 2, 0, 1, 7};
     world_tick();
-    CHECK(pl.health == 15 && pl.fire > 0 && last_bolt == 2 && bolt.on);
+    CHECK(pl.health == 16 && pl.fire > 0 && last_bolt == 2 && bolt.on);
     for (int t = 0; t < 3; t++) world_tick();
     CHECK(!bolt.on);
     weather_clear();
@@ -240,7 +239,7 @@ int main(void) {
     int t = 0;
     while (t < 3000 && (b = bobber()) && b->timer <= 0) ents_tick(), t++;
     CHECK(b && b->timer > 0 && is_water(world_get((int)b->x, (int)b->y, (int)b->z)));
-    CHECK(fish_reel(b) == 1 && !bobber());
+    CHECK(fish_reel(b) == 2 && !bobber());
     for (int k = 0; k < 60; k++) ents_tick();
     int caught = 0;
     for (int i = 1; i < 36; i++) caught += pl.inv[i].id != 0;
@@ -256,13 +255,13 @@ int main(void) {
     for (int p = -90; p <= 90; p += 180)
       for (float yaw = -180; yaw < 180; yaw += 7.5f) {
         Camera c = {8.5f, 71.62f, 8.5f, yaw, (float)p};
-        render_frame(&c, 6000);
+        render_frame(&c, 5000);
       }
     alarm(0);
     plat_remove_prefix("ut6");
   }
   {
-    /* out of a pool one block deep: swim into the bank holding jump (the 0.3 lift) */
+    /* out of a pool one block deep: swim into the bank holding jump */
     world_new(0, "ut7");
     world_follow(8, 110, 8);
     int g = 110;
@@ -276,11 +275,11 @@ int main(void) {
     CHECK(pl.in_water);
     int t = 0;
     for (; t < 60 && !(pl.on_ground && pl.y >= g); t++) player_tick(K_FWD | K_JUMP, t == 0 ? K_JUMP : 0);
-    CHECK(pl.on_ground && pl.y >= g && pl.z > 10);
+    CHECK(pl.on_ground && pl.y >= g && pl.z > 9.6f);   /* (on the bank) */
     plat_remove_prefix("ut7");
   }
   {
-    /* sprinting (EntityPlayerSP): forward twice, or with the sprint key; it lasts while forward is held */
+    /* running: forward twice, or with the run key; it lasts while forward is held */
     world_new(0, "ut8");
     world_follow(8, 110, 8);
     int g = 110;
@@ -319,15 +318,17 @@ int main(void) {
      * aired) holds the same blocks and light as one made there at once */
     static uint8_t a[VCY * VCZ * VCX], l[VCY * VCZ * VCX];
     int ay = 0;
+    int top = 0;
     for (int k = 0; k < 2; k++) {
       world_new(77, "ut9");
+      top = gen_top(8, 8) + 8;   /* (up to 8 above the ground: not yet "high above it") */
       if (k == 0)
-        for (int y = 64; y < 100; y += 3) {
+        for (int y = top - 36; y < top; y += 3) {
           world_follow(8, (float)y, 8);
           while (world_pending()) world_follow(8, (float)y, 8);
         }
-      world_follow(8, 100, 8);
-      while (world_pending()) world_follow(8, 100, 8);
+      world_follow(8, (float)top, 8);
+      while (world_pending()) world_follow(8, (float)top, 8);
       if (k == 0) memcpy(a, vc, sizeof a), memcpy(l, vl, sizeof l), ay = vc_y0;
     }
     CHECK(ay == vc_y0);
@@ -407,7 +408,7 @@ int main(void) {
     memset(ents, 0, sizeof ents);
     player_look(8.5f, 100.75f, 8.6f, 0, 0);
     CHECK(pl.hit_face == 2 && pl.hit_z == 13);
-    Entity *cow = ent_new(E_COW, 8.5f, 100, 10.5f);
+    Entity *cow = ent_new(E_HUMPOX, 8.5f, 100, 10.5f);
     player_look(8.5f, 100.75f, 8.6f, 0, 0);
     CHECK(pl.hit_face < 0 && entity_looked_at(3, 1e9f) == cow);
     cow->z = 12.3f;
@@ -424,53 +425,51 @@ int main(void) {
     command_run("/gamemode 1");
     CHECK(pl.mode == 0);
     world_cheats = true;
-    command_run("/gamemode c");
+    command_run("/mode c");
     CHECK(pl.mode == 1);
-    command_run("/gamemode survival");
+    command_run("/mode survival");
     CHECK(pl.mode == 0);
     memset(pl.inv, 0, sizeof pl.inv);
-    command_run("/give @p minecraft:diamond_sword");
+    command_run("/give diamond_sword");
     CHECK(pl.inv[0].id == I_DIAMOND_SWORD);
-    command_run("/give Player wool 5 14");
+    command_run("/give red_wool 5");
     CHECK(pl.inv[1].id == B_WOOL_RED && item_count(&pl.inv[1]) == 5);
-    command_run("/give @p 5 64 2");
-    CHECK(pl.inv[2].id == B_PLANKS_BIRCH && item_count(&pl.inv[2]) == 64);
-    command_run("/give @p dye 1 15");
+    command_run("/give birch_wood_planks 50");
+    CHECK(pl.inv[2].id == B_PLANKS_BIRCH && item_count(&pl.inv[2]) == 50);
+    command_run("/give bone_meal");
     CHECK(pl.inv[3].id == I_DYE_WHITE);
-    command_run("/give @p 276 1 100");
-    CHECK(pl.inv[4].id == I_DIAMOND_SWORD && pl.inv[4].aux == 100);
-    command_run("/give @p nothing");
-    CHECK(!pl.inv[5].id);
-    command_run("/clear @p wool");
+    command_run("/give nothing");
+    CHECK(!pl.inv[4].id);
+    command_run("/clear red_wool");
     CHECK(!pl.inv[1].id && pl.inv[0].id);
     command_run("/clear");
     CHECK(!pl.inv[0].id && !pl.inv[2].id);
-    command_run("/time set night");
-    CHECK(game_time == 13000);
-    command_run("/time add 100");
-    CHECK(game_time == 13100);
-    command_run("/weather thunder 60");
+    command_run("/time night");
+    CHECK(game_time % DAY_TICKS == 11000);
+    command_run("/time 11100");
+    CHECK(game_time % DAY_TICKS == 11100);
+    command_run("/weather storm 60");
     CHECK(weather.thundering && weather.raining && weather.rain_time == 1200);
     command_run("/weather clear");
     CHECK(!weather.raining);
-    command_run("/xp 5L");
+    command_run("/xp 5lv");
     CHECK(pl.xp_level == 5);
-    command_run("/xp -2L");
+    command_run("/xp -2lv");
     CHECK(pl.xp_level == 3);
     int sx = (int)floorf(pl.x), sy = (int)floorf(pl.y + 0.5f), sz = (int)floorf(pl.z);
-    command_run("/setblock ~ ~3 ~ wool 4");
+    command_run("/place yellow_wool ^ ^3 ^");
     CHECK(world_get(sx, sy + 3, sz) == B_WOOL_YELLOW);
-    command_run("/gamerule keepInventory true");
+    command_run("/rule keepItems on");
     CHECK(rule(GR_KEEP_INVENTORY) && rule(GR_DAYLIGHT_CYCLE));
-    command_run("/gamerule doDaylightCycle false");
+    command_run("/rule dayCycle off");
     CHECK(!rule(GR_DAYLIGHT_CYCLE));
-    command_run("/effect @p poison 10 1");
+    command_run("/effect poison 10 2");
     CHECK(pl.eff[EF_POISON] == 200 && pl.eff_amp[EF_POISON] == 1);
-    command_run("/effect @p clear");
+    command_run("/effect clear");
     CHECK(!pl.eff[EF_POISON]);
     command_run("/tp 10 80 -20");
     CHECK(pl.x == 10.5f && pl.y == 80 && pl.z == -19.5f);
-    command_run("/tp ~1 ~ ~-0.5");
+    command_run("/tp ^1 ^ ^-0.5");
     CHECK(pl.x == 11.5f && pl.z == -20);
     /* the world keeps its cheats and rules */
     save_world();
@@ -481,12 +480,13 @@ int main(void) {
     /* finishing words, as Tab does */
     char o[40];
     int at;
-    CHECK(command_complete("/gam", 0, &at, o, sizeof o) && at == 1 && !strcmp(o, "gamemode"));
-    CHECK(command_complete("/gam", 1, &at, o, sizeof o) && !strcmp(o, "gamerule"));
-    CHECK(!command_complete("/gam", 2, &at, o, sizeof o));
-    CHECK(command_complete("/give @p diamond_sw", 0, &at, o, sizeof o) && at == 9 && !strcmp(o, "minecraft:diamond_sword"));
-    CHECK(command_complete("/gamemode cr", 0, &at, o, sizeof o) && !strcmp(o, "creative"));
-    CHECK(command_complete("/time set ", 1, &at, o, sizeof o) && !strcmp(o, "night"));
+    CHECK(command_complete("/ti", 0, &at, o, sizeof o) && at == 1 && !strcmp(o, "time"));
+    CHECK(command_complete("/r", 0, &at, o, sizeof o) && !strcmp(o, "rain"));
+    CHECK(command_complete("/r", 1, &at, o, sizeof o) && !strcmp(o, "rule"));
+    CHECK(!command_complete("/r", 2, &at, o, sizeof o));
+    CHECK(command_complete("/give diamond_sw", 0, &at, o, sizeof o) && at == 6 && !strcmp(o, "diamond_sword"));
+    CHECK(command_complete("/mode cr", 0, &at, o, sizeof o) && !strcmp(o, "creative"));
+    CHECK(command_complete("/time ", 2, &at, o, sizeof o) && !strcmp(o, "night"));
     delete_world(1);
   }
   {
diff --git a/games/numblocks/tools/blocks.py b/games/numblocks/tools/blocks.py
index 5ab61fe..dc030a1 100644
--- a/games/numblocks/tools/blocks.py
+++ b/games/numblocks/tools/blocks.py
@@ -3,9 +3,9 @@
 textures, and `blocks.py --header` writes src/blocks.h (the B_ enum and the
 per-state tables the game uses).
 
-Each state is a Minecraft 1.8.8 block id and metadata. Fields:
+Each state has a number and a variant (the numbers its saves use). Fields:
   name      the enum name (B_<name>)
-  id, meta  Minecraft's numeric id and metadata (for saves and the generator)
+  id, meta  its number and variant (what the save files keep)
   model     cube, cross (plants), liquid, torch, slab, layer (snow), cactus,
             leaves (see-through cube), glass (see-through cube), flat (lily pad,
             rails), vine, pane, fence, door, ladder, none (air)
@@ -13,7 +13,7 @@ Each state is a Minecraft 1.8.8 block id and metadata. Fields:
             (and front for furnaces, pumpkins...)
   tint      None, 'grass' or 'foliage' (biome colour), or 'water'
   light     light it gives (0..15)
-  hard      hardness (seconds-ish, as Block.c(...) in the game; -1 unbreakable)
+  hard      hardness (seconds-ish; -1 unbreakable)
   tool      the tool that mines it fastest: pickaxe, axe, shovel, shears, sword, None
   level     the pickaxe level needed to get a drop (0 wood, 1 stone, 2 iron, 3 diamond)
 """
@@ -211,7 +211,7 @@ b('FLOWING_LAVA', 10, 2, model='liquid', tex='lava_flow', light=15, hard=100)
 for v, (n, t) in enumerate([('OAK', 'oak'), ('SPRUCE', 'spruce'), ('BIRCH', 'birch'), ('JUNGLE', 'jungle'),
                             ('ACACIA', 'acacia'), ('DARK_OAK', 'big_oak')]):
     b(f'WOOD_SLAB_{n}', 126, v, model='slab', tex=f'planks_{t}', hard=2.0, tool='axe')
-# carrots and potatoes: 4 looks (Minecraft's ages 0-1, 2-3, 4-6, 7)
+# carrots and potatoes: 4 looks (growth 0-1, 2-3, 4-6, 7)
 for st in range(4):
     b(f'CARROTS_{st}', 141, (0, 2, 4, 7)[st], model='cross', tex=f'carrots_stage_{st}', hard=0)
 for st in range(4):
@@ -234,6 +234,98 @@ for v, d in [(1, 'S'), (2, 'W'), (3, 'N'), (4, 'E_OPEN'), (5, 'S_OPEN'), (6, 'W_
 # (new blocks go last: worlds keep blocks by their place in this list)
 b('FIRE', 51, 0, model='cross', tex='fire_layer_0', light=15, hard=0)
 
+# NumBlocks' own hardness and pickaxe levels (Calcade, 19 October 2026), by kind of block
+def own_hardness(st):
+    n, m = st['name'], st['model']
+    if st['hard'] < 0 or n in ('WATER', 'LAVA') or m == 'liquid' or n == 'AIR':
+        return st['hard'], st['level']
+    if n == 'OBSIDIAN':
+        return 40.0, 3
+    if n.endswith('_ORE'):
+        lv = {'COAL_ORE': 0, 'IRON_ORE': 1, 'LAPIS_ORE': 1, 'GOLD_ORE': 1, 'REDSTONE_ORE': 2, 'EMERALD_ORE': 2,
+              'DIAMOND_ORE': 2}[n]
+        return 2.6, lv
+    if n.endswith('_BLOCK') and n.split('_')[0] in ('GOLD', 'IRON', 'DIAMOND', 'EMERALD', 'LAPIS', 'COAL'):
+        return 4.2, {'GOLD': 1, 'IRON': 1, 'DIAMOND': 2, 'EMERALD': 2, 'LAPIS': 1, 'COAL': 0}[n.split('_')[0]]
+    if m in ('cross', 'flat', 'torch', 'vine') or n in ('FIRE',):
+        return 0, 0
+    if m == 'leaves':
+        return 0.25, 0
+    if n.startswith(('WOOL_',)):
+        return 0.7, 0
+    if n.startswith(('STAINED_CLAY', 'HARDENED_CLAY')):
+        return 1.1, 0
+    if n.startswith(('PLANKS_', 'WOOD_SLAB', 'OAK_STAIRS', 'FENCE_OAK', 'BOOKSHELF')):
+        return 1.7, 0
+    if n.startswith('LOG_'):
+        return 1.9, 0
+    if n in ('CRAFTING_TABLE', 'CHEST') or n.startswith('DOOR_'):
+        return 2.2, 0
+    if n in ('DIRT', 'COARSE_DIRT', 'PODZOL', 'FARMLAND', 'FARMLAND_WET', 'CLAY', 'SAND', 'RED_SAND') :
+        return 0.55, 0
+    if n in ('GRASS', 'GRASS_SNOWED', 'MYCELIUM', 'GRAVEL'):
+        return 0.65, 0
+    if n in ('SNOW_LAYER',):
+        return 0.1, 0
+    if n in ('SNOW', 'ICE', 'PACKED_ICE', 'GLASS', 'GLASS_PANE', 'GLOWSTONE'):
+        return 0.4, 0
+    if n.startswith(('SANDSTONE', 'RED_SANDSTONE')):
+        return 0.9, 0
+    if n in ('COBBLESTONE', 'MOSSY_COBBLESTONE', 'COBBLESTONE_WALL') or n.startswith(('COBBLESTONE_',)):
+        return 2.2, 0
+    if n.startswith(('FURNACE',)):
+        return 3.0, 0
+    if n == 'MOB_SPAWNER':
+        return 4.5, 0
+    if n.startswith(('STONE', 'BRICK', 'GRANITE', 'DIORITE', 'ANDESITE', 'POLISHED_', 'MOSSY_STONE', 'CRACKED_',
+                     'CHISELED_STONE', 'MONSTER_EGG')):
+        return (1.6 if n != 'MONSTER_EGG_STONE' else 0.8), 0
+    if n in ('MELON', 'PUMPKIN', 'JACK_O_LANTERN', 'HAY_BALE', 'SPONGE'):
+        return 0.9, 0
+    if n.endswith(('_CAP', '_INSIDE', '_STEM')):
+        return 0.25, 0
+    if n == 'CACTUS':
+        return 0.35, 0
+    if n == 'LADDER':
+        return 0.35, 0
+    if n == 'RAIL':
+        return 0.6, 0
+    if n.startswith('BED_'):
+        return 0.25, 0
+    if n == 'COBWEB':
+        return 3.5, 0
+    if n == 'TNT':
+        return 0, 0
+    return st['hard'], st['level']
+
+
+def own_light(st):
+    """NumBlocks' own light levels: glowstone the brightest, torches a little dimmer than fire"""
+    n, l = st['name'], st['light']
+    if not l:
+        return 0
+    if n.startswith('TORCH'):
+        return 13
+    if 'LAVA' in n or n == 'FIRE':
+        return 14
+    if n == 'FURNACE_LIT':
+        return 11
+    if n == 'GLOWSTONE':
+        return 15
+    if n == 'JACK_O_LANTERN':
+        return 14
+    return l
+
+
+for st in S:
+    st['hard'], st['level'] = own_hardness(st)
+    st['light'] = own_light(st)
+
+# the numbers: NumBlocks' own, each kind of block (all its variants) numbered in the order above
+_fam = {}
+for st in S:
+    st['id'] = _fam.setdefault(st['id'], len(_fam))
+
 assert len(S) <= 255, len(S)
 
 MODELS = ['none', 'cube', 'cross', 'liquid', 'torch', 'slab', 'layer', 'cactus', 'leaves', 'glass', 'flat', 'vine',
diff --git a/games/numblocks/tools/icon.py b/games/numblocks/tools/icon.py
index c2375e5..10a386f 100644
--- a/games/numblocks/tools/icon.py
+++ b/games/numblocks/tools/icon.py
@@ -1,67 +1,68 @@
 #!/usr/bin/env python3
-"""The app's icon (src/icon.png, 55 x 56): a grass block as Minecraft 1.8.8's inventory
-draws it (the top lit, the left side at 0.8, the right at 0.6), on the NumWorks home
-screen's white.
+"""The app's icon (src/icon.png, 55 x 56): three of NumBlocks' blocks stacked, wood planks and
+stone bricks with a grassy block on them, each drawn in 3D (the top lit, the left side at 0.8,
+the right at 0.6), on the NumWorks home screen's white (Calcade, 19 October 2026).
 
-    python3 tools/icon.py CLIENT_JAR"""
+    python3 tools/icon.py build/art.zip      (the pictures of tools/conformite/numblocks_art.py)"""
 import io
-import os
 import sys
 import zipfile
 
 from PIL import Image
 
 W, H = 55, 56
-GRASS = (0x91, 0xBD, 0x59)   # plains grass, as the inventory tints it
+GRASS = (0x92, 0xC8, 0x50)   # plains grass, as the inventory tints it
 
 
 def tex(z, name):
-    return Image.open(io.BytesIO(z.read(f'assets/minecraft/textures/blocks/{name}.png'))).convert('RGBA')
+    return Image.open(io.BytesIO(z.read(f'textures/blocks/{name}.png'))).convert('RGBA')
 
 
-def main():
-    z = zipfile.ZipFile(sys.argv[1])
-    top, side, over = tex(z, 'grass_top'), tex(z, 'grass_side'), tex(z, 'grass_side_overlay')
-    out = Image.new('RGB', (W, H), (255, 255, 255))
+def cube(out, cx, y0, half, top, left, right, tint_top=None):
+    """a cube whose top corner is at (cx, y0), half its width half pixels"""
     px = out.load()
-    half = 26          # half the cube's width (pixels)
-    edge = 29          # its sides' height
-    cx, y0 = W // 2, (H - (half + edge)) // 2   # the top corner
-
-    def tinted(c, k):
-        return tuple(int(v * t / 255) for v, t in zip(c[:3], k))
-
-    def side_texel(u, v):
-        r, g, b, a = side.getpixel((u, v))
-        o = over.getpixel((u, v))
-        if o[3] >= 128:
-            r, g, b = tinted(o, GRASS)
-        return r, g, b
-
-    for y in range(H):
-        for x in range(W):
+    edge = half + 2
+    for y in range(out.size[1]):
+        for x in range(out.size[0]):
             fx, fy = x + 0.5 - cx, y + 0.5 - y0
-            # top: a rhombus; (a, b) along its two edges
             a = (fx / half + fy / (half / 2)) / 2
             b = (-fx / half + fy / (half / 2)) / 2
             if 0 <= a < 1 and 0 <= b < 1:
                 c = top.getpixel((min(15, int(a * 16)), min(15, int(b * 16))))
-                px[x, y] = tinted(c, GRASS)
+                if tint_top:
+                    c = tuple(int(v * t / 255) for v, t in zip(c[:3], tint_top))
+                px[x, y] = c[:3]
                 continue
-            # the sides, below the top's lower edges
             if -half <= fx < 0:
                 u = (fx + half) / half
                 v = (fy - half / 2 - u * half / 2) / edge
                 if 0 <= v < 1:
-                    r, g, b2 = side_texel(min(15, int(u * 16)), min(15, int(v * 16)))
+                    r, g, b2, _ = left(min(15, int(u * 16)), min(15, int(v * 16)))
                     px[x, y] = (int(r * 0.8), int(g * 0.8), int(b2 * 0.8))
             elif 0 <= fx < half:
                 u = fx / half
                 v = (fy - half + u * half / 2) / edge
                 if 0 <= v < 1:
-                    r, g, b2 = side_texel(min(15, int(u * 16)), min(15, int(v * 16)))
+                    r, g, b2, _ = right(min(15, int(u * 16)), min(15, int(v * 16)))
                     px[x, y] = (int(r * 0.6), int(g * 0.6), int(b2 * 0.6))
-    out.save(os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', 'src', 'icon.png'))
+
+
+def main():
+    z = zipfile.ZipFile(sys.argv[1])
+    out = Image.new('RGB', (W, H), (255, 255, 255))
+    planks, bricks = tex(z, 'planks_oak'), tex(z, 'stonebrick')
+    gtop, gside, gover = tex(z, 'grass_top'), tex(z, 'grass_side'), tex(z, 'grass_side_overlay')
+
+    def grass_side(u, v):
+        o = gover.getpixel((u, v))
+        if o[3] >= 128:
+            return tuple(int(c * t / 255) for c, t in zip(o[:3], GRASS)) + (255,)
+        return gside.getpixel((u, v))
+    h = 13
+    cube(out, 14, 28, h, planks, lambda u, v: planks.getpixel((u, v)), lambda u, v: planks.getpixel((u, v)))
+    cube(out, 41, 28, h, bricks, lambda u, v: bricks.getpixel((u, v)), lambda u, v: bricks.getpixel((u, v)))
+    cube(out, 27, 7, h, gtop, grass_side, grass_side, GRASS)
+    out.save('src/icon.png')
 
 
 if __name__ == '__main__':
diff --git a/games/numblocks/tools/items.py b/games/numblocks/tools/items.py
index 426ca49..e3a47df 100644
--- a/games/numblocks/tools/items.py
+++ b/games/numblocks/tools/items.py
@@ -1,7 +1,7 @@
 #!/usr/bin/env python3
 """The items NumBlocks knows, their recipes, smelting and fuel, in one place
-(Minecraft 1.8.8's values: Item.java, ItemFood, ItemArmor, ItemTool,
-CraftingManager and the Recipes* classes, RecipesFurnace, TileEntityFurnace).
+(the game's rules: how long tools last, what food gives, what is made of what).
+Names are NumBlocks' own (Calcade, 19 October 2026).
 
 An item id is a block state (0 .. B_COUNT - 1, the blocks of tools/blocks.py
 that can be held) or 256 + the index of an item below. tools/pack.py writes
@@ -15,24 +15,24 @@ import blocks  # noqa: E402
 KINDS = ['none', 'block', 'pickaxe', 'axe', 'shovel', 'hoe', 'sword', 'shears', 'helmet', 'chestplate', 'leggings',
          'boots', 'food', 'stew', 'bucket', 'water_bucket', 'lava_bucket', 'milk_bucket', 'placer', 'flint_and_steel',
          'bow', 'bone_meal', 'snowball', 'egg', 'fishing_rod']
-# tool materials: harvest level, uses, efficiency, attack bonus (Item.EnumToolMaterial)
-TOOL_MAT = {'wood': (0, 59, 2, 0), 'stone': (1, 131, 4, 1), 'iron': (2, 250, 6, 2), 'diamond': (3, 1561, 8, 3),
-            'gold': (0, 32, 12, 0)}
-# armor materials: durability factor, points (helmet, chestplate, leggings, boots) (ItemArmor.EnumArmorMaterial)
-ARMOR_MAT = {'leather': (5, (1, 3, 2, 1)), 'chainmail': (15, (2, 5, 4, 1)), 'iron': (15, (2, 6, 5, 2)),
-             'gold': (7, (2, 5, 3, 1)), 'diamond': (33, (3, 8, 6, 3))}
-ARMOR_BASE = (11, 16, 15, 13)
-TOOL_DAMAGE = {'sword': 4, 'axe': 3, 'pickaxe': 2, 'shovel': 1, 'hoe': 0}
+# tool materials: harvest level, uses, efficiency, attack bonus
+TOOL_MAT = {'wood': (0, 48, 2, 0), 'stone': (1, 110, 3, 1), 'iron': (2, 300, 5, 2), 'diamond': (3, 1200, 7, 3),
+            'gold': (1, 60, 9, 1)}
+# armor materials: durability factor, points (helmet, chestplate, leggings, boots)
+ARMOR_MAT = {'leather': (4, (1, 2, 2, 1)), 'chainmail': (12, (2, 4, 3, 1)), 'iron': (14, (2, 5, 4, 2)),
+             'gold': (8, (2, 4, 3, 1)), 'diamond': (28, (3, 7, 5, 3))}
+ARMOR_BASE = (10, 15, 13, 11)
+TOOL_DAMAGE = {'sword': 3, 'axe': 2, 'pickaxe': 1, 'shovel': 1, 'hoe': 0}
 
 I = []
 
 
-def item(name, label, tex, kind='none', stack=64, dur=0, tier=0, a=0, b=0, place=None, fuel=0):
+def item(name, label, tex, kind='none', stack=50, dur=0, tier=0, a=0, b=0, place=None, fuel=0):
     I.append(dict(name=name, label=label, tex=tex, kind=kind, stack=stack, dur=dur, tier=tier, a=a, b=b, place=place,
                   fuel=fuel))
 
 
-def food(name, label, tex, hunger, sat, stack=64, kind='food', place=None):
+def food(name, label, tex, hunger, sat, stack=50, kind='food', place=None):
     item(name, label, tex, kind, stack=stack, a=hunger, b=int(round(sat * 10)), place=place)
 
 
@@ -44,10 +44,10 @@ for mat, tex in [('wood', 'wood'), ('stone', 'stone'), ('iron', 'iron'), ('diamo
     for kind in ['sword', 'shovel', 'pickaxe', 'axe', 'hoe']:
         item(f'{up}_{kind.upper()}', f'{lab} {kind.capitalize()}', f'{tex}_{kind}', kind, stack=1, dur=uses,
              tier=list(TOOL_MAT).index(mat), a=1 + (TOOL_DAMAGE[kind] + dmg if kind != 'hoe' else 0),
-             fuel=200 if mat == 'wood' else 0)
-item('SHEARS', 'Shears', 'shears', 'shears', stack=1, dur=238)
-item('FLINT_AND_STEEL', 'Flint and Steel', 'flint_and_steel', 'flint_and_steel', stack=1, dur=64)
-item('BOW', 'Bow', 'bow_standby', 'bow', stack=1, dur=384, fuel=0)
+             fuel=180 if mat == 'wood' else 0)
+item('SHEARS', 'Shears', 'shears', 'shears', stack=1, dur=200)
+item('FLINT_AND_STEEL', 'Flint and Steel', 'flint_and_steel', 'flint_and_steel', stack=1, dur=50)
+item('BOW', 'Bow', 'bow_standby', 'bow', stack=1, dur=320, fuel=0)
 item('ARROW', 'Arrow', 'arrow')
 # --- armor: tier = the material's index in ARMOR_MAT; a = armor points
 for mat in ARMOR_MAT:
@@ -62,15 +62,15 @@ for mat in ARMOR_MAT:
         item(f'{up}_{part.upper()}', f'{lab} {plab}', f'{tex}_{part}', part, stack=1, dur=ARMOR_BASE[k] * fac,
              tier=list(ARMOR_MAT).index(mat), a=pts[k])
 # --- materials
-item('STICK', 'Stick', 'stick', fuel=100)
-item('COAL', 'Coal', 'coal', fuel=1600)
-item('CHARCOAL', 'Charcoal', 'charcoal', fuel=1600)
+item('STICK', 'Stick', 'stick', fuel=80)
+item('COAL', 'Coal', 'coal', fuel=1400)
+item('CHARCOAL', 'Charcoal', 'charcoal', fuel=1200)
 item('DIAMOND', 'Diamond', 'diamond')
 item('IRON_INGOT', 'Iron Ingot', 'iron_ingot')
 item('GOLD_INGOT', 'Gold Ingot', 'gold_ingot')
 item('GOLD_NUGGET', 'Gold Nugget', 'gold_nugget')
 item('EMERALD', 'Emerald', 'emerald')
-item('REDSTONE', 'Redstone', 'redstone_dust')
+item('REDSTONE', 'Ruby Dust', 'redstone_dust')
 item('FLINT', 'Flint', 'flint')
 item('FEATHER', 'Feather', 'feather')
 item('STRING', 'String', 'string')
@@ -86,90 +86,90 @@ item('BOOK', 'Book', 'book_normal')
 item('CLAY_BALL', 'Clay', 'clay_ball')
 item('BRICK', 'Brick', 'brick')
 item('BOWL', 'Bowl', 'bowl')
-item('SNOWBALL', 'Snowball', 'snowball', 'snowball', stack=16)
-item('EGG', 'Egg', 'egg', 'egg', stack=16)
-item('SLIME_BALL', 'Slimeball', 'slimeball')
-item('GLOWSTONE_DUST', 'Glowstone Dust', 'glowstone_dust')
-item('BUCKET', 'Bucket', 'bucket_empty', 'bucket', stack=16)
+item('SNOWBALL', 'Snowball', 'snowball', 'snowball', stack=20)
+item('EGG', 'Egg', 'egg', 'egg', stack=12)
+item('SLIME_BALL', 'Slime Ball', 'slimeball')
+item('GLOWSTONE_DUST', 'Glow Dust', 'glowstone_dust')
+item('BUCKET', 'Bucket', 'bucket_empty', 'bucket', stack=10)
 item('WATER_BUCKET', 'Water Bucket', 'bucket_water', 'water_bucket', stack=1)
-item('LAVA_BUCKET', 'Lava Bucket', 'bucket_lava', 'lava_bucket', stack=1, fuel=20000)
+item('LAVA_BUCKET', 'Lava Bucket', 'bucket_lava', 'lava_bucket', stack=1, fuel=15000)
 item('MILK_BUCKET', 'Milk', 'bucket_milk', 'milk_bucket', stack=1)
 item('WOODEN_DOOR', 'Oak Door', 'door_wood', 'placer', place='DOOR_OAK_LOWER')
 item('BED', 'Bed', 'bed', 'placer', stack=1, place='BED_FOOT')
 item('COMPASS', 'Compass', 'compass')
-item('FISHING_ROD', 'Fishing Rod', 'fishing_rod_uncast', 'fishing_rod', stack=1, dur=64)
+item('FISHING_ROD', 'Fishing Rod', 'fishing_rod_uncast', 'fishing_rod', stack=1, dur=80)
 item('CLOCK', 'Clock', 'clock')
-# dyes, in Minecraft's damage order (0 black (ink sac) .. 15 white (bone meal))
-DYES = [('BLACK', 'Ink Sac', 'black'), ('RED', 'Rose Red', 'red'), ('GREEN', 'Cactus Green', 'green'),
+# dyes: 0 black .. 15 white (bone meal)
+DYES = [('BLACK', 'Black Dye', 'black'), ('RED', 'Red Dye', 'red'), ('GREEN', 'Green Dye', 'green'),
         ('BROWN', 'Cocoa Beans', 'brown'), ('BLUE', 'Lapis Lazuli', 'blue'), ('PURPLE', 'Purple Dye', 'purple'),
         ('CYAN', 'Cyan Dye', 'cyan'), ('SILVER', 'Light Gray Dye', 'silver'), ('GRAY', 'Gray Dye', 'gray'),
-        ('PINK', 'Pink Dye', 'pink'), ('LIME', 'Lime Dye', 'lime'), ('YELLOW', 'Dandelion Yellow', 'yellow'),
+        ('PINK', 'Pink Dye', 'pink'), ('LIME', 'Lime Dye', 'lime'), ('YELLOW', 'Yellow Dye', 'yellow'),
         ('LIGHT_BLUE', 'Light Blue Dye', 'light_blue'), ('MAGENTA', 'Magenta Dye', 'magenta'),
         ('ORANGE', 'Orange Dye', 'orange'), ('WHITE', 'Bone Meal', 'white')]
 for n, lab, t in DYES:
     item(f'DYE_{n}', lab, f'dye_powder_{t}', 'bone_meal' if n == 'WHITE' else 'none')
-# --- food: hunger (half drumsticks), saturation modifier (ItemFood)
-food('APPLE', 'Apple', 'apple', 4, 0.3)
-food('GOLDEN_APPLE', 'Golden Apple', 'apple_golden', 4, 1.2)
-food('BREAD', 'Bread', 'bread', 5, 0.6)
-food('PORKCHOP', 'Raw Porkchop', 'porkchop_raw', 3, 0.3)
-food('COOKED_PORKCHOP', 'Cooked Porkchop', 'porkchop_cooked', 8, 0.8)
-food('BEEF', 'Raw Beef', 'beef_raw', 3, 0.3)
-food('COOKED_BEEF', 'Steak', 'beef_cooked', 8, 0.8)
-food('CHICKEN', 'Raw Chicken', 'chicken_raw', 2, 0.3)
-food('COOKED_CHICKEN', 'Cooked Chicken', 'chicken_cooked', 6, 0.6)
-food('MUTTON', 'Raw Mutton', 'mutton_raw', 2, 0.3)
-food('COOKED_MUTTON', 'Cooked Mutton', 'mutton_cooked', 6, 0.8)
-food('ROTTEN_FLESH', 'Rotten Flesh', 'rotten_flesh', 4, 0.1)
-food('SPIDER_EYE', 'Spider Eye', 'spider_eye', 2, 0.8)
-food('MUSHROOM_STEW', 'Mushroom Stew', 'mushroom_stew', 6, 0.6, stack=1, kind='stew')
-food('COOKIE', 'Cookie', 'cookie', 2, 0.1)
-food('MELON_SLICE', 'Melon', 'melon', 2, 0.3)
-food('CARROT', 'Carrot', 'carrot', 3, 0.6, place='CARROTS_0')
-food('POTATO', 'Potato', 'potato', 1, 0.3, place='POTATOES_0')
-food('BAKED_POTATO', 'Baked Potato', 'potato_baked', 5, 0.6)
-food('POISONOUS_POTATO', 'Poisonous Potato', 'potato_poisonous', 2, 0.3)
-food('PUMPKIN_PIE', 'Pumpkin Pie', 'pumpkin_pie', 8, 0.3)
-food('RAW_FISH', 'Raw Fish', 'fish_cod_raw', 2, 0.1)
-food('RAW_SALMON', 'Raw Salmon', 'fish_salmon_raw', 2, 0.1)
-food('CLOWNFISH', 'Clownfish', 'fish_clownfish_raw', 1, 0.1)
+# --- food: hunger (half loaves), saturation modifier
+food('APPLE', 'Apple', 'apple', 3, 0.4)
+food('GOLDEN_APPLE', 'Golden Apple', 'apple_golden', 6, 1.0)
+food('BREAD', 'Bread', 'bread', 6, 0.5)
+food('PORKCHOP', 'Raw Ham', 'porkchop_raw', 2, 0.2)
+food('COOKED_PORKCHOP', 'Roast Ham', 'porkchop_cooked', 7, 0.7)
+food('BEEF', 'Raw Ox Meat', 'beef_raw', 2, 0.2)
+food('COOKED_BEEF', 'Ox Steak', 'beef_cooked', 7, 0.9)
+food('CHICKEN', 'Raw Drumstick', 'chicken_raw', 2, 0.2)
+food('COOKED_CHICKEN', 'Roast Drumstick', 'chicken_cooked', 5, 0.6)
+food('MUTTON', 'Raw Shank', 'mutton_raw', 2, 0.2)
+food('COOKED_MUTTON', 'Roast Shank', 'mutton_cooked', 5, 0.7)
+food('MUD_CAKE', 'Mud Cake', 'mud_cake', 3, 0.1)
+food('BEETLE_EYE', 'Beetle Eye', 'beetle_eye', 1, 0.6)
+food('MUSHROOM_STEW', 'Mushroom Stew', 'mushroom_stew', 7, 0.6, stack=1, kind='stew')
+food('COOKIE', 'Cookie', 'cookie', 2, 0.2)
+food('MELON_SLICE', 'Melon', 'melon', 2, 0.2)
+food('CARROT', 'Carrot', 'carrot', 3, 0.5, place='CARROTS_0')
+food('POTATO', 'Potato', 'potato', 2, 0.2, place='POTATOES_0')
+food('BAKED_POTATO', 'Baked Potato', 'potato_baked', 6, 0.5)
+food('POISONOUS_POTATO', 'Poisonous Potato', 'potato_poisonous', 1, 0.2)
+food('PUMPKIN_PIE', 'Pumpkin Pie', 'pumpkin_pie', 7, 0.4)
+food('RAW_FISH', 'Raw Fish', 'fish_cod_raw', 2, 0.2)
+food('RAW_SALMON', 'Raw Salmon', 'fish_salmon_raw', 3, 0.2)
+food('CLOWNFISH', 'Violet Fish', 'fish_clownfish_raw', 1, 0.2)
 food('PUFFERFISH', 'Pufferfish', 'fish_pufferfish_raw', 1, 0.1)
-food('COOKED_FISH', 'Cooked Fish', 'fish_cod_cooked', 5, 0.6)
-food('COOKED_SALMON', 'Cooked Salmon', 'fish_salmon_cooked', 6, 0.8)
+food('COOKED_FISH', 'Cooked Fish', 'fish_cod_cooked', 5, 0.5)
+food('COOKED_SALMON', 'Cooked Salmon', 'fish_salmon_cooked', 6, 0.7)
 
 INAMES = [x['name'] for x in I]
 assert len(set(INAMES)) == len(INAMES)
 
-# --- the blocks you can hold: their names (en_US) and the item a block state counts as
+# --- the blocks you can hold: their names and the item a block state counts as
 LABELS = {
     'STONE': 'Stone', 'GRANITE': 'Granite', 'POLISHED_GRANITE': 'Polished Granite', 'DIORITE': 'Diorite',
     'POLISHED_DIORITE': 'Polished Diorite', 'ANDESITE': 'Andesite', 'POLISHED_ANDESITE': 'Polished Andesite',
-    'GRASS': 'Grass Block', 'DIRT': 'Dirt', 'COARSE_DIRT': 'Coarse Dirt', 'PODZOL': 'Podzol',
+    'GRASS': 'Grassy Dirt', 'DIRT': 'Dirt', 'COARSE_DIRT': 'Coarse Dirt', 'PODZOL': 'Podzol',
     'COBBLESTONE': 'Cobblestone', 'BEDROCK': 'Bedrock', 'SAND': 'Sand', 'RED_SAND': 'Red Sand', 'GRAVEL': 'Gravel',
     'GOLD_ORE': 'Gold Ore', 'IRON_ORE': 'Iron Ore', 'COAL_ORE': 'Coal Ore', 'SPONGE': 'Sponge', 'GLASS': 'Glass',
     'LAPIS_ORE': 'Lapis Lazuli Ore', 'LAPIS_BLOCK': 'Lapis Lazuli Block', 'SANDSTONE': 'Sandstone',
     'SANDSTONE_CHISELED': 'Chiseled Sandstone', 'SANDSTONE_SMOOTH': 'Smooth Sandstone', 'COBWEB': 'Cobweb',
-    'DEAD_SHRUB': 'Shrub', 'TALL_GRASS': 'Grass', 'FERN': 'Fern', 'DEAD_BUSH': 'Dead Bush', 'DANDELION': 'Dandelion',
+    'DEAD_SHRUB': 'Shrub', 'TALL_GRASS': 'Grass Tuft', 'FERN': 'Fern', 'DEAD_BUSH': 'Dead Bush', 'DANDELION': 'Dandelion',
     'POPPY': 'Poppy', 'BLUE_ORCHID': 'Blue Orchid', 'ALLIUM': 'Allium', 'AZURE_BLUET': 'Azure Bluet',
     'RED_TULIP': 'Red Tulip', 'ORANGE_TULIP': 'Orange Tulip', 'WHITE_TULIP': 'White Tulip', 'PINK_TULIP': 'Pink Tulip',
     'OXEYE_DAISY': 'Oxeye Daisy', 'BROWN_MUSHROOM': 'Mushroom', 'RED_MUSHROOM': 'Mushroom',
     'GOLD_BLOCK': 'Block of Gold', 'IRON_BLOCK': 'Block of Iron', 'STONE_SLAB_DOUBLE': 'Stone Slab',
     'STONE_SLAB': 'Stone Slab', 'SANDSTONE_SLAB': 'Sandstone Slab', 'WOOD_SLAB_OLD': 'Wooden Slab',
     'COBBLESTONE_SLAB': 'Cobblestone Slab', 'BRICK_SLAB': 'Bricks Slab', 'STONE_BRICK_SLAB': 'Stone Bricks Slab',
-    'BRICKS': 'Bricks', 'TNT': 'TNT', 'BOOKSHELF': 'Bookshelf', 'MOSSY_COBBLESTONE': 'Moss Stone',
-    'OBSIDIAN': 'Obsidian', 'TORCH': 'Torch', 'MOB_SPAWNER': 'Monster Spawner', 'OAK_STAIRS': 'Oak Wood Stairs',
+    'BRICKS': 'Bricks', 'TNT': 'TNT', 'BOOKSHELF': 'Bookshelf', 'MOSSY_COBBLESTONE': 'Mossy Cobblestone',
+    'OBSIDIAN': 'Obsidian', 'TORCH': 'Torch', 'MOB_SPAWNER': 'Monster Cage', 'OAK_STAIRS': 'Oak Wood Stairs',
     'CHEST': 'Chest', 'DIAMOND_ORE': 'Diamond Ore', 'DIAMOND_BLOCK': 'Block of Diamond',
     'CRAFTING_TABLE': 'Crafting Table', 'FARMLAND': 'Farmland', 'FURNACE': 'Furnace', 'LADDER': 'Ladder',
-    'RAIL': 'Rail', 'COBBLESTONE_STAIRS': 'Cobblestone Stairs', 'REDSTONE_ORE': 'Redstone Ore', 'SNOW_LAYER': 'Snow',
+    'RAIL': 'Rail', 'COBBLESTONE_STAIRS': 'Cobblestone Stairs', 'REDSTONE_ORE': 'Ruby Ore', 'SNOW_LAYER': 'Snow',
     'ICE': 'Ice', 'SNOW': 'Snow', 'CACTUS': 'Cactus', 'CLAY': 'Clay', 'FENCE_OAK': 'Oak Fence', 'PUMPKIN': 'Pumpkin',
     'JACK_O_LANTERN': "Jack o'Lantern", 'STONE_BRICKS': 'Stone Bricks', 'MOSSY_STONE_BRICKS': 'Mossy Stone Bricks',
     'CRACKED_STONE_BRICKS': 'Cracked Stone Bricks', 'CHISELED_STONE_BRICKS': 'Chiseled Stone Bricks',
     'BROWN_MUSHROOM_CAP': 'Mushroom', 'RED_MUSHROOM_CAP': 'Mushroom', 'GLASS_PANE': 'Glass Pane', 'MELON': 'Melon',
     'VINE': 'Vines', 'MYCELIUM': 'Mycelium', 'LILY_PAD': 'Lily Pad', 'EMERALD_ORE': 'Emerald Ore',
-    'EMERALD_BLOCK': 'Block of Emerald', 'COBBLESTONE_WALL': 'Cobblestone Wall', 'HARDENED_CLAY': 'Hardened Clay',
+    'EMERALD_BLOCK': 'Block of Emerald', 'COBBLESTONE_WALL': 'Cobblestone Wall', 'HARDENED_CLAY': 'Baked Clay',
     'HAY_BALE': 'Hay Bale', 'COAL_BLOCK': 'Block of Coal', 'PACKED_ICE': 'Packed Ice', 'SUNFLOWER_LOWER': 'Sunflower',
-    'LILAC_LOWER': 'Lilac', 'DOUBLE_GRASS_LOWER': 'Double Tallgrass', 'LARGE_FERN_LOWER': 'Large Fern',
-    'ROSE_BUSH_LOWER': 'Rose Bush', 'PEONY_LOWER': 'Peony', 'RED_SANDSTONE': 'Red Sandstone', 'GLOWSTONE': 'Glowstone',
+    'LILAC_LOWER': 'Lilac', 'DOUBLE_GRASS_LOWER': 'Tall Grass', 'LARGE_FERN_LOWER': 'Large Fern',
+    'ROSE_BUSH_LOWER': 'Rose Bush', 'PEONY_LOWER': 'Peony', 'RED_SANDSTONE': 'Red Sandstone', 'GLOWSTONE': 'Glow Crystal',
 }
 for n, t in [('OAK', 'Oak'), ('SPRUCE', 'Spruce'), ('BIRCH', 'Birch'), ('JUNGLE', 'Jungle'), ('ACACIA', 'Acacia'),
              ('DARK_OAK', 'Dark Oak')]:
@@ -184,7 +184,7 @@ CLAB = ['White', 'Orange', 'Magenta', 'Light Blue', 'Yellow', 'Lime', 'Pink', 'G
         'Blue', 'Brown', 'Green', 'Red', 'Black']
 for c, l in zip(COLORS, CLAB):
     LABELS[f'WOOL_{c}'] = 'Wool' if c == 'WHITE' else f'{l} Wool'
-    LABELS[f'STAINED_CLAY_{c}'] = f'{l} Stained Clay'
+    LABELS[f'STAINED_CLAY_{c}'] = f'{l} Baked Clay'
 
 # block states that stand for another one in the inventory
 ITEM_OF = {'OAK_STAIRS_W': 'OAK_STAIRS', 'OAK_STAIRS_S': 'OAK_STAIRS', 'OAK_STAIRS_N': 'OAK_STAIRS',
@@ -237,7 +237,7 @@ def block_item(name):
     return BNAMES.index(name)
 
 
-# ingredient groups (Minecraft's "any damage" ingredients)
+# ingredient groups (any kind of wood, any wool...)
 GROUPS = {'G_PLANKS': 0xF000, 'G_WOOL': 0xF001, 'G_LOG': 0xF002, 'G_SAPLING': 0xF003}
 GROUP_OF = {
     'G_PLANKS': [n for n in BNAMES if n.startswith('PLANKS_')],
@@ -246,7 +246,7 @@ GROUP_OF = {
     'G_SAPLING': [n for n in BNAMES if n.startswith('SAPLING_')],
 }
 
-# --- crafting (CraftingManager and the Recipes* classes), only what NumBlocks has
+# --- crafting
 R = []   # (out, count, rows, keys) shaped; (out, count, None, [ingredients]) shapeless
 
 
@@ -258,124 +258,111 @@ def shapeless(out, n, ins):
     R.append((out, n, None, ins))
 
 
+# NumBlocks' own recipes (Calcade, 19 October 2026): its patterns and how many each makes
 TOOL_IN = {'WOODEN': 'G_PLANKS', 'STONE': 'COBBLESTONE', 'IRON': 'IRON_INGOT', 'DIAMOND': 'DIAMOND',
            'GOLDEN': 'GOLD_INGOT'}
 for m, x in TOOL_IN.items():
-    shaped(f'{m}_PICKAXE', 1, ['XXX', ' # ', ' # '], {'X': x, '#': 'STICK'})
-    shaped(f'{m}_SHOVEL', 1, ['X', '#', '#'], {'X': x, '#': 'STICK'})
-    shaped(f'{m}_AXE', 1, ['XX', 'X#', ' #'], {'X': x, '#': 'STICK'})
-    shaped(f'{m}_HOE', 1, ['XX', ' #', ' #'], {'X': x, '#': 'STICK'})
-    shaped(f'{m}_SWORD', 1, ['X', 'X', '#'], {'X': x, '#': 'STICK'})
-shaped('SHEARS', 1, [' #', '# '], {'#': 'IRON_INGOT'})
-shaped('BOW', 1, [' #X', '# X', ' #X'], {'X': 'STRING', '#': 'STICK'})
-shaped('FISHING_ROD', 1, ['  #', ' #X', '# X'], {'#': 'STICK', 'X': 'STRING'})
-shaped('ARROW', 4, ['X', '#', 'Y'], {'Y': 'FEATHER', 'X': 'FLINT', '#': 'STICK'})
+    shaped(f'{m}_PICKAXE', 1, [' X ', 'X#X', ' # '], {'X': x, '#': 'STICK'})   # an arrow-shaped head
+    shaped(f'{m}_SHOVEL', 1, [' X', '# '], {'X': x, '#': 'STICK'})
+    shaped(f'{m}_AXE', 1, ['XX ', 'X# ', '  #'], {'X': x, '#': 'STICK'})
+    shaped(f'{m}_HOE', 1, ['XX#'], {'X': x, '#': 'STICK'})
+    shaped(f'{m}_SWORD', 1, ['  X', ' X ', '#  '], {'X': x, '#': 'STICK'})
+shaped('SHEARS', 1, ['##'], {'#': 'IRON_INGOT'})
+shaped('BOW', 1, ['#X', '#X', '#X'], {'X': 'STRING', '#': 'STICK'})
+shaped('FISHING_ROD', 1, ['#  ', ' # ', '  X'], {'#': 'STICK', 'X': 'STRING'})
+shapeless('ARROW', 3, ['FLINT', 'STICK', 'FEATHER'])
 for m, x in [('LEATHER', 'LEATHER'), ('IRON', 'IRON_INGOT'), ('DIAMOND', 'DIAMOND'), ('GOLDEN', 'GOLD_INGOT')]:
-    shaped(f'{m}_HELMET', 1, ['XXX', 'X X'], {'X': x})
-    shaped(f'{m}_CHESTPLATE', 1, ['X X', 'XXX', 'XXX'], {'X': x})
-    shaped(f'{m}_LEGGINGS', 1, ['XXX', 'X X', 'X X'], {'X': x})
-    shaped(f'{m}_BOOTS', 1, ['X X', 'X X'], {'X': x})
+    shaped(f'{m}_HELMET', 1, [' X ', 'XXX'], {'X': x})
+    shaped(f'{m}_CHESTPLATE', 1, ['X X', 'XXX', ' X '], {'X': x})
+    shaped(f'{m}_LEGGINGS', 1, ['X X', 'X X', 'X X'], {'X': x})
+    shaped(f'{m}_BOOTS', 1, ['X X'], {'X': x})
 for blk, it in [('GOLD_BLOCK', 'GOLD_INGOT'), ('IRON_BLOCK', 'IRON_INGOT'), ('DIAMOND_BLOCK', 'DIAMOND'),
                 ('EMERALD_BLOCK', 'EMERALD'), ('LAPIS_BLOCK', 'DYE_BLUE'), ('COAL_BLOCK', 'COAL'),
                 ('HAY_BALE', 'WHEAT')]:
-    shaped(blk, 1, ['###', '###', '###'], {'#': it})
-    shaped(it, 9, ['#'], {'#': blk})
-shaped('GOLD_INGOT', 1, ['###', '###', '###'], {'#': 'GOLD_NUGGET'})
-shaped('GOLD_NUGGET', 9, ['#'], {'#': 'GOLD_INGOT'})
-shapeless('MUSHROOM_STEW', 1, ['BROWN_MUSHROOM', 'RED_MUSHROOM', 'BOWL'])
-shaped('COOKIE', 8, ['#X#'], {'X': 'DYE_BROWN', '#': 'WHEAT'})
-shaped('MELON', 1, ['MMM', 'MMM', 'MMM'], {'M': 'MELON_SLICE'})
-shapeless('PUMPKIN_PIE', 1, ['PUMPKIN', 'SUGAR', 'EGG'])
-shaped('CHEST', 1, ['###', '# #', '###'], {'#': 'G_PLANKS'})
-shaped('FURNACE', 1, ['###', '# #', '###'], {'#': 'COBBLESTONE'})
-shaped('CRAFTING_TABLE', 1, ['##', '##'], {'#': 'G_PLANKS'})
-shaped('SANDSTONE', 1, ['##', '##'], {'#': 'SAND'})
-shaped('RED_SANDSTONE', 1, ['##', '##'], {'#': 'RED_SAND'})
-shaped('SANDSTONE_SMOOTH', 4, ['##', '##'], {'#': 'SANDSTONE'})
-shaped('SANDSTONE_CHISELED', 1, ['#', '#'], {'#': 'SANDSTONE_SLAB'})
-shaped('STONE_BRICKS', 4, ['##', '##'], {'#': 'STONE'})
-shaped('CHISELED_STONE_BRICKS', 1, ['#', '#'], {'#': 'STONE_BRICK_SLAB'})
-shapeless('MOSSY_STONE_BRICKS', 1, ['STONE_BRICKS', 'VINE'])
-shapeless('MOSSY_COBBLESTONE', 1, ['COBBLESTONE', 'VINE'])
-shaped('GLASS_PANE', 16, ['###', '###'], {'#': 'GLASS'})
-shaped('COARSE_DIRT', 4, ['DG', 'GD'], {'D': 'DIRT', 'G': 'GRAVEL'})
-shaped('POLISHED_DIORITE', 4, ['SS', 'SS'], {'S': 'DIORITE'})
-shaped('POLISHED_GRANITE', 4, ['SS', 'SS'], {'S': 'GRANITE'})
-shaped('POLISHED_ANDESITE', 4, ['SS', 'SS'], {'S': 'ANDESITE'})
-shapeless('ANDESITE', 2, ['DIORITE', 'COBBLESTONE'])
+    shaped(blk, 1, ['##', '##'], {'#': it})       # four make a block,
+    shapeless(it, 4, [blk])                       # a block gives four back
+shapeless('GOLD_INGOT', 1, ['GOLD_NUGGET'] * 5)
+shapeless('GOLD_NUGGET', 5, ['GOLD_INGOT'])
+shapeless('MUSHROOM_STEW', 1, ['BROWN_MUSHROOM', 'BOWL'])
+shapeless('MUSHROOM_STEW', 1, ['RED_MUSHROOM', 'POTATO', 'BOWL'])
+shapeless('COOKIE', 4, ['WHEAT', 'DYE_BROWN', 'SUGAR'])
+shaped('MELON', 1, ['##', '##'], {'#': 'MELON_SLICE'})
+shapeless('PUMPKIN_PIE', 1, ['PUMPKIN', 'EGG', 'WHEAT'])
+shaped('CHEST', 1, ['##', '#X'], {'#': 'G_PLANKS', 'X': 'STICK'})
+shaped('FURNACE', 1, ['###', '# #'], {'#': 'COBBLESTONE'})
+shaped('CRAFTING_TABLE', 1, ['#X', 'X#'], {'#': 'G_PLANKS', 'X': 'STICK'})
+shapeless('SANDSTONE', 1, ['SAND', 'SAND', 'SAND'])
+shapeless('RED_SANDSTONE', 1, ['RED_SAND', 'RED_SAND', 'RED_SAND'])
+shapeless('SANDSTONE_SMOOTH', 1, ['SANDSTONE'])
+shapeless('SANDSTONE_CHISELED', 2, ['SANDSTONE_SMOOTH', 'SANDSTONE'])
+shaped('STONE_BRICKS', 3, ['###'], {'#': 'STONE'})
+shapeless('CHISELED_STONE_BRICKS', 2, ['STONE_BRICKS', 'STONE'])
+shapeless('MOSSY_STONE_BRICKS', 1, ['STONE_BRICKS', 'TALL_GRASS'])
+shapeless('MOSSY_COBBLESTONE', 1, ['COBBLESTONE', 'TALL_GRASS'])
+shaped('GLASS_PANE', 8, ['###'], {'#': 'GLASS'})
+shapeless('COARSE_DIRT', 2, ['DIRT', 'GRAVEL'])
+shapeless('POLISHED_DIORITE', 2, ['DIORITE', 'DIORITE'])
+shapeless('POLISHED_GRANITE', 2, ['GRANITE', 'GRANITE'])
+shapeless('POLISHED_ANDESITE', 2, ['ANDESITE', 'ANDESITE'])
+shapeless('ANDESITE', 2, ['DIORITE', 'GRAVEL'])
 for i, (n, lab, t) in enumerate(DYES):
     wool = 'WOOL_' + COLORS[15 - i]
     if wool != 'WOOL_WHITE':
-        shapeless(wool, 1, [f'DYE_{n}', 'WOOL_WHITE'])
-    shaped('STAINED_CLAY_' + COLORS[15 - i], 8, ['###', '#X#', '###'], {'#': 'HARDENED_CLAY', 'X': f'DYE_{n}'})
-shapeless('DYE_YELLOW', 1, ['DANDELION'])
-shapeless('DYE_RED', 1, ['POPPY'])
-shapeless('DYE_WHITE', 3, ['BONE'])
-shapeless('DYE_PINK', 2, ['DYE_RED', 'DYE_WHITE'])
-shapeless('DYE_ORANGE', 2, ['DYE_RED', 'DYE_YELLOW'])
-shapeless('DYE_LIME', 2, ['DYE_GREEN', 'DYE_WHITE'])
-shapeless('DYE_GRAY', 2, ['DYE_BLACK', 'DYE_WHITE'])
-shapeless('DYE_SILVER', 2, ['DYE_GRAY', 'DYE_WHITE'])
-shapeless('DYE_SILVER', 3, ['DYE_BLACK', 'DYE_WHITE', 'DYE_WHITE'])
-shapeless('DYE_LIGHT_BLUE', 2, ['DYE_BLUE', 'DYE_WHITE'])
-shapeless('DYE_CYAN', 2, ['DYE_BLUE', 'DYE_GREEN'])
-shapeless('DYE_PURPLE', 2, ['DYE_BLUE', 'DYE_RED'])
-shapeless('DYE_MAGENTA', 2, ['DYE_PURPLE', 'DYE_PINK'])
-shapeless('DYE_MAGENTA', 3, ['DYE_BLUE', 'DYE_RED', 'DYE_PINK'])
-shapeless('DYE_MAGENTA', 4, ['DYE_BLUE', 'DYE_RED', 'DYE_RED', 'DYE_WHITE'])
-shapeless('DYE_LIGHT_BLUE', 1, ['BLUE_ORCHID'])
-shapeless('DYE_MAGENTA', 1, ['ALLIUM'])
-shapeless('DYE_SILVER', 1, ['AZURE_BLUET'])
-shapeless('DYE_RED', 1, ['RED_TULIP'])
-shapeless('DYE_ORANGE', 1, ['ORANGE_TULIP'])
-shapeless('DYE_SILVER', 1, ['WHITE_TULIP'])
-shapeless('DYE_PINK', 1, ['PINK_TULIP'])
-shapeless('DYE_SILVER', 1, ['OXEYE_DAISY'])
-shapeless('DYE_YELLOW', 2, ['SUNFLOWER_LOWER'])
-shapeless('DYE_MAGENTA', 2, ['LILAC_LOWER'])
-shapeless('DYE_RED', 2, ['ROSE_BUSH_LOWER'])
-shapeless('DYE_PINK', 2, ['PEONY_LOWER'])
-shaped('PAPER', 3, ['###'], {'#': 'REEDS'})
-shapeless('BOOK', 1, ['PAPER', 'PAPER', 'PAPER', 'LEATHER'])
-shaped('FENCE_OAK', 3, ['W#W', 'W#W'], {'#': 'STICK', 'W': 'PLANKS_OAK'})
-shaped('COBBLESTONE_WALL', 6, ['###', '###'], {'#': 'COBBLESTONE'})
-shaped('BOOKSHELF', 1, ['###', 'XXX', '###'], {'#': 'G_PLANKS', 'X': 'BOOK'})
-shaped('SNOW', 1, ['##', '##'], {'#': 'SNOWBALL'})
-shaped('SNOW_LAYER', 6, ['###'], {'#': 'SNOW'})
-shaped('CLAY', 1, ['##', '##'], {'#': 'CLAY_BALL'})
-shaped('BRICKS', 1, ['##', '##'], {'#': 'BRICK'})
-shaped('GLOWSTONE', 1, ['##', '##'], {'#': 'GLOWSTONE_DUST'})
-shaped('WOOL_WHITE', 1, ['##', '##'], {'#': 'STRING'})
-shaped('TNT', 1, ['X#X', '#X#', 'X#X'], {'X': 'GUNPOWDER', '#': 'SAND'})
-shaped('COBBLESTONE_SLAB', 6, ['###'], {'#': 'COBBLESTONE'})
-shaped('STONE_SLAB', 6, ['###'], {'#': 'STONE'})
-shaped('SANDSTONE_SLAB', 6, ['###'], {'#': 'SANDSTONE'})
-shaped('BRICK_SLAB', 6, ['###'], {'#': 'BRICKS'})
-shaped('STONE_BRICK_SLAB', 6, ['###'], {'#': 'STONE_BRICKS'})
+        shapeless(wool, 2, [f'DYE_{n}', 'WOOL_WHITE', 'WOOL_WHITE'])
+    shapeless('STAINED_CLAY_' + COLORS[15 - i], 3, ['HARDENED_CLAY', 'HARDENED_CLAY', 'HARDENED_CLAY', f'DYE_{n}'])
+# flowers give their colour (tall ones more); colours mix
+for flower, dye, k in [('DANDELION', 'YELLOW', 2), ('POPPY', 'RED', 2), ('BLUE_ORCHID', 'LIGHT_BLUE', 2),
+                       ('ALLIUM', 'MAGENTA', 2), ('AZURE_BLUET', 'SILVER', 2), ('RED_TULIP', 'RED', 2),
+                       ('ORANGE_TULIP', 'ORANGE', 2), ('WHITE_TULIP', 'SILVER', 2), ('PINK_TULIP', 'PINK', 2),
+                       ('OXEYE_DAISY', 'SILVER', 2), ('SUNFLOWER_LOWER', 'YELLOW', 3), ('LILAC_LOWER', 'MAGENTA', 3),
+                       ('ROSE_BUSH_LOWER', 'RED', 3), ('PEONY_LOWER', 'PINK', 3)]:
+    shapeless(f'DYE_{dye}', k, [flower])
+shapeless('DYE_WHITE', 2, ['BONE'])
+for out, a, b in [('PINK', 'RED', 'WHITE'), ('ORANGE', 'RED', 'YELLOW'), ('LIME', 'GREEN', 'WHITE'),
+                  ('GRAY', 'BLACK', 'WHITE'), ('SILVER', 'GRAY', 'WHITE'), ('LIGHT_BLUE', 'BLUE', 'WHITE'),
+                  ('CYAN', 'BLUE', 'GREEN'), ('PURPLE', 'BLUE', 'RED'), ('MAGENTA', 'PURPLE', 'PINK')]:
+    shapeless(f'DYE_{out}', 3, [f'DYE_{a}', f'DYE_{b}'])
+shaped('PAPER', 2, ['##'], {'#': 'REEDS'})
+shapeless('BOOK', 1, ['PAPER', 'PAPER', 'LEATHER'])
+shaped('FENCE_OAK', 3, ['# #', 'WWW'], {'#': 'STICK', 'W': 'PLANKS_OAK'})
+shaped('COBBLESTONE_WALL', 4, ['# #', '###'], {'#': 'COBBLESTONE'})
+shaped('BOOKSHELF', 1, ['WXW', 'WXW'], {'W': 'G_PLANKS', 'X': 'BOOK'})
+shapeless('SNOW', 1, ['SNOWBALL'] * 3)
+shapeless('SNOW_LAYER', 4, ['SNOW'])
+shapeless('CLAY', 1, ['CLAY_BALL'] * 3)
+shapeless('BRICKS', 1, ['BRICK'] * 3)
+shapeless('GLOWSTONE', 1, ['GLOWSTONE_DUST'] * 3)
+shapeless('WOOL_WHITE', 1, ['STRING'] * 3)
+shaped('TNT', 1, ['XXX', '###'], {'X': 'GUNPOWDER', '#': 'SAND'})
+shaped('COBBLESTONE_SLAB', 4, ['##'], {'#': 'COBBLESTONE'})
+shaped('STONE_SLAB', 4, ['##'], {'#': 'STONE'})
+shaped('SANDSTONE_SLAB', 4, ['##'], {'#': 'SANDSTONE'})
+shaped('BRICK_SLAB', 4, ['##'], {'#': 'BRICKS'})
+shaped('STONE_BRICK_SLAB', 4, ['##'], {'#': 'STONE_BRICKS'})
 for n in ['OAK', 'SPRUCE', 'BIRCH', 'JUNGLE', 'ACACIA', 'DARK_OAK']:
     if f'WOOD_SLAB_{n}' in BNAMES:
-        shaped(f'WOOD_SLAB_{n}', 6, ['###'], {'#': f'PLANKS_{n}'})
-    shaped(f'PLANKS_{n}', 4, ['#'], {'#': f'LOG_{n}'})
-shaped('LADDER', 3, ['# #', '###', '# #'], {'#': 'STICK'})
-shaped('WOODEN_DOOR', 3, ['##', '##', '##'], {'#': 'PLANKS_OAK'})
-shaped('SUGAR', 1, ['#'], {'#': 'REEDS'})
-shaped('STICK', 4, ['#', '#'], {'#': 'G_PLANKS'})
-shaped('TORCH', 4, ['X', '#'], {'X': 'COAL', '#': 'STICK'})
-shaped('TORCH', 4, ['X', '#'], {'X': 'CHARCOAL', '#': 'STICK'})
-shaped('BOWL', 4, ['# #', ' # '], {'#': 'G_PLANKS'})
-shaped('RAIL', 16, ['X X', 'X#X', 'X X'], {'X': 'IRON_INGOT', '#': 'STICK'})
-shaped('JACK_O_LANTERN', 1, ['A', 'B'], {'A': 'PUMPKIN', 'B': 'TORCH'})
-shaped('BUCKET', 1, ['# #', ' # '], {'#': 'IRON_INGOT'})
-shapeless('FLINT_AND_STEEL', 1, ['IRON_INGOT', 'FLINT'])
-shaped('BREAD', 1, ['###'], {'#': 'WHEAT'})
-shaped('OAK_STAIRS', 4, ['#  ', '## ', '###'], {'#': 'PLANKS_OAK'})
-shaped('COBBLESTONE_STAIRS', 4, ['#  ', '## ', '###'], {'#': 'COBBLESTONE'})
-shaped('GOLDEN_APPLE', 1, ['###', '#X#', '###'], {'#': 'GOLD_INGOT', 'X': 'APPLE'})
-shaped('CLOCK', 1, [' # ', '#X#', ' # '], {'#': 'GOLD_INGOT', 'X': 'REDSTONE'})
-shaped('COMPASS', 1, [' # ', '#X#', ' # '], {'#': 'IRON_INGOT', 'X': 'REDSTONE'})
-shaped('BED', 1, ['###', 'XXX'], {'#': 'G_WOOL', 'X': 'G_PLANKS'})
-
-# --- smelting (RecipesFurnace): input, output
+        shaped(f'WOOD_SLAB_{n}', 4, ['##'], {'#': f'PLANKS_{n}'})
+    shapeless(f'PLANKS_{n}', 3, [f'LOG_{n}'])
+shaped('LADDER', 2, ['# #', '###'], {'#': 'STICK'})
+shaped('WOODEN_DOOR', 1, ['##', '##'], {'#': 'PLANKS_OAK'})
+shapeless('SUGAR', 2, ['REEDS'])
+shapeless('STICK', 2, ['G_PLANKS'])
+shapeless('TORCH', 3, ['COAL', 'STICK'])
+shapeless('TORCH', 3, ['CHARCOAL', 'STICK'])
+shaped('BOWL', 2, ['# #'], {'#': 'G_PLANKS'})
+shaped('RAIL', 4, ['X#X'], {'X': 'IRON_INGOT', '#': 'STICK'})
+shapeless('JACK_O_LANTERN', 1, ['PUMPKIN', 'TORCH'])
+shaped('BUCKET', 1, ['# #', '###'], {'#': 'IRON_INGOT'})
+shaped('FLINT_AND_STEEL', 1, ['XI'], {'X': 'FLINT', 'I': 'IRON_INGOT'})
+shapeless('BREAD', 1, ['WHEAT', 'WHEAT'])
+shaped('OAK_STAIRS', 2, ['# ', '##'], {'#': 'PLANKS_OAK'})
+shaped('COBBLESTONE_STAIRS', 2, ['# ', '##'], {'#': 'COBBLESTONE'})
+shapeless('GOLDEN_APPLE', 1, ['APPLE', 'GOLD_INGOT', 'GOLD_INGOT', 'GOLD_INGOT'])
+shapeless('CLOCK', 1, ['GOLD_INGOT', 'GOLD_INGOT', 'REDSTONE'])
+shapeless('COMPASS', 1, ['IRON_INGOT', 'IRON_INGOT', 'REDSTONE'])
+shaped('BED', 1, ['XX', '##'], {'X': 'G_WOOL', '#': 'G_PLANKS'})
+
+# --- smelting: input, output
 SMELT = [('IRON_ORE', 'IRON_INGOT'), ('GOLD_ORE', 'GOLD_INGOT'), ('DIAMOND_ORE', 'DIAMOND'), ('SAND', 'GLASS'),
          ('RED_SAND', 'GLASS'), ('PORKCHOP', 'COOKED_PORKCHOP'), ('BEEF', 'COOKED_BEEF'),
          ('CHICKEN', 'COOKED_CHICKEN'), ('MUTTON', 'COOKED_MUTTON'), ('COBBLESTONE', 'STONE'),
@@ -387,25 +374,25 @@ SMELT += [(n, 'CHARCOAL') for n in GROUP_OF['G_LOG']]
 
 
 def fuel_of(iid):
-    """burn time in ticks (TileEntityFurnace.fuelTime)"""
+    """burn time in ticks"""
     if iid >= 256:
         return I[iid - 256]['fuel']
     n = BNAMES[iid]
     if n == 'COAL_BLOCK':
-        return 16000
+        return 12600
     if n.startswith('WOOD_SLAB'):
-        return 150
+        return 130
     if n.startswith('SAPLING_'):
-        return 100
+        return 60
     if n.startswith(('PLANKS_', 'LOG_')) or n in ('CRAFTING_TABLE', 'CHEST', 'BOOKSHELF', 'OAK_STAIRS', 'FENCE_OAK',
                                                    'DOOR_OAK_LOWER', 'BROWN_MUSHROOM_CAP', 'RED_MUSHROOM_CAP'):
-        return 300
+        return 260
     return 0
 
 
-# the creative inventory's tabs (CreativeModeTab), in Minecraft's order; what NumBlocks puts in each
-TABS = ['Building Blocks', 'Decoration Blocks', 'Redstone', 'Transportation', 'Miscellaneous', 'Search Items',
-        'Foodstuffs', 'Tools', 'Combat', 'Brewing', 'Materials', 'Survival Inventory']
+# the creative inventory's tabs; what NumBlocks puts in each (9 is not shown)
+TABS = ['Building', 'Nature and Decor', 'Gadgets', 'Travel', 'Other', 'Search',
+        'Food', 'Tools', 'Fighting', 'Unused', 'Materials', 'Your Bag']
 DECO = ('SAPLING_', 'LEAVES_', 'COBWEB', 'DEAD_SHRUB', 'TALL_GRASS', 'FERN', 'DEAD_BUSH', 'DANDELION', 'POPPY',
         'BLUE_ORCHID', 'ALLIUM', 'AZURE_BLUET', '_TULIP', 'OXEYE_DAISY', 'BROWN_MUSHROOM', 'RED_MUSHROOM', 'TORCH',
         'CHEST', 'CRAFTING_TABLE', 'FURNACE', 'LADDER', 'SNOW_LAYER', 'CACTUS', 'FENCE_OAK', 'GLASS_PANE', 'VINE',
diff --git a/games/numblocks/tools/names.py b/games/numblocks/tools/names.py
index 6b86694..d4b95eb 100644
--- a/games/numblocks/tools/names.py
+++ b/games/numblocks/tools/names.py
@@ -1,110 +1,47 @@
 #!/usr/bin/env python3
-"""Minecraft 1.8.8's names for blocks and items, for the commands (/give, /setblock,
-/clear) and their completion: writes src/names.c.
+"""NumBlocks' names for blocks and items in the commands (/give, /place, /clear) and
+their completion: the English name, in small letters, words joined by _ (oak_wood_planks);
+where two things share a name, the one listed later goes by its own table name.
+Writes src/names.c (Calcade, 19 October 2026).
 
     python3 tools/names.py > src/names.c
-
-Blocks go by their registry name or numeric id (Block.blockRegistry), items by
-theirs (Item.itemRegistry, where a block's item has the block's name). Only what
-NumBlocks has is listed."""
+"""
 import os
+import re
 import sys
 
 sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
 import blocks  # noqa: E402
 import items  # noqa: E402
 
-# Block.registerBlocks: the numeric ids 0..197
-BLOCK = '''air stone grass dirt cobblestone planks sapling bedrock flowing_water water flowing_lava lava sand gravel
-gold_ore iron_ore coal_ore log leaves sponge glass lapis_ore lapis_block dispenser sandstone noteblock bed golden_rail
-detector_rail sticky_piston web tallgrass deadbush piston piston_head wool piston_extension yellow_flower red_flower
-brown_mushroom red_mushroom gold_block iron_block double_stone_slab stone_slab brick_block tnt bookshelf
-mossy_cobblestone obsidian torch fire mob_spawner oak_stairs chest redstone_wire diamond_ore diamond_block
-crafting_table wheat farmland furnace lit_furnace standing_sign wooden_door ladder rail stone_stairs wall_sign lever
-stone_pressure_plate iron_door wooden_pressure_plate redstone_ore lit_redstone_ore unlit_redstone_torch redstone_torch
-stone_button snow_layer ice snow cactus clay reeds jukebox fence pumpkin netherrack soul_sand glowstone portal
-lit_pumpkin cake unpowered_repeater powered_repeater stained_glass trapdoor monster_egg stonebrick
-brown_mushroom_block red_mushroom_block iron_bars glass_pane melon_block pumpkin_stem melon_stem vine fence_gate
-brick_stairs stone_brick_stairs mycelium waterlily nether_brick nether_brick_fence nether_brick_stairs nether_wart
-enchanting_table brewing_stand cauldron end_portal end_portal_frame end_stone dragon_egg redstone_lamp
-lit_redstone_lamp double_wooden_slab wooden_slab cocoa sandstone_stairs emerald_ore ender_chest tripwire_hook tripwire
-emerald_block spruce_stairs birch_stairs jungle_stairs command_block beacon cobblestone_wall flower_pot carrots
-potatoes wooden_button skull anvil trapped_chest light_weighted_pressure_plate heavy_weighted_pressure_plate
-unpowered_comparator powered_comparator daylight_detector redstone_block quartz_ore hopper quartz_block quartz_stairs
-activator_rail dropper stained_hardened_clay stained_glass_pane leaves2 log2 acacia_stairs dark_oak_stairs slime
-barrier iron_trapdoor prismarine sea_lantern hay_block carpet hardened_clay coal_block packed_ice double_plant
-standing_banner wall_banner daylight_detector_inverted red_sandstone red_sandstone_stairs double_stone_slab2
-stone_slab2 spruce_fence_gate birch_fence_gate jungle_fence_gate dark_oak_fence_gate acacia_fence_gate spruce_fence
-birch_fence jungle_fence dark_oak_fence acacia_fence spruce_door birch_door jungle_door acacia_door
-dark_oak_door'''.split()
-assert len(BLOCK) == 198, len(BLOCK)
-
-# Item.registerItems: the numeric ids 256..431 (426 unused)
-ITEM = '''iron_shovel iron_pickaxe iron_axe flint_and_steel apple bow arrow coal diamond iron_ingot gold_ingot iron_sword
-wooden_sword wooden_shovel wooden_pickaxe wooden_axe stone_sword stone_shovel stone_pickaxe stone_axe diamond_sword
-diamond_shovel diamond_pickaxe diamond_axe stick bowl mushroom_stew golden_sword golden_shovel golden_pickaxe
-golden_axe string feather gunpowder wooden_hoe stone_hoe iron_hoe diamond_hoe golden_hoe wheat_seeds wheat bread
-leather_helmet leather_chestplate leather_leggings leather_boots chainmail_helmet chainmail_chestplate
-chainmail_leggings chainmail_boots iron_helmet iron_chestplate iron_leggings iron_boots diamond_helmet
-diamond_chestplate diamond_leggings diamond_boots golden_helmet golden_chestplate golden_leggings golden_boots flint
-porkchop cooked_porkchop painting golden_apple sign wooden_door bucket water_bucket lava_bucket minecart saddle
-iron_door redstone snowball boat leather milk_bucket brick clay_ball reeds paper book slime_ball chest_minecart
-furnace_minecart egg compass fishing_rod clock glowstone_dust fish cooked_fish dye bone sugar cake bed repeater cookie
-filled_map shears melon pumpkin_seeds melon_seeds beef cooked_beef chicken cooked_chicken rotten_flesh ender_pearl
-blaze_rod ghast_tear gold_nugget nether_wart potion glass_bottle spider_eye fermented_spider_eye blaze_powder
-magma_cream brewing_stand cauldron ender_eye speckled_melon spawn_egg experience_bottle fire_charge writable_book
-written_book emerald item_frame flower_pot carrot potato baked_potato poisonous_potato map golden_carrot skull
-carrot_on_a_stick nether_star pumpkin_pie fireworks firework_charge enchanted_book comparator netherbrick quartz
-tnt_minecart hopper_minecart prismarine_shard prismarine_crystals rabbit cooked_rabbit rabbit_stew rabbit_foot
-rabbit_hide armor_stand iron_horse_armor golden_horse_armor diamond_horse_armor lead name_tag command_block_minecart
-mutton cooked_mutton banner - spruce_door birch_door jungle_door acacia_door dark_oak_door'''.split()
-assert len(ITEM) == 176, len(ITEM)
 
-# NumBlocks' items that Minecraft names differently, or that share a name (told apart by their data value)
-DYES = ['BLACK', 'RED', 'GREEN', 'BROWN', 'BLUE', 'PURPLE', 'CYAN', 'SILVER', 'GRAY', 'PINK', 'LIME', 'YELLOW',
-        'LIGHT_BLUE', 'MAGENTA', 'ORANGE', 'WHITE']
-RENAME = {'CHARCOAL': ('coal', 1), 'MELON_SLICE': ('melon', 0), 'RAW_FISH': ('fish', 0), 'RAW_SALMON': ('fish', 1),
-          'CLOWNFISH': ('fish', 2), 'PUFFERFISH': ('fish', 3), 'COOKED_FISH': ('cooked_fish', 0),
-          'COOKED_SALMON': ('cooked_fish', 1)}
-for k, d in enumerate(DYES):
-    RENAME['DYE_' + d] = ('dye', k)
-# a block's item has data 0 where the block's data is only its facing
-FACING_ONLY = {50, 54, 61, 65}
+def slug(s):
+    return re.sub(r'[^a-z0-9]+', '_', s.lower()).strip('_')
 
 
 def main():
-    give = []   # (mc id << 4 | data, NumBlocks id)
-    have_block = set(s['id'] for s in blocks.S)
-    item_block = set()
+    names, ids, seen = [], [], set()
+    things = []
     for i, s in enumerate(blocks.S):
-        if items.tab_of(i) is None:
-            continue
-        give.append(((s['id'] << 4) | (0 if s['id'] in FACING_ONLY else s['meta'] & 15), i))
-        item_block.add(s['id'])
-    have_item = set()
+        if items.tab_of(i) is not None:
+            things.append((items.LABELS[s['name']], s['name'], i))
     for k, it in enumerate(items.I):
-        name, data = RENAME.get(it['name'], (it['name'].lower(), 0))
-        assert name in ITEM, name
-        mid = 256 + ITEM.index(name)
-        give.append(((mid << 4) | data, 256 + k))
-        have_item.add(mid)
-    give.sort()
-    keys = [g[0] for g in give]
-    assert len(keys) == len(set(keys)), 'two things with one id and data'
-    out = ['/* Generated by tools/names.py: Minecraft 1.8.8\'s names for blocks and items (see nb.h). */',
-           '#include "nb.h"', '']
-    bl = [BLOCK[i] if i in have_block else '' for i in range(198)]
-    il = [ITEM[i] if 256 + i in have_item else '' for i in range(176)]
-    out.append('const char *const mc_block_name[198] = {' + ','.join(f'"{n}"' for n in bl) + '};')
-    out.append('const char *const mc_item_name[176] = {' + ','.join(f'"{n}"' for n in il) + '};')
-    out.append('/* the blocks that are items too (their names are items\' names) */')
-    mask = [0] * 25
-    for i in item_block:
-        mask[i >> 3] |= 1 << (i & 7)
-    out.append('const uint8_t mc_block_item[25] = {' + ','.join(str(v) for v in mask) + '};')
-    out.append(f'const uint16_t give_key[{len(give)}] = {{' + ','.join(str(g[0]) for g in give) + '};')
-    out.append(f'const uint16_t give_id[{len(give)}] = {{' + ','.join(str(g[1]) for g in give) + '};')
-    out.append(f'const int n_give = {len(give)};')
+        things.append((it['label'], it['name'], 256 + k))
+    for label, enum, iid in things:
+        n = slug(label)
+        if n in seen:
+            n = slug(enum)
+        k = 2
+        while n in seen:
+            n, k = slug(enum) + f'_{k}', k + 1
+        seen.add(n)
+        names.append(n)
+        ids.append(iid)
+    out = ['/* Generated by tools/names.py: NumBlocks\' names for blocks and items in commands (see nb.h). */',
+           '#include "nb.h"', '',
+           f'const char *const cmd_item_name[{len(names)}] = {{' + ','.join(f'"{n}"' for n in names) + '};',
+           f'const uint16_t cmd_item_id[{len(ids)}] = {{' + ','.join(str(v) for v in ids) + '};',
+           f'const int n_cmd_items = {len(names)};']
     sys.stdout.write('\n'.join(out) + '\n')
 
 
diff --git a/games/numblocks/tools/pack.py b/games/numblocks/tools/pack.py
index fb8011e..502b2cf 100644
--- a/games/numblocks/tools/pack.py
+++ b/games/numblocks/tools/pack.py
@@ -1,10 +1,10 @@
 #!/usr/bin/env python3
-"""Packs Minecraft 1.8.8's textures for NumBlocks into src/data.c and src/data.h.
+"""Packs NumBlocks' own pictures into src/data.c and src/data.h.
 
-    python3 tools/pack.py CLIENT_JAR
+    python3 ../../tools/conformite/numblocks_art.py build/art.zip   # draws them (Calcade, 19 October 2026)
+    python3 tools/pack.py build/art.zip
 
-CLIENT_JAR is the official 1.8.8 client (client.jar, from Mojang's launcher
-servers); only its pictures are read. Every texture is 16 x 16 with its own
+Every texture is 16 x 16 with its own
 palette of up to 16 colours (4 bits a texel): tinted ones (grass, leaves,
 water) keep their grey levels, and the game multiplies them by the biome's
 colour. Index 0 is transparent in textures that have see-through texels.
@@ -27,7 +27,7 @@ ROOT = os.path.dirname(HERE)
 sys.path.insert(0, HERE)
 import blocks  # noqa: E402
 
-TEX = 'assets/minecraft/textures/'
+TEX = 'textures/'
 
 
 def rgb565(r, g, b):
@@ -72,19 +72,8 @@ def first_frame(im):
 
 
 def custom_texture(jar, n):
-    """textures made from an entity's: the chest's faces (ModelChest: a 14 x 14 x 14 box)"""
-    ch = jar.image('entity/chest/normal')
-    out = Image.new('RGBA', (16, 16), (0, 0, 0, 0))
-    if n == '@chest_top':
-        out.paste(ch.crop((14, 0, 28, 14)), (1, 1))
-    elif n in ('@chest_front', '@chest_side'):
-        lid = ch.crop((14, 14, 28, 19) if n == '@chest_front' else (0, 14, 14, 19))
-        base = ch.crop((14, 34, 28, 43) if n == '@chest_front' else (0, 34, 14, 43))
-        out.paste(lid, (1, 2))
-        out.paste(base, (1, 7))
-        if n == '@chest_front':
-            out.paste(ch.crop((1, 1, 3, 5)), (7, 5))   # the latch
-    return out
+    """the chest's faces (drawn as blocks/@chest_top, @chest_side, @chest_front)"""
+    return jar.image('blocks/' + n)
 
 
 def tex_image(jar, n):
@@ -136,6 +125,25 @@ def pack_textures(jar):
             pals.append(pal)
             flags.append(8)   # tinted from index 8
             continue
+        if n == 'grass_top':
+            # the moss is grey levels tinted by the biome (palette indices from 4); the little flowers keep
+            # their colours (indices 0 to 3)
+            ps = pixels(im)
+            fl = [abs(r - g) > 8 or abs(g - b) > 8 for r, g, b, a in ps]
+            flw = Image.new('RGBA', (16, 16))
+            flw.putdata([p if f else (0, 0, 0, 0) for p, f in zip(ps, fl)])
+            mos = Image.new('RGBA', (16, 16))
+            mos.putdata([p if not f else (0, 0, 0, 0) for p, f in zip(ps, fl)])
+            fi, fp, _ = quantize(flw, 5)
+            mi, mp, _ = quantize(mos, 13)
+            idx = [fi[i] - 1 if fl[i] else mi[i] + 3 for i in range(256)]
+            pal = fp[1:5] + mp[1:13]
+            while len(pal) < 16:
+                pal.append((0, 0, 0))
+            px.append(idx)
+            pals.append(pal[:16])
+            flags.append(4)
+            continue
         idx, pal, alpha = quantize(im, 16)
         while len(pal) < 16:
             pal.append((0, 0, 0))
@@ -197,45 +205,30 @@ TINT = {None: 0, 'grass': 1, 'foliage': 2, 'spruce': 3, 'birch': 4, 'water': 5,
 OPAQUE = {'cube', 'slab'}   # (slabs and layers only hide what is under them)
 
 
-# biome id: (temperature, rainfall) as BiomeBase sets them (1.8.8); mutated biomes (id + 128) share them
-BIOMES = {0: (0.5, 0.5), 1: (0.8, 0.4), 2: (2.0, 0.0), 3: (0.2, 0.3), 4: (0.7, 0.8), 5: (0.25, 0.8), 6: (0.8, 0.9),
-          7: (0.5, 0.5), 8: (2.0, 0.0), 9: (0.5, 0.5), 10: (0.0, 0.5), 11: (0.0, 0.5), 12: (0.0, 0.5), 13: (0.0, 0.5),
-          14: (0.9, 1.0), 15: (0.9, 1.0), 16: (0.8, 0.4), 17: (2.0, 0.0), 18: (0.7, 0.8), 19: (0.25, 0.8),
-          20: (0.2, 0.3), 21: (0.95, 0.9), 22: (0.95, 0.9), 23: (0.95, 0.8), 24: (0.5, 0.5), 25: (0.2, 0.3),
-          26: (0.05, 0.3), 27: (0.6, 0.6), 28: (0.6, 0.6), 29: (0.7, 0.8), 30: (-0.5, 0.4), 31: (-0.5, 0.4),
-          32: (0.3, 0.8), 33: (0.3, 0.8), 34: (0.2, 0.3), 35: (1.2, 0.0), 36: (1.0, 0.0), 37: (2.0, 0.0), 38: (2.0, 0.0),
-          39: (2.0, 0.0)}
-# (forest 4 is 0.7/0.8; birch forests 0.6/0.6; plains 0.8/0.4; mega spruce taiga mutated 160: 0.25/0.8)
+# NumBlocks' biomes (gen.h's BIO_ values): grass, foliage, water tint, temperature, rain (1 rain, 2 snow)
+BIOMES = [   # (our grass is a sea green going to teal, our leaves deeper; dry lands an olive gold)
+    ('ocean', '5EB494', '3E9C7C', 'FFFFFF', 0.5, 1), ('plains', '6CC49C', '44A882', 'FFFFFF', 0.75, 1),
+    ('desert', 'C4B470', 'A8A058', 'FFFFFF', 1.8, 0), ('mountains', '7AAE9C', '5A9A86', 'FFFFFF', 0.2, 1),
+    ('forest', '52B48C', '2E9A74', 'FFFFFF', 0.65, 1), ('taiga', '6AA49A', '4A8C84', 'FFFFFF', 0.3, 1),
+    ('swamp', '6A8A5A', '4E7448', 'C8E0C0', 0.75, 1), ('river', '66BC98', '46A482', 'FFFFFF', 0.5, 1),
+    ('frozen ocean', '9CC8C4', '7AB0AE', 'FFFFFF', 0.0, 3), ('snowy plains', '9CC8C4', '7AB0AE', 'FFFFFF', -0.1, 3),
+    ('beach', '88CCA4', '62B48C', 'FFFFFF', 0.75, 1), ('birch forest', '82CCA8', '5EB892', 'FFFFFF', 0.55, 1),
+    ('dark forest', '3E8C6C', '256E56', 'FFFFFF', 0.65, 1), ('jungle', '36C48E', '1EAE74', 'FFFFFF', 0.9, 1),
+    ('savanna', 'B8B86A', '9CA450', 'FFFFFF', 1.3, 0), ('badlands', '9E9060', 'A08A5C', 'FFFFFF', 1.8, 0),
+    ('frozen river', '9CC8C4', '7AB0AE', 'FFFFFF', 0.0, 3)]
 
 
-def biome_colors(jar):
-    grass = jar.image('colormap/grass').convert('RGB')
-    foliage = jar.image('colormap/foliage').convert('RGB')
+def hexc(h):
+    return tuple(int(h[i:i + 2], 16) for i in (0, 2, 4))
 
-    def look(img, t, r):
-        t = min(max(t, 0.0), 1.0)
-        r = min(max(r, 0.0), 1.0) * t
-        return img.getpixel((int((1 - t) * 255), int((1 - r) * 255)))
 
+def biome_colors(jar):
     g, f, w = [], [], []
     for i in range(256):
-        base = i & 127 if i >= 128 else i
-        t, r = BIOMES.get(base, (0.5, 0.5))
-        if i == 160 or i == 161:
-            t, r = 0.25, 0.8
-        gc, fc = look(grass, t, r), look(foliage, t, r)
-        if base == 6:   # swamp: fixed colours
-            gc, fc = (0x6A, 0x70, 0x39), (0x6A, 0x70, 0x39)
-        if base in (37, 38, 39):   # mesa
-            gc, fc = (0x90, 0x81, 0x4D), (0x9E, 0x81, 0x4D)
-        if base == 29:   # roofed forest: grass halfway to a dark green
-            c = (gc[0] << 16) | (gc[1] << 8) | gc[2]
-            c = ((c & 0xFEFEFE) + 0x28340A) >> 1
-            gc = ((c >> 16) & 255, (c >> 8) & 255, c & 255)
-        wc = (0xE0, 0xFF, 0xAE) if base == 6 else (0xFF, 0xFF, 0xFF)
-        g.append(gc)
-        f.append(fc)
-        w.append(wc)
+        b = BIOMES[i] if i < len(BIOMES) else BIOMES[1]
+        g.append(hexc(b[1]))
+        f.append(hexc(b[2]))
+        w.append(hexc(b[3]))
     return g, f, w
 
 
@@ -261,15 +254,15 @@ SPRITES = [
     ('food_hunger_half', 'gui/icons', 97, 27, 9, 9),
     ('bobber', 'particle/particles', 8, 16, 8, 8),
     ('fishing_rod_cast', 'items/fishing_rod_cast', 0, 0, 16, 16),
-    # the sun (its glow) and the moon's eight phases (their middles; drawn adding light)
+    # the sun and the moon's eight phases (their middles; drawn adding light)
     ('sun', 'environment/sun', 2, 2, 28, 28),
 ] + [(f'moon_{k}', 'environment/moon_phases', (k % 4) * 32 + 8, (k // 4) * 32 + 8, 16, 16) for k in range(8)]
 
 
-# what the inventory tints its icons with: plains grass and foliage, and the fixed colours
-# (ColorizerFoliage.getFoliageColorPine and getFoliageColorBirch, BlockLilyPad)
-ICON_TINT = {'grass': (0x91, 0xBD, 0x59), 'foliage': (0x91, 0xBD, 0x59), 'spruce': (0x61, 0x99, 0x61),
-             'birch': (0x80, 0xA7, 0x55), 'lily': (0x20, 0x80, 0x30)}
+# what the inventory tints its icons with: plains grass and foliage, and the fixed colours of
+# spruce, birch and lily pads (render.c's tint_of uses the same)
+ICON_TINT = {'grass': (0x6C, 0xC4, 0x9C), 'foliage': (0x44, 0xA8, 0x82), 'spruce': (0x3E, 0x7E, 0x7A),
+             'birch': (0x7A, 0xC0, 0x8A), 'lily': (0x2E, 0x9A, 0x6E)}
 
 
 def iso_icon(jar, s, names_px):
@@ -381,32 +374,13 @@ def rle_image(im):
     return data, rows, pal
 
 
-def leather(jar, part):
-    """leather armour: the grey base dyed Minecraft's default leather colour, the overlay on top"""
-    base = first_frame(jar.image('items/leather_' + part))
-    over = first_frame(jar.image('items/leather_' + part + '_overlay'))
-    out = Image.new('RGBA', (16, 16))
-    px = []
-    for (r, g, b, a), (r2, g2, b2, a2) in zip(pixels(base), pixels(over)):
-        if a2 >= 128:
-            px.append((r2, g2, b2, a2))
-        else:
-            px.append((r * 0xA0 // 255, g * 0x65 // 255, b * 0x40 // 255, a))
-    out.putdata(px)
-    return out
-
-
 def item_icon(jar, it):
-    t = it['tex']
-    for part in ('helmet', 'chestplate', 'leggings', 'boots'):
-        if t == 'leather_' + part:
-            return leather(jar, part)
-    return first_frame(jar.image('items/' + t))
+    return first_frame(jar.image('items/' + it['tex']))
 
 
-def steve_front(jar):
+def player_front(jar):
     """the player as the inventory shows it, from the front (skin pixels scaled to 27 x 54)"""
-    sk = jar.image('entity/steve')
+    sk = jar.image('entity/player')
     im = Image.new('RGBA', (16, 32), (0, 0, 0, 0))
     def put(sx, sy, w, h, dx, dy, over=False):
         part = sk.crop((sx, sy, sx + w, sy + h))
@@ -425,7 +399,7 @@ def steve_front(jar):
 
 
 def font_bits(jar):
-    """ascii.png: 8 x 8 glyphs, a byte a row (bit 0 the left column); widths as FontRenderer measures them"""
+    """ascii.png: 8 x 8 glyphs, a byte a row (bit 0 the left column); widths: the last lit column + 2 (a space: 4)"""
     f = jar.image('font/ascii')
     bits, widths = [], []
     for c in range(32, 128):
@@ -446,31 +420,26 @@ def font_bits(jar):
 
 # big GUI pictures, kept as runs: name, picture
 def gui_images(jar):
-    inv = jar.image('gui/container/inventory').crop((0, 0, 176, 166))
-    craft = jar.image('gui/container/crafting_table').crop((0, 0, 176, 166))
-    furn = jar.image('gui/container/furnace').crop((0, 0, 176, 166))
-    g54 = jar.image('gui/container/generic_54')
-    chest = Image.new('RGBA', (176, 71 + 96))
-    chest.paste(g54.crop((0, 0, 176, 71)), (0, 0))
-    chest.paste(g54.crop((0, 126, 176, 222)), (0, 71))
-    w = jar.image('gui/widgets')
-    tab = jar.image('gui/container/creative_inventory/tab_items').crop((0, 0, 195, 136))
-    return [('inventory', inv), ('crafting_table', craft), ('furnace', furn), ('chest', chest), ('creative', tab)
-]
+    inv = jar.image('gui/bag').crop((0, 0, 200, 180))
+    craft = jar.image('gui/workbench').crop((0, 0, 200, 180))
+    furn = jar.image('gui/oven').crop((0, 0, 200, 180))
+    chest = jar.image('gui/chest').crop((0, 0, 200, 180))
+    tab = jar.image('gui/creative').crop((0, 0, 216, 148))
+    return [('inventory', inv), ('crafting_table', craft), ('furnace', furn), ('chest', chest), ('creative', tab)]
 
 
 GUI_SPRITES = [
-    ('flame', 'gui/container/furnace', 176, 0, 14, 14),
-    ('arrow', 'gui/container/furnace', 176, 14, 24, 17),
+    ('flame', 'gui/oven', 220, 0, 14, 14),
+    ('arrow', 'gui/oven', 220, 20, 24, 17),
     ('armor_full', 'gui/icons', 34, 9, 9, 9),
     ('armor_half', 'gui/icons', 25, 9, 9, 9),
     ('bubble_pop', 'gui/icons', 25, 18, 9, 9),
     ('heart_hit', 'gui/icons', 25, 0, 9, 9),
-    ('tab_top', 'gui/container/creative_inventory/tabs', 0, 0, 28, 32),
-    ('tab_top_sel', 'gui/container/creative_inventory/tabs', 0, 32, 28, 32),
-    ('tab_bottom', 'gui/container/creative_inventory/tabs', 0, 64, 28, 32),
-    ('tab_bottom_sel', 'gui/container/creative_inventory/tabs', 0, 96, 28, 32),
-    ('scroller', 'gui/container/creative_inventory/tabs', 232, 0, 12, 15),
+    ('tab_top', 'gui/creative_tabs', 0, 0, 28, 32),
+    ('tab_top_sel', 'gui/creative_tabs', 0, 32, 28, 32),
+    ('tab_bottom', 'gui/creative_tabs', 0, 64, 28, 32),
+    ('tab_bottom_sel', 'gui/creative_tabs', 0, 96, 28, 32),
+    ('scroller', 'gui/creative_tabs', 232, 0, 12, 15),
     ('button', 'gui/widgets', 0, 66, 200, 20),
     ('button_hover', 'gui/widgets', 0, 86, 200, 20),
     ('button_off', 'gui/widgets', 0, 46, 200, 20),
@@ -480,7 +449,7 @@ GUI_SPRITES = [
 def main():
     jar = Jar(sys.argv[1])
     names, px, pals, flags = pack_textures(jar)
-    out = ['/* Generated by tools/pack.py from Minecraft 1.8.8\'s client.jar: textures and block tables. */',
+    out = ['/* Generated by tools/pack.py from NumBlocks\' own pictures (tools/conformite/numblocks_art.py). */',
            '#include "data.h"', '#include "../../common/np_text.h"   /* (names players read: T(), see there) */', '']
     out.append(f'const uint8_t tex_px[{len(names)}][128] = {{')
     for p in px:
@@ -552,8 +521,8 @@ def main():
     sprites += [(n, jar.image(f).crop((x, y, x + w, y + h))) for n, f, x, y, w, h in GUI_SPRITES]
     for part in ('helmet', 'chestplate', 'leggings', 'boots'):
         sprites.append(('slot_' + part, first_frame(jar.image('items/empty_armor_slot_' + part))))
-    sprites.append(('steve', steve_front(jar)))
-    sprites.append(('arm', jar.image('entity/steve').crop((40, 16, 56, 32))))   # the right arm's box, all six faces
+    sprites.append(('player', player_front(jar)))
+    sprites.append(('arm', jar.image('entity/player').crop((40, 16, 56, 32))))   # the right arm's box, all six faces
     bg = first_frame(jar.image('gui/options_background'))
     bg.putdata([(r * 0x40 // 255, g * 0x40 // 255, b * 0x40 // 255, 255) for r, g, b, a in pixels(bg)])
     sprites.append(('dirt_bg', bg))
@@ -627,8 +596,7 @@ def main():
         out.append(f'const uint16_t group_{g[2:].lower()}[] = {{' +
                    ','.join(str(items.BNAMES.index(m)) for m in members) + ',0xFFFF};')
     # mob skins: 64 x 32, 4 bits a texel, index 0 see-through
-    SKINS = ['zombie/zombie', 'skeleton/skeleton', 'creeper/creeper', 'spider/spider', 'pig/pig', 'cow/cow',
-             'sheep/sheep', 'sheep/sheep_fur', 'chicken']
+    SKINS = ['mudling', 'thornling', 'fizzler', 'skitter', 'snuffler', 'humpox', 'woolly', 'woolly_fur', 'strider']
     out.append(f'const uint8_t skin_px[{len(SKINS)}][1024] = {{')
     spal = []
     for n in SKINS:
@@ -694,9 +662,9 @@ def main():
         out.append('  {' + ','.join(f'0x{rgb565(*c):04X}' for c in pal) + '},')
     out.append('};')
     gui_names = [n for n, im in gi]
-    extra = [n for n, *_ in GUI_SPRITES] + ['slot_helmet', 'slot_chestplate', 'slot_leggings', 'slot_boots', 'steve',
+    extra = [n for n, *_ in GUI_SPRITES] + ['slot_helmet', 'slot_chestplate', 'slot_leggings', 'slot_boots', 'player',
                                             'arm', 'dirt_bg']
-    # Minecraft's clouds: 256 x 256, 1 bit a cell
+    # the clouds: 256 x 256, 1 bit a cell
     cl = jar.image('environment/clouds')
     bits = bytearray(256 * 256 // 8)
     for i, (r, g, b, a) in enumerate(pixels(cl)):
@@ -704,7 +672,7 @@ def main():
             bits[i >> 3] |= 1 << (i & 7)
     out.append('const uint8_t clouds[8192] = {' + ','.join(str(v) for v in bits) + '};')
     # rain and snow (64 x 256): their streaks and flakes as runs down a texel column,
-    # {row, column, length, alpha}, by row; texels too faint to pass 1.8's alpha test (0.1) left out
+    # {row, column, length, alpha}, by row; texels too faint to show (alpha 25 or less) left out
     for name in ('rain', 'snow'):
         im = jar.image('environment/' + name)
         w, h = im.size
@@ -729,11 +697,9 @@ def main():
     out.append('const uint16_t biome_grass[256] = {' + ','.join(f'0x{rgb565(*c):04X}' for c in g) + '};')
     out.append('const uint16_t biome_foliage[256] = {' + ','.join(f'0x{rgb565(*c):04X}' for c in f) + '};')
     out.append('const uint16_t biome_water[256] = {' + ','.join(f'0x{rgb565(*c):04X}' for c in w) + '};')
-    temps = [BIOMES.get(i & 127 if i >= 128 else i, (0.5, 0.5))[0] for i in range(256)]
+    temps = [(BIOMES[i] if i < len(BIOMES) else BIOMES[1])[4] for i in range(256)]
     out.append('const int8_t biome_temp[256] = {' + ','.join(str(int(round(t * 50))) for t in temps) + '};   /* x 50 */')
-    # BiomeGenBase.enableRain (off in deserts, savannas, mesas) and enableSnow; mutated biomes copy them
-    no_rain, snowy = {2, 8, 9, 17, 35, 36, 37, 38, 39}, {10, 11, 12, 13, 26, 30, 31}
-    rain = [(0 if (i & 127) in no_rain else 1) | (2 if (i & 127) in snowy else 0) for i in range(256)]
+    rain = [(BIOMES[i] if i < len(BIOMES) else BIOMES[1])[5] for i in range(256)]
     out.append('const uint8_t biome_rain[256] = {' + ','.join(str(v) for v in rain) + '};')
     open(os.path.join(ROOT, 'src', 'data.c'), 'w').write('\n'.join(out) + '\n')
 
@@ -779,8 +745,8 @@ def main():
     for g in items.GROUP_OF:
         h.append(f'extern const uint16_t group_{g[2:].lower()}[];   /* ends with 0xFFFF */')
     h += ['extern const uint8_t skin_px[][1024];   /* mob skins, 64 x 32 */', 'extern const uint16_t skin_pal[][16];',
-          'enum { SKIN_ZOMBIE, SKIN_SKELETON, SKIN_CREEPER, SKIN_SPIDER, SKIN_PIG, SKIN_COW, SKIN_SHEEP, SKIN_SHEEP_FUR,'
-          ' SKIN_CHICKEN };',
+          'enum { SKIN_MUDLING, SKIN_THORNLING, SKIN_FIZZLER, SKIN_SKITTER, SKIN_SNUFFLER, SKIN_HUMPOX, SKIN_WOOLLY, SKIN_WOOLLY_FUR,'
+          ' SKIN_STRIDER };',
           'extern const uint8_t cracks[10][32];   /* destroy stages, 1 bit a texel */']
     h += ['extern const uint16_t tab_items[], tab_start[13];   /* the creative tabs\' items */',
           'extern const char *const tab_name[12];']
diff --git a/games/numdash/LICENSES/OFL-1.1-Archivo-Caveat.txt b/games/numdash/LICENSES/OFL-1.1-Archivo-Caveat.txt
new file mode 100644
index 0000000..692faab
--- /dev/null
+++ b/games/numdash/LICENSES/OFL-1.1-Archivo-Caveat.txt
@@ -0,0 +1,96 @@
+Copyright 2020 The Archivo Project Authors (https://github.com/Omnibus-Type/Archivo)
+Copyright 2014 The Caveat Project Authors (https://github.com/googlefonts/caveat)
+
+Archivo (Expanded Black) et Caveat, utilisées par tools/calcade_art.py pour dessiner l'intro Calcade.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/games/numdash/README.md b/games/numdash/README.md
index cf15bb3..efe7f20 100644
--- a/games/numdash/README.md
+++ b/games/numdash/README.md
@@ -1,12 +1,14 @@
-> **NumDash is part of [NumPlay](../../README.md)**, every NumWorks game in one app. Get it with all the others, or on its own as `NumDash.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest).
+> **Calcade, 19 octobre 2026 :** cette version de NumDash est modifiée par Calcade pour être un jeu à part entière :
+> douze niveaux conçus pour NumDash, de nouveaux dessins, de nouveaux textes, une autre police, son propre moteur
+> physique, sa propre numérotation des objets et son propre éditeur. Elle ne reprend plus rien de Geometry Dash. Détails : `CALCADE.md` à la racine de NumPlay.
 
-# NumDash
+> **NumDash is part of [NumPlay](../../README.md)**, every NumWorks game in one app.
 
-**Geometry Dash on your NumWorks calculator.**
+# NumDash
 
-NumDash is a fan-made version of Geometry Dash that runs right on a NumWorks graphing calculator. Jump over spikes, fly the ship, flip the ball, collect secret coins and try to beat twelve levels of the real game, from Stereo Madness to Clubstep, Deadlocked and Dash, all with the calculator's keys.
+**A one-key rhythm runner for your NumWorks calculator.**
 
-### [⬇ Download NumDash.nwa](https://github.com/Mason363/NumPlay/releases/latest/download/NumDash.nwa)
+Your cube runs on its own: you jump. Clear spikes, ride the ship, roll the ball, float the saucer, steer the wave and switch gravity through twelve levels made for NumDash, each with three star shards to find, all with the calculator's keys.
 
 <img src="docs/screenshots/menu.png" width="640" alt="The NumDash main menu">
 
@@ -14,52 +16,34 @@ NumDash is a fan-made version of Geometry Dash that runs right on a NumWorks gra
 
 You only need the calculator, its USB cable and a computer with Chrome or Edge.
 
-1. **Download** [NumDash.nwa](https://github.com/Mason363/NumPlay/releases/latest/download/NumDash.nwa) (the button above).
+1. **Download** `NumDash.nwa` (or get it inside NumPlay).
 2. **Plug** your calculator into the computer with the USB cable.
 3. **Open** [my.numworks.com/apps](https://my.numworks.com/apps) and follow the steps to send the file to your calculator.
 4. **Play:** on the calculator, press the Home key and open **NumDash**.
 
-That's it. Your progress is saved on the calculator, so you can close the game and come back later.
+Your progress is saved on the calculator, so you can close the game and come back later.
 
-> NumDash is made for the **NumWorks N0120** (the newest model). The website above tells you which model you have.
+> NumDash is made for the **NumWorks N0120** (the newest model).
 
 ## What's inside
 
-### The real levels
-
-Stereo Madness, Back on Track, Polargeist, Dry Out, Base After Base, Can't Let Go, Jumper, Time Machine and Cycles, with the same obstacles, colour changes and 3 hidden coins in each one.
-
-<img src="docs/screenshots/level-select.png" width="320" alt="Picking a level"> <img src="docs/screenshots/gameplay.png" width="320" alt="Jumping through Stereo Madness">
-
-### Clubstep, Deadlocked and Dash
-
-The two demons and the newest level come after Cycles, each with its 3 coins. They bring the UFO, the wave, the robot, the spider and the swing, mini and dual sections, teleports, slopes, moving and spinning obstacles, and in Dash the whole level turning around you.
+### Twelve levels
 
-<img src="docs/screenshots/clubstep.png" width="320" alt="Clubstep"> <img src="docs/screenshots/deadlocked.png" width="320" alt="Deadlocked">
+Neon Start, Pulse Ride, Sky Circuit, Salt Flats, Grid Runner, Hollow Beat, Frost Line, Iron Tide, Lunar Loop, Static Storm, Magma Core and Final Signal, from a first run of spikes and steps to long levels that mix every vehicle at full speed. They are built by `tools/conformite/numdash_niveaux.py` (in NumPlay), and every one is proven finishable by a replay in `tests/replays`.
 
-<img src="docs/screenshots/dash.png" width="320" alt="Dash"> <img src="docs/dash.gif" width="320" alt="The start of Dash: fire, pixel art and a turning level">
+<img src="docs/screenshots/level-select.png" width="320" alt="Picking a level"> <img src="docs/screenshots/gameplay.png" width="320" alt="Jumping through Neon Start">
 
-### It plays like the original
+### Eight ways to move
 
-The jump, the gravity, every game mode and every pad and orb behave like they do in Geometry Dash, so the timing you already know works here too.
-
-<img src="docs/screenshots/ship.png" width="320" alt="Flying the ship"> <img src="docs/screenshots/pause.png" width="320" alt="The pause menu">
+The cube jumps, the ship flies while you hold, the ball flips gravity, the saucer flaps, the wave zig-zags, the robot jumps as long as you hold, the spider snaps to the other side and the swing flips as it floats. Spring pads, gem rings, gravity gates, size gates and speed plates change the run.
 
 ### Practice mode
 
-Pause the game and pick the green diamond to practice. Press **0** to drop a checkpoint and you'll restart from there instead of from the beginning.
-
-### The level complete moment
-
-Beat a level and you get the light rays, the fireworks, the big "Level Complete!" and your stats, just like the game.
-
-<img src="docs/screenshots/level-complete.png" width="320" alt="Level complete"> <img src="docs/screenshots/results.png" width="320" alt="Your results after beating a level">
+Pause the game and pick the flag to practice. Press **0** to drop a checkpoint and you'll restart from there instead of from the beginning.
 
 ### Make it yours
 
-Pick your icon colours in the icon kit, change settings like the progress bar or low detail mode, and build your own levels in the level editor (3 save slots).
-
-<img src="docs/screenshots/icon-kit.png" width="320" alt="The icon kit"> <img src="docs/screenshots/editor.png" width="320" alt="The level editor">
+Paint your cube in the garage, change settings like the progress bar or low detail mode, and build your own levels in the level editor (3 save slots).
 
 ## Controls
 
@@ -76,22 +60,17 @@ The **?** button on the main menu shows these again. For the level editor, **KEY
 
 ## Good to know
 
-- **There is no music.** NumWorks calculators have no speaker. Objects still pulse to the beat of each song.
-- **Your old progress is kept.** If you played an older version of NumDash, your progress on the first four levels and your custom levels carry over.
+- **There is no music.** NumWorks calculators have no speaker. Objects still pulse to the beat of each level.
+- **Old saves:** your settings, colours, totals and custom levels carry over from older versions of NumDash; the stats of the old built-in levels do not (the levels are new).
 - **It won't mess with your other files.** NumDash saves into a few small files of its own and never touches your Python scripts or anything else.
-- NumDash is a free fan project, inspired by Geometry Dash and not affiliated with RobTop Games. All the graphics were redrawn from scratch to look like the game.
 
-## Thanks
+## Credits
 
-Inspired by Geometry Dash. Not affiliated with RobTop Games.
+Made by Mason Chen as part of NumPlay; the levels, artwork, texts, physics engine (`src/game.c`) and editor layout of this version are by Calcade (2026).
 
-- **[gd3ds](https://github.com/AleFunky/gd3ds)** by AleFunky and friends, a Geometry Dash remake for the Nintendo 3DS, whose research into how the game works made this possible.
-- **[gdsolver](https://github.com/gdsolver/gdsolver)** (MIT), whose measurements of Geometry Dash 2.2 shaped the newer game modes, triggers and turning levels.
-- **[GDRWeb](https://github.com/iliasHDZ/GDRWeb)** by IliasHDZ (MIT), a Geometry Dash level renderer, used to check the redrawn objects against the originals.
-- **[gmdkit](https://github.com/UHDanke/gmdkit)** by HDanke (MIT), where the level data of Clubstep, Deadlocked and Dash comes from.
-- The **Rammetto One** and **Nunito** fonts, both free under the SIL Open Font License (see the [LICENSES](LICENSES) folder).
+- The **Archivo** and **Nunito** fonts, both free under the SIL Open Font License (see the [LICENSES](LICENSES) folder).
 
-Made by Mason Chen as part of NumPlay.
+NumDash is an independent game. It is not affiliated with, endorsed by or connected to RobTop Games or Geometry Dash.
 
 ## For developers
 
@@ -104,4 +83,4 @@ make test          # tests, level replays and random-input tests
 make run           # desktop version (arrow keys, Space to jump, Esc to go back)
 ```
 
-`make assets` and `make levels` rebuild the graphics and level data (Python 3 with numpy and Pillow).
+`make assets` and `make levels` rebuild the graphics and level data (Python 3 with numpy and Pillow). The levels come from `levels/numdash/NN.json` (`python3 ../../tools/conformite/numdash_niveaux.py` writes them); `tools/solve.c` finds a replay that finishes a level.
diff --git a/games/numdash/assets/icon.png b/games/numdash/assets/icon.png
index 0b437229d0bb9cd06db245f54d0ca715f6b91f02..d77585a442cd8c43845386cc8b3b8dfaa43d2662 100644
GIT binary patch
delta 3362
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

delta 1643
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

diff --git a/games/numdash/docs/RELEASE_NOTES.md b/games/numdash/docs/RELEASE_NOTES.md
index 4c51361..c98be6b 100644
--- a/games/numdash/docs/RELEASE_NOTES.md
+++ b/games/numdash/docs/RELEASE_NOTES.md
@@ -1,11 +1,10 @@
-**How to install:** download `NumDash.nwa` below, plug your NumWorks calculator into your computer, open [my.numworks.com/apps](https://my.numworks.com/apps) and send the file to the calculator. Then open **NumDash** from the Home screen.
+**How to install:** download `NumDash.nwa`, plug your NumWorks calculator into your computer, open [my.numworks.com/apps](https://my.numworks.com/apps) and send the file to the calculator. Then open **NumDash** from the Home screen.
 
-**What's new:** NumDash is now a much closer copy of Geometry Dash.
+**What's new (Calcade version, 19 October 2026):** NumDash is now a game of its own.
 
-- The first seven real levels, from Stereo Madness to Jumper, with their hidden coins.
-- Jumping, gravity and the ship feel like the original game.
-- New graphics, effects and menus that look like Geometry Dash: the main menu, level select, pause menu, "New Best!", practice mode and the full "Level Complete!" celebration.
-- Pick your icon colours, change settings and build your own levels.
-- Your old progress is kept.
+- Twelve new levels made for NumDash, from Neon Start to Final Signal, each with three star shards to find.
+- New look: panels, crystals, spring pads, gem rings, gates, a new cube, ship, ball, saucer and the other vehicles, new menus, new backdrop and ground, new title lettering.
+- New loading lines and cheers.
+- Your settings, colours and custom levels are kept.
 
 **Controls:** OK, EXE or Up to jump, Back to pause, 0 to place a checkpoint in practice mode, Home to save and quit.
diff --git a/games/numdash/docs/calcade.png b/games/numdash/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..61dca63142a6f88c0cff3f75cc6a8bc63d4a839b
GIT binary patch
literal 19880
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

literal 0
HcmV?d00001

diff --git a/games/numdash/docs/screenshots/gameplay.png b/games/numdash/docs/screenshots/gameplay.png
index cdd5894ee20ba79496da932e37f9a335f780558d..cebf609fc0404807aef474da92770abd4a2d854f 100644
GIT binary patch
literal 7631
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

literal 12005
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
aF#i@zN(SmjLmpoTsNd1KU8rjL@_zvgNjK&I

diff --git a/games/numdash/docs/screenshots/level-select.png b/games/numdash/docs/screenshots/level-select.png
index b8b6d66dd7281d179009cde652c60c7bfb582b61..4d991d302a8822613e0c87461c01a383d3fcbfba 100644
GIT binary patch
literal 12339
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

literal 14941
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
Cn<9(=

diff --git a/games/numdash/docs/screenshots/menu.png b/games/numdash/docs/screenshots/menu.png
index ad2527ccd29ab09c8dcb5c2d7a614249b477ef31..3b212910c1d2f2924b1de0db894cc0a0b2e2edcb 100644
GIT binary patch
literal 20142
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

literal 22162
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

diff --git a/games/numdash/lang/fr.txt b/games/numdash/lang/fr.txt
index 61c172b..e551969 100644
--- a/games/numdash/lang/fr.txt
+++ b/games/numdash/lang/fr.txt
@@ -1,7 +1,6 @@
 # Based on the French of Gabriel (Mason363/NumPlay#31)
 # NumDash in French: the English text as in the source, a tab, the translation (see tools/lang.py).
-# The pixel font is capitals only: accents are drawn over them. It has no = ; < > " & * # @. Level names stay as in the original game.
-NUMWORKS EDITION	ÉDITION NUMWORKS
+# The pixel font is capitals only: accents are drawn over them. It has no = ; < > " & * # @. Level names stay in English.
 # the settings (after a check box: about 180 pixels)
 SHOW PERCENT	AFFICHER LE %
 PROGRESS BAR	BARRE DE PROGRESSION
@@ -16,11 +15,9 @@ TOTAL JUMPS	SAUTS AU TOTAL
 TOTAL ATTEMPTS	ESSAIS AU TOTAL
 COMPLETED LEVELS	NIVEAUX TERMINÉS
 STARS	ÉTOILES
-SECRET COINS	PIÈCES SECRÈTES
 HOW TO PLAY	COMMENT JOUER
 OK, EXE OR UP: JUMP	OK, EXE OU HAUT : SAUTER
 HOLD TO KEEP JUMPING OR TO FLY	MAINTIENS POUR SAUTER OU VOLER
-TAP IN MID AIR ON AN ORB	APPUIE EN L'AIR SUR UN ORBE
 BACK: PAUSE    HOME: SAVE AND QUIT	RETOUR : PAUSE    ACCUEIL : SAUVER, QUITTER
 PRACTICE: 0 PLACES A CHECKPOINT	ENTRAÎNEMENT : 0 POSE UN POINT
 BACKSPACE REMOVES THE LAST ONE	EFFACER ENLÈVE LE DERNIER
@@ -35,47 +32,12 @@ VAR: SAVE    LN: LEVEL SETTINGS	VAR : SAUVER    LN : RÉGLAGES DU NIVEAU
 EXE: PLAYTEST    BACK: EXIT	EXE : TESTER    RETOUR : SORTIR
 NORMAL MODE	MODE NORMAL
 PRACTICE MODE	MODE ENTRAÎNEMENT
-ICON KIT	KIT D'ICÔNES
 COLOR 1	COULEUR 1
 COLOR 2	COULEUR 2
 # the tips while a level loads (two lines if long)
-LISTEN TO THE MUSIC TO HELP TIME YOUR JUMPS	ÉCOUTE LA MUSIQUE POUR CALER TES SAUTS
-BACK FOR MORE ARE YA?	TU EN REDEMANDES ?
-USE PRACTICE MODE TO LEARN THE LAYOUT OF A LEVEL	UTILISE L'ENTRAÎNEMENT POUR APPRENDRE UN NIVEAU
-IF AT FIRST YOU DON'T SUCCEED, TRY, TRY AGAIN...	SI TU RATES, RÉESSAIE, ENCORE ET ENCORE...
-CUSTOMIZE YOUR CHARACTER'S ICON AND COLOR!	PERSONNALISE TON ICÔNE ET SES COULEURS !
-SPIKES ARE NOT YOUR FRIENDS. DON'T FORGET TO JUMP	LES PICS NE SONT PAS TES AMIS. PENSE À SAUTER
-BUILD YOUR OWN LEVELS USING THE LEVEL EDITOR	CRÉE TES PROPRES NIVEAUX AVEC L'ÉDITEUR
-CAN YOU BEAT THEM ALL?	PEUX-TU TOUS LES BATTRE ?
-PRO TIP: DON'T CRASH	ASTUCE DE PRO : NE TE PLANTE PAS
-HOLD DOWN TO KEEP JUMPING	MAINTIENS POUR SAUTER EN CONTINU
-PRO TIP: JUMP	ASTUCE DE PRO : SAUTE
-PLAY, CRASH, RINSE AND REPEAT	JOUE, PLANTE-TOI, RECOMMENCE
-ONLY ONE BUTTON REQUIRED TO CRASH	UN SEUL BOUTON POUR SE PLANTER
-IT'S ALL IN THE TIMING	TOUT EST DANS LE TIMING
-FAKE SPIKES ARE FAKE	LES FAUX PICS SONT FAUX
-WHERE DID I PUT THAT COIN...	OÙ AI-JE MIS CETTE PIÈCE...
-CALCULATING CHANCE OF SUCCESS	CALCUL DES CHANCES DE RÉUSSITE
-LOADING WILL BE FINISHED... SOON	LE CHARGEMENT SE TERMINE... BIENTÔT
 # "ATTEMPT 12" in the level
 ATTEMPT 	ESSAI 
 # a level complete
-AWESOME!	GÉNIAL !
-GOOD JOB!	BEAU TRAVAIL !
-WELL DONE!	BIEN JOUÉ !
-IMPRESSIVE!	IMPRESSIONNANT !
-AMAZING!	FABULEUX !
-INCREDIBLE!	INCROYABLE !
-SKILLFUL!	HABILE !
-BRILLIANT!	BRILLANT !
-NOT BAD!	PAS MAL !
-WARP SPEED!	VITESSE LUMIÈRE !
-CHALLENGE BREAKER!	BRISEUR DE DÉFIS !
-REFLEX MASTER!	MAÎTRE DES RÉFLEXES !
-I AM SPEECHLESS...	JE SUIS SANS VOIX...
-YOU ARE... THE ONE!	TU ES... L'ÉLU !
-HOW IS THIS POSSIBLE!?	MAIS COMMENT !?
-YOU BEAT ME...	TU M'AS BATTU...
 # big letters over the level (and the percentage on a second line): no accent in this one
 NEW BEST!\n	NOUVEAU RECORD !\n
 PRACTICE COMPLETE!	ENTRAÎNEMENT FINI !
@@ -86,8 +48,6 @@ RESTART	RECOMMENCER
 ATTEMPTS: 	ESSAIS : 
 JUMPS: 	SAUTS : 
 TIME: 	TEMPS : 
-WELL DONE... NOW TRY TO COMPLETE	BRAVO... ESSAIE MAINTENANT DE LE FINIR
-IT WITHOUT ANY CHECKPOINTS!	SANS AUCUN POINT DE CONTRÔLE !
 # the level editor (the levels' names: short, buttons follow them)
 MY LEVEL 1	NIVEAU 1
 MY LEVEL 2	NIVEAU 2
@@ -162,3 +122,42 @@ YES	OUI
 OK	OK
 QUIT GAME	QUITTER LE JEU
 ARE YOU SURE YOU\nWANT TO QUIT?	ES-TU SÛR DE\nVOULOIR QUITTER ?
+# Calcade, 19 octobre 2026 : textes de NumDash (titre, astuces, félicitations, écran des éclats)
+A CALCADE GAME	UN JEU CALCADE
+STAR SHARDS	ÉCLATS D'ÉTOILE
+PRESS INSIDE A RING TO BOUNCE	APPUIE DANS UN ANNEAU POUR REBONDIR
+GARAGE	GARAGE
+TAP IN TIME WITH THE PULSE OF THE LEVEL	APPUIE AU RYTHME DU NIVEAU
+PRACTICE MODE KEEPS YOUR CHECKPOINTS	L'ENTRAÎNEMENT GARDE TES POINTS DE CONTRÔLE
+EVERY CRASH TEACHES YOU THE NEXT JUMP	CHAQUE CHUTE T'APPREND LE SAUT SUIVANT
+THREE STARS HIDE IN EVERY LEVEL	TROIS ÉCLATS SE CACHENT DANS CHAQUE NIVEAU
+PAINT YOUR CUBE IN THE GARAGE	PEINS TON CUBE AU GARAGE
+A PAD UNDER YOUR FEET MEANS A BIG JUMP	UN TREMPLIN SOUS TES PIEDS, C'EST UN GRAND SAUT
+BUILD YOUR OWN LEVELS WITH THE EDITOR	CRÉE TES NIVEAUX AVEC L'ÉDITEUR
+RINGS ONLY WORK IF YOU PRESS IN THEM	UN ANNEAU NE MARCHE QUE SI TU APPUIES DEDANS
+HOLD THE KEY TO KEEP JUMPING	MAINTIENS LA TOUCHE POUR SAUTER EN CONTINU
+THE SHIP RISES WHILE YOU HOLD	LE VAISSEAU MONTE TANT QUE TU MAINTIENS
+LOOK AHEAD, NOT AT YOUR CUBE	REGARDE DEVANT, PAS TON CUBE
+WARMING UP THE CALCULATOR...	LA CALCULATRICE CHAUFFE...
+COUNTING THE SPIKES...	ON COMPTE LES PICS...
+ONE KEY, TWELVE LEVELS	UNE TOUCHE, DOUZE NIVEAUX
+BREATHE, THEN TRY AGAIN	RESPIRE, PUIS RECOMMENCE
+ALMOST READY...	PRESQUE PRÊT...
+NICE RUN!	BELLE COURSE !
+CLEAN!	NET !
+SMOOTH!	FLUIDE !
+ON THE BEAT!	EN RYTHME !
+SHARP!	PRÉCIS !
+UNSTOPPABLE!	INARRÊTABLE !
+FLAWLESS TIMING!	TIMING PARFAIT !
+TOP SPEED!	PLEINE VITESSE !
+NOT A SCRATCH!	PAS UNE ÉGRATIGNURE !
+SPIKES CAN'T STOP YOU!	LES PICS NE T'ARRÊTENT PAS !
+THE CALCULATOR IS PROUD!	LA CALCULATRICE EST FIÈRE !
+ONE KEY, ONE HERO!	UNE TOUCHE, UN HÉROS !
+WHAT A FINISH!	QUELLE ARRIVÉE !
+LEGENDARY!	LÉGENDAIRE !
+PURE RHYTHM!	DU PUR RYTHME !
+SEE YOU AT THE NEXT ONE!	À TOUT DE SUITE AU SUIVANT !
+PRACTICE DONE! NEXT STEP:	ENTRAÎNEMENT FINI ! PROCHAINE ÉTAPE :
+THE SAME RUN, NO CHECKPOINTS	LA MÊME COURSE, SANS POINT DE CONTRÔLE
diff --git a/games/numdash/lang/zh.txt b/games/numdash/lang/zh.txt
index 0b2525b..3bdd828 100644
--- a/games/numdash/lang/zh.txt
+++ b/games/numdash/lang/zh.txt
@@ -1,7 +1,6 @@
 # NumDash in Chinese: the English text as in the source, a tab, the translation (see tools/lang.py).
 # Chinese letters come from the 12-pixel font, outlined like the game's capitals (twice as big in the
-# biggest letters). Level names stay as in the original game.
-NUMWORKS EDITION	NUMWORKS 版
+# biggest letters). Level names stay in English.
 SHOW PERCENT	显示百分比
 PROGRESS BAR	进度条
 AUTO CHECKPOINTS	自动检查点
@@ -15,11 +14,9 @@ TOTAL JUMPS	总跳跃次数
 TOTAL ATTEMPTS	总尝试次数
 COMPLETED LEVELS	已完成关卡
 STARS	星星
-SECRET COINS	秘密金币
 HOW TO PLAY	玩法
 OK, EXE OR UP: JUMP	OK、EXE 或上：跳跃
 HOLD TO KEEP JUMPING OR TO FLY	按住可连续跳跃或飞行
-TAP IN MID AIR ON AN ORB	在空中碰到跳球时按键
 BACK: PAUSE    HOME: SAVE AND QUIT	返回：暂停    主页：保存并退出
 PRACTICE: 0 PLACES A CHECKPOINT	练习模式：0 放置检查点
 BACKSPACE REMOVES THE LAST ONE	退格删除最后一个
@@ -34,47 +31,12 @@ VAR: SAVE    LN: LEVEL SETTINGS	VAR：保存    LN：关卡设置
 EXE: PLAYTEST    BACK: EXIT	EXE：试玩    返回：退出
 NORMAL MODE	普通模式
 PRACTICE MODE	练习模式
-ICON KIT	图标
 COLOR 1	颜色 1
 COLOR 2	颜色 2
 # the tips while a level loads (one line: 23 letters at most)
-LISTEN TO THE MUSIC TO HELP TIME YOUR JUMPS	跟着音乐的节奏起跳
-BACK FOR MORE ARE YA?	又回来了？
-USE PRACTICE MODE TO LEARN THE LAYOUT OF A LEVEL	用练习模式熟悉关卡布局
-IF AT FIRST YOU DON'T SUCCEED, TRY, TRY AGAIN...	一次不行，就再试一次……
-CUSTOMIZE YOUR CHARACTER'S ICON AND COLOR!	自定义你的图标和颜色！
-SPIKES ARE NOT YOUR FRIENDS. DON'T FORGET TO JUMP	尖刺不是你的朋友。别忘了跳！
-BUILD YOUR OWN LEVELS USING THE LEVEL EDITOR	用关卡编辑器做你自己的关卡
-CAN YOU BEAT THEM ALL?	你能全部通关吗？
-PRO TIP: DON'T CRASH	高手提示：别撞上
-HOLD DOWN TO KEEP JUMPING	按住就能连续跳跃
-PRO TIP: JUMP	高手提示：跳
-PLAY, CRASH, RINSE AND REPEAT	开玩，撞死，再来一遍
-ONLY ONE BUTTON REQUIRED TO CRASH	只需一个键就能撞死
-IT'S ALL IN THE TIMING	关键在于时机
-FAKE SPIKES ARE FAKE	假尖刺是假的
-WHERE DID I PUT THAT COIN...	那枚金币放哪儿了……
-CALCULATING CHANCE OF SUCCESS	正在计算成功率
-LOADING WILL BE FINISHED... SOON	马上就加载好了……
 # "ATTEMPT 12" in the level
 ATTEMPT 	尝试 
 # a level complete
-AWESOME!	太棒了！
-GOOD JOB!	干得好！
-WELL DONE!	做得好！
-IMPRESSIVE!	厉害！
-AMAZING!	惊人！
-INCREDIBLE!	难以置信！
-SKILLFUL!	技术高超！
-BRILLIANT!	精彩！
-NOT BAD!	还不错！
-WARP SPEED!	光速！
-CHALLENGE BREAKER!	挑战终结者！
-REFLEX MASTER!	反应大师！
-I AM SPEECHLESS...	我无话可说……
-YOU ARE... THE ONE!	你就是……天选之人！
-HOW IS THIS POSSIBLE!?	这怎么可能！？
-YOU BEAT ME...	你赢了……
 NEW BEST!\n	新纪录！\n
 PRACTICE COMPLETE!	练习完成！
 LEVEL COMPLETE!	关卡完成！
@@ -85,8 +47,6 @@ ATTEMPTS: 	尝试次数：
 JUMPS: 	跳跃次数：
 TIME: 	用时：
 # two lines in English, too close together for Chinese letters: all on the first
-WELL DONE... NOW TRY TO COMPLETE	做得好！现在试试不用检查点通关！
-IT WITHOUT ANY CHECKPOINTS!	
 # the level editor
 MY LEVEL 1	我的关卡 1
 MY LEVEL 2	我的关卡 2
@@ -159,3 +119,42 @@ OK	OK
 QUIT GAME	退出游戏
 # (one line: two would be too close for Chinese letters)
 ARE YOU SURE YOU\nWANT TO QUIT?	确定要退出吗？
+# Calcade, 19 octobre 2026 : textes de NumDash (titre, astuces, félicitations, écran des éclats)
+A CALCADE GAME	CALCADE 游戏
+STAR SHARDS	星之碎片
+PRESS INSIDE A RING TO BOUNCE	在环内按键即可弹起
+GARAGE	车库
+TAP IN TIME WITH THE PULSE OF THE LEVEL	跟着关卡的节拍按键
+PRACTICE MODE KEEPS YOUR CHECKPOINTS	练习模式会保留检查点
+EVERY CRASH TEACHES YOU THE NEXT JUMP	每次失败都教你下一跳
+THREE STARS HIDE IN EVERY LEVEL	每关藏着三个碎片
+PAINT YOUR CUBE IN THE GARAGE	在车库给方块上色
+A PAD UNDER YOUR FEET MEANS A BIG JUMP	踩到跳板就能跳很高
+BUILD YOUR OWN LEVELS WITH THE EDITOR	用编辑器做你的关卡
+RINGS ONLY WORK IF YOU PRESS IN THEM	在环里按键才有效
+HOLD THE KEY TO KEEP JUMPING	按住按键持续跳跃
+THE SHIP RISES WHILE YOU HOLD	按住时飞船上升
+LOOK AHEAD, NOT AT YOUR CUBE	看前方，别看方块
+WARMING UP THE CALCULATOR...	计算器预热中...
+COUNTING THE SPIKES...	正在数尖刺...
+ONE KEY, TWELVE LEVELS	一个键，十二关
+BREATHE, THEN TRY AGAIN	深呼吸，再来一次
+ALMOST READY...	马上就好...
+NICE RUN!	跑得好！
+CLEAN!	干净利落！
+SMOOTH!	流畅！
+ON THE BEAT!	踩准节拍！
+SHARP!	精准！
+UNSTOPPABLE!	势不可挡！
+FLAWLESS TIMING!	完美时机！
+TOP SPEED!	全速前进！
+NOT A SCRATCH!	毫发无伤！
+SPIKES CAN'T STOP YOU!	尖刺挡不住你！
+THE CALCULATOR IS PROUD!	计算器为你骄傲！
+ONE KEY, ONE HERO!	一个键，一个英雄！
+WHAT A FINISH!	精彩的结尾！
+LEGENDARY!	传奇！
+PURE RHYTHM!	纯粹的节奏！
+SEE YOU AT THE NEXT ONE!	下一关见！
+PRACTICE DONE! NEXT STEP:	练习完成！下一步：
+THE SAME RUN, NO CHECKPOINTS	同样的路线，不用检查点
diff --git a/games/numdash/levels/manifest.json b/games/numdash/levels/manifest.json
index c2ea899..b4752d9 100644
--- a/games/numdash/levels/manifest.json
+++ b/games/numdash/levels/manifest.json
@@ -1,171 +1,112 @@
 {
   "levels": [
     {
-      "name": "STEREO MADNESS",
-      "file": "levels/reference/StereoMadness.gmd",
-      "source": "https://github.com/AleFunky/gd3ds/tree/cdea1c2fad3d67fa17d2cfa781013b0ee58bb280/romfs/main_levels",
-      "sha256": "e42799a8d482d3a99d6f91f715de89258c2f95d4ea863151fe617bdb7c661ed3",
-      "objects": 2272,
-      "events": 19,
-      "compressed_bytes": 2474,
-      "skipped_ids": {}
+      "name": "NEON START",
+      "file": "levels/numdash/01.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "63242c0a63f2c6cf50fee1eb4c4a2a4ecbabe958d1b827faf877e51babcaf858",
+      "objects": 268,
+      "events": 0,
+      "compressed_bytes": 391
     },
     {
-      "name": "BACK ON TRACK",
-      "file": "levels/reference/BackOnTrack.gmd",
-      "source": "https://github.com/AleFunky/gd3ds/tree/cdea1c2fad3d67fa17d2cfa781013b0ee58bb280/romfs/main_levels",
-      "sha256": "6e77d5d126da52f8010cc775030e2376c685bd2dd930f7bc7f7eddc13da85f75",
-      "objects": 1530,
-      "events": 15,
-      "compressed_bytes": 1589,
-      "skipped_ids": {}
+      "name": "PULSE RIDE",
+      "file": "levels/numdash/02.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "f47f0d1ebd045d3052ceec2bcf8d7433ec077b5e9773da44f492b06aad0c5d4b",
+      "objects": 464,
+      "events": 2,
+      "compressed_bytes": 582
     },
     {
-      "name": "POLARGEIST",
-      "file": "levels/reference/Polargeist.gmd",
-      "source": "https://github.com/AleFunky/gd3ds/tree/cdea1c2fad3d67fa17d2cfa781013b0ee58bb280/romfs/main_levels",
-      "sha256": "bb75d5f0ab577c7586c1143202f54dd39ba9237ed49a20cab3132092161b8e02",
-      "objects": 1509,
-      "events": 22,
-      "compressed_bytes": 2107,
-      "skipped_ids": {}
+      "name": "SKY CIRCUIT",
+      "file": "levels/numdash/03.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "922d6363a4467ae98eb9f8e19c44a151fdcc4658c952d6f11b7bc9e961f9b298",
+      "objects": 588,
+      "events": 2,
+      "compressed_bytes": 609
     },
     {
-      "name": "DRY OUT",
-      "file": "levels/reference/DryOut.gmd",
-      "source": "https://github.com/AleFunky/gd3ds/tree/cdea1c2fad3d67fa17d2cfa781013b0ee58bb280/romfs/main_levels",
-      "sha256": "29349b1d9a72cf832a7236674e0360834203c35a16d90ebe2152bbbe72b3b0e3",
-      "objects": 1402,
-      "events": 42,
-      "compressed_bytes": 1965,
-      "skipped_ids": {}
+      "name": "SALT FLATS",
+      "file": "levels/numdash/04.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "e40f701cfd58ccc449994ad5d4e8bf471fe1364582d00d1c21b353cad26e51f1",
+      "objects": 539,
+      "events": 2,
+      "compressed_bytes": 598
     },
     {
-      "name": "BASE AFTER BASE",
-      "file": "levels/reference/BaseAfterBase.gmd",
-      "source": "https://github.com/AleFunky/gd3ds/tree/cdea1c2fad3d67fa17d2cfa781013b0ee58bb280/romfs/main_levels",
-      "sha256": "f43634e6b4f5e0d02ff903f7890e478a1b61ba714b960d684aed0e85fa3ae94f",
-      "objects": 2126,
-      "events": 20,
-      "compressed_bytes": 2478,
-      "skipped_ids": {}
+      "name": "GRID RUNNER",
+      "file": "levels/numdash/05.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "1ec22d610456622f38b8875b1de6d9162f4d8d820dcda3d6e46f82cd28396316",
+      "objects": 559,
+      "events": 2,
+      "compressed_bytes": 641
     },
     {
-      "name": "CAN'T LET GO",
-      "file": "levels/reference/CantLetGo.gmd",
-      "source": "https://github.com/AleFunky/gd3ds/tree/cdea1c2fad3d67fa17d2cfa781013b0ee58bb280/romfs/main_levels",
-      "sha256": "0e081466ff06567cf8eddbcb2a0b6580867838be30bcff74954d7f1bc9b0aa4d",
-      "objects": 1691,
-      "events": 13,
-      "compressed_bytes": 2152,
-      "skipped_ids": {}
+      "name": "HOLLOW BEAT",
+      "file": "levels/numdash/06.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "ee91a96e2b1111419c71a408d410e55570dc77d72b655fd9941c5faeacdddc21",
+      "objects": 617,
+      "events": 2,
+      "compressed_bytes": 673
     },
     {
-      "name": "JUMPER",
-      "file": "levels/reference/Jumper.gmd",
-      "source": "https://github.com/AleFunky/gd3ds/tree/cdea1c2fad3d67fa17d2cfa781013b0ee58bb280/romfs/main_levels",
-      "sha256": "20918d084e122190dff545fc20a2a91037bd82e0dce5db002486fdf6563c862a",
-      "objects": 2767,
-      "events": 46,
-      "compressed_bytes": 2792,
-      "skipped_ids": {}
+      "name": "FROST LINE",
+      "file": "levels/numdash/07.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "baa21005d72dd5589c12136684ed3924f37531f5ba7c4d96b39225d7e19e6422",
+      "objects": 653,
+      "events": 2,
+      "compressed_bytes": 728
     },
     {
-      "name": "TIME MACHINE",
-      "file": "levels/reference/TimeMachine.gmd",
-      "source": "https://github.com/AleFunky/gd3ds/tree/cdea1c2fad3d67fa17d2cfa781013b0ee58bb280/romfs/main_levels",
-      "sha256": "9892fedc491a190403b109f6561edcc8085f0ad802773cab076ac70eea9fb369",
-      "objects": 3563,
-      "events": 30,
-      "compressed_bytes": 4988,
-      "skipped_ids": {
-        "45": 3,
-        "46": 3
-      }
+      "name": "IRON TIDE",
+      "file": "levels/numdash/08.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "8afce8f0f3f89f3919a94c3920ed01185f9b7dfc1b42071f69bd6987f62aeead",
+      "objects": 609,
+      "events": 2,
+      "compressed_bytes": 713
     },
     {
-      "name": "CYCLES",
-      "file": "levels/reference/Cycles.gmd",
-      "source": "https://github.com/AleFunky/gd3ds/tree/cdea1c2fad3d67fa17d2cfa781013b0ee58bb280/romfs/main_levels",
-      "sha256": "7da96eba59a34ca99d20081838c35468bf29312051fbe8bd178c62ff1edbd9e5",
-      "objects": 3852,
-      "events": 66,
-      "compressed_bytes": 4641,
-      "skipped_ids": {
-        "45": 2,
-        "46": 1
-      }
+      "name": "LUNAR LOOP",
+      "file": "levels/numdash/09.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "22e945932f76d514b91e3d3d90a09d250a015399c8ff13f78d3de759965b0c0b",
+      "objects": 581,
+      "events": 2,
+      "compressed_bytes": 669
     },
     {
-      "name": "CLUBSTEP",
-      "file": "levels/reference/Clubstep.gmd",
-      "source": "https://github.com/UHDanke/gmdkit/tree/ec79468588c6beb46712fbdc142bb06fa9a1d9c5/data/txt/object_string/official/main/14.txt",
-      "sha256": "e5e8ef91c0fb788bb0352ff759c85115e01f849257e36b85de028761772a8953",
-      "objects": 7506,
-      "events": 0,
-      "compressed_bytes": 13338,
-      "skipped_ids": {}
+      "name": "STATIC STORM",
+      "file": "levels/numdash/10.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "cb2f03c89525b63579766f3d0bf947af2a8328eaedccc36b8bad26b2c3956655",
+      "objects": 622,
+      "events": 2,
+      "compressed_bytes": 660
     },
     {
-      "name": "DEADLOCKED",
-      "file": "levels/reference/Deadlocked.gmd",
-      "source": "https://github.com/UHDanke/gmdkit/tree/ec79468588c6beb46712fbdc142bb06fa9a1d9c5/data/txt/object_string/official/main/20.txt",
-      "sha256": "9f3b0893b3aef222b9031920a3f938817655978619da74099debb60fe8742cf2",
-      "objects": 19006,
-      "events": 0,
-      "compressed_bytes": 43969,
-      "skipped_ids": {
-        "115": 3,
-        "914": 16
-      }
+      "name": "MAGMA CORE",
+      "file": "levels/numdash/11.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "7624429021fe01dacf3ce1c0d136a4e025186969b89259334a0c722ae62d3baf",
+      "objects": 679,
+      "events": 2,
+      "compressed_bytes": 662
     },
     {
-      "name": "DASH",
-      "file": "levels/reference/Dash.gmd",
-      "source": "https://github.com/UHDanke/gmdkit/tree/ec79468588c6beb46712fbdc142bb06fa9a1d9c5/data/txt/object_string/official/main/22.txt",
-      "sha256": "b6303210b41ed372c2234648c1482be8df501b5e98460805f2c4a46305d497f3",
-      "objects": 16771,
-      "events": 0,
-      "compressed_bytes": 53732,
-      "skipped_ids": {
-        "31": 10,
-        "914": 4,
-        "1585": 25,
-        "1915": 4,
-        "1964": 14,
-        "2015": 20,
-        "2016": 17,
-        "2062": 4,
-        "2065": 427,
-        "2067": 6,
-        "2899": 10,
-        "2903": 18,
-        "2904": 14,
-        "2905": 2,
-        "2907": 1,
-        "2910": 4,
-        "2911": 8,
-        "2913": 9,
-        "2914": 4,
-        "2916": 2,
-        "2919": 7,
-        "2920": 8,
-        "2921": 2,
-        "2922": 8,
-        "2923": 23,
-        "2999": 5,
-        "3006": 3,
-        "3010": 2,
-        "3011": 1,
-        "3016": 1,
-        "3020": 1,
-        "3021": 1,
-        "3029": 3,
-        "3032": 10,
-        "3033": 1,
-        "3608": 2,
-        "3662": 3
-      }
+      "name": "FINAL SIGNAL",
+      "file": "levels/numdash/12.json",
+      "source": "tools/conformite/numdash_niveaux.py",
+      "sha256": "7a37efdfeb01c4445cfb5cacff19eea93504b5563af260ec2fef5a760c903f30",
+      "objects": 783,
+      "events": 2,
+      "compressed_bytes": 772
     }
   ]
 }
diff --git a/games/numdash/levels/numdash/01.json b/games/numdash/levels/numdash/01.json
new file mode 100644
index 0000000..965eef9
--- /dev/null
+++ b/games/numdash/levels/numdash/01.json
@@ -0,0 +1 @@
+{"nom":"NEON START","difficulte":1,"etoiles":1,"bpm":150,"depart":0,"couleurs":{"fond":[22,18,64],"sol":[94,36,160],"ligne":[255,214,102],"objets":[255,255,255]},"objets":[["BLOCK",300,15,0,0],["BLOCK",390,45,0,0],["GRID_DECO",390,15,0,0],["BLOCK",420,45,0,0],["GRID_DECO",420,15,0,0],["BLOCK",450,45,0,0],["GRID_DECO",450,15,0,0],["BLOCK",480,45,0,0],["GRID_DECO",480,15,0,0],["BLOCK",510,45,0,0],["GRID_DECO",510,15,0,0],["SPIKE",390,15,0,0],["SPIKE",480,15,0,0],["STAR",688,255,0,0],["STAR",320,195,0,0],["SPIKE",720,15,0,0],["SPIKE",750,15,0,0],["STAR",886,195,0,0],["BLOCK",960,15,0,0],["SPIKE",1080,15,0,0],["SPIKE",1260,15,0,0],["SPIKE",1290,15,0,0],["DSPIKES3",1396,14,0,0],["STAR",1306,225,0,0],["COIN",1410,40,0,0],["BLOCK",1500,15,0,0],["BLOCK",1530,15,0,0],["BLOCK",1560,15,0,0],["GRID_DECO",1590,15,0,0],["BLOCK",1590,45,0,0],["GRID_DECO",1620,15,0,0],["BLOCK",1620,45,0,0],["GRID_DECO",1650,15,0,0],["BLOCK",1650,45,0,0],["SPIKE",1710,15,0,0],["SPIKE",1740,15,0,0],["DSPIKES2",1721,18,0,0],["STAR",1595,225,0,0],["BLOCK",1950,15,0,0],["SPIKE",2070,15,0,0],["DSPIKES3",2084,14,0,0],["BLOCK",2250,15,0,0],["BLOCK",2280,15,0,0],["BLOCK",2310,15,0,0],["GRID_DECO",2340,15,0,0],["BLOCK",2340,45,0,0],["GRID_DECO",2370,15,0,0],["BLOCK",2370,45,0,0],["GRID_DECO",2400,15,0,0],["BLOCK",2400,45,0,0],["SPIKE",2460,15,0,0],["SPIKE",2490,15,0,0],["STAR",2253,255,0,0],["SPIKE",2700,15,0,0],["SPIKE",2730,15,0,0],["DSPIKES3",2838,14,0,0],["STAR",2869,165,0,0],["BLOCK",2940,15,0,0],["SPIKE",3060,15,0,0],["DSPIKES2",3119,18,0,0],["STAR",2994,165,0,0],["SPIKE",3240,15,0,0],["SPIKE",3270,15,0,0],["DSPIKES1",3380,21,0,0],["STAR",3377,195,0,0],["STAR",3360,225,0,0],["COIN",3390,40,0,0],["BLOCK",3480,15,0,0],["BLOCK",3570,45,0,0],["GRID_DECO",3570,15,0,0],["BLOCK",3600,45,0,0],["GRID_DECO",3600,15,0,0],["BLOCK",3630,45,0,0],["GRID_DECO",3630,15,0,0],["BLOCK",3660,45,0,0],["GRID_DECO",3660,15,0,0],["BLOCK",3690,45,0,0],["GRID_DECO",3690,15,0,0],["SPIKE",3570,15,0,0],["SPIKE",3660,15,0,0],["DSPIKES2",3664,18,0,0],["STAR",3625,255,0,0],["STAR",3832,165,0,0],["BLOCK",3900,15,0,0],["BLOCK",3930,15,0,0],["BLOCK",3960,15,0,0],["GRID_DECO",3990,15,0,0],["BLOCK",3990,45,0,0],["GRID_DECO",4020,15,0,0],["BLOCK",4020,45,0,0],["GRID_DECO",4050,15,0,0],["BLOCK",4050,45,0,0],["SPIKE",4110,15,0,0],["SPIKE",4140,15,0,0],["SPIKE",4350,15,0,0],["SPIKE",4380,15,0,0],["BLOCK",4590,15,0,0],["BLOCK",4680,45,0,0],["GRID_DECO",4680,15,0,0],["BLOCK",4710,45,0,0],["GRID_DECO",4710,15,0,0],["BLOCK",4740,45,0,0],["GRID_DECO",4740,15,0,0],["BLOCK",4770,45,0,0],["GRID_DECO",4770,15,0,0],["BLOCK",4800,45,0,0],["GRID_DECO",4800,15,0,0],["SPIKE",4680,15,0,0],["SPIKE",4770,15,0,0],["SPIKE",5010,15,0,0],["STAR",5089,165,0,0],["BLOCK",5220,15,0,0],["BLOCK",5310,45,0,0],["GRID_DECO",5310,15,0,0],["BLOCK",5340,45,0,0],["GRID_DECO",5340,15,0,0],["BLOCK",5370,45,0,0],["GRID_DECO",5370,15,0,0],["BLOCK",5400,45,0,0],["GRID_DECO",5400,15,0,0],["BLOCK",5430,45,0,0],["GRID_DECO",5430,15,0,0],["SPIKE",5310,15,0,0],["SPIKE",5400,15,0,0],["STAR",5244,225,0,0],["COIN",5550,40,0,0],["BLOCK",5640,15,0,0],["SPIKE",5760,15,0,0],["DSPIKES2",5775,18,0,0],["BLOCK",5940,15,0,0],["BLOCK",5970,15,0,0],["BLOCK",6000,15,0,0],["GRID_DECO",6030,15,0,0],["BLOCK",6030,45,0,0],["GRID_DECO",6060,15,0,0],["BLOCK",6060,45,0,0],["GRID_DECO",6090,15,0,0],["BLOCK",6090,45,0,0],["SPIKE",6150,15,0,0],["SPIKE",6180,15,0,0],["DSPIKES3",6150,14,0,0],["STAR",6234,195,0,0],["SPIKE",6390,15,0,0],["DSPIKES3",6516,14,0,0],["STAR",6528,165,0,0],["BLOCK",6600,15,0,0],["SPIKE",6720,15,0,0],["DSPIKES3",6748,14,0,0],["BLOCK",6900,15,0,0],["BLOCK",6990,45,0,0],["GRID_DECO",6990,15,0,0],["BLOCK",7020,45,0,0],["GRID_DECO",7020,15,0,0],["BLOCK",7050,45,0,0],["GRID_DECO",7050,15,0,0],["BLOCK",7080,45,0,0],["GRID_DECO",7080,15,0,0],["BLOCK",7110,45,0,0],["GRID_DECO",7110,15,0,0],["SPIKE",6990,15,0,0],["SPIKE",7080,15,0,0],["DSPIKES3",7100,14,0,0],["BLOCK",7320,15,0,0],["SPIKE",7440,15,0,0],["DSPIKES3",7494,14,0,0],["STAR",7512,195,0,0],["BLOCK",7620,15,0,0],["BLOCK",7710,45,0,0],["GRID_DECO",7710,15,0,0],["BLOCK",7740,45,0,0],["GRID_DECO",7740,15,0,0],["BLOCK",7770,45,0,0],["GRID_DECO",7770,15,0,0],["BLOCK",7800,45,0,0],["GRID_DECO",7800,15,0,0],["BLOCK",7830,45,0,0],["GRID_DECO",7830,15,0,0],["SPIKE",7710,15,0,0],["SPIKE",7800,15,0,0],["DSPIKES2",7840,18,0,0],["BLOCK",8040,15,0,0],["SPIKE",8160,15,0,0],["DSPIKES2",8187,18,0,0],["STAR",8101,225,0,0],["STAR",8194,195,0,0],["SPIKE",8340,15,0,0],["SPIKE",8370,15,0,0],["DSPIKES1",8449,21,0,0],["STAR",8412,225,0,0],["STAR",8398,255,0,0],["BLOCK",8580,15,0,0],["BLOCK",8610,15,0,0],["BLOCK",8640,15,0,0],["GRID_DECO",8670,15,0,0],["BLOCK",8670,45,0,0],["GRID_DECO",8700,15,0,0],["BLOCK",8700,45,0,0],["GRID_DECO",8730,15,0,0],["BLOCK",8730,45,0,0],["SPIKE",8790,15,0,0],["SPIKE",8820,15,0,0],["SPIKE",9030,15,0,0],["SPIKE",9060,15,0,0],["DSPIKES3",9164,14,0,0],["STAR",9135,165,0,0],["BLOCK",9270,15,0,0],["SPIKE",9390,15,0,0],["DSPIKES2",9447,18,0,0],["STAR",9562,165,0,0],["SPIKE",9570,15,0,0],["DSPIKES3",9685,14,0,0],["STAR",9770,255,0,0],["STAR",9727,165,0,0],["BLOCK",9780,15,0,0],["SPIKE",9900,15,0,0],["SPIKE",10080,15,0,0],["STAR",10151,165,0,0],["SPIKE",10290,15,0,0],["SPIKE",10320,15,0,0],["DSPIKES3",10387,14,0,0],["BLOCK",10530,15,0,0],["SPIKE",10650,15,0,0],["DSPIKES1",10656,21,0,0],["SPIKE",10830,15,0,0],["SPIKE",10860,15,0,0],["BLOCK",11070,15,0,0],["BLOCK",11160,45,0,0],["GRID_DECO",11160,15,0,0],["BLOCK",11190,45,0,0],["GRID_DECO",11190,15,0,0],["BLOCK",11220,45,0,0],["GRID_DECO",11220,15,0,0],["BLOCK",11250,45,0,0],["GRID_DECO",11250,15,0,0],["BLOCK",11280,45,0,0],["GRID_DECO",11280,15,0,0],["SPIKE",11160,15,0,0],["SPIKE",11250,15,0,0],["STAR",11448,255,0,0],["STAR",11128,195,0,0],["SPIKE",11490,15,0,0],["SPIKE",11520,15,0,0],["DSPIKES1",11636,21,0,0],["STAR",11706,195,0,0],["BLOCK",11730,15,0,0],["BLOCK",11820,45,0,0],["GRID_DECO",11820,15,0,0],["BLOCK",11850,45,0,0],["GRID_DECO",11850,15,0,0],["BLOCK",11880,45,0,0],["GRID_DECO",11880,15,0,0],["BLOCK",11910,45,0,0],["GRID_DECO",11910,15,0,0],["BLOCK",11940,45,0,0],["GRID_DECO",11940,15,0,0],["SPIKE",11820,15,0,0],["SPIKE",11910,15,0,0],["SPIKE",12150,15,0,0],["DSPIKES2",12252,18,0,0],["STAR",12300,165,0,0],["STAR",12359,255,0,0],["SPIKE",12360,15,0,0],["SPIKE",12390,15,0,0],["BLOCK",12600,15,0,0],["SPIKE",12720,15,0,0],["SPIKE",12900,15,0,0],["DSPIKES2",12985,18,0,0],["STAR",13038,255,0,0]],"evenements":[]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/02.json b/games/numdash/levels/numdash/02.json
new file mode 100644
index 0000000..1bf7255
--- /dev/null
+++ b/games/numdash/levels/numdash/02.json
@@ -0,0 +1 @@
+{"nom":"PULSE RIDE","difficulte":1,"etoiles":2,"bpm":135,"depart":0,"couleurs":{"fond":[10,52,60],"sol":[16,120,110],"ligne":[255,180,90],"objets":[255,255,255]},"objets":[["BLOCK",300,15,0,0],["BLOCK",330,15,0,0],["BLOCK",360,15,0,0],["GRID_DECO",390,15,0,0],["BLOCK",390,45,0,0],["GRID_DECO",420,15,0,0],["BLOCK",420,45,0,0],["GRID_DECO",450,15,0,0],["BLOCK",450,45,0,0],["SPIKE",510,15,0,0],["SPIKE",540,15,0,0],["STAR",693,195,0,0],["SPIKE",750,15,0,0],["BLOCK",960,15,0,0],["BLOCK",1050,45,0,0],["GRID_DECO",1050,15,0,0],["BLOCK",1080,45,0,0],["GRID_DECO",1080,15,0,0],["BLOCK",1110,45,0,0],["GRID_DECO",1110,15,0,0],["BLOCK",1140,45,0,0],["GRID_DECO",1140,15,0,0],["BLOCK",1170,45,0,0],["GRID_DECO",1170,15,0,0],["SPIKE",1050,15,0,0],["SPIKE",1140,15,0,0],["COIN",1110,110,0,0],["DSPIKES1",1177,21,0,0],["STAR",1180,255,0,0],["STAR",1097,195,0,0],["BLOCK",1380,15,0,0],["BLOCK",1410,15,0,0],["BLOCK",1440,15,0,0],["GRID_DECO",1470,15,0,0],["BLOCK",1470,45,0,0],["GRID_DECO",1500,15,0,0],["BLOCK",1500,45,0,0],["GRID_DECO",1530,15,0,0],["BLOCK",1530,45,0,0],["SPIKE",1590,15,0,0],["SPIKE",1620,15,0,0],["DSPIKES1",1625,21,0,0],["STAR",1397,195,0,0],["STAR",1719,255,0,0],["COIN",1740,40,0,0],["BLOCK",1830,15,0,0],["SPIKE",1950,15,0,0],["SPIKE",2130,15,0,0],["COIN",2130,85,0,0],["DSPIKES2",2218,18,0,0],["BLOCK",2340,15,0,0],["SPIKE",2460,15,0,0],["DSPIKES2",2501,18,0,0],["STAR",2399,195,0,0],["STAR",2432,225,0,0],["SPIKE",2640,15,0,0],["SPIKE",2670,15,0,0],["DSPIKES3",2782,14,0,0],["BLOCK",2880,15,0,0],["SPIKE",3000,15,0,0],["STAR",2938,255,0,0],["STAR",2997,225,0,0],["BLOCK",3180,15,0,0],["BLOCK",3210,15,0,0],["BLOCK",3240,15,0,0],["GRID_DECO",3270,15,0,0],["BLOCK",3270,45,0,0],["GRID_DECO",3300,15,0,0],["BLOCK",3300,45,0,0],["GRID_DECO",3330,15,0,0],["BLOCK",3330,45,0,0],["SPIKE",3390,15,0,0],["SPIKE",3420,15,0,0],["DSPIKES1",3428,21,0,0],["STAR",3230,195,0,0],["BLOCK",3630,15,0,0],["BLOCK",3720,45,0,0],["GRID_DECO",3720,15,0,0],["BLOCK",3750,45,0,0],["GRID_DECO",3750,15,0,0],["BLOCK",3780,45,0,0],["GRID_DECO",3780,15,0,0],["BLOCK",3810,45,0,0],["GRID_DECO",3810,15,0,0],["BLOCK",3840,45,0,0],["GRID_DECO",3840,15,0,0],["SPIKE",3720,15,0,0],["SPIKE",3810,15,0,0],["DSPIKES2",3867,18,0,0],["STAR",3794,225,0,0],["STAR",3674,195,0,0],["BLOCK",4050,15,0,0],["SPIKE",4170,15,0,0],["STAR",4200,225,0,0],["STAR",4347,195,0,0],["BLOCK",4350,15,0,0],["BLOCK",4440,45,0,0],["GRID_DECO",4440,15,0,0],["BLOCK",4470,45,0,0],["GRID_DECO",4470,15,0,0],["BLOCK",4500,45,0,0],["GRID_DECO",4500,15,0,0],["BLOCK",4530,45,0,0],["GRID_DECO",4530,15,0,0],["BLOCK",4560,45,0,0],["GRID_DECO",4560,15,0,0],["SPIKE",4440,15,0,0],["SPIKE",4530,15,0,0],["DSPIKES1",4558,21,0,0],["STAR",4373,165,0,0],["SPIKE",4770,15,0,0],["SPIKE",4800,15,0,0],["DSPIKES1",4887,21,0,0],["STAR",4915,165,0,0],["STAR",4890,195,0,0],["BLOCK",5010,15,0,0],["BLOCK",5100,45,0,0],["GRID_DECO",5100,15,0,0],["BLOCK",5130,45,0,0],["GRID_DECO",5130,15,0,0],["BLOCK",5160,45,0,0],["GRID_DECO",5160,15,0,0],["BLOCK",5190,45,0,0],["GRID_DECO",5190,15,0,0],["BLOCK",5220,45,0,0],["GRID_DECO",5220,15,0,0],["SPIKE",5100,15,0,0],["SPIKE",5190,15,0,0],["STAR",5015,165,0,0],["STAR",5348,165,0,0],["BLOCK",5430,15,0,0],["BLOCK",5460,15,0,0],["BLOCK",5490,15,0,0],["GRID_DECO",5520,15,0,0],["BLOCK",5520,45,0,0],["GRID_DECO",5550,15,0,0],["BLOCK",5550,45,0,0],["GRID_DECO",5580,15,0,0],["BLOCK",5580,45,0,0],["SPIKE",5640,15,0,0],["SPIKE",5670,15,0,0],["DSPIKES3",5637,14,0,0],["STAR",5734,165,0,0],["STAR",5523,255,0,0],["SPIKE",5880,15,0,0],["STAR",6039,255,0,0],["SPIKE",6090,15,0,0],["SPIKE",6120,15,0,0],["BLOCK",6330,15,0,0],["BLOCK",6360,15,0,0],["BLOCK",6390,15,0,0],["GRID_DECO",6420,15,0,0],["BLOCK",6420,45,0,0],["GRID_DECO",6450,15,0,0],["BLOCK",6450,45,0,0],["GRID_DECO",6480,15,0,0],["BLOCK",6480,45,0,0],["SPIKE",6540,15,0,0],["SPIKE",6570,15,0,0],["PORTAL_SHIP",6840,45,0,0],["GRID_DECO",7050,15,0,0],["GRID_DECO",7050,45,0,0],["BLOCK",7050,75,0,0],["BLOCK",7050,255,0,0],["GRID_DECO",7050,285,0,0],["GRID_DECO",7260,15,0,0],["BLOCK",7260,45,0,0],["BLOCK",7260,225,0,0],["GRID_DECO",7260,255,0,0],["GRID_DECO",7260,285,0,0],["STAR",7365,135,0,0],["GRID_DECO",7470,15,0,0],["GRID_DECO",7470,45,0,0],["GRID_DECO",7470,75,0,0],["BLOCK",7470,105,0,0],["BLOCK",7470,285,0,0],["GRID_DECO",7680,15,0,0],["GRID_DECO",7680,45,0,0],["GRID_DECO",7680,75,0,0],["BLOCK",7680,105,0,0],["BLOCK",7680,285,0,0],["STAR",7785,195,0,0],["GRID_DECO",7890,15,0,0],["GRID_DECO",7890,45,0,0],["BLOCK",7890,75,0,0],["BLOCK",7890,255,0,0],["GRID_DECO",7890,285,0,0],["BLOCK",8100,15,0,0],["BLOCK",8100,195,0,0],["GRID_DECO",8100,225,0,0],["GRID_DECO",8100,255,0,0],["GRID_DECO",8100,285,0,0],["STAR",8205,105,0,0],["BLOCK",8310,15,0,0],["BLOCK",8310,195,0,0],["GRID_DECO",8310,225,0,0],["GRID_DECO",8310,255,0,0],["GRID_DECO",8310,285,0,0],["BLOCK",8520,15,0,0],["BLOCK",8520,195,0,0],["GRID_DECO",8520,225,0,0],["GRID_DECO",8520,255,0,0],["GRID_DECO",8520,285,0,0],["STAR",8625,105,0,0],["BLOCK",8730,15,0,0],["BLOCK",8730,195,0,0],["GRID_DECO",8730,225,0,0],["GRID_DECO",8730,255,0,0],["GRID_DECO",8730,285,0,0],["GRID_DECO",8940,15,0,0],["GRID_DECO",8940,45,0,0],["BLOCK",8940,75,0,0],["BLOCK",8940,255,0,0],["GRID_DECO",8940,285,0,0],["STAR",9045,165,0,0],["BLOCK",9150,15,0,0],["BLOCK",9150,195,0,0],["GRID_DECO",9150,225,0,0],["GRID_DECO",9150,255,0,0],["GRID_DECO",9150,285,0,0],["GRID_DECO",9360,15,0,0],["BLOCK",9360,45,0,0],["BLOCK",9360,225,0,0],["GRID_DECO",9360,255,0,0],["GRID_DECO",9360,285,0,0],["STAR",9465,135,0,0],["PORTAL_CUBE",9690,45,0,0],["BLOCK",9990,15,0,0],["BLOCK",10020,15,0,0],["BLOCK",10050,15,0,0],["GRID_DECO",10080,15,0,0],["BLOCK",10080,45,0,0],["GRID_DECO",10110,15,0,0],["BLOCK",10110,45,0,0],["GRID_DECO",10140,15,0,0],["BLOCK",10140,45,0,0],["GRID_DECO",10170,15,0,0],["GRID_DECO",10170,45,0,0],["BLOCK",10170,75,0,0],["GRID_DECO",10200,15,0,0],["GRID_DECO",10200,45,0,0],["BLOCK",10200,75,0,0],["GRID_DECO",10230,15,0,0],["GRID_DECO",10230,45,0,0],["BLOCK",10230,75,0,0],["SPIKE",10290,15,0,0],["SPIKE",10320,15,0,0],["STAR",10311,255,0,0],["STAR",10475,255,0,0],["BLOCK",10530,15,0,0],["BLOCK",10620,45,0,0],["GRID_DECO",10620,15,0,0],["BLOCK",10650,45,0,0],["GRID_DECO",10650,15,0,0],["BLOCK",10680,45,0,0],["GRID_DECO",10680,15,0,0],["BLOCK",10710,45,0,0],["GRID_DECO",10710,15,0,0],["BLOCK",10740,45,0,0],["GRID_DECO",10740,15,0,0],["BLOCK",10770,45,0,0],["GRID_DECO",10770,15,0,0],["BLOCK",10800,45,0,0],["GRID_DECO",10800,15,0,0],["SPIKE",10620,15,0,0],["SPIKE",10710,15,0,0],["SPIKE",10800,15,0,0],["STAR",10679,195,0,0],["BLOCK",11010,15,0,0],["BLOCK",11040,15,0,0],["BLOCK",11070,15,0,0],["GRID_DECO",11100,15,0,0],["BLOCK",11100,45,0,0],["GRID_DECO",11130,15,0,0],["BLOCK",11130,45,0,0],["GRID_DECO",11160,15,0,0],["BLOCK",11160,45,0,0],["SPIKE",11220,15,0,0],["SPIKE",11250,15,0,0],["DSPIKES1",11237,21,0,0],["STAR",11212,255,0,0],["STAR",11253,165,0,0],["BLOCK",11460,15,0,0],["BLOCK",11550,45,0,0],["GRID_DECO",11550,15,0,0],["BLOCK",11580,45,0,0],["GRID_DECO",11580,15,0,0],["BLOCK",11610,45,0,0],["GRID_DECO",11610,15,0,0],["BLOCK",11640,45,0,0],["GRID_DECO",11640,15,0,0],["BLOCK",11670,45,0,0],["GRID_DECO",11670,15,0,0],["SPIKE",11550,15,0,0],["SPIKE",11640,15,0,0],["SPIKE",11880,15,0,0],["SPIKE",11910,15,0,0],["SPIKE",11940,15,0,0],["SPIKE",11970,15,0,0],["SPIKE",12000,15,0,0],["ORB_Y",11910,75,0,0],["DSPIKES2",12087,18,0,0],["STAR",12231,225,0,0],["STAR",12170,225,0,0],["BLOCK",12240,15,0,0],["BLOCK",12330,45,0,0],["GRID_DECO",12330,15,0,0],["BLOCK",12360,45,0,0],["GRID_DECO",12360,15,0,0],["BLOCK",12390,45,0,0],["GRID_DECO",12390,15,0,0],["BLOCK",12420,45,0,0],["GRID_DECO",12420,15,0,0],["BLOCK",12450,45,0,0],["GRID_DECO",12450,15,0,0],["BLOCK",12480,45,0,0],["GRID_DECO",12480,15,0,0],["BLOCK",12510,45,0,0],["GRID_DECO",12510,15,0,0],["SPIKE",12330,15,0,0],["SPIKE",12420,15,0,0],["SPIKE",12510,15,0,0],["DSPIKES3",12459,14,0,0],["STAR",12603,195,0,0],["STAR",12618,225,0,0],["SPIKE",12720,15,0,0],["SPIKE",12750,15,0,0],["SPIKE",12780,15,0,0],["STAR",12889,195,0,0],["STAR",12781,225,0,0],["BLOCK",12990,15,0,0],["BLOCK",13080,45,0,0],["GRID_DECO",13080,15,0,0],["BLOCK",13110,45,0,0],["GRID_DECO",13110,15,0,0],["BLOCK",13140,45,0,0],["GRID_DECO",13140,15,0,0],["BLOCK",13170,45,0,0],["GRID_DECO",13170,15,0,0],["BLOCK",13200,45,0,0],["GRID_DECO",13200,15,0,0],["SPIKE",13080,15,0,0],["SPIKE",13170,15,0,0],["BLOCK",13410,15,0,0],["BLOCK",13440,15,0,0],["BLOCK",13470,15,0,0],["GRID_DECO",13500,15,0,0],["BLOCK",13500,45,0,0],["GRID_DECO",13530,15,0,0],["BLOCK",13530,45,0,0],["GRID_DECO",13560,15,0,0],["BLOCK",13560,45,0,0],["SPIKE",13620,15,0,0],["SPIKE",13650,15,0,0],["DSPIKES2",13660,18,0,0],["STAR",13419,165,0,0],["SPIKE",13860,15,0,0],["SPIKE",13890,15,0,0],["SPIKE",13920,15,0,0],["STAR",13951,195,0,0],["BLOCK",14130,15,0,0],["SPIKE",14250,15,0,0],["STAR",14134,165,0,0],["BLOCK",14430,15,0,0],["BLOCK",14520,45,0,0],["GRID_DECO",14520,15,0,0],["BLOCK",14550,45,0,0],["GRID_DECO",14550,15,0,0],["BLOCK",14580,45,0,0],["GRID_DECO",14580,15,0,0],["BLOCK",14610,45,0,0],["GRID_DECO",14610,15,0,0],["BLOCK",14640,45,0,0],["GRID_DECO",14640,15,0,0],["SPIKE",14520,15,0,0],["SPIKE",14610,15,0,0],["STAR",14600,195,0,0],["STAR",14675,255,0,0],["SPIKE",14850,15,0,0],["STAR",14927,195,0,0],["BLOCK",15060,15,0,0],["BLOCK",15150,45,0,0],["GRID_DECO",15150,15,0,0],["BLOCK",15180,45,0,0],["GRID_DECO",15180,15,0,0],["BLOCK",15210,45,0,0],["GRID_DECO",15210,15,0,0],["BLOCK",15240,45,0,0],["GRID_DECO",15240,15,0,0],["BLOCK",15270,45,0,0],["GRID_DECO",15270,15,0,0],["SPIKE",15150,15,0,0],["SPIKE",15240,15,0,0],["DSPIKES3",15260,14,0,0],["STAR",15139,195,0,0],["STAR",15233,225,0,0],["SPIKE",15480,15,0,0],["SPIKE",15510,15,0,0],["SPIKE",15540,15,0,0],["SPIKE",15570,15,0,0],["SPIKE",15600,15,0,0],["ORB_Y",15510,75,0,0],["STAR",15565,195,0,0],["STAR",15786,255,0,0],["BLOCK",15840,15,0,0],["BLOCK",15870,15,0,0],["BLOCK",15900,15,0,0],["GRID_DECO",15930,15,0,0],["BLOCK",15930,45,0,0],["GRID_DECO",15960,15,0,0],["BLOCK",15960,45,0,0],["GRID_DECO",15990,15,0,0],["BLOCK",15990,45,0,0],["SPIKE",16050,15,0,0],["SPIKE",16080,15,0,0],["STAR",15848,225,0,0],["STAR",16171,165,0,0],["BLOCK",16290,15,0,0],["BLOCK",16320,15,0,0],["BLOCK",16350,15,0,0],["GRID_DECO",16380,15,0,0],["BLOCK",16380,45,0,0],["GRID_DECO",16410,15,0,0],["BLOCK",16410,45,0,0],["GRID_DECO",16440,15,0,0],["BLOCK",16440,45,0,0],["GRID_DECO",16470,15,0,0],["GRID_DECO",16470,45,0,0],["BLOCK",16470,75,0,0],["GRID_DECO",16500,15,0,0],["GRID_DECO",16500,45,0,0],["BLOCK",16500,75,0,0],["GRID_DECO",16530,15,0,0],["GRID_DECO",16530,45,0,0],["BLOCK",16530,75,0,0],["SPIKE",16590,15,0,0],["SPIKE",16620,15,0,0],["STAR",16417,225,0,0],["STAR",16398,225,0,0],["BLOCK",16830,15,0,0],["SPIKE",16950,15,0,0],["STAR",17063,255,0,0],["STAR",16939,255,0,0],["BLOCK",17130,15,0,0],["BLOCK",17220,45,0,0],["GRID_DECO",17220,15,0,0],["BLOCK",17250,45,0,0],["GRID_DECO",17250,15,0,0],["BLOCK",17280,45,0,0],["GRID_DECO",17280,15,0,0],["BLOCK",17310,45,0,0],["GRID_DECO",17310,15,0,0],["BLOCK",17340,45,0,0],["GRID_DECO",17340,15,0,0],["BLOCK",17370,45,0,0],["GRID_DECO",17370,15,0,0],["BLOCK",17400,45,0,0],["GRID_DECO",17400,15,0,0],["SPIKE",17220,15,0,0],["SPIKE",17310,15,0,0],["SPIKE",17400,15,0,0],["DSPIKES1",17352,21,0,0],["STAR",17172,195,0,0],["STAR",17474,195,0,0]],"evenements":[["COLOR",6780,15,0,10,52,60,0,600],["COLOR",6780,15,1,16,120,110,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/03.json b/games/numdash/levels/numdash/03.json
new file mode 100644
index 0000000..d0d7490
--- /dev/null
+++ b/games/numdash/levels/numdash/03.json
@@ -0,0 +1 @@
+{"nom":"SKY CIRCUIT","difficulte":2,"etoiles":3,"bpm":160,"depart":0,"couleurs":{"fond":[58,14,52],"sol":[170,40,110],"ligne":[120,240,210],"objets":[255,255,255]},"objets":[["SPIKE",300,15,0,0],["BLOCK",510,15,0,0],["BLOCK",600,45,0,0],["GRID_DECO",600,15,0,0],["BLOCK",630,45,0,0],["GRID_DECO",630,15,0,0],["BLOCK",660,45,0,0],["GRID_DECO",660,15,0,0],["BLOCK",690,45,0,0],["GRID_DECO",690,15,0,0],["BLOCK",720,45,0,0],["GRID_DECO",720,15,0,0],["BLOCK",750,45,0,0],["GRID_DECO",750,15,0,0],["BLOCK",780,45,0,0],["GRID_DECO",780,15,0,0],["SPIKE",600,15,0,0],["SPIKE",690,15,0,0],["SPIKE",780,15,0,0],["DSPIKES1",779,21,0,0],["PAD_Y",990,2,0,0],["GRID_DECO",1140,15,0,0],["GRID_DECO",1140,45,0,0],["GRID_DECO",1140,75,0,0],["BLOCK",1140,105,0,0],["SPIKE",1260,15,0,0],["DSPIKES1",1205,21,0,0],["STAR",1196,165,0,0],["BLOCK",1380,15,0,0],["BLOCK",1470,45,0,0],["GRID_DECO",1470,15,0,0],["BLOCK",1500,45,0,0],["GRID_DECO",1500,15,0,0],["BLOCK",1530,45,0,0],["GRID_DECO",1530,15,0,0],["BLOCK",1560,45,0,0],["GRID_DECO",1560,15,0,0],["BLOCK",1590,45,0,0],["GRID_DECO",1590,15,0,0],["BLOCK",1620,45,0,0],["GRID_DECO",1620,15,0,0],["BLOCK",1650,45,0,0],["GRID_DECO",1650,15,0,0],["SPIKE",1470,15,0,0],["SPIKE",1560,15,0,0],["SPIKE",1650,15,0,0],["COIN",1770,40,0,0],["SPIKE",1860,15,0,0],["SPIKE",1890,15,0,0],["SPIKE",1920,15,0,0],["SPIKE",1950,15,0,0],["SPIKE",1980,15,0,0],["ORB_Y",1890,75,0,0],["DSPIKES2",2059,18,0,0],["STAR",2009,165,0,0],["STAR",1943,225,0,0],["BLOCK",2220,15,0,0],["SPIKE",2340,15,0,0],["DSPIKES1",2358,21,0,0],["BLOCK",2520,15,0,0],["BLOCK",2550,15,0,0],["BLOCK",2580,15,0,0],["GRID_DECO",2610,15,0,0],["BLOCK",2610,45,0,0],["GRID_DECO",2640,15,0,0],["BLOCK",2640,45,0,0],["GRID_DECO",2670,15,0,0],["BLOCK",2670,45,0,0],["SPIKE",2730,15,0,0],["SPIKE",2760,15,0,0],["STAR",2756,225,0,0],["STAR",2757,195,0,0],["SPIKE",2970,15,0,0],["STAR",3140,195,0,0],["SPIKE",3180,15,0,0],["SPIKE",3210,15,0,0],["SPIKE",3240,15,0,0],["DSPIKES3",3295,14,0,0],["STAR",3218,165,0,0],["STAR",3407,195,0,0],["SPIKE",3450,15,0,0],["SPIKE",3480,15,0,0],["SPIKE",3510,15,0,0],["SPIKE",3540,15,0,0],["SPIKE",3570,15,0,0],["ORB_Y",3480,75,0,0],["DSPIKES3",3602,14,0,0],["STAR",3680,195,0,0],["STAR",3786,165,0,0],["COIN",3720,40,0,0],["PAD_Y",3810,2,0,0],["GRID_DECO",3960,15,0,0],["GRID_DECO",3960,45,0,0],["GRID_DECO",3960,75,0,0],["BLOCK",3960,105,0,0],["SPIKE",4080,15,0,0],["DSPIKES3",3983,14,0,0],["STAR",3885,165,0,0],["BLOCK",4200,15,0,0],["BLOCK",4290,45,0,0],["GRID_DECO",4290,15,0,0],["BLOCK",4320,45,0,0],["GRID_DECO",4320,15,0,0],["BLOCK",4350,45,0,0],["GRID_DECO",4350,15,0,0],["BLOCK",4380,45,0,0],["GRID_DECO",4380,15,0,0],["BLOCK",4410,45,0,0],["GRID_DECO",4410,15,0,0],["BLOCK",4440,45,0,0],["GRID_DECO",4440,15,0,0],["BLOCK",4470,45,0,0],["GRID_DECO",4470,15,0,0],["SPIKE",4290,15,0,0],["SPIKE",4380,15,0,0],["SPIKE",4470,15,0,0],["STAR",4457,165,0,0],["SPIKE",4680,15,0,0],["SPIKE",4710,15,0,0],["BLOCK",4920,15,0,0],["BLOCK",4950,15,0,0],["BLOCK",4980,15,0,0],["GRID_DECO",5010,15,0,0],["BLOCK",5010,45,0,0],["GRID_DECO",5040,15,0,0],["BLOCK",5040,45,0,0],["GRID_DECO",5070,15,0,0],["BLOCK",5070,45,0,0],["GRID_DECO",5100,15,0,0],["GRID_DECO",5100,45,0,0],["BLOCK",5100,75,0,0],["GRID_DECO",5130,15,0,0],["GRID_DECO",5130,45,0,0],["BLOCK",5130,75,0,0],["GRID_DECO",5160,15,0,0],["GRID_DECO",5160,45,0,0],["BLOCK",5160,75,0,0],["SPIKE",5220,15,0,0],["SPIKE",5250,15,0,0],["PAD_Y",5460,2,0,0],["GRID_DECO",5610,15,0,0],["GRID_DECO",5610,45,0,0],["GRID_DECO",5610,75,0,0],["BLOCK",5610,105,0,0],["SPIKE",5730,15,0,0],["DSPIKES1",5634,21,0,0],["BLOCK",5850,15,0,0],["BLOCK",5940,45,0,0],["GRID_DECO",5940,15,0,0],["BLOCK",5970,45,0,0],["GRID_DECO",5970,15,0,0],["BLOCK",6000,45,0,0],["GRID_DECO",6000,15,0,0],["BLOCK",6030,45,0,0],["GRID_DECO",6030,15,0,0],["BLOCK",6060,45,0,0],["GRID_DECO",6060,15,0,0],["BLOCK",6090,45,0,0],["GRID_DECO",6090,15,0,0],["BLOCK",6120,45,0,0],["GRID_DECO",6120,15,0,0],["SPIKE",5940,15,0,0],["SPIKE",6030,15,0,0],["SPIKE",6120,15,0,0],["COIN",6030,110,0,0],["DSPIKES2",6073,18,0,0],["STAR",6172,255,0,0],["PORTAL_SHIP",6390,45,0,0],["GRID_DECO",6600,15,0,0],["GRID_DECO",6600,45,0,0],["GRID_DECO",6600,75,0,0],["GRID_DECO",6600,105,0,0],["BLOCK",6600,135,0,0],["BLOCK",6600,285,0,0],["GRID_DECO",6810,15,0,0],["GRID_DECO",6810,45,0,0],["BLOCK",6810,75,0,0],["BLOCK",6810,225,0,0],["GRID_DECO",6810,255,0,0],["GRID_DECO",6810,285,0,0],["STAR",6915,150,0,0],["GRID_DECO",7020,15,0,0],["GRID_DECO",7020,45,0,0],["GRID_DECO",7020,75,0,0],["GRID_DECO",7020,105,0,0],["BLOCK",7020,135,0,0],["BLOCK",7020,285,0,0],["GRID_DECO",7230,15,0,0],["GRID_DECO",7230,45,0,0],["GRID_DECO",7230,75,0,0],["GRID_DECO",7230,105,0,0],["BLOCK",7230,135,0,0],["BLOCK",7230,285,0,0],["STAR",7335,210,0,0],["GRID_DECO",7440,15,0,0],["GRID_DECO",7440,45,0,0],["GRID_DECO",7440,75,0,0],["GRID_DECO",7440,105,0,0],["BLOCK",7440,135,0,0],["BLOCK",7440,285,0,0],["GRID_DECO",7650,15,0,0],["GRID_DECO",7650,45,0,0],["BLOCK",7650,75,0,0],["BLOCK",7650,225,0,0],["GRID_DECO",7650,255,0,0],["GRID_DECO",7650,285,0,0],["STAR",7755,150,0,0],["GRID_DECO",7860,15,0,0],["GRID_DECO",7860,45,0,0],["GRID_DECO",7860,75,0,0],["BLOCK",7860,105,0,0],["BLOCK",7860,255,0,0],["GRID_DECO",7860,285,0,0],["GRID_DECO",8070,15,0,0],["GRID_DECO",8070,45,0,0],["GRID_DECO",8070,75,0,0],["GRID_DECO",8070,105,0,0],["BLOCK",8070,135,0,0],["BLOCK",8070,285,0,0],["STAR",8175,210,0,0],["GRID_DECO",8280,15,0,0],["GRID_DECO",8280,45,0,0],["GRID_DECO",8280,75,0,0],["GRID_DECO",8280,105,0,0],["BLOCK",8280,135,0,0],["BLOCK",8280,285,0,0],["GRID_DECO",8490,15,0,0],["GRID_DECO",8490,45,0,0],["BLOCK",8490,75,0,0],["BLOCK",8490,225,0,0],["GRID_DECO",8490,255,0,0],["GRID_DECO",8490,285,0,0],["STAR",8595,150,0,0],["GRID_DECO",8700,15,0,0],["BLOCK",8700,45,0,0],["BLOCK",8700,195,0,0],["GRID_DECO",8700,225,0,0],["GRID_DECO",8700,255,0,0],["GRID_DECO",8700,285,0,0],["GRID_DECO",8910,15,0,0],["GRID_DECO",8910,45,0,0],["GRID_DECO",8910,75,0,0],["BLOCK",8910,105,0,0],["BLOCK",8910,255,0,0],["GRID_DECO",8910,285,0,0],["STAR",9015,180,0,0],["GRID_DECO",9120,15,0,0],["GRID_DECO",9120,45,0,0],["BLOCK",9120,75,0,0],["BLOCK",9120,225,0,0],["GRID_DECO",9120,255,0,0],["GRID_DECO",9120,285,0,0],["GRID_DECO",9330,15,0,0],["GRID_DECO",9330,45,0,0],["GRID_DECO",9330,75,0,0],["BLOCK",9330,105,0,0],["BLOCK",9330,255,0,0],["GRID_DECO",9330,285,0,0],["STAR",9435,180,0,0],["PORTAL_CUBE",9660,45,0,0],["BLOCK",9960,15,0,0],["BLOCK",9990,15,0,0],["BLOCK",10020,15,0,0],["GRID_DECO",10050,15,0,0],["BLOCK",10050,45,0,0],["GRID_DECO",10080,15,0,0],["BLOCK",10080,45,0,0],["GRID_DECO",10110,15,0,0],["BLOCK",10110,45,0,0],["GRID_DECO",10140,15,0,0],["GRID_DECO",10140,45,0,0],["BLOCK",10140,75,0,0],["GRID_DECO",10170,15,0,0],["GRID_DECO",10170,45,0,0],["BLOCK",10170,75,0,0],["GRID_DECO",10200,15,0,0],["GRID_DECO",10200,45,0,0],["BLOCK",10200,75,0,0],["SPIKE",10260,15,0,0],["SPIKE",10290,15,0,0],["DSPIKES3",10232,14,0,0],["BLOCK",10500,15,0,0],["BLOCK",10590,45,0,0],["GRID_DECO",10590,15,0,0],["BLOCK",10620,45,0,0],["GRID_DECO",10620,15,0,0],["BLOCK",10650,45,0,0],["GRID_DECO",10650,15,0,0],["BLOCK",10680,45,0,0],["GRID_DECO",10680,15,0,0],["BLOCK",10710,45,0,0],["GRID_DECO",10710,15,0,0],["SPIKE",10590,15,0,0],["SPIKE",10680,15,0,0],["BLOCK",10920,15,0,0],["SPIKE",11040,15,0,0],["STAR",11173,225,0,0],["BLOCK",11220,15,0,0],["BLOCK",11250,15,0,0],["BLOCK",11280,15,0,0],["GRID_DECO",11310,15,0,0],["BLOCK",11310,45,0,0],["GRID_DECO",11340,15,0,0],["BLOCK",11340,45,0,0],["GRID_DECO",11370,15,0,0],["BLOCK",11370,45,0,0],["SPIKE",11430,15,0,0],["SPIKE",11460,15,0,0],["STAR",11579,225,0,0],["SPIKE",11670,15,0,0],["DSPIKES3",11758,14,0,0],["STAR",11730,195,0,0],["STAR",11786,225,0,0],["BLOCK",11880,15,0,0],["BLOCK",11970,45,0,0],["GRID_DECO",11970,15,0,0],["BLOCK",12000,45,0,0],["GRID_DECO",12000,15,0,0],["BLOCK",12030,45,0,0],["GRID_DECO",12030,15,0,0],["BLOCK",12060,45,0,0],["GRID_DECO",12060,15,0,0],["BLOCK",12090,45,0,0],["GRID_DECO",12090,15,0,0],["SPIKE",11970,15,0,0],["SPIKE",12060,15,0,0],["DSPIKES2",12069,18,0,0],["STAR",12150,165,0,0],["STAR",12227,225,0,0],["BLOCK",12300,15,0,0],["BLOCK",12390,45,0,0],["GRID_DECO",12390,15,0,0],["BLOCK",12420,45,0,0],["GRID_DECO",12420,15,0,0],["BLOCK",12450,45,0,0],["GRID_DECO",12450,15,0,0],["BLOCK",12480,45,0,0],["GRID_DECO",12480,15,0,0],["BLOCK",12510,45,0,0],["GRID_DECO",12510,15,0,0],["BLOCK",12540,45,0,0],["GRID_DECO",12540,15,0,0],["BLOCK",12570,45,0,0],["GRID_DECO",12570,15,0,0],["SPIKE",12390,15,0,0],["SPIKE",12480,15,0,0],["SPIKE",12570,15,0,0],["DSPIKES3",12558,14,0,0],["SPIKE",12780,15,0,0],["DSPIKES2",12909,18,0,0],["STAR",12817,225,0,0],["STAR",12806,255,0,0],["BLOCK",12990,15,0,0],["BLOCK",13080,45,0,0],["GRID_DECO",13080,15,0,0],["BLOCK",13110,45,0,0],["GRID_DECO",13110,15,0,0],["BLOCK",13140,45,0,0],["GRID_DECO",13140,15,0,0],["BLOCK",13170,45,0,0],["GRID_DECO",13170,15,0,0],["BLOCK",13200,45,0,0],["GRID_DECO",13200,15,0,0],["SPIKE",13080,15,0,0],["SPIKE",13170,15,0,0],["DSPIKES3",13214,14,0,0],["STAR",13408,225,0,0],["STAR",13221,255,0,0],["SPIKE",13410,15,0,0],["SPIKE",13440,15,0,0],["DSPIKES2",13529,18,0,0],["STAR",13579,195,0,0],["SPIKE",13650,15,0,0],["SPIKE",13680,15,0,0],["SPIKE",13710,15,0,0],["SPIKE",13740,15,0,0],["SPIKE",13770,15,0,0],["ORB_Y",13680,75,0,0],["BLOCK",14010,15,0,0],["BLOCK",14100,45,0,0],["GRID_DECO",14100,15,0,0],["BLOCK",14130,45,0,0],["GRID_DECO",14130,15,0,0],["BLOCK",14160,45,0,0],["GRID_DECO",14160,15,0,0],["BLOCK",14190,45,0,0],["GRID_DECO",14190,15,0,0],["BLOCK",14220,45,0,0],["GRID_DECO",14220,15,0,0],["SPIKE",14100,15,0,0],["SPIKE",14190,15,0,0],["PAD_Y",14430,2,0,0],["GRID_DECO",14580,15,0,0],["GRID_DECO",14580,45,0,0],["GRID_DECO",14580,75,0,0],["BLOCK",14580,105,0,0],["SPIKE",14700,15,0,0],["STAR",14607,195,0,0],["BLOCK",14820,15,0,0],["SPIKE",14940,15,0,0],["STAR",14891,165,0,0],["STAR",14968,165,0,0],["SPIKE",15120,15,0,0],["SPIKE",15150,15,0,0],["DSPIKES1",15250,21,0,0],["STAR",15121,165,0,0],["BLOCK",15360,15,0,0],["BLOCK",15450,45,0,0],["GRID_DECO",15450,15,0,0],["BLOCK",15480,45,0,0],["GRID_DECO",15480,15,0,0],["BLOCK",15510,45,0,0],["GRID_DECO",15510,15,0,0],["BLOCK",15540,45,0,0],["GRID_DECO",15540,15,0,0],["BLOCK",15570,45,0,0],["GRID_DECO",15570,15,0,0],["SPIKE",15450,15,0,0],["SPIKE",15540,15,0,0],["DSPIKES2",15564,18,0,0],["STAR",15623,225,0,0],["SPIKE",15780,15,0,0],["DSPIKES3",15870,14,0,0],["STAR",15883,165,0,0],["STAR",15911,165,0,0],["SPIKE",15990,15,0,0],["SPIKE",16020,15,0,0],["SPIKE",16230,15,0,0],["SPIKE",16260,15,0,0],["SPIKE",16290,15,0,0],["DSPIKES1",16344,21,0,0],["STAR",16497,195,0,0],["STAR",16286,165,0,0],["PORTAL_SHIP",16560,45,0,0],["GRID_DECO",16770,15,0,0],["GRID_DECO",16770,45,0,0],["GRID_DECO",16770,75,0,0],["GRID_DECO",16770,105,0,0],["BLOCK",16770,135,0,0],["BLOCK",16770,285,0,0],["GRID_DECO",16980,15,0,0],["GRID_DECO",16980,45,0,0],["GRID_DECO",16980,75,0,0],["GRID_DECO",16980,105,0,0],["BLOCK",16980,135,0,0],["BLOCK",16980,285,0,0],["STAR",17085,210,0,0],["GRID_DECO",17190,15,0,0],["GRID_DECO",17190,45,0,0],["GRID_DECO",17190,75,0,0],["GRID_DECO",17190,105,0,0],["BLOCK",17190,135,0,0],["BLOCK",17190,285,0,0],["GRID_DECO",17400,15,0,0],["GRID_DECO",17400,45,0,0],["GRID_DECO",17400,75,0,0],["GRID_DECO",17400,105,0,0],["BLOCK",17400,135,0,0],["BLOCK",17400,285,0,0],["STAR",17505,210,0,0],["GRID_DECO",17610,15,0,0],["GRID_DECO",17610,45,0,0],["GRID_DECO",17610,75,0,0],["GRID_DECO",17610,105,0,0],["BLOCK",17610,135,0,0],["BLOCK",17610,285,0,0],["GRID_DECO",17820,15,0,0],["GRID_DECO",17820,45,0,0],["GRID_DECO",17820,75,0,0],["BLOCK",17820,105,0,0],["BLOCK",17820,255,0,0],["GRID_DECO",17820,285,0,0],["STAR",17925,180,0,0],["GRID_DECO",18030,15,0,0],["GRID_DECO",18030,45,0,0],["BLOCK",18030,75,0,0],["BLOCK",18030,225,0,0],["GRID_DECO",18030,255,0,0],["GRID_DECO",18030,285,0,0],["GRID_DECO",18240,15,0,0],["GRID_DECO",18240,45,0,0],["GRID_DECO",18240,75,0,0],["BLOCK",18240,105,0,0],["BLOCK",18240,255,0,0],["GRID_DECO",18240,285,0,0],["STAR",18345,180,0,0],["GRID_DECO",18450,15,0,0],["GRID_DECO",18450,45,0,0],["GRID_DECO",18450,75,0,0],["GRID_DECO",18450,105,0,0],["BLOCK",18450,135,0,0],["BLOCK",18450,285,0,0],["GRID_DECO",18660,15,0,0],["GRID_DECO",18660,45,0,0],["GRID_DECO",18660,75,0,0],["GRID_DECO",18660,105,0,0],["BLOCK",18660,135,0,0],["BLOCK",18660,285,0,0],["STAR",18765,210,0,0],["GRID_DECO",18870,15,0,0],["GRID_DECO",18870,45,0,0],["GRID_DECO",18870,75,0,0],["BLOCK",18870,105,0,0],["BLOCK",18870,255,0,0],["GRID_DECO",18870,285,0,0],["PORTAL_CUBE",19200,45,0,0],["SPIKE",19500,15,0,0],["SPIKE",19530,15,0,0],["SPIKE",19560,15,0,0],["SPIKE",19590,15,0,0],["SPIKE",19620,15,0,0],["ORB_Y",19530,75,0,0],["DSPIKES1",19671,21,0,0],["STAR",19760,225,0,0],["BLOCK",19860,15,0,0],["SPIKE",19980,15,0,0],["STAR",20053,225,0,0],["STAR",20141,255,0,0],["BLOCK",20160,15,0,0],["BLOCK",20250,45,0,0],["GRID_DECO",20250,15,0,0],["BLOCK",20280,45,0,0],["GRID_DECO",20280,15,0,0],["BLOCK",20310,45,0,0],["GRID_DECO",20310,15,0,0],["BLOCK",20340,45,0,0],["GRID_DECO",20340,15,0,0],["BLOCK",20370,45,0,0],["GRID_DECO",20370,15,0,0],["BLOCK",20400,45,0,0],["GRID_DECO",20400,15,0,0],["BLOCK",20430,45,0,0],["GRID_DECO",20430,15,0,0],["SPIKE",20250,15,0,0],["SPIKE",20340,15,0,0],["SPIKE",20430,15,0,0],["DSPIKES3",20426,14,0,0],["STAR",20416,195,0,0],["STAR",20444,255,0,0],["SPIKE",20640,15,0,0],["DSPIKES2",20767,18,0,0],["STAR",20784,195,0,0],["STAR",20648,255,0,0],["SPIKE",20850,15,0,0],["SPIKE",20880,15,0,0],["STAR",21074,195,0,0],["STAR",21011,165,0,0],["BLOCK",21090,15,0,0],["SPIKE",21210,15,0,0],["STAR",21367,195,0,0],["STAR",21375,195,0,0],["BLOCK",21390,15,0,0],["BLOCK",21480,45,0,0],["GRID_DECO",21480,15,0,0],["BLOCK",21510,45,0,0],["GRID_DECO",21510,15,0,0],["BLOCK",21540,45,0,0],["GRID_DECO",21540,15,0,0],["BLOCK",21570,45,0,0],["GRID_DECO",21570,15,0,0],["BLOCK",21600,45,0,0],["GRID_DECO",21600,15,0,0],["SPIKE",21480,15,0,0],["SPIKE",21570,15,0,0],["DSPIKES2",21606,18,0,0],["STAR",21640,225,0,0],["STAR",21766,195,0,0],["BLOCK",21810,15,0,0],["BLOCK",21900,45,0,0],["GRID_DECO",21900,15,0,0],["BLOCK",21930,45,0,0],["GRID_DECO",21930,15,0,0],["BLOCK",21960,45,0,0],["GRID_DECO",21960,15,0,0],["BLOCK",21990,45,0,0],["GRID_DECO",21990,15,0,0],["BLOCK",22020,45,0,0],["GRID_DECO",22020,15,0,0],["BLOCK",22050,45,0,0],["GRID_DECO",22050,15,0,0],["BLOCK",22080,45,0,0],["GRID_DECO",22080,15,0,0],["SPIKE",21900,15,0,0],["SPIKE",21990,15,0,0],["SPIKE",22080,15,0,0],["STAR",22127,195,0,0],["SPIKE",22290,15,0,0],["STAR",22301,225,0,0]],"evenements":[["COLOR",9960,15,0,58,14,52,0,600],["COLOR",9960,15,1,170,40,110,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/04.json b/games/numdash/levels/numdash/04.json
new file mode 100644
index 0000000..3afd05f
--- /dev/null
+++ b/games/numdash/levels/numdash/04.json
@@ -0,0 +1 @@
+{"nom":"SALT FLATS","difficulte":2,"etoiles":4,"bpm":140,"depart":0,"couleurs":{"fond":[64,40,12],"sol":[190,110,30],"ligne":[255,240,200],"objets":[255,255,255]},"objets":[["SPIKE",300,15,0,0],["SPIKE",330,15,0,0],["BLOCK",540,15,0,0],["BLOCK",570,15,0,0],["BLOCK",600,15,0,0],["GRID_DECO",630,15,0,0],["BLOCK",630,45,0,0],["GRID_DECO",660,15,0,0],["BLOCK",660,45,0,0],["GRID_DECO",690,15,0,0],["BLOCK",690,45,0,0],["GRID_DECO",720,15,0,0],["GRID_DECO",720,45,0,0],["BLOCK",720,75,0,0],["GRID_DECO",750,15,0,0],["GRID_DECO",750,45,0,0],["BLOCK",750,75,0,0],["GRID_DECO",780,15,0,0],["GRID_DECO",780,45,0,0],["BLOCK",780,75,0,0],["SPIKE",840,15,0,0],["SPIKE",870,15,0,0],["DSPIKES1",786,21,0,0],["PAD_Y",1080,2,0,0],["GRID_DECO",1230,15,0,0],["GRID_DECO",1230,45,0,0],["GRID_DECO",1230,75,0,0],["BLOCK",1230,105,0,0],["SPIKE",1350,15,0,0],["SPIKE",1470,15,0,0],["SPIKE",1500,15,0,0],["SPIKE",1530,15,0,0],["SPIKE",1560,15,0,0],["SPIKE",1590,15,0,0],["ORB_Y",1500,75,0,0],["DSPIKES2",1631,18,0,0],["STAR",1827,195,0,0],["STAR",1539,195,0,0],["COIN",1740,40,0,0],["BLOCK",1830,15,0,0],["BLOCK",1920,45,0,0],["GRID_DECO",1920,15,0,0],["BLOCK",1950,45,0,0],["GRID_DECO",1950,15,0,0],["BLOCK",1980,45,0,0],["GRID_DECO",1980,15,0,0],["BLOCK",2010,45,0,0],["GRID_DECO",2010,15,0,0],["BLOCK",2040,45,0,0],["GRID_DECO",2040,15,0,0],["SPIKE",1920,15,0,0],["SPIKE",2010,15,0,0],["DSPIKES2",2027,18,0,0],["STAR",2078,165,0,0],["STAR",1852,165,0,0],["PAD_Y",2250,2,0,0],["GRID_DECO",2400,15,0,0],["GRID_DECO",2400,45,0,0],["GRID_DECO",2400,75,0,0],["BLOCK",2400,105,0,0],["SPIKE",2520,15,0,0],["STAR",2485,255,0,0],["SPIKE",2640,15,0,0],["SPIKE",2670,15,0,0],["DSPIKES2",2780,18,0,0],["STAR",2647,225,0,0],["SPIKE",2880,15,0,0],["SPIKE",2910,15,0,0],["SPIKE",2940,15,0,0],["STAR",3065,255,0,0],["BLOCK",3150,15,0,0],["BLOCK",3180,15,0,0],["BLOCK",3210,15,0,0],["GRID_DECO",3240,15,0,0],["BLOCK",3240,45,0,0],["GRID_DECO",3270,15,0,0],["BLOCK",3270,45,0,0],["GRID_DECO",3300,15,0,0],["BLOCK",3300,45,0,0],["SPIKE",3360,15,0,0],["SPIKE",3390,15,0,0],["DSPIKES3",3360,14,0,0],["STAR",3288,165,0,0],["STAR",3214,165,0,0],["SPIKE",3600,15,0,0],["SPIKE",3630,15,0,0],["SPIKE",3660,15,0,0],["SPIKE",3690,15,0,0],["SPIKE",3720,15,0,0],["ORB_Y",3630,75,0,0],["STAR",3955,165,0,0],["COIN",3870,40,0,0],["SPIKE",3960,15,0,0],["SPIKE",3990,15,0,0],["DSPIKES1",4098,21,0,0],["BLOCK",4200,15,0,0],["BLOCK",4290,45,0,0],["GRID_DECO",4290,15,0,0],["BLOCK",4320,45,0,0],["GRID_DECO",4320,15,0,0],["BLOCK",4350,45,0,0],["GRID_DECO",4350,15,0,0],["BLOCK",4380,45,0,0],["GRID_DECO",4380,15,0,0],["BLOCK",4410,45,0,0],["GRID_DECO",4410,15,0,0],["SPIKE",4290,15,0,0],["SPIKE",4380,15,0,0],["DSPIKES3",4419,14,0,0],["SPIKE",4620,15,0,0],["SPIKE",4650,15,0,0],["SPIKE",4680,15,0,0],["SPIKE",4710,15,0,0],["SPIKE",4740,15,0,0],["ORB_Y",4650,75,0,0],["DSPIKES1",4781,21,0,0],["BLOCK",4980,15,0,0],["BLOCK",5070,45,0,0],["GRID_DECO",5070,15,0,0],["BLOCK",5100,45,0,0],["GRID_DECO",5100,15,0,0],["BLOCK",5130,45,0,0],["GRID_DECO",5130,15,0,0],["BLOCK",5160,45,0,0],["GRID_DECO",5160,15,0,0],["BLOCK",5190,45,0,0],["GRID_DECO",5190,15,0,0],["BLOCK",5220,45,0,0],["GRID_DECO",5220,15,0,0],["BLOCK",5250,45,0,0],["GRID_DECO",5250,15,0,0],["SPIKE",5070,15,0,0],["SPIKE",5160,15,0,0],["SPIKE",5250,15,0,0],["STAR",5026,165,0,0],["PAD_Y",5460,2,0,0],["GRID_DECO",5610,15,0,0],["GRID_DECO",5610,45,0,0],["GRID_DECO",5610,75,0,0],["BLOCK",5610,105,0,0],["SPIKE",5730,15,0,0],["BLOCK",5850,15,0,0],["BLOCK",5880,15,0,0],["BLOCK",5910,15,0,0],["GRID_DECO",5940,15,0,0],["BLOCK",5940,45,0,0],["GRID_DECO",5970,15,0,0],["BLOCK",5970,45,0,0],["GRID_DECO",6000,15,0,0],["BLOCK",6000,45,0,0],["SPIKE",6060,15,0,0],["SPIKE",6090,15,0,0],["DSPIKES1",6057,21,0,0],["STAR",6153,255,0,0],["COIN",6210,40,0,0],["PORTAL_BALL",6360,45,0,0],["SPIKE",6570,15,0,0],["SPIKE",6600,15,0,0],["SPIKE",6750,225,0,2],["SPIKE",6780,225,0,2],["SPIKE",6930,15,0,0],["SPIKE",6960,15,0,0],["SPIKE",7110,225,0,2],["SPIKE",7140,225,0,2],["SPIKE",7290,15,0,0],["SPIKE",7320,15,0,0],["SPIKE",7470,225,0,2],["SPIKE",7500,225,0,2],["SPIKE",7650,15,0,0],["SPIKE",7680,15,0,0],["SPIKE",7830,225,0,2],["SPIKE",7860,225,0,2],["SPIKE",8010,15,0,0],["SPIKE",8040,15,0,0],["SPIKE",8190,225,0,2],["SPIKE",8220,225,0,2],["SPIKE",8370,15,0,0],["SPIKE",8400,15,0,0],["SPIKE",8550,225,0,2],["SPIKE",8580,225,0,2],["SPIKE",8730,15,0,0],["SPIKE",8760,15,0,0],["SPIKE",8910,225,0,2],["SPIKE",8940,225,0,2],["PORTAL_CUBE",9210,45,0,0],["SPIKE",9510,15,0,0],["SPIKE",9540,15,0,0],["DSPIKES2",9642,18,0,0],["BLOCK",9750,15,0,0],["BLOCK",9780,15,0,0],["BLOCK",9810,15,0,0],["GRID_DECO",9840,15,0,0],["BLOCK",9840,45,0,0],["GRID_DECO",9870,15,0,0],["BLOCK",9870,45,0,0],["GRID_DECO",9900,15,0,0],["BLOCK",9900,45,0,0],["GRID_DECO",9930,15,0,0],["GRID_DECO",9930,45,0,0],["BLOCK",9930,75,0,0],["GRID_DECO",9960,15,0,0],["GRID_DECO",9960,45,0,0],["BLOCK",9960,75,0,0],["GRID_DECO",9990,15,0,0],["GRID_DECO",9990,45,0,0],["BLOCK",9990,75,0,0],["SPIKE",10050,15,0,0],["SPIKE",10080,15,0,0],["STAR",9983,165,0,0],["STAR",9996,165,0,0],["BLOCK",10290,15,0,0],["BLOCK",10380,45,0,0],["GRID_DECO",10380,15,0,0],["BLOCK",10410,45,0,0],["GRID_DECO",10410,15,0,0],["BLOCK",10440,45,0,0],["GRID_DECO",10440,15,0,0],["BLOCK",10470,45,0,0],["GRID_DECO",10470,15,0,0],["BLOCK",10500,45,0,0],["GRID_DECO",10500,15,0,0],["BLOCK",10530,45,0,0],["GRID_DECO",10530,15,0,0],["BLOCK",10560,45,0,0],["GRID_DECO",10560,15,0,0],["SPIKE",10380,15,0,0],["SPIKE",10470,15,0,0],["SPIKE",10560,15,0,0],["DSPIKES1",10540,21,0,0],["STAR",10542,255,0,0],["BLOCK",10770,15,0,0],["BLOCK",10800,15,0,0],["BLOCK",10830,15,0,0],["GRID_DECO",10860,15,0,0],["BLOCK",10860,45,0,0],["GRID_DECO",10890,15,0,0],["BLOCK",10890,45,0,0],["GRID_DECO",10920,15,0,0],["BLOCK",10920,45,0,0],["SPIKE",10980,15,0,0],["SPIKE",11010,15,0,0],["DSPIKES3",10990,14,0,0],["STAR",10934,255,0,0],["SPIKE",11220,15,0,0],["SPIKE",11250,15,0,0],["SPIKE",11280,15,0,0],["DSPIKES2",11328,18,0,0],["STAR",11469,165,0,0],["STAR",11261,165,0,0],["SPIKE",11490,15,0,0],["SPIKE",11520,15,0,0],["SPIKE",11550,15,0,0],["SPIKE",11580,15,0,0],["SPIKE",11610,15,0,0],["ORB_Y",11520,75,0,0],["DSPIKES3",11696,14,0,0],["STAR",11809,165,0,0],["STAR",11518,165,0,0],["BLOCK",11850,15,0,0],["SPIKE",11970,15,0,0],["DSPIKES2",12008,18,0,0],["STAR",11861,255,0,0],["PAD_Y",12150,2,0,0],["GRID_DECO",12300,15,0,0],["GRID_DECO",12300,45,0,0],["GRID_DECO",12300,75,0,0],["BLOCK",12300,105,0,0],["SPIKE",12420,15,0,0],["SPIKE",12540,15,0,0],["SPIKE",12750,15,0,0],["SPIKE",12780,15,0,0],["SPIKE",12810,15,0,0],["SPIKE",12840,15,0,0],["SPIKE",12870,15,0,0],["ORB_Y",12780,75,0,0],["STAR",13006,195,0,0],["BLOCK",13110,15,0,0],["BLOCK",13200,45,0,0],["GRID_DECO",13200,15,0,0],["BLOCK",13230,45,0,0],["GRID_DECO",13230,15,0,0],["BLOCK",13260,45,0,0],["GRID_DECO",13260,15,0,0],["BLOCK",13290,45,0,0],["GRID_DECO",13290,15,0,0],["BLOCK",13320,45,0,0],["GRID_DECO",13320,15,0,0],["BLOCK",13350,45,0,0],["GRID_DECO",13350,15,0,0],["BLOCK",13380,45,0,0],["GRID_DECO",13380,15,0,0],["SPIKE",13200,15,0,0],["SPIKE",13290,15,0,0],["SPIKE",13380,15,0,0],["DSPIKES2",13336,18,0,0],["STAR",13570,255,0,0],["STAR",13456,225,0,0],["SPIKE",13590,15,0,0],["SPIKE",13620,15,0,0],["STAR",13814,225,0,0],["STAR",13679,255,0,0],["PAD_Y",13830,2,0,0],["GRID_DECO",13980,15,0,0],["GRID_DECO",13980,45,0,0],["GRID_DECO",13980,75,0,0],["BLOCK",13980,105,0,0],["SPIKE",14100,15,0,0],["DSPIKES3",13997,14,0,0],["SPIKE",14220,15,0,0],["SPIKE",14250,15,0,0],["SPIKE",14280,15,0,0],["SPIKE",14310,15,0,0],["SPIKE",14340,15,0,0],["ORB_Y",14250,75,0,0],["BLOCK",14580,15,0,0],["BLOCK",14670,45,0,0],["GRID_DECO",14670,15,0,0],["BLOCK",14700,45,0,0],["GRID_DECO",14700,15,0,0],["BLOCK",14730,45,0,0],["GRID_DECO",14730,15,0,0],["BLOCK",14760,45,0,0],["GRID_DECO",14760,15,0,0],["BLOCK",14790,45,0,0],["GRID_DECO",14790,15,0,0],["BLOCK",14820,45,0,0],["GRID_DECO",14820,15,0,0],["BLOCK",14850,45,0,0],["GRID_DECO",14850,15,0,0],["SPIKE",14670,15,0,0],["SPIKE",14760,15,0,0],["SPIKE",14850,15,0,0],["DSPIKES3",14838,14,0,0],["PAD_Y",15060,2,0,0],["GRID_DECO",15210,15,0,0],["GRID_DECO",15210,45,0,0],["GRID_DECO",15210,75,0,0],["BLOCK",15210,105,0,0],["SPIKE",15330,15,0,0],["DSPIKES3",15235,14,0,0],["STAR",15444,225,0,0],["PORTAL_SHIP",15510,45,0,0],["GRID_DECO",15720,15,0,0],["GRID_DECO",15720,45,0,0],["BLOCK",15720,75,0,0],["BLOCK",15720,225,0,0],["GRID_DECO",15720,255,0,0],["GRID_DECO",15720,285,0,0],["GRID_DECO",15930,15,0,0],["GRID_DECO",15930,45,0,0],["GRID_DECO",15930,75,0,0],["GRID_DECO",15930,105,0,0],["BLOCK",15930,135,0,0],["BLOCK",15930,285,0,0],["STAR",16035,210,0,0],["GRID_DECO",16140,15,0,0],["GRID_DECO",16140,45,0,0],["BLOCK",16140,75,0,0],["BLOCK",16140,225,0,0],["GRID_DECO",16140,255,0,0],["GRID_DECO",16140,285,0,0],["GRID_DECO",16350,15,0,0],["BLOCK",16350,45,0,0],["BLOCK",16350,195,0,0],["GRID_DECO",16350,225,0,0],["GRID_DECO",16350,255,0,0],["GRID_DECO",16350,285,0,0],["STAR",16455,120,0,0],["GRID_DECO",16560,15,0,0],["GRID_DECO",16560,45,0,0],["GRID_DECO",16560,75,0,0],["BLOCK",16560,105,0,0],["BLOCK",16560,255,0,0],["GRID_DECO",16560,285,0,0],["GRID_DECO",16770,15,0,0],["GRID_DECO",16770,45,0,0],["GRID_DECO",16770,75,0,0],["GRID_DECO",16770,105,0,0],["BLOCK",16770,135,0,0],["BLOCK",16770,285,0,0],["STAR",16875,210,0,0],["GRID_DECO",16980,15,0,0],["GRID_DECO",16980,45,0,0],["BLOCK",16980,75,0,0],["BLOCK",16980,225,0,0],["GRID_DECO",16980,255,0,0],["GRID_DECO",16980,285,0,0],["GRID_DECO",17190,15,0,0],["BLOCK",17190,45,0,0],["BLOCK",17190,195,0,0],["GRID_DECO",17190,225,0,0],["GRID_DECO",17190,255,0,0],["GRID_DECO",17190,285,0,0],["STAR",17295,120,0,0],["GRID_DECO",17400,15,0,0],["GRID_DECO",17400,45,0,0],["GRID_DECO",17400,75,0,0],["BLOCK",17400,105,0,0],["BLOCK",17400,255,0,0],["GRID_DECO",17400,285,0,0],["GRID_DECO",17610,15,0,0],["GRID_DECO",17610,45,0,0],["BLOCK",17610,75,0,0],["BLOCK",17610,225,0,0],["GRID_DECO",17610,255,0,0],["GRID_DECO",17610,285,0,0],["STAR",17715,150,0,0],["GRID_DECO",17820,15,0,0],["GRID_DECO",17820,45,0,0],["GRID_DECO",17820,75,0,0],["BLOCK",17820,105,0,0],["BLOCK",17820,255,0,0],["GRID_DECO",17820,285,0,0],["PORTAL_CUBE",18150,45,0,0],["BLOCK",18450,15,0,0],["BLOCK",18540,45,0,0],["GRID_DECO",18540,15,0,0],["BLOCK",18570,45,0,0],["GRID_DECO",18570,15,0,0],["BLOCK",18600,45,0,0],["GRID_DECO",18600,15,0,0],["BLOCK",18630,45,0,0],["GRID_DECO",18630,15,0,0],["BLOCK",18660,45,0,0],["GRID_DECO",18660,15,0,0],["BLOCK",18690,45,0,0],["GRID_DECO",18690,15,0,0],["BLOCK",18720,45,0,0],["GRID_DECO",18720,15,0,0],["SPIKE",18540,15,0,0],["SPIKE",18630,15,0,0],["SPIKE",18720,15,0,0],["STAR",18525,195,0,0],["STAR",18748,195,0,0],["BLOCK",18930,15,0,0],["BLOCK",18960,15,0,0],["BLOCK",18990,15,0,0],["GRID_DECO",19020,15,0,0],["BLOCK",19020,45,0,0],["GRID_DECO",19050,15,0,0],["BLOCK",19050,45,0,0],["GRID_DECO",19080,15,0,0],["BLOCK",19080,45,0,0],["GRID_DECO",19110,15,0,0],["GRID_DECO",19110,45,0,0],["BLOCK",19110,75,0,0],["GRID_DECO",19140,15,0,0],["GRID_DECO",19140,45,0,0],["BLOCK",19140,75,0,0],["GRID_DECO",19170,15,0,0],["GRID_DECO",19170,45,0,0],["BLOCK",19170,75,0,0],["SPIKE",19230,15,0,0],["SPIKE",19260,15,0,0],["DSPIKES2",19176,18,0,0],["STAR",19222,255,0,0],["STAR",19074,165,0,0],["PAD_Y",19470,2,0,0],["GRID_DECO",19620,15,0,0],["GRID_DECO",19620,45,0,0],["GRID_DECO",19620,75,0,0],["BLOCK",19620,105,0,0],["SPIKE",19740,15,0,0],["STAR",19678,195,0,0],["STAR",19680,225,0,0],["SPIKE",19860,15,0,0],["SPIKE",19890,15,0,0],["SPIKE",19920,15,0,0],["SPIKE",19950,15,0,0],["SPIKE",19980,15,0,0],["ORB_Y",19890,75,0,0],["STAR",20157,225,0,0],["BLOCK",20220,15,0,0],["BLOCK",20310,45,0,0],["GRID_DECO",20310,15,0,0],["BLOCK",20340,45,0,0],["GRID_DECO",20340,15,0,0],["BLOCK",20370,45,0,0],["GRID_DECO",20370,15,0,0],["BLOCK",20400,45,0,0],["GRID_DECO",20400,15,0,0],["BLOCK",20430,45,0,0],["GRID_DECO",20430,15,0,0],["BLOCK",20460,45,0,0],["GRID_DECO",20460,15,0,0],["BLOCK",20490,45,0,0],["GRID_DECO",20490,15,0,0],["SPIKE",20310,15,0,0],["SPIKE",20400,15,0,0],["SPIKE",20490,15,0,0],["DSPIKES3",20455,14,0,0],["STAR",20259,225,0,0],["SPIKE",20700,15,0,0],["SPIKE",20730,15,0,0],["SPIKE",20760,15,0,0],["DSPIKES2",20856,18,0,0],["PAD_Y",20970,2,0,0],["GRID_DECO",21120,15,0,0],["GRID_DECO",21120,45,0,0],["GRID_DECO",21120,75,0,0],["BLOCK",21120,105,0,0],["SPIKE",21240,15,0,0],["STAR",21030,225,0,0],["STAR",21169,225,0,0],["BLOCK",21360,15,0,0],["BLOCK",21390,15,0,0],["BLOCK",21420,15,0,0],["GRID_DECO",21450,15,0,0],["BLOCK",21450,45,0,0],["GRID_DECO",21480,15,0,0],["BLOCK",21480,45,0,0],["GRID_DECO",21510,15,0,0],["BLOCK",21510,45,0,0],["GRID_DECO",21540,15,0,0],["GRID_DECO",21540,45,0,0],["BLOCK",21540,75,0,0],["GRID_DECO",21570,15,0,0],["GRID_DECO",21570,45,0,0],["BLOCK",21570,75,0,0],["GRID_DECO",21600,15,0,0],["GRID_DECO",21600,45,0,0],["BLOCK",21600,75,0,0],["SPIKE",21660,15,0,0],["SPIKE",21690,15,0,0],["DSPIKES3",21634,14,0,0],["STAR",21754,195,0,0],["STAR",21758,225,0,0],["BLOCK",21900,15,0,0],["BLOCK",21930,15,0,0],["BLOCK",21960,15,0,0],["GRID_DECO",21990,15,0,0],["BLOCK",21990,45,0,0],["GRID_DECO",22020,15,0,0],["BLOCK",22020,45,0,0],["GRID_DECO",22050,15,0,0],["BLOCK",22050,45,0,0],["SPIKE",22110,15,0,0],["SPIKE",22140,15,0,0],["DSPIKES2",22153,18,0,0]],"evenements":[["COLOR",9510,15,0,64,40,12,0,600],["COLOR",9510,15,1,190,110,30,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/05.json b/games/numdash/levels/numdash/05.json
new file mode 100644
index 0000000..0c1fef8
--- /dev/null
+++ b/games/numdash/levels/numdash/05.json
@@ -0,0 +1 @@
+{"nom":"GRID RUNNER","difficulte":3,"etoiles":5,"bpm":145,"depart":0,"couleurs":{"fond":[14,28,40],"sol":[40,90,130],"ligne":[250,120,80],"objets":[255,255,255]},"objets":[["BLOCK",300,15,0,0],["SPIKE",420,15,0,0],["DSPIKES3",437,14,0,0],["STAR",441,225,0,0],["STAR",318,255,0,0],["BLOCK",600,15,0,0],["BLOCK",690,45,0,0],["GRID_DECO",690,15,0,0],["BLOCK",720,45,0,0],["GRID_DECO",720,15,0,0],["BLOCK",750,45,0,0],["GRID_DECO",750,15,0,0],["BLOCK",780,45,0,0],["GRID_DECO",780,15,0,0],["BLOCK",810,45,0,0],["GRID_DECO",810,15,0,0],["BLOCK",840,45,0,0],["GRID_DECO",840,15,0,0],["BLOCK",870,45,0,0],["GRID_DECO",870,15,0,0],["SPIKE",690,15,0,0],["SPIKE",780,15,0,0],["SPIKE",870,15,0,0],["STAR",1028,225,0,0],["STAR",1065,255,0,0],["BLOCK",1080,15,0,0],["BLOCK",1110,15,0,0],["BLOCK",1140,15,0,0],["GRID_DECO",1170,15,0,0],["BLOCK",1170,45,0,0],["GRID_DECO",1200,15,0,0],["BLOCK",1200,45,0,0],["GRID_DECO",1230,15,0,0],["BLOCK",1230,45,0,0],["SPIKE",1290,15,0,0],["SPIKE",1320,15,0,0],["DSPIKES3",1292,14,0,0],["SPIKE",1530,15,0,0],["SPIKE",1560,15,0,0],["STAR",1716,165,0,0],["STAR",1622,225,0,0],["COIN",1680,40,0,0],["BLOCK",1770,15,0,0],["BLOCK",1860,45,0,0],["GRID_DECO",1860,15,0,0],["BLOCK",1890,45,0,0],["GRID_DECO",1890,15,0,0],["BLOCK",1920,45,0,0],["GRID_DECO",1920,15,0,0],["BLOCK",1950,45,0,0],["GRID_DECO",1950,15,0,0],["BLOCK",1980,45,0,0],["GRID_DECO",1980,15,0,0],["SPIKE",1860,15,0,0],["SPIKE",1950,15,0,0],["DSPIKES1",1954,21,0,0],["STAR",2149,255,0,0],["STAR",1939,225,0,0],["SPIKE",2190,15,0,0],["STAR",2278,165,0,0],["BLOCK",2400,15,0,0],["BLOCK",2430,15,0,0],["BLOCK",2460,15,0,0],["GRID_DECO",2490,15,0,0],["BLOCK",2490,45,0,0],["GRID_DECO",2520,15,0,0],["BLOCK",2520,45,0,0],["GRID_DECO",2550,15,0,0],["BLOCK",2550,45,0,0],["GRID_DECO",2580,15,0,0],["GRID_DECO",2580,45,0,0],["BLOCK",2580,75,0,0],["GRID_DECO",2610,15,0,0],["GRID_DECO",2610,45,0,0],["BLOCK",2610,75,0,0],["GRID_DECO",2640,15,0,0],["GRID_DECO",2640,45,0,0],["BLOCK",2640,75,0,0],["SPIKE",2700,15,0,0],["SPIKE",2730,15,0,0],["STAR",2582,225,0,0],["STAR",2745,165,0,0],["SPIKE",2940,15,0,0],["SPIKE",2970,15,0,0],["SPIKE",3000,15,0,0],["DSPIKES1",3075,21,0,0],["BLOCK",3210,15,0,0],["BLOCK",3240,15,0,0],["BLOCK",3270,15,0,0],["GRID_DECO",3300,15,0,0],["BLOCK",3300,45,0,0],["GRID_DECO",3330,15,0,0],["BLOCK",3330,45,0,0],["GRID_DECO",3360,15,0,0],["BLOCK",3360,45,0,0],["GRID_DECO",3390,15,0,0],["GRID_DECO",3390,45,0,0],["BLOCK",3390,75,0,0],["GRID_DECO",3420,15,0,0],["GRID_DECO",3420,45,0,0],["BLOCK",3420,75,0,0],["GRID_DECO",3450,15,0,0],["GRID_DECO",3450,45,0,0],["BLOCK",3450,75,0,0],["SPIKE",3510,15,0,0],["SPIKE",3540,15,0,0],["DSPIKES2",3488,18,0,0],["STAR",3393,255,0,0],["BLOCK",3750,15,0,0],["BLOCK",3780,15,0,0],["BLOCK",3810,15,0,0],["GRID_DECO",3840,15,0,0],["BLOCK",3840,45,0,0],["GRID_DECO",3870,15,0,0],["BLOCK",3870,45,0,0],["GRID_DECO",3900,15,0,0],["BLOCK",3900,45,0,0],["SPIKE",3960,15,0,0],["SPIKE",3990,15,0,0],["DSPIKES2",3984,18,0,0],["STAR",4101,165,0,0],["STAR",4065,255,0,0],["COIN",4110,40,0,0],["SPIKE",4200,15,0,0],["DSPIKES3",4324,14,0,0],["BLOCK",4410,15,0,0],["BLOCK",4500,45,0,0],["GRID_DECO",4500,15,0,0],["BLOCK",4530,45,0,0],["GRID_DECO",4530,15,0,0],["BLOCK",4560,45,0,0],["GRID_DECO",4560,15,0,0],["BLOCK",4590,45,0,0],["GRID_DECO",4590,15,0,0],["BLOCK",4620,45,0,0],["GRID_DECO",4620,15,0,0],["SPIKE",4500,15,0,0],["SPIKE",4590,15,0,0],["COIN",4560,110,0,0],["DSPIKES3",4619,14,0,0],["BLOCK",4830,15,0,0],["BLOCK",4860,15,0,0],["BLOCK",4890,15,0,0],["GRID_DECO",4920,15,0,0],["BLOCK",4920,45,0,0],["GRID_DECO",4950,15,0,0],["BLOCK",4950,45,0,0],["GRID_DECO",4980,15,0,0],["BLOCK",4980,45,0,0],["GRID_DECO",5010,15,0,0],["GRID_DECO",5010,45,0,0],["BLOCK",5010,75,0,0],["GRID_DECO",5040,15,0,0],["GRID_DECO",5040,45,0,0],["BLOCK",5040,75,0,0],["GRID_DECO",5070,15,0,0],["GRID_DECO",5070,45,0,0],["BLOCK",5070,75,0,0],["SPIKE",5130,15,0,0],["SPIKE",5160,15,0,0],["DSPIKES1",5077,21,0,0],["STAR",5192,225,0,0],["STAR",4860,255,0,0],["SPIKE",5370,15,0,0],["SPIKE",5400,15,0,0],["SPIKE",5430,15,0,0],["DSPIKES3",5508,14,0,0],["SPIKE",5640,15,0,0],["SPIKE",5670,15,0,0],["SPIKE",5700,15,0,0],["SPIKE",5730,15,0,0],["SPIKE",5760,15,0,0],["ORB_Y",5670,75,0,0],["BLOCK",6000,15,0,0],["BLOCK",6030,15,0,0],["BLOCK",6060,15,0,0],["GRID_DECO",6090,15,0,0],["BLOCK",6090,45,0,0],["GRID_DECO",6120,15,0,0],["BLOCK",6120,45,0,0],["GRID_DECO",6150,15,0,0],["BLOCK",6150,45,0,0],["GRID_DECO",6180,15,0,0],["GRID_DECO",6180,45,0,0],["BLOCK",6180,75,0,0],["GRID_DECO",6210,15,0,0],["GRID_DECO",6210,45,0,0],["BLOCK",6210,75,0,0],["GRID_DECO",6240,15,0,0],["GRID_DECO",6240,45,0,0],["BLOCK",6240,75,0,0],["SPIKE",6300,15,0,0],["SPIKE",6330,15,0,0],["DSPIKES1",6263,21,0,0],["STAR",6301,195,0,0],["STAR",6488,195,0,0],["PORTAL_SHIP",6600,45,0,0],["GRID_DECO",6810,15,0,0],["GRID_DECO",6810,45,0,0],["GRID_DECO",6810,75,0,0],["BLOCK",6810,105,0,0],["BLOCK",6810,255,0,0],["GRID_DECO",6810,285,0,0],["SPIKE",6810,135,0,0],["GRID_DECO",7020,15,0,0],["GRID_DECO",7020,45,0,0],["GRID_DECO",7020,75,0,0],["GRID_DECO",7020,105,0,0],["BLOCK",7020,135,0,0],["BLOCK",7020,285,0,0],["STAR",7125,210,0,0],["SPIKE",7020,165,0,0],["GRID_DECO",7230,15,0,0],["GRID_DECO",7230,45,0,0],["GRID_DECO",7230,75,0,0],["GRID_DECO",7230,105,0,0],["BLOCK",7230,135,0,0],["BLOCK",7230,285,0,0],["SPIKE",7230,165,0,0],["GRID_DECO",7440,15,0,0],["GRID_DECO",7440,45,0,0],["GRID_DECO",7440,75,0,0],["BLOCK",7440,105,0,0],["BLOCK",7440,255,0,0],["GRID_DECO",7440,285,0,0],["STAR",7545,180,0,0],["SPIKE",7440,135,0,0],["GRID_DECO",7650,15,0,0],["GRID_DECO",7650,45,0,0],["BLOCK",7650,75,0,0],["BLOCK",7650,225,0,0],["GRID_DECO",7650,255,0,0],["GRID_DECO",7650,285,0,0],["SPIKE",7650,105,0,0],["BLOCK",7860,15,0,0],["BLOCK",7860,165,0,0],["GRID_DECO",7860,195,0,0],["GRID_DECO",7860,225,0,0],["GRID_DECO",7860,255,0,0],["GRID_DECO",7860,285,0,0],["STAR",7965,90,0,0],["SPIKE",7860,45,0,0],["BLOCK",8070,15,0,0],["BLOCK",8070,165,0,0],["GRID_DECO",8070,195,0,0],["GRID_DECO",8070,225,0,0],["GRID_DECO",8070,255,0,0],["GRID_DECO",8070,285,0,0],["SPIKE",8070,45,0,0],["GRID_DECO",8280,15,0,0],["GRID_DECO",8280,45,0,0],["BLOCK",8280,75,0,0],["BLOCK",8280,225,0,0],["GRID_DECO",8280,255,0,0],["GRID_DECO",8280,285,0,0],["STAR",8385,150,0,0],["SPIKE",8280,105,0,0],["GRID_DECO",8490,15,0,0],["GRID_DECO",8490,45,0,0],["GRID_DECO",8490,75,0,0],["GRID_DECO",8490,105,0,0],["BLOCK",8490,135,0,0],["BLOCK",8490,285,0,0],["SPIKE",8490,165,0,0],["GRID_DECO",8700,15,0,0],["GRID_DECO",8700,45,0,0],["GRID_DECO",8700,75,0,0],["BLOCK",8700,105,0,0],["BLOCK",8700,255,0,0],["GRID_DECO",8700,285,0,0],["STAR",8805,180,0,0],["SPIKE",8700,135,0,0],["GRID_DECO",8910,15,0,0],["BLOCK",8910,45,0,0],["BLOCK",8910,195,0,0],["GRID_DECO",8910,225,0,0],["GRID_DECO",8910,255,0,0],["GRID_DECO",8910,285,0,0],["SPIKE",8910,75,0,0],["BLOCK",9120,15,0,0],["BLOCK",9120,165,0,0],["GRID_DECO",9120,195,0,0],["GRID_DECO",9120,225,0,0],["GRID_DECO",9120,255,0,0],["GRID_DECO",9120,285,0,0],["STAR",9225,90,0,0],["SPIKE",9120,45,0,0],["GRID_DECO",9330,15,0,0],["GRID_DECO",9330,45,0,0],["BLOCK",9330,75,0,0],["BLOCK",9330,225,0,0],["GRID_DECO",9330,255,0,0],["GRID_DECO",9330,285,0,0],["SPIKE",9330,105,0,0],["BLOCK",9540,15,0,0],["BLOCK",9540,165,0,0],["GRID_DECO",9540,195,0,0],["GRID_DECO",9540,225,0,0],["GRID_DECO",9540,255,0,0],["GRID_DECO",9540,285,0,0],["STAR",9645,90,0,0],["SPIKE",9540,45,0,0],["PORTAL_CUBE",9870,45,0,0],["BLOCK",10170,15,0,0],["SPIKE",10290,15,0,0],["STAR",10288,225,0,0],["STAR",10277,165,0,0],["PAD_B",10470,2,0,0],["BLOCK",10440,195,0,0],["BLOCK",10470,195,0,0],["BLOCK",10500,195,0,0],["BLOCK",10530,195,0,0],["BLOCK",10560,195,0,0],["BLOCK",10590,195,0,0],["BLOCK",10620,195,0,0],["BLOCK",10650,195,0,0],["BLOCK",10680,195,0,0],["BLOCK",10710,195,0,0],["BLOCK",10740,195,0,0],["BLOCK",10770,195,0,0],["BLOCK",10800,195,0,0],["SPIKE",10590,150,0,2],["PAD_B",10710,178,0,2],["DSPIKES1",10701,21,0,0],["SPIKE",10950,15,0,0],["SPIKE",10980,15,0,0],["SPIKE",11010,15,0,0],["SPIKE",11040,15,0,0],["SPIKE",11070,15,0,0],["ORB_Y",10980,75,0,0],["STAR",11003,255,0,0],["SPIKE",11310,15,0,0],["SPIKE",11340,15,0,0],["DSPIKES2",11459,18,0,0],["SPIKE",11550,15,0,0],["SPIKE",11760,15,0,0],["SPIKE",11790,15,0,0],["SPIKE",11820,15,0,0],["DSPIKES2",11905,18,0,0],["STAR",12026,195,0,0],["BLOCK",12030,15,0,0],["BLOCK",12060,15,0,0],["BLOCK",12090,15,0,0],["GRID_DECO",12120,15,0,0],["BLOCK",12120,45,0,0],["GRID_DECO",12150,15,0,0],["BLOCK",12150,45,0,0],["GRID_DECO",12180,15,0,0],["BLOCK",12180,45,0,0],["SPIKE",12240,15,0,0],["SPIKE",12270,15,0,0],["DSPIKES1",12242,21,0,0],["STAR",12075,225,0,0],["STAR",12261,225,0,0],["BLOCK",12480,15,0,0],["BLOCK",12570,45,0,0],["GRID_DECO",12570,15,0,0],["BLOCK",12600,45,0,0],["GRID_DECO",12600,15,0,0],["BLOCK",12630,45,0,0],["GRID_DECO",12630,15,0,0],["BLOCK",12660,45,0,0],["GRID_DECO",12660,15,0,0],["BLOCK",12690,45,0,0],["GRID_DECO",12690,15,0,0],["BLOCK",12720,45,0,0],["GRID_DECO",12720,15,0,0],["BLOCK",12750,45,0,0],["GRID_DECO",12750,15,0,0],["SPIKE",12570,15,0,0],["SPIKE",12660,15,0,0],["SPIKE",12750,15,0,0],["SPIKE",12960,15,0,0],["DSPIKES3",13068,14,0,0],["STAR",13164,225,0,0],["SPIKE",13170,15,0,0],["SPIKE",13200,15,0,0],["SPIKE",13230,15,0,0],["SPIKE",13260,15,0,0],["SPIKE",13290,15,0,0],["SPIKE",13320,15,0,0],["ORB_P",13230,75,0,0],["DSPIKES1",13341,21,0,0],["STAR",13271,225,0,0],["BLOCK",13560,15,0,0],["BLOCK",13650,45,0,0],["GRID_DECO",13650,15,0,0],["BLOCK",13680,45,0,0],["GRID_DECO",13680,15,0,0],["BLOCK",13710,45,0,0],["GRID_DECO",13710,15,0,0],["BLOCK",13740,45,0,0],["GRID_DECO",13740,15,0,0],["BLOCK",13770,45,0,0],["GRID_DECO",13770,15,0,0],["SPIKE",13650,15,0,0],["SPIKE",13740,15,0,0],["SPIKE",13980,15,0,0],["SPIKE",14010,15,0,0],["SPIKE",14040,15,0,0],["SPIKE",14070,15,0,0],["SPIKE",14100,15,0,0],["ORB_Y",14010,75,0,0],["DSPIKES3",14144,14,0,0],["STAR",14108,225,0,0],["PORTAL_BALL",14400,45,0,0],["SPIKE",14610,15,0,0],["SPIKE",14640,15,0,0],["SPIKE",14790,225,0,2],["SPIKE",14820,225,0,2],["SPIKE",14970,15,0,0],["SPIKE",15000,15,0,0],["SPIKE",15150,225,0,2],["SPIKE",15180,225,0,2],["SPIKE",15330,15,0,0],["SPIKE",15360,15,0,0],["SPIKE",15510,225,0,2],["SPIKE",15540,225,0,2],["SPIKE",15690,15,0,0],["SPIKE",15720,15,0,0],["SPIKE",15870,225,0,2],["SPIKE",15900,225,0,2],["SPIKE",16050,15,0,0],["SPIKE",16080,15,0,0],["SPIKE",16230,225,0,2],["SPIKE",16260,225,0,2],["SPIKE",16410,15,0,0],["SPIKE",16440,15,0,0],["SPIKE",16590,225,0,2],["SPIKE",16620,225,0,2],["SPIKE",16770,15,0,0],["SPIKE",16800,15,0,0],["SPIKE",16950,225,0,2],["SPIKE",16980,225,0,2],["SPIKE",17130,15,0,0],["SPIKE",17160,15,0,0],["SPIKE",17310,225,0,2],["SPIKE",17340,225,0,2],["PORTAL_CUBE",17610,45,0,0],["SPIKE",17910,15,0,0],["SPIKE",17940,15,0,0],["STAR",17932,225,0,0],["STAR",18111,225,0,0],["PAD_B",18150,2,0,0],["BLOCK",18120,195,0,0],["BLOCK",18150,195,0,0],["BLOCK",18180,195,0,0],["BLOCK",18210,195,0,0],["BLOCK",18240,195,0,0],["BLOCK",18270,195,0,0],["BLOCK",18300,195,0,0],["BLOCK",18330,195,0,0],["BLOCK",18360,195,0,0],["BLOCK",18390,195,0,0],["BLOCK",18420,195,0,0],["BLOCK",18450,195,0,0],["BLOCK",18480,195,0,0],["SPIKE",18270,150,0,2],["PAD_B",18390,178,0,2],["DSPIKES2",18397,18,0,0],["STAR",18426,195,0,0],["SPIKE",18630,15,0,0],["SPIKE",18660,15,0,0],["SPIKE",18690,15,0,0],["SPIKE",18720,15,0,0],["SPIKE",18750,15,0,0],["SPIKE",18780,15,0,0],["ORB_P",18690,75,0,0],["DSPIKES1",18816,21,0,0],["PAD_B",19020,2,0,0],["BLOCK",18990,195,0,0],["BLOCK",19020,195,0,0],["BLOCK",19050,195,0,0],["BLOCK",19080,195,0,0],["BLOCK",19110,195,0,0],["BLOCK",19140,195,0,0],["BLOCK",19170,195,0,0],["BLOCK",19200,195,0,0],["BLOCK",19230,195,0,0],["BLOCK",19260,195,0,0],["BLOCK",19290,195,0,0],["BLOCK",19320,195,0,0],["BLOCK",19350,195,0,0],["SPIKE",19140,150,0,2],["PAD_B",19260,178,0,2],["DSPIKES2",19268,18,0,0],["STAR",19310,195,0,0],["SPIKE",19500,15,0,0],["SPIKE",19530,15,0,0],["SPIKE",19560,15,0,0],["DSPIKES1",19652,21,0,0],["SPIKE",19770,15,0,0],["SPIKE",19800,15,0,0],["BLOCK",20010,15,0,0],["BLOCK",20100,45,0,0],["GRID_DECO",20100,15,0,0],["BLOCK",20130,45,0,0],["GRID_DECO",20130,15,0,0],["BLOCK",20160,45,0,0],["GRID_DECO",20160,15,0,0],["BLOCK",20190,45,0,0],["GRID_DECO",20190,15,0,0],["BLOCK",20220,45,0,0],["GRID_DECO",20220,15,0,0],["SPIKE",20100,15,0,0],["SPIKE",20190,15,0,0],["DSPIKES1",20220,21,0,0],["BLOCK",20430,15,0,0],["BLOCK",20460,15,0,0],["BLOCK",20490,15,0,0],["GRID_DECO",20520,15,0,0],["BLOCK",20520,45,0,0],["GRID_DECO",20550,15,0,0],["BLOCK",20550,45,0,0],["GRID_DECO",20580,15,0,0],["BLOCK",20580,45,0,0],["SPIKE",20640,15,0,0],["SPIKE",20670,15,0,0],["DSPIKES1",20649,21,0,0],["STAR",20610,255,0,0],["SPIKE",20880,15,0,0],["SPIKE",20910,15,0,0],["SPIKE",20940,15,0,0],["DSPIKES2",20985,18,0,0],["STAR",20922,225,0,0],["SPIKE",21150,15,0,0],["SPIKE",21180,15,0,0],["SPIKE",21210,15,0,0],["SPIKE",21240,15,0,0],["SPIKE",21270,15,0,0],["SPIKE",21300,15,0,0],["ORB_P",21210,75,0,0],["DSPIKES2",21327,18,0,0],["STAR",21295,165,0,0],["SPIKE",21540,15,0,0],["DSPIKES1",21659,21,0,0],["STAR",21588,195,0,0],["BLOCK",21750,15,0,0],["BLOCK",21780,15,0,0],["BLOCK",21810,15,0,0],["GRID_DECO",21840,15,0,0],["BLOCK",21840,45,0,0],["GRID_DECO",21870,15,0,0],["BLOCK",21870,45,0,0],["GRID_DECO",21900,15,0,0],["BLOCK",21900,45,0,0],["GRID_DECO",21930,15,0,0],["GRID_DECO",21930,45,0,0],["BLOCK",21930,75,0,0],["GRID_DECO",21960,15,0,0],["GRID_DECO",21960,45,0,0],["BLOCK",21960,75,0,0],["GRID_DECO",21990,15,0,0],["GRID_DECO",21990,45,0,0],["BLOCK",21990,75,0,0],["SPIKE",22050,15,0,0],["SPIKE",22080,15,0,0],["STAR",22099,225,0,0],["STAR",22152,165,0,0]],"evenements":[["COLOR",14340,15,0,14,28,40,0,600],["COLOR",14340,15,1,40,90,130,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/06.json b/games/numdash/levels/numdash/06.json
new file mode 100644
index 0000000..be8e3e4
--- /dev/null
+++ b/games/numdash/levels/numdash/06.json
@@ -0,0 +1 @@
+{"nom":"HOLLOW BEAT","difficulte":3,"etoiles":6,"bpm":150,"depart":0,"couleurs":{"fond":[30,10,20],"sol":[120,20,60],"ligne":[255,200,60],"objets":[255,255,255]},"objets":[["PAD_B",300,2,0,0],["BLOCK",270,195,0,0],["BLOCK",300,195,0,0],["BLOCK",330,195,0,0],["BLOCK",360,195,0,0],["BLOCK",390,195,0,0],["BLOCK",420,195,0,0],["BLOCK",450,195,0,0],["BLOCK",480,195,0,0],["BLOCK",510,195,0,0],["BLOCK",540,195,0,0],["BLOCK",570,195,0,0],["BLOCK",600,195,0,0],["BLOCK",630,195,0,0],["SPIKE",420,150,0,2],["PAD_B",540,178,0,2],["STAR",620,225,0,0],["BLOCK",780,15,0,0],["SPIKE",900,15,0,0],["DSPIKES3",910,14,0,0],["SPIKE",1080,15,0,0],["SPIKE",1110,15,0,0],["SPIKE",1140,15,0,0],["SPIKE",1170,15,0,0],["SPIKE",1200,15,0,0],["SPIKE",1230,15,0,0],["ORB_P",1140,75,0,0],["DSPIKES3",1270,14,0,0],["PAD_B",1470,2,0,0],["BLOCK",1440,195,0,0],["BLOCK",1470,195,0,0],["BLOCK",1500,195,0,0],["BLOCK",1530,195,0,0],["BLOCK",1560,195,0,0],["BLOCK",1590,195,0,0],["BLOCK",1620,195,0,0],["BLOCK",1650,195,0,0],["BLOCK",1680,195,0,0],["BLOCK",1710,195,0,0],["BLOCK",1740,195,0,0],["BLOCK",1770,195,0,0],["BLOCK",1800,195,0,0],["SPIKE",1590,150,0,2],["PAD_B",1710,178,0,2],["DSPIKES3",1712,14,0,0],["COIN",1860,40,0,0],["SPIKE",1950,15,0,0],["SPIKE",1980,15,0,0],["SPIKE",2010,15,0,0],["SPIKE",2040,15,0,0],["SPIKE",2070,15,0,0],["ORB_Y",1980,75,0,0],["DSPIKES2",2134,18,0,0],["SPIKE",2310,15,0,0],["SPIKE",2340,15,0,0],["SPIKE",2370,15,0,0],["SPIKE",2400,15,0,0],["SPIKE",2430,15,0,0],["SPIKE",2460,15,0,0],["ORB_P",2370,75,0,0],["DSPIKES1",2513,21,0,0],["STAR",2603,195,0,0],["STAR",2554,255,0,0],["BLOCK",2700,15,0,0],["BLOCK",2790,45,0,0],["GRID_DECO",2790,15,0,0],["BLOCK",2820,45,0,0],["GRID_DECO",2820,15,0,0],["BLOCK",2850,45,0,0],["GRID_DECO",2850,15,0,0],["BLOCK",2880,45,0,0],["GRID_DECO",2880,15,0,0],["BLOCK",2910,45,0,0],["GRID_DECO",2910,15,0,0],["BLOCK",2940,45,0,0],["GRID_DECO",2940,15,0,0],["BLOCK",2970,45,0,0],["GRID_DECO",2970,15,0,0],["SPIKE",2790,15,0,0],["SPIKE",2880,15,0,0],["SPIKE",2970,15,0,0],["COIN",2880,110,0,0],["DSPIKES3",2969,14,0,0],["STAR",2876,225,0,0],["SPIKE",3180,15,0,0],["SPIKE",3210,15,0,0],["STAR",3366,195,0,0],["SPIKE",3420,15,0,0],["SPIKE",3450,15,0,0],["SPIKE",3480,15,0,0],["DSPIKES2",3555,18,0,0],["STAR",3446,255,0,0],["SPIKE",3690,15,0,0],["SPIKE",3720,15,0,0],["SPIKE",3750,15,0,0],["SPIKE",3780,15,0,0],["SPIKE",3810,15,0,0],["SPIKE",3840,15,0,0],["ORB_P",3750,75,0,0],["STAR",3886,165,0,0],["COIN",3990,40,0,0],["SPIKE",4080,15,0,0],["STAR",4115,165,0,0],["BLOCK",4290,15,0,0],["BLOCK",4380,45,0,0],["GRID_DECO",4380,15,0,0],["BLOCK",4410,45,0,0],["GRID_DECO",4410,15,0,0],["BLOCK",4440,45,0,0],["GRID_DECO",4440,15,0,0],["BLOCK",4470,45,0,0],["GRID_DECO",4470,15,0,0],["BLOCK",4500,45,0,0],["GRID_DECO",4500,15,0,0],["BLOCK",4530,45,0,0],["GRID_DECO",4530,15,0,0],["BLOCK",4560,45,0,0],["GRID_DECO",4560,15,0,0],["SPIKE",4380,15,0,0],["SPIKE",4470,15,0,0],["SPIKE",4560,15,0,0],["DSPIKES3",4520,14,0,0],["PAD_Y",4770,2,0,0],["GRID_DECO",4920,15,0,0],["GRID_DECO",4920,45,0,0],["GRID_DECO",4920,75,0,0],["BLOCK",4920,105,0,0],["SPIKE",5040,15,0,0],["BLOCK",5160,15,0,0],["SPIKE",5280,15,0,0],["STAR",5230,195,0,0],["SPIKE",5460,15,0,0],["DSPIKES1",5577,21,0,0],["STAR",5542,255,0,0],["PAD_Y",5670,2,0,0],["GRID_DECO",5820,15,0,0],["GRID_DECO",5820,45,0,0],["GRID_DECO",5820,75,0,0],["BLOCK",5820,105,0,0],["SPIKE",5940,15,0,0],["DSPIKES2",5867,18,0,0],["UFO_PORTAL",6120,45,0,0],["GRID_DECO",6330,15,0,0],["GRID_DECO",6330,45,0,0],["GRID_DECO",6330,75,0,0],["GRID_DECO",6330,105,0,0],["BLOCK",6330,135,0,0],["BLOCK",6330,285,0,0],["GRID_DECO",6510,15,0,0],["GRID_DECO",6510,45,0,0],["GRID_DECO",6510,75,0,0],["GRID_DECO",6510,105,0,0],["BLOCK",6510,135,0,0],["BLOCK",6510,285,0,0],["STAR",6600,210,0,0],["GRID_DECO",6690,15,0,0],["GRID_DECO",6690,45,0,0],["GRID_DECO",6690,75,0,0],["GRID_DECO",6690,105,0,0],["BLOCK",6690,135,0,0],["BLOCK",6690,285,0,0],["GRID_DECO",6870,15,0,0],["GRID_DECO",6870,45,0,0],["BLOCK",6870,75,0,0],["BLOCK",6870,225,0,0],["GRID_DECO",6870,255,0,0],["GRID_DECO",6870,285,0,0],["STAR",6960,150,0,0],["GRID_DECO",7050,15,0,0],["BLOCK",7050,45,0,0],["BLOCK",7050,195,0,0],["GRID_DECO",7050,225,0,0],["GRID_DECO",7050,255,0,0],["GRID_DECO",7050,285,0,0],["GRID_DECO",7230,15,0,0],["GRID_DECO",7230,45,0,0],["BLOCK",7230,75,0,0],["BLOCK",7230,225,0,0],["GRID_DECO",7230,255,0,0],["GRID_DECO",7230,285,0,0],["STAR",7320,150,0,0],["GRID_DECO",7410,15,0,0],["GRID_DECO",7410,45,0,0],["GRID_DECO",7410,75,0,0],["GRID_DECO",7410,105,0,0],["BLOCK",7410,135,0,0],["BLOCK",7410,285,0,0],["GRID_DECO",7590,15,0,0],["GRID_DECO",7590,45,0,0],["GRID_DECO",7590,75,0,0],["BLOCK",7590,105,0,0],["BLOCK",7590,255,0,0],["GRID_DECO",7590,285,0,0],["STAR",7680,180,0,0],["GRID_DECO",7770,15,0,0],["GRID_DECO",7770,45,0,0],["GRID_DECO",7770,75,0,0],["GRID_DECO",7770,105,0,0],["BLOCK",7770,135,0,0],["BLOCK",7770,285,0,0],["GRID_DECO",7950,15,0,0],["GRID_DECO",7950,45,0,0],["GRID_DECO",7950,75,0,0],["GRID_DECO",7950,105,0,0],["BLOCK",7950,135,0,0],["BLOCK",7950,285,0,0],["STAR",8040,210,0,0],["GRID_DECO",8130,15,0,0],["GRID_DECO",8130,45,0,0],["BLOCK",8130,75,0,0],["BLOCK",8130,225,0,0],["GRID_DECO",8130,255,0,0],["GRID_DECO",8130,285,0,0],["BLOCK",8310,15,0,0],["BLOCK",8310,165,0,0],["GRID_DECO",8310,195,0,0],["GRID_DECO",8310,225,0,0],["GRID_DECO",8310,255,0,0],["GRID_DECO",8310,285,0,0],["STAR",8400,90,0,0],["BLOCK",8490,15,0,0],["BLOCK",8490,165,0,0],["GRID_DECO",8490,195,0,0],["GRID_DECO",8490,225,0,0],["GRID_DECO",8490,255,0,0],["GRID_DECO",8490,285,0,0],["BLOCK",8670,15,0,0],["BLOCK",8670,165,0,0],["GRID_DECO",8670,195,0,0],["GRID_DECO",8670,225,0,0],["GRID_DECO",8670,255,0,0],["GRID_DECO",8670,285,0,0],["STAR",8760,90,0,0],["PORTAL_CUBE",8970,45,0,0],["SPIKE",9270,15,0,0],["DSPIKES1",9399,21,0,0],["BLOCK",9480,15,0,0],["BLOCK",9570,45,0,0],["GRID_DECO",9570,15,0,0],["BLOCK",9600,45,0,0],["GRID_DECO",9600,15,0,0],["BLOCK",9630,45,0,0],["GRID_DECO",9630,15,0,0],["BLOCK",9660,45,0,0],["GRID_DECO",9660,15,0,0],["BLOCK",9690,45,0,0],["GRID_DECO",9690,15,0,0],["BLOCK",9720,45,0,0],["GRID_DECO",9720,15,0,0],["BLOCK",9750,45,0,0],["GRID_DECO",9750,15,0,0],["SPIKE",9570,15,0,0],["SPIKE",9660,15,0,0],["SPIKE",9750,15,0,0],["DSPIKES3",9749,14,0,0],["STAR",9780,195,0,0],["BLOCK",9960,15,0,0],["BLOCK",9990,15,0,0],["BLOCK",10020,15,0,0],["GRID_DECO",10050,15,0,0],["BLOCK",10050,45,0,0],["GRID_DECO",10080,15,0,0],["BLOCK",10080,45,0,0],["GRID_DECO",10110,15,0,0],["BLOCK",10110,45,0,0],["GRID_DECO",10140,15,0,0],["GRID_DECO",10140,45,0,0],["BLOCK",10140,75,0,0],["GRID_DECO",10170,15,0,0],["GRID_DECO",10170,45,0,0],["BLOCK",10170,75,0,0],["GRID_DECO",10200,15,0,0],["GRID_DECO",10200,45,0,0],["BLOCK",10200,75,0,0],["SPIKE",10260,15,0,0],["SPIKE",10290,15,0,0],["BLOCK",10500,15,0,0],["BLOCK",10590,45,0,0],["GRID_DECO",10590,15,0,0],["BLOCK",10620,45,0,0],["GRID_DECO",10620,15,0,0],["BLOCK",10650,45,0,0],["GRID_DECO",10650,15,0,0],["BLOCK",10680,45,0,0],["GRID_DECO",10680,15,0,0],["BLOCK",10710,45,0,0],["GRID_DECO",10710,15,0,0],["BLOCK",10740,45,0,0],["GRID_DECO",10740,15,0,0],["BLOCK",10770,45,0,0],["GRID_DECO",10770,15,0,0],["SPIKE",10590,15,0,0],["SPIKE",10680,15,0,0],["SPIKE",10770,15,0,0],["DSPIKES3",10711,14,0,0],["STAR",10760,255,0,0],["STAR",10515,225,0,0],["PAD_B",10980,2,0,0],["BLOCK",10950,195,0,0],["BLOCK",10980,195,0,0],["BLOCK",11010,195,0,0],["BLOCK",11040,195,0,0],["BLOCK",11070,195,0,0],["BLOCK",11100,195,0,0],["BLOCK",11130,195,0,0],["BLOCK",11160,195,0,0],["BLOCK",11190,195,0,0],["BLOCK",11220,195,0,0],["BLOCK",11250,195,0,0],["BLOCK",11280,195,0,0],["BLOCK",11310,195,0,0],["SPIKE",11100,150,0,2],["PAD_B",11220,178,0,2],["STAR",11236,255,0,0],["SPIKE",11460,15,0,0],["SPIKE",11490,15,0,0],["SPIKE",11520,15,0,0],["STAR",11634,255,0,0],["BLOCK",11730,15,0,0],["BLOCK",11760,15,0,0],["BLOCK",11790,15,0,0],["GRID_DECO",11820,15,0,0],["BLOCK",11820,45,0,0],["GRID_DECO",11850,15,0,0],["BLOCK",11850,45,0,0],["GRID_DECO",11880,15,0,0],["BLOCK",11880,45,0,0],["SPIKE",11940,15,0,0],["SPIKE",11970,15,0,0],["STAR",12057,195,0,0],["STAR",11865,165,0,0],["BLOCK",12180,15,0,0],["BLOCK",12210,15,0,0],["BLOCK",12240,15,0,0],["GRID_DECO",12270,15,0,0],["BLOCK",12270,45,0,0],["GRID_DECO",12300,15,0,0],["BLOCK",12300,45,0,0],["GRID_DECO",12330,15,0,0],["BLOCK",12330,45,0,0],["GRID_DECO",12360,15,0,0],["GRID_DECO",12360,45,0,0],["BLOCK",12360,75,0,0],["GRID_DECO",12390,15,0,0],["GRID_DECO",12390,45,0,0],["BLOCK",12390,75,0,0],["GRID_DECO",12420,15,0,0],["GRID_DECO",12420,45,0,0],["BLOCK",12420,75,0,0],["SPIKE",12480,15,0,0],["SPIKE",12510,15,0,0],["DSPIKES1",12450,21,0,0],["SPIKE",12720,15,0,0],["STAR",12865,225,0,0],["STAR",12807,225,0,0],["SPIKE",12930,15,0,0],["SPIKE",12960,15,0,0],["SPIKE",12990,15,0,0],["SPIKE",13020,15,0,0],["SPIKE",13050,15,0,0],["ORB_Y",12960,75,0,0],["DSPIKES1",13104,21,0,0],["SPIKE",13290,15,0,0],["SPIKE",13320,15,0,0],["SPIKE",13350,15,0,0],["SPIKE",13380,15,0,0],["SPIKE",13410,15,0,0],["SPIKE",13440,15,0,0],["ORB_P",13350,75,0,0],["DSPIKES3",13506,14,0,0],["STAR",13600,165,0,0],["STAR",13656,165,0,0],["SPIKE",13680,15,0,0],["SPIKE",13710,15,0,0],["SPIKE",13740,15,0,0],["SPIKE",13770,15,0,0],["SPIKE",13800,15,0,0],["ORB_Y",13710,75,0,0],["DSPIKES2",13834,18,0,0],["STAR",13795,255,0,0],["BLOCK",14040,15,0,0],["BLOCK",14070,15,0,0],["BLOCK",14100,15,0,0],["GRID_DECO",14130,15,0,0],["BLOCK",14130,45,0,0],["GRID_DECO",14160,15,0,0],["BLOCK",14160,45,0,0],["GRID_DECO",14190,15,0,0],["BLOCK",14190,45,0,0],["GRID_DECO",14220,15,0,0],["GRID_DECO",14220,45,0,0],["BLOCK",14220,75,0,0],["GRID_DECO",14250,15,0,0],["GRID_DECO",14250,45,0,0],["BLOCK",14250,75,0,0],["GRID_DECO",14280,15,0,0],["GRID_DECO",14280,45,0,0],["BLOCK",14280,75,0,0],["SPIKE",14340,15,0,0],["SPIKE",14370,15,0,0],["SPIKE",14580,15,0,0],["DSPIKES1",14691,21,0,0],["STAR",14769,195,0,0],["STAR",14646,195,0,0],["BLOCK",14790,15,0,0],["BLOCK",14820,15,0,0],["BLOCK",14850,15,0,0],["GRID_DECO",14880,15,0,0],["BLOCK",14880,45,0,0],["GRID_DECO",14910,15,0,0],["BLOCK",14910,45,0,0],["GRID_DECO",14940,15,0,0],["BLOCK",14940,45,0,0],["SPIKE",15000,15,0,0],["SPIKE",15030,15,0,0],["DSPIKES1",15036,21,0,0],["STAR",15209,255,0,0],["SPIKE",15240,15,0,0],["SPIKE",15270,15,0,0],["SPIKE",15300,15,0,0],["STAR",15478,165,0,0],["PORTAL_SHIP",15570,45,0,0],["GRID_DECO",15780,15,0,0],["GRID_DECO",15780,45,0,0],["GRID_DECO",15780,75,0,0],["GRID_DECO",15780,105,0,0],["BLOCK",15780,135,0,0],["BLOCK",15780,285,0,0],["SPIKE",15780,165,0,0],["GRID_DECO",15990,15,0,0],["GRID_DECO",15990,45,0,0],["GRID_DECO",15990,75,0,0],["GRID_DECO",15990,105,0,0],["BLOCK",15990,135,0,0],["BLOCK",15990,285,0,0],["STAR",16095,210,0,0],["SPIKE",15990,165,0,0],["GRID_DECO",16200,15,0,0],["GRID_DECO",16200,45,0,0],["GRID_DECO",16200,75,0,0],["GRID_DECO",16200,105,0,0],["BLOCK",16200,135,0,0],["BLOCK",16200,285,0,0],["SPIKE",16200,165,0,0],["GRID_DECO",16410,15,0,0],["GRID_DECO",16410,45,0,0],["GRID_DECO",16410,75,0,0],["GRID_DECO",16410,105,0,0],["BLOCK",16410,135,0,0],["BLOCK",16410,285,0,0],["STAR",16515,210,0,0],["SPIKE",16410,165,0,0],["GRID_DECO",16620,15,0,0],["GRID_DECO",16620,45,0,0],["BLOCK",16620,75,0,0],["BLOCK",16620,225,0,0],["GRID_DECO",16620,255,0,0],["GRID_DECO",16620,285,0,0],["SPIKE",16620,105,0,0],["GRID_DECO",16830,15,0,0],["GRID_DECO",16830,45,0,0],["GRID_DECO",16830,75,0,0],["BLOCK",16830,105,0,0],["BLOCK",16830,255,0,0],["GRID_DECO",16830,285,0,0],["STAR",16935,180,0,0],["SPIKE",16830,135,0,0],["GRID_DECO",17040,15,0,0],["BLOCK",17040,45,0,0],["BLOCK",17040,195,0,0],["GRID_DECO",17040,225,0,0],["GRID_DECO",17040,255,0,0],["GRID_DECO",17040,285,0,0],["SPIKE",17040,75,0,0],["GRID_DECO",17250,15,0,0],["GRID_DECO",17250,45,0,0],["GRID_DECO",17250,75,0,0],["BLOCK",17250,105,0,0],["BLOCK",17250,255,0,0],["GRID_DECO",17250,285,0,0],["STAR",17355,180,0,0],["SPIKE",17250,135,0,0],["GRID_DECO",17460,15,0,0],["GRID_DECO",17460,45,0,0],["GRID_DECO",17460,75,0,0],["GRID_DECO",17460,105,0,0],["BLOCK",17460,135,0,0],["BLOCK",17460,285,0,0],["SPIKE",17460,165,0,0],["GRID_DECO",17670,15,0,0],["GRID_DECO",17670,45,0,0],["BLOCK",17670,75,0,0],["BLOCK",17670,225,0,0],["GRID_DECO",17670,255,0,0],["GRID_DECO",17670,285,0,0],["STAR",17775,150,0,0],["SPIKE",17670,105,0,0],["GRID_DECO",17880,15,0,0],["BLOCK",17880,45,0,0],["BLOCK",17880,195,0,0],["GRID_DECO",17880,225,0,0],["GRID_DECO",17880,255,0,0],["GRID_DECO",17880,285,0,0],["SPIKE",17880,75,0,0],["BLOCK",18090,15,0,0],["BLOCK",18090,165,0,0],["GRID_DECO",18090,195,0,0],["GRID_DECO",18090,225,0,0],["GRID_DECO",18090,255,0,0],["GRID_DECO",18090,285,0,0],["STAR",18195,90,0,0],["SPIKE",18090,45,0,0],["GRID_DECO",18300,15,0,0],["GRID_DECO",18300,45,0,0],["BLOCK",18300,75,0,0],["BLOCK",18300,225,0,0],["GRID_DECO",18300,255,0,0],["GRID_DECO",18300,285,0,0],["SPIKE",18300,105,0,0],["GRID_DECO",18510,15,0,0],["GRID_DECO",18510,45,0,0],["GRID_DECO",18510,75,0,0],["GRID_DECO",18510,105,0,0],["BLOCK",18510,135,0,0],["BLOCK",18510,285,0,0],["STAR",18615,210,0,0],["SPIKE",18510,165,0,0],["PORTAL_CUBE",18840,45,0,0],["PAD_Y",19140,2,0,0],["GRID_DECO",19290,15,0,0],["GRID_DECO",19290,45,0,0],["GRID_DECO",19290,75,0,0],["BLOCK",19290,105,0,0],["SPIKE",19410,15,0,0],["DSPIKES3",19356,14,0,0],["STAR",19237,195,0,0],["BLOCK",19530,15,0,0],["BLOCK",19620,45,0,0],["GRID_DECO",19620,15,0,0],["BLOCK",19650,45,0,0],["GRID_DECO",19650,15,0,0],["BLOCK",19680,45,0,0],["GRID_DECO",19680,15,0,0],["BLOCK",19710,45,0,0],["GRID_DECO",19710,15,0,0],["BLOCK",19740,45,0,0],["GRID_DECO",19740,15,0,0],["SPIKE",19620,15,0,0],["SPIKE",19710,15,0,0],["DSPIKES3",19743,14,0,0],["STAR",19756,165,0,0],["STAR",19638,225,0,0],["BLOCK",19950,15,0,0],["SPIKE",20070,15,0,0],["STAR",20109,195,0,0],["PAD_B",20250,2,0,0],["BLOCK",20220,195,0,0],["BLOCK",20250,195,0,0],["BLOCK",20280,195,0,0],["BLOCK",20310,195,0,0],["BLOCK",20340,195,0,0],["BLOCK",20370,195,0,0],["BLOCK",20400,195,0,0],["BLOCK",20430,195,0,0],["BLOCK",20460,195,0,0],["BLOCK",20490,195,0,0],["BLOCK",20520,195,0,0],["BLOCK",20550,195,0,0],["BLOCK",20580,195,0,0],["SPIKE",20370,150,0,2],["PAD_B",20490,178,0,2],["SPIKE",20730,15,0,0],["DSPIKES2",20836,18,0,0],["STAR",20865,255,0,0],["STAR",20838,225,0,0],["BLOCK",20940,15,0,0],["BLOCK",20970,15,0,0],["BLOCK",21000,15,0,0],["GRID_DECO",21030,15,0,0],["BLOCK",21030,45,0,0],["GRID_DECO",21060,15,0,0],["BLOCK",21060,45,0,0],["GRID_DECO",21090,15,0,0],["BLOCK",21090,45,0,0],["GRID_DECO",21120,15,0,0],["GRID_DECO",21120,45,0,0],["BLOCK",21120,75,0,0],["GRID_DECO",21150,15,0,0],["GRID_DECO",21150,45,0,0],["BLOCK",21150,75,0,0],["GRID_DECO",21180,15,0,0],["GRID_DECO",21180,45,0,0],["BLOCK",21180,75,0,0],["SPIKE",21240,15,0,0],["SPIKE",21270,15,0,0],["STAR",21384,225,0,0],["STAR",21117,165,0,0],["BLOCK",21480,15,0,0],["BLOCK",21510,15,0,0],["BLOCK",21540,15,0,0],["GRID_DECO",21570,15,0,0],["BLOCK",21570,45,0,0],["GRID_DECO",21600,15,0,0],["BLOCK",21600,45,0,0],["GRID_DECO",21630,15,0,0],["BLOCK",21630,45,0,0],["SPIKE",21690,15,0,0],["SPIKE",21720,15,0,0],["DSPIKES3",21690,14,0,0],["STAR",21683,195,0,0],["STAR",21613,165,0,0],["SPIKE",21930,15,0,0],["SPIKE",21960,15,0,0],["STAR",22138,255,0,0],["BLOCK",22170,15,0,0],["SPIKE",22290,15,0,0],["STAR",22298,255,0,0]],"evenements":[["COLOR",9270,15,0,30,10,20,0,600],["COLOR",9270,15,1,120,20,60,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/07.json b/games/numdash/levels/numdash/07.json
new file mode 100644
index 0000000..f296dce
--- /dev/null
+++ b/games/numdash/levels/numdash/07.json
@@ -0,0 +1 @@
+{"nom":"FROST LINE","difficulte":4,"etoiles":7,"bpm":170,"depart":0,"couleurs":{"fond":[8,40,70],"sol":[40,150,200],"ligne":[230,250,255],"objets":[255,255,255]},"objets":[["SPIKE",300,15,0,0],["STAR",457,255,0,0],["STAR",439,225,0,0],["SPIKE",510,15,0,0],["SPIKE",540,15,0,0],["DSPIKES2",638,18,0,0],["STAR",694,165,0,0],["BLOCK",750,15,0,0],["BLOCK",840,45,0,0],["GRID_DECO",840,15,0,0],["BLOCK",870,45,0,0],["GRID_DECO",870,15,0,0],["BLOCK",900,45,0,0],["GRID_DECO",900,15,0,0],["BLOCK",930,45,0,0],["GRID_DECO",930,15,0,0],["BLOCK",960,45,0,0],["GRID_DECO",960,15,0,0],["BLOCK",990,45,0,0],["GRID_DECO",990,15,0,0],["BLOCK",1020,45,0,0],["GRID_DECO",1020,15,0,0],["SPIKE",840,15,0,0],["SPIKE",930,15,0,0],["SPIKE",1020,15,0,0],["STAR",882,255,0,0],["SPIKE",1230,15,0,0],["SPIKE",1260,15,0,0],["SPIKE",1290,15,0,0],["SPIKE",1320,15,0,0],["SPIKE",1350,15,0,0],["ORB_Y",1260,75,0,0],["DSPIKES3",1402,14,0,0],["STAR",1408,165,0,0],["COIN",1500,40,0,0],["PAD_Y",1590,2,0,0],["GRID_DECO",1740,15,0,0],["GRID_DECO",1740,45,0,0],["GRID_DECO",1740,75,0,0],["BLOCK",1740,105,0,0],["SPIKE",1860,15,0,0],["STAR",1622,255,0,0],["BLOCK",1980,15,0,0],["BLOCK",2070,45,0,0],["GRID_DECO",2070,15,0,0],["BLOCK",2100,45,0,0],["GRID_DECO",2100,15,0,0],["BLOCK",2130,45,0,0],["GRID_DECO",2130,15,0,0],["BLOCK",2160,45,0,0],["GRID_DECO",2160,15,0,0],["BLOCK",2190,45,0,0],["GRID_DECO",2190,15,0,0],["BLOCK",2220,45,0,0],["GRID_DECO",2220,15,0,0],["BLOCK",2250,45,0,0],["GRID_DECO",2250,15,0,0],["SPIKE",2070,15,0,0],["SPIKE",2160,15,0,0],["SPIKE",2250,15,0,0],["DSPIKES3",2228,14,0,0],["STAR",2126,225,0,0],["SPIKE",2460,15,0,0],["DSPIKES3",2539,14,0,0],["STAR",2487,225,0,0],["BLOCK",2670,15,0,0],["BLOCK",2700,15,0,0],["BLOCK",2730,15,0,0],["GRID_DECO",2760,15,0,0],["BLOCK",2760,45,0,0],["GRID_DECO",2790,15,0,0],["BLOCK",2790,45,0,0],["GRID_DECO",2820,15,0,0],["BLOCK",2820,45,0,0],["GRID_DECO",2850,15,0,0],["GRID_DECO",2850,45,0,0],["BLOCK",2850,75,0,0],["GRID_DECO",2880,15,0,0],["GRID_DECO",2880,45,0,0],["BLOCK",2880,75,0,0],["GRID_DECO",2910,15,0,0],["GRID_DECO",2910,45,0,0],["BLOCK",2910,75,0,0],["SPIKE",2970,15,0,0],["SPIKE",3000,15,0,0],["BLOCK",3210,15,0,0],["BLOCK",3240,15,0,0],["BLOCK",3270,15,0,0],["GRID_DECO",3300,15,0,0],["BLOCK",3300,45,0,0],["GRID_DECO",3330,15,0,0],["BLOCK",3330,45,0,0],["GRID_DECO",3360,15,0,0],["BLOCK",3360,45,0,0],["SPIKE",3420,15,0,0],["SPIKE",3450,15,0,0],["STAR",3406,165,0,0],["STAR",3562,165,0,0],["SPIKE",3660,15,0,0],["COIN",3780,40,0,0],["BLOCK",3870,15,0,0],["BLOCK",3900,15,0,0],["BLOCK",3930,15,0,0],["GRID_DECO",3960,15,0,0],["BLOCK",3960,45,0,0],["GRID_DECO",3990,15,0,0],["BLOCK",3990,45,0,0],["GRID_DECO",4020,15,0,0],["BLOCK",4020,45,0,0],["GRID_DECO",4050,15,0,0],["GRID_DECO",4050,45,0,0],["BLOCK",4050,75,0,0],["GRID_DECO",4080,15,0,0],["GRID_DECO",4080,45,0,0],["BLOCK",4080,75,0,0],["GRID_DECO",4110,15,0,0],["GRID_DECO",4110,45,0,0],["BLOCK",4110,75,0,0],["SPIKE",4170,15,0,0],["SPIKE",4200,15,0,0],["DSPIKES2",4159,18,0,0],["STAR",4040,165,0,0],["STAR",4028,195,0,0],["BLOCK",4410,15,0,0],["BLOCK",4440,15,0,0],["BLOCK",4470,15,0,0],["GRID_DECO",4500,15,0,0],["BLOCK",4500,45,0,0],["GRID_DECO",4530,15,0,0],["BLOCK",4530,45,0,0],["GRID_DECO",4560,15,0,0],["BLOCK",4560,45,0,0],["SPIKE",4620,15,0,0],["SPIKE",4650,15,0,0],["DSPIKES1",4626,21,0,0],["STAR",4680,255,0,0],["SPEED_FAST",4860,45,0,0],["BLOCK",4980,15,0,0],["BLOCK",5010,15,0,0],["BLOCK",5040,15,0,0],["GRID_DECO",5070,15,0,0],["BLOCK",5070,45,0,0],["GRID_DECO",5100,15,0,0],["BLOCK",5100,45,0,0],["GRID_DECO",5130,15,0,0],["BLOCK",5130,45,0,0],["SPIKE",5190,15,0,0],["SPIKE",5220,15,0,0],["DSPIKES2",5193,18,0,0],["STAR",5366,225,0,0],["STAR",5255,225,0,0],["SPIKE",5430,15,0,0],["SPIKE",5460,15,0,0],["SPIKE",5670,15,0,0],["SPIKE",5880,15,0,0],["SPIKE",5910,15,0,0],["SPIKE",5940,15,0,0],["SPIKE",5970,15,0,0],["SPIKE",6000,15,0,0],["ORB_Y",5910,75,0,0],["DSPIKES2",6080,18,0,0],["COIN",6150,40,0,0],["SPIKE",6240,15,0,0],["SPIKE",6270,15,0,0],["SPIKE",6300,15,0,0],["SPIKE",6330,15,0,0],["SPIKE",6360,15,0,0],["SPIKE",6390,15,0,0],["ORB_P",6300,75,0,0],["DSPIKES3",6423,14,0,0],["STAR",6359,165,0,0],["STAR",6464,225,0,0],["BLOCK",6630,15,0,0],["BLOCK",6660,15,0,0],["BLOCK",6690,15,0,0],["GRID_DECO",6720,15,0,0],["BLOCK",6720,45,0,0],["GRID_DECO",6750,15,0,0],["BLOCK",6750,45,0,0],["GRID_DECO",6780,15,0,0],["BLOCK",6780,45,0,0],["SPIKE",6840,15,0,0],["SPIKE",6870,15,0,0],["SPIKE",7080,15,0,0],["SPIKE",7110,15,0,0],["SPIKE",7140,15,0,0],["STAR",7158,225,0,0],["STAR",7159,255,0,0],["BLOCK",7350,15,0,0],["BLOCK",7380,15,0,0],["BLOCK",7410,15,0,0],["GRID_DECO",7440,15,0,0],["BLOCK",7440,45,0,0],["GRID_DECO",7470,15,0,0],["BLOCK",7470,45,0,0],["GRID_DECO",7500,15,0,0],["BLOCK",7500,45,0,0],["SPIKE",7560,15,0,0],["SPIKE",7590,15,0,0],["DSPIKES2",7589,18,0,0],["STAR",7498,255,0,0],["SPIKE",7800,15,0,0],["SPIKE",7830,15,0,0],["SPIKE",7860,15,0,0],["DSPIKES2",7947,18,0,0],["BLOCK",8070,15,0,0],["BLOCK",8160,45,0,0],["GRID_DECO",8160,15,0,0],["BLOCK",8190,45,0,0],["GRID_DECO",8190,15,0,0],["BLOCK",8220,45,0,0],["GRID_DECO",8220,15,0,0],["BLOCK",8250,45,0,0],["GRID_DECO",8250,15,0,0],["BLOCK",8280,45,0,0],["GRID_DECO",8280,15,0,0],["SPIKE",8160,15,0,0],["SPIKE",8250,15,0,0],["DSPIKES2",8290,18,0,0],["SPIKE",8490,15,0,0],["SPIKE",8520,15,0,0],["SPIKE",8550,15,0,0],["DSPIKES1",8649,21,0,0],["STAR",8494,255,0,0],["STAR",8695,195,0,0],["SPIKE",8760,15,0,0],["SPIKE",8790,15,0,0],["SPIKE",8820,15,0,0],["SPIKE",8850,15,0,0],["SPIKE",8880,15,0,0],["ORB_Y",8790,75,0,0],["DSPIKES1",8935,21,0,0],["STAR",8890,165,0,0],["STAR",9082,195,0,0],["PORTAL_SHIP",9180,45,0,0],["GRID_DECO",9390,15,0,0],["GRID_DECO",9390,45,0,0],["GRID_DECO",9390,75,0,0],["GRID_DECO",9390,105,0,0],["BLOCK",9390,135,0,0],["BLOCK",9390,285,0,0],["SPIKE",9390,165,0,0],["GRID_DECO",9600,15,0,0],["GRID_DECO",9600,45,0,0],["GRID_DECO",9600,75,0,0],["GRID_DECO",9600,105,0,0],["BLOCK",9600,135,0,0],["BLOCK",9600,285,0,0],["STAR",9705,210,0,0],["SPIKE",9600,165,0,0],["GRID_DECO",9810,15,0,0],["GRID_DECO",9810,45,0,0],["BLOCK",9810,75,0,0],["BLOCK",9810,225,0,0],["GRID_DECO",9810,255,0,0],["GRID_DECO",9810,285,0,0],["SPIKE",9810,105,0,0],["GRID_DECO",10020,15,0,0],["GRID_DECO",10020,45,0,0],["GRID_DECO",10020,75,0,0],["BLOCK",10020,105,0,0],["BLOCK",10020,255,0,0],["GRID_DECO",10020,285,0,0],["STAR",10125,180,0,0],["SPIKE",10020,135,0,0],["GRID_DECO",10230,15,0,0],["BLOCK",10230,45,0,0],["BLOCK",10230,195,0,0],["GRID_DECO",10230,225,0,0],["GRID_DECO",10230,255,0,0],["GRID_DECO",10230,285,0,0],["SPIKE",10230,75,0,0],["GRID_DECO",10440,15,0,0],["GRID_DECO",10440,45,0,0],["BLOCK",10440,75,0,0],["BLOCK",10440,225,0,0],["GRID_DECO",10440,255,0,0],["GRID_DECO",10440,285,0,0],["STAR",10545,150,0,0],["SPIKE",10440,105,0,0],["BLOCK",10650,15,0,0],["BLOCK",10650,165,0,0],["GRID_DECO",10650,195,0,0],["GRID_DECO",10650,225,0,0],["GRID_DECO",10650,255,0,0],["GRID_DECO",10650,285,0,0],["SPIKE",10650,45,0,0],["BLOCK",10860,15,0,0],["BLOCK",10860,165,0,0],["GRID_DECO",10860,195,0,0],["GRID_DECO",10860,225,0,0],["GRID_DECO",10860,255,0,0],["GRID_DECO",10860,285,0,0],["STAR",10965,90,0,0],["SPIKE",10860,45,0,0],["GRID_DECO",11070,15,0,0],["GRID_DECO",11070,45,0,0],["BLOCK",11070,75,0,0],["BLOCK",11070,225,0,0],["GRID_DECO",11070,255,0,0],["GRID_DECO",11070,285,0,0],["SPIKE",11070,105,0,0],["GRID_DECO",11280,15,0,0],["GRID_DECO",11280,45,0,0],["GRID_DECO",11280,75,0,0],["BLOCK",11280,105,0,0],["BLOCK",11280,255,0,0],["GRID_DECO",11280,285,0,0],["STAR",11385,180,0,0],["SPIKE",11280,135,0,0],["GRID_DECO",11490,15,0,0],["GRID_DECO",11490,45,0,0],["BLOCK",11490,75,0,0],["BLOCK",11490,225,0,0],["GRID_DECO",11490,255,0,0],["GRID_DECO",11490,285,0,0],["SPIKE",11490,105,0,0],["GRID_DECO",11700,15,0,0],["BLOCK",11700,45,0,0],["BLOCK",11700,195,0,0],["GRID_DECO",11700,225,0,0],["GRID_DECO",11700,255,0,0],["GRID_DECO",11700,285,0,0],["STAR",11805,120,0,0],["SPIKE",11700,75,0,0],["BLOCK",11910,15,0,0],["BLOCK",11910,165,0,0],["GRID_DECO",11910,195,0,0],["GRID_DECO",11910,225,0,0],["GRID_DECO",11910,255,0,0],["GRID_DECO",11910,285,0,0],["SPIKE",11910,45,0,0],["GRID_DECO",12120,15,0,0],["GRID_DECO",12120,45,0,0],["BLOCK",12120,75,0,0],["BLOCK",12120,225,0,0],["GRID_DECO",12120,255,0,0],["GRID_DECO",12120,285,0,0],["STAR",12225,150,0,0],["SPIKE",12120,105,0,0],["PORTAL_CUBE",12450,45,0,0],["SPEED_NORMAL",12750,45,0,0],["SPIKE",12870,15,0,0],["SPIKE",12900,15,0,0],["SPIKE",12930,15,0,0],["SPIKE",12960,15,0,0],["SPIKE",12990,15,0,0],["SPIKE",13020,15,0,0],["ORB_P",12930,75,0,0],["DSPIKES1",13064,21,0,0],["BLOCK",13260,15,0,0],["BLOCK",13290,15,0,0],["BLOCK",13320,15,0,0],["GRID_DECO",13350,15,0,0],["BLOCK",13350,45,0,0],["GRID_DECO",13380,15,0,0],["BLOCK",13380,45,0,0],["GRID_DECO",13410,15,0,0],["BLOCK",13410,45,0,0],["GRID_DECO",13440,15,0,0],["GRID_DECO",13440,45,0,0],["BLOCK",13440,75,0,0],["GRID_DECO",13470,15,0,0],["GRID_DECO",13470,45,0,0],["BLOCK",13470,75,0,0],["GRID_DECO",13500,15,0,0],["GRID_DECO",13500,45,0,0],["BLOCK",13500,75,0,0],["SPIKE",13560,15,0,0],["SPIKE",13590,15,0,0],["STAR",13706,255,0,0],["SPIKE",13800,15,0,0],["SPIKE",13830,15,0,0],["SPIKE",13860,15,0,0],["SPIKE",13890,15,0,0],["SPIKE",13920,15,0,0],["ORB_Y",13830,75,0,0],["DSPIKES2",13978,18,0,0],["BLOCK",14160,15,0,0],["SPIKE",14280,15,0,0],["DSPIKES3",14304,14,0,0],["STAR",14405,225,0,0],["STAR",14435,165,0,0],["SPIKE",14460,15,0,0],["SPIKE",14490,15,0,0],["SPIKE",14520,15,0,0],["SPIKE",14550,15,0,0],["SPIKE",14580,15,0,0],["ORB_Y",14490,75,0,0],["DSPIKES1",14655,21,0,0],["STAR",14742,165,0,0],["SPIKE",14820,15,0,0],["DSPIKES1",14914,21,0,0],["STAR",14964,225,0,0],["STAR",14911,165,0,0],["PAD_Y",15030,2,0,0],["GRID_DECO",15180,15,0,0],["GRID_DECO",15180,45,0,0],["GRID_DECO",15180,75,0,0],["BLOCK",15180,105,0,0],["SPIKE",15300,15,0,0],["STAR",15142,225,0,0],["STAR",15201,255,0,0],["SPIKE",15420,15,0,0],["SPIKE",15450,15,0,0],["DSPIKES3",15541,14,0,0],["STAR",15628,195,0,0],["BLOCK",15660,15,0,0],["BLOCK",15690,15,0,0],["BLOCK",15720,15,0,0],["GRID_DECO",15750,15,0,0],["BLOCK",15750,45,0,0],["GRID_DECO",15780,15,0,0],["BLOCK",15780,45,0,0],["GRID_DECO",15810,15,0,0],["BLOCK",15810,45,0,0],["GRID_DECO",15840,15,0,0],["GRID_DECO",15840,45,0,0],["BLOCK",15840,75,0,0],["GRID_DECO",15870,15,0,0],["GRID_DECO",15870,45,0,0],["BLOCK",15870,75,0,0],["GRID_DECO",15900,15,0,0],["GRID_DECO",15900,45,0,0],["BLOCK",15900,75,0,0],["SPIKE",15960,15,0,0],["SPIKE",15990,15,0,0],["DSPIKES1",15906,21,0,0],["STAR",15976,195,0,0],["SPIKE",16200,15,0,0],["SPIKE",16230,15,0,0],["SPIKE",16260,15,0,0],["SPIKE",16290,15,0,0],["SPIKE",16320,15,0,0],["ORB_Y",16230,75,0,0],["DSPIKES2",16365,18,0,0],["STAR",16338,255,0,0],["STAR",16425,195,0,0],["SPIKE",16560,15,0,0],["SPIKE",16590,15,0,0],["SPIKE",16620,15,0,0],["DSPIKES1",16704,21,0,0],["STAR",16721,255,0,0],["STAR",16692,225,0,0],["BLOCK",16830,15,0,0],["BLOCK",16860,15,0,0],["BLOCK",16890,15,0,0],["GRID_DECO",16920,15,0,0],["BLOCK",16920,45,0,0],["GRID_DECO",16950,15,0,0],["BLOCK",16950,45,0,0],["GRID_DECO",16980,15,0,0],["BLOCK",16980,45,0,0],["GRID_DECO",17010,15,0,0],["GRID_DECO",17010,45,0,0],["BLOCK",17010,75,0,0],["GRID_DECO",17040,15,0,0],["GRID_DECO",17040,45,0,0],["BLOCK",17040,75,0,0],["GRID_DECO",17070,15,0,0],["GRID_DECO",17070,45,0,0],["BLOCK",17070,75,0,0],["SPIKE",17130,15,0,0],["SPIKE",17160,15,0,0],["DSPIKES3",17074,14,0,0],["STAR",16964,225,0,0],["STAR",17263,225,0,0],["UFO_PORTAL",17430,45,0,0],["GRID_DECO",17640,15,0,0],["GRID_DECO",17640,45,0,0],["GRID_DECO",17640,75,0,0],["GRID_DECO",17640,105,0,0],["BLOCK",17640,135,0,0],["BLOCK",17640,285,0,0],["GRID_DECO",17820,15,0,0],["GRID_DECO",17820,45,0,0],["GRID_DECO",17820,75,0,0],["BLOCK",17820,105,0,0],["BLOCK",17820,255,0,0],["GRID_DECO",17820,285,0,0],["STAR",17910,180,0,0],["GRID_DECO",18000,15,0,0],["BLOCK",18000,45,0,0],["BLOCK",18000,195,0,0],["GRID_DECO",18000,225,0,0],["GRID_DECO",18000,255,0,0],["GRID_DECO",18000,285,0,0],["BLOCK",18180,15,0,0],["BLOCK",18180,165,0,0],["GRID_DECO",18180,195,0,0],["GRID_DECO",18180,225,0,0],["GRID_DECO",18180,255,0,0],["GRID_DECO",18180,285,0,0],["STAR",18270,90,0,0],["GRID_DECO",18360,15,0,0],["BLOCK",18360,45,0,0],["BLOCK",18360,195,0,0],["GRID_DECO",18360,225,0,0],["GRID_DECO",18360,255,0,0],["GRID_DECO",18360,285,0,0],["BLOCK",18540,15,0,0],["BLOCK",18540,165,0,0],["GRID_DECO",18540,195,0,0],["GRID_DECO",18540,225,0,0],["GRID_DECO",18540,255,0,0],["GRID_DECO",18540,285,0,0],["STAR",18630,90,0,0],["GRID_DECO",18720,15,0,0],["BLOCK",18720,45,0,0],["BLOCK",18720,195,0,0],["GRID_DECO",18720,225,0,0],["GRID_DECO",18720,255,0,0],["GRID_DECO",18720,285,0,0],["BLOCK",18900,15,0,0],["BLOCK",18900,165,0,0],["GRID_DECO",18900,195,0,0],["GRID_DECO",18900,225,0,0],["GRID_DECO",18900,255,0,0],["GRID_DECO",18900,285,0,0],["STAR",18990,90,0,0],["GRID_DECO",19080,15,0,0],["GRID_DECO",19080,45,0,0],["BLOCK",19080,75,0,0],["BLOCK",19080,225,0,0],["GRID_DECO",19080,255,0,0],["GRID_DECO",19080,285,0,0],["BLOCK",19260,15,0,0],["BLOCK",19260,165,0,0],["GRID_DECO",19260,195,0,0],["GRID_DECO",19260,225,0,0],["GRID_DECO",19260,255,0,0],["GRID_DECO",19260,285,0,0],["STAR",19350,90,0,0],["GRID_DECO",19440,15,0,0],["BLOCK",19440,45,0,0],["BLOCK",19440,195,0,0],["GRID_DECO",19440,225,0,0],["GRID_DECO",19440,255,0,0],["GRID_DECO",19440,285,0,0],["GRID_DECO",19620,15,0,0],["GRID_DECO",19620,45,0,0],["GRID_DECO",19620,75,0,0],["BLOCK",19620,105,0,0],["BLOCK",19620,255,0,0],["GRID_DECO",19620,285,0,0],["STAR",19710,180,0,0],["GRID_DECO",19800,15,0,0],["GRID_DECO",19800,45,0,0],["GRID_DECO",19800,75,0,0],["GRID_DECO",19800,105,0,0],["BLOCK",19800,135,0,0],["BLOCK",19800,285,0,0],["GRID_DECO",19980,15,0,0],["GRID_DECO",19980,45,0,0],["GRID_DECO",19980,75,0,0],["GRID_DECO",19980,105,0,0],["BLOCK",19980,135,0,0],["BLOCK",19980,285,0,0],["STAR",20070,210,0,0],["PORTAL_CUBE",20280,45,0,0],["PAD_Y",20580,2,0,0],["GRID_DECO",20730,15,0,0],["GRID_DECO",20730,45,0,0],["GRID_DECO",20730,75,0,0],["BLOCK",20730,105,0,0],["SPIKE",20850,15,0,0],["STAR",20829,255,0,0],["SPIKE",20970,15,0,0],["SPIKE",21000,15,0,0],["SPIKE",21030,15,0,0],["SPIKE",21060,15,0,0],["SPIKE",21090,15,0,0],["ORB_Y",21000,75,0,0],["STAR",21133,195,0,0],["STAR",21194,195,0,0],["BLOCK",21330,15,0,0],["BLOCK",21360,15,0,0],["BLOCK",21390,15,0,0],["GRID_DECO",21420,15,0,0],["BLOCK",21420,45,0,0],["GRID_DECO",21450,15,0,0],["BLOCK",21450,45,0,0],["GRID_DECO",21480,15,0,0],["BLOCK",21480,45,0,0],["SPIKE",21540,15,0,0],["SPIKE",21570,15,0,0],["DSPIKES1",21538,21,0,0],["PAD_Y",21780,2,0,0],["GRID_DECO",21930,15,0,0],["GRID_DECO",21930,45,0,0],["GRID_DECO",21930,75,0,0],["BLOCK",21930,105,0,0],["SPIKE",22050,15,0,0],["DSPIKES1",21977,21,0,0],["BLOCK",22170,15,0,0],["SPIKE",22290,15,0,0],["STAR",22185,165,0,0],["BLOCK",22470,15,0,0],["BLOCK",22560,45,0,0],["GRID_DECO",22560,15,0,0],["BLOCK",22590,45,0,0],["GRID_DECO",22590,15,0,0],["BLOCK",22620,45,0,0],["GRID_DECO",22620,15,0,0],["BLOCK",22650,45,0,0],["GRID_DECO",22650,15,0,0],["BLOCK",22680,45,0,0],["GRID_DECO",22680,15,0,0],["BLOCK",22710,45,0,0],["GRID_DECO",22710,15,0,0],["BLOCK",22740,45,0,0],["GRID_DECO",22740,15,0,0],["SPIKE",22560,15,0,0],["SPIKE",22650,15,0,0],["SPIKE",22740,15,0,0],["DSPIKES3",22713,14,0,0],["STAR",22548,225,0,0],["BLOCK",22950,15,0,0],["BLOCK",22980,15,0,0],["BLOCK",23010,15,0,0],["GRID_DECO",23040,15,0,0],["BLOCK",23040,45,0,0],["GRID_DECO",23070,15,0,0],["BLOCK",23070,45,0,0],["GRID_DECO",23100,15,0,0],["BLOCK",23100,45,0,0],["GRID_DECO",23130,15,0,0],["GRID_DECO",23130,45,0,0],["BLOCK",23130,75,0,0],["GRID_DECO",23160,15,0,0],["GRID_DECO",23160,45,0,0],["BLOCK",23160,75,0,0],["GRID_DECO",23190,15,0,0],["GRID_DECO",23190,45,0,0],["BLOCK",23190,75,0,0],["SPIKE",23250,15,0,0],["SPIKE",23280,15,0,0],["DSPIKES2",23226,18,0,0],["STAR",23320,225,0,0],["STAR",23303,165,0,0],["SPIKE",23490,15,0,0],["SPIKE",23520,15,0,0],["DSPIKES3",23630,14,0,0],["STAR",23509,255,0,0],["STAR",23513,255,0,0],["PAD_Y",23730,2,0,0],["GRID_DECO",23880,15,0,0],["GRID_DECO",23880,45,0,0],["GRID_DECO",23880,75,0,0],["BLOCK",23880,105,0,0],["SPIKE",24000,15,0,0],["DSPIKES1",23955,21,0,0],["STAR",24085,225,0,0]],"evenements":[["COLOR",12750,15,0,8,40,70,0,600],["COLOR",12750,15,1,40,150,200,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/08.json b/games/numdash/levels/numdash/08.json
new file mode 100644
index 0000000..c98df42
--- /dev/null
+++ b/games/numdash/levels/numdash/08.json
@@ -0,0 +1 @@
+{"nom":"IRON TIDE","difficulte":4,"etoiles":8,"bpm":142,"depart":0,"couleurs":{"fond":[40,30,30],"sol":[110,80,70],"ligne":[255,160,60],"objets":[255,255,255]},"objets":[["SPIKE",300,15,0,0],["SPIKE",330,15,0,0],["SPIKE",360,15,0,0],["DSPIKES3",448,14,0,0],["STAR",505,195,0,0],["PAD_Y",570,2,0,0],["GRID_DECO",720,15,0,0],["GRID_DECO",720,45,0,0],["GRID_DECO",720,75,0,0],["BLOCK",720,105,0,0],["SPIKE",840,15,0,0],["DSPIKES2",784,18,0,0],["STAR",875,165,0,0],["STAR",675,225,0,0],["SPIKE",960,15,0,0],["DSPIKES2",1066,18,0,0],["STAR",1091,165,0,0],["STAR",968,195,0,0],["BLOCK",1170,15,0,0],["BLOCK",1260,45,0,0],["GRID_DECO",1260,15,0,0],["BLOCK",1290,45,0,0],["GRID_DECO",1290,15,0,0],["BLOCK",1320,45,0,0],["GRID_DECO",1320,15,0,0],["BLOCK",1350,45,0,0],["GRID_DECO",1350,15,0,0],["BLOCK",1380,45,0,0],["GRID_DECO",1380,15,0,0],["BLOCK",1410,45,0,0],["GRID_DECO",1410,15,0,0],["BLOCK",1440,45,0,0],["GRID_DECO",1440,15,0,0],["SPIKE",1260,15,0,0],["SPIKE",1350,15,0,0],["SPIKE",1440,15,0,0],["DSPIKES1",1388,21,0,0],["STAR",1550,255,0,0],["STAR",1566,195,0,0],["COIN",1560,40,0,0],["BLOCK",1650,15,0,0],["SPIKE",1770,15,0,0],["STAR",1914,165,0,0],["STAR",1700,225,0,0],["PAD_Y",1950,2,0,0],["GRID_DECO",2100,15,0,0],["GRID_DECO",2100,45,0,0],["GRID_DECO",2100,75,0,0],["BLOCK",2100,105,0,0],["SPIKE",2220,15,0,0],["DSPIKES2",2146,18,0,0],["STAR",2115,195,0,0],["STAR",2267,225,0,0],["BLOCK",2340,15,0,0],["BLOCK",2430,45,0,0],["GRID_DECO",2430,15,0,0],["BLOCK",2460,45,0,0],["GRID_DECO",2460,15,0,0],["BLOCK",2490,45,0,0],["GRID_DECO",2490,15,0,0],["BLOCK",2520,45,0,0],["GRID_DECO",2520,15,0,0],["BLOCK",2550,45,0,0],["GRID_DECO",2550,15,0,0],["BLOCK",2580,45,0,0],["GRID_DECO",2580,15,0,0],["BLOCK",2610,45,0,0],["GRID_DECO",2610,15,0,0],["SPIKE",2430,15,0,0],["SPIKE",2520,15,0,0],["SPIKE",2610,15,0,0],["STAR",2778,255,0,0],["SPIKE",2820,15,0,0],["SPIKE",2850,15,0,0],["DSPIKES1",2924,21,0,0],["BLOCK",3060,15,0,0],["BLOCK",3150,45,0,0],["GRID_DECO",3150,15,0,0],["BLOCK",3180,45,0,0],["GRID_DECO",3180,15,0,0],["BLOCK",3210,45,0,0],["GRID_DECO",3210,15,0,0],["BLOCK",3240,45,0,0],["GRID_DECO",3240,15,0,0],["BLOCK",3270,45,0,0],["GRID_DECO",3270,15,0,0],["SPIKE",3150,15,0,0],["SPIKE",3240,15,0,0],["DSPIKES1",3276,21,0,0],["SPIKE",3480,15,0,0],["SPIKE",3510,15,0,0],["SPIKE",3540,15,0,0],["STAR",3656,225,0,0],["COIN",3660,40,0,0],["SPIKE",3750,15,0,0],["SPIKE",3780,15,0,0],["SPIKE",3810,15,0,0],["SPIKE",3840,15,0,0],["SPIKE",3870,15,0,0],["ORB_Y",3780,75,0,0],["DSPIKES1",3929,21,0,0],["SPIKE",4110,15,0,0],["SPIKE",4140,15,0,0],["SPIKE",4170,15,0,0],["DSPIKES3",4262,14,0,0],["PORTAL_BALL",4440,45,0,0],["SPIKE",4650,15,0,0],["SPIKE",4680,15,0,0],["SPIKE",4830,225,0,2],["SPIKE",4860,225,0,2],["SPIKE",5010,15,0,0],["SPIKE",5040,15,0,0],["SPIKE",5190,225,0,2],["SPIKE",5220,225,0,2],["SPIKE",5370,15,0,0],["SPIKE",5400,15,0,0],["SPIKE",5550,225,0,2],["SPIKE",5580,225,0,2],["SPIKE",5730,15,0,0],["SPIKE",5760,15,0,0],["SPIKE",5910,225,0,2],["SPIKE",5940,225,0,2],["SPIKE",6090,15,0,0],["SPIKE",6120,15,0,0],["SPIKE",6270,225,0,2],["SPIKE",6300,225,0,2],["SPIKE",6450,15,0,0],["SPIKE",6480,15,0,0],["SPIKE",6630,225,0,2],["SPIKE",6660,225,0,2],["SPIKE",6810,15,0,0],["SPIKE",6840,15,0,0],["SPIKE",6990,225,0,2],["SPIKE",7020,225,0,2],["SPIKE",7170,15,0,0],["SPIKE",7200,15,0,0],["SPIKE",7350,225,0,2],["SPIKE",7380,225,0,2],["PORTAL_CUBE",7650,45,0,0],["SPEED_FAST",7950,45,0,0],["UFO_PORTAL",8130,45,0,0],["GRID_DECO",8340,15,0,0],["GRID_DECO",8340,45,0,0],["BLOCK",8340,75,0,0],["BLOCK",8340,225,0,0],["GRID_DECO",8340,255,0,0],["GRID_DECO",8340,285,0,0],["BLOCK",8520,15,0,0],["BLOCK",8520,165,0,0],["GRID_DECO",8520,195,0,0],["GRID_DECO",8520,225,0,0],["GRID_DECO",8520,255,0,0],["GRID_DECO",8520,285,0,0],["STAR",8610,90,0,0],["GRID_DECO",8700,15,0,0],["BLOCK",8700,45,0,0],["BLOCK",8700,195,0,0],["GRID_DECO",8700,225,0,0],["GRID_DECO",8700,255,0,0],["GRID_DECO",8700,285,0,0],["BLOCK",8880,15,0,0],["BLOCK",8880,165,0,0],["GRID_DECO",8880,195,0,0],["GRID_DECO",8880,225,0,0],["GRID_DECO",8880,255,0,0],["GRID_DECO",8880,285,0,0],["STAR",8970,90,0,0],["BLOCK",9060,15,0,0],["BLOCK",9060,165,0,0],["GRID_DECO",9060,195,0,0],["GRID_DECO",9060,225,0,0],["GRID_DECO",9060,255,0,0],["GRID_DECO",9060,285,0,0],["BLOCK",9240,15,0,0],["BLOCK",9240,165,0,0],["GRID_DECO",9240,195,0,0],["GRID_DECO",9240,225,0,0],["GRID_DECO",9240,255,0,0],["GRID_DECO",9240,285,0,0],["STAR",9330,90,0,0],["BLOCK",9420,15,0,0],["BLOCK",9420,165,0,0],["GRID_DECO",9420,195,0,0],["GRID_DECO",9420,225,0,0],["GRID_DECO",9420,255,0,0],["GRID_DECO",9420,285,0,0],["GRID_DECO",9600,15,0,0],["GRID_DECO",9600,45,0,0],["BLOCK",9600,75,0,0],["BLOCK",9600,225,0,0],["GRID_DECO",9600,255,0,0],["GRID_DECO",9600,285,0,0],["STAR",9690,150,0,0],["COIN",9600,150,0,0],["GRID_DECO",9780,15,0,0],["GRID_DECO",9780,45,0,0],["GRID_DECO",9780,75,0,0],["BLOCK",9780,105,0,0],["BLOCK",9780,255,0,0],["GRID_DECO",9780,285,0,0],["GRID_DECO",9960,15,0,0],["GRID_DECO",9960,45,0,0],["GRID_DECO",9960,75,0,0],["GRID_DECO",9960,105,0,0],["BLOCK",9960,135,0,0],["BLOCK",9960,285,0,0],["STAR",10050,210,0,0],["GRID_DECO",10140,15,0,0],["GRID_DECO",10140,45,0,0],["GRID_DECO",10140,75,0,0],["GRID_DECO",10140,105,0,0],["BLOCK",10140,135,0,0],["BLOCK",10140,285,0,0],["GRID_DECO",10320,15,0,0],["GRID_DECO",10320,45,0,0],["GRID_DECO",10320,75,0,0],["BLOCK",10320,105,0,0],["BLOCK",10320,255,0,0],["GRID_DECO",10320,285,0,0],["STAR",10410,180,0,0],["GRID_DECO",10500,15,0,0],["GRID_DECO",10500,45,0,0],["BLOCK",10500,75,0,0],["BLOCK",10500,225,0,0],["GRID_DECO",10500,255,0,0],["GRID_DECO",10500,285,0,0],["GRID_DECO",10680,15,0,0],["GRID_DECO",10680,45,0,0],["GRID_DECO",10680,75,0,0],["BLOCK",10680,105,0,0],["BLOCK",10680,255,0,0],["GRID_DECO",10680,285,0,0],["STAR",10770,180,0,0],["PORTAL_CUBE",10980,45,0,0],["SPEED_NORMAL",11280,45,0,0],["SPIKE",11400,15,0,0],["DSPIKES2",11477,18,0,0],["SPIKE",11610,15,0,0],["SPIKE",11640,15,0,0],["SPIKE",11670,15,0,0],["SPIKE",11700,15,0,0],["SPIKE",11730,15,0,0],["SPIKE",11760,15,0,0],["ORB_P",11670,75,0,0],["DSPIKES1",11814,21,0,0],["STAR",11680,195,0,0],["PAD_B",12000,2,0,0],["BLOCK",11970,195,0,0],["BLOCK",12000,195,0,0],["BLOCK",12030,195,0,0],["BLOCK",12060,195,0,0],["BLOCK",12090,195,0,0],["BLOCK",12120,195,0,0],["BLOCK",12150,195,0,0],["BLOCK",12180,195,0,0],["BLOCK",12210,195,0,0],["BLOCK",12240,195,0,0],["BLOCK",12270,195,0,0],["BLOCK",12300,195,0,0],["BLOCK",12330,195,0,0],["SPIKE",12120,150,0,2],["PAD_B",12240,178,0,2],["STAR",12315,195,0,0],["BLOCK",12480,15,0,0],["BLOCK",12510,15,0,0],["BLOCK",12540,15,0,0],["GRID_DECO",12570,15,0,0],["BLOCK",12570,45,0,0],["GRID_DECO",12600,15,0,0],["BLOCK",12600,45,0,0],["GRID_DECO",12630,15,0,0],["BLOCK",12630,45,0,0],["GRID_DECO",12660,15,0,0],["GRID_DECO",12660,45,0,0],["BLOCK",12660,75,0,0],["GRID_DECO",12690,15,0,0],["GRID_DECO",12690,45,0,0],["BLOCK",12690,75,0,0],["GRID_DECO",12720,15,0,0],["GRID_DECO",12720,45,0,0],["BLOCK",12720,75,0,0],["SPIKE",12780,15,0,0],["SPIKE",12810,15,0,0],["DSPIKES1",12742,21,0,0],["STAR",12740,165,0,0],["STAR",12610,195,0,0],["BLOCK",13020,15,0,0],["BLOCK",13050,15,0,0],["BLOCK",13080,15,0,0],["GRID_DECO",13110,15,0,0],["BLOCK",13110,45,0,0],["GRID_DECO",13140,15,0,0],["BLOCK",13140,45,0,0],["GRID_DECO",13170,15,0,0],["BLOCK",13170,45,0,0],["SPIKE",13230,15,0,0],["SPIKE",13260,15,0,0],["DSPIKES3",13264,14,0,0],["STAR",13375,195,0,0],["BLOCK",13470,15,0,0],["BLOCK",13560,45,0,0],["GRID_DECO",13560,15,0,0],["BLOCK",13590,45,0,0],["GRID_DECO",13590,15,0,0],["BLOCK",13620,45,0,0],["GRID_DECO",13620,15,0,0],["BLOCK",13650,45,0,0],["GRID_DECO",13650,15,0,0],["BLOCK",13680,45,0,0],["GRID_DECO",13680,15,0,0],["BLOCK",13710,45,0,0],["GRID_DECO",13710,15,0,0],["BLOCK",13740,45,0,0],["GRID_DECO",13740,15,0,0],["SPIKE",13560,15,0,0],["SPIKE",13650,15,0,0],["SPIKE",13740,15,0,0],["DSPIKES1",13682,21,0,0],["STAR",13668,225,0,0],["SPIKE",13950,15,0,0],["STAR",14076,165,0,0],["STAR",13990,255,0,0],["BLOCK",14160,15,0,0],["BLOCK",14190,15,0,0],["BLOCK",14220,15,0,0],["GRID_DECO",14250,15,0,0],["BLOCK",14250,45,0,0],["GRID_DECO",14280,15,0,0],["BLOCK",14280,45,0,0],["GRID_DECO",14310,15,0,0],["BLOCK",14310,45,0,0],["SPIKE",14370,15,0,0],["SPIKE",14400,15,0,0],["DSPIKES3",14385,14,0,0],["STAR",14535,195,0,0],["STAR",14510,255,0,0],["SPIKE",14610,15,0,0],["SPIKE",14640,15,0,0],["SPIKE",14670,15,0,0],["SPIKE",14700,15,0,0],["SPIKE",14730,15,0,0],["ORB_Y",14640,75,0,0],["DSPIKES2",14773,18,0,0],["SPIKE",14970,15,0,0],["SPIKE",15000,15,0,0],["DSPIKES3",15077,14,0,0],["STAR",15101,195,0,0],["STAR",15113,255,0,0],["SPIKE",15210,15,0,0],["SPIKE",15240,15,0,0],["SPIKE",15270,15,0,0],["STAR",15314,165,0,0],["PAD_B",15480,2,0,0],["BLOCK",15450,195,0,0],["BLOCK",15480,195,0,0],["BLOCK",15510,195,0,0],["BLOCK",15540,195,0,0],["BLOCK",15570,195,0,0],["BLOCK",15600,195,0,0],["BLOCK",15630,195,0,0],["BLOCK",15660,195,0,0],["BLOCK",15690,195,0,0],["BLOCK",15720,195,0,0],["BLOCK",15750,195,0,0],["BLOCK",15780,195,0,0],["BLOCK",15810,195,0,0],["SPIKE",15600,150,0,2],["PAD_B",15720,178,0,2],["STAR",15923,225,0,0],["BLOCK",15960,15,0,0],["BLOCK",15990,15,0,0],["BLOCK",16020,15,0,0],["GRID_DECO",16050,15,0,0],["BLOCK",16050,45,0,0],["GRID_DECO",16080,15,0,0],["BLOCK",16080,45,0,0],["GRID_DECO",16110,15,0,0],["BLOCK",16110,45,0,0],["SPIKE",16170,15,0,0],["SPIKE",16200,15,0,0],["DSPIKES2",16202,18,0,0],["SPIKE",16410,15,0,0],["SPIKE",16440,15,0,0],["STAR",16516,195,0,0],["STAR",16543,225,0,0],["SPIKE",16650,15,0,0],["SPIKE",16680,15,0,0],["SPIKE",16710,15,0,0],["SPIKE",16740,15,0,0],["SPIKE",16770,15,0,0],["SPIKE",16800,15,0,0],["ORB_P",16710,75,0,0],["DSPIKES1",16850,21,0,0],["STAR",16867,225,0,0],["BLOCK",17040,15,0,0],["BLOCK",17130,45,0,0],["GRID_DECO",17130,15,0,0],["BLOCK",17160,45,0,0],["GRID_DECO",17160,15,0,0],["BLOCK",17190,45,0,0],["GRID_DECO",17190,15,0,0],["BLOCK",17220,45,0,0],["GRID_DECO",17220,15,0,0],["BLOCK",17250,45,0,0],["GRID_DECO",17250,15,0,0],["SPIKE",17130,15,0,0],["SPIKE",17220,15,0,0],["STAR",17206,195,0,0],["PORTAL_SHIP",17520,45,0,0],["GRID_DECO",17730,15,0,0],["GRID_DECO",17730,45,0,0],["GRID_DECO",17730,75,0,0],["BLOCK",17730,105,0,0],["BLOCK",17730,255,0,0],["GRID_DECO",17730,285,0,0],["SPIKE",17730,135,0,0],["GRID_DECO",17940,15,0,0],["GRID_DECO",17940,45,0,0],["BLOCK",17940,75,0,0],["BLOCK",17940,225,0,0],["GRID_DECO",17940,255,0,0],["GRID_DECO",17940,285,0,0],["STAR",18045,150,0,0],["SPIKE",17940,105,0,0],["GRID_DECO",18150,15,0,0],["BLOCK",18150,45,0,0],["BLOCK",18150,195,0,0],["GRID_DECO",18150,225,0,0],["GRID_DECO",18150,255,0,0],["GRID_DECO",18150,285,0,0],["SPIKE",18150,75,0,0],["BLOCK",18360,15,0,0],["BLOCK",18360,165,0,0],["GRID_DECO",18360,195,0,0],["GRID_DECO",18360,225,0,0],["GRID_DECO",18360,255,0,0],["GRID_DECO",18360,285,0,0],["STAR",18465,90,0,0],["SPIKE",18360,45,0,0],["GRID_DECO",18570,15,0,0],["BLOCK",18570,45,0,0],["BLOCK",18570,195,0,0],["GRID_DECO",18570,225,0,0],["GRID_DECO",18570,255,0,0],["GRID_DECO",18570,285,0,0],["SPIKE",18570,75,0,0],["BLOCK",18780,15,0,0],["BLOCK",18780,165,0,0],["GRID_DECO",18780,195,0,0],["GRID_DECO",18780,225,0,0],["GRID_DECO",18780,255,0,0],["GRID_DECO",18780,285,0,0],["STAR",18885,90,0,0],["SPIKE",18780,45,0,0],["BLOCK",18990,15,0,0],["BLOCK",18990,165,0,0],["GRID_DECO",18990,195,0,0],["GRID_DECO",18990,225,0,0],["GRID_DECO",18990,255,0,0],["GRID_DECO",18990,285,0,0],["SPIKE",18990,45,0,0],["BLOCK",19200,15,0,0],["BLOCK",19200,165,0,0],["GRID_DECO",19200,195,0,0],["GRID_DECO",19200,225,0,0],["GRID_DECO",19200,255,0,0],["GRID_DECO",19200,285,0,0],["STAR",19305,90,0,0],["SPIKE",19200,45,0,0],["GRID_DECO",19410,15,0,0],["BLOCK",19410,45,0,0],["BLOCK",19410,195,0,0],["GRID_DECO",19410,225,0,0],["GRID_DECO",19410,255,0,0],["GRID_DECO",19410,285,0,0],["SPIKE",19410,75,0,0],["GRID_DECO",19620,15,0,0],["GRID_DECO",19620,45,0,0],["BLOCK",19620,75,0,0],["BLOCK",19620,225,0,0],["GRID_DECO",19620,255,0,0],["GRID_DECO",19620,285,0,0],["STAR",19725,150,0,0],["SPIKE",19620,105,0,0],["GRID_DECO",19830,15,0,0],["GRID_DECO",19830,45,0,0],["GRID_DECO",19830,75,0,0],["BLOCK",19830,105,0,0],["BLOCK",19830,255,0,0],["GRID_DECO",19830,285,0,0],["SPIKE",19830,135,0,0],["GRID_DECO",20040,15,0,0],["BLOCK",20040,45,0,0],["BLOCK",20040,195,0,0],["GRID_DECO",20040,225,0,0],["GRID_DECO",20040,255,0,0],["GRID_DECO",20040,285,0,0],["STAR",20145,120,0,0],["SPIKE",20040,75,0,0],["BLOCK",20250,15,0,0],["BLOCK",20250,165,0,0],["GRID_DECO",20250,195,0,0],["GRID_DECO",20250,225,0,0],["GRID_DECO",20250,255,0,0],["GRID_DECO",20250,285,0,0],["SPIKE",20250,45,0,0],["GRID_DECO",20460,15,0,0],["BLOCK",20460,45,0,0],["BLOCK",20460,195,0,0],["GRID_DECO",20460,225,0,0],["GRID_DECO",20460,255,0,0],["GRID_DECO",20460,285,0,0],["STAR",20565,120,0,0],["SPIKE",20460,75,0,0],["GRID_DECO",20670,15,0,0],["GRID_DECO",20670,45,0,0],["GRID_DECO",20670,75,0,0],["BLOCK",20670,105,0,0],["BLOCK",20670,255,0,0],["GRID_DECO",20670,285,0,0],["SPIKE",20670,135,0,0],["GRID_DECO",20880,15,0,0],["GRID_DECO",20880,45,0,0],["GRID_DECO",20880,75,0,0],["GRID_DECO",20880,105,0,0],["BLOCK",20880,135,0,0],["BLOCK",20880,285,0,0],["STAR",20985,210,0,0],["SPIKE",20880,165,0,0],["PORTAL_CUBE",21210,45,0,0],["PAD_B",21510,2,0,0],["BLOCK",21480,195,0,0],["BLOCK",21510,195,0,0],["BLOCK",21540,195,0,0],["BLOCK",21570,195,0,0],["BLOCK",21600,195,0,0],["BLOCK",21630,195,0,0],["BLOCK",21660,195,0,0],["BLOCK",21690,195,0,0],["BLOCK",21720,195,0,0],["BLOCK",21750,195,0,0],["BLOCK",21780,195,0,0],["BLOCK",21810,195,0,0],["BLOCK",21840,195,0,0],["SPIKE",21630,150,0,2],["PAD_B",21750,178,0,2],["DSPIKES2",21767,18,0,0],["SPIKE",21990,15,0,0],["SPIKE",22020,15,0,0],["SPIKE",22050,15,0,0],["STAR",22218,225,0,0],["SPIKE",22260,15,0,0],["DSPIKES1",22338,21,0,0],["STAR",22299,195,0,0],["STAR",22453,225,0,0],["PAD_B",22470,2,0,0],["BLOCK",22440,195,0,0],["BLOCK",22470,195,0,0],["BLOCK",22500,195,0,0],["BLOCK",22530,195,0,0],["BLOCK",22560,195,0,0],["BLOCK",22590,195,0,0],["BLOCK",22620,195,0,0],["BLOCK",22650,195,0,0],["BLOCK",22680,195,0,0],["BLOCK",22710,195,0,0],["BLOCK",22740,195,0,0],["BLOCK",22770,195,0,0],["BLOCK",22800,195,0,0],["SPIKE",22590,150,0,2],["PAD_B",22710,178,0,2],["STAR",22752,165,0,0],["STAR",22572,165,0,0],["SPIKE",22950,15,0,0],["SPIKE",22980,15,0,0],["SPIKE",23010,15,0,0],["DSPIKES1",23112,21,0,0],["STAR",23185,165,0,0],["SPIKE",23220,15,0,0],["SPIKE",23250,15,0,0],["STAR",23245,255,0,0],["STAR",23365,195,0,0],["SPIKE",23460,15,0,0],["SPIKE",23490,15,0,0],["SPIKE",23520,15,0,0],["SPIKE",23550,15,0,0],["SPIKE",23580,15,0,0],["ORB_Y",23490,75,0,0],["DSPIKES3",23627,14,0,0],["STAR",23639,255,0,0],["STAR",23619,255,0,0],["PAD_Y",23820,2,0,0],["GRID_DECO",23970,15,0,0],["GRID_DECO",23970,45,0,0],["GRID_DECO",23970,75,0,0],["BLOCK",23970,105,0,0],["SPIKE",24090,15,0,0],["STAR",23837,255,0,0],["STAR",24014,165,0,0],["SPIKE",24210,15,0,0],["SPIKE",24240,15,0,0],["SPIKE",24270,15,0,0],["SPIKE",24300,15,0,0],["SPIKE",24330,15,0,0],["SPIKE",24360,15,0,0],["ORB_P",24270,75,0,0],["DSPIKES3",24405,14,0,0],["STAR",24446,255,0,0],["STAR",24248,165,0,0]],"evenements":[["COLOR",11280,15,0,40,30,30,0,600],["COLOR",11280,15,1,110,80,70,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/09.json b/games/numdash/levels/numdash/09.json
new file mode 100644
index 0000000..2a4c436
--- /dev/null
+++ b/games/numdash/levels/numdash/09.json
@@ -0,0 +1 @@
+{"nom":"LUNAR LOOP","difficulte":4,"etoiles":9,"bpm":130,"depart":0,"couleurs":{"fond":[18,16,40],"sol":[70,60,150],"ligne":[200,200,255],"objets":[255,255,255]},"objets":[["BLOCK",300,15,0,0],["BLOCK",330,15,0,0],["BLOCK",360,15,0,0],["GRID_DECO",390,15,0,0],["BLOCK",390,45,0,0],["GRID_DECO",420,15,0,0],["BLOCK",420,45,0,0],["GRID_DECO",450,15,0,0],["BLOCK",450,45,0,0],["SPIKE",510,15,0,0],["SPIKE",540,15,0,0],["STAR",667,195,0,0],["STAR",304,225,0,0],["PAD_Y",750,2,0,0],["GRID_DECO",900,15,0,0],["GRID_DECO",900,45,0,0],["GRID_DECO",900,75,0,0],["BLOCK",900,105,0,0],["SPIKE",1020,15,0,0],["STAR",951,195,0,0],["SPIKE",1140,15,0,0],["SPIKE",1170,15,0,0],["SPIKE",1200,15,0,0],["SPIKE",1230,15,0,0],["SPIKE",1260,15,0,0],["ORB_Y",1170,75,0,0],["STAR",1479,165,0,0],["STAR",1382,255,0,0],["BLOCK",1500,15,0,0],["BLOCK",1530,15,0,0],["BLOCK",1560,15,0,0],["GRID_DECO",1590,15,0,0],["BLOCK",1590,45,0,0],["GRID_DECO",1620,15,0,0],["BLOCK",1620,45,0,0],["GRID_DECO",1650,15,0,0],["BLOCK",1650,45,0,0],["SPIKE",1710,15,0,0],["SPIKE",1740,15,0,0],["DSPIKES2",1727,18,0,0],["COIN",1860,40,0,0],["SPIKE",1950,15,0,0],["SPIKE",1980,15,0,0],["STAR",2095,195,0,0],["STAR",1962,225,0,0],["PAD_B",2190,2,0,0],["BLOCK",2160,195,0,0],["BLOCK",2190,195,0,0],["BLOCK",2220,195,0,0],["BLOCK",2250,195,0,0],["BLOCK",2280,195,0,0],["BLOCK",2310,195,0,0],["BLOCK",2340,195,0,0],["BLOCK",2370,195,0,0],["BLOCK",2400,195,0,0],["BLOCK",2430,195,0,0],["BLOCK",2460,195,0,0],["BLOCK",2490,195,0,0],["BLOCK",2520,195,0,0],["SPIKE",2310,150,0,2],["PAD_B",2430,178,0,2],["DSPIKES1",2413,21,0,0],["BLOCK",2670,15,0,0],["BLOCK",2760,45,0,0],["GRID_DECO",2760,15,0,0],["BLOCK",2790,45,0,0],["GRID_DECO",2790,15,0,0],["BLOCK",2820,45,0,0],["GRID_DECO",2820,15,0,0],["BLOCK",2850,45,0,0],["GRID_DECO",2850,15,0,0],["BLOCK",2880,45,0,0],["GRID_DECO",2880,15,0,0],["SPIKE",2760,15,0,0],["SPIKE",2850,15,0,0],["STAR",2677,195,0,0],["BLOCK",3090,15,0,0],["SPIKE",3210,15,0,0],["STAR",3129,165,0,0],["STAR",3090,195,0,0],["SPIKE",3390,15,0,0],["SPIKE",3420,15,0,0],["SPIKE",3450,15,0,0],["SPIKE",3480,15,0,0],["SPIKE",3510,15,0,0],["SPIKE",3540,15,0,0],["ORB_P",3450,75,0,0],["DSPIKES3",3556,14,0,0],["STAR",3504,165,0,0],["STAR",3499,225,0,0],["BLOCK",3780,15,0,0],["BLOCK",3870,45,0,0],["GRID_DECO",3870,15,0,0],["BLOCK",3900,45,0,0],["GRID_DECO",3900,15,0,0],["BLOCK",3930,45,0,0],["GRID_DECO",3930,15,0,0],["BLOCK",3960,45,0,0],["GRID_DECO",3960,15,0,0],["BLOCK",3990,45,0,0],["GRID_DECO",3990,15,0,0],["SPIKE",3870,15,0,0],["SPIKE",3960,15,0,0],["DSPIKES3",3995,14,0,0],["STAR",3918,195,0,0],["COIN",4110,40,0,0],["SPIKE",4200,15,0,0],["SPIKE",4230,15,0,0],["SPIKE",4260,15,0,0],["SPIKE",4290,15,0,0],["SPIKE",4320,15,0,0],["SPIKE",4350,15,0,0],["ORB_P",4260,75,0,0],["DSPIKES1",4398,21,0,0],["SPIKE",4590,15,0,0],["SPIKE",4620,15,0,0],["SPIKE",4650,15,0,0],["DSPIKES1",4719,21,0,0],["STAR",4740,195,0,0],["WAVE_PORTAL",4920,45,0,0],["GRID_DECO",5130,15,0,0],["GRID_DECO",5130,45,0,0],["GRID_DECO",5130,75,0,0],["BLOCK",5130,105,0,0],["BLOCK",5130,285,0,0],["GRID_DECO",5310,15,0,0],["GRID_DECO",5310,45,0,0],["GRID_DECO",5310,75,0,0],["BLOCK",5310,105,0,0],["BLOCK",5310,285,0,0],["STAR",5400,195,0,0],["GRID_DECO",5490,15,0,0],["GRID_DECO",5490,45,0,0],["BLOCK",5490,75,0,0],["BLOCK",5490,255,0,0],["GRID_DECO",5490,285,0,0],["GRID_DECO",5670,15,0,0],["GRID_DECO",5670,45,0,0],["GRID_DECO",5670,75,0,0],["BLOCK",5670,105,0,0],["BLOCK",5670,285,0,0],["STAR",5760,195,0,0],["GRID_DECO",5850,15,0,0],["BLOCK",5850,45,0,0],["BLOCK",5850,225,0,0],["GRID_DECO",5850,255,0,0],["GRID_DECO",5850,285,0,0],["GRID_DECO",6030,15,0,0],["GRID_DECO",6030,45,0,0],["GRID_DECO",6030,75,0,0],["BLOCK",6030,105,0,0],["BLOCK",6030,285,0,0],["STAR",6120,195,0,0],["GRID_DECO",6210,15,0,0],["GRID_DECO",6210,45,0,0],["BLOCK",6210,75,0,0],["BLOCK",6210,255,0,0],["GRID_DECO",6210,285,0,0],["GRID_DECO",6390,15,0,0],["BLOCK",6390,45,0,0],["BLOCK",6390,225,0,0],["GRID_DECO",6390,255,0,0],["GRID_DECO",6390,285,0,0],["STAR",6480,135,0,0],["COIN",6390,135,0,0],["BLOCK",6570,15,0,0],["BLOCK",6570,195,0,0],["GRID_DECO",6570,225,0,0],["GRID_DECO",6570,255,0,0],["GRID_DECO",6570,285,0,0],["GRID_DECO",6750,15,0,0],["BLOCK",6750,45,0,0],["BLOCK",6750,225,0,0],["GRID_DECO",6750,255,0,0],["GRID_DECO",6750,285,0,0],["STAR",6840,135,0,0],["BLOCK",6930,15,0,0],["BLOCK",6930,195,0,0],["GRID_DECO",6930,225,0,0],["GRID_DECO",6930,255,0,0],["GRID_DECO",6930,285,0,0],["GRID_DECO",7110,15,0,0],["GRID_DECO",7110,45,0,0],["BLOCK",7110,75,0,0],["BLOCK",7110,255,0,0],["GRID_DECO",7110,285,0,0],["STAR",7200,165,0,0],["GRID_DECO",7290,15,0,0],["GRID_DECO",7290,45,0,0],["GRID_DECO",7290,75,0,0],["BLOCK",7290,105,0,0],["BLOCK",7290,285,0,0],["GRID_DECO",7470,15,0,0],["BLOCK",7470,45,0,0],["BLOCK",7470,225,0,0],["GRID_DECO",7470,255,0,0],["GRID_DECO",7470,285,0,0],["STAR",7560,135,0,0],["PORTAL_CUBE",7770,45,0,0],["BLOCK",8070,15,0,0],["BLOCK",8160,45,0,0],["GRID_DECO",8160,15,0,0],["BLOCK",8190,45,0,0],["GRID_DECO",8190,15,0,0],["BLOCK",8220,45,0,0],["GRID_DECO",8220,15,0,0],["BLOCK",8250,45,0,0],["GRID_DECO",8250,15,0,0],["BLOCK",8280,45,0,0],["GRID_DECO",8280,15,0,0],["BLOCK",8310,45,0,0],["GRID_DECO",8310,15,0,0],["BLOCK",8340,45,0,0],["GRID_DECO",8340,15,0,0],["SPIKE",8160,15,0,0],["SPIKE",8250,15,0,0],["SPIKE",8340,15,0,0],["DSPIKES3",8294,14,0,0],["STAR",8427,165,0,0],["BLOCK",8550,15,0,0],["SPIKE",8670,15,0,0],["DSPIKES2",8708,18,0,0],["STAR",8766,255,0,0],["STAR",8721,195,0,0],["BLOCK",8850,15,0,0],["BLOCK",8940,45,0,0],["GRID_DECO",8940,15,0,0],["BLOCK",8970,45,0,0],["GRID_DECO",8970,15,0,0],["BLOCK",9000,45,0,0],["GRID_DECO",9000,15,0,0],["BLOCK",9030,45,0,0],["GRID_DECO",9030,15,0,0],["BLOCK",9060,45,0,0],["GRID_DECO",9060,15,0,0],["SPIKE",8940,15,0,0],["SPIKE",9030,15,0,0],["DSPIKES2",9076,18,0,0],["STAR",9175,165,0,0],["STAR",9046,225,0,0],["PAD_B",9270,2,0,0],["BLOCK",9240,195,0,0],["BLOCK",9270,195,0,0],["BLOCK",9300,195,0,0],["BLOCK",9330,195,0,0],["BLOCK",9360,195,0,0],["BLOCK",9390,195,0,0],["BLOCK",9420,195,0,0],["BLOCK",9450,195,0,0],["BLOCK",9480,195,0,0],["BLOCK",9510,195,0,0],["BLOCK",9540,195,0,0],["BLOCK",9570,195,0,0],["BLOCK",9600,195,0,0],["SPIKE",9390,150,0,2],["PAD_B",9510,178,0,2],["DSPIKES3",9492,14,0,0],["BLOCK",9750,15,0,0],["BLOCK",9840,45,0,0],["GRID_DECO",9840,15,0,0],["BLOCK",9870,45,0,0],["GRID_DECO",9870,15,0,0],["BLOCK",9900,45,0,0],["GRID_DECO",9900,15,0,0],["BLOCK",9930,45,0,0],["GRID_DECO",9930,15,0,0],["BLOCK",9960,45,0,0],["GRID_DECO",9960,15,0,0],["SPIKE",9840,15,0,0],["SPIKE",9930,15,0,0],["DSPIKES3",9947,14,0,0],["STAR",9891,225,0,0],["SPIKE",10170,15,0,0],["SPIKE",10200,15,0,0],["SPIKE",10230,15,0,0],["DSPIKES2",10292,18,0,0],["SPIKE",10440,15,0,0],["SPIKE",10470,15,0,0],["DSPIKES3",10539,14,0,0],["STAR",10597,195,0,0],["STAR",10543,255,0,0],["SPIKE",10680,15,0,0],["SPIKE",10710,15,0,0],["SPIKE",10740,15,0,0],["DSPIKES2",10831,18,0,0],["STAR",10900,165,0,0],["SPIKE",10950,15,0,0],["SPIKE",10980,15,0,0],["SPIKE",11010,15,0,0],["SPIKE",11040,15,0,0],["SPIKE",11070,15,0,0],["ORB_Y",10980,75,0,0],["BLOCK",11310,15,0,0],["SPIKE",11430,15,0,0],["STAR",11442,195,0,0],["STAR",11469,165,0,0],["BLOCK",11610,15,0,0],["BLOCK",11700,45,0,0],["GRID_DECO",11700,15,0,0],["BLOCK",11730,45,0,0],["GRID_DECO",11730,15,0,0],["BLOCK",11760,45,0,0],["GRID_DECO",11760,15,0,0],["BLOCK",11790,45,0,0],["GRID_DECO",11790,15,0,0],["BLOCK",11820,45,0,0],["GRID_DECO",11820,15,0,0],["BLOCK",11850,45,0,0],["GRID_DECO",11850,15,0,0],["BLOCK",11880,45,0,0],["GRID_DECO",11880,15,0,0],["SPIKE",11700,15,0,0],["SPIKE",11790,15,0,0],["SPIKE",11880,15,0,0],["DSPIKES2",11831,18,0,0],["STAR",11953,255,0,0],["STAR",11732,165,0,0],["SPIKE",12090,15,0,0],["SPIKE",12120,15,0,0],["SPIKE",12150,15,0,0],["STAR",12187,255,0,0],["PORTAL_BALL",12420,45,0,0],["SPIKE",12630,15,0,0],["SPIKE",12660,15,0,0],["SPIKE",12810,225,0,2],["SPIKE",12840,225,0,2],["SPIKE",12990,15,0,0],["SPIKE",13020,15,0,0],["SPIKE",13170,225,0,2],["SPIKE",13200,225,0,2],["SPIKE",13350,15,0,0],["SPIKE",13380,15,0,0],["SPIKE",13530,225,0,2],["SPIKE",13560,225,0,2],["SPIKE",13710,15,0,0],["SPIKE",13740,15,0,0],["SPIKE",13890,225,0,2],["SPIKE",13920,225,0,2],["SPIKE",14070,15,0,0],["SPIKE",14100,15,0,0],["SPIKE",14250,225,0,2],["SPIKE",14280,225,0,2],["SPIKE",14430,15,0,0],["SPIKE",14460,15,0,0],["SPIKE",14610,225,0,2],["SPIKE",14640,225,0,2],["SPIKE",14790,15,0,0],["SPIKE",14820,15,0,0],["SPIKE",14970,225,0,2],["SPIKE",15000,225,0,2],["PORTAL_CUBE",15270,45,0,0],["PORTAL_SHIP",15630,45,0,0],["GRID_DECO",15840,15,0,0],["GRID_DECO",15840,45,0,0],["GRID_DECO",15840,75,0,0],["GRID_DECO",15840,105,0,0],["BLOCK",15840,135,0,0],["BLOCK",15840,285,0,0],["SPIKE",15840,165,0,0],["GRID_DECO",16050,15,0,0],["GRID_DECO",16050,45,0,0],["GRID_DECO",16050,75,0,0],["GRID_DECO",16050,105,0,0],["BLOCK",16050,135,0,0],["BLOCK",16050,285,0,0],["STAR",16155,210,0,0],["SPIKE",16050,165,0,0],["GRID_DECO",16260,15,0,0],["GRID_DECO",16260,45,0,0],["GRID_DECO",16260,75,0,0],["GRID_DECO",16260,105,0,0],["BLOCK",16260,135,0,0],["BLOCK",16260,285,0,0],["SPIKE",16260,165,0,0],["GRID_DECO",16470,15,0,0],["GRID_DECO",16470,45,0,0],["BLOCK",16470,75,0,0],["BLOCK",16470,225,0,0],["GRID_DECO",16470,255,0,0],["GRID_DECO",16470,285,0,0],["STAR",16575,150,0,0],["SPIKE",16470,105,0,0],["BLOCK",16680,15,0,0],["BLOCK",16680,165,0,0],["GRID_DECO",16680,195,0,0],["GRID_DECO",16680,225,0,0],["GRID_DECO",16680,255,0,0],["GRID_DECO",16680,285,0,0],["SPIKE",16680,45,0,0],["GRID_DECO",16890,15,0,0],["GRID_DECO",16890,45,0,0],["BLOCK",16890,75,0,0],["BLOCK",16890,225,0,0],["GRID_DECO",16890,255,0,0],["GRID_DECO",16890,285,0,0],["STAR",16995,150,0,0],["SPIKE",16890,105,0,0],["GRID_DECO",17100,15,0,0],["GRID_DECO",17100,45,0,0],["GRID_DECO",17100,75,0,0],["BLOCK",17100,105,0,0],["BLOCK",17100,255,0,0],["GRID_DECO",17100,285,0,0],["SPIKE",17100,135,0,0],["GRID_DECO",17310,15,0,0],["GRID_DECO",17310,45,0,0],["GRID_DECO",17310,75,0,0],["GRID_DECO",17310,105,0,0],["BLOCK",17310,135,0,0],["BLOCK",17310,285,0,0],["STAR",17415,210,0,0],["SPIKE",17310,165,0,0],["GRID_DECO",17520,15,0,0],["GRID_DECO",17520,45,0,0],["GRID_DECO",17520,75,0,0],["BLOCK",17520,105,0,0],["BLOCK",17520,255,0,0],["GRID_DECO",17520,285,0,0],["SPIKE",17520,135,0,0],["GRID_DECO",17730,15,0,0],["GRID_DECO",17730,45,0,0],["BLOCK",17730,75,0,0],["BLOCK",17730,225,0,0],["GRID_DECO",17730,255,0,0],["GRID_DECO",17730,285,0,0],["STAR",17835,150,0,0],["SPIKE",17730,105,0,0],["GRID_DECO",17940,15,0,0],["GRID_DECO",17940,45,0,0],["GRID_DECO",17940,75,0,0],["GRID_DECO",17940,105,0,0],["BLOCK",17940,135,0,0],["BLOCK",17940,285,0,0],["SPIKE",17940,165,0,0],["GRID_DECO",18150,15,0,0],["GRID_DECO",18150,45,0,0],["GRID_DECO",18150,75,0,0],["BLOCK",18150,105,0,0],["BLOCK",18150,255,0,0],["GRID_DECO",18150,285,0,0],["STAR",18255,180,0,0],["SPIKE",18150,135,0,0],["GRID_DECO",18360,15,0,0],["GRID_DECO",18360,45,0,0],["BLOCK",18360,75,0,0],["BLOCK",18360,225,0,0],["GRID_DECO",18360,255,0,0],["GRID_DECO",18360,285,0,0],["SPIKE",18360,105,0,0],["GRID_DECO",18570,15,0,0],["GRID_DECO",18570,45,0,0],["GRID_DECO",18570,75,0,0],["GRID_DECO",18570,105,0,0],["BLOCK",18570,135,0,0],["BLOCK",18570,285,0,0],["STAR",18675,210,0,0],["SPIKE",18570,165,0,0],["PORTAL_CUBE",18900,45,0,0],["BLOCK",19200,15,0,0],["BLOCK",19230,15,0,0],["BLOCK",19260,15,0,0],["GRID_DECO",19290,15,0,0],["BLOCK",19290,45,0,0],["GRID_DECO",19320,15,0,0],["BLOCK",19320,45,0,0],["GRID_DECO",19350,15,0,0],["BLOCK",19350,45,0,0],["SPIKE",19410,15,0,0],["SPIKE",19440,15,0,0],["DSPIKES3",19436,14,0,0],["STAR",19287,165,0,0],["STAR",19206,195,0,0],["PAD_Y",19650,2,0,0],["GRID_DECO",19800,15,0,0],["GRID_DECO",19800,45,0,0],["GRID_DECO",19800,75,0,0],["BLOCK",19800,105,0,0],["SPIKE",19920,15,0,0],["DSPIKES3",19850,14,0,0],["STAR",19682,195,0,0],["STAR",19925,225,0,0],["BLOCK",20040,15,0,0],["BLOCK",20130,45,0,0],["GRID_DECO",20130,15,0,0],["BLOCK",20160,45,0,0],["GRID_DECO",20160,15,0,0],["BLOCK",20190,45,0,0],["GRID_DECO",20190,15,0,0],["BLOCK",20220,45,0,0],["GRID_DECO",20220,15,0,0],["BLOCK",20250,45,0,0],["GRID_DECO",20250,15,0,0],["BLOCK",20280,45,0,0],["GRID_DECO",20280,15,0,0],["BLOCK",20310,45,0,0],["GRID_DECO",20310,15,0,0],["SPIKE",20130,15,0,0],["SPIKE",20220,15,0,0],["SPIKE",20310,15,0,0],["STAR",20047,165,0,0],["STAR",20272,225,0,0],["SPIKE",20520,15,0,0],["SPIKE",20550,15,0,0],["SPIKE",20580,15,0,0],["SPIKE",20610,15,0,0],["SPIKE",20640,15,0,0],["ORB_Y",20550,75,0,0],["STAR",20572,165,0,0],["PAD_B",20880,2,0,0],["BLOCK",20850,195,0,0],["BLOCK",20880,195,0,0],["BLOCK",20910,195,0,0],["BLOCK",20940,195,0,0],["BLOCK",20970,195,0,0],["BLOCK",21000,195,0,0],["BLOCK",21030,195,0,0],["BLOCK",21060,195,0,0],["BLOCK",21090,195,0,0],["BLOCK",21120,195,0,0],["BLOCK",21150,195,0,0],["BLOCK",21180,195,0,0],["BLOCK",21210,195,0,0],["SPIKE",21000,150,0,2],["PAD_B",21120,178,0,2],["STAR",21229,225,0,0],["STAR",20915,165,0,0],["BLOCK",21360,15,0,0],["BLOCK",21390,15,0,0],["BLOCK",21420,15,0,0],["GRID_DECO",21450,15,0,0],["BLOCK",21450,45,0,0],["GRID_DECO",21480,15,0,0],["BLOCK",21480,45,0,0],["GRID_DECO",21510,15,0,0],["BLOCK",21510,45,0,0],["SPIKE",21570,15,0,0],["SPIKE",21600,15,0,0],["DSPIKES3",21580,14,0,0],["STAR",21673,195,0,0],["SPIKE",21810,15,0,0],["SPIKE",21840,15,0,0],["SPIKE",21870,15,0,0],["SPIKE",21900,15,0,0],["SPIKE",21930,15,0,0],["SPIKE",21960,15,0,0],["ORB_P",21870,75,0,0],["DSPIKES2",22004,18,0,0],["STAR",22059,195,0,0],["BLOCK",22200,15,0,0],["BLOCK",22290,45,0,0],["GRID_DECO",22290,15,0,0],["BLOCK",22320,45,0,0],["GRID_DECO",22320,15,0,0],["BLOCK",22350,45,0,0],["GRID_DECO",22350,15,0,0],["BLOCK",22380,45,0,0],["GRID_DECO",22380,15,0,0],["BLOCK",22410,45,0,0],["GRID_DECO",22410,15,0,0],["SPIKE",22290,15,0,0],["SPIKE",22380,15,0,0],["STAR",22451,195,0,0],["BLOCK",22620,15,0,0],["BLOCK",22710,45,0,0],["GRID_DECO",22710,15,0,0],["BLOCK",22740,45,0,0],["GRID_DECO",22740,15,0,0],["BLOCK",22770,45,0,0],["GRID_DECO",22770,15,0,0],["BLOCK",22800,45,0,0],["GRID_DECO",22800,15,0,0],["BLOCK",22830,45,0,0],["GRID_DECO",22830,15,0,0],["BLOCK",22860,45,0,0],["GRID_DECO",22860,15,0,0],["BLOCK",22890,45,0,0],["GRID_DECO",22890,15,0,0],["SPIKE",22710,15,0,0],["SPIKE",22800,15,0,0],["SPIKE",22890,15,0,0],["DSPIKES2",22887,18,0,0]],"evenements":[["COLOR",8070,15,0,18,16,40,0,600],["COLOR",8070,15,1,70,60,150,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/10.json b/games/numdash/levels/numdash/10.json
new file mode 100644
index 0000000..d5461e8
--- /dev/null
+++ b/games/numdash/levels/numdash/10.json
@@ -0,0 +1 @@
+{"nom":"STATIC STORM","difficulte":5,"etoiles":10,"bpm":128,"depart":0,"couleurs":{"fond":[6,6,10],"sol":[60,60,80],"ligne":[120,255,120],"objets":[255,255,255]},"objets":[["SPIKE",300,15,0,0],["SPIKE",330,15,0,0],["SPIKE",360,15,0,0],["SPIKE",390,15,0,0],["SPIKE",420,15,0,0],["SPIKE",450,15,0,0],["ORB_P",360,75,0,0],["BLOCK",690,15,0,0],["BLOCK",720,15,0,0],["BLOCK",750,15,0,0],["GRID_DECO",780,15,0,0],["BLOCK",780,45,0,0],["GRID_DECO",810,15,0,0],["BLOCK",810,45,0,0],["GRID_DECO",840,15,0,0],["BLOCK",840,45,0,0],["GRID_DECO",870,15,0,0],["GRID_DECO",870,45,0,0],["BLOCK",870,75,0,0],["GRID_DECO",900,15,0,0],["GRID_DECO",900,45,0,0],["BLOCK",900,75,0,0],["GRID_DECO",930,15,0,0],["GRID_DECO",930,45,0,0],["BLOCK",930,75,0,0],["SPIKE",990,15,0,0],["SPIKE",1020,15,0,0],["DSPIKES3",955,14,0,0],["PAD_Y",1230,2,0,0],["GRID_DECO",1380,15,0,0],["GRID_DECO",1380,45,0,0],["GRID_DECO",1380,75,0,0],["BLOCK",1380,105,0,0],["SPIKE",1500,15,0,0],["SPIKE",1620,15,0,0],["SPIKE",1650,15,0,0],["STAR",1774,225,0,0],["STAR",1859,195,0,0],["COIN",1770,40,0,0],["PAD_Y",1860,2,0,0],["GRID_DECO",2010,15,0,0],["GRID_DECO",2010,45,0,0],["GRID_DECO",2010,75,0,0],["BLOCK",2010,105,0,0],["SPIKE",2130,15,0,0],["DSPIKES1",2047,21,0,0],["SPIKE",2250,15,0,0],["DSPIKES3",2370,14,0,0],["BLOCK",2460,15,0,0],["SPIKE",2580,15,0,0],["DSPIKES2",2640,18,0,0],["STAR",2468,255,0,0],["STAR",2492,165,0,0],["SPIKE",2760,15,0,0],["SPIKE",2790,15,0,0],["SPIKE",2820,15,0,0],["SPIKE",2850,15,0,0],["SPIKE",2880,15,0,0],["SPIKE",2910,15,0,0],["ORB_P",2820,75,0,0],["SPIKE",3150,15,0,0],["SPIKE",3180,15,0,0],["DSPIKES1",3286,21,0,0],["STAR",3163,195,0,0],["STAR",3205,165,0,0],["BLOCK",3390,15,0,0],["BLOCK",3420,15,0,0],["BLOCK",3450,15,0,0],["GRID_DECO",3480,15,0,0],["BLOCK",3480,45,0,0],["GRID_DECO",3510,15,0,0],["BLOCK",3510,45,0,0],["GRID_DECO",3540,15,0,0],["BLOCK",3540,45,0,0],["SPIKE",3600,15,0,0],["SPIKE",3630,15,0,0],["STAR",3524,195,0,0],["STAR",3543,225,0,0],["COIN",3750,40,0,0],["SPIKE",3840,15,0,0],["SPIKE",3870,15,0,0],["SPIKE",3900,15,0,0],["SPIKE",3930,15,0,0],["SPIKE",3960,15,0,0],["SPIKE",3990,15,0,0],["ORB_P",3900,75,0,0],["DSPIKES3",4034,14,0,0],["STAR",3856,195,0,0],["SPIKE",4230,15,0,0],["SPIKE",4260,15,0,0],["STAR",4388,255,0,0],["STAR",4439,165,0,0],["ROBOT_PORTAL",4530,45,0,0],["SPIKE",4740,15,0,0],["SPIKE",4770,15,0,0],["SPIKE",4980,15,0,0],["SPIKE",5010,15,0,0],["BLOCK",5220,15,0,0],["BLOCK",5250,15,0,0],["BLOCK",5280,15,0,0],["GRID_DECO",5310,15,0,0],["BLOCK",5310,45,0,0],["GRID_DECO",5340,15,0,0],["BLOCK",5340,45,0,0],["GRID_DECO",5370,15,0,0],["BLOCK",5370,45,0,0],["SPIKE",5430,15,0,0],["SPIKE",5460,15,0,0],["SPIKE",5670,15,0,0],["SPIKE",5700,15,0,0],["SPIKE",5730,15,0,0],["SPIKE",5940,15,0,0],["SPIKE",5970,15,0,0],["SPIKE",6000,15,0,0],["SPIKE",6210,15,0,0],["SPIKE",6240,15,0,0],["BLOCK",6450,15,0,0],["BLOCK",6480,15,0,0],["BLOCK",6510,15,0,0],["GRID_DECO",6540,15,0,0],["BLOCK",6540,45,0,0],["GRID_DECO",6570,15,0,0],["BLOCK",6570,45,0,0],["GRID_DECO",6600,15,0,0],["BLOCK",6600,45,0,0],["SPIKE",6660,15,0,0],["SPIKE",6690,15,0,0],["SPIKE",6900,15,0,0],["SPIKE",6930,15,0,0],["PORTAL_CUBE",7200,45,0,0],["WAVE_PORTAL",7560,45,0,0],["GRID_DECO",7770,15,0,0],["GRID_DECO",7770,45,0,0],["GRID_DECO",7770,75,0,0],["BLOCK",7770,105,0,0],["BLOCK",7770,285,0,0],["GRID_DECO",7950,15,0,0],["BLOCK",7950,45,0,0],["BLOCK",7950,225,0,0],["GRID_DECO",7950,255,0,0],["GRID_DECO",7950,285,0,0],["STAR",8040,135,0,0],["BLOCK",8130,15,0,0],["BLOCK",8130,195,0,0],["GRID_DECO",8130,225,0,0],["GRID_DECO",8130,255,0,0],["GRID_DECO",8130,285,0,0],["GRID_DECO",8310,15,0,0],["GRID_DECO",8310,45,0,0],["BLOCK",8310,75,0,0],["BLOCK",8310,255,0,0],["GRID_DECO",8310,285,0,0],["STAR",8400,165,0,0],["GRID_DECO",8490,15,0,0],["GRID_DECO",8490,45,0,0],["GRID_DECO",8490,75,0,0],["BLOCK",8490,105,0,0],["BLOCK",8490,285,0,0],["GRID_DECO",8670,15,0,0],["GRID_DECO",8670,45,0,0],["GRID_DECO",8670,75,0,0],["BLOCK",8670,105,0,0],["BLOCK",8670,285,0,0],["STAR",8760,195,0,0],["GRID_DECO",8850,15,0,0],["BLOCK",8850,45,0,0],["BLOCK",8850,225,0,0],["GRID_DECO",8850,255,0,0],["GRID_DECO",8850,285,0,0],["GRID_DECO",9030,15,0,0],["GRID_DECO",9030,45,0,0],["BLOCK",9030,75,0,0],["BLOCK",9030,255,0,0],["GRID_DECO",9030,285,0,0],["STAR",9120,165,0,0],["BLOCK",9210,15,0,0],["BLOCK",9210,195,0,0],["GRID_DECO",9210,225,0,0],["GRID_DECO",9210,255,0,0],["GRID_DECO",9210,285,0,0],["COIN",9210,105,0,0],["BLOCK",9390,15,0,0],["BLOCK",9390,195,0,0],["GRID_DECO",9390,225,0,0],["GRID_DECO",9390,255,0,0],["GRID_DECO",9390,285,0,0],["STAR",9480,105,0,0],["BLOCK",9570,15,0,0],["BLOCK",9570,195,0,0],["GRID_DECO",9570,225,0,0],["GRID_DECO",9570,255,0,0],["GRID_DECO",9570,285,0,0],["BLOCK",9750,15,0,0],["BLOCK",9750,195,0,0],["GRID_DECO",9750,225,0,0],["GRID_DECO",9750,255,0,0],["GRID_DECO",9750,285,0,0],["STAR",9840,105,0,0],["BLOCK",9930,15,0,0],["BLOCK",9930,195,0,0],["GRID_DECO",9930,225,0,0],["GRID_DECO",9930,255,0,0],["GRID_DECO",9930,285,0,0],["GRID_DECO",10110,15,0,0],["GRID_DECO",10110,45,0,0],["BLOCK",10110,75,0,0],["BLOCK",10110,255,0,0],["GRID_DECO",10110,285,0,0],["STAR",10200,165,0,0],["GRID_DECO",10290,15,0,0],["BLOCK",10290,45,0,0],["BLOCK",10290,225,0,0],["GRID_DECO",10290,255,0,0],["GRID_DECO",10290,285,0,0],["BLOCK",10470,15,0,0],["BLOCK",10470,195,0,0],["GRID_DECO",10470,225,0,0],["GRID_DECO",10470,255,0,0],["GRID_DECO",10470,285,0,0],["STAR",10560,105,0,0],["PORTAL_CUBE",10770,45,0,0],["SPIDER_PORTAL",11130,45,0,0],["SPIKE",11340,15,0,0],["SPIKE",11370,15,0,0],["SPIKE",11400,15,0,0],["SPIKE",11580,285,0,2],["SPIKE",11610,285,0,2],["SPIKE",11640,285,0,2],["SPIKE",11820,15,0,0],["SPIKE",11850,15,0,0],["SPIKE",11880,15,0,0],["SPIKE",12060,285,0,2],["SPIKE",12090,285,0,2],["SPIKE",12120,285,0,2],["SPIKE",12300,15,0,0],["SPIKE",12330,15,0,0],["SPIKE",12360,15,0,0],["SPIKE",12540,285,0,2],["SPIKE",12570,285,0,2],["SPIKE",12600,285,0,2],["SPIKE",12780,15,0,0],["SPIKE",12810,15,0,0],["SPIKE",12840,15,0,0],["SPIKE",13020,285,0,2],["SPIKE",13050,285,0,2],["SPIKE",13080,285,0,2],["SPIKE",13260,15,0,0],["SPIKE",13290,15,0,0],["SPIKE",13320,15,0,0],["SPIKE",13500,285,0,2],["SPIKE",13530,285,0,2],["SPIKE",13560,285,0,2],["SPIKE",13740,15,0,0],["SPIKE",13770,15,0,0],["SPIKE",13800,15,0,0],["SPIKE",13980,285,0,2],["SPIKE",14010,285,0,2],["SPIKE",14040,285,0,2],["SPIKE",14220,15,0,0],["SPIKE",14250,15,0,0],["SPIKE",14280,15,0,0],["SPIKE",14460,285,0,2],["SPIKE",14490,285,0,2],["SPIKE",14520,285,0,2],["PORTAL_CUBE",14820,45,0,0],["SPIKE",15120,15,0,0],["DSPIKES2",15210,18,0,0],["STAR",15287,225,0,0],["BLOCK",15330,15,0,0],["BLOCK",15420,45,0,0],["GRID_DECO",15420,15,0,0],["BLOCK",15450,45,0,0],["GRID_DECO",15450,15,0,0],["BLOCK",15480,45,0,0],["GRID_DECO",15480,15,0,0],["BLOCK",15510,45,0,0],["GRID_DECO",15510,15,0,0],["BLOCK",15540,45,0,0],["GRID_DECO",15540,15,0,0],["BLOCK",15570,45,0,0],["GRID_DECO",15570,15,0,0],["BLOCK",15600,45,0,0],["GRID_DECO",15600,15,0,0],["SPIKE",15420,15,0,0],["SPIKE",15510,15,0,0],["SPIKE",15600,15,0,0],["DSPIKES3",15556,14,0,0],["SPIKE",15810,15,0,0],["DSPIKES2",15923,18,0,0],["STAR",15850,195,0,0],["STAR",15814,255,0,0],["BLOCK",16020,15,0,0],["BLOCK",16110,45,0,0],["GRID_DECO",16110,15,0,0],["BLOCK",16140,45,0,0],["GRID_DECO",16140,15,0,0],["BLOCK",16170,45,0,0],["GRID_DECO",16170,15,0,0],["BLOCK",16200,45,0,0],["GRID_DECO",16200,15,0,0],["BLOCK",16230,45,0,0],["GRID_DECO",16230,15,0,0],["BLOCK",16260,45,0,0],["GRID_DECO",16260,15,0,0],["BLOCK",16290,45,0,0],["GRID_DECO",16290,15,0,0],["SPIKE",16110,15,0,0],["SPIKE",16200,15,0,0],["SPIKE",16290,15,0,0],["BLOCK",16500,15,0,0],["SPIKE",16620,15,0,0],["DSPIKES1",16633,21,0,0],["PAD_B",16800,2,0,0],["BLOCK",16770,195,0,0],["BLOCK",16800,195,0,0],["BLOCK",16830,195,0,0],["BLOCK",16860,195,0,0],["BLOCK",16890,195,0,0],["BLOCK",16920,195,0,0],["BLOCK",16950,195,0,0],["BLOCK",16980,195,0,0],["BLOCK",17010,195,0,0],["BLOCK",17040,195,0,0],["BLOCK",17070,195,0,0],["BLOCK",17100,195,0,0],["BLOCK",17130,195,0,0],["SPIKE",16920,150,0,2],["PAD_B",17040,178,0,2],["STAR",17000,225,0,0],["STAR",17067,255,0,0],["PAD_Y",17280,2,0,0],["GRID_DECO",17430,15,0,0],["GRID_DECO",17430,45,0,0],["GRID_DECO",17430,75,0,0],["BLOCK",17430,105,0,0],["SPIKE",17550,15,0,0],["STAR",17627,255,0,0],["STAR",17463,225,0,0],["SPIKE",17670,15,0,0],["SPIKE",17700,15,0,0],["SPIKE",17730,15,0,0],["SPIKE",17760,15,0,0],["SPIKE",17790,15,0,0],["SPIKE",17820,15,0,0],["ORB_P",17730,75,0,0],["DSPIKES1",17864,21,0,0],["STAR",17883,225,0,0],["STAR",17710,165,0,0],["SPIKE",18060,15,0,0],["SPIKE",18090,15,0,0],["SPIKE",18120,15,0,0],["STAR",18082,255,0,0],["PAD_B",18330,2,0,0],["BLOCK",18300,195,0,0],["BLOCK",18330,195,0,0],["BLOCK",18360,195,0,0],["BLOCK",18390,195,0,0],["BLOCK",18420,195,0,0],["BLOCK",18450,195,0,0],["BLOCK",18480,195,0,0],["BLOCK",18510,195,0,0],["BLOCK",18540,195,0,0],["BLOCK",18570,195,0,0],["BLOCK",18600,195,0,0],["BLOCK",18630,195,0,0],["BLOCK",18660,195,0,0],["SPIKE",18450,150,0,2],["PAD_B",18570,178,0,2],["DSPIKES2",18549,18,0,0],["STAR",18576,225,0,0],["SPIKE",18810,15,0,0],["SPIKE",18840,15,0,0],["SPIKE",18870,15,0,0],["SPIKE",18900,15,0,0],["SPIKE",18930,15,0,0],["ORB_Y",18840,75,0,0],["STAR",19048,195,0,0],["BLOCK",19170,15,0,0],["BLOCK",19200,15,0,0],["BLOCK",19230,15,0,0],["GRID_DECO",19260,15,0,0],["BLOCK",19260,45,0,0],["GRID_DECO",19290,15,0,0],["BLOCK",19290,45,0,0],["GRID_DECO",19320,15,0,0],["BLOCK",19320,45,0,0],["GRID_DECO",19350,15,0,0],["GRID_DECO",19350,45,0,0],["BLOCK",19350,75,0,0],["GRID_DECO",19380,15,0,0],["GRID_DECO",19380,45,0,0],["BLOCK",19380,75,0,0],["GRID_DECO",19410,15,0,0],["GRID_DECO",19410,45,0,0],["BLOCK",19410,75,0,0],["SPIKE",19470,15,0,0],["SPIKE",19500,15,0,0],["PORTAL_SHIP",19770,45,0,0],["GRID_DECO",19980,15,0,0],["GRID_DECO",19980,45,0,0],["GRID_DECO",19980,75,0,0],["GRID_DECO",19980,105,0,0],["GRID_DECO",19980,135,0,0],["BLOCK",19980,165,0,0],["BLOCK",19980,285,0,0],["SPIKE",19980,195,0,0],["GRID_DECO",20190,15,0,0],["GRID_DECO",20190,45,0,0],["GRID_DECO",20190,75,0,0],["GRID_DECO",20190,105,0,0],["BLOCK",20190,135,0,0],["BLOCK",20190,255,0,0],["GRID_DECO",20190,285,0,0],["STAR",20295,195,0,0],["SPIKE",20190,165,0,0],["GRID_DECO",20400,15,0,0],["GRID_DECO",20400,45,0,0],["GRID_DECO",20400,75,0,0],["BLOCK",20400,105,0,0],["BLOCK",20400,225,0,0],["GRID_DECO",20400,255,0,0],["GRID_DECO",20400,285,0,0],["SPIKE",20400,135,0,0],["GRID_DECO",20610,15,0,0],["GRID_DECO",20610,45,0,0],["GRID_DECO",20610,75,0,0],["GRID_DECO",20610,105,0,0],["GRID_DECO",20610,135,0,0],["BLOCK",20610,165,0,0],["BLOCK",20610,285,0,0],["STAR",20715,225,0,0],["SPIKE",20610,195,0,0],["GRID_DECO",20820,15,0,0],["GRID_DECO",20820,45,0,0],["GRID_DECO",20820,75,0,0],["BLOCK",20820,105,0,0],["BLOCK",20820,225,0,0],["GRID_DECO",20820,255,0,0],["GRID_DECO",20820,285,0,0],["SPIKE",20820,135,0,0],["GRID_DECO",21030,15,0,0],["GRID_DECO",21030,45,0,0],["GRID_DECO",21030,75,0,0],["GRID_DECO",21030,105,0,0],["GRID_DECO",21030,135,0,0],["BLOCK",21030,165,0,0],["BLOCK",21030,285,0,0],["STAR",21135,225,0,0],["SPIKE",21030,195,0,0],["GRID_DECO",21240,15,0,0],["GRID_DECO",21240,45,0,0],["GRID_DECO",21240,75,0,0],["GRID_DECO",21240,105,0,0],["GRID_DECO",21240,135,0,0],["BLOCK",21240,165,0,0],["BLOCK",21240,285,0,0],["SPIKE",21240,195,0,0],["GRID_DECO",21450,15,0,0],["GRID_DECO",21450,45,0,0],["GRID_DECO",21450,75,0,0],["GRID_DECO",21450,105,0,0],["GRID_DECO",21450,135,0,0],["BLOCK",21450,165,0,0],["BLOCK",21450,285,0,0],["STAR",21555,225,0,0],["SPIKE",21450,195,0,0],["GRID_DECO",21660,15,0,0],["GRID_DECO",21660,45,0,0],["GRID_DECO",21660,75,0,0],["GRID_DECO",21660,105,0,0],["GRID_DECO",21660,135,0,0],["BLOCK",21660,165,0,0],["BLOCK",21660,285,0,0],["SPIKE",21660,195,0,0],["GRID_DECO",21870,15,0,0],["GRID_DECO",21870,45,0,0],["GRID_DECO",21870,75,0,0],["GRID_DECO",21870,105,0,0],["GRID_DECO",21870,135,0,0],["BLOCK",21870,165,0,0],["BLOCK",21870,285,0,0],["STAR",21975,225,0,0],["SPIKE",21870,195,0,0],["GRID_DECO",22080,15,0,0],["GRID_DECO",22080,45,0,0],["GRID_DECO",22080,75,0,0],["BLOCK",22080,105,0,0],["BLOCK",22080,225,0,0],["GRID_DECO",22080,255,0,0],["GRID_DECO",22080,285,0,0],["SPIKE",22080,135,0,0],["GRID_DECO",22290,15,0,0],["GRID_DECO",22290,45,0,0],["BLOCK",22290,75,0,0],["BLOCK",22290,195,0,0],["GRID_DECO",22290,225,0,0],["GRID_DECO",22290,255,0,0],["GRID_DECO",22290,285,0,0],["STAR",22395,135,0,0],["SPIKE",22290,105,0,0],["BLOCK",22500,15,0,0],["BLOCK",22500,135,0,0],["GRID_DECO",22500,165,0,0],["GRID_DECO",22500,195,0,0],["GRID_DECO",22500,225,0,0],["GRID_DECO",22500,255,0,0],["GRID_DECO",22500,285,0,0],["SPIKE",22500,45,0,0],["GRID_DECO",22710,15,0,0],["BLOCK",22710,45,0,0],["BLOCK",22710,165,0,0],["GRID_DECO",22710,195,0,0],["GRID_DECO",22710,225,0,0],["GRID_DECO",22710,255,0,0],["GRID_DECO",22710,285,0,0],["STAR",22815,105,0,0],["SPIKE",22710,75,0,0],["BLOCK",22920,15,0,0],["BLOCK",22920,135,0,0],["GRID_DECO",22920,165,0,0],["GRID_DECO",22920,195,0,0],["GRID_DECO",22920,225,0,0],["GRID_DECO",22920,255,0,0],["GRID_DECO",22920,285,0,0],["SPIKE",22920,45,0,0],["GRID_DECO",23130,15,0,0],["GRID_DECO",23130,45,0,0],["BLOCK",23130,75,0,0],["BLOCK",23130,195,0,0],["GRID_DECO",23130,225,0,0],["GRID_DECO",23130,255,0,0],["GRID_DECO",23130,285,0,0],["STAR",23235,135,0,0],["SPIKE",23130,105,0,0],["PORTAL_CUBE",23460,45,0,0],["SPIKE",23760,15,0,0],["SPIKE",23790,15,0,0],["SPIKE",23820,15,0,0],["DSPIKES1",23912,21,0,0],["STAR",23842,255,0,0],["STAR",23841,255,0,0],["BLOCK",24030,15,0,0],["SPIKE",24150,15,0,0],["DSPIKES2",24181,18,0,0],["PAD_Y",24330,2,0,0],["GRID_DECO",24480,15,0,0],["GRID_DECO",24480,45,0,0],["GRID_DECO",24480,75,0,0],["BLOCK",24480,105,0,0],["SPIKE",24600,15,0,0],["DSPIKES1",24527,21,0,0],["STAR",24607,195,0,0],["STAR",24528,225,0,0],["SPIKE",24720,15,0,0],["SPIKE",24750,15,0,0],["SPIKE",24780,15,0,0],["SPIKE",24810,15,0,0],["SPIKE",24840,15,0,0],["SPIKE",24870,15,0,0],["ORB_P",24780,75,0,0],["DSPIKES2",24889,18,0,0],["STAR",25099,165,0,0],["STAR",24955,255,0,0],["BLOCK",25110,15,0,0],["BLOCK",25200,45,0,0],["GRID_DECO",25200,15,0,0],["BLOCK",25230,45,0,0],["GRID_DECO",25230,15,0,0],["BLOCK",25260,45,0,0],["GRID_DECO",25260,15,0,0],["BLOCK",25290,45,0,0],["GRID_DECO",25290,15,0,0],["BLOCK",25320,45,0,0],["GRID_DECO",25320,15,0,0],["BLOCK",25350,45,0,0],["GRID_DECO",25350,15,0,0],["BLOCK",25380,45,0,0],["GRID_DECO",25380,15,0,0],["SPIKE",25200,15,0,0],["SPIKE",25290,15,0,0],["SPIKE",25380,15,0,0],["DSPIKES1",25356,21,0,0],["BLOCK",25590,15,0,0],["BLOCK",25680,45,0,0],["GRID_DECO",25680,15,0,0],["BLOCK",25710,45,0,0],["GRID_DECO",25710,15,0,0],["BLOCK",25740,45,0,0],["GRID_DECO",25740,15,0,0],["BLOCK",25770,45,0,0],["GRID_DECO",25770,15,0,0],["BLOCK",25800,45,0,0],["GRID_DECO",25800,15,0,0],["SPIKE",25680,15,0,0],["SPIKE",25770,15,0,0],["STAR",25696,255,0,0],["STAR",25992,165,0,0],["SPIKE",26010,15,0,0],["SPIKE",26040,15,0,0],["SPIKE",26070,15,0,0],["BLOCK",26280,15,0,0],["BLOCK",26370,45,0,0],["GRID_DECO",26370,15,0,0],["BLOCK",26400,45,0,0],["GRID_DECO",26400,15,0,0],["BLOCK",26430,45,0,0],["GRID_DECO",26430,15,0,0],["BLOCK",26460,45,0,0],["GRID_DECO",26460,15,0,0],["BLOCK",26490,45,0,0],["GRID_DECO",26490,15,0,0],["SPIKE",26370,15,0,0],["SPIKE",26460,15,0,0],["DSPIKES2",26509,18,0,0],["STAR",26697,195,0,0],["STAR",26655,225,0,0],["PAD_Y",26700,2,0,0],["GRID_DECO",26850,15,0,0],["GRID_DECO",26850,45,0,0],["GRID_DECO",26850,75,0,0],["BLOCK",26850,105,0,0],["SPIKE",26970,15,0,0]],"evenements":[["COLOR",11070,15,0,6,6,10,0,600],["COLOR",11070,15,1,60,60,80,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/11.json b/games/numdash/levels/numdash/11.json
new file mode 100644
index 0000000..4c0f629
--- /dev/null
+++ b/games/numdash/levels/numdash/11.json
@@ -0,0 +1 @@
+{"nom":"MAGMA CORE","difficulte":6,"etoiles":12,"bpm":132,"depart":0,"couleurs":{"fond":[50,8,0],"sol":[170,50,0],"ligne":[255,220,120],"objets":[255,255,255]},"objets":[["SPEED_FAST",300,45,0,0],["BLOCK",420,15,0,0],["BLOCK",450,15,0,0],["BLOCK",480,15,0,0],["GRID_DECO",510,15,0,0],["BLOCK",510,45,0,0],["GRID_DECO",540,15,0,0],["BLOCK",540,45,0,0],["GRID_DECO",570,15,0,0],["BLOCK",570,45,0,0],["SPIKE",630,15,0,0],["SPIKE",660,15,0,0],["DSPIKES1",624,21,0,0],["STAR",458,195,0,0],["SPIKE",870,15,0,0],["SPIKE",900,15,0,0],["STAR",1028,165,0,0],["SPIKE",1110,15,0,0],["SPIKE",1140,15,0,0],["SPIKE",1170,15,0,0],["SPIKE",1200,15,0,0],["SPIKE",1230,15,0,0],["ORB_Y",1140,75,0,0],["DSPIKES1",1271,21,0,0],["STAR",1421,225,0,0],["BLOCK",1470,15,0,0],["BLOCK",1560,45,0,0],["GRID_DECO",1560,15,0,0],["BLOCK",1590,45,0,0],["GRID_DECO",1590,15,0,0],["BLOCK",1620,45,0,0],["GRID_DECO",1620,15,0,0],["BLOCK",1650,45,0,0],["GRID_DECO",1650,15,0,0],["BLOCK",1680,45,0,0],["GRID_DECO",1680,15,0,0],["SPIKE",1560,15,0,0],["SPIKE",1650,15,0,0],["COIN",1620,110,0,0],["DSPIKES2",1710,18,0,0],["STAR",1716,225,0,0],["STAR",1843,165,0,0],["COIN",1800,40,0,0],["SPIKE",1890,15,0,0],["SPIKE",1920,15,0,0],["SPIKE",1950,15,0,0],["SPIKE",1980,15,0,0],["SPIKE",2010,15,0,0],["ORB_Y",1920,75,0,0],["DSPIKES2",2067,18,0,0],["SPIKE",2250,15,0,0],["SPIKE",2280,15,0,0],["SPIKE",2310,15,0,0],["DSPIKES3",2370,14,0,0],["SPIKE",2520,15,0,0],["SPIKE",2550,15,0,0],["SPIKE",2580,15,0,0],["SPIKE",2610,15,0,0],["SPIKE",2640,15,0,0],["SPIKE",2670,15,0,0],["ORB_P",2580,75,0,0],["DSPIKES2",2735,18,0,0],["STAR",2598,255,0,0],["STAR",2877,195,0,0],["SPIKE",2910,15,0,0],["SPIKE",2940,15,0,0],["SPIKE",2970,15,0,0],["STAR",3048,195,0,0],["STAR",3084,225,0,0],["BLOCK",3180,15,0,0],["SPIKE",3300,15,0,0],["DSPIKES3",3347,14,0,0],["STAR",3317,225,0,0],["STAR",3214,255,0,0],["PAD_B",3480,2,0,0],["BLOCK",3450,195,0,0],["BLOCK",3480,195,0,0],["BLOCK",3510,195,0,0],["BLOCK",3540,195,0,0],["BLOCK",3570,195,0,0],["BLOCK",3600,195,0,0],["BLOCK",3630,195,0,0],["BLOCK",3660,195,0,0],["BLOCK",3690,195,0,0],["BLOCK",3720,195,0,0],["BLOCK",3750,195,0,0],["BLOCK",3780,195,0,0],["BLOCK",3810,195,0,0],["SPIKE",3600,150,0,2],["PAD_B",3720,178,0,2],["DSPIKES2",3726,18,0,0],["STAR",3624,195,0,0],["COIN",3870,40,0,0],["BLOCK",3960,15,0,0],["BLOCK",3990,15,0,0],["BLOCK",4020,15,0,0],["GRID_DECO",4050,15,0,0],["BLOCK",4050,45,0,0],["GRID_DECO",4080,15,0,0],["BLOCK",4080,45,0,0],["GRID_DECO",4110,15,0,0],["BLOCK",4110,45,0,0],["SPIKE",4170,15,0,0],["SPIKE",4200,15,0,0],["SPIKE",4410,15,0,0],["SPIKE",4440,15,0,0],["SPIKE",4470,15,0,0],["SPIKE",4500,15,0,0],["SPIKE",4530,15,0,0],["SPIKE",4560,15,0,0],["ORB_P",4470,75,0,0],["STAR",4616,225,0,0],["STAR",4614,255,0,0],["SPIKE",4800,15,0,0],["SPIKE",4830,15,0,0],["SPIKE",4860,15,0,0],["DSPIKES3",4935,14,0,0],["STAR",5033,165,0,0],["STAR",4812,225,0,0],["BLOCK",5070,15,0,0],["BLOCK",5160,45,0,0],["GRID_DECO",5160,15,0,0],["BLOCK",5190,45,0,0],["GRID_DECO",5190,15,0,0],["BLOCK",5220,45,0,0],["GRID_DECO",5220,15,0,0],["BLOCK",5250,45,0,0],["GRID_DECO",5250,15,0,0],["BLOCK",5280,45,0,0],["GRID_DECO",5280,15,0,0],["SPIKE",5160,15,0,0],["SPIKE",5250,15,0,0],["DSPIKES2",5281,18,0,0],["PAD_B",5490,2,0,0],["BLOCK",5460,195,0,0],["BLOCK",5490,195,0,0],["BLOCK",5520,195,0,0],["BLOCK",5550,195,0,0],["BLOCK",5580,195,0,0],["BLOCK",5610,195,0,0],["BLOCK",5640,195,0,0],["BLOCK",5670,195,0,0],["BLOCK",5700,195,0,0],["BLOCK",5730,195,0,0],["BLOCK",5760,195,0,0],["BLOCK",5790,195,0,0],["BLOCK",5820,195,0,0],["SPIKE",5610,150,0,2],["PAD_B",5730,178,0,2],["STAR",5628,165,0,0],["STAR",5604,225,0,0],["BLOCK",5970,15,0,0],["BLOCK",6060,45,0,0],["GRID_DECO",6060,15,0,0],["BLOCK",6090,45,0,0],["GRID_DECO",6090,15,0,0],["BLOCK",6120,45,0,0],["GRID_DECO",6120,15,0,0],["BLOCK",6150,45,0,0],["GRID_DECO",6150,15,0,0],["BLOCK",6180,45,0,0],["GRID_DECO",6180,15,0,0],["SPIKE",6060,15,0,0],["SPIKE",6150,15,0,0],["STAR",6042,225,0,0],["PORTAL_SHIP",6450,45,0,0],["GRID_DECO",6660,15,0,0],["GRID_DECO",6660,45,0,0],["GRID_DECO",6660,75,0,0],["BLOCK",6660,105,0,0],["BLOCK",6660,225,0,0],["GRID_DECO",6660,255,0,0],["GRID_DECO",6660,285,0,0],["SPIKE",6660,135,0,0],["GRID_DECO",6870,15,0,0],["GRID_DECO",6870,45,0,0],["BLOCK",6870,75,0,0],["BLOCK",6870,195,0,0],["GRID_DECO",6870,225,0,0],["GRID_DECO",6870,255,0,0],["GRID_DECO",6870,285,0,0],["STAR",6975,135,0,0],["SPIKE",6870,105,0,0],["BLOCK",7080,15,0,0],["BLOCK",7080,135,0,0],["GRID_DECO",7080,165,0,0],["GRID_DECO",7080,195,0,0],["GRID_DECO",7080,225,0,0],["GRID_DECO",7080,255,0,0],["GRID_DECO",7080,285,0,0],["SPIKE",7080,45,0,0],["BLOCK",7290,15,0,0],["BLOCK",7290,135,0,0],["GRID_DECO",7290,165,0,0],["GRID_DECO",7290,195,0,0],["GRID_DECO",7290,225,0,0],["GRID_DECO",7290,255,0,0],["GRID_DECO",7290,285,0,0],["STAR",7395,75,0,0],["SPIKE",7290,45,0,0],["GRID_DECO",7500,15,0,0],["BLOCK",7500,45,0,0],["BLOCK",7500,165,0,0],["GRID_DECO",7500,195,0,0],["GRID_DECO",7500,225,0,0],["GRID_DECO",7500,255,0,0],["GRID_DECO",7500,285,0,0],["SPIKE",7500,75,0,0],["GRID_DECO",7710,15,0,0],["GRID_DECO",7710,45,0,0],["GRID_DECO",7710,75,0,0],["BLOCK",7710,105,0,0],["BLOCK",7710,225,0,0],["GRID_DECO",7710,255,0,0],["GRID_DECO",7710,285,0,0],["STAR",7815,165,0,0],["SPIKE",7710,135,0,0],["GRID_DECO",7920,15,0,0],["GRID_DECO",7920,45,0,0],["GRID_DECO",7920,75,0,0],["GRID_DECO",7920,105,0,0],["BLOCK",7920,135,0,0],["BLOCK",7920,255,0,0],["GRID_DECO",7920,285,0,0],["SPIKE",7920,165,0,0],["GRID_DECO",8130,15,0,0],["GRID_DECO",8130,45,0,0],["BLOCK",8130,75,0,0],["BLOCK",8130,195,0,0],["GRID_DECO",8130,225,0,0],["GRID_DECO",8130,255,0,0],["GRID_DECO",8130,285,0,0],["STAR",8235,135,0,0],["SPIKE",8130,105,0,0],["GRID_DECO",8340,15,0,0],["GRID_DECO",8340,45,0,0],["GRID_DECO",8340,75,0,0],["BLOCK",8340,105,0,0],["BLOCK",8340,225,0,0],["GRID_DECO",8340,255,0,0],["GRID_DECO",8340,285,0,0],["SPIKE",8340,135,0,0],["GRID_DECO",8550,15,0,0],["GRID_DECO",8550,45,0,0],["GRID_DECO",8550,75,0,0],["GRID_DECO",8550,105,0,0],["GRID_DECO",8550,135,0,0],["BLOCK",8550,165,0,0],["BLOCK",8550,285,0,0],["STAR",8655,225,0,0],["SPIKE",8550,195,0,0],["GRID_DECO",8760,15,0,0],["GRID_DECO",8760,45,0,0],["GRID_DECO",8760,75,0,0],["GRID_DECO",8760,105,0,0],["GRID_DECO",8760,135,0,0],["BLOCK",8760,165,0,0],["BLOCK",8760,285,0,0],["SPIKE",8760,195,0,0],["GRID_DECO",8970,15,0,0],["GRID_DECO",8970,45,0,0],["GRID_DECO",8970,75,0,0],["GRID_DECO",8970,105,0,0],["BLOCK",8970,135,0,0],["BLOCK",8970,255,0,0],["GRID_DECO",8970,285,0,0],["STAR",9075,195,0,0],["SPIKE",8970,165,0,0],["GRID_DECO",9180,15,0,0],["GRID_DECO",9180,45,0,0],["GRID_DECO",9180,75,0,0],["GRID_DECO",9180,105,0,0],["GRID_DECO",9180,135,0,0],["BLOCK",9180,165,0,0],["BLOCK",9180,285,0,0],["SPIKE",9180,195,0,0],["GRID_DECO",9390,15,0,0],["GRID_DECO",9390,45,0,0],["GRID_DECO",9390,75,0,0],["GRID_DECO",9390,105,0,0],["GRID_DECO",9390,135,0,0],["BLOCK",9390,165,0,0],["BLOCK",9390,285,0,0],["STAR",9495,225,0,0],["SPIKE",9390,195,0,0],["GRID_DECO",9600,15,0,0],["GRID_DECO",9600,45,0,0],["GRID_DECO",9600,75,0,0],["GRID_DECO",9600,105,0,0],["GRID_DECO",9600,135,0,0],["BLOCK",9600,165,0,0],["BLOCK",9600,285,0,0],["SPIKE",9600,195,0,0],["GRID_DECO",9810,15,0,0],["GRID_DECO",9810,45,0,0],["GRID_DECO",9810,75,0,0],["BLOCK",9810,105,0,0],["BLOCK",9810,225,0,0],["GRID_DECO",9810,255,0,0],["GRID_DECO",9810,285,0,0],["STAR",9915,165,0,0],["SPIKE",9810,135,0,0],["PORTAL_CUBE",10140,45,0,0],["PORTAL_BALL",10500,45,0,0],["SPIKE",10710,15,0,0],["SPIKE",10740,15,0,0],["SPIKE",10890,225,0,2],["SPIKE",10920,225,0,2],["SPIKE",11070,15,0,0],["SPIKE",11100,15,0,0],["SPIKE",11250,225,0,2],["SPIKE",11280,225,0,2],["SPIKE",11430,15,0,0],["SPIKE",11460,15,0,0],["SPIKE",11610,225,0,2],["SPIKE",11640,225,0,2],["SPIKE",11790,15,0,0],["SPIKE",11820,15,0,0],["SPIKE",11970,225,0,2],["SPIKE",12000,225,0,2],["SPIKE",12150,15,0,0],["SPIKE",12180,15,0,0],["SPIKE",12330,225,0,2],["SPIKE",12360,225,0,2],["SPIKE",12510,15,0,0],["SPIKE",12540,15,0,0],["SPIKE",12690,225,0,2],["SPIKE",12720,225,0,2],["SPIKE",12870,15,0,0],["SPIKE",12900,15,0,0],["SPIKE",13050,225,0,2],["SPIKE",13080,225,0,2],["SPIKE",13230,15,0,0],["SPIKE",13260,15,0,0],["SPIKE",13410,225,0,2],["SPIKE",13440,225,0,2],["PORTAL_CUBE",13710,45,0,0],["UFO_PORTAL",14070,45,0,0],["GRID_DECO",14280,15,0,0],["GRID_DECO",14280,45,0,0],["GRID_DECO",14280,75,0,0],["GRID_DECO",14280,105,0,0],["GRID_DECO",14280,135,0,0],["BLOCK",14280,165,0,0],["BLOCK",14280,285,0,0],["GRID_DECO",14460,15,0,0],["GRID_DECO",14460,45,0,0],["GRID_DECO",14460,75,0,0],["GRID_DECO",14460,105,0,0],["GRID_DECO",14460,135,0,0],["BLOCK",14460,165,0,0],["BLOCK",14460,285,0,0],["STAR",14550,225,0,0],["GRID_DECO",14640,15,0,0],["GRID_DECO",14640,45,0,0],["GRID_DECO",14640,75,0,0],["GRID_DECO",14640,105,0,0],["GRID_DECO",14640,135,0,0],["BLOCK",14640,165,0,0],["BLOCK",14640,285,0,0],["GRID_DECO",14820,15,0,0],["GRID_DECO",14820,45,0,0],["GRID_DECO",14820,75,0,0],["GRID_DECO",14820,105,0,0],["GRID_DECO",14820,135,0,0],["BLOCK",14820,165,0,0],["BLOCK",14820,285,0,0],["STAR",14910,225,0,0],["GRID_DECO",15000,15,0,0],["GRID_DECO",15000,45,0,0],["GRID_DECO",15000,75,0,0],["GRID_DECO",15000,105,0,0],["BLOCK",15000,135,0,0],["BLOCK",15000,255,0,0],["GRID_DECO",15000,285,0,0],["GRID_DECO",15180,15,0,0],["GRID_DECO",15180,45,0,0],["GRID_DECO",15180,75,0,0],["GRID_DECO",15180,105,0,0],["GRID_DECO",15180,135,0,0],["BLOCK",15180,165,0,0],["BLOCK",15180,285,0,0],["STAR",15270,225,0,0],["GRID_DECO",15360,15,0,0],["GRID_DECO",15360,45,0,0],["GRID_DECO",15360,75,0,0],["GRID_DECO",15360,105,0,0],["BLOCK",15360,135,0,0],["BLOCK",15360,255,0,0],["GRID_DECO",15360,285,0,0],["GRID_DECO",15540,15,0,0],["GRID_DECO",15540,45,0,0],["BLOCK",15540,75,0,0],["BLOCK",15540,195,0,0],["GRID_DECO",15540,225,0,0],["GRID_DECO",15540,255,0,0],["GRID_DECO",15540,285,0,0],["STAR",15630,135,0,0],["GRID_DECO",15720,15,0,0],["GRID_DECO",15720,45,0,0],["GRID_DECO",15720,75,0,0],["BLOCK",15720,105,0,0],["BLOCK",15720,225,0,0],["GRID_DECO",15720,255,0,0],["GRID_DECO",15720,285,0,0],["GRID_DECO",15900,15,0,0],["GRID_DECO",15900,45,0,0],["GRID_DECO",15900,75,0,0],["GRID_DECO",15900,105,0,0],["BLOCK",15900,135,0,0],["BLOCK",15900,255,0,0],["GRID_DECO",15900,285,0,0],["STAR",15990,195,0,0],["GRID_DECO",16080,15,0,0],["GRID_DECO",16080,45,0,0],["GRID_DECO",16080,75,0,0],["GRID_DECO",16080,105,0,0],["GRID_DECO",16080,135,0,0],["BLOCK",16080,165,0,0],["BLOCK",16080,285,0,0],["GRID_DECO",16260,15,0,0],["GRID_DECO",16260,45,0,0],["GRID_DECO",16260,75,0,0],["BLOCK",16260,105,0,0],["BLOCK",16260,225,0,0],["GRID_DECO",16260,255,0,0],["GRID_DECO",16260,285,0,0],["STAR",16350,165,0,0],["GRID_DECO",16440,15,0,0],["GRID_DECO",16440,45,0,0],["GRID_DECO",16440,75,0,0],["GRID_DECO",16440,105,0,0],["BLOCK",16440,135,0,0],["BLOCK",16440,255,0,0],["GRID_DECO",16440,285,0,0],["GRID_DECO",16620,15,0,0],["GRID_DECO",16620,45,0,0],["BLOCK",16620,75,0,0],["BLOCK",16620,195,0,0],["GRID_DECO",16620,225,0,0],["GRID_DECO",16620,255,0,0],["GRID_DECO",16620,285,0,0],["STAR",16710,135,0,0],["GRID_DECO",16800,15,0,0],["GRID_DECO",16800,45,0,0],["GRID_DECO",16800,75,0,0],["GRID_DECO",16800,105,0,0],["BLOCK",16800,135,0,0],["BLOCK",16800,255,0,0],["GRID_DECO",16800,285,0,0],["GRID_DECO",16980,15,0,0],["GRID_DECO",16980,45,0,0],["GRID_DECO",16980,75,0,0],["GRID_DECO",16980,105,0,0],["GRID_DECO",16980,135,0,0],["BLOCK",16980,165,0,0],["BLOCK",16980,285,0,0],["STAR",17070,225,0,0],["PORTAL_CUBE",17280,45,0,0],["WAVE_PORTAL",17640,45,0,0],["GRID_DECO",17850,15,0,0],["GRID_DECO",17850,45,0,0],["BLOCK",17850,75,0,0],["BLOCK",17850,255,0,0],["GRID_DECO",17850,285,0,0],["GRID_DECO",18030,15,0,0],["GRID_DECO",18030,45,0,0],["GRID_DECO",18030,75,0,0],["BLOCK",18030,105,0,0],["BLOCK",18030,285,0,0],["STAR",18120,195,0,0],["GRID_DECO",18210,15,0,0],["GRID_DECO",18210,45,0,0],["GRID_DECO",18210,75,0,0],["BLOCK",18210,105,0,0],["BLOCK",18210,285,0,0],["GRID_DECO",18390,15,0,0],["BLOCK",18390,45,0,0],["BLOCK",18390,225,0,0],["GRID_DECO",18390,255,0,0],["GRID_DECO",18390,285,0,0],["STAR",18480,135,0,0],["BLOCK",18570,15,0,0],["BLOCK",18570,195,0,0],["GRID_DECO",18570,225,0,0],["GRID_DECO",18570,255,0,0],["GRID_DECO",18570,285,0,0],["BLOCK",18750,15,0,0],["BLOCK",18750,195,0,0],["GRID_DECO",18750,225,0,0],["GRID_DECO",18750,255,0,0],["GRID_DECO",18750,285,0,0],["STAR",18840,105,0,0],["BLOCK",18930,15,0,0],["BLOCK",18930,195,0,0],["GRID_DECO",18930,225,0,0],["GRID_DECO",18930,255,0,0],["GRID_DECO",18930,285,0,0],["BLOCK",19110,15,0,0],["BLOCK",19110,195,0,0],["GRID_DECO",19110,225,0,0],["GRID_DECO",19110,255,0,0],["GRID_DECO",19110,285,0,0],["STAR",19200,105,0,0],["GRID_DECO",19290,15,0,0],["GRID_DECO",19290,45,0,0],["BLOCK",19290,75,0,0],["BLOCK",19290,255,0,0],["GRID_DECO",19290,285,0,0],["GRID_DECO",19470,15,0,0],["GRID_DECO",19470,45,0,0],["GRID_DECO",19470,75,0,0],["BLOCK",19470,105,0,0],["BLOCK",19470,285,0,0],["STAR",19560,195,0,0],["GRID_DECO",19650,15,0,0],["GRID_DECO",19650,45,0,0],["GRID_DECO",19650,75,0,0],["BLOCK",19650,105,0,0],["BLOCK",19650,285,0,0],["GRID_DECO",19830,15,0,0],["GRID_DECO",19830,45,0,0],["GRID_DECO",19830,75,0,0],["BLOCK",19830,105,0,0],["BLOCK",19830,285,0,0],["STAR",19920,195,0,0],["GRID_DECO",20010,15,0,0],["BLOCK",20010,45,0,0],["BLOCK",20010,225,0,0],["GRID_DECO",20010,255,0,0],["GRID_DECO",20010,285,0,0],["GRID_DECO",20190,15,0,0],["GRID_DECO",20190,45,0,0],["GRID_DECO",20190,75,0,0],["BLOCK",20190,105,0,0],["BLOCK",20190,285,0,0],["STAR",20280,195,0,0],["GRID_DECO",20370,15,0,0],["GRID_DECO",20370,45,0,0],["GRID_DECO",20370,75,0,0],["BLOCK",20370,105,0,0],["BLOCK",20370,285,0,0],["GRID_DECO",20550,15,0,0],["BLOCK",20550,45,0,0],["BLOCK",20550,225,0,0],["GRID_DECO",20550,255,0,0],["GRID_DECO",20550,285,0,0],["STAR",20640,135,0,0],["PORTAL_CUBE",20850,45,0,0],["SPIKE",21150,15,0,0],["SPIKE",21180,15,0,0],["SPIKE",21210,15,0,0],["SPIKE",21240,15,0,0],["SPIKE",21270,15,0,0],["SPIKE",21300,15,0,0],["ORB_P",21210,75,0,0],["DSPIKES3",21346,14,0,0],["STAR",21517,195,0,0],["STAR",21312,225,0,0],["BLOCK",21540,15,0,0],["BLOCK",21630,45,0,0],["GRID_DECO",21630,15,0,0],["BLOCK",21660,45,0,0],["GRID_DECO",21660,15,0,0],["BLOCK",21690,45,0,0],["GRID_DECO",21690,15,0,0],["BLOCK",21720,45,0,0],["GRID_DECO",21720,15,0,0],["BLOCK",21750,45,0,0],["GRID_DECO",21750,15,0,0],["BLOCK",21780,45,0,0],["GRID_DECO",21780,15,0,0],["BLOCK",21810,45,0,0],["GRID_DECO",21810,15,0,0],["SPIKE",21630,15,0,0],["SPIKE",21720,15,0,0],["SPIKE",21810,15,0,0],["DSPIKES2",21763,18,0,0],["STAR",21625,165,0,0],["SPIKE",22020,15,0,0],["SPIKE",22050,15,0,0],["SPIKE",22080,15,0,0],["SPIKE",22110,15,0,0],["SPIKE",22140,15,0,0],["ORB_Y",22050,75,0,0],["STAR",22296,165,0,0],["STAR",22320,165,0,0],["SPIKE",22380,15,0,0],["DSPIKES2",22509,18,0,0],["STAR",22526,225,0,0],["SPIKE",22590,15,0,0],["SPIKE",22620,15,0,0],["SPIKE",22650,15,0,0],["SPIKE",22680,15,0,0],["SPIKE",22710,15,0,0],["ORB_Y",22620,75,0,0],["DSPIKES1",22758,21,0,0],["STAR",22878,165,0,0],["STAR",22773,165,0,0],["BLOCK",22950,15,0,0],["BLOCK",23040,45,0,0],["GRID_DECO",23040,15,0,0],["BLOCK",23070,45,0,0],["GRID_DECO",23070,15,0,0],["BLOCK",23100,45,0,0],["GRID_DECO",23100,15,0,0],["BLOCK",23130,45,0,0],["GRID_DECO",23130,15,0,0],["BLOCK",23160,45,0,0],["GRID_DECO",23160,15,0,0],["SPIKE",23040,15,0,0],["SPIKE",23130,15,0,0],["DSPIKES3",23147,14,0,0],["STAR",23249,165,0,0],["BLOCK",23370,15,0,0],["BLOCK",23460,45,0,0],["GRID_DECO",23460,15,0,0],["BLOCK",23490,45,0,0],["GRID_DECO",23490,15,0,0],["BLOCK",23520,45,0,0],["GRID_DECO",23520,15,0,0],["BLOCK",23550,45,0,0],["GRID_DECO",23550,15,0,0],["BLOCK",23580,45,0,0],["GRID_DECO",23580,15,0,0],["BLOCK",23610,45,0,0],["GRID_DECO",23610,15,0,0],["BLOCK",23640,45,0,0],["GRID_DECO",23640,15,0,0],["SPIKE",23460,15,0,0],["SPIKE",23550,15,0,0],["SPIKE",23640,15,0,0],["BLOCK",23850,15,0,0],["SPIKE",23970,15,0,0],["DSPIKES2",23989,18,0,0],["SPIKE",24150,15,0,0],["SPIKE",24180,15,0,0],["SPIKE",24210,15,0,0],["STAR",24309,225,0,0],["STAR",24246,255,0,0],["BLOCK",24420,15,0,0],["BLOCK",24510,45,0,0],["GRID_DECO",24510,15,0,0],["BLOCK",24540,45,0,0],["GRID_DECO",24540,15,0,0],["BLOCK",24570,45,0,0],["GRID_DECO",24570,15,0,0],["BLOCK",24600,45,0,0],["GRID_DECO",24600,15,0,0],["BLOCK",24630,45,0,0],["GRID_DECO",24630,15,0,0],["SPIKE",24510,15,0,0],["SPIKE",24600,15,0,0],["SPIKE",24840,15,0,0],["SPIKE",24870,15,0,0],["DSPIKES2",24986,18,0,0],["STAR",25067,165,0,0],["BLOCK",25080,15,0,0],["BLOCK",25110,15,0,0],["BLOCK",25140,15,0,0],["GRID_DECO",25170,15,0,0],["BLOCK",25170,45,0,0],["GRID_DECO",25200,15,0,0],["BLOCK",25200,45,0,0],["GRID_DECO",25230,15,0,0],["BLOCK",25230,45,0,0],["GRID_DECO",25260,15,0,0],["GRID_DECO",25260,45,0,0],["BLOCK",25260,75,0,0],["GRID_DECO",25290,15,0,0],["GRID_DECO",25290,45,0,0],["BLOCK",25290,75,0,0],["GRID_DECO",25320,15,0,0],["GRID_DECO",25320,45,0,0],["BLOCK",25320,75,0,0],["SPIKE",25380,15,0,0],["SPIKE",25410,15,0,0],["DSPIKES2",25354,18,0,0],["STAR",25439,195,0,0]],"evenements":[["COLOR",14010,15,0,50,8,0,0,600],["COLOR",14010,15,1,170,50,0,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/levels/numdash/12.json b/games/numdash/levels/numdash/12.json
new file mode 100644
index 0000000..9a813e4
--- /dev/null
+++ b/games/numdash/levels/numdash/12.json
@@ -0,0 +1 @@
+{"nom":"FINAL SIGNAL","difficulte":6,"etoiles":14,"bpm":136,"depart":0,"couleurs":{"fond":[0,20,30],"sol":[0,90,90],"ligne":[255,90,200],"objets":[255,255,255]},"objets":[["SPIKE",300,15,0,0],["SPIKE",330,15,0,0],["SPIKE",360,15,0,0],["STAR",460,195,0,0],["PAD_B",570,2,0,0],["BLOCK",540,195,0,0],["BLOCK",570,195,0,0],["BLOCK",600,195,0,0],["BLOCK",630,195,0,0],["BLOCK",660,195,0,0],["BLOCK",690,195,0,0],["BLOCK",720,195,0,0],["BLOCK",750,195,0,0],["BLOCK",780,195,0,0],["BLOCK",810,195,0,0],["BLOCK",840,195,0,0],["BLOCK",870,195,0,0],["BLOCK",900,195,0,0],["SPIKE",690,150,0,2],["PAD_B",810,178,0,2],["STAR",638,255,0,0],["STAR",705,165,0,0],["SPIKE",1050,15,0,0],["DSPIKES1",1166,21,0,0],["STAR",1075,255,0,0],["STAR",1060,225,0,0],["SPIKE",1260,15,0,0],["SPIKE",1290,15,0,0],["SPIKE",1320,15,0,0],["SPIKE",1350,15,0,0],["SPIKE",1380,15,0,0],["ORB_Y",1290,75,0,0],["DSPIKES2",1413,18,0,0],["COIN",1530,40,0,0],["BLOCK",1620,15,0,0],["BLOCK",1650,15,0,0],["BLOCK",1680,15,0,0],["GRID_DECO",1710,15,0,0],["BLOCK",1710,45,0,0],["GRID_DECO",1740,15,0,0],["BLOCK",1740,45,0,0],["GRID_DECO",1770,15,0,0],["BLOCK",1770,45,0,0],["GRID_DECO",1800,15,0,0],["GRID_DECO",1800,45,0,0],["BLOCK",1800,75,0,0],["GRID_DECO",1830,15,0,0],["GRID_DECO",1830,45,0,0],["BLOCK",1830,75,0,0],["GRID_DECO",1860,15,0,0],["GRID_DECO",1860,45,0,0],["BLOCK",1860,75,0,0],["SPIKE",1920,15,0,0],["SPIKE",1950,15,0,0],["DSPIKES3",1892,14,0,0],["STAR",1637,255,0,0],["STAR",1855,165,0,0],["BLOCK",2160,15,0,0],["SPIKE",2280,15,0,0],["SPIKE",2460,15,0,0],["SPIKE",2490,15,0,0],["SPIKE",2520,15,0,0],["SPIKE",2550,15,0,0],["SPIKE",2580,15,0,0],["SPIKE",2610,15,0,0],["ORB_P",2520,75,0,0],["DSPIKES1",2647,21,0,0],["BLOCK",2850,15,0,0],["BLOCK",2940,45,0,0],["GRID_DECO",2940,15,0,0],["BLOCK",2970,45,0,0],["GRID_DECO",2970,15,0,0],["BLOCK",3000,45,0,0],["GRID_DECO",3000,15,0,0],["BLOCK",3030,45,0,0],["GRID_DECO",3030,15,0,0],["BLOCK",3060,45,0,0],["GRID_DECO",3060,15,0,0],["SPIKE",2940,15,0,0],["SPIKE",3030,15,0,0],["COIN",3000,110,0,0],["DSPIKES2",3039,18,0,0],["STAR",3088,195,0,0],["SPIKE",3270,15,0,0],["SPIKE",3300,15,0,0],["SPIKE",3330,15,0,0],["DSPIKES3",3434,14,0,0],["STAR",3276,195,0,0],["STAR",3367,255,0,0],["SPIKE",3540,15,0,0],["SPIKE",3570,15,0,0],["SPIKE",3600,15,0,0],["SPIKE",3630,15,0,0],["SPIKE",3660,15,0,0],["SPIKE",3690,15,0,0],["ORB_P",3600,75,0,0],["DSPIKES3",3741,14,0,0],["STAR",3857,195,0,0],["STAR",3749,165,0,0],["COIN",3840,40,0,0],["BLOCK",3930,15,0,0],["SPIKE",4050,15,0,0],["DSPIKES2",4069,18,0,0],["STAR",4101,225,0,0],["SPIKE",4230,15,0,0],["SPIKE",4260,15,0,0],["SPIKE",4290,15,0,0],["DSPIKES1",4340,21,0,0],["STAR",4472,165,0,0],["SWING_PORTAL",4560,45,0,0],["GRID_DECO",4770,15,0,0],["GRID_DECO",4770,45,0,0],["GRID_DECO",4770,75,0,0],["BLOCK",4770,105,0,0],["BLOCK",4770,285,0,0],["GRID_DECO",4980,15,0,0],["BLOCK",4980,45,0,0],["BLOCK",4980,225,0,0],["GRID_DECO",4980,255,0,0],["GRID_DECO",4980,285,0,0],["STAR",5085,135,0,0],["BLOCK",5190,15,0,0],["BLOCK",5190,195,0,0],["GRID_DECO",5190,225,0,0],["GRID_DECO",5190,255,0,0],["GRID_DECO",5190,285,0,0],["GRID_DECO",5400,15,0,0],["GRID_DECO",5400,45,0,0],["BLOCK",5400,75,0,0],["BLOCK",5400,255,0,0],["GRID_DECO",5400,285,0,0],["STAR",5505,165,0,0],["GRID_DECO",5610,15,0,0],["GRID_DECO",5610,45,0,0],["GRID_DECO",5610,75,0,0],["BLOCK",5610,105,0,0],["BLOCK",5610,285,0,0],["GRID_DECO",5820,15,0,0],["BLOCK",5820,45,0,0],["BLOCK",5820,225,0,0],["GRID_DECO",5820,255,0,0],["GRID_DECO",5820,285,0,0],["STAR",5925,135,0,0],["BLOCK",6030,15,0,0],["BLOCK",6030,195,0,0],["GRID_DECO",6030,225,0,0],["GRID_DECO",6030,255,0,0],["GRID_DECO",6030,285,0,0],["GRID_DECO",6240,15,0,0],["GRID_DECO",6240,45,0,0],["BLOCK",6240,75,0,0],["BLOCK",6240,255,0,0],["GRID_DECO",6240,285,0,0],["STAR",6345,165,0,0],["GRID_DECO",6450,15,0,0],["BLOCK",6450,45,0,0],["BLOCK",6450,225,0,0],["GRID_DECO",6450,255,0,0],["GRID_DECO",6450,285,0,0],["BLOCK",6660,15,0,0],["BLOCK",6660,195,0,0],["GRID_DECO",6660,225,0,0],["GRID_DECO",6660,255,0,0],["GRID_DECO",6660,285,0,0],["STAR",6765,105,0,0],["BLOCK",6870,15,0,0],["BLOCK",6870,195,0,0],["GRID_DECO",6870,225,0,0],["GRID_DECO",6870,255,0,0],["GRID_DECO",6870,285,0,0],["GRID_DECO",7080,15,0,0],["GRID_DECO",7080,45,0,0],["BLOCK",7080,75,0,0],["BLOCK",7080,255,0,0],["GRID_DECO",7080,285,0,0],["STAR",7185,165,0,0],["GRID_DECO",7290,15,0,0],["BLOCK",7290,45,0,0],["BLOCK",7290,225,0,0],["GRID_DECO",7290,255,0,0],["GRID_DECO",7290,285,0,0],["BLOCK",7500,15,0,0],["BLOCK",7500,195,0,0],["GRID_DECO",7500,225,0,0],["GRID_DECO",7500,255,0,0],["GRID_DECO",7500,285,0,0],["STAR",7605,105,0,0],["PORTAL_CUBE",7830,45,0,0],["SPEED_FAST",8130,45,0,0],["WAVE_PORTAL",8310,45,0,0],["GRID_DECO",8520,15,0,0],["GRID_DECO",8520,45,0,0],["BLOCK",8520,75,0,0],["BLOCK",8520,255,0,0],["GRID_DECO",8520,285,0,0],["GRID_DECO",8700,15,0,0],["GRID_DECO",8700,45,0,0],["GRID_DECO",8700,75,0,0],["BLOCK",8700,105,0,0],["BLOCK",8700,285,0,0],["STAR",8790,195,0,0],["GRID_DECO",8880,15,0,0],["BLOCK",8880,45,0,0],["BLOCK",8880,225,0,0],["GRID_DECO",8880,255,0,0],["GRID_DECO",8880,285,0,0],["BLOCK",9060,15,0,0],["BLOCK",9060,195,0,0],["GRID_DECO",9060,225,0,0],["GRID_DECO",9060,255,0,0],["GRID_DECO",9060,285,0,0],["STAR",9150,105,0,0],["BLOCK",9240,15,0,0],["BLOCK",9240,195,0,0],["GRID_DECO",9240,225,0,0],["GRID_DECO",9240,255,0,0],["GRID_DECO",9240,285,0,0],["GRID_DECO",9420,15,0,0],["BLOCK",9420,45,0,0],["BLOCK",9420,225,0,0],["GRID_DECO",9420,255,0,0],["GRID_DECO",9420,285,0,0],["STAR",9510,135,0,0],["GRID_DECO",9600,15,0,0],["GRID_DECO",9600,45,0,0],["GRID_DECO",9600,75,0,0],["BLOCK",9600,105,0,0],["BLOCK",9600,285,0,0],["GRID_DECO",9780,15,0,0],["GRID_DECO",9780,45,0,0],["BLOCK",9780,75,0,0],["BLOCK",9780,255,0,0],["GRID_DECO",9780,285,0,0],["STAR",9870,165,0,0],["BLOCK",9960,15,0,0],["BLOCK",9960,195,0,0],["GRID_DECO",9960,225,0,0],["GRID_DECO",9960,255,0,0],["GRID_DECO",9960,285,0,0],["GRID_DECO",10140,15,0,0],["BLOCK",10140,45,0,0],["BLOCK",10140,225,0,0],["GRID_DECO",10140,255,0,0],["GRID_DECO",10140,285,0,0],["STAR",10230,135,0,0],["GRID_DECO",10320,15,0,0],["GRID_DECO",10320,45,0,0],["BLOCK",10320,75,0,0],["BLOCK",10320,255,0,0],["GRID_DECO",10320,285,0,0],["BLOCK",10500,15,0,0],["BLOCK",10500,195,0,0],["GRID_DECO",10500,225,0,0],["GRID_DECO",10500,255,0,0],["GRID_DECO",10500,285,0,0],["STAR",10590,105,0,0],["GRID_DECO",10680,15,0,0],["BLOCK",10680,45,0,0],["BLOCK",10680,225,0,0],["GRID_DECO",10680,255,0,0],["GRID_DECO",10680,285,0,0],["BLOCK",10860,15,0,0],["BLOCK",10860,195,0,0],["GRID_DECO",10860,225,0,0],["GRID_DECO",10860,255,0,0],["GRID_DECO",10860,285,0,0],["STAR",10950,105,0,0],["GRID_DECO",11040,15,0,0],["GRID_DECO",11040,45,0,0],["BLOCK",11040,75,0,0],["BLOCK",11040,255,0,0],["GRID_DECO",11040,285,0,0],["GRID_DECO",11220,15,0,0],["BLOCK",11220,45,0,0],["BLOCK",11220,225,0,0],["GRID_DECO",11220,255,0,0],["GRID_DECO",11220,285,0,0],["STAR",11310,135,0,0],["PORTAL_CUBE",11520,45,0,0],["SPIDER_PORTAL",11880,45,0,0],["SPIKE",12090,15,0,0],["SPIKE",12120,15,0,0],["SPIKE",12150,15,0,0],["SPIKE",12330,285,0,2],["SPIKE",12360,285,0,2],["SPIKE",12390,285,0,2],["SPIKE",12570,15,0,0],["SPIKE",12600,15,0,0],["SPIKE",12630,15,0,0],["SPIKE",12810,285,0,2],["SPIKE",12840,285,0,2],["SPIKE",12870,285,0,2],["SPIKE",13050,15,0,0],["SPIKE",13080,15,0,0],["SPIKE",13110,15,0,0],["SPIKE",13290,285,0,2],["SPIKE",13320,285,0,2],["SPIKE",13350,285,0,2],["SPIKE",13530,15,0,0],["SPIKE",13560,15,0,0],["SPIKE",13590,15,0,0],["SPIKE",13770,285,0,2],["SPIKE",13800,285,0,2],["SPIKE",13830,285,0,2],["SPIKE",14010,15,0,0],["SPIKE",14040,15,0,0],["SPIKE",14070,15,0,0],["SPIKE",14250,285,0,2],["SPIKE",14280,285,0,2],["SPIKE",14310,285,0,2],["SPIKE",14490,15,0,0],["SPIKE",14520,15,0,0],["SPIKE",14550,15,0,0],["SPIKE",14730,285,0,2],["SPIKE",14760,285,0,2],["SPIKE",14790,285,0,2],["SPIKE",14970,15,0,0],["SPIKE",15000,15,0,0],["SPIKE",15030,15,0,0],["SPIKE",15210,285,0,2],["SPIKE",15240,285,0,2],["SPIKE",15270,285,0,2],["SPIKE",15450,15,0,0],["SPIKE",15480,15,0,0],["SPIKE",15510,15,0,0],["SPIKE",15690,285,0,2],["SPIKE",15720,285,0,2],["SPIKE",15750,285,0,2],["PORTAL_CUBE",16050,45,0,0],["PORTAL_SHIP",16410,45,0,0],["GRID_DECO",16620,15,0,0],["GRID_DECO",16620,45,0,0],["GRID_DECO",16620,75,0,0],["GRID_DECO",16620,105,0,0],["GRID_DECO",16620,135,0,0],["BLOCK",16620,165,0,0],["BLOCK",16620,285,0,0],["SPIKE",16620,195,0,0],["GRID_DECO",16830,15,0,0],["GRID_DECO",16830,45,0,0],["GRID_DECO",16830,75,0,0],["GRID_DECO",16830,105,0,0],["GRID_DECO",16830,135,0,0],["BLOCK",16830,165,0,0],["BLOCK",16830,285,0,0],["STAR",16935,225,0,0],["SPIKE",16830,195,0,0],["GRID_DECO",17040,15,0,0],["GRID_DECO",17040,45,0,0],["GRID_DECO",17040,75,0,0],["GRID_DECO",17040,105,0,0],["BLOCK",17040,135,0,0],["BLOCK",17040,255,0,0],["GRID_DECO",17040,285,0,0],["SPIKE",17040,165,0,0],["GRID_DECO",17250,15,0,0],["GRID_DECO",17250,45,0,0],["GRID_DECO",17250,75,0,0],["GRID_DECO",17250,105,0,0],["GRID_DECO",17250,135,0,0],["BLOCK",17250,165,0,0],["BLOCK",17250,285,0,0],["STAR",17355,225,0,0],["SPIKE",17250,195,0,0],["GRID_DECO",17460,15,0,0],["GRID_DECO",17460,45,0,0],["GRID_DECO",17460,75,0,0],["GRID_DECO",17460,105,0,0],["GRID_DECO",17460,135,0,0],["BLOCK",17460,165,0,0],["BLOCK",17460,285,0,0],["SPIKE",17460,195,0,0],["GRID_DECO",17670,15,0,0],["GRID_DECO",17670,45,0,0],["GRID_DECO",17670,75,0,0],["BLOCK",17670,105,0,0],["BLOCK",17670,225,0,0],["GRID_DECO",17670,255,0,0],["GRID_DECO",17670,285,0,0],["STAR",17775,165,0,0],["SPIKE",17670,135,0,0],["GRID_DECO",17880,15,0,0],["GRID_DECO",17880,45,0,0],["GRID_DECO",17880,75,0,0],["GRID_DECO",17880,105,0,0],["GRID_DECO",17880,135,0,0],["BLOCK",17880,165,0,0],["BLOCK",17880,285,0,0],["SPIKE",17880,195,0,0],["GRID_DECO",18090,15,0,0],["GRID_DECO",18090,45,0,0],["GRID_DECO",18090,75,0,0],["GRID_DECO",18090,105,0,0],["GRID_DECO",18090,135,0,0],["BLOCK",18090,165,0,0],["BLOCK",18090,285,0,0],["STAR",18195,225,0,0],["SPIKE",18090,195,0,0],["GRID_DECO",18300,15,0,0],["GRID_DECO",18300,45,0,0],["GRID_DECO",18300,75,0,0],["GRID_DECO",18300,105,0,0],["BLOCK",18300,135,0,0],["BLOCK",18300,255,0,0],["GRID_DECO",18300,285,0,0],["SPIKE",18300,165,0,0],["GRID_DECO",18510,15,0,0],["GRID_DECO",18510,45,0,0],["GRID_DECO",18510,75,0,0],["BLOCK",18510,105,0,0],["BLOCK",18510,225,0,0],["GRID_DECO",18510,255,0,0],["GRID_DECO",18510,285,0,0],["STAR",18615,165,0,0],["SPIKE",18510,135,0,0],["GRID_DECO",18720,15,0,0],["GRID_DECO",18720,45,0,0],["GRID_DECO",18720,75,0,0],["GRID_DECO",18720,105,0,0],["BLOCK",18720,135,0,0],["BLOCK",18720,255,0,0],["GRID_DECO",18720,285,0,0],["SPIKE",18720,165,0,0],["GRID_DECO",18930,15,0,0],["GRID_DECO",18930,45,0,0],["GRID_DECO",18930,75,0,0],["GRID_DECO",18930,105,0,0],["GRID_DECO",18930,135,0,0],["BLOCK",18930,165,0,0],["BLOCK",18930,285,0,0],["STAR",19035,225,0,0],["SPIKE",18930,195,0,0],["GRID_DECO",19140,15,0,0],["GRID_DECO",19140,45,0,0],["GRID_DECO",19140,75,0,0],["GRID_DECO",19140,105,0,0],["GRID_DECO",19140,135,0,0],["BLOCK",19140,165,0,0],["BLOCK",19140,285,0,0],["SPIKE",19140,195,0,0],["GRID_DECO",19350,15,0,0],["GRID_DECO",19350,45,0,0],["GRID_DECO",19350,75,0,0],["GRID_DECO",19350,105,0,0],["BLOCK",19350,135,0,0],["BLOCK",19350,255,0,0],["GRID_DECO",19350,285,0,0],["STAR",19455,195,0,0],["SPIKE",19350,165,0,0],["GRID_DECO",19560,15,0,0],["GRID_DECO",19560,45,0,0],["GRID_DECO",19560,75,0,0],["BLOCK",19560,105,0,0],["BLOCK",19560,225,0,0],["GRID_DECO",19560,255,0,0],["GRID_DECO",19560,285,0,0],["SPIKE",19560,135,0,0],["GRID_DECO",19770,15,0,0],["GRID_DECO",19770,45,0,0],["GRID_DECO",19770,75,0,0],["GRID_DECO",19770,105,0,0],["GRID_DECO",19770,135,0,0],["BLOCK",19770,165,0,0],["BLOCK",19770,285,0,0],["STAR",19875,225,0,0],["SPIKE",19770,195,0,0],["PORTAL_CUBE",20100,45,0,0],["SPEED_FASTER",20400,45,0,0],["BLOCK",20520,15,0,0],["BLOCK",20550,15,0,0],["BLOCK",20580,15,0,0],["GRID_DECO",20610,15,0,0],["BLOCK",20610,45,0,0],["GRID_DECO",20640,15,0,0],["BLOCK",20640,45,0,0],["GRID_DECO",20670,15,0,0],["BLOCK",20670,45,0,0],["GRID_DECO",20700,15,0,0],["GRID_DECO",20700,45,0,0],["BLOCK",20700,75,0,0],["GRID_DECO",20730,15,0,0],["GRID_DECO",20730,45,0,0],["BLOCK",20730,75,0,0],["GRID_DECO",20760,15,0,0],["GRID_DECO",20760,45,0,0],["BLOCK",20760,75,0,0],["SPIKE",20820,15,0,0],["SPIKE",20850,15,0,0],["STAR",20596,195,0,0],["BLOCK",21060,15,0,0],["BLOCK",21090,15,0,0],["BLOCK",21120,15,0,0],["GRID_DECO",21150,15,0,0],["BLOCK",21150,45,0,0],["GRID_DECO",21180,15,0,0],["BLOCK",21180,45,0,0],["GRID_DECO",21210,15,0,0],["BLOCK",21210,45,0,0],["SPIKE",21270,15,0,0],["SPIKE",21300,15,0,0],["DSPIKES3",21294,14,0,0],["STAR",21269,195,0,0],["BLOCK",21510,15,0,0],["BLOCK",21540,15,0,0],["BLOCK",21570,15,0,0],["GRID_DECO",21600,15,0,0],["BLOCK",21600,45,0,0],["GRID_DECO",21630,15,0,0],["BLOCK",21630,45,0,0],["GRID_DECO",21660,15,0,0],["BLOCK",21660,45,0,0],["GRID_DECO",21690,15,0,0],["GRID_DECO",21690,45,0,0],["BLOCK",21690,75,0,0],["GRID_DECO",21720,15,0,0],["GRID_DECO",21720,45,0,0],["BLOCK",21720,75,0,0],["GRID_DECO",21750,15,0,0],["GRID_DECO",21750,45,0,0],["BLOCK",21750,75,0,0],["SPIKE",21810,15,0,0],["SPIKE",21840,15,0,0],["DSPIKES1",21798,21,0,0],["STAR",21859,225,0,0],["PAD_Y",22050,2,0,0],["GRID_DECO",22200,15,0,0],["GRID_DECO",22200,45,0,0],["GRID_DECO",22200,75,0,0],["BLOCK",22200,105,0,0],["SPIKE",22320,15,0,0],["STAR",22438,195,0,0],["STAR",22220,225,0,0],["BLOCK",22440,15,0,0],["BLOCK",22470,15,0,0],["BLOCK",22500,15,0,0],["GRID_DECO",22530,15,0,0],["BLOCK",22530,45,0,0],["GRID_DECO",22560,15,0,0],["BLOCK",22560,45,0,0],["GRID_DECO",22590,15,0,0],["BLOCK",22590,45,0,0],["SPIKE",22650,15,0,0],["SPIKE",22680,15,0,0],["DSPIKES2",22649,18,0,0],["STAR",22633,255,0,0],["STAR",22483,225,0,0],["BLOCK",22890,15,0,0],["BLOCK",22980,45,0,0],["GRID_DECO",22980,15,0,0],["BLOCK",23010,45,0,0],["GRID_DECO",23010,15,0,0],["BLOCK",23040,45,0,0],["GRID_DECO",23040,15,0,0],["BLOCK",23070,45,0,0],["GRID_DECO",23070,15,0,0],["BLOCK",23100,45,0,0],["GRID_DECO",23100,15,0,0],["SPIKE",22980,15,0,0],["SPIKE",23070,15,0,0],["STAR",23096,255,0,0],["PAD_Y",23310,2,0,0],["GRID_DECO",23460,15,0,0],["GRID_DECO",23460,45,0,0],["GRID_DECO",23460,75,0,0],["BLOCK",23460,105,0,0],["SPIKE",23580,15,0,0],["STAR",23650,165,0,0],["SPIKE",23700,15,0,0],["SPIKE",23730,15,0,0],["SPIKE",23760,15,0,0],["DSPIKES2",23835,18,0,0],["STAR",23908,165,0,0],["BLOCK",23970,15,0,0],["SPIKE",24090,15,0,0],["DSPIKES1",24135,21,0,0],["STAR",23988,225,0,0],["STAR",24157,255,0,0],["BLOCK",24270,15,0,0],["BLOCK",24300,15,0,0],["BLOCK",24330,15,0,0],["GRID_DECO",24360,15,0,0],["BLOCK",24360,45,0,0],["GRID_DECO",24390,15,0,0],["BLOCK",24390,45,0,0],["GRID_DECO",24420,15,0,0],["BLOCK",24420,45,0,0],["GRID_DECO",24450,15,0,0],["GRID_DECO",24450,45,0,0],["BLOCK",24450,75,0,0],["GRID_DECO",24480,15,0,0],["GRID_DECO",24480,45,0,0],["BLOCK",24480,75,0,0],["GRID_DECO",24510,15,0,0],["GRID_DECO",24510,45,0,0],["BLOCK",24510,75,0,0],["SPIKE",24570,15,0,0],["SPIKE",24600,15,0,0],["DSPIKES2",24561,18,0,0],["BLOCK",24810,15,0,0],["BLOCK",24900,45,0,0],["GRID_DECO",24900,15,0,0],["BLOCK",24930,45,0,0],["GRID_DECO",24930,15,0,0],["BLOCK",24960,45,0,0],["GRID_DECO",24960,15,0,0],["BLOCK",24990,45,0,0],["GRID_DECO",24990,15,0,0],["BLOCK",25020,45,0,0],["GRID_DECO",25020,15,0,0],["BLOCK",25050,45,0,0],["GRID_DECO",25050,15,0,0],["BLOCK",25080,45,0,0],["GRID_DECO",25080,15,0,0],["SPIKE",24900,15,0,0],["SPIKE",24990,15,0,0],["SPIKE",25080,15,0,0],["STAR",25074,195,0,0],["STAR",25094,255,0,0],["BLOCK",25290,15,0,0],["BLOCK",25380,45,0,0],["GRID_DECO",25380,15,0,0],["BLOCK",25410,45,0,0],["GRID_DECO",25410,15,0,0],["BLOCK",25440,45,0,0],["GRID_DECO",25440,15,0,0],["BLOCK",25470,45,0,0],["GRID_DECO",25470,15,0,0],["BLOCK",25500,45,0,0],["GRID_DECO",25500,15,0,0],["SPIKE",25380,15,0,0],["SPIKE",25470,15,0,0],["DSPIKES3",25500,14,0,0],["STAR",25458,195,0,0],["STAR",25419,225,0,0],["UFO_PORTAL",25770,45,0,0],["GRID_DECO",25980,15,0,0],["GRID_DECO",25980,45,0,0],["GRID_DECO",25980,75,0,0],["BLOCK",25980,105,0,0],["BLOCK",25980,255,0,0],["GRID_DECO",25980,285,0,0],["GRID_DECO",26160,15,0,0],["GRID_DECO",26160,45,0,0],["GRID_DECO",26160,75,0,0],["GRID_DECO",26160,105,0,0],["BLOCK",26160,135,0,0],["BLOCK",26160,285,0,0],["STAR",26250,210,0,0],["GRID_DECO",26340,15,0,0],["GRID_DECO",26340,45,0,0],["BLOCK",26340,75,0,0],["BLOCK",26340,225,0,0],["GRID_DECO",26340,255,0,0],["GRID_DECO",26340,285,0,0],["GRID_DECO",26520,15,0,0],["BLOCK",26520,45,0,0],["BLOCK",26520,195,0,0],["GRID_DECO",26520,225,0,0],["GRID_DECO",26520,255,0,0],["GRID_DECO",26520,285,0,0],["STAR",26610,120,0,0],["BLOCK",26700,15,0,0],["BLOCK",26700,165,0,0],["GRID_DECO",26700,195,0,0],["GRID_DECO",26700,225,0,0],["GRID_DECO",26700,255,0,0],["GRID_DECO",26700,285,0,0],["GRID_DECO",26880,15,0,0],["GRID_DECO",26880,45,0,0],["BLOCK",26880,75,0,0],["BLOCK",26880,225,0,0],["GRID_DECO",26880,255,0,0],["GRID_DECO",26880,285,0,0],["STAR",26970,150,0,0],["GRID_DECO",27060,15,0,0],["GRID_DECO",27060,45,0,0],["GRID_DECO",27060,75,0,0],["GRID_DECO",27060,105,0,0],["BLOCK",27060,135,0,0],["BLOCK",27060,285,0,0],["GRID_DECO",27240,15,0,0],["GRID_DECO",27240,45,0,0],["GRID_DECO",27240,75,0,0],["BLOCK",27240,105,0,0],["BLOCK",27240,255,0,0],["GRID_DECO",27240,285,0,0],["STAR",27330,180,0,0],["GRID_DECO",27420,15,0,0],["GRID_DECO",27420,45,0,0],["BLOCK",27420,75,0,0],["BLOCK",27420,225,0,0],["GRID_DECO",27420,255,0,0],["GRID_DECO",27420,285,0,0],["BLOCK",27600,15,0,0],["BLOCK",27600,165,0,0],["GRID_DECO",27600,195,0,0],["GRID_DECO",27600,225,0,0],["GRID_DECO",27600,255,0,0],["GRID_DECO",27600,285,0,0],["STAR",27690,90,0,0],["GRID_DECO",27780,15,0,0],["BLOCK",27780,45,0,0],["BLOCK",27780,195,0,0],["GRID_DECO",27780,225,0,0],["GRID_DECO",27780,255,0,0],["GRID_DECO",27780,285,0,0],["GRID_DECO",27960,15,0,0],["GRID_DECO",27960,45,0,0],["GRID_DECO",27960,75,0,0],["BLOCK",27960,105,0,0],["BLOCK",27960,255,0,0],["GRID_DECO",27960,285,0,0],["STAR",28050,180,0,0],["GRID_DECO",28140,15,0,0],["GRID_DECO",28140,45,0,0],["GRID_DECO",28140,75,0,0],["GRID_DECO",28140,105,0,0],["BLOCK",28140,135,0,0],["BLOCK",28140,285,0,0],["GRID_DECO",28320,15,0,0],["GRID_DECO",28320,45,0,0],["BLOCK",28320,75,0,0],["BLOCK",28320,225,0,0],["GRID_DECO",28320,255,0,0],["GRID_DECO",28320,285,0,0],["STAR",28410,150,0,0],["PORTAL_CUBE",28620,45,0,0],["SPEED_NORMAL",28920,45,0,0],["SPIKE",29040,15,0,0],["SPIKE",29070,15,0,0],["DSPIKES2",29152,18,0,0],["STAR",29203,225,0,0],["BLOCK",29280,15,0,0],["SPIKE",29400,15,0,0],["STAR",29434,195,0,0],["SPIKE",29580,15,0,0],["SPIKE",29610,15,0,0],["DSPIKES3",29677,14,0,0],["PAD_Y",29820,2,0,0],["GRID_DECO",29970,15,0,0],["GRID_DECO",29970,45,0,0],["GRID_DECO",29970,75,0,0],["BLOCK",29970,105,0,0],["SPIKE",30090,15,0,0],["SPIKE",30210,15,0,0],["SPIKE",30240,15,0,0],["STAR",30408,195,0,0],["BLOCK",30450,15,0,0],["BLOCK",30540,45,0,0],["GRID_DECO",30540,15,0,0],["BLOCK",30570,45,0,0],["GRID_DECO",30570,15,0,0],["BLOCK",30600,45,0,0],["GRID_DECO",30600,15,0,0],["BLOCK",30630,45,0,0],["GRID_DECO",30630,15,0,0],["BLOCK",30660,45,0,0],["GRID_DECO",30660,15,0,0],["SPIKE",30540,15,0,0],["SPIKE",30630,15,0,0],["DSPIKES1",30663,21,0,0],["STAR",30614,255,0,0],["BLOCK",30870,15,0,0],["BLOCK",30900,15,0,0],["BLOCK",30930,15,0,0],["GRID_DECO",30960,15,0,0],["BLOCK",30960,45,0,0],["GRID_DECO",30990,15,0,0],["BLOCK",30990,45,0,0],["GRID_DECO",31020,15,0,0],["BLOCK",31020,45,0,0],["SPIKE",31080,15,0,0],["SPIKE",31110,15,0,0],["STAR",31118,195,0,0],["SPIKE",31320,15,0,0],["SPIKE",31350,15,0,0],["SPIKE",31380,15,0,0],["SPIKE",31410,15,0,0],["SPIKE",31440,15,0,0],["ORB_Y",31350,75,0,0],["SPIKE",31680,15,0,0],["SPIKE",31710,15,0,0],["SPIKE",31740,15,0,0]],"evenements":[["COLOR",11820,15,0,0,20,30,0,600],["COLOR",11820,15,1,0,90,90,0,600]]}
\ No newline at end of file
diff --git a/games/numdash/src/app.c b/games/numdash/src/app.c
index f4fb0d7..f85929d 100644
--- a/games/numdash/src/app.c
+++ b/games/numdash/src/app.c
@@ -9,14 +9,14 @@ App app;
 Progress progress;
 CustomMeta custom_meta[CUSTOM_SLOTS];
 
-/* Geometry Dash's icon colours (the classic 2.1 set). */
+/* NumDash's icon colours (Calcade, 19 octobre 2026: its own set, three tones of 14 hues). */
 static const uint8_t icon_colors[42][3] = {
-  {125, 255, 0}, {0, 255, 0}, {0, 255, 125}, {0, 255, 255}, {0, 125, 255}, {0, 0, 255}, {125, 0, 255},
-  {255, 0, 255}, {255, 0, 125}, {255, 0, 0}, {255, 125, 0}, {255, 255, 0}, {255, 255, 255}, {185, 0, 255},
-  {255, 185, 0}, {0, 0, 0}, {0, 200, 255}, {175, 175, 175}, {90, 90, 90}, {255, 125, 125}, {0, 175, 75},
-  {0, 125, 125}, {0, 75, 175}, {75, 0, 175}, {125, 0, 125}, {175, 0, 75}, {175, 75, 0}, {125, 125, 0},
-  {75, 175, 0}, {255, 75, 0}, {150, 50, 0}, {150, 100, 0}, {100, 150, 0}, {0, 150, 100}, {0, 100, 150},
-  {100, 0, 150}, {150, 0, 100}, {150, 0, 0}, {0, 150, 0}, {0, 0, 150}, {125, 255, 175}, {125, 125, 255}};
+  {255, 108, 71}, {255, 187, 71}, {245, 255, 71}, {166, 255, 71}, {87, 255, 71}, {71, 255, 134}, {71, 255, 213},
+  {71, 218, 255}, {71, 140, 255}, {82, 71, 255}, {161, 71, 255}, {239, 71, 255}, {255, 71, 192}, {255, 250, 240},
+  {199, 64, 30}, {199, 136, 30}, {189, 199, 30}, {117, 199, 30}, {44, 199, 30}, {30, 199, 88}, {30, 199, 160},
+  {30, 165, 199}, {30, 93, 199}, {39, 30, 199}, {112, 30, 199}, {184, 30, 199}, {199, 30, 141}, {150, 150, 160},
+  {128, 66, 51}, {128, 99, 51}, {123, 128, 51}, {90, 128, 51}, {58, 128, 51}, {51, 128, 77}, {51, 128, 110},
+  {51, 112, 128}, {51, 79, 128}, {55, 51, 128}, {88, 51, 128}, {121, 51, 128}, {128, 51, 101}, {24, 22, 30}};
 color_t icon_color(int i) {
   if (i < 0 || i >= 42) i = 0;
   return rgb(icon_colors[i][0], icon_colors[i][1], icon_colors[i][2]);
diff --git a/games/numdash/src/assets.c b/games/numdash/src/assets.c
index 6cf19da..9ded92c 100644
--- a/games/numdash/src/assets.c
+++ b/games/numdash/src/assets.c
@@ -8,2112 +8,1881 @@ const Sprite sprites[SPR_COUNT] = {
   {20,20,10,10,1,0,1600},
   {20,20,10,10,1,0,2000},
   {20,20,10,10,1,0,2400},
-  {26,26,13,13,0,0,2800},
-  {20,6,10,13,0,0,3138},
-  {23,23,13,13,0,0,3198},
-  {6,6,13,13,0,0,3474},
-  {26,23,13,13,0,0,3492},
-  {26,20,13,10,0,0,3791},
-  {20,20,10,10,1,0,4051},
-  {20,10,10,5,1,0,4451},
-  {14,14,7,7,1,0,4651},
-  {26,26,13,13,0,0,4847},
-  {26,16,13,8,0,0,5185},
-  {20,20,10,10,0,0,5393},
-  {20,17,10,8,0,0,5593},
-  {20,18,10,9,0,0,5763},
-  {20,18,10,9,0,0,5943},
-  {20,10,10,5,1,0,6123},
-  {26,14,13,7,0,0,6323},
-  {20,10,10,6,1,0,6505},
-  {20,11,10,6,1,0,6705},
-  {20,10,10,6,1,0,6925},
-  {20,12,10,6,1,0,7125},
-  {6,27,3,13,0,0,7365},
-  {6,17,3,8,0,0,7446},
-  {6,8,3,3,0,0,7497},
-  {11,11,5,5,0,0,7521},
-  {83,27,40,13,0,0,7587},
-  {70,25,35,12,0,0,8721},
-  {46,18,22,8,0,0,9596},
-  {28,8,14,3,0,0,10010},
-  {10,48,5,24,0,0,10122},
-  {10,24,5,12,0,0,10362},
-  {18,18,9,9,0,0,10482},
-  {20,20,10,10,1,0,10644},
-  {18,4,9,2,2,0,11044},
-  {18,6,9,3,0,0,11080},
-  {18,4,9,2,2,1,11134},
-  {18,6,9,3,0,0,11170},
-  {18,4,9,2,2,2,11224},
-  {18,6,9,3,0,0,11260},
-  {20,20,10,10,2,3,11314},
-  {26,26,13,13,0,0,11514},
-  {20,20,10,10,2,4,11852},
-  {26,26,13,13,0,0,12052},
-  {20,20,10,10,2,5,12390},
-  {26,26,13,13,0,0,12590},
-  {8,50,8,25,2,6,12928},
-  {15,50,9,25,2,7,13128},
-  {8,50,8,25,2,8,13528},
-  {15,50,9,25,2,9,13728},
-  {16,52,10,26,2,10,14128},
-  {21,62,11,31,2,11,14544},
-  {16,52,10,26,2,12,15226},
-  {21,62,11,31,2,13,15642},
-  {16,52,10,26,2,14,16324},
-  {21,62,11,31,2,15,16740},
-  {26,26,13,13,2,16,17422},
-  {20,26,10,13,2,17,17760},
-  {6,26,3,13,2,18,18020},
-  {20,26,10,13,2,19,18098},
-  {20,20,10,10,1,0,18358},
-  {6,6,3,3,1,0,18758},
-  {26,15,13,8,1,0,18794},
-  {17,7,8,7,1,0,19184},
-  {20,20,10,10,1,0,19303},
-  {8,8,4,4,1,0,19703},
-  {78,78,39,39,2,20,19767},
-  {54,54,27,27,2,21,22809},
-  {54,54,27,27,2,22,24267},
-  {36,37,18,18,2,23,25725},
-  {36,37,18,18,2,24,26391},
-  {36,37,18,18,2,25,27057},
-  {32,33,16,16,2,26,27723},
-  {68,69,34,34,2,27,28251},
-  {52,53,26,26,2,28,30597},
-  {52,53,26,26,2,29,31975},
-  {52,53,26,26,2,30,33353},
-  {52,53,26,26,2,31,34731},
-  {30,31,15,15,2,32,36109},
-  {24,25,12,12,2,33,36574},
-  {24,30,12,15,2,34,36874},
-  {22,50,11,25,2,35,37234},
-  {27,27,14,14,2,36,37784},
-  {27,27,14,14,2,37,38162},
-  {27,27,14,14,2,38,38540},
-  {27,27,14,14,2,39,38918},
-  {27,27,14,14,2,40,39296},
-  {14,13,7,7,2,41,39674},
-  {22,22,11,12,2,42,39765},
-  {16,16,8,8,2,43,40007},
-  {16,16,8,8,2,44,40135},
-  {28,28,14,14,2,45,40263},
-  {28,28,14,14,2,46,40655},
-  {41,41,0,43,2,47,41047},
-  {19,19,10,10,2,48,41908},
-  {19,19,10,10,2,49,42098},
-  {1,1,0,0,0,0,42288},
-  {3,7,0,7,0,0,42289},
-  {10,9,0,8,0,0,42303},
-  {3,4,0,7,0,0,42348},
-  {3,9,-1,7,0,0,42356},
-  {4,9,0,7,0,0,42374},
-  {6,6,0,6,0,0,42392},
-  {3,5,0,3,0,0,42410},
-  {4,3,0,4,0,0,42420},
-  {3,3,0,3,0,0,42426},
-  {4,9,0,8,0,0,42432},
-  {6,7,0,7,0,0,42450},
-  {6,7,0,7,0,0,42471},
-  {6,7,0,7,0,0,42492},
-  {6,7,0,7,0,0,42513},
-  {6,7,0,7,0,0,42534},
-  {6,7,0,7,0,0,42555},
-  {6,7,0,7,0,0,42576},
-  {6,7,0,7,0,0,42597},
-  {6,7,0,7,0,0,42618},
-  {6,7,0,7,0,0,42639},
-  {3,5,0,5,0,0,42660},
-  {5,7,0,7,0,0,42670},
-  {8,7,0,7,0,0,42691},
-  {7,7,0,7,0,0,42719},
-  {7,7,0,7,0,0,42747},
-  {8,7,0,7,0,0,42775},
-  {6,7,0,7,0,0,42803},
-  {6,7,0,7,0,0,42824},
-  {7,7,0,7,0,0,42845},
-  {8,7,0,7,0,0,42873},
-  {3,7,0,7,0,0,42901},
-  {5,7,1,7,0,0,42915},
-  {7,7,0,7,0,0,42936},
-  {6,7,0,7,0,0,42964},
-  {9,7,0,7,0,0,42985},
-  {7,7,0,7,0,0,43020},
-  {8,7,0,7,0,0,43048},
-  {7,7,0,7,0,0,43076},
-  {8,9,0,7,0,0,43104},
-  {7,7,0,7,0,0,43140},
-  {7,7,0,7,0,0,43168},
-  {7,7,0,7,0,0,43196},
-  {7,7,0,7,0,0,43224},
-  {8,7,0,7,0,0,43252},
-  {11,7,0,7,0,0,43280},
-  {7,7,0,7,0,0,43322},
-  {7,7,0,7,0,0,43350},
-  {7,7,0,7,0,0,43378},
-  {1,1,0,0,0,0,43406},
-  {6,14,0,13,0,0,43407},
-  {26,14,0,13,0,0,43449},
-  {5,7,0,13,0,0,43631},
-  {8,15,0,14,0,0,43652},
-  {8,15,0,14,0,0,43712},
-  {9,9,0,11,0,0,43772},
-  {6,8,0,4,0,0,43817},
-  {7,5,0,8,0,0,43841},
-  {6,6,0,5,0,0,43861},
-  {8,13,0,13,0,0,43879},
-  {14,14,0,13,0,0,43931},
-  {9,13,0,13,0,0,44029},
-  {13,13,0,13,0,0,44094},
-  {14,14,0,13,0,0,44185},
-  {14,13,0,13,0,0,44283},
-  {14,14,0,13,0,0,44374},
-  {14,14,0,13,0,0,44472},
-  {14,14,0,13,0,0,44570},
-  {14,14,0,13,0,0,44668},
-  {14,14,0,13,0,0,44766},
-  {5,11,0,11,0,0,44864},
-  {9,14,0,13,0,0,44897},
-  {17,13,0,13,0,0,44967},
-  {15,13,0,13,0,0,45084},
-  {12,14,0,13,0,0,45188},
-  {14,13,0,13,0,0,45272},
-  {11,13,0,13,0,0,45363},
-  {10,13,0,13,0,0,45441},
-  {13,14,0,13,0,0,45506},
-  {14,13,0,13,0,0,45604},
-  {6,13,0,13,0,0,45695},
-  {12,14,0,13,0,0,45734},
-  {15,13,0,13,0,0,45818},
-  {10,13,0,13,0,0,45922},
-  {17,13,0,13,0,0,45987},
-  {14,13,0,13,0,0,46104},
-  {15,14,0,13,0,0,46195},
-  {14,13,0,13,0,0,46307},
-  {16,14,0,13,0,0,46398},
-  {15,13,0,13,0,0,46510},
-  {11,15,0,14,0,0,46614},
-  {13,13,0,13,0,0,46704},
-  {13,14,0,13,0,0,46795},
-  {15,14,0,13,0,0,46893},
-  {21,14,0,13,0,0,47005},
-  {15,13,0,13,0,0,47159},
-  {13,13,0,13,0,0,47263},
-  {14,13,0,13,0,0,47354},
-  {1,1,0,0,0,0,47445},
-  {7,20,-1,19,0,0,47446},
-  {39,21,0,20,0,0,47526},
-  {7,9,0,19,0,0,47946},
-  {11,21,0,20,0,0,47982},
-  {11,21,-1,20,0,0,48108},
-  {13,13,0,16,0,0,48234},
-  {8,11,-1,5,0,0,48325},
-  {10,6,-1,11,0,0,48369},
-  {8,8,0,7,0,0,48399},
-  {12,19,0,19,0,0,48431},
-  {21,21,0,20,0,0,48545},
-  {13,19,0,19,0,0,48776},
-  {20,20,0,20,0,0,48909},
-  {20,20,-1,19,0,0,49109},
-  {21,19,0,19,0,0,49309},
-  {19,20,-1,19,0,0,49518},
-  {20,21,0,20,0,0,49718},
-  {20,19,-1,19,0,0,49928},
-  {19,21,-1,20,0,0,50118},
-  {20,21,0,20,0,0,50328},
-  {7,16,-1,16,0,0,50538},
-  {14,21,0,20,0,0,50602},
-  {25,21,0,20,0,0,50749},
-  {21,21,-1,20,0,0,51022},
-  {17,21,0,20,0,0,51253},
-  {20,21,-1,20,0,0,51442},
-  {15,19,-1,19,0,0,51652},
-  {14,20,-1,19,0,0,51804},
-  {19,21,0,20,0,0,51944},
-  {19,19,-1,19,0,0,52154},
-  {8,19,-1,19,0,0,52344},
-  {18,20,0,19,0,0,52420},
-  {21,19,-1,19,0,0,52600},
-  {14,19,-1,19,0,0,52809},
-  {25,19,-1,19,0,0,52942},
-  {20,19,-1,19,0,0,53189},
-  {22,21,0,20,0,0,53379},
-  {19,20,-1,20,0,0,53610},
-  {24,21,0,20,0,0,53810},
-  {21,20,-1,20,0,0,54062},
-  {15,21,-1,20,0,0,54282},
-  {19,19,0,19,0,0,54450},
-  {19,20,-1,19,0,0,54640},
-  {22,20,0,19,0,0,54840},
-  {31,20,0,19,0,0,55060},
-  {21,19,-1,19,0,0,55380},
-  {20,19,0,19,0,0,55589},
-  {20,19,-1,19,0,0,55779},
+  {20,3,10,12,0,0,2800},
+  {20,3,10,12,0,0,2830},
+  {20,3,10,12,0,0,2860},
+  {20,3,10,12,0,0,2890},
+  {20,3,10,12,0,0,2920},
+  {1,1,0,0,0,0,2950},
+  {20,20,10,10,1,0,2951},
+  {20,10,10,5,1,0,3351},
+  {14,14,7,7,1,0,3551},
+  {4,4,2,12,0,0,3747},
+  {6,5,3,7,0,0,3755},
+  {6,5,3,9,0,0,3770},
+  {20,15,10,6,0,0,3785},
+  {20,16,10,7,0,0,3935},
+  {20,16,10,7,0,0,4095},
+  {20,10,10,5,1,0,4255},
+  {20,3,10,7,0,0,4455},
+  {20,6,10,6,1,0,4485},
+  {20,6,10,6,1,0,4605},
+  {20,6,10,6,1,0,4725},
+  {20,6,10,6,1,0,4845},
+  {4,29,2,14,0,0,4965},
+  {4,19,2,9,0,0,5023},
+  {6,9,3,4,0,0,5061},
+  {10,10,5,5,0,0,5088},
+  {86,29,43,14,0,0,5138},
+  {70,17,35,4,0,0,6385},
+  {50,18,25,7,0,0,6980},
+  {28,8,14,3,0,0,7430},
+  {10,48,5,24,0,0,7542},
+  {10,24,5,12,0,0,7782},
+  {18,18,9,9,0,0,7902},
+  {20,20,10,10,1,0,8064},
+  {18,6,9,3,2,0,8464},
+  {18,5,9,6,0,0,8518},
+  {18,6,9,3,2,1,8563},
+  {18,5,9,6,0,0,8617},
+  {18,6,9,3,2,2,8662},
+  {18,5,9,6,0,0,8716},
+  {20,20,10,10,2,3,8761},
+  {24,24,12,12,0,0,8961},
+  {20,20,10,10,2,4,9249},
+  {24,24,12,12,0,0,9449},
+  {20,20,10,10,2,5,9737},
+  {24,24,12,12,0,0,9937},
+  {5,48,5,24,2,6,10225},
+  {8,55,3,27,2,7,10369},
+  {5,48,5,24,2,8,10589},
+  {8,55,3,27,2,9,10733},
+  {6,54,6,27,2,10,10953},
+  {9,60,3,30,2,11,11115},
+  {6,54,6,27,2,12,11415},
+  {9,60,3,30,2,13,11577},
+  {6,54,6,27,2,14,11877},
+  {9,60,3,30,2,15,12039},
+  {22,24,11,12,2,16,12339},
+  {16,24,8,12,2,17,12603},
+  {6,24,3,12,2,18,12795},
+  {16,24,8,12,2,19,12867},
+  {20,20,10,10,1,0,13059},
+  {14,6,6,5,1,0,13459},
+  {26,15,13,7,1,0,13543},
+  {18,10,10,8,1,0,13933},
+  {20,20,10,10,1,0,14113},
+  {12,14,6,7,1,0,14513},
+  {68,78,33,39,2,20,14681},
+  {47,54,23,27,2,21,17333},
+  {47,54,23,27,2,22,18629},
+  {36,37,18,18,2,23,19925},
+  {36,37,18,18,2,24,20591},
+  {36,37,18,18,2,25,21257},
+  {32,33,16,16,2,26,21923},
+  {68,69,34,34,2,27,22451},
+  {52,53,26,26,2,28,24797},
+  {52,53,26,26,2,29,26175},
+  {52,53,26,26,2,30,27553},
+  {52,53,26,26,2,31,28931},
+  {30,31,15,15,2,32,30309},
+  {24,25,12,12,2,33,30774},
+  {24,30,12,15,2,34,31074},
+  {22,50,11,25,2,35,31434},
+  {25,26,12,13,2,36,31984},
+  {25,26,12,13,2,37,32322},
+  {25,26,12,13,2,38,32660},
+  {25,26,12,13,2,39,32998},
+  {25,26,12,13,2,40,33336},
+  {14,13,7,7,2,41,33674},
+  {22,22,11,12,2,42,33765},
+  {14,16,7,8,2,43,34007},
+  {14,16,7,8,2,44,34119},
+  {24,28,12,14,2,45,34231},
+  {24,28,12,14,2,46,34567},
+  {39,40,0,40,2,47,34903},
+  {19,19,10,10,2,48,35703},
+  {19,19,10,10,2,49,35893},
+  {1,1,0,0,0,0,36083},
+  {3,7,0,7,0,0,36084},
+  {10,9,0,8,0,0,36098},
+  {3,4,0,7,0,0,36143},
+  {3,9,-1,7,0,0,36151},
+  {4,9,0,7,0,0,36169},
+  {6,6,0,6,0,0,36187},
+  {3,5,0,3,0,0,36205},
+  {4,3,0,4,0,0,36215},
+  {3,3,0,3,0,0,36221},
+  {4,9,0,8,0,0,36227},
+  {6,7,0,7,0,0,36245},
+  {6,7,0,7,0,0,36266},
+  {6,7,0,7,0,0,36287},
+  {6,7,0,7,0,0,36308},
+  {6,7,0,7,0,0,36329},
+  {6,7,0,7,0,0,36350},
+  {6,7,0,7,0,0,36371},
+  {6,7,0,7,0,0,36392},
+  {6,7,0,7,0,0,36413},
+  {6,7,0,7,0,0,36434},
+  {3,5,0,5,0,0,36455},
+  {5,7,0,7,0,0,36465},
+  {8,7,0,7,0,0,36486},
+  {7,7,0,7,0,0,36514},
+  {7,7,0,7,0,0,36542},
+  {8,7,0,7,0,0,36570},
+  {6,7,0,7,0,0,36598},
+  {6,7,0,7,0,0,36619},
+  {7,7,0,7,0,0,36640},
+  {8,7,0,7,0,0,36668},
+  {3,7,0,7,0,0,36696},
+  {5,7,1,7,0,0,36710},
+  {7,7,0,7,0,0,36731},
+  {6,7,0,7,0,0,36759},
+  {9,7,0,7,0,0,36780},
+  {7,7,0,7,0,0,36815},
+  {8,7,0,7,0,0,36843},
+  {7,7,0,7,0,0,36871},
+  {8,9,0,7,0,0,36899},
+  {7,7,0,7,0,0,36935},
+  {7,7,0,7,0,0,36963},
+  {7,7,0,7,0,0,36991},
+  {7,7,0,7,0,0,37019},
+  {8,7,0,7,0,0,37047},
+  {11,7,0,7,0,0,37075},
+  {7,7,0,7,0,0,37117},
+  {7,7,0,7,0,0,37145},
+  {7,7,0,7,0,0,37173},
+  {1,1,0,0,0,0,37201},
+  {6,12,0,12,0,0,37202},
+  {19,13,0,12,0,0,37238},
+  {4,6,-1,12,0,0,37368},
+  {5,16,-1,13,0,0,37380},
+  {6,16,0,13,0,0,37428},
+  {11,10,-1,10,0,0,37476},
+  {5,8,-1,4,0,0,37536},
+  {6,4,0,7,0,0,37560},
+  {5,4,-1,4,0,0,37572},
+  {6,14,0,13,0,0,37584},
+  {14,13,0,12,0,0,37626},
+  {12,12,-1,12,0,0,37717},
+  {13,12,0,12,0,0,37789},
+  {14,13,0,12,0,0,37873},
+  {14,12,0,12,0,0,37964},
+  {14,13,0,12,0,0,38048},
+  {14,13,0,12,0,0,38139},
+  {13,12,0,12,0,0,38230},
+  {14,13,0,12,0,0,38314},
+  {13,13,0,12,0,0,38405},
+  {5,9,-1,9,0,0,38496},
+  {12,12,0,12,0,0,38523},
+  {16,12,0,12,0,0,38595},
+  {14,12,-1,12,0,0,38691},
+  {16,13,0,12,0,0,38775},
+  {14,12,-1,12,0,0,38879},
+  {13,12,-1,12,0,0,38963},
+  {13,12,-1,12,0,0,39047},
+  {16,13,0,12,0,0,39131},
+  {15,12,-1,12,0,0,39235},
+  {5,12,-1,12,0,0,39331},
+  {12,13,0,12,0,0,39367},
+  {16,12,-1,12,0,0,39445},
+  {12,12,-1,12,0,0,39541},
+  {18,12,-1,12,0,0,39613},
+  {15,12,-1,12,0,0,39721},
+  {17,13,0,12,0,0,39817},
+  {14,12,-1,12,0,0,39934},
+  {17,15,0,12,0,0,40018},
+  {15,12,-1,12,0,0,40153},
+  {15,13,0,12,0,0,40249},
+  {15,12,0,12,0,0,40353},
+  {15,13,-1,12,0,0,40449},
+  {16,12,0,12,0,0,40553},
+  {21,12,0,12,0,0,40649},
+  {17,12,0,12,0,0,40781},
+  {16,12,0,12,0,0,40889},
+  {15,12,0,12,0,0,40985},
+  {1,1,0,0,0,0,41081},
+  {7,17,-1,17,0,0,41082},
+  {26,18,-1,17,0,0,41150},
+  {6,8,-1,17,0,0,41384},
+  {8,22,-1,18,0,0,41408},
+  {7,22,-1,18,0,0,41496},
+  {14,14,-2,14,0,0,41584},
+  {7,10,-1,5,0,0,41682},
+  {8,5,-1,9,0,0,41722},
+  {7,5,-1,5,0,0,41742},
+  {8,20,0,18,0,0,41762},
+  {18,18,-1,17,0,0,41842},
+  {17,17,-1,17,0,0,42004},
+  {18,17,-1,17,0,0,42157},
+  {18,18,-1,17,0,0,42310},
+  {20,17,0,17,0,0,42472},
+  {18,18,-1,17,0,0,42642},
+  {18,18,-1,17,0,0,42804},
+  {18,18,0,17,0,0,42966},
+  {19,18,-1,17,0,0,43128},
+  {19,18,0,17,0,0,43308},
+  {7,13,-1,13,0,0,43488},
+  {17,17,0,17,0,0,43540},
+  {23,17,0,17,0,0,43693},
+  {21,17,-1,17,0,0,43897},
+  {21,18,-1,17,0,0,44084},
+  {21,17,-1,17,0,0,44282},
+  {19,17,-1,17,0,0,44469},
+  {18,17,-1,17,0,0,44639},
+  {22,18,-1,17,0,0,44792},
+  {22,17,-1,17,0,0,44990},
+  {7,17,-1,17,0,0,45177},
+  {17,18,0,17,0,0,45245},
+  {23,17,-1,17,0,0,45407},
+  {18,17,-1,17,0,0,45611},
+  {26,17,-1,17,0,0,45764},
+  {22,17,-1,17,0,0,45985},
+  {22,18,-1,17,0,0,46172},
+  {20,17,-1,17,0,0,46370},
+  {22,21,-1,17,0,0,46540},
+  {21,17,-1,17,0,0,46771},
+  {20,18,-1,17,0,0,46958},
+  {21,17,0,17,0,0,47138},
+  {21,18,-1,17,0,0,47325},
+  {23,17,0,17,0,0,47523},
+  {30,17,0,17,0,0,47727},
+  {23,17,0,17,0,0,47982},
+  {23,17,0,17,0,0,48186},
+  {21,17,0,17,0,0,48390},
 };
 const uint16_t sprite_pal_rgb[][16] = {
-  {0x0000,0xfe00,0xff4b,0xff6b,0xfda0,0xff2b,0xff4b,0xff4b,0xfec5,0xff4b,0xff0b,0xff2b,0xfeeb,0xfeea,0xfec7,0xfea3},
-  {0x0000,0x0d9f,0x879f,0x87bf,0x877f,0x87bf,0x87bf,0x4eff,0x877f,0x771f,0x771f,0x263f,0x879f,0x7f5f,0x36df,0x5f1f},
-  {0x0000,0xea9f,0xfd3f,0xfd3f,0xe23f,0xfd1f,0xfd3f,0xf4ff,0xfd3f,0xf4ff,0xf3bf,0xfd1f,0xf4df,0xf4bf,0xf45f,0xf3ff},
-  {0x0000,0xfe83,0xffff,0xffff,0xffb0,0xffff,0xff90,0xff48,0xffb0,0xffff,0xffb0,0xffff,0xffff,0xff6d,0xfee5,0xffff},
-  {0x0000,0x369f,0xffff,0xffff,0xb7bf,0x979f,0xffff,0xb7bf,0xffff,0xb7bf,0xffff,0x6f5f,0xafbf,0xffff,0xffff,0x4eff},
-  {0x0000,0xf2bf,0xffff,0xffff,0xffff,0xfddf,0xfddf,0xfddf,0xffff,0xffff,0xfc5f,0xfddf,0xffff,0xfd5f,0xffff,0xf37f},
-  {0x0000,0xcf5f,0x663d,0x457d,0xd75f,0x5ddd,0xd75f,0x871d,0x4d7d,0xdf9f,0xd77f,0x34fd,0x7ebe,0x76bd,0x453d,0x5e1d},
-  {0x0000,0x459f,0x0000,0xdf9f,0x0000,0x3c13,0xdf9f,0x0000,0x3d3e,0x7eff,0xdf9f,0x1a8f,0xd77f,0x2a4b,0x875f,0x55bd},
-  {0x0000,0xff79,0xee8b,0xede8,0xff7a,0xff7a,0xee4b,0xede8,0xff9b,0xef0f,0xff7a,0xed86,0xeece,0xf6ee,0xedc7,0xee6b},
-  {0x0000,0xfe08,0x0000,0xff9b,0x0000,0x9c27,0xff9a,0x0000,0xf66b,0xff2e,0xffbb,0x7ac3,0x5a64,0xdda9,0xff0d,0x0000},
-  {0x0000,0xcf99,0x0000,0xd79a,0x1122,0x4e69,0xdfbb,0x0000,0x96f2,0x43e7,0xdfbb,0x8750,0x2543,0x0000,0x0000,0xd79a},
-  {0x0000,0x4ec8,0xe7dc,0x0000,0xcfb9,0x3fe7,0x0020,0x87b0,0xe7dc,0x3de6,0x0020,0x0020,0x47e8,0x2384,0x3fe7,0x1a83},
-  {0x0000,0xf69e,0x0000,0xf6be,0x1843,0xd25a,0xf6de,0x0000,0x7a2f,0xec3d,0xe4bc,0x0000,0xf6fe,0x0000,0xf6de,0x50ca},
-  {0x0000,0xe2dc,0x0000,0xf71e,0x0801,0xff3f,0xfaff,0x716e,0x0801,0xc9d9,0xf53e,0xfaff,0x510a,0xff3f,0x0000,0xfaff},
-  {0x0000,0xf6b9,0x0000,0xf6da,0x1061,0xdb08,0xf71b,0x0000,0xed12,0x7227,0xecaf,0xf71b,0x0000,0x0000,0xb9e4,0xf6fa},
-  {0x0000,0xeb48,0xff5c,0x0000,0xf6b9,0x0000,0xfb47,0xf4f0,0xff5c,0x5122,0x0000,0xfb47,0xb245,0x1040,0xe2e7,0x8205},
-  {0x0000,0x3900,0x38e0,0xfed1,0xcbc2,0x38e0,0xf606,0x7283,0x38e0,0xdd06,0x38e0,0xf669,0xf561,0xa342,0x59a1,0xe4a3},
-  {0x0000,0x4100,0x38e0,0xfed1,0xc3a2,0x38e0,0xeda5,0x38e0,0x7242,0x38e0,0xdcc3,0xf669,0xf561,0x38e0,0x38e0,0x38e0},
-  {0x0000,0x8b24,0x38e0,0xc548,0xff76,0x38e0,0xdd67,0x93a5,0xc528,0xb4ec,0x38e0,0xff0e,0xc4a6,0x8b44,0x38e0,0xf68a},
-  {0x0000,0x4100,0x38e0,0xfed1,0xcb81,0x38e0,0xf629,0x38e0,0x6a21,0x38e0,0xdcc5,0xf561,0x9323,0x38e0,0x38e0,0x38e0},
-  {0x0000,0x0840,0x7f1d,0x0000,0xed24,0x0000,0x5542,0xbf6e,0x2d5a,0x8ec5,0x8b23,0x0000,0x3201,0xee07,0x0000,0xb464},
-  {0x0000,0x0840,0xef4b,0x0000,0x3433,0x6e04,0x0000,0xe421,0x32e2,0x6596,0xaf49,0x1aee,0x0000,0x8323,0xeda5,0x44a1},
-  {0x0000,0x0020,0xbf6e,0x0000,0x2d5a,0x6de3,0x0000,0xee48,0x23f3,0x7f1d,0x9f26,0x44a1,0x0000,0x5d76,0xcc43,0x2141},
-  {0x0000,0x0020,0x0000,0xf668,0x4d02,0x0000,0xdcc4,0x7282,0x9ee9,0x0000,0x0000,0x7605,0x42e4,0xb76d,0x5bc6,0x2982},
-  {0x0000,0x0840,0x0000,0xb76d,0x8b22,0x0000,0xe545,0x7e65,0x4d22,0x0000,0x3a23,0x0000,0x6c88,0x9ee9,0xe482,0xf627},
-  {0x0000,0x0020,0x0000,0xf709,0x5d82,0x0000,0xdc62,0x6a83,0x96a7,0x0000,0x0000,0x7ce7,0x2161,0xe5c6,0x4b24,0xb76c},
-  {0x0000,0x0000,0x0000,0xb76d,0x5522,0x0000,0xed24,0x4263,0x0000,0x9706,0x0000,0xede6,0x75e5,0x2121,0x5c05,0x96ab},
-  {0x0000,0x0861,0xef7d,0x0000,0xef7d,0x7bef,0xeda5,0xef7d,0x0821,0xa72a,0x2965,0x8c51,0x65a3,0xc638,0xad75,0x4aa5},
-  {0x0000,0x0881,0xef7d,0x76fd,0x0000,0x6b6d,0x6583,0xef7d,0x2d39,0x0000,0xbdd7,0xa72a,0x42e7,0xef7d,0x8cb2,0xe73c},
-  {0x0000,0x0861,0xef7d,0x6ebd,0x0000,0x6b6d,0x5d63,0xef7d,0x24b7,0x0000,0xbdd7,0xa72a,0x3246,0x8c71,0xef5d,0xe73c},
-  {0x0000,0x0861,0xef7d,0x0000,0xb777,0x6b6d,0x5d84,0xef7d,0x0000,0xbdd7,0x3aa5,0x8450,0xa72a,0xe73c,0x47aa,0xef7d},
-  {0x0000,0x0841,0xef7d,0x0000,0xe77c,0x6b6d,0xf125,0x4da4,0xef7d,0x0000,0x6c2a,0xa72a,0x6882,0xb5d6,0x3264,0xe73c},
-  {0x0000,0x0020,0x0000,0xf688,0x5542,0x0000,0xe483,0x4243,0x8ea8,0x0000,0x0000,0xa3e4,0xed85,0x1901,0xb76c,0x5bc6},
-  {0x0000,0x0020,0x0000,0x6edd,0x65a3,0x0000,0x2391,0xb78d,0x3ae4,0x3ddb,0x0000,0x0000,0x1a09,0x96c9,0x4432,0x6c88},
-  {0x0000,0x0000,0x0000,0xc76e,0x0000,0x5ba6,0x8ea7,0x0000,0x1922,0x0000,0x7625,0x8d8a,0xa6ec,0x0000,0x0000,0x0000},
-  {0x0000,0xdedb,0x0000,0xffdf,0x4a49,0x73ae,0x0020,0xbdf7,0x4228,0xef5d,0xce59,0x94b2,0x7bef,0xce59,0x0000,0xa554},
-  {0x0000,0x0000,0xe7df,0x0000,0x25ff,0xf2ce,0x0000,0x1aad,0x6f1f,0x9cf3,0x89a8,0x0000,0x0000,0x7b10,0x1bb3,0x1125},
-  {0x0000,0x0040,0xf7fe,0x0000,0x5f06,0x0000,0x9cf3,0x23a2,0xafb2,0x0000,0x0000,0x7f8a,0x3662,0x2985,0x3ba5,0x1201},
-  {0x0000,0x0000,0xffde,0x0000,0xfce2,0x0000,0x9cf3,0x7283,0xfe2a,0x0000,0x0000,0x3962,0xdd49,0xfed2,0x9b22,0xfd85},
-  {0x0000,0x0000,0xffdf,0x0000,0xf36a,0x0000,0x528a,0xf512,0x7924,0x94b2,0x0000,0x0000,0xe638,0x40e3,0x9a67,0xe9e6},
-  {0x0000,0x0000,0xffdf,0x0000,0xd9fb,0x0000,0x518a,0xf41e,0xa434,0x712e,0x0000,0x3106,0x0000,0xf59e,0xe2fc,0x8a71},
-  {0x0000,0x0000,0x0000,0xee07,0x0000,0x7344,0x0000,0xcc43,0x5202,0x0000,0x0000,0xcd46,0x7241,0x1060,0x9ba3,0xed44},
-  {0x0000,0x0820,0x0000,0xf688,0x0000,0x8b64,0xe4e3,0x0000,0x3941,0x0000,0xd566,0xbbc2,0x6a62,0x0000,0xa425,0xedc6},
-  {0x0000,0x4940,0x38e0,0xf669,0x38e0,0xcb81,0x38e0,0x82e3,0xc4e7,0x38e0,0xa3e5,0x38e0,0xeda7,0xdca3,0x92c1,0x3900},
-  {0x0000,0x2925,0x2104,0x8c71,0x2104,0x2104,0x5aeb,0x2104,0x4a49,0x2104,0x7bcf,0x2104,0x2104,0x2104,0x2104,0x4208},
-  {0x0000,0x4940,0x38e0,0xf689,0x38e0,0xcba1,0x38e0,0x38e0,0xbcc7,0x8b03,0x6a01,0x38e0,0xedc7,0xabe4,0xdca3,0x92a0},
-  {0x0000,0x3166,0x2104,0x9492,0x2104,0x632c,0x2104,0x2104,0x738e,0x4208,0x2104,0x2104,0x2104,0x2104,0x5acb,0x8410},
-  {0x0000,0x0020,0x16de,0xafa7,0x0000,0x1537,0x8e06,0x0000,0x15fa,0x00c3,0x9ee6,0x10c1,0x1598,0x167c,0x9686,0xa747},
-  {0x0000,0x0861,0xb596,0x0000,0x4e23,0x0000,0x4a49,0x8430,0x7f47,0x22c1,0x2164,0x4463,0x0000,0x5aeb,0x66a5,0x5d65},
-  {0x0000,0x2945,0x0000,0xb5d6,0x0000,0x736e,0x94b2,0x4a69,0x0000,0x0000,0x62ec,0x8410,0xad55,0x4208,0x0000,0x3186},
+  {0x0000,0xfe4e,0x0000,0xfef3,0x0000,0xc362,0xc362,0xfef3,0xdc65,0xfe4e,0xfda9,0xfdaa,0xe4c7,0xc362,0x4121,0xc362},
+  {0x0000,0x6f1a,0x0000,0x9fdd,0x0000,0x13ce,0x13ce,0x24d2,0x9fdd,0x66fa,0x3e57,0x3e37,0x2d53,0x13ce,0x0945,0x13ce},
+  {0x0000,0xfcd8,0x0000,0xfdda,0x0000,0xb18d,0xb18d,0xfdfa,0xd270,0xfcb7,0xe2d2,0xfbb5,0xfbb5,0xb18d,0x4084,0xb18d},
+  {0x0000,0xc362,0xff14,0xffff,0xc362,0xfeb2,0xfd89,0xfd89,0xff14,0xc362,0xfd89,0xff99,0xe5af,0xffff,0xff57,0xff14},
+  {0x0000,0x13ce,0xa7fd,0xd7fe,0x13ce,0xffff,0x3616,0x7e37,0x3616,0xa7fd,0x13ce,0x3616,0x8f3b,0xa7fd,0xffff,0xbffe},
+  {0x0000,0xb18d,0xfe1b,0xffff,0xb18d,0xfd79,0xfb74,0xfb74,0xb18d,0xfe1b,0xfb74,0xfefd,0xdc96,0xffff,0xfe1b,0xfe9c},
+  {0x0000,0x7c12,0xffdf,0x31a7,0xf7be,0xdefc,0x73b0,0xb5d8,0x9493,0xf79e,0xd6bb,0x634e,0xd6bb,0xd6db,0x9cf5,0xad76},
+  {0x0000,0x8453,0xffff,0xf79e,0x73d1,0xad77,0xce7a,0xc67a,0xf7be,0x7bf2,0xf7de,0xd6db,0xce9a,0xa556,0xffff,0x8473},
+  {0x0000,0x4256,0xef7f,0xc65e,0x10c9,0x7c17,0xdf1e,0x94db,0x39f2,0xbe1c,0x422f,0xce7d,0x5b15,0x6b98,0xef7f,0xc63c},
+  {0x0000,0x4a96,0xc67f,0xce9f,0x31d5,0x94fc,0xc65e,0x8c9b,0x4276,0x5b7f,0x5b7f,0xce9f,0xd6be,0x637d,0x6b9a,0xbe5e},
+  {0x0000,0xc246,0xf6b9,0x58e2,0xee37,0xed32,0xbbcc,0xf6b9,0x99a4,0xd40d,0xf5f5,0xee37,0xc2c8,0xff3b,0xdc2e,0xff3b},
+  {0x0000,0xc246,0xf6b9,0xc226,0xfdb3,0xfdb3,0xfbcb,0xec2d,0xe42e,0xd2e8,0xf6b9,0xf6b9,0xfdb3,0xfbcb,0xf593,0xfd72},
+  {0x0000,0x1c0f,0xdfde,0xaf9c,0x09c6,0xb6ba,0x6e17,0x134c,0xc71b,0x6d94,0xd79d,0xe7fe,0x8e78,0x3c91,0x6595,0xbeda},
+  {0x0000,0x1c0f,0xcf5c,0x9f9c,0x1c0f,0x3616,0x5e16,0xa7bd,0x8658,0x34b1,0x3616,0x4db5,0xb7dd,0xa7bd,0xcf5c,0xa7fd},
+  {0x0000,0xc3a3,0xf739,0x5981,0xee96,0xee10,0xbcec,0xf739,0x9ae2,0xccc9,0xf6f5,0xf739,0xffbb,0xc3e5,0xddae,0xdd2c},
+  {0x0000,0xcba3,0xf739,0xff14,0xcba3,0xfd89,0xfef4,0xed8b,0xe56c,0xd446,0xfd89,0xff16,0xf739,0xf6d4,0xff14,0xf6b2},
+  {0x0000,0x18a3,0xf7de,0x10a2,0x4db2,0x10a2,0x3b2b,0xa719,0x10a2,0x10a2,0x2165,0x7490,0x2ccf,0x7655,0xc77c,0x10a2},
+  {0x0000,0x18a3,0xbf7b,0x10a2,0x4571,0x10a2,0x6778,0x3bed,0x10a2,0x7e56,0x10a2,0x74b1,0x9f39,0x6614,0x10a2,0x21c6},
+  {0x0000,0x18c3,0x10a2,0xb73a,0x3d50,0x10a2,0x4269,0x7675,0x10a2,0x10a2,0x53ad,0x8513,0x3b6b,0x21e6,0x9ef8,0x55f3},
+  {0x0000,0x18a3,0xbf7b,0x10a2,0x4571,0x10a2,0x6778,0x3bed,0x10a2,0x7e56,0x10a2,0x74b1,0x9f39,0x6614,0x10a2,0x21c6},
+  {0x0000,0x0000,0xe657,0x0000,0xcb0a,0x0000,0x5d74,0x2c0f,0xe46e,0x5248,0x8f1a,0x9a88,0x0000,0x0000,0xa44f,0x1965},
+  {0x0000,0x0000,0xeef9,0x0000,0xc2e9,0x0000,0x5d74,0x2bce,0xe48f,0x69c6,0x8f1a,0x0000,0x72ea,0x0000,0xa490,0x1985},
+  {0x0000,0x0020,0xe6f9,0x0000,0xcb2a,0x0000,0x65b5,0x232c,0xe511,0x6a68,0x8f1a,0x9b0a,0x0000,0x0000,0x2185,0x3c70},
+  {0x0000,0x0020,0xef3a,0x0000,0x5533,0x0000,0x975b,0x32aa,0x9cb1,0x0000,0x0000,0xd677,0x2165,0x62eb,0x342f,0x7637},
+  {0x0000,0x0020,0xe6f9,0x0000,0x3450,0x0000,0x3aca,0x7eb9,0x0000,0x8c4f,0x0000,0xd656,0x83cd,0x1104,0x977c,0x65d5},
+  {0x0000,0x0020,0xf77c,0x0000,0x4d33,0x0000,0xb574,0x3289,0x975b,0x0000,0x0000,0x6b8d,0x6e37,0x342f,0xdeb8,0x1945},
+  {0x0000,0x0000,0xe6f9,0x0000,0x44d1,0x0000,0x3248,0x86d9,0x0000,0x0000,0x630b,0xde97,0x1924,0x340f,0x977c,0x65f6},
+  {0x0000,0x0841,0xff9c,0x8f3a,0x0000,0x83ef,0xff9c,0x3c70,0x0821,0xd657,0x3165,0x6df6,0xf77b,0x9cd2,0x3228,0xff9c},
+  {0x0000,0x0841,0xff9c,0x8f3b,0x0000,0x736d,0xff9c,0x840f,0x0000,0xc5f6,0xf77c,0x65f6,0xf75b,0x3228,0xd656,0x3c70},
+  {0x0000,0x0841,0xff9c,0x8f3b,0x0000,0x736c,0xff9c,0x3c50,0x0000,0xc5f6,0xff7c,0xf75b,0x6dd5,0x3a28,0xd657,0x9c91},
+  {0x0000,0x08a2,0xff9c,0x975b,0x0000,0x736c,0xff9c,0x3c90,0x0000,0xc5f6,0xff9c,0x3a89,0xf75b,0x65f6,0xa4f2,0x9c91},
+  {0x0000,0x0861,0xff9c,0x975b,0x0000,0x736d,0xea49,0xff9c,0x3c70,0x0000,0xc5f6,0x9986,0xff9c,0x6df6,0xf75b,0x3248},
+  {0x0000,0x0020,0xef3a,0x0000,0x4cf2,0x0000,0x3248,0x975b,0xad12,0x0000,0x0000,0xd677,0x33ee,0x1904,0x6e37,0x83ce},
+  {0x0000,0x0000,0xef1a,0x0000,0x4491,0x0000,0x7eb9,0x4a89,0x8c4f,0x0000,0x0000,0x2185,0x65d5,0xde97,0x977c,0x336c},
+  {0x0000,0x0000,0x0000,0xf531,0xba27,0x0000,0x5924,0xd3cc,0x0000,0x0000,0x9288,0x2082,0xab6b,0xe48f,0xcae9,0x71e6},
+  {0x0000,0xdedb,0x0000,0xffdf,0x4a49,0x73ae,0x0000,0xbdf7,0x4228,0xce59,0xef5d,0x7bef,0x94b2,0xce79,0xb596,0xffff},
+  {0x0000,0x0000,0xb71e,0x0000,0x3435,0x0000,0x75ba,0x5bd0,0x0000,0x0000,0x1105,0x4b2e,0x9e7c,0x54f8,0x7494,0x0000},
+  {0x0000,0x0000,0xd7b5,0x0000,0x7548,0x0000,0xa66f,0x1922,0x0000,0x0000,0x5b68,0x8dcc,0x0000,0xbf12,0x5c86,0x746b},
+  {0x0000,0x0000,0xf6b2,0x0000,0xc3c4,0x0000,0xdd0a,0x3143,0xa44b,0x0000,0x0000,0xd467,0xe5ce,0x0000,0x7b27,0x20c1},
+  {0x0000,0x0000,0xf572,0x0000,0xc287,0x0000,0xdbcc,0x61c6,0x0000,0x0000,0x7a68,0xd32a,0xe48f,0x28a2,0x0000,0x9b2a},
+  {0x0000,0x0000,0xcdfe,0x0000,0x6238,0x0000,0x9bfb,0x20e6,0x7b74,0x0000,0x0000,0x5a8f,0x7b1a,0x0000,0xbd3d,0x18a4},
+  {0x0000,0x0000,0x0000,0xfe20,0x0000,0x7ae0,0x0000,0x0000,0xc4e0,0x5200,0x0000,0xa400,0x1080,0xdd60,0x0000,0x0000},
+  {0x0000,0x0820,0x0000,0xfe20,0x0000,0x8320,0x0000,0x3960,0xc4c0,0x0000,0x0000,0x0000,0x0000,0x6a80,0x9bc0,0xdd80},
+  {0x0000,0x1a07,0x1185,0xdf9d,0x4d92,0x1185,0x1185,0x96f8,0x344d,0x1185,0x7615,0x2aea,0x1185,0x5cf1,0xb75a,0x1185},
+  {0x0000,0x2965,0x2104,0x8c51,0x2104,0x630c,0x2104,0x2104,0x2104,0x4a49,0x738e,0x2104,0x2104,0x2104,0x2104,0x2104},
+  {0x0000,0x11c6,0x1185,0xe7bd,0x5dd3,0x1185,0x2bec,0x9ef8,0x1185,0x1185,0x5c2f,0x22a9,0x7e55,0x3d51,0x1185,0xb77b},
+  {0x0000,0x2965,0x2104,0x8c71,0x2104,0x630c,0x2104,0x2104,0x4228,0x2104,0x738e,0x2104,0x2104,0x2104,0x8410,0x2104},
+  {0x0000,0x23ce,0x0000,0xe46e,0x1061,0xc267,0x7eb9,0x5db5,0x0000,0xd36b,0x18e3,0x7985,0x3cb1,0x0000,0x8a68,0x2aeb},
+  {0x0000,0x0841,0xc5fa,0x0000,0x3c70,0x0000,0x8c33,0x424a,0x7678,0x0000,0x0000,0x630d,0x5553,0x0000,0x2166,0xad57},
+  {0x0000,0x0000,0xc5fa,0x0000,0x6b2e,0x0000,0x9cb5,0x39a7,0x0000,0x0000,0x0000,0x18c3,0x8413,0xad57,0x526b,0x0000},
 };
 const uint8_t sprite_pal_a[][16] = {
-  {0,15,2,9,9,15,5,13,15,8,11,6,3,9,15,15},
-  {0,15,1,9,15,5,12,15,7,4,15,15,14,10,15,15},
-  {0,15,2,9,9,13,5,15,8,11,15,6,3,9,15,15},
-  {0,15,2,12,5,7,13,15,8,15,3,4,9,15,15,14},
-  {0,15,2,12,5,15,7,8,15,3,4,15,13,9,14,15},
-  {0,15,2,9,15,5,13,8,12,4,15,3,7,15,14,15},
-  {0,15,1,9,8,14,1,9,6,11,4,14,14,11,2,4},
-  {0,15,2,3,14,6,10,7,10,15,7,8,15,5,10,7},
-  {0,15,1,9,8,1,14,6,11,9,4,14,11,14,2,4},
-  {0,15,2,3,14,6,14,6,9,15,8,8,5,6,12,9},
-  {0,15,1,1,14,14,8,8,11,15,11,14,12,4,13,5},
-  {0,15,3,1,14,5,11,15,9,11,14,5,9,15,1,11},
-  {0,15,1,1,14,14,8,8,15,14,11,13,11,4,5,14},
-  {0,15,2,2,14,10,5,15,5,11,15,9,11,6,10,1},
-  {0,15,1,1,14,14,8,8,11,15,14,11,4,13,12,5},
-  {0,15,3,2,14,14,6,15,9,14,6,1,10,11,11,15},
-  {0,15,3,15,15,9,15,15,6,15,13,15,15,15,15,15},
-  {0,15,2,15,15,9,15,5,15,11,15,15,15,13,3,7},
-  {0,15,1,6,15,7,15,10,2,15,3,15,15,13,6,15},
-  {0,15,2,15,15,9,15,5,15,11,15,15,15,13,3,7},
-  {0,15,15,2,15,7,15,15,15,15,15,6,15,15,12,15},
-  {0,15,15,3,15,15,11,15,15,15,15,15,7,15,15,15},
-  {0,15,15,3,15,15,11,15,15,15,15,15,7,15,15,15},
-  {0,15,2,15,15,7,15,15,15,5,11,15,15,15,15,15},
-  {0,15,2,15,15,7,15,15,15,5,15,11,15,15,15,15},
-  {0,15,2,15,15,7,15,15,15,5,11,15,15,15,15,15},
-  {0,15,1,15,15,7,15,15,11,15,3,15,15,15,15,15},
-  {0,15,3,2,15,9,15,9,6,15,2,15,15,13,4,15},
-  {0,15,2,15,2,8,15,9,15,6,12,15,15,15,15,5},
-  {0,15,2,15,2,8,15,9,15,6,12,15,15,15,15,5},
-  {0,15,2,2,15,8,15,9,6,12,15,15,15,5,15,15},
-  {0,15,2,2,15,8,15,15,9,6,15,15,15,14,15,5},
-  {0,15,2,15,15,7,15,15,15,11,5,15,15,15,15,15},
-  {0,15,2,15,15,8,15,15,15,15,5,11,15,15,15,15},
-  {0,15,1,15,8,15,15,11,15,3,15,15,15,5,13,9},
-  {0,15,1,6,9,4,7,9,2,15,7,6,11,13,4,12},
-  {0,15,15,2,15,15,8,15,15,15,15,5,12,15,15,15},
-  {0,15,15,2,15,8,15,15,15,5,12,15,15,15,15,15},
-  {0,15,15,2,15,8,15,15,15,5,12,15,15,15,15,15},
-  {0,15,15,2,15,8,15,15,15,15,5,12,15,15,15,15},
-  {0,15,15,2,15,8,15,15,15,15,5,15,12,15,15,15},
-  {0,15,1,15,7,15,11,15,15,4,13,15,15,15,15,15},
-  {0,15,2,15,8,15,15,11,15,4,15,15,15,13,15,15},
-  {0,15,2,15,10,15,5,15,15,11,15,4,15,15,15,14},
-  {0,15,1,15,9,5,15,12,15,4,15,14,2,10,11,15},
-  {0,15,1,15,6,15,12,4,15,15,15,10,15,15,15,15},
-  {0,15,1,15,7,15,12,4,15,15,10,14,5,2,15,15},
-  {0,15,15,15,11,15,15,13,15,15,15,15,15,15,15,15},
-  {0,15,15,5,15,9,15,15,15,15,15,15,8,15,15,15},
-  {0,15,4,15,9,15,15,15,6,8,15,15,15,15,5,15},
+  {0,15,2,1,14,7,1,6,13,11,1,6,9,10,14,5},
+  {0,15,2,1,14,7,1,13,6,11,6,1,9,10,14,5},
+  {0,15,2,1,14,7,1,6,13,11,9,1,6,10,14,5},
+  {0,15,1,10,1,15,11,1,11,11,15,15,15,8,15,15},
+  {0,15,1,15,1,8,11,15,1,11,11,15,15,15,10,15},
+  {0,15,1,10,1,15,11,1,11,11,15,15,15,8,15,15},
+  {0,15,4,7,15,9,11,15,11,9,7,8,4,15,15,11},
+  {0,15,2,10,2,8,15,2,7,9,14,10,7,15,4,7},
+  {0,15,4,15,7,11,9,15,11,7,8,9,11,15,7,4},
+  {0,15,2,13,2,8,7,15,8,11,2,4,9,15,7,15},
+  {0,15,1,7,9,15,10,6,10,13,15,4,13,9,15,4},
+  {0,15,1,7,13,5,2,11,15,11,9,5,2,7,15,10},
+  {0,15,1,15,7,9,13,11,5,10,5,9,15,13,15,1},
+  {0,15,1,11,7,2,11,4,15,11,7,15,8,15,6,2},
+  {0,15,1,7,9,15,10,6,10,13,15,4,9,13,13,15},
+  {0,15,1,12,7,2,4,11,15,11,7,8,6,15,2,11},
+  {0,15,15,2,15,8,15,15,5,13,15,15,15,15,15,10},
+  {0,15,15,1,15,9,15,15,12,15,3,15,15,15,6,15},
+  {0,15,1,15,15,8,15,15,5,10,15,15,15,15,15,15},
+  {0,15,15,1,15,9,15,15,12,15,3,15,15,15,6,15},
+  {0,15,15,1,15,7,15,15,15,15,15,15,3,12,15,15},
+  {0,15,15,2,15,7,15,15,15,15,15,11,15,4,15,15},
+  {0,15,15,2,15,7,15,15,15,15,15,15,11,4,15,15},
+  {0,15,15,2,15,7,15,15,15,5,11,15,15,15,15,15},
+  {0,15,15,2,15,7,15,15,5,15,11,15,15,15,15,15},
+  {0,15,15,2,15,7,15,15,15,5,11,15,15,15,15,15},
+  {0,15,15,1,15,7,15,15,11,3,15,15,15,15,15,15},
+  {0,15,2,15,2,9,9,15,6,15,2,15,15,4,15,5},
+  {0,15,2,15,2,8,9,15,6,12,15,15,5,15,15,15},
+  {0,15,2,15,2,9,9,15,6,12,15,5,15,15,15,5},
+  {0,15,2,15,2,9,9,15,6,12,15,15,5,15,15,5},
+  {0,15,2,15,2,8,15,9,15,6,12,15,15,15,5,15},
+  {0,15,15,2,15,7,15,15,15,11,5,15,15,15,15,15},
+  {0,15,15,2,15,8,15,15,15,5,11,15,15,15,15,15},
+  {0,15,2,15,15,7,15,15,11,4,15,15,15,15,15,15},
+  {0,15,2,5,9,4,7,9,2,6,15,11,6,12,13,7},
+  {0,15,15,4,15,8,15,15,11,5,15,15,15,15,15,13},
+  {0,15,15,4,15,8,15,15,11,5,15,15,13,15,15,15},
+  {0,15,15,4,15,8,15,15,15,11,5,15,15,13,15,15},
+  {0,15,15,4,15,8,15,15,11,5,15,15,15,15,13,15},
+  {0,15,15,4,15,8,15,15,15,11,5,15,15,13,15,15},
+  {0,15,1,15,7,15,11,3,15,15,13,15,15,15,5,6},
+  {0,15,2,15,8,15,11,15,15,4,13,9,6,15,15,15},
+  {0,15,1,15,15,8,11,15,15,4,15,15,10,15,15,13},
+  {0,15,1,15,8,15,11,4,9,15,15,13,2,5,3,10},
+  {0,14,2,15,15,6,15,15,12,4,15,15,15,15,9,15},
+  {0,15,1,15,8,15,11,4,15,9,15,2,6,13,15,3},
+  {0,15,4,15,11,15,15,15,7,15,13,14,15,13,14,14},
+  {0,15,15,2,15,8,15,15,15,9,4,15,15,13,15,15},
+  {0,15,15,2,15,8,15,15,10,4,13,15,15,15,15,9},
 };
-static const uint8_t adv_small[] = {3,3,10,3,4,4,6,3,4,3,4,6,6,6,6,6,6,6,6,6,6,3,5,8,7,7,8,6,6,8,8,3,4,7,6,9,8,8,7,8,7,6,7,8,8,11,7,6,6};
-static const uint8_t adv_big[] = {4,6,26,5,8,8,8,6,8,6,8,14,9,14,14,15,14,14,14,14,14,6,9,17,15,12,14,11,10,14,14,7,12,15,10,18,14,15,14,16,15,11,13,14,14,21,15,14,14};
-static const uint8_t adv_huge[] = {6,9,39,8,12,12,13,10,12,9,12,21,14,20,22,22,21,21,20,21,21,8,14,25,22,18,21,17,16,20,21,10,18,23,16,26,22,23,20,24,22,17,19,20,22,31,22,20,22};
+static const uint8_t adv_small[] = {3,3,10,3,4,4,6,3,5,3,4,6,6,6,6,6,6,6,6,6,6,3,5,8,7,7,8,6,6,8,8,3,4,7,6,9,8,8,7,8,7,7,7,8,8,11,7,7,6};
+static const uint8_t adv_big[] = {5,7,20,6,7,7,13,6,7,6,5,14,12,14,14,14,14,14,13,14,14,6,13,16,16,16,16,15,14,17,17,7,13,17,13,20,17,17,15,17,16,15,15,17,16,21,16,16,15};
+static const uint8_t adv_huge[] = {7,9,28,8,9,9,18,9,10,9,7,19,18,19,20,20,20,20,18,20,20,9,18,23,22,23,22,21,19,24,24,9,18,24,19,28,24,24,21,24,23,21,21,24,23,30,23,23,21};
 const Font fonts[3] = {
   {7,1,1,1,8,102,adv_small},
-  {13,1,1,2,9,151,adv_big},
-  {19,2,2,2,9,200,adv_huge},
+  {12,1,1,1,7,151,adv_big},
+  {17,2,2,2,7,200,adv_huge},
 };
 const uint8_t font_charmap[96] = {0,1,255,255,255,2,255,3,4,5,255,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,255,255,255,255,22,255,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,255,255,255,255,255,255,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,255,255,255,255,255};
 const uint16_t bg_rects[BG_RECTS][4] = {{4,4,16,16},{28,4,64,16},{4,28,88,72},{4,108,88,64},{4,180,88,88},{4,276,88,104},{4,388,88,120},{100,4,120,88},{100,100,120,88},{100,196,72,16},{100,220,72,64},{180,196,40,16},{180,220,40,64},{100,292,40,40},{148,292,72,40},{100,340,120,168},{228,4,152,88},{228,100,152,56},{228,164,56,104},{292,164,88,104},{228,276,96,104},{332,276,48,56},{332,340,48,40},{228,388,152,120},{388,4,120,200},{388,212,120,48},{388,268,120,80},{388,356,120,88},{388,452,32,56},{428,452,80,56}};
 const uint8_t sprite_blob[] = {
-  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,159,111,111,111,111,111,111,111,111,111,111,
-  111,111,111,111,111,111,159,255,255,111,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,111,255,255,110,14,14,
-  14,14,14,14,14,14,14,14,14,14,14,14,14,14,110,255,255,110,13,13,13,13,13,13,13,13,13,13,13,13,13,13,
-  13,13,110,255,255,109,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,12,109,255,255,125,11,11,11,11,11,11,
-  11,11,11,11,11,11,11,11,11,11,125,255,255,124,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,124,255,
-  255,124,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,124,255,255,139,9,9,9,9,9,9,9,9,9,9,
-  9,9,9,9,9,9,139,255,255,139,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,139,255,255,138,7,7,
-  7,7,7,7,7,7,7,7,7,7,7,7,7,7,138,255,255,154,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-  6,6,154,255,255,153,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,153,255,255,169,5,5,5,5,5,5,
-  5,5,5,5,5,5,5,5,5,5,169,255,255,168,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,168,255,
-  255,184,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,184,255,255,199,2,2,2,2,2,2,2,2,2,2,
-  2,2,2,2,2,2,199,255,255,234,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,199,234,255,255,255,255,255,
   255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,255,255,138,109,109,109,109,109,184,124,109,109,109,109,124,184,109,109,109,109,109,138,8,12,12,12,12,12,3,11,
-  12,12,12,12,11,3,12,12,12,12,12,8,8,12,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,
-  8,12,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,8,12,12,12,12,12,3,11,12,12,12,12,
-  11,3,12,12,12,12,12,8,2,3,3,3,3,3,1,3,3,3,3,3,3,1,3,3,3,3,3,2,5,8,8,8,
-  8,8,2,7,8,8,8,8,7,2,8,8,8,8,8,5,6,9,9,9,9,9,2,8,9,9,9,9,8,2,9,9,
-  9,9,9,6,6,9,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,9,6,6,9,9,9,9,9,2,8,
-  9,9,9,9,8,2,9,9,9,9,9,6,6,9,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,9,6,
-  5,8,8,8,8,8,2,7,8,8,8,8,7,2,8,8,8,8,8,5,1,2,2,2,2,2,0,1,2,2,2,2,
-  1,0,2,2,2,2,2,1,4,6,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,4,6,6,6,
-  6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,4,6,6,6,6,6,2,5,6,6,6,6,5,2,6,6,
-  6,6,6,4,4,6,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,4,6,6,6,6,6,2,5,
-  6,6,6,6,5,2,6,6,6,6,6,4,2,4,4,4,4,4,1,3,4,4,4,4,3,1,4,4,4,4,4,2,
-  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,174,109,109,109,109,184,124,109,109,109,109,
-  124,184,109,109,109,109,109,138,255,109,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,255,109,12,12,
-  12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,255,109,12,12,12,12,3,11,12,12,12,12,11,3,12,12,
-  12,12,12,8,255,109,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,255,184,3,3,3,3,1,3,
-  3,3,3,3,3,1,3,3,3,3,3,2,255,139,8,8,8,8,2,7,8,8,8,8,7,2,8,8,8,8,8,5,
-  255,139,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,9,6,255,139,9,9,9,9,2,8,9,9,9,9,
-  8,2,9,9,9,9,9,6,255,139,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,9,6,255,139,9,9,
-  9,9,2,8,9,9,9,9,8,2,9,9,9,9,9,6,255,139,8,8,8,8,2,7,8,8,8,8,7,2,8,8,
-  8,8,8,5,255,215,2,2,2,2,0,1,2,2,2,2,1,0,2,2,2,2,2,1,255,153,6,6,6,6,2,5,
-  6,6,6,6,5,2,6,6,6,6,6,4,255,153,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,
-  255,153,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,255,153,6,6,6,6,2,5,6,6,6,6,
-  5,2,6,6,6,6,6,4,255,153,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,255,184,4,4,
-  4,4,1,3,4,4,4,4,3,1,4,4,4,4,4,2,255,138,8,8,8,8,2,7,8,8,8,8,7,2,8,8,
-  8,8,8,5,138,60,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,8,12,12,12,12,12,3,11,
-  12,12,12,12,11,3,12,12,12,12,12,8,8,12,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,
-  8,12,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,8,12,12,12,12,12,3,11,12,12,12,12,
-  11,3,12,12,12,12,12,8,2,3,3,3,3,3,1,3,3,3,3,3,3,1,3,3,3,3,3,2,5,8,8,8,
-  8,8,2,7,8,8,8,8,7,2,8,8,8,8,8,5,6,9,9,9,9,9,2,8,9,9,9,9,8,2,9,9,
-  9,9,9,6,6,9,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,9,6,6,9,9,9,9,9,2,8,
-  9,9,9,9,8,2,9,9,9,9,9,6,6,9,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,9,6,
-  5,8,8,8,8,8,2,7,8,8,8,8,7,2,8,8,8,8,8,5,1,2,2,2,2,2,0,1,2,2,2,2,
-  1,0,2,2,2,2,2,1,4,6,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,4,6,6,6,
-  6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,4,6,6,6,6,6,2,5,6,6,6,6,5,2,6,6,
-  6,6,6,4,4,6,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,4,6,6,6,6,6,2,5,
-  6,6,6,6,5,2,6,6,6,6,6,4,2,4,4,4,4,4,1,3,4,4,4,4,3,1,4,4,4,4,4,2,
-  5,8,8,8,8,8,2,7,8,8,8,8,7,2,8,8,8,8,8,5,8,12,12,12,12,12,3,11,12,12,12,12,
-  11,3,12,12,12,12,12,8,8,12,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,8,12,12,12,
-  12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,8,12,12,12,12,12,3,11,12,12,12,12,11,3,12,12,
-  12,12,12,8,8,12,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,12,8,2,3,3,3,3,3,1,3,
-  3,3,3,3,3,1,3,3,3,3,3,2,5,8,8,8,8,8,2,7,8,8,8,8,7,2,8,8,8,8,8,5,
-  6,9,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,9,6,6,9,9,9,9,9,2,8,9,9,9,9,
-  8,2,9,9,9,9,9,6,6,9,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,9,6,6,9,9,9,
-  9,9,2,8,9,9,9,9,8,2,9,9,9,9,9,6,5,8,8,8,8,8,2,7,8,8,8,8,7,2,8,8,
-  8,8,8,5,1,2,2,2,2,2,0,1,2,2,2,2,1,0,2,2,2,2,2,1,4,6,6,6,6,6,2,5,
-  6,6,6,6,5,2,6,6,6,6,6,4,4,6,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,
-  4,6,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,4,6,6,6,6,6,2,5,6,6,6,6,
-  5,2,6,6,6,6,6,4,4,6,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,6,4,2,4,4,4,
-  4,4,1,3,4,4,4,4,3,1,4,4,4,4,4,2,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,255,255,255,174,109,109,109,109,184,124,109,109,109,109,124,184,109,109,109,109,174,255,255,109,12,12,12,12,3,11,
-  12,12,12,12,11,3,12,12,12,12,109,255,255,109,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,109,255,
-  255,109,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,109,255,255,109,12,12,12,12,3,11,12,12,12,12,
-  11,3,12,12,12,12,109,255,255,184,3,3,3,3,1,3,3,3,3,3,3,1,3,3,3,3,184,255,255,139,8,8,
-  8,8,2,7,8,8,8,8,7,2,8,8,8,8,139,255,255,139,9,9,9,9,2,8,9,9,9,9,8,2,9,9,
-  9,9,139,255,255,139,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,139,255,255,139,9,9,9,9,2,8,
-  9,9,9,9,8,2,9,9,9,9,139,255,255,139,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,139,255,
-  255,139,8,8,8,8,2,7,8,8,8,8,7,2,8,8,8,8,139,255,255,215,2,2,2,2,0,1,2,2,2,2,
-  1,0,2,2,2,2,215,255,255,153,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,153,255,255,153,6,6,
-  6,6,2,5,6,6,6,6,5,2,6,6,6,6,153,255,255,153,6,6,6,6,2,5,6,6,6,6,5,2,6,6,
-  6,6,153,255,255,153,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,153,255,255,153,6,6,6,6,2,5,
-  6,6,6,6,5,2,6,6,6,6,153,255,255,184,4,4,4,4,1,3,4,4,4,4,3,1,4,4,4,4,184,255,
-  255,138,8,8,8,8,2,7,8,8,8,8,7,2,8,8,8,8,138,255,255,109,12,12,12,12,3,11,12,12,12,12,
-  11,3,12,12,12,12,109,255,255,109,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,109,255,255,109,12,12,
-  12,12,3,11,12,12,12,12,11,3,12,12,12,12,109,255,255,109,12,12,12,12,3,11,12,12,12,12,11,3,12,12,
-  12,12,109,255,255,109,12,12,12,12,3,11,12,12,12,12,11,3,12,12,12,12,109,255,255,184,3,3,3,3,1,3,
-  3,3,3,3,3,1,3,3,3,3,184,255,255,139,8,8,8,8,2,7,8,8,8,8,7,2,8,8,8,8,139,255,
-  255,139,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,139,255,255,139,9,9,9,9,2,8,9,9,9,9,
-  8,2,9,9,9,9,139,255,255,139,9,9,9,9,2,8,9,9,9,9,8,2,9,9,9,9,139,255,255,139,9,9,
-  9,9,2,8,9,9,9,9,8,2,9,9,9,9,139,255,255,139,8,8,8,8,2,7,8,8,8,8,7,2,8,8,
-  8,8,139,255,255,215,2,2,2,2,0,1,2,2,2,2,1,0,2,2,2,2,215,255,255,153,6,6,6,6,2,5,
-  6,6,6,6,5,2,6,6,6,6,153,255,255,153,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,153,255,
-  255,153,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,153,255,255,153,6,6,6,6,2,5,6,6,6,6,
-  5,2,6,6,6,6,153,255,255,153,6,6,6,6,2,5,6,6,6,6,5,2,6,6,6,6,153,255,255,184,4,4,
-  4,4,1,3,4,4,4,4,3,1,4,4,4,4,184,255,16,34,34,34,34,34,34,34,34,34,34,34,1,33,68,68,
-  68,68,68,68,68,68,68,68,68,18,66,118,119,119,119,119,119,119,119,119,119,103,36,66,119,119,119,119,119,119,119,119,
-  119,119,119,36,66,119,68,68,68,68,68,68,68,68,68,119,36,66,119,36,34,34,34,34,34,34,34,66,119,36,66,119,
-  36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,
-  0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,
-  119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,
-  0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,
-  66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,
-  0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,34,34,34,34,34,34,34,66,119,
-  36,66,119,68,68,68,68,68,68,68,68,68,119,36,66,119,119,119,119,119,119,119,119,119,119,119,36,66,118,119,119,119,
-  119,119,119,119,119,119,103,36,33,68,68,68,68,68,68,68,68,68,68,68,18,16,34,34,34,34,34,34,34,34,34,34,
-  34,1,34,34,34,34,34,34,34,34,34,34,68,68,68,68,68,68,68,68,68,68,119,119,119,119,119,119,119,119,119,119,
-  119,119,119,119,119,119,119,119,119,119,68,68,68,68,68,68,68,68,68,68,34,34,34,34,34,34,34,34,34,34,16,34,
-  34,34,34,34,34,34,34,34,34,2,33,68,68,68,68,68,68,68,68,68,68,4,66,118,119,119,119,119,119,119,119,119,
-  119,7,66,119,119,119,119,119,119,119,119,119,119,7,66,119,68,68,68,68,68,68,68,68,68,4,66,119,36,34,34,34,
-  34,34,34,34,34,2,66,119,36,0,0,0,0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,0,0,66,119,
-  36,0,0,0,0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,
-  0,0,66,119,36,0,0,0,0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,0,0,66,119,36,0,0,0,
-  0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,0,0,66,119,
-  36,0,0,0,0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,
-  0,0,66,119,36,0,0,0,0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,0,0,66,119,36,0,0,0,
-  0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,0,0,0,17,0,32,51,2,49,85,19,49,85,19,32,51,
-  2,0,17,0,16,34,34,34,34,34,34,34,34,34,34,34,1,33,68,68,68,68,68,68,68,68,68,68,68,18,66,118,
-  119,119,119,119,119,119,119,119,119,103,36,66,119,119,119,119,119,119,119,119,119,119,119,36,66,119,68,68,68,68,68,68,
-  68,68,68,119,36,66,119,36,34,34,34,34,34,34,34,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,
-  119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,
-  0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,
-  66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,
-  0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,
-  36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,
-  0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,
-  119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,
-  0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,
-  66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,
-  0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,
-  0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,
-  36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,
-  0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,
-  119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,66,119,36,0,0,0,0,
-  0,0,0,66,119,36,66,119,36,0,0,0,0,0,0,0,66,119,36,0,0,0,0,0,0,0,0,0,243,245,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,252,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,243,239,223,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,127,111,252,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,243,239,15,15,223,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,250,127,
-  15,15,111,252,0,0,0,0,0,0,0,0,0,0,0,0,0,243,239,15,15,15,15,223,245,0,0,0,0,0,0,0,
-  0,0,0,0,0,250,127,15,15,15,15,111,252,0,0,0,0,0,0,0,0,0,0,0,243,239,15,15,15,15,15,15,
-  223,245,0,0,0,0,0,0,0,0,0,0,250,127,15,15,15,15,15,15,111,252,0,0,0,0,0,0,0,0,0,243,
-  239,30,14,14,14,14,14,14,14,223,245,0,0,0,0,0,0,0,0,250,109,13,13,13,13,13,13,13,13,109,252,0,
-  0,0,0,0,0,0,243,222,12,12,12,12,12,12,12,12,12,12,222,245,0,0,0,0,0,0,250,124,11,11,11,11,
-  11,11,11,11,11,11,124,252,0,0,0,0,0,243,238,10,10,10,10,10,10,10,10,10,10,10,10,238,245,0,0,0,
-  0,250,139,9,9,9,9,9,9,9,9,9,9,9,9,139,252,0,0,0,243,238,8,8,8,8,8,8,8,8,8,8,
-  8,8,8,8,238,245,0,0,250,154,7,7,7,7,7,7,7,7,7,7,7,7,7,7,154,252,0,243,238,22,6,6,
-  6,6,6,6,6,6,6,6,6,6,6,6,22,238,245,250,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,252,0,0,0,0,0,0,0,0,0,244,245,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,
-  254,239,246,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,239,79,79,239,247,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,247,239,79,15,15,47,239,248,0,0,0,0,0,0,0,0,0,0,0,247,239,47,15,15,15,15,47,
-  223,248,0,0,0,0,0,0,0,0,0,248,223,45,13,13,13,13,13,13,45,223,250,240,0,0,0,0,0,240,248,222,
-  43,11,11,11,11,11,11,11,11,27,206,250,240,0,0,0,240,250,221,25,9,9,9,9,9,9,9,9,9,9,25,205,
-  251,241,0,241,250,238,154,138,138,138,138,138,138,138,138,138,138,138,138,154,238,251,241,248,251,251,251,251,251,251,251,251,
-  251,251,251,251,251,251,251,251,251,251,249,0,0,0,0,0,0,240,241,0,0,0,0,0,0,0,0,0,0,0,0,247,
-  248,0,0,0,0,0,0,0,0,0,0,0,241,254,255,241,0,0,0,0,0,0,0,0,0,0,248,175,143,249,0,0,
-  0,0,0,0,0,0,0,241,254,63,31,255,242,0,0,0,0,0,0,0,0,248,159,15,15,143,250,0,0,0,0,0,
-  0,0,242,255,47,15,15,31,239,243,0,0,0,0,0,0,249,158,13,13,13,13,142,250,0,0,0,0,0,243,239,44,
-  12,12,12,12,28,239,244,0,0,0,0,251,157,10,10,10,10,10,10,140,251,0,0,0,244,238,41,9,9,9,9,9,
-  9,25,238,244,0,0,252,155,7,7,7,7,7,7,7,7,155,252,0,245,255,204,204,204,204,204,204,204,204,204,204,255,
-  245,244,246,246,246,246,246,246,246,246,246,246,246,246,244,0,0,0,0,0,16,17,1,0,0,0,0,0,0,0,0,0,
-  0,33,51,18,0,0,0,0,0,0,0,0,0,0,50,85,35,0,0,0,0,0,0,0,0,0,16,66,119,36,1,0,
-  0,0,0,0,0,0,0,32,99,119,54,2,0,0,0,0,0,0,0,0,33,116,102,71,18,0,0,0,0,0,0,0,
-  0,50,118,68,103,35,0,0,0,0,0,0,0,16,66,103,51,118,36,1,0,0,0,0,0,0,32,99,71,34,116,54,
-  2,0,0,0,0,0,0,33,116,54,34,99,71,18,0,0,0,0,0,0,50,118,36,17,66,103,35,0,0,0,0,0,
-  16,66,103,35,0,50,118,36,1,0,0,0,0,32,99,71,18,0,33,116,54,2,0,0,0,0,33,116,54,2,0,32,
-  99,71,18,0,0,0,0,50,118,36,1,0,16,66,103,35,0,0,0,16,66,103,35,0,0,0,50,118,36,1,0,0,
-  32,99,71,18,0,0,0,33,116,54,2,0,0,33,116,54,2,0,0,0,32,99,71,18,0,0,50,118,36,1,0,0,
-  0,16,66,103,35,0,16,66,103,35,0,0,0,0,0,50,118,36,1,32,99,71,18,0,0,0,0,0,33,116,54,2,
-  33,116,54,18,17,17,17,17,17,33,99,71,18,49,118,52,34,34,34,34,34,34,34,67,103,19,49,85,35,34,34,34,
-  34,34,34,34,50,85,19,33,51,18,17,17,17,17,17,17,17,33,51,18,16,17,1,0,0,0,0,0,0,0,16,17,
-  1,0,0,0,0,0,16,17,1,0,0,0,0,0,0,0,0,0,0,33,51,18,0,0,0,0,0,0,0,0,0,16,
-  50,85,35,1,0,0,0,0,0,0,0,0,33,83,119,53,18,0,0,0,0,0,0,0,16,50,117,102,87,35,1,0,
-  0,0,0,0,0,33,84,103,68,118,69,18,0,0,0,0,0,16,66,117,70,51,100,87,36,1,0,0,0,0,33,100,
-  103,36,17,66,118,70,18,0,0,0,16,66,118,70,18,0,33,100,103,36,1,0,0,49,100,87,36,1,0,16,66,117,
-  70,19,0,16,67,118,69,18,0,0,0,33,84,103,52,1,49,100,87,35,17,17,17,17,17,50,117,70,19,50,118,53,
-  51,51,51,51,51,51,51,83,103,35,49,85,35,34,34,34,34,34,34,34,50,85,19,33,51,18,0,0,0,0,0,0,
-  0,33,51,18,16,17,1,0,0,0,0,0,0,0,16,17,1,0,0,0,0,16,1,0,0,0,0,0,0,0,0,33,
-  18,0,0,0,0,0,0,0,16,67,52,1,0,0,0,0,0,0,33,100,70,18,0,0,0,0,0,0,49,117,87,19,
-  0,0,0,0,0,16,66,102,102,36,1,0,0,0,0,16,83,87,117,53,1,0,0,0,0,33,100,70,100,70,18,0,
-  0,0,0,49,117,53,83,87,19,0,0,0,16,66,102,36,66,102,36,1,0,0,16,83,87,19,49,117,53,1,0,0,
-  33,100,70,18,33,100,70,18,0,0,50,117,53,1,16,83,87,35,0,16,66,103,36,1,16,66,118,36,1,32,99,87,
-  19,0,0,49,117,54,2,33,116,54,34,34,34,34,99,71,18,49,101,52,51,51,51,51,67,86,19,33,68,35,17,17,
-  17,17,50,68,18,16,34,18,0,0,0,0,33,34,1,0,17,0,0,0,0,0,0,17,0,0,80,0,2,0,0,0,
-  0,4,0,0,160,1,8,0,0,0,0,8,0,0,208,36,14,0,0,0,0,13,0,32,241,103,47,0,48,4,48,15,
-  5,168,244,170,95,48,192,9,82,63,92,255,248,236,143,246,250,31,139,143,191,255,255,255,191,253,255,191,223,255,255,255,
+  255,255,255,255,255,255,255,255,95,31,31,31,31,31,31,31,47,31,31,31,47,31,31,31,31,31,31,95,207,30,30,63,
+  79,63,47,47,79,63,47,47,63,79,63,47,47,30,30,207,207,30,30,47,63,79,63,47,47,79,63,47,47,63,79,63,
+  47,30,30,207,207,30,46,47,47,63,79,63,47,47,79,63,47,47,63,79,63,30,30,207,207,30,46,63,47,47,63,79,
+  63,47,47,79,63,47,47,63,79,46,30,207,207,30,46,79,63,47,47,63,79,63,47,47,79,63,47,47,63,46,30,207,
+  207,30,30,63,79,63,47,47,63,79,63,47,47,79,63,47,47,30,30,207,207,30,30,47,63,79,63,47,47,63,79,63,
+  47,47,79,63,47,30,30,207,207,30,46,47,47,63,79,63,47,47,63,79,63,47,47,79,63,46,30,207,207,30,46,63,
+  47,47,63,79,63,47,47,63,79,63,47,47,79,46,30,207,207,30,46,79,63,47,47,63,79,63,47,47,63,79,63,47,
+  47,46,30,207,207,30,30,47,79,63,47,47,63,79,63,47,47,63,79,63,47,30,30,207,207,30,30,47,47,79,63,47,
+  47,63,79,63,47,47,63,79,63,30,30,207,207,30,46,63,47,47,79,63,47,47,63,79,63,47,47,63,79,46,30,207,
+  207,30,30,63,63,47,47,79,63,47,47,63,79,63,47,47,63,30,30,207,207,30,30,30,46,30,30,46,46,46,30,30,
+  46,46,46,30,30,30,30,207,207,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,207,239,207,207,207,
+  207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,239,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,28,30,30,30,30,30,30,30,
+  30,28,28,30,30,30,30,30,30,30,30,28,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,
+  40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,
+  44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,
+  44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,
+  44,44,44,40,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,22,22,22,21,21,22,22,
+  22,22,22,22,22,22,21,21,22,22,22,22,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,
+  40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,
+  40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,
+  22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,
+  40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,
+  40,40,40,40,40,40,22,22,40,40,40,40,22,22,22,22,21,21,22,22,22,22,22,22,22,22,21,21,22,22,22,22,
   255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,238,238,238,238,238,238,238,238,238,187,187,187,187,187,
-  187,187,187,187,187,136,136,136,136,136,136,136,136,136,136,85,85,85,85,85,85,85,85,85,85,34,34,34,34,34,34,34,
-  34,34,34,0,0,0,0,0,0,0,64,0,0,0,0,0,0,0,0,0,128,0,0,112,0,0,0,0,0,0,192,0,
-  0,179,0,0,0,3,0,16,224,2,0,231,32,0,16,12,19,130,241,20,3,250,163,51,102,47,87,214,243,118,42,254,
-  247,137,188,127,156,251,247,200,127,255,254,222,255,207,223,255,254,253,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,255,255,255,238,238,238,238,238,238,238,238,238,238,187,187,187,187,187,187,187,187,187,187,136,136,136,136,136,136,136,
-  136,136,136,85,85,85,85,85,85,85,85,85,85,34,34,34,34,34,34,34,34,34,34,0,0,5,0,0,0,16,3,0,
-  16,0,16,9,0,0,0,64,6,0,48,0,64,12,0,0,0,96,8,0,80,0,112,14,0,0,0,128,11,0,112,0,
-  160,31,3,33,0,160,14,1,144,147,192,79,12,150,128,192,63,7,178,255,250,143,79,251,248,229,191,92,217,255,255,239,
-  175,255,255,254,255,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,238,238,238,238,238,238,238,
-  238,238,238,187,187,187,187,187,187,187,187,187,187,136,136,136,136,136,136,136,136,136,136,85,85,85,85,85,85,85,85,85,
-  85,34,34,34,34,34,34,34,34,34,34,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,255,
-  207,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,175,207,255,255,110,13,13,13,13,13,13,13,13,13,13,13,
-  13,13,13,13,13,110,255,255,125,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,11,125,255,255,124,10,10,10,
-  10,10,10,10,10,10,10,10,10,10,10,10,10,124,255,255,139,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
-  8,139,255,255,154,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,154,255,255,153,5,5,5,5,5,5,5,
-  5,5,5,5,5,5,5,5,5,153,255,255,236,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,219,236,255,249,
-  249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,16,34,34,34,34,34,34,34,34,34,34,34,1,
-  49,85,85,85,85,85,85,85,85,85,85,85,19,49,118,119,119,119,119,119,119,119,119,119,103,19,49,102,68,68,68,68,
-  68,68,68,68,68,102,19,49,102,35,34,34,34,34,34,34,34,50,102,19,49,102,19,0,0,0,0,0,0,0,49,102,
-  19,49,102,19,0,0,0,0,0,0,0,49,102,19,49,102,19,0,0,0,0,0,0,0,49,102,19,49,102,19,0,0,
-  0,0,0,0,0,49,102,19,49,102,35,34,34,34,34,34,34,34,50,102,19,49,102,68,68,68,68,68,68,68,68,68,
-  102,19,49,118,119,119,119,119,119,119,119,119,119,103,19,49,85,85,85,85,85,85,85,85,85,85,85,19,16,34,34,34,
-  34,34,34,34,34,34,34,34,1,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,255,255,255,
-  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,10,13,15,15,15,15,15,15,13,10,10,13,15,15,15,15,15,15,13,10,8,8,10,14,15,15,14,10,8,8,8,
-  8,10,14,15,15,14,10,8,8,0,3,7,8,10,10,8,7,3,0,0,3,7,8,10,10,8,7,3,0,0,0,0,
-  5,8,8,5,0,0,0,0,0,0,5,8,8,5,0,0,0,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,
-  246,246,246,246,246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,13,11,11,11,12,14,15,15,15,15,15,15,15,14,12,11,15,15,12,
-  9,8,8,8,8,8,8,11,14,15,15,15,13,10,8,8,8,13,9,8,6,3,1,0,0,2,5,8,8,12,14,10,
-  8,7,4,1,0,8,6,2,0,0,0,0,0,0,0,1,5,8,8,7,3,0,0,0,0,3,0,0,0,0,0,0,
-  0,0,0,0,0,1,4,0,0,0,0,0,0,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,
-  246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,13,14,15,15,15,15,15,15,15,
-  14,13,14,15,15,15,15,15,15,12,9,8,8,11,15,15,15,15,15,12,9,8,8,11,15,13,15,14,10,8,5,3,
-  4,8,9,13,15,14,10,8,5,3,4,8,9,8,8,8,7,2,0,0,0,1,6,8,8,8,7,2,0,0,0,1,
-  6,3,5,4,1,0,0,0,0,0,0,3,5,4,1,0,0,0,0,0,0,246,246,246,246,246,246,246,246,246,246,246,
-  246,246,246,246,246,246,246,246,246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,8,9,10,12,14,15,15,15,15,15,15,15,15,15,15,14,12,10,9,
-  8,6,6,8,8,8,10,13,15,15,15,15,15,15,13,10,8,8,8,6,6,0,0,0,2,5,8,8,10,14,15,15,
-  14,10,8,8,5,2,0,0,0,0,0,0,0,0,0,4,7,8,11,11,8,7,4,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,4,8,8,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,
-  0,0,0,0,0,0,17,0,0,68,0,16,102,1,16,119,1,0,51,0,16,136,1,16,136,1,16,136,1,0,51,0,
-  16,153,1,16,153,1,16,102,1,16,102,1,16,170,1,16,187,1,16,68,1,16,187,1,16,204,1,32,204,2,16,85,
-  1,32,221,2,32,221,2,16,136,1,16,153,1,32,238,2,129,255,24,242,255,47,0,68,0,16,68,1,16,85,1,16,
-  136,1,16,136,1,0,51,0,16,153,1,16,170,1,16,170,1,16,68,1,16,187,1,32,204,2,16,136,1,16,136,1,
-  32,238,2,129,255,24,242,255,47,16,119,1,16,136,1,16,170,1,16,68,1,16,204,1,48,221,3,242,255,47,97,102,
-  22,0,180,255,91,0,0,128,255,255,255,9,0,244,255,255,255,111,0,251,255,255,255,223,0,255,255,255,255,255,1,255,
-  255,255,255,255,2,251,255,255,255,223,0,245,255,255,255,127,0,144,255,255,255,11,0,0,214,255,125,0,0,0,0,33,
+  255,255,255,255,255,255,255,255,95,30,30,30,30,30,30,30,30,28,28,30,30,30,30,30,30,30,30,28,206,44,44,44,
+  44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,
+  44,44,44,40,206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,206,44,44,44,44,44,44,44,
+  44,40,40,44,44,44,44,44,44,44,44,40,206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,
+  206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,221,40,40,40,40,40,40,40,40,22,22,40,
+  40,40,40,40,40,40,40,22,221,22,22,22,21,21,22,22,22,22,22,22,22,22,21,21,22,22,22,22,221,40,40,40,
+  22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,
+  40,40,40,40,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,221,40,40,40,22,22,40,40,
+  40,40,40,40,40,40,22,22,40,40,40,40,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,
+  221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,221,40,40,40,22,22,40,40,40,40,40,40,
+  40,40,22,22,40,40,40,40,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,221,22,22,22,
+  21,21,22,22,22,22,22,22,22,22,21,21,22,22,22,22,255,255,40,40,40,40,40,40,40,22,22,40,40,40,40,40,
+  40,40,40,22,255,255,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,
+  44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,
+  40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,
+  44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,
+  44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,
+  44,44,44,40,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,22,22,22,21,21,22,22,
+  22,22,22,22,22,22,21,21,22,22,22,22,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,
+  40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,
+  40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,
+  22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,
+  40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,
+  40,40,40,40,40,40,22,22,40,40,40,40,22,22,22,22,21,21,22,22,22,22,22,22,22,22,21,21,22,22,22,22,
+  22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,40,44,44,44,44,44,44,44,44,40,40,44,
+  44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,
+  44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,
+  44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,
+  44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,
+  40,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,40,22,40,40,40,40,40,40,40,40,22,22,40,
+  40,40,40,40,40,40,40,22,22,22,22,22,21,21,22,22,22,22,22,22,22,22,21,21,22,22,22,22,40,40,40,40,
+  22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,
+  40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,
+  40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,
+  40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,
+  40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,40,22,22,22,22,
+  21,21,22,22,22,22,22,22,22,22,21,21,22,22,22,22,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,95,30,30,30,30,30,30,30,
+  30,28,28,30,30,30,30,30,30,30,30,95,206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,206,
+  206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,206,206,44,44,44,44,44,44,44,44,40,40,44,
+  44,44,44,44,44,44,44,206,206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,206,206,44,44,44,
+  44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,206,206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,
+  44,44,44,206,221,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,221,221,22,22,22,21,21,22,22,
+  22,22,22,22,22,22,21,21,22,22,22,221,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,221,
+  221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,221,221,40,40,40,22,22,40,40,40,40,40,40,
+  40,40,22,22,40,40,40,221,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,221,221,40,40,40,
+  22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,221,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,
+  40,40,40,221,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,221,221,40,40,40,22,22,40,40,
+  40,40,40,40,40,40,22,22,40,40,40,221,221,22,22,22,21,21,22,22,22,22,22,22,22,22,21,21,22,22,22,221,
+  221,40,40,40,40,40,40,40,40,22,22,40,40,40,40,40,40,40,40,221,206,44,44,44,44,44,44,44,44,40,40,44,
+  44,44,44,44,44,44,44,206,206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,206,206,44,44,44,
+  44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,206,206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,
+  44,44,44,206,206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,206,206,44,44,44,44,44,44,44,
+  44,40,40,44,44,44,44,44,44,44,44,206,206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,206,
+  206,44,44,44,44,44,44,44,44,40,40,44,44,44,44,44,44,44,44,206,221,40,40,40,40,40,40,40,40,22,22,40,
+  40,40,40,40,40,40,40,221,221,22,22,22,21,21,22,22,22,22,22,22,22,22,21,21,22,22,22,221,221,40,40,40,
+  22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,221,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,
+  40,40,40,221,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,221,221,40,40,40,22,22,40,40,
+  40,40,40,40,40,40,22,22,40,40,40,221,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,221,
+  221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,221,221,40,40,40,22,22,40,40,40,40,40,40,
+  40,40,22,22,40,40,40,221,221,40,40,40,22,22,40,40,40,40,40,40,40,40,22,22,40,40,40,221,221,22,22,22,
+  21,21,22,22,22,22,22,22,22,22,21,21,22,22,22,221,17,17,17,17,17,17,17,17,17,17,51,51,51,51,51,51,
+  51,51,51,51,34,34,34,34,34,34,34,34,34,34,17,17,17,17,17,17,17,17,17,17,51,51,51,51,51,51,51,51,
+  51,51,34,34,34,34,34,34,34,34,34,34,17,17,17,17,17,17,17,17,17,17,51,51,51,51,51,51,51,51,51,51,
+  34,34,34,34,34,34,34,34,34,34,17,17,17,17,17,17,17,17,17,17,51,51,51,51,51,51,51,51,51,51,34,34,
+  34,34,34,34,34,34,34,34,17,17,17,17,17,17,17,17,17,17,51,51,51,51,51,51,51,51,51,51,34,34,34,34,
+  34,34,34,34,34,34,0,0,0,0,0,0,0,0,0,0,227,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,234,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,239,143,133,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,234,239,143,140,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,227,239,
+  239,143,143,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,234,239,239,143,143,140,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,227,239,239,239,143,143,143,133,0,0,0,0,0,0,0,0,0,0,0,0,234,239,239,239,143,143,143,
+  140,0,0,0,0,0,0,0,0,0,0,0,227,239,239,239,239,143,143,143,143,133,0,0,0,0,0,0,0,0,0,0,
+  234,239,239,239,239,143,143,143,143,140,0,0,0,0,0,0,0,0,0,227,239,239,239,239,239,143,143,143,143,143,133,0,
+  0,0,0,0,0,0,0,234,239,239,239,239,239,143,143,143,143,143,140,0,0,0,0,0,0,0,227,239,239,239,239,239,
+  239,143,143,143,143,143,143,133,0,0,0,0,0,0,234,239,239,239,239,239,239,143,143,143,143,143,143,140,0,0,0,0,
+  0,227,239,239,239,239,239,239,239,143,143,143,143,143,143,143,133,0,0,0,0,234,239,239,239,239,239,239,239,143,143,143,
+  143,143,143,143,140,0,0,0,227,239,239,239,239,239,239,239,175,111,143,143,143,143,143,143,143,133,0,0,234,239,239,239,
+  239,191,127,79,79,79,79,95,127,143,143,143,143,140,0,227,239,239,207,143,95,79,79,79,79,79,79,79,79,79,111,127,
+  143,143,133,218,159,95,79,79,79,79,79,79,79,79,79,79,79,79,79,79,79,111,124,0,0,0,0,0,0,0,0,0,
+  228,133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,229,238,143,134,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,229,239,239,143,143,135,0,0,0,0,0,0,0,0,0,0,0,0,0,231,239,239,239,143,143,143,
+  136,0,0,0,0,0,0,0,0,0,0,0,231,239,239,239,239,143,143,143,143,136,0,0,0,0,0,0,0,0,0,232,
+  239,239,239,239,239,143,143,143,143,143,138,128,0,0,0,0,0,224,232,239,239,239,239,239,239,143,143,143,143,143,143,138,
+  128,0,0,0,224,234,239,239,239,239,239,239,239,143,143,143,143,143,143,143,139,129,0,225,234,239,239,223,191,159,143,111,
+  79,79,95,95,111,127,143,143,143,139,129,184,171,123,91,75,75,75,75,75,75,75,75,75,75,75,75,75,91,107,121,0,
+  0,0,0,0,0,224,129,0,0,0,0,0,0,0,0,0,0,0,0,231,136,0,0,0,0,0,0,0,0,0,0,0,
+  225,238,143,129,0,0,0,0,0,0,0,0,0,0,232,239,143,137,0,0,0,0,0,0,0,0,0,225,238,239,143,143,
+  130,0,0,0,0,0,0,0,0,232,239,239,143,143,138,0,0,0,0,0,0,0,226,239,239,239,143,143,143,131,0,0,
+  0,0,0,0,233,239,239,239,143,143,143,138,0,0,0,0,0,227,239,239,239,239,143,143,143,143,132,0,0,0,0,235,
+  239,239,239,239,143,143,143,143,139,0,0,0,228,239,239,239,239,239,143,143,143,143,143,132,0,0,236,239,239,223,175,111,
+  95,111,143,143,143,140,0,229,223,175,111,79,79,79,79,79,79,95,111,143,133,132,70,70,70,70,70,70,70,70,70,70,
+  70,70,100,33,18,50,35,50,35,33,18,16,17,1,16,51,1,33,68,18,16,34,1,0,17,0,0,17,0,16,34,1,
+  33,68,18,16,51,1,16,17,1,16,0,0,48,0,0,0,16,0,4,64,2,0,96,1,1,0,96,0,23,80,4,66,
+  128,3,5,80,144,0,74,112,6,116,160,4,10,144,176,1,108,144,8,151,176,6,30,178,192,3,159,176,10,201,208,24,
+  63,229,224,37,191,208,12,236,240,58,95,247,241,86,239,240,14,254,244,92,127,249,245,120,255,242,63,255,248,142,175,251,
+  249,170,255,244,143,255,253,191,207,254,252,203,255,230,206,238,238,222,222,238,238,237,238,182,187,187,187,187,187,187,187,187,
+  187,133,136,136,136,136,136,136,136,136,136,84,85,85,85,85,85,85,85,85,85,33,34,34,34,34,34,34,34,34,34,0,
+  4,64,0,0,0,0,0,0,0,16,7,128,16,0,0,0,0,0,32,48,9,192,48,1,0,0,0,16,64,80,11,242,
+  80,3,4,96,0,66,80,112,13,244,114,5,8,176,0,117,128,144,15,246,132,7,13,240,1,152,144,176,63,248,166,40,
+  15,243,4,203,176,208,95,250,200,74,63,245,7,254,208,240,127,252,218,107,95,248,26,255,243,242,159,254,252,141,127,250,
+  76,255,247,244,207,255,255,191,175,253,127,255,252,230,238,238,238,238,206,238,206,238,238,182,187,187,187,187,187,187,187,187,
+  187,133,136,136,136,136,136,136,136,136,136,84,85,85,85,85,85,85,85,85,85,33,34,34,34,34,34,34,34,34,34,0,
+  0,0,0,0,0,0,32,0,0,0,0,4,33,32,1,49,64,2,0,32,0,7,83,64,3,83,96,4,0,64,3,9,
+  117,112,5,134,128,6,0,96,37,11,151,128,7,168,144,7,4,128,71,13,185,176,9,203,176,9,9,160,89,14,219,208,
+  11,253,208,11,13,192,123,15,254,240,13,255,242,60,15,240,142,63,255,244,63,255,246,94,47,241,191,111,255,248,127,255,
+  250,127,95,244,239,175,255,252,191,255,254,207,159,229,238,222,238,238,238,238,238,238,222,182,187,187,187,187,187,187,187,187,
+  187,133,136,136,136,136,136,136,136,136,136,84,85,85,85,85,85,85,85,85,85,33,34,34,34,34,34,34,34,34,34,249,
+  249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,249,255,255,255,255,255,255,255,255,255,255,255,255,255,
+  255,255,255,255,255,255,255,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,94,30,30,30,30,30,
+  30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,46,78,46,30,30,30,30,30,30,30,30,46,78,46,
+  30,30,30,30,30,30,78,143,111,30,30,30,30,30,30,30,30,111,143,78,30,30,30,30,30,30,46,111,62,30,30,30,
+  30,30,30,30,30,62,111,46,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,
+  30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,25,25,25,25,25,25,25,25,25,25,25,25,25,
+  25,25,25,25,25,25,25,0,0,0,0,0,0,0,0,0,0,34,34,34,34,34,34,34,34,34,34,51,51,51,51,51,
+  51,51,51,51,51,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,255,255,255,255,255,255,255,
+  255,255,255,255,255,255,255,255,255,255,255,255,255,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,
+  95,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,22,31,31,31,25,0,0,
+  25,31,31,31,22,0,0,31,31,25,25,0,0,20,25,25,25,22,0,0,22,25,25,25,20,0,0,25,25,246,246,246,
+  246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
+  255,255,255,255,255,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,31,31,31,31,31,31,31,
+  31,31,31,31,31,31,31,31,31,31,31,31,31,0,0,29,31,31,31,18,0,18,31,31,31,29,0,0,24,31,31,31,
+  24,0,0,24,25,25,25,17,0,17,25,25,25,24,0,0,21,25,25,25,21,246,246,246,246,246,246,246,246,246,246,246,
+  246,246,246,246,246,246,246,246,246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,95,95,95,
+  95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,
+  31,31,31,31,31,31,31,31,25,0,0,25,31,31,31,22,0,0,31,31,31,31,0,0,22,25,25,25,22,0,0,22,
+  25,25,25,20,0,0,25,25,25,25,0,0,20,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,246,
+  246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,95,95,95,95,95,95,95,95,95,95,95,
+  95,95,95,95,95,95,95,95,95,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,31,18,0,
+  18,31,31,31,29,0,0,24,31,31,31,24,0,0,29,31,31,25,17,0,17,25,25,25,24,0,0,21,25,25,25,21,
+  0,0,24,25,25,48,3,128,8,128,8,128,8,128,8,145,25,198,108,128,8,128,8,128,8,128,8,200,140,128,8,128,
+  8,128,8,128,8,181,91,164,74,128,8,128,8,128,8,145,25,198,108,128,8,128,8,192,12,246,111,254,239,34,34,48,
+  3,128,8,128,8,128,8,128,8,128,8,181,91,164,74,128,8,128,8,128,8,145,25,198,108,128,8,128,8,192,12,246,
+  111,254,239,34,34,0,85,0,0,136,0,128,204,8,0,136,0,0,136,0,0,170,0,48,255,3,192,255,12,97,102,22,
+  0,0,119,0,0,0,112,255,7,0,0,247,255,127,0,112,255,255,255,7,247,255,255,255,127,247,255,255,255,127,112,255,
+  255,255,7,0,247,255,127,0,0,112,255,7,0,0,0,119,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,48,101,20,0,32,101,70,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,202,204,204,56,200,204,204,108,1,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,204,
+  204,204,204,204,204,204,204,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,128,204,204,204,204,204,204,204,204,204,188,2,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,199,204,204,204,204,204,204,204,204,204,204,26,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,187,187,
+  187,187,187,187,187,187,187,187,187,139,0,0,16,117,152,137,54,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,161,187,187,187,187,187,187,187,187,187,187,187,187,4,48,184,187,187,187,187,106,1,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,182,187,187,187,187,187,187,187,187,187,187,187,187,
+  41,184,187,187,187,187,187,187,90,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,170,170,
+  170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,24,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,80,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,106,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,170,170,170,170,170,170,170,170,170,170,170,170,
+  170,170,170,170,170,170,170,170,170,170,106,0,0,0,0,0,0,0,0,81,151,153,121,20,0,0,0,0,0,0,147,153,
+  153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,105,0,0,0,0,0,0,0,97,153,153,
+  153,153,153,5,0,0,0,0,0,150,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,
+  105,0,0,0,0,0,0,48,152,153,153,153,153,153,137,2,0,0,0,0,152,153,153,153,153,153,153,153,153,153,153,153,
+  153,153,153,153,153,153,153,153,153,153,153,89,0,0,0,0,0,0,132,136,136,136,136,136,136,136,40,0,0,0,32,136,
+  136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,88,0,0,0,0,0,48,136,136,136,
+  136,136,136,136,136,136,2,0,0,64,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,
+  136,88,0,0,0,0,0,129,136,136,136,136,136,136,136,136,136,23,0,0,96,136,136,136,136,136,136,136,136,136,136,136,
+  136,136,136,136,136,136,136,136,136,136,136,136,88,0,0,0,0,0,118,119,119,119,119,119,119,119,119,119,87,0,0,112,
+  119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,87,0,0,0,0,48,119,119,119,
+  119,119,119,119,119,119,119,119,2,0,113,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,
+  119,119,71,0,0,0,0,96,119,119,119,119,119,119,119,119,119,119,119,5,0,114,119,119,119,119,119,119,119,119,119,119,
+  119,119,119,119,119,119,119,119,119,119,119,119,119,71,0,0,0,0,98,102,102,102,102,102,102,102,102,102,102,102,22,0,
+  99,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,70,0,0,0,0,100,102,102,
+  102,102,102,102,102,102,102,102,102,54,0,99,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,
+  102,102,102,70,0,0,0,0,101,102,102,102,102,102,102,102,102,102,102,102,86,0,100,102,102,102,102,102,102,102,102,102,
+  102,102,102,102,102,102,102,102,102,102,102,102,102,102,70,0,0,0,16,85,85,85,85,85,85,85,85,85,85,85,85,85,
+  0,84,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,53,0,0,0,32,85,85,
+  85,85,85,85,85,85,85,85,85,85,85,1,84,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
+  85,85,85,85,53,0,0,0,48,68,68,68,68,68,68,68,68,68,68,68,68,68,2,68,68,68,68,68,68,68,68,68,
+  68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,52,0,0,0,48,68,68,68,68,68,68,68,68,68,68,68,68,
+  68,2,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,36,0,0,0,48,51,
+  51,51,51,51,51,51,51,51,51,51,51,51,2,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,
+  51,51,51,51,51,35,50,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,
+  51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,48,134,169,154,104,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,81,169,170,170,170,170,154,21,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,
+  0,0,0,0,0,0,0,0,0,0,64,153,153,153,153,153,153,153,153,4,0,0,0,0,0,0,0,0,0,16,100,151,
+  153,137,87,19,0,0,0,0,0,0,0,0,0,150,153,153,153,153,153,153,153,153,121,1,0,0,0,0,0,0,0,48,
+  134,136,136,136,136,136,136,38,0,0,0,0,0,0,0,113,136,136,136,136,136,136,136,136,136,136,23,0,0,0,0,0,
+  0,16,134,136,136,136,136,136,136,136,136,22,0,0,0,0,0,16,135,136,136,136,136,136,136,136,136,136,136,120,1,0,
+  0,0,0,0,132,136,136,136,136,136,136,136,136,136,120,2,0,0,0,32,134,136,136,136,136,136,136,136,136,136,136,136,
+  136,6,0,0,0,0,64,119,119,119,119,119,119,119,119,119,119,119,55,0,0,16,117,119,119,119,119,119,119,119,119,119,
+  119,119,119,119,55,0,0,0,0,115,119,119,119,119,119,119,119,119,119,119,119,119,3,0,98,119,119,119,119,119,119,119,
+  119,119,119,119,119,119,119,103,0,0,0,0,116,119,119,119,119,119,119,119,119,119,119,119,119,22,32,118,119,119,119,119,
+  119,119,119,119,119,119,119,119,119,119,119,3,0,0,0,100,102,102,102,102,102,102,102,102,102,102,102,102,86,97,102,102,
+  102,102,102,102,102,102,102,102,102,102,102,102,102,102,5,0,0,0,100,102,102,102,102,102,102,102,102,102,102,102,102,102,
+  101,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,22,0,0,0,83,85,85,85,85,85,85,85,85,85,85,
+  85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,53,0,0,0,83,85,85,85,85,85,85,85,
+  85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,53,0,0,0,67,68,68,68,68,
+  68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,0,0,0,66,68,
+  68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,52,0,0,
+  0,50,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,
+  51,34,34,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,116,119,4,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,163,187,187,155,3,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,80,186,187,187,187,58,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,
+  0,0,164,170,170,170,170,74,0,0,0,0,0,0,0,0,0,0,0,0,0,113,170,56,0,0,16,169,170,170,170,170,
+  74,0,0,0,0,0,0,0,0,0,0,0,0,32,153,153,153,5,0,112,153,153,153,153,153,57,0,0,0,0,0,0,
+  0,0,0,0,0,0,129,153,153,153,57,0,146,153,153,153,153,153,57,0,0,0,0,0,0,0,0,0,0,0,0,133,
+  136,136,136,136,119,135,136,136,136,136,136,56,0,0,0,0,0,0,0,0,0,0,0,16,136,136,136,136,136,136,136,136,
+  136,136,136,136,56,0,0,0,0,0,0,0,0,0,0,0,64,119,119,119,119,119,119,119,119,119,119,119,119,55,0,0,
+  0,0,0,0,0,0,0,0,0,96,119,119,119,119,119,119,119,119,119,119,119,119,55,0,0,0,0,0,0,0,0,0,
+  0,0,97,102,102,102,102,102,102,102,102,102,102,102,102,38,0,0,0,0,0,0,0,0,0,0,0,98,102,102,102,102,
+  102,102,102,102,102,102,102,102,38,0,0,0,0,0,0,0,0,0,0,0,83,85,85,85,85,85,85,85,85,85,85,85,
+  85,37,0,0,0,0,0,0,0,0,0,0,0,83,85,85,85,85,85,85,85,85,85,85,85,85,37,0,0,0,0,0,
+  0,0,0,0,0,0,67,68,68,68,68,68,68,68,68,68,68,68,68,36,16,17,17,17,17,17,17,17,17,17,17,51,
+  51,51,51,51,51,51,51,51,51,51,51,51,19,49,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,
+  51,51,51,51,51,19,0,0,0,148,155,4,0,0,0,32,150,187,139,4,0,0,64,170,170,106,0,0,0,165,170,170,
+  170,138,0,0,146,153,153,153,3,0,96,153,153,153,153,153,0,0,134,136,136,136,7,0,131,136,136,136,136,136,0,16,
+  119,119,119,119,23,0,118,119,119,119,119,119,0,32,102,102,102,102,38,32,102,102,102,102,102,102,0,32,68,68,68,68,
+  36,32,68,68,68,68,68,68,34,50,51,51,51,51,51,50,51,51,51,51,51,51,0,64,204,4,0,0,176,68,11,0,
+  0,179,0,59,0,0,149,0,89,0,0,134,0,104,0,0,134,0,104,0,0,165,0,90,0,0,194,17,44,0,0,160,
+  238,10,0,0,176,221,11,0,0,194,0,44,0,0,165,0,90,0,0,134,0,104,0,0,134,0,104,0,0,149,0,89,
+  0,0,195,0,60,0,0,176,187,11,0,0,144,238,9,0,0,193,34,28,0,0,164,0,74,0,0,134,0,104,0,0,
+  134,0,104,0,0,150,0,105,0,0,179,0,59,0,0,192,119,12,0,0,144,238,9,0,0,193,102,28,0,0,180,0,
+  75,0,0,150,0,105,0,0,134,0,104,0,0,134,0,104,0,0,164,0,74,0,0,193,68,28,0,0,144,238,9,0,
+  0,192,170,12,0,0,195,0,60,0,0,149,0,89,0,0,134,0,104,0,0,134,0,104,0,0,164,0,74,0,0,194,
+  0,44,0,0,160,136,10,0,0,96,255,6,0,0,241,102,31,0,0,228,0,78,0,184,251,204,191,139,251,255,255,255,
+  191,100,102,102,102,70,0,64,204,4,0,0,176,68,11,0,0,194,0,44,0,0,149,0,89,0,0,134,0,104,0,0,
+  134,0,104,0,0,149,0,89,0,0,195,0,60,0,0,176,153,11,0,0,144,238,9,0,0,193,68,28,0,0,180,0,
+  75,0,0,150,0,105,0,0,134,0,104,0,0,134,0,104,0,0,164,0,74,0,0,194,0,44,0,0,160,102,10,0,
+  0,96,255,6,0,0,241,102,31,0,0,228,0,78,0,184,251,204,191,139,251,255,255,255,191,100,102,102,102,70,0,0,
+  0,0,49,0,0,0,0,0,0,0,0,135,0,0,0,0,0,0,0,0,237,0,0,0,0,0,0,0,64,255,4,0,
+  0,0,0,0,0,144,255,10,0,0,0,0,0,0,241,255,31,0,0,0,68,101,135,250,255,175,120,86,68,228,255,255,
+  255,255,255,255,255,78,32,252,255,255,255,255,255,207,2,0,144,255,255,255,255,255,9,0,0,0,246,255,255,255,111,0,
+  0,0,0,241,255,255,255,31,0,0,0,0,244,255,255,255,79,0,0,0,0,248,255,238,255,143,0,0,0,0,252,191,
+  18,250,207,0,0,0,16,239,5,0,80,253,1,0,0,80,25,0,0,0,145,5,0,0,16,0,0,0,0,0,1,0,
+  10,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6,13,10,8,8,8,8,8,8,8,8,8,8,
+  8,8,8,8,8,8,6,5,13,13,10,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6,5,5,13,13,13,10,
+  8,8,8,8,8,8,8,8,8,8,8,8,6,5,5,5,13,13,13,13,10,8,8,8,8,8,8,8,8,8,8,6,
+  5,5,5,5,13,13,13,13,13,10,8,8,8,8,8,8,8,8,6,5,5,5,5,5,13,13,13,13,13,13,10,8,
+  8,8,8,8,8,6,5,5,5,5,5,5,13,13,13,13,13,13,13,10,8,8,8,8,6,5,5,5,5,5,5,5,
+  13,13,13,13,13,13,13,13,10,8,8,6,5,5,5,5,5,5,5,5,13,13,13,13,13,13,13,13,13,10,6,5,
+  5,5,5,5,5,5,5,5,13,13,13,13,13,13,13,13,13,7,4,5,5,5,5,5,5,5,5,5,13,13,13,13,
+  13,13,13,13,7,3,3,4,5,5,5,5,5,5,5,5,13,13,13,13,13,13,13,7,3,3,3,3,4,5,5,5,
+  5,5,5,5,13,13,13,13,13,13,7,3,3,3,3,3,3,4,5,5,5,5,5,5,13,13,13,13,13,7,3,3,
+  3,3,3,3,3,3,4,5,5,5,5,5,13,13,13,13,7,3,3,3,3,3,3,3,3,3,3,4,5,5,5,5,
+  13,13,13,7,3,3,3,3,3,3,3,3,3,3,3,3,4,5,5,5,13,13,7,3,3,3,3,3,3,3,3,3,
+  3,3,3,3,3,4,5,5,13,7,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,5,7,3,3,3,
+  3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,48,119,119,119,119,119,119,119,3,144,17,17,17,17,17,17,
+  17,9,186,187,140,184,140,184,140,188,171,0,240,109,213,109,213,109,253,0,64,228,68,228,68,228,68,68,36,32,34,34,
+  34,34,34,34,34,2,0,17,17,17,34,17,17,17,0,16,17,34,50,51,35,34,17,1,17,34,51,67,68,52,51,34,
+  17,33,50,67,85,102,85,52,35,18,16,17,33,34,34,34,18,17,1,48,136,136,136,136,136,136,136,3,144,17,17,17,
+  17,17,17,17,9,171,170,124,167,124,167,124,172,186,0,240,109,213,109,213,109,253,0,64,228,68,228,68,228,68,68,36,
+  32,34,34,34,34,34,34,34,2,0,17,17,17,34,17,17,17,0,16,17,34,50,51,35,34,17,1,17,34,51,67,68,
+  52,51,34,17,33,50,67,85,102,85,52,35,18,16,17,33,34,34,34,18,17,1,48,119,119,119,119,119,119,119,3,144,
+  17,17,17,17,17,17,17,9,203,204,138,200,138,200,138,202,188,0,240,109,213,109,213,109,253,0,64,228,68,228,68,228,
+  68,68,36,32,34,34,34,34,34,34,34,2,0,17,17,17,34,17,17,17,0,16,17,34,50,51,35,34,17,1,17,34,
+  51,67,68,52,51,34,17,33,50,67,85,102,85,52,35,18,16,17,33,34,34,34,18,17,1,0,0,0,0,48,3,0,
+  0,0,0,0,0,0,0,211,61,0,0,0,0,0,0,0,48,45,215,3,0,0,0,0,0,0,211,130,118,61,0,0,
+  0,0,0,48,45,248,106,215,3,0,0,0,0,211,130,255,170,118,61,0,0,0,48,45,248,255,170,106,215,3,0,0,
+  211,130,255,239,165,170,118,61,0,48,45,248,255,190,91,170,106,215,3,211,130,255,239,187,187,165,170,118,61,211,103,170,
+  90,187,187,28,17,73,61,48,125,166,170,181,203,17,145,212,3,0,211,103,170,90,28,17,73,61,0,0,48,125,166,170,
+  17,145,212,3,0,0,0,211,103,170,17,73,61,0,0,0,0,48,125,166,145,212,3,0,0,0,0,0,211,103,73,61,
+  0,0,0,0,0,0,48,125,212,3,0,0,0,0,0,0,0,211,61,0,0,0,0,0,0,0,0,48,3,0,0,0,
+  0,0,0,0,0,0,16,1,0,0,0,0,0,0,0,0,0,0,49,19,0,0,0,0,0,0,0,0,0,16,99,54,
+  1,0,0,0,0,0,0,0,0,49,102,102,19,0,0,0,0,0,0,0,16,99,70,100,54,1,0,0,0,0,0,0,
+  49,102,36,66,102,19,0,0,0,0,0,16,99,70,18,33,100,54,1,0,0,0,0,49,102,36,1,16,66,102,19,0,
+  0,0,16,99,70,18,0,0,33,100,54,1,0,0,49,102,36,1,0,0,16,66,102,19,0,16,99,70,18,0,0,0,
+  0,33,100,54,1,49,102,36,1,0,0,0,0,16,66,102,19,49,102,36,1,0,0,0,0,16,66,102,19,16,99,70,
+  18,0,0,0,0,33,100,54,1,0,49,102,36,1,0,0,16,66,102,19,0,0,16,99,70,18,0,0,33,100,54,1,
+  0,0,0,49,102,36,1,16,66,102,19,0,0,0,0,16,99,70,18,33,100,54,1,0,0,0,0,0,49,102,36,66,
+  102,19,0,0,0,0,0,0,16,99,70,100,54,1,0,0,0,0,0,0,0,49,102,102,19,0,0,0,0,0,0,0,
+  0,16,99,54,1,0,0,0,0,0,0,0,0,0,49,19,0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,
+  0,0,0,0,0,224,14,0,0,0,0,0,0,0,0,94,229,0,0,0,0,0,0,0,224,37,88,14,0,0,0,0,
+  0,0,94,146,134,229,0,0,0,0,0,224,37,217,107,88,14,0,0,0,0,94,146,221,187,134,229,0,0,0,224,37,
+  217,221,187,107,88,14,0,0,94,146,221,253,188,187,134,229,0,224,37,217,221,63,195,187,107,88,14,94,146,221,253,51,
+  51,188,187,134,229,94,104,187,203,51,51,23,17,74,229,224,133,182,187,60,115,17,161,84,14,0,94,104,187,203,23,17,
+  74,229,0,0,224,133,182,187,17,161,84,14,0,0,0,94,104,187,17,74,229,0,0,0,0,224,133,182,161,84,14,0,
+  0,0,0,0,94,104,74,229,0,0,0,0,0,0,224,133,84,14,0,0,0,0,0,0,0,94,229,0,0,0,0,0,
+  0,0,0,224,14,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,0,0,0,0,49,19,0,0,0,0,
+  0,0,0,0,0,16,99,54,1,0,0,0,0,0,0,0,0,49,102,102,19,0,0,0,0,0,0,0,16,99,70,100,
+  54,1,0,0,0,0,0,0,49,102,36,66,102,19,0,0,0,0,0,16,99,70,18,33,100,54,1,0,0,0,0,49,
+  102,36,1,16,66,102,19,0,0,0,16,99,70,18,0,0,33,100,54,1,0,0,49,102,36,1,0,0,16,66,102,19,
+  0,16,99,70,18,0,0,0,0,33,100,54,1,49,102,36,1,0,0,0,0,16,66,102,19,49,102,36,1,0,0,0,
+  0,16,66,102,19,16,99,70,18,0,0,0,0,33,100,54,1,0,49,102,36,1,0,0,16,66,102,19,0,0,16,99,
+  70,18,0,0,33,100,54,1,0,0,0,49,102,36,1,16,66,102,19,0,0,0,0,16,99,70,18,33,100,54,1,0,
+  0,0,0,0,49,102,36,66,102,19,0,0,0,0,0,0,16,99,70,100,54,1,0,0,0,0,0,0,0,49,102,102,
+  19,0,0,0,0,0,0,0,0,16,99,54,1,0,0,0,0,0,0,0,0,0,49,19,0,0,0,0,0,0,0,0,
+  0,0,16,1,0,0,0,0,0,0,0,0,0,48,3,0,0,0,0,0,0,0,0,211,61,0,0,0,0,0,0,0,
+  48,45,215,3,0,0,0,0,0,0,211,146,118,61,0,0,0,0,0,48,45,233,106,215,3,0,0,0,0,211,146,238,
+  170,118,61,0,0,0,48,45,233,238,170,106,215,3,0,0,211,146,238,254,165,170,118,61,0,48,45,233,238,191,91,170,
+  106,215,3,211,146,238,254,187,187,165,170,118,61,211,103,170,90,187,187,28,17,72,61,48,125,166,170,181,203,17,129,212,
+  3,0,211,103,170,90,28,17,72,61,0,0,48,125,166,170,17,129,212,3,0,0,0,211,103,170,17,72,61,0,0,0,
+  0,48,125,166,129,212,3,0,0,0,0,0,211,103,72,61,0,0,0,0,0,0,48,125,212,3,0,0,0,0,0,0,
+  0,211,61,0,0,0,0,0,0,0,0,48,3,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,0,0,
+  0,0,49,19,0,0,0,0,0,0,0,0,0,16,99,54,1,0,0,0,0,0,0,0,0,49,102,102,19,0,0,0,
+  0,0,0,0,16,99,70,100,54,1,0,0,0,0,0,0,49,102,36,66,102,19,0,0,0,0,0,16,99,70,18,33,
+  100,54,1,0,0,0,0,49,102,36,1,16,66,102,19,0,0,0,16,99,70,18,0,0,33,100,54,1,0,0,49,102,
+  36,1,0,0,16,66,102,19,0,16,99,70,18,0,0,0,0,33,100,54,1,49,102,36,1,0,0,0,0,16,66,102,
+  19,49,102,36,1,0,0,0,0,16,66,102,19,16,99,70,18,0,0,0,0,33,100,54,1,0,49,102,36,1,0,0,
+  16,66,102,19,0,0,16,99,70,18,0,0,33,100,54,1,0,0,0,49,102,36,1,16,66,102,19,0,0,0,0,16,
+  99,70,18,33,100,54,1,0,0,0,0,0,49,102,36,66,102,19,0,0,0,0,0,0,16,99,70,100,54,1,0,0,
+  0,0,0,0,0,49,102,102,19,0,0,0,0,0,0,0,0,16,99,54,1,0,0,0,0,0,0,0,0,0,49,19,
+  0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,73,4,144,68,4,66,244,11,73,63,3,73,63,3,
+  73,63,3,73,63,3,73,63,3,217,63,3,217,63,3,217,63,3,217,63,3,217,63,3,217,63,3,217,63,3,217,56,
+  3,217,56,3,217,56,3,121,56,3,121,56,3,121,56,3,121,56,3,121,56,3,121,56,3,117,56,3,117,56,3,117,
+  56,3,117,56,3,117,56,3,229,56,3,229,54,3,229,54,3,229,54,3,229,54,3,229,54,3,229,54,3,229,54,3,
+  229,54,3,229,54,3,21,54,3,21,54,3,21,54,3,21,54,3,21,54,3,21,54,3,236,97,3,80,30,1,0,122,
+  7,112,102,7,0,192,102,12,0,112,187,7,0,0,160,138,0,0,160,170,3,0,32,168,234,0,0,48,58,0,0,128,
+  58,0,0,128,58,0,0,128,58,0,0,128,58,0,0,128,58,0,0,192,54,0,0,192,54,0,0,192,54,0,0,192,
+  54,0,0,192,54,0,0,192,54,40,0,192,54,163,14,192,54,128,138,192,54,0,174,195,54,32,170,206,54,174,35,192,
+  54,138,0,192,54,2,0,80,54,0,0,80,61,0,0,80,61,2,0,80,61,138,0,80,61,174,35,80,189,32,170,94,
+  189,0,174,83,189,128,138,80,189,163,14,80,189,40,0,80,189,0,0,80,189,0,0,240,189,0,0,240,177,0,0,240,
+  177,0,0,240,177,0,0,240,177,0,0,240,177,0,0,240,177,0,0,240,177,0,0,240,177,0,0,240,177,0,0,144,
+  177,0,64,31,125,0,16,17,11,0,208,198,0,112,187,7,0,192,102,12,0,112,102,7,0,0,119,0,0,0,62,3,
+  96,51,3,50,83,10,54,69,4,54,69,4,54,69,4,54,69,4,54,69,4,54,69,4,118,69,4,118,69,4,118,69,
+  4,118,69,4,118,69,4,118,69,4,118,69,4,118,69,4,118,76,4,118,76,4,118,76,4,118,76,4,118,76,4,118,
+  76,4,214,76,4,214,76,4,219,76,4,219,76,4,219,76,4,219,76,4,219,76,4,219,76,4,219,76,4,219,72,4,
+  219,72,4,219,72,4,219,72,4,27,72,4,27,72,4,27,72,4,27,72,4,27,72,4,27,72,4,27,72,4,27,72,
+  4,27,72,4,223,129,4,176,29,1,0,121,7,160,221,10,0,224,221,14,0,160,153,10,0,0,240,99,0,0,240,255,
+  12,0,32,246,191,0,0,192,207,0,0,96,207,0,0,96,207,0,0,96,207,0,0,96,207,0,0,96,207,0,0,80,
+  207,0,0,80,207,0,0,80,199,0,0,80,199,0,0,80,199,0,0,80,199,38,0,80,199,60,11,80,199,96,111,80,
+  199,0,251,92,199,32,51,91,199,251,44,80,199,111,0,80,199,2,0,224,199,0,0,224,199,0,0,224,199,2,0,224,
+  199,111,0,224,199,251,44,224,205,32,51,235,205,0,251,236,205,96,111,224,205,60,11,224,193,38,0,224,193,0,0,224,
+  193,0,0,128,193,0,0,128,193,0,0,128,193,0,0,128,193,0,0,128,193,0,0,128,193,0,0,128,193,0,0,128,
+  193,0,0,128,193,0,0,128,193,0,0,128,193,0,64,24,183,0,16,17,12,0,112,103,0,160,153,10,0,224,221,14,
+  0,160,221,10,0,0,170,0,0,0,240,221,0,173,90,208,90,105,162,101,51,175,53,51,167,57,51,167,57,51,167,57,
+  51,167,57,51,167,57,51,167,57,51,167,57,51,167,57,51,167,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,
+  57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,60,51,
+  87,60,51,87,60,51,231,60,51,231,60,51,231,60,51,231,60,51,231,60,51,231,60,51,231,60,51,231,60,51,231,60,
+  51,231,60,51,231,60,51,231,60,51,231,60,51,231,60,51,231,60,51,231,60,51,231,60,51,231,60,51,235,49,51,82,
+  129,51,64,30,140,0,228,17,0,176,68,96,119,6,0,0,208,136,13,0,0,96,136,6,0,0,0,70,186,0,0,0,
+  224,238,10,0,0,80,239,174,0,0,0,80,238,2,0,0,0,228,11,0,0,0,239,11,0,0,0,239,11,0,0,0,
+  239,11,0,0,0,239,11,0,0,0,239,11,0,0,0,239,11,12,0,0,231,11,254,0,0,231,11,229,207,0,231,11,
+  192,68,12,231,11,0,229,15,231,11,80,94,0,231,11,79,5,0,231,11,207,0,0,231,11,0,0,0,231,11,0,0,
+  0,231,11,0,0,0,231,11,0,0,0,231,11,197,0,0,231,11,244,12,0,231,11,76,196,0,231,11,0,239,5,231,
+  11,0,229,5,231,11,252,196,0,135,11,68,12,0,135,11,197,0,0,135,11,0,0,0,135,11,0,0,0,137,11,0,
+  0,0,137,11,0,0,0,137,11,207,0,0,137,11,79,5,0,137,11,80,94,0,137,11,0,229,15,137,11,192,68,12,
+  137,11,229,207,0,137,11,254,0,0,137,11,12,0,0,137,11,0,0,0,137,11,0,0,0,137,11,0,0,0,137,11,
+  0,0,0,137,11,0,0,0,137,11,0,0,0,137,11,0,0,0,129,11,0,0,48,225,2,0,48,25,168,0,0,16,
+  129,10,0,0,70,186,0,0,96,136,6,0,0,208,136,13,0,0,96,119,6,0,0,0,160,187,0,59,51,176,51,150,
+  50,147,68,58,67,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,
+  68,58,70,68,58,70,68,58,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,
+  70,68,202,70,68,202,70,68,202,77,68,200,77,68,200,77,68,200,77,68,200,77,68,200,77,68,200,77,68,232,77,68,
+  232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,
+  68,232,77,68,232,77,68,232,77,68,232,65,68,207,113,68,80,30,119,0,229,17,0,128,85,80,102,5,0,0,160,187,
+  10,0,0,80,187,5,0,0,0,53,236,0,0,0,208,221,12,0,0,192,211,205,0,0,0,112,221,2,0,0,0,221,
+  14,0,0,0,211,14,0,0,0,211,14,0,0,0,211,14,0,0,0,211,14,0,0,0,211,14,0,0,0,211,14,15,
+  0,0,211,14,205,0,0,211,14,215,243,0,211,14,240,51,15,211,14,0,215,3,211,14,192,205,0,214,14,211,7,0,
+  214,14,252,0,0,134,14,0,0,0,134,14,0,0,0,134,14,0,0,0,134,14,0,0,0,134,14,247,0,0,134,14,
+  61,15,0,134,14,63,253,0,134,14,0,211,7,134,14,0,220,12,134,14,63,125,0,134,14,61,15,0,134,14,247,0,
+  0,134,14,0,0,0,134,14,0,0,0,134,14,0,0,0,134,14,0,0,0,134,14,252,0,0,137,14,211,7,0,137,
+  14,192,205,0,137,14,0,215,3,137,14,240,51,15,185,14,215,243,0,185,14,205,0,0,185,14,15,0,0,185,14,0,
+  0,0,185,14,0,0,0,185,14,0,0,0,185,14,0,0,0,185,14,0,0,0,185,14,0,0,0,185,14,0,0,0,
+  177,7,0,0,64,129,2,0,64,25,203,0,0,16,177,3,0,0,53,124,0,0,80,187,5,0,0,160,187,10,0,0,
+  80,102,5,0,0,0,176,204,0,172,170,192,170,110,162,106,51,171,53,51,167,62,51,167,62,51,167,62,51,167,62,51,
+  167,62,51,167,62,51,167,62,51,167,62,51,167,62,51,167,62,51,167,62,51,167,62,51,87,62,51,87,62,51,87,62,
+  51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,57,51,87,
+  57,51,87,57,51,87,57,51,87,57,51,247,57,51,247,61,51,247,61,51,247,61,51,247,61,51,247,61,51,247,61,51,
+  247,61,51,247,61,51,247,61,51,247,61,51,247,61,51,247,61,51,247,61,51,247,61,51,251,49,51,82,129,51,64,31,
+  141,0,244,17,0,176,68,80,119,5,0,0,160,136,10,0,0,80,136,5,0,0,0,53,203,0,0,0,208,221,11,0,
+  0,176,223,189,0,0,0,96,221,2,0,0,0,221,12,0,0,0,223,12,0,0,0,223,12,0,0,0,223,12,0,0,
+  0,223,12,0,0,0,223,12,0,0,0,223,12,14,0,0,223,12,189,0,0,223,12,214,239,0,223,12,224,51,14,223,
+  12,0,214,15,215,12,176,189,0,215,12,223,6,0,215,12,235,0,0,215,12,0,0,0,215,12,0,0,0,215,12,0,
+  0,0,215,12,0,0,0,215,12,230,0,0,215,12,61,14,0,215,12,62,227,0,135,12,0,223,6,135,12,0,219,11,
+  135,12,254,109,0,135,12,61,14,0,135,12,230,0,0,135,12,0,0,0,135,12,0,0,0,135,12,0,0,0,137,12,
+  0,0,0,137,12,235,0,0,137,12,223,6,0,137,12,176,189,0,137,12,0,214,15,137,12,224,51,14,137,12,214,239,
+  0,137,12,189,0,0,137,12,14,0,0,137,12,0,0,0,137,12,0,0,0,137,12,0,0,0,137,12,0,0,0,137,
+  12,0,0,0,137,12,0,0,0,137,12,0,0,0,129,6,0,0,64,129,2,0,64,25,184,0,0,16,129,15,0,0,
+  245,107,0,0,80,136,5,0,0,160,136,10,0,0,80,119,5,0,0,0,0,0,0,48,153,3,0,0,0,0,0,0,
+  0,48,21,17,81,3,0,0,0,0,0,0,152,17,170,17,81,0,0,0,0,0,152,17,177,238,27,17,137,0,0,0,
+  243,17,97,231,238,126,22,17,63,0,83,17,161,237,238,238,238,222,26,17,53,21,161,235,238,238,238,119,119,183,26,81,
+  21,122,238,238,238,238,119,119,119,167,81,21,122,119,119,119,34,119,119,119,167,81,21,122,119,119,231,34,119,119,119,167,
+  81,21,218,125,238,46,34,226,238,215,173,81,21,218,221,39,34,34,34,114,221,173,81,21,218,221,125,34,34,34,215,221,
+  173,81,21,218,221,221,46,34,226,221,221,173,81,21,74,68,68,34,34,34,68,68,164,81,21,74,68,212,226,221,46,77,
+  68,164,81,21,74,68,116,71,68,116,71,68,164,81,21,161,70,68,68,68,68,68,100,26,81,83,17,161,76,68,68,68,
+  196,26,17,53,0,243,17,161,204,204,204,26,17,63,0,0,0,152,17,97,204,22,17,137,0,0,0,0,0,21,17,26,
+  17,137,0,0,0,0,0,0,48,21,17,81,3,0,0,0,0,0,0,0,48,153,3,0,0,0,0,0,0,0,131,56,
+  0,0,0,0,0,160,24,17,10,0,0,0,0,30,17,31,225,0,0,0,80,17,47,242,17,5,0,48,24,113,34,34,
+  23,129,3,26,17,43,34,34,178,17,161,24,159,34,34,44,34,249,129,24,41,34,34,204,204,156,129,24,201,34,194,198,
+  204,156,129,24,201,204,204,198,204,156,129,24,153,102,204,102,102,153,129,24,157,105,102,102,150,217,129,24,157,153,102,102,
+  153,217,129,24,221,221,102,102,221,221,129,24,212,221,102,102,221,77,129,24,212,221,214,109,221,77,129,24,68,212,77,212,
+  77,68,129,24,113,68,68,68,68,23,129,26,17,71,68,68,116,17,161,48,24,241,68,68,31,129,3,0,80,17,127,247,
+  17,5,0,0,0,30,17,17,225,0,0,0,0,160,17,129,10,0,0,0,0,0,131,56,0,0,0,0,153,0,0,17,
+  2,128,17,8,144,166,9,16,187,1,24,51,129,101,51,86,165,227,90,165,227,90,165,238,90,165,238,90,165,119,90,197,
+  119,92,197,119,92,197,255,92,197,255,92,197,255,92,213,68,93,24,68,129,16,204,1,144,221,9,128,17,8,0,17,2,
+  0,153,0,0,0,0,131,56,0,0,0,0,0,160,24,17,10,0,0,0,0,30,17,31,225,0,0,0,80,17,47,242,
+  17,5,0,48,24,113,34,34,23,129,3,26,17,43,34,34,178,17,161,24,159,34,34,44,34,249,129,24,41,34,34,204,
+  204,156,129,24,201,34,194,198,204,156,129,24,201,204,204,198,204,156,129,24,153,102,204,102,102,153,129,24,157,105,102,102,
+  150,217,129,24,157,153,102,102,153,217,129,24,221,221,102,102,221,221,129,24,212,221,102,102,221,77,129,24,212,221,214,109,
+  221,77,129,24,68,212,77,212,77,68,129,24,113,68,68,68,68,23,129,26,17,71,68,68,116,17,161,48,24,241,68,68,
+  31,129,3,0,80,17,127,247,17,5,0,0,0,30,17,17,225,0,0,0,0,160,17,129,10,0,0,0,0,0,131,56,
+  0,0,0,1,11,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,11,1,11,47,191,223,223,223,223,223,223,
+  223,223,223,223,223,223,223,223,191,47,11,15,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,15,15,
+  223,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,223,15,15,223,255,255,207,111,111,111,111,111,111,111,111,
+  111,111,111,111,207,223,15,15,223,255,239,31,8,4,4,4,4,4,4,4,4,4,4,8,31,207,15,15,223,255,191,11,
+  0,0,0,0,0,0,0,0,0,0,0,0,11,159,15,15,223,255,191,9,0,0,0,0,0,0,0,0,0,0,0,0,
+  9,159,15,15,223,255,191,10,0,0,0,0,0,0,0,0,0,0,0,0,10,159,15,15,223,255,223,14,3,0,0,0,
+  0,0,0,0,0,0,0,3,14,191,15,15,223,255,255,143,31,13,13,13,13,13,13,13,13,13,13,31,143,223,15,15,
+  223,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,223,15,15,223,255,255,255,255,255,255,255,255,255,255,255,
+  255,255,255,255,255,223,15,15,223,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,223,15,15,207,239,239,239,
+  239,239,239,239,239,239,239,239,239,239,239,239,239,207,15,15,175,207,207,207,207,207,15,15,15,15,15,15,207,207,207,207,
+  207,175,15,15,175,207,207,207,207,207,79,79,79,79,79,79,207,207,207,207,207,175,15,15,159,207,207,207,207,207,207,207,
+  207,207,207,207,207,207,207,207,207,159,15,11,47,159,175,175,175,175,175,175,175,175,175,175,175,175,175,175,159,47,11,1,
+  11,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,11,1,0,248,251,251,251,251,251,251,203,139,139,139,136,
+  0,244,255,255,255,255,255,255,255,207,143,143,143,143,132,246,255,255,255,255,255,255,255,223,191,191,191,191,182,245,255,255,
+  255,255,255,255,255,255,255,255,255,255,245,241,252,255,255,255,255,255,255,255,255,255,255,252,241,0,0,242,242,242,242,242,
+  242,242,242,242,242,0,0,211,221,221,221,221,209,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,210,223,223,223,223,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,209,223,223,223,223,
+  217,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,223,223,223,223,206,9,9,9,9,7,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,222,223,223,223,223,63,47,47,47,45,0,0,0,0,0,0,
+  0,0,4,7,2,0,0,0,0,0,206,223,223,223,223,239,255,255,255,255,253,253,253,253,253,253,237,157,61,15,15,12,
+  7,2,0,0,175,223,219,214,215,232,249,251,252,253,255,255,255,255,255,255,255,255,255,223,143,47,15,15,4,0,31,143,
+  253,249,248,247,246,244,243,242,0,241,242,244,245,246,248,249,250,251,111,15,14,8,1,0,15,47,95,127,159,191,223,255,
+  255,255,255,254,253,251,250,249,248,230,21,12,15,9,1,0,0,0,10,12,14,15,15,15,15,15,47,79,111,143,175,191,
+  239,255,191,47,15,11,3,0,0,0,0,0,0,0,0,15,95,143,127,127,111,95,79,31,15,15,15,15,15,13,5,0,
+  0,0,0,0,0,0,0,0,4,15,175,191,191,191,191,175,63,15,8,6,8,10,8,0,0,0,0,0,0,0,0,0,
+  0,0,9,47,191,191,191,191,127,31,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,14,31,63,63,
+  63,47,15,12,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,11,11,11,11,11,8,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,244,244,244,244,244,244,241,0,0,0,0,0,
+  0,0,0,0,0,0,253,255,255,255,255,255,249,0,0,0,0,0,0,0,0,0,0,0,250,255,255,255,255,255,255,246,
+  0,0,0,0,0,0,0,0,0,0,247,255,255,255,255,255,255,254,242,0,0,0,0,0,0,0,0,0,244,255,255,255,
+  255,255,255,255,252,240,0,0,0,0,0,0,0,0,242,255,255,255,255,255,255,255,255,249,0,0,0,0,0,0,0,0,
+  0,242,242,242,242,242,242,242,242,242,0,196,201,200,199,198,196,195,194,0,0,0,0,0,0,0,0,0,0,194,198,199,
+  200,201,203,204,205,207,206,205,203,202,201,200,198,197,196,0,0,0,0,0,0,0,0,0,193,194,196,197,198,200,201,202,
+  195,0,0,0,0,0,0,5,10,13,15,15,13,10,5,0,0,0,0,0,0,0,0,0,0,5,14,63,143,207,223,223,
+  207,143,63,14,5,0,0,0,0,0,0,0,9,47,191,255,191,127,111,111,127,191,255,191,47,9,0,0,0,0,0,9,
+  63,239,207,63,9,5,2,2,5,9,63,207,239,63,9,0,0,0,5,47,239,175,12,2,0,0,2,2,0,0,2,12,
+  175,239,47,5,0,0,14,191,207,13,1,0,7,29,79,79,29,7,0,1,13,207,191,14,0,5,63,255,255,159,40,11,
+  143,255,255,255,255,143,11,40,159,255,255,63,5,10,143,255,255,255,223,175,255,255,175,175,255,255,175,223,255,255,255,143,
+  10,13,207,255,255,255,255,255,255,63,15,15,63,255,255,255,255,255,255,207,13,15,223,255,255,255,255,255,175,15,15,15,
+  15,175,255,255,255,255,255,223,15,15,223,255,255,255,255,255,175,15,15,15,15,175,255,255,255,255,255,223,15,13,207,255,
+  255,255,255,255,255,63,15,15,63,255,255,255,255,255,255,207,13,10,143,255,255,255,223,175,255,255,175,175,255,255,175,223,
+  255,255,255,143,10,5,63,255,255,159,40,11,143,255,255,255,255,143,11,40,159,255,255,63,5,0,14,191,207,13,1,0,
+  7,29,79,79,29,7,0,1,13,207,191,14,0,0,5,47,239,175,12,2,0,0,2,2,0,0,2,12,175,239,47,5,
+  0,0,0,9,63,239,207,63,9,5,2,2,5,9,63,207,239,63,9,0,0,0,0,0,9,47,191,255,191,127,111,111,
+  127,191,255,191,47,9,0,0,0,0,0,0,0,5,14,63,143,207,223,223,207,143,63,14,5,0,0,0,0,0,0,0,
+  0,0,0,5,10,13,15,15,13,10,5,0,0,0,0,0,0,0,0,240,246,250,253,253,250,246,240,0,0,0,243,253,
+  255,255,253,253,255,255,253,243,0,242,254,255,248,242,0,0,242,248,255,254,242,0,247,244,0,0,0,0,0,0,244,247,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
   0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,48,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  80,0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,112,2,0,0,0,0,0,0,0,0,0,145,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,38,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,144,6,0,0,0,0,0,0,0,0,0,148,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,41,0,7,0,0,0,0,0,0,0,0,0,0,0,0,0,160,9,
-  0,0,0,0,0,0,0,0,0,150,0,0,0,0,0,0,0,0,0,0,0,0,0,0,59,0,10,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,176,12,0,0,0,0,0,0,0,0,0,169,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,77,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,192,45,0,0,0,0,0,0,0,0,0,171,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,32,93,16,61,0,0,0,0,0,0,0,0,0,0,0,0,0,208,77,0,0,
-  0,0,0,0,0,0,0,173,0,0,0,0,0,0,0,0,0,0,0,0,0,80,109,32,93,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,209,125,0,0,0,0,0,0,0,0,32,189,0,0,0,0,0,0,0,0,0,0,0,0,0,112,
-  108,48,140,0,0,0,32,5,0,0,0,0,0,0,0,0,194,172,0,0,0,0,0,0,0,0,80,188,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,144,124,64,172,0,0,0,80,10,0,0,0,0,0,0,0,0,195,204,1,0,0,0,
-  0,0,0,0,112,172,0,0,0,0,0,0,0,0,0,0,0,0,0,176,139,80,187,1,0,0,112,91,0,0,0,0,
-  0,0,0,0,180,187,4,0,0,0,0,0,0,0,144,187,0,0,0,0,0,0,0,0,0,0,0,0,0,178,139,80,
-  187,3,0,0,160,171,1,0,0,0,0,0,0,0,180,187,6,0,0,0,0,0,0,0,160,187,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,179,155,96,187,5,0,0,178,187,6,0,0,0,0,0,80,1,181,187,9,0,0,0,0,0,
-  0,0,177,187,16,0,0,0,0,0,0,0,0,0,0,0,0,165,154,112,170,7,0,0,165,170,26,0,0,0,0,0,
-  163,3,166,170,10,0,0,0,0,0,0,0,163,170,81,0,0,0,0,0,0,0,0,0,0,0,0,167,170,112,170,9,
-  0,0,167,170,122,0,0,0,0,16,169,5,166,170,58,0,0,0,0,0,0,0,165,170,113,0,0,0,0,0,0,0,
-  0,0,0,0,0,153,153,128,153,25,0,0,153,153,153,2,0,0,0,112,153,7,151,153,89,0,0,0,0,1,0,0,
-  150,153,129,2,0,1,0,0,0,0,0,0,0,0,16,153,153,129,153,57,0,48,153,153,153,7,0,0,0,149,153,8,
-  152,153,121,0,0,0,32,7,0,0,152,153,146,3,0,72,0,0,0,0,0,0,0,0,48,136,136,129,136,72,0,80,
-  136,136,136,56,0,0,48,136,136,24,136,136,136,0,0,0,112,72,0,0,136,136,131,5,48,136,22,0,0,0,0,0,
-  0,0,64,136,136,130,136,104,0,112,136,136,136,120,0,0,129,136,136,40,136,136,136,2,0,0,132,136,1,32,136,136,
-  131,6,80,136,136,3,0,0,0,0,0,0,80,136,136,131,136,120,0,129,136,136,136,136,3,0,134,136,136,88,136,136,
-  136,4,0,16,135,136,5,48,136,136,132,7,112,136,136,88,0,0,0,0,0,0,96,119,119,116,119,119,1,115,119,119,
-  119,119,7,80,119,119,119,103,119,119,119,5,0,96,119,119,39,64,119,119,117,23,114,119,119,119,22,0,0,0,0,0,
-  112,119,119,117,119,119,2,116,119,119,119,119,71,115,119,119,119,119,119,119,119,6,0,115,119,119,103,80,119,119,117,55,
-  115,119,119,119,103,3,0,0,0,0,97,102,102,101,102,102,3,102,102,102,102,102,102,102,102,102,102,102,102,102,102,22,
-  16,102,102,102,102,99,102,102,102,70,101,102,102,102,102,70,1,0,0,0,98,102,102,102,102,102,20,102,102,102,102,102,
-  102,102,102,102,102,102,102,102,102,38,64,102,102,102,102,102,102,102,102,86,102,102,102,102,102,102,37,0,0,0,83,85,
-  85,85,85,85,37,85,85,85,85,85,85,85,85,85,85,85,85,85,85,53,81,85,85,85,85,85,85,85,85,85,85,85,
-  85,85,85,85,85,3,0,0,67,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,
-  68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,52,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,87,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,137,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,0,0,171,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,189,0,0,0,
-  0,0,0,0,0,16,18,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,12,0,32,221,
-  0,0,0,0,0,0,0,0,64,51,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,61,
-  0,64,221,2,0,0,0,0,0,0,0,80,51,204,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,32,92,0,96,204,4,0,0,1,0,0,0,0,112,68,204,92,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,145,3,48,124,0,112,204,6,0,16,4,0,0,0,0,144,68,187,187,5,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,48,186,5,64,155,0,144,187,8,0,48,4,0,0,0,0,160,85,187,187,107,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,181,187,6,80,187,0,160,187,9,0,96,4,0,0,0,0,177,85,187,187,187,7,0,0,0,
-  0,0,0,0,0,0,0,0,0,112,187,187,8,96,187,2,177,187,11,0,144,5,0,0,0,0,163,101,170,170,170,122,
-  0,0,0,0,0,0,0,0,0,0,0,32,169,170,170,9,112,170,4,163,170,42,0,161,5,0,0,0,0,164,102,170,
-  170,170,170,23,0,0,0,0,0,0,0,0,0,0,147,170,170,170,26,128,170,6,164,170,74,0,164,5,0,0,0,0,
-  150,118,153,153,153,153,137,1,0,0,0,0,0,0,0,0,80,153,153,153,153,41,144,153,8,150,153,89,0,150,23,0,
-  0,0,0,151,118,153,153,153,153,153,24,0,0,0,0,0,0,0,16,151,153,153,153,153,57,144,153,9,151,153,105,0,
-  152,86,0,0,0,0,136,118,136,136,136,136,136,136,2,0,0,0,0,0,0,114,136,136,136,136,136,72,129,136,40,136,
-  136,120,32,136,135,1,0,0,16,136,118,136,136,136,136,136,136,39,0,0,0,0,0,64,135,136,136,136,136,136,88,130,
-  136,72,136,136,136,64,136,135,5,0,0,32,119,118,119,119,119,119,119,119,119,3,0,0,0,0,117,119,119,119,119,119,
-  119,103,115,119,119,119,119,119,97,119,119,23,0,0,48,119,118,119,119,119,119,119,119,119,55,0,0,0,97,119,119,119,
-  119,119,119,119,119,116,119,119,119,119,119,115,119,119,87,0,0,64,102,102,102,102,102,102,102,102,102,102,3,0,32,102,
-  102,102,102,102,102,102,102,102,101,102,102,102,102,102,101,102,102,102,1,0,64,85,85,85,85,85,85,85,85,85,85,53,
-  0,83,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,4,16,83,85,85,85,85,85,85,85,85,
-  85,85,85,67,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,21,17,17,17,17,17,17,17,
-  17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,0,2,0,0,
-  0,0,0,0,0,0,0,0,0,112,3,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,
-  112,94,0,0,0,0,0,0,0,0,0,43,0,0,0,0,0,0,0,0,0,0,0,128,238,4,0,0,0,0,0,0,
-  0,0,92,0,0,0,0,0,0,0,0,0,0,0,128,221,109,0,0,0,0,0,0,0,16,141,0,0,0,0,0,0,
-  0,0,0,0,0,128,221,221,6,0,0,0,0,0,0,32,172,0,0,0,0,0,16,6,0,0,64,1,128,204,204,108,
-  0,0,0,0,0,0,64,204,1,0,0,0,0,80,10,0,0,144,2,112,204,204,204,7,0,0,0,0,0,80,187,3,
-  0,0,0,0,128,59,0,0,177,4,112,187,187,187,107,0,0,0,0,0,96,170,6,0,0,6,0,160,122,0,0,166,
-  5,128,170,170,170,170,7,0,0,0,0,128,170,8,0,64,26,0,164,170,1,0,169,6,114,170,170,170,170,122,0,0,
-  0,0,128,153,9,0,128,89,0,150,153,4,48,153,7,117,153,153,153,153,153,7,0,0,0,144,153,41,0,147,137,1,
-  152,153,7,96,153,7,103,153,153,153,153,153,121,0,0,0,129,136,72,0,134,136,36,136,136,40,129,136,24,104,136,136,
-  136,136,136,136,23,0,0,114,119,87,16,119,119,87,119,119,71,116,119,55,119,119,119,119,119,119,119,103,1,0,115,119,
-  103,64,119,119,119,119,119,103,118,119,87,119,119,119,119,119,119,119,119,22,0,99,102,102,98,102,102,102,102,102,102,102,
-  102,102,102,102,102,102,102,102,102,102,86,1,84,85,85,84,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,85,
-  85,85,21,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,0,0,64,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,112,0,0,0,0,0,0,0,0,0,0,0,0,0,116,2,0,32,1,0,0,0,
-  0,0,0,0,0,48,135,83,1,144,138,37,0,0,0,0,0,0,0,96,136,116,5,148,153,153,104,19,0,0,0,0,
-  0,113,119,118,23,119,119,119,119,119,70,2,0,0,0,99,102,102,86,102,102,102,102,102,102,86,36,1,0,33,34,34,
-  34,34,34,34,34,34,34,34,34,18,0,64,204,4,0,0,176,68,11,0,0,179,0,59,0,0,149,0,89,0,0,134,
-  0,104,0,0,134,0,104,0,0,165,0,90,0,0,194,17,44,0,0,160,238,10,0,0,176,221,11,0,0,194,0,44,
-  0,0,165,0,90,0,0,134,0,104,0,0,134,0,104,0,0,149,0,89,0,0,195,0,60,0,0,176,187,11,0,0,
-  144,238,9,0,0,193,34,28,0,0,164,0,74,0,0,134,0,104,0,0,134,0,104,0,0,150,0,105,0,0,179,0,
-  59,0,0,192,119,12,0,0,144,238,9,0,0,193,102,28,0,0,180,0,75,0,0,150,0,105,0,0,134,0,104,0,
-  0,134,0,104,0,0,164,0,74,0,0,193,68,28,0,0,144,238,9,0,0,192,170,12,0,0,195,0,60,0,0,149,
-  0,89,0,0,134,0,104,0,0,134,0,104,0,0,164,0,74,0,0,194,0,44,0,0,160,136,10,0,0,96,255,6,
-  0,0,241,102,31,0,0,228,0,78,0,184,251,204,191,139,251,255,255,255,191,100,102,102,102,70,0,64,204,4,0,0,
-  176,68,11,0,0,194,0,44,0,0,149,0,89,0,0,134,0,104,0,0,134,0,104,0,0,149,0,89,0,0,195,0,
-  60,0,0,176,153,11,0,0,144,238,9,0,0,193,68,28,0,0,180,0,75,0,0,150,0,105,0,0,134,0,104,0,
-  0,134,0,104,0,0,164,0,74,0,0,194,0,44,0,0,160,102,10,0,0,96,255,6,0,0,241,102,31,0,0,228,
-  0,78,0,184,251,204,191,139,251,255,255,255,191,100,102,102,102,70,0,0,0,0,49,0,0,0,0,0,0,0,0,135,
-  0,0,0,0,0,0,0,0,237,0,0,0,0,0,0,0,64,255,4,0,0,0,0,0,0,144,255,10,0,0,0,0,
-  0,0,241,255,31,0,0,0,68,101,135,250,255,175,120,86,68,228,255,255,255,255,255,255,255,78,32,252,255,255,255,255,
-  255,207,2,0,144,255,255,255,255,255,9,0,0,0,246,255,255,255,111,0,0,0,0,241,255,255,255,31,0,0,0,0,
-  244,255,255,255,79,0,0,0,0,248,255,238,255,143,0,0,0,0,252,191,18,250,207,0,0,0,16,239,5,0,80,253,
-  1,0,0,80,25,0,0,0,145,5,0,0,16,0,0,0,0,0,1,0,10,8,8,8,8,8,8,8,8,8,8,8,
-  8,8,8,8,8,8,8,6,13,10,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,6,5,13,13,10,8,
-  8,8,8,8,8,8,8,8,8,8,8,8,8,6,5,5,13,13,13,10,8,8,8,8,8,8,8,8,8,8,8,8,
-  6,5,5,5,13,13,13,13,10,8,8,8,8,8,8,8,8,8,8,6,5,5,5,5,13,13,13,13,13,10,8,8,
-  8,8,8,8,8,8,6,5,5,5,5,5,13,13,13,13,13,13,10,8,8,8,8,8,8,6,5,5,5,5,5,5,
-  13,13,13,13,13,13,13,10,8,8,8,8,6,5,5,5,5,5,5,5,13,13,13,13,13,13,13,13,10,8,8,6,
-  5,5,5,5,5,5,5,5,13,13,13,13,13,13,13,13,13,10,6,5,5,5,5,5,5,5,5,5,13,13,13,13,
-  13,13,13,13,13,7,4,5,5,5,5,5,5,5,5,5,13,13,13,13,13,13,13,13,7,3,3,4,5,5,5,5,
-  5,5,5,5,13,13,13,13,13,13,13,7,3,3,3,3,4,5,5,5,5,5,5,5,13,13,13,13,13,13,7,3,
-  3,3,3,3,3,4,5,5,5,5,5,5,13,13,13,13,13,7,3,3,3,3,3,3,3,3,4,5,5,5,5,5,
-  13,13,13,13,7,3,3,3,3,3,3,3,3,3,3,4,5,5,5,5,13,13,13,7,3,3,3,3,3,3,3,3,
-  3,3,3,3,4,5,5,5,13,13,7,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,5,5,13,7,3,3,
-  3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,5,7,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,
-  3,3,3,4,0,0,98,57,51,147,38,0,0,0,123,229,248,255,143,94,183,0,160,229,17,17,17,17,17,94,10,220,
-  77,68,68,68,68,68,212,205,0,0,0,17,17,17,0,0,0,0,16,33,34,51,34,18,1,0,16,33,51,68,85,68,
-  51,18,1,16,50,84,118,119,103,69,35,1,33,67,101,135,170,120,86,52,18,16,17,34,51,68,51,34,17,1,0,32,
-  53,198,68,108,83,2,0,0,200,244,231,238,126,79,140,0,208,244,187,187,187,187,187,79,13,169,26,17,17,17,17,17,
-  161,154,0,0,0,17,17,17,0,0,0,0,16,33,34,51,34,18,1,0,16,33,51,68,85,68,51,18,1,16,50,84,
-  118,119,103,69,35,1,33,67,101,135,170,120,86,52,18,16,17,34,51,68,51,34,17,1,0,0,98,56,51,131,38,0,
-  0,0,91,231,175,170,250,126,181,0,144,247,17,17,17,17,17,127,9,220,77,68,68,68,68,68,212,205,0,0,0,17,
-  17,17,0,0,0,0,16,33,34,51,34,18,1,0,16,33,51,68,85,68,51,18,1,16,50,84,118,119,103,69,35,1,
-  33,67,101,135,170,120,86,52,18,16,17,34,51,68,51,34,17,1,0,0,0,176,197,92,11,0,0,0,0,0,80,159,
-  63,243,249,5,0,0,0,32,147,188,0,0,203,57,2,0,0,242,35,0,74,164,0,50,47,0,0,51,2,100,221,221,
-  70,32,51,0,80,41,128,125,119,119,215,8,146,5,240,12,212,119,119,119,119,77,192,15,155,11,118,238,238,238,238,103,
-  176,185,245,160,237,238,238,238,238,222,10,95,60,64,237,238,238,238,238,222,4,195,60,64,237,238,238,238,238,222,4,195,
-  245,160,29,17,17,17,17,209,10,95,155,11,230,17,17,17,17,110,176,185,240,12,212,17,17,17,17,77,192,15,80,41,
-  128,29,17,17,209,8,146,5,0,51,2,100,125,215,70,32,51,0,0,242,35,0,74,164,0,50,47,0,0,32,147,188,
-  0,0,203,57,2,0,0,0,80,159,63,243,249,5,0,0,0,0,0,176,197,92,11,0,0,0,0,0,0,0,0,16,
-  17,1,0,0,0,0,0,0,0,0,0,33,34,34,34,18,0,0,0,0,0,0,0,33,51,84,85,69,51,18,0,0,
-  0,0,0,16,66,101,119,119,119,86,36,1,0,0,0,0,50,100,135,136,136,136,120,70,35,0,0,0,16,83,134,120,
-  86,85,101,135,104,53,1,0,0,33,100,136,70,52,51,67,100,136,70,18,0,0,66,134,104,52,18,17,33,67,134,104,
-  36,0,16,83,135,70,18,0,0,0,33,100,120,53,1,32,99,120,52,1,0,0,0,16,67,135,54,2,32,116,104,36,
-  0,0,0,0,0,66,134,71,2,33,117,88,19,0,0,0,0,0,49,133,87,18,33,117,88,19,0,0,0,0,0,49,
-  133,87,18,33,117,88,19,0,0,0,0,0,49,133,87,18,33,117,88,19,0,0,0,0,0,49,133,87,18,32,116,104,
-  36,0,0,0,0,0,66,134,71,2,32,99,120,52,1,0,0,0,16,67,135,54,2,16,83,135,70,18,0,0,0,33,
-  100,120,53,1,0,66,134,104,52,18,17,33,67,134,104,36,0,0,33,100,136,70,52,51,67,100,136,70,18,0,0,16,
-  83,134,120,86,85,101,135,104,53,1,0,0,0,50,100,135,136,136,136,120,70,35,0,0,0,0,16,66,101,119,119,119,
-  86,36,1,0,0,0,0,0,33,51,84,85,69,51,18,0,0,0,0,0,0,0,33,34,34,34,18,0,0,0,0,0,
-  0,0,0,0,16,17,1,0,0,0,0,0,0,0,0,160,214,109,10,0,0,0,0,0,96,142,62,227,232,6,0,0,
-  0,32,131,173,0,0,218,56,2,0,0,226,35,0,73,148,0,50,46,0,0,51,2,196,85,85,76,32,51,0,96,40,
-  112,85,85,85,85,7,130,6,224,13,84,187,187,187,187,69,208,14,138,10,188,187,187,187,187,203,160,168,230,144,181,187,
-  187,187,187,91,9,110,61,64,245,255,255,255,255,95,4,211,61,64,245,255,255,255,255,95,4,211,230,144,245,255,255,255,
-  255,95,9,110,138,10,252,17,17,17,17,207,160,168,224,13,84,17,17,17,17,69,208,14,96,40,112,21,17,17,81,7,
-  130,6,0,51,2,196,181,91,76,32,51,0,0,226,35,0,73,148,0,50,46,0,0,32,131,173,0,0,218,56,2,0,
-  0,0,96,142,62,227,232,6,0,0,0,0,0,160,214,109,10,0,0,0,0,0,0,0,0,16,17,1,0,0,0,0,
-  0,0,0,0,0,33,34,34,34,18,0,0,0,0,0,0,0,33,51,84,85,69,51,18,0,0,0,0,0,16,66,101,
-  119,119,119,86,36,1,0,0,0,0,50,100,135,136,136,136,120,70,35,0,0,0,16,83,134,120,86,85,101,135,104,53,
-  1,0,0,33,100,136,70,52,51,67,100,136,70,18,0,0,66,134,104,52,18,17,33,67,134,104,36,0,16,83,135,70,
-  18,0,0,0,33,100,120,53,1,32,99,120,52,1,0,0,0,16,67,135,54,2,32,116,104,36,0,0,0,0,0,66,
-  134,71,2,33,117,88,19,0,0,0,0,0,49,133,87,18,33,117,88,19,0,0,0,0,0,49,133,87,18,33,117,88,
-  19,0,0,0,0,0,49,133,87,18,33,117,88,19,0,0,0,0,0,49,133,87,18,32,116,104,36,0,0,0,0,0,
-  66,134,71,2,32,99,120,52,1,0,0,0,16,67,135,54,2,16,83,135,70,18,0,0,0,33,100,120,53,1,0,66,
-  134,104,52,18,17,33,67,134,104,36,0,0,33,100,136,70,52,51,67,100,136,70,18,0,0,16,83,134,120,86,85,101,
-  135,104,53,1,0,0,0,50,100,135,136,136,136,120,70,35,0,0,0,0,16,66,101,119,119,119,86,36,1,0,0,0,
-  0,0,33,51,84,85,69,51,18,0,0,0,0,0,0,0,33,34,34,34,18,0,0,0,0,0,0,0,0,0,16,17,
-  1,0,0,0,0,0,0,0,0,144,60,195,9,0,0,0,0,0,192,78,142,232,228,12,0,0,0,32,72,147,0,0,
-  57,132,2,0,0,226,40,0,91,181,0,130,46,0,0,136,2,101,221,221,86,32,136,0,192,36,112,173,170,170,218,7,
-  66,12,224,3,213,170,170,170,170,93,48,14,73,9,166,170,170,170,170,106,144,148,236,176,253,255,255,255,255,223,11,206,
-  131,80,250,255,255,255,255,175,5,56,131,80,250,255,255,255,255,175,5,56,236,176,253,255,255,255,255,223,11,206,73,9,
-  246,17,17,17,17,111,144,148,224,3,213,17,17,17,17,93,48,14,192,36,112,29,17,17,209,7,66,12,0,136,2,101,
-  170,170,86,32,136,0,0,226,40,0,91,181,0,130,46,0,0,32,72,147,0,0,57,132,2,0,0,0,192,78,142,232,
-  228,12,0,0,0,0,0,144,60,195,9,0,0,0,0,0,0,0,0,16,17,1,0,0,0,0,0,0,0,0,0,33,
-  34,34,34,18,0,0,0,0,0,0,0,33,51,84,85,69,51,18,0,0,0,0,0,16,66,101,119,119,119,86,36,1,
-  0,0,0,0,50,100,135,136,136,136,120,70,35,0,0,0,16,83,134,120,86,85,101,135,104,53,1,0,0,33,100,136,
-  70,52,51,67,100,136,70,18,0,0,66,134,104,52,18,17,33,67,134,104,36,0,16,83,135,70,18,0,0,0,33,100,
-  120,53,1,32,99,120,52,1,0,0,0,16,67,135,54,2,32,116,104,36,0,0,0,0,0,66,134,71,2,33,117,88,
-  19,0,0,0,0,0,49,133,87,18,33,117,88,19,0,0,0,0,0,49,133,87,18,33,117,88,19,0,0,0,0,0,
-  49,133,87,18,33,117,88,19,0,0,0,0,0,49,133,87,18,32,116,104,36,0,0,0,0,0,66,134,71,2,32,99,
-  120,52,1,0,0,0,16,67,135,54,2,16,83,135,70,18,0,0,0,33,100,120,53,1,0,66,134,104,52,18,17,33,
-  67,134,104,36,0,0,33,100,136,70,52,51,67,100,136,70,18,0,0,16,83,134,120,86,85,101,135,104,53,1,0,0,
-  0,50,100,135,136,136,136,120,70,35,0,0,0,0,16,66,101,119,119,119,86,36,1,0,0,0,0,0,33,51,84,85,
-  69,51,18,0,0,0,0,0,0,0,33,34,34,34,18,0,0,0,0,0,0,0,0,0,16,17,1,0,0,0,0,0,
-  0,0,160,68,0,0,26,17,0,96,17,17,0,64,81,187,0,22,188,187,0,20,187,187,0,201,187,59,96,177,187,139,
-  160,177,187,235,64,92,85,5,144,85,85,3,16,85,85,3,22,85,85,8,26,85,85,15,202,85,85,2,196,204,204,2,
-  196,204,204,0,201,204,220,0,201,204,220,0,201,204,220,0,193,204,220,0,193,204,124,0,193,204,124,0,193,204,124,0,
-  193,204,124,0,193,204,124,0,193,204,124,0,193,204,124,0,193,204,124,0,193,204,220,0,201,204,220,0,201,204,220,0,
-  201,204,220,0,196,204,204,0,196,204,204,2,202,85,85,2,26,85,85,15,22,85,85,8,16,85,85,3,144,85,85,3,
-  64,92,85,5,160,177,187,235,96,177,187,139,0,201,187,59,0,20,187,187,0,22,188,187,0,64,81,187,0,96,17,17,
-  0,0,26,17,0,0,160,68,0,0,160,54,0,0,0,0,0,0,202,108,0,0,0,0,0,48,204,108,112,7,0,0,
-  0,96,28,129,66,36,0,0,0,195,17,129,71,116,119,2,0,154,17,129,68,68,68,2,0,28,17,129,68,68,68,2,
-  48,28,17,177,68,68,68,2,160,25,17,113,68,68,68,2,160,25,17,120,68,68,39,0,96,17,17,72,68,68,116,2,
-  192,17,17,79,68,68,68,7,195,17,17,79,68,68,68,7,147,153,153,69,68,68,68,7,154,153,153,77,68,68,68,7,
-  154,153,153,71,68,68,116,2,150,153,153,71,68,68,116,2,150,153,153,71,68,68,68,4,150,153,233,71,68,68,68,4,
-  156,153,233,71,68,68,68,4,156,153,233,71,68,68,68,4,156,153,233,71,68,68,116,2,156,153,233,71,68,68,68,7,
-  156,153,233,71,68,68,68,4,156,153,233,71,68,68,68,4,156,153,233,71,68,68,68,4,156,153,233,71,68,68,68,4,
-  156,153,233,71,68,68,116,2,156,153,233,71,68,68,68,7,156,153,233,71,68,68,68,4,156,153,233,71,68,68,68,4,
-  150,153,233,71,68,68,68,4,150,153,153,71,68,68,68,4,150,153,153,71,68,68,116,2,154,153,153,71,68,68,116,2,
-  154,153,153,77,68,68,68,7,147,153,153,69,68,68,68,7,195,17,17,79,68,68,68,7,192,17,17,79,68,68,68,7,
-  96,17,17,72,68,68,36,2,160,25,17,120,68,68,116,2,160,25,17,113,68,68,68,2,48,28,17,177,68,68,68,2,
-  0,28,17,129,68,68,68,2,0,154,17,129,68,68,68,2,0,195,17,129,71,116,34,0,0,96,28,129,66,36,0,0,
-  0,48,204,108,112,7,0,0,0,0,202,108,0,0,0,0,0,0,160,54,0,0,0,0,0,0,160,68,0,0,26,17,
-  0,80,17,17,0,64,97,187,0,21,189,187,0,20,187,187,0,216,187,59,80,177,187,123,160,177,187,235,64,189,187,11,
-  128,102,102,3,16,102,102,3,21,102,102,7,26,102,102,15,218,102,102,2,212,102,102,2,212,102,102,0,216,221,205,0,
-  216,221,205,0,216,221,205,0,209,221,205,0,209,221,157,0,209,221,157,0,209,221,157,0,209,221,157,0,209,221,157,0,
-  209,221,157,0,209,221,157,0,209,221,157,0,209,221,205,0,216,221,205,0,216,221,205,0,216,221,205,0,212,102,102,0,
-  212,102,102,2,218,102,102,2,26,102,102,15,21,102,102,7,16,102,102,3,128,102,102,3,64,189,187,11,160,177,187,235,
-  80,177,187,123,0,216,187,59,0,20,187,187,0,21,189,187,0,64,97,187,0,80,17,17,0,0,26,17,0,0,160,68,
-  0,0,160,58,0,0,0,0,0,0,106,166,0,0,0,0,0,48,102,166,112,7,0,0,0,96,22,129,66,36,0,0,
-  0,99,17,129,79,244,119,2,0,154,17,129,68,68,68,2,0,22,17,129,68,68,68,2,48,22,17,177,68,68,68,2,
-  160,25,17,241,68,68,68,2,160,25,17,254,68,68,47,0,96,17,17,248,68,68,116,2,96,17,17,72,68,68,68,15,
-  99,17,17,77,68,68,68,15,147,153,153,69,68,68,68,15,154,153,153,76,68,68,68,15,154,153,153,71,68,68,116,2,
-  154,153,153,71,68,68,244,7,154,153,233,71,68,68,68,4,150,153,233,71,68,68,68,4,150,153,233,79,68,68,68,4,
-  150,153,233,79,68,68,68,4,150,153,137,79,68,68,244,2,150,153,137,79,68,68,244,7,150,153,137,79,68,68,68,4,
-  150,153,137,79,68,68,68,4,150,153,137,79,68,68,68,4,150,153,137,79,68,68,68,4,150,153,137,79,68,68,244,2,
-  150,153,137,79,68,68,244,7,150,153,233,79,68,68,68,4,150,153,233,79,68,68,68,4,150,153,233,71,68,68,68,4,
-  154,153,233,71,68,68,68,4,154,153,153,71,68,68,116,2,154,153,153,71,68,68,244,2,154,153,153,76,68,68,68,15,
-  147,153,153,69,68,68,68,15,99,17,17,77,68,68,68,15,96,17,17,72,68,68,68,15,96,17,17,248,68,68,47,2,
-  160,25,17,254,68,68,127,2,160,25,17,241,68,68,68,2,48,22,17,177,68,68,68,2,0,22,17,129,68,68,68,2,
-  0,154,17,129,68,68,68,2,0,99,17,129,79,244,34,0,0,96,22,129,66,36,0,0,0,48,102,166,112,7,0,0,
-  0,0,106,166,0,0,0,0,0,0,160,58,0,0,0,0,0,0,0,243,3,0,0,0,0,0,96,17,10,0,0,0,
-  0,0,31,17,10,0,0,0,0,48,17,91,40,215,0,0,0,96,81,85,236,238,13,0,0,16,91,85,228,238,14,0,
-  0,31,85,85,228,238,222,0,0,186,85,149,238,238,126,0,0,81,85,69,238,238,238,2,240,81,85,69,238,238,238,13,
-  96,91,85,69,238,238,238,7,160,91,85,233,238,238,238,7,160,85,85,233,238,238,238,14,19,85,85,228,238,238,238,46,
-  31,85,85,228,238,238,238,222,31,187,91,228,238,238,238,222,182,187,91,228,238,238,238,126,182,187,91,228,238,238,238,126,
-  186,187,155,228,238,238,238,126,186,187,155,238,238,238,238,126,186,187,155,238,238,238,238,238,186,187,155,238,238,238,238,238,
-  177,187,155,238,238,238,238,238,177,187,155,238,238,238,238,238,177,187,155,238,238,238,238,238,177,187,155,238,238,238,238,238,
-  177,187,155,238,238,238,238,238,177,187,155,238,238,238,238,238,177,187,155,238,238,238,238,238,177,187,155,238,238,238,238,238,
-  186,187,155,238,238,238,238,238,186,187,155,238,238,238,238,238,186,187,155,238,238,238,238,126,186,187,155,228,238,238,238,126,
-  182,187,91,228,238,238,238,126,182,187,91,228,238,238,238,126,31,187,91,228,238,238,238,222,31,85,85,228,238,238,238,222,
-  19,85,85,228,238,238,238,46,160,85,85,233,238,238,238,14,160,91,85,233,238,238,238,7,96,91,85,69,238,238,238,7,
-  240,81,85,69,238,238,238,13,0,81,85,69,238,238,238,2,0,186,85,149,238,238,126,0,0,31,85,85,228,238,222,0,
-  0,16,91,85,228,238,14,0,0,96,81,85,236,238,13,0,0,48,17,91,40,215,0,0,0,0,31,17,10,0,0,0,
-  0,0,96,17,10,0,0,0,0,0,0,243,3,0,0,0,0,0,0,0,0,80,5,0,0,0,0,0,0,0,0,0,
-  124,193,0,0,0,0,0,0,0,0,0,124,193,0,0,0,0,0,0,0,0,0,21,81,0,0,0,0,0,0,0,0,
-  0,224,14,0,0,0,0,0,0,32,68,8,0,179,3,0,0,0,0,0,66,68,8,176,170,58,0,0,0,0,0,72,
-  68,8,171,170,170,3,0,0,0,32,68,17,9,166,170,170,11,0,0,0,128,20,17,185,170,170,170,58,0,0,0,64,
-  23,17,105,170,170,170,186,0,0,0,66,17,17,169,170,221,218,253,0,0,0,120,17,17,175,170,221,218,221,3,0,0,
-  116,17,17,166,170,170,170,170,11,0,32,20,17,145,170,170,170,170,170,6,0,32,20,17,145,170,170,170,170,170,6,0,
-  128,23,17,209,170,170,170,170,170,58,0,128,23,17,241,170,170,221,218,221,186,0,64,119,119,167,170,170,221,218,221,186,
-  0,64,119,119,167,170,170,221,218,221,106,0,66,119,119,167,170,170,170,170,17,109,0,66,119,119,161,170,170,170,218,119,
-  97,0,66,119,119,161,170,170,170,218,17,161,0,66,119,119,161,170,170,221,218,221,170,0,120,119,119,161,170,170,221,218,
-  221,170,3,120,119,119,173,170,170,221,218,221,170,3,120,119,119,173,170,170,170,170,170,170,11,120,119,119,173,170,170,170,
-  170,170,170,11,120,119,119,173,170,170,170,170,170,170,11,120,119,119,173,170,170,170,170,170,170,11,120,119,119,173,170,170,
-  221,218,221,170,11,120,119,119,173,170,170,221,218,221,170,11,120,119,119,173,170,170,170,170,170,170,11,120,119,119,173,170,
-  170,170,170,170,170,11,120,119,119,173,170,170,170,170,170,170,11,120,119,119,173,170,170,170,170,170,170,11,120,119,119,173,
-  170,170,221,218,221,170,3,120,119,119,161,170,170,221,218,221,170,3,66,119,119,161,170,170,221,218,221,170,0,66,119,119,
-  161,170,170,170,218,119,161,0,66,119,119,161,170,170,170,218,119,97,0,66,119,119,167,170,170,170,170,17,109,0,64,119,
-  119,167,170,170,221,218,221,106,0,64,119,119,167,170,170,221,218,221,186,0,128,23,17,241,170,170,221,218,221,186,0,128,
-  23,17,209,170,170,170,170,170,58,0,32,20,17,145,170,170,170,170,170,6,0,32,20,17,145,170,170,170,170,170,6,0,
-  0,116,17,17,166,170,170,170,170,11,0,0,120,17,17,175,170,221,218,221,3,0,0,66,17,17,169,170,221,218,253,0,
-  0,0,64,23,17,105,170,170,170,186,0,0,0,128,20,17,185,170,170,170,58,0,0,0,32,68,17,9,166,170,170,11,
-  0,0,0,0,72,68,8,171,170,170,3,0,0,0,0,66,68,8,176,170,58,0,0,0,0,0,32,68,8,0,179,3,
-  0,0,0,0,0,0,0,0,224,14,0,0,0,0,0,0,0,0,0,117,81,0,0,0,0,0,0,0,0,0,76,193,
-  0,0,0,0,0,0,0,0,0,28,193,0,0,0,0,0,0,0,0,0,80,5,0,0,0,0,0,0,0,227,3,0,
-  0,0,0,0,96,17,12,0,0,0,0,0,30,17,12,0,0,0,0,48,17,89,42,215,0,0,0,96,81,85,181,187,
-  13,0,0,16,89,85,191,187,11,0,0,30,85,85,180,187,219,0,0,156,85,133,187,187,123,0,0,81,85,245,187,187,
-  187,2,224,81,85,69,187,187,187,13,96,89,85,69,187,187,187,7,192,89,85,184,187,187,187,7,192,89,85,184,187,187,
-  187,11,19,153,153,191,187,187,187,43,30,153,153,180,187,187,187,219,30,153,153,180,187,187,187,219,150,153,89,180,187,187,
-  187,123,150,153,89,180,187,187,187,123,156,153,137,180,187,187,187,123,156,153,137,187,187,187,187,123,156,153,137,187,187,187,
-  187,187,156,153,137,187,187,187,187,187,145,153,137,187,187,187,187,187,145,153,137,187,187,187,187,187,145,153,137,187,187,187,
-  187,187,145,153,137,187,187,187,187,187,145,153,137,187,187,187,187,187,145,153,137,187,187,187,187,187,145,153,137,187,187,187,
-  187,187,145,153,137,187,187,187,187,187,156,153,137,187,187,187,187,187,156,153,137,187,187,187,187,187,156,153,137,187,187,187,
-  187,123,156,153,137,180,187,187,187,123,150,153,89,180,187,187,187,123,150,153,89,180,187,187,187,123,30,153,153,180,187,187,
-  187,219,30,153,153,180,187,187,187,219,19,153,153,191,187,187,187,43,192,89,85,184,187,187,187,11,192,89,85,184,187,187,
-  187,7,96,89,85,69,187,187,187,7,224,81,85,69,187,187,187,13,0,81,85,245,187,187,187,2,0,156,85,133,187,187,
-  123,0,0,30,85,85,180,187,219,0,0,16,89,85,191,187,11,0,0,96,81,85,181,187,13,0,0,48,17,89,42,215,
-  0,0,0,0,30,17,12,0,0,0,0,0,96,17,12,0,0,0,0,0,0,227,3,0,0,0,0,0,0,0,0,96,
-  6,0,0,0,0,0,0,0,0,0,171,177,0,0,0,0,0,0,0,0,0,171,177,0,0,0,0,0,0,0,0,0,
-  22,97,0,0,0,0,0,0,0,0,0,240,15,0,0,0,0,0,0,48,165,13,0,130,2,0,0,0,0,0,163,170,
-  5,128,68,36,0,0,0,0,0,165,170,5,72,68,68,2,0,0,0,48,170,17,9,68,68,68,14,0,0,0,80,26,
-  17,137,68,68,68,36,0,0,0,160,17,17,233,68,68,68,132,0,0,0,173,17,17,73,68,119,116,199,0,0,0,165,
-  17,17,76,68,119,116,119,2,0,0,21,17,17,78,68,68,68,68,8,0,48,26,17,145,68,68,68,68,68,14,0,208,
-  26,17,145,68,68,68,68,68,4,0,208,26,17,113,68,68,68,68,68,36,0,80,26,17,193,68,68,119,116,119,36,0,
-  80,17,17,65,68,68,119,116,119,132,0,160,17,17,65,68,68,119,116,119,228,0,163,17,17,65,68,68,68,68,17,231,
-  0,163,170,170,65,68,68,68,116,170,65,0,173,170,170,65,68,68,68,116,17,65,0,173,170,170,71,68,68,119,116,119,
-  68,0,173,170,170,71,68,68,119,116,119,68,2,173,170,170,71,68,68,119,116,119,68,2,165,170,170,71,68,68,68,68,
-  68,68,2,165,170,170,71,68,68,68,68,68,68,2,165,170,170,71,68,68,68,68,68,68,2,165,170,170,71,68,68,68,
-  68,68,68,8,165,170,170,71,68,68,119,116,119,68,8,165,170,170,71,68,68,119,116,119,68,8,165,170,170,71,68,68,
-  68,68,68,68,8,165,170,170,71,68,68,68,68,68,68,2,165,170,170,71,68,68,68,68,68,68,2,165,170,170,71,68,
-  68,68,68,68,68,2,173,170,170,71,68,68,119,116,119,68,2,173,170,170,71,68,68,119,116,119,68,2,173,170,170,71,
-  68,68,119,116,119,68,0,173,170,170,65,68,68,68,116,170,65,0,163,170,170,65,68,68,68,116,26,65,0,163,17,17,
-  65,68,68,68,68,17,231,0,160,17,17,65,68,68,119,116,119,228,0,80,17,17,65,68,68,119,116,119,132,0,80,26,
-  17,193,68,68,119,116,119,36,0,208,26,17,113,68,68,68,68,68,36,0,208,26,17,145,68,68,68,68,68,4,0,48,
-  26,17,145,68,68,68,68,68,14,0,0,21,17,17,78,68,68,68,68,8,0,0,165,17,17,76,68,119,116,119,2,0,
-  0,173,17,17,73,68,119,116,199,0,0,0,160,17,17,233,68,68,68,132,0,0,0,80,26,17,137,68,68,68,36,0,
-  0,0,48,170,17,9,68,68,68,14,0,0,0,0,165,170,5,72,68,68,2,0,0,0,0,163,170,5,128,68,36,0,
-  0,0,0,0,48,165,13,0,130,2,0,0,0,0,0,0,0,0,240,15,0,0,0,0,0,0,0,0,0,166,97,0,
-  0,0,0,0,0,0,0,0,171,177,0,0,0,0,0,0,0,0,0,27,177,0,0,0,0,0,0,0,0,0,96,6,
-  0,0,0,0,0,0,0,243,3,0,0,0,0,0,96,17,11,0,0,0,0,0,31,17,11,0,0,0,0,48,17,170,
-  40,199,0,0,0,96,81,85,222,221,12,0,0,16,90,85,217,221,13,0,0,31,85,85,212,221,205,0,0,171,85,149,
-  221,221,125,0,0,81,85,149,221,221,221,2,240,81,85,69,221,221,221,12,96,90,85,69,221,221,221,7,176,90,85,217,
-  221,221,221,7,176,90,85,217,221,221,221,13,19,170,170,217,221,221,221,45,31,170,170,212,221,221,221,205,31,170,170,212,
-  221,221,221,205,166,170,90,212,221,221,221,125,166,170,90,212,221,221,221,125,171,170,154,212,221,221,221,125,171,170,154,212,
-  221,221,221,125,171,170,154,212,221,221,221,221,171,170,154,221,221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,
-  221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,
-  221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,221,221,221,221,171,170,154,221,221,221,221,221,171,170,154,212,
-  221,221,221,221,171,170,154,212,221,221,221,125,171,170,154,212,221,221,221,125,166,170,90,212,221,221,221,125,166,170,90,212,
-  221,221,221,125,31,170,170,212,221,221,221,205,31,170,170,212,221,221,221,205,19,170,170,217,221,221,221,45,176,90,85,217,
-  221,221,221,13,176,90,85,217,221,221,221,7,96,90,85,69,221,221,221,7,240,81,85,69,221,221,221,12,0,81,85,149,
-  221,221,221,2,0,171,85,149,221,221,125,0,0,31,85,85,212,221,205,0,0,16,90,85,217,221,13,0,0,96,81,85,
-  222,221,12,0,0,48,17,170,40,199,0,0,0,0,31,17,11,0,0,0,0,0,96,17,11,0,0,0,0,0,0,243,
-  3,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,118,97,0,0,0,0,0,0,0,0,0,126,
-  225,0,0,0,0,0,0,0,0,0,22,97,0,0,0,0,0,0,0,0,0,176,11,0,0,0,0,0,0,32,68,8,
-  0,163,3,0,0,0,0,0,66,68,8,160,85,53,0,0,0,0,0,72,68,8,83,85,85,3,0,0,0,32,68,17,
-  14,93,85,85,10,0,0,0,128,20,17,174,85,85,85,53,0,0,0,64,23,17,222,85,85,85,165,0,0,0,66,17,
-  17,92,85,255,149,159,0,0,0,120,17,17,93,85,255,149,159,3,0,0,116,17,17,93,85,85,85,85,10,0,32,20,
-  17,225,85,85,85,85,85,13,0,32,20,17,225,85,85,85,85,85,13,0,128,23,17,241,85,85,85,85,85,53,0,128,
-  23,17,145,85,85,255,149,159,53,0,64,119,119,151,85,85,255,149,159,165,0,64,119,119,87,85,85,153,149,153,165,0,
-  66,119,119,87,85,85,85,85,17,223,0,66,119,119,81,85,85,85,245,119,209,0,66,119,119,81,85,85,85,149,17,81,
-  0,66,119,119,95,85,85,153,149,255,85,0,120,119,119,95,85,85,255,149,159,85,3,120,119,119,95,85,85,255,149,159,
-  85,3,120,119,119,95,85,85,85,85,85,85,3,120,119,119,95,85,85,85,85,85,85,3,120,119,119,95,85,85,85,85,
-  85,85,3,120,119,119,95,85,85,85,85,85,85,10,120,119,119,95,85,85,255,149,159,85,10,120,119,119,95,85,85,255,
-  149,159,85,10,120,119,119,95,85,85,85,85,85,85,10,120,119,119,95,85,85,85,85,85,85,3,120,119,119,95,85,85,
-  85,85,85,85,3,120,119,119,95,85,85,85,85,85,85,3,120,119,119,95,85,85,255,149,159,85,3,120,119,119,95,85,
-  85,255,149,159,85,3,66,119,119,95,85,85,153,149,255,85,0,66,119,119,81,85,85,85,149,119,81,0,66,119,119,81,
-  85,85,85,245,119,209,0,66,119,119,87,85,85,85,85,17,223,0,64,119,119,87,85,85,153,149,153,165,0,64,119,119,
-  151,85,85,255,149,159,165,0,128,23,17,145,85,85,255,149,159,53,0,128,23,17,241,85,85,85,85,85,53,0,32,20,
-  17,225,85,85,85,85,85,13,0,32,20,17,225,85,85,85,85,85,13,0,0,116,17,17,93,85,85,85,85,10,0,0,
-  120,17,17,93,85,255,149,159,3,0,0,66,17,17,92,85,255,149,159,0,0,0,64,23,17,222,85,85,85,165,0,0,
-  0,128,20,17,174,85,85,85,53,0,0,0,32,68,17,14,93,85,85,10,0,0,0,0,72,68,8,83,85,85,3,0,
-  0,0,0,66,68,8,160,85,53,0,0,0,0,0,32,68,8,0,163,3,0,0,0,0,0,0,0,0,176,11,0,0,
-  0,0,0,0,0,0,0,118,97,0,0,0,0,0,0,0,0,0,78,225,0,0,0,0,0,0,0,0,0,22,97,0,
-  0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,32,88,85,133,2,0,0,0,0,0,0,0,128,26,
-  225,238,30,161,8,0,0,0,0,0,32,26,151,187,187,187,121,161,2,0,0,0,0,24,158,187,187,187,187,187,233,129,
-  0,0,0,128,113,187,107,198,204,108,182,187,23,8,0,0,18,183,187,187,198,204,204,204,182,123,33,0,0,234,182,51,
-  51,179,204,204,204,108,107,174,0,128,145,102,59,51,179,204,204,204,204,102,25,8,160,110,198,108,187,198,255,204,204,204,
-  108,230,10,18,109,198,204,204,204,102,204,204,204,108,214,33,24,153,204,204,204,204,102,204,204,204,204,153,129,21,153,204,
-  252,111,102,102,102,246,207,204,153,81,229,153,204,204,255,102,102,102,255,204,204,153,94,229,153,204,204,252,111,102,246,207,
-  204,204,153,94,21,153,204,204,204,111,102,246,204,204,204,153,81,24,255,204,204,204,105,255,150,204,204,204,255,129,18,253,
-  207,204,204,255,255,255,204,204,252,223,33,160,254,207,204,252,207,204,252,207,204,252,239,10,128,209,255,204,252,204,204,204,
-  207,204,255,29,8,0,234,68,207,204,204,204,204,204,252,68,174,0,0,18,78,68,204,204,204,204,204,68,228,33,0,0,
-  128,225,68,68,207,204,252,68,68,30,8,0,0,0,24,222,68,68,68,68,68,237,129,0,0,0,0,32,26,222,68,68,
-  68,237,161,2,0,0,0,0,0,128,26,17,238,17,161,8,0,0,0,0,0,0,0,32,88,85,133,2,0,0,0,0,
-  0,0,0,224,95,245,14,0,0,0,0,0,224,25,129,24,145,14,0,0,0,0,23,168,187,187,138,113,0,0,0,112,
-  129,187,187,187,187,24,7,0,0,18,184,107,204,204,182,139,33,0,0,133,187,187,204,204,108,187,88,0,32,161,59,51,
-  195,204,204,182,26,2,80,184,54,51,195,204,204,108,139,5,208,100,204,187,204,204,204,204,70,13,18,102,204,204,108,198,
-  204,204,102,33,135,102,204,204,108,198,204,204,102,120,143,198,204,106,182,107,166,204,108,248,143,198,204,106,187,187,166,204,
-  108,248,143,202,204,172,182,107,202,204,172,248,143,202,204,204,182,107,204,204,172,248,23,170,204,204,171,186,204,204,170,113,
-  18,170,204,204,170,170,204,204,170,33,208,164,204,172,202,172,202,204,74,13,80,168,202,172,204,204,204,172,138,5,32,65,
-  196,204,204,204,204,76,20,2,0,133,68,204,204,204,204,68,88,0,0,18,72,164,204,204,74,132,33,0,0,112,129,68,
-  68,68,68,24,7,0,0,0,23,129,68,68,24,113,0,0,0,0,224,25,17,17,145,14,0,0,0,0,0,224,95,245,
-  14,0,0,0,0,238,0,128,17,8,48,255,3,112,255,7,208,255,13,18,251,33,154,244,172,154,244,172,206,251,236,101,
-  255,86,101,255,86,101,255,86,101,255,86,101,255,86,101,255,86,197,255,92,197,255,92,206,255,236,202,255,172,26,255,161,
-  18,255,33,208,255,13,112,255,7,48,255,3,128,17,8,0,238,0,0,0,0,224,95,245,14,0,0,0,0,0,224,25,
-  129,24,145,14,0,0,0,0,23,168,102,102,138,113,0,0,0,112,193,102,102,102,102,28,7,0,0,18,108,102,187,187,
-  102,198,33,0,0,133,102,102,187,187,187,102,88,0,32,161,54,51,179,187,187,107,26,2,80,104,54,51,179,187,187,107,
-  134,5,208,106,187,102,75,180,187,187,166,13,18,106,187,187,75,180,187,187,166,33,135,186,187,187,75,180,187,187,171,120,
-  143,186,187,68,68,68,68,187,171,248,143,186,187,68,68,68,68,187,171,248,143,186,187,75,68,68,180,187,171,248,143,186,
-  187,187,68,68,187,187,171,248,135,186,187,187,68,68,187,187,171,120,18,170,187,75,68,68,180,187,170,33,208,172,187,75,
-  180,75,180,187,202,13,80,168,186,75,187,187,180,171,138,5,32,65,180,187,187,187,187,75,20,2,0,133,68,187,187,187,
-  187,68,88,0,0,18,72,68,187,187,68,132,33,0,0,112,129,68,68,68,68,24,7,0,0,0,23,193,68,68,28,113,
-  0,0,0,0,224,25,17,17,145,14,0,0,0,0,0,224,95,245,14,0,0,0,15,31,31,31,31,31,31,31,31,31,
-  31,31,31,31,31,31,31,31,31,15,31,191,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,191,31,31,207,
-  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,207,31,31,207,255,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,255,255,207,31,31,207,255,255,223,159,159,159,159,159,159,159,159,159,159,223,255,255,207,31,31,207,255,255,159,15,
-  15,15,15,15,15,15,15,15,15,159,255,255,207,31,31,207,255,255,159,15,9,6,6,6,6,6,6,9,15,159,255,255,
-  207,31,31,207,255,255,159,15,6,8,11,11,11,11,8,6,15,159,255,255,207,31,31,207,255,255,159,15,6,11,4,2,
-  2,4,11,6,15,159,255,255,207,31,31,207,255,255,159,15,6,11,2,0,0,2,11,6,15,159,255,255,207,31,31,207,
-  255,255,159,15,6,11,2,0,0,2,11,6,15,159,255,255,207,31,31,207,255,255,159,15,6,11,4,2,2,4,11,6,
-  15,159,255,255,207,31,31,207,255,255,159,15,6,8,11,11,11,11,8,6,15,159,255,255,207,31,31,207,255,255,159,15,
-  9,6,6,6,6,6,6,9,15,159,255,255,207,31,31,207,255,255,159,15,15,15,15,15,15,15,15,15,15,159,255,255,
-  207,31,31,207,255,255,223,159,159,159,159,159,159,159,159,159,159,223,255,255,207,31,31,207,255,255,255,255,255,255,255,255,
-  255,255,255,255,255,255,255,255,207,31,31,207,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,207,31,31,191,
-  207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,207,191,31,15,31,31,31,31,31,31,31,31,31,31,31,31,31,
-  31,31,31,31,31,15,246,249,249,249,249,246,249,255,255,255,255,249,249,255,255,255,255,249,249,255,255,255,255,249,249,255,
-  255,255,255,249,246,249,249,249,249,246,0,0,0,0,2,9,9,9,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,4,13,6,14,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,4,11,0,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,11,15,15,15,
-  11,9,9,9,10,8,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,6,6,6,6,6,6,6,5,7,
-  10,13,15,12,9,3,0,0,0,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0,0,1,4,8,14,
-  12,5,0,0,0,0,1,4,4,4,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,6,13,10,0,0,0,
-  4,15,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,8,0,0,4,47,159,15,111,159,
-  159,159,47,111,159,159,159,159,159,159,143,15,143,159,159,111,63,15,6,0,4,47,159,15,159,255,255,255,79,159,255,255,
-  255,255,255,255,223,15,223,255,255,255,255,207,47,4,4,47,159,15,159,255,255,255,79,159,255,255,255,255,255,255,223,15,
-  223,255,255,255,255,255,79,4,4,47,127,15,143,223,223,223,63,143,223,223,223,223,223,223,207,15,207,223,223,223,223,159,
-  31,3,3,11,11,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,5,0,0,0,0,10,
-  31,31,12,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,1,0,0,0,0,0,4,9,9,5,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,249,241,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,244,255,242,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,249,249,249,249,249,249,249,250,248,245,242,0,0,0,0,0,0,255,255,255,255,255,255,255,255,255,255,255,254,
-  251,248,241,0,0,239,239,239,239,239,239,239,239,239,239,239,239,239,239,239,249,242,81,81,81,81,81,81,81,81,81,81,
-  81,81,81,81,81,81,0,0,0,0,0,0,0,5,10,13,15,15,13,10,5,0,0,0,0,0,0,0,0,0,0,5,
-  14,47,111,159,175,175,159,111,47,14,5,0,0,0,0,0,0,0,9,31,143,207,239,255,255,255,255,239,207,143,31,9,
-  0,0,0,0,0,9,47,175,239,255,255,255,255,255,255,255,255,239,175,47,9,0,0,0,5,31,175,63,223,255,255,255,
-  255,255,255,255,255,223,63,175,31,5,0,0,14,143,239,223,63,223,255,159,111,111,159,255,223,63,223,239,143,14,0,5,
-  47,207,255,255,223,63,47,13,8,8,13,47,63,223,255,255,207,47,5,10,111,239,255,255,255,47,9,0,0,0,0,9,
-  47,255,255,255,239,111,10,13,159,255,255,255,159,13,0,0,0,0,0,0,13,159,255,255,255,159,13,15,175,255,255,255,
-  111,8,0,0,0,0,0,0,8,111,255,255,255,175,15,15,175,255,255,255,111,8,0,0,0,0,0,0,8,111,255,255,
-  255,175,15,13,159,255,255,255,159,13,0,0,0,0,0,0,13,159,255,255,255,159,13,10,111,239,255,255,255,47,9,0,
-  0,0,0,9,47,255,255,255,239,111,10,5,47,207,255,255,223,63,47,13,8,8,13,47,63,223,255,255,207,47,5,0,
-  14,143,239,223,63,223,255,159,111,111,159,255,223,63,223,239,143,14,0,0,5,31,175,63,223,255,255,255,255,255,255,255,
-  255,223,63,175,31,5,0,0,0,9,47,175,239,255,255,255,255,255,255,255,255,239,175,47,9,0,0,0,0,0,9,31,
-  143,207,239,255,255,255,255,239,207,143,31,9,0,0,0,0,0,0,0,5,14,47,111,159,175,175,159,111,47,14,5,0,
-  0,0,0,0,0,0,0,0,0,5,10,13,15,15,13,10,5,0,0,0,0,0,0,0,0,244,248,248,244,0,0,0,
-  248,255,255,255,255,248,0,244,255,255,255,255,255,255,244,248,255,255,255,255,255,255,248,248,255,255,255,255,255,255,248,244,
-  255,255,255,255,255,255,244,0,248,255,255,255,255,248,0,0,0,244,248,248,244,0,0,0,0,0,0,0,0,0,0,0,
-  0,224,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,14,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,224,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,14,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,119,119,119,119,119,119,119,119,119,119,119,119,119,119,23,
-  177,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,119,119,119,119,119,119,119,119,
-  119,119,119,119,119,119,23,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,151,
-  153,153,153,153,153,153,153,153,153,153,153,153,153,25,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,224,113,151,153,153,153,153,153,153,153,153,153,153,153,153,153,25,81,3,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,224,113,151,153,153,153,153,153,153,153,153,153,153,153,153,153,25,81,3,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,151,153,153,153,153,153,153,153,153,153,153,153,
-  153,153,25,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,151,153,153,153,153,
-  153,153,153,153,153,153,153,153,153,25,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  224,113,151,153,153,153,153,153,153,153,153,153,153,153,153,153,25,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,224,113,151,153,153,153,153,153,153,153,153,153,153,153,153,153,25,81,3,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,151,153,153,153,153,153,153,153,153,153,153,153,153,153,25,81,
-  3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,151,153,153,153,153,153,153,153,153,
-  153,153,153,153,153,25,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,151,153,
-  153,153,153,153,153,153,153,153,153,153,153,153,25,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  229,238,238,30,113,151,153,153,153,153,153,153,153,153,153,153,153,153,153,25,225,238,238,94,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,30,17,17,17,113,151,153,153,153,153,153,153,153,153,153,153,153,153,153,25,17,17,17,225,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,34,34,34,114,151,153,153,153,153,153,153,153,153,153,153,153,153,
-  153,41,34,34,34,225,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,34,34,34,114,151,153,153,153,153,153,
-  153,153,153,153,153,153,153,153,41,34,34,34,225,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,34,34,34,
-  114,151,153,153,153,153,153,153,153,153,153,153,153,153,153,41,34,34,34,225,53,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,30,34,34,34,114,151,153,153,153,153,153,153,153,153,153,153,153,153,153,41,34,34,34,225,53,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,30,34,34,34,114,151,153,153,153,153,153,153,153,153,153,153,153,153,153,41,34,34,
-  34,225,53,0,0,0,0,0,0,0,238,238,238,238,238,238,238,17,34,34,34,114,151,153,153,153,153,153,153,153,153,153,
-  153,153,153,153,41,34,34,34,17,225,238,238,238,238,238,238,0,30,17,17,17,17,17,17,17,34,34,34,114,151,204,204,
-  150,153,153,153,153,153,153,153,153,153,153,41,34,34,34,17,17,17,17,17,17,17,225,0,30,119,119,119,119,119,119,119,
-  119,119,119,119,151,17,17,17,150,153,153,153,153,153,153,153,153,153,153,121,119,119,119,119,119,119,119,119,119,17,59,30,
-  119,119,119,119,119,119,119,119,119,119,119,151,17,28,17,193,150,153,153,153,153,153,153,153,153,153,121,119,119,119,119,119,
-  119,119,119,119,17,53,30,119,153,153,153,153,153,153,153,153,153,153,153,17,253,28,17,193,153,153,153,153,153,153,153,153,
-  153,153,153,153,153,153,153,153,153,153,153,17,53,30,119,153,153,153,153,153,153,153,153,153,153,153,17,221,173,17,17,193,
-  153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,17,53,30,119,153,153,153,153,153,153,153,153,153,153,
-  105,17,221,221,173,17,17,97,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,17,53,30,119,153,153,153,
-  153,153,153,153,153,153,153,105,17,221,221,221,205,17,17,97,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,
-  17,53,30,119,153,153,153,153,153,153,153,153,153,153,105,17,221,221,221,221,207,17,17,108,153,153,153,153,153,153,153,153,
-  153,153,153,153,153,153,153,17,53,30,119,153,153,153,153,153,153,153,153,153,153,105,17,221,221,221,221,221,31,17,17,108,
-  153,153,153,153,153,153,153,153,153,153,153,153,153,153,17,53,30,119,153,153,153,153,153,153,153,153,153,153,105,17,221,221,
-  221,221,221,221,26,17,17,156,153,153,153,153,153,153,153,153,153,153,153,153,153,17,53,30,119,153,153,153,153,153,153,153,
-  153,153,153,105,17,221,221,221,221,221,221,221,26,17,17,156,153,153,153,153,153,153,153,153,153,153,153,153,17,53,30,119,
-  153,153,153,153,153,153,153,153,153,153,105,17,221,221,221,221,221,221,221,77,28,17,17,150,153,153,153,153,153,153,153,153,
-  153,153,153,17,53,30,119,153,153,153,153,153,153,153,153,153,153,105,17,221,221,221,221,221,221,221,221,253,28,17,193,150,
-  153,153,153,153,153,153,153,153,153,153,17,53,30,119,153,153,153,153,153,153,153,153,153,153,105,17,221,221,221,221,221,221,
-  221,221,221,253,28,17,193,150,153,153,153,153,153,153,153,153,153,17,53,30,119,153,153,153,153,153,153,153,153,153,153,105,
-  17,221,221,221,221,221,221,221,221,221,221,173,17,17,156,153,153,153,153,153,153,153,153,153,17,53,30,119,153,153,153,153,
-  153,153,153,153,153,153,105,17,221,221,221,221,221,221,221,221,221,221,221,164,17,156,153,153,153,153,153,153,153,153,153,17,
-  53,30,119,153,153,153,153,153,153,153,153,153,153,105,17,221,221,221,221,221,221,221,221,221,221,221,164,17,156,153,153,153,
-  153,153,153,153,153,153,17,53,30,119,102,102,102,102,102,102,102,102,102,102,102,17,68,68,68,68,68,68,68,68,68,68,
-  244,28,17,108,102,102,102,102,102,102,102,102,102,17,53,30,119,102,102,102,102,102,102,102,102,102,102,102,17,68,68,68,
-  68,68,68,68,68,68,244,28,17,17,102,102,102,102,102,102,102,102,102,102,17,53,30,119,102,102,102,102,102,102,102,102,
-  102,102,102,17,68,68,68,68,68,68,68,68,68,28,17,17,102,102,102,102,102,102,102,102,102,102,102,17,53,30,119,102,
-  102,102,102,102,102,102,102,102,102,102,17,68,68,68,68,68,68,68,68,26,17,17,108,102,102,102,102,102,102,102,102,102,
-  102,102,17,53,30,119,102,102,102,102,102,102,102,102,102,102,102,17,68,68,68,68,68,68,68,26,17,17,108,102,102,102,
-  102,102,102,102,102,102,102,102,102,17,53,30,119,102,102,102,102,102,102,102,102,102,102,102,17,68,68,68,68,68,68,202,
-  17,17,108,102,102,102,102,102,102,102,102,102,102,102,102,102,17,53,30,119,102,102,102,102,102,102,102,102,102,102,102,17,
-  68,68,68,68,68,207,17,17,97,102,102,102,102,102,102,102,102,102,102,102,102,102,102,17,53,30,119,102,102,102,102,102,
-  102,102,102,102,102,102,17,68,68,68,68,207,17,17,193,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,17,53,
-  30,119,102,102,102,102,102,102,102,102,102,102,102,17,68,68,68,164,17,17,193,102,102,102,102,102,102,102,102,102,102,102,
-  102,102,102,102,102,17,53,30,119,102,102,102,102,102,102,102,102,102,102,102,17,68,68,164,17,17,193,102,102,102,102,102,
-  102,102,102,102,102,102,102,102,102,102,102,102,17,53,30,119,102,102,102,102,102,102,102,102,102,102,102,17,68,164,17,17,
-  193,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,17,53,30,119,102,102,102,102,102,102,102,102,102,
-  102,102,17,244,28,17,17,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,17,53,30,119,102,102,
-  102,102,102,102,102,102,102,102,102,17,28,17,17,108,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,
-  102,17,53,30,119,102,102,102,102,102,102,102,102,102,102,102,17,17,17,108,102,102,102,102,102,102,102,102,102,102,102,102,
-  102,102,102,102,102,102,102,102,17,53,30,17,17,17,17,17,17,17,136,136,136,104,102,204,204,108,102,102,102,102,102,102,
-  102,102,102,102,134,136,136,136,17,17,17,17,17,17,17,17,53,238,17,17,17,17,17,17,17,136,136,136,104,102,102,102,
-  102,102,102,102,102,102,102,102,102,102,102,134,136,136,136,17,17,17,17,17,17,17,225,53,48,85,85,85,85,85,85,30,
-  136,136,136,120,105,102,102,102,102,102,102,102,102,102,102,102,102,102,134,136,136,136,225,85,85,85,85,85,85,85,53,48,
-  187,187,187,187,187,187,30,136,136,136,120,103,102,102,102,102,102,102,102,102,102,102,102,102,102,134,136,136,136,225,181,187,
-  187,187,187,187,187,59,0,0,0,0,0,0,0,30,136,136,136,120,103,102,102,102,102,102,102,102,102,102,102,102,102,102,
-  134,136,136,136,225,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,136,136,136,120,103,102,102,102,102,102,102,
-  102,102,102,102,102,102,102,134,136,136,136,225,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,30,136,136,136,120,
-  105,102,102,102,102,102,102,102,102,102,102,102,102,102,134,136,136,136,225,53,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,30,17,17,17,113,105,102,102,102,102,102,102,102,102,102,102,102,102,102,22,17,17,17,225,53,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,229,238,238,30,113,105,102,102,102,102,102,102,102,102,102,102,102,102,102,22,225,238,238,
-  238,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,85,85,21,113,105,102,102,102,102,102,102,102,102,102,102,
-  102,102,102,22,81,85,85,85,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,187,187,27,113,105,102,102,102,
-  102,102,102,102,102,102,102,102,102,102,22,81,187,187,187,59,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,224,113,105,102,102,102,102,102,102,102,102,102,102,102,102,102,22,81,3,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,224,113,105,102,102,102,102,102,102,102,102,102,102,102,102,102,22,81,3,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,105,102,102,102,102,102,102,102,102,102,102,102,102,102,22,
-  81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,105,102,102,102,102,102,102,102,
-  102,102,102,102,102,102,22,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,105,
-  102,102,102,102,102,102,102,102,102,102,102,102,102,22,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,224,113,105,102,102,102,102,102,102,102,102,102,102,102,102,102,22,81,3,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,224,113,105,102,102,102,102,102,102,102,102,102,102,102,102,102,22,81,3,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,105,102,102,102,102,102,102,102,102,102,102,102,
-  102,102,22,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,113,105,102,102,102,102,
-  102,102,102,102,102,102,102,102,102,22,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  224,113,105,102,102,102,102,102,102,102,102,102,102,102,102,102,22,81,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,224,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,81,3,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,30,17,17,17,17,17,17,17,17,17,17,17,17,17,17,17,94,
-  3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,85,85,85,85,85,85,85,85,85,
-  85,85,85,85,85,85,85,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,187,187,
-  187,187,187,187,187,187,187,187,187,187,187,187,187,187,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  102,102,102,102,102,102,102,102,102,102,102,102,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,17,17,
-  17,17,17,17,17,17,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,34,34,34,34,34,34,34,34,34,
-  34,17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,34,34,34,34,34,34,34,34,34,34,17,60,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,17,162,170,170,170,170,170,170,170,170,170,17,60,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,17,162,170,170,170,170,170,170,170,170,170,17,60,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,17,162,170,170,170,170,170,170,170,170,170,17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,162,170,
-  170,170,170,170,170,170,170,170,17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,170,170,170,170,170,170,170,
-  170,170,170,17,60,0,0,0,0,0,0,0,0,0,0,0,48,204,204,17,170,170,170,170,170,170,170,170,170,170,17,198,
-  204,3,0,0,0,0,0,0,0,0,0,192,17,17,17,170,170,170,170,170,170,170,170,170,170,17,17,17,12,0,0,0,
-  0,0,0,0,0,0,192,65,153,153,170,170,170,170,170,170,170,170,170,170,153,153,20,54,0,0,0,0,0,0,0,0,
-  0,192,145,73,68,85,255,255,255,255,255,255,255,255,255,68,148,25,198,0,0,0,0,0,0,0,0,0,192,145,20,17,
-  17,17,17,17,17,17,17,17,17,17,17,177,25,198,0,0,0,0,0,22,17,17,17,17,145,20,34,34,34,34,34,34,
-  34,34,34,34,34,34,177,25,17,17,17,17,97,0,22,17,17,17,17,145,20,34,34,34,34,34,34,34,34,34,34,34,
-  34,177,25,17,17,17,17,17,0,22,170,170,170,170,170,21,34,34,34,34,34,34,34,34,34,34,34,34,209,170,170,170,
-  170,170,17,60,22,170,170,170,170,170,21,34,34,34,34,34,34,34,34,34,34,34,34,209,170,170,170,170,170,17,60,22,
-  170,85,85,85,85,31,34,34,34,34,34,34,34,34,34,34,34,34,129,85,85,85,85,85,17,60,22,170,85,85,85,85,
-  31,34,34,34,34,34,34,34,34,34,34,34,34,129,85,85,85,85,85,17,60,22,170,85,85,85,85,31,34,34,221,221,
-  237,34,34,210,221,221,34,34,129,85,85,85,85,85,17,60,22,170,85,85,85,85,31,238,238,17,17,225,238,238,30,17,
-  17,238,238,129,85,85,85,85,85,17,60,22,170,85,85,85,85,31,238,238,17,17,225,238,238,30,17,17,238,238,129,85,
-  85,85,85,85,17,60,22,170,85,85,85,85,31,238,238,17,17,225,238,238,30,17,17,238,238,129,85,85,85,85,85,17,
-  60,22,170,85,85,85,85,31,238,238,17,17,225,238,238,30,17,17,238,238,129,85,85,85,85,85,17,60,22,170,85,85,
-  85,85,31,238,238,221,221,237,238,238,222,221,221,238,238,129,85,85,85,85,85,17,60,22,170,85,85,85,85,31,238,238,
-  238,238,238,238,238,238,238,238,238,238,129,85,85,85,85,85,17,60,22,170,85,85,85,85,31,238,238,238,238,238,238,238,
-  238,238,238,238,238,129,85,85,85,85,85,17,60,22,170,85,85,85,85,31,238,238,238,238,238,238,238,238,238,238,238,238,
-  129,85,85,85,85,85,17,60,22,170,85,85,85,85,24,238,238,222,221,221,221,221,221,221,237,238,238,129,85,85,85,85,
-  85,17,60,22,170,85,85,85,85,24,238,238,142,17,17,17,17,17,17,232,238,238,129,85,85,85,85,85,17,60,22,170,
-  85,85,85,85,24,119,119,135,17,17,17,17,17,17,120,119,119,129,85,85,85,85,85,17,60,22,170,85,85,85,85,24,
-  119,119,119,221,221,221,221,221,221,119,119,119,129,85,85,85,85,85,17,60,22,170,85,85,85,85,24,119,119,119,119,119,
-  119,119,119,119,119,119,119,129,85,85,85,85,85,17,60,22,170,85,85,85,85,24,119,119,119,119,119,119,119,119,119,119,
-  119,119,129,85,85,85,85,85,17,60,22,170,85,85,85,85,24,119,119,119,119,119,119,119,119,119,119,119,119,129,85,85,
-  85,85,85,17,60,22,17,17,17,17,65,27,119,119,119,119,119,119,119,119,119,119,119,119,177,20,17,17,17,17,17,60,
-  22,17,17,17,17,65,27,119,119,119,119,119,119,119,119,119,119,119,119,177,20,17,17,17,17,17,60,48,204,204,204,108,
-  65,27,17,17,17,17,17,17,17,17,17,17,17,17,177,20,198,204,204,204,204,60,48,204,204,204,108,65,180,187,136,136,
-  136,136,136,136,136,136,136,136,187,75,20,198,204,204,204,204,60,0,0,0,0,192,177,68,68,170,255,255,255,255,255,255,
-  255,255,255,68,68,27,198,0,0,0,0,0,0,0,0,0,192,17,17,17,170,255,255,255,255,255,255,255,255,255,17,17,
-  17,198,0,0,0,0,0,0,0,0,0,48,108,102,17,170,255,255,255,255,255,255,255,255,255,17,102,102,198,0,0,0,
-  0,0,0,0,0,0,0,192,204,17,170,255,255,255,255,255,255,255,255,255,17,204,204,204,0,0,0,0,0,0,0,0,
-  0,0,48,51,17,170,255,255,255,255,255,255,255,255,255,17,204,51,51,0,0,0,0,0,0,0,0,0,0,0,0,17,
-  170,255,255,255,255,255,255,255,255,255,17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,170,255,255,255,255,
-  255,255,255,255,255,17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,170,255,255,255,255,255,255,255,255,255,
-  17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,170,255,255,255,255,255,255,255,255,255,17,60,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,17,170,255,255,255,255,255,255,255,255,255,17,60,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,22,17,17,17,17,17,17,17,17,17,17,17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,204,204,204,
-  204,204,204,204,204,204,204,204,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,204,204,204,204,204,204,204,204,
-  204,204,204,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,102,102,102,102,102,102,102,102,102,102,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,17,17,17,17,17,17,17,17,17,17,17,17,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,241,34,34,34,34,34,34,34,34,34,34,31,60,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,241,34,34,34,34,34,34,34,34,34,34,31,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,34,
-  170,170,170,170,170,170,170,170,170,31,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,34,170,170,170,170,170,
-  170,170,170,170,31,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,34,170,170,170,170,170,170,170,170,170,31,
-  60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,34,170,170,170,170,170,170,170,170,170,31,60,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,241,34,170,170,170,170,170,170,170,170,170,31,60,0,0,0,0,0,0,0,0,0,
-  0,0,48,204,204,241,34,170,170,170,170,170,170,170,170,170,31,198,204,3,0,0,0,0,0,0,0,0,0,192,17,17,
-  241,34,170,170,170,170,170,170,170,170,170,31,17,17,12,0,0,0,0,0,0,0,0,0,192,129,221,221,34,170,170,170,
-  170,170,170,170,170,170,221,221,24,54,0,0,0,0,0,0,0,0,0,192,209,153,153,34,170,170,170,170,170,170,90,85,
-  85,153,153,29,198,0,0,0,0,0,0,0,0,0,192,209,153,153,34,170,90,255,175,170,90,31,17,17,223,153,29,198,
-  0,0,0,0,0,22,17,17,17,17,209,153,153,34,90,31,241,241,170,27,81,119,87,17,157,29,17,17,17,17,97,0,
-  22,255,255,255,255,223,153,153,34,27,241,119,31,165,17,119,119,119,23,157,253,255,255,255,255,17,0,22,34,34,34,34,
-  34,34,34,245,241,126,119,23,191,225,119,119,119,31,42,34,34,34,34,34,31,60,22,34,34,34,34,34,34,250,17,126,
-  119,119,183,241,113,119,119,30,177,34,34,34,34,34,34,31,60,22,34,170,170,170,170,90,17,127,119,119,119,119,31,127,
-  119,119,31,95,170,170,170,170,170,170,31,60,22,34,170,170,170,170,90,225,119,119,119,119,119,31,113,119,119,247,17,171,
-  170,170,170,170,170,31,60,22,34,85,85,85,85,85,241,119,119,119,119,247,17,113,119,119,119,254,95,85,85,85,85,85,
-  31,60,22,34,85,85,85,85,85,27,127,119,119,119,254,17,126,119,119,119,247,95,85,85,85,85,85,31,60,22,34,85,
-  85,85,85,85,181,241,119,119,119,231,225,119,119,119,231,31,91,85,85,85,85,85,31,60,22,34,85,85,85,85,85,85,
-  31,127,27,126,119,126,119,247,241,17,177,85,85,85,85,85,85,31,60,22,34,85,85,85,85,85,85,245,17,17,127,119,
-  119,119,31,191,187,85,85,85,85,85,85,85,31,60,22,34,85,85,85,85,85,85,85,187,187,241,119,119,247,241,85,85,
-  85,85,85,85,85,85,85,31,60,22,34,85,85,85,85,85,85,85,85,245,241,119,119,247,241,85,85,85,85,85,85,85,
-  85,85,31,60,22,34,85,85,85,85,85,85,85,85,31,239,119,119,119,31,95,85,85,85,85,85,85,85,85,17,60,22,
-  34,85,85,85,85,85,85,85,181,241,126,119,126,119,254,177,85,85,85,85,85,85,85,85,17,60,22,34,85,85,85,85,
-  85,85,85,27,225,238,238,225,238,238,31,91,85,85,85,85,85,85,85,17,60,22,34,85,85,85,85,85,85,181,17,238,
-  238,30,17,238,238,30,177,85,85,85,85,85,85,85,17,60,22,34,85,85,85,85,85,85,27,225,238,238,17,27,225,238,
-  238,17,91,85,85,85,85,85,85,17,60,22,34,85,85,85,85,85,181,17,238,238,30,177,181,17,238,238,30,177,85,85,
-  85,85,85,85,17,60,22,34,85,85,85,85,85,181,225,238,238,31,91,85,27,239,238,190,241,85,85,85,85,85,85,17,
-  60,22,34,85,85,85,85,85,181,225,238,254,241,85,85,245,241,238,238,31,91,85,85,85,85,85,17,60,22,34,85,85,
-  85,85,85,181,225,238,31,95,85,85,85,31,239,238,30,91,85,85,85,85,85,17,60,22,255,17,17,17,129,68,68,17,
-  31,241,187,187,187,187,251,225,238,30,72,24,17,17,17,17,17,60,22,17,17,17,17,129,68,68,251,255,187,187,187,187,
-  187,187,17,255,17,68,24,17,17,17,17,17,60,48,204,204,204,108,129,68,68,170,187,187,187,187,187,187,187,251,255,143,
-  68,24,198,204,204,204,204,60,48,204,204,204,108,129,68,68,162,187,187,187,187,187,187,187,187,187,68,68,24,198,204,204,
-  204,204,60,0,0,0,0,192,129,136,136,162,187,187,187,187,187,187,187,187,187,136,136,24,198,0,0,0,0,0,0,0,
-  0,0,192,17,17,241,162,187,187,187,187,187,187,187,187,187,17,17,17,198,0,0,0,0,0,0,0,0,0,48,108,102,
-  241,162,187,187,187,187,187,187,187,187,187,17,102,102,198,0,0,0,0,0,0,0,0,0,0,192,204,241,162,187,187,187,
-  187,187,187,187,187,187,17,204,204,204,0,0,0,0,0,0,0,0,0,0,48,51,241,162,187,187,187,187,187,187,187,187,
-  187,17,204,51,51,0,0,0,0,0,0,0,0,0,0,0,0,241,162,187,187,187,187,187,187,187,187,187,17,60,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,241,162,187,187,187,187,187,187,187,187,187,17,60,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,241,162,187,187,187,187,187,187,187,187,187,17,60,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,241,162,187,187,187,187,187,187,187,187,187,17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,241,170,187,
-  187,187,187,187,187,187,187,187,17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,17,255,17,17,17,17,17,17,
-  17,17,17,17,60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,22,17,17,17,17,17,17,17,17,17,17,17,60,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,204,204,204,204,204,204,204,204,204,204,204,60,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,48,204,204,204,204,204,204,204,204,204,204,204,60,0,0,0,0,0,0,0,0,0,0,
-  0,0,32,89,170,170,170,90,41,0,0,0,0,0,0,0,0,0,0,144,26,17,207,238,206,31,17,154,0,0,0,0,
-  0,0,0,0,32,26,193,219,221,221,221,221,200,17,42,0,0,0,0,0,0,0,25,193,221,221,221,221,221,221,221,205,
-  17,5,0,0,0,0,0,80,17,219,221,141,136,136,136,136,221,221,248,161,0,0,0,0,0,21,143,221,141,136,136,136,
-  136,136,136,221,221,31,10,0,0,0,144,241,221,141,136,136,136,136,136,136,136,136,221,253,81,0,0,0,18,129,221,136,
-  221,221,221,184,204,132,136,136,216,221,31,9,0,0,26,219,141,221,221,221,221,30,17,177,136,136,136,221,24,10,0,144,
-  193,221,216,221,253,17,17,241,102,241,136,136,136,216,237,81,0,160,129,141,216,221,29,103,206,55,51,23,188,136,136,136,
-  221,17,2,18,220,141,139,221,24,54,51,51,51,243,17,241,187,139,221,28,9,25,219,184,187,216,28,51,51,51,51,51,
-  99,23,187,187,216,24,10,21,221,184,187,251,241,51,51,51,51,51,51,22,187,187,216,29,42,250,221,187,75,17,55,51,
-  51,247,55,51,51,23,187,187,219,205,145,202,141,187,203,97,51,51,22,17,17,54,51,23,187,187,139,237,145,234,141,187,
-  203,97,51,51,23,188,28,55,51,23,188,187,139,237,145,234,141,187,75,17,54,51,31,187,27,63,51,22,65,187,139,237,
-  81,234,141,187,187,28,103,102,23,188,28,103,102,118,193,187,139,237,81,202,141,187,187,27,103,102,22,17,17,102,102,102,
-  193,187,139,237,81,250,141,187,187,27,103,102,102,247,103,102,102,23,65,187,139,205,81,21,136,75,68,20,103,102,102,102,
-  102,102,246,241,68,68,139,248,154,25,139,72,68,20,119,102,102,102,102,102,22,79,68,68,136,24,154,18,140,72,68,244,
-  17,241,102,102,102,102,23,68,68,68,136,28,149,160,129,184,68,68,68,31,103,102,247,119,23,68,68,180,136,17,37,144,
-  193,136,68,68,68,20,113,23,17,17,241,68,68,132,232,161,5,0,26,139,72,68,68,68,17,17,76,68,68,68,68,136,
-  24,81,9,0,18,129,136,68,68,68,252,79,68,68,68,68,132,136,31,90,2,0,80,241,136,72,68,68,68,68,68,68,
-  68,68,136,200,161,149,0,0,0,26,143,136,75,68,68,68,68,68,68,139,136,28,81,37,0,0,0,162,17,139,136,75,
-  68,68,68,68,139,136,251,17,85,2,0,0,0,32,26,193,136,136,184,187,187,136,136,200,17,90,37,0,0,0,0,0,
-  82,17,193,139,136,136,136,136,203,17,161,85,2,0,0,0,0,0,32,169,17,17,207,238,206,28,17,161,85,41,0,0,
-  0,0,0,0,0,32,85,170,17,17,17,161,90,85,37,0,0,0,0,0,0,0,0,0,32,89,85,85,85,85,85,41,
-  0,0,0,0,0,0,0,0,0,0,0,0,34,34,34,34,2,0,0,0,0,0,0,0,0,0,0,0,32,89,187,187,
-  187,91,41,0,0,0,0,0,0,0,0,0,0,144,27,17,170,204,172,26,17,155,0,0,0,0,0,0,0,0,32,27,
-  161,60,51,51,51,51,173,17,43,0,0,0,0,0,0,0,25,161,61,51,51,51,51,51,51,163,17,5,0,0,0,0,
-  0,80,17,60,51,211,221,221,221,221,51,51,29,177,0,0,0,0,0,21,218,51,211,221,221,221,221,221,221,51,51,26,
-  11,0,0,0,144,161,51,211,221,221,221,221,221,221,221,221,51,163,81,0,0,0,18,209,51,221,51,51,51,221,221,221,
-  221,221,61,51,17,9,0,0,27,60,211,51,51,51,51,211,221,221,221,221,221,51,29,11,0,144,161,51,61,51,51,51,
-  51,51,125,119,119,119,119,61,163,81,0,176,209,211,55,51,51,195,17,17,17,113,119,119,119,215,51,17,2,18,58,115,
-  215,51,51,195,97,102,70,113,119,119,119,119,51,26,9,25,60,125,119,61,51,195,241,255,79,113,119,119,119,119,61,29,
-  11,21,51,119,119,119,221,205,241,255,79,17,17,17,122,119,55,19,43,171,51,119,119,119,119,135,241,255,79,65,68,164,
-  113,119,55,163,145,171,211,119,119,170,170,26,241,255,79,241,255,79,113,119,215,195,145,203,211,119,135,65,68,164,241,255,
-  79,241,255,79,113,119,215,195,145,203,211,119,135,97,102,70,97,102,70,97,102,70,113,119,215,195,81,203,211,119,135,225,
-  102,70,97,102,70,97,102,70,113,119,215,195,81,171,211,119,135,225,102,70,97,102,70,97,102,70,113,119,215,195,81,171,
-  221,136,136,225,102,70,97,102,70,97,102,70,129,136,216,173,81,21,221,135,136,225,238,78,225,238,78,225,238,78,129,136,
-  215,29,155,25,220,135,136,225,238,78,225,238,78,225,238,78,129,136,215,29,155,18,218,141,136,225,238,78,225,238,78,225,
-  238,78,129,136,221,26,149,176,209,125,136,65,68,164,65,68,164,65,68,164,129,120,221,17,37,144,161,221,136,17,17,17,
-  17,17,17,17,17,17,129,216,205,177,5,0,27,220,141,136,136,136,136,136,136,136,136,136,136,221,29,81,9,0,18,209,
-  221,136,136,136,136,136,136,136,136,136,216,221,26,91,2,0,80,161,221,141,136,136,136,136,136,136,136,136,221,173,177,149,
-  0,0,0,27,218,221,135,136,136,136,136,136,136,215,221,26,81,37,0,0,0,178,17,220,221,135,136,136,136,136,215,221,
-  28,17,85,2,0,0,0,32,27,161,221,221,125,119,119,221,221,173,17,91,37,0,0,0,0,0,82,17,161,220,221,221,
-  221,221,172,17,177,85,2,0,0,0,0,0,32,185,17,17,170,204,172,26,17,177,85,41,0,0,0,0,0,0,0,32,
-  85,187,17,17,17,177,91,85,37,0,0,0,0,0,0,0,0,0,32,89,85,85,85,85,85,41,0,0,0,0,0,0,
-  0,0,0,0,0,0,34,34,34,34,2,0,0,0,0,0,0,0,0,0,0,0,32,89,170,170,170,90,41,0,0,0,
-  0,0,0,0,0,0,0,144,26,17,236,190,235,28,17,154,0,0,0,0,0,0,0,0,32,26,225,251,255,255,255,255,
-  232,17,42,0,0,0,0,0,0,0,25,225,255,255,255,255,255,255,255,239,17,5,0,0,0,0,0,80,17,251,255,255,
-  136,136,136,248,255,255,200,161,0,0,0,0,0,21,252,255,143,136,136,136,136,136,136,255,255,28,10,0,0,0,144,193,
-  255,143,136,136,136,184,68,132,136,136,255,207,81,0,0,0,18,241,255,248,255,235,206,17,193,17,136,136,248,255,28,9,
-  0,0,26,251,143,255,191,17,124,187,51,27,140,136,136,255,24,10,0,144,225,255,248,255,239,60,51,51,51,115,193,136,
-  136,248,239,81,0,160,129,143,248,255,31,55,51,51,51,51,23,65,136,136,255,17,2,18,254,143,248,255,27,59,51,189,
-  215,51,179,65,136,136,255,30,9,25,251,136,136,248,28,51,115,17,193,51,51,236,136,136,248,24,10,21,255,136,136,136,
-  124,51,29,140,28,59,211,225,136,136,248,31,42,202,255,136,136,136,177,221,29,68,28,221,125,65,136,136,248,239,145,234,
-  255,136,136,136,193,221,23,30,113,221,205,140,136,136,248,239,145,234,143,68,68,68,30,17,17,193,219,221,22,78,68,68,
-  132,191,145,234,143,68,68,68,228,238,28,215,221,221,23,68,68,68,132,191,81,234,143,68,68,68,68,68,206,221,221,198,
-  17,68,68,68,132,191,81,234,143,68,68,68,68,68,30,221,125,17,76,68,68,68,132,239,81,202,255,68,68,68,68,68,
-  206,102,198,76,68,68,68,68,244,239,81,21,255,68,68,68,68,68,30,102,22,78,68,68,68,68,244,207,154,25,251,72,
-  68,68,68,68,28,108,28,76,68,68,68,68,248,24,154,18,254,72,68,68,68,68,204,102,198,76,68,68,68,68,248,30,
-  149,160,129,143,68,68,68,68,124,102,118,76,68,68,68,132,143,17,37,144,225,136,68,68,68,68,204,102,198,76,68,68,
-  68,132,232,161,5,0,26,139,72,68,68,68,28,124,28,76,68,68,68,136,27,81,9,0,18,129,136,68,68,68,196,204,
-  204,68,68,68,132,136,28,90,2,0,80,193,136,72,68,68,68,68,68,68,68,68,136,200,161,149,0,0,0,26,140,136,
-  75,68,68,68,68,68,68,139,136,28,81,37,0,0,0,162,193,139,136,75,68,68,68,68,139,136,203,17,85,2,0,0,
-  0,32,26,225,136,136,136,187,139,136,136,232,17,90,37,0,0,0,0,0,82,17,225,139,136,136,136,136,235,17,161,85,
-  2,0,0,0,0,0,32,169,17,17,236,238,238,204,17,161,85,41,0,0,0,0,0,0,0,32,85,170,17,17,17,161,
-  90,85,37,0,0,0,0,0,0,0,0,0,32,89,85,85,85,85,85,41,0,0,0,0,0,0,0,0,0,0,0,0,
-  34,34,34,34,2,0,0,0,0,0,0,0,0,0,0,0,90,136,136,136,88,10,0,0,0,0,0,0,0,0,32,21,
-  17,125,238,126,29,17,37,0,0,0,0,0,0,0,21,209,62,51,51,51,51,222,17,5,0,0,0,0,0,128,17,62,
-  51,51,51,51,51,51,220,129,2,0,0,0,0,24,253,51,147,153,153,153,153,51,51,23,40,0,0,0,128,113,51,147,
-  153,153,153,153,153,153,51,115,129,0,0,0,21,61,51,57,51,147,153,153,153,153,57,51,23,5,0,32,17,63,51,51,
-  51,51,147,153,153,153,153,63,211,161,0,80,225,51,63,51,51,115,17,158,153,153,153,57,243,129,0,16,61,147,63,51,
-  51,23,215,158,153,153,153,153,51,23,10,26,62,159,57,51,211,113,219,158,153,153,153,153,63,28,5,21,63,153,153,255,
-  29,183,219,71,68,68,196,153,57,19,40,216,51,204,204,220,113,187,219,17,17,17,225,204,252,115,161,120,243,204,204,29,
-  183,187,187,187,187,187,237,204,252,227,161,232,243,204,220,113,187,187,187,187,187,187,237,204,156,227,81,232,147,204,220,189,
-  187,187,187,187,187,187,237,204,156,227,81,232,243,204,220,225,102,102,102,102,102,102,237,204,156,227,81,120,255,204,76,17,
-  103,102,102,102,102,102,237,204,252,239,81,216,255,204,204,212,113,102,214,17,17,17,225,204,252,127,81,21,255,76,68,68,
-  29,103,214,231,238,238,78,68,252,31,88,26,254,76,68,68,212,113,214,71,68,68,68,68,252,28,168,16,253,79,68,68,
-  68,29,29,71,68,68,68,68,255,23,165,80,225,255,68,68,68,212,17,71,68,68,68,196,207,129,37,32,209,255,76,68,
-  68,68,68,68,68,68,68,252,223,81,5,0,21,247,207,68,68,68,68,68,68,68,196,255,23,88,10,0,128,113,255,76,
-  68,68,68,68,68,68,252,127,17,85,0,0,32,24,247,255,76,68,68,68,68,252,255,23,81,37,0,0,0,138,209,254,
-  255,204,76,196,252,255,220,17,85,10,0,0,0,160,24,209,254,255,255,255,255,126,17,88,165,0,0,0,0,0,82,24,
-  17,125,238,126,23,17,88,85,10,0,0,0,0,0,32,90,136,17,17,17,129,88,85,42,0,0,0,0,0,0,0,32,
-  90,85,85,85,85,85,42,0,0,0,0,0,0,0,0,0,0,34,170,170,42,2,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,32,114,119,68,68,68,68,68,116,119,34,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,114,68,68,68,68,68,68,68,68,68,68,68,116,2,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,32,71,68,68,68,189,251,255,255,255,255,187,77,68,68,68,39,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,32,71,68,68,180,31,17,241,255,255,255,255,17,17,191,77,68,68,39,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,71,68,68,251,17,241,156,153,153,153,153,153,153,249,17,241,75,68,68,7,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,114,68,68,27,17,159,153,153,153,153,153,153,153,153,153,153,31,17,75,68,68,
-  2,0,0,0,0,0,0,0,0,0,0,0,32,68,68,253,17,159,153,153,153,153,153,153,153,153,153,153,153,153,28,17,
-  75,68,116,0,0,0,0,0,0,0,0,0,0,0,71,68,180,17,159,153,153,153,153,153,153,153,153,153,153,153,153,153,
-  153,31,241,68,68,7,0,0,0,0,0,0,0,0,0,112,68,212,31,145,153,153,153,153,153,153,153,153,153,153,153,153,
-  153,153,153,153,31,209,68,116,0,0,0,0,0,0,0,0,0,71,68,27,241,153,153,153,153,153,153,153,153,153,153,153,
-  153,153,153,153,153,153,249,17,75,68,7,0,0,0,0,0,0,0,112,68,180,17,156,153,153,153,153,153,153,153,153,153,
-  153,153,153,153,153,153,153,153,153,25,177,68,116,0,0,0,0,0,0,0,66,68,27,145,153,153,153,153,153,153,153,153,
-  153,153,153,153,153,153,153,153,153,153,153,153,17,75,68,7,0,0,0,0,0,32,68,180,17,153,153,153,153,153,153,153,
-  153,153,153,153,153,153,153,153,153,153,153,153,153,153,25,177,68,36,0,0,0,0,0,112,68,29,145,153,153,153,153,153,
-  153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,17,77,68,2,0,0,0,0,71,68,31,156,153,153,153,
-  153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,25,65,68,7,0,0,0,32,68,180,241,153,153,
-  153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,201,241,68,228,0,0,0,112,68,29,145,
-  153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,31,75,212,0,0,0,66,68,
-  31,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,25,65,68,14,0,0,
-  71,180,241,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,201,177,68,13,
-  0,0,68,20,145,153,153,153,153,153,153,153,31,17,159,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,17,
-  68,164,0,32,68,27,159,153,153,153,153,153,153,153,31,17,17,159,153,153,153,153,153,153,153,153,153,153,153,153,153,153,
-  153,28,75,84,0,112,68,31,153,153,153,153,153,153,153,153,31,255,17,17,159,153,153,153,153,153,153,153,153,153,153,153,
-  153,153,153,25,65,212,3,64,68,241,153,153,153,153,153,153,153,153,31,108,22,17,17,159,153,153,153,153,153,153,153,153,
-  153,153,153,153,153,249,209,68,10,66,180,145,153,153,153,153,153,153,153,153,31,108,102,28,17,17,156,153,153,153,153,153,
-  153,153,153,153,153,153,153,153,177,68,5,66,244,145,153,153,204,204,204,153,153,153,31,108,102,102,31,17,17,204,204,204,
-  204,204,204,204,204,204,204,156,153,153,31,68,53,71,20,159,153,201,204,204,204,204,153,153,31,108,102,102,102,31,17,241,
-  204,204,204,204,204,204,204,204,204,204,153,153,31,68,61,71,29,156,153,201,204,204,204,204,204,204,31,108,102,102,102,102,
-  31,17,241,204,204,204,204,204,204,204,204,204,153,153,25,75,61,71,27,153,153,201,204,204,204,204,204,204,31,108,102,102,
-  102,102,102,17,17,241,204,204,204,204,204,204,204,204,153,153,25,75,132,68,27,153,153,204,204,204,204,204,204,204,31,108,
-  102,102,102,102,102,246,17,17,193,204,204,204,204,204,204,204,156,153,25,79,132,68,31,153,153,204,204,204,204,204,204,204,
-  31,108,102,102,102,102,102,102,246,17,17,193,204,204,204,204,204,204,156,153,249,79,132,68,255,153,153,204,204,204,204,204,
-  204,204,31,108,102,102,102,102,102,102,102,246,17,17,207,204,204,204,204,204,156,153,249,79,132,68,255,153,153,204,204,204,
-  204,204,204,204,31,108,102,102,102,102,102,102,102,102,246,17,17,207,204,204,204,204,156,153,249,65,132,68,255,153,153,204,
-  204,204,204,204,204,204,31,111,102,102,102,102,102,102,102,102,102,28,17,193,204,204,204,204,156,153,201,65,132,68,255,153,
-  153,204,204,204,204,204,204,204,31,111,102,102,102,102,102,102,102,102,102,102,31,193,204,204,204,204,156,153,201,65,132,68,
-  255,153,153,204,204,204,204,204,204,204,31,111,102,102,102,102,102,102,102,102,102,246,17,193,204,204,204,204,156,153,201,65,
-  132,68,255,153,153,204,204,204,204,204,204,204,31,111,102,102,102,102,102,102,102,102,246,17,17,207,204,204,204,204,156,153,
-  249,65,132,68,255,153,153,204,204,204,204,204,204,204,31,111,102,102,102,102,102,102,102,246,17,17,193,204,204,204,204,204,
-  156,153,249,65,132,68,255,153,153,204,204,204,204,204,204,204,31,111,102,102,102,102,102,102,246,17,17,241,204,204,204,204,
-  204,204,156,153,249,79,132,68,27,153,153,204,204,204,204,204,204,204,31,111,102,102,102,102,102,198,17,17,241,204,204,204,
-  204,204,204,204,156,153,25,79,132,71,27,153,153,204,204,204,204,204,204,204,31,111,102,102,102,102,102,31,17,241,204,204,
-  204,204,204,204,204,204,156,153,25,75,132,71,29,156,153,201,204,204,204,204,204,204,31,111,102,102,102,102,31,17,17,204,
-  204,204,204,204,204,204,204,204,153,153,25,75,141,71,20,159,153,201,204,204,204,204,204,204,31,111,102,102,102,31,17,17,
-  204,204,204,204,204,204,204,204,204,204,153,153,31,77,141,66,244,145,153,201,204,204,204,204,204,204,31,111,102,102,31,17,
-  17,207,204,204,204,204,204,204,204,204,204,204,153,153,31,68,133,66,180,145,153,153,204,204,204,204,204,204,31,111,102,31,
-  17,17,207,204,204,204,204,204,204,204,204,204,204,156,153,153,241,68,53,64,212,241,153,153,204,204,204,204,204,204,31,111,
-  22,17,17,207,204,204,204,204,204,204,204,204,204,204,204,156,153,249,209,68,56,112,68,31,153,153,201,204,204,204,204,204,
-  31,255,17,17,193,204,204,204,204,204,204,204,204,204,204,204,204,153,153,25,65,212,56,32,68,27,159,153,201,204,204,204,
-  204,204,31,17,17,241,204,204,204,204,204,204,204,204,204,204,204,204,204,153,153,28,75,84,8,0,68,20,145,153,153,204,
-  204,204,204,204,17,17,241,204,204,204,204,204,204,204,204,204,204,204,204,204,156,153,153,17,68,132,3,0,71,180,241,153,
-  153,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,156,153,201,177,68,141,3,0,66,68,
-  17,153,153,201,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,153,153,25,65,68,133,0,0,
-  112,68,27,159,153,153,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,156,153,153,31,75,212,56,
-  0,0,32,68,244,241,153,153,201,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,153,153,201,241,68,
-  84,8,0,0,0,71,68,17,156,153,153,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,156,153,153,28,
-  209,68,141,3,0,0,0,64,68,29,193,153,153,201,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,153,153,
-  153,17,75,68,136,0,0,0,0,32,68,180,17,156,153,153,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,156,
-  153,153,25,177,68,84,56,0,0,0,0,0,71,68,27,193,153,153,153,204,204,204,204,204,204,204,204,204,204,204,204,204,
-  156,153,153,153,17,75,68,141,8,0,0,0,0,0,112,68,180,17,156,153,153,201,204,204,204,204,204,204,204,204,204,204,
-  204,204,153,153,153,28,177,68,212,136,0,0,0,0,0,0,160,77,68,27,241,153,153,153,201,204,204,204,204,204,204,204,
-  204,204,204,153,153,153,201,17,75,68,141,56,0,0,0,0,0,0,0,218,68,212,17,159,153,153,153,153,204,204,204,204,
-  204,204,204,156,153,153,153,153,31,177,68,212,136,3,0,0,0,0,0,0,0,160,77,68,244,17,159,153,153,153,153,153,
-  201,204,204,153,153,153,153,153,153,31,241,77,68,141,56,0,0,0,0,0,0,0,0,0,83,68,68,27,17,159,153,153,
-  153,153,153,153,153,153,153,153,153,153,28,17,75,68,212,136,3,0,0,0,0,0,0,0,0,0,48,69,68,68,27,17,
-  159,153,153,153,153,153,153,153,153,153,153,31,17,75,68,68,133,56,0,0,0,0,0,0,0,0,0,0,0,131,77,68,
-  68,27,17,241,156,153,153,153,153,153,153,252,31,17,75,68,68,141,136,3,0,0,0,0,0,0,0,0,0,0,0,0,
-  83,77,68,68,189,17,17,241,255,255,255,255,17,17,241,77,68,68,93,136,3,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,48,88,77,68,68,68,187,255,31,17,17,241,191,219,68,68,68,93,136,56,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,48,136,213,68,68,68,68,68,68,68,68,68,68,68,212,133,136,56,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,48,131,88,213,77,68,68,68,68,68,68,221,85,136,136,51,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,51,136,136,136,136,136,136,136,136,136,136,56,3,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,51,51,51,51,51,51,51,51,3,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,242,119,221,221,221,221,221,125,247,2,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,32,215,221,221,221,221,221,221,221,221,221,221,39,0,0,0,0,0,0,0,0,0,0,0,0,32,215,
-  221,221,237,206,204,204,204,204,238,221,221,221,39,0,0,0,0,0,0,0,0,0,0,0,215,221,221,206,17,17,204,204,
-  204,28,17,193,222,221,221,39,0,0,0,0,0,0,0,0,0,210,221,221,30,17,108,187,187,187,187,187,107,28,17,222,
-  221,221,2,0,0,0,0,0,0,0,240,221,221,30,17,182,187,187,187,187,187,187,187,187,22,17,222,221,253,0,0,0,
-  0,0,0,0,223,221,205,17,188,187,187,187,187,187,187,187,187,187,187,22,193,221,221,15,0,0,0,0,0,240,221,221,
-  17,177,187,187,187,187,187,187,187,187,187,187,187,187,28,209,221,253,0,0,0,0,0,210,221,29,193,187,187,187,187,187,
-  187,187,187,187,187,187,187,187,203,17,222,221,2,0,0,0,0,221,221,17,182,187,187,187,187,187,187,187,187,187,187,187,
-  187,187,187,22,209,221,45,0,0,0,112,221,29,97,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,107,17,221,
-  125,0,0,0,210,221,28,188,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,28,220,221,15,0,0,215,237,
-  17,187,187,187,187,187,187,187,187,187,187,102,187,187,187,187,187,187,203,225,221,10,0,32,221,29,177,187,187,187,187,187,
-  187,187,187,187,198,17,193,187,187,187,187,187,187,17,221,93,0,112,221,30,188,187,187,187,187,187,187,198,17,17,17,225,
-  17,97,187,187,187,187,187,22,220,173,0,208,221,17,187,187,187,187,187,187,22,17,236,51,227,60,195,17,97,187,187,187,
-  187,27,209,221,4,210,237,193,187,187,187,187,187,203,17,62,51,51,51,51,51,195,17,108,187,187,187,107,225,221,5,223,
-  205,177,187,187,187,187,187,28,49,51,51,51,51,51,51,51,24,17,108,187,187,187,193,221,74,215,29,188,187,102,102,187,
-  107,17,51,51,51,51,51,51,51,51,51,30,97,102,182,187,28,221,74,215,30,182,187,102,102,102,27,49,51,51,51,136,
-  56,51,51,51,51,195,97,102,182,187,27,222,77,221,30,187,187,102,102,102,28,60,51,51,28,17,17,60,51,51,51,28,
-  97,102,182,187,27,222,157,221,28,187,107,102,102,102,17,51,51,195,17,102,22,193,51,51,19,17,102,102,102,187,27,220,
-  157,221,204,187,107,102,102,102,193,51,51,28,108,102,102,17,51,131,17,108,102,102,102,187,203,220,157,221,204,187,107,102,
-  102,102,129,51,51,17,102,102,102,28,51,28,17,108,102,102,102,187,203,209,157,221,204,187,107,102,102,102,129,51,131,97,
-  102,102,102,22,200,17,17,97,102,102,102,187,107,209,157,221,204,187,107,102,102,102,129,51,131,97,102,102,102,22,129,51,
-  131,97,102,102,102,187,107,209,157,221,204,187,107,102,102,102,129,136,136,97,102,102,102,22,129,136,136,97,102,102,102,187,
-  107,209,157,221,204,187,107,102,102,102,129,136,136,17,102,102,102,22,129,136,136,97,102,102,102,187,203,209,157,221,204,187,
-  107,102,102,102,193,136,136,28,97,102,102,17,140,136,200,97,102,102,102,187,203,220,157,221,28,187,107,102,102,102,17,136,
-  136,24,17,108,28,17,136,136,24,97,102,102,102,187,203,220,157,221,30,187,107,102,102,102,28,140,136,136,28,17,17,140,
-  136,136,28,108,102,102,102,187,27,220,157,215,30,182,107,102,102,102,22,129,136,136,136,200,136,136,136,136,17,102,102,102,
-  102,187,22,222,157,215,29,188,187,102,102,102,198,17,136,136,136,136,136,136,136,24,193,102,102,102,182,187,28,221,154,223,
-  205,177,187,102,102,102,102,17,129,136,136,136,136,136,136,17,97,102,102,102,182,187,17,221,154,210,237,193,187,107,102,102,
-  102,22,17,140,136,136,136,136,28,17,102,102,102,102,187,107,225,221,69,208,221,17,187,107,102,102,102,102,28,17,140,136,
-  136,28,17,108,102,102,102,102,187,27,209,221,73,112,221,30,188,187,102,102,102,102,102,28,17,17,17,17,108,102,102,102,
-  102,182,187,22,220,173,73,32,221,29,177,187,107,102,102,102,102,102,102,102,102,102,102,102,102,102,102,187,187,17,221,93,
-  9,0,215,237,193,187,107,102,102,102,102,102,102,102,102,102,102,102,102,102,102,187,203,225,221,157,4,0,210,221,28,188,
-  187,102,102,102,102,102,102,102,102,102,102,102,102,102,182,187,22,220,221,149,4,0,112,221,29,97,187,187,102,102,102,102,
-  102,102,102,102,102,102,102,182,187,107,17,221,173,73,0,0,32,221,221,17,182,187,107,102,102,102,102,102,102,102,102,102,
-  102,187,187,22,225,221,93,73,0,0,0,223,221,30,193,187,187,107,102,102,102,102,102,102,102,102,187,187,203,17,222,221,
-  149,4,0,0,0,240,221,221,17,188,187,187,107,102,102,102,102,102,102,187,187,187,28,225,221,173,153,0,0,0,0,0,
-  218,221,205,17,188,187,187,187,102,102,102,182,187,187,187,22,193,221,221,154,9,0,0,0,0,0,84,221,221,30,17,182,
-  187,187,187,187,187,187,187,187,22,17,222,221,173,153,4,0,0,0,0,0,64,213,221,221,28,17,108,187,187,187,187,187,
-  107,28,17,220,221,221,149,73,0,0,0,0,0,0,0,144,218,221,221,206,17,17,204,204,204,28,17,17,222,221,221,90,
-  153,4,0,0,0,0,0,0,0,0,84,218,221,221,237,206,28,17,17,204,236,221,221,221,93,153,4,0,0,0,0,0,
-  0,0,0,0,64,89,218,221,221,221,221,221,221,221,221,221,221,90,153,73,0,0,0,0,0,0,0,0,0,0,0,64,
-  153,165,218,221,221,221,221,221,221,170,149,153,73,0,0,0,0,0,0,0,0,0,0,0,0,0,64,148,153,153,153,153,
-  153,153,153,153,153,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,68,68,68,68,68,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,119,238,238,238,238,238,126,247,2,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,32,231,238,238,238,238,238,238,238,238,238,238,39,0,0,0,0,0,0,0,0,0,0,0,0,
-  32,231,238,238,238,221,204,204,204,220,221,238,238,238,39,0,0,0,0,0,0,0,0,0,0,0,231,238,238,205,17,17,
-  204,102,198,28,17,193,237,238,238,39,0,0,0,0,0,0,0,0,0,226,238,238,29,17,108,187,187,187,187,187,107,28,
-  17,237,238,238,2,0,0,0,0,0,0,0,240,238,238,29,17,182,187,187,187,187,187,187,187,187,22,17,237,238,254,0,
-  0,0,0,0,0,0,239,238,206,17,182,187,187,187,187,187,187,187,187,187,187,22,193,238,238,15,0,0,0,0,0,240,
-  238,238,28,188,187,187,187,187,187,187,187,187,187,187,187,187,28,225,238,254,0,0,0,0,0,226,238,30,193,187,187,187,
-  187,187,187,187,187,187,187,187,187,187,107,17,237,238,2,0,0,0,0,238,238,17,182,187,187,187,187,187,187,187,187,187,
-  187,187,187,187,187,22,225,238,46,0,0,0,112,238,206,97,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,107,
-  17,238,126,0,0,0,226,238,28,188,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,22,236,238,15,0,0,
-  231,222,193,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,203,209,238,10,0,32,238,30,177,187,187,187,
-  187,187,187,187,187,187,187,187,187,187,187,187,187,187,187,17,238,94,0,112,238,29,182,187,187,187,187,198,108,187,187,187,
-  107,102,102,102,102,182,187,187,187,22,237,174,0,224,238,17,187,187,187,187,27,193,28,17,17,17,17,17,17,17,17,97,
-  187,187,187,203,225,238,4,226,222,97,187,187,187,187,28,61,211,17,51,51,51,51,51,51,51,97,187,187,187,107,209,238,
-  5,239,206,177,187,187,187,187,204,51,51,28,51,51,51,51,51,51,51,97,187,187,187,187,193,238,74,231,30,188,187,187,
-  187,187,204,51,51,28,51,51,51,51,51,51,51,97,187,187,187,187,28,238,74,231,30,182,187,102,102,102,28,51,51,17,
-  51,51,51,51,51,51,51,97,102,102,182,187,27,237,78,238,29,187,187,102,102,102,28,140,200,17,204,204,204,204,204,204,
-  204,97,102,102,182,187,27,237,158,238,29,187,107,102,102,102,198,17,17,204,204,204,204,204,204,204,204,108,102,102,102,187,
-  203,236,158,238,204,187,107,102,102,102,22,17,17,17,17,17,17,17,17,17,17,97,102,102,102,187,203,236,158,238,204,187,
-  107,102,102,102,28,60,195,17,136,136,136,136,136,136,136,97,102,102,102,187,203,225,158,238,204,187,107,102,102,102,193,51,
-  51,28,51,51,51,51,51,51,131,97,102,102,102,187,107,225,158,238,204,187,107,102,102,102,193,51,51,28,51,51,51,51,
-  51,51,131,97,102,102,102,187,107,225,158,238,204,187,107,102,102,102,193,51,51,28,51,51,51,51,51,51,131,97,102,102,
-  102,187,107,225,158,238,204,187,107,102,102,102,28,140,200,17,136,136,136,136,136,136,136,97,102,102,102,187,107,225,158,238,
-  204,187,107,102,102,102,22,17,17,17,17,17,17,17,17,17,17,97,102,102,102,187,203,236,158,238,29,187,107,102,102,102,
-  198,17,17,204,204,204,204,204,204,204,204,108,102,102,102,187,203,236,158,238,29,187,107,102,102,102,28,140,200,17,204,204,
-  204,204,204,204,204,97,102,102,102,187,27,237,158,231,29,182,107,102,102,102,17,136,136,17,136,136,136,136,136,136,136,97,
-  102,102,102,187,22,237,158,231,30,188,187,102,102,102,193,136,136,28,136,136,136,136,136,136,136,97,102,102,182,187,28,238,
-  154,239,206,177,187,102,102,102,193,136,136,28,136,136,136,136,136,136,136,97,102,102,182,187,193,238,154,226,222,97,187,107,
-  102,102,17,136,136,17,136,136,136,136,136,136,136,97,102,102,187,107,209,238,69,224,238,17,187,107,102,102,22,17,17,17,
-  17,17,17,17,17,17,17,97,102,102,187,203,225,238,73,112,238,29,182,187,102,102,102,204,204,102,102,102,102,102,102,102,
-  102,102,102,182,187,22,236,174,73,32,238,30,177,187,107,102,102,102,102,102,102,102,102,102,102,102,102,102,102,187,187,17,
-  238,94,9,0,231,222,193,187,187,102,102,102,102,102,102,102,102,102,102,102,102,102,182,187,203,209,238,158,4,0,226,238,
-  28,188,187,102,102,102,102,102,102,102,102,102,102,102,102,102,182,187,22,236,238,149,4,0,112,238,30,97,187,187,102,102,
-  102,102,102,102,102,102,102,102,102,182,187,107,17,238,174,73,0,0,32,238,238,17,182,187,107,102,102,102,102,102,102,102,
-  102,102,102,187,187,22,209,238,94,73,0,0,0,239,238,29,193,187,187,107,102,102,102,102,102,102,102,102,187,187,107,17,
-  237,238,149,4,0,0,0,240,238,238,17,188,187,187,107,102,102,102,102,102,102,187,187,187,28,209,238,174,153,0,0,0,
-  0,0,234,238,206,17,182,187,187,187,102,102,102,182,187,187,187,22,193,238,238,154,9,0,0,0,0,0,84,238,238,29,
-  17,182,187,187,187,187,187,187,187,187,198,17,237,238,174,153,4,0,0,0,0,0,64,229,238,238,29,17,108,187,187,187,
-  187,187,107,28,17,236,238,238,149,73,0,0,0,0,0,0,0,144,234,238,238,205,17,193,204,102,198,204,17,193,237,238,
-  238,90,153,4,0,0,0,0,0,0,0,0,84,234,238,238,222,205,28,17,17,204,221,238,238,238,94,153,4,0,0,0,
-  0,0,0,0,0,0,64,89,234,238,238,238,238,238,238,238,238,238,238,90,153,73,0,0,0,0,0,0,0,0,0,0,
-  0,64,153,165,234,238,238,238,238,238,238,170,149,153,73,0,0,0,0,0,0,0,0,0,0,0,0,0,64,148,153,153,
-  153,153,153,153,153,153,153,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,68,68,68,68,68,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,210,119,255,255,255,255,255,127,215,2,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,32,247,255,255,255,255,255,255,255,255,255,255,39,0,0,0,0,0,0,0,0,0,0,
-  0,0,32,247,255,255,79,187,170,170,170,186,75,255,255,255,39,0,0,0,0,0,0,0,0,0,0,0,247,255,255,171,
-  17,17,170,102,166,26,17,161,251,255,255,39,0,0,0,0,0,0,0,0,0,242,255,255,27,17,106,204,204,204,204,204,
-  108,26,17,251,255,255,2,0,0,0,0,0,0,0,208,255,255,27,17,198,204,204,204,204,204,204,204,204,22,17,251,255,
-  223,0,0,0,0,0,0,0,253,255,175,17,198,204,204,204,204,204,204,204,204,204,204,22,161,255,255,13,0,0,0,0,
-  0,208,255,255,26,202,204,204,204,204,204,204,204,204,204,204,204,204,26,65,255,223,0,0,0,0,0,242,255,20,161,204,
-  204,204,204,204,204,204,204,204,204,204,204,204,108,17,244,255,2,0,0,0,0,255,255,17,198,204,204,204,204,204,204,102,
-  198,204,204,204,204,204,204,22,65,255,47,0,0,0,112,255,175,97,204,204,204,204,204,204,108,17,97,204,204,204,204,204,
-  204,108,17,255,127,0,0,0,242,255,26,202,204,204,204,204,204,204,28,177,17,204,204,204,204,204,204,204,22,250,255,13,
-  0,0,247,191,161,204,204,204,204,204,204,204,22,202,27,202,204,204,204,204,204,204,172,177,255,9,0,32,255,31,193,204,
-  204,204,204,204,204,204,17,206,20,97,204,204,204,204,204,204,204,17,255,95,0,112,255,27,202,204,204,204,204,204,204,172,
-  97,206,180,161,204,204,204,204,204,204,204,22,251,159,0,240,255,17,204,204,204,204,204,204,204,28,225,206,68,26,198,204,
-  204,204,204,204,204,28,241,255,3,242,191,97,204,204,204,204,204,204,204,17,238,206,68,20,193,204,204,204,204,204,204,108,
-  177,255,5,253,175,193,204,204,204,204,204,204,108,161,238,206,68,180,161,204,204,204,204,204,204,204,161,255,57,247,31,202,
-  204,204,204,204,204,204,28,225,238,206,68,68,17,198,204,204,204,204,204,204,26,255,57,247,20,198,204,102,102,102,204,204,
-  26,230,238,206,68,68,27,106,102,102,102,102,198,204,28,251,63,255,27,204,204,102,102,102,102,102,17,238,238,206,68,68,
-  164,97,102,102,102,102,198,204,28,251,143,255,27,204,108,102,102,102,102,22,225,238,238,206,68,68,68,17,102,102,102,102,
-  102,204,172,250,143,255,170,204,108,102,102,102,102,26,234,238,238,206,68,68,68,26,106,102,102,102,102,204,172,250,143,255,
-  170,204,108,102,102,102,102,17,238,238,238,206,68,68,68,20,97,102,102,102,102,204,172,241,143,255,170,204,108,102,102,102,
-  166,97,238,238,238,206,68,68,68,180,161,102,102,102,102,204,108,241,143,255,170,204,108,102,102,102,166,225,238,238,238,238,
-  68,68,68,68,161,102,102,102,102,204,108,241,143,255,170,204,108,102,102,102,166,161,102,102,102,230,238,238,238,110,161,102,
-  102,102,102,204,108,241,143,255,170,204,108,102,102,102,102,17,102,102,102,230,238,238,238,30,97,102,102,102,102,204,172,241,
-  143,255,170,204,108,102,102,102,102,26,106,102,102,230,238,238,238,26,106,102,102,102,102,204,172,250,143,255,27,204,108,102,
-  102,102,102,22,97,102,102,230,238,238,238,17,102,102,102,102,102,204,172,250,143,255,27,204,108,102,102,102,102,102,17,102,
-  102,230,238,238,174,161,102,102,102,102,102,204,28,251,143,247,20,198,108,102,102,102,102,102,26,106,102,230,238,238,22,97,
-  102,102,102,102,102,204,22,251,143,247,31,202,204,102,102,102,102,102,22,97,102,230,238,238,17,102,102,102,102,102,198,204,
-  26,244,137,253,175,193,204,102,102,102,102,102,166,161,102,230,238,174,161,102,102,102,102,102,198,204,17,255,137,242,191,97,
-  204,108,102,102,102,102,102,17,102,230,238,30,97,102,102,102,102,102,204,108,177,255,53,240,255,17,204,108,102,102,102,102,
-  102,26,97,230,238,26,106,102,102,102,102,102,204,172,241,255,56,112,255,27,202,204,102,102,102,102,102,22,161,230,110,17,
-  102,102,102,102,102,198,204,22,250,159,56,32,255,31,193,204,108,102,102,102,102,102,17,230,30,97,102,102,102,102,102,204,
-  204,17,244,95,8,0,247,191,161,204,204,102,102,102,102,102,26,234,26,106,102,102,102,102,198,204,172,177,255,143,3,0,
-  242,255,26,202,204,102,102,102,102,102,22,97,17,102,102,102,102,102,198,204,22,250,255,133,3,0,112,255,31,97,204,204,
-  102,102,102,102,166,17,161,102,102,102,102,198,204,108,17,244,159,56,0,0,32,255,79,17,198,204,108,102,102,102,102,170,
-  106,102,102,102,102,204,204,22,65,255,95,56,0,0,0,253,255,20,161,204,204,108,102,102,102,102,102,102,102,102,204,204,
-  108,17,251,255,133,3,0,0,0,208,255,79,17,202,204,204,108,102,102,102,102,102,102,204,204,204,26,65,255,159,136,0,
-  0,0,0,0,249,255,175,17,198,204,204,204,102,102,102,198,204,204,204,22,161,244,255,137,8,0,0,0,0,0,83,255,
-  255,27,17,198,204,204,204,204,204,204,204,204,166,17,251,255,159,136,3,0,0,0,0,0,48,245,255,255,27,17,106,204,
-  204,204,204,204,108,26,17,74,255,255,133,56,0,0,0,0,0,0,0,128,249,255,255,171,17,17,170,170,170,170,17,17,
-  251,255,255,89,136,3,0,0,0,0,0,0,0,0,83,249,255,255,191,171,26,17,17,170,187,244,255,255,95,136,3,0,
-  0,0,0,0,0,0,0,0,48,88,249,255,255,255,255,255,255,255,255,255,255,89,136,56,0,0,0,0,0,0,0,0,
-  0,0,0,48,136,149,249,255,255,255,255,255,255,153,133,136,56,0,0,0,0,0,0,0,0,0,0,0,0,0,48,131,
-  136,136,136,136,136,136,136,136,136,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,51,51,51,51,
-  51,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,136,68,68,68,68,68,132,248,2,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,32,72,68,68,68,68,68,68,68,68,68,68,40,0,0,0,0,0,0,0,0,
-  0,0,0,0,32,72,68,68,212,170,238,238,238,174,218,68,68,68,40,0,0,0,0,0,0,0,0,0,0,0,72,68,
-  68,237,17,17,238,170,234,30,17,225,77,68,68,40,0,0,0,0,0,0,0,0,0,66,68,68,26,17,174,187,187,187,
-  187,187,171,30,17,74,68,68,2,0,0,0,0,0,0,0,240,68,68,29,17,186,187,187,187,187,187,187,187,187,26,17,
-  77,68,244,0,0,0,0,0,0,0,79,68,164,17,186,187,187,187,187,187,187,187,187,187,187,26,225,68,68,15,0,0,
-  0,0,0,240,68,68,30,190,187,187,187,187,187,187,187,187,187,187,187,187,30,209,68,244,0,0,0,0,0,66,68,29,
-  225,187,187,187,187,187,187,187,187,187,187,187,187,187,171,17,77,68,2,0,0,0,0,68,68,17,186,187,187,187,187,187,
-  187,119,183,187,187,187,187,187,187,26,209,68,36,0,0,0,128,68,228,161,187,187,187,187,187,187,119,17,225,183,187,187,
-  187,187,187,171,17,68,132,0,0,0,66,68,26,190,187,187,187,187,171,30,17,204,28,17,126,187,187,187,187,187,26,78,
-  68,15,0,0,72,212,225,187,187,187,187,171,17,108,102,102,102,102,28,225,187,187,187,187,235,161,68,4,0,32,68,20,
-  177,187,187,187,235,17,108,102,102,102,102,102,102,28,113,187,187,187,187,17,68,84,0,128,68,26,186,187,187,187,17,108,
-  102,102,102,102,102,102,102,102,17,183,187,187,187,26,74,212,0,64,68,17,187,187,187,235,97,102,102,102,28,17,17,108,
-  102,102,22,113,187,187,187,235,65,68,3,66,212,161,187,187,187,27,108,102,102,28,113,183,173,30,108,102,102,17,187,187,
-  187,171,161,68,5,79,228,177,187,187,187,26,102,102,102,17,119,183,68,164,17,108,102,22,190,187,187,187,225,68,61,72,
-  20,190,187,187,123,193,102,102,102,22,126,183,68,212,17,193,102,198,113,187,187,187,26,68,61,72,29,186,187,187,235,97,
-  102,102,102,102,225,183,68,68,26,17,102,102,225,187,187,187,27,77,52,68,26,187,187,119,23,108,102,28,102,102,22,190,
-  68,68,228,17,108,102,28,119,183,187,27,74,148,68,26,187,123,119,23,102,102,17,97,102,102,225,77,68,212,17,97,102,
-  22,119,119,187,235,78,148,68,238,187,123,119,23,102,198,17,17,102,102,22,222,68,68,26,193,102,22,119,119,187,235,78,
-  148,68,238,187,123,119,23,102,22,17,231,97,102,102,225,77,68,29,17,102,22,119,119,187,171,65,148,68,174,187,123,119,
-  206,102,22,113,119,30,102,102,22,222,68,164,17,102,198,126,119,187,171,65,148,68,174,187,123,119,206,102,22,113,119,23,
-  97,102,102,225,187,187,17,102,198,126,119,187,171,65,148,68,174,187,123,119,206,102,22,225,119,119,17,102,102,22,126,119,
-  17,102,198,126,119,187,171,65,148,68,238,187,123,119,30,102,22,17,119,119,23,97,102,102,225,23,17,102,22,126,119,187,
-  171,65,148,68,238,187,123,119,23,102,198,17,126,119,119,17,102,102,22,17,193,102,22,119,119,187,235,78,148,68,26,187,
-  123,119,23,102,102,17,113,119,119,23,97,102,102,17,97,102,22,119,119,187,235,78,148,68,26,187,123,119,23,108,102,28,
-  17,119,119,119,30,102,102,22,108,102,28,119,119,187,27,74,148,72,29,186,187,119,231,97,102,22,17,126,119,119,231,97,
-  102,102,102,102,225,119,183,187,26,77,148,72,20,190,187,119,119,193,102,198,17,113,119,119,119,30,102,102,102,198,113,119,
-  183,187,26,68,157,79,228,177,187,119,119,30,102,102,28,225,119,119,119,23,97,102,102,22,126,119,183,187,225,68,157,66,
-  212,161,187,123,119,23,97,102,102,28,225,119,119,17,108,102,102,28,119,119,187,171,161,68,53,64,68,17,187,123,119,119,
-  17,102,102,102,28,17,17,108,102,102,102,17,119,119,187,235,65,68,57,128,68,26,186,187,119,119,23,97,102,102,102,102,
-  102,102,102,102,28,113,119,183,187,26,74,212,57,32,68,20,177,187,123,119,119,17,108,102,102,102,102,102,102,28,17,119,
-  119,187,187,17,68,84,9,0,72,212,225,187,187,119,119,231,17,108,102,102,102,102,28,225,119,119,183,187,235,161,68,148,
-  3,0,66,68,30,190,187,123,119,119,231,17,17,204,28,17,225,119,119,119,187,187,26,78,68,149,3,0,128,68,20,161,
-  187,187,119,119,119,119,238,17,225,126,119,119,119,183,187,171,17,68,212,57,0,0,32,68,212,17,186,187,123,119,119,119,
-  119,238,126,119,119,119,119,187,187,26,209,68,84,57,0,0,0,79,68,29,225,187,187,123,119,119,119,119,119,119,119,119,
-  187,187,171,17,77,68,149,3,0,0,0,240,68,212,17,190,187,187,123,119,119,119,119,119,119,187,187,187,30,209,68,212,
-  153,0,0,0,0,0,72,68,228,17,186,187,187,187,123,119,119,187,187,187,187,26,225,68,68,157,9,0,0,0,0,0,
-  83,68,68,26,17,186,187,187,187,187,187,187,187,187,234,17,74,68,212,153,3,0,0,0,0,0,48,69,68,68,26,17,
-  174,187,187,187,187,187,171,30,17,74,68,68,149,57,0,0,0,0,0,0,0,144,77,68,68,234,17,225,238,170,234,238,
-  17,225,74,68,68,93,153,3,0,0,0,0,0,0,0,0,83,77,68,68,212,234,30,17,17,238,218,68,68,68,84,153,
-  3,0,0,0,0,0,0,0,0,0,48,89,77,68,68,68,68,68,68,68,68,68,68,93,153,57,0,0,0,0,0,0,
-  0,0,0,0,0,48,153,213,77,68,68,68,68,68,68,221,149,153,57,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  48,147,153,153,153,153,153,153,153,153,153,51,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,51,51,51,
-  51,51,51,51,0,0,0,0,0,0,0,0,0,0,0,0,0,32,85,153,153,153,165,0,0,0,0,0,0,0,0,160,
-  25,209,247,255,215,17,89,0,0,0,0,0,0,32,25,241,238,238,238,238,254,29,169,0,0,0,0,0,26,241,238,238,
-  238,238,238,238,254,17,5,0,0,0,160,17,232,238,142,136,136,136,238,238,216,81,0,0,0,18,129,238,142,136,136,136,
-  136,136,232,142,29,10,0,0,25,232,238,238,238,142,215,77,136,136,238,24,33,0,160,241,238,238,126,119,23,113,17,136,
-  136,232,254,81,0,144,225,142,238,30,119,221,59,27,77,136,136,238,29,2,18,239,142,238,24,60,51,51,243,17,113,136,
-  238,31,5,21,232,136,136,29,51,51,51,51,179,215,136,232,30,41,213,238,136,31,241,51,51,60,51,51,215,136,232,126,
-  41,121,142,136,29,59,51,219,209,59,51,125,136,136,254,161,249,142,136,125,204,204,29,23,205,204,29,132,136,254,161,249,
-  142,68,29,203,108,113,116,97,204,27,77,132,254,81,249,142,68,20,205,204,29,23,205,204,124,77,132,254,81,121,142,68,
-  116,205,204,219,209,203,204,27,77,132,254,81,217,142,68,212,103,102,102,102,102,118,17,79,132,126,89,21,232,68,212,189,
-  102,102,102,102,22,77,68,228,24,169,26,239,72,116,17,113,102,102,102,27,79,68,232,31,169,144,141,72,68,244,29,107,
-  27,113,29,68,68,136,29,37,80,241,136,68,68,20,113,17,221,221,68,132,248,145,37,0,25,143,72,68,116,17,77,68,
-  68,68,136,24,81,10,0,26,141,136,68,68,68,68,68,68,132,136,29,89,2,0,80,209,136,136,68,68,68,68,68,136,
-  216,145,165,0,0,0,21,241,136,136,68,68,132,136,248,17,89,37,0,0,0,82,17,253,136,136,136,136,248,29,145,85,
-  2,0,0,0,32,154,17,209,247,255,119,17,145,85,42,0,0,0,0,0,32,85,153,17,17,145,153,85,165,0,0,0,
-  0,0,0,0,32,90,85,85,85,85,170,2,0,0,0,0,0,0,0,0,0,34,34,34,34,0,0,0,0,0,0,0,
-  0,162,181,187,187,165,2,0,0,0,0,0,80,17,129,248,143,17,81,2,0,0,0,32,27,241,119,119,119,247,24,33,
-  0,0,0,18,129,119,119,119,119,119,247,17,10,0,0,27,127,119,221,221,221,125,119,31,33,0,80,129,119,119,119,215,
-  221,221,125,247,177,0,18,113,119,247,255,255,68,68,221,119,24,2,26,127,125,23,204,28,204,28,221,125,29,11,21,119,
-  221,29,51,30,62,19,221,125,23,43,139,215,68,20,51,30,62,19,68,212,135,161,139,215,68,20,51,30,62,19,68,212,
-  247,161,139,215,68,20,153,30,158,25,68,212,247,161,139,215,68,20,153,22,150,25,68,212,247,161,139,221,68,20,153,22,
-  150,25,68,212,141,161,21,221,68,20,153,22,150,25,68,212,29,171,26,223,77,20,204,28,204,28,68,212,31,171,18,209,
-  77,132,136,136,136,136,68,221,24,165,80,129,221,68,68,68,68,68,212,253,177,37,32,17,223,77,68,68,68,68,221,31,
-  81,10,0,26,129,221,77,68,68,221,253,17,85,2,0,160,17,248,221,221,221,253,24,81,165,0,0,0,186,17,129,248,
-  136,17,177,85,10,0,0,0,32,181,27,17,17,187,85,165,0,0,0,0,0,162,85,85,85,85,165,2,0,0,0,0,
-  0,0,32,34,34,34,0,0,0,0,0,0,0,0,0,0,0,0,0,114,119,215,0,0,0,0,0,0,0,0,208,30,
-  17,39,0,0,0,0,0,0,0,32,31,17,139,222,0,0,0,0,0,0,0,233,17,56,131,222,0,0,0,0,0,0,
-  64,17,81,51,131,222,0,0,0,0,0,144,30,129,60,51,131,222,0,0,0,0,0,20,17,53,51,51,131,222,0,0,
-  0,0,121,17,184,51,195,60,131,222,0,0,0,64,17,81,51,51,108,60,131,222,0,0,32,23,129,59,51,108,102,60,
-  131,222,0,0,29,17,53,51,108,102,102,60,131,222,0,114,17,184,51,195,102,102,102,60,131,222,208,30,81,60,195,102,
-  102,102,102,60,131,222,20,17,59,51,102,102,102,102,102,54,131,222,31,200,51,108,102,102,102,102,102,54,131,222,31,197,
-  204,108,170,170,170,170,170,198,140,222,20,129,203,204,166,170,170,170,170,198,140,222,240,17,81,204,204,170,170,170,170,198,
-  140,222,32,228,17,184,204,108,170,170,170,198,140,222,0,208,23,17,197,204,172,170,170,198,140,222,0,0,73,30,129,203,
-  204,170,170,202,140,222,0,0,32,125,17,81,204,108,170,202,140,222,0,0,0,144,20,17,184,204,172,202,140,222,0,0,
-  0,0,210,23,17,197,204,198,140,222,0,0,0,0,0,249,17,129,203,204,140,222,0,0,0,0,0,32,237,17,81,204,
-  140,222,0,0,0,0,0,0,144,31,17,184,140,222,0,0,0,0,0,0,0,210,30,129,133,222,0,0,0,0,0,0,
-  0,0,249,17,17,222,0,0,0,0,0,0,0,0,32,228,238,215,3,0,0,0,0,0,0,0,0,0,0,57,0,0,
-  0,0,0,0,0,0,0,0,153,11,0,0,0,0,0,0,0,0,0,153,89,0,0,0,0,0,0,0,0,0,153,217,
-  8,0,0,0,0,0,0,0,0,153,153,45,0,0,0,0,0,0,0,0,153,153,121,0,0,0,0,0,0,0,0,153,
-  153,153,11,0,0,0,0,0,0,0,153,153,153,185,0,0,0,0,0,0,0,153,153,153,153,5,0,0,0,0,0,0,
-  153,153,153,153,141,0,0,0,0,0,0,153,153,153,153,217,2,0,0,0,0,0,153,153,153,153,153,7,0,0,0,0,
-  0,153,153,153,153,153,185,0,0,0,0,0,153,153,153,153,153,153,5,0,0,0,0,153,153,153,153,153,153,81,0,0,
-  0,0,153,153,153,153,153,153,217,8,0,0,0,153,153,153,153,153,153,153,45,0,0,0,153,153,153,153,153,153,153,121,
-  0,0,0,153,153,153,153,153,153,153,153,11,0,0,153,153,153,153,153,153,153,153,81,0,0,153,153,153,153,153,153,153,
-  153,25,5,0,153,153,153,153,153,153,153,153,153,141,0,153,153,153,153,153,153,153,153,153,217,2,17,17,17,17,17,17,
-  17,17,17,209,6,17,17,17,17,17,17,17,17,17,109,230,17,17,17,17,17,17,17,17,17,100,230,17,17,17,17,17,
-  17,17,17,65,102,6,17,17,17,17,17,17,17,17,108,102,2,17,17,17,17,17,17,17,241,102,38,0,17,17,17,17,
-  17,17,17,109,102,14,0,17,17,17,17,17,17,209,102,230,0,0,17,17,17,17,17,17,65,102,14,0,0,17,17,17,
-  17,17,17,100,102,0,0,0,17,17,17,17,17,193,102,38,0,0,0,17,17,17,17,17,111,102,2,0,0,0,17,17,
-  17,17,241,102,230,0,0,0,0,17,17,17,17,109,102,14,0,0,0,0,17,17,17,17,100,230,0,0,0,0,0,17,
-  17,17,65,102,6,0,0,0,0,0,17,17,17,108,102,2,0,0,0,0,0,17,17,241,102,38,0,0,0,0,0,0,
-  17,17,111,102,14,0,0,0,0,0,0,17,209,102,230,0,0,0,0,0,0,0,17,65,102,14,0,0,0,0,0,0,
-  0,17,100,102,2,0,0,0,0,0,0,0,161,102,38,0,0,0,0,0,0,0,0,7,102,2,0,0,0,0,0,0,
-  0,0,0,230,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,0,179,198,204,204,
-  102,3,0,0,0,0,0,0,0,203,17,127,231,119,31,193,11,0,0,0,0,0,99,17,135,136,136,136,136,23,193,3,
-  0,0,0,48,28,143,136,136,136,136,136,136,23,49,0,0,0,195,113,136,136,136,136,136,136,136,232,17,3,0,0,22,
-  135,136,136,136,136,136,136,136,136,30,12,0,176,241,136,136,136,136,136,136,136,136,136,120,177,0,192,65,136,136,136,136,
-  136,136,136,136,136,136,193,0,19,135,136,136,136,136,136,136,136,136,136,136,30,11,27,132,136,136,34,136,136,136,40,130,
-  136,136,20,6,246,136,136,40,34,130,136,136,34,34,136,136,248,12,124,136,136,152,159,130,136,136,146,159,136,136,120,12,
-  124,68,68,248,241,130,68,132,242,241,72,68,228,1,124,68,68,152,159,130,68,132,146,159,72,68,228,1,124,68,68,36,
-  34,72,68,68,40,34,68,68,228,1,124,68,68,68,136,68,68,68,132,72,68,68,116,1,246,68,68,68,255,255,255,255,
-  255,79,68,68,244,12,22,68,68,68,31,17,17,17,17,79,68,68,20,6,19,71,68,68,30,161,85,165,17,78,68,68,
-  30,11,192,65,68,68,228,95,85,85,239,68,68,68,17,0,176,241,68,68,68,228,221,237,68,68,68,116,97,0,0,28,
-  71,68,68,68,68,68,68,68,68,30,12,0,0,19,113,68,68,68,68,68,68,68,228,17,3,0,0,48,17,79,68,68,
-  68,68,68,68,23,177,0,0,0,0,195,17,71,68,68,68,68,30,193,3,0,0,0,0,0,203,17,127,238,126,31,17,
-  6,0,0,0,0,0,0,0,107,204,17,17,108,11,0,0,0,0,0,0,0,0,147,165,170,170,85,3,0,0,0,0,
-  0,0,0,169,17,209,238,222,17,161,9,0,0,0,0,0,83,17,78,187,187,187,187,30,161,3,0,0,0,48,26,191,
-  187,187,187,187,187,187,31,58,0,0,0,163,225,187,187,187,187,187,187,187,235,161,3,0,0,21,190,187,139,187,187,187,
-  187,187,187,30,10,0,144,241,187,136,136,136,187,187,187,187,187,251,145,0,160,65,187,136,136,136,184,187,187,187,187,75,
-  161,0,19,183,187,136,136,136,187,187,187,187,187,187,30,9,25,68,68,180,136,187,68,68,139,184,68,68,20,5,21,68,
-  68,43,34,66,68,68,34,34,75,68,244,10,250,68,68,104,109,178,68,180,98,109,72,68,116,10,122,68,68,216,209,130,
-  68,132,210,209,72,68,228,10,122,68,68,107,109,178,68,180,98,109,75,68,228,10,122,68,68,132,34,72,68,68,40,130,
-  68,68,228,10,250,68,68,68,75,68,68,68,68,75,68,68,116,10,21,68,68,68,17,17,17,17,17,65,68,68,244,10,
-  21,204,204,204,31,17,17,17,17,207,204,204,28,5,19,199,204,204,28,17,17,17,17,204,204,204,23,9,160,193,204,204,
-  124,17,17,17,113,204,204,204,17,0,144,241,204,204,204,124,255,127,204,204,204,252,81,0,0,26,199,204,204,204,204,204,
-  204,204,204,23,10,0,0,163,113,204,204,204,204,204,204,204,124,17,3,0,0,48,26,207,204,204,204,204,204,204,31,145,
-  0,0,0,0,163,17,199,204,204,204,204,23,161,3,0,0,0,0,0,169,17,255,119,247,31,17,5,0,0,0,0,0,
-  0,0,89,170,170,170,90,9,0,0,0,0,0,0,0,0,147,165,170,170,85,3,0,0,0,0,0,0,0,169,17,177,
-  119,119,27,161,9,0,0,0,0,0,83,17,199,136,136,136,200,23,161,3,0,0,0,48,26,203,136,136,136,136,136,200,
-  27,49,0,0,0,163,113,136,136,136,136,136,136,136,120,17,3,0,0,21,135,136,216,136,136,136,136,136,136,23,10,0,
-  144,177,136,221,221,221,136,136,136,136,136,184,145,0,160,193,136,221,221,221,141,136,136,136,136,200,161,0,19,135,136,221,
-  221,221,136,136,136,136,136,136,23,9,25,140,136,136,221,136,136,136,216,141,136,136,28,5,21,255,255,40,34,130,255,143,
-  34,34,248,255,191,10,186,255,255,109,107,130,255,143,98,107,253,255,127,10,122,255,255,189,177,210,255,223,178,177,253,255,
-  239,1,122,255,255,104,107,130,255,143,98,107,248,255,239,1,122,255,255,223,34,253,255,255,45,210,255,255,239,1,186,255,
-  255,255,136,255,255,255,143,248,255,255,127,1,181,255,255,255,255,255,255,255,255,255,255,255,191,10,21,244,255,255,255,255,
-  255,255,255,255,255,255,20,5,19,71,68,68,30,17,17,17,17,78,68,68,30,9,160,65,68,68,190,187,187,187,187,78,
-  68,68,17,0,144,177,68,68,68,68,68,68,68,68,68,116,81,0,0,26,71,68,68,68,68,68,68,68,68,30,10,0,
-  0,19,113,68,68,68,68,68,68,68,228,17,3,0,0,48,17,75,68,68,68,68,68,68,23,145,0,0,0,0,163,17,
-  71,68,68,68,68,30,161,3,0,0,0,0,0,169,17,123,238,126,27,17,5,0,0,0,0,0,0,0,89,170,17,17,
-  90,9,0,0,0,0,0,0,0,0,163,181,187,187,85,3,0,0,0,0,0,0,0,186,17,209,232,216,17,177,10,0,
-  0,0,0,0,83,17,72,68,68,68,68,24,177,3,0,0,0,48,27,77,68,68,68,68,68,68,29,59,0,0,0,179,
-  209,68,68,68,68,68,68,68,212,177,3,0,0,21,216,78,119,71,68,68,68,68,222,24,11,0,160,209,212,225,119,119,
-  71,68,68,228,209,212,161,0,176,65,228,17,126,119,71,68,68,30,225,68,177,0,19,72,68,20,225,119,68,68,228,17,
-  78,68,24,10,26,78,68,228,153,78,68,68,158,233,68,68,20,5,21,68,68,36,34,236,68,228,44,34,68,68,212,11,
-  219,68,68,151,157,98,78,110,146,157,71,68,132,11,139,68,68,215,209,98,77,109,210,209,71,68,132,11,139,68,68,148,
-  157,66,72,72,146,157,68,68,228,11,139,255,255,207,34,247,255,255,39,194,255,255,143,11,219,255,255,255,68,255,255,255,
-  79,244,255,255,143,11,21,255,255,255,255,255,255,255,255,255,255,255,223,11,21,255,255,255,255,216,17,209,248,255,255,255,
-  31,5,19,248,255,255,223,17,17,17,209,255,255,255,24,10,176,241,255,255,29,17,17,17,17,253,255,255,17,0,160,209,
-  255,255,17,17,17,17,17,241,255,143,81,0,0,27,248,255,255,255,255,255,255,255,255,24,11,0,0,179,129,255,255,255,
-  255,255,255,255,143,17,3,0,0,48,27,253,255,255,255,255,255,255,29,161,0,0,0,0,179,17,248,255,255,255,255,24,
-  177,3,0,0,0,0,0,186,17,141,136,136,29,17,5,0,0,0,0,0,0,0,90,187,187,187,91,10,0,0,0,0,
-  0,0,0,0,163,197,204,204,85,3,0,0,0,0,0,0,0,202,17,97,255,111,27,193,10,0,0,0,0,0,83,17,
-  230,119,119,119,231,25,193,3,0,0,0,48,28,235,119,119,119,119,119,119,22,49,0,0,0,195,177,119,119,119,119,119,
-  119,119,103,17,3,0,0,21,182,127,221,125,119,119,119,119,191,31,12,0,160,177,183,241,221,221,119,119,119,247,177,103,
-  161,0,192,225,135,17,223,221,125,119,119,31,129,231,193,0,19,118,119,24,241,221,119,119,247,17,120,119,25,10,26,116,
-  119,135,136,120,119,119,143,136,119,119,30,5,21,119,119,39,34,253,119,247,45,34,119,119,183,12,108,238,238,141,139,98,
-  239,111,130,139,237,238,158,12,156,238,238,189,177,98,230,102,178,177,237,238,254,1,156,238,238,135,139,226,233,233,130,139,
-  231,238,254,1,156,238,238,222,34,237,238,238,45,210,238,238,254,1,108,238,238,238,231,238,238,238,238,231,238,238,158,1,
-  181,238,238,238,238,238,238,238,238,238,238,238,190,12,21,228,238,238,126,253,134,246,125,238,238,238,20,5,19,73,68,68,
-  100,178,43,187,98,68,68,68,25,10,192,65,68,68,22,27,177,17,27,70,68,68,17,0,160,177,68,68,17,17,17,17,
-  17,65,68,100,81,0,0,28,73,68,68,68,68,68,68,68,68,25,12,0,0,19,145,68,68,68,68,68,68,68,148,17,
-  3,0,0,48,17,75,68,68,68,68,68,68,22,161,0,0,0,0,195,17,73,68,68,68,68,25,193,3,0,0,0,0,
-  0,202,17,155,153,153,27,17,5,0,0,0,0,0,0,0,90,204,17,17,92,10,0,0,0,0,0,0,0,68,2,0,
-  0,0,0,64,209,4,0,0,0,0,160,85,10,0,0,0,0,25,59,145,0,0,105,26,129,51,24,161,150,217,190,51,
-  51,51,235,157,162,189,51,51,51,219,42,32,218,247,255,127,173,2,0,18,254,255,239,33,0,0,18,247,119,127,33,0,
-  0,217,199,17,124,157,0,0,217,29,68,209,157,0,0,66,36,0,66,36,0,0,0,0,0,0,68,2,0,0,0,0,
-  0,0,0,0,144,17,4,0,0,0,0,0,0,0,0,112,92,13,0,0,0,0,0,0,0,0,25,58,145,0,0,0,
-  0,0,0,0,0,132,51,120,0,0,0,0,0,0,0,32,225,51,30,2,0,0,0,0,0,0,64,49,51,19,4,0,
-  0,0,153,73,68,212,60,51,195,77,68,148,153,129,200,92,229,58,51,163,94,197,140,24,129,250,255,255,255,255,255,255,
-  255,175,24,217,168,255,255,255,255,255,255,255,138,157,32,29,254,255,255,255,255,255,239,209,2,0,114,81,255,255,255,255,
-  255,21,39,0,0,0,20,245,255,255,255,95,65,0,0,0,0,16,107,102,102,102,182,1,0,0,0,0,25,102,102,102,
-  102,102,145,0,0,0,0,132,102,102,187,102,102,72,0,0,0,0,199,102,198,17,108,102,124,0,0,0,0,177,182,24,
-  68,129,107,27,0,0,0,144,177,28,151,0,114,193,27,9,0,0,144,17,77,0,0,0,212,17,9,0,0,32,68,2,
-  0,0,0,32,68,2,0,0,0,0,187,187,2,0,0,0,32,244,167,122,65,2,0,0,251,55,51,51,163,191,0,32,
-  175,51,51,51,51,248,2,64,55,51,195,60,51,163,9,240,204,204,220,205,204,204,33,123,204,204,92,197,204,204,103,123,
-  204,93,85,85,213,204,106,123,204,220,85,85,205,204,106,123,221,221,85,85,221,221,103,18,221,221,213,93,221,221,33,64,
-  222,221,221,221,221,237,9,32,239,221,221,221,221,21,11,0,251,94,85,85,229,97,0,0,32,25,238,238,145,11,0,0,
-  0,32,102,102,2,0,0,0,0,0,153,153,2,0,0,0,32,180,111,134,209,12,0,0,185,56,51,51,99,155,0,32,
-  107,51,51,51,51,186,12,64,56,51,163,58,51,99,14,176,170,170,106,166,170,170,193,249,170,170,138,168,170,170,88,137,
-  170,246,255,255,111,170,86,137,170,106,248,143,166,170,88,249,170,170,248,143,170,170,95,18,102,102,111,246,102,102,193,208,
-  111,102,102,102,102,134,7,192,139,102,102,102,102,24,9,0,185,111,102,102,246,81,0,0,192,30,255,255,113,9,0,0,
-  0,192,85,85,12,0,0,0,0,0,0,0,32,119,119,2,0,0,0,0,0,0,0,0,0,183,161,217,157,26,123,0,
-  0,0,0,0,0,0,103,138,51,51,51,51,168,118,0,0,0,0,0,64,129,51,51,51,51,51,51,24,11,0,0,0,
-  0,171,60,51,51,51,51,51,51,51,186,0,0,0,64,202,51,51,51,51,51,51,51,51,163,11,0,0,23,60,51,51,
-  51,51,60,51,51,51,195,65,0,0,214,51,51,51,51,195,62,51,51,51,51,24,0,112,202,204,204,204,204,236,197,204,
-  204,204,204,172,4,176,205,204,204,204,204,92,197,204,204,204,204,140,6,16,204,204,204,204,204,94,229,204,204,204,204,204,
-  33,162,204,204,204,204,238,85,85,238,204,204,204,204,121,151,204,204,236,85,85,85,85,85,85,206,204,204,73,151,204,204,
-  204,94,85,85,85,85,229,204,204,204,77,151,204,204,204,236,85,85,85,85,206,204,204,204,77,151,238,238,238,238,94,85,
-  85,229,238,238,238,238,73,162,238,238,238,238,94,85,85,229,238,238,238,238,121,16,238,238,238,238,85,85,85,85,238,238,
-  238,238,33,176,237,238,238,238,85,229,94,85,238,238,238,222,6,112,234,238,238,238,229,238,238,94,238,238,238,174,4,0,
-  214,238,238,238,238,238,238,238,238,238,238,21,2,0,23,229,238,238,238,238,238,238,238,238,238,65,0,0,176,90,238,238,
-  238,238,238,238,238,238,174,6,0,0,0,171,85,85,85,85,85,85,85,85,106,2,0,0,0,176,81,85,85,85,85,85,
-  85,21,38,0,0,0,0,0,20,250,85,85,85,85,165,65,0,0,0,0,0,0,0,100,161,255,255,26,70,2,0,0,
-  0,0,0,0,0,0,114,68,68,39,0,0,0,0,0,0,0,0,0,0,208,119,119,13,0,0,0,0,0,0,0,0,
-  0,167,155,238,238,185,202,0,0,0,0,0,0,0,103,81,51,51,51,51,152,203,0,0,0,0,0,64,81,51,51,51,
-  51,51,51,24,10,0,0,0,0,26,63,51,51,51,51,51,51,243,169,0,0,0,64,241,51,51,51,51,51,51,51,51,
-  159,10,0,0,23,63,51,51,51,243,63,51,51,51,243,193,0,0,86,255,255,255,255,143,245,255,255,255,255,184,0,112,
-  241,255,255,255,255,239,254,255,255,255,255,159,12,160,254,255,255,255,255,152,137,255,255,255,255,95,6,176,248,255,255,255,
-  255,149,233,255,255,255,255,255,33,29,255,255,136,136,136,153,153,136,136,136,255,255,121,151,136,136,232,153,153,153,153,153,
-  153,142,136,136,206,151,136,136,136,149,153,153,153,153,89,136,136,136,206,151,136,136,136,88,153,153,153,153,133,136,136,136,
-  206,151,136,136,136,136,149,153,153,89,136,136,136,136,201,29,136,136,136,136,158,153,153,233,136,136,136,136,121,176,85,85,
-  85,85,153,153,153,153,85,85,85,85,33,160,94,85,85,85,153,94,229,153,85,85,85,229,6,192,81,85,85,229,233,85,
-  85,158,94,85,85,149,4,0,235,85,85,229,85,85,85,85,94,85,85,190,2,0,28,94,85,85,85,85,85,85,85,85,
-  229,65,0,0,160,225,238,238,238,238,238,238,238,238,30,6,0,0,0,26,238,238,238,238,238,238,238,238,97,2,0,0,
-  0,160,145,238,238,238,238,238,238,30,38,0,0,0,0,0,188,145,238,238,238,238,25,75,0,0,0,0,0,0,0,108,
-  17,153,153,17,70,2,0,0,0,0,0,0,0,0,114,204,204,39,0,0,0,0,0,116,119,119,119,119,7,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,55,51,51,51,51,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,55,51,51,51,51,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,247,255,255,255,255,11,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,167,170,170,170,170,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  167,170,170,170,170,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,231,238,238,238,238,11,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,231,238,238,238,238,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,
-  102,102,102,102,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,103,102,102,102,102,11,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,183,187,187,187,187,113,119,119,119,119,7,0,0,0,0,0,0,0,0,0,0,39,34,
-  34,34,34,57,51,51,51,51,11,0,0,0,0,0,0,0,0,0,0,39,34,34,34,34,57,51,51,51,51,11,0,0,
-  0,0,0,0,0,0,0,0,215,221,221,221,221,249,255,255,255,255,11,0,0,0,0,0,0,0,0,0,0,215,221,221,
-  221,221,169,170,170,170,170,11,0,0,0,0,0,0,0,0,0,0,135,136,136,136,136,169,170,170,170,170,11,0,0,0,
-  0,0,0,0,0,0,0,135,136,136,136,136,233,238,238,238,238,11,0,0,0,0,0,0,0,0,0,0,199,204,204,204,
-  204,233,238,238,238,238,11,0,0,0,0,0,0,0,0,0,0,199,204,204,204,204,105,102,102,102,102,11,0,0,0,0,
-  0,0,0,0,0,0,87,85,85,85,85,105,102,102,102,102,11,0,0,0,0,0,0,0,0,0,0,151,153,153,153,153,
-  177,187,187,187,187,113,119,119,119,119,7,0,0,0,0,0,55,51,51,51,51,43,34,34,34,34,57,51,51,51,51,11,
-  0,0,0,0,0,55,51,51,51,51,43,34,34,34,34,57,51,51,51,51,11,0,0,0,0,0,247,255,255,255,255,219,
-  221,221,221,221,249,255,255,255,255,11,0,0,0,0,0,167,170,170,170,170,219,221,221,221,221,169,170,170,170,170,11,0,
-  0,0,0,0,167,170,170,170,170,139,136,136,136,136,169,170,170,170,170,11,0,0,0,0,0,231,238,238,238,238,139,136,
-  136,136,136,233,238,238,238,238,11,0,0,0,0,0,231,238,238,238,238,203,204,204,204,204,233,238,238,238,238,11,0,0,
-  0,0,0,103,102,102,102,102,203,204,204,204,204,105,102,102,102,102,11,0,0,0,0,0,103,102,102,102,102,91,85,85,
-  85,85,105,102,102,102,102,11,0,0,0,0,0,183,187,187,187,187,145,153,153,153,153,177,187,187,187,187,113,119,119,119,
-  119,7,39,34,34,34,34,57,51,51,51,51,43,34,34,34,34,57,51,51,51,51,11,39,34,34,34,34,57,51,51,51,
-  51,43,34,34,34,34,57,51,51,51,51,11,215,221,221,221,221,249,255,255,255,255,219,221,221,221,221,249,255,255,255,255,
-  11,215,221,221,221,221,169,170,170,170,170,219,221,221,221,221,169,170,170,170,170,11,135,136,136,136,136,169,170,170,170,170,
-  139,136,136,136,136,169,170,170,170,170,11,135,136,136,136,136,233,238,238,238,238,139,136,136,136,136,233,238,238,238,238,11,
-  199,204,204,204,204,233,238,238,238,238,203,204,204,204,204,233,238,238,238,238,11,199,204,204,204,204,105,102,102,102,102,203,
-  204,204,204,204,105,102,102,102,102,11,87,85,85,85,85,105,102,102,102,102,91,85,85,85,85,105,102,102,102,102,11,151,
-  153,153,153,153,177,187,187,187,187,145,153,153,153,153,177,187,187,187,187,1,195,204,204,204,204,204,204,204,204,3,172,221,
-  221,221,221,221,221,102,102,5,220,34,34,34,34,34,98,17,17,5,220,34,34,34,34,34,23,143,31,5,220,34,34,34,
-  34,34,145,136,24,5,220,34,34,34,34,162,225,136,31,5,220,34,34,34,34,22,143,232,17,5,220,103,102,39,210,177,
-  238,174,218,5,108,161,171,113,23,233,238,25,215,5,108,225,238,17,161,238,190,209,210,5,108,65,238,20,65,238,27,118,
-  215,5,108,161,68,68,75,68,161,119,215,5,108,29,73,68,68,20,113,119,215,5,108,215,145,68,68,25,125,119,215,5,
-  108,119,22,73,148,209,119,119,215,5,108,119,167,145,25,122,119,119,103,5,108,119,119,166,106,119,119,119,103,5,172,102,
-  102,102,102,102,102,102,166,5,83,85,85,85,85,85,85,85,85,3,146,153,153,153,153,153,153,153,153,14,249,170,170,170,
-  170,170,170,170,218,4,169,51,51,51,51,51,51,51,83,4,169,51,51,51,51,51,51,51,83,4,169,51,51,51,51,51,
-  51,51,83,4,169,204,204,204,204,204,204,204,92,4,121,204,204,204,204,204,204,204,92,4,121,204,204,204,204,204,204,204,
-  92,4,121,204,204,204,204,204,204,204,172,4,121,102,102,102,102,102,102,102,166,4,121,102,102,102,102,102,102,102,166,4,
-  121,102,102,102,102,102,102,102,166,4,121,102,102,102,102,102,102,102,166,4,217,102,102,102,102,102,102,102,166,4,217,187,
-  187,187,187,187,187,187,123,4,217,187,187,187,187,187,187,187,123,4,217,187,187,187,187,187,187,187,123,4,25,119,119,119,
-  119,119,119,119,247,4,78,68,68,68,68,68,68,68,68,8,0,231,5,250,7,248,5,246,3,211,1,250,4,232,3,0,
-  0,0,1,0,211,158,48,79,0,250,250,195,29,0,250,250,248,53,2,211,175,190,252,95,0,144,111,143,191,0,243,40,
-  175,175,0,232,1,248,45,0,16,0,0,0,230,4,248,6,245,3,48,0,209,9,246,8,252,4,254,2,255,1,254,2,
-  251,5,245,8,160,7,244,4,243,12,224,47,192,79,176,95,192,79,224,31,243,10,195,2,0,34,0,0,187,0,115,221,
-  55,180,238,75,0,187,0,0,119,0,49,0,250,3,248,5,226,1,50,0,65,36,246,239,64,36,49,0,250,4,232,3,
-  0,68,0,174,64,95,144,31,224,11,244,6,249,1,189,0,74,0,128,238,9,246,238,127,250,86,191,251,69,207,250,87,
-  191,245,238,127,128,238,9,32,251,5,243,255,8,178,252,8,0,249,8,0,249,8,177,253,157,226,255,223,195,239,26,230,
-  252,111,0,160,127,0,245,46,80,239,3,243,223,107,244,255,159,195,239,26,229,236,143,32,199,111,96,255,62,0,148,175,
-  231,236,175,196,239,42,0,193,13,0,250,31,96,255,31,226,248,31,250,252,175,182,251,175,0,192,13,245,255,79,248,189,
-  43,248,189,8,247,255,143,98,113,191,233,236,143,196,239,25,80,252,109,243,207,157,249,137,6,251,255,143,250,90,207,245,
-  189,175,112,254,27,249,255,175,182,235,191,0,225,79,0,249,10,48,255,2,176,159,0,208,29,0,161,254,59,248,188,175,
-  245,188,143,227,255,111,250,38,239,250,155,223,161,254,60,161,239,7,249,219,95,251,166,175,247,255,191,96,152,159,217,252,
-  63,230,207,5,232,3,250,4,98,0,250,4,232,3,213,207,4,218,253,12,0,248,9,0,143,0,0,24,0,96,127,0,
-  80,110,0,0,226,12,0,0,250,111,0,48,191,222,0,160,79,248,6,242,255,255,13,250,138,200,95,219,1,48,126,245,
-  255,174,1,247,140,253,7,248,74,252,5,248,255,223,1,248,74,249,10,247,140,251,10,245,255,191,2,32,233,223,5,209,
-  239,236,8,245,30,0,0,247,12,0,0,245,30,0,0,209,239,236,8,32,234,223,5,245,255,174,2,247,189,254,29,248,
-  9,209,111,248,9,144,127,248,9,209,111,247,189,254,29,245,255,174,2,245,255,159,247,140,72,248,74,20,248,255,127,248,
-  74,20,247,140,72,245,255,159,245,255,159,247,140,72,248,74,20,248,255,127,248,74,20,248,9,0,245,6,0,32,234,223,
-  8,209,239,236,11,245,29,67,2,247,9,255,14,246,12,195,15,209,239,236,15,32,234,223,8,245,6,160,46,248,9,208,
-  79,248,140,232,79,248,255,255,79,248,74,212,79,248,9,208,79,245,6,160,46,245,6,248,9,248,9,248,9,248,9,248,
-  9,245,6,0,232,3,0,251,5,0,251,5,0,251,5,0,251,5,177,255,4,226,158,0,245,6,228,9,248,41,254,6,
-  248,218,127,0,248,255,30,0,248,202,191,0,248,41,253,8,245,6,211,11,245,6,0,248,9,0,248,9,0,248,9,0,
-  248,9,0,248,189,107,245,255,159,229,7,0,233,3,248,47,64,255,5,248,191,192,255,5,248,255,251,255,5,248,234,207,
-  251,5,248,89,62,251,5,229,6,0,233,3,229,6,208,12,248,79,241,15,248,239,244,15,248,253,253,15,248,153,255,15,
-  248,9,251,15,229,6,193,13,32,234,207,4,209,223,252,79,245,12,128,191,247,9,64,207,245,12,128,191,209,223,252,79,
-  32,234,207,4,245,255,174,1,248,140,253,7,248,9,249,8,248,255,255,3,248,140,55,0,248,9,0,0,245,6,0,0,
-  32,234,207,4,209,223,252,79,245,12,128,191,247,9,64,207,245,12,128,191,209,223,252,79,32,234,255,10,0,0,226,111,
-  0,0,64,110,245,255,174,1,248,140,253,7,248,9,249,8,248,255,255,3,248,204,159,0,248,41,254,4,245,6,230,7,
-  112,253,142,0,245,206,221,0,247,92,2,0,210,255,175,0,16,99,254,4,248,205,255,3,180,254,92,0,253,255,255,9,
-  185,254,189,6,0,251,5,0,0,251,5,0,0,251,5,0,0,251,5,0,0,232,3,0,245,6,208,12,248,9,241,15,
-  248,9,241,15,248,9,241,15,247,11,243,14,243,207,254,10,80,252,174,1,234,2,96,78,249,9,224,63,242,31,246,11,
-  160,143,252,4,48,255,207,0,0,251,95,0,0,227,11,0,231,5,226,8,192,12,246,11,248,30,243,12,241,31,253,95,
-  249,6,160,175,207,191,254,1,80,255,63,253,175,0,0,254,13,247,79,0,0,231,6,209,12,0,229,7,228,8,243,111,
-  254,6,96,255,175,0,0,253,31,0,96,255,175,0,243,95,253,7,229,6,227,9,232,4,232,4,247,93,239,2,192,255,
-  111,0,32,254,10,0,0,251,5,0,0,251,5,0,0,232,3,0,249,255,223,1,182,235,239,1,0,227,95,0,16,253,
-  7,0,193,159,0,0,248,207,187,1,247,255,239,2,0,178,187,59,241,255,47,240,255,31,208,255,14,176,255,13,160,255,
-  11,128,255,9,80,187,6,0,0,0,32,185,6,209,255,63,243,255,63,192,255,10,0,51,0,0,179,254,141,1,0,112,
-  170,154,0,0,0,0,80,255,255,255,28,0,224,255,111,0,0,0,0,225,255,206,255,143,0,245,255,13,0,0,0,0,
-  246,255,2,249,239,0,250,255,5,32,52,0,0,248,223,0,245,255,17,254,207,64,252,255,110,0,247,239,0,246,255,81,
-  255,79,243,255,255,255,6,243,255,89,253,207,160,255,10,252,239,216,255,30,176,255,255,255,79,241,255,18,255,111,32,255,
-  95,16,251,255,239,6,246,159,48,255,63,0,254,111,0,48,119,22,0,251,30,16,255,111,32,255,95,0,0,0,0,16,
-  255,8,0,252,239,200,255,30,0,0,0,0,96,239,1,0,243,255,255,255,6,0,0,0,0,176,110,0,0,64,252,255,
-  110,0,0,0,0,0,0,0,0,0,0,32,52,0,0,180,187,6,244,255,7,242,255,6,240,255,4,208,255,2,176,255,
-  1,32,68,0,0,0,16,3,0,80,252,15,0,248,255,15,96,255,255,13,225,255,223,1,245,255,95,0,248,255,14,0,
-  250,255,11,0,250,255,11,0,248,255,13,0,243,255,111,0,176,255,255,9,16,253,255,31,0,145,255,31,0,0,81,7,
-  48,1,0,0,240,207,5,0,240,255,143,0,208,255,255,6,16,253,255,30,0,245,255,95,0,224,255,143,0,176,255,175,
-  0,176,255,175,0,208,255,143,0,246,255,63,144,255,255,11,241,255,223,1,241,255,25,0,112,21,0,0,0,65,52,0,
-  0,0,243,175,0,0,0,243,175,0,0,184,252,239,187,3,251,255,255,255,4,251,255,255,255,4,67,246,207,68,1,0,
-  243,175,0,0,0,178,139,0,0,64,68,52,241,255,191,241,255,191,241,255,191,0,251,175,96,255,111,241,255,11,176,89,
-  0,64,68,68,3,241,255,255,14,241,255,255,14,241,255,255,14,64,68,68,3,16,118,2,192,255,30,245,255,95,245,255,
-  63,209,255,9,0,35,0,0,181,187,155,0,248,255,159,0,251,255,95,0,254,255,31,16,255,255,12,64,255,255,8,112,
-  255,255,4,144,255,255,1,192,255,191,0,224,255,127,0,242,255,63,0,245,255,14,0,247,255,10,0,0,32,216,255,157,
-  2,0,0,229,255,255,255,94,0,48,255,255,255,255,255,3,176,255,255,221,255,255,12,242,255,239,17,254,255,47,245,255,
-  175,0,250,255,95,246,255,159,0,249,255,111,245,255,175,0,250,255,95,242,255,239,17,253,255,47,192,255,255,221,255,255,
-  12,64,255,255,255,255,255,4,0,247,255,255,255,127,0,0,64,252,255,207,4,0,0,0,16,51,1,0,0,0,0,48,
-  186,1,0,64,251,255,1,64,252,255,255,1,251,255,255,255,1,253,255,255,255,1,253,255,255,255,1,188,246,255,255,1,
-  1,241,255,255,1,0,241,255,255,1,0,241,255,255,1,0,241,255,255,1,0,241,255,255,1,0,241,255,255,1,0,32,
-  200,254,174,4,0,0,248,255,255,255,143,0,176,255,255,255,255,255,4,245,255,255,255,255,255,8,176,239,23,226,255,255,
-  9,32,44,0,208,255,255,5,0,0,0,248,255,207,0,0,0,144,255,255,28,0,0,16,251,255,175,1,0,0,210,255,
-  255,191,187,8,64,254,255,255,255,255,11,128,255,255,255,255,255,11,128,255,255,255,255,255,11,96,187,187,187,187,187,91,
-  128,255,255,255,255,255,127,128,255,255,255,255,255,7,96,187,187,255,255,78,0,0,0,194,255,223,2,0,0,0,252,255,
-  255,174,2,0,0,228,255,255,255,46,0,0,0,64,254,255,143,0,72,0,0,250,255,191,80,255,157,152,255,255,175,209,
-  255,255,255,255,255,111,210,255,255,255,255,255,11,0,181,254,255,255,108,0,0,0,32,67,19,0,0,0,0,161,187,187,
-  187,9,0,0,248,255,255,255,12,0,64,255,255,255,255,12,0,209,255,255,255,255,12,0,249,255,175,255,255,12,64,255,
-  255,120,255,255,12,209,255,223,112,255,255,12,248,255,175,184,255,255,125,250,255,255,255,255,255,223,250,255,255,255,255,255,
-  223,250,255,255,255,255,255,223,66,68,68,148,255,255,61,0,0,0,112,255,255,12,0,179,187,187,187,187,27,0,247,255,
-  255,255,255,13,0,250,255,255,255,255,10,0,253,255,105,102,102,3,32,255,255,103,53,0,0,80,255,255,255,255,126,0,
-  80,254,255,255,255,255,9,0,97,70,148,255,255,47,0,20,0,16,255,255,95,48,255,139,200,255,255,79,192,255,255,255,
-  255,255,30,244,255,255,255,255,255,5,48,217,255,255,239,42,0,0,0,49,52,2,0,0,0,0,182,254,174,4,0,0,
-  210,255,255,255,175,0,16,253,255,255,255,255,8,144,255,255,140,253,191,6,225,255,223,0,81,1,0,244,255,223,185,155,
-  22,0,246,255,255,255,255,239,5,246,255,255,187,254,255,30,244,255,255,1,247,255,95,225,255,255,7,242,255,95,96,255,
-  255,175,250,255,47,0,247,255,255,255,255,7,0,48,250,255,255,92,0,0,0,16,67,19,0,0,130,136,136,136,136,136,
-  72,244,255,255,255,255,255,111,244,255,255,255,255,255,30,227,255,255,255,255,255,7,0,0,0,160,255,239,1,0,0,0,
-  245,255,143,0,0,0,32,254,255,30,0,0,0,176,255,255,8,0,0,0,247,255,255,2,0,0,48,255,255,159,0,0,
-  0,192,255,255,47,0,0,0,248,255,255,9,0,0,64,255,255,255,2,0,0,16,34,34,34,0,0,0,0,113,235,255,
-  189,22,0,48,254,255,255,255,223,1,176,255,255,255,255,255,8,208,255,239,84,255,255,10,160,255,239,49,255,255,8,32,
-  252,255,237,255,191,1,16,248,255,255,255,127,0,176,255,239,118,255,255,8,243,255,191,0,253,255,31,245,255,239,152,255,
-  255,47,243,255,255,255,255,255,31,160,255,255,255,255,255,7,0,198,255,255,255,92,0,0,0,49,68,18,0,0,0,113,
-  236,239,124,1,0,64,254,255,255,255,78,0,225,255,239,253,255,255,3,245,255,79,128,255,255,12,246,255,127,16,255,255,
-  63,243,255,239,136,254,255,95,144,255,255,255,255,255,95,0,165,253,239,255,255,79,0,0,1,0,253,255,31,48,200,175,
-  148,255,255,10,176,255,255,255,255,239,2,32,254,255,255,255,78,0,0,145,254,255,158,2,0,0,0,48,52,0,0,0,
-  0,51,0,160,255,8,244,255,14,244,255,12,160,223,3,0,0,0,0,51,0,160,255,8,244,255,14,244,255,12,160,223,
-  3,179,254,206,40,0,245,255,255,239,2,245,255,255,255,9,116,51,252,255,11,0,16,252,255,9,0,210,255,239,3,0,
-  250,255,61,0,0,252,223,1,0,0,166,74,0,0,0,163,75,0,0,32,254,239,1,0,80,255,255,1,0,16,253,143,
-  0,0,0,49,2,0,0,0,0,0,211,110,0,0,0,0,0,0,0,252,255,2,0,0,0,0,0,80,255,255,10,0,
-  0,0,0,0,208,255,255,63,0,0,0,0,0,246,255,255,191,0,0,0,0,0,253,255,255,255,4,0,0,0,96,255,
-  175,253,255,12,0,0,0,208,255,79,248,255,111,0,0,0,246,255,13,242,255,223,1,0,16,254,255,190,251,255,255,7,
-  0,112,255,255,255,255,255,255,30,0,225,255,255,188,219,255,255,159,0,247,255,239,0,32,255,255,255,2,209,221,221,221,
-  205,89,0,0,241,255,255,255,255,255,11,0,241,255,255,255,255,255,79,0,241,255,255,90,251,255,79,0,241,255,223,0,
-  250,255,29,0,241,255,223,163,255,223,2,0,241,255,255,255,255,255,62,0,241,255,255,142,248,255,207,0,241,255,223,1,
-  243,255,255,1,241,255,223,80,253,255,255,2,241,255,239,254,255,255,239,0,241,255,255,255,255,255,95,0,241,255,255,255,
-  255,157,3,0,0,0,164,253,239,9,0,177,255,255,255,12,16,253,255,255,255,12,144,255,255,255,255,12,241,255,255,255,
-  72,4,245,255,255,95,0,0,247,255,255,13,0,0,247,255,255,12,0,2,245,255,255,47,113,30,225,255,255,255,255,31,
-  112,255,255,255,255,31,0,248,255,255,255,31,0,48,250,255,255,12,0,0,16,67,19,0,192,253,255,255,190,4,0,241,
-  255,255,255,255,127,0,241,255,255,255,255,255,5,241,255,255,221,255,255,13,241,255,223,1,252,255,79,241,255,207,0,247,
-  255,127,241,255,207,0,248,255,143,241,255,207,48,254,255,143,241,255,207,229,255,255,95,241,255,255,255,255,255,30,241,255,
-  255,255,255,255,6,241,255,255,255,255,127,0,241,255,255,255,157,2,0,176,187,187,187,187,0,241,255,255,255,239,0,241,
-  255,255,255,239,0,241,255,255,255,239,0,241,255,207,0,0,0,241,255,255,255,239,0,241,255,255,255,239,0,241,255,255,
-  255,239,0,241,255,223,34,34,0,241,255,239,187,187,3,241,255,255,255,255,3,241,255,255,255,255,3,241,255,255,255,255,
-  3,176,187,187,187,187,241,255,255,255,239,241,255,255,255,239,241,255,239,187,187,241,255,207,0,0,241,255,255,255,239,241,
-  255,255,255,239,241,255,255,255,239,241,255,239,136,120,241,255,207,0,0,241,255,207,0,0,241,255,207,0,0,241,255,207,
-  0,0,0,0,130,235,255,173,0,0,145,255,255,255,255,0,16,252,255,255,255,255,0,160,255,255,255,255,255,0,242,255,
-  255,175,3,49,0,246,255,255,11,0,0,0,247,255,255,4,0,0,0,247,255,255,4,246,255,10,243,255,255,27,246,255,
-  10,192,255,255,255,255,255,10,48,255,255,255,255,255,10,0,228,255,255,255,255,10,0,16,216,255,255,239,8,0,0,0,
-  49,52,1,0,176,187,155,0,183,187,59,241,255,207,0,249,255,79,241,255,207,0,249,255,79,241,255,207,0,249,255,79,
-  241,255,223,50,251,255,79,241,255,255,255,255,255,79,241,255,255,255,255,255,79,241,255,255,255,255,255,79,241,255,239,103,
-  251,255,79,241,255,207,0,249,255,79,241,255,207,0,249,255,79,241,255,207,0,249,255,79,241,255,207,0,249,255,79,176,
-  187,155,241,255,207,241,255,207,241,255,207,241,255,207,241,255,207,241,255,207,241,255,207,241,255,207,241,255,207,241,255,207,
-  241,255,207,241,255,207,0,0,0,181,187,107,0,0,0,246,255,159,0,0,0,246,255,159,0,0,0,246,255,159,0,0,
-  0,246,255,159,0,0,0,246,255,159,16,83,3,246,255,143,252,255,7,246,255,143,253,255,9,249,255,111,252,255,207,255,
-  255,47,248,255,255,255,255,11,209,255,255,255,239,2,16,233,255,255,42,0,0,0,67,19,0,0,176,187,171,0,180,187,
-  139,0,241,255,239,32,254,255,46,0,241,255,239,192,255,255,5,0,241,255,239,248,255,159,0,0,241,255,255,255,255,12,
-  0,0,241,255,255,255,255,2,0,0,241,255,255,255,255,7,0,0,241,255,255,255,255,47,0,0,241,255,255,253,255,191,
-  0,0,241,255,255,242,255,255,6,0,241,255,255,128,255,255,30,0,241,255,255,16,254,255,175,0,241,255,255,0,246,255,
-  255,4,144,153,137,0,0,241,255,207,0,0,241,255,207,0,0,241,255,207,0,0,241,255,207,0,0,241,255,207,0,0,
-  241,255,207,0,0,241,255,207,0,0,241,255,207,0,0,241,255,239,187,187,241,255,255,255,255,241,255,255,255,255,241,255,
-  255,255,255,176,43,0,0,0,0,0,181,8,241,223,2,0,0,0,80,255,11,241,255,62,0,0,0,246,255,11,241,255,
-  239,3,0,112,255,255,11,241,255,255,62,0,248,255,255,11,241,255,255,239,148,255,255,255,11,241,255,255,255,255,255,255,
-  255,11,241,255,255,255,255,255,255,255,11,241,255,255,255,255,255,255,255,11,241,255,143,255,255,141,255,255,11,241,255,79,
-  246,239,99,255,255,11,241,255,79,112,79,96,255,255,11,241,255,79,0,3,96,255,255,11,176,8,0,0,176,187,91,241,
-  207,2,0,224,255,127,241,255,94,0,224,255,127,241,255,255,25,224,255,127,241,255,255,207,227,255,127,241,255,255,255,254,
-  255,127,241,255,255,255,255,255,127,241,255,255,255,255,255,127,241,255,239,255,255,255,127,241,255,95,230,255,255,127,241,255,
-  95,32,252,255,127,241,255,95,0,112,255,127,241,255,95,0,0,195,127,0,0,182,254,190,23,0,0,0,194,255,255,255,
-  239,4,0,32,253,255,255,255,255,63,0,160,255,255,255,252,255,223,0,242,255,255,62,112,255,255,4,245,255,255,7,96,
-  255,255,7,246,255,239,0,160,255,255,8,245,255,175,0,242,255,255,8,242,255,207,16,252,255,255,5,176,255,255,237,255,
-  255,239,1,48,254,255,255,255,255,95,0,0,228,255,255,255,255,6,0,0,16,233,255,239,58,0,0,0,0,0,67,3,
-  0,0,0,160,220,221,221,173,23,0,241,255,255,255,255,239,3,241,255,255,255,255,255,12,241,255,255,109,248,255,47,241,
-  255,255,1,242,255,79,241,255,255,0,248,255,95,241,255,255,146,255,255,63,241,255,255,254,255,255,12,241,255,255,255,255,
-  255,4,241,255,255,255,255,78,0,241,255,255,187,106,1,0,241,255,255,1,0,0,0,241,255,255,1,0,0,0,0,0,
-  182,254,190,23,0,0,0,210,255,255,255,223,4,0,32,254,255,255,255,255,62,0,160,255,255,255,252,255,207,0,242,255,
-  255,62,112,255,255,3,245,255,255,6,96,255,255,7,246,255,239,144,164,255,255,8,246,255,175,242,255,255,255,8,242,255,
-  207,112,255,255,255,5,176,255,255,236,255,255,255,38,48,254,255,255,255,255,255,143,0,228,255,255,255,255,255,143,0,32,
-  233,255,255,90,250,159,0,0,0,67,3,0,16,35,192,221,221,221,205,24,0,0,241,255,255,255,255,239,4,0,241,255,
-  255,255,255,255,30,0,241,255,255,108,248,255,95,0,241,255,255,1,242,255,127,0,241,255,255,0,248,255,111,0,241,255,
-  255,146,255,255,30,0,241,255,255,255,255,255,5,0,241,255,255,255,255,95,0,0,241,255,255,253,255,191,0,0,241,255,
-  255,245,255,255,8,0,241,255,255,161,255,255,79,0,241,255,255,17,254,255,239,2,0,0,49,52,1,0,0,197,255,255,
-  191,0,112,255,255,255,207,0,241,255,255,255,207,0,243,255,255,137,187,0,243,255,255,24,0,0,208,255,255,239,7,0,
-  48,254,255,255,175,0,0,162,255,255,255,4,33,0,245,255,255,8,243,156,248,255,255,8,243,255,255,255,255,5,243,255,
-  255,255,207,0,177,255,255,239,25,0,0,32,67,3,0,0,132,136,136,136,136,136,2,248,255,255,255,255,255,4,248,255,
-  255,255,255,255,4,248,255,255,255,255,255,4,132,136,255,255,141,136,2,0,16,255,255,12,0,0,0,16,255,255,12,0,
-  0,0,16,255,255,12,0,0,0,16,255,255,12,0,0,0,16,255,255,12,0,0,0,16,255,255,12,0,0,0,16,255,
-  255,12,0,0,0,16,255,255,12,0,0,178,187,155,0,182,187,9,243,255,191,0,248,255,12,243,255,191,0,248,255,12,
-  243,255,191,0,248,255,12,243,255,191,0,248,255,12,243,255,191,0,248,255,12,243,255,191,0,248,255,12,243,255,191,0,
-  248,255,12,242,255,239,1,251,255,11,240,255,255,205,255,255,9,160,255,255,255,255,255,5,32,253,255,255,255,175,0,0,
-  145,254,255,239,7,0,0,0,32,67,2,0,0,183,187,187,1,96,187,187,1,243,255,255,7,224,255,159,0,160,255,255,
-  14,246,255,47,0,32,255,255,111,252,255,9,0,0,249,255,239,255,255,2,0,0,242,255,255,255,175,0,0,0,144,255,
-  255,255,47,0,0,0,32,255,255,255,10,0,0,0,0,249,255,255,3,0,0,0,0,226,255,175,0,0,0,0,0,128,
-  255,63,0,0,0,0,0,16,254,11,0,0,0,0,0,0,248,4,0,0,0,0,0,0,48,0,0,0,0,180,187,187,
-  2,0,100,0,48,187,187,2,241,255,255,7,16,238,2,128,255,223,0,176,255,255,12,176,255,12,208,255,143,0,80,255,
-  255,47,247,255,127,243,255,63,0,16,254,255,159,255,255,255,250,255,13,0,0,250,255,255,255,255,255,255,255,9,0,0,
-  245,255,255,255,255,255,255,255,4,0,0,224,255,255,255,254,255,255,239,0,0,0,144,255,255,239,178,255,255,159,0,0,
-  0,64,255,255,95,32,254,255,79,0,0,0,0,253,255,9,0,246,255,14,0,0,0,0,248,223,1,0,160,255,9,0,
-  0,0,0,243,63,0,0,16,254,4,0,0,0,0,80,3,0,0,0,99,0,0,0,177,187,187,6,177,187,75,0,128,
-  255,255,30,247,255,13,0,16,253,255,175,254,255,5,0,0,245,255,255,255,207,0,0,0,176,255,255,255,79,0,0,0,
-  32,255,255,255,11,0,0,0,0,251,255,255,7,0,0,0,32,255,255,255,30,0,0,0,160,255,255,255,175,0,0,0,
-  243,255,255,255,255,4,0,0,250,255,189,255,255,12,0,48,255,255,54,255,255,127,0,176,255,223,0,250,255,239,2,181,
-  187,187,1,184,187,10,225,255,255,55,255,255,7,144,255,255,174,255,239,1,32,255,255,255,255,127,0,0,249,255,255,255,
-  30,0,0,242,255,255,255,7,0,0,144,255,255,239,1,0,0,32,255,255,127,0,0,0,0,253,255,63,0,0,0,0,
-  253,255,63,0,0,0,0,253,255,63,0,0,0,0,253,255,63,0,0,0,0,253,255,63,0,0,128,187,187,187,187,187,
-  91,160,255,255,255,255,255,95,160,255,255,255,255,255,11,160,255,255,255,255,255,2,0,0,160,255,255,143,0,0,0,244,
-  255,255,29,0,0,0,252,255,255,5,0,0,96,255,255,191,0,0,0,225,255,255,47,0,0,0,248,255,255,190,187,91,
-  32,255,255,255,255,255,127,176,255,255,255,255,255,127,242,255,255,255,255,255,127,0,185,187,187,10,250,255,255,12,249,255,
-  255,11,247,255,255,9,246,255,255,7,244,255,255,6,242,255,255,4,241,255,255,3,224,255,255,1,208,255,239,0,176,255,
-  223,0,80,136,104,0,0,0,0,0,0,116,39,0,160,255,255,5,247,255,255,12,252,255,255,14,250,255,255,10,227,255,
-  223,2,32,118,5,0,0,0,0,50,35,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,232,255,255,109,
-  0,0,0,0,187,187,187,10,0,0,0,0,0,0,0,210,255,255,255,255,27,0,0,80,255,255,255,6,0,0,0,0,
-  0,0,16,253,255,255,255,255,191,0,0,160,255,255,207,0,0,0,0,0,0,0,128,255,255,207,253,255,255,5,0,225,
-  255,255,79,0,0,0,0,0,0,0,224,255,255,7,160,255,255,11,0,245,255,255,11,0,0,0,0,0,0,0,243,255,
-  239,0,32,255,255,15,0,250,255,255,3,0,98,119,37,0,0,0,244,255,191,0,0,254,255,47,16,255,255,175,0,195,
-  255,255,255,42,0,0,244,255,207,0,0,255,255,47,80,255,255,47,80,255,255,255,255,239,3,0,242,255,255,2,80,255,
-  255,14,176,255,255,8,226,255,255,255,255,255,29,0,208,255,255,93,229,255,255,10,241,255,239,1,250,255,239,153,255,255,
-  143,0,96,255,255,255,255,255,255,3,246,255,127,16,255,255,79,0,247,255,223,0,0,251,255,255,255,255,143,0,251,255,
-  13,48,255,255,13,0,241,255,255,1,0,161,255,255,255,255,8,16,255,255,5,64,255,255,12,0,224,255,255,2,0,0,
-  164,253,223,57,0,96,255,207,0,48,255,255,13,0,241,255,255,1,0,0,0,0,0,0,0,192,255,79,0,16,255,255,
-  95,0,247,255,223,0,0,0,0,0,0,0,0,242,255,11,0,0,250,255,239,153,255,255,143,0,0,0,0,0,0,0,
-  0,247,255,3,0,0,226,255,255,255,255,255,29,0,0,0,0,0,0,0,0,252,159,0,0,0,80,255,255,255,255,239,
-  3,0,0,0,0,0,0,0,32,255,46,0,0,0,0,195,255,255,255,42,0,0,0,0,0,0,0,0,0,17,1,0,
-  0,0,0,0,98,119,37,0,0,0,241,255,255,13,224,255,255,11,192,255,255,10,160,255,255,8,128,255,255,6,96,255,
-  255,5,64,255,255,3,32,255,255,2,0,255,255,0,0,0,0,81,168,6,0,0,112,254,255,8,0,32,252,255,255,8,
-  0,209,255,255,255,8,0,251,255,255,255,4,80,255,255,255,95,0,176,255,255,255,8,0,241,255,255,239,1,0,244,255,
-  255,143,0,0,247,255,255,79,0,0,248,255,255,31,0,0,247,255,255,31,0,0,246,255,255,47,0,0,244,255,255,95,
-  0,0,224,255,255,191,0,0,128,255,255,255,7,0,16,253,255,255,191,4,0,227,255,255,255,8,0,48,253,255,255,8,
-  0,0,129,254,255,8,0,0,0,81,168,6,166,88,1,0,0,0,248,255,126,0,0,0,248,255,255,44,0,0,248,255,
-  255,223,1,0,244,255,255,255,11,0,64,255,255,255,95,0,0,248,255,255,191,0,0,225,255,255,255,1,0,128,255,255,
-  255,4,0,64,255,255,255,7,0,16,255,255,255,8,0,16,255,255,255,7,0,32,255,255,255,6,0,80,255,255,255,4,
-  0,176,255,255,239,0,0,247,255,255,143,0,180,255,255,255,29,0,248,255,255,239,3,0,248,255,255,61,0,0,248,255,
-  142,1,0,0,166,88,1,0,0,0,0,0,67,68,2,0,0,0,0,252,255,8,0,0,0,0,252,255,8,0,0,0,
-  0,252,255,8,0,0,133,136,253,255,140,136,3,249,255,255,255,255,255,5,249,255,255,255,255,255,5,249,255,255,255,255,
-  255,5,183,187,254,255,189,187,4,0,0,252,255,8,0,0,0,0,252,255,8,0,0,0,0,252,255,8,0,0,0,0,
-  185,187,6,0,0,248,255,255,143,248,255,255,143,248,255,255,143,248,255,255,143,248,255,255,143,0,248,255,143,0,253,255,
-  95,196,255,255,30,248,255,255,5,248,255,76,0,116,37,0,0,182,187,187,187,75,248,255,255,255,111,248,255,255,255,111,
-  248,255,255,255,111,248,255,255,255,111,66,68,68,68,20,0,64,103,2,16,251,255,62,144,255,255,207,240,255,255,255,241,
-  255,255,239,208,255,255,159,80,255,255,27,0,114,71,0,0,16,187,187,187,155,0,64,255,255,255,143,0,96,255,255,255,
-  79,0,144,255,255,255,31,0,192,255,255,255,11,0,224,255,255,255,7,0,242,255,255,255,3,0,245,255,255,239,0,0,
-  247,255,255,175,0,0,250,255,255,111,0,0,253,255,255,47,0,16,255,255,255,13,0,48,255,255,255,9,0,96,255,255,
-  255,5,0,144,255,255,255,1,0,176,255,255,207,0,0,224,255,255,143,0,0,242,255,255,79,0,0,244,255,255,14,0,
-  0,0,0,0,0,49,52,1,0,0,0,0,0,0,16,216,255,255,223,40,0,0,0,0,0,230,255,255,255,255,239,6,
-  0,0,0,112,255,255,255,255,255,255,143,0,0,0,245,255,255,255,255,255,255,255,5,0,16,253,255,255,255,255,255,255,
-  255,30,0,96,255,255,255,207,200,255,255,255,111,0,176,255,255,255,30,16,254,255,255,191,0,224,255,255,255,9,0,249,
-  255,255,239,0,241,255,255,255,7,0,247,255,255,255,1,241,255,255,255,7,0,246,255,255,255,2,241,255,255,255,7,0,
-  246,255,255,255,1,224,255,255,255,8,0,248,255,255,239,0,176,255,255,255,12,0,252,255,255,191,0,96,255,255,255,159,
-  148,255,255,255,111,0,16,254,255,255,255,255,255,255,255,30,0,0,245,255,255,255,255,255,255,255,6,0,0,128,255,255,
-  255,255,255,255,159,0,0,0,0,247,255,255,255,255,255,8,0,0,0,0,48,250,255,255,255,59,0,0,0,0,0,0,
-  16,117,119,21,0,0,0,0,0,0,0,0,129,187,1,0,0,0,146,254,255,2,0,0,163,255,255,255,2,0,163,255,
-  255,255,255,2,180,255,255,255,255,255,2,251,255,255,255,255,255,2,251,255,255,255,255,255,2,251,255,255,255,255,255,2,
-  251,255,255,255,255,255,2,251,90,250,255,255,255,2,20,0,249,255,255,255,2,0,0,249,255,255,255,2,0,0,249,255,
-  255,255,2,0,0,249,255,255,255,2,0,0,249,255,255,255,2,0,0,249,255,255,255,2,0,0,249,255,255,255,2,0,
-  0,249,255,255,255,2,0,0,249,255,255,255,2,0,0,0,0,32,51,2,0,0,0,0,0,32,200,255,255,239,91,0,
-  0,0,32,250,255,255,255,255,255,27,0,0,228,255,255,255,255,255,255,207,0,64,255,255,255,255,255,255,255,255,7,225,
-  255,255,255,255,255,255,255,255,12,160,255,255,223,137,254,255,255,255,14,16,254,223,5,0,245,255,255,255,13,0,244,27,
-  0,0,244,255,255,255,10,0,96,0,0,0,250,255,255,255,3,0,0,0,0,128,255,255,255,143,0,0,0,0,16,250,
-  255,255,255,8,0,0,0,0,194,255,255,255,111,0,0,0,0,48,254,255,255,223,3,0,0,0,0,245,255,255,255,207,
-  187,187,27,0,128,255,255,255,255,255,255,255,31,0,249,255,255,255,255,255,255,255,31,0,252,255,255,255,255,255,255,255,
-  31,0,252,255,255,255,255,255,255,255,31,0,252,255,255,255,255,255,255,255,31,144,187,187,187,187,187,187,187,187,59,208,
-  255,255,255,255,255,255,255,255,63,208,255,255,255,255,255,255,255,255,46,208,255,255,255,255,255,255,255,191,1,208,255,255,
-  255,255,255,255,255,8,0,96,136,136,152,255,255,255,94,0,0,0,0,0,228,255,255,207,2,0,0,0,0,128,255,255,
-  255,223,107,1,0,0,0,128,255,255,255,255,255,126,0,0,0,16,254,255,255,255,255,255,8,0,0,0,50,116,252,255,
-  255,255,47,0,0,0,0,0,160,255,255,255,127,0,136,1,0,0,96,255,255,255,159,48,255,174,37,1,211,255,255,255,
-  159,192,255,255,255,255,255,255,255,255,127,246,255,255,255,255,255,255,255,255,47,253,255,255,255,255,255,255,255,255,8,145,
-  255,255,255,255,255,255,255,143,0,0,114,252,255,255,255,255,158,3,0,0,0,16,83,119,103,37,0,0,0,0,0,0,
-  80,221,221,221,221,221,45,0,0,0,0,225,255,255,255,255,255,63,0,0,0,0,250,255,255,255,255,255,63,0,0,0,
-  80,255,255,255,255,255,255,63,0,0,0,226,255,255,255,255,255,255,63,0,0,0,251,255,255,239,255,255,255,63,0,0,
-  96,255,255,255,186,255,255,255,63,0,0,226,255,255,239,178,255,255,255,63,0,0,251,255,255,111,176,255,255,255,63,0,
-  96,255,255,255,12,176,255,255,255,63,0,226,255,255,255,3,176,255,255,255,111,3,247,255,255,255,255,255,255,255,255,255,
-  13,247,255,255,255,255,255,255,255,255,255,13,247,255,255,255,255,255,255,255,255,255,13,247,255,255,255,255,255,255,255,255,
-  255,13,247,255,255,255,255,255,255,255,255,255,13,131,136,136,136,136,216,255,255,255,159,6,0,0,0,0,0,176,255,255,
-  255,63,0,0,0,0,0,0,176,255,255,255,63,0,0,160,187,187,187,187,187,187,187,7,0,241,255,255,255,255,255,255,
-  255,7,0,244,255,255,255,255,255,255,255,3,0,248,255,255,255,255,255,255,255,1,0,251,255,255,239,238,238,238,190,0,
-  0,254,255,255,6,0,0,0,0,0,32,255,255,255,70,68,2,0,0,0,80,255,255,255,255,255,239,90,0,0,128,255,
-  255,255,255,255,255,255,44,0,144,255,255,255,255,255,255,255,223,1,0,147,239,172,202,255,255,255,255,8,0,0,1,0,
-  0,245,255,255,255,13,0,20,0,0,0,241,255,255,255,15,16,254,106,19,16,249,255,255,255,15,160,255,255,255,255,255,
-  255,255,255,12,244,255,255,255,255,255,255,255,255,7,252,255,255,255,255,255,255,255,207,0,232,255,255,255,255,255,255,255,
-  27,0,16,183,255,255,255,255,255,91,0,0,0,0,48,101,119,103,19,0,0,0,0,0,0,0,32,67,3,0,0,0,
-  0,0,0,164,254,255,255,107,0,0,0,0,178,255,255,255,255,255,61,0,0,48,254,255,255,255,255,255,255,4,0,209,
-  255,255,255,255,255,255,255,13,0,250,255,255,255,205,255,255,255,44,32,255,255,255,95,0,227,174,22,0,128,255,255,255,
-  11,0,32,0,0,0,192,255,255,255,74,118,103,20,0,0,240,255,255,255,255,255,255,255,75,0,241,255,255,255,255,255,
-  255,255,255,9,242,255,255,255,255,255,255,255,255,111,241,255,255,255,143,136,253,255,255,207,224,255,255,255,31,0,243,255,
-  255,255,144,255,255,255,111,0,192,255,255,255,48,255,255,255,239,2,160,255,255,223,0,248,255,255,255,158,249,255,255,159,
-  0,160,255,255,255,255,255,255,255,46,0,0,247,255,255,255,255,255,223,3,0,0,32,233,255,255,255,223,23,0,0,0,
-  0,0,99,119,87,2,0,0,186,187,187,187,187,187,187,187,187,59,253,255,255,255,255,255,255,255,255,63,253,255,255,255,
-  255,255,255,255,255,12,253,255,255,255,255,255,255,255,255,5,253,255,255,255,255,255,255,255,223,0,99,135,136,136,136,253,
-  255,255,95,0,0,0,0,0,32,254,255,255,13,0,0,0,0,0,176,255,255,255,6,0,0,0,0,0,247,255,255,223,
-  0,0,0,0,0,48,255,255,255,111,0,0,0,0,0,209,255,255,255,13,0,0,0,0,0,250,255,255,255,6,0,0,
-  0,0,80,255,255,255,239,1,0,0,0,0,226,255,255,255,127,0,0,0,0,0,252,255,255,255,30,0,0,0,0,128,
-  255,255,255,255,7,0,0,0,0,244,255,255,255,239,1,0,0,0,16,253,255,255,255,127,0,0,0,0,160,255,255,255,
-  255,30,0,0,0,0,0,0,0,33,67,35,0,0,0,0,0,48,217,255,255,255,207,39,0,0,16,250,255,255,255,255,
-  255,255,7,0,160,255,255,255,255,255,255,255,111,0,242,255,255,255,255,255,255,255,223,0,244,255,255,255,121,251,255,255,
-  255,0,244,255,255,223,0,241,255,255,255,0,241,255,255,239,1,244,255,255,191,0,96,255,255,255,141,254,255,255,62,0,
-  0,212,255,255,255,255,255,191,2,0,16,249,255,255,255,255,255,239,6,0,193,255,255,255,139,253,255,255,143,0,248,255,
-  255,191,0,225,255,255,255,3,253,255,255,143,0,192,255,255,255,9,255,255,255,207,2,228,255,255,255,10,254,255,255,255,
-  255,255,255,255,255,10,251,255,255,255,255,255,255,255,255,7,244,255,255,255,255,255,255,255,239,1,96,255,255,255,255,255,
-  255,255,62,0,0,146,254,255,255,255,255,141,1,0,0,0,32,101,119,103,36,0,0,0,0,0,0,16,50,36,0,0,
-  0,0,0,0,147,253,255,255,191,6,0,0,0,161,255,255,255,255,255,223,4,0,16,252,255,255,255,255,255,255,127,0,
-  128,255,255,255,255,255,255,255,255,5,224,255,255,239,18,246,255,255,255,30,241,255,255,239,0,96,255,255,255,127,242,255,
-  255,255,4,0,254,255,255,207,224,255,255,255,76,68,253,255,255,239,144,255,255,255,255,255,255,255,255,255,16,253,255,255,
-  255,255,255,255,255,255,0,145,255,255,255,255,255,255,255,239,0,0,81,168,187,154,253,255,255,207,0,0,0,0,0,0,
-  251,255,255,143,0,0,98,186,1,48,255,255,255,63,32,216,255,255,141,233,255,255,255,10,32,255,255,255,255,255,255,255,
-  239,2,0,249,255,255,255,255,255,255,78,0,0,128,255,255,255,255,255,223,3,0,0,0,163,255,255,255,223,23,0,0,
-  0,0,0,65,118,87,2,0,0,0,0,66,2,0,160,255,127,0,248,255,255,3,254,255,255,6,255,255,255,5,251,255,
-  223,0,178,239,42,0,0,0,0,0,0,0,0,0,0,66,2,0,160,255,143,0,248,255,255,3,254,255,255,6,255,255,
-  255,5,251,255,223,0,178,239,42,0,0,32,67,35,0,0,0,176,254,255,255,174,4,0,241,255,255,255,255,175,0,241,
-  255,255,255,255,255,8,241,255,255,255,255,255,14,241,157,152,255,255,255,47,48,0,0,248,255,255,31,0,0,0,251,255,
-  255,14,0,0,211,255,255,255,8,0,32,254,255,255,191,0,0,128,255,255,255,7,0,0,160,255,255,78,0,0,0,144,
-  255,255,6,0,0,0,64,153,153,0,0,0,0,0,114,71,0,0,0,0,112,255,255,8,0,0,0,243,255,255,31,0,
-  0,0,247,255,255,63,0,0,0,246,255,255,14,0,0,0,209,255,239,4,0,0,0,16,118,22,0,0,0,0,0,0,
-  0,0,16,1,0,0,0,0,0,0,0,0,0,0,0,249,207,2,0,0,0,0,0,0,0,0,0,112,255,255,12,0,
-  0,0,0,0,0,0,0,0,225,255,255,95,0,0,0,0,0,0,0,0,0,247,255,255,223,0,0,0,0,0,0,0,
-  0,16,254,255,255,255,7,0,0,0,0,0,0,0,128,255,255,255,255,30,0,0,0,0,0,0,0,225,255,255,255,255,
-  159,0,0,0,0,0,0,0,248,255,255,255,255,255,2,0,0,0,0,0,32,255,255,239,255,255,255,10,0,0,0,0,
-  0,144,255,255,127,252,255,255,79,0,0,0,0,0,242,255,255,31,246,255,255,207,0,0,0,0,0,250,255,255,10,241,
-  255,255,255,5,0,0,0,48,255,255,255,4,176,255,255,255,13,0,0,0,160,255,255,255,136,184,255,255,255,127,0,0,
-  0,243,255,255,255,255,255,255,255,255,239,1,0,0,251,255,255,255,255,255,255,255,255,255,9,0,64,255,255,255,255,255,
-  255,255,255,255,255,47,0,192,255,255,255,111,68,68,249,255,255,255,175,0,244,255,255,255,13,0,0,242,255,255,255,255,
-  4,33,34,34,34,1,0,0,32,34,34,34,34,1,50,51,51,51,51,35,1,0,0,0,0,248,255,255,255,255,255,255,
-  156,3,0,0,248,255,255,255,255,255,255,255,175,0,0,248,255,255,255,255,255,255,255,255,8,0,248,255,255,255,255,255,
-  255,255,255,14,0,248,255,255,255,207,216,255,255,255,15,0,248,255,255,239,4,64,255,255,255,12,0,248,255,255,191,0,
-  128,255,255,255,4,0,248,255,255,191,16,248,255,255,60,0,0,248,255,255,207,232,255,255,255,142,0,0,248,255,255,255,
-  255,255,255,255,255,28,0,248,255,255,255,255,188,255,255,255,143,0,248,255,255,255,59,0,250,255,255,239,0,248,255,255,
-  207,0,0,252,255,255,255,2,248,255,255,191,0,145,255,255,255,255,3,248,255,255,191,147,254,255,255,255,255,2,248,255,
-  255,255,255,255,255,255,255,223,0,248,255,255,255,255,255,255,255,255,95,0,248,255,255,255,255,255,255,255,239,5,0,248,
-  255,255,255,255,255,255,190,23,0,0,33,34,34,34,34,34,18,0,0,0,0,0,0,0,0,0,50,68,2,0,0,0,
-  0,113,252,255,255,239,2,0,0,128,254,255,255,255,255,3,0,16,252,255,255,255,255,255,3,0,193,255,255,255,255,255,
-  255,3,0,249,255,255,255,255,255,255,3,48,255,255,255,255,255,255,255,3,160,255,255,255,255,255,40,32,1,224,255,255,
-  255,255,95,0,0,0,242,255,255,255,255,9,0,0,0,244,255,255,255,255,4,0,0,0,244,255,255,255,255,2,0,0,
-  0,243,255,255,255,255,4,0,112,8,241,255,255,255,255,28,81,252,8,176,255,255,255,255,255,255,255,8,64,255,255,255,
-  255,255,255,255,8,0,249,255,255,255,255,255,255,8,0,160,255,255,255,255,255,255,8,0,0,248,255,255,255,255,255,8,
-  0,0,32,233,255,255,255,223,5,0,0,0,0,99,119,87,2,0,0,33,67,68,68,52,1,0,0,0,231,255,255,255,
-  255,255,191,4,0,0,248,255,255,255,255,255,255,175,1,0,248,255,255,255,255,255,255,255,11,0,248,255,255,255,255,255,
-  255,255,143,0,248,255,255,255,255,255,255,255,255,2,248,255,255,255,73,248,255,255,255,8,248,255,255,191,0,144,255,255,
-  255,13,248,255,255,191,0,48,255,255,255,47,248,255,255,191,0,32,255,255,255,79,248,255,255,191,0,96,255,255,255,95,
-  248,255,255,191,0,209,255,255,255,79,248,255,255,191,16,252,255,255,255,63,248,255,255,191,211,255,255,255,255,14,248,255,
-  255,239,255,255,255,255,255,10,248,255,255,255,255,255,255,255,255,3,248,255,255,255,255,255,255,255,143,0,248,255,255,255,
-  255,255,255,255,9,0,248,255,255,255,255,255,255,110,0,0,248,255,255,255,255,239,107,1,0,0,33,34,34,34,34,1,
-  0,0,0,0,248,255,255,255,255,255,239,0,248,255,255,255,255,255,239,0,248,255,255,255,255,255,239,0,248,255,255,255,
-  255,255,239,0,248,255,255,255,255,255,239,0,248,255,255,223,136,136,120,0,248,255,255,191,0,0,0,0,248,255,255,255,
-  238,238,222,0,248,255,255,255,255,255,239,0,248,255,255,255,255,255,239,0,248,255,255,255,255,255,239,0,248,255,255,239,
-  187,187,171,0,248,255,255,191,0,0,0,0,248,255,255,223,136,136,136,3,248,255,255,255,255,255,255,5,248,255,255,255,
-  255,255,255,5,248,255,255,255,255,255,255,5,248,255,255,255,255,255,255,5,248,255,255,255,255,255,255,5,182,187,187,187,
-  187,187,171,248,255,255,255,255,255,239,248,255,255,255,255,255,239,248,255,255,255,255,255,239,248,255,255,255,255,255,239,248,
-  255,255,223,136,136,120,248,255,255,191,0,0,0,248,255,255,239,187,187,171,248,255,255,255,255,255,239,248,255,255,255,255,
-  255,239,248,255,255,255,255,255,239,248,255,255,255,255,255,239,248,255,255,223,136,136,120,248,255,255,191,0,0,0,248,255,
-  255,191,0,0,0,248,255,255,191,0,0,0,248,255,255,191,0,0,0,248,255,255,191,0,0,0,248,255,255,191,0,0,
-  0,33,34,34,18,0,0,0,0,0,0,0,0,33,67,35,0,0,0,0,0,64,217,255,255,255,190,0,0,0,80,253,
-  255,255,255,255,255,1,0,16,251,255,255,255,255,255,255,1,0,193,255,255,255,255,255,255,255,1,0,251,255,255,255,255,
-  255,255,255,1,80,255,255,255,255,255,157,136,234,1,176,255,255,255,255,110,0,0,0,0,241,255,255,255,255,4,0,0,
-  0,0,243,255,255,255,175,0,0,0,0,0,244,255,255,255,95,0,0,0,0,0,243,255,255,255,95,0,241,255,255,14,
-  241,255,255,255,159,0,241,255,255,14,192,255,255,255,255,22,242,255,255,14,112,255,255,255,255,255,255,255,255,14,16,253,
-  255,255,255,255,255,255,255,14,0,243,255,255,255,255,255,255,255,14,0,64,254,255,255,255,255,255,255,14,0,0,194,255,
-  255,255,255,255,255,14,0,0,0,164,254,255,255,255,255,13,0,0,0,0,49,118,119,70,19,0,182,187,187,139,0,64,
-  187,187,187,10,248,255,255,191,0,96,255,255,255,14,248,255,255,191,0,96,255,255,255,14,248,255,255,191,0,96,255,255,
-  255,14,248,255,255,191,0,96,255,255,255,14,248,255,255,191,0,96,255,255,255,14,248,255,255,191,0,113,255,255,255,14,
-  248,255,255,239,254,255,255,255,255,14,248,255,255,255,255,255,255,255,255,14,248,255,255,255,255,255,255,255,255,14,248,255,
-  255,255,255,255,255,255,255,14,248,255,255,255,255,255,255,255,255,14,248,255,255,223,86,116,255,255,255,14,248,255,255,191,
-  0,96,255,255,255,14,248,255,255,191,0,96,255,255,255,14,248,255,255,191,0,96,255,255,255,14,248,255,255,191,0,96,
-  255,255,255,14,248,255,255,191,0,96,255,255,255,14,248,255,255,191,0,96,255,255,255,14,182,187,187,139,248,255,255,191,
-  248,255,255,191,248,255,255,191,248,255,255,191,248,255,255,191,248,255,255,191,248,255,255,191,248,255,255,191,248,255,255,191,
-  248,255,255,191,248,255,255,191,248,255,255,191,248,255,255,191,248,255,255,191,248,255,255,191,248,255,255,191,248,255,255,191,
-  248,255,255,191,0,0,0,0,16,187,187,187,75,0,0,0,0,32,255,255,255,95,0,0,0,0,32,255,255,255,95,0,
-  0,0,0,32,255,255,255,95,0,0,0,0,32,255,255,255,95,0,0,0,0,32,255,255,255,95,0,0,0,0,32,255,
-  255,255,95,0,0,0,0,32,255,255,255,95,0,0,0,0,32,255,255,255,95,0,0,16,2,32,255,255,255,95,133,202,
-  254,10,32,255,255,255,95,253,255,255,10,32,255,255,255,79,252,255,255,12,80,255,255,255,31,252,255,255,143,213,255,255,
-  255,13,249,255,255,255,255,255,255,255,8,244,255,255,255,255,255,255,255,2,176,255,255,255,255,255,255,127,0,16,252,255,
-  255,255,255,255,8,0,0,112,253,255,255,255,76,0,0,0,0,32,117,119,37,0,0,0,182,187,187,171,0,0,186,187,
-  187,139,0,248,255,255,223,0,144,255,255,255,46,0,248,255,255,223,0,245,255,255,255,4,0,248,255,255,223,32,254,255,
-  255,143,0,0,248,255,255,223,209,255,255,255,11,0,0,248,255,255,223,250,255,255,239,2,0,0,248,255,255,255,255,255,
-  255,79,0,0,0,248,255,255,255,255,255,255,8,0,0,0,248,255,255,255,255,255,255,2,0,0,0,248,255,255,255,255,
-  255,255,11,0,0,0,248,255,255,255,255,255,255,111,0,0,0,248,255,255,255,255,255,255,239,1,0,0,248,255,255,255,
-  252,255,255,255,10,0,0,248,255,255,255,209,255,255,255,95,0,0,248,255,255,255,80,255,255,255,239,1,0,248,255,255,
-  255,0,251,255,255,255,10,0,248,255,255,255,0,242,255,255,255,79,0,248,255,255,255,0,128,255,255,255,223,1,248,255,
-  255,255,0,16,253,255,255,255,9,215,221,221,173,0,0,0,248,255,255,191,0,0,0,248,255,255,191,0,0,0,248,255,
-  255,191,0,0,0,248,255,255,191,0,0,0,248,255,255,191,0,0,0,248,255,255,191,0,0,0,248,255,255,191,0,0,
-  0,248,255,255,191,0,0,0,248,255,255,191,0,0,0,248,255,255,191,0,0,0,248,255,255,191,0,0,0,248,255,255,
-  191,0,0,0,248,255,255,239,187,187,187,248,255,255,255,255,255,255,248,255,255,255,255,255,255,248,255,255,255,255,255,255,
-  248,255,255,255,255,255,255,248,255,255,255,255,255,255,182,107,0,0,0,0,0,0,0,0,161,187,1,248,255,7,0,0,
-  0,0,0,0,16,252,255,1,248,255,127,0,0,0,0,0,0,210,255,255,1,248,255,255,8,0,0,0,0,32,253,255,
-  255,1,248,255,255,159,0,0,0,0,227,255,255,255,1,248,255,255,255,9,0,0,64,254,255,255,255,1,248,255,255,255,
-  175,0,0,245,255,255,255,255,1,248,255,255,255,255,11,96,255,255,255,255,255,1,248,255,255,255,255,191,247,255,255,255,
-  255,255,1,248,255,255,255,255,255,255,255,255,255,255,255,1,248,255,255,255,255,255,255,255,255,255,255,255,1,248,255,255,
-  255,255,255,255,255,255,255,255,255,1,248,255,255,255,255,255,255,255,255,255,255,255,1,248,255,255,190,255,255,255,207,251,
-  255,255,255,1,248,255,255,30,252,255,255,29,250,255,255,255,1,248,255,255,14,193,255,239,2,250,255,255,255,1,248,255,
-  255,14,32,253,62,0,250,255,255,255,1,248,255,255,14,0,210,4,0,250,255,255,255,1,248,255,255,14,0,0,0,0,
-  250,255,255,255,1,182,25,0,0,0,0,181,187,187,43,248,223,3,0,0,0,247,255,255,47,248,255,127,0,0,0,247,
-  255,255,47,248,255,255,27,0,0,247,255,255,47,248,255,255,239,4,0,247,255,255,47,248,255,255,255,143,0,247,255,255,
-  47,248,255,255,255,255,44,247,255,255,47,248,255,255,255,255,239,251,255,255,47,248,255,255,255,255,255,255,255,255,47,248,
-  255,255,255,255,255,255,255,255,47,248,255,255,255,255,255,255,255,255,47,248,255,255,255,255,255,255,255,255,47,248,255,255,
-  223,255,255,255,255,255,47,248,255,255,31,249,255,255,255,255,47,248,255,255,15,64,253,255,255,255,47,248,255,255,15,0,
-  145,255,255,255,47,248,255,255,15,0,0,212,255,255,47,248,255,255,15,0,0,16,249,255,47,248,255,255,15,0,0,0,
-  64,253,47,0,0,0,0,32,67,19,0,0,0,0,0,0,0,147,254,255,255,141,2,0,0,0,0,161,255,255,255,255,
-  255,143,1,0,0,48,254,255,255,255,255,255,255,28,0,0,226,255,255,255,255,255,255,255,207,0,0,251,255,255,255,255,
-  255,255,255,255,8,64,255,255,255,255,223,168,255,255,255,30,160,255,255,255,255,27,0,250,255,255,111,224,255,255,255,223,
-  1,0,248,255,255,175,241,255,255,255,95,0,0,250,255,255,207,242,255,255,255,13,0,16,254,255,255,223,241,255,255,255,
-  9,0,128,255,255,255,207,224,255,255,255,7,0,243,255,255,255,191,176,255,255,255,12,48,253,255,255,255,127,80,255,255,
-  255,239,252,255,255,255,255,47,0,252,255,255,255,255,255,255,255,255,9,0,227,255,255,255,255,255,255,255,223,1,0,64,
-  254,255,255,255,255,255,255,45,0,0,0,195,255,255,255,255,255,191,1,0,0,0,0,198,255,255,255,191,4,0,0,0,
-  0,0,0,82,119,70,1,0,0,0,0,32,50,51,51,35,0,0,0,0,231,255,255,255,255,255,223,57,0,0,248,255,
-  255,255,255,255,255,255,26,0,248,255,255,255,255,255,255,255,175,0,248,255,255,255,255,255,255,255,255,4,248,255,255,255,
-  239,169,255,255,255,10,248,255,255,255,25,0,252,255,255,13,248,255,255,255,1,0,251,255,255,14,248,255,255,255,1,16,
-  254,255,255,15,248,255,255,255,1,193,255,255,255,14,248,255,255,255,81,253,255,255,255,11,248,255,255,255,253,255,255,255,
-  255,6,248,255,255,255,255,255,255,255,223,0,248,255,255,255,255,255,255,255,62,0,248,255,255,255,255,255,255,239,4,0,
-  248,255,255,255,255,255,255,25,0,0,248,255,255,255,154,137,21,0,0,0,248,255,255,255,1,0,0,0,0,0,248,255,
-  255,255,1,0,0,0,0,0,248,255,255,255,1,0,0,0,0,0,0,0,0,0,32,67,19,0,0,0,0,0,0,0,
-  0,164,254,255,255,141,2,0,0,0,0,0,178,255,255,255,255,255,143,1,0,0,0,48,254,255,255,255,255,255,255,28,
-  0,0,0,226,255,255,255,255,255,255,255,207,0,0,0,251,255,255,255,255,255,255,255,255,8,0,64,255,255,255,255,223,
-  168,255,255,255,30,0,160,255,255,255,255,27,0,251,255,255,111,0,224,255,255,255,223,1,0,248,255,255,175,0,241,255,
-  255,255,95,0,0,251,255,255,207,0,242,255,255,255,13,210,22,255,255,255,207,0,242,255,255,255,8,251,239,255,255,255,
-  207,0,224,255,255,255,7,244,255,255,255,255,175,0,176,255,255,255,12,112,255,255,255,255,111,0,80,255,255,255,223,252,
-  255,255,255,255,63,0,0,252,255,255,255,255,255,255,255,255,255,77,0,227,255,255,255,255,255,255,255,255,255,95,0,64,
-  254,255,255,255,255,255,255,255,255,95,0,0,211,255,255,255,255,255,255,255,255,95,0,0,0,198,255,255,255,191,20,232,
-  255,95,0,0,0,0,82,119,71,1,0,16,116,39,16,50,51,51,51,35,1,0,0,0,0,247,255,255,255,255,255,239,
-  74,0,0,0,248,255,255,255,255,255,255,255,27,0,0,248,255,255,255,255,255,255,255,207,1,0,248,255,255,255,255,255,
-  255,255,255,8,0,248,255,255,255,239,153,255,255,255,14,0,248,255,255,255,23,0,252,255,255,63,0,248,255,255,255,1,
-  0,251,255,255,79,0,248,255,255,255,1,32,254,255,255,63,0,248,255,255,255,1,193,255,255,255,14,0,248,255,255,255,
-  97,254,255,255,255,8,0,248,255,255,255,254,255,255,255,207,0,0,248,255,255,255,255,255,255,255,27,0,0,248,255,255,
-  255,255,255,255,207,0,0,0,248,255,255,255,254,255,255,255,6,0,0,248,255,255,255,247,255,255,255,63,0,0,248,255,
-  255,255,177,255,255,255,223,1,0,248,255,255,255,33,255,255,255,255,11,0,248,255,255,255,1,248,255,255,255,127,0,248,
-  255,255,255,1,209,255,255,255,255,4,0,0,48,118,119,70,1,0,0,145,254,255,255,255,175,0,48,254,255,255,255,255,
-  191,0,225,255,255,255,255,255,191,0,248,255,255,255,255,255,191,0,252,255,255,255,255,255,191,0,253,255,255,255,3,66,
-  119,0,252,255,255,255,59,0,0,0,248,255,255,255,255,58,0,0,226,255,255,255,255,255,8,0,80,255,255,255,255,255,
-  159,0,0,211,255,255,255,255,255,4,0,0,231,255,255,255,255,10,2,0,16,252,255,255,255,13,220,72,1,248,255,255,
-  255,13,252,255,255,255,255,255,255,12,252,255,255,255,255,255,255,8,252,255,255,255,255,255,239,1,252,255,255,255,255,255,
-  78,0,197,255,255,255,255,175,2,0,0,65,118,119,70,1,0,0,180,187,187,187,187,187,187,187,187,4,245,255,255,255,
-  255,255,255,255,255,6,245,255,255,255,255,255,255,255,255,6,245,255,255,255,255,255,255,255,255,6,245,255,255,255,255,255,
-  255,255,255,6,245,255,255,255,255,255,255,255,255,6,65,68,84,255,255,255,111,68,68,1,0,0,32,255,255,255,63,0,
-  0,0,0,0,32,255,255,255,63,0,0,0,0,0,32,255,255,255,63,0,0,0,0,0,32,255,255,255,63,0,0,0,
-  0,0,32,255,255,255,63,0,0,0,0,0,32,255,255,255,63,0,0,0,0,0,32,255,255,255,63,0,0,0,0,0,
-  32,255,255,255,63,0,0,0,0,0,32,255,255,255,63,0,0,0,0,0,32,255,255,255,63,0,0,0,0,0,32,255,
-  255,255,63,0,0,0,0,0,32,255,255,255,63,0,0,0,185,187,187,123,0,48,187,187,187,2,251,255,255,175,0,64,
-  255,255,255,3,251,255,255,175,0,64,255,255,255,3,251,255,255,175,0,64,255,255,255,3,251,255,255,175,0,64,255,255,
-  255,3,251,255,255,175,0,64,255,255,255,3,251,255,255,175,0,64,255,255,255,3,251,255,255,175,0,64,255,255,255,3,
-  251,255,255,175,0,64,255,255,255,3,251,255,255,175,0,64,255,255,255,3,251,255,255,175,0,64,255,255,255,3,251,255,
-  255,175,0,80,255,255,255,3,251,255,255,223,0,128,255,255,255,2,249,255,255,255,73,230,255,255,255,1,245,255,255,255,
-  255,255,255,255,207,0,225,255,255,255,255,255,255,255,127,0,80,255,255,255,255,255,255,255,29,0,0,246,255,255,255,255,
-  255,223,2,0,0,48,234,255,255,255,239,24,0,0,0,0,0,99,119,103,3,0,0,0,214,221,221,221,28,0,0,218,
-  221,221,29,225,255,255,255,127,0,48,255,255,255,9,112,255,255,255,223,0,144,255,255,255,2,16,254,255,255,255,6,242,
-  255,255,175,0,0,247,255,255,255,13,248,255,255,47,0,0,225,255,255,255,111,254,255,255,10,0,0,96,255,255,255,255,
-  255,255,255,3,0,0,0,253,255,255,255,255,255,175,0,0,0,0,246,255,255,255,255,255,63,0,0,0,0,208,255,255,
-  255,255,255,11,0,0,0,0,80,255,255,255,255,255,3,0,0,0,0,0,253,255,255,255,191,0,0,0,0,0,0,245,
-  255,255,255,79,0,0,0,0,0,0,192,255,255,255,11,0,0,0,0,0,0,64,255,255,255,4,0,0,0,0,0,0,
-  0,252,255,207,0,0,0,0,0,0,0,0,244,255,79,0,0,0,0,0,0,0,0,176,255,12,0,0,0,0,0,0,
-  0,0,64,255,4,0,0,0,0,0,0,0,0,0,101,0,0,0,0,0,241,255,255,255,79,0,0,32,77,0,0,96,
-  255,255,255,4,176,255,255,255,159,0,0,176,223,1,0,176,255,255,239,0,96,255,255,255,239,0,0,247,255,9,0,241,
-  255,255,159,0,16,254,255,255,255,3,48,255,255,95,0,245,255,255,79,0,0,250,255,255,255,8,209,255,255,239,1,250,
-  255,255,14,0,0,245,255,255,255,13,250,255,255,255,10,254,255,255,9,0,0,224,255,255,255,143,255,255,255,255,175,255,
-  255,255,4,0,0,144,255,255,255,255,255,255,255,255,255,255,255,239,0,0,0,64,255,255,255,255,255,255,255,255,255,255,
-  255,159,0,0,0,0,253,255,255,255,255,255,255,255,255,255,255,95,0,0,0,0,248,255,255,255,255,255,255,255,255,255,
-  255,14,0,0,0,0,243,255,255,255,255,191,250,255,255,255,255,10,0,0,0,0,192,255,255,255,255,29,225,255,255,255,
-  255,5,0,0,0,0,112,255,255,255,255,4,64,255,255,255,239,0,0,0,0,0,32,255,255,255,143,0,0,249,255,255,
-  175,0,0,0,0,0,0,251,255,255,11,0,0,209,255,255,95,0,0,0,0,0,0,246,255,239,2,0,0,48,255,255,
-  30,0,0,0,0,0,0,241,255,95,0,0,0,0,248,255,10,0,0,0,0,0,0,160,255,8,0,0,0,0,192,255,
-  5,0,0,0,0,0,0,32,138,0,0,0,0,0,32,138,0,0,0,0,183,187,187,187,8,0,181,187,187,43,0,242,
-  255,255,255,63,0,253,255,255,10,0,128,255,255,255,191,112,255,255,255,2,0,16,253,255,255,255,229,255,255,159,0,0,
-  0,244,255,255,255,255,255,255,30,0,0,0,160,255,255,255,255,255,255,7,0,0,0,32,254,255,255,255,255,223,1,0,
-  0,0,0,247,255,255,255,255,111,0,0,0,0,0,208,255,255,255,255,12,0,0,0,0,0,128,255,255,255,255,10,0,
-  0,0,0,0,225,255,255,255,255,79,0,0,0,0,0,247,255,255,255,255,223,0,0,0,0,16,254,255,255,255,255,255,
-  8,0,0,0,128,255,255,255,255,255,255,47,0,0,0,242,255,255,239,255,255,255,191,0,0,0,249,255,255,95,254,255,
-  255,255,5,0,32,255,255,255,11,246,255,255,255,30,0,160,255,255,255,4,208,255,255,255,159,0,243,255,255,207,0,96,
-  255,255,255,255,3,180,187,187,187,27,0,182,187,187,91,208,255,255,255,127,16,254,255,255,30,96,255,255,255,223,112,255,
-  255,255,7,0,253,255,255,255,214,255,255,239,1,0,246,255,255,255,255,255,255,127,0,0,208,255,255,255,255,255,255,30,
-  0,0,96,255,255,255,255,255,255,7,0,0,0,253,255,255,255,255,239,1,0,0,0,246,255,255,255,255,127,0,0,0,
-  0,208,255,255,255,255,30,0,0,0,0,96,255,255,255,255,7,0,0,0,0,0,254,255,255,239,1,0,0,0,0,0,
-  252,255,255,207,0,0,0,0,0,0,252,255,255,207,0,0,0,0,0,0,252,255,255,207,0,0,0,0,0,0,252,255,
-  255,207,0,0,0,0,0,0,252,255,255,207,0,0,0,0,0,0,252,255,255,207,0,0,0,0,0,0,252,255,255,207,
-  0,0,0,176,187,187,187,187,187,187,187,187,59,240,255,255,255,255,255,255,255,255,63,240,255,255,255,255,255,255,255,255,
-  11,240,255,255,255,255,255,255,255,255,3,240,255,255,255,255,255,255,255,143,0,240,255,255,255,255,255,255,255,29,0,0,
-  0,0,192,255,255,255,255,5,0,0,0,0,247,255,255,255,175,0,0,0,0,32,254,255,255,255,46,0,0,0,0,160,
-  255,255,255,255,7,0,0,0,0,244,255,255,255,207,0,0,0,0,0,253,255,255,255,79,0,0,0,0,112,255,255,255,
-  255,9,0,0,0,0,226,255,255,255,255,137,136,136,40,0,250,255,255,255,255,255,255,255,63,64,255,255,255,255,255,255,
-  255,255,63,208,255,255,255,255,255,255,255,255,63,247,255,255,255,255,255,255,255,255,63,251,255,255,255,255,255,255,255,255,
-  63,
+  0,0,0,0,0,0,0,0,0,0,247,244,0,0,0,0,0,0,244,247,0,242,254,255,248,242,0,0,242,248,255,254,
+  242,0,243,253,255,255,253,253,255,255,253,243,0,0,0,240,246,250,253,253,250,246,240,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,204,204,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,83,85,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,83,17,17,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,80,17,241,102,31,209,12,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,192,29,17,166,170,122,17,209,12,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,29,17,167,170,170,170,154,17,81,3,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,21,17,175,170,170,170,170,170,246,17,81,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,213,17,111,170,170,170,170,170,170,170,246,17,205,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,220,17,113,170,170,170,170,170,170,170,170,170,23,17,
+  205,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,17,145,170,170,170,170,122,153,166,170,170,170,
+  170,25,17,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,17,241,170,170,170,170,106,255,190,255,166,
+  170,170,170,106,31,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,29,241,166,170,170,170,106,249,139,136,
+  152,159,166,170,170,170,106,31,209,12,0,0,0,0,0,0,0,0,0,0,0,0,192,29,17,167,170,170,170,170,247,137,
+  136,136,136,152,127,170,170,170,170,122,17,209,12,0,0,0,0,0,0,0,0,0,0,48,21,17,169,170,170,170,170,247,
+  233,136,136,136,136,136,158,111,170,170,170,170,154,17,81,3,0,0,0,0,0,0,0,0,0,21,17,111,170,170,170,170,
+  246,191,136,136,136,136,136,136,136,251,111,170,170,170,170,246,17,81,0,0,0,0,0,0,0,0,213,17,111,170,170,170,
+  170,150,159,136,136,136,136,136,136,136,136,136,249,105,170,170,170,170,246,17,205,0,0,0,0,0,0,220,17,113,170,170,
+  170,170,122,159,136,136,136,136,136,136,136,136,136,136,232,249,167,170,170,170,170,23,17,205,0,0,0,0,83,17,145,170,
+  170,170,170,122,159,142,136,136,136,136,136,136,136,136,136,136,136,232,255,167,170,170,170,170,25,17,53,0,0,80,17,241,
+  166,170,170,170,106,255,139,136,136,136,136,136,136,136,136,136,136,136,136,136,184,159,166,170,170,170,106,31,17,5,0,29,
+  241,166,170,170,170,106,249,137,34,34,34,34,34,34,136,136,136,136,136,136,136,136,136,152,159,166,170,170,170,106,31,209,
+  0,29,167,170,170,170,170,247,233,34,34,34,34,34,34,34,34,130,136,136,136,136,136,136,136,136,158,127,170,170,170,170,
+  122,209,3,253,170,170,170,170,247,239,34,34,34,34,34,34,34,34,34,34,136,136,136,136,136,136,136,136,136,251,127,170,
+  170,170,170,31,53,253,170,170,170,246,191,40,34,34,34,34,34,34,34,34,34,34,130,136,136,136,136,136,136,136,136,136,
+  251,111,170,170,170,31,197,253,170,170,154,159,136,40,34,34,34,34,34,34,34,34,34,34,130,136,136,136,136,136,136,136,
+  136,136,136,249,169,170,170,31,197,253,170,170,250,142,136,40,34,34,34,34,34,34,34,34,34,34,130,136,136,136,136,136,
+  136,136,136,136,136,232,175,170,170,31,197,253,170,170,250,136,136,40,34,34,34,34,226,238,46,34,34,34,130,136,136,136,
+  136,136,136,136,136,136,136,136,175,170,170,31,197,253,170,170,250,136,136,136,34,34,34,34,30,17,145,40,34,34,136,136,
+  136,136,136,136,136,136,136,136,136,136,175,170,170,31,197,253,170,170,250,136,136,136,136,34,34,34,30,31,17,145,40,136,
+  136,136,136,136,136,136,136,136,136,136,136,136,175,170,170,31,197,253,170,170,250,136,136,136,136,136,136,40,30,41,25,17,
+  177,136,136,136,136,136,136,136,136,136,136,136,136,136,175,170,170,31,197,253,102,102,246,136,136,136,136,136,136,136,27,41,
+  34,31,17,177,136,136,136,136,136,136,136,136,136,136,136,136,111,102,102,31,197,253,102,102,246,136,136,136,136,136,136,136,
+  27,41,34,226,31,17,79,136,136,136,136,136,136,136,136,136,136,136,111,102,102,31,197,253,102,102,246,136,136,136,136,136,
+  136,136,27,41,34,34,226,17,17,73,136,136,136,136,136,136,136,136,136,136,111,102,102,31,197,253,102,102,246,136,136,136,
+  136,136,136,136,27,41,34,34,34,146,17,17,137,136,136,136,136,136,136,136,136,136,111,102,102,31,197,253,102,102,246,136,
+  136,136,136,136,136,136,27,41,34,34,34,34,146,17,17,139,136,136,136,136,136,136,136,136,111,102,102,31,197,253,102,102,
+  246,136,136,136,136,136,136,136,27,41,34,34,34,34,34,254,17,17,139,136,136,136,136,136,136,136,111,102,102,31,197,253,
+  102,102,246,136,136,136,136,136,136,136,27,41,34,34,34,34,34,34,254,17,241,139,136,136,136,136,136,136,111,102,102,31,
+  197,253,102,102,246,136,136,136,136,136,136,136,27,41,34,34,34,34,34,34,34,30,17,145,132,136,136,136,136,136,111,102,
+  102,31,197,253,102,102,246,136,136,136,136,136,136,136,27,41,34,34,34,34,34,34,34,34,25,17,129,136,136,136,136,136,
+  111,102,102,31,197,253,102,102,246,136,136,136,136,136,136,136,27,41,34,34,34,34,34,34,34,34,34,25,129,136,136,136,
+  136,136,111,102,102,31,197,253,102,102,246,68,68,68,68,68,68,68,27,41,34,34,34,34,34,34,34,34,34,25,65,68,
+  68,68,68,68,111,102,102,31,197,253,102,102,246,68,68,68,68,68,68,68,27,41,34,34,34,34,34,34,34,34,27,17,
+  65,68,68,68,68,68,111,102,102,31,197,253,102,102,246,68,68,68,68,68,68,68,27,41,34,34,34,34,34,34,34,254,
+  17,241,75,68,68,68,68,68,111,102,102,31,197,253,102,102,246,68,68,68,68,68,68,68,27,41,34,34,34,34,34,34,
+  254,17,17,75,68,68,68,68,68,68,111,102,102,31,197,253,102,102,246,68,68,68,68,68,68,68,27,41,34,34,34,34,
+  34,158,17,17,75,68,68,68,68,68,68,68,111,102,102,31,197,253,102,102,246,68,68,68,68,68,68,68,27,41,34,34,
+  34,34,146,17,17,73,68,68,68,68,68,68,68,68,111,102,102,31,197,253,102,102,246,68,68,68,68,68,68,68,27,41,
+  34,34,34,146,17,17,73,68,68,68,68,68,68,68,68,68,111,102,102,31,197,253,102,102,246,68,68,68,68,68,68,68,
+  27,41,34,34,226,17,17,191,68,68,68,68,68,68,68,68,68,68,111,102,102,31,197,253,102,102,246,68,68,68,68,68,
+  68,68,27,41,34,226,31,17,191,68,68,68,68,68,68,68,68,68,68,68,111,102,102,31,197,253,102,102,246,68,68,68,
+  68,68,68,68,27,41,226,31,17,177,68,68,68,68,68,68,68,68,68,68,68,68,111,102,102,31,197,253,102,102,246,68,
+  68,68,68,68,68,68,27,233,25,17,145,68,68,68,68,68,68,68,68,68,68,68,68,68,111,102,102,31,197,253,102,102,
+  246,68,68,68,68,68,68,68,27,31,17,145,68,68,68,68,68,68,68,68,68,68,68,68,68,68,111,102,102,31,197,253,
+  102,102,246,68,68,68,68,68,68,68,27,17,241,75,68,68,68,68,68,68,68,68,68,68,68,68,68,68,111,102,102,31,
+  197,253,102,102,246,68,68,68,68,68,68,68,180,187,75,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,111,102,
+  102,31,197,253,119,119,247,75,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,180,
+  127,119,119,31,197,253,119,119,247,159,75,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,
+  180,249,127,119,119,31,197,253,119,119,119,247,159,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,
+  68,68,249,127,119,119,119,31,197,253,119,119,119,119,247,191,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,
+  68,68,68,251,127,119,119,119,119,31,197,29,127,119,119,119,119,255,191,68,68,68,68,68,68,68,68,68,68,68,68,68,
+  68,68,68,68,251,255,119,119,119,119,247,17,197,29,17,119,119,119,119,119,255,185,68,68,68,68,68,68,68,68,68,68,
+  68,68,68,68,68,155,255,119,119,119,119,119,17,209,197,80,17,241,119,119,119,119,119,255,73,68,68,68,68,68,68,68,
+  68,68,68,68,68,68,148,255,119,119,119,119,119,31,17,93,197,48,213,17,241,119,119,119,119,151,255,75,68,68,68,68,
+  68,68,68,68,68,68,68,180,255,127,119,119,119,119,31,17,93,85,53,0,195,213,17,241,119,119,119,119,247,255,75,68,
+  68,68,68,68,68,68,68,68,180,255,127,119,119,119,119,31,17,93,85,197,3,0,0,83,21,17,113,119,119,119,119,247,
+  159,75,68,68,68,68,68,68,68,180,249,127,119,119,119,119,23,17,209,85,85,12,0,0,0,0,92,29,17,127,119,119,
+  119,119,247,159,68,68,68,68,68,68,68,249,127,119,119,119,119,247,17,209,85,85,12,0,0,0,0,0,48,92,29,17,
+  127,119,119,119,119,255,191,68,68,68,68,68,251,255,119,119,119,119,247,17,209,85,85,60,0,0,0,0,0,0,0,48,
+  85,29,17,127,119,119,119,119,255,191,68,68,68,251,255,119,119,119,119,247,17,209,85,85,53,0,0,0,0,0,0,0,
+  0,0,192,213,17,17,119,119,119,119,119,255,185,68,155,255,119,119,119,119,119,17,17,93,85,197,0,0,0,0,0,0,
+  0,0,0,0,0,192,213,17,241,119,119,119,119,247,255,153,255,127,119,119,119,119,31,17,93,85,197,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,195,213,17,241,119,119,119,119,247,255,127,119,119,119,119,31,17,93,85,197,3,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,83,213,17,241,119,119,119,119,119,119,119,119,119,31,17,81,85,85,3,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,29,17,241,119,119,119,119,119,119,119,247,17,209,85,85,12,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,92,29,17,127,119,119,119,119,119,247,17,209,85,85,60,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,92,29,17,127,119,119,119,247,17,209,85,85,
+  60,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,85,17,17,127,119,247,17,17,85,
+  85,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,192,213,17,17,127,31,17,
+  93,85,197,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,213,17,17,
+  17,93,85,197,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,195,
+  213,221,93,85,85,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,83,85,85,85,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  221,221,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,187,53,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,17,17,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,80,17,241,102,31,17,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,208,27,17,166,
+  170,122,17,177,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,27,17,167,170,170,170,122,17,177,3,0,0,
+  0,0,0,0,0,0,0,0,0,0,48,21,17,175,170,170,170,170,170,246,17,81,3,0,0,0,0,0,0,0,0,0,
+  0,0,21,17,111,170,170,246,255,111,170,170,246,17,209,0,0,0,0,0,0,0,0,0,0,189,17,113,170,170,118,207,
+  136,252,167,170,170,23,17,219,0,0,0,0,0,0,0,0,179,17,113,170,170,122,159,136,136,232,249,167,170,170,23,17,
+  59,0,0,0,0,0,0,83,17,241,166,170,106,255,142,136,136,136,232,255,166,170,106,31,17,53,0,0,0,0,80,17,
+  241,166,170,106,255,140,136,136,136,136,136,200,255,166,170,106,31,17,5,0,0,208,27,17,167,170,106,247,140,136,136,136,
+  136,136,136,136,200,127,166,170,122,17,177,13,0,21,17,167,170,170,247,239,136,136,136,136,136,136,136,136,136,254,127,170,
+  170,122,17,81,0,21,111,170,170,246,239,40,34,34,34,130,136,136,136,136,136,136,252,111,170,170,246,81,0,21,166,170,
+  246,207,40,34,206,204,204,204,204,153,153,153,201,136,136,252,111,170,106,177,5,21,166,122,159,136,34,194,17,255,255,255,
+  255,255,255,255,17,140,136,136,249,167,106,177,5,21,166,122,140,136,34,28,225,34,34,34,34,34,34,34,30,193,136,136,
+  200,167,106,177,5,21,166,250,132,136,232,17,46,34,34,34,34,34,34,34,226,17,140,136,72,175,106,177,5,21,166,250,
+  132,136,152,225,34,34,34,34,34,34,34,34,34,30,137,136,72,175,106,177,5,21,102,246,132,136,152,47,34,34,34,34,
+  34,34,34,34,34,242,137,136,72,111,102,177,5,21,102,246,132,136,152,47,34,34,34,34,34,34,34,34,34,242,137,136,
+  72,111,102,177,5,21,102,246,132,136,152,47,34,226,204,204,204,204,204,204,34,242,137,136,72,111,102,177,5,21,102,246,
+  132,136,152,47,34,194,17,17,17,17,17,17,34,242,137,136,72,111,102,177,5,21,102,246,132,136,152,47,34,194,17,17,
+  17,17,17,17,34,242,137,136,72,111,102,177,5,21,102,246,132,136,152,47,34,194,17,17,17,17,17,17,34,242,137,136,
+  72,111,102,177,5,21,102,246,132,136,152,47,34,194,255,255,255,255,255,255,34,242,137,136,72,111,102,177,5,21,102,246,
+  68,68,148,47,34,34,34,34,34,34,34,34,34,242,73,68,68,111,102,177,5,21,102,246,68,68,148,47,34,34,34,34,
+  34,34,34,34,34,242,73,68,68,111,102,177,5,21,102,246,68,68,148,47,34,34,34,34,34,34,34,34,34,242,73,68,
+  68,111,102,177,5,21,102,246,68,68,148,47,34,34,34,34,34,34,34,34,34,242,73,68,68,111,102,177,5,21,103,246,
+  68,68,148,47,34,34,34,204,204,204,34,34,34,242,73,68,68,111,118,177,5,21,103,246,68,68,148,47,34,34,34,17,
+  17,17,34,34,34,242,73,68,68,111,118,177,5,21,103,246,68,68,148,47,34,34,34,238,238,238,34,34,34,242,73,68,
+  68,111,118,177,5,21,103,246,68,68,148,225,34,34,34,34,34,34,34,34,34,30,73,68,68,111,118,177,5,21,103,246,
+  68,68,148,17,46,34,34,34,34,34,34,34,226,17,73,68,68,111,118,177,5,21,103,246,73,68,68,25,225,34,34,34,
+  34,34,34,34,30,145,68,68,148,111,118,177,5,21,119,247,255,68,68,148,17,255,255,255,255,255,255,255,17,73,68,68,
+  255,127,119,177,5,21,119,119,247,159,68,68,153,153,153,153,153,153,153,153,153,68,68,249,127,119,119,177,5,21,127,119,
+  119,247,159,68,68,68,68,68,68,68,68,68,68,68,249,127,119,119,247,177,5,21,17,127,119,119,255,159,68,68,68,68,
+  68,68,68,68,68,249,255,119,119,247,17,177,5,208,17,17,127,119,119,255,79,68,68,68,68,68,68,68,148,255,119,119,
+  247,17,17,85,5,0,181,17,17,119,119,119,255,73,68,68,68,68,68,148,255,119,119,119,17,17,91,85,5,0,208,181,
+  17,241,119,119,247,255,73,68,68,68,148,255,127,119,119,31,17,91,85,213,0,0,0,211,181,17,241,119,119,247,255,73,
+  68,148,31,127,119,119,31,17,91,85,213,3,0,0,0,0,83,27,17,241,119,119,247,241,68,25,127,119,119,31,17,177,
+  85,85,3,0,0,0,0,0,0,83,27,17,113,119,119,247,255,255,119,119,23,17,177,85,85,13,0,0,0,0,0,0,
+  0,0,93,27,17,127,119,119,119,119,119,247,17,177,85,85,61,0,0,0,0,0,0,0,0,0,48,93,27,17,127,119,
+  119,119,247,17,17,85,85,61,0,0,0,0,0,0,0,0,0,0,0,48,181,17,17,127,119,247,17,17,91,85,53,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,208,181,17,17,127,31,17,91,85,213,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,211,181,17,17,17,91,85,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,181,
+  187,91,85,213,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,85,85,85,3,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,221,221,13,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,83,204,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,83,17,
+  17,17,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,80,17,225,102,30,17,13,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,208,28,17,175,170,250,17,193,13,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,48,28,17,167,170,170,170,122,17,193,3,0,0,0,0,0,0,0,0,0,0,0,0,48,21,17,174,170,170,
+  102,170,170,230,17,81,3,0,0,0,0,0,0,0,0,0,0,0,21,17,110,170,170,230,238,103,170,170,230,17,209,0,
+  0,0,0,0,0,0,0,0,0,205,17,241,170,170,118,158,136,233,103,170,170,31,17,220,0,0,0,0,0,0,0,0,
+  195,17,113,170,170,122,158,136,136,72,233,175,170,170,23,17,60,0,0,0,0,0,0,83,17,225,166,170,250,238,139,136,
+  136,136,184,238,175,170,106,30,17,53,0,0,0,0,80,17,225,166,170,106,238,139,136,136,136,136,136,184,238,166,170,106,
+  30,17,5,0,0,208,28,17,175,170,106,231,137,136,136,136,136,136,136,136,152,126,166,170,250,17,193,13,0,21,17,167,
+  170,170,239,78,136,136,136,136,136,136,136,136,136,228,254,170,170,122,17,81,0,21,110,170,170,239,190,136,136,136,136,136,
+  136,136,136,136,136,136,235,254,170,170,230,81,0,21,166,170,230,158,136,136,136,136,136,136,136,136,184,187,75,136,136,233,
+  110,170,106,193,5,21,166,122,158,132,136,136,136,136,232,238,139,184,17,225,17,78,136,72,233,167,106,193,5,21,166,122,
+  139,136,136,136,136,152,17,233,129,27,129,34,146,177,136,136,184,167,106,193,5,21,102,118,139,136,136,136,184,17,142,130,
+  225,30,34,34,34,177,136,136,184,103,102,193,5,21,102,118,139,136,136,184,30,97,34,34,25,145,34,34,24,177,136,136,
+  184,103,102,193,5,21,102,118,139,136,136,27,177,34,34,34,18,177,34,34,17,137,136,136,184,103,102,193,5,21,102,118,
+  139,136,136,27,40,34,34,34,146,177,34,34,27,225,136,136,184,103,102,193,5,21,102,118,75,68,68,27,46,34,34,34,
+  30,177,34,34,34,30,68,68,180,103,102,193,5,21,102,118,75,68,68,228,145,34,34,34,25,41,34,34,34,17,68,68,
+  180,103,102,193,5,21,102,118,75,68,68,68,30,41,136,34,146,34,130,187,25,145,68,68,180,103,102,193,5,21,102,118,
+  75,68,68,68,20,145,17,40,34,34,24,17,225,75,68,68,180,103,102,193,5,21,111,230,75,68,68,68,68,238,30,129,
+  34,130,17,75,68,68,68,68,180,110,246,193,5,21,111,230,75,68,68,68,68,68,25,33,34,130,17,75,68,68,68,68,
+  180,110,246,193,5,21,111,230,75,68,68,68,68,180,17,40,34,34,24,177,68,68,68,68,180,110,246,193,5,21,111,230,
+  75,68,68,68,68,27,129,34,146,34,178,17,68,68,68,68,180,110,246,193,5,21,111,230,75,68,68,68,180,17,40,34,
+  30,41,34,25,78,68,68,68,180,110,246,193,5,21,111,230,75,68,68,68,27,177,34,146,17,145,34,146,225,68,68,68,
+  180,110,246,193,5,21,255,239,75,68,68,68,30,43,34,25,78,17,43,34,30,78,68,68,180,254,255,193,5,21,255,239,
+  75,68,68,68,145,34,146,225,68,27,129,34,232,177,68,68,180,254,255,193,5,21,255,239,75,68,68,68,145,34,27,65,
+  68,180,17,40,130,145,68,68,180,254,255,193,5,21,255,239,75,68,68,68,17,153,17,75,68,68,25,129,130,145,68,68,
+  180,254,255,193,5,21,255,239,73,68,68,68,25,17,177,68,68,68,148,225,235,145,68,68,148,254,255,193,5,21,255,127,
+  238,75,68,68,68,68,68,68,68,68,68,30,17,78,68,180,238,247,255,193,5,21,255,255,231,158,68,68,68,68,68,68,
+  68,68,68,68,68,68,68,233,126,255,255,193,5,21,126,255,255,231,158,68,68,68,68,68,68,68,68,68,68,68,233,126,
+  255,255,231,193,5,21,17,254,255,255,231,190,68,68,68,68,68,68,68,68,68,235,238,255,255,239,17,193,5,208,17,17,
+  247,255,127,30,190,68,68,68,68,68,68,68,235,225,247,255,127,17,17,85,5,0,197,17,17,247,255,127,30,185,68,68,
+  68,68,68,148,238,247,255,127,17,17,92,85,5,0,208,197,17,225,247,255,127,238,73,68,68,68,148,30,247,255,127,30,
+  17,92,85,213,0,0,0,211,197,17,225,247,255,231,225,73,68,180,30,126,255,127,30,17,92,85,213,3,0,0,0,0,
+  83,28,17,113,119,119,231,225,187,30,126,119,119,23,17,193,85,85,3,0,0,0,0,0,0,83,28,17,113,119,119,231,
+  225,126,119,119,23,17,193,85,85,13,0,0,0,0,0,0,0,0,93,28,17,126,119,119,119,119,119,231,17,193,85,85,
+  61,0,0,0,0,0,0,0,0,0,48,93,28,17,126,119,119,119,231,17,17,85,85,61,0,0,0,0,0,0,0,0,
+  0,0,0,48,197,17,17,126,119,119,17,17,92,85,53,0,0,0,0,0,0,0,0,0,0,0,0,0,208,197,17,17,
+  119,17,17,92,85,213,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,197,17,17,17,92,85,213,3,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,211,197,204,92,85,213,3,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,83,85,85,85,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,89,170,170,170,90,
+  57,0,0,0,0,0,0,0,0,0,0,144,26,17,124,238,126,28,17,154,0,0,0,0,0,0,0,0,48,26,113,100,
+  102,102,102,102,127,17,58,0,0,0,0,0,0,0,25,113,102,102,102,102,102,102,102,118,17,5,0,0,0,0,0,80,
+  17,100,102,102,102,102,102,102,102,102,207,161,0,0,0,0,0,21,252,102,102,102,102,102,102,102,102,102,102,28,10,0,
+  0,0,144,193,102,102,102,102,102,102,102,102,102,102,102,198,81,0,0,0,19,241,102,102,102,102,102,246,238,100,102,102,
+  102,102,28,9,0,0,26,100,102,102,246,255,102,30,17,241,102,102,102,102,31,10,0,144,113,102,102,102,198,17,17,193,
+  184,193,111,102,102,102,118,81,0,160,241,102,255,255,31,141,125,45,34,29,71,255,255,111,102,17,3,19,103,246,255,255,
+  20,40,34,34,34,194,17,193,255,255,102,23,9,25,100,255,255,255,23,34,34,34,34,34,139,29,244,255,111,31,10,21,
+  102,255,255,196,193,34,34,34,34,34,34,24,244,255,111,22,58,202,102,255,239,17,45,34,178,205,189,34,34,24,255,255,
+  111,118,145,122,246,255,127,129,34,34,27,17,17,43,34,29,255,255,255,230,145,234,246,255,127,129,34,34,29,247,23,45,
+  34,29,247,255,255,230,145,234,246,68,68,193,43,34,28,68,20,44,34,203,65,68,244,70,81,234,246,68,68,23,189,187,
+  29,71,23,189,187,139,113,68,244,230,81,122,246,68,68,20,189,187,27,17,17,187,187,139,113,68,244,230,81,202,246,68,
+  68,20,189,187,187,205,189,187,187,29,225,68,244,118,81,21,255,68,68,30,184,187,187,187,187,187,203,193,78,68,244,198,
+  154,25,244,68,68,30,141,187,187,187,187,187,27,76,68,68,244,31,154,19,247,79,68,206,17,193,187,187,187,187,24,78,
+  68,68,255,23,149,160,241,79,238,238,238,28,189,187,125,141,23,238,238,78,255,17,53,144,113,255,238,238,238,30,129,24,
+  17,17,193,238,238,254,127,161,5,0,26,244,228,238,238,238,17,17,231,238,238,238,238,244,20,81,9,0,19,241,79,238,
+  238,238,199,236,238,238,238,238,78,255,28,90,3,0,80,193,255,228,238,238,238,238,238,238,238,238,244,127,161,149,0,0,
+  0,26,252,255,238,238,238,238,238,238,238,254,255,23,81,53,0,0,0,163,17,244,79,238,238,238,238,238,78,255,196,17,
+  85,3,0,0,0,48,26,113,255,255,68,238,78,244,255,127,17,90,53,0,0,0,0,0,83,17,113,244,255,255,255,255,
+  116,17,161,85,3,0,0,0,0,0,48,169,17,17,124,238,126,23,17,161,85,57,0,0,0,0,0,0,0,48,85,170,
+  17,17,17,161,90,85,53,0,0,0,0,0,0,0,0,0,48,89,85,85,85,85,85,57,0,0,0,0,0,0,0,0,
+  0,0,0,0,51,51,51,51,3,0,0,0,0,0,0,0,0,0,0,0,48,88,170,170,170,90,56,0,0,0,0,0,
+  0,0,0,0,0,128,26,17,109,68,100,29,17,138,0,0,0,0,0,0,0,0,48,26,97,239,238,238,238,238,111,17,
+  58,0,0,0,0,0,0,0,24,97,231,238,238,238,238,238,238,110,17,5,0,0,0,0,0,80,17,239,238,238,238,238,
+  238,238,238,238,223,161,0,0,0,0,0,21,125,238,238,238,238,238,238,238,238,238,126,29,10,0,0,0,128,209,231,238,
+  238,238,238,238,238,238,238,238,238,222,81,0,0,0,19,113,238,119,119,119,119,119,119,119,119,119,231,126,29,8,0,0,
+  26,239,126,119,119,119,119,119,119,119,119,119,119,238,31,10,0,128,97,238,119,119,119,119,119,119,119,119,119,119,119,231,
+  110,81,0,160,113,126,119,119,119,247,17,17,17,125,119,119,119,119,126,17,3,19,230,126,119,119,119,247,177,187,203,125,
+  119,119,119,119,238,22,8,24,239,119,119,119,119,71,33,34,146,125,119,119,119,119,231,31,10,21,231,255,255,255,255,79,
+  33,34,146,209,221,221,253,255,239,222,58,218,126,255,255,255,255,79,33,34,146,145,153,105,253,255,127,110,129,106,126,255,
+  255,221,221,221,33,34,146,33,34,146,253,255,127,110,129,106,119,255,255,193,204,108,33,34,146,33,34,146,253,255,127,71,
+  129,106,247,255,79,177,34,146,33,34,146,33,34,146,253,255,255,71,81,106,247,255,79,177,34,146,33,34,146,33,34,146,
+  253,255,255,71,81,106,247,255,79,177,187,155,177,187,155,177,187,155,253,255,255,103,81,218,119,255,79,177,187,155,177,187,
+  155,177,187,155,253,255,127,103,81,21,119,79,68,177,187,155,177,187,155,177,187,155,77,68,127,215,138,24,127,79,68,177,
+  187,203,177,187,203,177,187,203,77,68,127,31,138,19,118,79,68,177,187,203,177,187,203,177,187,203,77,68,127,22,133,160,
+  241,247,68,193,204,108,193,204,108,193,204,108,65,244,119,29,53,128,97,247,68,17,17,17,17,17,17,17,17,17,77,244,
+  103,161,5,0,26,127,79,68,68,68,68,68,68,68,68,68,68,127,31,81,8,0,19,253,247,68,68,68,68,68,68,68,
+  68,68,244,247,29,90,3,0,80,209,127,79,68,68,68,68,68,68,68,68,127,103,161,133,0,0,0,26,253,247,68,68,
+  68,68,68,68,68,244,247,22,81,53,0,0,0,163,209,127,247,68,68,68,68,68,244,119,223,17,85,3,0,0,0,48,
+  26,97,255,255,79,68,68,255,255,111,17,90,53,0,0,0,0,0,83,17,97,255,255,255,255,255,111,29,161,85,3,0,
+  0,0,0,0,48,168,17,209,102,68,100,214,17,161,85,56,0,0,0,0,0,0,0,48,85,170,17,17,17,161,90,85,
+  53,0,0,0,0,0,0,0,0,0,48,88,85,85,85,85,85,56,0,0,0,0,0,0,0,0,0,0,0,0,51,51,
+  51,51,3,0,0,0,0,0,0,0,0,0,0,0,48,89,170,170,170,90,57,0,0,0,0,0,0,0,0,0,0,144,
+  26,17,127,187,123,31,17,154,0,0,0,0,0,0,0,0,48,26,113,140,136,136,136,136,124,17,58,0,0,0,0,0,
+  0,0,25,113,136,136,136,136,136,136,136,120,17,5,0,0,0,0,0,80,17,132,136,136,136,136,136,136,136,136,252,161,
+  0,0,0,0,0,21,207,136,136,136,136,136,136,136,136,136,136,31,10,0,0,0,144,241,136,136,136,136,136,72,68,196,
+  136,136,136,248,81,0,0,0,19,193,136,136,136,212,247,17,241,241,140,136,136,136,31,9,0,0,26,132,136,136,216,17,
+  119,107,46,27,207,136,136,136,28,10,0,144,113,136,136,136,120,239,34,34,34,178,241,140,136,136,120,81,0,160,193,136,
+  204,204,28,43,34,34,34,34,23,193,204,140,136,17,3,19,135,200,204,204,29,38,226,182,235,34,98,209,204,204,136,23,
+  9,25,132,204,204,204,31,34,114,17,241,46,34,223,204,204,140,28,10,21,136,204,204,204,191,34,30,207,23,43,226,209,
+  204,204,140,248,58,250,136,204,204,204,191,34,30,77,31,46,178,65,204,204,140,120,145,122,200,204,204,204,255,238,27,23,
+  113,238,254,207,204,204,204,216,145,218,200,204,204,204,23,17,17,241,230,238,22,199,204,204,204,216,145,218,200,68,68,68,
+  212,221,31,235,238,238,27,68,68,68,196,72,81,218,200,68,68,68,68,68,247,238,238,118,241,68,68,68,196,72,81,122,
+  200,68,68,68,68,68,247,238,190,17,79,68,68,68,196,216,81,250,200,68,68,68,68,68,247,238,254,223,68,68,68,68,
+  196,120,81,21,204,68,68,68,68,68,23,230,22,71,68,68,68,68,196,248,154,25,196,68,68,68,68,68,31,103,23,79,
+  68,68,68,68,196,28,154,19,199,76,68,68,68,68,255,238,254,79,68,68,68,68,204,23,149,160,193,76,221,221,221,221,
+  191,238,190,223,221,221,221,77,204,17,53,144,113,204,221,221,221,221,255,102,246,223,221,221,221,205,220,161,5,0,26,196,
+  212,221,221,221,31,191,31,223,221,221,221,196,28,81,9,0,19,207,76,221,221,221,253,255,255,221,221,221,77,204,31,90,
+  3,0,80,241,204,212,221,221,221,221,221,221,221,221,196,124,161,149,0,0,0,26,207,204,221,221,221,221,221,221,221,205,
+  204,23,81,53,0,0,0,163,241,196,76,221,221,221,221,221,77,204,244,17,85,3,0,0,0,48,26,113,204,204,68,221,
+  77,196,204,124,17,90,53,0,0,0,0,0,83,17,113,196,204,204,204,204,116,17,161,85,3,0,0,0,0,0,48,169,
+  17,17,119,221,125,247,17,161,85,57,0,0,0,0,0,0,0,48,85,170,17,17,17,161,90,85,53,0,0,0,0,0,
+  0,0,0,0,48,89,85,85,85,85,85,57,0,0,0,0,0,0,0,0,0,0,0,0,51,51,51,51,3,0,0,0,
+  0,0,0,0,0,0,0,0,89,136,136,136,88,9,0,0,0,0,0,0,0,0,48,21,17,108,77,109,28,17,53,0,
+  0,0,0,0,0,0,21,193,116,238,238,238,238,196,17,5,0,0,0,0,0,128,17,228,238,238,238,238,238,238,207,129,
+  3,0,0,0,0,24,124,238,238,238,238,238,238,238,238,22,56,0,0,0,128,97,238,238,238,238,238,238,238,238,238,110,
+  129,0,0,0,21,236,238,119,119,119,119,119,119,119,231,238,22,5,0,48,17,231,119,119,119,119,119,119,119,119,119,231,
+  199,145,0,80,65,126,119,119,119,103,17,116,119,119,119,119,254,129,0,16,236,126,119,119,247,22,198,116,119,119,119,119,
+  238,22,9,25,228,119,119,119,207,97,194,125,119,119,119,119,231,20,5,21,119,255,255,255,28,38,194,70,68,68,244,255,
+  127,23,56,200,126,255,255,207,97,34,194,17,17,17,209,255,127,110,145,104,247,255,255,28,38,34,34,34,34,34,220,255,
+  255,215,145,216,247,255,207,161,34,34,34,34,34,34,220,255,255,71,81,216,247,255,207,38,34,34,34,34,34,34,220,255,
+  255,71,81,216,247,255,207,161,34,34,34,34,34,34,220,255,255,71,81,104,247,68,68,17,186,187,187,187,187,187,220,68,
+  244,215,81,200,247,68,68,196,161,187,203,17,17,17,209,68,244,103,81,21,127,68,68,68,28,182,203,214,221,221,77,68,
+  116,23,88,25,125,68,68,68,196,97,203,70,68,68,68,68,116,20,152,16,124,79,68,68,68,28,204,70,68,68,68,68,
+  127,22,149,80,65,71,68,68,68,205,17,70,68,68,68,68,71,129,53,48,193,255,212,221,221,221,221,221,221,221,221,244,
+  207,81,5,0,21,246,79,221,221,221,221,221,221,221,77,127,22,88,9,0,128,97,255,212,221,221,221,221,221,221,244,111,
+  17,85,0,0,48,24,246,255,221,221,221,221,221,253,255,22,81,53,0,0,0,137,193,244,255,212,221,221,244,255,196,17,
+  85,9,0,0,0,144,24,193,244,255,255,255,255,100,17,88,149,0,0,0,0,0,83,24,17,108,221,109,22,17,88,85,
+  9,0,0,0,0,0,48,89,136,17,17,17,129,88,85,57,0,0,0,0,0,0,0,48,89,85,85,85,85,85,57,0,
+  0,0,0,0,0,0,0,0,0,51,153,153,57,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,111,
+  102,204,204,204,204,204,108,102,47,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,111,
+  204,204,204,204,204,204,204,204,204,204,204,108,15,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,
+  198,204,204,204,153,231,238,238,238,238,183,201,204,204,204,38,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  32,198,204,204,185,30,17,225,126,119,119,238,17,17,126,201,204,204,38,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,207,204,204,233,17,225,59,51,51,51,51,51,51,123,17,225,203,204,204,6,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,98,204,204,235,17,190,51,51,51,51,51,51,51,51,51,51,23,17,203,204,204,2,0,0,0,0,0,0,0,
+  0,0,0,0,240,204,204,233,17,55,51,51,51,51,51,51,51,51,51,51,51,51,23,17,201,204,252,0,0,0,0,0,
+  0,0,0,0,0,0,198,204,124,17,55,51,51,51,51,51,51,51,51,51,51,51,51,51,51,23,225,204,204,6,0,0,
+  0,0,0,0,0,0,0,96,204,156,30,190,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,30,145,204,108,
+  0,0,0,0,0,0,0,0,0,198,204,25,113,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,115,17,
+  203,204,6,0,0,0,0,0,0,0,96,204,156,17,59,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,
+  51,27,177,204,108,0,0,0,0,0,0,0,207,204,25,177,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,
+  51,51,51,51,17,203,204,15,0,0,0,0,0,32,204,156,17,59,51,51,51,51,51,51,51,51,51,51,51,51,51,51,
+  51,51,51,51,51,51,19,177,204,44,0,0,0,0,0,96,204,25,177,51,51,51,51,51,51,51,51,51,51,51,51,51,
+  51,51,51,51,51,51,51,51,51,17,201,204,2,0,0,0,0,207,204,30,59,51,51,51,51,51,51,51,51,51,51,51,
+  51,51,51,51,51,51,51,51,51,51,51,27,193,204,6,0,0,0,32,204,124,113,51,51,51,51,51,51,51,51,51,51,
+  51,51,51,51,51,51,51,51,51,51,51,51,51,115,225,204,44,0,0,0,96,204,25,62,51,51,51,51,51,51,51,51,
+  51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,30,203,108,0,0,0,194,204,30,59,51,51,51,51,51,51,
+  51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,193,204,13,0,0,198,188,113,51,51,51,51,51,
+  51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,115,113,204,9,0,0,204,236,49,51,51,51,
+  51,51,51,51,30,17,190,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,17,204,172,0,240,204,25,55,51,
+  51,51,51,51,51,51,30,17,17,190,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,23,199,92,0,96,204,30,
+  51,51,51,51,51,51,51,51,30,231,17,17,190,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,206,156,4,192,
+  156,225,51,51,187,187,187,187,187,187,30,203,233,17,17,183,187,187,187,187,187,187,187,187,187,187,187,59,51,115,145,204,
+  10,194,188,177,51,179,187,187,187,187,187,187,30,203,204,27,17,17,183,187,187,187,187,187,187,187,187,187,187,187,51,51,
+  113,204,5,207,236,49,51,179,187,187,187,187,187,187,30,203,204,204,23,17,17,183,187,187,187,187,187,187,187,187,187,187,
+  51,51,238,204,69,198,28,62,51,187,187,187,187,187,187,187,30,203,204,204,156,30,17,225,187,187,187,187,187,187,187,187,
+  187,187,59,51,23,204,73,198,25,55,51,187,187,187,187,187,187,187,30,203,204,204,204,156,30,17,225,187,187,187,187,187,
+  187,187,187,187,59,51,27,201,73,198,25,59,51,187,187,187,187,187,187,187,30,203,204,204,204,204,156,17,17,113,187,187,
+  187,187,187,187,187,187,59,51,19,199,140,204,23,51,51,187,187,187,187,187,187,187,30,203,204,204,204,204,204,124,17,17,
+  113,187,187,187,187,187,187,187,59,51,227,206,140,204,238,51,179,187,187,187,187,187,187,187,30,203,204,204,204,204,204,204,
+  121,17,17,113,187,187,187,187,187,187,187,51,227,206,140,204,238,51,179,187,187,187,187,187,187,187,30,203,204,204,204,204,
+  204,204,204,233,17,17,126,187,187,187,187,187,187,51,115,206,140,204,238,51,179,187,187,187,187,187,187,187,30,203,204,204,
+  204,204,204,204,204,204,233,17,17,190,187,187,187,187,187,51,115,193,140,204,126,51,179,187,187,187,187,187,187,187,30,203,
+  204,204,204,204,204,204,204,204,204,27,17,190,187,187,187,187,187,51,115,193,140,204,126,51,179,187,187,187,187,187,187,187,
+  30,155,153,153,153,153,153,153,153,153,153,153,30,190,187,187,187,187,187,51,115,193,140,204,126,51,179,187,187,187,187,187,
+  187,187,30,155,153,153,153,153,153,153,153,153,153,233,17,190,187,187,187,187,187,51,115,193,140,204,238,51,179,187,187,187,
+  187,187,187,187,30,151,153,153,153,153,153,153,153,153,233,17,17,190,187,187,187,187,187,51,115,193,140,204,238,51,179,187,
+  187,187,187,187,187,187,30,151,153,153,153,153,153,153,153,121,17,17,113,187,187,187,187,187,187,51,115,206,140,204,238,51,
+  179,187,187,187,187,187,187,187,30,151,153,153,153,153,153,153,121,17,17,113,187,187,187,187,187,187,187,51,227,206,140,204,
+  23,51,179,187,187,187,187,187,187,187,30,151,153,153,153,153,153,185,17,17,225,183,187,187,187,187,187,187,187,51,227,206,
+  140,198,27,59,179,119,119,119,119,119,119,119,30,151,153,153,153,153,153,30,17,225,119,119,119,119,119,119,119,119,183,51,
+  19,199,140,198,25,55,51,119,119,119,119,119,119,119,30,151,153,153,153,153,30,17,225,119,119,119,119,119,119,119,119,119,
+  55,51,27,201,137,198,28,62,51,123,119,119,119,119,119,119,30,151,153,153,153,30,17,17,119,119,119,119,119,119,119,119,
+  119,119,59,51,23,201,137,207,236,49,51,123,119,119,119,119,119,119,30,151,153,153,23,17,17,126,119,119,119,119,119,119,
+  119,119,119,119,59,51,30,204,133,194,124,177,51,115,119,119,119,119,119,119,30,151,153,235,17,17,126,119,119,119,119,119,
+  119,119,119,119,119,119,51,179,225,204,69,192,156,225,51,179,119,119,119,119,119,119,30,151,233,17,17,126,119,119,119,119,
+  119,119,119,119,119,119,119,183,51,115,145,204,72,96,204,30,59,179,119,119,119,119,119,119,30,231,17,17,126,119,119,119,
+  119,119,119,119,119,119,119,119,119,183,51,19,193,156,72,240,204,27,55,51,123,119,119,119,119,119,30,17,17,113,119,119,
+  119,119,119,119,119,119,119,119,119,119,119,59,51,23,199,92,8,0,204,28,177,51,123,119,119,119,119,119,30,17,225,119,
+  119,119,119,119,119,119,119,119,119,119,119,119,119,59,51,30,204,140,4,0,198,188,113,51,179,119,119,119,119,119,119,119,
+  119,119,119,119,119,119,119,119,119,119,119,119,119,119,183,51,115,113,204,137,4,0,194,204,17,187,187,123,119,119,119,119,
+  119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,187,187,27,193,204,133,0,0,96,204,25,190,187,123,119,119,
+  119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,187,187,30,203,156,72,0,0,32,204,236,113,187,187,
+  119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,183,187,123,225,204,92,8,0,0,0,198,204,17,
+  183,187,123,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,187,187,27,145,204,137,4,0,0,0,192,
+  204,25,177,187,187,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,183,187,187,17,201,204,136,0,0,0,
+  0,32,204,188,17,187,187,123,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,187,187,27,113,204,92,72,0,
+  0,0,0,0,198,204,27,177,187,187,123,119,119,119,119,119,119,119,119,119,119,119,119,119,119,187,187,187,17,199,204,137,
+  8,0,0,0,0,0,96,204,188,17,183,187,187,119,119,119,119,119,119,119,119,119,119,119,119,119,183,187,187,27,113,204,
+  156,136,0,0,0,0,0,0,160,201,204,27,113,187,187,187,119,119,119,119,119,119,119,119,119,119,119,183,187,187,123,17,
+  199,204,137,72,0,0,0,0,0,0,0,154,204,156,17,190,187,187,187,119,119,119,119,119,119,119,119,119,183,187,187,187,
+  30,145,204,156,136,4,0,0,0,0,0,0,0,160,201,204,236,17,183,187,187,187,187,119,119,119,119,119,183,187,187,187,
+  187,23,225,201,204,137,72,0,0,0,0,0,0,0,0,0,84,204,204,27,17,183,187,187,187,187,187,187,187,187,187,187,
+  187,187,23,17,203,204,156,136,4,0,0,0,0,0,0,0,0,0,64,197,204,204,23,17,190,187,187,187,187,187,187,187,
+  187,187,187,23,17,199,204,204,133,72,0,0,0,0,0,0,0,0,0,0,0,132,201,204,204,231,17,238,183,187,187,187,
+  187,187,187,119,30,17,199,204,204,137,136,4,0,0,0,0,0,0,0,0,0,0,0,0,84,201,204,204,121,30,17,225,
+  126,119,119,238,17,17,225,201,204,204,89,136,4,0,0,0,0,0,0,0,0,0,0,0,0,0,64,88,201,204,204,204,
+  121,238,30,17,17,238,126,153,204,204,204,89,136,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,136,149,
+  204,204,204,204,204,204,204,204,204,204,204,156,133,136,72,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  64,132,88,149,201,204,204,204,204,204,204,153,85,136,136,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,68,136,136,136,136,136,136,136,136,136,136,72,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,68,68,68,68,68,68,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,194,102,170,170,170,170,170,106,198,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,166,170,
+  170,170,170,170,170,170,170,170,170,38,0,0,0,0,0,0,0,0,0,0,0,0,32,166,170,170,234,119,221,221,221,125,
+  231,170,170,170,38,0,0,0,0,0,0,0,0,0,0,0,166,170,170,222,17,17,221,255,223,29,17,209,167,170,170,38,
+  0,0,0,0,0,0,0,0,0,162,170,170,23,17,189,51,51,51,51,51,179,29,17,167,170,170,2,0,0,0,0,0,
+  0,0,192,170,170,30,17,63,51,51,51,51,51,51,51,51,31,17,167,170,202,0,0,0,0,0,0,0,172,170,218,17,
+  63,51,51,51,51,51,51,51,51,51,51,31,209,170,170,12,0,0,0,0,0,192,170,234,29,61,51,51,51,51,51,51,
+  51,51,51,51,51,51,29,225,170,202,0,0,0,0,0,162,170,30,209,51,51,51,51,51,51,51,51,51,51,51,51,51,
+  243,17,174,170,2,0,0,0,0,170,234,17,63,51,51,51,51,51,51,51,51,51,51,51,51,51,51,27,225,170,42,0,
+  0,0,96,170,218,241,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,179,17,170,106,0,0,0,162,170,29,61,
+  51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,31,173,170,12,0,0,166,234,209,51,51,51,51,51,51,51,
+  51,51,179,187,59,51,51,51,51,51,211,113,170,9,0,32,170,26,49,51,51,51,51,51,51,51,179,187,251,17,241,51,
+  51,51,51,51,51,17,170,90,0,96,170,23,63,51,51,51,51,51,51,223,17,17,17,113,17,241,51,51,51,51,51,31,
+  167,154,0,160,170,17,51,51,51,51,51,51,31,17,231,238,238,167,122,17,189,51,51,51,51,211,161,170,4,162,234,241,
+  51,51,51,51,51,219,17,167,170,170,170,170,170,222,17,189,51,51,51,179,113,170,5,172,218,49,51,187,187,187,187,29,
+  237,170,170,170,170,170,170,170,222,17,191,187,59,51,209,170,73,166,26,61,51,187,187,187,251,209,170,170,170,170,170,170,
+  170,170,170,23,177,187,59,51,31,170,73,166,30,63,179,187,187,187,27,225,170,170,170,126,174,170,170,170,170,122,177,187,
+  187,51,27,174,74,170,23,51,179,187,187,187,31,167,170,170,23,17,17,167,170,170,234,29,177,187,187,51,19,167,138,170,
+  23,51,179,187,187,187,29,170,170,218,17,191,31,209,170,170,222,209,187,187,187,51,211,173,138,170,221,51,187,187,187,187,
+  113,170,170,23,189,187,187,29,170,234,17,189,187,187,187,59,211,173,138,170,221,51,187,187,187,187,113,170,234,17,187,187,
+  187,31,174,23,17,189,187,187,187,59,243,161,138,170,253,51,187,187,187,251,225,170,122,241,187,187,187,31,222,17,221,241,
+  187,187,187,59,243,161,138,170,253,51,187,187,187,251,225,238,126,177,187,187,187,31,113,238,238,241,187,187,187,59,243,161,
+  138,170,253,51,187,187,187,251,225,238,126,241,187,187,187,27,113,238,238,241,187,187,187,59,243,161,138,170,221,51,187,187,
+  187,251,113,238,238,17,187,187,187,27,225,238,126,241,187,187,187,59,243,161,138,170,221,51,187,187,187,187,209,238,238,23,
+  253,187,251,29,231,238,222,177,187,187,187,59,211,173,138,170,23,51,187,187,187,187,17,238,238,222,17,255,31,209,238,238,
+  30,177,187,187,187,59,211,173,138,170,23,59,251,255,255,255,29,231,238,238,23,17,17,231,238,238,23,253,255,255,255,59,
+  19,167,138,166,30,63,243,255,255,255,31,225,238,238,238,119,231,238,238,238,17,255,255,255,255,51,27,167,138,166,26,61,
+  179,255,255,255,223,209,238,238,238,238,238,238,238,222,209,255,255,255,191,51,31,174,137,172,218,177,179,255,255,255,255,29,
+  237,238,238,238,238,238,238,29,253,255,255,255,191,51,209,170,137,162,122,241,51,251,255,255,255,223,17,231,238,238,238,238,
+  23,209,255,255,255,255,59,243,113,170,69,160,170,17,59,251,255,255,255,255,29,17,125,231,119,29,17,253,255,255,255,255,
+  59,211,161,170,72,96,170,23,191,187,255,255,255,255,255,29,17,17,17,17,253,255,255,255,255,191,187,31,173,154,72,32,
+  170,26,177,187,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,191,187,17,174,90,8,0,166,122,209,187,251,255,
+  255,255,255,255,255,255,255,255,255,255,255,255,255,187,219,113,170,138,4,0,162,170,29,191,187,255,255,255,255,255,255,255,
+  255,255,255,255,255,255,191,187,31,173,170,133,4,0,96,170,26,241,187,251,255,255,255,255,255,255,255,255,255,255,255,255,
+  187,251,17,174,154,72,0,0,32,170,234,17,191,187,251,255,255,255,255,255,255,255,255,255,255,187,187,31,225,170,90,72,
+  0,0,0,172,170,30,241,187,187,255,255,255,255,255,255,255,255,255,191,187,251,17,174,170,133,4,0,0,0,192,170,234,
+  17,189,187,187,255,255,255,255,255,255,255,191,187,187,29,225,170,154,136,0,0,0,0,0,169,170,218,17,191,187,187,251,
+  255,255,255,255,187,187,187,31,209,174,170,137,8,0,0,0,0,0,84,170,170,23,17,191,187,187,187,187,187,187,187,187,
+  223,17,167,170,154,136,4,0,0,0,0,0,64,165,170,170,23,17,253,187,187,187,187,187,251,29,17,237,170,170,133,72,
+  0,0,0,0,0,0,0,128,169,170,170,215,17,209,221,255,255,221,17,209,167,170,170,89,136,4,0,0,0,0,0,0,
+  0,0,84,169,170,170,234,215,29,17,17,221,119,174,170,170,90,136,4,0,0,0,0,0,0,0,0,0,64,88,169,170,
+  170,170,170,170,170,170,170,170,170,89,136,72,0,0,0,0,0,0,0,0,0,0,0,64,136,149,169,170,170,170,170,170,
+  170,153,133,136,72,0,0,0,0,0,0,0,0,0,0,0,0,0,64,132,136,136,136,136,136,136,136,136,136,68,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,68,68,68,68,68,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,178,102,170,170,170,170,170,106,182,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,
+  166,170,170,170,170,170,170,170,170,170,170,38,0,0,0,0,0,0,0,0,0,0,0,0,32,166,170,170,234,124,221,221,
+  221,125,236,170,170,170,38,0,0,0,0,0,0,0,0,0,0,0,166,170,170,222,17,17,221,119,119,29,17,209,172,170,
+  170,38,0,0,0,0,0,0,0,0,0,162,170,170,28,17,205,51,51,51,51,51,195,29,17,167,170,170,2,0,0,0,
+  0,0,0,0,176,170,170,30,17,55,51,51,51,51,51,51,51,51,23,17,172,170,186,0,0,0,0,0,0,0,171,170,
+  218,17,55,51,51,51,51,51,51,51,51,51,51,23,209,170,170,11,0,0,0,0,0,176,170,234,29,61,51,51,51,51,
+  51,51,51,51,51,51,51,51,29,225,170,186,0,0,0,0,0,162,170,30,209,51,51,51,51,51,51,51,51,51,51,51,
+  51,51,115,17,174,170,2,0,0,0,0,170,234,17,55,51,51,51,51,51,51,51,51,51,51,51,51,51,51,28,225,170,
+  42,0,0,0,96,170,218,113,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,195,17,170,106,0,0,0,162,170,
+  29,61,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,23,173,170,11,0,0,166,234,209,51,51,51,51,51,
+  51,51,51,51,51,51,51,51,51,51,51,51,211,193,170,9,0,32,170,26,49,51,51,51,51,51,51,51,51,51,51,51,
+  51,51,51,51,51,51,51,17,170,250,0,96,170,28,55,51,51,51,195,119,119,204,204,204,204,204,204,204,204,60,51,51,
+  51,23,167,154,0,160,170,17,51,51,51,51,28,209,29,17,17,17,17,17,17,17,17,193,51,51,51,211,161,170,4,162,
+  234,113,51,51,51,51,29,174,234,17,238,238,238,238,238,238,238,193,51,51,51,195,193,170,5,171,218,49,51,204,204,204,
+  221,170,170,29,170,170,170,170,170,170,234,193,204,204,60,51,209,170,73,166,26,61,51,204,204,204,125,170,170,23,170,170,
+  170,170,170,170,234,193,204,204,60,51,23,170,73,166,30,55,195,204,204,204,29,170,170,17,170,170,170,170,170,170,234,193,
+  204,204,204,51,28,174,74,170,28,51,195,204,204,204,29,205,220,17,221,221,221,221,221,221,221,193,204,204,204,51,19,167,
+  138,170,23,51,195,204,204,204,220,17,17,221,221,221,221,221,221,221,221,205,204,204,204,51,211,173,138,170,221,51,204,204,
+  204,204,28,17,17,17,17,17,17,17,17,17,17,193,204,204,204,60,211,173,138,170,221,51,204,204,204,204,29,237,222,17,
+  204,204,204,204,204,204,124,193,204,204,204,60,115,161,138,170,125,51,204,204,204,204,221,170,170,29,170,170,170,170,170,170,
+  234,113,204,204,204,60,115,161,138,170,125,51,204,204,204,204,125,238,238,23,238,238,238,238,238,238,238,113,204,204,204,60,
+  115,161,138,170,125,51,204,204,204,204,221,238,238,29,238,238,238,238,238,238,238,113,204,204,204,60,115,161,138,170,221,51,
+  204,204,204,204,29,237,222,17,119,119,119,119,119,119,119,113,204,204,204,60,115,161,138,170,221,51,204,204,204,204,23,17,
+  17,17,17,17,17,17,17,17,17,113,204,204,204,60,211,173,138,170,23,51,204,204,204,204,215,17,17,221,221,221,221,221,
+  221,221,221,125,204,204,204,60,211,173,138,170,28,60,124,119,119,119,29,205,220,17,221,221,221,221,221,221,221,113,119,119,
+  119,60,19,167,138,166,30,55,115,119,119,119,17,238,238,17,238,238,238,238,238,238,238,113,119,119,119,51,28,172,138,166,
+  26,61,195,119,119,119,209,238,238,29,238,238,238,238,238,238,238,113,119,119,199,51,23,174,137,171,218,193,195,119,119,119,
+  209,238,238,29,238,238,238,238,238,238,238,113,119,119,199,51,209,170,137,162,202,113,51,124,119,119,29,236,206,17,238,238,
+  238,238,238,238,206,113,119,119,60,115,113,170,69,160,170,17,60,124,119,119,23,17,17,17,17,17,17,17,17,17,17,113,
+  119,119,60,211,161,170,72,96,170,23,199,204,119,119,119,221,221,119,119,119,119,119,119,119,119,119,119,199,204,23,173,154,
+  72,32,170,26,193,204,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,199,204,17,174,90,8,0,166,202,209,204,
+  124,119,119,119,119,119,119,119,119,119,119,119,119,119,119,204,220,113,170,138,4,0,162,170,29,199,204,119,119,119,119,119,
+  119,119,119,119,119,119,119,119,199,204,23,173,170,133,4,0,96,170,26,113,204,124,119,119,119,119,119,119,119,119,119,119,
+  119,119,204,124,17,174,154,72,0,0,32,170,234,17,199,204,124,119,119,119,119,119,119,119,119,119,119,204,204,23,225,170,
+  90,72,0,0,0,171,170,30,113,204,204,119,119,119,119,119,119,119,119,119,199,204,124,17,174,170,133,4,0,0,0,176,
+  170,234,17,205,204,204,119,119,119,119,119,119,119,199,204,204,29,225,170,154,136,0,0,0,0,0,169,170,218,17,199,204,
+  204,124,119,119,119,119,204,204,204,23,209,174,170,137,8,0,0,0,0,0,84,170,170,28,17,199,204,204,204,204,204,204,
+  204,204,215,17,167,170,154,136,4,0,0,0,0,0,64,165,170,170,23,17,125,204,204,204,204,204,124,29,17,237,170,170,
+  133,72,0,0,0,0,0,0,0,128,169,170,170,220,17,209,221,119,119,221,17,209,167,170,170,89,136,4,0,0,0,0,
+  0,0,0,0,84,169,170,170,234,215,29,17,17,221,199,174,170,170,90,136,4,0,0,0,0,0,0,0,0,0,64,88,
+  169,170,170,170,170,170,170,170,170,170,170,89,136,72,0,0,0,0,0,0,0,0,0,0,0,64,136,149,169,170,170,170,
+  170,170,170,153,133,136,72,0,0,0,0,0,0,0,0,0,0,0,0,0,64,132,136,136,136,136,136,136,136,136,136,68,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,68,68,68,68,68,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,194,102,170,170,170,170,170,106,198,2,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,32,166,170,170,170,170,170,170,170,170,170,170,38,0,0,0,0,0,0,0,0,0,0,0,0,32,166,170,170,234,190,
+  187,187,187,187,238,170,170,170,38,0,0,0,0,0,0,0,0,0,0,0,166,170,170,190,17,17,187,119,183,27,17,177,
+  174,170,170,38,0,0,0,0,0,0,0,0,0,162,170,170,30,17,219,51,51,51,51,51,211,27,17,174,170,170,2,0,
+  0,0,0,0,0,0,192,170,170,30,17,55,51,51,51,51,51,51,51,51,23,17,174,170,202,0,0,0,0,0,0,0,
+  172,170,186,17,55,51,51,51,51,51,51,51,51,51,51,23,177,170,170,12,0,0,0,0,0,192,170,170,17,59,51,51,
+  51,51,51,51,51,51,51,51,51,51,27,161,170,202,0,0,0,0,0,162,170,26,177,51,51,51,51,51,51,51,51,51,
+  51,51,51,51,115,17,174,170,2,0,0,0,0,170,170,17,55,51,51,51,51,51,51,51,51,51,51,51,51,51,51,29,
+  225,170,42,0,0,0,96,170,26,113,51,51,51,183,187,187,61,51,51,51,51,51,51,51,51,211,17,170,106,0,0,0,
+  162,170,27,59,51,51,51,27,187,27,17,123,51,51,51,51,51,51,51,51,23,171,170,12,0,0,166,234,17,51,51,51,
+  51,123,170,58,190,17,177,215,51,51,51,51,51,51,179,225,170,9,0,32,170,26,49,51,51,51,51,123,51,51,51,227,
+  27,17,123,61,51,51,51,51,51,17,170,250,0,96,170,30,55,51,51,51,51,123,51,51,51,51,51,190,17,17,215,51,
+  51,51,51,23,171,154,0,160,170,17,51,51,51,51,51,123,51,51,51,51,51,51,227,23,17,113,51,51,51,19,161,170,
+  4,162,234,113,51,211,221,221,221,123,51,51,51,51,51,51,51,51,125,177,221,221,51,211,225,170,5,172,186,49,51,221,
+  221,221,221,123,51,51,51,51,51,51,51,51,23,177,221,221,61,51,177,170,73,166,26,59,51,221,221,221,221,113,51,51,
+  51,51,51,51,115,27,17,219,221,221,61,51,27,170,73,166,30,55,211,221,221,221,221,177,51,51,51,51,51,189,17,177,
+  215,221,221,221,221,51,29,174,74,170,30,51,211,221,221,221,221,177,51,51,51,211,27,17,123,221,221,221,221,221,221,51,
+  19,171,138,170,27,51,211,221,221,221,221,177,51,51,189,17,17,215,221,221,221,221,221,221,221,51,179,171,138,170,187,51,
+  221,221,221,221,221,177,51,23,17,177,221,221,221,221,221,221,221,221,221,61,179,171,138,170,187,51,221,221,221,221,221,177,
+  221,27,123,221,221,221,221,221,221,221,221,221,221,61,115,161,138,170,123,51,221,221,221,221,221,177,221,27,221,221,221,221,
+  221,221,221,221,221,221,221,61,115,161,138,170,123,51,221,221,221,221,221,177,221,27,221,221,221,221,221,221,221,221,221,221,
+  221,61,115,161,138,170,123,51,221,221,221,221,221,177,221,27,221,221,221,221,221,221,221,221,221,221,221,61,115,161,138,170,
+  187,51,221,221,221,221,221,177,221,27,221,221,221,221,221,221,221,221,221,221,221,61,115,161,138,170,187,51,221,221,221,221,
+  221,177,221,27,221,221,221,221,221,221,221,221,221,221,221,61,179,171,138,170,27,51,221,221,221,221,221,177,221,27,221,221,
+  221,221,221,221,221,221,221,221,221,61,179,171,138,170,30,61,125,119,119,119,119,177,221,27,119,119,119,119,119,119,119,119,
+  119,119,119,61,19,171,138,166,30,55,115,119,119,119,119,177,221,27,119,119,119,119,119,119,119,119,119,119,119,51,29,174,
+  138,166,26,59,211,119,119,119,119,177,221,27,119,119,119,119,119,119,119,119,119,119,215,51,27,170,137,172,186,209,211,119,
+  119,119,119,177,119,27,119,119,119,119,119,119,119,119,119,119,215,51,17,170,137,162,234,113,51,125,119,119,119,177,119,27,
+  119,119,119,119,119,119,119,119,119,119,61,115,225,170,69,160,170,17,221,125,119,119,119,177,119,27,119,119,119,119,119,119,
+  119,119,119,119,221,189,161,170,72,96,170,30,215,221,119,119,119,177,119,27,119,119,119,119,119,119,119,119,119,215,221,23,
+  171,154,72,32,170,26,209,221,119,119,119,177,119,27,119,119,119,119,119,119,119,119,119,215,221,17,170,90,8,0,166,234,
+  177,221,125,119,119,177,119,27,119,119,119,119,119,119,119,119,119,221,189,225,170,138,4,0,162,170,27,219,221,119,119,17,
+  17,17,119,119,119,119,119,119,119,119,215,221,23,171,170,133,4,0,96,170,26,113,221,125,119,27,17,177,119,119,119,119,
+  119,119,119,119,221,125,17,170,154,72,0,0,32,170,170,17,215,221,125,119,119,119,119,119,119,119,119,119,119,221,221,23,
+  225,170,90,72,0,0,0,172,170,30,177,221,221,119,119,119,119,119,119,119,119,119,215,221,125,17,174,170,133,4,0,0,
+  0,192,170,234,17,219,221,221,119,119,119,119,119,119,119,215,221,221,27,225,170,154,136,0,0,0,0,0,169,170,186,17,
+  215,221,221,125,119,119,119,119,221,221,221,23,177,170,170,137,8,0,0,0,0,0,84,170,170,30,17,215,221,221,221,221,
+  221,221,221,221,23,17,174,170,154,136,4,0,0,0,0,0,64,165,170,170,27,17,123,221,221,221,221,221,125,27,17,171,
+  170,170,133,72,0,0,0,0,0,0,0,128,169,170,170,190,17,17,187,119,183,187,17,17,174,170,170,89,136,4,0,0,
+  0,0,0,0,0,0,84,169,170,170,234,187,27,17,17,187,235,170,170,170,90,136,4,0,0,0,0,0,0,0,0,0,
+  64,88,169,170,170,170,170,170,170,170,170,170,170,89,136,72,0,0,0,0,0,0,0,0,0,0,0,64,136,149,169,170,
+  170,170,170,170,170,153,133,136,72,0,0,0,0,0,0,0,0,0,0,0,0,0,64,132,136,136,136,136,136,136,136,136,
+  136,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,68,68,68,68,68,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,226,119,204,204,204,204,204,124,231,2,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,32,199,204,204,204,204,204,204,204,204,204,204,39,0,0,0,0,0,0,0,0,0,0,0,0,32,199,204,204,
+  60,141,255,255,255,143,61,204,204,204,39,0,0,0,0,0,0,0,0,0,0,0,199,204,204,253,17,17,255,136,248,31,
+  17,241,205,204,204,39,0,0,0,0,0,0,0,0,0,194,204,204,29,17,223,51,51,51,51,51,211,31,17,200,204,204,
+  2,0,0,0,0,0,0,0,224,204,204,29,17,56,51,51,51,51,51,51,51,51,24,17,205,204,236,0,0,0,0,0,
+  0,0,206,204,252,17,56,51,51,51,51,51,51,51,51,51,51,24,241,204,204,14,0,0,0,0,0,224,204,204,31,63,
+  51,51,51,51,51,51,51,51,51,51,51,51,31,193,204,236,0,0,0,0,0,194,204,28,241,51,51,51,51,51,51,51,
+  51,51,51,51,51,51,131,17,195,204,2,0,0,0,0,204,204,17,56,51,51,51,51,51,51,51,51,51,51,51,51,51,
+  51,29,49,204,44,0,0,0,112,204,252,129,51,51,51,248,255,255,61,51,51,51,51,51,51,51,51,211,17,204,124,0,
+  0,0,194,204,31,63,51,51,51,255,255,31,17,143,51,51,51,51,51,51,51,51,24,207,204,14,0,0,199,220,241,51,
+  51,51,211,143,204,60,253,17,241,216,51,51,51,51,51,51,243,209,204,10,0,32,204,28,49,51,51,51,31,241,51,51,
+  51,211,31,17,143,61,51,51,51,51,51,17,204,92,0,112,204,29,56,51,51,243,177,27,63,51,51,51,51,141,17,17,
+  216,51,51,51,51,24,200,172,0,192,204,17,51,51,51,29,107,182,241,51,51,51,51,51,211,24,17,129,51,51,51,243,
+  193,204,4,194,220,129,51,211,221,29,107,102,27,63,51,51,51,51,51,51,141,241,221,221,51,211,209,204,5,206,252,49,
+  51,221,221,253,177,102,182,241,51,51,51,51,51,51,24,241,221,221,61,51,241,204,74,199,28,63,51,221,221,221,31,107,
+  102,27,63,51,51,51,131,31,17,223,221,221,61,51,24,204,74,199,19,56,211,221,221,221,253,177,102,182,241,51,51,253,
+  17,241,216,221,221,221,221,51,29,205,76,204,29,51,211,221,221,221,221,17,107,102,27,223,31,17,143,221,221,221,221,221,
+  221,51,19,200,156,204,24,51,211,221,221,221,221,31,177,102,182,17,241,216,221,221,221,221,221,221,221,51,243,207,156,204,
+  255,51,221,221,221,221,221,255,31,107,102,27,223,221,221,221,221,221,221,221,221,61,243,207,156,204,255,51,221,221,221,221,
+  221,255,253,177,102,182,241,221,221,221,221,221,221,221,221,61,131,193,156,204,143,51,221,221,221,221,221,255,221,31,107,102,
+  27,223,221,221,221,221,221,221,221,61,131,193,156,204,143,51,221,221,221,221,221,255,221,31,177,102,182,241,221,221,221,221,
+  221,221,221,61,131,193,156,204,143,51,221,221,221,221,221,255,221,31,31,107,102,27,223,221,221,221,221,221,221,61,131,193,
+  156,204,255,51,221,221,221,221,221,255,221,255,253,177,102,182,241,221,221,221,221,221,221,61,131,193,156,204,255,51,221,221,
+  221,221,221,241,221,31,221,31,107,102,27,223,221,221,221,221,221,61,243,207,156,204,24,51,141,136,136,136,136,241,221,31,
+  136,248,177,102,182,241,136,136,136,136,136,61,243,207,156,204,29,61,141,136,136,136,136,241,221,31,136,136,31,107,102,27,
+  143,136,136,136,136,61,19,200,156,199,19,56,131,136,136,136,136,241,221,31,136,136,248,177,102,182,241,136,136,136,136,51,
+  29,205,156,199,28,63,211,136,136,136,136,241,221,31,136,136,136,31,107,102,27,143,136,136,216,51,24,204,154,206,252,209,
+  211,136,136,136,136,241,136,31,136,136,136,248,177,102,182,241,136,136,216,51,241,204,154,194,220,129,221,141,136,136,136,241,
+  136,31,136,136,136,136,31,107,102,27,136,136,221,141,129,204,69,192,204,17,221,141,136,136,136,241,136,31,136,136,136,136,
+  248,177,102,27,136,136,221,253,193,204,73,112,204,24,216,221,136,136,136,241,136,31,136,136,136,136,136,31,187,241,136,216,
+  221,24,207,172,73,32,204,28,209,221,136,136,136,241,136,31,136,136,136,136,136,248,17,143,136,216,221,17,204,92,9,0,
+  199,220,241,221,141,136,136,241,136,31,136,136,136,136,136,136,136,136,136,221,253,129,204,156,4,0,194,204,31,216,221,136,
+  136,17,255,17,136,136,136,136,136,136,136,136,216,221,24,207,204,149,4,0,112,204,28,129,221,141,136,255,255,255,136,136,
+  136,136,136,136,136,136,221,141,17,204,172,73,0,0,32,204,204,17,216,221,141,136,136,136,136,136,136,136,136,136,136,221,
+  221,24,49,204,92,73,0,0,0,206,204,19,129,221,221,136,136,136,136,136,136,136,136,136,216,221,141,17,205,204,149,4,
+  0,0,0,224,204,60,17,223,221,221,136,136,136,136,136,136,136,216,221,221,31,49,204,172,153,0,0,0,0,0,202,204,
+  252,17,216,221,221,141,136,136,136,136,221,221,221,24,241,204,204,154,9,0,0,0,0,0,84,204,204,29,17,216,221,221,
+  221,221,221,221,221,221,248,17,200,204,172,153,4,0,0,0,0,0,64,197,204,204,24,17,143,221,221,221,221,221,141,31,
+  17,207,204,204,149,73,0,0,0,0,0,0,0,144,202,204,204,253,17,241,255,136,248,255,17,241,200,204,204,90,153,4,
+  0,0,0,0,0,0,0,0,84,202,204,204,220,248,31,17,17,255,216,204,204,204,92,153,4,0,0,0,0,0,0,0,
+  0,0,64,89,202,204,204,204,204,204,204,204,204,204,204,90,153,73,0,0,0,0,0,0,0,0,0,0,0,64,153,165,
+  202,204,204,204,204,204,204,170,149,153,73,0,0,0,0,0,0,0,0,0,0,0,0,0,64,148,153,153,153,153,153,153,
+  153,153,153,68,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,68,68,68,68,68,68,68,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,48,85,153,153,153,165,0,0,0,0,0,0,0,0,160,25,209,198,204,214,17,89,0,
+  0,0,0,0,0,48,25,193,119,119,119,119,71,29,169,0,0,0,0,0,26,193,119,119,119,119,119,119,199,17,5,0,
+  0,0,160,17,116,119,119,119,119,119,119,119,222,81,0,0,0,19,225,119,119,119,119,119,119,119,119,231,29,10,0,0,
+  25,116,119,119,119,231,214,77,119,119,119,30,49,0,160,97,119,119,103,102,22,97,17,126,119,119,199,81,0,144,113,231,
+  238,30,102,221,40,24,77,238,238,119,29,3,19,124,238,238,20,40,34,34,242,17,97,238,126,20,5,21,126,238,238,29,
+  34,34,34,34,130,214,238,126,23,57,213,231,238,28,241,34,34,43,34,34,214,238,238,103,57,105,231,238,29,40,34,216,
+  209,40,34,109,238,238,199,161,201,231,238,109,34,34,29,22,45,34,29,228,238,71,161,201,231,238,29,40,178,97,110,177,
+  34,24,237,238,71,81,201,71,68,20,189,187,29,22,189,187,107,77,68,71,81,105,71,68,100,189,187,216,209,184,187,31,
+  77,68,199,81,217,231,68,212,182,187,187,184,187,107,17,76,228,103,89,21,238,68,212,246,187,187,187,187,27,205,68,228,
+  30,169,26,236,68,100,17,97,187,187,187,24,76,68,228,20,169,144,237,78,68,204,29,191,31,109,29,76,68,238,29,53,
+  80,193,78,204,204,28,97,17,221,221,204,76,206,145,53,0,25,228,196,204,108,17,205,204,204,204,228,30,81,10,0,26,
+  77,78,204,204,204,204,204,204,76,238,29,89,3,0,80,209,228,206,204,204,204,204,204,238,212,145,165,0,0,0,21,193,
+  238,68,204,204,76,228,206,17,89,53,0,0,0,83,17,205,238,238,238,238,206,29,145,85,3,0,0,0,48,154,17,209,
+  198,204,102,17,145,85,58,0,0,0,0,0,48,85,153,17,17,145,153,85,165,0,0,0,0,0,0,0,48,90,85,85,
+  85,85,170,3,0,0,0,0,0,0,0,0,0,51,51,51,51,0,0,0,0,0,0,0,0,147,165,170,170,149,3,0,
+  0,0,0,0,80,17,113,79,127,17,81,3,0,0,0,48,26,75,238,238,238,206,27,49,0,0,0,19,241,238,238,238,
+  238,238,78,17,9,0,0,26,228,238,238,238,238,238,238,28,49,0,80,241,238,102,102,102,102,102,230,78,161,0,19,235,
+  110,70,68,68,68,68,102,238,27,3,25,228,102,22,119,27,123,23,102,230,28,10,21,110,102,22,34,24,40,18,102,102,
+  190,58,186,110,204,28,34,24,40,18,204,108,254,145,250,206,204,28,34,24,40,18,204,204,78,145,250,198,204,28,34,24,
+  40,18,204,204,70,145,250,198,204,28,221,24,216,29,204,204,70,145,186,198,68,20,221,24,216,29,68,196,246,145,21,198,
+  68,20,221,24,216,29,68,196,182,154,25,100,68,20,119,27,123,23,68,100,28,154,19,107,76,244,255,255,255,255,68,108,
+  27,149,80,241,198,68,68,68,68,68,196,70,161,53,48,17,100,76,255,255,255,79,108,20,81,9,0,25,241,198,68,255,
+  79,196,70,17,85,3,0,144,17,75,204,204,204,76,27,81,149,0,0,0,169,17,123,255,127,27,161,85,9,0,0,0,
+  48,165,26,17,17,170,85,149,0,0,0,0,0,147,85,85,85,85,149,3,0,0,0,0,0,0,48,51,51,51,0,0,
+  0,0,5,0,0,0,0,0,0,0,32,24,17,129,2,0,0,0,0,0,0,0,25,177,175,27,5,0,0,0,0,0,
+  0,137,17,223,51,179,5,0,0,0,0,0,82,17,123,51,51,163,5,0,0,0,0,80,17,203,51,51,51,163,5,0,
+  0,0,144,24,241,61,51,51,51,189,5,0,0,32,24,97,55,51,51,51,195,27,5,0,32,21,177,220,221,221,221,205,
+  27,129,5,0,21,17,218,221,221,221,125,22,129,85,2,137,17,127,221,221,221,221,31,17,88,149,130,17,203,221,221,221,
+  221,186,17,88,149,2,17,171,221,221,221,221,188,17,88,85,2,0,241,119,119,119,119,103,17,81,85,9,0,0,124,119,
+  119,119,247,17,129,85,41,0,0,0,119,119,119,167,27,129,85,37,0,0,0,0,119,119,119,247,17,129,149,0,0,0,
+  0,0,126,119,119,119,110,17,152,0,0,0,0,0,171,119,119,119,119,186,17,40,0,0,0,0,17,171,238,238,238,238,
+  186,17,5,0,0,0,25,17,230,238,238,238,238,31,17,9,0,0,144,24,17,239,238,238,238,78,22,129,9,0,0,82,
+  24,177,239,238,238,238,174,27,81,2,0,0,89,24,177,228,238,238,238,254,17,81,2,0,32,89,17,97,68,68,68,68,
+  100,17,5,0,0,32,137,17,241,68,68,68,68,180,5,0,0,0,32,133,17,251,68,68,68,100,5,0,0,0,0,144,
+  133,17,75,68,68,100,5,0,0,0,0,0,146,24,17,70,68,180,5,0,0,0,0,0,0,82,24,177,102,27,5,0,
+  0,0,0,0,0,0,82,24,17,129,15,0,0,0,0,0,0,0,0,0,0,58,0,0,0,0,0,0,0,0,0,0,
+  170,12,0,0,0,0,0,0,0,0,0,170,90,0,0,0,0,0,0,0,0,0,170,218,8,0,0,0,0,0,0,0,
+  0,170,170,45,0,0,0,0,0,0,0,0,170,170,122,0,0,0,0,0,0,0,0,170,170,170,12,0,0,0,0,0,
+  0,0,170,170,170,202,0,0,0,0,0,0,0,170,170,170,170,5,0,0,0,0,0,0,170,170,170,170,141,0,0,0,
+  0,0,0,170,170,170,170,218,2,0,0,0,0,0,170,170,170,170,170,7,0,0,0,0,0,170,170,170,170,170,202,0,
+  0,0,0,0,170,170,170,170,170,170,5,0,0,0,0,170,170,170,170,170,170,81,0,0,0,0,170,170,170,170,170,170,
+  218,8,0,0,0,170,170,170,170,170,170,170,45,0,0,0,170,170,170,170,170,170,170,122,0,0,0,170,170,170,170,170,
+  170,170,170,12,0,0,170,170,170,170,170,170,170,170,81,0,0,170,170,170,170,170,170,170,170,26,5,0,170,170,170,170,
+  170,170,170,170,170,141,0,170,170,170,170,170,170,170,170,170,218,2,17,17,17,17,17,17,17,17,17,225,6,17,17,17,
+  17,17,17,17,17,17,97,102,17,17,17,17,17,17,17,17,17,100,102,17,17,17,17,17,17,17,17,65,102,6,17,17,
+  17,17,17,17,17,17,107,102,2,17,17,17,17,17,17,17,225,102,38,0,17,17,17,17,17,17,17,110,102,2,0,17,
+  17,17,17,17,17,209,102,102,0,0,17,17,17,17,17,17,65,102,6,0,0,17,17,17,17,17,17,100,102,0,0,0,
+  17,17,17,17,17,177,102,38,0,0,0,17,17,17,17,17,110,102,2,0,0,0,17,17,17,17,225,102,38,0,0,0,
+  0,17,17,17,17,110,102,6,0,0,0,0,17,17,17,17,100,102,0,0,0,0,0,17,17,17,65,102,6,0,0,0,
+  0,0,17,17,17,107,102,2,0,0,0,0,0,17,17,225,102,38,0,0,0,0,0,0,17,17,110,102,2,0,0,0,
+  0,0,0,17,225,102,102,0,0,0,0,0,0,0,17,65,102,6,0,0,0,0,0,0,0,17,100,102,0,0,0,0,
+  0,0,0,0,145,102,38,0,0,0,0,0,0,0,0,7,102,2,0,0,0,0,0,0,0,0,0,38,0,0,0,0,
+  0,0,0,0,0,0,6,0,0,0,0,0,0,0,0,0,51,51,51,51,51,51,51,51,51,51,51,51,3,24,17,17,
+  17,17,17,17,17,17,17,17,17,15,120,34,34,34,34,34,34,34,34,34,34,226,15,120,34,34,34,34,34,34,34,34,
+  34,34,226,15,120,34,34,34,34,34,34,34,34,34,34,226,15,120,34,34,34,34,34,34,34,34,34,34,226,15,184,44,
+  34,34,34,34,194,204,204,204,204,236,15,184,204,34,34,34,34,204,204,204,204,204,124,15,184,204,204,204,204,204,204,204,
+  204,204,204,124,15,184,204,204,204,204,236,235,204,204,204,204,124,15,184,198,204,204,204,172,170,102,102,102,102,118,15,184,
+  102,204,204,204,172,170,102,102,102,102,118,15,184,102,204,204,204,236,235,102,102,102,102,118,15,168,109,102,102,102,102,102,
+  102,102,102,102,173,15,21,218,102,102,102,102,102,102,102,102,214,26,8,80,161,221,102,102,102,214,221,221,221,173,129,0,
+  0,21,218,221,102,102,214,221,221,221,26,8,0,0,80,161,212,109,102,221,221,221,173,129,0,0,0,0,21,74,221,221,
+  221,221,77,26,8,0,0,0,0,80,161,68,221,77,68,164,129,0,0,0,0,0,0,21,74,68,77,68,26,8,0,0,
+  0,0,0,0,80,161,68,68,164,129,0,0,0,0,0,0,0,0,21,74,68,26,8,0,0,0,0,0,0,0,0,80,
+  161,164,129,0,0,0,0,0,0,0,0,0,0,21,17,8,0,0,0,0,0,0,0,0,0,0,144,153,0,0,0,0,
+  0,0,51,51,51,51,51,51,51,51,51,51,51,51,3,24,17,17,17,17,17,17,17,17,17,17,17,12,248,34,34,34,
+  34,34,34,34,34,34,34,178,12,248,34,34,34,34,34,34,34,34,34,34,242,12,168,34,34,34,34,34,34,34,34,34,
+  34,242,12,168,45,34,34,34,34,210,221,221,221,221,253,12,168,221,34,34,34,34,221,221,221,221,221,253,12,168,221,221,
+  221,221,221,221,221,221,221,221,253,12,168,221,221,221,221,221,221,221,221,221,221,253,12,168,214,221,221,189,186,189,250,102,
+  102,102,246,12,168,102,221,221,118,119,118,119,107,102,102,246,12,168,102,221,221,118,119,118,119,107,102,102,166,12,168,102,
+  102,102,246,186,182,250,102,102,102,166,12,120,187,102,102,102,102,182,187,187,187,187,123,12,21,183,187,102,102,102,182,187,
+  187,187,187,23,8,80,113,180,107,102,102,187,187,187,187,123,129,0,0,21,71,187,102,102,187,187,187,75,23,8,0,0,
+  80,113,68,187,187,75,68,68,116,129,0,0,0,0,21,71,68,187,75,68,68,23,8,0,0,0,0,80,113,78,180,68,
+  68,116,129,0,0,0,0,0,0,21,231,68,68,228,23,8,0,0,0,0,0,0,80,113,238,238,126,129,0,0,0,0,
+  0,0,0,0,21,231,238,23,8,0,0,0,0,0,0,0,0,80,113,126,129,0,0,0,0,0,0,0,0,0,0,21,
+  17,8,0,0,0,0,0,0,0,0,0,0,144,153,0,0,0,0,0,0,51,51,51,51,51,51,51,51,51,51,51,51,
+  3,25,17,17,17,17,17,17,17,17,17,17,17,13,233,34,34,34,34,34,34,34,34,34,34,130,13,233,34,34,34,34,
+  34,34,34,34,34,34,130,13,233,34,34,34,34,34,34,34,34,34,34,130,13,233,34,34,34,34,34,34,34,34,34,34,
+  130,13,233,34,34,34,34,34,34,34,34,34,34,130,13,233,44,34,34,34,34,194,204,204,204,204,140,13,233,204,34,34,
+  34,34,194,204,204,204,204,140,13,233,204,34,130,110,130,142,108,142,204,204,236,13,233,204,204,248,127,124,127,118,255,200,
+  204,236,13,233,204,204,248,127,124,127,118,255,200,204,236,13,233,198,204,140,110,140,142,182,238,102,102,230,13,249,107,198,
+  204,204,204,108,102,102,102,102,118,13,21,191,102,204,204,204,102,102,102,102,102,23,9,80,241,107,198,204,204,102,102,102,
+  102,123,145,0,0,21,191,107,102,102,182,187,187,187,23,9,0,0,80,241,187,107,102,182,187,187,123,145,0,0,0,0,
+  21,79,187,102,182,187,187,23,9,0,0,0,0,80,241,180,107,187,187,116,145,0,0,0,0,0,0,21,79,180,75,68,
+  31,9,0,0,0,0,0,0,80,241,68,68,244,145,0,0,0,0,0,0,0,0,21,79,68,31,9,0,0,0,0,0,
+  0,0,0,80,241,244,145,0,0,0,0,0,0,0,0,0,0,21,17,9,0,0,0,0,0,0,0,0,0,0,160,170,
+  0,0,0,0,0,0,51,51,51,51,51,51,51,51,51,51,51,51,3,24,17,17,17,17,17,17,17,17,17,17,17,14,
+  168,34,34,34,34,34,34,34,34,34,34,242,14,168,34,34,34,34,34,34,34,34,34,34,242,14,168,34,34,34,34,34,
+  34,34,34,34,34,242,14,168,34,34,34,34,34,34,34,34,34,34,242,14,168,44,34,34,34,34,194,204,204,204,204,252,
+  14,168,44,34,34,34,34,194,204,204,204,204,252,14,168,204,34,34,34,34,204,204,204,204,204,252,14,168,204,242,202,242,
+  106,108,250,108,250,204,252,14,168,204,223,125,220,221,220,221,118,221,207,172,14,120,198,223,125,214,221,220,221,118,221,111,
+  166,14,120,198,252,106,252,250,188,247,182,167,102,166,14,216,107,198,204,204,204,108,102,102,102,102,214,14,21,189,102,204,
+  204,204,102,102,102,102,182,29,8,80,209,187,198,204,204,182,187,187,187,219,129,0,0,21,189,107,102,102,182,187,187,187,
+  29,8,0,0,80,209,180,107,102,182,187,187,219,129,0,0,0,0,21,77,187,102,182,187,75,29,8,0,0,0,0,80,
+  209,68,107,75,68,212,129,0,0,0,0,0,0,21,77,68,75,68,29,8,0,0,0,0,0,0,80,209,68,68,212,129,
+  0,0,0,0,0,0,0,0,21,77,68,29,8,0,0,0,0,0,0,0,0,80,209,212,129,0,0,0,0,0,0,0,
+  0,0,0,21,17,8,0,0,0,0,0,0,0,0,0,0,144,153,0,0,0,0,0,0,51,51,51,51,51,51,51,51,
+  51,51,51,51,3,25,17,17,17,17,17,17,17,17,17,17,17,13,185,34,34,34,34,34,34,34,34,34,34,130,13,185,
+  34,34,34,34,34,34,34,34,34,34,130,13,185,34,34,34,34,34,34,34,34,34,34,130,13,185,34,34,34,34,34,34,
+  34,34,34,34,130,13,185,46,34,34,34,34,226,238,238,238,238,142,13,185,238,34,34,34,34,238,238,238,238,238,142,13,
+  185,238,238,238,238,238,238,238,238,238,238,142,13,185,142,235,142,107,110,139,110,139,110,187,134,13,185,248,191,246,127,126,
+  127,118,255,184,255,187,13,185,248,191,248,127,126,127,118,255,184,255,187,13,185,182,107,142,107,142,139,198,139,102,187,182,
+  13,249,108,230,238,238,238,102,102,102,102,102,118,13,21,207,102,102,102,102,102,102,102,102,198,23,9,80,241,108,102,102,
+  102,102,102,102,102,124,145,0,0,21,207,108,102,102,198,204,204,204,23,9,0,0,80,241,204,108,102,198,204,204,124,145,
+  0,0,0,0,21,79,204,102,204,204,204,23,9,0,0,0,0,80,241,196,108,204,204,116,145,0,0,0,0,0,0,21,
+  79,196,76,68,31,9,0,0,0,0,0,0,80,241,68,68,244,145,0,0,0,0,0,0,0,0,21,79,68,31,9,0,
+  0,0,0,0,0,0,0,80,241,244,145,0,0,0,0,0,0,0,0,0,0,21,17,9,0,0,0,0,0,0,0,0,
+  0,0,160,170,0,0,0,0,0,0,0,0,0,68,2,0,0,0,0,240,193,4,0,0,0,0,160,85,10,0,0,0,
+  0,30,221,225,0,0,103,26,145,51,25,161,118,199,219,51,51,51,189,124,162,220,51,51,51,205,42,32,202,56,51,131,
+  172,2,0,18,59,51,179,33,0,0,18,61,221,211,33,0,0,199,83,17,53,124,0,0,199,28,68,193,124,0,0,66,
+  36,0,66,36,0,0,0,0,0,0,68,2,0,0,0,0,0,0,0,0,192,17,4,0,0,0,0,0,0,0,0,96,
+  93,10,0,0,0,0,0,0,0,0,25,248,145,0,0,0,0,0,0,0,0,123,51,183,0,0,0,0,0,0,0,32,
+  225,51,30,2,0,0,0,0,0,0,192,49,51,19,12,0,0,0,153,204,68,171,61,51,211,186,68,204,153,113,215,93,
+  238,63,51,243,238,213,125,23,113,63,51,51,51,51,51,51,51,243,23,169,247,51,51,51,51,51,51,51,127,154,32,26,
+  56,51,51,51,51,51,131,161,2,0,98,225,51,51,51,51,51,30,38,0,0,0,27,62,51,51,51,227,177,0,0,0,
+  0,16,56,51,51,51,131,1,0,0,0,0,25,51,51,51,51,51,145,0,0,0,0,116,51,51,255,51,51,71,0,0,
+  0,0,86,51,227,17,53,51,101,0,0,0,0,129,131,23,68,113,56,24,0,0,0,144,241,29,150,0,98,209,31,9,
+  0,0,144,17,202,0,0,0,172,17,9,0,0,32,68,2,0,0,0,32,68,2,0,0,0,0,153,0,0,0,0,0,
+  249,187,150,0,0,0,105,171,238,26,44,0,194,209,238,238,238,29,44,133,231,238,238,238,126,88,165,119,119,238,119,119,
+  90,165,119,119,51,119,119,90,213,122,51,51,51,167,93,213,170,58,51,163,170,93,213,170,234,51,174,170,93,213,68,228,
+  170,78,68,93,181,68,68,68,68,68,91,194,129,68,68,68,24,44,0,105,129,136,24,150,0,0,0,249,177,159,0,0,
+  0,0,0,153,2,0,0,0,0,0,238,0,0,0,0,0,183,25,118,0,0,0,110,161,51,21,207,0,130,81,51,51,
+  51,21,40,148,51,51,51,51,51,73,164,51,51,90,51,51,74,84,170,170,153,170,170,69,84,170,153,153,153,170,69,84,
+  170,154,153,169,170,69,84,170,154,153,169,170,69,84,85,149,85,89,85,69,148,85,85,85,85,85,73,130,145,85,85,85,
+  25,200,0,110,145,85,25,230,0,0,0,189,17,219,0,0,0,0,0,221,2,0,0,0,0,0,0,0,144,9,0,0,
+  0,0,0,0,0,0,0,144,184,139,9,0,0,0,0,0,0,0,32,184,252,207,235,2,0,0,0,0,0,32,30,250,
+  255,255,175,225,2,0,0,0,0,21,122,255,255,255,255,167,81,0,0,0,137,203,255,255,255,255,255,255,188,152,0,130,
+  75,255,255,255,255,255,255,255,255,180,40,174,119,119,119,119,247,127,119,119,119,119,234,206,119,119,119,119,247,127,119,119,
+  119,119,236,206,119,119,119,119,55,115,119,119,119,119,236,206,119,119,119,119,55,115,119,119,119,119,236,206,119,119,119,119,
+  63,243,119,119,119,119,236,206,204,124,51,51,51,51,51,51,199,204,236,206,204,204,55,51,51,51,51,115,204,204,236,78,
+  204,204,204,63,51,51,243,204,204,204,228,78,204,204,204,60,51,51,195,204,204,204,228,78,68,68,68,60,51,51,195,68,
+  68,68,228,78,68,68,68,55,115,55,115,68,68,68,228,222,68,68,68,255,76,196,255,68,68,68,237,222,68,68,68,71,
+  68,68,116,68,68,68,237,110,77,68,68,68,68,68,68,68,68,212,230,130,97,221,221,221,221,221,221,221,221,22,40,0,
+  137,219,221,221,221,221,221,221,189,152,0,0,0,21,219,221,221,221,221,189,81,0,0,0,0,32,30,214,221,221,109,225,
+  2,0,0,0,0,0,32,24,214,109,129,9,0,0,0,0,0,0,0,144,184,27,5,0,0,0,0,0,0,0,0,0,
+  80,37,0,0,0,0,0,0,0,0,0,0,240,15,0,0,0,0,0,0,0,0,0,112,141,97,15,0,0,0,0,0,
+  0,0,176,22,58,83,145,11,0,0,0,0,0,32,20,53,51,51,83,65,2,0,0,0,0,220,232,51,51,51,51,142,
+  205,0,0,0,215,168,51,51,51,51,51,51,26,125,0,107,81,51,51,51,51,51,51,51,51,21,182,137,238,238,238,238,
+  238,238,238,238,238,238,152,169,238,238,238,238,174,229,238,238,238,238,154,169,238,238,238,238,142,232,238,238,238,238,154,169,
+  238,238,238,238,138,168,238,238,238,238,154,169,238,238,238,238,133,88,238,238,238,238,154,169,170,170,136,136,136,136,136,136,
+  170,170,154,169,170,170,138,136,136,136,136,168,170,170,154,169,170,170,170,133,136,136,88,170,170,170,154,89,170,170,170,138,
+  136,136,168,170,170,170,149,89,170,170,170,133,136,136,88,170,170,170,149,89,170,170,170,133,88,133,88,170,170,170,149,89,
+  85,85,85,136,85,85,136,85,85,85,149,89,85,85,85,85,85,85,85,85,85,85,149,137,85,85,85,85,85,85,85,85,
+  85,85,152,107,129,85,85,85,85,85,85,85,85,24,182,0,215,129,85,85,85,85,85,85,21,125,0,0,0,220,81,85,
+  85,85,85,133,77,0,0,0,0,32,25,88,85,85,133,145,2,0,0,0,0,0,176,22,88,133,97,15,0,0,0,0,
+  0,0,0,112,29,209,12,0,0,0,0,0,0,0,0,0,192,44,0,0,0,0,0,2,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,166,
+  8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,138,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,102,166,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,138,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,166,8,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,102,102,102,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,102,102,102,166,8,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,108,102,102,102,138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,205,
+  102,102,102,166,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,218,108,102,102,118,138,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,163,205,102,102,102,167,8,0,0,0,0,0,0,0,0,0,0,0,0,0,51,218,108,102,102,
+  118,138,0,0,0,0,0,0,0,0,0,0,0,0,0,51,163,205,102,102,102,167,8,0,0,0,0,0,0,0,0,0,
+  0,0,0,51,51,218,113,119,119,119,138,0,0,0,0,0,0,0,0,0,0,0,0,51,51,163,253,119,119,119,167,8,
+  0,0,0,0,0,0,0,0,0,0,0,51,51,51,218,127,119,119,119,138,0,0,0,0,0,0,0,0,0,0,0,51,
+  51,51,163,253,119,119,119,167,8,0,0,0,0,0,0,0,0,0,0,62,51,51,51,218,127,119,119,119,138,0,0,0,
+  0,0,0,0,0,0,0,237,51,51,51,169,253,119,119,119,167,8,0,0,0,0,0,0,0,0,0,218,62,51,51,147,
+  218,127,119,119,199,138,0,0,0,0,0,0,0,0,0,166,237,51,51,51,169,253,119,119,119,172,8,0,0,0,0,0,
+  0,0,0,102,218,158,153,153,153,218,127,119,119,199,138,0,0,0,0,0,0,0,0,102,166,237,153,153,153,169,253,204,
+  204,204,172,8,0,0,0,0,0,0,0,102,118,218,158,153,153,153,218,207,204,204,204,138,0,0,0,0,0,0,0,102,
+  102,167,237,153,153,153,169,253,204,204,204,172,8,0,0,0,0,0,0,119,119,119,218,158,153,153,153,218,207,204,204,204,
+  138,0,0,0,0,0,0,119,119,119,167,237,153,153,153,165,253,204,204,204,172,8,0,0,0,0,0,127,119,119,119,218,
+  155,153,153,89,218,207,204,204,204,138,0,0,0,0,0,253,119,119,119,172,189,153,153,153,165,253,204,204,204,161,8,0,
+  0,0,0,218,127,119,119,199,218,91,85,85,85,218,207,204,204,28,138,0,0,0,0,163,253,204,204,204,172,189,85,85,
+  85,165,253,17,17,17,161,8,0,0,0,147,218,207,204,204,204,218,91,85,85,85,218,31,17,17,17,138,0,0,0,153,
+  169,253,204,204,204,172,189,85,85,85,165,253,17,17,17,161,8,0,0,153,153,218,207,204,204,28,218,91,85,85,85,218,
+  31,17,17,17,138,0,0,153,153,165,253,17,17,17,161,189,85,85,85,165,253,17,17,17,161,8,0,85,85,85,218,31,
+  17,17,17,218,91,85,85,85,218,31,17,17,17,138,0,85,85,85,165,253,17,17,17,161,189,85,85,85,165,253,17,17,
+  17,161,2,68,68,68,68,72,68,68,68,68,72,68,68,68,68,72,68,68,68,68,2,0,83,85,85,85,85,85,85,53,
+  0,48,29,187,187,187,187,187,119,145,0,211,241,34,34,34,34,114,17,17,10,21,47,34,34,34,34,22,140,28,9,181,
+  34,34,34,34,242,225,136,24,9,181,34,34,34,34,239,129,136,28,9,181,255,255,255,255,23,140,200,17,9,181,118,119,
+  246,191,65,136,236,190,9,117,225,231,97,22,199,204,30,182,9,117,193,204,30,225,204,124,177,191,9,117,193,204,20,65,
+  204,20,247,191,9,117,225,204,76,196,76,225,246,191,9,117,27,78,68,68,228,97,102,182,9,117,182,225,68,68,30,107,
+  102,182,9,117,102,23,71,116,177,102,102,182,9,117,102,230,225,30,110,102,102,118,9,21,107,102,231,126,102,102,102,230,
+  9,147,225,119,119,119,119,119,119,30,10,0,154,153,153,153,153,153,153,169,0,0,83,85,85,85,85,85,85,53,0,48,
+  186,68,68,68,68,68,68,139,0,163,219,34,34,34,34,34,34,28,9,181,45,34,34,34,34,34,34,114,15,69,34,34,
+  34,34,34,34,34,66,15,69,34,34,34,34,34,34,34,66,15,229,221,221,221,221,221,221,221,77,15,229,221,221,221,221,
+  221,221,221,77,15,229,221,221,221,221,221,221,221,77,15,229,221,221,221,221,221,221,221,77,15,229,102,102,102,102,102,102,
+  102,70,15,229,102,102,102,102,102,102,102,70,15,229,102,102,102,102,102,102,102,70,15,229,102,102,102,102,102,102,102,230,
+  15,229,204,204,204,204,204,204,204,236,15,229,204,204,204,204,204,204,204,236,15,181,206,204,204,204,204,204,204,188,15,243,
+  177,238,238,238,238,238,238,27,9,0,249,255,255,255,255,255,255,159,0,0,231,5,250,7,248,5,246,3,211,1,250,4,
+  232,3,0,0,0,1,0,211,158,48,79,0,250,250,195,29,0,250,250,248,53,2,211,175,190,252,95,0,144,111,143,191,
+  0,243,40,175,175,0,232,1,248,45,0,16,0,0,0,230,4,248,6,245,3,48,0,209,9,246,8,252,4,254,2,255,
+  1,254,2,251,5,245,8,160,7,244,4,243,12,224,47,192,79,176,95,192,79,224,31,243,10,195,2,0,34,0,0,187,
+  0,115,221,55,180,238,75,0,187,0,0,119,0,49,0,250,3,248,5,226,1,50,0,65,36,246,239,64,36,49,0,250,
+  4,232,3,0,68,0,174,64,95,144,31,224,11,244,6,249,1,189,0,74,0,128,238,9,246,238,127,250,86,191,251,69,
+  207,250,87,191,245,238,127,128,238,9,32,251,5,243,255,8,178,252,8,0,249,8,0,249,8,177,253,157,226,255,223,195,
+  239,26,230,252,111,0,160,127,0,245,46,80,239,3,243,223,107,244,255,159,195,239,26,229,236,143,32,199,111,96,255,62,
+  0,148,175,231,236,175,196,239,42,0,193,13,0,250,31,96,255,31,226,248,31,250,252,175,182,251,175,0,192,13,245,255,
+  79,248,189,43,248,189,8,247,255,143,98,113,191,233,236,143,196,239,25,80,252,109,243,207,157,249,137,6,251,255,143,250,
+  90,207,245,189,175,112,254,27,249,255,175,182,235,191,0,225,79,0,249,10,48,255,2,176,159,0,208,29,0,161,254,59,
+  248,188,175,245,188,143,227,255,111,250,38,239,250,155,223,161,254,60,161,239,7,249,219,95,251,166,175,247,255,191,96,152,
+  159,217,252,63,230,207,5,232,3,250,4,98,0,250,4,232,3,213,207,4,218,253,12,0,248,9,0,143,0,0,24,0,
+  96,127,0,80,110,0,0,226,12,0,0,250,111,0,48,191,222,0,160,79,248,6,242,255,255,13,250,138,200,95,219,1,
+  48,126,245,255,174,1,247,140,253,7,248,74,252,5,248,255,223,1,248,74,249,10,247,140,251,10,245,255,191,2,32,233,
+  223,5,209,239,236,8,245,30,0,0,247,12,0,0,245,30,0,0,209,239,236,8,32,234,223,5,245,255,174,2,247,189,
+  254,29,248,9,209,111,248,9,144,127,248,9,209,111,247,189,254,29,245,255,174,2,245,255,159,247,140,72,248,74,20,248,
+  255,127,248,74,20,247,140,72,245,255,159,245,255,159,247,140,72,248,74,20,248,255,127,248,74,20,248,9,0,245,6,0,
+  32,234,223,8,209,239,236,11,245,29,67,2,247,9,255,14,246,12,195,15,209,239,236,15,32,234,223,8,245,6,160,46,
+  248,9,208,79,248,140,232,79,248,255,255,79,248,74,212,79,248,9,208,79,245,6,160,46,245,6,248,9,248,9,248,9,
+  248,9,248,9,245,6,0,232,3,0,251,5,0,251,5,0,251,5,0,251,5,177,255,4,226,158,0,245,6,228,9,248,
+  41,254,6,248,218,127,0,248,255,30,0,248,202,191,0,248,41,253,8,245,6,211,11,245,6,0,248,9,0,248,9,0,
+  248,9,0,248,9,0,248,189,107,245,255,159,229,7,0,233,3,248,47,64,255,5,248,191,192,255,5,248,255,251,255,5,
+  248,234,207,251,5,248,89,62,251,5,229,6,0,233,3,229,6,208,12,248,79,241,15,248,239,244,15,248,253,253,15,248,
+  153,255,15,248,9,251,15,229,6,193,13,32,234,207,4,209,223,252,79,245,12,128,191,247,9,64,207,245,12,128,191,209,
+  223,252,79,32,234,207,4,245,255,174,1,248,140,253,7,248,9,249,8,248,255,255,3,248,140,55,0,248,9,0,0,245,
+  6,0,0,32,234,207,4,209,223,252,79,245,12,128,191,247,9,64,207,245,12,128,191,209,223,252,79,32,234,255,10,0,
+  0,226,111,0,0,64,110,245,255,174,1,248,140,253,7,248,9,249,8,248,255,255,3,248,204,159,0,248,41,254,4,245,
+  6,230,7,112,253,142,0,245,206,221,0,247,92,2,0,210,255,175,0,16,99,254,4,248,205,255,3,180,254,92,0,253,
+  255,255,9,185,254,189,6,0,251,5,0,0,251,5,0,0,251,5,0,0,251,5,0,0,232,3,0,245,6,208,12,248,
+  9,241,15,248,9,241,15,248,9,241,15,247,11,243,14,243,207,254,10,80,252,174,1,234,2,96,78,249,9,224,63,242,
+  31,246,11,160,143,252,4,48,255,207,0,0,251,95,0,0,227,11,0,231,5,226,8,192,12,246,11,248,30,243,12,241,
+  31,253,95,249,6,160,175,207,191,254,1,80,255,63,253,175,0,0,254,13,247,79,0,0,231,6,209,12,0,229,7,228,
+  8,243,111,254,6,96,255,175,0,0,253,31,0,96,255,175,0,243,95,253,7,229,6,227,9,232,4,232,4,247,93,239,
+  2,192,255,111,0,32,254,10,0,0,251,5,0,0,251,5,0,0,232,3,0,249,255,223,1,182,235,239,1,0,227,95,
+  0,16,253,7,0,193,159,0,0,248,207,187,1,247,255,239,2,0,177,187,107,224,255,127,208,255,95,176,255,79,160,255,
+  47,128,255,31,112,255,14,48,136,7,128,136,72,240,255,143,240,255,143,240,255,143,32,234,239,42,0,0,178,26,0,0,
+  192,223,216,207,0,0,252,4,0,0,243,95,80,255,3,144,143,0,0,0,243,79,64,255,3,245,12,0,0,0,224,191,
+  180,239,33,238,2,0,0,0,64,253,255,77,176,95,0,0,0,0,0,48,52,0,248,9,197,255,141,0,0,0,0,64,
+  207,80,255,138,254,9,0,0,0,209,46,160,207,0,249,14,0,0,0,251,5,176,207,0,248,15,0,0,112,159,0,112,
+  255,86,253,10,0,0,243,28,0,0,249,255,191,2,0,0,16,0,0,0,16,67,2,0,187,107,255,143,255,143,253,95,
+  248,30,130,6,0,130,6,0,252,7,112,239,1,225,159,0,246,95,0,250,31,0,253,13,0,255,12,0,255,11,0,254,
+  13,0,251,15,0,247,63,0,242,143,0,144,223,0,16,254,5,0,180,9,131,6,0,225,95,0,112,239,1,32,255,7,
+  0,252,13,0,248,63,0,246,111,0,244,127,0,244,127,0,245,111,0,248,79,0,251,14,16,255,9,96,255,2,192,143,
+  0,179,9,0,0,0,134,4,0,0,0,0,251,8,0,0,0,0,251,8,0,0,0,0,251,8,0,0,248,255,255,255,
+  255,8,248,255,255,255,255,8,99,102,253,107,102,3,0,0,251,8,0,0,0,0,251,8,0,0,0,0,251,8,0,0,
+  136,136,4,255,255,8,255,255,8,255,255,7,16,255,6,196,239,1,255,60,0,54,0,0,65,68,68,244,255,255,244,255,
+  255,179,187,187,136,136,4,255,255,8,255,255,8,255,255,8,0,144,41,0,243,15,0,247,12,0,250,8,0,254,5,32,
+  255,1,80,223,0,144,175,0,192,111,0,241,63,0,244,14,0,247,11,0,251,8,0,186,4,0,0,80,235,255,173,4,
+  0,0,250,255,255,255,159,0,112,255,223,119,253,255,6,208,255,30,0,242,255,12,242,255,11,0,192,255,31,243,255,10,
+  0,176,255,47,244,255,10,0,176,255,47,242,255,11,0,192,255,31,224,255,14,0,225,255,13,144,255,175,51,250,255,8,
+  16,253,255,255,255,207,1,0,145,254,255,239,24,0,0,0,32,68,2,0,0,0,0,64,138,0,0,32,148,253,191,0,
+  0,251,255,255,191,0,0,251,255,255,191,0,0,0,48,255,191,0,0,0,48,255,191,0,0,0,48,255,191,0,0,0,
+  48,255,191,0,0,0,48,255,191,0,0,251,255,255,255,255,79,251,255,255,255,255,79,251,255,255,255,255,79,0,113,235,
+  255,190,6,0,64,254,255,255,255,207,1,208,255,191,119,253,255,7,243,255,12,0,245,255,10,81,85,3,16,251,255,7,
+  0,0,0,213,255,223,1,0,0,178,255,255,27,0,0,112,255,255,93,0,0,16,251,255,109,0,0,0,176,255,255,255,
+  255,255,11,242,255,255,255,255,255,11,244,255,255,255,255,255,11,0,96,235,255,190,23,0,16,252,255,255,255,223,2,144,
+  255,175,135,254,255,9,144,204,10,0,244,255,11,0,0,0,16,248,255,7,0,0,32,255,255,142,0,0,0,32,255,255,
+  191,2,0,0,16,68,247,255,12,130,136,4,0,192,255,47,242,255,93,51,247,255,31,144,255,255,255,255,255,8,0,197,
+  255,255,255,92,0,0,0,49,68,19,0,0,0,0,251,255,6,0,0,0,48,255,239,81,91,0,0,160,255,95,209,111,
+  0,0,244,255,10,249,111,0,0,252,207,81,255,111,0,128,255,45,128,255,111,0,244,223,2,128,255,111,0,249,255,255,
+  255,255,255,143,249,255,255,255,255,255,143,183,187,187,219,255,223,107,0,0,0,128,255,111,0,0,0,0,128,255,111,0,
+  0,187,187,187,187,187,1,32,255,255,255,255,255,2,48,255,255,255,255,255,2,64,255,78,68,68,68,0,96,255,76,185,
+  171,22,0,112,255,255,255,255,223,2,144,255,191,136,253,255,12,0,49,4,0,209,255,47,162,170,6,0,192,255,47,225,
+  255,110,51,248,255,13,96,255,255,255,255,239,4,0,163,254,255,239,42,0,0,0,32,67,3,0,0,0,64,218,255,190,
+  22,0,0,249,255,255,255,223,2,96,255,207,119,251,255,10,208,255,30,0,208,255,14,241,255,27,117,103,2,0,243,255,
+  237,255,255,191,1,244,255,255,204,255,255,12,243,255,29,0,209,255,63,224,255,11,0,176,255,63,144,255,127,51,247,255,
+  30,16,253,255,255,255,255,5,0,145,254,255,255,59,0,0,0,32,68,3,0,0,184,187,187,187,187,187,6,251,255,255,
+  255,255,255,7,251,255,255,255,255,223,1,67,68,68,196,255,46,0,0,0,0,249,255,3,0,0,0,96,255,127,0,0,
+  0,0,243,255,12,0,0,0,0,251,255,5,0,0,0,64,255,239,0,0,0,0,144,255,175,0,0,0,0,208,255,143,
+  0,0,0,0,240,255,143,0,0,0,0,80,218,255,190,23,0,16,252,255,255,255,223,3,128,255,175,103,249,255,12,176,
+  255,12,0,128,255,15,128,255,127,51,213,255,12,16,251,255,255,255,223,2,16,250,255,255,255,207,3,208,255,143,68,231,
+  255,46,243,255,12,0,128,255,111,242,255,127,51,213,255,95,144,255,255,255,255,255,11,0,197,255,255,255,124,0,0,0,
+  49,68,19,0,0,0,113,219,222,140,2,0,80,254,255,255,255,111,0,242,255,191,152,253,255,3,247,255,8,0,241,255,
+  10,247,255,8,0,241,255,13,243,255,175,152,253,255,15,96,255,255,255,255,255,15,0,114,186,139,227,255,13,179,187,6,
+  0,242,255,10,241,255,110,67,252,255,4,112,255,255,255,255,159,0,0,180,255,255,223,6,0,0,0,49,52,1,0,0,
+  255,255,8,255,255,8,255,255,8,136,136,4,0,0,0,136,136,4,255,255,8,255,255,8,255,255,8,0,130,219,222,107,
+  1,112,255,255,255,255,45,244,255,140,233,255,159,247,255,1,128,255,191,50,51,0,227,255,111,0,0,128,255,255,7,0,
+  0,249,255,44,0,0,0,117,119,2,0,0,0,136,136,4,0,0,0,255,255,8,0,0,0,255,255,8,0,0,0,255,
+  255,8,0,0,0,64,187,187,7,0,0,0,0,192,255,255,30,0,0,0,0,244,255,255,143,0,0,0,0,252,239,254,
+  239,1,0,0,64,255,159,249,255,7,0,0,176,255,79,243,255,30,0,0,243,255,13,192,255,111,0,0,250,255,139,184,
+  255,223,0,48,255,255,255,255,255,255,6,160,255,255,255,255,255,255,13,242,255,143,136,136,248,255,95,249,255,10,0,0,
+  160,255,223,184,187,187,187,187,155,2,251,255,255,255,255,255,62,251,255,189,187,252,255,175,251,255,8,0,144,255,191,251,
+  255,41,34,195,255,127,251,255,255,255,255,239,7,251,255,255,255,255,255,43,251,255,73,68,148,255,191,251,255,8,0,80,
+  255,255,251,255,189,187,235,255,239,251,255,255,255,255,255,143,251,255,255,255,255,223,7,0,16,182,253,239,140,2,0,0,
+  228,255,255,255,255,110,0,48,255,255,255,255,255,255,6,176,255,239,22,48,250,255,14,241,255,95,0,0,208,255,63,243,
+  255,31,0,0,16,17,1,244,255,15,0,0,0,0,0,242,255,79,0,0,144,204,60,208,255,207,2,0,245,255,31,96,
+  255,255,207,235,255,255,9,0,249,255,255,255,255,191,1,0,64,235,255,255,207,6,0,0,0,0,50,52,1,0,0,184,
+  187,187,187,122,2,0,251,255,255,255,255,175,1,251,255,255,255,255,255,12,251,255,73,84,250,255,127,251,255,8,0,160,
+  255,207,251,255,8,0,64,255,255,251,255,8,0,64,255,255,251,255,8,0,128,255,223,251,255,8,16,247,255,143,251,255,
+  255,255,255,255,30,251,255,255,255,255,223,3,251,255,255,255,190,22,0,184,187,187,187,187,187,8,251,255,255,255,255,255,
+  11,251,255,255,255,255,255,11,251,255,73,68,68,68,3,251,255,73,68,68,36,0,251,255,255,255,255,159,0,251,255,255,
+  255,255,159,0,251,255,139,136,136,88,0,251,255,8,0,0,0,0,251,255,255,255,255,255,13,251,255,255,255,255,255,13,
+  251,255,255,255,255,255,13,251,255,255,255,255,255,2,251,255,255,255,255,255,2,251,255,255,255,255,255,2,251,255,8,0,
+  0,0,0,251,255,8,0,0,0,0,251,255,255,255,255,47,0,251,255,255,255,255,47,0,251,255,255,255,255,47,0,251,
+  255,8,0,0,0,0,251,255,8,0,0,0,0,251,255,8,0,0,0,0,251,255,8,0,0,0,0,0,0,165,237,255,
+  189,23,0,0,211,255,255,255,255,239,6,32,254,255,255,255,255,255,95,176,255,239,39,0,163,255,223,241,255,111,0,0,
+  0,136,136,243,255,31,0,133,136,136,136,244,255,15,0,249,255,255,255,242,255,63,0,233,238,255,255,224,255,207,2,0,
+  96,255,255,112,255,255,223,203,254,255,255,0,250,255,255,255,255,239,255,0,80,252,255,255,174,115,255,0,0,16,67,36,
+  0,0,17,184,187,6,0,0,179,187,11,251,255,8,0,0,244,255,15,251,255,8,0,0,244,255,15,251,255,8,0,0,
+  244,255,15,251,255,139,136,136,249,255,15,251,255,255,255,255,255,255,15,251,255,255,255,255,255,255,15,251,255,189,187,187,
+  252,255,15,251,255,8,0,0,244,255,15,251,255,8,0,0,244,255,15,251,255,8,0,0,244,255,15,251,255,8,0,0,
+  244,255,15,184,187,6,251,255,8,251,255,8,251,255,8,251,255,8,251,255,8,251,255,8,251,255,8,251,255,8,251,255,
+  8,251,255,8,251,255,8,0,0,0,96,187,139,0,0,0,128,255,191,0,0,0,128,255,191,0,0,0,128,255,191,0,
+  0,0,128,255,191,0,0,0,128,255,191,0,0,0,128,255,191,134,136,1,128,255,191,251,255,5,176,255,175,247,255,207,
+  253,255,111,209,255,255,255,255,11,32,234,255,255,142,1,0,0,66,36,0,0,184,187,6,0,48,187,187,26,251,255,8,
+  0,228,255,223,2,251,255,8,80,255,255,45,0,251,255,8,246,255,207,1,0,251,255,120,255,255,27,0,0,251,255,253,
+  255,255,8,0,0,251,255,255,255,255,95,0,0,251,255,255,222,255,239,2,0,251,255,207,50,255,255,12,0,251,255,27,
+  0,247,255,159,0,251,255,8,0,176,255,255,5,251,255,8,0,16,254,255,46,184,187,6,0,0,0,251,255,8,0,0,
+  0,251,255,8,0,0,0,251,255,8,0,0,0,251,255,8,0,0,0,251,255,8,0,0,0,251,255,8,0,0,0,251,
+  255,8,0,0,0,251,255,73,68,68,68,251,255,255,255,255,255,251,255,255,255,255,255,251,255,255,255,255,255,184,187,187,
+  11,0,144,187,187,139,251,255,255,79,0,242,255,255,191,251,255,255,159,0,247,255,255,191,251,255,255,223,0,252,255,255,
+  191,251,255,252,255,36,255,191,255,191,251,255,247,255,104,255,142,255,191,251,255,227,255,189,255,137,255,191,251,255,147,255,
+  255,255,132,255,191,251,255,67,255,255,239,128,255,191,251,255,3,253,255,143,128,255,191,251,255,3,248,255,63,128,255,191,
+  251,255,3,243,255,13,128,255,191,184,187,4,0,0,176,187,10,251,255,111,0,0,240,255,14,251,255,255,9,0,240,255,
+  14,251,255,255,191,1,240,255,14,251,255,255,255,45,240,255,14,251,255,255,255,239,243,255,14,251,255,231,255,255,255,255,
+  14,251,255,51,253,255,255,255,14,251,255,3,194,255,255,255,14,251,255,3,16,250,255,255,14,251,255,3,0,112,255,255,
+  14,251,255,3,0,0,229,255,14,0,0,165,237,239,173,5,0,0,0,194,255,255,255,255,207,2,0,32,254,255,255,255,
+  255,255,46,0,160,255,255,39,32,247,255,175,0,241,255,111,0,0,96,255,255,1,243,255,31,0,0,16,255,255,3,244,
+  255,15,0,0,0,255,255,3,242,255,79,0,0,64,255,255,2,192,255,223,3,0,211,255,207,0,64,255,255,223,219,255,
+  255,79,0,0,229,255,255,255,255,239,5,0,0,32,216,255,255,223,40,0,0,0,0,0,49,52,1,0,0,0,184,187,
+  187,187,187,90,0,251,255,255,255,255,255,10,251,255,255,255,255,255,79,251,255,73,68,164,255,159,251,255,8,0,64,255,
+  175,251,255,139,136,200,255,143,251,255,255,255,255,255,63,251,255,255,255,255,255,6,251,255,139,136,120,38,0,251,255,8,
+  0,0,0,0,251,255,8,0,0,0,0,251,255,8,0,0,0,0,0,0,165,237,239,173,5,0,0,0,194,255,255,255,
+  255,207,2,0,32,254,255,255,255,255,255,46,0,160,255,255,39,32,247,255,175,0,241,255,111,0,0,96,255,255,1,243,
+  255,31,0,0,16,255,255,3,244,255,15,0,0,0,255,255,4,242,255,79,0,0,64,255,255,2,192,255,223,3,0,211,
+  255,207,0,64,255,255,223,219,255,255,79,0,0,245,255,255,255,255,239,5,0,0,32,233,255,255,255,45,0,0,0,0,
+  0,66,248,255,175,0,0,0,0,0,0,96,255,255,28,0,0,0,0,0,0,67,68,36,0,251,255,255,255,255,223,6,
+  0,251,255,255,255,255,255,127,0,251,255,255,255,255,255,239,1,251,255,8,0,64,255,255,3,251,255,8,0,16,255,255,
+  3,251,255,189,187,235,255,239,1,251,255,255,255,255,255,127,0,251,255,255,255,255,255,8,0,251,255,73,68,252,255,11,
+  0,251,255,8,0,245,255,79,0,251,255,8,0,192,255,207,0,218,221,7,0,80,221,221,4,0,80,218,254,223,106,1,
+  0,32,252,255,255,255,255,45,0,176,255,223,137,216,255,191,0,240,255,127,0,16,204,188,0,224,255,255,223,155,38,0,
+  0,128,255,255,255,255,255,43,0,0,248,255,255,255,255,207,0,0,16,150,219,254,255,255,3,243,255,12,0,64,255,255,
+  3,241,255,191,136,184,255,239,1,96,255,255,255,255,255,111,0,0,164,254,255,255,190,3,0,0,0,32,67,36,0,0,
+  0,182,187,187,187,187,187,187,8,248,255,255,255,255,255,255,11,248,255,255,255,255,255,255,11,132,136,184,255,223,136,136,
+  6,0,0,128,255,191,0,0,0,0,0,128,255,191,0,0,0,0,0,128,255,191,0,0,0,0,0,128,255,191,0,0,
+  0,0,0,128,255,191,0,0,0,0,0,128,255,191,0,0,0,0,0,128,255,191,0,0,0,0,0,128,255,191,0,0,
+  0,184,187,6,0,0,184,187,6,251,255,8,0,0,251,255,8,251,255,8,0,0,251,255,8,251,255,8,0,0,251,255,
+  8,251,255,8,0,0,251,255,8,251,255,8,0,0,251,255,8,251,255,8,0,0,252,255,7,250,255,11,0,16,254,255,
+  6,247,255,111,0,144,255,255,3,225,255,255,189,254,255,191,0,64,254,255,255,255,255,45,0,0,146,254,255,255,125,1,
+  0,0,0,32,67,19,0,0,0,184,187,11,0,0,144,187,123,244,255,95,0,0,243,255,63,192,255,207,0,0,250,255,
+  11,64,255,255,3,32,255,255,4,0,252,255,10,128,255,191,0,0,245,255,31,225,255,79,0,0,192,255,127,246,255,12,
+  0,0,80,255,223,251,255,4,0,0,0,253,255,255,207,0,0,0,0,246,255,255,95,0,0,0,0,208,255,255,13,0,
+  0,0,0,96,255,255,5,0,0,185,187,5,0,187,187,59,0,178,187,8,248,255,11,48,255,255,143,0,246,255,7,244,
+  255,14,112,255,255,207,0,250,255,3,224,255,79,176,255,255,255,1,254,223,0,160,255,143,224,255,249,255,52,255,159,0,
+  96,255,207,244,255,242,255,120,255,79,0,16,255,255,248,191,208,255,187,255,30,0,0,252,255,254,143,144,255,238,255,11,
+  0,0,248,255,255,79,80,255,255,255,6,0,0,243,255,255,14,16,255,255,255,2,0,0,224,255,255,11,0,252,255,207,
+  0,0,0,144,255,255,7,0,248,255,143,0,0,161,187,187,5,0,180,187,123,0,48,254,255,62,32,254,255,28,0,0,
+  244,255,223,211,255,207,1,0,0,96,255,255,255,255,45,0,0,0,0,248,255,255,239,2,0,0,0,0,144,255,255,63,
+  0,0,0,0,0,176,255,255,143,0,0,0,0,0,250,255,255,255,6,0,0,0,144,255,255,253,255,95,0,0,0,247,
+  255,111,226,255,255,4,0,96,255,255,8,64,255,255,62,0,245,255,175,0,0,246,255,223,2,182,187,75,0,0,161,187,
+  139,192,255,239,2,0,249,255,46,16,253,255,12,96,255,255,4,0,227,255,159,243,255,111,0,0,80,255,255,254,255,9,
+  0,0,0,248,255,255,191,0,0,0,0,176,255,255,29,0,0,0,0,16,255,255,5,0,0,0,0,0,255,255,4,0,
+  0,0,0,0,255,255,4,0,0,0,0,0,255,255,4,0,0,0,0,0,255,255,4,0,0,176,187,187,187,187,187,187,
+  3,240,255,255,255,255,255,255,2,240,255,255,255,255,255,95,0,64,68,68,229,255,255,7,0,0,0,16,252,255,143,0,
+  0,0,0,176,255,255,9,0,0,0,0,250,255,191,0,0,0,0,144,255,255,28,0,0,0,0,247,255,223,1,0,0,
+  0,96,255,255,255,255,255,255,8,244,255,255,255,255,255,255,8,248,255,255,255,255,255,255,8,0,132,136,136,6,248,255,
+  255,12,246,255,255,10,245,255,255,8,243,255,255,7,242,255,255,5,240,255,255,4,208,255,255,2,192,255,255,1,160,255,
+  239,0,80,136,104,0,0,0,0,0,248,255,255,11,248,255,255,11,248,255,255,11,248,255,255,11,248,255,255,11,0,198,
+  254,206,6,0,0,0,64,170,4,0,0,176,255,255,255,191,0,0,0,226,191,0,0,0,246,255,5,245,255,6,0,0,
+  252,30,0,0,0,250,207,0,192,255,10,0,128,255,4,0,0,0,251,191,0,176,255,11,0,244,143,0,0,0,0,249,
+  223,0,208,255,9,32,254,11,0,0,0,0,244,255,73,249,255,4,176,239,2,0,0,0,0,112,255,255,255,127,0,248,
+  79,0,0,0,0,0,0,131,186,138,3,64,255,8,0,49,52,1,0,0,0,0,0,0,226,207,0,162,255,255,175,2,
+  0,0,0,0,0,251,46,16,253,239,236,255,30,0,0,0,0,128,255,5,112,255,46,32,254,143,0,0,0,0,244,159,
+  0,176,255,12,0,252,191,0,0,0,16,254,12,0,176,255,12,0,252,191,0,0,0,176,239,2,0,112,255,46,32,254,
+  127,0,0,0,247,95,0,0,16,253,239,236,255,29,0,0,64,238,9,0,0,0,162,255,255,175,2,0,0,0,0,0,
+  0,0,0,0,49,52,1,0,132,136,72,248,255,143,248,255,143,248,255,143,246,255,111,242,255,47,176,255,11,80,187,5,
+  0,0,185,43,0,112,255,11,0,243,255,4,0,252,207,0,64,255,127,0,176,255,47,0,241,255,13,0,245,255,10,0,
+  248,255,7,0,250,255,5,0,251,255,4,0,251,255,4,0,250,255,5,0,248,255,7,0,245,255,9,0,241,255,13,0,
+  176,255,47,0,64,255,127,0,0,252,207,0,0,243,255,4,0,112,255,11,0,0,185,43,186,26,0,0,247,191,0,0,
+  225,255,7,0,128,255,30,0,48,255,143,0,0,253,239,0,0,249,255,5,0,246,255,9,0,243,255,12,0,241,255,14,
+  0,240,255,15,0,240,255,15,0,241,255,14,0,243,255,12,0,246,255,9,0,249,255,5,0,253,239,0,48,255,143,0,
+  128,255,30,0,225,255,7,0,247,191,0,0,186,26,0,0,0,0,64,136,6,0,0,0,0,128,255,11,0,0,0,0,
+  128,255,11,0,0,0,0,128,255,11,0,0,0,0,128,255,11,0,0,68,68,148,255,76,68,68,255,255,255,255,255,255,
+  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,0,0,128,255,11,0,0,0,0,128,255,11,0,0,0,0,128,
+  255,11,0,0,0,0,128,255,11,0,0,0,0,128,255,11,0,0,248,255,255,11,248,255,255,11,248,255,255,11,248,255,
+  255,11,248,255,255,11,0,176,255,10,0,245,255,6,163,255,207,0,248,255,26,0,166,39,0,0,184,187,187,139,251,255,
+  255,191,251,255,255,191,251,255,255,191,134,136,136,104,248,255,255,11,248,255,255,11,248,255,255,11,248,255,255,11,248,255,
+  255,11,0,0,151,57,0,0,254,47,0,48,255,14,0,112,255,11,0,160,255,7,0,208,255,4,0,242,255,1,0,245,
+  207,0,0,249,159,0,0,252,95,0,16,255,47,0,64,255,13,0,112,255,10,0,160,255,7,0,224,255,3,0,242,255,
+  0,0,246,207,0,0,249,143,0,0,252,95,0,0,68,20,0,0,0,0,132,219,221,172,22,0,0,0,194,255,255,255,
+  255,239,7,0,48,254,255,255,255,255,255,159,0,192,255,255,175,136,253,255,255,5,245,255,255,6,0,193,255,255,12,249,
+  255,223,0,0,80,255,255,47,252,255,175,0,0,32,255,255,95,254,255,143,0,0,16,255,255,127,255,255,143,0,0,16,
+  255,255,127,255,255,143,0,0,16,255,255,127,253,255,159,0,0,32,255,255,111,251,255,207,0,0,64,255,255,63,247,255,
+  255,2,0,144,255,255,14,225,255,255,93,50,248,255,255,8,96,255,255,255,255,255,255,223,1,0,246,255,255,255,255,255,
+  44,0,0,32,217,255,255,255,107,0,0,0,0,0,49,52,2,0,0,0,0,0,0,0,113,89,0,0,0,0,0,0,
+  147,254,143,0,0,0,0,82,217,255,255,143,0,0,0,244,255,255,255,255,143,0,0,0,244,255,255,255,255,143,0,0,
+  0,179,187,187,255,255,143,0,0,0,0,0,0,255,255,143,0,0,0,0,0,0,255,255,143,0,0,0,0,0,0,255,
+  255,143,0,0,0,0,0,0,255,255,143,0,0,0,0,0,0,255,255,143,0,0,0,0,0,0,255,255,143,0,0,0,
+  0,0,0,255,255,143,0,0,0,244,255,255,255,255,255,255,255,4,244,255,255,255,255,255,255,255,4,244,255,255,255,255,
+  255,255,255,4,244,255,255,255,255,255,255,255,4,0,0,98,169,187,154,38,0,0,0,196,255,255,255,255,255,43,0,96,
+  255,255,255,255,255,255,239,2,243,255,255,207,170,254,255,255,11,249,255,255,5,0,193,255,255,15,251,255,207,0,0,128,
+  255,255,15,84,85,69,0,0,227,255,255,12,0,0,0,0,129,255,255,255,4,0,0,0,80,253,255,255,111,0,0,0,
+  32,251,255,255,223,4,0,0,0,247,255,255,239,24,0,0,0,194,255,255,239,24,0,0,0,48,254,255,255,91,68,68,
+  68,20,225,255,255,255,255,255,255,255,79,248,255,255,255,255,255,255,255,79,251,255,255,255,255,255,255,255,79,251,255,255,
+  255,255,255,255,255,79,0,0,132,219,221,189,72,0,0,0,212,255,255,255,255,255,60,0,96,255,255,255,255,255,255,255,
+  4,225,255,255,158,152,253,255,255,12,243,255,239,1,0,193,255,255,15,97,102,70,0,0,144,255,255,13,0,0,0,0,
+  0,228,255,255,7,0,0,0,176,255,255,255,159,0,0,0,0,176,255,255,255,25,0,0,0,0,176,255,255,255,239,4,
+  0,0,0,48,68,197,255,255,30,17,17,1,0,0,32,255,255,111,255,255,79,0,0,48,255,255,127,252,255,223,54,50,
+  214,255,255,95,245,255,255,255,255,255,255,255,12,96,254,255,255,255,255,255,191,2,0,113,252,255,255,255,174,4,0,0,
+  0,0,50,68,19,0,0,0,0,0,0,218,221,221,1,0,0,0,0,0,32,255,255,191,16,68,1,0,0,0,144,255,
+  255,79,112,255,4,0,0,0,242,255,255,10,225,255,4,0,0,0,250,255,223,1,249,255,4,0,0,64,255,255,63,80,
+  255,255,4,0,0,208,255,255,6,226,255,255,4,0,0,248,255,143,0,244,255,255,4,0,64,255,255,9,0,244,255,255,
+  4,0,226,255,159,0,0,244,255,255,4,0,246,255,255,255,255,255,255,255,255,79,246,255,255,255,255,255,255,255,255,79,
+  246,255,255,255,255,255,255,255,255,79,180,187,187,187,187,252,255,255,188,59,0,0,0,0,0,244,255,255,4,0,0,0,
+  0,0,0,244,255,255,4,0,0,0,0,0,0,244,255,255,4,0,48,187,187,187,187,187,187,187,0,80,255,255,255,255,
+  255,255,255,0,112,255,255,255,255,255,255,255,0,128,255,255,255,255,255,255,255,0,160,255,239,136,136,136,136,136,0,176,
+  255,207,0,0,0,0,0,0,192,255,175,165,237,239,156,3,0,224,255,255,255,255,255,255,159,0,240,255,255,255,255,255,
+  255,255,9,177,237,239,22,16,213,255,255,63,0,0,33,0,0,48,255,255,127,102,102,22,0,0,0,255,255,143,254,255,
+  127,0,0,64,255,255,127,249,255,255,72,50,231,255,255,47,226,255,255,255,255,255,255,255,7,32,252,255,255,255,255,255,
+  127,0,0,80,234,255,255,255,141,2,0,0,0,0,49,68,19,0,0,0,0,0,115,203,221,172,39,0,0,0,162,255,
+  255,255,255,255,43,0,32,253,255,255,255,255,255,239,2,176,255,255,191,136,251,255,255,11,244,255,255,5,0,96,255,255,
+  47,249,255,207,0,0,0,204,204,60,252,255,159,32,117,119,37,0,0,254,255,191,252,255,255,255,75,0,255,255,255,255,
+  255,255,255,255,7,255,255,255,174,136,251,255,255,79,254,255,223,2,0,64,255,255,159,252,255,159,0,0,0,252,255,191,
+  247,255,191,0,0,16,254,255,175,226,255,255,74,50,197,255,255,95,96,255,255,255,255,255,255,255,11,0,246,255,255,255,
+  255,255,175,1,0,32,216,255,255,255,157,3,0,0,0,0,49,68,19,0,0,0,132,136,136,136,136,136,136,136,136,248,
+  255,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,255,248,255,255,255,255,255,255,255,95,182,187,187,187,187,253,
+  255,255,5,0,0,0,0,32,254,255,111,0,0,0,0,0,210,255,255,8,0,0,0,0,16,252,255,191,0,0,0,0,
+  0,144,255,255,30,0,0,0,0,0,244,255,255,6,0,0,0,0,0,253,255,207,0,0,0,0,0,96,255,255,111,0,
+  0,0,0,0,192,255,255,30,0,0,0,0,0,243,255,255,11,0,0,0,0,0,247,255,255,9,0,0,0,0,0,250,
+  255,255,8,0,0,0,0,0,251,255,255,8,0,0,0,0,0,33,34,34,1,0,0,0,0,0,131,203,221,188,56,0,
+  0,0,0,195,255,255,255,255,255,60,0,0,80,255,255,255,255,255,255,255,5,0,224,255,255,174,136,217,255,255,14,0,
+  243,255,239,1,0,0,251,255,63,0,243,255,207,0,0,0,249,255,63,0,208,255,255,74,35,132,255,255,14,0,64,254,
+  255,255,255,255,255,239,4,0,0,227,255,255,255,255,255,79,0,0,96,254,255,255,255,255,255,255,7,0,246,255,255,108,
+  68,165,255,255,127,0,253,255,223,0,0,0,250,255,239,0,255,255,223,0,0,0,249,255,255,0,253,255,255,90,35,132,
+  255,255,223,0,245,255,255,255,255,255,255,255,111,0,96,254,255,255,255,255,255,239,6,0,0,113,235,255,255,255,207,23,
+  0,0,0,0,0,50,68,35,0,0,0,0,0,0,97,201,221,205,105,1,0,0,0,145,255,255,255,255,255,126,0,0,
+  16,253,255,255,255,255,255,255,9,0,160,255,255,223,137,200,255,255,111,0,241,255,255,11,0,0,248,255,223,0,243,255,
+  255,5,0,0,241,255,255,3,243,255,255,7,0,0,243,255,255,6,224,255,255,110,2,81,253,255,255,7,96,255,255,255,
+  255,255,255,255,255,7,0,230,255,255,255,255,254,255,255,7,0,16,183,253,239,123,242,255,255,5,64,85,85,2,0,0,
+  243,255,255,3,160,255,255,10,0,0,248,255,223,0,96,255,255,159,36,131,255,255,127,0,16,253,255,255,255,255,255,255,
+  12,0,0,194,255,255,255,255,255,191,1,0,0,0,165,254,255,255,190,5,0,0,0,0,0,32,67,35,0,0,0,0,
+  182,187,187,8,248,255,255,11,248,255,255,11,248,255,255,11,248,255,255,11,66,68,68,3,0,0,0,0,0,0,0,0,
+  248,255,255,11,248,255,255,11,248,255,255,11,248,255,255,11,248,255,255,11,0,0,81,168,187,138,22,0,0,0,146,255,
+  255,255,255,255,25,0,48,254,255,255,255,255,255,223,1,208,255,255,190,202,255,255,255,7,243,255,239,2,0,247,255,255,
+  11,243,255,191,0,0,245,255,255,10,16,17,1,0,64,254,255,255,3,0,0,0,16,249,255,255,94,0,0,0,0,211,
+  255,255,175,2,0,0,0,0,251,255,223,3,0,0,0,0,0,134,136,72,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,64,255,255,255,0,0,0,0,0,64,255,255,255,0,0,0,0,0,64,255,255,255,0,0,0,0,0,64,255,255,
+  255,0,0,0,0,0,64,255,255,255,0,0,0,0,0,0,0,153,153,153,8,0,0,0,0,0,0,0,80,255,255,255,
+  79,0,0,0,0,0,0,0,192,255,255,255,191,0,0,0,0,0,0,0,245,255,255,255,255,3,0,0,0,0,0,0,
+  252,255,255,255,255,10,0,0,0,0,0,64,255,255,143,255,255,63,0,0,0,0,0,176,255,255,43,255,255,175,0,0,
+  0,0,0,244,255,255,6,251,255,255,2,0,0,0,0,251,255,239,1,245,255,255,9,0,0,0,48,255,255,159,0,224,
+  255,255,47,0,0,0,160,255,255,111,68,164,255,255,159,0,0,0,243,255,255,255,255,255,255,255,239,1,0,0,250,255,
+  255,255,255,255,255,255,255,8,0,32,255,255,255,255,255,255,255,255,255,30,0,144,255,255,207,187,187,187,219,255,255,143,
+  0,242,255,255,14,0,0,0,80,255,255,239,1,249,255,255,8,0,0,0,0,253,255,255,7,130,136,136,136,136,136,136,
+  120,21,0,0,244,255,255,255,255,255,255,255,239,6,0,244,255,255,255,255,255,255,255,255,111,0,244,255,255,255,255,255,
+  255,255,255,223,0,244,255,255,76,68,68,148,255,255,255,0,244,255,255,11,0,0,0,255,255,239,0,244,255,255,44,34,
+  34,130,255,255,143,0,244,255,255,255,255,255,255,255,255,9,0,244,255,255,255,255,255,255,255,159,1,0,244,255,255,255,
+  255,255,255,255,255,62,0,244,255,255,76,68,68,116,255,255,223,0,244,255,255,11,0,0,0,252,255,255,2,244,255,255,
+  11,0,0,16,254,255,255,4,244,255,255,190,187,187,235,255,255,255,2,244,255,255,255,255,255,255,255,255,207,0,244,255,
+  255,255,255,255,255,255,255,45,0,244,255,255,255,255,255,255,255,141,1,0,0,0,16,133,186,187,122,4,0,0,0,0,
+  32,250,255,255,255,255,223,7,0,0,0,229,255,255,255,255,255,255,207,2,0,80,255,255,255,255,255,255,255,255,29,0,
+  225,255,255,239,88,84,249,255,255,159,0,247,255,255,46,0,0,64,255,255,239,0,251,255,255,6,0,0,0,249,255,255,
+  3,254,255,255,1,0,0,0,66,68,68,1,255,255,255,0,0,0,0,0,0,0,0,255,255,255,0,0,0,0,0,0,
+  0,0,253,255,255,3,0,0,0,163,170,170,2,250,255,255,11,0,0,0,249,255,255,2,245,255,255,159,1,0,129,255,
+  255,223,0,192,255,255,255,207,203,255,255,255,95,0,32,253,255,255,255,255,255,255,255,9,0,0,177,255,255,255,255,255,
+  255,110,0,0,0,0,147,253,255,255,255,124,1,0,0,0,0,0,16,50,52,2,0,0,0,0,130,136,136,136,136,119,
+  53,0,0,0,0,244,255,255,255,255,255,255,158,2,0,0,244,255,255,255,255,255,255,255,111,0,0,244,255,255,255,255,
+  255,255,255,255,7,0,244,255,255,141,136,168,255,255,255,63,0,244,255,255,11,0,0,210,255,255,175,0,244,255,255,11,
+  0,0,48,255,255,239,0,244,255,255,11,0,0,0,253,255,255,3,244,255,255,11,0,0,0,251,255,255,4,244,255,255,
+  11,0,0,0,252,255,255,3,244,255,255,11,0,0,16,254,255,255,1,244,255,255,11,0,0,128,255,255,223,0,244,255,
+  255,11,0,48,250,255,255,127,0,244,255,255,255,255,255,255,255,255,12,0,244,255,255,255,255,255,255,255,223,2,0,244,
+  255,255,255,255,255,255,255,25,0,0,244,255,255,255,255,239,173,39,0,0,0,130,136,136,136,136,136,136,136,136,3,244,
+  255,255,255,255,255,255,255,255,6,244,255,255,255,255,255,255,255,255,6,244,255,255,255,255,255,255,255,255,6,244,255,255,
+  141,136,136,136,136,136,3,244,255,255,11,0,0,0,0,0,0,244,255,255,76,68,68,68,68,3,0,244,255,255,255,255,
+  255,255,255,11,0,244,255,255,255,255,255,255,255,11,0,244,255,255,255,255,255,255,255,11,0,244,255,255,190,187,187,187,
+  187,8,0,244,255,255,11,0,0,0,0,0,0,244,255,255,11,0,0,0,0,0,0,244,255,255,255,255,255,255,255,255,
+  9,244,255,255,255,255,255,255,255,255,9,244,255,255,255,255,255,255,255,255,9,244,255,255,255,255,255,255,255,255,9,130,
+  136,136,136,136,136,136,136,72,244,255,255,255,255,255,255,255,143,244,255,255,255,255,255,255,255,143,244,255,255,255,255,255,
+  255,255,143,244,255,255,141,136,136,136,136,72,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,
+  255,141,136,136,136,136,1,244,255,255,255,255,255,255,255,2,244,255,255,255,255,255,255,255,2,244,255,255,255,255,255,255,
+  255,2,244,255,255,141,136,136,136,136,1,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,
+  11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,0,0,0,99,169,187,155,71,
+  1,0,0,0,16,232,255,255,255,255,255,175,3,0,0,228,255,255,255,255,255,255,255,143,0,64,255,255,255,255,255,255,
+  255,255,255,8,225,255,255,255,123,68,117,253,255,255,47,247,255,255,78,0,0,0,144,255,255,111,251,255,255,7,0,0,
+  0,32,102,102,54,254,255,255,1,0,65,68,68,68,68,36,255,255,255,0,0,245,255,255,255,255,143,255,255,255,0,0,
+  245,255,255,255,255,143,253,255,255,3,0,245,255,255,255,255,143,250,255,255,10,0,33,34,114,255,255,143,245,255,255,159,
+  2,0,16,229,255,255,143,208,255,255,255,223,188,253,255,255,255,143,48,254,255,255,255,255,255,255,255,255,143,0,195,255,
+  255,255,255,255,255,141,255,143,0,0,165,254,255,255,239,90,0,254,127,0,0,0,16,67,52,2,0,0,0,0,130,136,
+  136,6,0,0,0,64,136,136,72,244,255,255,11,0,0,0,128,255,255,143,244,255,255,11,0,0,0,128,255,255,143,244,
+  255,255,11,0,0,0,128,255,255,143,244,255,255,11,0,0,0,128,255,255,143,244,255,255,11,0,0,0,128,255,255,143,
+  244,255,255,190,187,187,187,219,255,255,143,244,255,255,255,255,255,255,255,255,255,143,244,255,255,255,255,255,255,255,255,255,
+  143,244,255,255,255,255,255,255,255,255,255,143,244,255,255,190,187,187,187,219,255,255,143,244,255,255,11,0,0,0,128,255,
+  255,143,244,255,255,11,0,0,0,128,255,255,143,244,255,255,11,0,0,0,128,255,255,143,244,255,255,11,0,0,0,128,
+  255,255,143,244,255,255,11,0,0,0,128,255,255,143,244,255,255,11,0,0,0,128,255,255,143,130,136,136,6,244,255,255,
+  11,244,255,255,11,244,255,255,11,244,255,255,11,244,255,255,11,244,255,255,11,244,255,255,11,244,255,255,11,244,255,255,
+  11,244,255,255,11,244,255,255,11,244,255,255,11,244,255,255,11,244,255,255,11,244,255,255,11,244,255,255,11,0,0,0,
+  0,0,146,153,153,7,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,
+  11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,
+  0,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,11,132,136,136,0,0,244,255,255,11,
+  247,255,255,1,0,245,255,255,10,245,255,255,7,0,251,255,255,8,241,255,255,223,235,255,255,255,3,128,255,255,255,255,
+  255,255,159,0,0,250,255,255,255,255,255,10,0,0,64,234,255,255,239,74,0,0,0,0,0,50,52,2,0,0,0,130,
+  136,136,6,0,0,0,132,136,136,104,0,244,255,255,11,0,0,96,255,255,255,45,0,244,255,255,11,0,0,247,255,255,
+  207,1,0,244,255,255,11,0,128,255,255,255,28,0,0,244,255,255,11,0,249,255,255,191,1,0,0,244,255,255,11,177,
+  255,255,255,10,0,0,0,244,255,255,27,252,255,255,159,0,0,0,0,244,255,255,204,255,255,255,30,0,0,0,0,244,
+  255,255,255,255,255,255,191,0,0,0,0,244,255,255,255,255,255,255,255,8,0,0,0,244,255,255,255,255,254,255,255,79,
+  0,0,0,244,255,255,255,143,226,255,255,239,2,0,0,244,255,255,239,5,80,255,255,255,12,0,0,244,255,255,62,0,
+  0,248,255,255,159,0,0,244,255,255,11,0,0,192,255,255,255,5,0,244,255,255,11,0,0,32,254,255,255,62,0,244,
+  255,255,11,0,0,0,245,255,255,223,1,146,153,153,7,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,
+  11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,
+  0,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,11,
+  0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,11,0,0,0,0,0,244,255,255,141,136,136,136,136,56,
+  244,255,255,255,255,255,255,255,111,244,255,255,255,255,255,255,255,111,244,255,255,255,255,255,255,255,111,244,255,255,255,255,
+  255,255,255,111,130,136,136,136,136,1,0,0,133,136,136,136,72,244,255,255,255,255,6,0,0,254,255,255,255,143,244,255,
+  255,255,255,11,0,64,255,255,255,255,143,244,255,255,255,255,31,0,144,255,255,255,255,143,244,255,255,255,255,111,0,224,
+  255,255,255,255,143,244,255,255,255,255,191,0,244,255,255,255,255,143,244,255,255,250,255,255,1,249,255,159,255,255,143,244,
+  255,255,246,255,255,6,254,255,140,255,255,143,244,255,255,180,255,255,74,255,255,135,255,255,143,244,255,255,100,255,255,142,
+  255,255,130,255,255,143,244,255,255,20,255,255,239,255,207,128,255,255,143,244,255,255,4,250,255,255,255,127,128,255,255,143,
+  244,255,255,4,245,255,255,255,47,128,255,255,143,244,255,255,4,224,255,255,255,11,128,255,255,143,244,255,255,4,144,255,
+  255,255,6,128,255,255,143,244,255,255,4,64,255,255,255,1,128,255,255,143,244,255,255,4,0,253,255,175,0,128,255,255,
+  143,130,136,120,1,0,0,0,32,136,136,40,244,255,255,61,0,0,0,64,255,255,79,244,255,255,239,5,0,0,64,255,
+  255,79,244,255,255,255,127,0,0,64,255,255,79,244,255,255,255,255,9,0,64,255,255,79,244,255,255,255,255,191,1,64,
+  255,255,79,244,255,255,255,255,255,45,64,255,255,79,244,255,255,255,255,255,239,67,255,255,79,244,255,255,254,255,255,255,
+  158,255,255,79,244,255,255,165,255,255,255,255,255,255,79,244,255,255,4,248,255,255,255,255,255,79,244,255,255,4,96,255,
+  255,255,255,255,79,244,255,255,4,0,227,255,255,255,255,79,244,255,255,4,0,32,252,255,255,255,79,244,255,255,4,0,
+  0,177,255,255,255,79,244,255,255,4,0,0,0,249,255,255,79,244,255,255,4,0,0,0,96,255,255,79,0,0,0,99,
+  169,187,154,54,0,0,0,0,0,214,255,255,255,255,255,125,0,0,0,210,255,255,255,255,255,255,255,61,0,32,254,255,
+  255,255,255,255,255,255,239,2,192,255,255,255,107,68,182,255,255,255,12,246,255,255,95,0,0,0,245,255,255,111,251,255,
+  255,7,0,0,0,112,255,255,191,254,255,255,2,0,0,0,32,255,255,239,255,255,255,0,0,0,0,0,255,255,255,255,
+  255,255,1,0,0,0,16,255,255,255,252,255,255,4,0,0,0,64,255,255,207,248,255,255,28,0,0,0,193,255,255,143,
+  242,255,255,207,3,0,48,252,255,255,47,112,255,255,255,239,204,254,255,255,255,7,0,249,255,255,255,255,255,255,255,159,
+  0,0,80,253,255,255,255,255,255,223,5,0,0,0,80,234,255,255,255,174,5,0,0,0,0,0,0,49,68,19,0,0,
+  0,0,130,136,136,136,136,136,136,87,1,0,244,255,255,255,255,255,255,255,94,0,244,255,255,255,255,255,255,255,255,5,
+  244,255,255,255,255,255,255,255,255,13,244,255,255,141,136,136,216,255,255,79,244,255,255,11,0,0,32,255,255,127,244,255,
+  255,11,0,0,0,255,255,127,244,255,255,11,0,0,112,255,255,111,244,255,255,255,255,255,255,255,255,47,244,255,255,255,
+  255,255,255,255,255,10,244,255,255,255,255,255,255,255,207,1,244,255,255,255,255,255,255,207,7,0,244,255,255,11,0,0,
+  0,0,0,0,244,255,255,11,0,0,0,0,0,0,244,255,255,11,0,0,0,0,0,0,244,255,255,11,0,0,0,0,
+  0,0,211,221,221,10,0,0,0,0,0,0,0,0,0,99,169,187,154,54,0,0,0,0,0,214,255,255,255,255,255,125,
+  0,0,0,210,255,255,255,255,255,255,255,45,0,32,254,255,255,255,255,255,255,255,239,2,192,255,255,255,107,68,182,255,
+  255,255,12,246,255,255,95,0,0,0,245,255,255,111,251,255,255,7,0,0,0,112,255,255,191,254,255,255,2,0,0,0,
+  32,255,255,239,255,255,255,0,0,0,0,0,255,255,255,255,255,255,1,0,0,0,16,255,255,255,253,255,255,4,0,0,
+  0,64,255,255,223,249,255,255,28,0,0,0,193,255,255,159,243,255,255,207,3,0,48,252,255,255,63,128,255,255,255,239,
+  204,254,255,255,255,8,0,250,255,255,255,255,255,255,255,175,0,0,96,254,255,255,255,255,255,239,6,0,0,0,113,251,
+  255,255,255,255,63,0,0,0,0,0,0,50,229,255,255,239,4,0,0,0,0,0,0,32,253,255,255,111,0,0,0,0,
+  0,0,0,210,255,255,255,8,0,0,0,0,0,0,16,34,34,34,2,130,136,136,136,136,136,136,120,21,0,0,244,255,
+  255,255,255,255,255,255,239,6,0,244,255,255,255,255,255,255,255,255,111,0,244,255,255,255,255,255,255,255,255,239,1,244,
+  255,255,141,136,136,152,255,255,255,5,244,255,255,11,0,0,0,249,255,255,7,244,255,255,11,0,0,0,248,255,255,7,
+  244,255,255,76,68,68,100,254,255,255,5,244,255,255,255,255,255,255,255,255,239,0,244,255,255,255,255,255,255,255,255,95,
+  0,244,255,255,255,255,255,255,255,239,5,0,244,255,255,190,187,203,255,255,239,1,0,244,255,255,11,0,0,252,255,255,
+  8,0,244,255,255,11,0,0,245,255,255,46,0,244,255,255,11,0,0,208,255,255,159,0,244,255,255,11,0,0,96,255,
+  255,255,2,211,221,221,10,0,0,0,220,221,221,8,0,0,82,168,187,171,104,3,0,0,0,180,255,255,255,255,255,223,
+  5,0,112,255,255,255,255,255,255,255,159,0,244,255,255,239,188,236,255,255,255,5,249,255,255,8,0,0,247,255,255,10,
+  251,255,255,75,1,0,128,136,136,6,250,255,255,255,239,189,121,4,0,0,245,255,255,255,255,255,255,239,24,0,160,255,
+  255,255,255,255,255,255,223,2,0,231,255,255,255,255,255,255,255,12,0,16,149,236,255,255,255,255,255,47,136,136,104,0,
+  49,100,250,255,255,79,254,255,239,1,0,0,192,255,255,47,250,255,255,174,136,136,252,255,255,13,227,255,255,255,255,255,
+  255,255,255,5,48,253,255,255,255,255,255,255,94,0,0,80,218,255,255,255,239,123,1,0,0,0,0,33,67,52,2,0,
+  0,0,132,136,136,136,136,136,136,136,136,136,4,248,255,255,255,255,255,255,255,255,255,8,248,255,255,255,255,255,255,255,
+  255,255,8,248,255,255,255,255,255,255,255,255,255,8,248,255,255,255,255,255,255,255,255,255,8,0,0,0,128,255,255,143,
+  0,0,0,0,0,0,0,128,255,255,143,0,0,0,0,0,0,0,128,255,255,143,0,0,0,0,0,0,0,128,255,255,
+  143,0,0,0,0,0,0,0,128,255,255,143,0,0,0,0,0,0,0,128,255,255,143,0,0,0,0,0,0,0,128,255,
+  255,143,0,0,0,0,0,0,0,128,255,255,143,0,0,0,0,0,0,0,128,255,255,143,0,0,0,0,0,0,0,128,
+  255,255,143,0,0,0,0,0,0,0,128,255,255,143,0,0,0,0,0,0,0,128,255,255,143,0,0,0,0,146,153,153,
+  7,0,0,0,144,153,153,9,244,255,255,11,0,0,0,240,255,255,15,244,255,255,11,0,0,0,240,255,255,15,244,255,
+  255,11,0,0,0,240,255,255,15,244,255,255,11,0,0,0,240,255,255,15,244,255,255,11,0,0,0,240,255,255,15,244,
+  255,255,11,0,0,0,240,255,255,15,244,255,255,11,0,0,0,240,255,255,15,244,255,255,11,0,0,0,240,255,255,15,
+  244,255,255,12,0,0,0,241,255,255,15,242,255,255,31,0,0,0,244,255,255,13,224,255,255,143,0,0,0,252,255,255,
+  11,144,255,255,255,57,16,196,255,255,255,6,32,255,255,255,255,255,255,255,255,223,0,0,246,255,255,255,255,255,255,255,
+  62,0,0,80,254,255,255,255,255,255,207,2,0,0,0,97,235,255,255,255,174,5,0,0,0,0,0,0,50,68,19,0,
+  0,0,0,150,153,153,8,0,0,0,16,153,153,153,2,244,255,255,79,0,0,0,112,255,255,207,0,192,255,255,175,0,
+  0,0,224,255,255,79,0,64,255,255,255,2,0,0,246,255,255,12,0,0,252,255,255,8,0,0,252,255,255,5,0,0,
+  245,255,255,30,0,64,255,255,223,0,0,0,208,255,255,111,0,160,255,255,95,0,0,0,80,255,255,223,0,242,255,255,
+  13,0,0,0,0,253,255,255,4,248,255,255,6,0,0,0,0,246,255,255,10,254,255,223,0,0,0,0,0,208,255,255,
+  94,255,255,111,0,0,0,0,0,96,255,255,239,255,255,30,0,0,0,0,0,16,254,255,255,255,255,7,0,0,0,0,
+  0,0,247,255,255,255,239,1,0,0,0,0,0,0,225,255,255,255,127,0,0,0,0,0,0,0,112,255,255,255,30,0,
+  0,0,0,0,0,0,16,254,255,255,8,0,0,0,0,134,136,136,2,0,80,136,136,136,5,0,16,136,136,40,249,255,
+  255,7,0,192,255,255,255,14,0,96,255,255,47,244,255,255,11,0,241,255,255,255,47,0,160,255,255,12,225,255,255,14,
+  0,245,255,255,255,111,0,224,255,255,8,176,255,255,79,0,249,255,255,255,175,0,243,255,255,3,96,255,255,143,0,253,
+  255,254,255,239,0,247,255,239,0,32,255,255,207,32,255,255,231,255,255,2,251,255,175,0,0,252,255,255,97,255,255,164,
+  255,255,22,255,255,95,0,0,248,255,255,149,255,239,112,255,255,74,255,255,31,0,0,244,255,255,200,255,191,48,255,255,
+  125,255,255,11,0,0,224,255,255,252,255,127,0,254,255,207,255,255,7,0,0,160,255,255,255,255,63,0,250,255,255,255,
+  255,2,0,0,80,255,255,255,255,14,0,246,255,255,255,223,0,0,0,16,255,255,255,255,10,0,242,255,255,255,159,0,
+  0,0,0,251,255,255,255,6,0,224,255,255,255,79,0,0,0,0,247,255,255,255,3,0,160,255,255,255,14,0,0,0,
+  0,243,255,255,239,0,0,96,255,255,255,10,0,0,96,136,136,136,6,0,0,80,136,136,136,2,32,254,255,255,127,0,
+  0,245,255,255,159,0,0,228,255,255,255,5,64,255,255,255,10,0,0,80,255,255,255,62,226,255,255,191,0,0,0,0,
+  246,255,255,223,253,255,255,28,0,0,0,0,128,255,255,255,255,255,223,1,0,0,0,0,0,249,255,255,255,255,45,0,
+  0,0,0,0,0,176,255,255,255,239,2,0,0,0,0,0,0,16,255,255,255,175,0,0,0,0,0,0,0,176,255,255,
+  255,255,7,0,0,0,0,0,0,250,255,255,255,255,111,0,0,0,0,0,144,255,255,255,255,255,255,4,0,0,0,0,
+  248,255,255,143,255,255,255,62,0,0,0,112,255,255,255,6,246,255,255,239,2,0,0,246,255,255,143,0,128,255,255,255,
+  29,0,80,255,255,255,10,0,0,250,255,255,207,1,244,255,255,191,0,0,0,193,255,255,255,11,146,153,153,121,0,0,
+  0,0,153,153,153,7,128,255,255,255,5,0,0,144,255,255,239,2,0,251,255,255,46,0,0,245,255,255,79,0,0,209,
+  255,255,207,1,48,254,255,255,6,0,0,48,254,255,255,10,209,255,255,159,0,0,0,0,245,255,255,111,250,255,255,11,
+  0,0,0,0,112,255,255,255,255,255,223,1,0,0,0,0,0,250,255,255,255,255,62,0,0,0,0,0,0,193,255,255,
+  255,255,5,0,0,0,0,0,0,32,254,255,255,143,0,0,0,0,0,0,0,0,245,255,255,12,0,0,0,0,0,0,
+  0,0,244,255,255,11,0,0,0,0,0,0,0,0,244,255,255,11,0,0,0,0,0,0,0,0,244,255,255,11,0,0,
+  0,0,0,0,0,0,244,255,255,11,0,0,0,0,0,0,0,0,244,255,255,11,0,0,0,0,0,0,0,0,244,255,
+  255,11,0,0,0,0,96,136,136,136,136,136,136,136,136,136,0,176,255,255,255,255,255,255,255,255,255,0,176,255,255,255,
+  255,255,255,255,255,175,0,176,255,255,255,255,255,255,255,255,28,0,96,136,136,136,152,255,255,255,223,1,0,0,0,0,
+  0,176,255,255,255,46,0,0,0,0,0,0,250,255,255,239,3,0,0,0,0,0,128,255,255,255,79,0,0,0,0,0,
+  0,247,255,255,255,6,0,0,0,0,0,80,255,255,255,143,0,0,0,0,0,0,244,255,255,255,9,0,0,0,0,0,
+  48,254,255,255,191,0,0,0,0,0,0,210,255,255,255,28,0,0,0,0,0,16,252,255,255,255,255,255,255,255,255,4,
+  176,255,255,255,255,255,255,255,255,255,4,247,255,255,255,255,255,255,255,255,255,4,248,255,255,255,255,255,255,255,255,255,
+  4,
 };
diff --git a/games/numdash/src/assets_lv.c b/games/numdash/src/assets_lv.c
index c8d44d2..c70da2c 100644
--- a/games/numdash/src/assets_lv.c
+++ b/games/numdash/src/assets_lv.c
@@ -1,1436 +1,823 @@
 /* Generated by tools/assets_lv.py. Do not edit. */
 #include "assets_lv.h"
-const Sprite sprites_lv[132] = {
-  {16,52,10,26,2,0,0},
-  {21,62,11,31,2,1,416},
-  {9,54,9,27,2,2,1098},
-  {17,63,10,31,2,3,1368},
-  {9,54,9,27,2,4,1935},
-  {17,63,10,31,2,5,2205},
-  {31,31,15,15,2,6,2772},
-  {26,12,13,2,1,0,3268},
-  {18,4,9,-5,1,0,3580},
-  {18,10,9,10,1,0,3652},
-  {20,20,10,10,0,0,3832},
-  {20,20,10,10,0,0,4032},
-  {20,8,10,-2,0,0,4232},
-  {12,14,6,4,0,0,4312},
-  {20,11,10,4,1,0,4396},
-  {20,20,10,10,0,0,4616},
-  {20,10,10,0,0,0,4816},
-  {14,15,7,6,0,0,4916},
-  {20,20,10,10,0,0,5021},
-  {16,14,8,7,0,0,5221},
-  {20,20,10,10,0,0,5333},
-  {32,29,0,29,0,0,5533},
-  {22,19,0,19,0,0,5997},
-  {24,24,12,12,0,0,6206},
-  {23,23,0,23,0,0,6494},
-  {32,27,16,18,0,0,6770},
-  {6,18,3,9,0,0,7202},
-  {23,23,0,23,0,0,7256},
-  {16,16,0,16,0,0,7532},
-  {27,27,0,27,0,0,7660},
-  {18,18,0,18,0,0,8038},
-  {24,24,12,12,0,0,8200},
-  {29,29,0,29,0,0,8488},
-  {18,18,0,18,0,0,8923},
-  {20,20,10,10,0,0,9085},
-  {26,27,0,27,0,0,9285},
-  {20,20,0,20,0,0,9636},
-  {15,15,0,15,0,0,9836},
-  {20,20,10,10,0,0,9956},
-  {13,61,6,30,0,0,10156},
-  {13,31,6,15,0,0,10583},
-  {44,13,22,6,0,0,10800},
-  {31,11,15,5,0,0,11086},
-  {31,12,15,6,0,0,11262},
-  {44,13,22,5,0,0,11454},
-  {30,13,15,6,0,0,11740},
-  {16,16,8,8,0,0,11935},
-  {16,16,8,8,0,0,12063},
-  {16,16,8,8,0,0,12191},
-  {20,12,10,6,0,0,12319},
-  {16,16,8,8,0,0,12439},
-  {8,40,4,20,0,0,12567},
-  {8,25,4,12,0,0,12727},
-  {8,16,4,8,0,0,12827},
-  {10,41,5,20,0,0,12891},
-  {20,17,10,7,0,0,13096},
-  {20,17,10,7,0,0,13096},
-  {20,17,10,7,0,0,13096},
-  {31,30,-6,37,0,0,13266},
-  {24,24,-5,29,0,0,13746},
-  {18,17,-3,21,0,0,14034},
-  {11,11,-2,13,0,0,14187},
-  {24,25,11,11,0,0,14253},
-  {18,18,8,8,0,0,14553},
-  {26,26,13,13,0,0,14715},
-  {26,26,13,13,0,0,15053},
-  {26,26,13,13,0,0,15391},
-  {39,45,17,22,0,0,15729},
-  {17,27,9,13,0,0,16629},
-  {9,55,5,27,0,0,16872},
-  {5,28,3,13,0,0,17147},
-  {20,35,10,17,0,0,17231},
-  {7,19,4,9,0,0,17581},
-  {17,33,6,16,0,0,17657},
-  {8,17,5,8,0,0,17954},
-  {27,27,0,27,1,0,18022},
-  {14,14,0,14,0,0,18751},
-  {35,36,17,18,1,0,18849},
-  {18,18,9,9,0,0,20109},
-  {28,28,14,14,1,0,20271},
-  {14,14,7,7,0,0,21055},
-  {28,28,0,28,0,0,21153},
-  {18,18,9,9,0,0,21545},
-  {42,36,21,18,0,0,21707},
-  {14,14,7,7,0,0,22463},
-  {50,25,25,14,1,0,22561},
-  {49,25,24,11,1,0,23811},
-  {8,8,4,4,0,0,25036},
-  {16,32,10,16,2,7,25068},
-  {17,32,9,16,2,8,25324},
-  {25,32,13,16,2,9,25612},
-  {33,32,17,16,2,10,26028},
-  {16,52,10,26,2,11,26572},
-  {21,62,11,31,2,12,26988},
-  {16,52,10,26,2,13,27670},
-  {21,62,11,31,2,14,28086},
-  {16,52,10,26,2,15,28768},
-  {21,62,11,31,2,16,29184},
-  {16,52,10,26,2,17,29866},
-  {21,62,11,31,2,18,30282},
-  {16,52,10,26,2,19,30964},
-  {21,62,11,31,2,20,31380},
-  {16,52,10,26,2,21,32062},
-  {21,62,11,31,2,22,32478},
-  {20,20,10,10,2,23,33160},
-  {26,26,13,13,0,0,33360},
-  {18,10,10,5,0,0,33698},
-  {10,10,10,5,0,0,33788},
-  {16,15,8,9,0,0,33838},
-  {16,17,8,10,0,0,33958},
-  {16,16,7,8,1,0,34094},
-  {9,10,4,5,1,0,34350},
-  {21,14,10,11,1,0,34440},
-  {17,8,8,7,1,0,34734},
-  {22,15,11,9,1,0,34870},
-  {16,3,8,-2,1,0,35200},
-  {24,16,12,8,1,0,35248},
-  {8,8,4,4,1,0,35632},
-  {16,52,10,26,2,24,35696},
-  {21,62,11,31,2,25,36112},
-  {16,52,10,26,2,26,36794},
-  {21,62,11,31,2,27,37210},
-  {20,20,10,10,2,28,37892},
-  {20,20,10,10,2,29,38092},
-  {20,20,10,10,2,30,38292},
-  {20,20,10,10,2,31,38492},
-  {26,26,13,13,0,0,33360},
-  {18,4,9,2,2,32,38692},
-  {20,20,10,10,1,0,38728},
-  {8,8,4,4,0,0,39128},
-  {11,11,5,5,1,0,39160},
-  {4,4,2,0,0,0,39281},
+const Sprite sprites_lv[94] = {
+  {6,54,6,27,2,0,0},
+  {9,60,3,30,2,1,162},
+  {5,56,5,28,2,2,462},
+  {8,62,3,31,2,3,630},
+  {6,56,6,28,2,4,878},
+  {9,62,3,31,2,5,1046},
+  {29,31,14,15,2,6,1356},
+  {26,10,13,3,1,0,1821},
+  {8,4,4,-3,1,0,2081},
+  {14,8,7,9,1,0,2113},
+  {20,20,10,10,0,0,2225},
+  {20,20,10,10,0,0,2425},
+  {20,8,10,-2,0,0,2625},
+  {12,14,6,4,0,0,2705},
+  {20,11,10,4,1,0,2789},
+  {20,20,10,10,0,0,3009},
+  {20,10,10,0,0,0,3209},
+  {14,15,7,6,0,0,3309},
+  {20,20,10,10,0,0,3414},
+  {16,14,8,7,0,0,3614},
+  {20,20,10,10,0,0,3726},
+  {32,29,0,29,0,0,3926},
+  {22,19,0,19,0,0,4390},
+  {24,24,12,12,0,0,4599},
+  {23,23,0,23,0,0,4887},
+  {32,27,16,18,0,0,5163},
+  {6,18,3,9,0,0,5595},
+  {23,23,0,23,0,0,5649},
+  {16,16,0,16,0,0,5925},
+  {27,27,0,27,0,0,6053},
+  {18,18,0,18,0,0,6431},
+  {24,24,12,12,0,0,6593},
+  {29,29,0,29,0,0,6881},
+  {18,18,0,18,0,0,7316},
+  {20,20,10,10,0,0,7478},
+  {26,27,0,27,0,0,7678},
+  {20,20,0,20,0,0,8029},
+  {15,15,0,15,0,0,8229},
+  {20,20,10,10,0,0,8349},
+  {13,61,6,30,0,0,8549},
+  {13,31,6,15,0,0,8976},
+  {44,13,22,6,0,0,9193},
+  {31,11,15,5,0,0,9479},
+  {31,12,15,6,0,0,9655},
+  {44,13,22,5,0,0,9847},
+  {30,13,15,6,0,0,10133},
+  {16,16,8,8,0,0,10328},
+  {16,16,8,8,0,0,10456},
+  {16,16,8,8,0,0,10584},
+  {20,12,10,6,0,0,10712},
+  {16,16,8,8,0,0,10832},
+  {8,40,4,20,0,0,10960},
+  {8,25,4,12,0,0,11120},
+  {8,16,4,8,0,0,11220},
+  {10,41,5,20,0,0,11284},
+  {20,17,10,7,0,0,11489},
+  {20,17,10,7,0,0,11489},
+  {20,17,10,7,0,0,11489},
+  {27,27,0,27,1,0,11659},
+  {14,14,0,14,0,0,12388},
+  {35,36,17,18,1,0,12486},
+  {18,18,9,9,0,0,13746},
+  {28,28,14,14,1,0,13908},
+  {14,14,7,7,0,0,14692},
+  {28,28,0,28,0,0,14790},
+  {18,18,9,9,0,0,15182},
+  {42,36,21,18,0,0,15344},
+  {14,14,7,7,0,0,16100},
+  {16,28,8,14,2,7,16198},
+  {16,28,8,14,2,8,16422},
+  {22,28,11,14,2,9,16646},
+  {28,28,14,14,2,10,16954},
+  {6,54,6,27,2,11,17346},
+  {9,60,3,30,2,12,17508},
+  {6,54,6,27,2,13,17808},
+  {9,60,3,30,2,14,17970},
+  {18,18,9,9,2,15,18270},
+  {24,24,12,12,0,0,18432},
+  {17,14,7,7,1,0,18720},
+  {8,6,3,3,1,0,18958},
+  {18,15,9,11,1,0,19006},
+  {12,8,6,6,1,0,19276},
+  {22,12,11,7,1,0,19372},
+  {16,3,8,0,1,0,19636},
+  {24,16,12,8,1,0,19684},
+  {8,8,4,4,1,0,20068},
+  {6,54,6,27,2,16,20132},
+  {9,60,3,30,2,17,20294},
+  {6,54,6,27,2,18,20594},
+  {9,60,3,30,2,19,20756},
+  {20,20,10,10,2,20,21056},
+  {20,20,10,10,2,21,21256},
+  {24,24,12,12,0,0,18432},
+  {18,6,9,3,2,22,21456},
 };
 const uint16_t sprite_pal_rgb_lv[][16] = {
-  {0x0000,0xf739,0x0000,0xf73a,0x28c1,0xdca6,0xf75a,0x0000,0xedf2,0x7b05,0xedec,0xf77a,0x0000,0x0000,0xf75a,0xcb83},
-  {0x0000,0xf506,0x0000,0xff9b,0x0820,0xfd60,0xff39,0x6a60,0x0020,0xbbc5,0xff9c,0xfe4d,0x6222,0xf503,0xfd60,0x9ba5},
-  {0x0000,0xf63e,0xd21a,0xf6fe,0xd25a,0xd21a,0xf6be,0xe3fc,0xf6de,0xec3d,0xc999,0xec3d,0xf6fe,0xdabb,0xe35c,0xf6fe},
-  {0x0000,0xe29c,0x0000,0xf71e,0x0000,0xf69e,0xe21c,0xea7d,0x0000,0xf51e,0xff3f,0xa194,0xec1d,0x0000,0xf2be,0x40a8},
-  {0x0000,0xc779,0x3dea,0xdfbb,0x35a9,0x568d,0xdfbb,0x7f51,0x7f30,0x8eb3,0x35a8,0xd79b,0xd77a,0xdfbb,0x566c,0x6f0f},
-  {0x0000,0x2ee8,0xe7bc,0x0000,0xcfb9,0x2728,0x0020,0x8791,0x2728,0x0020,0x7f31,0xe7bc,0x1d25,0x8fd2,0x5ecd,0x56ac},
-  {0x0000,0x0820,0xffff,0x0000,0xe287,0x0000,0xf6ca,0x934c,0xa0e3,0xdc70,0xd508,0x50e3,0xe5f6,0x0000,0x0000,0xc185},
-  {0x0000,0x1880,0x0000,0xfeaa,0xb4e8,0x0000,0x8b23,0x3982,0xfce1,0x0000,0x0000,0xb508,0x6a62,0x2942,0x7325,0xbba0},
-  {0x0000,0x0a0b,0x3249,0x8f5f,0x7556,0x0021,0x1458,0x326a,0x0000,0x7df8,0x3acb,0x0000,0x157e,0x661b,0x5473,0x0905},
-  {0x0000,0x0880,0x9f30,0x9fb0,0x0000,0x2564,0x0000,0x6ccb,0x6ccb,0x2b85,0x9eef,0x0000,0x6e0b,0x0020,0x42c6,0x1a02},
-  {0x0000,0x1042,0x728e,0xf4fe,0x0000,0xbc37,0x9993,0x4989,0x0000,0xd9bb,0x0000,0x594b,0xbbb7,0x8b11,0x0000,0x1042},
-  {0x0000,0xcf3f,0x0000,0xd73f,0x0883,0x449d,0xdf5f,0x0000,0x4350,0x95fe,0xdf7f,0x863d,0x0000,0x0000,0xd75f,0x19cb},
-  {0x0000,0x453f,0x0000,0xe77f,0x0021,0xd75f,0x363f,0x1ace,0x0020,0xe7bf,0x341c,0x869f,0x363f,0x19eb,0x3ddf,0x5cb6},
-  {0x0000,0xdf1b,0x0000,0xe75c,0x1082,0x8430,0xef7d,0x0000,0x5aeb,0xc658,0xbdd7,0x0000,0x0000,0xef9d,0xef7d,0x94b2},
-  {0x0000,0x9492,0x0000,0xef7d,0x0000,0xef9d,0x2124,0x8c71,0xdefb,0x528a,0x4228,0xe73c,0xa534,0x0000,0x18e3,0x0000},
-  {0x0000,0xf6f9,0x0000,0xf71a,0x30e1,0xdc07,0xf73a,0x0000,0xedb2,0x82c6,0xed8c,0xf73a,0x0000,0x0000,0xf73a,0xc2e3},
-  {0x0000,0xec46,0x0000,0xff7b,0x0820,0xff5b,0xfcc4,0x0020,0xff9c,0x7222,0xf5cd,0xfcc4,0xb345,0x51a2,0xec25,0xf6f8},
-  {0x0000,0xcf1e,0x0000,0xd71e,0x0883,0x3c5b,0xdf5e,0x0000,0x3b30,0x95bd,0x763d,0xdf5e,0x0000,0x0000,0xd73e,0x19aa},
-  {0x0000,0x44dd,0x0000,0xe77f,0x0021,0xcf1e,0x359f,0x0020,0x7e9f,0xe79f,0x11ca,0x2bda,0x357f,0x19ca,0x3d5e,0x2310},
-  {0x0000,0xcf1e,0x0000,0xd71e,0x0882,0x4459,0xdf5e,0x0000,0x95bb,0x32ce,0x7e1c,0xdf5e,0x0000,0x0000,0xd73e,0x1b15},
-  {0x0000,0x44db,0xe77e,0x0000,0xcf1e,0x0000,0x25df,0x7e7e,0x33b8,0xe79f,0x0020,0x25bf,0x0947,0x357e,0x0042,0x1b10},
-  {0x0000,0xf719,0x0000,0xf71a,0x20c2,0xdc06,0xf75b,0x0000,0xedd2,0x7ae7,0xedef,0xf75b,0x0000,0x0000,0xf73a,0xe4eb},
-  {0x0000,0xecc8,0x0000,0xff7c,0x0820,0xf719,0xfd46,0x0020,0x51c2,0xff9c,0xfd46,0xf60f,0xb386,0x51c3,0xec86,0x8ae4},
-  {0x0000,0x3646,0xffff,0xffff,0x3646,0x87ac,0x7f8c,0x7f8c,0xffff,0x3645,0x5ee9,0x7f8c,0xffff,0x2e25,0x87cd,0x5ee9},
-  {0x0000,0xe69e,0x0000,0xe6be,0x1042,0x7177,0xeefe,0x0000,0xc45d,0x59ce,0xc4dc,0xeefe,0x0000,0x0000,0x929a,0xe6de},
-  {0x0000,0xa2dc,0x0000,0xef3f,0x0001,0xe6be,0xb2ff,0x0000,0x89f9,0xf75f,0x516e,0xb2ff,0xcc9e,0xaafe,0x390a,0x0000},
-  {0x0000,0xf759,0x0000,0xf75a,0x20c1,0xcc63,0xf77a,0x0000,0x7b46,0xee8e,0xee72,0xf79b,0x0000,0x0000,0xdd67,0xf77a},
-  {0x0000,0xedc7,0x0000,0xffbc,0x0820,0xfe64,0xff79,0x72e3,0x0820,0xffbc,0xbc66,0xfe64,0xfece,0x5a22,0xf5c5,0x0000},
-  {0x0000,0x2e46,0xffff,0xffff,0x1e25,0x8fae,0x876e,0xffff,0x97cf,0x2645,0x5eea,0x5eea,0xaf75,0x5eea,0x878e,0xffff},
-  {0x0000,0xe1fc,0xffff,0xffff,0xe17c,0xfcbf,0xf4be,0xffff,0xffdf,0xe25c,0xe19c,0xf47e,0xeb7d,0xffff,0xfd1f,0xeb1d},
-  {0x0000,0x0000,0xffff,0xc3fe,0x0000,0x815b,0xffff,0x62ad,0x94b2,0x9a3c,0xcc5e,0xffff,0x0000,0xa27d,0xd47e,0x3989},
-  {0x0000,0xd0e3,0xffff,0xffff,0xc820,0xf3ed,0xf3ad,0xffff,0xfc2e,0xd0a2,0xe1c6,0xe248,0xe248,0xf3ad,0xffff,0xffff},
-  {0x0000,0xd124,0xd9a6,0xf2ea,0xc061,0xeac9,0xf30a,0xc041,0xd104,0xe1e6,0xeaa9,0xe207,0xf2ea,0xf30a,0xe207,0x0000},
+  {0x0000,0x6219,0xdede,0x28cb,0xce1d,0xd63e,0xdede,0xa47b,0x5194,0x9437,0xce3d,0xf77f,0xb53d,0x72d8,0x9c1b,0xf77f},
+  {0x0000,0x6219,0xde7f,0x61f9,0xde5f,0x9bdf,0xdebe,0x93dc,0xb53d,0x9bdf,0x72ba,0xde7f,0xd65f,0x9bfc,0xde7f,0xb51d},
+  {0x0000,0x2d2f,0xeffe,0x1246,0xeffe,0xa6f9,0x5c8f,0xcf5b,0x7e35,0xaef9,0xbf1a,0xc79c,0x1b6a,0xe7bd,0x4530,0x7635},
+  {0x0000,0x2d30,0xdffe,0xcfdd,0x2d0f,0xa6f9,0x67b8,0xdfbd,0x7655,0x3d71,0xa739,0xcfbd,0x67b8,0xc77c,0xcf5b,0x7635},
+  {0x0000,0x3a36,0xef7f,0xcebe,0x10c9,0x7c36,0x94fb,0xe75f,0x2991,0xbe1c,0xad9b,0x298d,0xbe1c,0xb5dd,0xef7f,0x6378},
+  {0x0000,0x4276,0xc65f,0xc69f,0x52d7,0x31f5,0x9d3b,0xc67f,0x5b7f,0x849b,0xa55d,0xc67e,0xce9f,0x6b9b,0xc67f,0x31d5},
+  {0x0000,0x0000,0xff37,0x0000,0xf2e7,0x0000,0x50c6,0xfd0c,0x0000,0xbbcb,0x0000,0x3064,0x9227,0xfc09,0xfe10,0x0000},
+  {0x0000,0xfe4e,0x0000,0xfd89,0x7349,0xacee,0x3963,0xe508,0xff14,0xfd89,0xde51,0x9c4c,0x1081,0xf548,0x5a67,0xc590},
+  {0x0000,0xfe4e,0x0000,0xfd89,0x7349,0xacee,0x3963,0xe508,0xff14,0xfd89,0xde51,0x9c4c,0x1081,0xf548,0x5a67,0xc590},
+  {0x0000,0xa7fd,0x0000,0x3616,0x5c2f,0x3616,0x2db4,0x11e7,0x8637,0x3616,0x1b2b,0x6d54,0x430b,0x1924,0x3616,0x973a},
+  {0x0000,0xdff5,0x0000,0x9f2c,0x6389,0x9f2c,0x8e6b,0x9f2c,0x3a05,0xae10,0x8ced,0x9f2c,0x9f2c,0x6ce8,0xc713,0x18e2},
+  {0x0000,0x2bf5,0xefbf,0x09a9,0xbf3e,0xbebc,0x85d9,0x1b31,0xc6fd,0x7d37,0xdf7e,0xefdf,0x9e5b,0x4476,0x7579,0xbedc},
+  {0x0000,0x3435,0xc77f,0xc75f,0x23f5,0x4e5d,0x85da,0xd75e,0x4e5d,0x3c76,0x4e5d,0xbf3e,0xcf7f,0x965c,0x4e5d,0x6559},
+  {0x0000,0x5ca5,0xf7dc,0xd796,0x2202,0xcef7,0xa64f,0x43c4,0xd738,0x95ae,0xe7bb,0xf7fc,0xb6b2,0x7508,0x95ee,0xcef7},
+  {0x0000,0x5ca5,0xdfd6,0xdfd5,0x54a5,0x9f2c,0x966d,0xdf79,0xb6d2,0x6d28,0x9f2c,0xe7d7,0x964d,0xdfd6,0xdfd6,0xbf11},
+  {0x0000,0x5464,0xffff,0x5464,0xeffa,0xffff,0x9f2c,0x9f2c,0xae71,0xdff5,0xdff5,0x5464,0xffff,0xdfd5,0x9f2c,0xffff},
+  {0x0000,0xb9ce,0xf6bc,0x50a6,0xe61a,0xf61a,0xf6bc,0xd435,0x996b,0xbbf3,0xee1a,0xff5e,0xe4f7,0xba90,0xd3f4,0xff5e},
+  {0x0000,0xb9ce,0xfe3b,0xb9ce,0xfe1b,0xfb74,0xf6bc,0xe3b4,0xe517,0xfb74,0xc270,0xfe5b,0xfe1b,0xdbd4,0xfe3b,0xecf7},
+  {0x0000,0x2d0f,0xeffe,0xc79c,0x1246,0xbf1a,0x8e77,0x242c,0xc75b,0x85d4,0xdfbd,0xeffe,0x9ed8,0x4d51,0x7635,0xbf1a},
+  {0x0000,0x2d2f,0xd7fd,0xcfdd,0x2d0f,0x67b8,0x8718,0xd79c,0x6634,0x67b8,0xcfbc,0xd7fd,0x8f18,0x3d71,0xbf1a,0x7615},
+  {0x0000,0x811b,0xffff,0xffff,0x811b,0xd4ff,0xab1d,0xdd1f,0xffff,0xffff,0x811b,0xab1d,0xdd1f,0xab1d,0xffff,0xee5f},
+  {0x0000,0xc800,0xfc90,0xffff,0xf490,0xc800,0xe248,0xe248,0xfc90,0xc800,0xe248,0xfe37,0xeb8d,0xffff,0xfd74,0xfc90},
+  {0x0000,0xf3ef,0x0000,0xfd33,0x0000,0x98c4,0x98c4,0xc187,0xf3ce,0xea8a,0xea6a,0xfd54,0xc9e8,0x98c4,0x3841,0x98c4},
 };
 const uint8_t sprite_pal_a_lv[][16] = {
-  {0,15,1,1,14,14,8,8,11,15,14,11,13,4,5,12},
-  {0,15,2,3,14,5,14,15,7,11,9,15,12,10,1,15},
-  {0,15,2,6,14,8,1,5,12,14,5,1,4,12,8,9},
-  {0,15,2,1,14,10,4,9,5,15,5,15,4,10,1,14},
-  {0,15,2,4,14,9,9,14,1,5,5,12,1,6,14,5},
-  {0,15,2,4,14,3,14,15,9,10,3,6,15,13,7,15},
-  {0,15,15,2,15,8,15,15,15,15,15,15,15,5,12,15},
-  {0,14,2,15,9,8,15,11,15,11,5,15,15,2,10,15},
-  {0,15,1,15,5,8,15,7,3,13,15,11,15,15,15,14},
-  {0,15,3,15,2,15,8,11,2,15,10,11,15,5,12,15},
-  {0,15,1,15,7,8,15,10,1,15,11,15,15,8,4,12},
-  {0,15,1,1,14,14,8,8,15,11,11,14,13,4,5,14},
-  {0,15,2,3,14,14,6,15,7,8,11,15,1,11,11,15},
-  {0,14,1,1,14,12,8,8,15,11,14,4,13,11,5,14},
-  {0,15,1,2,14,10,6,11,15,14,11,6,11,5,14,10},
-  {0,15,1,1,14,14,8,8,11,15,14,11,13,4,5,12},
-  {0,15,2,3,14,11,6,7,8,15,15,1,11,11,11,15},
-  {0,15,1,1,14,14,8,8,15,11,14,11,4,13,5,14},
-  {0,15,2,3,14,14,6,7,15,9,14,11,1,11,11,15},
-  {0,15,1,1,14,14,8,8,11,15,14,11,4,13,5,12},
-  {0,15,3,2,14,14,6,15,11,9,6,1,14,11,11,15},
-  {0,15,1,1,14,14,8,8,11,15,14,11,13,4,5,14},
-  {0,15,2,3,14,14,6,7,14,9,1,15,11,11,11,15},
-  {0,15,2,14,3,8,3,15,9,8,6,13,5,5,5,15},
-  {0,15,1,1,14,12,8,8,14,15,11,11,4,13,14,5},
-  {0,15,1,3,14,14,6,10,11,8,15,1,15,11,11,5},
-  {0,15,1,1,14,12,8,8,15,14,11,11,13,4,14,5},
-  {0,15,2,3,14,6,14,15,5,9,11,1,15,11,11,10},
-  {0,15,2,15,5,8,15,8,5,8,6,15,15,3,13,12},
-  {0,15,2,12,5,5,15,5,15,3,8,8,15,9,3,6},
-  {0,15,2,15,3,6,9,14,5,15,5,14,6,4,8,15},
-  {0,15,2,15,5,8,15,9,5,8,5,15,3,13,12,5},
-  {0,15,1,10,9,6,14,3,13,9,2,15,12,15,15,0},
+  {0,15,1,7,9,15,6,13,11,10,4,9,15,13,15,4},
+  {0,15,1,7,11,2,6,11,15,7,11,8,15,15,4,11},
+  {0,15,2,7,11,14,9,6,13,11,2,15,9,6,13,15},
+  {0,15,1,11,4,15,6,6,11,11,11,15,15,3,6,15},
+  {0,15,4,15,7,10,15,11,11,6,11,8,4,15,6,15},
+  {0,15,1,12,2,8,15,7,6,2,11,15,4,15,10,11},
+  {0,15,15,1,15,9,15,15,13,15,3,15,15,15,15,6},
+  {0,15,11,7,13,14,12,15,15,13,14,13,11,15,12,14},
+  {0,15,11,7,13,14,12,15,15,13,14,13,11,15,12,14},
+  {0,15,11,3,13,8,15,12,14,11,13,14,12,12,9,15},
+  {0,15,11,1,13,9,14,6,12,14,13,3,11,14,14,12},
+  {0,15,1,7,15,9,13,11,5,10,5,9,15,13,15,1},
+  {0,15,2,11,7,2,15,5,11,11,7,15,8,11,15,11},
+  {0,15,1,15,7,9,13,11,5,10,5,9,15,13,15,1},
+  {0,15,1,11,7,2,11,6,15,11,7,8,15,15,4,11},
+  {0,15,2,1,15,8,11,1,15,11,1,11,5,15,15,10},
+  {0,15,1,7,9,15,6,13,11,10,4,9,15,13,15,4},
+  {0,15,1,7,11,2,6,11,15,7,11,8,15,15,4,11},
+  {0,15,1,15,7,9,13,11,5,10,5,9,15,13,15,1},
+  {0,15,2,11,7,2,15,5,11,7,15,8,11,11,9,15},
+  {0,15,1,12,1,15,11,1,9,15,11,1,11,15,3,15},
+  {0,15,1,10,15,1,11,1,11,11,15,15,15,8,15,15},
+  {0,15,2,1,14,7,1,13,11,6,1,6,9,10,14,5},
 };
 const uint8_t sprite_blob_lv[] = {
-  0,0,0,227,3,0,0,0,0,0,96,17,11,0,0,0,0,0,30,17,11,0,0,0,0,48,17,170,40,215,0,0,
-  0,96,81,85,207,204,13,0,0,16,90,85,201,204,12,0,0,30,85,85,196,204,220,0,0,171,85,149,204,204,124,0,
-  0,81,85,69,204,204,204,2,224,81,85,69,204,204,204,13,96,90,85,69,204,204,204,7,176,90,85,201,204,204,204,7,
-  176,90,85,201,204,204,204,12,19,170,170,196,204,204,204,44,30,170,170,196,204,204,204,220,30,170,170,196,204,204,204,220,
-  166,170,90,196,204,204,204,124,166,170,90,196,204,204,204,124,171,170,154,204,204,204,204,124,171,170,154,204,204,204,204,124,
-  171,170,154,204,204,204,204,204,171,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,
-  161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,
-  161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,171,170,154,204,204,204,204,204,171,170,154,204,204,204,204,204,
-  171,170,154,204,204,204,204,124,171,170,154,204,204,204,204,124,166,170,90,196,204,204,204,124,166,170,90,196,204,204,204,124,
-  30,170,170,196,204,204,204,220,30,170,170,196,204,204,204,220,19,170,170,196,204,204,204,44,176,90,85,201,204,204,204,12,
-  176,90,85,201,204,204,204,7,96,90,85,69,204,204,204,7,224,81,85,69,204,204,204,13,0,81,85,69,204,204,204,2,
-  0,171,85,149,204,204,124,0,0,30,85,85,196,204,220,0,0,16,90,85,201,204,12,0,0,96,81,85,207,204,13,0,
-  0,48,17,170,40,215,0,0,0,0,30,17,11,0,0,0,0,0,96,17,11,0,0,0,0,0,0,227,3,0,0,0,
-  0,0,0,0,0,80,5,0,0,0,0,0,0,0,0,0,189,209,0,0,0,0,0,0,0,0,0,189,209,0,0,0,
-  0,0,0,0,0,0,21,81,0,0,0,0,0,0,0,0,0,224,14,0,0,0,0,0,0,48,102,10,0,130,2,0,
-  0,0,0,0,99,102,10,128,68,36,0,0,0,0,0,106,102,10,66,68,68,2,0,0,0,48,102,17,13,68,68,68,
-  8,0,0,0,160,22,17,141,68,68,68,36,0,0,0,96,27,17,77,68,68,68,132,0,0,0,99,17,17,73,68,119,
-  116,199,0,0,0,186,17,17,76,68,119,116,119,2,0,0,182,17,17,68,68,68,68,68,8,0,48,22,17,209,68,68,
-  68,68,68,8,0,48,22,17,145,68,68,68,68,68,4,0,160,27,17,193,68,68,68,68,68,36,0,160,27,17,193,68,
-  68,119,116,119,36,0,96,187,187,75,68,68,119,116,119,132,0,96,187,187,75,68,68,119,116,119,132,0,99,187,187,75,
-  68,68,68,68,17,143,0,99,187,187,65,68,68,68,116,187,65,0,99,187,187,79,68,68,68,116,17,65,0,179,187,187,
-  79,68,68,119,116,255,68,0,186,187,187,79,68,68,119,116,119,68,2,186,187,187,79,68,68,119,116,119,68,2,186,187,
-  187,79,68,68,68,68,68,68,2,186,187,187,79,68,68,68,68,68,68,2,186,187,187,71,68,68,68,68,68,68,2,186,
-  187,187,71,68,68,68,68,68,68,8,186,187,187,71,68,68,119,116,119,68,8,186,187,187,71,68,68,119,116,119,68,8,
-  186,187,187,71,68,68,68,68,68,68,8,186,187,187,71,68,68,68,68,68,68,2,186,187,187,79,68,68,68,68,68,68,
-  2,186,187,187,79,68,68,68,68,68,68,2,186,187,187,79,68,68,119,116,119,68,2,186,187,187,79,68,68,119,116,119,
-  68,2,179,187,187,79,68,68,119,116,255,68,0,99,187,187,79,68,68,68,116,27,65,0,99,187,187,65,68,68,68,116,
-  17,65,0,99,187,187,75,68,68,68,68,17,143,0,96,187,187,75,68,68,119,116,119,132,0,96,187,187,75,68,68,119,
-  116,119,132,0,160,27,17,193,68,68,119,116,119,36,0,160,27,17,193,68,68,68,68,68,36,0,48,22,17,145,68,68,
-  68,68,68,4,0,48,22,17,209,68,68,68,68,68,8,0,0,182,17,17,68,68,68,68,68,8,0,0,186,17,17,76,
-  68,119,116,119,2,0,0,99,17,17,73,68,119,116,199,0,0,0,96,27,17,77,68,68,68,132,0,0,0,160,22,17,
-  141,68,68,68,36,0,0,0,48,102,17,13,68,68,68,8,0,0,0,0,106,102,10,66,68,68,2,0,0,0,0,99,
-  102,10,128,68,36,0,0,0,0,0,48,102,10,0,130,2,0,0,0,0,0,0,0,0,224,14,0,0,0,0,0,0,
-  0,0,0,181,81,0,0,0,0,0,0,0,0,0,189,209,0,0,0,0,0,0,0,0,0,29,209,0,0,0,0,0,
-  0,0,0,0,80,5,0,0,0,0,0,0,96,255,6,0,0,134,17,3,0,0,31,17,3,0,96,17,68,7,0,240,
-  65,68,10,0,16,73,68,10,0,28,68,68,2,0,159,68,212,0,0,72,68,84,0,96,65,68,164,0,192,65,68,36,
-  0,48,73,68,4,0,240,73,68,13,0,128,73,68,13,0,128,153,153,14,0,16,153,153,14,0,22,153,153,7,0,28,
-  153,153,7,0,28,153,153,7,0,19,153,153,11,0,147,153,153,11,0,147,153,153,11,0,159,153,153,0,0,159,153,153,
-  0,0,159,153,153,0,0,159,153,153,0,0,159,153,153,0,0,159,153,153,0,0,159,153,153,0,0,159,153,153,0,0,
-  159,153,153,0,0,159,153,153,0,0,147,153,153,11,0,147,153,153,11,0,19,153,153,11,0,28,153,153,7,0,28,153,
-  153,7,0,22,153,153,7,0,16,153,153,14,0,128,153,153,14,0,128,73,68,13,0,240,73,68,13,0,48,73,68,4,
-  0,192,65,68,36,0,96,65,68,164,0,0,72,68,84,0,0,159,68,212,0,0,28,68,68,2,0,16,73,68,10,0,
-  240,65,68,10,0,96,17,68,7,0,0,31,17,3,0,0,134,17,3,0,0,96,255,6,0,0,0,0,126,113,0,0,
-  0,0,0,0,0,23,17,14,0,0,0,0,0,0,22,17,0,0,0,0,0,0,0,96,231,0,0,0,0,0,48,85,
-  3,0,0,0,0,0,0,80,153,10,0,0,0,0,0,0,154,153,10,0,0,0,0,0,48,153,17,12,0,0,0,0,
-  0,160,25,17,6,128,136,8,0,0,80,25,17,6,183,68,4,0,0,147,17,17,0,183,68,4,0,0,154,17,113,0,
-  183,68,4,0,0,149,17,97,0,128,136,8,0,0,21,17,97,0,0,0,0,0,0,25,17,1,0,246,68,212,0,48,
-  25,17,1,0,183,68,212,0,160,25,17,7,0,183,68,212,0,160,25,17,7,0,222,221,141,0,80,25,17,7,0,0,
-  0,0,0,80,17,17,12,0,208,221,221,0,80,153,153,12,0,183,68,68,0,144,153,153,12,0,183,68,68,0,144,153,
-  153,14,0,246,68,68,0,147,153,153,0,0,32,34,34,0,147,153,153,0,0,128,136,136,2,154,153,153,0,0,183,68,
-  68,2,154,153,153,0,0,183,68,68,2,154,153,153,0,0,183,68,68,2,154,153,153,0,0,128,136,136,2,154,153,89,
-  0,0,0,0,0,0,154,153,89,0,0,246,68,68,8,154,153,89,0,0,183,68,68,8,154,153,89,0,0,183,68,68,
-  8,154,153,153,0,0,222,221,221,8,154,153,153,0,0,0,0,0,0,154,153,153,0,0,208,221,221,2,154,153,153,0,
-  0,183,68,68,2,147,153,153,0,0,183,68,68,2,147,153,153,0,0,246,68,68,2,144,153,153,14,0,32,34,34,0,
-  144,153,153,12,0,128,136,136,0,80,153,153,12,0,183,68,68,0,80,17,17,12,0,183,68,68,0,80,25,17,7,0,
-  183,68,68,0,160,25,17,7,0,128,136,136,0,160,25,17,7,0,0,0,0,0,48,25,17,1,0,246,68,212,0,0,
-  25,17,1,0,183,68,212,0,0,21,17,97,0,183,68,212,0,0,149,17,97,0,222,221,141,0,0,154,17,113,0,0,
-  0,0,0,0,147,17,17,0,208,221,13,0,0,80,25,17,6,183,68,4,0,0,160,25,17,6,183,68,4,0,0,48,
-  153,17,12,246,68,4,0,0,0,154,153,10,32,34,2,0,0,0,80,153,10,0,0,0,0,0,0,48,85,3,0,0,
-  0,0,0,0,0,0,96,231,0,0,0,0,0,0,0,22,17,0,0,0,0,0,0,0,23,17,14,0,0,0,0,0,
-  0,30,113,0,0,0,0,0,0,0,0,14,0,0,0,0,0,192,102,12,0,0,188,17,13,0,0,22,17,13,0,192,
-  17,238,9,0,96,65,68,10,0,16,71,68,10,0,19,68,68,2,0,118,68,68,0,0,235,68,84,0,192,225,238,174,
-  0,48,225,238,46,0,208,231,238,14,0,96,231,238,14,0,176,238,238,5,0,176,238,238,5,0,16,238,238,5,0,28,
-  119,119,15,0,19,119,119,15,0,19,119,119,15,0,125,119,119,8,0,125,119,119,8,0,125,119,119,8,0,118,119,119,
-  0,0,118,119,119,0,0,118,119,119,0,0,118,119,119,0,0,118,119,119,0,0,118,119,119,0,0,118,119,119,0,0,
-  118,119,119,0,0,118,119,119,0,0,118,119,119,0,0,125,119,119,8,0,125,119,119,8,0,125,119,119,8,0,19,119,
-  119,15,0,19,119,119,15,0,28,119,119,15,0,16,238,238,5,0,176,238,238,5,0,176,238,238,5,0,96,231,238,14,
-  0,208,231,238,14,0,48,225,238,46,0,192,225,238,174,0,0,235,68,84,0,0,118,68,68,0,0,19,68,68,2,0,
-  16,71,68,10,0,96,65,68,10,0,192,17,238,9,0,0,22,17,13,0,0,188,17,13,0,0,192,102,12,0,0,0,
-  0,133,129,0,0,0,0,0,0,0,24,17,5,0,0,0,0,0,0,21,17,0,0,0,0,0,0,0,80,88,0,0,
-  0,0,0,32,187,2,0,0,0,0,0,0,64,68,11,0,0,0,0,0,0,75,68,11,0,0,0,0,0,32,68,255,
-  10,0,0,0,0,0,176,244,204,5,48,51,3,0,0,64,23,17,5,200,102,6,0,0,66,31,17,0,200,102,6,0,
-  0,75,17,129,0,200,102,6,0,0,123,255,239,0,48,51,3,0,0,244,255,95,0,0,0,0,0,0,244,255,15,0,
-  101,102,150,0,32,244,255,15,0,200,102,150,0,176,247,255,8,0,200,102,150,0,176,247,255,14,0,149,153,57,0,176,
-  247,255,14,0,0,0,0,0,64,247,255,14,0,144,153,153,0,64,119,119,10,0,200,102,102,0,64,119,119,10,0,200,
-  102,102,0,64,119,119,10,0,101,102,102,0,66,119,119,0,0,48,51,51,0,66,119,119,0,0,48,51,51,3,66,119,
-  215,0,0,200,102,102,3,75,119,215,0,0,200,102,102,3,75,119,215,0,0,200,102,102,3,75,119,215,0,0,48,51,
-  51,3,75,119,215,0,0,0,0,0,0,75,119,215,0,0,101,102,102,3,75,119,215,0,0,200,102,102,3,75,119,215,
-  0,0,200,102,102,3,75,119,215,0,0,149,153,153,3,75,119,215,0,0,0,0,0,0,75,119,215,0,0,144,153,153,
-  3,66,119,215,0,0,200,102,102,3,66,119,119,0,0,200,102,102,3,66,119,119,0,0,101,102,102,3,64,119,119,10,
-  0,48,51,51,0,64,119,119,10,0,48,51,51,0,64,119,119,10,0,200,102,102,0,64,247,255,14,0,200,102,102,0,
-  176,247,255,14,0,200,102,102,0,176,247,255,14,0,48,51,51,0,176,247,255,8,0,0,0,0,0,32,244,255,15,0,
-  101,102,150,0,0,244,255,15,0,200,102,150,0,0,244,255,95,0,200,102,150,0,0,123,255,239,0,149,153,57,0,0,
-  75,17,129,0,0,0,0,0,0,66,31,17,0,144,153,9,0,0,64,23,17,5,200,102,6,0,0,176,244,204,5,200,
-  102,6,0,0,32,68,255,10,101,102,6,0,0,0,75,68,11,48,51,3,0,0,0,64,68,11,0,0,0,0,0,0,
-  32,187,2,0,0,0,0,0,0,0,0,80,88,0,0,0,0,0,0,0,21,17,0,0,0,0,0,0,0,24,17,5,
-  0,0,0,0,0,0,21,129,0,0,0,0,0,0,0,0,5,0,0,0,237,238,3,0,0,0,0,0,0,0,0,0,
-  0,227,238,13,29,27,62,0,0,0,0,0,0,0,0,0,48,30,27,13,29,121,17,13,0,0,0,0,0,0,0,0,
-  29,113,25,13,19,199,23,81,0,0,0,0,0,0,0,80,17,199,23,3,16,199,156,27,62,0,0,0,0,0,48,30,
-  155,204,23,0,224,155,153,185,17,61,221,221,221,61,29,177,153,153,235,0,224,155,153,153,23,17,17,17,17,17,17,151,
-  153,153,235,0,80,145,153,153,121,139,79,68,68,143,123,153,153,153,81,0,80,145,153,153,73,68,68,68,68,68,68,153,
-  153,153,81,0,208,113,153,73,68,68,68,68,68,68,68,68,153,121,209,0,48,113,153,68,153,153,153,68,68,68,68,68,
-  148,121,49,0,0,177,68,68,153,153,153,73,68,68,68,68,68,180,1,0,0,190,68,68,148,153,185,241,177,79,68,68,
-  68,180,14,0,0,190,68,68,68,191,17,129,17,177,79,68,68,180,14,0,0,30,68,244,184,17,177,79,191,17,177,248,
-  68,20,14,0,0,177,255,24,17,177,100,244,100,180,17,17,248,191,1,0,0,129,255,24,177,191,102,255,111,182,191,17,
-  248,143,1,0,0,129,255,143,106,26,106,255,111,26,106,138,255,143,1,0,0,129,255,255,79,170,166,255,175,166,74,255,
-  255,143,1,0,0,129,255,255,255,255,255,255,255,255,255,255,255,143,1,0,0,177,255,255,255,255,255,255,255,255,255,255,
-  255,191,1,0,0,30,255,255,155,153,151,121,153,151,153,251,255,31,14,0,0,21,248,255,113,114,43,28,44,123,114,241,
-  255,24,5,0,0,19,129,255,27,28,145,27,155,17,28,251,143,17,3,0,0,80,177,136,184,17,17,17,17,17,177,136,
-  184,81,0,0,0,0,30,139,136,27,17,17,17,17,139,136,27,14,0,0,0,0,19,177,136,136,187,27,187,139,136,184,
-  17,3,0,0,0,0,48,30,177,136,136,136,136,136,184,17,62,0,0,0,0,0,0,80,17,177,136,136,136,184,17,81,
-  0,0,0,0,0,0,0,0,83,30,17,17,17,17,94,3,0,0,0,0,0,0,0,0,0,48,221,221,221,61,0,0,
-  0,0,0,0,2,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,2,8,79,
-  111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,79,8,8,95,143,143,143,143,143,143,
-  143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,143,95,8,1,15,207,223,223,223,223,223,223,223,223,223,223,223,
-  223,223,223,223,223,223,223,223,223,207,15,1,0,11,175,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,255,175,11,0,0,6,63,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,63,6,0,
-  0,0,12,79,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,79,12,0,0,0,0,2,14,11,4,
-  4,4,4,4,4,4,4,4,4,4,4,4,4,4,4,11,14,2,0,0,0,0,0,2,13,10,2,0,0,0,0,0,
-  0,0,0,0,0,0,0,2,10,13,2,0,0,0,0,0,0,0,1,8,14,9,4,0,0,0,0,0,0,0,0,4,
-  9,14,8,1,0,0,0,0,0,0,0,0,0,0,2,8,13,14,11,9,8,8,9,11,14,13,8,2,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,2,5,7,8,8,7,5,2,0,0,0,0,0,0,0,0,0,244,251,251,251,
-  251,251,251,251,251,251,251,251,251,251,251,251,251,244,0,245,253,255,255,255,255,255,255,255,255,255,255,255,255,253,245,0,
-  0,0,240,230,219,223,223,223,223,223,223,223,223,219,230,240,0,0,0,0,0,0,0,177,180,182,183,183,182,180,177,0,
-  0,0,0,0,0,0,0,0,0,0,0,17,19,19,17,0,0,0,0,0,0,0,0,0,0,0,16,22,27,28,26,26,
-  28,27,22,16,0,0,0,0,0,0,0,18,27,41,70,118,84,84,84,69,41,27,18,0,0,0,0,0,18,28,55,168,
-  203,169,84,84,84,84,84,55,28,18,0,0,0,16,27,55,185,203,151,85,84,84,84,84,84,84,55,27,16,0,0,21,
-  26,168,203,118,84,84,84,84,84,84,84,84,84,26,21,0,0,27,86,203,151,84,84,84,84,84,84,84,84,84,84,69,
-  27,0,17,27,84,84,84,84,84,84,84,84,84,84,84,84,84,84,27,17,20,26,84,84,84,84,84,84,84,84,84,84,
-  84,84,84,84,26,20,19,36,66,66,66,66,66,66,66,66,66,66,66,66,66,66,36,19,204,204,204,204,204,204,204,204,
-  204,172,206,204,204,204,204,204,204,204,204,138,238,204,204,204,204,204,204,204,172,136,238,206,204,204,204,204,204,204,138,136,
-  238,238,204,204,204,204,204,172,136,136,238,238,206,204,204,204,204,138,136,136,238,238,238,204,204,204,172,136,136,136,238,238,
-  238,206,204,204,138,136,136,136,238,238,238,238,204,172,136,136,136,136,238,238,238,238,206,138,136,136,136,136,238,238,238,238,
-  206,137,136,136,136,136,238,238,238,238,172,154,136,136,136,136,238,238,238,206,170,170,137,136,136,136,238,238,238,172,170,170,
-  154,136,136,136,238,238,206,170,170,170,170,137,136,136,238,238,172,170,170,170,170,154,136,136,238,206,170,170,170,170,170,170,
-  137,136,238,172,170,170,170,170,170,170,154,136,206,170,170,170,170,170,170,170,170,137,172,170,170,170,170,170,170,170,170,154,
-  0,0,0,0,48,5,0,0,0,0,0,0,0,0,160,12,0,0,0,0,0,0,0,0,243,95,0,0,0,0,0,0,
-  0,0,250,207,0,0,0,0,0,0,0,48,223,253,5,0,0,0,0,0,0,160,207,236,12,0,0,0,0,0,0,243,
-  205,220,95,0,0,0,0,0,0,234,187,187,206,0,0,0,0,0,48,223,187,187,252,5,0,0,0,0,160,190,187,187,
-  235,12,0,0,0,0,243,172,170,170,202,95,0,0,0,0,234,170,170,170,170,206,0,0,0,48,191,170,170,170,170,251,
-  5,0,0,160,158,153,153,153,153,233,12,0,0,243,155,153,153,153,153,185,95,0,0,234,136,136,136,136,136,136,206,0,
-  48,175,136,136,136,136,136,136,250,5,160,142,136,136,136,136,136,136,232,12,243,172,170,170,170,170,170,170,202,95,250,255,
-  255,255,255,255,255,255,255,207,0,0,0,0,128,9,0,0,0,0,0,0,0,16,251,207,2,0,0,0,0,0,0,211,
-  223,253,78,0,0,0,0,0,80,238,188,187,254,6,0,0,0,0,248,173,170,170,218,159,0,0,0,177,207,153,153,153,
-  153,252,44,0,48,253,189,187,187,187,187,219,239,4,229,255,255,255,255,255,255,255,255,111,0,0,0,1,0,0,0,0,
-  80,7,0,0,0,0,192,14,0,0,0,0,244,111,0,0,0,0,251,206,0,0,0,32,223,253,4,0,0,144,191,235,
-  11,0,0,241,173,202,63,0,0,248,170,170,159,0,0,222,153,153,253,1,96,175,153,153,250,8,208,141,136,136,216,14,
-  245,172,170,170,202,127,251,255,255,255,255,223,0,0,0,0,0,0,0,0,0,0,3,11,1,0,0,0,0,0,0,0,
-  4,3,0,0,0,0,0,0,0,0,12,15,12,1,0,0,0,0,0,0,15,15,4,0,0,0,0,0,0,6,15,15,
-  15,13,10,9,0,0,0,0,14,14,11,0,0,0,0,0,1,13,14,14,14,14,14,14,6,0,0,0,12,12,12,4,
-  0,2,11,12,12,12,12,12,12,12,12,12,11,1,0,3,11,11,11,10,4,10,11,11,11,11,11,11,11,11,11,11,
-  11,7,2,10,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,8,8,8,
-  8,8,8,8,8,8,8,8,8,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,
-  5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,2,2,2,2,2,
-  2,2,2,2,2,2,2,2,0,0,0,0,0,192,14,0,0,0,0,0,0,0,0,243,79,0,0,0,0,0,0,0,
-  0,200,155,0,0,0,0,0,0,0,0,126,231,0,0,0,0,0,0,0,64,47,242,4,16,0,0,0,0,0,160,11,
-  176,9,186,0,0,0,16,0,241,6,112,62,239,0,0,0,243,4,246,1,32,239,250,3,0,0,234,29,171,0,0,235,
-  225,6,0,16,111,187,79,0,0,118,176,9,0,128,14,226,14,0,0,0,128,12,0,224,8,96,7,0,0,0,64,15,
-  0,246,1,0,0,0,0,0,16,63,0,157,0,0,0,0,0,0,0,109,64,63,0,0,0,0,0,0,0,154,176,11,
-  0,0,0,0,0,0,0,199,243,5,0,0,0,0,0,0,0,244,217,0,0,0,0,0,0,0,0,241,111,0,0,0,
-  0,0,0,0,0,208,175,153,153,153,153,153,153,153,153,217,0,0,0,0,0,144,11,0,0,0,0,0,0,0,0,245,
-  126,0,0,0,0,0,33,0,32,110,244,4,0,0,0,0,235,3,209,9,96,46,0,0,0,128,141,94,202,0,0,234,
-  2,0,0,244,4,229,46,0,0,176,29,0,16,126,0,48,4,0,0,16,188,0,176,11,0,0,0,0,0,0,209,10,
-  216,1,0,0,0,0,0,0,32,142,207,153,153,153,153,153,153,153,153,252,0,0,0,0,227,2,0,0,0,0,0,249,
-  6,0,0,0,64,17,239,10,0,0,0,241,106,110,14,0,0,0,248,223,41,63,0,0,0,142,250,3,125,0,0,96,
-  31,163,0,185,0,0,192,10,0,0,245,0,0,244,3,0,0,241,4,0,187,0,0,0,176,8,48,95,0,0,0,128,
-  12,144,13,0,0,0,64,31,241,7,0,0,0,0,94,247,154,153,153,153,153,158,166,153,153,153,153,153,122,0,0,0,
-  0,96,7,0,0,0,0,0,0,0,0,113,38,0,0,0,0,0,0,0,0,54,114,0,0,0,0,0,0,0,16,7,
-  96,2,0,0,0,0,0,0,96,3,32,7,0,0,0,0,0,0,113,0,0,38,0,0,0,0,0,0,54,0,0,114,
-  0,0,0,0,0,16,7,0,0,96,2,0,0,0,0,96,3,0,0,32,7,0,0,0,0,113,0,0,0,0,38,0,
-  0,0,0,54,0,0,0,0,114,0,0,0,16,7,0,0,0,0,96,2,0,0,96,3,0,0,0,0,32,7,0,0,
-  113,0,0,0,0,0,0,38,0,0,54,0,0,0,0,0,0,114,0,16,7,0,0,0,0,0,0,96,2,96,3,0,
-  0,0,0,0,0,32,7,113,0,0,0,0,0,0,0,0,38,54,0,0,0,0,0,0,0,0,114,56,51,51,51,51,
-  51,51,51,51,131,0,0,0,64,4,0,0,0,0,0,0,128,24,0,0,0,0,0,0,84,68,0,0,0,0,0,0,
-  24,129,1,0,0,0,0,64,5,64,5,0,0,0,0,129,1,0,24,0,0,0,0,69,0,0,99,0,0,0,16,8,
-  0,0,128,1,0,0,96,3,0,0,48,6,0,0,129,0,0,0,0,39,0,0,54,0,0,0,0,99,0,32,7,0,
-  0,0,0,112,2,112,19,17,17,17,17,49,7,113,119,119,119,119,119,119,23,118,119,119,119,119,119,119,119,119,103,39,
-  17,17,17,17,17,17,17,17,114,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,
-  0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,
-  0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,
-  0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,
-  113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,
-  0,0,0,0,0,0,0,0,113,39,17,17,17,17,17,17,17,17,114,118,119,119,119,119,119,119,119,119,103,0,0,0,
-  0,0,114,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,111,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  48,253,14,0,0,0,0,0,0,0,0,0,0,0,0,0,247,255,8,0,0,0,0,0,0,0,0,0,0,0,0,177,
-  255,255,2,0,0,0,0,0,0,0,0,0,0,0,16,252,255,191,0,0,0,0,0,0,0,0,0,0,0,0,226,255,
-  255,95,0,0,0,0,0,16,0,0,0,0,0,48,254,255,255,13,0,0,0,116,202,127,0,0,0,0,0,228,238,254,
-  255,7,0,97,235,255,255,7,0,0,0,0,0,238,238,238,238,1,181,255,255,255,127,0,0,0,0,0,0,221,221,221,
-  206,233,255,255,255,255,7,0,0,0,0,0,0,204,204,220,221,238,238,255,255,127,0,0,0,0,0,0,0,187,187,204,
-  204,221,238,254,255,7,0,0,0,0,0,0,0,170,170,187,203,220,221,238,111,0,0,0,0,0,0,0,0,153,153,169,
-  186,203,220,237,7,0,0,0,0,0,0,0,0,136,136,152,169,186,204,221,222,221,188,138,71,1,0,0,0,102,119,135,
-  152,169,187,220,237,254,255,255,255,239,106,2,0,85,102,118,135,152,186,203,221,238,255,255,255,255,159,3,0,68,84,101,
-  118,136,169,203,220,238,255,255,255,125,1,0,0,51,67,84,101,119,152,186,220,237,254,255,74,0,0,0,0,34,51,67,
-  84,118,136,169,203,237,222,40,0,0,0,0,0,33,34,50,68,101,135,169,203,220,28,0,0,0,0,0,0,17,17,34,
-  67,84,118,152,186,220,222,24,0,0,0,0,0,0,17,33,50,84,118,152,186,220,237,255,41,0,0,0,0,0,0,17,
-  34,67,101,135,185,204,237,254,255,25,0,0,0,0,0,16,33,67,101,135,169,203,237,254,255,239,7,0,0,0,0,16,
-  33,51,100,135,169,203,237,254,255,255,207,3,0,0,0,0,33,50,84,134,169,203,237,254,255,255,255,127,0,0,0,0,
-  17,50,84,134,169,203,237,254,255,255,255,255,26,0,0,0,0,48,3,0,0,0,0,0,0,0,0,130,253,2,0,0,
-  0,0,0,0,0,146,255,143,0,0,0,0,0,0,0,129,255,255,30,0,0,0,0,0,0,64,253,255,255,6,0,0,
-  0,0,0,0,232,238,254,207,0,0,0,0,0,0,0,221,221,238,62,0,0,0,0,0,0,0,187,204,220,124,153,187,
-  155,104,3,0,0,170,186,203,220,238,255,255,255,207,1,0,136,153,170,203,237,254,255,239,7,0,0,118,135,152,186,220,
-  238,255,25,0,0,0,85,101,135,169,203,237,59,0,0,0,0,51,84,101,152,186,204,2,0,0,0,0,34,51,84,134,
-  169,220,158,2,0,0,0,17,34,67,117,168,203,238,159,1,0,0,0,17,50,101,152,203,237,255,94,0,0,0,16,50,
-  84,151,202,237,255,255,9,0,0,0,33,83,135,186,237,255,255,191,1,0,0,33,83,134,186,237,255,255,255,27,0,0,
-  0,0,0,0,128,0,0,0,0,0,0,0,0,1,0,48,221,0,0,0,0,0,0,0,80,8,0,228,175,0,0,0,
-  0,0,0,0,160,47,32,254,127,0,16,2,0,0,0,0,208,175,176,238,126,199,254,255,10,0,0,0,240,239,217,188,
-  203,221,254,191,1,0,0,0,242,222,171,153,153,186,237,8,0,0,0,0,225,189,121,102,102,151,187,4,0,0,194,39,
-  208,155,87,52,67,117,185,205,4,0,160,255,202,122,53,18,33,83,167,237,143,0,48,255,206,105,36,0,0,66,150,236,
-  255,10,0,249,190,105,19,0,0,49,150,235,255,159,0,176,190,105,19,0,0,49,150,123,0,0,0,16,203,105,36,0,
-  0,66,150,220,1,0,0,0,212,122,53,18,33,83,167,237,7,0,48,216,223,155,87,52,67,117,185,253,11,0,144,255,
-  239,189,121,102,102,151,203,254,15,0,0,130,252,222,171,153,153,186,93,247,47,0,0,0,16,51,220,188,203,221,46,64,
-  78,0,0,0,0,80,239,238,186,254,12,0,51,0,0,0,0,208,255,126,112,255,6,0,0,0,0,0,0,247,141,1,
-  80,223,0,0,0,0,0,0,0,36,0,0,32,63,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,3,0,
-  0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,
-  0,0,14,0,0,0,0,0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,73,0,0,0,0,0,
-  0,0,0,0,0,0,119,0,0,0,0,0,0,0,0,0,0,0,164,0,0,0,0,0,0,0,0,0,0,0,193,0,
-  0,0,0,0,0,0,0,0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,176,3,0,0,0,0,0,0,0,0,
-  0,0,144,5,0,0,0,0,0,0,0,0,0,0,96,8,0,0,0,0,0,0,0,0,0,0,48,10,0,0,0,0,
-  0,0,0,0,0,0,16,13,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,59,
-  0,0,0,0,0,0,0,0,0,0,0,104,0,0,0,0,0,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,
-  0,0,0,212,88,2,0,0,0,0,0,0,0,0,0,48,117,202,156,71,1,0,0,0,0,0,0,0,0,0,49,134,
-  203,139,53,0,0,0,0,0,0,0,0,0,0,66,167,204,121,3,0,0,0,0,0,0,0,96,6,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,160,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,45,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,165,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,180,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,29,208,1,0,0,0,0,0,0,0,0,0,0,0,0,64,11,144,5,0,0,0,0,
-  0,0,0,0,0,0,0,0,128,6,80,10,0,0,0,0,0,0,0,0,0,0,0,0,208,1,16,13,0,0,0,0,
-  0,0,0,0,0,0,0,0,179,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,134,0,0,0,0,
-  0,0,0,0,0,0,0,0,45,0,0,209,0,0,0,0,0,0,0,0,0,0,0,32,12,0,0,176,3,0,0,0,
-  0,0,0,0,0,0,0,112,7,0,0,112,7,0,0,0,0,0,0,0,0,0,0,176,3,0,0,32,12,0,0,0,
-  0,0,0,0,0,0,0,197,0,0,0,0,92,0,0,0,0,0,0,0,0,0,64,28,0,0,0,0,193,4,0,0,
-  0,0,0,0,0,0,195,1,0,0,0,0,16,60,0,0,0,0,0,0,0,32,44,0,0,0,0,0,0,194,2,0,
-  0,0,0,0,0,193,2,0,0,0,0,0,0,32,28,0,0,0,0,0,16,76,0,0,0,0,0,0,0,0,196,1,
-  0,0,0,0,177,4,0,0,0,0,0,0,0,0,64,27,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,181,
-  0,0,0,160,7,0,0,16,133,219,204,88,2,0,0,112,10,0,0,136,0,48,166,188,88,1,16,132,203,122,3,0,
-  136,0,128,90,184,172,54,0,0,0,0,0,0,99,201,139,165,8,230,139,21,0,0,0,0,0,0,0,0,0,0,81,
-  184,110,0,51,0,0,168,0,0,237,0,32,188,3,96,120,8,176,35,12,209,0,29,149,0,89,90,0,165,74,0,164,
-  134,0,89,209,0,29,192,50,11,128,118,7,64,186,3,0,222,0,0,155,0,0,51,0,4,0,0,0,0,0,0,0,
-  0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,153,0,0,0,0,0,0,0,0,0,0,0,225,3,0,0,
-  0,71,0,0,0,0,0,0,80,12,0,0,214,159,0,0,0,0,0,0,0,123,0,213,126,168,0,0,0,0,0,0,
-  0,226,197,142,0,182,0,0,0,0,0,0,0,128,143,1,0,182,0,0,0,0,0,0,0,0,1,0,0,182,0,0,
-  0,0,0,0,0,0,0,0,0,197,0,0,0,0,0,0,0,0,0,0,0,212,0,0,0,0,0,0,0,0,0,0,
-  0,244,187,153,136,72,0,0,0,0,0,0,0,64,68,102,135,127,0,0,0,0,0,0,0,0,0,0,96,30,0,0,
-  0,0,0,0,0,0,0,0,224,7,0,0,18,0,0,0,0,0,0,0,215,0,0,0,254,75,0,0,0,0,0,16,
-  110,0,0,0,16,231,25,0,0,0,0,128,12,0,0,0,0,32,157,0,0,0,0,241,6,0,0,0,0,0,226,5,
-  0,0,0,128,126,0,0,0,0,0,112,11,0,0,0,0,178,60,0,0,0,0,32,47,0,0,0,0,0,229,8,0,
-  0,0,0,63,0,0,0,0,0,16,217,4,8,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,213,0,0,181,
-  2,0,0,0,176,8,197,220,3,0,0,0,32,206,92,176,4,0,0,0,0,85,0,160,5,0,0,0,0,0,0,144,
-  6,0,0,0,0,0,0,128,123,86,36,0,0,0,0,48,102,136,188,0,0,0,0,0,0,0,77,0,18,0,0,0,
-  0,96,11,0,236,8,0,0,0,208,4,0,32,186,0,0,0,182,0,0,0,176,8,0,0,213,7,0,0,48,30,0,
-  0,16,185,2,0,0,30,0,0,0,64,109,119,86,3,0,0,0,0,0,0,0,0,0,0,0,187,187,8,0,0,0,
-  0,0,0,0,0,0,0,0,204,204,6,0,0,0,0,0,0,0,0,0,0,0,204,204,4,0,0,0,0,0,0,0,
-  0,0,0,0,204,204,2,0,0,0,0,0,0,0,0,0,0,0,204,204,0,0,0,0,0,131,1,0,0,0,0,0,
-  204,204,122,4,0,0,16,186,42,0,0,0,0,0,204,204,204,188,39,0,112,188,187,3,0,0,0,0,204,204,204,204,
-  204,23,196,204,188,59,0,0,0,0,221,205,204,204,204,188,203,204,204,187,2,0,0,0,157,184,221,205,204,204,204,204,
-  204,188,26,0,0,0,93,0,81,218,205,204,204,204,204,188,139,0,0,0,93,0,0,48,218,204,204,204,204,204,58,0,
-  0,0,93,0,0,0,96,220,204,204,204,124,1,0,0,0,93,0,0,0,0,195,205,204,188,4,0,0,0,0,93,0,
-  0,0,0,32,220,204,188,1,0,0,0,0,94,0,0,0,0,0,195,204,204,7,0,0,0,0,94,0,0,0,0,0,
-  96,205,204,44,0,0,0,0,94,0,0,0,0,0,0,218,204,124,0,0,0,0,142,1,0,0,0,0,0,211,204,188,
-  0,0,0,0,238,142,1,0,0,0,0,160,205,204,4,0,0,0,238,238,44,0,0,0,0,80,205,204,7,0,0,0,
-  238,238,206,1,0,0,0,16,205,204,10,66,134,3,234,238,238,8,0,0,0,0,203,204,204,204,188,5,16,235,238,30,
-  0,0,0,0,216,204,204,204,188,6,0,225,238,142,85,85,85,85,217,204,204,204,188,7,0,160,238,238,238,222,221,221,
-  221,204,204,204,188,7,52,2,0,0,0,0,0,0,0,187,27,0,0,0,0,0,0,0,204,10,0,0,0,0,0,0,
-  0,204,8,0,0,16,0,0,0,0,204,90,1,0,128,25,0,0,0,204,204,156,3,197,171,2,0,0,205,204,204,140,
-  203,188,26,0,0,92,183,205,204,204,204,155,0,0,11,0,163,205,204,204,140,1,0,12,0,0,198,204,188,5,0,0,
-  12,0,0,64,204,140,0,0,0,12,0,0,0,214,204,3,0,0,12,0,0,0,160,204,9,0,0,158,2,0,0,48,
-  205,28,0,0,238,94,0,0,0,203,92,0,1,182,238,2,0,0,199,172,168,43,0,235,9,0,0,197,204,204,59,0,
-  230,206,204,188,220,204,204,75,0,0,0,0,0,66,36,0,0,0,0,0,0,0,0,0,0,203,188,0,0,0,0,0,
-  0,0,16,0,0,201,156,0,0,1,0,0,0,0,182,2,148,204,204,73,32,107,0,0,0,96,203,170,204,220,205,204,
-  170,188,6,0,0,177,204,204,107,130,40,182,204,204,27,0,0,32,202,140,0,128,8,0,200,172,2,0,0,0,202,8,
-  0,128,8,0,128,172,0,0,0,64,188,0,0,144,9,0,0,203,4,0,0,144,108,0,16,235,190,1,0,198,9,0,
-  178,201,44,0,176,110,230,11,0,194,156,43,196,204,141,136,233,6,96,158,136,216,204,76,196,204,141,136,233,6,96,158,
-  136,216,204,76,178,201,44,0,176,110,230,11,0,194,156,43,0,144,108,0,16,235,190,1,0,198,9,0,0,64,188,0,
-  0,144,9,0,0,203,4,0,0,0,202,8,0,128,8,0,128,172,0,0,0,32,202,140,0,128,8,0,200,172,2,0,
-  0,177,204,204,107,130,40,182,204,204,27,0,0,96,203,170,204,220,205,204,170,188,6,0,0,0,182,2,148,204,204,73,
-  32,107,0,0,0,0,16,0,0,201,156,0,0,1,0,0,0,0,0,0,0,203,188,0,0,0,0,0,0,0,0,0,
-  0,66,36,0,0,0,0,0,136,103,36,0,0,0,0,0,0,0,0,0,0,0,0,221,221,221,140,21,0,0,0,0,
-  0,0,0,0,0,0,221,221,221,221,205,57,0,0,0,0,0,0,0,0,0,221,221,221,221,221,221,74,0,0,0,0,
-  0,0,0,0,221,221,221,221,221,221,221,41,0,0,0,0,0,0,0,221,173,134,219,221,221,221,205,6,0,0,0,0,
-  0,0,221,125,0,48,199,221,221,221,157,1,0,0,0,0,0,16,34,0,0,0,198,221,221,221,27,0,0,0,0,0,
-  0,0,0,0,0,0,215,221,221,205,2,0,0,0,0,0,0,0,0,0,0,48,221,221,221,28,0,0,0,0,0,0,
-  0,0,0,0,128,221,221,221,189,1,0,0,0,0,0,0,0,0,0,128,221,221,221,221,9,0,0,0,0,0,0,0,
-  0,0,0,214,221,221,221,109,0,0,0,0,0,0,0,0,0,0,96,221,221,221,205,2,0,0,0,0,0,0,0,0,
-  0,0,214,221,221,221,9,0,0,0,0,0,0,0,0,0,0,128,56,221,221,77,0,0,0,0,0,0,0,0,0,0,
-  0,0,215,221,173,0,0,0,0,0,0,0,0,0,0,0,0,192,221,221,3,0,0,0,0,0,0,0,0,0,0,0,
-  96,221,221,8,0,0,0,0,0,0,0,0,0,0,0,0,220,90,1,0,0,0,0,0,0,0,0,0,0,0,0,36,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,134,
-  0,0,0,0,0,0,0,0,0,0,0,0,96,220,221,2,0,0,0,0,0,0,0,0,0,0,0,96,221,221,4,0,
-  0,0,0,0,0,0,0,0,0,32,167,221,221,6,0,0,0,0,0,0,0,0,0,0,32,221,221,221,7,0,0,0,
-  0,0,0,0,0,0,0,16,221,221,221,8,0,0,0,0,0,0,0,0,0,0,0,221,221,221,8,53,2,0,0,0,
-  0,0,0,0,221,205,105,1,0,0,0,0,0,221,221,221,141,2,0,0,0,0,221,221,221,221,108,0,0,0,0,221,
-  100,217,221,221,26,0,0,0,221,0,32,216,221,189,2,0,0,16,0,0,32,220,221,27,0,0,0,0,0,80,221,221,
-  173,0,0,0,0,0,112,221,221,221,6,0,0,0,0,0,215,205,221,44,0,0,0,0,0,112,37,221,141,0,0,0,
-  0,0,0,0,216,221,1,0,0,0,0,0,0,194,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,
-  167,12,0,0,0,0,0,0,64,221,45,0,0,0,0,0,16,221,221,61,0,0,0,0,0,0,221,221,93,0,0,0,
-  149,219,189,89,0,0,0,0,0,196,221,221,221,221,76,0,0,0,128,221,189,86,101,219,221,8,0,0,216,221,189,0,
-  0,219,221,141,0,64,221,185,205,1,16,220,155,221,4,192,173,32,7,0,0,112,2,218,12,213,45,0,0,0,0,0,
-  0,210,42,217,10,0,0,0,0,0,0,32,49,219,90,1,0,0,0,0,16,149,189,221,221,5,0,0,0,0,80,221,
-  221,221,221,5,0,0,0,0,80,221,221,219,89,1,0,0,0,0,16,165,189,19,2,0,0,0,0,0,0,160,157,162,
-  45,0,0,0,0,0,0,210,93,192,173,32,7,0,0,112,2,218,12,64,221,185,205,1,16,220,155,221,4,0,216,221,
-  189,0,0,219,221,141,0,0,128,221,189,86,101,219,221,8,0,0,0,196,221,221,221,221,76,0,0,0,0,0,149,219,
-  189,89,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,6,
-  0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,
-  0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,
-  46,0,0,0,0,0,0,0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,110,0,0,0,0,0,
-  0,0,0,0,0,0,0,142,0,0,0,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0,0,0,
-  0,222,0,0,0,0,0,0,0,0,0,0,0,0,238,0,0,0,0,0,0,0,0,0,0,0,0,238,2,0,0,0,
-  0,0,0,0,0,0,0,0,238,4,0,0,0,0,0,0,0,0,0,0,0,238,7,0,0,0,0,0,0,0,0,0,
-  0,0,238,9,0,0,0,0,0,0,0,0,0,0,0,255,12,0,0,0,0,0,0,0,0,0,0,0,255,239,22,0,
-  0,0,0,0,0,0,0,0,0,255,255,255,6,0,0,0,0,0,0,0,0,0,134,254,255,31,0,0,0,0,0,0,
-  0,0,0,0,243,255,111,0,0,0,0,0,0,0,0,0,0,160,255,239,0,0,0,0,0,0,0,0,0,57,0,227,
-  255,106,36,0,0,0,0,0,0,0,255,3,128,255,239,238,206,138,70,2,0,0,0,255,9,96,255,239,238,238,238,238,
-  238,172,104,36,222,155,55,0,0,0,0,0,0,0,238,238,238,124,2,0,0,0,0,0,238,238,238,238,141,1,0,0,
-  0,0,154,219,238,238,238,93,0,0,0,0,3,0,131,236,238,238,8,0,0,0,3,0,0,96,237,238,174,1,0,0,
-  3,0,0,96,146,238,238,10,0,0,3,0,0,97,0,213,238,142,0,0,3,0,0,7,0,64,237,238,5,0,3,0,
-  48,5,0,0,229,238,29,0,3,0,112,0,0,0,144,238,142,0,3,0,53,0,0,0,32,237,222,2,3,16,7,0,
-  0,0,102,230,238,7,3,96,1,0,0,117,1,192,238,12,189,103,0,0,115,3,0,128,238,62,238,190,1,113,5,0,
-  0,48,238,126,238,238,107,22,0,0,0,0,237,158,217,238,126,0,0,0,0,0,235,190,48,237,190,0,0,0,0,0,
-  233,222,0,233,222,51,51,51,51,51,234,238,136,54,0,0,0,0,0,0,238,238,141,2,0,0,0,0,238,238,238,141,
-  1,0,0,0,19,115,235,238,60,0,0,0,3,0,64,235,222,3,0,0,3,0,0,128,238,61,0,0,3,0,0,16,
-  235,206,1,0,3,0,0,113,129,238,8,0,3,0,16,23,0,235,45,0,3,0,113,1,0,228,142,0,39,16,23,0,
-  0,176,222,0,238,120,1,0,0,112,238,3,238,142,0,0,0,48,238,6,197,238,2,0,0,16,238,8,80,238,55,51,
-  51,51,238,8,0,0,0,149,236,206,89,0,0,0,0,0,196,238,189,219,238,76,0,0,0,128,238,57,0,0,131,237,
-  8,0,0,232,107,11,0,0,0,178,142,0,64,190,1,90,0,0,0,16,235,4,192,45,0,194,1,0,0,0,210,12,
-  229,8,0,128,7,0,0,0,128,94,233,3,0,16,221,141,0,0,48,158,220,0,0,128,206,236,8,0,0,205,190,0,
-  0,208,28,193,125,119,119,237,190,0,0,208,28,193,125,119,119,237,220,0,0,128,206,236,8,0,0,205,233,3,0,16,
-  221,141,0,0,48,158,229,8,0,128,7,0,0,0,128,94,192,45,0,194,1,0,0,0,210,12,64,190,1,90,0,0,
-  0,16,235,4,0,232,107,11,0,0,0,178,142,0,0,128,238,57,0,0,131,237,8,0,0,0,196,238,189,219,238,76,
-  0,0,0,0,0,149,236,206,89,0,0,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,
-  0,0,238,119,119,237,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,
+  0,240,187,0,91,85,176,85,151,82,149,51,95,53,51,86,55,51,86,55,51,86,55,51,86,55,51,86,55,51,86,55,
+  51,86,55,51,86,55,51,86,55,51,86,55,51,86,55,51,86,55,51,198,55,51,198,55,51,198,55,51,198,55,51,198,
+  55,51,198,55,51,198,55,51,198,55,51,198,55,51,198,55,51,198,61,51,198,61,51,198,61,51,198,61,51,198,61,51,
+  198,61,51,198,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,
+  51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,234,49,51,194,129,51,64,30,136,0,228,17,0,
+  160,68,80,119,5,0,0,144,221,9,0,0,80,221,5,0,0,0,69,235,0,0,0,192,204,4,0,0,176,196,188,0,
+  0,0,96,204,2,0,0,0,204,6,0,0,0,196,6,0,0,0,196,6,0,0,0,196,6,0,0,0,207,6,0,0,
+  0,207,6,0,0,0,207,6,2,0,0,207,6,188,0,0,207,6,206,36,0,207,6,32,68,14,207,6,0,206,4,143,
+  6,96,188,0,143,6,196,14,0,143,6,43,0,0,143,6,0,0,0,143,6,0,0,0,143,6,0,0,0,143,6,0,
+  0,0,135,6,46,0,0,135,6,76,2,0,135,6,66,236,0,135,6,0,196,6,135,6,0,203,11,135,6,66,236,0,
+  135,6,76,2,0,135,6,46,0,0,135,6,0,0,0,135,6,0,0,0,135,6,0,0,0,135,6,0,0,0,215,6,
+  43,0,0,215,6,196,14,0,218,6,96,188,0,218,6,0,206,4,218,6,32,68,14,218,6,206,36,0,218,6,188,0,
+  0,218,6,2,0,0,218,6,0,0,0,218,6,0,0,0,218,6,0,0,0,218,6,0,0,0,218,6,0,0,0,218,
+  6,0,0,0,218,6,0,0,0,209,14,0,0,48,129,2,0,48,26,189,0,0,16,209,4,0,0,245,235,0,0,80,
+  221,5,0,0,144,221,9,0,0,80,119,5,0,0,0,32,13,32,180,11,64,187,5,178,107,3,189,53,3,189,53,3,
+  189,53,3,189,53,3,189,53,3,189,53,3,189,53,3,189,53,3,189,53,3,189,56,3,189,56,3,189,56,3,189,56,
+  3,189,56,3,93,56,3,93,56,3,93,56,3,93,56,3,93,56,3,93,56,3,93,56,3,93,56,3,93,56,3,87,
+  56,3,87,56,3,87,56,3,87,56,3,87,56,3,87,56,3,247,62,3,247,62,3,247,62,3,247,62,3,247,62,3,
+  247,62,3,247,62,3,247,62,3,247,62,3,247,62,3,247,62,3,247,62,3,247,62,3,247,62,3,247,62,3,247,62,
+  3,247,62,3,247,62,3,247,62,3,250,193,3,144,17,14,160,249,15,0,160,7,0,102,0,0,96,204,6,0,96,204,
+  6,0,0,166,2,0,0,176,59,2,0,48,187,3,0,0,189,43,0,0,48,123,0,0,48,123,0,0,48,123,0,0,
+  48,123,0,0,160,123,0,0,160,123,0,0,160,123,0,0,160,123,0,0,160,123,0,0,160,123,0,0,160,123,0,0,
+  160,117,0,0,160,117,0,0,160,117,0,0,160,117,0,0,160,117,0,0,160,117,0,0,160,117,0,0,128,117,0,0,
+  128,117,39,0,128,117,59,2,128,117,50,211,128,117,0,179,135,117,0,183,135,117,50,219,128,229,59,2,128,229,39,0,
+  128,229,0,0,128,229,0,0,128,229,0,0,128,239,0,0,128,239,0,0,128,239,0,0,128,239,0,0,144,239,0,0,
+  144,239,0,0,144,239,0,0,144,239,0,0,144,239,0,0,144,239,0,0,144,239,0,0,144,239,0,0,144,239,0,0,
+  144,239,0,0,144,239,0,0,144,239,0,0,144,239,0,0,144,239,0,0,20,223,0,144,17,10,0,240,175,13,0,166,
+  13,0,96,204,6,0,96,204,6,0,0,102,0,0,0,0,226,0,62,51,112,51,173,62,93,68,215,74,68,211,75,68,
+  211,75,68,211,75,68,211,75,68,211,75,68,211,75,68,211,75,68,211,75,68,211,75,68,99,75,68,99,75,68,99,75,
+  68,99,75,68,109,75,68,109,75,68,109,75,68,109,75,68,109,75,68,109,75,68,109,75,68,109,75,68,109,75,68,253,
+  75,68,253,75,68,253,75,68,253,75,68,253,75,68,253,75,68,253,75,68,253,75,68,253,75,68,246,75,68,246,75,68,
+  246,75,68,246,75,68,246,75,68,246,75,68,22,75,68,22,75,68,22,75,68,22,75,68,22,75,68,22,75,68,22,75,
+  68,22,75,68,22,75,68,26,72,68,249,129,68,160,31,17,0,105,255,0,0,156,0,136,0,0,0,128,221,8,0,0,
+  128,221,8,0,0,0,168,12,0,0,0,176,187,7,0,0,48,187,235,0,0,0,112,187,12,0,0,0,190,3,0,0,
+  0,178,11,44,0,0,178,11,59,2,0,178,11,226,203,0,178,11,0,183,7,98,11,0,190,7,98,11,50,35,0,98,
+  11,59,2,0,98,11,44,0,0,105,11,0,0,0,105,11,0,0,0,105,11,0,0,0,105,11,0,0,0,105,11,44,
+  0,0,105,11,59,2,0,105,11,226,203,0,105,11,0,183,7,105,11,0,190,7,105,11,50,35,0,105,11,59,2,0,
+  105,11,44,0,0,217,11,0,0,0,217,11,0,0,0,217,6,0,0,0,217,6,0,0,0,217,6,44,0,0,217,6,
+  59,2,0,217,6,50,35,0,217,6,0,190,7,212,6,0,183,7,212,6,226,203,0,212,6,59,2,0,212,6,44,0,
+  0,212,6,0,0,0,212,6,0,0,0,20,6,0,0,0,20,6,0,0,0,20,6,44,0,0,20,6,59,2,0,20,
+  6,50,35,0,20,6,0,190,7,20,6,0,183,7,20,6,226,203,0,20,6,59,2,0,20,6,44,0,0,20,6,0,
+  0,0,20,6,0,0,0,21,10,0,0,80,209,7,0,240,17,237,0,0,208,109,7,0,0,168,12,0,0,128,221,8,
+  0,0,128,221,8,0,0,0,136,0,0,0,255,255,255,255,255,255,255,255,255,255,255,255,255,255,15,24,17,17,17,17,
+  17,17,17,17,17,17,17,17,17,1,184,102,102,102,102,102,102,102,102,102,102,102,102,182,1,184,102,102,102,102,102,102,
+  102,102,102,102,102,102,182,1,184,102,102,102,102,102,102,102,102,102,102,102,102,182,1,184,102,102,102,102,102,102,105,102,
+  102,102,102,102,182,1,184,102,102,102,102,102,150,158,102,102,102,102,102,182,1,184,102,102,102,102,102,230,238,108,102,102,
+  102,102,182,1,184,102,102,102,102,102,231,238,103,102,102,102,102,182,1,184,102,102,102,102,198,238,238,158,102,102,102,102,
+  182,1,184,102,102,102,102,118,119,119,119,108,102,102,102,182,1,184,102,102,102,102,121,119,119,119,103,102,102,102,182,1,
+  184,102,102,102,198,119,119,126,119,151,102,102,102,182,1,184,187,187,187,118,119,119,226,119,119,188,187,187,187,1,184,187,
+  187,187,124,119,231,34,119,119,188,187,187,187,1,24,187,187,187,214,221,39,34,215,221,182,187,187,27,1,24,177,187,187,
+  155,221,46,34,210,221,187,187,187,17,8,131,17,187,187,203,125,34,34,114,205,187,187,27,129,3,48,24,177,187,107,221,
+  34,34,114,205,187,187,17,168,0,0,131,17,187,187,212,39,34,222,189,187,27,17,10,0,0,160,24,177,187,76,228,226,
+  68,180,187,27,161,0,0,0,0,26,17,187,70,68,222,68,182,187,17,15,0,0,0,0,160,17,177,187,76,68,188,187,
+  27,241,0,0,0,0,0,0,31,177,187,107,196,187,187,17,15,0,0,0,0,0,0,240,17,187,187,187,187,27,81,0,
+  0,0,0,0,0,0,0,31,177,187,187,187,17,5,0,0,0,0,0,0,0,0,80,17,187,187,27,81,0,0,0,0,
+  0,0,0,0,0,0,21,17,187,17,5,0,0,0,0,0,0,0,0,0,0,80,17,17,129,3,0,0,0,0,0,0,
+  0,0,0,0,0,24,17,56,0,0,0,0,0,0,0,0,0,0,0,0,83,85,3,0,0,0,0,0,0,0,0,0,
+  0,0,0,3,5,7,9,9,11,11,11,11,9,9,7,5,3,0,0,0,0,0,0,0,0,0,6,11,46,95,143,159,
+  191,207,223,223,223,223,207,191,159,143,95,46,11,6,0,0,0,0,5,46,143,223,255,255,255,255,255,255,255,255,255,255,
+  255,255,255,255,255,255,223,143,46,5,0,3,47,239,255,255,191,111,239,255,239,111,191,255,255,191,111,239,255,239,111,191,
+  255,255,239,47,3,3,47,239,255,255,143,79,207,255,207,79,143,255,255,143,79,207,255,207,79,143,255,255,239,47,3,0,
+  5,46,143,223,255,223,255,255,255,223,255,255,255,255,223,255,255,255,223,255,223,143,46,5,0,0,0,0,6,11,46,95,
+  127,111,109,109,109,109,109,109,109,109,111,127,95,46,11,6,0,0,0,0,0,0,0,0,0,3,5,11,5,0,0,0,
+  0,0,0,5,11,5,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,13,0,0,0,0,0,0,13,2,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,12,11,11,11,11,12,7,0,0,0,0,0,0,0,0,
+  0,242,242,242,242,242,242,242,242,250,255,255,255,255,255,255,250,242,255,255,255,255,255,255,242,0,243,244,244,244,244,243,
+  0,0,0,0,16,22,27,28,28,27,22,16,0,0,0,0,0,18,27,25,53,68,68,53,25,27,18,0,0,0,17,28,
+  54,68,68,68,68,152,135,54,28,17,0,0,25,39,68,68,68,68,68,118,170,152,39,25,0,18,27,68,68,68,68,68,
+  68,68,101,170,118,27,18,22,40,68,68,68,68,68,68,68,68,135,169,40,22,24,54,68,68,68,68,68,68,68,68,85,
+  186,54,24,19,50,66,66,66,66,66,66,66,66,66,180,50,19,204,204,204,204,204,204,204,204,204,172,206,204,204,204,204,
+  204,204,204,204,138,238,204,204,204,204,204,204,204,172,136,238,206,204,204,204,204,204,204,138,136,238,238,204,204,204,204,204,
+  172,136,136,238,238,206,204,204,204,204,138,136,136,238,238,238,204,204,204,172,136,136,136,238,238,238,206,204,204,138,136,136,
+  136,238,238,238,238,204,172,136,136,136,136,238,238,238,238,206,138,136,136,136,136,238,238,238,238,206,137,136,136,136,136,238,
+  238,238,238,172,154,136,136,136,136,238,238,238,206,170,170,137,136,136,136,238,238,238,172,170,170,154,136,136,136,238,238,206,
+  170,170,170,170,137,136,136,238,238,172,170,170,170,170,154,136,136,238,206,170,170,170,170,170,170,137,136,238,172,170,170,170,
+  170,170,170,154,136,206,170,170,170,170,170,170,170,170,137,172,170,170,170,170,170,170,170,170,154,0,0,0,0,48,5,0,
+  0,0,0,0,0,0,0,160,12,0,0,0,0,0,0,0,0,243,95,0,0,0,0,0,0,0,0,250,207,0,0,0,
+  0,0,0,0,48,223,253,5,0,0,0,0,0,0,160,207,236,12,0,0,0,0,0,0,243,205,220,95,0,0,0,0,
+  0,0,234,187,187,206,0,0,0,0,0,48,223,187,187,252,5,0,0,0,0,160,190,187,187,235,12,0,0,0,0,243,
+  172,170,170,202,95,0,0,0,0,234,170,170,170,170,206,0,0,0,48,191,170,170,170,170,251,5,0,0,160,158,153,153,
+  153,153,233,12,0,0,243,155,153,153,153,153,185,95,0,0,234,136,136,136,136,136,136,206,0,48,175,136,136,136,136,136,
+  136,250,5,160,142,136,136,136,136,136,136,232,12,243,172,170,170,170,170,170,170,202,95,250,255,255,255,255,255,255,255,255,
+  207,0,0,0,0,128,9,0,0,0,0,0,0,0,16,251,207,2,0,0,0,0,0,0,211,223,253,78,0,0,0,0,
+  0,80,238,188,187,254,6,0,0,0,0,248,173,170,170,218,159,0,0,0,177,207,153,153,153,153,252,44,0,48,253,189,
+  187,187,187,187,219,239,4,229,255,255,255,255,255,255,255,255,111,0,0,0,1,0,0,0,0,80,7,0,0,0,0,192,
+  14,0,0,0,0,244,111,0,0,0,0,251,206,0,0,0,32,223,253,4,0,0,144,191,235,11,0,0,241,173,202,63,
+  0,0,248,170,170,159,0,0,222,153,153,253,1,96,175,153,153,250,8,208,141,136,136,216,14,245,172,170,170,202,127,251,
+  255,255,255,255,223,0,0,0,0,0,0,0,0,0,0,3,11,1,0,0,0,0,0,0,0,4,3,0,0,0,0,0,
+  0,0,0,12,15,12,1,0,0,0,0,0,0,15,15,4,0,0,0,0,0,0,6,15,15,15,13,10,9,0,0,0,
+  0,14,14,11,0,0,0,0,0,1,13,14,14,14,14,14,14,6,0,0,0,12,12,12,4,0,2,11,12,12,12,12,
+  12,12,12,12,12,11,1,0,3,11,11,11,10,4,10,11,11,11,11,11,11,11,11,11,11,11,7,2,10,9,9,9,
+  9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
+  8,8,8,8,8,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,6,5,5,5,5,5,5,5,
+  5,5,5,5,5,5,5,5,5,5,5,5,5,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
+  2,0,0,0,0,0,192,14,0,0,0,0,0,0,0,0,243,79,0,0,0,0,0,0,0,0,200,155,0,0,0,0,
+  0,0,0,0,126,231,0,0,0,0,0,0,0,64,47,242,4,16,0,0,0,0,0,160,11,176,9,186,0,0,0,16,
+  0,241,6,112,62,239,0,0,0,243,4,246,1,32,239,250,3,0,0,234,29,171,0,0,235,225,6,0,16,111,187,79,
+  0,0,118,176,9,0,128,14,226,14,0,0,0,128,12,0,224,8,96,7,0,0,0,64,15,0,246,1,0,0,0,0,
+  0,16,63,0,157,0,0,0,0,0,0,0,109,64,63,0,0,0,0,0,0,0,154,176,11,0,0,0,0,0,0,0,
+  199,243,5,0,0,0,0,0,0,0,244,217,0,0,0,0,0,0,0,0,241,111,0,0,0,0,0,0,0,0,208,175,
+  153,153,153,153,153,153,153,153,217,0,0,0,0,0,144,11,0,0,0,0,0,0,0,0,245,126,0,0,0,0,0,33,
+  0,32,110,244,4,0,0,0,0,235,3,209,9,96,46,0,0,0,128,141,94,202,0,0,234,2,0,0,244,4,229,46,
+  0,0,176,29,0,16,126,0,48,4,0,0,16,188,0,176,11,0,0,0,0,0,0,209,10,216,1,0,0,0,0,0,
+  0,32,142,207,153,153,153,153,153,153,153,153,252,0,0,0,0,227,2,0,0,0,0,0,249,6,0,0,0,64,17,239,
+  10,0,0,0,241,106,110,14,0,0,0,248,223,41,63,0,0,0,142,250,3,125,0,0,96,31,163,0,185,0,0,192,
+  10,0,0,245,0,0,244,3,0,0,241,4,0,187,0,0,0,176,8,48,95,0,0,0,128,12,144,13,0,0,0,64,
+  31,241,7,0,0,0,0,94,247,154,153,153,153,153,158,166,153,153,153,153,153,122,0,0,0,0,96,7,0,0,0,0,
+  0,0,0,0,113,38,0,0,0,0,0,0,0,0,54,114,0,0,0,0,0,0,0,16,7,96,2,0,0,0,0,0,
+  0,96,3,32,7,0,0,0,0,0,0,113,0,0,38,0,0,0,0,0,0,54,0,0,114,0,0,0,0,0,16,7,
+  0,0,96,2,0,0,0,0,96,3,0,0,32,7,0,0,0,0,113,0,0,0,0,38,0,0,0,0,54,0,0,0,
+  0,114,0,0,0,16,7,0,0,0,0,96,2,0,0,96,3,0,0,0,0,32,7,0,0,113,0,0,0,0,0,0,
+  38,0,0,54,0,0,0,0,0,0,114,0,16,7,0,0,0,0,0,0,96,2,96,3,0,0,0,0,0,0,32,7,
+  113,0,0,0,0,0,0,0,0,38,54,0,0,0,0,0,0,0,0,114,56,51,51,51,51,51,51,51,51,131,0,0,
+  0,64,4,0,0,0,0,0,0,128,24,0,0,0,0,0,0,84,68,0,0,0,0,0,0,24,129,1,0,0,0,0,
+  64,5,64,5,0,0,0,0,129,1,0,24,0,0,0,0,69,0,0,99,0,0,0,16,8,0,0,128,1,0,0,96,
+  3,0,0,48,6,0,0,129,0,0,0,0,39,0,0,54,0,0,0,0,99,0,32,7,0,0,0,0,112,2,112,19,
+  17,17,17,17,49,7,113,119,119,119,119,119,119,23,118,119,119,119,119,119,119,119,119,103,39,17,17,17,17,17,17,17,
+  17,114,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,
+  23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,
+  0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,
+  0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,
+  0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,0,113,23,0,0,0,0,0,0,0,
+  0,113,39,17,17,17,17,17,17,17,17,114,118,119,119,119,119,119,119,119,119,103,0,0,0,0,0,114,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,128,111,0,0,0,0,0,0,0,0,0,0,0,0,0,48,253,14,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,247,255,8,0,0,0,0,0,0,0,0,0,0,0,0,177,255,255,2,0,0,0,0,
+  0,0,0,0,0,0,0,16,252,255,191,0,0,0,0,0,0,0,0,0,0,0,0,226,255,255,95,0,0,0,0,0,
+  16,0,0,0,0,0,48,254,255,255,13,0,0,0,116,202,127,0,0,0,0,0,228,238,254,255,7,0,97,235,255,255,
+  7,0,0,0,0,0,238,238,238,238,1,181,255,255,255,127,0,0,0,0,0,0,221,221,221,206,233,255,255,255,255,7,
+  0,0,0,0,0,0,204,204,220,221,238,238,255,255,127,0,0,0,0,0,0,0,187,187,204,204,221,238,254,255,7,0,
+  0,0,0,0,0,0,170,170,187,203,220,221,238,111,0,0,0,0,0,0,0,0,153,153,169,186,203,220,237,7,0,0,
+  0,0,0,0,0,0,136,136,152,169,186,204,221,222,221,188,138,71,1,0,0,0,102,119,135,152,169,187,220,237,254,255,
+  255,255,239,106,2,0,85,102,118,135,152,186,203,221,238,255,255,255,255,159,3,0,68,84,101,118,136,169,203,220,238,255,
+  255,255,125,1,0,0,51,67,84,101,119,152,186,220,237,254,255,74,0,0,0,0,34,51,67,84,118,136,169,203,237,222,
+  40,0,0,0,0,0,33,34,50,68,101,135,169,203,220,28,0,0,0,0,0,0,17,17,34,67,84,118,152,186,220,222,
+  24,0,0,0,0,0,0,17,33,50,84,118,152,186,220,237,255,41,0,0,0,0,0,0,17,34,67,101,135,185,204,237,
+  254,255,25,0,0,0,0,0,16,33,67,101,135,169,203,237,254,255,239,7,0,0,0,0,16,33,51,100,135,169,203,237,
+  254,255,255,207,3,0,0,0,0,33,50,84,134,169,203,237,254,255,255,255,127,0,0,0,0,17,50,84,134,169,203,237,
+  254,255,255,255,255,26,0,0,0,0,48,3,0,0,0,0,0,0,0,0,130,253,2,0,0,0,0,0,0,0,146,255,
+  143,0,0,0,0,0,0,0,129,255,255,30,0,0,0,0,0,0,64,253,255,255,6,0,0,0,0,0,0,232,238,254,
+  207,0,0,0,0,0,0,0,221,221,238,62,0,0,0,0,0,0,0,187,204,220,124,153,187,155,104,3,0,0,170,186,
+  203,220,238,255,255,255,207,1,0,136,153,170,203,237,254,255,239,7,0,0,118,135,152,186,220,238,255,25,0,0,0,85,
+  101,135,169,203,237,59,0,0,0,0,51,84,101,152,186,204,2,0,0,0,0,34,51,84,134,169,220,158,2,0,0,0,
+  17,34,67,117,168,203,238,159,1,0,0,0,17,50,101,152,203,237,255,94,0,0,0,16,50,84,151,202,237,255,255,9,
+  0,0,0,33,83,135,186,237,255,255,191,1,0,0,33,83,134,186,237,255,255,255,27,0,0,0,0,0,0,128,0,0,
+  0,0,0,0,0,0,1,0,48,221,0,0,0,0,0,0,0,80,8,0,228,175,0,0,0,0,0,0,0,160,47,32,
+  254,127,0,16,2,0,0,0,0,208,175,176,238,126,199,254,255,10,0,0,0,240,239,217,188,203,221,254,191,1,0,0,
+  0,242,222,171,153,153,186,237,8,0,0,0,0,225,189,121,102,102,151,187,4,0,0,194,39,208,155,87,52,67,117,185,
+  205,4,0,160,255,202,122,53,18,33,83,167,237,143,0,48,255,206,105,36,0,0,66,150,236,255,10,0,249,190,105,19,
+  0,0,49,150,235,255,159,0,176,190,105,19,0,0,49,150,123,0,0,0,16,203,105,36,0,0,66,150,220,1,0,0,
+  0,212,122,53,18,33,83,167,237,7,0,48,216,223,155,87,52,67,117,185,253,11,0,144,255,239,189,121,102,102,151,203,
+  254,15,0,0,130,252,222,171,153,153,186,93,247,47,0,0,0,16,51,220,188,203,221,46,64,78,0,0,0,0,80,239,
+  238,186,254,12,0,51,0,0,0,0,208,255,126,112,255,6,0,0,0,0,0,0,247,141,1,80,223,0,0,0,0,0,
+  0,0,36,0,0,32,63,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,3,0,0,0,0,0,0,0,0,
+  0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,
+  0,0,0,0,0,0,0,44,0,0,0,0,0,0,0,0,0,0,0,73,0,0,0,0,0,0,0,0,0,0,0,119,
+  0,0,0,0,0,0,0,0,0,0,0,164,0,0,0,0,0,0,0,0,0,0,0,193,0,0,0,0,0,0,0,0,
+  0,0,0,224,0,0,0,0,0,0,0,0,0,0,0,176,3,0,0,0,0,0,0,0,0,0,0,144,5,0,0,0,
+  0,0,0,0,0,0,0,96,8,0,0,0,0,0,0,0,0,0,0,48,10,0,0,0,0,0,0,0,0,0,0,16,
+  13,0,0,0,0,0,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,0,0,
+  0,0,0,0,104,0,0,0,0,0,0,0,0,0,0,0,133,0,0,0,0,0,0,0,0,0,0,0,212,88,2,0,
+  0,0,0,0,0,0,0,0,48,117,202,156,71,1,0,0,0,0,0,0,0,0,0,49,134,203,139,53,0,0,0,0,
+  0,0,0,0,0,0,66,167,204,121,3,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,160,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,224,45,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,165,104,0,0,0,0,0,0,0,0,0,0,0,0,0,0,89,180,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,29,208,1,0,0,0,0,0,0,0,0,0,0,0,0,64,11,144,5,0,0,0,0,0,0,0,0,0,0,0,
+  0,128,6,80,10,0,0,0,0,0,0,0,0,0,0,0,0,208,1,16,13,0,0,0,0,0,0,0,0,0,0,0,
+  0,179,0,0,75,0,0,0,0,0,0,0,0,0,0,0,0,120,0,0,134,0,0,0,0,0,0,0,0,0,0,0,
+  0,45,0,0,209,0,0,0,0,0,0,0,0,0,0,0,32,12,0,0,176,3,0,0,0,0,0,0,0,0,0,0,
+  112,7,0,0,112,7,0,0,0,0,0,0,0,0,0,0,176,3,0,0,32,12,0,0,0,0,0,0,0,0,0,0,
+  197,0,0,0,0,92,0,0,0,0,0,0,0,0,0,64,28,0,0,0,0,193,4,0,0,0,0,0,0,0,0,195,
+  1,0,0,0,0,16,60,0,0,0,0,0,0,0,32,44,0,0,0,0,0,0,194,2,0,0,0,0,0,0,193,2,
+  0,0,0,0,0,0,32,28,0,0,0,0,0,16,76,0,0,0,0,0,0,0,0,196,1,0,0,0,0,177,4,0,
+  0,0,0,0,0,0,0,64,27,0,0,0,0,91,0,0,0,0,0,0,0,0,0,0,181,0,0,0,160,7,0,0,
+  16,133,219,204,88,2,0,0,112,10,0,0,136,0,48,166,188,88,1,16,132,203,122,3,0,136,0,128,90,184,172,54,
+  0,0,0,0,0,0,99,201,139,165,8,230,139,21,0,0,0,0,0,0,0,0,0,0,81,184,110,0,51,0,0,168,
+  0,0,237,0,32,188,3,96,120,8,176,35,12,209,0,29,149,0,89,90,0,165,74,0,164,134,0,89,209,0,29,192,
+  50,11,128,118,7,64,186,3,0,222,0,0,155,0,0,51,0,4,0,0,0,0,0,0,0,0,0,0,0,29,0,0,
+  0,0,0,0,0,0,0,0,0,153,0,0,0,0,0,0,0,0,0,0,0,225,3,0,0,0,71,0,0,0,0,0,
+  0,80,12,0,0,214,159,0,0,0,0,0,0,0,123,0,213,126,168,0,0,0,0,0,0,0,226,197,142,0,182,0,
+  0,0,0,0,0,0,128,143,1,0,182,0,0,0,0,0,0,0,0,1,0,0,182,0,0,0,0,0,0,0,0,0,
+  0,0,197,0,0,0,0,0,0,0,0,0,0,0,212,0,0,0,0,0,0,0,0,0,0,0,244,187,153,136,72,0,
+  0,0,0,0,0,0,64,68,102,135,127,0,0,0,0,0,0,0,0,0,0,96,30,0,0,0,0,0,0,0,0,0,
+  0,224,7,0,0,18,0,0,0,0,0,0,0,215,0,0,0,254,75,0,0,0,0,0,16,110,0,0,0,16,231,25,
+  0,0,0,0,128,12,0,0,0,0,32,157,0,0,0,0,241,6,0,0,0,0,0,226,5,0,0,0,128,126,0,0,
+  0,0,0,112,11,0,0,0,0,178,60,0,0,0,0,32,47,0,0,0,0,0,229,8,0,0,0,0,63,0,0,0,
+  0,0,16,217,4,8,0,0,0,0,0,0,0,62,0,0,0,0,0,0,0,213,0,0,181,2,0,0,0,176,8,197,
+  220,3,0,0,0,32,206,92,176,4,0,0,0,0,85,0,160,5,0,0,0,0,0,0,144,6,0,0,0,0,0,0,
+  128,123,86,36,0,0,0,0,48,102,136,188,0,0,0,0,0,0,0,77,0,18,0,0,0,0,96,11,0,236,8,0,
+  0,0,208,4,0,32,186,0,0,0,182,0,0,0,176,8,0,0,213,7,0,0,48,30,0,0,16,185,2,0,0,30,
+  0,0,0,64,109,119,86,3,0,0,0,0,0,0,0,0,0,0,0,187,187,8,0,0,0,0,0,0,0,0,0,0,
+  0,204,204,6,0,0,0,0,0,0,0,0,0,0,0,204,204,4,0,0,0,0,0,0,0,0,0,0,0,204,204,2,
+  0,0,0,0,0,0,0,0,0,0,0,204,204,0,0,0,0,0,131,1,0,0,0,0,0,204,204,122,4,0,0,16,
+  186,42,0,0,0,0,0,204,204,204,188,39,0,112,188,187,3,0,0,0,0,204,204,204,204,204,23,196,204,188,59,0,
+  0,0,0,221,205,204,204,204,188,203,204,204,187,2,0,0,0,157,184,221,205,204,204,204,204,204,188,26,0,0,0,93,
+  0,81,218,205,204,204,204,204,188,139,0,0,0,93,0,0,48,218,204,204,204,204,204,58,0,0,0,93,0,0,0,96,
+  220,204,204,204,124,1,0,0,0,93,0,0,0,0,195,205,204,188,4,0,0,0,0,93,0,0,0,0,32,220,204,188,
+  1,0,0,0,0,94,0,0,0,0,0,195,204,204,7,0,0,0,0,94,0,0,0,0,0,96,205,204,44,0,0,0,
+  0,94,0,0,0,0,0,0,218,204,124,0,0,0,0,142,1,0,0,0,0,0,211,204,188,0,0,0,0,238,142,1,
+  0,0,0,0,160,205,204,4,0,0,0,238,238,44,0,0,0,0,80,205,204,7,0,0,0,238,238,206,1,0,0,0,
+  16,205,204,10,66,134,3,234,238,238,8,0,0,0,0,203,204,204,204,188,5,16,235,238,30,0,0,0,0,216,204,204,
+  204,188,6,0,225,238,142,85,85,85,85,217,204,204,204,188,7,0,160,238,238,238,222,221,221,221,204,204,204,188,7,52,
+  2,0,0,0,0,0,0,0,187,27,0,0,0,0,0,0,0,204,10,0,0,0,0,0,0,0,204,8,0,0,16,0,
+  0,0,0,204,90,1,0,128,25,0,0,0,204,204,156,3,197,171,2,0,0,205,204,204,140,203,188,26,0,0,92,183,
+  205,204,204,204,155,0,0,11,0,163,205,204,204,140,1,0,12,0,0,198,204,188,5,0,0,12,0,0,64,204,140,0,
+  0,0,12,0,0,0,214,204,3,0,0,12,0,0,0,160,204,9,0,0,158,2,0,0,48,205,28,0,0,238,94,0,
+  0,0,203,92,0,1,182,238,2,0,0,199,172,168,43,0,235,9,0,0,197,204,204,59,0,230,206,204,188,220,204,204,
+  75,0,0,0,0,0,66,36,0,0,0,0,0,0,0,0,0,0,203,188,0,0,0,0,0,0,0,16,0,0,201,156,
+  0,0,1,0,0,0,0,182,2,148,204,204,73,32,107,0,0,0,96,203,170,204,220,205,204,170,188,6,0,0,177,204,
+  204,107,130,40,182,204,204,27,0,0,32,202,140,0,128,8,0,200,172,2,0,0,0,202,8,0,128,8,0,128,172,0,
+  0,0,64,188,0,0,144,9,0,0,203,4,0,0,144,108,0,16,235,190,1,0,198,9,0,178,201,44,0,176,110,230,
+  11,0,194,156,43,196,204,141,136,233,6,96,158,136,216,204,76,196,204,141,136,233,6,96,158,136,216,204,76,178,201,44,
+  0,176,110,230,11,0,194,156,43,0,144,108,0,16,235,190,1,0,198,9,0,0,64,188,0,0,144,9,0,0,203,4,
+  0,0,0,202,8,0,128,8,0,128,172,0,0,0,32,202,140,0,128,8,0,200,172,2,0,0,177,204,204,107,130,40,
+  182,204,204,27,0,0,96,203,170,204,220,205,204,170,188,6,0,0,0,182,2,148,204,204,73,32,107,0,0,0,0,16,
+  0,0,201,156,0,0,1,0,0,0,0,0,0,0,203,188,0,0,0,0,0,0,0,0,0,0,66,36,0,0,0,0,
+  0,136,103,36,0,0,0,0,0,0,0,0,0,0,0,0,221,221,221,140,21,0,0,0,0,0,0,0,0,0,0,221,
+  221,221,221,205,57,0,0,0,0,0,0,0,0,0,221,221,221,221,221,221,74,0,0,0,0,0,0,0,0,221,221,221,
+  221,221,221,221,41,0,0,0,0,0,0,0,221,173,134,219,221,221,221,205,6,0,0,0,0,0,0,221,125,0,48,199,
+  221,221,221,157,1,0,0,0,0,0,16,34,0,0,0,198,221,221,221,27,0,0,0,0,0,0,0,0,0,0,0,215,
+  221,221,205,2,0,0,0,0,0,0,0,0,0,0,48,221,221,221,28,0,0,0,0,0,0,0,0,0,0,128,221,221,
+  221,189,1,0,0,0,0,0,0,0,0,0,128,221,221,221,221,9,0,0,0,0,0,0,0,0,0,0,214,221,221,221,
+  109,0,0,0,0,0,0,0,0,0,0,96,221,221,221,205,2,0,0,0,0,0,0,0,0,0,0,214,221,221,221,9,
+  0,0,0,0,0,0,0,0,0,0,128,56,221,221,77,0,0,0,0,0,0,0,0,0,0,0,0,215,221,173,0,0,
+  0,0,0,0,0,0,0,0,0,0,192,221,221,3,0,0,0,0,0,0,0,0,0,0,0,96,221,221,8,0,0,0,
+  0,0,0,0,0,0,0,0,0,220,90,1,0,0,0,0,0,0,0,0,0,0,0,0,36,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,134,0,0,0,0,0,0,0,
+  0,0,0,0,0,96,220,221,2,0,0,0,0,0,0,0,0,0,0,0,96,221,221,4,0,0,0,0,0,0,0,0,
+  0,0,32,167,221,221,6,0,0,0,0,0,0,0,0,0,0,32,221,221,221,7,0,0,0,0,0,0,0,0,0,0,
+  16,221,221,221,8,0,0,0,0,0,0,0,0,0,0,0,221,221,221,8,53,2,0,0,0,0,0,0,0,221,205,105,
+  1,0,0,0,0,0,221,221,221,141,2,0,0,0,0,221,221,221,221,108,0,0,0,0,221,100,217,221,221,26,0,0,
+  0,221,0,32,216,221,189,2,0,0,16,0,0,32,220,221,27,0,0,0,0,0,80,221,221,173,0,0,0,0,0,112,
+  221,221,221,6,0,0,0,0,0,215,205,221,44,0,0,0,0,0,112,37,221,141,0,0,0,0,0,0,0,216,221,1,
+  0,0,0,0,0,0,194,39,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32,167,12,0,0,0,0,0,
+  0,64,221,45,0,0,0,0,0,16,221,221,61,0,0,0,0,0,0,221,221,93,0,0,0,149,219,189,89,0,0,0,
+  0,0,196,221,221,221,221,76,0,0,0,128,221,189,86,101,219,221,8,0,0,216,221,189,0,0,219,221,141,0,64,221,
+  185,205,1,16,220,155,221,4,192,173,32,7,0,0,112,2,218,12,213,45,0,0,0,0,0,0,210,42,217,10,0,0,
+  0,0,0,0,32,49,219,90,1,0,0,0,0,16,149,189,221,221,5,0,0,0,0,80,221,221,221,221,5,0,0,0,
+  0,80,221,221,219,89,1,0,0,0,0,16,165,189,19,2,0,0,0,0,0,0,160,157,162,45,0,0,0,0,0,0,
+  210,93,192,173,32,7,0,0,112,2,218,12,64,221,185,205,1,16,220,155,221,4,0,216,221,189,0,0,219,221,141,0,
+  0,128,221,189,86,101,219,221,8,0,0,0,196,221,221,221,221,76,0,0,0,0,0,149,219,189,89,0,0,0,2,0,
+  0,0,0,0,0,0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0,6,0,0,0,0,0,0,0,
+  0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,0,0,0,0,12,
+  0,0,0,0,0,0,0,0,0,0,0,0,14,0,0,0,0,0,0,0,0,0,0,0,0,46,0,0,0,0,0,0,
+  0,0,0,0,0,0,78,0,0,0,0,0,0,0,0,0,0,0,0,110,0,0,0,0,0,0,0,0,0,0,0,0,
+  142,0,0,0,0,0,0,0,0,0,0,0,0,174,0,0,0,0,0,0,0,0,0,0,0,0,222,0,0,0,0,0,
+  0,0,0,0,0,0,0,238,0,0,0,0,0,0,0,0,0,0,0,0,238,2,0,0,0,0,0,0,0,0,0,0,
+  0,238,4,0,0,0,0,0,0,0,0,0,0,0,238,7,0,0,0,0,0,0,0,0,0,0,0,238,9,0,0,0,
+  0,0,0,0,0,0,0,0,255,12,0,0,0,0,0,0,0,0,0,0,0,255,239,22,0,0,0,0,0,0,0,0,
+  0,0,255,255,255,6,0,0,0,0,0,0,0,0,0,134,254,255,31,0,0,0,0,0,0,0,0,0,0,243,255,111,
+  0,0,0,0,0,0,0,0,0,0,160,255,239,0,0,0,0,0,0,0,0,0,57,0,227,255,106,36,0,0,0,0,
+  0,0,0,255,3,128,255,239,238,206,138,70,2,0,0,0,255,9,96,255,239,238,238,238,238,238,172,104,36,222,155,55,
+  0,0,0,0,0,0,0,238,238,238,124,2,0,0,0,0,0,238,238,238,238,141,1,0,0,0,0,154,219,238,238,238,
+  93,0,0,0,0,3,0,131,236,238,238,8,0,0,0,3,0,0,96,237,238,174,1,0,0,3,0,0,96,146,238,238,
+  10,0,0,3,0,0,97,0,213,238,142,0,0,3,0,0,7,0,64,237,238,5,0,3,0,48,5,0,0,229,238,29,
+  0,3,0,112,0,0,0,144,238,142,0,3,0,53,0,0,0,32,237,222,2,3,16,7,0,0,0,102,230,238,7,3,
+  96,1,0,0,117,1,192,238,12,189,103,0,0,115,3,0,128,238,62,238,190,1,113,5,0,0,48,238,126,238,238,107,
+  22,0,0,0,0,237,158,217,238,126,0,0,0,0,0,235,190,48,237,190,0,0,0,0,0,233,222,0,233,222,51,51,
+  51,51,51,234,238,136,54,0,0,0,0,0,0,238,238,141,2,0,0,0,0,238,238,238,141,1,0,0,0,19,115,235,
+  238,60,0,0,0,3,0,64,235,222,3,0,0,3,0,0,128,238,61,0,0,3,0,0,16,235,206,1,0,3,0,0,
+  113,129,238,8,0,3,0,16,23,0,235,45,0,3,0,113,1,0,228,142,0,39,16,23,0,0,176,222,0,238,120,1,
+  0,0,112,238,3,238,142,0,0,0,48,238,6,197,238,2,0,0,16,238,8,80,238,55,51,51,51,238,8,0,0,0,
+  149,236,206,89,0,0,0,0,0,196,238,189,219,238,76,0,0,0,128,238,57,0,0,131,237,8,0,0,232,107,11,0,
+  0,0,178,142,0,64,190,1,90,0,0,0,16,235,4,192,45,0,194,1,0,0,0,210,12,229,8,0,128,7,0,0,
+  0,128,94,233,3,0,16,221,141,0,0,48,158,220,0,0,128,206,236,8,0,0,205,190,0,0,208,28,193,125,119,119,
+  237,190,0,0,208,28,193,125,119,119,237,220,0,0,128,206,236,8,0,0,205,233,3,0,16,221,141,0,0,48,158,229,
+  8,0,128,7,0,0,0,128,94,192,45,0,194,1,0,0,0,210,12,64,190,1,90,0,0,0,16,235,4,0,232,107,
+  11,0,0,0,178,142,0,0,128,238,57,0,0,131,237,8,0,0,0,196,238,189,219,238,76,0,0,0,0,0,149,236,
+  206,89,0,0,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,119,119,237,2,
+  0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,
   0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,
-  0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,170,170,237,2,0,0,238,238,238,238,2,0,0,238,238,238,
-  238,2,0,0,255,255,255,255,2,0,0,255,255,255,255,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,
-  238,51,51,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,
+  0,238,0,0,236,2,0,0,238,170,170,237,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,255,255,255,
+  255,2,0,0,255,255,255,255,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,51,51,236,2,0,0,
+  238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,
   2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,
-  0,0,236,2,0,0,238,0,0,236,2,0,0,238,204,204,237,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,
-  0,0,255,255,255,255,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,0,
+  0,0,236,2,0,0,238,204,204,237,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,255,255,255,255,2,
+  0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,0,0,236,2,0,0,238,0,
   0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,
-  0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,
-  236,2,0,0,238,34,34,236,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,
-  238,254,239,238,2,0,0,163,191,251,60,0,0,0,224,11,176,31,0,0,0,224,11,176,31,0,0,0,144,191,251,11,
-  0,0,255,255,255,255,255,255,2,255,255,255,255,255,255,2,34,34,34,34,34,34,0,0,238,238,238,238,2,0,0,238,
-  238,238,238,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,136,136,237,2,0,0,238,0,0,236,2,
+  0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,34,34,
+  236,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,254,239,238,2,0,0,
+  163,191,251,60,0,0,0,224,11,176,31,0,0,0,224,11,176,31,0,0,0,144,191,251,11,0,0,255,255,255,255,255,
+  255,2,255,255,255,255,255,255,2,34,34,34,34,34,34,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,
+  238,238,238,2,0,0,238,238,238,238,2,0,0,238,136,136,237,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,
   0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,
   0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,
-  0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,51,51,236,2,0,0,238,238,238,
-  238,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,254,239,238,2,0,0,
-  216,191,251,142,1,0,0,224,11,176,31,0,0,0,224,11,176,31,0,0,0,144,191,251,11,0,0,255,255,255,255,255,
-  255,2,255,255,255,255,255,255,2,34,34,34,34,34,34,0,0,0,0,0,0,0,0,0,0,64,185,155,4,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,218,221,221,173,1,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,161,204,204,204,204,26,0,0,0,0,0,0,0,0,0,64,69,1,0,0,0,0,183,187,187,187,187,123,
-  0,18,0,0,0,0,0,0,32,169,170,74,0,80,169,72,170,170,170,170,170,170,166,170,24,0,48,135,38,0,129,153,
-  153,153,3,151,153,153,153,153,153,153,153,153,153,153,137,1,149,153,153,2,132,136,136,136,55,136,136,136,136,136,136,136,
-  136,136,136,136,136,37,136,136,136,7,117,119,119,119,87,119,119,119,119,119,119,119,119,119,119,119,119,70,119,119,119,23,
-  100,102,102,102,70,102,102,102,102,102,102,102,102,102,102,102,102,69,102,102,102,22,82,85,85,85,69,85,85,85,85,85,
-  85,85,85,85,85,85,85,68,85,85,85,5,64,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,
-  68,2,0,50,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,0,0,16,17,17,17,17,17,17,
-  17,33,34,34,18,17,17,17,17,17,17,17,1,0,0,0,0,0,0,0,0,16,249,255,255,25,0,0,0,0,0,0,
-  0,0,0,0,0,177,238,238,238,190,33,134,38,0,16,134,22,0,96,203,107,200,204,204,204,204,202,204,204,5,179,187,
-  187,3,184,187,187,187,187,187,187,187,187,187,187,11,169,170,170,89,170,170,170,170,170,170,170,170,170,170,170,10,153,153,
-  153,153,153,153,153,153,153,153,153,153,153,153,153,9,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,7,102,102,
-  102,102,102,102,102,102,102,102,102,102,102,102,102,6,84,85,85,85,85,85,85,85,85,85,85,85,85,85,85,5,49,68,
-  68,68,68,68,68,68,68,68,68,68,68,68,68,3,0,17,17,17,17,33,17,17,33,34,34,17,17,34,18,0,0,0,
-  0,0,0,32,251,255,255,43,0,0,0,0,0,0,0,0,0,0,0,227,238,238,238,238,3,0,0,0,0,0,64,202,
-  123,1,16,236,238,238,238,238,28,0,0,0,0,0,215,221,221,44,96,221,221,221,221,221,109,0,96,186,57,0,221,221,
-  221,173,160,221,221,221,221,221,173,0,217,221,205,4,204,204,204,204,179,204,204,204,204,204,188,64,204,204,204,11,187,187,
-  187,187,165,187,187,187,187,187,171,128,187,187,187,11,187,187,187,187,132,187,187,187,187,187,139,128,187,187,187,11,170,170,
-  170,170,100,170,170,170,170,170,106,115,170,170,170,10,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,6,130,153,
-  153,153,153,153,153,153,153,153,153,153,153,153,89,0,0,83,36,17,17,17,133,136,136,21,17,17,17,33,1,0,0,0,
-  0,0,0,0,0,0,0,80,201,156,5,0,0,0,0,0,114,153,38,0,0,0,34,0,0,0,0,0,16,218,221,221,
-  173,1,0,0,0,128,221,221,221,7,0,198,221,124,0,0,0,0,160,221,221,221,221,10,0,0,0,217,221,221,221,125,
-  128,204,204,204,9,0,0,0,198,204,204,204,204,108,0,0,80,204,204,204,204,204,197,204,204,204,108,0,0,0,203,204,
-  204,204,204,188,0,0,160,204,204,204,204,204,185,187,187,187,171,0,0,16,187,187,187,187,187,187,1,0,177,187,187,187,
-  187,187,187,187,187,187,187,1,0,32,187,187,187,187,187,187,2,0,177,187,187,187,187,187,170,170,170,170,170,1,0,16,
-  170,170,170,170,170,170,1,0,160,170,170,170,170,170,167,170,170,170,154,0,0,0,168,170,170,170,170,138,0,0,112,170,
-  170,170,170,170,163,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,154,80,153,153,153,153,153,
-  153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,57,0,114,153,153,153,153,153,153,153,153,153,153,153,153,153,153,
-  153,153,153,153,121,2,0,0,17,17,17,17,17,17,17,17,67,52,17,17,17,17,17,17,33,51,2,0,0,0,0,0,
-  0,246,255,255,255,111,0,0,0,0,0,0,0,0,0,96,238,238,238,238,238,6,0,0,0,0,0,0,0,0,209,238,
-  238,238,238,238,29,0,0,0,0,0,0,0,0,215,221,221,221,221,221,125,0,0,0,0,64,218,91,0,218,221,221,221,
-  221,221,173,0,130,121,1,196,204,204,5,202,204,204,204,204,204,172,32,203,204,27,185,187,187,11,185,187,187,187,187,187,
-  155,112,187,187,107,187,187,187,27,183,187,187,187,187,187,123,144,187,187,139,168,170,170,170,170,170,170,170,170,170,170,170,
-  170,170,106,147,153,153,153,153,153,153,153,153,153,153,153,153,153,41,48,151,120,119,119,152,153,153,153,137,119,119,135,121,
-  2,0,0,0,0,0,64,136,136,136,4,0,0,0,0,0,0,0,0,0,0,0,48,68,3,0,0,0,0,0,0,0,
-  0,0,83,53,0,0,0,0,0,214,255,255,109,0,0,0,177,255,255,255,255,27,0,0,251,255,255,255,255,191,0,96,
-  255,255,255,255,255,255,6,208,255,255,255,255,255,255,13,243,255,255,255,255,255,255,63,245,255,255,255,255,255,255,95,245,
-  255,255,255,255,255,255,95,243,255,255,255,255,255,255,63,208,255,255,255,255,255,255,13,96,255,255,255,255,255,255,6,0,
-  251,255,255,255,255,191,0,0,177,255,255,255,255,27,0,0,0,214,255,255,109,0,0,0,0,0,83,53,0,0,0,0,
-  0,0,83,53,0,0,0,0,0,214,255,255,109,0,0,0,177,255,255,255,255,27,0,0,251,255,255,255,255,191,0,96,
-  255,223,4,64,253,255,6,208,255,29,0,0,209,255,13,243,255,4,0,0,64,255,63,245,255,0,0,0,0,255,95,245,
-  255,0,0,0,0,255,95,243,255,4,0,0,64,255,63,208,255,29,0,0,209,255,13,96,255,223,4,64,253,255,6,0,
-  251,255,255,255,255,191,0,0,177,255,255,255,255,27,0,0,0,214,255,255,109,0,0,0,0,0,83,53,0,0,0,0,
-  0,0,16,1,0,0,0,0,0,0,177,27,0,0,0,0,0,16,251,191,1,0,0,0,0,177,255,255,27,0,0,0,
-  16,251,255,255,191,1,0,0,177,255,255,255,255,27,0,16,251,255,255,255,255,191,1,177,255,255,255,255,255,255,27,177,
-  255,255,255,255,255,255,27,16,251,255,255,255,255,191,1,0,177,255,255,255,255,27,0,0,16,251,255,255,191,1,0,0,
-  0,177,255,255,27,0,0,0,0,16,251,191,1,0,0,0,0,0,177,27,0,0,0,0,0,0,16,1,0,0,0,0,
-  0,0,0,0,128,2,0,0,0,0,0,0,0,0,176,94,0,0,0,0,0,0,0,0,176,255,9,0,0,98,102,102,
-  102,102,214,255,207,2,0,246,255,255,255,255,255,255,255,94,0,246,255,255,255,255,255,255,255,255,9,246,255,255,255,255,
-  255,255,255,255,27,246,255,255,255,255,255,255,255,127,0,98,102,102,102,102,214,255,223,4,0,0,0,0,0,0,176,255,
-  27,0,0,0,0,0,0,0,176,127,0,0,0,0,0,0,0,0,160,4,0,0,0,255,191,1,0,0,16,251,255,255,
-  255,27,0,0,177,255,255,255,255,191,1,16,251,255,255,251,255,255,27,177,255,255,191,177,255,255,191,251,255,255,27,16,
-  251,255,255,255,255,191,1,0,177,255,255,255,255,27,0,0,16,251,255,255,191,1,0,0,16,251,255,255,191,1,0,0,
-  177,255,255,255,255,27,0,16,251,255,255,255,255,191,1,177,255,255,191,251,255,255,27,251,255,255,27,177,255,255,191,255,
-  255,191,1,16,251,255,255,255,255,27,0,0,177,255,255,255,191,1,0,0,16,251,255,0,0,1,0,0,16,3,0,0,
-  48,4,0,0,64,6,0,0,96,8,0,0,128,9,0,0,144,10,0,0,160,12,0,0,192,13,0,0,208,15,0,0,
-  240,31,0,0,241,63,0,0,243,79,0,0,244,111,0,0,246,127,0,0,248,143,0,0,249,175,0,0,251,191,0,0,
-  252,223,0,0,253,255,0,0,255,255,1,32,255,255,2,48,46,226,4,80,10,160,5,96,111,246,7,128,255,255,8,144,
-  46,226,9,176,10,160,11,192,111,246,13,224,255,255,14,240,46,226,15,242,10,160,47,243,111,246,79,245,255,255,95,33,
-  34,34,18,0,64,5,0,0,228,95,0,64,254,255,5,228,255,255,95,101,102,102,86,0,16,3,0,0,64,6,0,0,
-  112,8,0,0,144,11,0,0,192,14,0,0,240,31,0,0,243,79,0,0,245,111,0,0,248,159,0,0,251,207,0,0,
-  189,235,0,16,11,176,2,64,11,176,4,112,191,251,7,144,191,251,10,192,11,176,12,240,11,176,15,243,191,251,63,180,
-  187,187,75,0,0,0,0,0,112,8,0,0,247,143,0,112,255,255,8,247,255,255,143,34,34,34,34,0,0,1,0,0,
-  64,6,0,0,160,11,0,0,241,47,0,0,246,127,0,0,251,207,0,32,45,226,2,112,10,160,7,192,111,246,12,243,
-  255,255,63,33,34,34,18,0,64,5,0,0,228,95,0,64,254,255,5,228,255,255,95,101,102,102,86,0,0,220,1,0,
-  0,112,155,8,0,0,226,18,62,0,0,108,0,197,0,96,11,0,176,7,225,2,0,32,30,192,6,0,80,12,48,30,
-  0,225,3,0,168,0,153,0,0,208,69,29,0,0,64,221,5,0,0,0,203,0,0,0,48,222,4,0,0,192,86,13,
-  0,0,183,0,138,0,32,46,0,226,2,176,7,0,96,11,241,2,0,32,31,128,10,0,160,8,0,93,0,212,0,0,
-  227,17,77,0,0,128,138,10,0,0,16,237,1,0,0,0,220,1,0,0,112,171,8,0,0,226,18,62,0,0,123,0,
-  198,0,96,12,0,192,6,225,3,0,48,30,208,4,0,64,13,64,29,0,208,4,0,153,0,168,0,0,209,52,30,0,
-  0,80,205,6,0,0,0,202,0,0,0,0,67,0,0,0,0,220,1,0,0,128,255,9,0,0,244,255,79,0,16,253,
-  255,239,1,16,34,34,34,1,148,137,4,0,0,0,0,0,0,0,255,255,207,4,0,0,0,0,0,213,255,255,255,159,
-  1,0,0,0,162,255,238,238,238,238,125,1,0,113,238,238,238,238,238,238,238,189,185,237,238,238,221,221,221,221,221,221,
-  221,221,221,221,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,187,187,187,187,187,187,187,187,
-  187,187,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,153,153,153,153,153,153,153,153,153,153,
-  136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,136,119,119,119,119,119,119,119,119,119,119,102,102,
-  102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,102,32,21,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,112,255,124,3,0,0,0,0,0,0,0,0,0,0,0,0,160,239,238,190,5,0,0,0,0,0,0,0,0,0,
-  0,0,208,239,238,238,205,22,0,0,0,0,0,0,0,0,0,0,241,239,238,222,221,205,5,0,0,0,0,0,0,0,
-  0,0,48,183,238,222,221,205,172,3,0,0,0,0,0,0,0,0,0,0,97,219,221,205,204,108,0,0,0,0,0,0,
-  0,0,0,0,0,48,218,204,204,188,25,0,0,0,0,0,0,0,0,0,0,0,48,202,204,187,171,2,0,0,0,0,
-  0,0,0,0,0,0,0,80,203,187,187,58,0,0,0,0,0,0,0,0,0,0,0,0,145,187,187,170,3,0,0,0,
-  0,0,0,0,0,0,0,0,0,182,171,170,58,0,0,0,0,0,0,0,0,0,0,0,0,64,170,170,154,2,0,0,
-  0,0,0,0,0,0,0,0,0,0,163,170,154,24,0,0,0,0,0,0,0,0,0,0,0,0,48,170,153,121,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,148,153,153,5,0,0,0,0,0,0,0,0,0,0,0,0,80,153,153,40,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,151,137,120,0,0,0,0,0,0,0,0,0,0,0,0,0,129,136,136,3,
-  0,0,0,0,0,0,0,0,0,0,0,0,48,136,136,7,0,0,0,0,0,0,0,0,0,0,0,0,0,134,136,71,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,130,119,119,0,0,0,0,0,0,0,0,0,0,0,0,0,96,119,119,
-  3,0,0,0,0,0,0,0,0,0,0,0,0,32,119,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,118,119,
-  22,0,0,0,0,0,0,0,0,0,0,0,0,0,99,102,54,0,0,0,0,0,0,0,0,0,0,0,0,0,96,102,
-  86,0,0,0,0,0,0,0,0,0,0,0,0,0,64,102,102,1,0,0,0,0,0,0,0,0,0,0,0,0,48,102,
-  86,2,0,0,0,0,0,0,0,0,0,0,0,0,16,85,36,1,128,21,0,0,0,0,0,0,0,0,0,0,242,239,
-  90,1,0,0,0,0,0,0,0,0,245,238,238,124,1,0,0,0,0,0,0,0,249,238,222,221,108,0,0,0,0,0,
-  0,0,131,236,222,221,205,59,0,0,0,0,0,0,0,32,199,221,204,204,6,0,0,0,0,0,0,0,0,182,204,188,
-  139,1,0,0,0,0,0,0,0,16,199,187,187,25,0,0,0,0,0,0,0,0,48,186,187,154,1,0,0,0,0,0,
-  0,0,0,129,171,170,24,0,0,0,0,0,0,0,0,0,167,170,121,0,0,0,0,0,0,0,0,0,112,154,153,5,
-  0,0,0,0,0,0,0,0,0,151,153,41,0,0,0,0,0,0,0,0,0,129,153,120,0,0,0,0,0,0,0,0,
-  0,32,136,136,4,0,0,0,0,0,0,0,0,0,133,136,23,0,0,0,0,0,0,0,0,0,112,120,71,0,0,0,
-  0,0,0,0,0,0,48,119,119,0,0,0,0,0,0,0,0,0,0,118,119,3,0,0,0,0,0,0,0,0,0,116,
-  102,5,0,0,0,0,0,0,0,0,0,97,102,6,0,0,0,0,0,0,0,0,0,80,102,38,0,0,0,0,0,0,
-  0,0,0,48,102,53,0,0,0,0,0,0,0,0,0,16,35,1,128,73,0,0,0,0,0,0,0,208,238,125,2,0,
-  0,0,0,0,241,238,222,125,1,0,0,0,0,129,236,221,205,59,0,0,0,0,0,48,216,204,188,6,0,0,0,0,
-  0,32,201,187,123,0,0,0,0,0,0,64,187,170,6,0,0,0,0,0,0,146,170,90,0,0,0,0,0,0,32,153,
-  153,2,0,0,0,0,0,0,146,153,23,0,0,0,0,0,0,48,137,72,0,0,0,0,0,0,0,134,120,1,0,0,
-  0,0,0,0,113,119,4,0,0,0,0,0,0,80,119,6,0,0,0,0,0,0,16,102,38,0,0,0,0,0,0,0,
-  101,54,0,0,0,0,0,0,0,83,53,213,40,0,0,0,0,232,222,24,0,0,0,215,221,188,3,0,0,0,164,188,
-  58,0,0,0,0,182,170,3,0,0,0,64,154,24,0,0,0,0,149,88,0,0,0,0,112,120,1,0,0,0,32,119,
-  4,0,0,0,0,102,5,0,0,0,0,51,2,0,0,32,2,0,0,0,0,0,0,0,0,32,150,187,203,106,1,0,
-  0,0,0,0,0,114,69,84,118,168,92,0,0,0,0,0,0,17,0,16,49,100,184,5,0,0,0,0,0,0,0,0,
-  0,49,117,58,0,0,0,0,0,0,0,0,0,16,82,119,0,0,0,0,17,0,0,0,0,0,49,133,0,0,0,0,
-  82,0,0,0,0,0,32,100,1,0,0,0,116,0,0,0,0,0,16,83,0,0,0,16,102,0,0,0,32,18,0,35,
-  0,0,0,48,57,0,0,48,87,19,0,1,0,0,0,99,10,0,0,131,53,2,0,0,0,0,49,166,5,0,0,121,
-  36,0,16,17,0,33,99,169,0,0,48,106,19,0,65,35,50,83,167,27,0,0,96,89,2,0,48,85,101,135,171,1,
-  0,0,112,89,2,0,0,115,152,171,5,0,0,0,112,90,2,0,0,0,34,1,0,0,0,0,80,106,2,0,0,0,
-  0,0,0,0,0,0,32,107,2,0,0,0,0,0,0,0,0,0,0,137,3,0,0,0,0,0,0,0,0,0,0,163,
-  21,0,0,0,0,0,0,0,0,0,0,96,56,0,0,0,0,0,0,0,0,0,0,0,120,2,0,0,0,0,0,0,
-  0,0,0,0,96,23,0,0,0,0,0,0,0,0,0,0,0,17,0,0,0,0,0,0,0,16,101,104,3,0,0,0,
-  0,0,116,86,134,170,3,0,0,0,0,1,0,33,117,58,0,0,0,0,0,0,0,49,134,0,0,0,0,0,0,0,
-  16,115,2,0,0,49,0,0,0,0,82,3,0,0,83,0,0,0,0,65,1,0,16,55,0,0,85,3,16,0,0,64,
-  9,0,112,54,1,0,0,16,132,6,0,132,20,16,34,33,83,152,0,0,119,3,0,84,84,167,25,0,0,120,2,0,
-  64,151,88,0,0,0,136,2,0,0,0,0,0,0,0,149,3,0,0,0,0,0,0,0,161,4,0,0,0,0,0,0,
-  0,80,24,0,0,0,0,0,0,0,0,86,0,0,0,0,0,0,0,0,80,4,0,0,0,0,0,0,0,0,32,7,
-  0,0,0,112,2,0,0,0,0,0,16,216,61,0,0,0,211,141,1,0,0,0,0,196,221,76,0,0,0,196,221,254,
-  44,0,0,64,221,108,0,0,0,0,0,230,255,207,0,0,212,189,2,0,0,0,0,0,208,255,255,0,16,220,27,0,
-  4,0,0,0,64,144,255,239,1,128,205,2,145,61,0,0,0,211,25,217,222,8,210,109,0,217,24,0,0,0,129,157,
-  0,214,45,215,12,64,141,0,0,0,0,0,216,4,192,125,48,4,0,19,0,0,0,0,0,49,0,64,3,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,48,4,0,19,0,0,0,0,0,49,0,64,3,215,12,64,141,0,0,0,0,
-  0,216,4,192,125,210,109,0,217,24,0,0,0,129,157,0,214,45,128,205,2,145,61,0,0,0,211,25,32,220,8,16,
-  220,27,0,4,0,0,0,64,0,177,205,1,0,212,189,2,0,0,0,0,0,32,219,77,0,0,64,221,108,0,0,0,
-  0,0,198,221,4,0,0,0,196,221,76,0,0,0,196,221,76,0,0,0,0,16,216,61,0,0,0,211,141,1,0,0,
-  0,0,0,32,7,0,0,0,112,2,0,0,0,0,0,0,32,7,0,0,0,112,2,0,0,0,0,0,16,216,61,0,
-  0,0,211,141,1,0,0,0,0,196,221,76,0,0,0,196,221,254,44,0,0,64,221,108,0,0,0,0,0,230,255,207,
-  0,0,212,189,2,0,0,0,0,0,208,255,255,0,16,220,27,0,4,0,0,0,64,144,255,239,1,128,205,2,145,61,
-  0,0,0,211,25,217,222,8,210,109,0,217,24,0,0,0,129,157,0,214,45,215,12,64,141,0,0,0,0,0,216,4,
-  192,125,48,4,0,19,0,0,0,0,0,49,0,64,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,4,0,
-  19,0,0,0,0,0,49,0,64,3,215,12,64,141,0,0,0,0,0,216,4,192,125,210,109,0,217,24,0,0,0,129,
-  157,0,214,45,128,237,157,145,61,0,0,0,211,25,32,220,8,16,254,255,9,4,0,0,0,64,0,177,205,1,0,255,
-  255,13,0,0,0,0,0,32,219,77,0,0,252,255,110,0,0,0,0,0,198,221,4,0,0,194,239,221,76,0,0,0,
-  196,221,76,0,0,0,0,16,216,61,0,0,0,211,141,1,0,0,0,0,0,32,7,0,0,0,112,2,0,0,0,0,
-  0,0,32,7,0,0,0,112,2,0,0,0,0,0,16,216,61,0,0,0,211,141,1,0,0,0,194,239,221,76,0,0,
-  0,196,221,254,44,0,0,252,255,110,0,0,0,0,0,230,255,207,0,0,255,255,13,0,0,0,0,0,208,255,255,0,
-  16,254,255,9,4,0,0,0,64,144,255,239,1,128,237,157,145,61,0,0,0,211,25,217,222,8,210,109,0,217,24,0,
-  0,0,129,157,0,214,45,215,12,64,141,0,0,0,0,0,216,4,192,125,48,4,0,19,0,0,0,0,0,49,0,64,
-  3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,48,4,0,19,0,0,0,0,0,49,0,64,3,215,12,64,141,
-  0,0,0,0,0,216,4,192,125,210,109,0,217,24,0,0,0,129,157,0,214,45,128,237,157,145,61,0,0,0,211,25,
-  217,222,8,16,254,255,9,4,0,0,0,64,144,255,239,1,0,255,255,13,0,0,0,0,0,208,255,255,0,0,252,255,
-  110,0,0,0,0,0,230,255,207,0,0,194,239,221,76,0,0,0,196,221,254,44,0,0,0,16,216,61,0,0,0,211,
-  141,1,0,0,0,0,0,32,7,0,0,0,112,2,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,16,53,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  102,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,118,55,0,4,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,133,120,66,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,132,136,120,5,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,146,153,137,6,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,144,153,153,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,144,170,170,73,3,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,128,170,170,106,70,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  144,187,187,155,119,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,179,187,187,187,136,88,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,200,204,204,204,153,153,6,0,0,0,0,0,0,0,0,0,0,0,0,48,203,204,204,204,
-  155,153,89,0,0,0,0,0,0,0,0,0,0,0,0,146,204,204,204,204,172,170,170,3,0,0,0,0,0,0,0,0,
-  0,0,16,184,221,221,221,221,189,187,187,26,0,0,0,0,0,0,0,0,0,0,96,201,221,221,221,221,221,187,187,123,
-  0,0,0,0,0,0,0,0,0,0,160,219,221,221,221,221,221,204,204,204,2,0,0,0,0,0,0,0,0,64,185,221,
-  221,221,221,221,221,205,204,204,9,0,0,0,0,0,0,0,48,185,219,221,221,221,221,221,221,221,221,221,61,0,0,0,
-  0,0,0,48,201,204,237,238,238,238,238,238,238,222,221,221,173,0,0,0,0,0,16,200,204,220,238,238,238,238,238,238,
-  238,238,221,221,221,5,0,0,0,0,177,221,221,237,238,238,238,238,238,238,238,238,222,221,221,29,0,0,0,0,219,221,
-  221,238,238,238,238,238,238,238,238,238,238,238,238,174,0,0,0,64,221,221,237,238,238,238,238,238,238,238,238,238,238,238,
-  238,238,7,0,0,80,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,78,0,0,32,238,238,238,238,238,238,
-  238,238,238,238,238,238,238,238,238,238,222,2,0,112,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,11,
-  0,208,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,126,0,227,238,238,238,238,238,238,238,238,238,238,
-  238,238,238,238,238,238,238,238,2,230,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,9,232,238,238,
-  238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,14,233,238,238,238,238,238,238,238,238,238,238,238,238,238,238,
-  238,238,238,238,14,232,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,14,230,238,238,238,238,238,238,
-  238,238,238,238,238,238,238,238,238,238,238,78,4,227,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,14,
-  0,208,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,11,0,128,238,238,238,238,238,238,238,238,238,238,
-  238,238,238,238,238,238,238,7,0,16,237,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,238,2,0,0,230,238,
-  238,238,238,238,238,238,238,238,238,238,238,238,238,238,158,0,0,0,144,238,238,238,238,238,238,238,238,238,238,238,238,238,
-  238,238,29,0,0,0,0,233,238,238,238,238,238,238,238,238,238,238,238,238,238,222,2,0,0,0,0,96,238,238,238,238,
-  238,238,238,238,238,238,238,238,238,44,0,0,0,0,0,0,129,238,238,238,238,238,238,238,238,238,238,238,109,0,0,0,
-  0,0,0,0,0,64,151,153,152,153,153,153,121,150,153,71,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,0,
-  0,32,21,0,0,0,0,0,0,0,16,87,0,0,0,0,0,0,0,0,136,19,0,0,0,0,0,0,0,151,88,0,
-  0,0,0,0,0,0,167,122,0,0,0,0,0,16,0,167,154,0,0,0,0,16,101,17,186,187,2,0,0,0,96,136,
-  133,203,204,5,0,0,0,146,153,185,204,204,10,0,0,0,163,170,203,204,204,60,0,0,0,177,187,220,221,221,141,0,
-  0,0,128,204,221,221,221,221,1,0,0,48,221,221,221,221,221,6,0,0,0,221,221,221,221,221,10,0,0,144,221,221,
-  221,221,221,13,0,0,216,221,221,221,221,221,45,0,32,221,221,221,221,221,221,141,0,128,221,221,221,221,221,221,221,3,
-  215,221,221,221,221,221,221,221,8,162,238,238,238,238,238,222,221,11,128,238,238,238,238,238,238,238,9,48,238,238,238,238,
-  238,238,238,7,0,233,238,238,238,238,238,222,1,0,177,238,238,238,238,238,77,0,0,16,215,238,238,238,190,3,0,0,
-  0,0,83,69,84,3,0,0,0,16,0,0,0,0,32,0,0,0,0,48,0,0,0,0,64,17,0,0,0,80,33,0,
-  0,0,80,50,0,0,0,96,67,0,0,0,96,84,0,0,0,80,101,0,0,0,80,118,0,0,0,96,135,0,0,0,
-  96,152,1,0,0,80,154,1,0,0,80,170,2,0,0,80,170,3,0,0,80,171,4,0,0,96,187,5,0,0,96,187,
-  5,0,0,96,188,7,0,0,112,204,7,0,0,112,204,8,0,0,128,204,9,0,0,144,204,10,0,0,160,205,11,0,
-  0,192,221,12,0,0,208,221,13,0,0,210,221,13,0,0,211,221,45,0,0,213,221,45,0,0,215,221,61,0,0,233,
-  238,77,0,0,235,238,94,0,0,237,238,110,0,16,238,238,126,0,48,238,238,158,0,80,238,238,158,0,112,238,238,174,
-  0,128,238,238,206,0,160,238,238,222,0,192,238,238,238,0,208,238,238,238,1,224,238,238,238,2,225,238,238,238,3,226,
-  238,238,238,4,226,238,238,238,5,228,238,238,238,5,228,238,238,238,6,228,238,238,238,7,228,238,238,238,7,227,238,238,
-  238,7,226,238,238,238,7,226,238,238,238,7,225,238,238,238,7,176,238,238,238,0,16,234,220,93,0,32,17,0,32,18,
-  0,48,35,0,48,52,0,32,69,0,32,102,0,32,119,0,48,135,0,48,152,0,48,168,0,64,186,0,96,203,0,112,
-  204,0,144,221,2,160,221,2,192,221,3,209,221,5,211,221,6,213,221,7,215,221,8,216,221,9,216,221,10,218,221,10,
-  218,221,12,218,221,12,216,221,12,232,222,10,129,135,2,0,16,0,0,0,0,0,2,0,0,0,50,0,0,0,0,0,
-  5,0,0,0,68,0,0,0,0,0,21,0,0,16,119,0,0,0,0,0,54,0,0,48,136,2,0,0,0,0,101,0,
-  0,80,153,4,0,0,0,0,133,0,0,112,153,7,0,0,0,0,149,1,0,144,170,26,0,0,0,0,165,2,0,160,
-  170,74,0,0,0,0,165,4,0,160,187,107,0,16,0,0,181,6,0,160,187,155,0,80,2,0,182,8,0,144,204,204,
-  1,112,39,0,198,9,0,112,204,204,3,128,120,1,200,11,0,80,221,221,5,112,153,7,202,28,0,48,221,221,8,80,
-  170,74,220,61,0,16,221,221,10,48,187,171,221,93,0,0,220,221,13,0,203,204,221,125,0,0,235,238,62,0,201,220,
-  221,157,0,0,234,238,110,0,216,221,238,190,0,0,235,238,174,0,216,237,238,222,0,0,236,238,222,1,219,238,238,238,
-  2,16,238,238,238,53,238,238,238,238,3,64,238,238,238,186,238,238,238,238,5,144,238,238,238,238,238,238,238,238,6,208,
-  238,238,238,238,238,238,238,238,8,229,238,238,238,238,238,238,238,238,13,236,238,238,238,238,238,238,238,238,94,238,238,238,
-  238,238,238,238,238,238,142,238,238,238,238,238,238,238,238,238,158,238,238,238,238,238,238,238,238,238,5,238,238,238,238,238,
-  238,238,238,238,4,236,238,238,238,238,238,238,238,238,2,229,238,238,238,238,238,238,238,238,1,128,238,238,238,235,238,238,
-  238,142,0,0,180,238,91,48,218,222,222,8,0,0,17,0,0,0,65,0,0,0,113,0,0,0,145,2,0,0,149,4,
-  0,0,182,7,0,0,198,10,0,0,197,28,0,0,216,61,0,16,220,109,0,96,221,157,0,176,221,189,0,210,221,221,
-  0,212,221,221,2,213,221,221,5,212,221,221,5,226,238,190,0,112,238,77,0,0,83,2,0,0,0,32,0,0,0,0,
-  0,0,0,0,64,2,0,0,0,0,0,0,0,80,6,0,0,0,0,0,0,0,64,56,0,0,0,0,0,0,0,64,
-  120,0,0,0,0,0,0,0,48,153,2,0,0,0,0,0,0,48,170,6,0,0,0,0,0,0,64,170,9,0,0,0,
-  0,0,0,96,187,27,0,0,0,0,0,0,112,187,107,0,0,0,0,0,0,128,204,172,3,0,0,0,0,0,144,204,
-  204,24,0,0,0,0,0,176,221,221,90,0,0,0,0,0,211,221,221,172,1,0,0,0,0,217,221,221,189,5,0,0,
-  0,48,221,221,221,205,10,0,0,0,160,238,238,238,222,45,0,0,0,227,238,238,238,222,141,0,0,0,235,238,238,238,
-  238,221,1,0,64,238,238,238,238,238,238,7,0,160,238,238,238,238,238,238,29,0,225,238,238,238,238,238,238,142,0,228,
-  238,238,238,238,238,238,238,1,231,238,238,238,238,238,238,238,8,231,238,238,238,238,238,238,238,13,231,238,238,238,238,238,
-  238,238,14,229,238,238,238,238,238,238,238,14,228,238,238,238,238,238,238,238,5,225,238,238,238,238,238,238,238,0,160,238,
-  238,238,238,238,238,158,0,32,238,238,238,238,238,238,45,0,0,211,238,238,238,238,206,2,0,0,0,150,153,137,137,5,
-  0,0,0,33,0,0,0,97,0,0,0,144,2,0,0,144,5,0,0,161,8,0,0,195,11,0,0,197,60,0,0,218,
-  125,0,64,221,189,0,176,221,221,1,211,221,221,3,215,221,221,6,216,221,221,12,215,221,221,29,229,238,238,8,193,238,
-  222,3,16,135,56,0,0,0,0,129,132,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,83,127,143,141,137,132,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,
-  15,15,47,79,127,142,136,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,15,15,15,15,15,
-  47,95,143,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,15,15,15,15,15,15,15,27,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,134,132,131,12,15,15,15,15,15,15,15,4,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,111,111,127,15,15,15,15,15,15,15,10,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,15,15,15,15,15,15,15,15,15,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,15,15,
-  15,15,15,15,15,15,15,63,136,129,0,0,0,0,0,1,139,132,0,0,0,0,0,0,0,15,15,15,15,15,15,15,
-  15,15,31,111,141,132,0,0,0,1,11,63,142,131,0,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,63,
-  143,136,0,1,11,15,15,79,141,129,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,31,127,138,11,15,
-  15,15,15,95,139,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,47,15,15,15,15,15,15,127,
-  134,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,47,142,129,0,0,0,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,95,136,0,0,0,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,28,132,0,0,0,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,12,5,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,47,39,0,0,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,95,136,
-  0,0,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,142,128,0,0,0,0,
-  0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,127,133,0,0,0,0,0,0,2,5,10,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,137,0,0,0,0,0,0,0,0,0,4,14,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,47,141,0,0,0,2,116,130,0,0,0,0,4,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,95,9,12,14,15,95,135,0,0,0,0,0,10,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,79,136,0,0,0,0,0,5,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,79,137,0,0,0,0,0,2,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,63,137,188,
-  105,2,0,0,0,0,238,238,174,4,0,0,0,238,238,238,158,1,0,0,101,217,238,238,44,0,0,0,0,197,238,222,
-  2,0,0,0,0,232,238,28,0,0,0,0,96,238,158,0,0,0,0,0,232,238,4,0,0,0,0,192,238,10,3,0,
-  0,0,80,238,46,222,6,0,0,0,237,110,238,110,0,0,0,233,158,238,222,0,0,0,230,190,238,238,3,0,0,229,
-  206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,133,132,130,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,129,0,0,0,0,98,111,127,143,142,139,135,128,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,137,143,104,0,0,0,0,2,15,15,15,31,63,109,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,136,143,95,31,13,0,0,0,0,2,15,15,15,15,15,
-  7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,139,111,31,15,15,15,38,134,138,140,125,15,15,
-  15,15,15,1,0,0,0,0,129,129,0,0,0,0,0,0,0,0,0,0,0,128,91,15,15,15,15,15,63,111,79,47,
-  47,15,15,15,15,47,139,132,0,0,0,91,141,130,0,0,0,0,0,0,0,0,0,0,0,1,12,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,31,79,127,138,129,8,15,79,141,129,0,0,0,0,0,0,0,0,0,0,0,84,31,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,31,95,94,15,15,15,95,139,128,0,0,0,0,0,0,0,0,0,130,
-  142,63,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,111,136,0,0,0,0,130,137,1,
-  0,129,141,79,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,140,128,0,0,0,
-  137,95,14,6,138,95,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,6,0,0,
-  0,0,129,143,31,15,15,47,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,63,116,
-  0,0,0,0,0,135,111,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,79,139,0,0,0,0,0,139,63,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,31,143,130,0,0,0,0,142,31,15,15,15,15,15,15,15,15,15,15,15,15,14,8,4,4,8,14,15,
-  15,15,15,15,15,15,15,15,111,134,0,0,129,0,132,7,9,30,15,15,15,15,15,15,15,15,15,14,3,0,0,0,
-  0,3,14,15,15,15,15,15,15,15,15,47,61,11,14,143,130,0,0,0,140,47,15,15,15,15,15,15,15,15,8,0,
-  0,0,0,0,0,8,15,15,15,15,15,15,15,15,15,15,15,15,127,132,0,0,0,141,47,15,15,15,15,15,15,15,
-  15,4,0,0,0,0,0,0,4,15,15,15,15,15,15,15,15,15,15,15,15,111,133,0,0,0,141,47,15,15,15,15,
-  15,15,15,15,4,0,0,0,0,0,0,4,15,15,15,15,15,15,15,15,15,15,15,15,111,133,0,0,0,140,47,15,
-  15,15,15,15,15,15,15,8,0,0,0,0,0,0,8,15,15,15,15,15,15,15,15,15,15,15,15,127,132,132,7,9,
-  30,15,15,15,15,15,15,15,15,15,14,3,0,0,0,0,3,14,15,15,15,15,15,15,15,15,47,61,11,14,143,130,
-  142,31,15,15,15,15,15,15,15,15,15,15,15,15,14,8,4,4,8,14,15,15,15,15,15,15,15,15,15,111,134,0,
-  0,129,0,139,63,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,
-  143,130,0,0,0,0,135,111,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,79,139,0,0,0,0,0,129,143,31,15,15,47,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,63,116,0,0,0,0,0,0,137,95,14,6,138,95,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,14,6,0,0,0,0,0,130,137,1,0,129,141,79,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,31,140,128,0,0,0,0,0,0,0,0,130,142,63,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,111,136,0,0,0,0,0,0,0,0,0,0,84,31,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,31,95,94,15,15,15,95,139,128,0,0,0,0,0,0,0,0,0,1,12,
+  0,238,0,0,236,2,0,0,238,0,0,236,2,0,0,238,51,51,236,2,0,0,238,238,238,238,2,0,0,238,238,238,
+  238,2,0,0,238,238,238,238,2,0,0,238,238,238,238,2,0,0,238,254,239,238,2,0,0,216,191,251,142,1,0,0,
+  224,11,176,31,0,0,0,224,11,176,31,0,0,0,144,191,251,11,0,0,255,255,255,255,255,255,2,255,255,255,255,255,
+  255,2,34,34,34,34,34,34,0,0,0,0,0,0,0,0,0,0,64,185,155,4,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,16,218,221,221,173,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,204,204,
+  204,204,26,0,0,0,0,0,0,0,0,0,64,69,1,0,0,0,0,183,187,187,187,187,123,0,18,0,0,0,0,0,
+  0,32,169,170,74,0,80,169,72,170,170,170,170,170,170,166,170,24,0,48,135,38,0,129,153,153,153,3,151,153,153,153,
+  153,153,153,153,153,153,153,137,1,149,153,153,2,132,136,136,136,55,136,136,136,136,136,136,136,136,136,136,136,136,37,136,
+  136,136,7,117,119,119,119,87,119,119,119,119,119,119,119,119,119,119,119,119,70,119,119,119,23,100,102,102,102,70,102,102,
+  102,102,102,102,102,102,102,102,102,102,69,102,102,102,22,82,85,85,85,69,85,85,85,85,85,85,85,85,85,85,85,85,
+  68,85,85,85,5,64,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,68,2,0,50,51,51,51,
+  51,51,51,51,51,51,51,51,51,51,51,51,51,51,51,19,0,0,16,17,17,17,17,17,17,17,33,34,34,18,17,17,
+  17,17,17,17,17,1,0,0,0,0,0,0,0,0,16,249,255,255,25,0,0,0,0,0,0,0,0,0,0,0,177,238,
+  238,238,190,33,134,38,0,16,134,22,0,96,203,107,200,204,204,204,204,202,204,204,5,179,187,187,3,184,187,187,187,187,
+  187,187,187,187,187,187,11,169,170,170,89,170,170,170,170,170,170,170,170,170,170,170,10,153,153,153,153,153,153,153,153,153,
+  153,153,153,153,153,153,9,119,119,119,119,119,119,119,119,119,119,119,119,119,119,119,7,102,102,102,102,102,102,102,102,102,
+  102,102,102,102,102,102,6,84,85,85,85,85,85,85,85,85,85,85,85,85,85,85,5,49,68,68,68,68,68,68,68,68,
+  68,68,68,68,68,68,3,0,17,17,17,17,33,17,17,33,34,34,17,17,34,18,0,0,0,0,0,0,32,251,255,255,
+  43,0,0,0,0,0,0,0,0,0,0,0,227,238,238,238,238,3,0,0,0,0,0,64,202,123,1,16,236,238,238,238,
+  238,28,0,0,0,0,0,215,221,221,44,96,221,221,221,221,221,109,0,96,186,57,0,221,221,221,173,160,221,221,221,221,
+  221,173,0,217,221,205,4,204,204,204,204,179,204,204,204,204,204,188,64,204,204,204,11,187,187,187,187,165,187,187,187,187,
+  187,171,128,187,187,187,11,187,187,187,187,132,187,187,187,187,187,139,128,187,187,187,11,170,170,170,170,100,170,170,170,170,
+  170,106,115,170,170,170,10,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,6,130,153,153,153,153,153,153,153,153,
+  153,153,153,153,153,89,0,0,83,36,17,17,17,133,136,136,21,17,17,17,33,1,0,0,0,0,0,0,0,0,0,0,
+  80,201,156,5,0,0,0,0,0,114,153,38,0,0,0,34,0,0,0,0,0,16,218,221,221,173,1,0,0,0,128,221,
+  221,221,7,0,198,221,124,0,0,0,0,160,221,221,221,221,10,0,0,0,217,221,221,221,125,128,204,204,204,9,0,0,
+  0,198,204,204,204,204,108,0,0,80,204,204,204,204,204,197,204,204,204,108,0,0,0,203,204,204,204,204,188,0,0,160,
+  204,204,204,204,204,185,187,187,187,171,0,0,16,187,187,187,187,187,187,1,0,177,187,187,187,187,187,187,187,187,187,187,
+  1,0,32,187,187,187,187,187,187,2,0,177,187,187,187,187,187,170,170,170,170,170,1,0,16,170,170,170,170,170,170,1,
+  0,160,170,170,170,170,170,167,170,170,170,154,0,0,0,168,170,170,170,170,138,0,0,112,170,170,170,170,170,163,170,170,
+  170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,154,80,153,153,153,153,153,153,153,153,153,153,153,153,
+  153,153,153,153,153,153,153,153,57,0,114,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,153,121,2,0,
+  0,17,17,17,17,17,17,17,17,67,52,17,17,17,17,17,17,33,51,2,0,0,0,0,0,0,246,255,255,255,111,0,
+  0,0,0,0,0,0,0,0,96,238,238,238,238,238,6,0,0,0,0,0,0,0,0,209,238,238,238,238,238,29,0,0,
+  0,0,0,0,0,0,215,221,221,221,221,221,125,0,0,0,0,64,218,91,0,218,221,221,221,221,221,173,0,130,121,1,
+  196,204,204,5,202,204,204,204,204,204,172,32,203,204,27,185,187,187,11,185,187,187,187,187,187,155,112,187,187,107,187,187,
+  187,27,183,187,187,187,187,187,123,144,187,187,139,168,170,170,170,170,170,170,170,170,170,170,170,170,170,106,147,153,153,153,
+  153,153,153,153,153,153,153,153,153,153,41,48,151,120,119,119,152,153,153,153,137,119,119,135,121,2,0,0,0,0,0,64,
+  136,136,136,4,0,0,0,0,0,0,0,0,0,0,0,48,68,3,0,0,0,0,0,0,0,0,0,83,53,0,0,0,
+  0,0,214,255,255,109,0,0,0,177,255,255,255,255,27,0,0,251,255,255,255,255,191,0,96,255,255,255,255,255,255,6,
+  208,255,255,255,255,255,255,13,243,255,255,255,255,255,255,63,245,255,255,255,255,255,255,95,245,255,255,255,255,255,255,95,
+  243,255,255,255,255,255,255,63,208,255,255,255,255,255,255,13,96,255,255,255,255,255,255,6,0,251,255,255,255,255,191,0,
+  0,177,255,255,255,255,27,0,0,0,214,255,255,109,0,0,0,0,0,83,53,0,0,0,0,0,0,83,53,0,0,0,
+  0,0,214,255,255,109,0,0,0,177,255,255,255,255,27,0,0,251,255,255,255,255,191,0,96,255,223,4,64,253,255,6,
+  208,255,29,0,0,209,255,13,243,255,4,0,0,64,255,63,245,255,0,0,0,0,255,95,245,255,0,0,0,0,255,95,
+  243,255,4,0,0,64,255,63,208,255,29,0,0,209,255,13,96,255,223,4,64,253,255,6,0,251,255,255,255,255,191,0,
+  0,177,255,255,255,255,27,0,0,0,214,255,255,109,0,0,0,0,0,83,53,0,0,0,0,0,0,16,1,0,0,0,
+  0,0,0,177,27,0,0,0,0,0,16,251,191,1,0,0,0,0,177,255,255,27,0,0,0,16,251,255,255,191,1,0,
+  0,177,255,255,255,255,27,0,16,251,255,255,255,255,191,1,177,255,255,255,255,255,255,27,177,255,255,255,255,255,255,27,
+  16,251,255,255,255,255,191,1,0,177,255,255,255,255,27,0,0,16,251,255,255,191,1,0,0,0,177,255,255,27,0,0,
+  0,0,16,251,191,1,0,0,0,0,0,177,27,0,0,0,0,0,0,16,1,0,0,0,0,0,0,0,0,128,2,0,
+  0,0,0,0,0,0,0,176,94,0,0,0,0,0,0,0,0,176,255,9,0,0,98,102,102,102,102,214,255,207,2,0,
+  246,255,255,255,255,255,255,255,94,0,246,255,255,255,255,255,255,255,255,9,246,255,255,255,255,255,255,255,255,27,246,255,
+  255,255,255,255,255,255,127,0,98,102,102,102,102,214,255,223,4,0,0,0,0,0,0,176,255,27,0,0,0,0,0,0,
+  0,176,127,0,0,0,0,0,0,0,0,160,4,0,0,0,255,191,1,0,0,16,251,255,255,255,27,0,0,177,255,255,
+  255,255,191,1,16,251,255,255,251,255,255,27,177,255,255,191,177,255,255,191,251,255,255,27,16,251,255,255,255,255,191,1,
+  0,177,255,255,255,255,27,0,0,16,251,255,255,191,1,0,0,16,251,255,255,191,1,0,0,177,255,255,255,255,27,0,
+  16,251,255,255,255,255,191,1,177,255,255,191,251,255,255,27,251,255,255,27,177,255,255,191,255,255,191,1,16,251,255,255,
+  255,255,27,0,0,177,255,255,255,191,1,0,0,16,251,255,0,0,1,0,0,16,3,0,0,48,4,0,0,64,6,0,
+  0,96,8,0,0,128,9,0,0,144,10,0,0,160,12,0,0,192,13,0,0,208,15,0,0,240,31,0,0,241,63,0,
+  0,243,79,0,0,244,111,0,0,246,127,0,0,248,143,0,0,249,175,0,0,251,191,0,0,252,223,0,0,253,255,0,
+  0,255,255,1,32,255,255,2,48,46,226,4,80,10,160,5,96,111,246,7,128,255,255,8,144,46,226,9,176,10,160,11,
+  192,111,246,13,224,255,255,14,240,46,226,15,242,10,160,47,243,111,246,79,245,255,255,95,33,34,34,18,0,64,5,0,
+  0,228,95,0,64,254,255,5,228,255,255,95,101,102,102,86,0,16,3,0,0,64,6,0,0,112,8,0,0,144,11,0,
+  0,192,14,0,0,240,31,0,0,243,79,0,0,245,111,0,0,248,159,0,0,251,207,0,0,189,235,0,16,11,176,2,
+  64,11,176,4,112,191,251,7,144,191,251,10,192,11,176,12,240,11,176,15,243,191,251,63,180,187,187,75,0,0,0,0,
+  0,112,8,0,0,247,143,0,112,255,255,8,247,255,255,143,34,34,34,34,0,0,1,0,0,64,6,0,0,160,11,0,
+  0,241,47,0,0,246,127,0,0,251,207,0,32,45,226,2,112,10,160,7,192,111,246,12,243,255,255,63,33,34,34,18,
+  0,64,5,0,0,228,95,0,64,254,255,5,228,255,255,95,101,102,102,86,0,0,220,1,0,0,112,155,8,0,0,226,
+  18,62,0,0,108,0,197,0,96,11,0,176,7,225,2,0,32,30,192,6,0,80,12,48,30,0,225,3,0,168,0,153,
+  0,0,208,69,29,0,0,64,221,5,0,0,0,203,0,0,0,48,222,4,0,0,192,86,13,0,0,183,0,138,0,32,
+  46,0,226,2,176,7,0,96,11,241,2,0,32,31,128,10,0,160,8,0,93,0,212,0,0,227,17,77,0,0,128,138,
+  10,0,0,16,237,1,0,0,0,220,1,0,0,112,171,8,0,0,226,18,62,0,0,123,0,198,0,96,12,0,192,6,
+  225,3,0,48,30,208,4,0,64,13,64,29,0,208,4,0,153,0,168,0,0,209,52,30,0,0,80,205,6,0,0,0,
+  202,0,0,0,0,67,0,0,0,0,220,1,0,0,128,255,9,0,0,244,255,79,0,16,253,255,239,1,16,34,34,34,
+  1,148,137,4,0,0,0,0,0,0,0,255,255,207,4,0,0,0,0,0,213,255,255,255,159,1,0,0,0,162,255,238,
+  238,238,238,125,1,0,113,238,238,238,238,238,238,238,189,185,237,238,238,221,221,221,221,221,221,221,221,221,221,204,204,204,
+  204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,204,187,187,187,187,187,187,187,187,187,187,170,170,170,170,170,
+  170,170,170,170,170,170,170,170,170,170,170,170,170,170,170,153,153,153,153,153,153,153,153,153,153,136,136,136,136,136,136,136,
+  136,136,136,136,136,136,136,136,136,136,136,136,136,119,119,119,119,119,119,119,119,119,119,102,102,102,102,102,102,102,102,102,
+  102,102,102,102,102,102,102,102,102,102,102,0,0,0,129,132,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,83,127,143,141,137,132,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,5,15,15,47,79,127,142,136,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,
+  15,15,15,15,15,47,95,143,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,10,15,15,15,15,15,
+  15,15,27,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,134,132,131,12,15,15,15,15,15,15,15,4,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,111,111,127,15,15,15,15,15,15,15,10,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,3,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,15,15,15,15,15,15,15,15,15,63,136,129,0,0,0,0,0,1,139,132,0,0,0,0,0,0,0,15,15,
+  15,15,15,15,15,15,15,31,111,141,132,0,0,0,1,11,63,142,131,0,0,0,0,0,0,15,15,15,15,15,15,15,
+  15,15,15,15,63,143,136,0,1,11,15,15,79,141,129,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,
+  31,127,138,11,15,15,15,15,95,139,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,47,15,15,
+  15,15,15,15,127,134,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,47,
+  142,129,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,95,136,0,0,0,
+  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,28,132,0,0,0,15,15,15,15,15,
+  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,12,5,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,15,15,15,15,15,47,39,0,0,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,95,136,0,0,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,142,
+  128,0,0,0,0,0,0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,127,133,0,0,0,0,
+  0,0,2,5,10,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,137,0,0,0,0,0,0,0,0,0,
+  4,14,15,15,15,15,15,15,15,15,15,15,15,15,15,15,47,141,0,0,0,2,116,130,0,0,0,0,4,15,15,15,
+  15,15,15,15,15,15,15,15,15,15,15,15,95,9,12,14,15,95,135,0,0,0,0,0,10,15,15,15,15,15,15,15,
+  15,15,15,15,15,15,15,15,15,15,15,15,79,136,0,0,0,0,0,5,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,15,15,15,15,79,137,0,0,0,0,0,2,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,63,137,188,105,2,0,0,0,0,238,238,174,4,0,0,0,238,238,238,158,1,0,0,101,217,238,238,44,0,0,
+  0,0,197,238,222,2,0,0,0,0,232,238,28,0,0,0,0,96,238,158,0,0,0,0,0,232,238,4,0,0,0,0,
+  192,238,10,3,0,0,0,80,238,46,222,6,0,0,0,237,110,238,110,0,0,0,233,158,238,222,0,0,0,230,190,238,
+  238,3,0,0,229,206,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,133,132,130,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,129,0,0,0,0,98,111,127,143,142,139,135,
+  128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,137,143,104,0,0,0,0,2,15,15,15,
+  31,63,109,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,136,143,95,31,13,0,0,0,0,2,
+  15,15,15,15,15,7,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,139,111,31,15,15,15,38,134,
+  138,140,125,15,15,15,15,15,1,0,0,0,0,129,129,0,0,0,0,0,0,0,0,0,0,0,128,91,15,15,15,15,
+  15,63,111,79,47,47,15,15,15,15,47,139,132,0,0,0,91,141,130,0,0,0,0,0,0,0,0,0,0,0,1,12,
   15,15,15,15,15,15,15,15,15,15,15,15,15,31,79,127,138,129,8,15,79,141,129,0,0,0,0,0,0,0,0,0,
-  128,91,15,15,15,15,15,63,111,79,47,47,15,15,15,15,47,139,132,0,0,0,91,141,130,0,0,0,0,0,0,0,
-  0,0,0,129,139,111,31,15,15,15,38,134,138,140,125,15,15,15,15,15,1,0,0,0,0,129,129,0,0,0,0,0,
-  0,0,0,0,0,0,0,128,136,143,95,31,13,0,0,0,0,2,15,15,15,15,15,7,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,130,137,143,104,0,0,0,0,2,15,15,15,31,63,109,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,129,0,0,0,0,98,111,127,143,142,139,135,128,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,133,132,130,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,201,238,156,4,0,0,0,48,235,238,238,238,190,3,0,0,
-  227,222,56,34,131,237,62,0,48,238,26,0,0,0,161,238,3,176,174,0,0,0,0,0,234,11,228,29,0,0,0,0,
-  0,209,78,233,8,0,64,170,4,0,128,158,236,3,0,228,238,78,0,48,206,238,2,0,234,238,174,0,32,238,238,2,
-  0,234,238,174,0,32,238,236,3,0,228,238,78,0,48,206,233,8,0,64,170,4,0,128,158,228,29,0,0,0,0,0,
-  209,78,176,174,0,0,0,0,0,234,11,48,238,26,0,0,0,161,238,3,0,227,222,56,34,131,237,62,0,0,48,235,
-  238,238,238,190,3,0,0,0,64,201,238,156,4,0,0,0,0,0,0,0,0,0,0,0,0,0,129,132,133,133,132,129,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,127,111,111,127,138,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,7,15,15,15,15,7,0,0,0,0,128,0,0,0,
-  0,0,0,0,0,0,0,0,132,142,67,0,0,129,88,15,15,15,15,88,129,0,0,67,142,132,0,0,0,0,0,0,
-  0,0,0,133,143,47,12,131,138,143,111,15,15,15,15,111,143,138,131,12,47,143,133,0,0,0,0,0,0,0,132,143,
-  47,15,15,79,79,31,15,15,15,15,15,15,31,79,79,15,15,47,143,132,0,0,0,0,0,128,142,47,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,47,142,128,0,0,0,0,0,67,12,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,12,67,0,0,0,0,0,0,0,131,79,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,79,131,0,0,0,0,0,0,0,0,138,79,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,79,138,0,0,0,0,0,0,0,129,143,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,143,129,
-  0,0,0,129,138,7,88,111,15,15,15,15,15,15,15,8,2,2,8,15,15,15,15,15,15,15,111,88,7,138,129,132,
-  127,15,15,15,15,15,15,15,15,15,8,0,0,0,0,8,15,15,15,15,15,15,15,15,15,127,132,133,111,15,15,15,
-  15,15,15,15,15,15,2,0,0,0,0,2,15,15,15,15,15,15,15,15,15,111,133,133,111,15,15,15,15,15,15,15,
-  15,15,2,0,0,0,0,2,15,15,15,15,15,15,15,15,15,111,133,132,127,15,15,15,15,15,15,15,15,15,8,0,
-  0,0,0,8,15,15,15,15,15,15,15,15,15,127,132,129,138,7,88,111,15,15,15,15,15,15,15,8,2,2,8,15,
-  15,15,15,15,15,15,111,88,7,138,129,0,0,0,129,143,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,31,143,129,0,0,0,0,0,0,0,138,79,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,138,0,
-  0,0,0,0,0,0,0,131,79,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,131,0,0,0,0,0,
-  0,0,67,12,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,12,67,0,0,0,0,0,128,142,47,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,47,142,128,0,0,0,0,0,132,143,47,15,15,79,
-  79,31,15,15,15,15,15,15,31,79,79,15,15,47,143,132,0,0,0,0,0,0,0,133,143,47,12,131,138,143,111,15,
-  15,15,15,111,143,138,131,12,47,143,133,0,0,0,0,0,0,0,0,0,132,142,67,0,0,129,88,15,15,15,15,88,
-  129,0,0,67,142,132,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,7,15,15,15,15,7,0,0,0,0,
-  128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,127,111,111,127,138,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,132,133,133,132,129,0,0,0,0,0,0,0,0,0,0,0,0,
-  16,183,204,123,1,0,0,212,222,170,237,77,0,64,222,4,0,64,237,4,209,29,0,0,0,209,29,231,4,0,17,0,
-  64,126,219,0,112,238,7,0,189,172,0,225,238,30,0,202,172,0,225,238,30,0,202,219,0,112,238,7,0,189,231,4,
-  0,17,0,64,126,209,29,0,0,0,209,29,64,222,4,0,64,237,4,0,212,222,170,237,77,0,0,16,183,204,123,1,
-  0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,143,0,0,0,0,0,0,0,0,0,0,0,0,0,207,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,255,1,0,0,0,0,0,0,0,0,0,0,0,0,255,5,0,0,0,0,0,0,0,0,0,0,0,0,255,
-  9,0,0,0,0,0,0,0,0,0,0,0,0,255,13,0,0,0,0,0,0,0,0,0,0,0,0,255,31,0,0,0,
-  0,0,0,0,0,0,0,0,0,255,63,0,0,0,0,0,0,0,0,0,0,0,0,223,3,0,0,0,0,0,0,0,
-  0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,120,70,1,0,0,0,0,0,0,0,0,0,0,
-  0,222,172,105,1,0,0,0,0,0,0,0,0,0,0,255,255,190,73,0,0,0,0,0,0,0,0,0,0,255,255,255,
-  174,6,0,0,0,0,0,0,0,0,0,185,254,255,239,106,0,0,0,0,0,0,0,0,0,0,96,253,255,174,4,0,
-  0,0,0,0,0,0,0,0,0,161,255,239,25,0,0,0,0,0,0,0,0,0,0,0,250,255,125,0,0,0,0,0,
-  0,0,0,0,0,0,209,255,255,158,4,0,0,0,0,0,0,0,0,0,96,255,255,255,239,90,0,0,0,0,0,0,
-  0,0,0,254,255,255,255,255,175,21,0,0,0,0,0,0,0,251,239,255,255,255,255,255,107,2,0,0,0,0,0,249,
-  239,252,255,255,255,255,255,191,39,0,0,0,65,102,20,0,0,0,0,0,146,255,255,255,41,0,0,0,80,254,255,255,
-  255,239,5,0,0,245,255,255,255,255,255,95,0,32,254,255,255,255,255,255,239,2,144,255,255,255,255,255,255,255,9,241,
-  255,255,255,255,255,255,255,31,244,255,255,255,255,255,255,255,79,246,255,255,255,255,255,255,255,111,246,255,255,255,255,255,
-  255,255,111,244,255,255,255,255,255,255,255,79,241,255,255,255,255,255,255,255,31,144,255,255,255,255,255,255,255,9,32,254,
-  255,255,255,255,255,239,2,0,245,255,255,255,255,255,95,0,0,80,254,255,255,255,239,5,0,0,0,146,255,255,255,41,
-  0,0,0,0,0,65,102,20,0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,0,0,52,0,0,0,0,0,
-  0,0,0,0,0,225,4,0,0,0,0,0,0,0,80,14,0,0,0,0,0,0,0,0,0,0,208,78,0,0,0,0,
-  0,0,0,246,11,0,0,0,0,0,0,0,0,0,0,144,239,3,0,0,0,0,0,112,255,7,0,0,0,0,0,0,
-  0,0,0,0,96,255,46,0,0,0,0,0,248,255,3,0,0,0,0,0,0,0,0,0,0,48,255,239,2,0,0,0,
-  160,255,239,0,0,0,0,0,0,0,0,0,0,0,0,254,255,46,0,0,16,250,255,175,0,0,0,0,0,0,0,0,
-  0,0,0,0,251,255,79,0,0,177,255,255,111,0,0,0,0,0,0,0,0,0,0,0,0,248,255,12,50,84,252,255,
-  255,47,0,0,0,0,0,0,0,0,0,0,0,0,245,255,137,203,237,255,222,154,7,0,0,0,0,0,0,0,0,0,
-  0,0,0,241,239,236,255,255,255,190,23,0,0,0,0,0,0,0,0,0,0,0,0,0,208,255,255,255,204,255,255,141,
-  1,0,0,0,0,0,0,0,0,0,0,0,0,176,255,223,5,0,80,253,223,7,0,0,0,0,0,0,0,0,0,0,
-  0,0,195,255,27,0,0,0,177,255,60,0,0,0,0,0,0,0,0,0,0,0,0,232,223,1,0,0,0,16,253,223,
-  56,0,0,0,0,0,0,0,0,0,82,32,251,95,0,0,0,0,0,245,255,255,141,4,0,0,0,0,0,98,234,255,
-  55,252,15,0,0,0,0,0,240,255,255,255,239,73,0,0,98,217,255,255,255,127,253,12,0,0,0,0,0,192,223,254,
-  255,255,255,174,21,81,234,255,255,255,239,253,12,0,0,0,0,0,192,223,247,255,255,255,157,38,0,0,148,254,255,255,
-  255,15,0,0,0,0,0,240,207,115,255,174,38,0,0,0,0,0,64,216,255,255,95,0,0,0,0,0,245,191,2,37,
-  0,0,0,0,0,0,0,0,0,131,253,223,1,0,0,0,16,253,142,0,0,0,0,0,0,0,0,0,0,0,0,195,
-  255,27,0,0,0,177,255,60,0,0,0,0,0,0,0,0,0,0,0,0,112,253,223,5,0,80,253,255,11,0,0,0,
-  0,0,0,0,0,0,0,0,0,16,216,255,255,204,255,255,255,13,0,0,0,0,0,0,0,0,0,0,0,0,0,113,
-  235,255,255,255,206,254,31,0,0,0,0,0,0,0,0,0,0,0,0,112,169,237,255,222,188,152,255,95,0,0,0,0,
-  0,0,0,0,0,0,0,0,242,255,255,207,69,35,192,255,143,0,0,0,0,0,0,0,0,0,0,0,0,246,255,255,
-  27,0,0,244,255,191,0,0,0,0,0,0,0,0,0,0,0,0,250,255,175,1,0,0,226,255,239,0,0,0,0,0,
-  0,0,0,0,0,0,0,254,255,10,0,0,0,32,254,255,3,0,0,0,0,0,0,0,0,0,0,48,255,143,0,0,
-  0,0,0,226,255,6,0,0,0,0,0,0,0,0,0,0,112,255,7,0,0,0,0,0,48,254,9,0,0,0,0,0,
-  0,0,0,0,0,176,111,0,0,0,0,0,0,0,228,13,0,0,0,0,0,0,0,0,0,0,224,5,0,0,0,0,
-  0,0,0,64,30,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,
-  0,0,51,0,0,0,0,32,250,255,175,2,0,0,228,255,255,255,78,0,32,254,255,255,255,239,2,160,255,255,255,255,
-  255,10,240,255,255,255,255,255,15,243,255,255,255,255,255,63,243,255,255,255,255,255,63,240,255,255,255,255,255,15,160,255,
-  255,255,255,255,10,32,254,255,255,255,239,2,0,228,255,255,255,78,0,0,32,250,255,175,2,0,0,0,0,51,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,163,166,187,185,168,183,165,165,164,163,163,162,177,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  162,165,184,188,158,111,63,63,63,79,95,111,110,126,142,157,157,189,188,187,185,185,183,166,165,165,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,161,164,167,187,173,127,79,31,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,31,31,47,63,79,95,95,142,185,162,0,0,0,0,0,0,0,0,0,0,0,0,0,0,160,163,166,186,
-  173,142,95,47,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,173,
-  166,160,0,0,0,0,0,0,0,0,0,0,0,166,188,158,111,63,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,111,187,163,0,0,0,0,0,0,0,0,0,0,169,
-  95,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,47,142,168,161,0,0,0,0,0,0,0,161,189,31,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,95,172,165,160,0,0,0,
-  0,0,164,158,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,31,127,186,162,0,0,0,0,168,95,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  63,158,166,0,0,160,188,47,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,174,164,0,0,163,174,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,79,187,160,0,0,166,127,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,143,166,0,0,0,187,63,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,47,189,177,0,0,162,173,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,127,167,0,0,0,165,143,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,31,173,163,0,0,0,169,79,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,95,170,0,0,
-  0,161,189,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,158,164,0,0,0,164,174,95,95,95,95,95,95,95,95,95,95,95,
-  95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,95,127,
-  187,160,0,0,0,163,167,167,167,168,127,127,127,127,127,139,167,125,127,127,127,127,126,167,139,127,127,127,127,127,168,168,
-  127,127,127,127,127,139,167,125,127,127,127,127,126,167,139,127,127,127,63,15,3,0,0,0,0,0,0,0,10,15,15,15,
-  15,1,0,5,15,15,15,15,7,0,1,15,15,15,15,10,0,0,10,15,15,15,15,1,0,5,15,15,15,15,7,0,
-  1,15,15,15,15,10,0,0,0,0,0,0,0,0,4,15,15,15,9,0,0,0,13,15,15,14,1,0,0,9,15,15,
-  15,4,0,0,4,15,15,15,9,0,0,0,13,15,15,14,1,0,0,9,15,15,15,4,0,0,0,0,0,0,0,0,
-  0,11,15,15,2,0,0,0,6,15,15,8,0,0,0,2,15,15,11,0,0,0,0,11,15,15,2,0,0,0,6,15,
-  15,8,0,0,0,2,15,15,11,0,0,0,0,0,0,0,0,0,0,4,15,10,0,0,0,0,0,14,15,1,0,0,
-  0,0,10,15,4,0,0,0,0,4,15,10,0,0,0,0,0,14,15,1,0,0,0,0,10,15,4,0,0,0,0,0,
-  0,0,0,0,0,0,12,3,0,0,0,0,0,7,8,0,0,0,0,0,3,12,0,0,0,0,0,0,12,3,0,0,
-  0,0,0,7,8,0,0,0,0,0,3,12,0,0,0,0,0,0,0,0,0,0,0,0,2,0,0,0,0,0,0,0,
-  1,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,
-  0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,7,8,0,0,0,
-  0,0,3,12,0,0,0,0,0,0,12,3,0,0,0,0,0,7,8,0,0,0,0,0,3,12,0,0,0,0,0,0,
-  12,3,0,0,0,0,0,0,0,0,0,0,13,14,1,0,0,0,0,10,15,4,0,0,0,0,4,15,10,0,0,0,
-  0,0,13,14,1,0,0,0,0,10,15,4,0,0,0,0,4,15,10,0,0,0,0,0,0,0,0,0,5,15,15,7,
-  0,0,0,2,15,15,11,0,0,0,0,11,15,15,2,0,0,0,5,15,15,7,0,0,0,2,15,15,11,0,0,0,
-  0,11,15,15,2,0,0,0,0,0,0,0,0,12,15,15,14,0,0,0,8,15,15,15,3,0,0,3,15,15,15,8,
-  0,0,0,12,15,15,14,0,0,0,8,15,15,15,3,0,0,3,15,15,15,8,0,0,0,0,0,0,0,4,15,15,
-  15,15,6,0,1,15,15,15,15,10,0,0,10,15,15,15,15,1,0,4,15,15,15,15,6,0,1,15,15,15,15,10,
-  0,0,10,15,15,15,15,1,0,161,166,165,165,165,108,95,95,95,95,109,165,121,95,95,95,95,95,166,166,95,95,95,
-  95,95,121,165,108,95,95,95,95,109,165,121,95,95,95,95,95,166,166,95,95,95,95,95,122,163,162,189,143,127,127,127,
-  127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,127,
-  127,127,127,127,127,127,127,127,127,175,166,0,168,127,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,173,162,0,163,173,31,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,79,170,0,0,0,169,111,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,127,166,0,0,0,
-  163,174,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,173,162,0,0,0,0,170,95,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,170,0,0,
-  0,0,0,164,174,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,127,166,0,0,0,0,0,160,171,95,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,173,162,
-  0,0,0,0,0,0,165,158,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,170,0,0,0,0,0,0,0,161,188,79,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,127,
-  166,0,0,0,0,0,0,0,0,166,143,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,173,162,0,0,0,0,0,0,0,0,161,188,63,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  95,170,0,0,0,0,0,0,0,0,0,0,167,143,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,31,79,142,173,169,163,0,0,0,0,0,0,0,0,0,0,162,189,47,
-  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,47,95,142,188,168,
-  164,161,0,0,0,0,0,0,0,0,0,0,0,0,0,168,158,127,95,79,47,31,15,15,15,15,15,15,15,15,15,15,
-  15,15,15,15,15,15,15,15,15,63,111,157,171,167,163,160,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  161,163,164,166,168,170,188,173,142,127,95,79,47,31,15,15,15,15,15,15,15,15,31,79,126,173,170,166,162,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,163,164,166,168,170,188,173,
-  142,126,111,79,63,95,142,188,168,164,161,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,177,162,164,166,168,171,167,163,160,0,0,0,0,0,0,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,182,107,0,176,255,255,11,246,255,255,111,251,255,255,191,251,255,255,191,
-  246,255,255,111,176,255,255,11,0,182,107,0,0,0,0,80,89,85,85,169,0,0,0,18,255,255,255,156,0,0,0,101,
-  136,136,136,161,0,0,32,129,136,136,248,9,0,0,80,60,51,51,195,10,0,0,16,51,51,51,19,0,0,0,197,51,
-  51,51,92,0,0,0,49,51,51,51,33,0,0,160,54,51,51,99,5,0,0,144,51,51,51,19,2,0,0,106,51,51,
-  51,150,0,0,0,55,51,51,51,161,0,0,32,59,51,51,243,9,0,0,224,51,51,51,200,10,0,0,189,51,51,51,
-  159,0,0,0,52,51,51,131,172,0,0,0,52,51,51,131,172,0,0,0,189,51,51,51,159,0,0,0,224,51,51,51,
-  24,10,0,0,32,59,51,51,243,9,0,0,0,55,51,51,51,33,0,0,0,186,51,51,51,86,0,0,0,112,51,51,
-  51,19,2,0,0,160,54,51,51,99,5,0,0,0,49,51,51,51,33,0,0,0,197,51,51,51,92,0,0,0,18,51,
-  51,51,19,0,0,0,80,60,51,51,195,10,0,0,32,129,136,136,248,9,0,0,0,101,136,136,136,161,0,0,0,18,
-  255,255,255,156,0,0,0,80,89,85,85,169,184,187,187,187,139,0,0,0,0,248,102,102,102,81,0,0,0,0,176,198,
-  204,204,188,0,0,0,0,128,193,204,204,28,8,0,0,0,0,63,51,51,211,11,0,0,0,0,229,51,51,51,129,0,
-  0,0,0,240,51,51,51,189,0,0,0,0,80,62,51,51,163,8,0,0,0,128,63,51,51,211,5,0,0,0,0,229,
-  51,51,51,138,0,0,0,0,24,51,51,51,83,0,0,0,0,176,54,51,51,227,0,0,0,0,128,209,51,51,51,7,
-  0,0,0,0,203,51,51,51,9,0,0,0,0,21,61,51,51,67,0,0,0,0,240,60,51,51,147,0,0,0,0,240,
-  60,51,51,147,2,0,0,0,24,61,51,51,67,0,0,0,0,107,51,51,51,9,0,0,0,128,209,51,51,51,7,0,
-  0,0,176,54,51,51,227,8,0,0,0,248,51,51,51,83,0,0,0,0,229,51,51,51,138,0,0,0,128,63,51,51,
-  211,5,0,0,0,80,62,51,51,163,8,0,0,0,240,51,51,51,189,0,0,0,0,229,51,51,51,129,0,0,0,0,
-  63,51,51,211,11,0,0,0,128,193,204,204,28,8,0,0,0,176,198,204,204,188,0,0,0,0,248,102,102,102,81,0,
-  0,0,0,184,187,187,187,139,0,0,0,0,189,187,187,187,102,187,187,187,219,0,0,0,0,251,85,85,85,17,89,85,
-  85,185,0,0,0,0,20,85,85,85,25,95,85,85,245,4,0,0,0,176,85,85,85,21,81,85,85,85,11,0,0,0,
-  64,57,51,51,147,193,51,51,195,65,0,0,0,0,59,51,51,51,145,51,51,51,105,0,0,0,0,157,51,51,51,25,
-  60,51,51,19,4,0,0,0,176,51,51,51,19,63,51,51,195,6,0,0,0,208,57,51,51,147,193,51,51,51,15,0,
-  0,0,0,193,51,51,51,241,51,51,51,220,0,0,0,0,150,51,51,51,28,60,51,51,227,0,0,0,0,20,60,51,
-  51,243,63,51,51,195,13,0,0,0,96,57,51,51,195,193,51,51,51,7,0,0,0,64,193,51,51,51,159,51,51,51,
-  131,0,0,0,0,150,51,51,51,28,53,51,51,163,0,0,0,0,244,60,51,51,147,201,51,51,51,2,0,0,0,20,
-  60,51,51,147,201,51,51,51,2,0,0,0,150,51,51,51,19,53,51,51,163,0,0,0,64,193,51,51,51,249,51,51,
-  51,131,0,0,0,96,57,51,51,195,193,51,51,51,7,0,0,0,16,60,51,51,243,63,51,51,51,13,0,0,0,150,
-  51,51,51,28,60,51,51,227,0,0,0,0,193,51,51,51,241,51,51,51,220,0,0,0,208,57,51,51,147,193,51,51,
-  51,15,0,0,0,176,60,51,51,19,63,51,51,195,6,0,0,0,157,51,51,51,25,60,51,51,19,4,0,0,0,59,
-  51,51,51,145,51,51,51,105,0,0,0,64,57,51,51,147,193,51,51,195,65,0,0,0,176,85,85,85,21,81,85,85,
-  85,11,0,0,0,20,85,85,85,25,95,85,85,245,4,0,0,0,251,85,85,85,17,89,85,85,185,0,0,0,0,189,
-  187,187,187,102,187,187,187,219,0,0,0,0,164,170,170,170,164,170,170,170,74,170,170,170,74,0,0,0,0,97,102,102,
-  102,17,102,102,102,27,107,102,102,22,14,0,0,0,180,153,153,153,27,150,153,153,25,145,153,153,105,4,0,0,0,16,
-  153,153,153,22,155,153,153,185,97,153,153,153,129,0,0,0,64,60,51,51,19,49,51,51,195,177,51,51,51,70,0,0,
-  0,128,59,51,51,99,193,51,51,51,27,51,51,51,19,0,0,0,0,196,51,51,51,17,51,51,51,28,59,51,51,179,
-  4,0,0,0,184,51,51,51,22,54,51,51,179,49,51,51,51,15,0,0,0,160,60,51,51,19,49,51,51,195,177,51,
-  51,51,235,0,0,0,224,59,51,51,195,97,51,51,51,27,51,51,51,243,0,0,0,0,207,51,51,51,27,51,51,51,
-  19,54,51,51,99,14,0,0,0,190,51,51,51,28,54,51,51,99,49,51,51,51,7,0,0,0,240,57,51,51,179,59,
-  51,51,51,97,51,51,51,140,0,0,0,64,59,51,51,51,145,51,51,51,28,57,51,51,211,0,0,0,128,145,51,51,
-  51,182,51,51,51,179,54,51,51,195,0,0,0,0,100,51,51,51,19,57,51,51,195,145,51,51,51,5,0,0,0,100,
-  51,51,51,19,57,51,51,195,145,51,51,51,5,0,0,0,145,51,51,51,188,57,51,51,179,54,51,51,51,2,0,0,
-  64,59,51,51,51,145,51,51,51,28,57,51,51,211,0,0,0,240,57,51,51,179,59,51,51,51,97,51,51,51,140,0,
-  0,0,190,51,51,51,28,54,51,51,99,49,51,51,51,7,0,0,0,202,51,51,51,27,51,51,51,19,59,51,51,195,
-  14,0,0,224,59,51,51,195,97,51,51,51,27,51,51,51,243,0,0,0,160,60,51,51,19,49,51,51,195,177,51,51,
-  51,230,0,0,0,24,51,51,51,22,54,51,51,179,193,51,51,51,15,0,0,0,196,51,51,51,17,51,51,51,28,59,
-  51,51,179,4,0,0,128,59,51,51,99,193,51,51,51,27,51,51,51,19,0,0,0,64,60,51,51,19,49,51,51,195,
-  177,51,51,51,70,0,0,0,16,153,153,153,22,155,153,153,185,97,153,153,153,129,0,0,0,180,153,153,153,27,150,153,
-  153,25,145,153,153,105,4,0,0,0,97,102,102,102,17,102,102,102,27,107,102,102,22,14,0,0,0,164,170,170,170,164,
-  170,170,170,74,170,170,170,74,0,0,0,0,0,0,0,227,3,0,0,0,0,0,96,17,10,0,0,0,0,0,30,17,
-  10,0,0,0,0,48,17,91,41,215,0,0,0,96,81,85,197,204,13,0,0,16,91,85,207,204,12,0,0,30,85,85,
-  196,204,220,0,0,186,85,133,204,204,124,0,0,81,85,245,204,204,204,2,224,81,85,69,204,204,204,13,96,91,85,69,
-  204,204,204,7,160,91,85,200,204,204,204,7,160,91,85,200,204,204,204,12,19,187,187,207,204,204,204,44,30,187,187,196,
-  204,204,204,220,30,187,187,196,204,204,204,220,182,187,91,196,204,204,204,124,182,187,91,196,204,204,204,124,186,187,139,196,
-  204,204,204,124,186,187,139,204,204,204,204,124,186,187,139,204,204,204,204,204,186,187,139,204,204,204,204,204,177,187,139,204,
-  204,204,204,204,177,187,139,204,204,204,204,204,177,187,139,204,204,204,204,204,177,187,139,204,204,204,204,204,177,187,139,204,
-  204,204,204,204,177,187,139,204,204,204,204,204,177,187,139,204,204,204,204,204,177,187,139,204,204,204,204,204,186,187,139,204,
-  204,204,204,204,186,187,139,204,204,204,204,204,186,187,139,204,204,204,204,124,186,187,139,196,204,204,204,124,182,187,91,196,
-  204,204,204,124,182,187,91,196,204,204,204,124,30,187,187,196,204,204,204,220,30,187,187,196,204,204,204,220,19,187,187,207,
-  204,204,204,44,160,91,85,200,204,204,204,12,160,91,85,200,204,204,204,7,96,91,85,69,204,204,204,7,224,81,85,69,
-  204,204,204,13,0,81,85,245,204,204,204,2,0,186,85,133,204,204,124,0,0,30,85,85,196,204,220,0,0,16,91,85,
-  207,204,12,0,0,96,81,85,197,204,13,0,0,48,17,91,41,215,0,0,0,0,30,17,10,0,0,0,0,0,96,17,
-  10,0,0,0,0,0,0,227,3,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,182,97,0,0,
-  0,0,0,0,0,0,0,190,225,0,0,0,0,0,0,0,0,0,22,97,0,0,0,0,0,0,0,0,0,192,12,0,
-  0,0,0,0,0,48,85,9,0,130,2,0,0,0,0,0,83,85,5,128,68,36,0,0,0,0,0,89,181,5,66,68,
-  68,2,0,0,0,48,181,17,10,68,68,68,8,0,0,0,144,21,17,138,68,68,68,36,0,0,0,80,27,17,74,68,
-  68,68,132,0,0,0,83,17,17,74,68,119,116,215,0,0,0,185,17,17,77,68,119,116,119,2,0,0,21,17,17,68,
-  68,68,68,68,8,0,48,21,17,225,68,68,68,68,68,8,0,48,21,17,161,68,68,68,68,68,4,0,144,27,17,113,
-  68,68,68,68,68,36,0,144,27,17,209,68,68,119,116,119,36,0,80,187,187,75,68,68,119,116,119,132,0,80,187,187,
-  75,68,68,119,116,119,132,0,83,187,187,75,68,68,68,68,17,135,0,83,187,187,79,68,68,68,116,187,65,0,83,187,
-  187,79,68,68,68,116,17,65,0,185,187,187,79,68,68,119,116,119,68,0,185,187,187,79,68,68,119,116,119,68,2,185,
-  187,187,71,68,68,119,116,119,68,2,185,187,187,71,68,68,68,68,68,68,2,185,187,187,71,68,68,68,68,68,68,2,
-  185,187,187,71,68,68,68,68,68,68,2,185,187,187,71,68,68,68,68,68,68,8,185,187,187,71,68,68,119,116,119,68,
-  8,185,187,187,71,68,68,119,116,119,68,8,185,187,187,71,68,68,68,68,68,68,8,185,187,187,71,68,68,68,68,68,
-  68,2,185,187,187,71,68,68,68,68,68,68,2,185,187,187,71,68,68,68,68,68,68,2,185,187,187,71,68,68,119,116,
-  119,68,2,185,187,187,79,68,68,119,116,119,68,2,185,187,187,79,68,68,119,116,119,68,0,83,187,187,79,68,68,68,
-  116,187,65,0,83,187,187,79,68,68,68,116,187,65,0,83,187,187,75,68,68,68,68,17,135,0,80,187,187,75,68,68,
-  119,116,119,132,0,80,187,187,75,68,68,119,116,119,132,0,144,27,17,209,68,68,119,116,119,36,0,144,27,17,113,68,
-  68,68,68,68,36,0,48,21,17,161,68,68,68,68,68,4,0,48,21,17,225,68,68,68,68,68,8,0,0,21,17,17,
-  68,68,68,68,68,8,0,0,185,17,17,77,68,119,116,119,2,0,0,83,17,17,74,68,119,116,215,0,0,0,80,27,
-  17,74,68,68,68,132,0,0,0,144,21,17,138,68,68,68,36,0,0,0,48,181,17,10,68,68,68,8,0,0,0,0,
-  89,181,5,66,68,68,2,0,0,0,0,83,85,5,128,68,36,0,0,0,0,0,48,85,9,0,130,2,0,0,0,0,
-  0,0,0,0,192,12,0,0,0,0,0,0,0,0,0,182,97,0,0,0,0,0,0,0,0,0,94,225,0,0,0,0,
-  0,0,0,0,0,22,97,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,227,3,0,0,0,0,0,
-  96,17,13,0,0,0,0,0,30,17,13,0,0,0,0,48,17,170,41,183,0,0,0,96,161,255,197,204,11,0,0,16,
-  250,255,200,204,12,0,0,30,255,255,196,204,188,0,0,173,255,143,204,204,124,0,0,161,170,138,204,204,204,2,224,161,
-  170,74,204,204,204,11,96,161,170,79,204,204,204,7,208,170,170,200,204,204,204,7,208,170,170,200,204,204,204,12,19,170,
-  170,200,204,204,204,44,30,170,170,196,204,204,204,188,30,170,170,196,204,204,204,188,22,17,161,196,204,204,204,124,22,17,
-  241,196,204,204,204,124,29,17,241,196,204,204,204,124,29,17,241,196,204,204,204,124,29,17,241,196,204,204,204,204,29,17,
-  129,204,204,204,204,204,17,17,129,204,204,204,204,204,17,17,129,204,204,204,204,204,17,17,129,204,204,204,204,204,17,17,
-  129,204,204,204,204,204,17,17,129,204,204,204,204,204,17,17,129,204,204,204,204,204,17,17,129,204,204,204,204,204,17,17,
-  129,204,204,204,204,204,29,17,129,204,204,204,204,204,29,17,241,196,204,204,204,204,29,17,241,196,204,204,204,124,29,17,
-  241,196,204,204,204,124,22,17,241,196,204,204,204,124,22,17,161,196,204,204,204,124,30,170,170,196,204,204,204,188,30,170,
-  170,196,204,204,204,188,19,170,170,200,204,204,204,44,208,170,170,200,204,204,204,12,208,170,170,200,204,204,204,7,96,161,
-  170,79,204,204,204,7,224,161,170,74,204,204,204,11,0,161,170,138,204,204,204,2,0,173,255,143,204,204,124,0,0,30,
-  255,255,196,204,188,0,0,16,250,255,200,204,12,0,0,96,161,255,197,204,11,0,0,48,17,170,41,183,0,0,0,0,
-  30,17,13,0,0,0,0,0,96,17,13,0,0,0,0,0,0,227,3,0,0,0,0,0,0,0,0,176,11,0,0,0,
-  0,0,0,0,0,0,139,184,0,0,0,0,0,0,0,0,0,133,88,0,0,0,0,0,0,0,0,0,139,184,0,0,
-  0,0,0,0,0,0,0,48,3,0,0,0,0,0,0,48,133,11,0,210,2,0,0,0,0,0,131,136,5,208,68,36,
-  0,0,0,0,0,133,136,5,77,68,68,2,0,0,0,48,136,17,12,68,68,68,15,0,0,0,80,24,17,220,68,68,
-  68,36,0,0,0,128,24,17,252,68,238,228,110,0,0,0,139,17,17,71,68,17,158,161,0,0,0,133,17,17,74,68,
-  17,158,145,2,0,0,133,17,17,79,68,238,228,238,13,0,48,136,136,200,68,68,68,68,68,15,0,176,136,136,120,68,
-  68,68,68,68,4,0,176,136,136,152,68,68,68,68,68,36,0,80,136,136,168,68,68,153,158,233,212,0,80,136,136,232,
-  68,68,17,158,145,212,0,128,136,136,72,68,68,153,158,153,244,0,131,136,136,72,68,68,68,228,136,241,0,131,136,136,
-  72,68,68,68,148,136,232,0,131,136,136,65,68,68,68,148,136,72,0,139,136,136,65,68,68,153,158,17,78,0,139,136,
-  136,65,68,68,17,158,145,68,2,139,136,136,65,68,68,153,158,233,68,2,133,136,136,65,68,68,68,68,68,68,13,133,
-  136,136,65,68,68,68,68,68,68,13,133,136,136,73,68,68,68,68,68,68,13,133,136,136,73,68,68,238,228,238,68,13,
-  133,136,136,73,68,68,17,158,145,68,13,133,136,136,73,68,68,17,158,145,68,13,133,136,136,73,68,68,238,228,238,68,
-  13,133,136,136,73,68,68,68,68,68,68,13,133,136,136,65,68,68,68,68,68,68,13,133,136,136,65,68,68,68,68,68,
-  68,13,139,136,136,65,68,68,153,158,233,68,2,139,136,136,65,68,68,17,158,145,68,2,139,136,136,65,68,68,153,158,
-  17,78,0,131,136,136,65,68,68,68,148,136,72,0,131,136,136,72,68,68,68,148,136,232,0,131,136,136,72,68,68,68,
-  228,136,241,0,128,136,136,72,68,68,153,158,153,244,0,80,136,136,232,68,68,17,158,145,212,0,80,136,136,168,68,68,
-  153,158,233,212,0,176,136,136,152,68,68,68,68,68,36,0,176,136,136,120,68,68,68,68,68,4,0,48,136,136,200,68,
-  68,68,68,68,15,0,0,133,17,17,79,68,238,228,238,13,0,0,133,17,17,74,68,17,158,145,2,0,0,139,17,17,
-  71,68,17,158,161,0,0,0,128,24,17,252,68,238,228,110,0,0,0,80,24,17,220,68,68,68,36,0,0,0,48,136,
-  17,12,68,68,68,15,0,0,0,0,133,136,5,77,68,68,2,0,0,0,0,131,136,5,208,68,36,0,0,0,0,0,
-  48,133,11,0,210,2,0,0,0,0,0,0,0,0,48,3,0,0,0,0,0,0,0,0,0,139,184,0,0,0,0,0,
-  0,0,0,0,133,88,0,0,0,0,0,0,0,0,0,139,184,0,0,0,0,0,0,0,0,0,176,11,0,0,0,0,
-  0,0,0,227,3,0,0,0,0,0,96,17,11,0,0,0,0,0,30,17,11,0,0,0,0,48,17,170,40,215,0,0,
-  0,96,81,85,207,204,13,0,0,16,90,85,196,204,12,0,0,30,85,85,196,204,220,0,0,171,85,149,204,204,124,0,
-  0,81,85,69,204,204,204,2,224,81,85,69,204,204,204,13,96,90,85,197,204,204,204,7,176,90,85,201,204,204,204,7,
-  176,90,85,201,204,204,204,12,19,85,85,196,204,204,204,44,30,170,170,196,204,204,204,220,30,170,90,196,204,204,204,220,
-  166,170,90,196,204,204,204,124,166,170,90,204,204,204,204,124,171,170,154,204,204,204,204,124,171,170,154,204,204,204,204,124,
-  171,170,154,204,204,204,204,204,171,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,
-  161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,
-  161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,171,170,154,204,204,204,204,204,171,170,154,204,204,204,204,204,
-  171,170,154,204,204,204,204,124,171,170,154,204,204,204,204,124,166,170,90,204,204,204,204,124,166,170,90,196,204,204,204,124,
-  30,170,90,196,204,204,204,220,30,170,170,196,204,204,204,220,19,85,85,196,204,204,204,44,176,90,85,201,204,204,204,12,
-  176,90,85,201,204,204,204,7,96,90,85,197,204,204,204,7,224,81,85,69,204,204,204,13,0,81,85,69,204,204,204,2,
-  0,171,85,149,204,204,124,0,0,30,85,85,196,204,220,0,0,16,90,85,196,204,12,0,0,96,81,85,207,204,13,0,
-  0,48,17,170,40,215,0,0,0,0,30,17,11,0,0,0,0,0,96,17,11,0,0,0,0,0,0,227,3,0,0,0,
-  0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,166,97,0,0,0,0,0,0,0,0,0,174,225,0,0,0,
-  0,0,0,0,0,0,22,97,0,0,0,0,0,0,0,0,0,176,11,0,0,0,0,0,0,48,245,8,0,114,2,0,
-  0,0,0,0,243,255,5,112,68,36,0,0,0,0,0,245,255,5,66,68,68,2,0,0,0,48,255,17,14,68,68,68,
-  7,0,0,0,128,31,17,126,68,68,68,36,0,0,0,240,26,17,78,68,68,68,116,0,0,0,243,17,17,76,68,153,
-  148,217,0,0,0,168,17,17,77,68,153,148,153,2,0,0,165,17,17,68,68,68,68,68,7,0,48,31,17,225,68,68,
-  68,68,68,7,0,48,31,17,193,68,68,68,68,68,4,0,128,26,17,145,68,68,68,68,68,36,0,80,26,17,209,68,
-  68,153,148,153,36,0,80,170,170,74,68,68,153,148,153,116,0,240,170,170,74,68,68,153,148,153,116,0,243,170,170,74,
-  68,68,68,68,17,121,0,243,170,170,65,68,68,68,148,170,65,0,243,170,170,65,68,68,68,148,17,65,0,248,170,170,
-  65,68,68,153,148,153,68,0,168,170,170,65,68,68,153,148,153,68,2,168,170,170,73,68,68,153,148,153,68,2,168,170,
-  170,73,68,68,68,68,68,68,2,168,170,170,73,68,68,68,68,68,68,2,168,170,170,73,68,68,68,68,68,68,2,168,
-  170,170,73,68,68,68,68,68,68,7,168,170,170,73,68,68,153,148,153,68,7,168,170,170,73,68,68,153,148,153,68,7,
-  168,170,170,73,68,68,68,68,68,68,7,168,170,170,73,68,68,68,68,68,68,2,168,170,170,73,68,68,68,68,68,68,
-  2,168,170,170,73,68,68,68,68,68,68,2,168,170,170,73,68,68,153,148,153,68,2,168,170,170,65,68,68,153,148,153,
-  68,2,248,170,170,65,68,68,153,148,153,68,0,243,170,170,65,68,68,68,148,170,65,0,243,170,170,65,68,68,68,148,
-  170,65,0,243,170,170,74,68,68,68,68,17,121,0,240,170,170,74,68,68,153,148,153,116,0,80,170,170,74,68,68,153,
-  148,153,116,0,80,26,17,209,68,68,153,148,153,36,0,128,26,17,145,68,68,68,68,68,36,0,48,31,17,193,68,68,
-  68,68,68,4,0,48,31,17,225,68,68,68,68,68,7,0,0,165,17,17,68,68,68,68,68,7,0,0,168,17,17,77,
-  68,153,148,153,2,0,0,243,17,17,76,68,153,148,217,0,0,0,240,26,17,78,68,68,68,116,0,0,0,128,31,17,
-  126,68,68,68,36,0,0,0,48,255,17,14,68,68,68,7,0,0,0,0,245,255,5,66,68,68,2,0,0,0,0,243,
-  255,5,112,68,36,0,0,0,0,0,48,245,8,0,114,2,0,0,0,0,0,0,0,0,176,11,0,0,0,0,0,0,
-  0,0,0,166,97,0,0,0,0,0,0,0,0,0,174,225,0,0,0,0,0,0,0,0,0,22,97,0,0,0,0,0,
-  0,0,0,0,96,6,0,0,0,0,0,0,0,227,3,0,0,0,0,0,96,17,11,0,0,0,0,0,30,17,11,0,
-  0,0,0,48,17,90,41,199,0,0,0,96,81,85,213,221,12,0,0,16,90,85,223,221,13,0,0,30,85,85,212,221,
-  205,0,0,171,85,133,221,221,125,0,0,81,85,245,221,221,221,2,224,81,85,69,221,221,221,12,96,90,85,69,221,221,
-  221,7,176,90,85,216,221,221,221,7,176,90,85,216,221,221,221,13,19,170,170,223,221,221,221,45,30,170,170,212,221,221,
-  221,205,30,170,170,212,221,221,221,205,166,170,90,212,221,221,221,125,166,170,90,212,221,221,221,125,171,170,138,212,221,221,
-  221,125,171,170,138,212,221,221,221,125,171,170,138,212,221,221,221,221,171,170,138,221,221,221,221,221,161,170,138,221,221,221,
-  221,221,161,170,138,221,221,221,221,221,161,170,138,221,221,221,221,221,161,170,138,221,221,221,221,221,161,170,138,221,221,221,
-  221,221,161,170,138,221,221,221,221,221,161,170,138,221,221,221,221,221,161,170,138,221,221,221,221,221,171,170,138,221,221,221,
-  221,221,171,170,138,212,221,221,221,221,171,170,138,212,221,221,221,125,171,170,138,212,221,221,221,125,166,170,90,212,221,221,
-  221,125,166,170,90,212,221,221,221,125,30,170,170,212,221,221,221,205,30,170,170,212,221,221,221,205,19,170,170,223,221,221,
-  221,45,176,90,85,216,221,221,221,13,176,90,85,216,221,221,221,7,96,90,85,69,221,221,221,7,224,81,85,69,221,221,
-  221,12,0,81,85,245,221,221,221,2,0,171,85,133,221,221,125,0,0,30,85,85,212,221,205,0,0,16,90,85,223,221,
-  13,0,0,96,81,85,213,221,12,0,0,48,17,90,41,199,0,0,0,0,30,17,11,0,0,0,0,0,96,17,11,0,
-  0,0,0,0,0,227,3,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,134,97,0,0,0,0,
-  0,0,0,0,0,142,225,0,0,0,0,0,0,0,0,0,22,97,0,0,0,0,0,0,0,0,0,192,12,0,0,0,
-  0,0,0,48,85,9,0,114,2,0,0,0,0,0,83,85,9,112,68,36,0,0,0,0,0,89,85,9,66,68,68,2,
-  0,0,0,48,85,17,11,68,68,68,7,0,0,0,144,21,17,123,68,68,68,36,0,0,0,80,24,17,75,68,68,68,
-  116,0,0,0,83,17,17,75,68,255,164,223,0,0,0,137,17,17,77,68,255,164,175,2,0,0,21,17,17,68,68,68,
-  68,68,7,0,48,21,17,225,68,68,68,68,68,7,0,48,21,17,177,68,68,68,68,68,4,0,144,24,17,241,68,68,
-  68,68,68,36,0,144,24,17,209,68,68,255,164,175,36,0,80,136,136,72,68,68,255,164,175,116,0,80,136,136,72,68,
-  68,170,164,170,116,0,83,136,136,72,68,68,68,68,17,127,0,83,136,136,65,68,68,68,244,136,65,0,83,136,136,65,
-  68,68,68,164,17,65,0,131,136,136,79,68,68,170,164,255,68,0,137,136,136,79,68,68,255,164,175,68,2,137,136,136,
-  79,68,68,255,164,175,68,2,137,136,136,79,68,68,68,68,68,68,2,137,136,136,79,68,68,68,68,68,68,2,137,136,
-  136,79,68,68,68,68,68,68,2,137,136,136,79,68,68,68,68,68,68,7,137,136,136,79,68,68,255,164,175,68,7,137,
-  136,136,79,68,68,255,164,175,68,7,137,136,136,79,68,68,68,68,68,68,7,137,136,136,79,68,68,68,68,68,68,2,
-  137,136,136,79,68,68,68,68,68,68,2,137,136,136,79,68,68,68,68,68,68,2,137,136,136,79,68,68,255,164,175,68,
-  2,137,136,136,79,68,68,255,164,175,68,2,131,136,136,79,68,68,170,164,255,68,0,83,136,136,65,68,68,68,164,136,
-  65,0,83,136,136,65,68,68,68,244,136,65,0,83,136,136,72,68,68,68,68,17,127,0,80,136,136,72,68,68,170,164,
-  170,116,0,80,136,136,72,68,68,255,164,175,116,0,144,24,17,209,68,68,255,164,175,36,0,144,24,17,241,68,68,68,
-  68,68,36,0,48,21,17,177,68,68,68,68,68,4,0,48,21,17,225,68,68,68,68,68,7,0,0,21,17,17,68,68,
-  68,68,68,7,0,0,137,17,17,77,68,255,164,175,2,0,0,83,17,17,75,68,255,164,223,0,0,0,80,24,17,75,
-  68,68,68,116,0,0,0,144,21,17,123,68,68,68,36,0,0,0,48,85,17,11,68,68,68,7,0,0,0,0,89,85,
-  9,66,68,68,2,0,0,0,0,83,85,9,112,68,36,0,0,0,0,0,48,85,9,0,114,2,0,0,0,0,0,0,
-  0,0,192,12,0,0,0,0,0,0,0,0,0,134,97,0,0,0,0,0,0,0,0,0,94,232,0,0,0,0,0,0,
-  0,0,0,22,97,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,227,3,0,0,0,0,0,96,17,
-  11,0,0,0,0,0,30,17,11,0,0,0,0,48,17,90,40,199,0,0,0,96,81,85,223,221,12,0,0,16,90,85,
-  217,221,13,0,0,30,85,85,212,221,205,0,0,171,85,149,221,221,125,0,0,81,85,149,221,221,221,2,224,81,85,69,
-  221,221,221,12,96,90,85,69,221,221,221,7,176,90,85,217,221,221,221,7,176,90,85,217,221,221,221,13,19,170,170,217,
-  221,221,221,45,30,170,170,212,221,221,221,205,30,170,170,212,221,221,221,205,166,170,90,212,221,221,221,125,166,170,90,212,
-  221,221,221,125,171,170,90,212,221,221,221,125,171,170,154,212,221,221,221,125,171,170,154,212,221,221,221,221,171,170,154,221,
-  221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,
-  221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,221,221,221,221,161,170,154,221,
-  221,221,221,221,171,170,154,221,221,221,221,221,171,170,154,212,221,221,221,221,171,170,154,212,221,221,221,125,171,170,90,212,
-  221,221,221,125,166,170,90,212,221,221,221,125,166,170,90,212,221,221,221,125,30,170,170,212,221,221,221,205,30,170,170,212,
-  221,221,221,205,19,170,170,217,221,221,221,45,176,90,85,217,221,221,221,13,176,90,85,217,221,221,221,7,96,90,85,69,
-  221,221,221,7,224,81,85,69,221,221,221,12,0,81,85,149,221,221,221,2,0,171,85,149,221,221,125,0,0,30,85,85,
-  212,221,205,0,0,16,90,85,217,221,13,0,0,96,81,85,223,221,12,0,0,48,17,90,40,199,0,0,0,0,30,17,
-  11,0,0,0,0,0,96,17,11,0,0,0,0,0,0,227,3,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,
-  0,0,0,0,118,97,0,0,0,0,0,0,0,0,0,125,209,0,0,0,0,0,0,0,0,0,22,97,0,0,0,0,
-  0,0,0,0,0,176,11,0,0,0,0,0,0,32,68,9,0,163,3,0,0,0,0,0,66,68,9,160,85,53,0,0,
-  0,0,0,73,68,9,83,85,85,3,0,0,0,32,68,17,8,94,85,85,10,0,0,0,144,20,17,168,85,85,85,53,
-  0,0,0,64,23,17,232,85,204,85,172,0,0,0,66,17,17,88,85,255,252,207,0,0,0,121,17,17,94,85,255,252,
-  207,3,0,0,20,17,17,94,85,204,85,92,10,0,32,20,17,209,85,85,85,85,85,14,0,32,20,17,129,85,85,85,
-  85,85,14,0,144,23,17,241,85,85,85,85,85,53,0,144,23,17,193,85,85,255,204,207,53,0,64,119,119,199,85,85,
-  255,252,207,165,0,64,119,119,87,85,85,204,197,204,165,0,66,119,119,87,85,85,85,197,17,239,0,66,119,119,81,85,
-  85,85,245,119,225,0,66,119,119,81,85,85,85,197,17,81,0,66,119,119,81,85,85,204,197,255,92,0,121,119,119,81,
-  85,85,255,252,207,85,3,121,119,119,95,85,85,255,204,207,85,3,121,119,119,95,85,85,85,85,85,85,3,121,119,119,
-  95,85,85,85,85,85,85,3,121,119,119,95,85,85,85,85,85,85,3,121,119,119,95,85,85,204,85,92,85,10,121,119,
-  119,95,85,85,255,252,207,85,10,121,119,119,95,85,85,255,252,207,85,10,121,119,119,95,85,85,204,85,92,85,10,121,
-  119,119,95,85,85,85,85,85,85,3,121,119,119,95,85,85,85,85,85,85,3,121,119,119,95,85,85,85,85,85,85,3,
-  121,119,119,95,85,85,255,204,207,85,3,121,119,119,81,85,85,255,252,207,85,3,66,119,119,81,85,85,204,197,255,92,
-  0,66,119,119,81,85,85,85,197,119,81,0,66,119,119,81,85,85,85,245,119,225,0,66,119,119,87,85,85,85,197,17,
-  239,0,64,119,119,87,85,85,204,197,204,165,0,64,119,119,199,85,85,255,252,207,165,0,144,23,17,193,85,85,255,204,
-  207,53,0,144,23,17,241,85,85,85,85,85,53,0,32,20,17,129,85,85,85,85,85,14,0,32,20,17,209,85,85,85,
-  85,85,14,0,0,20,17,17,94,85,204,85,92,10,0,0,121,17,17,94,85,255,252,207,3,0,0,66,17,17,88,85,
-  255,252,207,0,0,0,64,23,17,232,85,204,85,172,0,0,0,144,20,17,168,85,85,85,53,0,0,0,32,68,17,8,
-  94,85,85,10,0,0,0,0,73,68,9,83,85,85,3,0,0,0,0,66,68,9,160,85,53,0,0,0,0,0,32,68,
-  9,0,163,3,0,0,0,0,0,0,0,0,176,11,0,0,0,0,0,0,0,0,0,118,97,0,0,0,0,0,0,0,
-  0,0,77,215,0,0,0,0,0,0,0,0,0,22,97,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,
-  0,227,3,0,0,0,0,0,96,17,11,0,0,0,0,0,30,17,11,0,0,0,0,48,17,250,40,215,0,0,0,96,
-  241,85,197,204,13,0,0,16,90,85,201,204,12,0,0,30,85,85,196,204,220,0,0,171,85,149,204,204,124,0,0,241,
-  85,69,204,204,204,2,224,241,255,69,204,204,204,13,96,250,255,69,204,204,204,7,176,250,255,201,204,204,204,7,176,255,
-  255,201,204,204,204,12,19,255,255,196,204,204,204,44,30,255,255,196,204,204,204,220,30,255,255,196,204,204,204,220,166,170,
-  250,196,204,204,204,124,166,170,250,196,204,204,204,124,171,170,154,204,204,204,204,124,171,170,154,204,204,204,204,124,171,170,
-  154,204,204,204,204,204,171,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,
-  154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,154,204,204,204,204,204,161,170,
-  154,204,204,204,204,204,161,170,154,204,204,204,204,204,171,170,154,204,204,204,204,204,171,170,154,204,204,204,204,204,171,170,
-  154,204,204,204,204,124,171,170,154,204,204,204,204,124,166,170,250,196,204,204,204,124,166,170,250,196,204,204,204,124,30,255,
-  255,196,204,204,204,220,30,255,255,196,204,204,204,220,19,255,255,196,204,204,204,44,176,255,255,201,204,204,204,12,176,250,
-  255,201,204,204,204,7,96,250,255,69,204,204,204,7,224,241,255,69,204,204,204,13,0,241,85,69,204,204,204,2,0,171,
-  85,149,204,204,124,0,0,30,85,85,196,204,220,0,0,16,90,85,201,204,12,0,0,96,241,85,197,204,13,0,0,48,
-  17,250,40,215,0,0,0,0,30,17,11,0,0,0,0,0,96,17,11,0,0,0,0,0,0,227,3,0,0,0,0,0,
-  0,0,0,96,6,0,0,0,0,0,0,0,0,0,182,97,0,0,0,0,0,0,0,0,0,190,225,0,0,0,0,0,
-  0,0,0,0,22,97,0,0,0,0,0,0,0,0,0,160,10,0,0,0,0,0,0,48,85,9,0,114,2,0,0,0,
-  0,0,83,85,9,112,68,36,0,0,0,0,0,89,85,9,66,68,68,2,0,0,0,48,85,17,14,68,68,68,7,0,
-  0,0,144,21,17,126,68,68,68,36,0,0,0,80,27,17,78,68,68,68,116,0,0,0,83,17,17,76,68,255,132,223,
-  0,0,0,185,17,17,77,68,255,132,143,2,0,0,181,17,17,68,68,68,68,68,7,0,48,21,17,225,68,68,68,68,
-  68,7,0,48,21,17,193,68,68,68,68,68,4,0,144,27,17,241,68,68,68,68,68,36,0,144,27,17,209,68,68,255,
-  132,143,36,0,80,187,187,75,68,68,255,132,143,116,0,80,187,187,75,68,68,136,132,136,116,0,83,187,187,75,68,68,
-  68,68,17,127,0,83,187,187,65,68,68,68,244,187,65,0,83,187,187,65,68,68,68,132,17,65,0,179,187,187,79,68,
-  68,136,132,255,68,0,185,187,187,79,68,68,255,132,143,68,2,185,187,187,79,68,68,255,132,143,68,2,185,187,187,79,
-  68,68,68,68,68,68,2,185,187,187,79,68,68,68,68,68,68,2,185,187,187,79,68,68,68,68,68,68,2,185,187,187,
-  72,68,68,68,68,68,68,7,185,187,187,72,68,68,255,132,143,68,7,185,187,187,72,68,68,255,132,143,68,7,185,187,
-  187,72,68,68,68,68,68,68,7,185,187,187,79,68,68,68,68,68,68,2,185,187,187,79,68,68,68,68,68,68,2,185,
-  187,187,79,68,68,68,68,68,68,2,185,187,187,79,68,68,255,132,143,68,2,185,187,187,79,68,68,255,132,143,68,2,
-  179,187,187,79,68,68,136,132,255,68,0,83,187,187,65,68,68,68,132,187,65,0,83,187,187,65,68,68,68,244,187,65,
-  0,83,187,187,75,68,68,68,68,17,127,0,80,187,187,75,68,68,136,132,136,116,0,80,187,187,75,68,68,255,132,143,
-  116,0,144,27,17,209,68,68,255,132,143,36,0,144,27,17,241,68,68,68,68,68,36,0,48,21,17,193,68,68,68,68,
-  68,4,0,48,21,17,225,68,68,68,68,68,7,0,0,181,17,17,68,68,68,68,68,7,0,0,185,17,17,77,68,255,
-  132,143,2,0,0,83,17,17,76,68,255,132,223,0,0,0,80,27,17,78,68,68,68,116,0,0,0,144,21,17,126,68,
-  68,68,36,0,0,0,48,85,17,14,68,68,68,7,0,0,0,0,89,85,9,66,68,68,2,0,0,0,0,83,85,9,
-  112,68,36,0,0,0,0,0,48,85,9,0,114,2,0,0,0,0,0,0,0,0,160,10,0,0,0,0,0,0,0,0,
-  0,182,97,0,0,0,0,0,0,0,0,0,94,225,0,0,0,0,0,0,0,0,0,22,97,0,0,0,0,0,0,0,
-  0,0,96,6,0,0,0,0,0,0,0,194,0,0,44,0,0,0,0,0,130,51,2,32,51,40,0,0,0,192,51,40,
-  0,0,130,51,12,0,0,60,35,0,230,110,0,50,195,0,32,51,2,190,119,119,235,32,51,2,128,35,80,119,119,119,
-  119,5,50,8,50,8,126,119,119,119,119,231,128,35,60,2,123,119,119,119,119,183,32,195,32,96,255,255,255,255,255,255,
-  6,2,0,160,255,255,255,255,255,255,10,0,0,160,255,255,255,255,255,255,10,0,32,64,255,255,255,255,255,255,4,2,
-  60,2,17,17,17,17,17,17,32,195,50,8,29,17,17,17,17,209,128,35,128,35,144,17,17,17,17,9,50,8,32,51,
-  2,29,17,17,209,32,51,2,0,60,35,0,212,77,0,50,195,0,0,192,51,40,0,0,130,51,12,0,0,0,130,51,
-  2,32,51,40,0,0,0,0,0,194,0,0,44,0,0,0,0,0,0,0,0,16,17,1,0,0,0,0,0,0,0,0,
-  0,33,34,34,34,18,0,0,0,0,0,0,0,33,51,84,85,69,51,18,0,0,0,0,0,16,66,101,119,119,119,86,
-  36,1,0,0,0,0,50,100,135,136,136,136,120,70,35,0,0,0,16,83,134,120,86,85,101,135,104,53,1,0,0,33,
-  100,136,70,52,51,67,100,136,70,18,0,0,66,134,104,52,18,17,33,67,134,104,36,0,16,83,135,70,18,0,0,0,
-  33,100,120,53,1,32,99,120,52,1,0,0,0,16,67,135,54,2,32,116,104,36,0,0,0,0,0,66,134,71,2,33,
-  117,88,19,0,0,0,0,0,49,133,87,18,33,117,88,19,0,0,0,0,0,49,133,87,18,33,117,88,19,0,0,0,
-  0,0,49,133,87,18,33,117,88,19,0,0,0,0,0,49,133,87,18,32,116,104,36,0,0,0,0,0,66,134,71,2,
-  32,99,120,52,1,0,0,0,16,67,135,54,2,16,83,135,70,18,0,0,0,33,100,120,53,1,0,66,134,104,52,18,
-  17,33,67,134,104,36,0,0,33,100,136,70,52,51,67,100,136,70,18,0,0,16,83,134,120,86,85,101,135,104,53,1,
-  0,0,0,50,100,135,136,136,136,120,70,35,0,0,0,0,16,66,101,119,119,119,86,36,1,0,0,0,0,0,33,51,
-  84,85,69,51,18,0,0,0,0,0,0,0,33,34,34,34,18,0,0,0,0,0,0,0,0,0,16,17,1,0,0,0,
-  0,0,0,64,153,40,0,0,0,0,0,16,250,255,255,6,0,0,0,0,144,255,189,254,79,0,0,0,0,241,159,0,
-  209,207,136,136,136,136,245,31,0,96,255,255,255,255,255,245,31,0,96,255,255,255,255,255,241,159,0,209,207,136,136,207,
-  250,144,255,189,254,79,0,0,159,246,16,250,255,255,6,0,0,159,98,0,64,153,40,0,0,0,0,0,0,64,153,40,
-  0,16,122,1,163,6,144,4,0,0,73,145,0,0,0,160,101,0,0,0,160,101,0,0,0,160,145,0,0,0,160,144,
-  4,0,0,73,16,122,1,163,6,0,64,153,40,0,0,0,48,152,137,3,0,0,0,48,251,255,255,191,3,0,0,228,
-  255,255,255,255,78,0,32,254,255,191,251,255,239,2,144,255,239,3,48,254,255,9,240,255,127,0,0,247,255,15,243,255,
-  111,0,0,246,255,63,245,255,159,0,0,249,255,95,244,255,255,1,16,255,255,79,241,255,239,0,0,254,255,31,176,255,
-  207,0,0,252,255,11,64,255,159,0,0,249,255,4,0,248,127,0,0,247,143,0,0,112,159,102,102,249,7,0,0,0,
-  130,252,207,40,0,0,0,0,0,83,53,0,0,0,0,16,232,255,255,142,1,0,0,211,142,3,48,232,61,0,32,190,
-  1,0,0,16,235,2,192,12,0,0,0,0,192,12,245,2,0,0,0,0,32,95,170,0,0,0,0,0,0,170,126,0,
-  0,0,0,0,0,231,111,0,0,0,0,0,0,246,110,0,0,0,0,0,0,230,156,0,0,0,0,0,0,201,231,1,
-  0,0,0,0,16,126,225,8,0,0,0,0,128,30,80,127,0,0,0,0,247,5,0,247,42,0,0,162,127,0,0,64,
-  253,173,218,223,4,0,0,0,64,152,137,4,0,0,6,8,1,0,0,0,0,0,0,0,0,0,0,0,0,0,9,143,
-  78,8,1,0,0,0,0,0,0,0,0,0,0,0,2,95,255,191,78,8,1,0,0,0,0,0,0,0,0,0,0,10,
-  223,254,255,191,78,8,1,0,0,0,0,0,0,0,0,3,111,250,246,254,255,191,78,8,1,0,0,0,0,0,0,0,
-  27,239,242,240,247,254,255,191,78,8,1,0,0,0,0,0,4,127,249,0,0,241,248,255,255,191,78,8,1,0,0,0,
-  0,28,239,242,0,0,0,241,249,255,255,191,78,8,0,0,0,27,239,242,0,0,0,241,248,254,255,223,111,9,0,0,
-  3,111,249,0,0,240,247,254,255,223,111,9,2,0,0,0,10,223,242,240,247,254,255,223,111,9,2,0,0,0,0,2,
-  95,250,246,253,255,223,111,9,2,0,0,0,0,0,0,9,207,254,255,223,111,9,2,0,0,0,0,0,0,0,1,79,
-  255,223,111,9,2,0,0,0,0,0,0,0,0,0,8,159,111,9,2,0,0,0,0,0,0,0,0,0,0,0,8,10,
-  2,0,0,0,0,0,0,0,0,0,0,0,0,0,241,0,0,0,0,0,0,0,0,245,249,241,0,0,0,0,0,0,
-  240,253,255,248,241,0,0,0,0,0,246,255,255,254,247,240,0,0,0,240,253,255,255,255,254,246,240,0,240,253,255,255,
-  255,254,248,241,0,246,255,255,255,248,241,0,0,240,253,255,248,241,0,0,0,0,245,249,242,0,0,0,0,0,0,241,
-  0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,8,
-  95,111,111,111,111,111,111,111,111,111,111,111,111,111,62,4,0,0,0,8,143,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,255,239,78,4,0,6,143,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,62,1,8,191,255,255,
-  255,255,255,255,251,244,244,244,244,244,244,244,244,251,255,111,2,8,191,255,255,255,255,255,255,249,0,0,0,0,0,0,
-  0,0,249,255,111,2,8,191,255,255,255,255,255,255,249,0,0,0,0,0,0,0,0,249,255,111,2,8,191,255,255,255,
-  255,255,255,249,0,0,0,0,0,0,0,0,249,255,111,2,8,191,255,255,255,255,255,255,249,0,0,0,0,0,0,0,
-  0,249,255,111,2,8,191,255,255,255,255,255,255,251,244,244,244,244,244,244,244,244,251,255,111,2,8,191,251,244,244,244,
-  244,244,244,244,244,244,244,244,244,244,244,244,254,111,2,8,191,251,244,244,244,244,244,244,244,244,244,244,244,244,244,244,
-  244,254,111,2,8,191,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,111,2,4,44,43,43,43,43,43,
-  43,43,43,43,43,43,43,43,43,43,43,43,28,1,0,0,0,0,0,0,244,251,251,251,251,251,251,251,251,244,0,0,
-  0,0,0,0,0,246,255,255,255,223,159,159,223,255,246,0,0,0,0,0,0,0,246,255,255,255,159,15,15,159,255,246,
-  0,0,0,0,0,0,0,246,255,255,255,159,15,15,159,255,246,0,0,0,0,0,0,0,246,255,255,255,223,159,159,223,
-  255,246,0,0,0,0,0,0,0,244,251,251,251,251,251,251,251,251,244,0,196,203,203,203,203,203,203,203,203,203,203,203,
-  203,203,203,203,193,196,203,203,203,203,203,203,203,203,203,203,203,203,203,203,203,193,0,0,0,0,0,0,0,1,0,0,
-  0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,27,111,111,111,111,111,111,111,111,45,1,0,0,0,
-  0,0,0,0,0,0,1,27,191,255,255,255,255,255,255,255,255,223,45,1,0,0,0,0,0,0,0,1,27,191,255,255,
-  255,255,255,255,255,255,255,255,223,45,1,0,0,0,0,0,1,27,191,255,255,255,255,255,255,255,255,255,255,255,255,223,
-  45,1,0,0,0,0,10,191,255,255,255,239,143,239,255,255,255,239,143,239,255,255,223,28,0,0,0,0,62,255,255,255,
-  255,127,15,127,255,255,255,127,15,127,255,255,255,79,1,0,0,3,111,255,255,255,255,127,15,127,255,255,255,127,15,127,
-  255,255,255,143,4,0,0,6,175,255,255,255,255,239,143,239,255,255,255,239,143,239,255,255,255,191,7,0,0,10,223,255,
-  255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,239,10,0,0,45,255,255,255,255,255,255,255,255,255,255,255,255,
-  255,255,255,255,255,255,46,0,1,79,255,247,0,0,0,0,0,0,0,0,0,0,0,0,0,0,245,255,79,1,0,6,
-  60,159,231,0,0,0,0,0,0,0,0,0,0,0,0,229,159,60,6,0,0,0,0,5,60,141,189,189,189,189,189,189,
-  189,189,189,189,141,44,5,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,6,6,6,6,0,0,0,0,0,
-  248,255,255,255,255,255,255,255,255,255,255,255,255,255,255,250,0,248,255,255,255,255,255,255,255,255,255,255,255,255,250,240,
-  0,0,242,242,242,242,242,242,242,242,242,242,242,242,240,0,0,0,0,0,0,0,0,0,0,5,9,11,11,9,5,0,
-  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,13,47,127,159,159,127,47,13,4,0,0,0,0,0,0,0,
-  0,0,0,0,0,4,9,31,159,255,255,255,255,255,255,159,31,8,6,0,0,0,0,0,0,0,0,5,12,15,31,191,
-  255,255,255,255,255,255,255,255,191,31,15,14,8,1,0,0,1,8,14,15,63,47,159,255,255,255,249,244,244,249,255,255,
-  255,159,47,63,15,15,10,1,8,15,79,175,207,111,255,255,255,244,0,0,0,0,244,255,255,255,111,207,175,79,15,7,
-  8,15,175,207,207,191,255,255,249,0,0,0,0,0,0,249,255,255,191,207,207,175,15,6,8,15,175,207,207,239,255,255,
-  244,0,0,0,0,0,0,244,255,255,239,207,207,175,15,6,8,15,175,207,207,239,255,255,244,0,0,0,0,0,0,244,
-  255,255,239,207,207,175,15,6,8,15,175,207,207,191,255,255,249,0,0,0,0,0,0,249,255,255,191,207,207,175,15,6,
-  8,15,79,175,207,111,255,255,255,244,0,0,0,0,244,255,255,255,111,207,175,79,15,7,1,8,14,15,63,47,159,255,
-  255,255,249,244,244,249,255,255,255,159,47,63,15,15,10,1,0,0,0,5,12,15,31,191,255,255,255,255,255,255,255,255,
-  191,31,15,14,8,1,0,0,0,0,0,0,0,4,9,31,159,255,255,255,255,255,255,159,31,8,6,0,0,0,0,0,
-  0,0,0,0,0,0,0,4,13,47,127,159,159,127,47,13,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
-  0,5,9,11,11,9,5,0,0,0,0,0,0,0,0,0,0,240,246,251,251,246,240,0,240,251,239,239,255,255,251,240,
-  246,239,159,159,239,255,255,246,251,239,159,159,239,255,255,251,251,255,239,239,255,255,255,251,246,255,255,255,255,255,255,246,
-  240,251,255,255,255,255,251,240,0,240,246,251,251,246,240,0,0,0,0,243,3,0,0,0,0,0,96,17,11,0,0,0,
-  0,0,31,17,11,0,0,0,0,48,17,232,42,199,0,0,0,96,225,238,213,221,12,0,0,16,232,238,217,221,13,0,
-  0,31,238,238,212,221,205,0,0,139,238,158,221,221,125,0,0,225,238,158,221,221,221,2,240,225,238,78,221,221,221,12,
-  96,232,238,78,221,221,221,7,176,232,238,217,221,221,221,7,176,232,238,217,221,221,221,13,19,136,136,217,221,221,221,45,
-  31,136,136,212,221,221,221,205,31,136,136,212,221,221,221,205,134,136,232,212,221,221,221,125,134,136,232,212,221,221,221,125,
-  139,136,232,212,221,221,221,125,139,136,152,212,221,221,221,125,139,136,152,212,221,221,221,221,139,136,152,221,221,221,221,221,
-  129,136,152,221,221,221,221,221,129,136,152,221,221,221,221,221,129,136,152,221,221,221,221,221,129,136,152,221,221,221,221,221,
-  129,136,152,221,221,221,221,221,129,136,152,221,221,221,221,221,129,136,152,221,221,221,221,221,129,136,152,221,221,221,221,221,
-  139,136,152,221,221,221,221,221,139,136,152,212,221,221,221,221,139,136,152,212,221,221,221,125,139,136,232,212,221,221,221,125,
-  134,136,232,212,221,221,221,125,134,136,232,212,221,221,221,125,31,136,136,212,221,221,221,205,31,136,136,212,221,221,221,205,
-  19,136,136,217,221,221,221,45,176,232,238,217,221,221,221,13,176,232,238,217,221,221,221,7,96,232,238,78,221,221,221,7,
-  240,225,238,78,221,221,221,12,0,225,238,158,221,221,221,2,0,139,238,158,221,221,125,0,0,31,238,238,212,221,205,0,
-  0,16,232,238,217,221,13,0,0,96,225,238,213,221,12,0,0,48,17,232,42,199,0,0,0,0,31,17,11,0,0,0,
-  0,0,96,17,11,0,0,0,0,0,0,243,3,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,0,0,
-  198,108,0,0,0,0,0,0,0,0,0,205,209,0,0,0,0,0,0,0,0,0,22,97,0,0,0,0,0,0,0,0,
-  0,176,11,0,0,0,0,0,0,48,85,9,0,242,2,0,0,0,0,0,83,85,5,240,68,36,0,0,0,0,0,89,
-  197,5,79,68,68,2,0,0,0,48,197,17,8,68,68,68,7,0,0,0,144,21,17,248,68,68,68,36,0,0,0,80,
-  28,17,120,68,68,68,244,0,0,0,83,17,17,72,68,170,164,234,0,0,0,201,17,17,78,68,170,164,170,2,0,0,
-  21,17,17,71,68,68,68,68,15,0,48,21,17,209,68,68,68,68,68,7,0,48,21,17,129,68,68,68,68,68,4,0,
-  144,28,17,161,68,68,68,68,68,36,0,144,28,17,225,68,68,170,164,170,244,0,80,204,204,76,68,68,170,164,170,244,
-  0,80,204,204,76,68,68,170,164,170,116,0,83,204,204,76,68,68,68,68,193,122,0,83,204,204,65,68,68,68,164,204,
-  65,0,83,204,204,65,68,68,68,164,17,65,0,201,204,204,65,68,68,170,164,170,68,0,201,204,204,65,68,68,170,164,
-  170,68,2,201,204,204,74,68,68,170,164,170,68,2,201,204,204,74,68,68,68,68,68,68,15,201,204,204,74,68,68,68,
-  68,68,68,15,201,204,204,74,68,68,68,68,68,68,15,201,204,204,74,68,68,68,68,68,68,15,201,204,204,74,68,68,
-  170,164,170,68,15,201,204,204,74,68,68,170,164,170,68,15,201,204,204,74,68,68,68,68,68,68,15,201,204,204,74,68,
-  68,68,68,68,68,15,201,204,204,74,68,68,68,68,68,68,15,201,204,204,74,68,68,68,68,68,68,15,201,204,204,74,
-  68,68,170,164,170,68,2,201,204,204,65,68,68,170,164,170,68,2,201,204,204,65,68,68,170,164,170,68,0,83,204,204,
-  65,68,68,68,164,204,65,0,83,204,204,65,68,68,68,164,204,65,0,83,204,204,76,68,68,68,68,17,122,0,80,204,
-  204,76,68,68,170,164,170,116,0,80,204,204,76,68,68,170,164,170,244,0,144,28,17,225,68,68,170,164,170,244,0,144,
-  28,17,161,68,68,68,68,68,36,0,48,21,17,129,68,68,68,68,68,4,0,48,21,17,209,68,68,68,68,68,7,0,
-  0,21,17,17,71,68,68,68,68,15,0,0,201,17,17,78,68,170,164,170,2,0,0,83,17,17,72,68,170,164,234,0,
-  0,0,80,28,17,120,68,68,68,244,0,0,0,144,21,17,248,68,68,68,36,0,0,0,48,197,17,8,68,68,68,7,
-  0,0,0,0,89,197,5,79,68,68,2,0,0,0,0,83,85,5,240,68,36,0,0,0,0,0,48,85,9,0,242,2,
-  0,0,0,0,0,0,0,0,176,11,0,0,0,0,0,0,0,0,0,198,97,0,0,0,0,0,0,0,0,0,93,220,
-  0,0,0,0,0,0,0,0,0,22,97,0,0,0,0,0,0,0,0,0,96,6,0,0,0,0,0,0,0,243,3,0,
-  0,0,0,0,96,17,11,0,0,0,0,0,31,17,11,0,0,0,0,48,17,153,42,215,0,0,0,96,225,238,197,204,
-  13,0,0,16,233,238,200,204,12,0,0,31,238,238,196,204,220,0,0,155,238,142,204,204,124,0,0,225,238,142,204,204,
-  204,2,240,225,238,78,204,204,204,13,96,233,238,78,204,204,204,7,176,233,238,200,204,204,204,7,176,233,238,200,204,204,
-  204,12,19,153,153,196,204,204,204,44,31,153,153,196,204,204,204,220,31,153,233,196,204,204,204,220,150,153,233,196,204,204,
-  204,124,150,153,233,196,204,204,204,124,155,153,137,196,204,204,204,124,155,153,137,204,204,204,204,124,155,153,137,204,204,204,
-  204,204,155,153,137,204,204,204,204,204,145,153,137,204,204,204,204,204,145,153,137,204,204,204,204,204,145,153,137,204,204,204,
-  204,204,145,153,137,204,204,204,204,204,145,153,137,204,204,204,204,204,145,153,137,204,204,204,204,204,145,153,137,204,204,204,
-  204,204,145,153,137,204,204,204,204,204,155,153,137,204,204,204,204,204,155,153,137,204,204,204,204,204,155,153,137,204,204,204,
-  204,124,155,153,137,196,204,204,204,124,150,153,233,196,204,204,204,124,150,153,233,196,204,204,204,124,31,153,233,196,204,204,
-  204,220,31,153,153,196,204,204,204,220,19,153,153,196,204,204,204,44,176,233,238,200,204,204,204,12,176,233,238,200,204,204,
-  204,7,96,233,238,78,204,204,204,7,240,225,238,78,204,204,204,13,0,225,238,142,204,204,204,2,0,155,238,142,204,204,
-  124,0,0,31,238,238,196,204,220,0,0,16,233,238,200,204,12,0,0,96,225,238,197,204,13,0,0,48,17,153,42,215,
-  0,0,0,0,31,17,11,0,0,0,0,0,96,17,11,0,0,0,0,0,0,243,3,0,0,0,0,0,0,0,0,80,
-  5,0,0,0,0,0,0,0,0,0,197,81,0,0,0,0,0,0,0,0,0,206,225,0,0,0,0,0,0,0,0,0,
-  21,81,0,0,0,0,0,0,0,0,0,176,11,0,0,0,0,0,0,48,102,9,0,130,2,0,0,0,0,0,99,102,
-  9,128,68,36,0,0,0,0,0,105,102,9,72,68,68,2,0,0,0,48,102,17,14,68,68,68,15,0,0,0,144,22,
-  17,142,68,68,68,36,0,0,0,96,28,17,254,68,68,68,132,0,0,0,99,17,17,74,68,119,116,215,0,0,0,201,
-  17,17,77,68,119,116,119,2,0,0,198,17,17,79,68,68,68,68,8,0,48,22,17,225,68,68,68,68,68,15,0,48,
-  22,17,161,68,68,68,68,68,4,0,144,28,17,113,68,68,68,68,68,36,0,144,28,17,209,68,68,119,116,119,36,0,
-  96,204,204,76,68,68,119,116,119,132,0,96,204,204,76,68,68,119,116,119,244,0,99,204,204,76,68,68,68,68,17,247,
-  0,99,204,204,65,68,68,68,116,204,65,0,99,204,204,65,68,68,68,116,17,65,0,195,204,204,71,68,68,119,116,119,
-  68,0,201,204,204,71,68,68,119,116,119,68,2,201,204,204,71,68,68,119,116,119,68,2,201,204,204,71,68,68,68,68,
-  68,68,2,201,204,204,71,68,68,68,68,68,68,2,201,204,204,71,68,68,68,68,68,68,2,201,204,204,71,68,68,68,
-  68,68,68,8,201,204,204,71,68,68,119,116,119,68,8,201,204,204,71,68,68,119,116,119,68,8,201,204,204,71,68,68,
-  68,68,68,68,8,201,204,204,71,68,68,68,68,68,68,2,201,204,204,71,68,68,68,68,68,68,2,201,204,204,71,68,
-  68,68,68,68,68,2,201,204,204,71,68,68,119,116,119,68,2,201,204,204,71,68,68,119,116,119,68,2,195,204,204,71,
-  68,68,119,116,119,68,0,99,204,204,65,68,68,68,116,204,65,0,99,204,204,65,68,68,68,116,28,65,0,99,204,204,
-  76,68,68,68,68,17,247,0,96,204,204,76,68,68,119,116,119,244,0,96,204,204,76,68,68,119,116,119,132,0,144,28,
-  17,209,68,68,119,116,119,36,0,144,28,17,113,68,68,68,68,68,36,0,48,22,17,161,68,68,68,68,68,4,0,48,
-  22,17,225,68,68,68,68,68,15,0,0,198,17,17,79,68,68,68,68,8,0,0,201,17,17,77,68,119,116,119,2,0,
-  0,99,17,17,74,68,119,116,215,0,0,0,96,28,17,254,68,68,68,132,0,0,0,144,22,17,142,68,68,68,36,0,
-  0,0,48,102,17,14,68,68,68,15,0,0,0,0,105,102,9,72,68,68,2,0,0,0,0,99,102,9,128,68,36,0,
-  0,0,0,0,48,102,9,0,130,2,0,0,0,0,0,0,0,0,176,11,0,0,0,0,0,0,0,0,0,197,81,0,
-  0,0,0,0,0,0,0,0,206,225,0,0,0,0,0,0,0,0,0,21,81,0,0,0,0,0,0,0,0,0,80,5,
-  0,0,0,0,0,0,0,114,247,127,39,0,0,0,0,0,114,51,243,63,51,39,0,0,0,32,51,39,0,0,114,51,
-  2,0,0,50,47,0,136,136,0,242,35,0,32,243,2,232,102,102,142,32,63,2,112,35,80,102,102,102,102,5,50,7,
-  50,7,104,102,102,102,102,134,112,35,55,2,110,198,102,108,102,230,32,115,55,208,187,203,108,60,182,187,13,115,255,160,
-  187,107,51,54,195,187,10,255,255,160,187,107,51,54,195,187,10,255,55,208,187,203,188,54,182,187,13,115,55,2,17,203,
-  17,188,17,17,32,115,50,7,20,17,17,17,17,65,112,35,112,35,144,17,17,17,17,9,50,7,32,243,2,20,17,17,
-  65,32,63,2,0,50,47,0,68,68,0,242,35,0,0,32,51,39,0,0,114,51,2,0,0,0,114,51,243,63,51,39,
-  0,0,0,0,0,114,247,127,39,0,0,0,0,0,0,114,61,211,39,0,0,0,0,0,210,136,56,131,136,45,0,0,
-  0,112,136,45,0,0,210,136,7,0,0,135,35,0,94,229,0,50,120,0,32,56,2,101,102,102,86,32,131,2,208,40,
-  176,102,102,102,102,11,130,13,130,13,101,102,102,102,102,86,208,40,135,2,204,102,204,102,204,204,32,120,141,144,204,140,
-  198,134,198,204,9,216,51,240,204,108,136,134,104,204,15,51,51,240,204,204,136,134,104,204,15,51,141,144,17,97,200,134,
-  28,17,9,216,135,2,17,108,17,198,17,17,32,120,130,13,20,17,17,17,17,65,208,40,208,40,160,17,17,17,17,10,
-  130,13,32,56,2,20,17,17,65,32,131,2,0,135,35,0,73,148,0,50,120,0,0,112,136,45,0,0,210,136,7,0,
-  0,0,210,136,56,131,136,45,0,0,0,0,0,114,61,211,39,0,0,0,0,0,0,98,102,102,38,0,0,0,0,0,
-  98,187,251,191,187,38,0,0,0,32,187,38,20,65,98,187,2,0,0,178,43,0,122,167,0,178,43,0,32,187,2,58,
-  51,51,163,32,187,2,96,43,224,51,51,51,51,14,178,6,178,6,58,51,51,51,51,163,96,43,182,2,51,51,51,51,
-  51,51,32,107,182,208,51,51,51,51,51,51,13,107,182,160,51,51,51,51,51,51,10,107,182,208,153,153,153,153,153,153,
-  13,107,182,208,153,153,153,153,153,153,13,107,182,200,153,153,153,153,153,153,140,107,178,31,159,153,153,153,153,249,241,43,
-  96,23,92,153,153,153,153,197,113,6,32,187,2,149,153,153,89,32,187,2,0,178,43,0,93,213,0,178,43,0,0,32,
-  187,38,0,0,98,187,2,0,0,0,98,187,187,187,187,38,0,0,0,0,0,98,102,102,38,0,0,0,0,0,0,242,
-  231,126,47,0,0,0,0,0,114,51,227,62,51,39,0,0,0,240,51,39,0,0,114,51,15,0,0,63,46,0,136,136,
-  0,226,243,0,32,227,2,216,102,102,141,32,62,2,112,35,80,102,102,102,102,5,50,7,50,7,104,102,102,102,102,134,
-  112,35,63,2,109,102,102,102,102,214,32,243,55,192,187,187,187,187,187,187,12,115,238,160,187,187,187,187,187,187,10,238,
-  238,160,187,187,187,187,187,187,10,238,55,192,187,187,187,187,187,187,12,115,63,2,17,17,17,17,17,17,32,243,50,7,
-  26,17,17,17,17,161,112,35,112,35,144,17,17,17,17,9,50,7,32,227,2,20,17,17,65,32,62,2,0,63,46,0,
-  68,68,0,226,243,0,0,240,51,39,0,0,114,51,15,0,0,0,114,51,227,62,51,39,0,0,0,0,0,242,231,126,
-  47,0,0,0,0,160,53,108,221,198,83,10,0,32,185,238,238,238,238,238,155,2,128,17,17,17,17,17,17,17,8,71,
-  68,68,68,68,68,68,68,116,0,0,0,0,0,0,241,246,249,251,251,249,246,241,0,0,0,0,0,0,0,0,0,0,
-  242,249,255,255,254,252,252,254,255,255,249,242,0,0,0,0,0,0,0,244,254,255,249,243,0,0,0,0,243,249,255,254,
-  244,0,0,0,0,0,244,255,253,243,0,0,195,198,198,195,0,0,243,253,255,244,0,0,0,242,254,253,241,0,197,205,
-  207,207,207,207,205,197,0,241,253,254,242,0,0,249,255,243,0,200,207,207,207,207,207,207,207,207,200,0,243,255,249,0,
-  241,255,249,0,197,207,207,207,207,207,207,207,207,207,207,197,0,249,255,241,246,255,243,0,205,207,207,207,207,207,207,207,
-  207,207,207,205,0,243,255,246,249,254,0,195,207,207,207,207,207,207,207,207,207,207,207,207,195,0,254,249,251,252,0,198,
-  207,207,207,207,207,207,207,207,207,207,207,207,198,0,252,251,251,252,0,198,207,207,207,207,207,207,207,207,207,207,207,207,
-  198,0,252,251,249,254,0,195,207,207,207,207,207,207,207,207,207,207,207,207,195,0,254,249,246,255,243,0,205,207,207,207,
-  207,207,207,207,207,207,207,205,0,243,255,246,241,255,249,0,197,207,207,207,207,207,207,207,207,207,207,197,0,249,255,241,
-  0,249,255,243,0,200,207,207,207,207,207,207,207,207,200,0,243,255,249,0,0,242,254,253,241,0,197,205,207,207,207,207,
-  205,197,0,241,253,254,242,0,0,0,244,255,253,243,0,0,195,198,198,195,0,0,243,253,255,244,0,0,0,0,0,244,
-  254,255,249,243,0,0,0,0,243,249,255,254,244,0,0,0,0,0,0,0,242,249,255,255,254,252,252,254,255,255,249,242,
-  0,0,0,0,0,0,0,0,0,0,241,246,249,251,251,249,246,241,0,0,0,0,0,0,32,251,191,2,226,191,251,46,
-  251,4,64,191,191,0,0,251,191,0,0,251,251,4,64,191,226,191,251,46,32,251,191,2,0,0,0,11,15,15,11,0,
-  0,0,0,0,0,0,107,111,111,107,0,0,0,0,0,0,0,251,255,255,251,0,0,0,0,0,4,11,206,255,255,174,
-  11,4,0,0,0,6,15,191,255,255,159,15,6,0,0,15,111,255,255,255,255,255,255,79,15,2,15,111,255,255,255,255,
-  255,255,79,15,2,15,111,255,255,255,255,255,255,79,15,2,6,41,79,79,79,79,79,79,41,6,1,0,6,15,15,15,
-  15,15,15,6,0,0,0,1,2,2,2,2,2,2,1,0,0,251,191,251,191,251,191,100,70,
+  0,0,84,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,95,94,15,15,15,95,139,128,0,0,0,0,0,
+  0,0,0,0,130,142,63,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,111,136,0,0,
+  0,0,130,137,1,0,129,141,79,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,
+  140,128,0,0,0,137,95,14,6,138,95,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,14,6,0,0,0,0,129,143,31,15,15,47,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,63,116,0,0,0,0,0,135,111,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,15,15,15,79,139,0,0,0,0,0,139,63,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,15,15,15,15,15,15,31,143,130,0,0,0,0,142,31,15,15,15,15,15,15,15,15,15,15,15,15,14,8,
+  4,4,8,14,15,15,15,15,15,15,15,15,15,111,134,0,0,129,0,132,7,9,30,15,15,15,15,15,15,15,15,15,
+  14,3,0,0,0,0,3,14,15,15,15,15,15,15,15,15,47,61,11,14,143,130,0,0,0,140,47,15,15,15,15,15,
+  15,15,15,8,0,0,0,0,0,0,8,15,15,15,15,15,15,15,15,15,15,15,15,127,132,0,0,0,141,47,15,15,
+  15,15,15,15,15,15,4,0,0,0,0,0,0,4,15,15,15,15,15,15,15,15,15,15,15,15,111,133,0,0,0,141,
+  47,15,15,15,15,15,15,15,15,4,0,0,0,0,0,0,4,15,15,15,15,15,15,15,15,15,15,15,15,111,133,0,
+  0,0,140,47,15,15,15,15,15,15,15,15,8,0,0,0,0,0,0,8,15,15,15,15,15,15,15,15,15,15,15,15,
+  127,132,132,7,9,30,15,15,15,15,15,15,15,15,15,14,3,0,0,0,0,3,14,15,15,15,15,15,15,15,15,47,
+  61,11,14,143,130,142,31,15,15,15,15,15,15,15,15,15,15,15,15,14,8,4,4,8,14,15,15,15,15,15,15,15,
+  15,15,111,134,0,0,129,0,139,63,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,15,31,143,130,0,0,0,0,135,111,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,15,15,15,15,79,139,0,0,0,0,0,129,143,31,15,15,47,31,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,15,15,15,15,15,15,15,63,116,0,0,0,0,0,0,137,95,14,6,138,95,15,15,15,15,15,15,15,15,
+  15,15,15,15,15,15,15,15,15,15,15,15,15,15,14,6,0,0,0,0,0,130,137,1,0,129,141,79,15,15,15,15,
+  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,140,128,0,0,0,0,0,0,0,0,130,142,63,
+  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,111,136,0,0,0,0,0,0,0,0,0,
+  0,84,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,31,95,94,15,15,15,95,139,128,0,0,0,0,0,0,
+  0,0,0,1,12,15,15,15,15,15,15,15,15,15,15,15,15,15,31,79,127,138,129,8,15,79,141,129,0,0,0,0,
+  0,0,0,0,0,128,91,15,15,15,15,15,63,111,79,47,47,15,15,15,15,47,139,132,0,0,0,91,141,130,0,0,
+  0,0,0,0,0,0,0,0,129,139,111,31,15,15,15,38,134,138,140,125,15,15,15,15,15,1,0,0,0,0,129,129,
+  0,0,0,0,0,0,0,0,0,0,0,0,128,136,143,95,31,13,0,0,0,0,2,15,15,15,15,15,7,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,130,137,143,104,0,0,0,0,2,15,15,15,31,63,109,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,129,0,0,0,0,98,111,127,143,
+  142,139,135,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,
+  133,132,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,64,201,238,156,4,0,0,0,48,235,238,238,
+  238,190,3,0,0,227,222,56,34,131,237,62,0,48,238,26,0,0,0,161,238,3,176,174,0,0,0,0,0,234,11,228,
+  29,0,0,0,0,0,209,78,233,8,0,64,170,4,0,128,158,236,3,0,228,238,78,0,48,206,238,2,0,234,238,174,
+  0,32,238,238,2,0,234,238,174,0,32,238,236,3,0,228,238,78,0,48,206,233,8,0,64,170,4,0,128,158,228,29,
+  0,0,0,0,0,209,78,176,174,0,0,0,0,0,234,11,48,238,26,0,0,0,161,238,3,0,227,222,56,34,131,237,
+  62,0,0,48,235,238,238,238,190,3,0,0,0,64,201,238,156,4,0,0,0,0,0,0,0,0,0,0,0,0,0,129,
+  132,133,133,132,129,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,127,111,111,127,
+  138,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,7,15,15,15,15,7,0,0,0,
+  0,128,0,0,0,0,0,0,0,0,0,0,0,132,142,67,0,0,129,88,15,15,15,15,88,129,0,0,67,142,132,0,
+  0,0,0,0,0,0,0,0,133,143,47,12,131,138,143,111,15,15,15,15,111,143,138,131,12,47,143,133,0,0,0,0,
+  0,0,0,132,143,47,15,15,79,79,31,15,15,15,15,15,15,31,79,79,15,15,47,143,132,0,0,0,0,0,128,142,
+  47,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,47,142,128,0,0,0,0,0,67,12,15,15,15,
+  15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,12,67,0,0,0,0,0,0,0,131,79,15,15,15,15,15,15,
+  15,15,15,15,15,15,15,15,15,15,79,131,0,0,0,0,0,0,0,0,138,79,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,15,15,15,79,138,0,0,0,0,0,0,0,129,143,31,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,31,143,129,0,0,0,129,138,7,88,111,15,15,15,15,15,15,15,8,2,2,8,15,15,15,15,15,15,15,111,
+  88,7,138,129,132,127,15,15,15,15,15,15,15,15,15,8,0,0,0,0,8,15,15,15,15,15,15,15,15,15,127,132,
+  133,111,15,15,15,15,15,15,15,15,15,2,0,0,0,0,2,15,15,15,15,15,15,15,15,15,111,133,133,111,15,15,
+  15,15,15,15,15,15,15,2,0,0,0,0,2,15,15,15,15,15,15,15,15,15,111,133,132,127,15,15,15,15,15,15,
+  15,15,15,8,0,0,0,0,8,15,15,15,15,15,15,15,15,15,127,132,129,138,7,88,111,15,15,15,15,15,15,15,
+  8,2,2,8,15,15,15,15,15,15,15,111,88,7,138,129,0,0,0,129,143,31,15,15,15,15,15,15,15,15,15,15,
+  15,15,15,15,15,15,31,143,129,0,0,0,0,0,0,0,138,79,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
+  15,15,79,138,0,0,0,0,0,0,0,0,131,79,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,79,131,
+  0,0,0,0,0,0,0,67,12,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,12,67,0,0,0,
+  0,0,128,142,47,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,47,142,128,0,0,0,0,0,132,
+  143,47,15,15,79,79,31,15,15,15,15,15,15,31,79,79,15,15,47,143,132,0,0,0,0,0,0,0,133,143,47,12,
+  131,138,143,111,15,15,15,15,111,143,138,131,12,47,143,133,0,0,0,0,0,0,0,0,0,132,142,67,0,0,129,88,
+  15,15,15,15,88,129,0,0,67,142,132,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,7,15,15,15,15,
+  7,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,138,127,111,111,127,138,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,129,132,133,133,132,129,0,0,0,0,0,0,0,
+  0,0,0,0,0,16,183,204,123,1,0,0,212,222,170,237,77,0,64,222,4,0,64,237,4,209,29,0,0,0,209,29,
+  231,4,0,17,0,64,126,219,0,112,238,7,0,189,172,0,225,238,30,0,202,172,0,225,238,30,0,202,219,0,112,238,
+  7,0,189,231,4,0,17,0,64,126,209,29,0,0,0,209,29,64,222,4,0,64,237,4,0,212,222,170,237,77,0,0,
+  16,183,204,123,1,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,11,0,0,0,0,0,0,0,0,0,0,0,0,0,31,0,0,0,0,0,0,0,0,0,0,0,0,0,79,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,143,0,0,0,0,0,0,0,0,0,0,0,0,0,207,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,255,1,0,0,0,0,0,0,0,0,0,0,0,0,255,5,0,0,0,0,0,0,0,0,
+  0,0,0,0,255,9,0,0,0,0,0,0,0,0,0,0,0,0,255,13,0,0,0,0,0,0,0,0,0,0,0,0,
+  255,31,0,0,0,0,0,0,0,0,0,0,0,0,255,63,0,0,0,0,0,0,0,0,0,0,0,0,223,3,0,0,
+  0,0,0,0,0,0,0,0,0,0,26,0,0,0,0,0,0,0,0,0,0,0,0,0,120,70,1,0,0,0,0,0,
+  0,0,0,0,0,0,222,172,105,1,0,0,0,0,0,0,0,0,0,0,255,255,190,73,0,0,0,0,0,0,0,0,
+  0,0,255,255,255,174,6,0,0,0,0,0,0,0,0,0,185,254,255,239,106,0,0,0,0,0,0,0,0,0,0,96,
+  253,255,174,4,0,0,0,0,0,0,0,0,0,0,161,255,239,25,0,0,0,0,0,0,0,0,0,0,0,250,255,125,
+  0,0,0,0,0,0,0,0,0,0,0,209,255,255,158,4,0,0,0,0,0,0,0,0,0,96,255,255,255,239,90,0,
+  0,0,0,0,0,0,0,0,254,255,255,255,255,175,21,0,0,0,0,0,0,0,251,239,255,255,255,255,255,107,2,0,
+  0,0,0,0,249,239,252,255,255,255,255,255,191,39,0,0,0,65,102,20,0,0,0,0,0,146,255,255,255,41,0,0,
+  0,80,254,255,255,255,239,5,0,0,245,255,255,255,255,255,95,0,32,254,255,255,255,255,255,239,2,144,255,255,255,255,
+  255,255,255,9,241,255,255,255,255,255,255,255,31,244,255,255,255,255,255,255,255,79,246,255,255,255,255,255,255,255,111,246,
+  255,255,255,255,255,255,255,111,244,255,255,255,255,255,255,255,79,241,255,255,255,255,255,255,255,31,144,255,255,255,255,255,
+  255,255,9,32,254,255,255,255,255,255,239,2,0,245,255,255,255,255,255,95,0,0,80,254,255,255,255,239,5,0,0,0,
+  146,255,255,255,41,0,0,0,0,0,65,102,20,0,0,0,0,0,0,0,0,68,0,0,0,0,0,0,0,0,0,52,
+  0,0,0,0,0,0,0,0,0,0,225,4,0,0,0,0,0,0,0,80,14,0,0,0,0,0,0,0,0,0,0,208,
+  78,0,0,0,0,0,0,0,246,11,0,0,0,0,0,0,0,0,0,0,144,239,3,0,0,0,0,0,112,255,7,0,
+  0,0,0,0,0,0,0,0,0,96,255,46,0,0,0,0,0,248,255,3,0,0,0,0,0,0,0,0,0,0,48,255,
+  239,2,0,0,0,160,255,239,0,0,0,0,0,0,0,0,0,0,0,0,254,255,46,0,0,16,250,255,175,0,0,0,
+  0,0,0,0,0,0,0,0,0,251,255,79,0,0,177,255,255,111,0,0,0,0,0,0,0,0,0,0,0,0,248,255,
+  12,50,84,252,255,255,47,0,0,0,0,0,0,0,0,0,0,0,0,245,255,137,203,237,255,222,154,7,0,0,0,0,
+  0,0,0,0,0,0,0,0,241,239,236,255,255,255,190,23,0,0,0,0,0,0,0,0,0,0,0,0,0,208,255,255,
+  255,204,255,255,141,1,0,0,0,0,0,0,0,0,0,0,0,0,176,255,223,5,0,80,253,223,7,0,0,0,0,0,
+  0,0,0,0,0,0,0,195,255,27,0,0,0,177,255,60,0,0,0,0,0,0,0,0,0,0,0,0,232,223,1,0,
+  0,0,16,253,223,56,0,0,0,0,0,0,0,0,0,82,32,251,95,0,0,0,0,0,245,255,255,141,4,0,0,0,
+  0,0,98,234,255,55,252,15,0,0,0,0,0,240,255,255,255,239,73,0,0,98,217,255,255,255,127,253,12,0,0,0,
+  0,0,192,223,254,255,255,255,174,21,81,234,255,255,255,239,253,12,0,0,0,0,0,192,223,247,255,255,255,157,38,0,
+  0,148,254,255,255,255,15,0,0,0,0,0,240,207,115,255,174,38,0,0,0,0,0,64,216,255,255,95,0,0,0,0,
+  0,245,191,2,37,0,0,0,0,0,0,0,0,0,131,253,223,1,0,0,0,16,253,142,0,0,0,0,0,0,0,0,
+  0,0,0,0,195,255,27,0,0,0,177,255,60,0,0,0,0,0,0,0,0,0,0,0,0,112,253,223,5,0,80,253,
+  255,11,0,0,0,0,0,0,0,0,0,0,0,0,16,216,255,255,204,255,255,255,13,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,113,235,255,255,255,206,254,31,0,0,0,0,0,0,0,0,0,0,0,0,112,169,237,255,222,188,152,255,
+  95,0,0,0,0,0,0,0,0,0,0,0,0,242,255,255,207,69,35,192,255,143,0,0,0,0,0,0,0,0,0,0,
+  0,0,246,255,255,27,0,0,244,255,191,0,0,0,0,0,0,0,0,0,0,0,0,250,255,175,1,0,0,226,255,239,
+  0,0,0,0,0,0,0,0,0,0,0,0,254,255,10,0,0,0,32,254,255,3,0,0,0,0,0,0,0,0,0,0,
+  48,255,143,0,0,0,0,0,226,255,6,0,0,0,0,0,0,0,0,0,0,112,255,7,0,0,0,0,0,48,254,9,
+  0,0,0,0,0,0,0,0,0,0,176,111,0,0,0,0,0,0,0,228,13,0,0,0,0,0,0,0,0,0,0,224,
+  5,0,0,0,0,0,0,0,64,30,0,0,0,0,0,0,0,0,0,0,67,0,0,0,0,0,0,0,0,0,68,0,
+  0,0,0,0,0,0,0,51,0,0,0,0,32,250,255,175,2,0,0,228,255,255,255,78,0,32,254,255,255,255,239,2,
+  160,255,255,255,255,255,10,240,255,255,255,255,255,15,243,255,255,255,255,255,63,243,255,255,255,255,255,63,240,255,255,255,
+  255,255,15,160,255,255,255,255,255,10,32,254,255,255,255,239,2,0,228,255,255,255,78,0,0,32,250,255,175,2,0,0,
+  0,0,51,0,0,0,48,217,119,119,119,119,157,3,115,38,34,34,34,34,98,55,105,34,34,34,34,34,34,150,45,34,
+  34,34,34,34,34,210,129,184,34,34,34,34,34,114,141,168,34,34,34,34,34,114,247,136,38,34,34,34,34,114,71,136,
+  43,34,34,34,34,114,199,136,42,34,34,34,34,114,39,143,232,34,34,34,34,114,39,132,184,34,34,34,34,114,39,140,
+  136,34,34,34,34,114,39,82,136,46,34,34,34,114,39,226,136,37,34,34,34,114,39,194,136,200,34,34,34,114,39,34,
+  133,232,34,34,34,114,39,34,142,248,34,34,34,114,39,34,162,136,44,34,34,114,39,34,178,136,36,34,34,114,39,34,
+  98,136,47,34,34,114,39,34,34,138,200,34,34,114,39,34,34,139,72,34,34,114,39,34,34,134,248,34,34,114,39,34,
+  34,162,136,38,34,114,45,34,34,34,34,34,34,210,105,34,34,34,34,34,34,150,115,38,34,34,34,34,98,55,48,217,
+  119,119,119,119,157,3,48,217,119,119,119,119,157,3,115,38,34,34,34,34,98,55,105,34,34,34,34,34,34,150,45,34,
+  34,34,34,34,34,210,39,34,34,162,136,38,34,114,39,34,34,134,248,34,34,114,39,34,34,139,72,34,34,114,39,34,
+  34,138,200,34,34,114,39,34,98,136,47,34,34,114,39,34,178,136,36,34,34,114,39,34,162,136,44,34,34,114,39,34,
+  142,248,34,34,34,114,39,34,133,232,34,34,34,114,39,194,136,200,34,34,34,114,39,226,136,37,34,34,34,114,39,82,
+  136,46,34,34,34,114,39,140,136,34,34,34,34,114,39,132,184,34,34,34,34,114,39,143,232,34,34,34,34,114,199,136,
+  42,34,34,34,34,114,71,136,43,34,34,34,34,114,247,136,38,34,34,34,34,114,141,168,34,34,34,34,34,114,129,184,
+  34,34,34,34,34,114,45,34,34,34,34,34,34,210,105,34,34,34,34,34,34,150,115,38,34,34,34,34,98,55,48,217,
+  119,119,119,119,157,3,48,105,102,102,102,102,102,102,102,150,3,99,42,34,34,34,34,34,34,34,162,54,165,34,34,34,
+  34,34,34,34,34,34,90,126,34,34,34,34,34,34,34,34,34,231,126,34,34,66,17,36,29,241,34,34,231,126,34,34,
+  242,17,45,20,65,34,34,231,126,34,34,23,129,34,31,209,34,34,231,126,34,34,20,65,114,17,40,34,34,231,126,34,
+  34,31,209,178,17,36,34,34,231,126,34,114,17,40,242,17,45,34,34,231,126,34,178,17,44,23,129,34,34,34,231,126,
+  34,242,17,34,27,193,34,34,34,231,126,34,28,177,34,31,33,34,34,34,231,126,34,27,193,194,17,43,34,34,34,231,
+  126,34,17,47,178,17,44,34,34,34,231,126,194,17,43,18,241,34,34,34,34,231,126,130,17,44,28,177,34,34,34,34,
+  231,126,18,241,34,24,113,34,34,34,34,231,126,28,177,210,17,47,34,34,34,34,231,126,24,113,66,17,43,34,34,34,
+  34,231,174,17,47,130,17,39,34,34,34,34,231,190,17,36,29,241,34,34,34,34,34,231,254,17,45,20,65,34,34,34,
+  34,34,231,30,241,34,31,209,34,34,34,34,34,231,126,34,34,34,34,34,34,34,34,34,231,165,34,34,34,34,34,34,
+  34,34,34,90,99,42,34,34,34,34,34,34,34,162,54,48,105,102,102,102,102,102,102,102,150,3,48,101,102,102,102,102,
+  102,102,102,102,102,102,86,3,192,253,34,34,34,34,34,34,34,34,34,34,223,12,107,34,34,34,34,34,34,34,34,34,
+  34,34,34,182,215,34,34,34,34,34,34,34,34,34,34,34,34,125,215,34,34,130,17,46,226,17,47,26,65,34,34,125,
+  215,34,34,162,17,36,24,145,34,30,241,34,34,125,215,34,34,226,17,47,26,65,130,17,41,34,34,125,215,34,34,24,
+  145,34,30,241,162,17,36,34,34,125,215,34,34,26,65,130,17,41,226,17,47,34,34,125,215,34,34,30,241,162,17,36,
+  24,145,34,34,34,125,215,34,130,17,41,226,17,47,26,65,34,34,34,125,215,34,162,17,36,24,145,34,17,241,34,34,
+  34,125,215,34,18,17,34,26,65,130,17,41,34,34,34,125,215,34,20,145,34,17,33,162,17,36,34,34,34,125,215,34,
+  25,65,66,17,42,18,17,34,34,34,34,125,215,34,17,33,146,17,40,20,161,34,34,34,34,125,215,66,17,42,31,17,
+  34,25,129,34,34,34,34,125,215,146,17,40,20,161,242,17,46,34,34,34,34,125,215,31,225,34,25,129,66,17,42,34,
+  34,34,34,125,215,20,161,242,17,46,146,17,40,34,34,34,34,125,215,25,129,66,17,42,31,225,34,34,34,34,34,125,
+  103,17,46,146,17,40,20,161,34,34,34,34,34,125,231,17,42,31,225,34,25,129,34,34,34,34,34,125,23,17,40,20,
+  161,242,17,46,34,34,34,34,34,125,215,34,34,34,34,34,34,34,34,34,34,34,34,125,107,34,34,34,34,34,34,34,
+  34,34,34,34,34,182,192,253,34,34,34,34,34,34,34,34,34,34,223,12,48,101,102,102,102,102,102,102,102,102,102,102,
+  86,3,0,160,187,0,75,68,176,68,150,66,148,51,74,52,51,74,54,51,74,54,51,74,54,51,74,54,51,74,54,51,
+  74,54,51,74,54,51,74,54,51,74,54,51,74,54,51,74,54,51,74,54,51,202,54,51,202,54,51,202,54,51,202,54,
+  51,202,54,51,202,54,51,202,54,51,202,54,51,202,54,51,202,54,51,202,61,51,200,61,51,200,61,51,200,61,51,200,
+  61,51,200,61,51,200,61,51,232,61,51,232,61,51,232,61,51,232,61,51,232,61,51,232,61,51,232,61,51,232,61,51,
+  232,61,51,232,61,51,232,61,51,232,61,51,232,61,51,232,61,51,232,61,51,232,49,51,207,113,51,80,30,119,0,229,
+  17,0,128,85,80,136,5,0,0,160,238,10,0,0,80,238,5,0,0,0,53,124,0,0,0,176,187,3,0,0,192,179,
+  203,0,0,0,112,187,2,0,0,0,187,7,0,0,0,179,7,0,0,0,179,7,0,0,0,179,7,0,0,0,179,7,
+  0,0,0,189,7,0,0,0,189,7,2,0,0,189,7,203,0,0,189,7,183,35,0,189,7,32,51,2,189,7,0,183,
+  3,189,7,192,203,0,189,7,179,7,0,189,7,44,0,0,189,7,0,0,0,189,7,0,0,0,189,7,0,0,0,189,
+  7,0,0,0,109,7,39,0,0,109,7,59,2,0,111,7,50,43,0,111,7,0,179,7,111,7,0,188,12,111,7,50,
+  43,0,111,7,59,2,0,111,7,39,0,0,111,7,0,0,0,111,7,0,0,0,111,7,0,0,0,111,7,0,0,0,
+  111,7,44,0,0,111,7,179,7,0,111,7,192,203,0,111,7,0,183,3,105,7,32,51,2,105,7,183,35,0,105,7,
+  203,0,0,105,7,2,0,0,105,7,0,0,0,105,7,0,0,0,105,7,0,0,0,105,7,0,0,0,105,7,0,0,
+  0,105,7,0,0,0,105,7,0,0,0,97,7,0,0,64,97,2,0,64,25,193,0,0,16,97,3,0,0,213,124,0,
+  0,80,238,5,0,0,160,238,10,0,0,80,136,5,0,0,0,160,187,0,59,51,176,51,150,50,147,68,58,67,68,58,
+  70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,
+  58,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,77,
+  68,202,77,68,200,77,68,200,77,68,200,77,68,200,77,68,200,77,68,200,77,68,232,77,68,232,77,68,232,77,68,232,
+  77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,
+  232,77,68,232,65,68,207,113,68,80,30,119,0,229,17,0,128,85,80,102,5,0,0,160,204,10,0,0,80,204,5,0,
+  0,0,53,235,0,0,0,208,221,11,0,0,176,211,189,0,0,0,112,221,2,0,0,0,221,7,0,0,0,211,7,0,
+  0,0,211,7,0,0,0,223,7,0,0,0,223,7,0,0,0,223,7,0,0,0,223,7,2,0,0,223,7,189,0,0,
+  223,7,222,35,0,223,7,32,51,14,223,7,0,222,3,143,7,176,189,0,143,7,211,14,0,143,7,43,0,0,143,7,
+  0,0,0,143,7,0,0,0,134,7,0,0,0,134,7,0,0,0,134,7,46,0,0,134,7,61,2,0,134,7,50,237,
+  0,134,7,0,211,7,134,7,0,219,11,134,7,50,237,0,134,7,61,2,0,134,7,46,0,0,134,7,0,0,0,134,
+  7,0,0,0,134,7,0,0,0,198,7,0,0,0,198,7,43,0,0,201,7,211,14,0,201,7,176,189,0,201,7,0,
+  222,3,201,7,32,51,14,201,7,222,35,0,201,7,189,0,0,201,7,2,0,0,201,7,0,0,0,201,7,0,0,0,
+  201,7,0,0,0,201,7,0,0,0,201,7,0,0,0,201,7,0,0,0,201,7,0,0,0,193,7,0,0,64,129,2,
+  0,64,25,188,0,0,16,193,3,0,0,245,235,0,0,80,204,5,0,0,160,204,10,0,0,80,102,5,0,0,0,0,
+  0,32,0,2,0,0,0,0,0,0,207,122,252,0,0,0,0,0,240,165,105,87,15,0,0,0,0,95,154,237,118,245,
+  0,0,0,240,165,217,237,110,87,15,0,0,95,154,221,237,238,118,245,0,240,165,217,221,212,238,110,87,15,194,154,221,
+  77,68,237,238,118,44,160,217,221,68,68,212,238,110,7,112,230,238,77,68,132,17,177,3,194,103,238,222,68,24,17,59,
+  44,240,117,230,238,141,17,177,83,15,0,95,103,238,30,17,59,245,0,0,240,117,230,30,177,83,15,0,0,0,95,103,
+  30,59,245,0,0,0,0,240,117,182,83,15,0,0,0,0,0,207,55,252,0,0,0,0,0,0,32,0,2,0,0,0,
+  0,0,0,0,0,16,1,0,0,0,0,0,0,0,0,0,0,49,19,0,0,0,0,0,0,0,0,0,16,99,54,1,
+  0,0,0,0,0,0,0,0,49,102,102,19,0,0,0,0,0,0,0,16,99,70,100,54,1,0,0,0,0,0,0,49,
+  102,36,66,102,19,0,0,0,0,0,16,99,70,18,33,100,54,1,0,0,0,0,49,102,36,1,16,66,102,19,0,0,
+  0,16,99,70,18,0,0,33,100,54,1,0,0,49,102,36,1,0,0,16,66,102,19,0,16,99,70,18,0,0,0,0,
+  33,100,54,1,49,102,36,1,0,0,0,0,16,66,102,19,49,102,36,1,0,0,0,0,16,66,102,19,16,99,70,18,
+  0,0,0,0,33,100,54,1,0,49,102,36,1,0,0,16,66,102,19,0,0,16,99,70,18,0,0,33,100,54,1,0,
+  0,0,49,102,36,1,16,66,102,19,0,0,0,0,16,99,70,18,33,100,54,1,0,0,0,0,0,49,102,36,66,102,
+  19,0,0,0,0,0,0,16,99,70,100,54,1,0,0,0,0,0,0,0,49,102,102,19,0,0,0,0,0,0,0,0,
+  16,99,54,1,0,0,0,0,0,0,0,0,0,49,19,0,0,0,0,0,0,0,0,0,0,16,1,0,0,0,0,0,
+  6,9,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,159,111,28,6,1,0,0,0,0,0,0,0,0,0,
+  0,0,2,95,255,239,143,46,9,3,0,0,0,0,0,0,0,0,0,0,26,239,255,255,255,191,95,11,5,0,0,0,
+  0,0,0,0,0,3,127,255,253,248,253,255,223,143,46,8,2,0,0,0,0,0,0,44,255,255,244,240,245,251,255,255,
+  175,79,11,4,0,0,0,0,5,159,255,251,0,0,0,242,248,254,255,223,127,29,3,0,0,4,143,255,252,0,0,0,
+  241,247,253,255,239,159,63,4,0,0,27,239,255,245,0,244,250,255,255,207,111,28,6,1,0,0,3,127,255,253,247,253,
+  255,255,159,63,10,4,0,0,0,0,0,9,223,255,255,255,223,127,29,7,1,0,0,0,0,0,0,1,95,255,255,175,
+  79,11,4,0,0,0,0,0,0,0,0,0,8,175,143,46,8,2,0,0,0,0,0,0,0,0,0,0,0,8,11,5,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,242,248,242,0,0,0,0,0,0,251,255,250,244,0,0,0,0,244,
+  255,255,255,253,247,241,0,243,255,255,255,254,248,242,0,250,255,251,245,240,0,0,242,248,242,0,0,0,0,0,0,0,
+  0,0,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,8,95,111,111,111,111,111,111,111,111,95,8,0,
+  0,0,0,0,5,111,255,255,255,255,255,255,255,255,255,255,127,6,0,0,0,3,78,255,255,255,255,255,255,255,255,255,
+  255,255,255,79,4,0,1,45,239,255,255,255,255,255,255,255,255,255,255,255,255,239,62,2,10,207,255,249,0,0,0,0,
+  0,0,0,0,0,0,249,255,223,28,11,255,255,249,0,0,0,0,0,0,0,0,0,0,249,255,255,45,11,255,255,251,
+  244,244,244,244,244,244,244,244,244,244,251,255,255,45,11,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,45,
+  11,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,45,11,255,255,255,255,255,244,0,0,0,0,244,255,255,
+  255,255,255,45,11,255,255,255,255,255,244,0,0,0,0,244,255,255,255,255,255,45,11,255,255,255,255,255,247,244,244,244,
+  244,247,255,255,255,255,255,45,11,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,191,45,3,6,6,6,6,6,
+  6,6,6,6,6,6,6,6,6,6,6,4,246,255,255,255,255,255,255,191,159,223,255,246,246,255,255,255,255,255,255,79,
+  15,159,255,246,244,251,251,251,251,251,251,219,203,235,251,244,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,187,191,191,191,191,187,0,0,0,0,0,0,187,191,191,191,191,187,0,0,0,
+  0,0,0,184,187,187,187,187,184,0,0,0,0,0,0,0,0,4,11,9,9,9,9,9,9,9,9,11,4,0,0,0,
+  0,0,0,0,0,0,4,78,239,255,255,255,255,255,255,255,255,239,78,4,0,0,0,0,0,0,0,4,78,239,255,255,
+  255,255,255,255,255,255,255,255,239,78,4,0,0,0,0,0,4,78,239,255,255,239,255,255,255,239,255,255,255,239,255,239,
+  78,4,0,0,0,3,78,239,255,255,191,15,207,255,191,15,207,255,191,15,207,255,239,78,3,0,0,8,207,255,255,255,
+  239,143,255,255,239,143,255,255,239,143,255,255,255,207,8,0,0,10,239,255,255,255,255,255,255,255,255,255,255,255,255,255,
+  255,255,255,239,10,0,0,28,255,253,249,249,249,249,249,249,249,249,249,249,249,249,249,249,253,255,28,0,0,62,255,249,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,249,255,62,0,1,79,255,251,244,244,244,244,244,244,244,244,244,244,
+  244,244,244,244,251,255,79,1,1,46,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,111,46,1,0,1,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,242,246,246,246,246,246,246,246,246,246,246,246,
+  246,246,246,242,246,255,255,255,255,255,255,255,255,255,255,255,255,255,255,246,244,251,251,251,251,251,251,251,251,251,251,251,
+  251,251,251,244,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,6,15,15,15,15,15,15,15,15,6,0,0,0,0,0,0,0,0,0,0,0,0,0,1,13,31,111,111,111,
+  111,111,111,31,13,0,0,0,0,0,0,0,3,10,3,0,0,0,8,15,159,255,255,255,255,255,255,159,15,8,0,0,
+  0,3,10,3,8,15,15,12,5,2,15,47,255,255,251,251,251,251,255,255,63,15,2,5,11,15,15,8,8,15,127,63,
+  15,15,15,191,255,251,0,0,0,0,251,255,191,15,15,15,63,127,15,8,8,15,175,207,159,47,79,255,255,243,0,0,
+  0,0,243,255,255,79,47,159,207,175,15,8,8,15,175,207,207,63,207,255,249,0,0,0,0,0,0,249,255,223,63,207,
+  207,175,15,8,8,15,175,207,207,63,223,255,248,0,0,0,0,0,0,248,255,207,63,207,207,175,15,8,8,15,175,207,
+  159,47,79,255,255,242,0,0,0,0,242,255,255,79,47,159,207,175,15,8,8,15,127,63,15,15,15,191,255,251,0,0,
+  0,0,251,255,191,15,15,15,63,127,15,8,8,15,15,13,7,3,15,63,255,255,251,251,251,251,255,255,47,15,3,7,
+  13,15,15,8,4,12,5,0,0,0,8,15,159,255,255,255,255,255,255,159,15,8,0,0,0,5,12,4,0,0,0,0,
+  0,0,0,13,31,111,111,111,111,111,111,31,13,1,0,0,0,0,0,0,0,0,0,0,0,0,0,6,15,15,15,15,
+  15,15,15,15,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,2,2,2,2,2,0,0,0,0,
+  0,0,0,0,0,0,244,244,244,244,0,0,0,244,255,255,255,255,244,0,240,252,255,255,255,255,252,240,246,255,255,255,
+  255,255,255,246,247,255,255,255,255,255,255,247,240,253,255,255,255,255,253,240,0,244,255,255,255,255,244,0,0,0,244,244,
+  244,244,0,0,0,240,187,0,91,85,176,85,151,82,149,51,95,60,51,86,55,51,86,55,51,86,55,51,86,55,51,86,
+  55,51,86,55,51,86,55,51,86,55,51,86,55,51,86,55,51,86,55,51,86,55,51,198,55,51,198,55,51,198,55,51,
+  198,55,51,198,55,51,198,55,51,198,55,51,198,55,51,198,55,51,198,55,51,198,61,51,198,61,51,198,61,51,198,61,
+  51,198,61,51,198,61,51,198,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,
+  61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,230,61,51,234,49,51,194,129,51,64,30,136,
+  0,228,17,0,160,68,80,119,5,0,0,144,221,9,0,0,80,221,5,0,0,0,69,235,0,0,0,192,204,11,0,0,
+  176,196,188,0,0,0,96,204,2,0,0,0,204,6,0,0,0,196,6,0,0,0,196,6,0,0,0,207,6,0,0,0,
+  207,6,0,0,0,207,6,0,0,0,207,6,2,0,0,207,6,188,0,0,207,6,206,36,0,207,6,32,68,14,207,6,
+  0,206,4,143,6,96,188,0,143,6,196,14,0,143,6,43,0,0,143,6,0,0,0,143,6,0,0,0,143,6,0,0,
+  0,135,6,0,0,0,135,6,46,0,0,135,6,76,2,0,135,6,66,236,0,135,6,0,196,6,135,6,0,203,11,135,
+  6,66,236,0,135,6,76,2,0,135,6,46,0,0,135,6,0,0,0,135,6,0,0,0,135,6,0,0,0,135,6,0,
+  0,0,215,6,43,0,0,218,6,196,14,0,218,6,96,188,0,218,6,0,206,4,218,6,32,68,14,218,6,206,36,0,
+  218,6,188,0,0,218,6,2,0,0,218,6,0,0,0,218,6,0,0,0,218,6,0,0,0,218,6,0,0,0,218,6,
+  0,0,0,218,6,0,0,0,218,6,0,0,0,209,14,0,0,48,129,2,0,48,26,189,0,0,16,209,4,0,0,245,
+  235,0,0,80,221,5,0,0,144,221,9,0,0,80,119,5,0,0,0,160,187,0,59,51,176,51,150,50,147,68,58,67,
+  68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,70,68,58,
+  70,68,58,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,202,70,68,
+  202,70,68,202,77,68,200,77,68,200,77,68,200,77,68,200,77,68,200,77,68,200,77,68,232,77,68,232,77,68,232,77,
+  68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,77,68,232,
+  77,68,232,77,68,232,65,68,207,113,68,80,30,119,0,229,17,0,128,85,80,204,5,0,0,144,102,9,0,0,80,102,
+  5,0,0,0,53,43,0,0,0,160,170,3,0,0,176,163,186,0,0,0,112,170,2,0,0,0,170,7,0,0,0,163,
+  7,0,0,0,163,7,0,0,0,163,7,0,0,0,163,7,0,0,0,163,7,0,0,0,163,7,2,0,0,172,7,186,
+  0,0,172,7,167,35,0,172,7,32,51,2,172,7,0,167,3,172,7,176,186,0,172,7,163,7,0,172,7,43,0,0,
+  172,7,0,0,0,108,7,0,0,0,108,7,0,0,0,108,7,0,0,0,108,7,39,0,0,108,7,58,2,0,108,7,
+  50,42,0,108,7,0,163,7,104,7,0,171,11,104,7,50,42,0,104,7,58,2,0,104,7,39,0,0,104,7,0,0,
+  0,104,7,0,0,0,104,7,0,0,0,104,7,0,0,0,104,7,43,0,0,104,7,163,7,0,104,7,176,186,0,248,
+  7,0,167,3,248,7,32,51,2,253,7,167,35,0,253,7,186,0,0,253,7,2,0,0,253,7,0,0,0,253,7,0,
+  0,0,253,7,0,0,0,253,7,0,0,0,253,7,0,0,0,253,7,0,0,0,253,7,0,0,0,241,7,0,0,64,
+  97,2,0,64,29,239,0,0,16,241,14,0,0,197,126,0,0,80,102,5,0,0,144,102,9,0,0,80,204,5,0,0,
+  0,0,0,0,128,8,0,0,0,0,0,0,0,0,136,136,0,0,0,0,0,0,0,128,120,139,8,32,0,0,0,0,
+  0,136,199,182,136,146,3,0,0,0,128,120,92,109,139,147,41,0,0,0,136,199,85,221,182,56,2,0,224,142,120,92,
+  85,221,109,139,8,0,158,137,199,85,245,213,221,182,136,0,146,115,92,85,255,95,221,109,139,8,136,199,85,245,255,255,
+  213,221,182,136,136,107,221,93,255,255,21,17,74,136,128,184,214,221,245,95,17,161,132,8,0,136,107,221,93,21,17,74,
+  136,0,0,128,184,214,221,17,161,132,8,0,0,0,136,107,221,17,74,136,0,0,0,0,128,184,214,161,132,8,0,0,
+  0,0,0,136,107,186,136,0,0,0,0,0,0,128,184,52,233,0,0,0,0,0,0,0,136,152,233,0,0,0,0,0,
+  0,0,128,40,14,0,0,0,0,0,0,0,48,3,0,0,0,0,0,0,0,0,211,61,0,0,0,0,0,0,0,48,
+  45,215,3,0,0,0,0,0,0,211,130,118,61,0,0,0,0,0,48,45,248,106,215,3,0,0,0,0,211,130,255,170,
+  118,61,0,0,0,48,45,248,255,170,106,215,3,0,0,211,130,255,239,164,170,118,61,0,48,45,248,255,190,75,170,106,
+  215,3,211,130,255,239,187,187,164,170,118,61,211,103,170,74,187,187,28,17,89,61,48,125,166,170,180,203,17,145,213,3,
+  0,211,103,170,74,28,17,89,61,0,0,48,125,166,170,17,145,213,3,0,0,0,211,103,170,17,89,61,0,0,0,0,
+  48,125,166,145,213,3,0,0,0,0,0,211,103,89,61,0,0,0,0,0,0,48,125,213,3,0,0,0,0,0,0,0,
+  211,61,0,0,0,0,0,0,0,0,48,3,0,0,0,0,48,187,187,187,187,187,187,187,3,128,17,17,17,17,17,17,
+  17,8,154,153,124,151,124,151,124,156,169,0,240,109,213,109,213,109,253,0,64,228,68,228,68,228,68,68,36,32,34,34,
+  34,34,34,34,34,2,
 };
diff --git a/games/numdash/src/assets_lv.h b/games/numdash/src/assets_lv.h
index 81c0045..21ae200 100644
--- a/games/numdash/src/assets_lv.h
+++ b/games/numdash/src/assets_lv.h
@@ -61,83 +61,45 @@ enum {
   SPR_WAVY = SPR_COUNT + 55,
   SPR_WAVY_L = SPR_COUNT + 56,
   SPR_WAVY_R = SPR_COUNT + 57,
-  SPR_RINGSEG_L = SPR_COUNT + 58,
-  SPR_RINGSEG_M = SPR_COUNT + 59,
-  SPR_RINGSEG_S = SPR_COUNT + 60,
-  SPR_RINGSEG_XS = SPR_COUNT + 61,
-  SPR_SWIRL_L = SPR_COUNT + 62,
-  SPR_SWIRL_M = SPR_COUNT + 63,
-  SPR_PICKUP_RING1 = SPR_COUNT + 64,
-  SPR_PICKUP_RING2 = SPR_COUNT + 65,
-  SPR_PICKUP_RING4 = SPR_COUNT + 66,
-  SPR_FIRE_L = SPR_COUNT + 67,
-  SPR_FIRE_L_IN = SPR_COUNT + 68,
-  SPR_FIRE_BURST = SPR_COUNT + 69,
-  SPR_FIRE_BURST_IN = SPR_COUNT + 70,
-  SPR_FIRE_T1 = SPR_COUNT + 71,
-  SPR_FIRE_T1_IN = SPR_COUNT + 72,
-  SPR_FIRE_T2 = SPR_COUNT + 73,
-  SPR_FIRE_T2_IN = SPR_COUNT + 74,
-  SPR_COGSAW_L = SPR_COUNT + 75,
-  SPR_COGSAW_L_RING = SPR_COUNT + 76,
-  SPR_COGSAW_M = SPR_COUNT + 77,
-  SPR_COGSAW_M_RING = SPR_COUNT + 78,
-  SPR_COGSAW_S = SPR_COUNT + 79,
-  SPR_COGSAW_S_RING = SPR_COUNT + 80,
-  SPR_DARKBLADE_L = SPR_COUNT + 81,
-  SPR_DARKBLADE_L_CORE = SPR_COUNT + 82,
-  SPR_DARKBLADE_M = SPR_COUNT + 83,
-  SPR_DARKBLADE_M_CORE = SPR_COUNT + 84,
-  SPR_BEAST_TOP = SPR_COUNT + 85,
-  SPR_BEAST_BOT = SPR_COUNT + 86,
-  SPR_BEAST_EYE = SPR_COUNT + 87,
-  SPR_SPEED0 = SPR_COUNT + 88,
-  SPR_SPEED1 = SPR_COUNT + 89,
-  SPR_SPEED2 = SPR_COUNT + 90,
-  SPR_SPEED3 = SPR_COUNT + 91,
-  SPR_PORTAL_WAVE_BACK = SPR_COUNT + 92,
-  SPR_PORTAL_WAVE_FRONT = SPR_COUNT + 93,
-  SPR_PORTAL_ROBOT_BACK = SPR_COUNT + 94,
-  SPR_PORTAL_ROBOT_FRONT = SPR_COUNT + 95,
-  SPR_PORTAL_DUAL_BACK = SPR_COUNT + 96,
-  SPR_PORTAL_DUAL_FRONT = SPR_COUNT + 97,
-  SPR_PORTAL_SINGLE_BACK = SPR_COUNT + 98,
-  SPR_PORTAL_SINGLE_FRONT = SPR_COUNT + 99,
-  SPR_PORTAL_TELE_BACK = SPR_COUNT + 100,
-  SPR_PORTAL_TELE_FRONT = SPR_COUNT + 101,
-  SPR_PORTAL_TELE_EXIT_BACK = SPR_COUNT + 102,
-  SPR_PORTAL_TELE_EXIT_FRONT = SPR_COUNT + 103,
-  SPR_ORB_GREEN = SPR_COUNT + 104,
-  SPR_GLOW_ORB_GREEN = SPR_COUNT + 105,
-  SPR_KEY = SPR_COUNT + 106,
-  SPR_KEY_DETAIL = SPR_COUNT + 107,
-  SPR_KEYHOLE = SPR_COUNT + 108,
-  SPR_KEYHOLE_DETAIL = SPR_COUNT + 109,
-  SPR_WAVE1_P = SPR_COUNT + 110,
-  SPR_WAVE1_S = SPR_COUNT + 111,
-  SPR_ROBOT1_P = SPR_COUNT + 112,
-  SPR_ROBOT1_S = SPR_COUNT + 113,
-  SPR_SPIDER1_P = SPR_COUNT + 114,
-  SPR_SPIDER1_S = SPR_COUNT + 115,
-  SPR_SWING1_P = SPR_COUNT + 116,
-  SPR_SWING1_S = SPR_COUNT + 117,
-  SPR_PORTAL_SPIDER_BACK = SPR_COUNT + 118,
-  SPR_PORTAL_SPIDER_FRONT = SPR_COUNT + 119,
-  SPR_PORTAL_SWING_BACK = SPR_COUNT + 120,
-  SPR_PORTAL_SWING_FRONT = SPR_COUNT + 121,
-  SPR_ORB_DASH = SPR_COUNT + 122,
-  SPR_ORB_DASH_G = SPR_COUNT + 123,
-  SPR_ORB_SPIDER = SPR_COUNT + 124,
-  SPR_ORB_RED = SPR_COUNT + 125,
-  SPR_GLOW_ORB_RED = SPR_COUNT + 126,
-  SPR_PAD_RED = SPR_COUNT + 127,
-  SPR_ORB_TOGGLE = SPR_COUNT + 128,
-  SPR_ORB_TOGGLE_DETAIL = SPR_COUNT + 129,
-  SPR_PICKUP_ITEM = SPR_COUNT + 130,
-  SPR_PICKUP_ITEM_DETAIL = SPR_COUNT + 131,
-  SPR_LV_END = SPR_COUNT + 132
+  SPR_COGSAW_L = SPR_COUNT + 58,
+  SPR_COGSAW_L_RING = SPR_COUNT + 59,
+  SPR_COGSAW_M = SPR_COUNT + 60,
+  SPR_COGSAW_M_RING = SPR_COUNT + 61,
+  SPR_COGSAW_S = SPR_COUNT + 62,
+  SPR_COGSAW_S_RING = SPR_COUNT + 63,
+  SPR_DARKBLADE_L = SPR_COUNT + 64,
+  SPR_DARKBLADE_L_CORE = SPR_COUNT + 65,
+  SPR_DARKBLADE_M = SPR_COUNT + 66,
+  SPR_DARKBLADE_M_CORE = SPR_COUNT + 67,
+  SPR_SPEED0 = SPR_COUNT + 68,
+  SPR_SPEED1 = SPR_COUNT + 69,
+  SPR_SPEED2 = SPR_COUNT + 70,
+  SPR_SPEED3 = SPR_COUNT + 71,
+  SPR_PORTAL_WAVE_BACK = SPR_COUNT + 72,
+  SPR_PORTAL_WAVE_FRONT = SPR_COUNT + 73,
+  SPR_PORTAL_ROBOT_BACK = SPR_COUNT + 74,
+  SPR_PORTAL_ROBOT_FRONT = SPR_COUNT + 75,
+  SPR_ORB_GREEN = SPR_COUNT + 76,
+  SPR_GLOW_ORB_GREEN = SPR_COUNT + 77,
+  SPR_WAVE1_P = SPR_COUNT + 78,
+  SPR_WAVE1_S = SPR_COUNT + 79,
+  SPR_ROBOT1_P = SPR_COUNT + 80,
+  SPR_ROBOT1_S = SPR_COUNT + 81,
+  SPR_SPIDER1_P = SPR_COUNT + 82,
+  SPR_SPIDER1_S = SPR_COUNT + 83,
+  SPR_SWING1_P = SPR_COUNT + 84,
+  SPR_SWING1_S = SPR_COUNT + 85,
+  SPR_PORTAL_SPIDER_BACK = SPR_COUNT + 86,
+  SPR_PORTAL_SPIDER_FRONT = SPR_COUNT + 87,
+  SPR_PORTAL_SWING_BACK = SPR_COUNT + 88,
+  SPR_PORTAL_SWING_FRONT = SPR_COUNT + 89,
+  SPR_ORB_SPIDER = SPR_COUNT + 90,
+  SPR_ORB_RED = SPR_COUNT + 91,
+  SPR_GLOW_ORB_RED = SPR_COUNT + 92,
+  SPR_PAD_RED = SPR_COUNT + 93,
+  SPR_LV_END = SPR_COUNT + 94
 };
-extern const Sprite sprites_lv[132];
+extern const Sprite sprites_lv[94];
 extern const uint8_t sprite_blob_lv[];
 extern const uint16_t sprite_pal_rgb_lv[][16];
 extern const uint8_t sprite_pal_a_lv[][16];
diff --git a/games/numdash/src/editor.c b/games/numdash/src/editor.c
index 4aee453..f5e2127 100644
--- a/games/numdash/src/editor.c
+++ b/games/numdash/src/editor.c
@@ -1,6 +1,5 @@
-/* "My levels" list and the level editor, laid out like Geometry Dash's
- * editor: grid view on top, build/edit/delete modes and an object palette
- * in the bottom panel. */
+/* "My levels" list and the level editor: the grid on the left, NumDash's toolbar on the
+ * right (mode tabs, the objects of the page in two columns, page, count and turn). */
 #include "app.h"
 #include "ui.h"
 #include <math.h>
@@ -11,7 +10,7 @@ enum { MODE_BUILD, MODE_EDIT, MODE_DELETE };
 enum { UNDO_ADD, UNDO_REMOVE, UNDO_XF };
 typedef struct { uint8_t op; uint16_t index; LObj obj; } Undo;
 #define UNDO_N 32
-#define PAGE_ITEMS 12
+#define PAGE_ITEMS 8      /* the side toolbar shows 2 x 4 objects */
 #define PAGES ((EDITOR_TYPES + PAGE_ITEMS - 1) / PAGE_ITEMS)
 
 static Level edit_level;
@@ -296,10 +295,9 @@ void editor_frame(float dt) {
   float cx = app.cur_x * 30 + 15, cy = app.cur_y * 30 + 15;
   float want_x = app.edit_cam_x, want_y = app.edit_cam_y;
   if (cx - want_x < 90) want_x = cx - 90;
-  if (cx - want_x > VIEW_W - 90) want_x = cx - (VIEW_W - 90);
+  if (cx - want_x > VIEW_W - 150) want_x = cx - (VIEW_W - 150);   /* (the toolbar covers the right side) */
   if (want_x < -60) want_x = -60;
-  /* the bottom panel hides the lowest 90 units of the view */
-  if (cy - want_y > 250) want_y = cy - 250;
+  if (cy - want_y > 300) want_y = cy - 300;
   if (cy - want_y < 15) want_y = cy - 15;
   if (want_y < 0) want_y = 0;
   float k = fminf(1, dt * 14);
@@ -473,7 +471,7 @@ static void draw_cursor(void) {
     cell_offset(t, app.rotate, &ox, &oy);
     draw_type_icon(t, x + 10 + ox * 2 / 3, y + 10 - oy * 2 / 3, 40, app.rotate, 150);
   }
-  color_t c = app.edit_mode == MODE_BUILD ? 0xffff : app.edit_mode == MODE_EDIT ? rgb(0, 255, 0) : rgb(255, 60, 60);
+  color_t c = app.edit_mode == MODE_BUILD ? rgb(255, 122, 89) : app.edit_mode == MODE_EDIT ? rgb(46, 196, 182) : rgb(240, 72, 74);
   unsigned a = (unsigned)(170 + 80 * sinf(app.t * 6));
   gfx_blend(x, y, 21, 2, c, a);
   gfx_blend(x, y + 19, 21, 2, c, a);
@@ -481,31 +479,38 @@ static void draw_cursor(void) {
   gfx_blend(x + 19, y + 2, 2, 17, c, a);
 }
 
+/* NumDash's toolbar (Calcade, 19 octobre 2026): a column on the right with the mode on top
+   (three tabs), the objects of the page in two columns, then the page, the count and the turn. */
 static void panel(void) {
-  const int top = 178;
-  gfx_blend(0, top, GFX_W, GFX_H - top, 0, 190);
-  gfx_fill(0, top, GFX_W, 1, rgb(90, 90, 90));
+  const int x0 = 246, w = GFX_W - x0;
+  gfx_blend(x0, 0, w, GFX_H, rgb(20, 12, 40), 205);
+  gfx_fill(x0, 0, 1, GFX_H, rgb(255, 122, 89));
   static const char *const modes[3] = {T("BUILD"), T("EDIT"), T("DELETE")};
-  for (int i = 0; i < 3; i++) ui_text_button(30, top + 12 + i * 20, 50, 17, modes[i], app.edit_mode == i ? BTN_GREEN : BTN_GRAY, 1);
+  static const uint8_t tab_rgb[3][3] = {{255, 122, 89}, {46, 196, 182}, {240, 72, 74}};
+  for (int i = 0; i < 3; i++) {
+    int tx = x0 + 4 + i * 24;
+    bool on = app.edit_mode == i;
+    gfx_round_rect(tx, on ? 4 : 7, 22, on ? 12 : 9, 3, rgb(tab_rgb[i][0], tab_rgb[i][1], tab_rgb[i][2]), on ? 256 : 110);
+  }
+  gfx_text_center(FONT_SMALL, x0 + w / 2, 32, modes[app.edit_mode < 3 ? app.edit_mode : 0], 0xffff, 0xffff, 256);
   int page = app.edit_page;
   for (int k = 0; k < PAGE_ITEMS; k++) {
     int idx = page * PAGE_ITEMS + k;
     if (idx >= EDITOR_TYPES) break;
-    int bx = 70 + (k % 6) * 32, by = top + 5 + (k / 6) * 29;
+    int bx = x0 + 6 + (k % 2) * 34, by = 42 + (k / 2) * 34;
     bool on = idx == app.brush;
-    gfx_round_rect(bx, by, 28, 26, 4, 0, 256);
-    gfx_round_rect(bx + 1, by + 1, 26, 24, 3, on ? rgb(90, 210, 60) : rgb(150, 150, 150), 256);
-    gfx_round_rect(bx + 2, by + 2, 24, 22, 3, on ? rgb(60, 160, 40) : rgb(105, 105, 105), 256);
-    draw_type_icon(editor_types[idx], bx + 14, by + 13, 20, 0, 256);
+    gfx_round_rect(bx, by, 30, 30, 6, on ? rgb(255, 122, 89) : rgb(70, 56, 110), 256);
+    gfx_round_rect(bx + 2, by + 2, 26, 26, 5, on ? rgb(120, 40, 30) : rgb(36, 26, 66), 256);
+    draw_type_icon(editor_types[idx], bx + 15, by + 15, 22, 0, 256);
   }
-  ui_nav_dots(286, top + 12, PAGES, page);
+  ui_nav_dots(x0 + w / 2, 188, PAGES, page);
   char buf[16];
   int n = gfx_format_uint(buf, count);
   buf[n++] = '/';
   gfx_format_uint(buf + n, CUSTOM_MAX);
-  gfx_text_center(FONT_SMALL, 286, top + 34, buf, 0xffff, 0xffff, 220);
+  gfx_text_center(FONT_SMALL, x0 + w / 2, 206, buf, 0xffff, 0xffff, 220);
   static const char *const rots[4] = {T("ROT 0"), T("ROT 90"), T("ROT 180"), T("ROT 270")};
-  gfx_text_center(FONT_SMALL, 286, top + 50, rots[app.rotate], 0xffff, 0xffff, 220);
+  gfx_text_center(FONT_SMALL, x0 + w / 2, 222, rots[app.rotate], rgb(166, 255, 242), rgb(166, 255, 242), 220);
 }
 
 static void settings_draw(void) {
@@ -534,8 +539,8 @@ void editor_draw(void) {
   const int y0 = 12 - NP_TEXT_EXTRA, y1 = 24 + 2 * NP_TEXT_EXTRA; /* (further apart for Chinese letters) */
   gfx_text(FONT_SMALL, 6, y0, slot_names[app.slot], 0xffff, 0xffff, 230);
   if (app.dirty) gfx_text(FONT_SMALL, 6, y1, T("UNSAVED"), rgb(255, 220, 120), rgb(255, 180, 60), 230);
-  gfx_text_right(FONT_SMALL, 314, y0, T("EXE: PLAYTEST"), 0xffff, 0xffff, 200);
-  gfx_text_right(FONT_SMALL, 314, y1, T("LN: SETTINGS"), 0xffff, 0xffff, 200);
+  gfx_text(FONT_SMALL, 6, GFX_H - 22 - NP_TEXT_EXTRA, T("EXE: PLAYTEST"), 0xffff, 0xffff, 200);
+  gfx_text(FONT_SMALL, 6, GFX_H - 8, T("LN: SETTINGS"), 0xffff, 0xffff, 200);
   if (settings_open) settings_draw();
   if (keys_open) keys_draw();
 }
@@ -570,19 +575,19 @@ void creator_tick(void) {
 }
 
 void creator_draw(void) {
-  ui_gradient_bg(rgb(0, 102, 255));
+  ui_gradient_bg(rgb(74, 42, 140));
   gfx_sprite(SPR_ARROW_BACK, 22, 26, 0, 0xffff, 256, BLEND_NORMAL);
-  /* list frame: lime sides and the header bar */
+  /* list frame: teal sides and the header bar */
   gfx_round_rect(26, 46, 268, 172, 4, 0, 256);
-  gfx_vgrad(28, 48, 6, 168, rgb(190, 242, 72), rgb(80, 150, 30));
-  gfx_vgrad(286, 48, 6, 168, rgb(190, 242, 72), rgb(80, 150, 30));
+  gfx_vgrad(28, 48, 6, 168, rgb(166, 255, 242), rgb(17, 122, 114));
+  gfx_vgrad(286, 48, 6, 168, rgb(166, 255, 242), rgb(17, 122, 114));
   ui_top_bar(40, false);
   ui_title(FONT_BIG, 160, 38, T("MY LEVELS"));
   for (int i = 0; i < CUSTOM_SLOTS; i++) {
     int y = 52 + i * 54;
-    color_t c = i & 1 ? rgb(161, 88, 44) : rgb(194, 114, 62);
+    color_t c = i & 1 ? rgb(52, 30, 96) : rgb(66, 40, 118);
     gfx_fill(34, y, 252, 54, c);
-    gfx_fill(34, y + 53, 252, 1, rgb(120, 60, 30));
+    gfx_fill(34, y + 53, 252, 1, rgb(28, 14, 56));
     const CustomMeta *m = &custom_meta[i];
     gfx_text(FONT_BIG, 44, y + 24, slot_names[i], 0xffff, 0xffff, 256);
     char buf[24];
@@ -600,7 +605,7 @@ void creator_draw(void) {
     ui_text_button(266, y + 27, 42, 22, T("PLAY"), BTN_CYAN, row && app.sel == 1 ? 1.12f : 1);
   }
   gfx_round_rect(26, 212, 268, 8, 3, 0, 256);
-  gfx_vgrad(28, 213, 264, 5, rgb(190, 242, 72), rgb(80, 150, 30));
+  gfx_vgrad(28, 213, 264, 5, rgb(166, 255, 242), rgb(17, 122, 114));
   gfx_text_center(FONT_SMALL, 160, 234, T("UP DOWN: LEVEL    LEFT RIGHT: EDIT / PLAY"), 0xffff, 0xffff, 200);
   ui_text_button(262, 26, 70, 20, T("KEYS"), app.row < 0 ? BTN_GREEN : BTN_GRAY, app.row < 0 ? 1.12f : 1);
   if (keys_open) keys_draw();
diff --git a/games/numdash/src/fx.c b/games/numdash/src/fx.c
index 1d8b4eb..927ab5a 100644
--- a/games/numdash/src/fx.c
+++ b/games/numdash/src/fx.c
@@ -1,6 +1,5 @@
-/* Particles, circle "use effects", motion trail and ghost trail.
- * Particle and circle parameters follow Geometry Dash's effect definitions
- * (sizes and speeds in GD units, additive blending). */
+/* Particles, circle "use effects", motion trail and ghost trail
+ * (sizes and speeds in level units, additive blending). */
 #include "fx.h"
 #include "scene.h"
 #include <math.h>
@@ -217,14 +216,14 @@ void fx_update(Game *g, float dt, color_t p1, color_t p2, bool practice) {
           for (int i = 0; i < 10; i++) spawn(PE_LAND, e->x, e->y + (p->upside ? 11 : -11), p1, true, 0, false, 0, p->upside ? 270 : 90);
         break;
       case FX_PAD: {
-        color_t c = e->arg == 0 ? rgb(255, 200, 0) : e->arg == 1 ? rgb(0, 255, 255) : e->arg == 2 ? rgb(255, 50, 255) : rgb(255, 40, 40);
+        color_t c = e->arg == 0 ? rgb(255, 179, 71) : e->arg == 1 ? rgb(46, 196, 182) : e->arg == 2 ? rgb(255, 111, 168) : rgb(240, 72, 74);  /* NumDash's pad colours */
         circle(e->x, e->y, CE_PAD, c, e->obj, false);
         trail_on = true;
         break;
       }
       case FX_ORB: {
         /* yellow, pink, blue, dash, red, spider, toggle */
-        static const uint8_t oc[7][3] = {{255, 200, 0}, {255, 50, 255}, {0, 255, 255}, {60, 255, 120}, {255, 40, 40}, {170, 60, 255}, {230, 230, 230}};
+        static const uint8_t oc[7][3] = {{255, 179, 71}, {255, 111, 168}, {46, 196, 182}, {155, 229, 100}, {240, 72, 74}, {155, 123, 255}, {230, 230, 230}};
         const uint8_t *q = oc[e->arg < 7 ? e->arg : 2];
         circle(e->x, e->y, CE_ORB, rgb(q[0], q[1], q[2]), e->obj, false);
         trail_on = true;
@@ -233,14 +232,15 @@ void fx_update(Game *g, float dt, color_t p1, color_t p2, bool practice) {
       case FX_ORB_TOUCH: circle(e->x, e->y, CE_ORB_TOUCH, 0xffff, e->obj, false); break;
       case FX_PORTAL: {
         /* cube, ship, ball, UFO, wave, robot, dual, single, teleport, spider, swing */
-        static const uint8_t pc[11][3] = {{0, 255, 50}, {255, 0, 255}, {255, 90, 40}, {255, 150, 0}, {0, 200, 255}, {235, 235, 235},
-                                          {255, 150, 0}, {0, 200, 255}, {0, 160, 255}, {170, 60, 255}, {255, 230, 0}};
+        /* (the gates' colours, tools/sprites_nd.py) */
+        static const uint8_t pc[11][3] = {{255, 122, 89}, {46, 196, 182}, {255, 179, 71}, {155, 123, 255}, {76, 201, 240}, {155, 229, 100},
+                                          {255, 179, 71}, {46, 196, 182}, {255, 111, 168}, {255, 111, 168}, {95, 245, 194}};
         const uint8_t *c = pc[e->arg < 11 ? e->arg : 0];
         circle(e->x, e->y, CE_PORTAL, rgb(c[0], c[1], c[2]), e->obj, false);
         break;
       }
       case FX_SIZE: {
-        color_t c = e->arg ? rgb(255, 31, 255) : rgb(0, 255, 50);
+        color_t c = e->arg ? rgb(95, 245, 194) : rgb(91, 108, 255);
         circle(e->x, e->y, CE_PORTAL, c, e->obj, false);
         circle(p->x, p->y, CE_PORTAL, c, -1, false);
         break;
@@ -250,13 +250,13 @@ void fx_update(Game *g, float dt, color_t p1, color_t p2, bool practice) {
           for (int i = 0; i < 8; i++) spawn(PE_SHIP_FIRE, e->x, e->y + (p->upside ? 8 : -8), rgb(255, 150, 0), true, 0, false, 0, p->upside ? 90 : 270);
         break;
       case FX_GRAVITY:
-        circle(e->x, e->y, CE_PORTAL, e->arg ? rgb(255, 200, 0) : rgb(0, 200, 255), e->obj, false);
+        circle(e->x, e->y, CE_PORTAL, e->arg ? rgb(91, 108, 255) : rgb(200, 204, 216), e->obj, false);
         if (p->mode != MODE_BALL) trail_on = true;
         break;
       case FX_COIN:
         if (practice) break;
-        circle(e->x, e->y, CE_COIN, rgb(255, 190, 0), e->obj, false);
-        circle(e->x, e->y, CE_COIN_RING, rgb(255, 190, 0), e->obj, false);
+        circle(e->x, e->y, CE_COIN, rgb(95, 245, 194), e->obj, false);
+        circle(e->x, e->y, CE_COIN_RING, rgb(95, 245, 194), e->obj, false);
         for (int i = 0; i < 30; i++) spawn(PE_COIN_PICKUP, e->x, e->y, 0, false, 0, false, 0, 1e9f);
         break;
       case FX_DEATH:
@@ -282,7 +282,7 @@ void fx_update(Game *g, float dt, color_t p1, color_t p2, bool practice) {
       emit_rate(&fire_acc, 90, dt);
       while (fire_acc >= 1) { fire_acc -= 1; spawn(PE_SHIP_FIRE, p->x - 4, p->y + (p->upside ? 12 : -12), rgb(255, 150, 0), true, 0, false, 0, p->upside ? 90 : 270); }
     } else if (p->mode == MODE_CUBE || p->mode == MODE_ROBOT || p->mode == MODE_SPIDER) {
-      if (p->time_since_ground < 0.1f && !g->ending) {
+      if (p->on_ground && !g->ending) {
         emit_rate(&drag_acc, 100, dt);
         while (drag_acc >= 1) {
           drag_acc -= 1;
@@ -334,15 +334,17 @@ void fx_update(Game *g, float dt, color_t p1, color_t p2, bool practice) {
         int sp = objdefs[o->type].special, xf = obj_xf(o);
         for (int k = 0; k < n; k++) {
           if (sp == SP_PAD_Y || sp == SP_PAD_P || sp == SP_PAD_B) {
-            color_t c = sp == SP_PAD_Y ? rgb(255, 255, 0) : sp == SP_PAD_B ? rgb(0, 255, 255) : rgb(255, 0, 255);
+            color_t c = sp == SP_PAD_Y ? rgb(255, 179, 71) : sp == SP_PAD_B ? rgb(46, 196, 182) : rgb(255, 111, 168);
             bool down = (xf & 3) == 2 || (xf & 8);
             if (rnd() < 0.8f) spawn(PE_BUMP, ox, oy, c, true, 0, false, 0, down ? 270 : 90);
           } else if (sp >= SP_ORB_Y && sp <= SP_ORB_B && !game_used(g, o, it.gi)) {
-            color_t c = sp == SP_ORB_Y ? rgb(255, 255, 0) : sp == SP_ORB_P ? rgb(255, 0, 255) : rgb(0, 255, 255);
+            color_t c = sp == SP_ORB_Y ? rgb(255, 179, 71) : sp == SP_ORB_P ? rgb(255, 111, 168) : rgb(46, 196, 182);
             if (rnd() < 0.9f) spawn(PE_RING, ox, oy, c, true, c, true, 0, 1e9f);
           } else if ((sp >= SP_GRAV_N && sp <= SP_PORTAL_SHIP) || (sp >= SP_PORTAL_UFO && sp <= SP_SIZE_NORMAL)) {
-            color_t c = sp == SP_GRAV_N ? rgb(0, 255, 255) : sp == SP_GRAV_F ? rgb(255, 255, 0) : sp == SP_PORTAL_CUBE || sp == SP_SIZE_NORMAL ? rgb(0, 255, 0)
-                      : sp == SP_PORTAL_UFO ? rgb(255, 150, 0) : rgb(255, 0, 255);
+            /* the colour of each gate (tools/sprites_nd.py) */
+            color_t c = sp == SP_GRAV_N ? rgb(200, 204, 216) : sp == SP_GRAV_F ? rgb(91, 108, 255) : sp == SP_PORTAL_CUBE ? rgb(255, 122, 89)
+                      : sp == SP_SIZE_NORMAL ? rgb(91, 108, 255) : sp == SP_SIZE_MINI ? rgb(95, 245, 194) : sp == SP_PORTAL_UFO ? rgb(155, 123, 255)
+                      : sp == SP_PORTAL_BALL ? rgb(255, 179, 71) : rgb(46, 196, 182);
             if (rnd() < 0.6f) spawn(PE_PORTAL, ox + 14, oy, c, true, c, true, 0, 180);
           } else if (sp == SP_COIN && !game_used(g, o, it.gi)) {
             if (rnd() < 0.5f) spawn(PE_COIN, ox, oy - 10, 0, false, 0, false, 0, 1e9f);
@@ -368,7 +370,7 @@ void fx_update(Game *g, float dt, color_t p1, color_t p2, bool practice) {
   } else if (trail_len > 0 && sample) {
     trail_len--;
   }
-  /* ghost trail (Polargeist style afterimages) */
+  /* ghost trail (afterimages) */
   for (int i = 0; i < GHOST_N; i++) if (ghosts[i].life > 0) ghosts[i].life -= dt;
   if ((g->trail || g->ending) && !g->dead) {
     ghost_acc += dt;
diff --git a/games/numdash/src/game.c b/games/numdash/src/game.c
index 9f71b13..b31db3c 100644
--- a/games/numdash/src/game.c
+++ b/games/numdash/src/game.c
@@ -1,91 +1,64 @@
-/* Geometry Dash 2.x physics at 240 Hz.
+/* NumDash's physics at 240 Hz (Calcade, 19 octobre 2026).
  *
- * Constants and collision rules follow the reverse-engineered values used by
- * the gd3ds project (itself based on the Pathfinder mod's physics) for the
- * cube, ship, ball, UFO, wave and mini sizes, and the gdsolver project's
- * measurements of GD 2.2 for the robot, spider, swing and the ring / pad
- * table. Velocities are in GD units per second, "vy" is relative to the
- * current gravity. */
+ * Written for NumDash with values of its own: every speed, gravity, jump
+ * and band height below was chosen for NumDash's levels and checked with
+ * tools/solve.c. Units: a block is 30, the ground is at y = 0, velocities
+ * are units per second, and "vy" is measured along the player's own up
+ * (it flips with gravity).
+ *
+ * Collision is plain boxes: the player's box lands on the top of a solid
+ * it falls onto, bumps the bottom of one it rises into, and is destroyed
+ * when it runs into a side, a hazard or (the wave) anything solid. */
 #include "game.h"
 #include <math.h>
 #include <string.h>
 
 enum { SPEED_SLOW, SPEED_NORMAL, SPEED_FAST, SPEED_FASTER };
-static const float SPEEDS[4] = {251.16007972f, 311.58009371f, 387.42014040f, 468.00013884f};
-static const float SPEED_MULT[4] = {0.7f, 0.9f, 1.1f, 1.3f};
-/* the physics step: 1/240 s, scaled by a time warp (GD scales dx, dy and
-   dvy together) */
-static float TDT = ND_DT;
-static const float CUBE_JUMP[4] = {573.481728f, 603.7217172f, 616.681728f, 606.421728f};
-static const float CUBE_GRAV[4] = {-2747.52f, -2794.1082f, -2786.4f, -2799.36f};
-static const float VEL_THRESH[4] = {101.541492f, 103.485494592f, 103.377492f, 103.809492f};
-enum { J_YPAD, J_YORB, J_BPAD, J_BORB, J_PPAD, J_PORB };
-/* [speed][jump type][cube, ship, ball, UFO][normal, mini] (gd3ds; the ship
-   and the UFO cap what they receive) */
-static const float JUMPS[4][6][4][2] = {
-  {{{864, 691.2f}, {432, 508.248f}, {518.4f, 414.72002f}, {573.48f, 458.784f}},
-   {{573.48f, 458.784f}, {573.48f, 458.784f}, {401.436f, 321.148795f}, {573.48f, 458.784f}},
-   {{-345.6f, -276.48f}, {-229.392f, -183.519f}, {-160.5744f, -128.463298f}, {-229.392f, -183.519f}},
-   {{-229.392f, -183.519f}, {-229.392f, -183.519f}, {-160.5744f, -128.463298f}, {-229.392f, -183.519f}},
-   {{561.6f, 449.28f}, {302.4f, 241.92f}, {362.88f, 290.30401f}, {345.6f, 276.4f}},
-   {{412.884f, 330.318f}, {212.166f, 169.776f}, {309.0906f, 247.287596f}, {240.84f, 192.672f}}},
-  {{{864, 691.2f}, {432, 508.248f}, {518.4f, 414.72002f}, {432, 691.2f}},
-   {{603.72f, 482.976f}, {603.72f, 482.976f}, {422.604f, 338.08319f}, {603.72f, 482.976f}},
-   {{-345.6f, -276.48f}, {-345.6f, -276.48f}, {-207.36f, -165.88801f}, {-345.6f, -276.48f}},
-   {{-241.488f, -193.185f}, {-241.488f, -193.18f}, {-169.0416f, -135.2295f}, {-241.488f, -193.185f}},
-   {{561.6f, 449.28f}, {302.4f, 241.92f}, {362.88f, 290.30401f}, {345.6f, 276.4f}},
-   {{434.7f, 347.76f}, {223.398f, 178.686f}, {325.4202f, 260.3286f}, {258.984f, 207.198f}}},
-  {{{864, 691.2f}, {432, 508.248f}, {518.4f, 414.72002f}, {432, 691.2f}},
-   {{616.68f, 481.734f}, {616.68f, 481.734f}, {431.676f, 345.34079f}, {616.68f, 481.734f}},
-   {{-345.6f, -276.48f}, {-345.6f, -276.48f}, {-207.36f, -165.88801f}, {-345.6f, -276.48f}},
-   {{-246.672f, -197.343f}, {-246.672f, -197.343f}, {-172.6704f, -138.1401f}, {-246.672f, -197.343f}},
-   {{561.6f, 449.28f}, {302.4f, 241.92f}, {362.88f, 290.30401f}, {345.6f, 276.4f}},
-   {{443.988f, 355.212f}, {228.15f, 182.52f}, {332.3754f, 265.923f}, {258.984f, 207.198f}}},
-  {{{864, 691.2f}, {432, 508.248f}, {518.4f, 414.72002f}, {432, 691.2f}},
-   {{606.42f, 485.136f}, {606.42f, 485.136f}, {424.494f, 339.59519f}, {606.42f, 485.136f}},
-   {{-345.6f, -276.48f}, {-345.6f, -276.48f}, {-207.36f, -165.88801f}, {-345.6f, -276.48f}},
-   {{-242.568f, -194.049f}, {-242.568f, -194.049f}, {-169.7976f, -135.8343f}, {-242.568f, -194.049f}},
-   {{561.6f, 449.28f}, {302.4f, 241.92f}, {362.88f, 290.30401f}, {345.6f, 276.4f}},
-   {{436.644f, 349.272f}, {224.37f, 179.496f}, {326.8566f, 261.5004f}, {254.718f, 203.742f}}},
-};
-/* ball: gravity, the push when it flips, and how fast it rolls (degrees per second) */
-#define BALL_GRAV (-1676.46672f)
-#define BALL_HEIGHT 240.0f
-#define BALL_AIR_SPIN 0.7f
-/* swing (gdsolver): gravity 0.086 GD / tick (mini 0.129), terminal 8, a tap
-   flips gravity with vp := -0.8 vp */
-#define SWING_G 1114.56f
-#define SWING_G_MINI 1671.84f
-#define SWING_TERM 432.0f
-static const float BALL_JUMP[4] = {-172.044007f, -181.11601f, -185.00401f, -181.92601f};
-static const float BALL_ROLL[4] = {120 / (0.2f * 1.2405638f), 120 / 0.2f, 120 / (0.2f * 0.80424345f), 120 / (0.2f * 0.6657693f)};
-/* UFO: flap strength and the two gravities (weak while rising fast) */
-static const float UFO_FLAP[2] = {371.034f, 358.992f};
-static const float UFO_GRAV_HI[2] = {-1676.84f, -1969.92f}, UFO_GRAV_LO[2] = {-1117.56f, -1308.96f};
-/* ship in mini size */
-#define SHIP_MINI_MIN (-406.566f)
-#define SHIP_MINI_MAX 508.248f
-#define ROT_SPEED 415.3848f
-#define ROT_SPEED_MINI 540.0f
-#define CEILING_INVUL 0.1f
-#define DRAG_TIME 0.1f
-#define SHIP_MIN (-345.6f)
-#define SHIP_MAX 432.0f
-#define END_START (10 * 30.0f)
+static const float SPEEDS[4] = {264.0f, 324.0f, 402.0f, 486.0f};
+
+/* cube (and robot): jump 640, gravity 2950 -> 69 units high, 0.43 s */
+#define CUBE_G 2950.0f
+#define CUBE_JUMP 640.0f
+#define FALL_MAX 960.0f
+/* robot: a shorter jump that keeps rising while the key is held */
+#define ROBOT_JUMP 470.0f
+#define ROBOT_HOLD 0.24f
+/* ship: thrust while held, sink when released */
+#define SHIP_UP 2500.0f
+#define SHIP_DOWN 1950.0f
+#define SHIP_VMAX 420.0f
+#define SHIP_VMIN (-380.0f)
+/* ball: gravity, and the push towards the new floor when it flips */
+#define BALL_G 2300.0f
+#define BALL_FLIP 240.0f
+/* saucer: gravity and the flap */
+#define UFO_G 2150.0f
+#define UFO_FLAP 440.0f
+#define UFO_FALL 520.0f
+/* swing: gravity flips on each press, speed capped */
+#define SWING_G 1750.0f
+#define SWING_VMAX 380.0f
+/* wave: climbs or dives at this many times the travel speed */
+#define WAVE_SLOPE 1.0f
+/* mini size: smaller box, shorter jumps */
+#define MINI_JUMP 0.82f
+/* flying bands: the height of the corridor a gate opens */
+#define BAND_FLY 300.0f
+#define BAND_BALL 240.0f
+/* end of a level: the run eases into the wall over this distance */
+#define END_RUN 300.0f
+#define SPIN 400.0f          /* cube spin in the air, degrees per second */
 
+static float TDT = ND_DT;
 static float clampf(float v, float lo, float hi) { return v < lo ? lo : v > hi ? hi : v; }
-static float grav(const Player *p, float v) { return p->upside ? -v : v; }
-/* half the player's size: 15, or 9 when mini */
+/* Player half size. */
 static float phalf(const Player *p) {
-  if (p->mode == MODE_WAVE) return p->mini ? 3.0f : 5.0f;
-  if (p->mode == MODE_SPIDER) return p->mini ? 8.1f : 13.5f;   /* gdsolver */
+  if (p->mode == MODE_WAVE) return p->mini ? 4.0f : 6.0f;
   return p->mini ? 9.0f : 15.0f;
 }
-static float grav_bottom(const Player *p) { return p->upside ? -(p->y + phalf(p)) : p->y - phalf(p); }
-static float grav_top(const Player *p) { return p->upside ? -(p->y - phalf(p)) : p->y + phalf(p); }
-static float grav_floor(const Player *p) { return p->upside ? -p->ceiling_y : p->ground_y; }
-/* How far above the ground the player rests (the wave rides 10 above it). */
-static float rest_half(const Player *p) { return p->mode == MODE_WAVE ? (p->mini ? 6.0f : 10.0f) : phalf(p); }
+/* world y of the player's feet and head (they swap when upside down) */
+static float feet(const Player *p) { return p->upside ? p->y + phalf(p) : p->y - phalf(p); }
+static float up(const Player *p) { return p->upside ? -1.0f : 1.0f; }
 
 bool game_used(const Game *g, const RObj *o, unsigned gi) {
   return (gi < MAX_LEVEL_OBJS && (g->used[gi >> 3] >> (gi & 7) & 1)) || obj_x(o) < g->used_below;
@@ -95,7 +68,6 @@ static void fx(Game *g, uint8_t kind, uint8_t arg, int obj, float x, float y) {
   if (g->fx_count < sizeof(g->fx) / sizeof(g->fx[0])) g->fx[g->fx_count++] = (FxEvent){kind, arg, (int16_t)obj, x, y};
 }
 #ifdef ND_PROBE
-/* diagnostics only (scratch tools): report deaths instead of dying */
 int nd_noclip;
 void (*nd_on_kill)(const Game *g, int obj);
 #endif
@@ -115,75 +87,36 @@ unsigned game_coin_index(const Level *L, unsigned obj) {
   return k;
 }
 
-static void set_velocity(Player *p, float v, bool override) { p->vel_override = override; p->vy = p->mini ? v * 0.8f : v; }
-static void landing(Player *p) { if (p->mode == MODE_CUBE) p->jumped = false; }
-static void boost_latch(Player *p) { if (p->mode == MODE_SHIP || p->mode == MODE_UFO || p->mode == MODE_SWING) p->boost = true; }
-/* the exemption ends once the speed (gravity frame) is back inside
-   (-6.4, 8) GD units, 0.85 of that when mini */
-static void boost_check(Player *p) {
-  float k = p->mini ? 54 / 0.85f : 54;
-  if (p->vy > -6.4f * k && p->vy < 8 * k) p->boost = false;
-}
-static void update_rot_dir(Player *p) { p->rot_dir_neg = p->upside; }
-static float closest_rotation(float rot) {
-  float r = fmodf(rot, 360.0f);
-  if (r < 0) r += 360;
-  float s = roundf(r / 90) * 90;
-  s = fmodf(s, 360);
-  return s < 0 ? s + 360 : s;
-}
-/* Nearest of base + k * 90 degrees. */
-static float closest_rotation_to(float rot, float base) {
-  float r = fmodf((float)(int)rot, 360.0f);
-  if (r < 0) r += 360;
-  float s = fmodf(roundf((r - base) / 90) * 90 + base, 360);
-  return s < 0 ? s + 360 : s;
-}
-static float slerp_angle(float from, float to, float t) {
-  float fx = cosf(from * .5f), fy = sinf(from * .5f), tx = cosf(to * .5f), ty = sinf(to * .5f);
-  float dot = fx * tx + fy * ty;
-  if (dot < 0) { dot = -dot; tx = -tx; ty = -ty; }
-  float w0 = 1 - t, w1 = t;
-  if (dot < 0.9999f) {
-    float b = acosf(dot), sb = sinf(b);
-    w0 = sinf(w0 * b) / sb;
-    w1 = sinf(w1 * b) / sb;
-  }
-  return atan2f(w0 * fy + w1 * ty, w0 * fx + w1 * tx) * 2;
+static bool overlap(float ax, float ay, float ahw, float ahh, float bx, float by, float bhw, float bhh) {
+  return fabsf(ax - bx) < ahw + bhw && fabsf(ay - by) < ahh + bhh;
 }
-#define DEG (3.14159265f / 180.0f)
 
-static void set_bounds_for_portal(Game *g, float portal_y, float height) {
-  Player *p = &g->p;
-  float v = (portal_y - (height + 60) / 2.0f) / 30.0f, c = ceilf(v);
-  if (fabsf(v - roundf(v)) < 1e-6f) c += 1;
-  p->ground_y = c > 0 ? c * 30 : 0;
-  p->ceiling_y = p->ground_y + height;
-  p->band_h = height;
-  if (g->zoom != 1) p->ceiling_y = p->ground_y + height / g->zoom;
-  g->cam_intended_y = (p->ground_y + p->ceiling_y) / 2 - (VIEW_H / 2 - GROUND_OFFSET);
+/* The corridor a flying gate opens: BAND units tall, its floor on the block
+   row nearest below the gate's middle minus half the band (never under the
+   ground). */
+static void set_band(Player *p, float gate_y, float h) {
+  float f = floorf((gate_y - h / 2) / 30.0f + 0.5f) * 30.0f;
+  p->ground_y = f > 0 ? f : 0;
+  p->ceiling_y = p->ground_y + h;
+  p->band_h = h;
 }
+static void no_band(Player *p) { p->ground_y = 0; p->ceiling_y = 999999; p->band_h = 0; }
 
 void game_start(Game *g, const Level *L, bool first_attempt) {
   memset(g, 0, sizeof(*g));
   g->L = L;
   Player *p = &g->p;
-  p->x = 0;
   p->y = 15;
   p->speed = SPEED_NORMAL;
-  p->ceiling_y = 999999;
-  p->coyote = 1 << 30;
   p->on_ground = true;
-  p->sl_o = p->co_o = -1;
-  if (L->start_mode == MODE_SHIP) {
-    p->mode = MODE_SHIP;
-    set_bounds_for_portal(g, 150, 300);
-  }
+  no_band(p);
+  if (L->start_mode == MODE_SHIP) { p->mode = MODE_SHIP; set_band(p, 150, BAND_FLY); }
   for (int c = 0; c < CH_COUNT; c++) {
     memcpy(g->ch[c].cur, L->colors[c], 3);
     memcpy(g->ch[c].to, L->colors[c], 3);
   }
-  trig_start(g);
+  g->time_mod = 1;
+  g->zoom = 1;
   g->attempt_camera = first_attempt;
   g->cam_x = first_attempt ? 15 : p->x - PLAYER_SCREEN_X;
   g->ground_x = g->bg_x = g->cam_x;
@@ -193,870 +126,194 @@ void game_start(Game *g, const Level *L, bool first_attempt) {
 
 float game_progress(const Game *g) {
   if (g->complete) return 100;
-  const LevelExt *x = g->L->ext;
-  float v = x && x->end_dist ? g->dist / x->end_dist * 100 : g->p.x / g->L->end_x * 100;
-  return clampf(v, 0, 100);
-}
-
-static void clamp_ground(Game *g) {
-  Player *p = &g->p;
-  float h = rest_half(p);
-  if (p->y - h < p->ground_y) {
-    if (p->ceil_inv <= 0 && p->mode == MODE_CUBE && p->upside) kill(g, -1);
-    if (grav(p, p->vy) <= 0) set_velocity(p, 0, p->mode == MODE_BALL);
-    p->y = p->ground_y + h;
-    p->snap_frame = 0;
-  }
-  if (p->y + h > p->ceiling_y) {
-    if (p->ceil_inv <= 0 && p->mode == MODE_CUBE && !p->upside) kill(g, -1);
-    if (grav(p, p->vy) >= 0) set_velocity(p, 0, p->mode == MODE_BALL);
-    p->y = p->ceiling_y - h;
-  }
-}
-
-/* Does the player's box touch a round hazard? GD tests the circle's centre
-   inside the box, or a box corner inside the circle (so the reach is a
-   little shorter straight above a saw than at its corners), as measured by
-   gdsolver. */
-static bool box_circle(float px, float py, float h, float cx, float cy, float r) {
-  float ex = fabsf(cx - px) - h, ey = fabsf(cy - py) - h;
-  return (ex < 0 && ey < 0) || ex * ex + ey * ey < r * r;
+  return clampf(g->p.x / g->L->end_x * 100, 0, 100);
 }
 
-static bool overlap(float ax, float ay, float ahw, float ahh, float bx, float by, float bhw, float bhh) {
-  return fabsf(ax - bx) <= ahw + bhw && fabsf(ay - by) <= ahh + bhh;   /* cocos rects touch inclusively */
-}
-
-/* Separating axis test of two boxes turned by a and b radians (clockwise). */
-static bool obb_overlap(float ax, float ay, float ahw, float ahh, float a, float bx, float by, float bhw, float bhh, float b) {
-  float ca = cosf(a), sa = sinf(a), cb = cosf(b), sb = sinf(b), dx = bx - ax, dy = by - ay;
-  /* axes of both boxes: (cos, -sin) and (sin, cos) in y-up space */
-  float axes[4][2] = {{ca, -sa}, {sa, ca}, {cb, -sb}, {sb, cb}};
-  for (int k = 0; k < 4; k++) {
-    float ux = axes[k][0], uy = axes[k][1];
-    float ra = ahw * fabsf(ux * ca - uy * sa) + ahh * fabsf(ux * sa + uy * ca);
-    float rb = bhw * fabsf(ux * cb - uy * sb) + bhh * fabsf(ux * sb + uy * cb);
-    if (fabsf(dx * ux + dy * uy) >= ra + rb) return false;
-  }
-  return true;
-}
+/* ------------------------------------------------------------ the modes */
 
-/* GD's stair snap (checkSnapJumpToObject, as measured by gdsolver on 2.2):
-   on every tick the cube stands on a solid, when that solid is another one
-   than the last and sits one stair step away (one block up, one down or two
-   up at a speed dependent distance), x is nudged by up to a unit or two so
-   the player keeps its offset to the stairs. */
-static void snap_to(Game *g, float ox, float oy) {
+static void jump(Game *g, float v) {
   Player *p = &g->p;
-  /* [speed] {threshold, one up, one down, two up}; the mini one-up is 90 */
-  static const float stairs[4][4] = {{1, 90, 120, 60}, {1, 120, 150, 90}, {2, 150, 195, 120}, {2, 180, 225, 135}};
-  const float *st = stairs[p->speed];
-  if (p->has_snap && (ox != p->snap_ox || oy != p->snap_oy)) {
-    float dx = ox - p->snap_ox, dy = grav(p, oy - p->snap_oy), th = st[0], up = p->mini && p->speed ? 90 : st[1];
-    if ((fabsf(dx - up) <= th && fabsf(dy - 30) <= th) || (fabsf(dx - st[2]) <= th && fabsf(dy + 30) <= th) ||
-        (fabsf(dx - st[3]) <= th && fabsf(dy - 60) <= th))
-      p->x += clampf(ox + p->snap_diff - p->x, -th, th);
-  }
-  p->has_snap = true;
-  p->snap_ox = ox;
-  p->snap_oy = oy;
-  p->snap_diff = p->x - ox;
+  p->vy = p->mini ? v * MINI_JUMP : v;
+  p->on_ground = false;
+  p->jumped = true;
+  g->jumps++;
 }
 
-/* ------------------------------------------------------------ slopes
-   Ported from gd3ds (its slope.c): a slope is a right triangle in its box;
-   orientation 0 rises to the right with the solid below, 1 falls to the
-   right, 2 and 3 are the same hanging from above. */
-typedef struct { float x, y, w, h; int o; } Slope;
-enum { OR_NU, OR_ND, OR_UDD, OR_UDU };
-#define SLOPE_EPS 0.01f
-#define SLOPE_HEAD_TOL 2.0f
-static const float SLOPE_FALL[4] = {226.044054f, 280.422108f, 348.678108f, 421.200108f};
-
-static Slope slope_of(const Level *L, const RObj *o, float x, float y) {
-  const ObjDef *d = &objdefs[o->type];
-  float sx, sy;
-  obj_scale_xy(L, o, &sx, &sy);
-  Slope s = {x, y, d->w10 * 0.1f * fabsf(sx), d->h10 * 0.1f * fabsf(sy), 0};
-  int xf = obj_xf(o);
-  if (xf < 0) xf = 0;
-  int o4 = xf & 3, fh = (xf >> 2) & 1, fv = (xf >> 3) & 1;
-  if (o4 & 1) { float t = s.w; s.w = s.h; s.h = t; }
-  o4 += fh && fv ? 2 : fh ? 1 : fv ? 3 : 0;
-  s.o = o4 & 3;
-  return s;
-}
-static void slope_get(const float *a, int o, Slope *s) { *s = (Slope){a[0], a[1], a[2], a[3], o}; }
-static float sl_left(const Slope *s) { return s->x - s->w / 2; }
-static float sl_right(const Slope *s) { return s->x + s->w / 2; }
-static float sl_top(const Slope *s) { return s->y + s->h / 2; }
-static float sl_bottom(const Slope *s) { return s->y - s->h / 2; }
-static float sl_gtop(const Player *p, const Slope *s) { return p->upside ? -sl_bottom(s) : sl_top(s); }
-static float sl_gbottom(const Player *p, const Slope *s) { return p->upside ? -sl_top(s) : sl_bottom(s); }
-static int sl_orient(const Player *p, const Slope *s) {
-  int o = s->o;
-  if (p->upside) o = o == OR_UDU ? OR_NU : o == OR_UDD ? OR_ND : o == OR_NU ? OR_UDU : OR_UDD;
-  return o;
-}
-static float sl_angle(const Player *p, const Slope *s) {
-  float a = atanf(s->h / s->w);
-  int o = sl_orient(p, s);
-  return o == OR_ND || o == OR_UDD ? -a : a;
-}
-static float sl_snap_angle(const Player *p, const Slope *s) {
-  float a = sl_angle(p, s);
-  if (s->o == OR_NU) a = -fabsf(a);
-  if (s->o == OR_ND) a = fabsf(a);
-  return a;
-}
-static float sl_expected_y(const Player *p, const Slope *s) {
-  bool flipping = sl_orient(p, s) >= OR_UDD;
-  float mult = (p->upside ^ flipping) ? -1 : 1, a = sl_angle(p, s), ph = phalf(p);
-  float ydist = mult * ph / cosf(a), rel = s->h / s->w * (p->x - sl_left(s));
-  if ((a > 0) ^ p->upside ^ flipping) return sl_bottom(s) + fminf(rel + ydist, s->h + ph);
-  return sl_top(s) - fminf(rel - ydist, s->h + ph);
-}
-static void sl_clear(Player *p) { p->sl_o = -1; p->sl_t = 0; p->sl_down = false; }
-
-static bool sl_touching(const Player *p, const Player *old, const Slope *s) {
-  bool has = old->sl_o >= 0;
-  if (has) {
-    Slope os;
-    slope_get(old->sl, old->sl_o, &os);
-    float mult = sl_orient(p, &os) >= OR_UDD ? -1 : 1;
-    has = p->vy * mult <= 0;
-  }
-  float deg = fabsf(sl_angle(p, s)) / DEG, snap_h = 20 * (deg / 45), mn = has ? -3 : 0;
-  if (sl_right(s) < p->x - phalf(p)) return false;
-  float diff = sl_orient(p, s) < OR_UDD ? grav(p, sl_expected_y(p, s)) - grav(p, p->y) : grav(p, p->y) - grav(p, sl_expected_y(p, s));
-  return diff >= mn && diff <= snap_h;
-}
-
-static void sl_snap_y(Player *p, const Slope *s) {
-  float ph = phalf(p), e = sl_expected_y(p, s);
-  switch (sl_orient(p, s)) {
-    case OR_NU:
-      p->y = p->upside ? fmaxf(sl_bottom(s) - ph, e) : fminf(sl_top(s) + ph, e);
-      p->time_since_ground = 0; p->on_ground = true;
-      if (p->vy < 0) p->vy = 0;
-      break;
-    case OR_ND:
-      p->y = p->upside ? fminf(e, sl_top(s) + ph) : fmaxf(e, sl_bottom(s) - ph);
-      p->time_since_ground = 0; p->on_ground = true;
-      if (p->vy < 0) p->vy = 0;
-      break;
-    case OR_UDD:
-      p->y = p->upside ? fmaxf(e, sl_bottom(s) - ph) : fminf(e, sl_top(s) + ph);
-      p->time_since_ground = 0; p->on_ceiling = true;
-      if (p->vy > 0) p->vy = 0;
-      break;
-    default:
-      p->y = p->upside ? fminf(sl_top(s) + ph, e) : fmaxf(sl_bottom(s) - ph, e);
-      p->time_since_ground = 0; p->on_ceiling = true;
-      if (p->vy > 0) p->vy = 0;
-      break;
-  }
-}
-
-/* How many of the nearby slopes the player touches (only the one it rides
-   and the next one of the same kind count while on a slope). */
-typedef struct { Slope s[8]; int n; } SlopeSet;
-static int sl_count(const Player *p, const Player *old, const SlopeSet *ss) {
-  int count = 0;
-  Slope cur;
-  bool have = p->sl_o >= 0;
-  if (have) slope_get(p->sl, p->sl_o, &cur);
-  float ph = phalf(p);
-  for (int k = 0; k < ss->n; k++) {
-    const Slope *s = &ss->s[k];
-    if (!overlap(p->x, p->y, ph + .5f, ph + .5f, s->x, s->y, s->w / 2, s->h / 2) || !sl_touching(p, old, s)) continue;
-    if (have) {
-      float diff = s->y - cur.y;
-      bool next = (cur.o == OR_NU || cur.o == OR_UDD) ? diff > 0 : diff < 0;
-      bool same = s->x == cur.x && s->y == cur.y;
-      if ((cur.o == sl_orient(p, s) && sl_angle(p, &cur) == sl_angle(p, s) && next) || same) count++;
-    } else {
-      count++;
-    }
-  }
-  return count;
-}
-
-#define SHIP_UFO_EXIT_VY (508.248f / 4)
-static void sl_calc(Game *g, const Player *old, const Slope *s, const SlopeSet *ss, bool hold) {
+static void enter_mode(Game *g, int mode, float gate_y) {
   Player *p = &g->p;
-  float spd = SPEEDS[p->speed];
-  switch (sl_orient(p, s)) {
-    case OR_NU:
-      if ((p->mode == MODE_UFO || p->mode == MODE_SHIP) && p->vy < SHIP_UFO_EXIT_VY && hold) p->vy = SHIP_UFO_EXIT_VY;
-      if (!sl_touching(p, old, s)) { p->pend_clear = true; return; }
-      if (grav_bottom(p) != sl_gtop(p, s)) sl_snap_y(p, s);
-      if (grav_bottom(p) >= sl_gtop(p, s) - SLOPE_EPS && sl_count(p, old, ss) < 2) {
-        /* sliding off the top: launched along the slope */
-        float v = 0.9f * fminf(1.12f / sl_angle(p, s), 1.54f) * (s->h * spd / s->w);
-        float t = clampf(10 * (p->t_elapsed - p->sl_t), 0.4f, 1.0f);
-        if (p->mode == MODE_BALL || p->mode == MODE_SHIP) v *= 0.75f;
-        if (p->mode == MODE_UFO) v *= 0.7499f;
-        v *= t;
-        p->inverse_rot = true;
-        memcpy(p->co, p->sl, sizeof(p->co)); p->co_o = p->sl_o; p->co_t = p->sl_t; p->co_down = p->sl_down;
-        p->co_ticks = 2;
-        p->new_vy = v; p->has_new_vy = true; boost_latch(p);
-        p->jumped = true;
-        p->pend_clear = true;
-      }
-      break;
-    case OR_ND:
-      if (p->vy > 0) { p->pend_clear = true; return; }
-      if (grav_bottom(p) != sl_gtop(p, s) || p->sl_down) sl_snap_y(p, s);
-      if ((sl_gtop(p, s) <= grav(p, p->y) + SLOPE_EPS || (p->x - phalf(p)) - sl_right(s) > 0) && sl_count(p, old, ss) < 2) {
-        p->new_vy = -SLOPE_FALL[p->speed] * (s->h / s->w); p->has_new_vy = true; boost_latch(p);
-        memcpy(p->co, p->sl, sizeof(p->co)); p->co_o = p->sl_o; p->co_t = p->sl_t; p->co_down = p->sl_down;
-        p->co_ticks = 2;
-        p->pend_clear = true;
-      }
-      break;
-    case OR_UDU: {
-      if ((p->mode == MODE_UFO || p->mode == MODE_SHIP) && p->vy > -SHIP_UFO_EXIT_VY && !hold) p->vy = -SHIP_UFO_EXIT_VY;
-      if (!sl_touching(p, old, s)) { p->pend_clear = true; return; }
-      if ((p->mode == MODE_CUBE || p->mode == MODE_ROBOT) && p->ceil_inv <= 0) {
-        if (grav(p, p->y - SLOPE_HEAD_TOL) > grav(p, sl_expected_y(p, s))) kill(g, -1);
-        return;
-      }
-      if (grav_bottom(p) != sl_gtop(p, s)) sl_snap_y(p, s);
-      if (grav_top(p) <= sl_gbottom(p, s) + SLOPE_EPS && sl_count(p, old, ss) < 2) {
-        float v = 0.9f * fminf(1.12f / sl_angle(p, s), 1.54f) * (s->h * spd / s->w);
-        float t = clampf(10 * (p->t_elapsed - p->sl_t), 0.4f, 1.0f);
-        if (p->mode == MODE_BALL || p->mode == MODE_SHIP) v *= 0.75f;
-        if (p->mode == MODE_UFO) v *= 0.7499f;
-        v *= t;
-        p->inverse_rot = true;
-        memcpy(p->co, p->sl, sizeof(p->co)); p->co_o = p->sl_o; p->co_t = p->sl_t; p->co_down = p->sl_down;
-        p->co_ticks = 2;
-        p->pend_clear = true;
-        p->new_vy = -v; p->has_new_vy = true; boost_latch(p);
-      }
-      break;
-    }
-    default:
-      if (p->vy < 0) { p->pend_clear = true; return; }
-      if ((p->mode == MODE_CUBE || p->mode == MODE_ROBOT) && p->ceil_inv <= 0) {
-        if (grav(p, p->y - SLOPE_HEAD_TOL) > grav(p, sl_expected_y(p, s))) kill(g, -1);
-        return;
-      }
-      if (grav_bottom(p) != sl_gtop(p, s) || p->sl_down) sl_snap_y(p, s);
-      if ((sl_gtop(p, s) <= grav(p, p->y) - SLOPE_EPS || (p->x - phalf(p)) - sl_right(s) > 0) && sl_count(p, old, ss) < 2) {
-        p->new_vy = SLOPE_FALL[p->speed] * (s->h / s->w); p->has_new_vy = true; boost_latch(p);
-        memcpy(p->co, p->sl, sizeof(p->co)); p->co_o = p->sl_o; p->co_t = p->sl_t; p->co_down = p->sl_down;
-        p->co_ticks = 2;
-        p->pend_clear = true;
-      }
-      break;
-  }
-}
-
-/* Distance from a point to a segment <= r? */
-static bool seg_circle(float cx, float cy, float r, float x1, float y1, float x2, float y2) {
-  float dx = x2 - x1, dy = y2 - y1, fx_ = cx - x1, fy = cy - y1, l2 = dx * dx + dy * dy;
-  float t = l2 > 0 ? (fx_ * dx + fy * dy) / l2 : 0;
-  t = t < 0 ? 0 : t > 1 ? 1 : t;
-  float ex = cx - (x1 + t * dx), ey = cy - (y1 + t * dy);
-  return ex * ex + ey * ey <= r * r;
-}
-static bool sl_circle_touch(const Player *p, const Slope *s) {
-  float hw = s->w / 2, hh = s->h / 2, r = (phalf(p) * 2 - 4) / 2, x = s->x, y = s->y;
-  bool nu = s->o == OR_NU || s->o == OR_UDD, up = s->o == OR_NU || s->o == OR_UDU, normal = s->o < OR_UDD;
-  bool hyp = nu ? seg_circle(p->x, p->y, r, x - hw, y - hh, x + hw, y + hh) : seg_circle(p->x, p->y, r, x + hw, y - hh, x - hw, y + hh);
-  bool ver = up ? seg_circle(p->x, p->y, r, x + hw, y - hh, x + hw, y + hh) : seg_circle(p->x, p->y, r, x - hw, y - hh, x - hw, y + hh);
-  bool hor = normal ? seg_circle(p->x, p->y, r, x + hw, y - hh, x - hw, y - hh) : seg_circle(p->x, p->y, r, x + hw, y + hh, x - hw, y + hh);
-  return hyp || ver || hor;
-}
-
-static void sl_collide(Game *g, const Player *old, const Slope *s, const SlopeSet *ss, bool hold) {
-  Player *p = &g->p;
-  if (p->npot < 4) { p->pot[p->npot][0] = sl_top(s); p->pot[p->npot][1] = sl_bottom(s); p->pot_o[p->npot++] = (int8_t)s->o; }
-  bool has = old->sl_o >= 0;
-  float e = sl_expected_y(p, s), ph = phalf(p), in = p->mode == MODE_WAVE ? 1.5f : 4.5f;
-  if (s->o < 2 && e + (has ? 3 : 0) <= p->y) return;
-  if (s->o >= 2 && e - (has ? 3 : 0) >= p->y) return;
-  float clip = p->mode == MODE_SHIP || p->mode == MODE_UFO ? 7 : 10;
-  int orient = sl_orient(p, s);
-  float mult = orient >= OR_UDD ? -1 : 1;
-  bool gsnap = p->ceil_inv > 0, cube = p->mode == MODE_CUBE || p->mode == MODE_ROBOT;
-  if (orient == OR_NU || orient == OR_UDU) {
-    /* inside the slope's tall side */
-    if (overlap(p->x, p->y, in, in, sl_right(s), s->y, 0.5f, s->h / 2)) { kill(g, -1); return; }
-  }
-  if (!has && orient < OR_UDD && grav_top(p) - sl_gbottom(p, s) <= clip + 5 * !p->mini) {
-    /* under a floor slope: its flat bottom is a ceiling */
-    if (p->mode != MODE_WAVE && ((!cube && p->vy >= 0) || gsnap)) {
-      p->vy = 0;
-      if (!gsnap) p->on_ceiling = true;
-      p->time_since_ground = 0;
-      p->y = grav(p, sl_gbottom(p, s)) - grav(p, ph);
-    } else if (overlap(p->x, p->y, in, in, s->x, s->y, s->w / 2, s->h / 2)) kill(g, -1);
-    return;
-  }
-  if (!has && orient >= OR_UDD && sl_gtop(p, s) - grav_bottom(p) <= clip + 5 * !p->mini) {
-    /* on top of a hanging slope: its flat top is a floor */
-    if (p->mode != MODE_WAVE && p->vy <= 0) {
-      p->vy = 0;
-      if (!gsnap) p->on_ground = true;
-      p->time_since_ground = 0;
-      p->y = grav(p, sl_gtop(p, s)) + grav(p, ph);
-    } else if (overlap(p->x, p->y, in, in, s->x, s->y, s->w / 2, s->h / 2)) kill(g, -1);
+  if (p->mode == mode) {
+    if (mode == MODE_SHIP || mode == MODE_UFO || mode == MODE_WAVE || mode == MODE_SWING || mode == MODE_SPIDER) set_band(p, gate_y, BAND_FLY);
+    else if (mode == MODE_BALL) set_band(p, gate_y, BAND_BALL);
     return;
   }
-  if (!has && (orient == OR_ND || orient == OR_UDD) && p->x - sl_left(s) < 0) {
-    /* coming from the left onto a falling slope's top corner */
-    if (sl_gtop(p, s) - grav_bottom(p) > clip) {
-      if (overlap(p->x, p->y, in, in, s->x, s->y, s->w / 2, s->h / 2)) kill(g, -1);
-      return;
-    }
-    if (p->mode != MODE_WAVE && p->vy * mult <= 0) {
-      p->y = orient == OR_ND ? grav(p, sl_gtop(p, s)) + grav(p, ph) : grav(p, sl_gbottom(p, s)) - grav(p, ph);
-      p->on_ground = true;
-      p->inverse_rot = false;
-      return;
-    }
-  }
-  if (!gsnap && cube && orient >= 2 && !sl_circle_touch(p, s)) return;
-  bool colliding = overlap(p->x, p->y, ph, ph, s->x, s->y, s->w / 2, s->h / 2);
-  bool riding = p->sl_o >= 0;
-  Slope cur = {0};
-  if (riding) slope_get(p->sl, p->sl_o, &cur);
-  bool next = true;
-  if (riding) {
-    float diff = s->y - cur.y;
-    next = (cur.o == OR_NU || cur.o == OR_UDD) ? diff > 0 : diff < 0;
-  }
-  int co = riding ? sl_orient(p, &cur) : -1;
-  bool up_to_down = riding && co != orient && ((co == OR_ND && orient == OR_NU) || (co == OR_UDD && orient == OR_UDU));
-  if ((!riding || co == orient || up_to_down) && sl_touching(p, old, s) && colliding && sl_gtop(p, s) - grav_bottom(p) > 2 &&
-      (up_to_down || next)) {
-    if (riding && sl_angle(p, s) < sl_angle(p, &cur)) return;
-    float old_vel = (orient == OR_ND || orient == OR_UDD) ? grav(p, old->delta_y) : old->vy * TDT;
-    float ang = atanf(old_vel / (SPEEDS[p->speed] * TDT));
-    if (orient >= OR_UDD) ang = -ang;
-    bool had = old->sl_o >= 0;
-    if (had && riding) had = old->sl_o == p->sl_o;
-    bool hit = (orient == OR_ND || orient == OR_UDD) ? ang * 5 <= sl_angle(p, s) : ang <= sl_angle(p, s);
-    bool snap_down = (orient == OR_ND || orient == OR_UDD) && p->vy * mult > 0 && p->x - sl_left(s) > 0;
-    if (hit || snap_down) {
-      if (p->mode == MODE_WAVE) { kill(g, -1); return; }   /* the wave does not ride slopes */
-      if (orient >= OR_UDD) p->on_ceiling = true;
-      else { p->on_ground = true; landing(p); }
-      p->inverse_rot = false;
-      float t_prev = p->sl_t;
-      p->sl[0] = s->x; p->sl[1] = s->y; p->sl[2] = s->w; p->sl[3] = s->h; p->sl_o = (int8_t)s->o;
-      p->sl_t = t_prev;
-      if (snap_down && !had) {
-        if (orient == OR_ND && p->vy <= 0) { p->y = grav(p, sl_gtop(p, s)) + grav(p, ph); p->sl_down = true; p->vy = 0; }
-        else if (orient == OR_UDD && p->vy >= 0) { p->y = grav(p, sl_gbottom(p, s)) - grav(p, ph); p->sl_down = true; p->vy = 0; }
-      }
-      if (!p->sl_t) p->sl_t = old->t_elapsed;
-      sl_calc(g, old, s, ss, hold);
-    }
+  p->mode = (uint8_t)mode;
+  p->hover = 0;
+  switch (mode) {
+    case MODE_CUBE: case MODE_ROBOT: no_band(p); break;
+    case MODE_BALL: set_band(p, gate_y, BAND_BALL); break;
+    default: set_band(p, gate_y, BAND_FLY); break;
   }
+  if (mode == MODE_SHIP || mode == MODE_UFO || mode == MODE_SWING) p->vy *= 0.5f;
+  if (mode == MODE_WAVE) p->vy = 0;
 }
 
-static void flip_other(Game *g);
-static void solid(Game *g, unsigned i, float ox, float oy, float hw, float hh) {
+/* gravity and the key for one tick */
+static void move_mode(Game *g, bool hold, bool pressed) {
   Player *p = &g->p;
-  if (p->sl_o >= 0 && p->mode != MODE_WAVE) {
-    /* riding a slope: only a falling one gives way to a block */
-    Slope cur;
-    slope_get(p->sl, p->sl_o, &cur);
-    int o = sl_orient(p, &cur);
-    if (o != OR_ND && o != OR_UDD) return;
-    if (ox + hw >= p->x) { sl_clear(p); p->co_o = -1; p->co_ticks = 0; p->on_ground = true; }
-  }
-  /* a block level with the foot of a slope touched last tick must not catch it */
-  for (int k = 0; k < p->npot; k++) {
-    float bc = p->pot_o[k] < 2 ? oy + hh : oy - hh, sc = p->pot_o[k] < 2 ? p->pot[k][1] : p->pot[k][0];
-    if (bc - sc < 2) return;
-  }
-  float clip = (p->mode == MODE_SHIP || p->mode == MODE_UFO ? 7.0f : 10.0f) + fabsf(p->vy) * TDT;
-  float o_bottom = p->upside ? -(oy + hh) : oy - hh, o_top = p->upside ? -(oy - hh) : oy + hh;
-  float in = p->mode == MODE_WAVE ? 1.5f : 4.5f;
-  bool internal = overlap(p->x, p->y, in, in, ox, oy, hw, hh), grav_snap = false;
-  if (p->ceil_inv > 0) {
-    float in_bottom = p->upside ? -(p->y + in) : p->y - in, diff = o_bottom - in_bottom;
-    grav_snap = internal && diff >= 0 && diff <= clip;
-  }
-  /* a mini player about to land on or touch a face is not crushed */
-  bool safe = p->mini && (o_top - grav_bottom(p) <= clip || grav_top(p) - o_bottom <= clip);
-  float bottom = grav_bottom(p);
-  if (p->mode == MODE_WAVE) {
-    /* a wave stands on a top face only while a slide modifier (1755) is armed */
-    if (p->arm_slide && o_top - bottom <= clip + 2 * in && grav(p, p->y) >= (o_top + o_bottom) / 2) {
-      p->y = grav(p, o_top) + grav(p, phalf(p));
-      if (p->vy * (p->upside ? -1 : 1) < 0) p->vy = 0;
-      p->on_ground = true;
-      return;
-    }
-    if (internal) kill(g, (int)i);
-    return;
-  }
-  /* the ground modes resolve a head hit only while armed: a gravity change
-     just now, a head modifier (1859) or a flip modifier (2866) */
-  bool armed = grav_snap || p->arm_head || p->arm_flip;
-  if (!armed && !safe && internal) { kill(g, (int)i); return; }
-  if (o_top - bottom <= clip && p->vy <= 0) {
-    p->y = grav(p, o_top) + grav(p, phalf(p));
-    if (p->vy <= 0) p->vy = 0;
-    p->on_ground = true;
-    p->inverse_rot = false;
-    p->time_since_ground = 0;
-    landing(p);
-  } else if ((p->mode != MODE_CUBE && p->mode != MODE_ROBOT) || armed) {
-    if ((grav_top(p) - o_bottom <= clip && p->vy >= 0) || grav_snap) {
-      float ytop = grav(p, o_bottom) - grav(p, phalf(p));
-      bool cube = p->mode == MODE_CUBE || p->mode == MODE_ROBOT || p->mode == MODE_SPIDER;
-      if (cube && p->arm_flip && !grav_snap) {
-        /* PlayerObject::didHitHead: turn over and stand on the face */
+  float spd = SPEEDS[p->speed];
+  bool ground = p->on_ground;
+  switch (p->mode) {
+    case MODE_CUBE:
+      /* held on a surface: jump (again and again while held) */
+      if (ground && hold) { jump(g, CUBE_JUMP); p->buffer = BUF_END; fx(g, FX_JUMP, 0, -1, p->x, p->y); }
+      if (!p->on_ground) p->vy -= CUBE_G * TDT;
+      if (p->vy < -FALL_MAX) p->vy = -FALL_MAX;
+      break;
+    case MODE_ROBOT:
+      if (ground && hold) { jump(g, ROBOT_JUMP); p->hover = (uint8_t)(ROBOT_HOLD * ND_HZ); fx(g, FX_JUMP, 2, -1, p->x, p->y); }
+      if (p->hover && hold && p->vy > 0) { p->hover--; p->vy = p->vy > ROBOT_JUMP ? p->vy : ROBOT_JUMP; }
+      else { p->hover = 0; if (!p->on_ground) p->vy -= CUBE_G * TDT; }
+      if (p->vy < -FALL_MAX) p->vy = -FALL_MAX;
+      break;
+    case MODE_SHIP:
+      p->vy += (hold ? SHIP_UP : -SHIP_DOWN) * TDT;
+      p->vy = clampf(p->vy, SHIP_VMIN, SHIP_VMAX);
+      break;
+    case MODE_UFO:
+      if (pressed) { p->vy = p->mini ? UFO_FLAP * MINI_JUMP : UFO_FLAP; fx(g, FX_JUMP, 1, -1, p->x, p->y); g->jumps++; }
+      p->vy -= UFO_G * TDT;
+      if (p->vy < -UFO_FALL) p->vy = -UFO_FALL;
+      break;
+    case MODE_BALL:
+      if ((ground || p->on_ceiling) && pressed) {
+        p->upside = !p->upside;
+        p->vy = -BALL_FLIP;
+        g->jumps++;
+        fx(g, FX_JUMP, 0, -1, p->x, p->y);
+      }
+      p->vy -= BALL_G * TDT;
+      if (p->vy < -FALL_MAX) p->vy = -FALL_MAX;
+      break;
+    case MODE_SWING:
+      if (pressed) { p->upside = !p->upside; p->vy *= -0.5f; g->jumps++; fx(g, FX_JUMP, 1, -1, p->x, p->y); }
+      p->vy -= SWING_G * TDT;
+      p->vy = clampf(p->vy, -SWING_VMAX, SWING_VMAX);
+      break;
+    case MODE_WAVE:
+      p->vy = (hold ? 1 : -1) * spd * WAVE_SLOPE * (p->mini ? 2 : 1);
+      break;
+    case MODE_SPIDER:
+      if (ground && pressed) {
+        /* the spider snaps to the surface on the other side: the nearest
+           solid above (in its own up), or the band's other edge */
+        float best = p->upside ? p->ground_y : p->ceiling_y;
+        LIter it;
+        level_iter(g->L, p->x - 20, p->x + 20, &it);
+        for (const RObj *o; (o = level_next(&it));) {
+          if (objdefs[o->type].hit != HIT_SOLID) continue;
+          float hw, hh, ox = obj_x(o), oy = obj_y(o);
+          obj_hitbox(o, &hw, &hh);
+          if (fabsf(ox - p->x) > hw + phalf(p) - 2) continue;
+          if (!p->upside && oy - hh >= p->y + phalf(p) - 1 && oy - hh < best) best = oy - hh;
+          if (p->upside && oy + hh <= p->y - phalf(p) + 1 && oy + hh > best) best = oy + hh;
+        }
+        if (best > 99999 || best < -99999) break;
+        p->y = p->upside ? best + phalf(p) : best - phalf(p);
         p->upside = !p->upside;
-        p->y = ytop;
         p->vy = 0;
         p->on_ground = true;
-        p->inverse_rot = false;
-        p->snap_rot = true;
-        p->time_since_ground = 0;
-        p->ceil_inv = CEILING_INVUL;
-        if (p->arm_noauto) p->buffer = BUF_END;
-        flip_other(g);
-        landing(p);
-        return;
+        g->jumps++;
+        fx(g, FX_JUMP, 2, -1, p->x, p->y);
       }
-      if (!grav_snap && !cube) p->on_ceiling = true;
-      if (grav_snap) p->vy = 0;
-      p->inverse_rot = false;
-      p->time_since_ground = 0;
-      p->y = ytop;
-      if (p->vy >= 0) p->vy = 0;
-    } else if (!safe && internal) kill(g, (int)i);
-  } else if (!safe && internal) kill(g, (int)i);
-}
-
-/* What a pad or a ring gives the player in its mode and size. The robot
-   takes the cube's pads and 0.9 of its rings (GD 2.2's ring table, read by
-   gdsolver); the wave keeps its own speed. */
-static float jump_value(const Player *p, int type) {
-  int m = p->mode;
-  if (m <= MODE_UFO) return JUMPS[p->speed][type][m][p->mini];
-  if (m == MODE_ROBOT) {
-    float v = JUMPS[p->speed][type][MODE_CUBE][p->mini];
-    return (type & 1) ? v * 0.9f : v;   /* the odd types are rings */
+      if (!p->on_ground) p->vy -= CUBE_G * TDT;
+      if (p->vy < -FALL_MAX) p->vy = -FALL_MAX;
+      break;
   }
-  /* the spider takes the ball's values, the swing 0.6 of the cube's */
-  if (m == MODE_SPIDER) return JUMPS[p->speed][type][MODE_BALL][p->mini];
-  if (m == MODE_SWING) return JUMPS[p->speed][type][MODE_CUBE][p->mini] * 0.6f;
-  return p->vy;
 }
 
-/* Red ring and pad (GD's ringJump / bumpPlayer ratios, read by gdsolver):
-   the ring is the cube's jump times a per-mode ratio, the pad 20 GD units
-   (the yellow one's 16 x 1.25), both then scaled for the ball, spider and
-   swing like the other rings and pads. */
-static float red_value(const Player *p, bool pad) {
-  float cube = JUMPS[p->speed][J_YORB][MODE_CUBE][p->mini];
-  float r;
-  switch (p->mode) {
-    case MODE_SHIP: r = pad ? (p->mini ? .95f : .63f) : (p->mini ? 1.40f / 1.38f : 1.00f / 1.38f) * 1.38f; break;
-    case MODE_UFO: r = pad ? (p->mini ? .98f : .6f) : (p->mini ? 1.36f : 1.02f); break;
-    case MODE_BALL: r = pad ? .6f * 1.25f : 1.34f * .7f; break;
-    case MODE_SPIDER: r = pad ? .6f * 1.25f : 1.34f * .7f; break;
-    case MODE_ROBOT: r = pad ? 1.25f : 1.28f; break;
-    case MODE_SWING: r = pad ? .6f * 1.25f : 1.38f * .6f; break;
-    default: r = pad ? 1.25f : 1.38f; break;
-  }
-  if (pad) return JUMPS[p->speed][J_YPAD][MODE_CUBE][p->mini] * r;
-  return cube * r;
-}
+/* ------------------------------------------------------------ objects */
 
-static void enter_mode(Game *g, int mode) {
+static void pad(Game *g, int sp, int i, float ox, float oy) {
   Player *p = &g->p;
-  p->mode = (uint8_t)mode;
-  p->hover = 0;
-}
-
-/* Dual mode: the other body (held in g->p2 while one is being stepped). */
-static const uint8_t DUAL_HEIGHT[8] = {9, 10, 9, 10, 10, 9, 9, 10};
-static void set_dual_bounds(Game *g) {
-  int h = DUAL_HEIGHT[g->p.mode] > DUAL_HEIGHT[g->p2.mode] ? DUAL_HEIGHT[g->p.mode] : DUAL_HEIGHT[g->p2.mode];
-  float in_block = fmodf(g->dual_y, 30), off = (ceilf((h + 1) / 2.f) - 1) * 30;
-  float ground = fmaxf(0, floorf((g->dual_y - off) / 30)) * 30;
-  if ((h & 1) && in_block < 15) ground = fmaxf(0, ground - 30);
-  g->p.ground_y = g->p2.ground_y = ground;
-  g->p.ceiling_y = g->p2.ceiling_y = ground + h * 30;
-}
-/* Modes whose gravity stays linked in dual (cube and wave, and each with itself). */
-static bool linked(int a, int b) {
-  bool ca = a == MODE_CUBE || a == MODE_WAVE, cb = b == MODE_CUBE || b == MODE_WAVE;
-  return a == b || (ca && cb);
-}
-static void flip_other(Game *g) {
-  Player *p = &g->p, *o = &g->p2;
-  if (!g->dual || !linked(p->mode, o->mode) || p->upside != o->upside) return;
-  o->upside = !p->upside;
-  o->vy /= -2;
-  o->ceil_inv = CEILING_INVUL;
-}
-/* After a teleport (GD 2.2): its gravity mode (GD's own upside-down flag,
-   see the gravity portals) and a static force pushing the player off. */
-static void teleported(Game *g, const LStyle *st, unsigned force) {
-  Player *p = &g->p;
-  unsigned m = STF_TPGRAV(st_flags(st));
-  bool gd_up = p->upside ^ (g->frame >= 2);
-  bool want = m == 3 ? !gd_up : m == 2;
-  if (m && want != gd_up) {
-    p->vy /= -2;
-    p->upside = !p->upside;
-    p->inverse_rot = false;
-    p->snap_rot = true;
-    flip_other(g);
+  if (p->mode == MODE_WAVE) return;
+  float base = p->mode == MODE_SHIP || p->mode == MODE_SWING ? 520 : p->mode == MODE_BALL || p->mode == MODE_UFO ? 600 : 900;
+  set_used(g, (unsigned)i);
+  switch (sp) {
+    case SP_PAD_Y: p->vy = base; fx(g, FX_PAD, 0, i, ox, oy); break;
+    case SP_PAD_P: p->vy = base * 0.68f; fx(g, FX_PAD, 2, i, ox, oy); break;
+    case SP_PAD_R: p->vy = base * 1.25f; fx(g, FX_PAD, 3, i, ox, oy); break;
+    case SP_PAD_B: p->upside = !p->upside; p->vy = -300; fx(g, FX_PAD, 1, i, ox, oy); break;
   }
-  if (force) {
-    p->vy = force * 54.f;
-    p->on_ground = false;
-    p->jumped = true;
-  }
-}
-static bool portal_free;   /* the portal being entered is a free-mode one */
-static uint8_t force_ids;  /* force ids already counted this tick */
-static void portal_bounds(Game *g, float oy, float height) {
-  if (g->dual) set_dual_bounds(g);
-  else if (portal_free) {
-    /* free mode (GD 2.2): no band, the camera follows */
-    g->p.ground_y = g->frame ? -1e6f : 0;
-    g->p.ceiling_y = 1e6f;
-    g->cam_intended_y = g->cam_y;
-  } else set_bounds_for_portal(g, oy, height);
+  if (p->mini) p->vy *= MINI_JUMP;
+  p->on_ground = false;
 }
 
-static void spider_jump(Game *g);
-
-static void special(Game *g, unsigned i, const RObj *o, bool hold, float ox, float oy) {
+static void ring(Game *g, int sp, int i, float ox, float oy) {
   Player *p = &g->p;
-  const ObjDef *d = &objdefs[o->type];
-  bool used = game_used(g, o, i);
-  portal_free = o->paint && (st_flags(obj_style(g->L, o)) & STF_FREE);
-  switch (d->special) {
-    case SP_PAD_Y: case SP_PAD_P:
-      if (used) break;
-      p->vy = jump_value(p, d->special == SP_PAD_Y ? J_YPAD : J_PPAD);
-      p->on_ground = false; p->inverse_rot = false; p->left_ground = true; p->jumped = true; p->hover = 0;
-      set_used(g, i);
-      update_rot_dir(p);
-      fx(g, FX_PAD, d->special == SP_PAD_Y ? 0 : 2, (int)i, ox, oy);
-      break;
-    case SP_PAD_B: {
-      if (used) break;
-      int xf = obj_xf(o), rot = (xf & 3) * 90;
-      if (xf < 0) rot = (int)(obj_rot(o) * 360 / 1024);
-      if (xf >= 0 && (xf & 8)) rot = (rot + 180) % 360;
-      bool down = rot > 90 && rot < 270;
-      if ((!down && p->upside) || (down && !p->upside)) break;
-      p->left_ground = true;
-      update_rot_dir(p);
-      p->vy = jump_value(p, J_BPAD);
-      p->upside = !p->upside;
-      flip_other(g);
-      p->on_ground = false; p->inverse_rot = false; p->ceil_inv = CEILING_INVUL; p->jumped = true; p->hover = 0;
-      set_used(g, i);
-      fx(g, FX_PAD, 1, (int)i, ox, oy);
-      break;
-    }
-    case SP_ORB_Y: case SP_ORB_P: case SP_ORB_B: case SP_ORB_G:
-      if (!used && hold && p->buffer == BUF_READY) {
-        int j = d->special == SP_ORB_P ? J_PORB : d->special == SP_ORB_B ? J_BORB : J_YORB;
-        if (d->special == SP_ORB_G) {
-          /* the green ring flips first, then launches (not halved) */
-          p->upside = !p->upside;
-          p->ceil_inv = CEILING_INVUL;
-          flip_other(g);
-        }
-        float v = jump_value(p, j);
-        if (d->special == SP_ORB_G && p->mode == MODE_SHIP) v *= 0.7f;
-        if (p->mode != MODE_WAVE) p->vy = v;
-        if (d->special == SP_ORB_B) { p->upside = !p->upside; p->ceil_inv = CEILING_INVUL; flip_other(g); }
-        p->on_ground = false; p->on_ceiling = false; p->inverse_rot = false; p->left_ground = true;
-        p->buffer = BUF_END; p->jumped = true; p->hover = 0;
-        p->spin = -BALL_AIR_SPIN;
-        update_rot_dir(p);
-        g->jumps++;
-        set_used(g, i);
-        fx(g, FX_ORB, (uint8_t)(d->special == SP_ORB_G ? 3 : d->special - SP_ORB_Y), (int)i, ox, oy);
-      }
-      break;
-    case SP_GRAV_N: case SP_GRAV_F:
-      if (used) break;
-      p->ceil_inv = CEILING_INVUL;
-      /* GD's own upside-down flag reads inverted in frames 2 and 3 (their v
-         axis is opposite to GD's up; gdsolver measured frame 3): a portal
-         compares against it */
-      if ((p->upside ^ (g->frame >= 2)) != (d->special == SP_GRAV_F)) {
-        p->vy /= -2;
-        p->upside = !p->upside;
-        p->inverse_rot = false;
-        if (p->mode == MODE_UFO) p->rot = 0; else p->snap_rot = true;
-        flip_other(g);
-        p->left_ground = true;
-        fx(g, FX_GRAVITY, d->special == SP_GRAV_F, (int)i, ox, oy);
-      }
-      set_used(g, i);
-      break;
-    case SP_PORTAL_CUBE: case SP_PORTAL_ROBOT: {
-      if (used) break;
-      int want = d->special == SP_PORTAL_CUBE ? MODE_CUBE : MODE_ROBOT;
-      if (g->dual) set_dual_bounds(g);
-      else { p->ground_y = 0; p->ceiling_y = 999999; }
-      if (p->mode != want) {
-        if (p->mode != MODE_BALL && p->mode != MODE_CUBE && p->mode != MODE_ROBOT) p->vy /= 2;
-        if (p->mode == MODE_WAVE) p->vy *= 0.9f;
-        p->ceil_inv = CEILING_INVUL;
-        p->snap_rot = true;
-        enter_mode(g, want);
-        if (g->dual) set_dual_bounds(g);
-        flip_other(g);
-        update_rot_dir(p);
-        fx(g, FX_PORTAL, want == MODE_CUBE ? 0 : 5, (int)i, ox, oy);
-      }
-      set_used(g, i);
-      break;
-    }
-    case SP_PORTAL_BALL:
-      if (used) break;
-      portal_bounds(g, oy, BALL_HEIGHT);
-      if (p->mode != MODE_BALL) {
-        if (p->mode == MODE_WAVE) p->vy *= 0.45f;
-        if (p->mode == MODE_SHIP || p->mode == MODE_UFO || p->mode == MODE_WAVE) {
-          p->vy /= 2;
-          if (hold && p->mode == MODE_SHIP) p->buffer = BUF_READY; /* holding through the portal flips at once */
-        }
-        enter_mode(g, MODE_BALL);
-        if (g->dual) set_dual_bounds(g);
-        p->spin = -BALL_AIR_SPIN;
-        p->inverse_rot = false;
-        p->snap_rot = true;
-        flip_other(g);
-        fx(g, FX_PORTAL, 2, (int)i, ox, oy);
-      }
-      set_used(g, i);
-      break;
-    case SP_PORTAL_SHIP:
-      if (used) break;
-      portal_bounds(g, oy, 300);
-      if (p->mode != MODE_SHIP) {
-        if (p->mode == MODE_WAVE) p->vy *= 0.9f;
-        p->vy /= p->mode == MODE_UFO || p->mode == MODE_WAVE ? 4 : 2;
-        enter_mode(g, MODE_SHIP);
-        if (g->dual) set_dual_bounds(g);
-        p->inverse_rot = false;
-        p->snap_rot = true;
-        flip_other(g);
-        p->vy = p->mini ? clampf(p->vy, SHIP_MINI_MIN, SHIP_MINI_MAX) : clampf(p->vy, SHIP_MIN, SHIP_MAX);
-        fx(g, FX_PORTAL, 1, (int)i, ox, oy);
-      }
-      set_used(g, i);
-      break;
-    case SP_PORTAL_UFO:
-      if (used) break;
-      portal_bounds(g, oy, 300);
-      if (p->mode != MODE_UFO) {
-        int was = p->mode;
-        if (was == MODE_WAVE) p->vy *= 0.9f;
-        p->vy /= was == MODE_SHIP || was == MODE_WAVE ? 4 : 2;
-        enter_mode(g, MODE_UFO);
-        if (g->dual) set_dual_bounds(g);
-        p->inverse_rot = false;
-        p->rot = 0;
-        flip_other(g);
-        /* coming from a flying mode, a held button flaps at once */
-        if (was == MODE_SHIP || was == MODE_WAVE) p->buffer = BUF_READY;
-        fx(g, FX_PORTAL, 3, (int)i, ox, oy);
-      }
-      set_used(g, i);
-      break;
-    case SP_PORTAL_WAVE:
-      if (used) break;
-      portal_bounds(g, oy, 300);
-      if (p->mode != MODE_WAVE) {
-        enter_mode(g, MODE_WAVE);
-        if (g->dual) set_dual_bounds(g);
-        p->inverse_rot = false;
-        p->snap_rot = true;
-        flip_other(g);
-        fx(g, FX_PORTAL, 4, (int)i, ox, oy);
-      }
-      set_used(g, i);
-      break;
-    case SP_SIZE_MINI: case SP_SIZE_NORMAL:
-      if (used) break;
-      if (p->mini != (d->special == SP_SIZE_MINI)) {
-        p->mini = d->special == SP_SIZE_MINI;
-        fx(g, FX_SIZE, p->mini, (int)i, ox, oy);
-      }
-      set_used(g, i);
-      break;
-    case SP_SPEED_0: case SP_SPEED_1: case SP_SPEED_2: case SP_SPEED_3:
-      if (used) break;
-      p->speed = (uint8_t)(d->special - SP_SPEED_0);
-      if (g->dual) g->p2.speed = p->speed;
-      set_used(g, i);
-      trig_log(g, LOG_SPEED, p->speed, 0);
-      fx(g, FX_SPEED, p->speed, (int)i, ox, oy);
-      break;
-    case SP_DUAL_ON:
-      if (used) break;
-      set_used(g, i);
-      if (!g->dual) {
-        p->ceil_inv = CEILING_INVUL;
-        g->dual = true;
-        g->dual_y = oy;
-        g->p2 = *p;
-        g->p2.upside = !p->upside;
-        g->p2.second = true;
-        fx(g, FX_PORTAL, 6, (int)i, ox, oy);
-      }
-      set_dual_bounds(g);
-      break;
-    case SP_DUAL_OFF:
-      if (used) break;
-      set_used(g, i);
-      if (g->dual) {
-        g->dual = false;
-        if (p->second) g->dual_swap = true;
-        if (p->mode == MODE_CUBE || p->mode == MODE_ROBOT) { p->ground_y = 0; p->ceiling_y = 999999; }
-        else set_bounds_for_portal(g, g->dual_y, p->mode == MODE_BALL ? BALL_HEIGHT : 300);
-        fx(g, FX_PORTAL, 7, (int)i, ox, oy);
-      }
-      break;
-    case SP_TELEPORT: {
-      if (used) break;
-      set_used(g, i);
-      const LStyle *st = obj_style(g->L, o);
-      int off = st->arg & 0x7ff;   /* the offset: 11 bits, signed */
-      if (off & 0x400) off -= 0x800;
-      p->y = oy + (float)off;
-      p->has_snap = false;
-      p->left_ground = true;
-      teleported(g, st, ((unsigned)(uint16_t)st->arg >> 11) & 31);
-      fx(g, FX_PORTAL, 8, (int)i, ox, oy);
-      break;
-    }
-    case SP_KEY: case SP_ITEM:
-      if (used) break;
-      set_used(g, i);
-      fx(g, FX_COIN, 1, (int)i, ox, oy);
-      break;
-    case SP_PORTAL_SPIDER: case SP_PORTAL_SWING: {
-      if (used) break;
-      bool spider = d->special == SP_PORTAL_SPIDER;
-      portal_bounds(g, oy, spider ? BALL_HEIGHT : 300);
-      int want = spider ? MODE_SPIDER : MODE_SWING;
-      if (p->mode != want) {
-        int was = p->mode;
-        if (was == MODE_WAVE) p->vy *= 0.9f;
-        if (was == MODE_SHIP || was == MODE_UFO || was == MODE_WAVE) p->vy /= 2;
-        enter_mode(g, want);
-        if (g->dual) set_dual_bounds(g);
-        p->inverse_rot = false;
-        p->snap_rot = true;
-        flip_other(g);
-        if (!spider) p->vy = clampf(p->vy, -SWING_TERM, SWING_TERM);
-        fx(g, FX_PORTAL, spider ? 9 : 10, (int)i, ox, oy);
+  if (p->mode == MODE_WAVE) return;
+  float base = p->mode == MODE_SHIP || p->mode == MODE_SWING ? 420 : p->mode == MODE_BALL || p->mode == MODE_UFO ? 480 : 660;
+  set_used(g, (unsigned)i);
+  uint8_t arg = 0;
+  switch (sp) {
+    case SP_ORB_P: p->vy = base * 0.7f; arg = 1; break;
+    case SP_ORB_R: p->vy = base * 1.3f; arg = 4; break;
+    case SP_ORB_B: case SP_ORB_SPIDER: p->upside = !p->upside; p->vy = -300; arg = 2; break;
+    case SP_ORB_G: p->upside = !p->upside; p->vy = base * 0.85f; arg = 3; break;
+    default: p->vy = base; arg = 0; break;
+  }
+  if (p->mini) p->vy *= MINI_JUMP;
+  p->on_ground = false;
+  p->buffer = BUF_END;
+  g->jumps++;
+  fx(g, FX_ORB, arg, i, ox, oy);
+}
+
+static void gate(Game *g, int sp, int i, float ox, float oy) {
+  Player *p = &g->p;
+  switch (sp) {
+    case SP_PORTAL_CUBE: if (p->mode != MODE_CUBE) fx(g, FX_PORTAL, 0, i, ox, oy); enter_mode(g, MODE_CUBE, oy); break;
+    case SP_PORTAL_SHIP: if (p->mode != MODE_SHIP) fx(g, FX_PORTAL, 1, i, ox, oy); enter_mode(g, MODE_SHIP, oy); break;
+    case SP_PORTAL_BALL: if (p->mode != MODE_BALL) fx(g, FX_PORTAL, 2, i, ox, oy); enter_mode(g, MODE_BALL, oy); break;
+    case SP_PORTAL_UFO: if (p->mode != MODE_UFO) fx(g, FX_PORTAL, 3, i, ox, oy); enter_mode(g, MODE_UFO, oy); break;
+    case SP_PORTAL_WAVE: if (p->mode != MODE_WAVE) fx(g, FX_PORTAL, 4, i, ox, oy); enter_mode(g, MODE_WAVE, oy); break;
+    case SP_PORTAL_ROBOT: if (p->mode != MODE_ROBOT) fx(g, FX_PORTAL, 6, i, ox, oy); enter_mode(g, MODE_ROBOT, oy); break;
+    case SP_PORTAL_SPIDER: if (p->mode != MODE_SPIDER) fx(g, FX_PORTAL, 9, i, ox, oy); enter_mode(g, MODE_SPIDER, oy); break;
+    case SP_PORTAL_SWING: if (p->mode != MODE_SWING) fx(g, FX_PORTAL, 10, i, ox, oy); enter_mode(g, MODE_SWING, oy); break;
+    case SP_GRAV_N: case SP_GRAV_F: {
+      bool flip = sp == SP_GRAV_F;
+      if (p->upside != flip) {
+        p->upside = flip;
+        p->vy *= -0.4f;
+        fx(g, FX_GRAVITY, flip, i, ox, oy);
       }
-      set_used(g, i);
       break;
     }
-    case SP_PAD_R:
-      if (used) break;
-      p->vy = red_value(p, true);
-      boost_latch(p);
-      p->on_ground = false; p->inverse_rot = false; p->left_ground = true; p->jumped = true; p->hover = 0;
-      set_used(g, i);
-      update_rot_dir(p);
-      fx(g, FX_PAD, 3, (int)i, ox, oy);
-      break;
-    case SP_ORB_R: case SP_ORB_DASH: case SP_ORB_DASH_G: case SP_ORB_SPIDER: case SP_ORB_T:
-      if (!used && hold && p->buffer == BUF_READY) {
-        if (d->special == SP_ORB_R) {
-          if (p->mode != MODE_WAVE) { p->vy = red_value(p, false); boost_latch(p); }
-        } else if (d->special == SP_ORB_T) {
-          trig_toggle_ring(g, (unsigned)obj_style(g->L, o)->arg);
-        } else if (d->special == SP_ORB_SPIDER) {
-          spider_jump(g);
-          p->no_jump = true;   /* GD takes the ring in its button phase: a held jump waits a tick */
-        } else {
-          if (d->special == SP_ORB_DASH_G) { p->upside = !p->upside; p->ceil_inv = CEILING_INVUL; flip_other(g); }
-          /* the ring's own angle, in the player's frame */
-          float a = (float)((obj_rot(o) + 1024 - (g->frame & 3) * 256) & 1023) * (360.f / 1024);
-          if (obj_flips(o) & 1) a = -a;
-          float t = tanf(-a * DEG);
-          p->dash = true;
-          p->dash_slope = fmaxf(-8, fminf(8, t));
-          p->vy = 0;
-        }
-        p->on_ground = false; p->on_ceiling = false; p->inverse_rot = false; p->left_ground = true;
-        p->buffer = BUF_END; p->jumped = true; p->hover = 0;
-        update_rot_dir(p);
-        g->jumps++;
-        set_used(g, i);
-        fx(g, FX_ORB, (uint8_t)(d->special == SP_ORB_R ? 4 : d->special == SP_ORB_SPIDER ? 5 : d->special == SP_ORB_T ? 6 : 3), (int)i, ox, oy);
-      }
-      break;
-    case SP_FORCE: {
-      /* a force box: a flat push per tick while inside, along its own
-         direction (0 = up), per mode (gdsolver's measurements, GD units per
-         tick per unit of force); boxes sharing a force id count once */
-      static const float UNIT[8] = {.225f, .1058f, .135f, .1305f, 0, .2025f, .135f, .09f};
-      int arg = obj_style(g->L, o)->arg, fid = arg >> 12 & 7;
-      if (fid) { if (force_ids & 1u << fid) break; force_ids |= (uint8_t)(1u << fid); }
-      float a = (float)((obj_rot(o) + 1024 - (g->frame & 3) * 256) & 1023) * (6.2831853f / 1024);
-      float up = cosf(a) * (obj_flips(o) & 2 ? -1 : 1);
-      if (!p->dash && fabsf(up) > 0.01f) p->vy += grav(p, up * (arg & 4095) * 0.01f * UNIT[p->mode & 7] * 54);
+    case SP_SIZE_MINI: case SP_SIZE_NORMAL: {
+      bool mini = sp == SP_SIZE_MINI;
+      if (p->mini != mini) { p->mini = mini; fx(g, FX_SIZE, mini, i, ox, oy); }
       break;
     }
-    case SP_FORCE_CIRCLE: {
-      /* a force field (3645, gdsolver): circle against circle, a push along
-         its direction ramping across its diameter, 0.270 at the far edge */
-      float R = d->w10 * 0.1f * scale_of(g->L, o), dx = p->x - ox, dy = p->y - oy, rr = R + phalf(p);
-      if (dx * dx + dy * dy > rr * rr || p->dash) break;
-      float a = (float)((obj_rot(o) + 1024 - (g->frame & 3) * 256) & 1023) * (6.2831853f / 1024);
-      float dir = cosf(a) < 0 ? -1.f : 1.f;
-      float frac = dir < 0 ? (p->y - (oy - R)) / (2 * R) : ((oy + R) - p->y) / (2 * R);
-      frac = clampf(frac, 0, 1);
-      p->vy += grav(p, dir * 0.270f * frac * 54);
+    case SP_SPEED_0: case SP_SPEED_1: case SP_SPEED_2: case SP_SPEED_3: {
+      uint8_t s = (uint8_t)(sp - SP_SPEED_0);
+      if (p->speed != s) { p->speed = s; fx(g, FX_SPEED, s, i, ox, oy); }
       break;
     }
-    case SP_STOP_DASH:
-      p->dash = false;
+  }
+}
+
+static void special(Game *g, unsigned i, const RObj *o, bool hold, float ox, float oy, bool *touching_ring) {
+  Player *p = &g->p;
+  int sp = objdefs[o->type].special;
+  bool used = game_used(g, o, i);
+  switch (sp) {
+    case SP_PAD_Y: case SP_PAD_P: case SP_PAD_B: case SP_PAD_R:
+      if (!used) pad(g, sp, (int)i, ox, oy);
       break;
-    case SP_ARM_HEAD: p->arm_head = 2; break;
-    case SP_ARM_FLIP: p->arm_flip = 2; break;
-    case SP_ARM_NOAUTO: p->arm_noauto = 2; break;
-    case SP_ARM_SLIDE: p->arm_slide = 2; break;
-    case SP_TELEPORT2: {
+    case SP_ORB_Y: case SP_ORB_P: case SP_ORB_B: case SP_ORB_G: case SP_ORB_R: case SP_ORB_SPIDER: case SP_ORB_DASH: case SP_ORB_T:
       if (used) break;
-      set_used(g, i);
-      float tx, ty;
-      const LStyle *st = obj_style(g->L, o);
-      if (trig_anchor(g, (unsigned)st->arg & 0x1ff, &tx, &ty)) {
-        float u, v;
-        to_local(g, tx, ty, &u, &v);
-        p->x = u;
-        p->y = v;
-        p->has_snap = false;
-        p->left_ground = true;
-        sl_clear(p);
-        teleported(g, st, ((unsigned)st->arg >> 9) & 31);
-        fx(g, FX_PORTAL, 8, (int)i, ox, oy);
-      }
-      break;
-    }
-    case SP_TOUCH:
-      trig_touch(g, (unsigned)obj_style(g->L, o)->arg);
+      *touching_ring = true;
+      if (!p->orb_touching) fx(g, FX_ORB_TOUCH, 0, (int)i, ox, oy);
+      if (hold && p->buffer == BUF_READY) ring(g, sp == SP_ORB_DASH || sp == SP_ORB_T ? SP_ORB_Y : sp, (int)i, ox, oy);
       break;
     case SP_COIN:
       if (used) break;
@@ -1064,577 +321,108 @@ static void special(Game *g, unsigned i, const RObj *o, bool hold, float ox, flo
       g->coins |= (uint8_t)(1u << (game_coin_index(g->L, i) & 7));
       fx(g, FX_COIN, 0, (int)i, ox, oy);
       break;
-    default: break;
-  }
-}
-
-#define MAX_NEAR 192
-typedef struct { const RObj *o; uint32_t gi; float x, y; } Near;
-
-/* Hitbox centre and half extents of an object at (x, y): its box turns with
-   it, and a few objects carry their box off centre. */
-static void hit_box(const Level *L, const RObj *o, float x, float y, float *cx, float *cy, float *hw, float *hh) {
-  const ObjDef *d = &objdefs[o->type];
-  obj_hitbox(o, hw, hh);
-  if (obj_scale(o)) {
-    float sx, sy;
-    obj_scale_xy(L, o, &sx, &sy);
-    if (obj_rot(o) & 256) { float t = sx; sx = sy; sy = t; }
-    *hw *= fabsf(sx);
-    *hh *= fabsf(sy);
-  }
-  *cx = x;
-  *cy = y;
-  if (d->hx2) {
-    float off = d->hx2 * 0.5f, a = obj_rot(o) * (6.2831853f / 1024);
-    if (obj_flips(o) & 1) off = -off;
-    *cx += off * cosf(a);
-    *cy -= off * sinf(a);
-  }
-}
-
-/* An object as seen from the player's (turned) frame, also turned by its
-   groups' rotation (degrees). */
-static RObj local_obj(const Game *g, const RObj *o, float angle) {
-  RObj r = *o;
-  int turn = -(int)(g->frame & 3) * 256 + (int)lroundf(angle * (1024.f / 360));
-  unsigned rot = (unsigned)((int)obj_rot(o) + turn + 4096) & 1023;
-  r.ys = (r.ys & ~(1023u << 20)) | rot << 20;
-  return r;
-}
-
-/* The spider's jump, after GD's spiderTestJumpInternal as gdsolver read it:
-   solids in a strip hung off the centre ([x, x + 14.5]) or, failing that,
-   over the player's width; hazards in an 8 unit strip. The nearest face on
-   the other side of gravity wins (a hazard kills there); a solid ahead of
-   the centre only if the spider fits there. Nothing: the band's face. */
-typedef struct { float cx, cy, hw, hh; } Box;
-static bool spider_pick(const Player *p, const Box *L, int n, float gs, float *y) {
-  float h = phalf(p);
-  bool f = false;
-  for (int i = 0; i < n; i++) {
-    const Box *o = &L[i];
-    float rest = (gs < 0 ? o->cy + o->hh : o->cy - o->hh) - gs * h;
-    if ((rest - p->y) * gs < -10 || (f && (rest - p->y) * gs >= (*y - p->y) * gs)) continue;
-    if (o->cx - o->hw > p->x) {
-      bool blocked = false;
-      for (int j = 0; j < n && !blocked; j++) {
-        const Box *b = &L[j];
-        if (b == o) continue;
-        blocked = !(p->x + h < b->cx - b->hw || b->cx + b->hw < p->x - h || rest + h < b->cy - b->hh + 2 || b->cy + b->hh - 2 < rest - h);
-      }
-      if (blocked) continue;
-    }
-    *y = rest;
-    f = true;
+    default:
+      gate(g, sp, (int)i, ox, oy);
+      break;
   }
-  return f;
 }
 
-static void spider_jump(Game *g) {
+/* A solid: land on it, bump into it, or crash into its side. */
+static void solid(Game *g, const Player *old, unsigned i, float ox, float oy, float hw, float hh) {
   Player *p = &g->p;
-  float h = phalf(p), sx = p->mini ? 8.7f : 14.5f, gs = p->upside ? -1.f : 1.f;
-  static Box strip[48], wide[48];
-  int ns = 0, nw = 0, hz = -1, vhaz = -1;
-  float haz_y = 0, vy_ = 0;
-  bool vf = false;
-  float X, Y;
-  to_world(g, p->x, p->y, &X, &Y);
-  bool vert = g->frame & 1;
-  LIter it;
-  level_iter_y(g->L, X - (vert ? 900 : 40), X + (vert ? 900 : 40), vert ? Y - 40 : -1e9f, vert ? Y + 40 : 1e9f, &it);
-  for (const RObj *o; (o = level_next(&it));) {
-    const ObjDef *d = &objdefs[o->type];
-    if ((d->hit != HIT_SOLID && d->hit != HIT_HAZARD) || d->shape == SHAPE_SLOPE) continue;
-    float wx, wy, ang;
-    if (!obj_where_rot(g, o, &wx, &wy, &ang) || (o->paint && (st_flags(obj_style(g->L, o)) & STF_NOTOUCH))) continue;
-    float lx, ly;
-    to_local(g, wx, wy, &lx, &ly);
-    RObj lo = local_obj(g, o, ang);
-    Box b;
-    hit_box(g->L, &lo, lx, ly, &b.cx, &b.cy, &b.hw, &b.hh);
-    bool haz = d->hit == HIT_HAZARD;
-    float hy = b.hh, hx = b.hw;
-    if (haz && d->shape == SHAPE_CIRCLE) hx = hy = d->w10 * 0.1f * scale_of(g->L, o);
-    if (vert) {
-      /* a turned frame (gdsolver, hooked on lv22): solids from a strip off
-         the leading edge, hazards within 4 of the centre (not saws); the
-         nearest face ahead wins, a hazard at its centre */
-      if (haz ? d->shape == SHAPE_CIRCLE || b.cx + b.hw < p->x - 4 || b.cx - b.hw > p->x + 4
-              : b.cx + b.hw < p->x + h || b.cx - b.hw > p->x + 2 * h + 1) continue;
-      float rest = haz ? b.cy : (gs > 0 ? b.cy - b.hh : b.cy + b.hh) - gs * h;
-      if ((rest - p->y) * gs <= 0.5f) continue;
-      if (!vf || (rest - p->y) * gs < (vy_ - p->y) * gs) { vy_ = rest; vf = true; vhaz = haz ? (int)it.gi : -1; }
-      continue;
-    }
-    /* only what reaches past the spider's far face */
-    if (gs > 0 ? b.cy + hy < p->y + h - 2 : b.cy - hy > p->y - h + 2) continue;
-    if (haz) {
-      if (b.cx + hx < p->x - 4 || b.cx - hx > p->x + 4) continue;
-      if (hz < 0 || (b.cy - haz_y) * gs < 0) { hz = (int)it.gi; haz_y = b.cy; }
-      continue;
-    }
-    if (!(b.cx + b.hw < p->x || b.cx - b.hw > p->x + sx) && ns < 48) strip[ns++] = b;
-    if (!(b.cx + b.hw < p->x - h || b.cx - b.hw > p->x + h + 4) && nw < 48) wide[nw++] = b;
-  }
-  float y = 0;
-  bool f = false, on_haz = false;
-  if (vert) {
-    f = vf; y = vy_; on_haz = vhaz >= 0; hz = vhaz;
-  } else if (!ns && hz >= 0) {
-    if (!nw) on_haz = true;
-    else { f = spider_pick(p, wide, nw, gs, &y); on_haz = !f || (haz_y - y) * gs < 0; }
-  } else {
-    f = spider_pick(p, strip, ns, gs, &y);
-    if (hz >= 0 && (!f || (haz_y - y) * gs < 0)) {
-      float y2 = 0;
-      bool f2 = nw ? spider_pick(p, wide, nw, gs, &y2) : false;
-      if (!nw || !f2 || (haz_y - y2) * gs < 0) on_haz = true;
-      else { y = y2; f = f2; }
-    }
-  }
-  if (on_haz && !vert) { y = haz_y; f = true; }
-  if (!f) {
-    /* the band's face (the floor, in the unturned frame) */
-    float bound = gs > 0 ? p->ceiling_y : p->ground_y;
-    if (fabsf(bound) < 1e5f) { y = bound - gs * h; f = true; }
+  float ph = phalf(p);
+  if (p->mode == MODE_WAVE) { kill(g, (int)i); return; }
+  float top = oy + hh, bottom = oy - hh;
+  /* the face the player's feet meet, and the one its head meets */
+  float face_feet = p->upside ? bottom : top, face_head = p->upside ? top : bottom;
+  float old_feet = feet(old), old_head = old->upside ? old->y - phalf(old) : old->y + phalf(old);
+  float tol = 7.0f + fabsf(old->vy) * TDT;
+  float u = up(p);
+  if ((old_feet - face_feet) * u >= -tol && p->vy <= 0) {
+    p->y = face_feet + u * ph;
+    p->vy = 0;
+    p->on_ground = true;
+    return;
   }
-  if (!f) return;   /* nothing to land on: GD does nothing */
-  p->y = y;
-  p->upside = !p->upside;
-  p->vy = 0;
-  p->has_snap = false;
-  p->on_ground = true;
-  sl_clear(p);
-  flip_other(g);
-  fx(g, FX_JUMP, 2, -1, p->x, p->y);
-  if (on_haz) kill(g, hz);
-}
-
-static SlopeSet near_slopes;   /* this tick's slopes around the player */
-
-/* GD carries a player standing on a moving solid along with it (world
-   vertical only, gdsolver): a face that sank away from the feet since the
-   last tick still holds the player, a few units being a tick's worth. */
-static void ride(Game *g, const Player *old, const Near *near, unsigned n) {
-  Player *p = &g->p;
-  if (g->frame || p->on_ground || !old->on_ground || p->vy > 0 || !g->L->ext) return;
-  if (p->mode != MODE_CUBE && p->mode != MODE_ROBOT && p->mode != MODE_SPIDER && p->mode != MODE_BALL) return;
-  float ph = phalf(p), foot = grav(p, p->y) - ph, best = 4, face = 0;
-  for (unsigned k = 0; k < n; k++) {
-    const RObj *o = near[k].o;
-    const ObjDef *d = &objdefs[o->type];
-    if (d->hit != HIT_SOLID || d->shape == SHAPE_SLOPE || !o->paint) continue;
-    const LStyle *st = obj_style(g->L, o);
-    if (!gset_moved(g, st->groups)) continue;
-    float hw, hh, ox, oy;
-    hit_box(g->L, o, near[k].x, near[k].y, &ox, &oy, &hw, &hh);
-    if (fabsf(p->x - ox) > hw + ph) continue;
-    float top = p->upside ? -(oy - hh) : oy + hh, gap = foot - top;
-    if (gap >= 0 && gap < best) { best = gap; face = top; }
+  if ((face_head - old_head) * u >= -tol && p->vy >= 0) {
+    p->y = face_head - u * ph;
+    p->vy = 0;
+    p->hover = 0;
+    if (p->mode != MODE_CUBE && p->mode != MODE_ROBOT && p->mode != MODE_SPIDER) p->on_ceiling = true;
+    return;
   }
-  if (best >= 4) return;
-  p->y = grav(p, face + ph);
-  p->vy = 0;
-  p->on_ground = true;
-  p->time_since_ground = 0;
-  landing(p);
+  /* a side: only a real overlap (not a graze) destroys */
+  if (overlap(p->x, p->y, ph - 5, ph - 5, ox, oy, hw, hh)) kill(g, (int)i);
 }
 
 static void collide(Game *g, const Player *old, bool hold) {
   Player *p = &g->p;
-  near_slopes.n = 0;
-  force_ids = 0;
-  /* objects around the player, in level order, where their groups put them */
-  Near near[MAX_NEAR];
-  static RObj turned[64];      /* objects seen from a turned frame */
-  unsigned n = 0, nt = 0;
+  float ph = phalf(p);
+  bool touching_ring = false;
   LIter it;
-  float PX_, PY_;
-  to_world(g, p->x, p->y, &PX_, &PY_);
-  bool vert = g->frame & 1;
-  level_iter_y(g->L, PX_ - (vert ? 60 : 15), PX_ + (vert ? 60 : 15), PY_ - 200, PY_ + 200, &it);
-  for (const RObj *o; (o = level_next(&it)) && n < MAX_NEAR;) {
-    if (objdefs[o->type].hit == HIT_NONE) continue;
-    float wx, wy, ang, x, y;
-    if (!obj_where_rot(g, o, &wx, &wy, &ang)) continue;
-    to_local(g, wx, wy, &x, &y);
-    if (x < p->x - 60 || x >= p->x + 60 || y < p->y - 200 || y > p->y + 200) continue;
-    if (o->paint && (st_flags(obj_style(g->L, o)) & STF_NOTOUCH)) continue;
-    if (g->frame || ang != 0) {
-      if (nt >= 64) continue;
-      turned[nt] = local_obj(g, o, ang);
-      o = &turned[nt++];
-    }
-    near[n++] = (Near){o, it.gi, x, y};
-    if (objdefs[o->type].shape == SHAPE_SLOPE && near_slopes.n < 8) near_slopes.s[near_slopes.n++] = slope_of(g->L, o, x, y);
-  }
-  bool touching_orb = false;
-  float snap_x = p->x;   /* contacts are judged before any nudge */
-  /* GD resolves special objects, then solids, then slopes, then hazards. */
+  /* specials, then solids, then hazards */
   for (int pass = 0; pass < 3 && !g->dead; pass++) {
-    if (pass == 1 && p->left_ground) sl_clear(p);
-    if (pass == 2) {
-      p->npot = 0;
-      for (int k = 0; k < near_slopes.n && !g->dead; k++) {
-        const Slope *sl = &near_slopes.s[k];
-        float ph = phalf(p);
-        if (overlap(p->x, p->y, ph, ph, sl->x, sl->y, sl->w / 2, sl->h / 2)) sl_collide(g, old, sl, &near_slopes, hold);
-      }
-      if (g->dead) break;
-    }
-    if (pass == 2 && (p->mode == MODE_CUBE || p->mode == MODE_ROBOT) && p->on_ground) {
-      /* stair snap against every solid under the cube, in GD's order: by
-         100 unit section, right to left then top to bottom, then newest */
-      int touch[8], nt = 0;
-      float ph = phalf(p), foot = p->y - grav(p, ph);
-      for (unsigned k = 0; k < n && nt < 8; k++) {
-        const Near *e = &near[k];
-        if (objdefs[e->o->type].hit != HIT_SOLID || objdefs[e->o->type].shape == SHAPE_SLOPE) continue;
-        float hw, hh, ox, oy;
-        hit_box(g->L, e->o, e->x, e->y, &ox, &oy, &hw, &hh);
-        if (fabsf(snap_x - ox) > hw + ph + 0.01f || fabsf(foot - (p->upside ? oy - hh : oy + hh)) > 0.6f) continue;
-        int j = nt++;
-        for (; j > 0; j--) {
-          const Near *b = &near[touch[j - 1]];
-          int sa = (int)floorf(e->x / 100), sb = (int)floorf(b->x / 100);
-          if (sa == sb) { sa = (int)floorf(e->y / 100); sb = (int)floorf(b->y / 100); }
-          if (sa == sb ? e->gi < b->gi : sa < sb) break;
-          touch[j] = touch[j - 1];
-        }
-        touch[j] = (int)k;
-      }
-      for (int j = 0; j < nt; j++) snap_to(g, near[touch[j]].x, near[touch[j]].y);
-    }
-    for (unsigned k = 0; k < n && !g->dead; k++) {
-      const RObj *o = near[k].o;
-      unsigned i = near[k].gi;
+    level_iter_y(g->L, p->x - 60, p->x + 60, p->y - 200, p->y + 200, &it);
+    for (const RObj *o; (o = level_next(&it)) && !g->dead;) {
       const ObjDef *d = &objdefs[o->type];
       int want = pass == 0 ? HIT_SPECIAL : pass == 1 ? HIT_SOLID : HIT_HAZARD;
       if (d->hit != want) continue;
-      if ((d->special == SP_COIN || d->special == SP_KEY) && game_used(g, o, i)) continue;
-      float hw, hh, ox, oy, ph = phalf(p);
-      hit_box(g->L, o, near[k].x, near[k].y, &ox, &oy, &hw, &hh);
-      if (d->shape == SHAPE_CIRCLE) {   /* w is the radius */
-        float r = d->w10 * 0.1f * scale_of(g->L, o);
-        if (g->L->ext && (g->L->ext->lflags & LF_FIX_RADIUS)) {
-          /* the level's fixRadiusCollision: centre distance (gdsolver) */
-          float dx = p->x - ox, dy = p->y - oy;
-          if (dx * dx + dy * dy >= (r + ph) * (r + ph)) continue;
-        } else if (!box_circle(p->x, p->y, ph, ox, oy, r)) continue;
-      } else if (obj_xf(o) < 0 && pass != 1) {
-        /* turned by a free angle (GD's collisionCheckObjects): the bounds
-           must overlap, then the object's turned box and the player's box,
-           turned as its sprite is */
-        float a = obj_rot(o) * (6.2831853f / 1024);
-        float sx, sy;
-        obj_scale_xy(g->L, o, &sx, &sy);
-        hw = d->w10 * 0.05f * fabsf(sx); hh = d->h10 * 0.05f * fabsf(sy);
-        float ca = fabsf(cosf(a)), sa = fabsf(sinf(a));
-        if (!overlap(p->x, p->y, ph, ph, ox, oy, hw * ca + hh * sa, hw * sa + hh * ca) ||
-            !obb_overlap(p->x, p->y, ph, ph, p->rot * DEG, ox, oy, hw, hh, a)) continue;
-      } else if (!overlap(p->x, p->y, ph, ph, ox, oy, hw, hh)) {
-        /* a ring still counts where the player was a tick ago (gdsolver) */
-        bool ring = (d->special >= SP_ORB_Y && d->special <= SP_ORB_B) || d->special == SP_ORB_G;
-        if (!ring || !overlap(old->x, old->y, ph, ph, ox, oy, hw, hh)) continue;
-      }
-      if (pass == 0) {
-        if ((d->special >= SP_ORB_Y && d->special <= SP_ORB_B) || d->special == SP_ORB_G) {
-          touching_orb = true;
-          if (!p->orb_touching && !game_used(g, o, i)) fx(g, FX_ORB_TOUCH, 0, (int)i, ox, oy);
-        }
-        special(g, i, o, hold, near[k].x, near[k].y);
-      } else if (pass == 1) {
-        if (d->shape == SHAPE_SLOPE) continue;   /* slopes: see slope_pass */
-        solid(g, i, ox, oy, hw, hh);
-      } else {
-        kill(g, (int)i);
+      float ox = obj_x(o), oy = obj_y(o), hw, hh;
+      obj_hitbox(o, &hw, &hh);
+      if (pass == 2) {
+        bool hit = d->shape == SHAPE_CIRCLE ? hypotf(fmaxf(fabsf(ox - p->x) - ph * 0.8f, 0), fmaxf(fabsf(oy - p->y) - ph * 0.8f, 0)) < hw
+                                            : overlap(p->x, p->y, ph * 0.8f, ph * 0.8f, ox, oy, hw, hh);
+        if (hit) kill(g, (int)it.gi);
+        continue;
       }
+      /* (a solid counts when the player rests exactly on it) */
+      if (!overlap(p->x, p->y, ph, ph + (pass == 1 ? 0.5f : 0), ox, oy, hw, hh)) continue;
+      if (pass == 0) special(g, it.gi, o, hold, ox, oy, &touching_ring);
+      else solid(g, old, it.gi, ox, oy, hw, hh);
     }
-    if (pass == 1 && !g->dead) ride(g, old, near, n);
-  }
-  p->orb_touching = touching_orb;
-  /* a turned frame has no ground and no band (portals there set none) */
-  if (g->frame) { p->ground_y = -1e6f; p->ceiling_y = 1e6f; }
-}
-
-static void cube_mode(Game *g, bool hold, bool pressed) {
-  Player *p = &g->p;
-  float mult = p->rot_dir_neg ? -1.0f : 1.0f, spin = p->mini ? ROT_SPEED_MINI : ROT_SPEED;
-  p->gravity = CUBE_GRAV[p->speed];
-  if (p->vy < -810) p->vy = -810;
-  if (p->vy > 1080) p->vy = 1080;
-  if (p->y > (g->L->ext ? 3594 : 2794) && !g->frame) kill(g, -1);   /* above the level (GD 2.2 lets levels go higher) */
-  if (p->snap_rot) p->target_rot = p->rot;
-  if (!p->on_ground) {
-    if (p->inverse_rot) p->target_rot -= spin / 2 * TDT * mult;
-    else p->target_rot += spin * TDT * mult;
-  }
-  if (p->on_ground) update_rot_dir(p);
-  bool coyote = (p->upside || g->dual) && hold && p->coyote < 10;
-  /* the slope under the cube, or the one it just slid off */
-  Slope sl = {0};
-  int so = p->sl_o >= 0 ? p->sl_o : p->co_ticks ? p->co_o : -1;
-  if (so >= 0) slope_get(p->sl_o >= 0 ? p->sl : p->co, so, &sl);
-  bool on_slope = so >= 0 && sl_orient(p, &sl) < OR_UDD;
-  if ((on_slope || p->on_ground || coyote) && hold && !p->no_jump) {
-    if (on_slope && sl_orient(p, &sl) == OR_NU) {
-      /* a jump off a rising slope gets some of its speed */
-      float t = clampf(10 * (p->t_elapsed - (p->sl_o >= 0 ? p->sl_t : p->co_t)), 0.4f, 1.0f);
-      float v = 0.9f * fminf(1.12f / sl_angle(p, &sl), 1.54f) * (sl.h * SPEEDS[p->speed] / sl.w);
-      set_velocity(p, 0.25f * t * v + CUBE_JUMP[p->speed], false);
-      p->co_ticks = 0;
-      p->co_o = -1;
-    } else {
-      set_velocity(p, CUBE_JUMP[p->speed], g->hold_prev);
-    }
-    p->inverse_rot = false;
-    p->buffer = BUF_END;
-    p->on_ground = false;
-    p->jumped = true;
-    g->jumps++;
-    if (!pressed) p->time_since_ground = DRAG_TIME;
-    fx(g, FX_JUMP, 0, -1, p->x, p->y);
-  }
-  if (so >= 0) p->target_rot = closest_rotation_to(p->rot, sl_snap_angle(p, &sl) / DEG);
-  else if (p->on_ground) p->target_rot = closest_rotation(p->rot);
-}
-
-static void ship_mode(Game *g, bool hold) {
-  Player *p = &g->p;
-  boost_check(p);
-  float t = grav(p, VEL_THRESH[p->speed]);
-  bool m = p->mini;
-  if (hold) {
-    p->buffer = BUF_END;
-    p->gravity = p->vy <= t ? (m ? 1643.5872f : 1397.0491f) : (m ? 1314.86976f : 1117.64328f);
-  } else {
-    p->gravity = p->vy >= t ? (m ? -1577.85408f : -1341.1719f) : (m ? -1051.8984f : -894.11464f);
-  }
-  float lo = m ? SHIP_MINI_MIN : SHIP_MIN, hi = m ? SHIP_MINI_MAX : SHIP_MAX;
-  if (p->boost) return;
-  if (p->gravity < 0 && p->vy < lo) p->vy = lo;
-  else if (p->gravity > 0 && p->vy > hi) p->vy = hi;
-}
-
-/* UFO: a press flaps up to a fixed speed (a held button also flaps right
-   after entering from the cube, ship or wave, or after a respawn). */
-static void ufo_mode(Game *g, const Player *old, bool pressed, bool hold) {
-  Player *p = &g->p;
-  boost_check(p);
-  bool m = p->mini;
-  bool carry = hold && (old->mode == MODE_CUBE || old->mode == MODE_SHIP || old->mode == MODE_WAVE || p->ufo_buf);
-  if (p->buffer == BUF_READY && (pressed || carry)) {
-    p->vy = fmaxf(p->vy, UFO_FLAP[m]);
-    p->buffer = BUF_END;
-    p->vel_override = true;
-    g->jumps++;
-    fx(g, FX_JUMP, 1, -1, p->x, p->y);
-  } else {
-    p->gravity = p->vy > grav(p, VEL_THRESH[p->speed]) ? UFO_GRAV_HI[m] : UFO_GRAV_LO[m];
   }
-  float lo = m ? SHIP_MINI_MIN : SHIP_MIN, hi = m ? SHIP_MINI_MAX : SHIP_MAX;
-  if (!p->boost) p->vy = clampf(p->vy, lo, hi);
+  p->orb_touching = touching_ring;
 }
 
-/* Robot (GD 2.2, read by gdsolver): 0.9 of the cube's gravity, half its
-   jump, and a hover while the button stays held after a jump (at most 67
-   ticks; letting go ends it). Only a fresh press jumps. */
-static void robot_mode(Game *g, bool hold, bool pressed) {
+/* the band's floor and ceiling (or the ground) */
+static void bounds(Game *g) {
   Player *p = &g->p;
-  p->gravity = CUBE_GRAV[p->speed] * 0.9f;
-  if (p->vy < -810) p->vy = -810;
-  if (p->vy > 1080) p->vy = 1080;
-  if (!hold) p->hover = 0;
-  bool coyote = p->upside && hold && p->coyote < 10;
-  if ((p->on_ground || coyote) && p->buffer == BUF_READY) {
-    /* no gravity on the jump's own tick: the hover holds the full speed */
-    set_velocity(p, CUBE_JUMP[p->speed] * 0.5f, true);
-    p->hover = 67;
-    p->buffer = BUF_END;
-    p->on_ground = false;
-    p->jumped = true;
-    g->jumps++;
-    if (!pressed) p->time_since_ground = DRAG_TIME;
-    fx(g, FX_JUMP, 2, -1, p->x, p->y);
-  } else if (p->hover && hold && !p->on_ground) {
-    p->hover--;
-    p->gravity = 0;
+  float h = phalf(p);
+  if (p->y - h < p->ground_y) {
+    p->y = p->ground_y + h;
+    if (p->vy * up(p) < 0) p->vy = 0;
+    if (p->upside) p->on_ceiling = true; else p->on_ground = true;
   }
-  p->rot = 0;
-}
-
-/* Wave: straight lines at 45 degrees (twice as steep when mini). */
-static void wave_mode(Game *g, bool hold) {
-  Player *p = &g->p;
-  if (p->buffer == BUF_READY) p->buffer = BUF_END;
-  p->gravity = 0;
-  p->vy = (hold ? 1.f : -1.f) * SPEEDS[p->speed] * (p->mini ? 2 : 1);
-}
-
-/* A press on a floor or ceiling flips gravity, with a small push towards the
-   other side (as in GD, a press just before landing counts: the buffer). */
-static void ball_mode(Game *g, const Player *old) {
-  Player *p = &g->p;
-  p->gravity = BALL_GRAV;
-  if (p->on_ground || p->on_ceiling) p->spin = 1;
-  bool coyote = (p->upside || g->dual) && p->coyote < 16;
-  if ((p->on_ground || p->on_ceiling || coyote) && p->buffer == BUF_READY) {
-    p->upside = !p->upside;
-    set_velocity(p, BALL_JUMP[p->speed], old->buffer == BUF_READY);
-    p->buffer = BUF_END;
-    p->spin = -BALL_AIR_SPIN;
-    p->on_ground = false;
-    p->jumped = true;
-    g->jumps++;
-    fx(g, FX_JUMP, 0, -1, p->x, p->y);
+  if (p->y + h > p->ceiling_y) {
+    p->y = p->ceiling_y - h;
+    if (p->vy * up(p) > 0) p->vy = 0;
+    if (p->upside) p->on_ground = true; else p->on_ceiling = true;
   }
-  if (p->vy < -810) p->vy = -810;
-  if (p->vy > 810) p->vy = 810;
+  /* the wave grazes the band's edges without stopping */
+  if (p->mode == MODE_WAVE) p->on_ground = p->on_ceiling = false;
 }
 
-/* Spider: a ball's fall; a press on a surface teleports it to the one on
-   the other side (spider_jump). */
-static void spider_mode(Game *g) {
+/* how the player is drawn turned (degrees, clockwise) */
+static void spin(Game *g) {
   Player *p = &g->p;
-  p->gravity = BALL_GRAV;
-  bool coyote = (p->upside || g->dual) && p->coyote < 16;
-  if ((p->on_ground || p->on_ceiling || coyote) && p->buffer == BUF_READY) {
-    p->buffer = BUF_END;
-    p->jumped = true;
-    g->jumps++;
-    spider_jump(g);
-    p->vel_override = true;
+  float spd = SPEEDS[p->speed], dir = p->upside ? -1.0f : 1.0f;
+  switch (p->mode) {
+    case MODE_CUBE: case MODE_ROBOT:
+      if (p->on_ground || p->mode == MODE_ROBOT) {
+        float r = fmodf(p->rot, 90.0f);
+        if (r < 0) r += 90;
+        float target = p->rot - r + (r > 45 ? 90 : 0);
+        p->rot += (target - p->rot) * 0.35f;
+      } else p->rot += dir * SPIN * TDT;
+      break;
+    case MODE_BALL: p->rot += dir * (p->on_ground || p->on_ceiling ? 600 : 300) * TDT; break;
+    case MODE_WAVE: p->rot = -(p->vy * up(p) > 0 ? 45.0f : -45.0f) * (p->mini ? 1.2f : 1.0f); break;
+    case MODE_SPIDER: p->rot = 0; break;
+    default: p->rot = -atan2f(p->vy * up(p), spd) * 57.29578f * 0.8f; break;
   }
-  if (p->vy < -810) p->vy = -810;
-  if (p->vy > 810) p->vy = 810;
 }
 
-/* Swing: a steady pull towards its gravity; each press flips gravity and
-   keeps 0.8 of the speed (gdsolver). */
-static void swing_mode(Game *g) {
-  Player *p = &g->p;
-  boost_check(p);
-  /* a tap flips gravity one tick after the press (gdsolver), keeping 0.8 of
-     the speed; the pending flip rides the robot's hover counter */
-  if (p->hover) {
-    p->hover = 0;
-    p->upside = !p->upside;
-    p->vy = -0.8f * p->vy;
-    p->ceil_inv = CEILING_INVUL;
-    flip_other(g);
-  }
-  if (p->buffer == BUF_READY) {
-    p->buffer = BUF_END;
-    p->hover = 1;
-    g->jumps++;
-    fx(g, FX_JUMP, 1, -1, p->x, p->y);
-  }
-  p->gravity = -(p->mini ? SWING_G_MINI : SWING_G);
-  if (!p->boost) p->vy = clampf(p->vy, -SWING_TERM, SWING_TERM);
-}
-
-static void run_player(Game *g, const Player *old, bool hold, bool pressed) {
-  Player *p = &g->p;
-  float rest = rest_half(p);
-  if (!p->left_ground) {
-    if (p->y - rest <= p->ground_y) {
-      if (p->upside) p->on_ceiling = true; else { p->on_ground = true; landing(p); }
-      p->inverse_rot = false;
-      p->time_since_ground = 0;
-    }
-    if (p->y + rest >= p->ceiling_y) {
-      if (p->upside) { p->on_ground = true; landing(p); } else p->on_ceiling = true;
-      p->inverse_rot = false;
-      p->time_since_ground = 0;
-    }
-  }
-  if (!old->on_ground && p->on_ground) fx(g, FX_LAND, 0, -1, p->x, p->y);
-  if (grav_bottom(old) > grav_floor(old) && p->upside == old->upside && !p->on_ground && p->vy <= 0) {
-    if (old->on_ground && !g->hold_prev) p->coyote = 0;
-    p->coyote++;
-  } else {
-    p->coyote = 1 << 30;
-  }
-  if (p->dash && (!hold || p->mode == MODE_WAVE)) p->dash = false;
-  if (p->dash) {
-    /* a dash ring: a straight line at its angle while the button is held */
-    p->vy = grav(p, p->dash_slope * SPEEDS[p->speed]);
-    p->vel_override = true;
-    p->buffer = BUF_END;
-  } else if (p->mode == MODE_CUBE) cube_mode(g, hold, pressed);
-  else if (p->mode == MODE_SPIDER) spider_mode(g);
-  else if (p->mode == MODE_SWING) swing_mode(g);
-  else if (p->mode == MODE_BALL) ball_mode(g, old);
-  else if (p->mode == MODE_UFO) ufo_mode(g, old, pressed, hold);
-  else if (p->mode == MODE_ROBOT) robot_mode(g, hold, pressed);
-  else if (p->mode == MODE_WAVE) wave_mode(g, hold);
-  else ship_mode(g, hold);
-  p->time_since_ground += TDT;
-  if (!p->vel_override) {
-    float nv = p->vy + p->gravity * TDT;
-    if (!(p->on_ground || p->on_ceiling) && (old->on_ground || old->on_ceiling) &&
-        ((!hold && g->pressed_prev) || p->buffer == BUF_READY) && grav_bottom(old) > grav_floor(old) && p->mini == old->mini) {
-      p->y += grav(old, old->gravity) * TDT * TDT;
-      if (p->vy == 0) nv += old->gravity * TDT;
-    }
-    /* GD 2.2 keeps y velocity on a grid of 0.001 of its own unit (54 units
-       per second), rounded inside the gravity step (measured by gdsolver) */
-    p->vy = roundf(nv * (1000 / 54.f)) * (54 / 1000.f);
-  }
-  if (g->ending) return;
-  p->rot = fmodf(p->rot, 360.0f);
-  p->left_ground = false;
-  if (p->ceil_inv > 0) p->ceil_inv -= TDT; else p->ceil_inv = 0;
-  clamp_ground(g);
-  if (p->co_ticks && !--p->co_ticks) p->co_o = -1;
-  if (p->sl_o >= 0) {
-    Slope cur;
-    slope_get(p->sl, p->sl_o, &cur);
-    sl_calc(g, old, &cur, &near_slopes, hold);
-  }
-  if (p->mode == MODE_CUBE) {
-    float lerp = SPEED_MULT[p->speed] * 0.175f;
-    if (p->on_ground || p->sl_o >= 0) {
-      lerp *= 3;
-      float t = fminf(TDT, TDT * lerp) * 60;
-      p->rot = slerp_angle(p->rot * DEG, p->target_rot * DEG, t) / DEG;
-    } else {
-      p->rot = p->target_rot;
-    }
-  } else if (p->mode == MODE_BALL) {
-    p->rot += p->spin * BALL_ROLL[p->speed] * (p->mini ? 1.25f : 1) * (p->upside ? -1 : 1) * TDT;
-  } else if (p->mode == MODE_ROBOT || p->mode == MODE_SPIDER) {
-    p->rot = 0;
-  } else if (p->mode == MODE_SWING) {
-    float dy = p->y - old->y;
-    p->rot += (clampf(-dy * 6, -30, 30) - p->rot) * 0.15f;
-  } else if (p->mode == MODE_WAVE) {
-    /* the dart eases towards its travel angle (gdsolver's fit of GD) */
-    float dy = p->y - old->y, target = fabsf(dy) < 1e-4f ? 0 : (p->mini ? 63.435f : 45.f) * (dy < 0 ? 1 : -1);
-    float r = fmodf(p->rot + 540, 360) - 180;
-    p->rot = r + (p->mini ? 0.1f : 0.0625f) * (target - r);
-  } else {
-    float dx = p->x - old->x, dy = p->y - old->y, ang = atan2f(-dy, dx);
-    if (p->snap_rot) p->rot = ang / DEG;
-    else if (TDT * 72 <= dx * dx + dy * dy) {
-      float k = 0.15f;
-      if (p->mode == MODE_UFO) {  /* the UFO only tilts a little */
-        k = 0.07f;
-        if (p->sl_o >= 0) {
-          Slope cur;
-          slope_get(p->sl, p->sl_o, &cur);
-          ang = sl_snap_angle(p, &cur);
-        } else {
-          ang = p->on_ground ? 0 : p->upside ? fminf(ang * -0.4f, 0.1f) : fmaxf(ang * -0.4f, -0.1f);
-        }
-      }
-      p->rot = slerp_angle(p->rot * DEG, ang, TDT * 60 * k) / DEG;
-    }
-  }
-  p->snap_rot = false;
-  p->ufo_buf = false;
-}
+/* ------------------------------------------------------------ colours, camera */
 
 static void ease_channel(Channel *c) {
   if (c->t >= c->dur) { memcpy(c->cur, c->to, 3); return; }
@@ -1643,51 +431,25 @@ static void ease_channel(Channel *c) {
 }
 static void fire_event(Game *g, const LevelEvent *e) {
   if (e->kind == EV_COLOR) {
-    int chans[2] = {e->arg, -1};
-    if (e->arg == CH_BG && (e->flags & EVF_TINT_GROUND)) chans[1] = CH_G1;
-    for (int k = 0; k < 2; k++) {
-      if (chans[k] < 0 || chans[k] >= CH_COUNT) continue;
-      Channel *c = &g->ch[chans[k]];
-      memcpy(c->from, c->cur, 3);
-      c->to[0] = e->r; c->to[1] = e->g; c->to[2] = e->b;
-      c->t = 0;
-      c->dur = (uint16_t)((uint32_t)e->dur * ND_HZ / 1000);
-      if (!c->dur) memcpy(c->cur, c->to, 3);
-    }
+    if (e->arg >= CH_COUNT) return;
+    Channel *c = &g->ch[e->arg];
+    memcpy(c->from, c->cur, 3);
+    c->to[0] = e->r; c->to[1] = e->g; c->to[2] = e->b;
+    c->t = 0;
+    c->dur = (uint16_t)((uint32_t)e->dur * ND_HZ / 1000);
+    if (!c->dur) memcpy(c->cur, c->to, 3);
   } else if (e->kind == EV_FADE) {
     g->fade_effect = e->arg;
   } else if (e->kind == EV_TRAIL) {
     g->trail = e->arg != 0;
   }
 }
-static void triggers(Game *g) {
+static void events(Game *g) {
   const Level *L = g->L;
-  Player *p = &g->p;
-  while (g->next_event < L->event_count) {
-    const LevelEvent *e = &L->events[g->next_event];
-    if (e->x >= p->x) break;
-    if (!(e->flags & EVF_TOUCH)) fire_event(g, e);
-    g->next_event++;
-  }
-  /* touch-triggered events fire once when the player overlaps them */
-  for (unsigned k = 0; k < L->event_count && k < 64; k++) {
-    const LevelEvent *e = &L->events[k];
-    if (!(e->flags & EVF_TOUCH) || (g->touch_done[k >> 3] >> (k & 7) & 1)) continue;
-    if (e->x > p->x + 30 || e->x < p->x - 60) continue;
-    if (overlap(p->x, p->y, 15, 15, e->x, e->y, 15, 15)) {
-      g->touch_done[k >> 3] |= (uint8_t)(1u << (k & 7));
-      fire_event(g, e);
-    }
-  }
+  while (g->next_event < L->event_count && L->events[g->next_event].x < g->p.x) fire_event(g, &L->events[g->next_event++]);
   for (int c = 0; c < CH_COUNT; c++) ease_channel(&g->ch[c]);
 }
 
-static float ease_in_out(float t, float rate) {
-  t *= 2;
-  if (t < 1) return 0.5f * powf(t, rate);
-  return 1 - 0.5f * powf(2 - t, rate);
-}
-
 static void camera(Game *g) {
   Player *p = &g->p;
   const Level *L = g->L;
@@ -1698,300 +460,116 @@ static void camera(Game *g) {
     g->ground_gfx = 0;
     return;
   }
-  float playable = p->ceiling_y - p->ground_y, want_gfx = 0;
-  bool tall = playable > VIEW_H - 40;   /* a band taller than the view: follow the player */
-  if (p->mode != MODE_CUBE && !tall) want_gfx = (VIEW_H - playable) / 2;
-  g->ground_gfx += (want_gfx - g->ground_gfx) * 0.02f;
-  if (g->frame == 0 && g->wall_y == 0 && g->cam_x + VIEW_W >= L->wall_x - 4.5f * 30) {
-    float mid = g->cam_y + VIEW_H / 2 - GROUND_OFFSET, lo = 60 + (VIEW_H / 2 - GROUND_OFFSET);
-    g->wall_y = mid > lo ? mid : lo;
-  }
-  if (g->frame == 0 && g->wall_y > 0 && g->cam_x + VIEW_W >= L->wall_x - 60) {
-    if (g->cam_wall_t == 0) { g->cam_wall_y0 = g->cam_y; g->bg_wall_x0 = g->bg_x; g->ground_wall_x0 = g->ground_x; }
-    float t = clampf(g->cam_wall_t / 1.0f, 0, 1), e = ease_in_out(t, 2);
-    float fx_ = L->wall_x - VIEW_W, fy = g->wall_y - (VIEW_H / 2 - GROUND_OFFSET);
-    g->cam_x = fx_ - 60 + 60 * e;
-    g->cam_y = g->cam_wall_y0 + (fy - g->cam_wall_y0) * e;
-    g->bg_x = g->bg_wall_x0 + 60 * e;
-    g->ground_x = g->ground_wall_x0 + 60 * e;
-    g->cam_wall_t += TDT;
-    return;
-  }
+  /* a band lower than the view: the ground and roof slide in to frame it */
+  float band = p->ceiling_y - p->ground_y, want_gfx = 0;
+  bool framed = p->band_h > 0 && band < VIEW_H - 40;
+  if (framed) want_gfx = (VIEW_H - band) / 2;
+  g->ground_gfx += (want_gfx - g->ground_gfx) * 0.03f;
   float target = g->cam_y;
-  bool floor = g->frame == 0 && !g->cam_static;
-  if (p->mode == MODE_CUBE || p->mode == MODE_ROBOT || p->mode == MODE_SPIDER || !floor || tall) {
-    float off = p->upside ? -30.0f : 0;
-    if (p->y > g->cam_y + 180 + off) target = p->y - (180 + off);
-    else if (p->y < g->cam_y + 30 + off) target = p->y - (30 + off);
-  } else {
-    target = g->cam_intended_y;
-  }
+  if (framed) target = (p->ground_y + p->ceiling_y) / 2 - (VIEW_H / 2 - GROUND_OFFSET);
+  else if (p->y > g->cam_y + 170) target = p->y - 170;
+  else if (p->y < g->cam_y + 40) target = p->y - 40;
+  if (target < 0) target = 0;
+  g->cam_y += (target - g->cam_y) / 30.0f;
+  if (g->cam_y < 0) g->cam_y = 0;
   float want = p->x - PLAYER_SCREEN_X;
-  if (g->cam_static) {
-    /* a static camera: centred on its target (world, eased) */
-    float u, v;
-    to_local(g, g->cam_tx, g->cam_ty, &u, &v);
-    if (g->cam_axis != 2) want = u - VIEW_W / 2;
-    if (g->cam_axis != 1) target = v - (VIEW_H / 2 - GROUND_OFFSET);
-  }
-  want += g->cam_off_x;
-  target += g->cam_off_y;
-  if (floor && target < 0) target = 0;
-  g->cam_y += (target - g->cam_y) / 40.0f;
-  if (floor && g->cam_y < 0) g->cam_y = 0;
-  if (g->cam_static) want = g->cam_x + (want - g->cam_x) / 30.0f;
   if (g->attempt_camera && want < 15) want = 15;
+  /* the camera stops with the level's end wall at the right edge */
+  float stop = L->wall_x - VIEW_W + 60;
+  if (want > stop) {
+    want = stop;
+    if (g->wall_y == 0) g->wall_y = fmaxf(60, g->cam_y + VIEW_H / 2 - GROUND_OFFSET);
+  }
   float moved = want - g->cam_x;
   g->cam_x = want;
   if (moved > 0) { g->ground_x += moved; g->bg_x += moved; }
 }
 
-/* The frame's travel and up directions in the world. */
-static void frame_axes(unsigned f, float *fx_, float *fy, float *ux, float *uy) {
-  static const float A[4][4] = {{1, 0, 0, 1}, {0, -1, 1, 0}, {-1, 0, 0, -1}, {0, 1, -1, 0}};
-  *fx_ = A[f & 3][0]; *fy = A[f & 3][1]; *ux = A[f & 3][2]; *uy = A[f & 3][3];
-}
+/* ------------------------------------------------------------ a tick */
 
-void game_rotate(Game *g, unsigned travel, unsigned gravity, unsigned flags, float vmod) {
-  static const int8_t FRAME_OF[5] = {-1, 3, 1, 2, 0};   /* GD direction (1 up .. 4 right) -> frame */
-  static const float GDIR[5][2] = {{0, 0}, {0, 1}, {0, -1}, {-1, 0}, {1, 0}};
-  if (travel < 1 || travel > 4) return;
-  unsigned nf = (unsigned)FRAME_OF[travel];
-  Player *p = &g->p;
-  if (g->rebuilding) {
-    /* practice rebuild: the log says where along the new travel it was */
-    g->frame = (uint8_t)nf;
-    for (unsigned k = 0; k < g->nlog; k++)
-      if (g->log[k].kind == LOG_FRAME && g->log[k].tick == g->tick) { p->x = g->log[k].val; break; }
-    return;
-  }
-  /* PlayerObject::rotateGameplay, as gdsolver read it: when the travel
-     turns between horizontal and vertical the y speed becomes the travel
-     speed (0.9 of it in these units) times the trigger's modifier, along
-     GD's own up; otherwise it is kept, halved when the gravity turns over.
-     Our frames 2 and 3 have their v axis opposite to GD's up, so GD's
-     upside-down flag reads inverted there. */
-  float fx_, fy, ux, uy;
-  unsigned of = g->frame;
-  float vloc = grav(p, p->vy);   /* along the old v axis */
-  bool gd_up_old = p->upside ^ (of >= 2);
-  float X, Y, cx, cy;
-  to_world(g, p->x, p->y, &X, &Y);
-  float sy = p->y - g->cam_y;
-  to_world(g, g->cam_x + PLAYER_SCREEN_X, g->cam_y, &cx, &cy);
-  g->frame = (uint8_t)nf;
-  frame_axes(nf, &fx_, &fy, &ux, &uy);
-  to_local(g, X, Y, &p->x, &p->y);
-  if (gravity >= 1 && gravity <= 4) p->upside = GDIR[gravity][0] * ux + GDIR[gravity][1] * uy > 0.5f;
-  bool gd_up = p->upside ^ (nf >= 2);
-  if ((of ^ nf) & 1) {
-    /* along GD's own up: +Y for horizontal travel, +X for vertical */
-    float m = (flags & 2) ? vmod : 1;
-    float v = (flags & 4) ? m * 54 : 0.9f * SPEEDS[p->speed] * m;
-    vloc = nf >= 2 ? -v : v;
-  } else {
-    if ((of ^ nf) & 2) vloc = -vloc;   /* the v axis turned over, the world speed stays */
-    if (gd_up != gd_up_old) vloc *= 0.5f;
-  }
-  p->vy = p->upside ? -vloc : vloc;
-  p->ground_y = nf ? -1e6f : 0;
-  p->ceiling_y = 1e6f;
-  p->on_ground = p->on_ceiling = false;
-  p->left_ground = true;
-  p->has_snap = false;
-  p->dash = false;
-  sl_clear(p);
-  p->co_o = -1;
-  p->co_ticks = 0;
-  g->cam_x = p->x - PLAYER_SCREEN_X;
-  g->cam_y = p->y - sy;
-  trig_log(g, LOG_FRAME, nf, p->x);
-}
-
-/* One tick of the body held in g->p. */
-static void step_body(Game *g, bool hold, bool pressed) {
+static void step(Game *g, bool hold, bool pressed) {
   Player *p = &g->p;
+  const Level *L = g->L;
   Player old = *p;
-  p->old_on_ground = p->on_ground;
-  if (p->arm_head) p->arm_head--;
-  if (p->arm_flip) p->arm_flip--;
-  if (p->arm_noauto) p->arm_noauto--;
-  if (p->arm_slide) p->arm_slide--;
-  p->no_jump = false;
-  if (hold) { if (p->buffer == BUF_NONE) p->buffer = BUF_READY; }
-  else p->buffer = BUF_NONE;
-  p->on_ground = p->on_ceiling = false;
-  p->vel_override = false;
+  if (!hold) p->buffer = BUF_NONE;
+  else if (pressed) p->buffer = BUF_READY;
   p->t_elapsed += TDT;
-  /* a zoomed camera stretches the flying band (GD: height / zoom) */
-  if (g->zoom != 1 && p->band_h > 0 && p->ceiling_y < 1e5f && !g->dual && !g->frame) {
-    p->ceiling_y = p->ground_y + p->band_h / g->zoom;
-    g->cam_intended_y = (p->ground_y + p->ceiling_y) / 2 - (VIEW_H / 2 - GROUND_OFFSET);
-  }
-  p->x += SPEEDS[p->speed] * TDT;
-  p->y += grav(p, p->vy) * TDT;
-  clamp_ground(g);
   p->frame++;
-  /* what a slope left for this tick: a launch speed and letting go of it */
-  if (p->has_new_vy) { p->vy = p->new_vy; p->has_new_vy = false; }
-  if (p->pend_clear) { sl_clear(p); p->pend_clear = false; }
-  if (!g->dead && !g->ending) collide(g, &old, hold);
-  if (g->dead) return;
-  /* the first body's move fires the position triggers it passed, before
-     the button (GD's tick order) */
-  if (!p->second && g->L->ext && !g->ending) trig_cross(g);
-  const Level *L = g->L;
-  if (g->frame == 0 && p->x >= L->wall_x - END_START && !p->second) {
-    if (!g->ending) {
-      g->ending = true;
-      g->end_x0 = p->x;
-      g->end_y0 = p->y;
-      if (g->wall_y == 0) g->wall_y = g->end_y0 > 60 ? g->end_y0 : 60;
-    }
-    float t = clampf(powf(g->end_t, 1.2f), 0, 1), u = 1 - t;
-    float mx = g->end_x0 + 40, my = g->wall_y + 150, ex = L->wall_x + 50, ey = g->wall_y - 20;
-    p->x = u * u * u * g->end_x0 + 3 * u * u * t * g->end_x0 + 3 * u * t * t * mx + t * t * t * ex;
-    p->y = u * u * u * g->end_y0 + 3 * u * u * t * g->end_y0 + 3 * u * t * t * my + t * t * t * ey;
-    float e = g->end_t / 0.5f;
-    p->rot += (e > 1 ? 1 : e * e) * ROT_SPEED * TDT;
+  if (g->ending) {
+    /* the last stretch: the player glides up into the end wall */
+    float t = clampf(g->end_t / 0.9f, 0, 1), e = t * t * (3 - 2 * t);
+    p->x = g->end_x0 + (L->wall_x + 40 - g->end_x0) * e;
+    p->y = g->end_y0 + (g->wall_y + 30 - g->end_y0) * e + sinf(t * 3.14159f) * 60;
+    p->rot += SPIN * 1.5f * TDT;
     g->end_t += TDT;
-    if (p->x > L->wall_x && !g->complete) {
+    if (t >= 1 && !g->complete) {
       g->complete = true;
       fx(g, FX_WALL, 0, -1, (float)L->wall_x, g->wall_y);
     }
+    return;
+  }
+  bool was_ground = p->on_ground;
+  p->old_on_ground = was_ground;
+  move_mode(g, hold, pressed);
+  p->on_ground = p->on_ceiling = false;
+  p->x += SPEEDS[p->speed] * TDT;
+  p->y += p->vy * up(p) * TDT;
+  bounds(g);
+  collide(g, &old, hold);
+  if (g->dead) return;
+  if (!was_ground && p->on_ground) fx(g, FX_LAND, 0, -1, p->x, p->y);
+  spin(g);
+  if (p->x >= L->wall_x - END_RUN) {
+    g->ending = true;
+    g->end_x0 = p->x;
+    g->end_y0 = p->y;
+    if (g->wall_y == 0) g->wall_y = fmaxf(60, p->y);
   }
-  run_player(g, &old, hold, pressed);
-  p->delta_y = p->y - old.y;
 }
 
-/* The ship and the UFO read the button one tick later than the other modes
-   (GD's tick order, measured by gdsolver). */
-static bool reads_late(const Player *p) { (void)p; return false; }
-
 void game_step(Game *g, bool hold) {
   if (g->dead || g->complete) return;
-  bool pressed = hold && !g->hold_prev, pressed_late = g->hold_prev && !g->hold_prev2;
-  float x0 = g->p.x;
+  bool pressed = hold && !g->hold_prev;
   g->tick++;
-  TDT = ND_DT * g->time_mod;
-  g->dist += SPEEDS[g->p.speed] * TDT;
-  bool late = reads_late(&g->p);
-  step_body(g, late ? g->hold_prev : hold, late ? pressed_late : pressed);
-  if (g->dual && !g->dead && !g->complete) {
-    Player t = g->p;
-    g->p = g->p2;
-    g->p2 = t;
-    late = reads_late(&g->p);
-    step_body(g, late ? g->hold_prev : hold, late ? pressed_late : pressed);
-    if (g->dual_swap) {
-      /* the second body left dual mode first: it goes on alone */
-      g->dual_swap = false;
-      g->p.second = false;
-    } else {
-      t = g->p;
-      g->p = g->p2;
-      g->p2 = t;
-    }
-  }
+  TDT = ND_DT;
+  step(g, hold, pressed);
   g->hold_prev2 = g->hold_prev;
   g->hold_prev = hold;
   g->pressed_prev = pressed;
   if (!g->dead) {
-    if (pressed && g->L->ext) trig_tap(g);
     camera(g);
-    triggers(g);
-    trig_step(g, g->p.x - x0);
-    if (g->end_trig && !g->complete) {
-      /* an end trigger: the level is complete where it fired */
-      g->complete = true;
-      fx(g, FX_WALL, 0, -1, g->p.x, g->p.y);
-    }
+    events(g);
   }
 }
 
+/* ------------------------------------------------------------ practice */
+
 void game_save_checkpoint(const Game *g, Checkpoint *c) {
+  memset(c, 0, sizeof(*c));
   c->p = g->p;
   c->cam_x = g->cam_x; c->cam_y = g->cam_y; c->ground_x = g->ground_x; c->bg_x = g->bg_x;
   c->ground_gfx = g->ground_gfx; c->cam_intended_y = g->cam_intended_y;
   memcpy(c->ch, g->ch, sizeof(c->ch));
   c->tick = g->tick; c->next_event = g->next_event; c->jumps = g->jumps;
-  c->fade_effect = g->fade_effect; memcpy(c->touch_done, g->touch_done, sizeof(c->touch_done)); c->trail = g->trail;
-  c->nlog = g->nlog;
-  c->dist = g->dist;
-  c->dual = g->dual;
-  c->dual_y = g->dual_y;
-  const Player *q = &g->p2;
-  c->p2_mode = q->mode;
-  c->p2_flags = (uint8_t)(q->upside | q->mini << 1 | q->on_ground << 2 | q->on_ceiling << 3 | q->second << 4);
-  c->p2_y = q->y; c->p2_vy = q->vy; c->p2_rot = q->rot;
-}
-
-/* Replays a 2.0 level's triggers for the first `ticks` ticks of the run,
-   from the player's forward coordinate (its speed changes and gameplay
-   rotations are in the log) and the touch triggers, taps and toggle rings
-   the log recorded. Stair snaps nudge x by a unit or so; the rebuilt
-   timings can be off by that much. */
-static void trig_rebuild(Game *g, uint32_t ticks) {
-  Player keep = g->p;
-  g->rebuilding = true;
-  g->p.x = 0;
-  g->p.y = 15;
-  unsigned sp = SPEED_NORMAL, li = 0, n = g->nlog;
-  for (uint32_t t = 1; t <= ticks; t++) {
-    float x0 = g->p.x;
-    g->p.x += SPEEDS[sp] * ND_DT * g->time_mod;
-    g->tick = t;
-    for (; li < n && g->log[li].tick <= t; li++) {
-      const LogEntry *e = &g->log[li];
-      if (e->kind == LOG_SPEED) sp = e->arg & 3;
-      else if (e->kind == LOG_TOUCH) trig_touch(g, e->arg);
-      else if (e->kind == LOG_TAP) trig_tap(g);
-      else if (e->kind == LOG_TOGGLE) trig_toggle_ring(g, (unsigned)e->val);
-    }
-    trig_cross(g);
-    trig_step(g, g->p.x - x0);
-  }
-  g->rebuilding = false;
-  uint8_t frame = g->frame;
-  g->p = keep;
-  g->frame = frame;
+  c->fade_effect = g->fade_effect; c->trail = g->trail;
 }
 
 void game_load_checkpoint(Game *g, const Checkpoint *c) {
-  const Level *L = g->L;
   uint8_t coins = g->coins;
-  static LogEntry log[MAX_LOG];
-  uint16_t nlog = c->nlog <= g->nlog ? c->nlog : g->nlog;
-  memcpy(log, g->log, nlog * sizeof(LogEntry));
-  game_start(g, L, false);
-  memcpy(g->log, log, nlog * sizeof(LogEntry));
-  g->nlog = nlog;
-  if (L->ext) trig_rebuild(g, c->tick);
+  game_start(g, g->L, false);
   g->p = c->p;
-  if (c->dual) {
-    g->dual = true;
-    g->dual_y = c->dual_y;
-    Player *q = &g->p2;
-    *q = c->p;
-    q->mode = c->p2_mode;
-    q->upside = c->p2_flags & 1; q->mini = c->p2_flags >> 1 & 1; q->on_ground = c->p2_flags >> 2 & 1;
-    q->on_ceiling = c->p2_flags >> 3 & 1; q->second = c->p2_flags >> 4 & 1;
-    q->y = c->p2_y; q->vy = c->p2_vy; q->rot = c->p2_rot;
-    q->sl_o = q->co_o = -1;
-    q->buffer = BUF_NONE;
-  }
   g->p.buffer = BUF_NONE;
-  g->p.ufo_buf = true;
   g->cam_x = c->cam_x; g->cam_y = c->cam_y; g->ground_x = c->ground_x; g->bg_x = c->bg_x;
   g->ground_gfx = c->ground_gfx; g->cam_intended_y = c->cam_intended_y;
   memcpy(g->ch, c->ch, sizeof(c->ch));
   g->tick = c->tick; g->next_event = c->next_event; g->jumps = c->jumps;
   g->fade_effect = c->fade_effect; g->trail = c->trail;
-  memcpy(g->touch_done, c->touch_done, sizeof(g->touch_done));
   g->coins = coins;
-  g->dist = c->dist;
-  /* Objects behind the checkpoint can no longer be reached; they count as
-   * used so coins and pads there do not fire again (in world x, so only
-   * when the travel has not turned). */
-  g->used_below = g->frame ? -1e9f : c->p.x - 60;
+  /* objects behind the checkpoint count as used: coins and pads there do not fire again */
+  g->used_below = c->p.x - 60;
+}
+
+/* NumDash's levels have no gameplay rotation. */
+void game_rotate(Game *g, unsigned travel, unsigned gravity, unsigned flags, float vmod) {
+  (void)g; (void)travel; (void)gravity; (void)flags; (void)vmod;
 }
diff --git a/games/numdash/src/game.h b/games/numdash/src/game.h
index 9a38cdd..38e6f12 100644
--- a/games/numdash/src/game.h
+++ b/games/numdash/src/game.h
@@ -9,42 +9,22 @@
 #define ND_DT (1.0f / ND_HZ)
 enum { MODE_CUBE = 0, MODE_SHIP = 1, MODE_BALL = 2, MODE_UFO = 3, MODE_WAVE = 4, MODE_ROBOT = 5, MODE_SPIDER = 6, MODE_SWING = 7 };
 enum { BUF_NONE = 0, BUF_READY = 1, BUF_END = 2 };
-/* Visible world: 480 x 360 GD units (20 px blocks); ground sits 90 units
- * above the bottom edge when the camera is at rest, as in GD. */
+/* Visible world: 480 x 360 level units (20 px blocks); the ground sits 90
+ * units above the bottom edge when the camera is at rest. */
 #define VIEW_W 480.0f
 #define VIEW_H 360.0f
 #define GROUND_OFFSET 90.0f
 #define PLAYER_SCREEN_X 150.0f
 
 typedef struct {
-  float x, y, vy, gravity, rot, target_rot, time_since_ground, ceil_inv;
-  float ground_y, ceiling_y, snap_diff;
-  float spin;       /* ball: rolling speed, 1 on a surface, -0.7 in the air */
-  float snap_ox, snap_oy;   /* the block the cube last landed on (x snapping) */
-  int32_t snap_frame, frame, coyote;
+  float x, y, vy, rot;
+  float ground_y, ceiling_y, band_h;   /* the band a gate opened (ceiling 999999: none) */
+  float t_elapsed;
+  int32_t frame;
   uint8_t mode, speed, buffer;
-  bool upside, on_ground, on_ceiling, vel_override, snap_rot, left_ground, inverse_rot, jumped, rot_dir_neg, has_snap, mini, ufo_buf;
-  bool second;          /* the dual mode's second body */
-  bool old_on_ground, orb_touching;
-  uint8_t hover;        /* robot: hover ticks left while the button stays held */
-  bool dash;            /* dash ring: moving in a straight line while held */
-  float dash_slope;     /* its dy / dx */
-  /* GD 2.2 gameplay modifiers, armed for the tick a box is touched and the
-     next: head collision (1859), flip on head hit (2866), no auto jump
-     (1813), wave slide (1755) */
-  uint8_t arm_head, arm_flip, arm_noauto, arm_slide;
-  float band_h;         /* the flying band's height at zoom 1 (GD scales it by 1 / zoom) */
-  /* GD's velocity-limit exemption: a slope launch or a red ring lets a ship,
-     UFO or swing pass its terminal speed until it slows back inside */
-  bool boost;
-  bool no_jump;         /* a spider ring just landed it: no jump before the next tick */
-  /* slopes (as gd3ds): the slope ridden, the one just left (coyote) and the
-     ones touched last tick; orientation -1 = none */
-  float sl[4], sl_t, co[4], co_t, pot[4][2];
-  int8_t sl_o, co_o, pot_o[4];
-  uint8_t co_ticks, npot;
-  bool sl_down, co_down, pend_clear, has_new_vy;
-  float t_elapsed, new_vy, delta_y;
+  uint8_t hover;        /* robot: rising ticks left while the key stays held */
+  bool upside, on_ground, on_ceiling, jumped, mini, orb_touching;
+  bool old_on_ground;   /* on the ground the tick before */
 } Player;
 
 /* A colour channel: an RGB fade (t, dur in steps) plus, for 2.0+ levels,
@@ -60,9 +40,9 @@ typedef struct {
 /* moved: the tick (low 16 bits, 0 = never) the group last moved vertically */
 typedef struct { float dx, dy; uint8_t alpha, on; uint16_t moved; } GroupState;
 /* Actions keep the group set of the trigger that started them (`src`), so
- * a stop trigger can find them. Moves: t counts ticks from -1 (GD starts a
+ * a stop trigger can find them. Moves: t counts ticks from -1 (a move starts
  * move the tick after the crossing); dur is in ticks with its fraction, as
- * GD's seconds give it. flags: 1 lock x, 2 lock y. */
+ * its seconds give it. flags: 1 lock x, 2 lock y. */
 typedef struct {
   uint16_t group, src;
   uint8_t easing, flags;
@@ -128,7 +108,7 @@ typedef struct {
   float dist;                   /* forward distance travelled (progress in turned levels) */
   /* camera triggers: static target, offset, zoom */
   float cam_tx, cam_ty, cam_off_x, cam_off_y, zoom;
-  /* the zoom eases (GD's band height follows it: 1 / zoom) */
+  /* the zoom eases */
   float zoom_from, zoom_to, zoom_rate;
   uint16_t zoom_t, zoom_dur;
   uint8_t zoom_ease;
@@ -170,7 +150,7 @@ bool game_used(const Game *g, const RObj *o, unsigned gi);
 void game_save_checkpoint(const Game *g, Checkpoint *c);
 void game_load_checkpoint(Game *g, const Checkpoint *c);
 unsigned game_coin_index(const Level *L, unsigned obj);
-/* trig.c: 2.0+ triggers, groups and channels */
+/* trig.c: groups and triggers (NumDash's levels have none: plain answers) */
 void trig_start(Game *g);
 void trig_cross(Game *g);
 void trig_step(Game *g, float player_dx);
@@ -185,7 +165,7 @@ bool trig_anchor(const Game *g, unsigned grp, float *x, float *y);
 /* rotation of a group set: extra angle (degrees) and pivot; false if none */
 bool gset_moved(const Game *g, unsigned set);
 bool gset_rot(const Game *g, unsigned set, float *angle, float *px, float *py);
-/* gameplay rotation (game.c): travel and gravity as GD's directions
+/* gameplay rotation (game.c, unused by NumDash's levels): directions
    (1 up, 2 down, 3 left, 4 right), flags 2 = scale the new vy by vmod */
 void game_rotate(Game *g, unsigned travel, unsigned gravity, unsigned flags, float vmod);
 bool gset_on(const Game *g, unsigned set);
diff --git a/games/numdash/src/level.h b/games/numdash/src/level.h
index 2ae0411..a5f9364 100644
--- a/games/numdash/src/level.h
+++ b/games/numdash/src/level.h
@@ -12,7 +12,7 @@
 #define MAX_LEVEL_OBJS 20480   /* objects in the biggest level */
 #define CUSTOM_MAX 800
 
-/* Custom level object: GD units, sorted by x. xf: rotation (90 degree steps,
+/* Custom level object: level units, sorted by x. xf: rotation (90 degree steps,
  * clockwise) in bits 0-1, flip x bit 2, flip y bit 3. */
 typedef struct { uint16_t x; int16_t y; uint8_t type, xf; } LObj;
 
@@ -37,7 +37,7 @@ RObj obj_make(float x, float y, unsigned type, unsigned xf);
 
 typedef struct { uint16_t x; int16_t y; uint8_t kind, arg, r, g, b, flags; uint16_t dur; } LevelEvent;
 enum { EVF_TOUCH = 1, EVF_TINT_GROUND = 2, EVF_BLEND = 4 };
-/* Colour channels, renumbered densely: the special GD channels first (BG
+/* Colour channels: the special ones first (BG
  * 1000, G1 1001, Line 1002, Obj 1004, 3DL 1003, P1 1005, P2 1006, LBG 1007,
  * G2 1009, black 1010, white 1011, lighter 1012), then the level's own. */
 enum { CH_BG = 0, CH_G1 = 1, CH_LINE = 2, CH_OBJ = 3, CH_COUNT = 4, CH_3DL = 4, CH_P1 = 5, CH_P2 = 6, CH_LBG = 7,
@@ -72,8 +72,8 @@ typedef struct {
   uint16_t nchans, ndyn, nstyles, ngroups, nscales;   /* channels below ndyn change (Game.ch) */
   uint32_t trig_len;
   uint16_t ntouch;
-  uint8_t bg, ground;             /* GD background and ground styles */
-  uint8_t lflags;                 /* LF_* (GD's level compatibility flags) */
+  uint8_t bg, ground;             /* background and ground styles (unused) */
+  uint8_t lflags;                 /* LF_* (unused) */
   uint32_t end_dist;              /* turned levels: the distance travelled to the end (0: use x) */
 } LevelExt;
 enum { LF_FIX_RADIUS = 1 };      /* kA39: round hazards by centre distance */
@@ -167,7 +167,7 @@ void level_index_coins(Level *L);
 bool level_valid(const Level *L);
 /* Decodes every chunk of a built-in level and checks its objects (tests). */
 bool level_check_all(const Level *L, unsigned *coins);
-/* Rotated hitbox half extents in GD units. */
+/* Rotated hitbox half extents in level units. */
 void obj_hitbox(const RObj *o, float *hw, float *hh);
 /* Scratch memory shared by chunk decoding and custom level saving. */
 #define LEVEL_SCRATCH 6400
diff --git a/games/numdash/src/leveldata.c b/games/numdash/src/leveldata.c
index 2b5e311..d067da6 100644
--- a/games/numdash/src/leveldata.c
+++ b/games/numdash/src/leveldata.c
@@ -1,6948 +1,323 @@
-/* Generated by tools/levels.py from levels/reference. Do not edit. */
+/* Generated by tools/levels.py from levels/numdash. Do not edit. */
 #include "level.h"
-static const uint8_t level0_data[2474] = {
-  237,88,59,111,20,65,12,246,236,235,246,128,220,9,114,57,2,82,174,34,21,108,73,69,73,129,196,150,84,129,138,34,18,87,210,32,122,164,92,5,
-  84,208,35,113,101,58,122,36,82,230,87,108,153,142,127,112,140,237,157,93,239,206,204,222,94,8,143,32,26,159,229,249,236,241,120,199,246,156,1,198,
-  48,130,111,42,209,191,179,146,71,202,60,82,5,0,247,96,91,243,1,92,47,41,192,22,220,172,36,25,97,88,62,134,68,211,199,22,126,27,166,149,
-  36,39,124,70,72,198,191,208,235,175,130,122,223,47,154,134,196,7,61,104,24,249,125,91,111,7,61,25,109,100,127,0,187,226,236,33,157,34,8,145,
-  15,136,31,192,69,241,160,99,53,58,135,5,214,205,200,127,237,97,68,30,42,121,138,230,137,158,192,80,211,71,48,73,241,75,237,128,31,249,146,144,
-  135,26,233,143,9,75,222,19,242,77,11,201,116,151,238,67,82,34,143,9,249,201,137,148,254,0,156,18,242,171,19,41,191,62,192,18,226,208,72,150,
-  144,104,126,161,191,17,192,156,104,78,52,35,58,38,186,164,88,45,40,110,38,122,28,127,164,115,162,140,89,82,156,37,114,46,144,25,197,223,198,72,
-  59,62,76,102,89,59,161,175,223,23,9,112,166,227,211,15,127,70,145,220,204,126,31,164,31,83,71,160,137,105,71,207,220,225,165,200,130,133,39,206,
-  124,106,27,153,183,124,155,137,243,186,240,182,135,155,226,109,228,220,137,159,57,48,89,203,115,255,217,179,78,140,237,149,255,38,99,77,88,64,20,249,
-  49,139,178,250,245,93,149,95,103,253,170,201,229,162,172,189,127,30,105,223,67,62,133,251,126,154,85,182,38,49,227,70,142,135,132,140,58,49,238,92,
-  216,20,227,150,131,208,157,57,87,249,38,4,10,45,71,145,201,244,220,145,227,108,199,191,58,43,49,46,223,2,103,142,251,228,57,249,147,17,29,151,
-  190,5,85,133,159,67,162,214,243,177,242,189,64,184,139,201,206,213,148,180,121,115,234,118,199,148,150,155,18,31,143,189,172,27,137,158,183,247,186,79,
-  242,186,195,178,196,199,203,247,143,92,237,238,251,118,183,53,148,35,192,171,135,158,30,45,119,236,234,251,179,206,142,111,239,238,235,248,244,125,117,106,
-  189,133,27,242,86,132,205,40,225,125,48,157,110,85,69,213,190,51,77,255,237,27,101,191,22,10,8,83,180,137,252,158,42,223,21,26,255,128,248,3,
-  133,175,193,185,168,207,178,126,22,16,144,46,242,123,106,64,90,72,15,84,157,17,151,81,235,132,98,82,64,20,158,71,183,222,177,184,228,186,7,149,
-  5,191,174,173,197,214,250,232,22,194,66,183,110,102,189,63,251,235,218,253,206,167,219,63,86,182,133,191,77,87,158,250,231,116,195,107,148,11,87,55,
-  215,237,159,125,191,71,203,117,19,186,181,240,69,97,119,240,130,98,178,34,94,215,76,133,111,143,125,174,153,138,106,166,154,106,221,137,66,221,9,225,
-  145,174,52,125,167,118,116,157,127,173,43,248,54,60,213,187,78,224,179,90,209,220,224,148,254,177,238,169,132,188,138,211,35,181,167,98,45,25,40,148,
-  143,33,214,242,125,141,231,169,2,34,71,233,223,205,187,253,63,82,60,39,121,168,121,140,106,44,230,51,77,58,82,28,141,21,160,157,51,234,155,198,
-  114,147,126,172,237,95,241,89,171,105,82,238,75,62,172,197,203,217,78,78,90,207,181,214,119,143,39,77,90,0,251,159,128,249,178,39,116,150,227,142,
-  179,156,143,166,120,199,134,116,199,134,116,235,134,120,198,201,112,170,121,51,213,105,118,121,238,251,220,229,51,154,249,228,148,35,50,23,100,142,112,94,
-  100,230,77,251,79,34,25,179,130,255,72,31,18,235,161,172,123,92,9,63,192,157,170,250,101,244,207,11,45,76,169,238,165,191,96,150,120,145,188,153,
-  40,114,69,242,79,95,57,247,101,53,168,145,83,66,166,142,127,7,115,210,202,203,154,99,116,37,38,162,255,92,183,27,90,139,82,171,253,6,48,157,
-  43,102,203,169,223,91,51,45,140,171,220,191,171,112,82,189,165,107,5,192,51,117,203,154,18,132,214,108,33,174,254,73,213,51,88,99,1,173,253,0,
-  205,87,61,140,91,69,16,158,121,246,197,47,135,98,59,177,207,190,59,238,66,117,68,136,115,19,228,234,10,10,68,115,46,175,178,34,132,34,154,184,
-  66,169,174,160,136,104,184,50,105,76,19,41,85,82,82,5,9,137,50,87,210,33,160,162,224,74,106,122,204,206,204,219,183,179,251,118,159,159,143,31,
-  209,204,237,125,251,205,207,206,206,204,91,3,60,128,119,161,15,25,220,6,128,30,116,140,156,152,255,0,110,97,55,7,120,31,209,172,31,224,30,220,
-  173,112,210,136,88,32,188,14,105,181,9,201,140,131,83,24,20,184,150,96,208,81,219,174,103,176,197,90,55,216,14,201,71,129,22,24,235,187,1,178,
-  96,173,25,243,181,238,87,21,221,91,48,46,145,11,214,90,48,179,170,43,252,151,21,11,38,218,18,121,197,22,46,152,95,111,231,77,173,157,75,182,
-  243,138,249,77,172,253,86,123,174,43,182,118,201,252,230,54,255,172,181,185,98,155,87,204,223,212,242,1,14,220,221,225,205,192,203,239,112,51,178,182,
-  200,15,106,119,0,59,30,98,241,111,20,39,181,214,103,9,171,8,224,169,98,186,117,110,206,53,108,209,185,134,173,81,89,105,25,35,36,39,44,123,
-  44,159,40,11,180,38,102,135,115,34,93,211,9,250,98,193,29,49,99,57,97,41,61,66,186,35,242,203,187,67,204,85,204,109,206,192,126,17,219,140,
-  99,155,168,216,116,84,15,57,6,138,205,122,20,36,21,79,136,11,223,237,186,8,37,218,135,149,91,56,243,110,106,84,174,167,21,230,216,32,63,26,
-  107,93,131,88,137,30,39,55,90,238,92,83,142,92,108,202,154,240,17,113,188,252,64,97,135,36,20,184,94,135,183,95,245,178,206,62,229,63,55,39,
-  117,90,114,234,51,165,117,166,180,92,60,78,218,83,75,6,168,143,144,251,136,230,240,207,176,7,7,9,252,151,4,190,95,193,247,19,204,239,19,248,
-  175,5,46,136,236,18,222,198,240,142,0,142,107,166,132,223,83,19,230,203,28,56,109,48,195,103,204,143,79,254,93,246,114,35,114,143,11,214,170,155,
-  252,0,143,85,5,186,155,162,26,30,22,119,106,119,167,106,247,35,179,107,241,177,194,143,12,254,173,119,143,54,242,174,249,248,125,1,244,13,117,72,
-  106,45,204,175,189,220,126,0,119,160,139,206,151,246,155,94,59,73,149,51,54,43,89,223,131,97,158,169,19,173,203,191,100,230,99,163,21,251,70,83,
-  254,15,224,51,182,249,56,97,211,117,253,1,124,201,204,167,138,153,90,139,148,123,188,100,249,135,201,12,84,250,206,102,207,213,167,111,65,234,237,187,
-  18,167,122,246,167,74,215,228,28,139,41,1,240,204,252,165,175,137,125,23,165,206,210,229,28,246,189,60,207,184,95,8,207,42,186,154,239,87,87,106,
-  90,74,230,117,31,157,85,102,230,52,250,45,147,89,154,94,187,42,253,169,200,204,5,159,125,97,58,61,99,124,183,130,67,129,147,204,10,92,56,180,
-  123,31,221,172,174,122,4,248,16,246,34,231,181,153,113,156,254,154,154,212,29,231,108,250,30,37,146,137,186,211,176,139,253,142,254,68,217,9,223,3,
-  67,246,190,221,32,255,177,72,200,154,69,226,189,25,155,48,213,169,56,45,190,209,221,232,139,69,118,79,213,100,163,42,245,107,35,252,138,197,188,80,
-  77,118,149,175,126,34,194,88,252,122,126,62,242,34,217,137,86,245,130,43,80,123,175,214,115,184,30,242,185,182,203,215,44,221,236,138,229,33,162,250,
-  178,144,92,154,121,44,223,142,67,195,28,32,49,7,252,118,26,240,91,101,128,11,236,41,221,35,158,249,29,164,41,55,81,150,229,205,115,136,157,114,
-  206,92,41,92,222,69,43,197,137,227,160,116,255,91,78,147,152,83,231,213,249,161,204,72,150,236,141,188,135,183,13,114,194,30,231,44,95,179,92,178,
-  60,199,206,255,138,41,117,248,207,90,174,227,0,188,131,99,99,231,24,183,75,254,92,237,46,149,150,216,57,198,183,202,156,75,53,158,32,189,168,231,
-  44,207,89,46,89,190,198,118,102,239,90,223,96,79,213,128,142,205,247,152,229,114,215,182,131,102,53,181,225,235,250,231,205,242,38,21,232,231,100,174,
-  236,108,106,161,122,162,127,47,6,173,123,174,242,54,87,217,176,121,62,66,177,214,164,215,252,72,78,2,203,169,78,92,159,129,88,159,18,191,85,114,
-  252,218,206,174,137,147,247,110,162,179,234,56,123,184,243,183,252,186,23,178,155,240,194,145,247,161,48,151,216,106,113,119,180,238,70,126,183,70,249,153,
-  116,83,51,251,114,186,231,216,175,201,79,221,110,12,167,92,89,221,79,241,206,154,188,153,175,39,246,3,14,189,79,170,249,143,89,171,183,179,153,5,
-  31,151,119,78,106,247,8,119,3,251,47,176,151,165,189,55,217,149,106,95,169,142,19,254,101,229,190,232,164,212,47,111,243,196,11,251,177,78,43,246,
-  198,104,226,229,122,57,79,89,144,183,92,189,29,123,107,91,204,108,27,249,57,134,95,106,249,30,53,141,103,19,124,137,91,185,244,29,192,19,28,94,
-  179,59,98,187,225,108,217,36,183,54,39,173,154,156,88,78,6,118,134,247,236,47,241,242,198,87,252,219,39,100,114,29,230,155,242,255,2,189,148,65,
-  78,195,48,16,69,231,219,150,92,84,145,168,74,73,65,8,216,33,177,224,4,57,66,87,236,224,20,44,115,146,158,164,39,202,73,194,204,88,166,78,
-  210,32,167,2,54,163,200,121,255,143,61,254,9,81,73,32,162,87,42,184,62,64,158,123,42,86,68,71,24,174,31,48,188,210,192,115,253,196,150,30,
-  179,249,223,35,67,247,22,150,68,229,152,55,180,225,231,23,108,70,204,1,247,74,26,37,253,136,188,166,29,69,190,77,206,53,37,159,176,91,205,145,
-  161,203,144,247,116,155,233,252,179,103,156,3,146,57,72,221,235,100,186,100,38,211,46,65,21,248,146,188,58,248,44,109,236,126,185,195,127,119,183,208,
-  252,64,124,156,139,218,50,113,8,211,75,181,141,246,141,217,43,70,247,146,251,54,111,253,14,55,92,43,170,105,232,124,64,113,214,129,79,100,229,173,
-  177,66,58,59,195,24,101,160,12,219,237,105,123,37,105,145,218,105,237,185,214,188,14,61,245,41,75,211,201,76,119,53,84,249,239,91,232,147,187,72,
-  207,59,199,7,50,168,114,248,243,254,241,22,114,84,241,207,32,211,227,60,44,234,200,90,151,102,233,178,221,46,63,221,59,42,90,174,122,211,63,240,
-  95,239,173,197,51,119,9,57,233,6,95,101,248,166,78,185,58,106,38,27,38,107,201,222,90,211,184,246,172,170,32,100,133,47,
-};
-static const LChunk level0_chunks[3] = {
-  {0,0,16800,480.0f,13530.0f,-1000000000.0f,1000000000.0f,960,1000,1000,66,1},
-  {960,1000,431968,13454.0f,25410.0f,-1000000000.0f,1000000000.0f,1197,1000,1000,66,1},
-  {2157,2000,812640,25350.0f,26429.0f,-1000000000.0f,1000000000.0f,317,272,272,66,1},
-};
-static const LevelEvent level0_events[19] = {
-  {135,165,1,1,96,0,185,0,10000},
-  {135,135,1,0,158,3,255,0,10000},
-  {3615,165,2,5,0,0,0,0,0},
-  {7365,405,1,0,0,4,4,0,2000},
-  {7365,375,1,1,0,24,25,0,2000},
-  {7815,405,2,1,0,0,0,0,0},
-  {7965,405,1,0,255,10,114,0,500},
-  {7965,377,1,1,83,0,39,0,500},
-  {12555,405,1,1,138,7,205,0,500},
-  {12555,375,1,0,188,0,255,0,500},
-  {12855,195,2,1,0,0,0,0,0},
-  {14445,315,2,0,0,0,0,0,0},
-  {14595,345,2,5,0,0,0,0,0},
-  {15345,315,1,1,140,0,30,0,500},
-  {15345,285,1,0,241,0,38,0,500},
-  {22965,315,1,1,45,0,38,0,500},
-  {22965,285,1,0,255,0,201,0,500},
-  {24135,375,1,0,255,0,25,1,500},
-  {24135,375,1,1,0,0,0,1,500},
-};
-static const uint8_t level1_data[1589] = {
-  237,87,189,107,20,81,16,159,189,64,246,34,113,239,52,201,249,65,178,136,96,42,175,76,35,65,176,16,193,3,155,3,193,32,40,4,33,87,158,32,
-  132,52,18,2,137,93,4,193,206,242,10,139,179,178,179,76,25,43,65,176,189,255,64,240,15,56,223,206,188,183,111,222,231,174,103,20,11,155,199,48,
-  251,123,243,230,227,55,51,119,0,13,88,133,28,90,144,121,206,143,76,206,18,243,107,2,0,55,97,73,200,13,184,32,79,128,243,112,169,212,116,17,
-  211,130,121,113,222,23,200,44,137,189,149,195,6,44,32,222,247,245,59,212,121,61,133,203,214,235,164,215,62,132,189,237,33,190,139,72,194,239,32,222,
-  246,228,27,147,159,227,185,43,223,234,9,249,45,106,182,224,5,100,13,128,55,168,63,129,43,2,79,178,208,55,219,152,243,140,105,242,128,236,222,205,
-  241,46,204,120,55,238,3,221,210,62,127,9,68,231,171,130,157,37,126,107,19,226,117,47,236,228,162,18,11,101,189,168,142,90,163,234,85,104,124,50,
-  89,168,203,4,133,217,96,22,136,123,75,208,241,126,213,177,112,11,234,108,149,246,77,159,93,185,139,22,236,175,190,120,201,230,53,172,53,127,43,196,
-  222,62,179,118,23,150,155,185,231,214,144,97,182,5,166,136,119,5,124,200,99,134,220,247,90,115,179,167,250,151,52,58,147,102,189,236,154,154,231,70,
-  244,107,223,176,191,18,185,69,145,30,149,217,230,12,9,179,168,43,235,155,120,179,237,114,140,231,159,207,153,174,131,116,179,225,78,155,199,216,35,117,
-  106,205,245,246,140,245,241,191,78,143,216,214,170,34,13,77,203,248,173,129,236,163,121,235,238,94,52,118,155,165,109,140,37,115,100,247,110,198,34,106,
-  71,125,203,60,17,157,160,102,132,83,241,135,152,135,100,97,17,243,214,96,95,219,210,130,31,223,68,15,59,82,118,123,92,201,230,84,124,141,231,43,
-  60,87,241,60,156,113,3,106,110,64,5,175,252,53,173,51,127,84,77,7,142,133,67,198,201,33,246,154,158,66,23,177,178,139,76,147,27,50,239,95,
-  63,115,76,127,250,172,151,67,50,113,137,38,198,237,200,116,117,39,161,57,21,221,201,57,102,200,177,179,185,168,46,100,97,31,103,175,59,175,182,29,
-  61,77,188,123,165,94,229,188,31,157,147,250,69,179,163,249,156,12,201,122,94,185,83,189,74,238,177,237,22,218,17,58,123,161,105,227,214,212,183,209,
-  200,2,71,82,14,159,121,183,85,71,188,116,174,89,228,100,77,244,32,85,225,192,202,106,120,27,218,51,156,191,5,240,40,185,158,250,240,83,88,47,
-  103,14,103,239,30,178,78,115,152,186,251,106,244,124,200,126,123,239,176,153,240,0,238,224,180,121,130,246,143,241,247,158,173,249,16,216,17,116,174,162,
-  63,141,218,93,150,195,41,198,94,204,55,179,23,78,25,31,92,89,227,85,119,124,53,44,116,34,29,52,118,250,206,182,144,139,217,91,112,111,28,233,
-  11,85,53,122,107,24,69,82,151,241,126,63,96,188,226,191,163,52,223,220,222,84,157,107,111,118,119,243,134,54,157,57,187,248,188,29,64,54,135,29,
-  55,135,191,91,230,114,89,47,94,193,247,112,67,86,240,86,99,45,41,182,255,20,191,174,37,169,144,39,40,79,133,47,74,67,251,107,130,26,173,47,
-  178,90,196,232,226,185,181,194,254,150,252,141,161,248,150,178,157,146,150,26,229,97,106,232,1,94,194,50,222,213,154,30,90,107,73,100,34,183,222,22,
-  184,177,144,159,228,219,164,60,125,250,147,242,204,197,166,78,202,24,109,76,177,125,104,155,235,91,110,102,134,152,25,142,36,189,141,15,99,166,204,219,
-  106,76,113,174,123,145,33,255,67,25,24,253,98,140,35,249,175,208,135,201,61,183,120,158,185,158,87,199,230,207,230,111,240,71,197,50,144,204,177,191,
-  142,74,155,197,255,130,212,139,252,132,12,36,100,8,195,173,213,193,248,191,170,187,244,226,81,160,35,6,209,120,221,204,240,188,181,100,110,103,237,250,
-  122,221,17,99,151,102,78,140,93,71,88,241,106,30,158,29,87,67,241,86,207,55,248,99,252,4,120,135,76,8,179,37,169,100,120,236,174,182,63,43,
-  151,118,13,70,117,101,174,116,79,81,150,122,50,183,137,229,3,231,201,103,104,53,255,35,255,62,242,236,48,19,201,162,127,3,3,240,84,232,76,100,
-  139,49,60,142,172,111,243,108,144,63,1,197,86,177,142,19,49,16,125,123,5,9,225,72,20,178,4,34,145,21,5,66,58,41,91,94,65,195,149,87,
-  164,220,31,128,2,137,92,151,46,82,122,242,5,20,252,7,18,31,64,73,199,31,228,15,248,131,96,207,172,215,227,245,36,113,184,160,107,158,70,179,
-  207,207,51,227,25,123,129,45,50,0,115,194,18,29,131,3,194,105,102,113,71,246,7,227,43,2,38,115,202,123,51,153,179,61,171,166,140,63,206,206,
-  50,139,132,172,211,56,199,247,2,126,33,239,2,31,145,39,229,155,150,169,85,99,229,243,229,251,63,114,73,57,223,135,201,37,140,77,234,236,154,181,
-  69,179,138,227,247,252,29,225,52,179,248,21,111,48,54,254,60,179,126,139,115,194,210,96,215,172,234,227,55,97,65,184,106,108,187,118,134,145,193,11,
-  12,141,231,5,30,55,118,252,85,71,224,154,86,141,240,252,0,231,51,233,84,53,115,172,40,104,118,155,169,169,61,53,81,23,34,102,23,249,107,188,
-  170,243,141,177,159,133,30,151,169,182,23,231,245,222,168,33,138,176,8,206,101,97,212,28,167,18,28,139,57,229,210,11,244,125,156,90,133,89,77,234,
-  235,202,113,29,52,78,187,194,97,221,14,87,184,131,151,39,87,120,86,87,56,172,143,197,13,225,15,76,240,29,233,156,129,152,130,54,39,236,91,221,
-  118,249,30,103,134,171,56,247,248,107,217,156,245,126,29,86,208,187,43,172,106,122,84,114,95,169,214,206,14,184,73,174,12,51,247,117,254,181,96,94,
-  209,13,25,247,76,37,56,183,45,78,56,197,75,98,126,162,59,60,51,243,0,124,163,221,249,78,27,102,19,131,204,249,137,126,195,225,72,216,111,61,
-  78,217,122,114,202,189,87,123,54,84,159,165,232,118,182,229,90,111,107,202,108,219,168,28,199,70,59,166,93,186,181,231,9,205,236,59,188,173,119,113,
-  95,229,60,114,29,170,168,151,42,113,10,186,237,110,18,95,201,248,118,5,157,224,169,253,124,184,163,120,214,190,16,222,53,239,142,61,133,53,157,17,
-  219,236,95,55,179,233,248,237,175,197,63,121,86,234,45,237,103,223,79,61,85,169,251,7,233,156,77,244,146,122,78,88,85,105,203,187,55,158,98,217,
-  219,165,96,14,240,72,157,80,246,204,5,179,52,76,230,243,173,27,78,214,97,77,121,135,164,106,134,145,44,196,42,158,68,239,137,191,62,163,62,188,
-  220,251,63,160,199,176,63,230,56,218,57,225,130,94,25,201,225,185,246,126,237,253,146,55,173,254,66,253,5,
-};
-static const LChunk level1_chunks[2] = {
-  {0,0,12960,360.0f,16200.0f,-1000000000.0f,1000000000.0f,1011,1000,1000,66,1},
-  {1011,1000,517920,16140.0f,25050.0f,-1000000000.0f,1000000000.0f,578,530,530,66,1},
-};
-static const LevelEvent level1_events[15] = {
-  {4095,255,2,5,0,0,0,0,0},
-  {4215,225,1,1,167,0,89,0,500},
-  {4215,195,1,0,252,0,131,0,500},
-  {10665,225,1,1,138,0,9,0,10000},
-  {10665,195,1,0,253,0,34,0,10000},
-  {12645,465,2,0,0,0,0,0,0},
-  {12645,435,1,0,130,1,255,0,500},
-  {12645,405,1,1,74,0,144,0,500},
-  {16785,405,2,1,0,0,0,0,0},
-  {16785,375,1,0,255,0,172,0,500},
-  {16785,345,1,1,179,0,110,0,500},
-  {20985,315,2,5,0,0,0,0,0},
-  {21045,375,1,0,0,136,254,0,300},
-  {21045,345,1,1,0,93,196,0,300},
-  {23685,225,2,1,0,0,0,0,0},
-};
-static const uint8_t level2_data[2107] = {
-  181,88,189,143,91,69,16,159,189,231,47,142,227,217,185,59,251,206,81,226,32,17,34,33,97,34,18,16,69,14,29,17,18,5,86,138,40,162,32,9,
-  66,74,117,14,72,167,136,198,162,163,193,161,162,226,4,162,197,37,221,73,81,106,151,80,69,66,169,239,15,160,226,15,48,59,191,121,31,179,111,119,
-  223,93,68,40,60,90,205,204,206,155,157,249,237,204,172,137,90,212,165,17,232,6,93,167,75,180,169,56,95,155,114,189,13,233,186,146,206,148,180,7,
-  105,170,164,46,237,146,33,162,183,105,203,174,215,232,92,133,142,33,237,90,93,2,135,232,211,136,166,72,183,104,96,233,61,251,197,184,206,251,244,138,
-  165,95,208,208,225,132,214,98,173,170,239,90,123,141,118,10,142,156,229,186,141,20,175,211,140,166,134,41,209,148,210,14,209,28,58,79,96,45,204,63,
-  200,56,34,213,250,97,254,67,251,245,11,81,223,58,54,134,219,201,32,227,140,169,153,184,103,31,83,43,137,175,153,230,145,159,224,187,28,19,205,175,
-  93,27,114,162,84,114,170,235,166,17,175,132,51,96,159,77,167,200,66,191,17,202,38,71,123,150,33,132,125,155,101,49,215,152,137,161,101,98,17,34,
-  223,218,96,251,54,99,97,180,248,214,102,252,173,4,89,75,56,11,105,194,214,12,242,104,156,188,204,20,6,92,108,132,113,187,171,144,214,242,116,90,
-  54,130,44,221,183,210,221,128,159,178,87,172,233,252,74,190,220,179,27,201,111,113,174,67,235,21,69,172,185,126,238,224,118,236,40,169,123,198,148,254,
-  84,235,247,236,111,139,174,41,206,3,149,175,199,224,124,2,157,143,176,126,39,139,158,224,92,48,95,114,98,235,122,205,23,181,115,13,183,233,93,235,
-  79,55,225,40,49,157,88,218,183,180,89,137,219,20,231,42,227,211,3,174,82,47,179,110,12,167,145,234,84,98,210,173,42,174,78,2,31,214,18,246,
-  129,233,33,16,53,177,114,230,183,225,91,59,194,73,26,216,107,176,215,228,123,235,60,169,162,180,95,112,166,17,157,182,69,231,105,222,222,183,17,230,
-  168,38,70,251,227,70,146,35,144,70,16,40,183,64,115,90,244,200,250,179,235,160,84,235,255,138,219,250,20,244,57,238,172,43,101,12,60,5,125,14,
-  218,54,195,10,230,195,95,31,69,242,69,244,97,48,203,26,15,68,119,10,203,110,111,154,3,141,11,120,242,151,247,45,241,193,239,38,250,86,238,168,
-  106,80,237,173,110,142,194,222,186,39,186,19,169,6,210,43,195,181,98,100,51,82,250,160,145,83,119,246,208,90,123,114,27,149,106,12,92,49,162,184,
-  62,175,21,8,31,3,81,130,237,219,10,219,58,26,251,53,177,138,199,112,63,210,253,37,155,186,246,150,223,221,132,133,13,111,45,210,14,206,53,136,
-  212,219,250,189,161,154,207,57,61,251,215,67,22,202,56,159,109,239,105,56,239,23,107,127,30,91,208,155,150,255,55,208,251,170,225,90,250,22,232,27,
-  168,171,77,208,47,33,189,105,215,7,134,187,198,17,93,52,6,93,149,215,140,252,103,116,98,233,49,248,132,190,118,4,233,30,45,193,231,93,119,51,
-  157,5,166,5,214,148,94,124,23,253,250,216,177,185,42,248,178,107,207,114,174,88,203,75,172,89,103,148,233,79,97,77,244,197,183,19,172,165,203,203,
-  87,242,201,161,13,14,211,21,44,72,255,61,81,82,169,210,171,66,243,191,233,228,223,250,191,116,202,158,18,242,39,63,117,169,191,42,98,66,244,19,
-  93,86,147,85,126,139,203,57,112,173,176,28,231,112,23,147,59,94,87,93,71,129,126,45,58,135,209,25,172,95,204,90,55,139,110,18,171,138,45,160,
-  122,183,182,215,251,103,204,39,210,211,207,229,207,174,218,195,117,244,223,237,154,119,80,223,118,79,174,192,61,197,79,179,74,190,64,239,88,34,47,255,
-  216,202,214,243,78,145,102,149,161,236,65,210,149,92,107,82,33,159,64,90,246,163,61,158,238,58,249,60,252,11,94,40,60,221,125,15,250,216,123,3,
-  114,142,46,5,222,134,87,248,93,224,204,222,3,167,126,202,215,47,91,249,64,213,64,159,175,57,132,217,102,16,177,16,178,89,102,188,23,64,212,129,
-  245,42,52,165,232,14,37,28,201,44,103,121,148,189,59,216,219,77,103,82,210,56,97,203,50,59,229,179,92,137,22,185,131,249,68,167,49,83,236,50,
-  241,123,49,85,81,21,233,9,53,59,124,79,153,127,213,12,17,165,86,118,210,248,84,48,135,254,20,154,165,190,107,121,5,203,23,13,107,222,50,195,
-  154,121,114,225,121,101,119,217,189,55,176,247,43,35,8,108,5,190,152,91,96,223,220,154,176,132,205,133,178,121,3,54,63,135,205,31,148,77,119,170,
-  207,237,187,19,169,220,41,183,139,53,163,94,233,179,188,72,196,78,112,119,164,102,94,85,17,147,172,197,118,45,177,75,234,237,57,181,43,86,3,171,
-  21,192,157,12,199,94,46,98,19,105,55,59,145,59,139,30,227,166,31,5,222,191,177,255,121,252,25,82,254,109,16,254,235,116,190,227,74,171,19,105,
-  232,197,244,200,179,57,135,77,225,223,47,108,186,56,252,49,50,205,10,253,29,82,65,154,177,85,184,68,26,91,22,233,207,21,111,243,219,247,7,164,
-  178,171,74,137,190,65,5,248,12,21,224,3,208,33,238,187,80,241,48,239,167,105,102,7,187,26,216,101,176,203,232,93,98,185,103,127,23,10,253,143,
-  109,85,61,159,205,117,186,150,126,87,84,69,253,58,112,95,10,103,65,239,111,69,126,93,59,83,156,110,130,115,149,239,65,37,109,64,26,125,15,174,
-  35,2,219,21,132,132,177,125,224,245,77,191,26,151,221,182,238,245,250,178,237,251,88,237,168,126,20,123,245,151,255,158,53,79,249,47,148,165,137,94,
-  55,226,213,187,222,154,216,97,11,207,42,183,184,25,124,81,214,89,126,25,17,246,251,215,183,217,127,8,117,245,54,214,107,164,238,185,149,220,168,158,
-  149,118,242,121,245,150,209,255,164,241,255,144,115,165,25,175,213,230,12,149,217,56,47,175,127,1,173,86,81,110,211,64,16,157,141,211,36,138,192,14,
-  165,20,138,138,139,144,224,11,139,19,240,213,63,124,131,130,248,38,55,64,226,163,127,13,23,40,55,200,9,64,226,0,156,0,164,30,128,27,84,234,
-  1,96,230,141,215,158,221,181,147,8,42,75,163,213,236,219,121,59,51,187,207,75,180,166,124,70,244,131,28,17,221,208,17,149,52,162,123,108,43,120,
-  100,76,180,2,102,13,207,149,193,20,240,44,49,187,194,248,59,207,254,74,60,196,209,50,182,5,141,50,137,60,194,120,74,195,227,154,114,197,59,172,
-  117,158,177,179,11,198,156,48,74,119,120,159,30,80,136,233,24,169,243,140,125,204,56,154,68,56,108,61,53,214,86,88,107,35,212,136,80,33,66,28,
-  39,167,187,244,144,119,37,227,3,195,62,151,10,103,168,97,19,231,192,100,58,111,170,164,123,184,66,173,164,206,33,38,93,213,239,89,208,27,206,99,
-  220,139,148,157,119,85,157,55,59,151,61,19,227,158,176,117,52,159,205,164,14,227,67,30,119,149,41,104,143,237,115,142,226,61,95,221,132,237,79,39,
-  57,94,187,199,108,47,221,222,204,86,82,60,83,32,167,64,78,156,159,61,119,207,178,208,95,33,126,65,147,182,14,167,204,165,179,138,244,107,83,143,
-  114,165,254,83,119,18,249,107,176,188,163,99,116,118,18,49,90,228,132,103,250,60,231,238,197,142,72,155,157,245,92,26,127,91,67,103,107,248,30,248,
-  227,198,86,36,89,200,184,76,236,199,196,67,192,247,33,11,238,251,103,216,11,88,185,185,89,219,83,30,143,195,187,32,167,162,187,71,113,119,228,140,
-  133,119,77,79,72,122,167,166,244,168,55,142,68,56,11,244,65,20,163,52,186,17,142,237,218,88,91,202,30,94,221,207,203,100,159,122,6,108,247,99,
-  101,235,203,194,86,163,203,52,141,63,156,111,127,221,194,200,233,222,20,243,97,35,203,18,171,106,224,211,181,23,27,25,87,56,3,75,232,91,13,27,
-  43,30,209,111,212,231,15,234,243,202,29,97,213,8,140,170,204,157,18,46,105,60,74,87,121,60,179,252,195,108,154,151,199,79,233,118,185,124,101,118,
-  137,80,152,93,213,205,153,188,253,253,72,181,253,95,41,70,154,46,180,253,210,222,113,23,178,14,147,161,47,210,157,53,148,63,237,154,71,230,64,138,
-  173,97,43,216,2,54,188,233,89,123,71,10,236,97,219,56,211,104,198,147,179,34,233,235,66,254,71,103,59,235,152,103,215,123,39,44,214,42,75,236,
-  23,118,193,11,99,142,115,158,103,114,174,28,240,98,63,241,173,255,210,170,98,222,168,101,105,116,210,68,11,116,18,255,74,254,182,223,247,240,206,170,
-  134,60,101,125,47,35,46,111,191,53,227,237,186,183,192,185,205,131,200,146,175,237,218,29,176,239,15,234,140,170,159,42,161,190,238,180,11,253,254,114,
-  227,95,105,243,44,241,43,109,159,174,131,124,227,255,66,168,216,155,245,109,232,237,106,107,110,241,202,213,177,132,213,171,147,248,75,83,171,126,174,184,
-  179,195,92,101,192,82,13,112,253,111,70,37,94,110,196,61,152,224,69,39,246,53,48,111,57,207,191,
-};
-static const LChunk level2_chunks[2] = {
-  {0,0,15200,430.0f,20130.0f,-1000000000.0f,1000000000.0f,1386,1000,1000,66,1},
-  {1386,1000,642720,20040.0f,27690.0f,-1000000000.0f,1000000000.0f,721,509,509,66,1},
-};
-static const LevelEvent level2_events[22] = {
-  {2295,225,1,1,110,163,0,0,0},
-  {2295,195,1,0,172,255,0,0,0},
-  {4155,225,1,1,0,140,116,0,6000},
-  {4155,195,1,0,0,255,159,0,6000},
-  {5955,315,3,1,0,0,0,0,0},
-  {5955,285,1,1,156,0,123,0,0},
-  {5955,255,1,0,255,0,170,0,0},
-  {9675,315,3,0,0,0,0,0,0},
-  {9675,285,1,1,0,0,0,0,500},
-  {9675,255,1,0,0,0,0,0,500},
-  {12285,345,1,0,0,117,134,0,4000},
-  {12285,315,1,1,0,58,59,0,4000},
-  {13305,405,1,0,3,193,255,0,0},
-  {13305,375,1,1,0,124,176,0,0},
-  {20655,255,1,0,11,63,124,0,5000},
-  {20655,225,1,1,14,111,176,0,5000},
-  {22485,105,2,1,0,0,0,0,0},
-  {23715,345,1,0,0,238,48,0,2000},
-  {23715,315,1,1,7,171,8,0,2000},
-  {23835,255,2,0,0,0,0,0,0},
-  {24195,315,2,5,0,0,0,0,0},
-  {26745,135,2,1,0,0,0,0,0},
-};
-static const uint8_t level3_data[1965] = {
-  181,88,61,108,28,85,16,158,119,123,187,94,204,177,89,219,231,179,47,178,47,34,200,145,34,229,58,40,192,208,35,44,26,168,124,136,130,46,14,10,
-  146,11,164,67,233,115,68,41,232,144,232,49,157,59,75,41,40,93,210,69,114,137,20,139,42,5,82,10,234,152,121,223,219,183,59,251,126,206,119,145,
-  82,120,52,158,55,111,126,190,55,51,247,222,18,221,160,130,70,160,63,208,251,76,137,18,74,233,149,144,107,154,50,237,208,90,69,137,222,163,173,90,
-  50,230,85,98,157,140,169,89,253,130,54,90,250,235,252,255,38,245,132,196,216,124,14,251,19,182,80,36,68,7,76,71,76,21,91,24,131,62,162,33,
-  77,161,243,74,196,246,88,240,198,90,9,107,68,123,212,167,92,120,25,32,206,188,226,253,104,117,156,19,58,130,247,25,188,31,193,239,12,244,89,237,
-  221,199,161,15,203,171,149,205,3,216,28,195,166,196,225,126,141,67,73,43,180,205,54,154,220,137,78,132,223,19,225,247,130,253,146,227,183,160,51,193,
-  79,57,83,141,192,10,251,26,209,71,244,78,229,113,228,81,2,242,150,255,26,154,26,85,41,25,85,242,230,100,165,206,136,99,210,25,125,131,152,63,
-  3,127,11,244,39,196,32,125,233,28,45,242,7,2,103,131,204,119,222,233,52,103,145,123,145,103,56,77,2,86,219,78,70,131,138,47,34,103,106,80,
-  186,35,168,150,36,134,118,127,93,162,182,155,234,42,130,216,54,145,124,139,83,211,117,91,6,206,66,159,2,85,154,7,117,109,151,78,71,112,57,208,
-  61,214,237,161,42,76,133,172,179,188,3,137,66,205,216,10,49,242,145,160,218,123,209,146,180,87,127,67,132,220,101,57,161,206,227,154,243,237,52,22,
-  140,205,102,53,81,38,254,24,74,54,199,154,239,250,117,155,179,247,126,50,16,123,117,60,105,98,173,113,45,213,252,17,34,105,186,213,174,202,30,148,
-  58,99,196,57,127,175,245,146,42,93,159,125,149,71,186,73,102,36,16,232,26,4,38,180,143,19,60,68,119,239,195,203,33,232,19,246,53,65,237,61,
-  22,117,248,160,226,253,74,150,190,142,157,78,111,199,115,234,173,202,74,126,41,122,252,117,109,185,125,58,70,98,236,92,136,41,113,138,41,113,42,44,
-  92,136,249,32,35,121,25,153,69,123,170,217,251,137,218,8,116,89,155,174,8,125,153,163,204,226,80,105,60,247,149,62,199,39,170,137,231,47,161,163,
-  39,146,214,209,154,187,208,252,94,185,145,239,98,245,10,245,240,165,26,6,242,141,159,190,244,245,130,54,90,51,48,134,222,117,214,140,29,51,43,20,
-  227,68,116,151,167,88,25,152,231,97,203,59,216,213,169,116,54,197,249,186,209,250,149,99,60,134,124,253,2,95,46,191,67,239,242,31,181,60,186,21,
-  101,119,29,11,11,254,175,210,57,240,191,68,143,172,169,97,224,55,133,170,95,186,25,52,155,73,104,189,220,3,110,230,183,213,237,238,79,171,121,101,
-  102,151,158,90,175,213,37,186,236,28,116,159,62,128,229,20,150,51,212,131,238,235,43,204,132,183,68,85,91,50,195,239,169,137,243,99,26,230,58,182,
-  20,152,152,120,22,181,188,160,29,21,163,57,107,22,249,96,158,78,66,208,241,120,165,249,180,150,255,75,107,45,158,232,111,26,56,171,127,208,70,29,
-  161,181,144,209,92,47,45,126,17,26,218,123,89,123,244,117,50,240,219,224,123,224,215,163,150,207,129,182,169,198,31,25,237,69,98,88,38,206,69,80,
-  253,135,182,130,171,6,85,163,35,81,213,146,85,236,234,71,109,62,192,185,200,142,48,157,226,218,153,119,214,155,209,213,146,108,247,165,121,177,144,181,
-  55,67,192,120,49,58,231,111,100,193,172,254,12,52,78,128,198,178,56,184,150,75,80,147,117,137,188,10,81,3,29,158,78,250,230,240,136,233,78,45,
-  49,55,70,51,193,134,249,206,91,172,153,6,171,249,57,18,255,22,111,59,146,112,181,152,90,138,217,233,163,78,86,35,171,69,133,152,150,20,200,168,
-  92,186,131,76,46,102,206,248,19,102,17,100,140,220,218,76,91,18,127,239,58,248,30,228,253,150,119,237,23,153,170,62,98,51,252,0,124,94,197,54,
-  198,13,153,239,147,156,239,49,221,102,125,189,154,53,171,93,172,98,106,165,202,230,120,3,239,98,247,62,121,230,189,116,66,247,115,115,19,187,254,13,
-  219,190,219,204,170,223,217,12,53,153,57,123,127,175,95,97,62,253,15,244,166,136,234,54,222,254,248,213,174,191,0,52,239,139,207,197,222,23,209,140,
-  92,47,19,142,115,135,249,140,255,11,209,49,191,98,41,178,58,141,220,198,173,205,112,94,246,109,238,90,35,248,10,199,96,237,135,86,221,19,249,138,
-  30,2,165,167,64,233,41,240,121,8,250,39,163,244,33,188,151,124,46,119,130,241,207,42,84,245,253,231,153,184,53,93,255,34,107,223,232,92,76,98,
-  250,189,234,27,14,159,44,191,85,155,213,66,88,40,3,123,253,247,184,127,163,150,184,205,123,185,83,133,225,125,196,217,32,217,126,111,218,122,43,234,
-  111,68,246,157,222,198,191,140,98,162,233,77,190,21,239,81,215,219,85,40,219,209,9,250,148,47,20,232,226,41,119,110,130,57,153,224,54,162,145,103,
-  190,247,156,35,73,16,185,150,31,65,206,124,239,140,223,41,137,185,151,178,156,249,46,248,222,132,164,125,59,31,180,126,216,254,84,91,67,132,90,126,
-  0,249,24,242,176,253,51,158,231,9,234,71,203,79,160,63,67,156,246,75,93,211,245,230,246,126,5,126,87,101,53,86,119,149,158,162,97,158,104,168,
-  54,29,137,124,29,132,244,7,158,190,62,139,163,250,43,34,181,246,214,120,102,84,221,141,199,84,116,40,16,67,141,118,26,215,180,211,178,80,168,25,
-  69,11,230,56,88,34,71,31,31,89,111,33,253,75,100,125,238,228,110,191,159,24,239,117,61,36,120,237,154,47,144,29,114,236,232,111,56,172,211,153,
-  167,83,64,167,157,59,85,223,184,110,169,173,165,112,104,122,118,25,28,174,61,235,36,118,130,208,81,208,233,204,171,135,1,52,11,104,198,79,217,63,
-  151,249,8,252,15,189,85,65,110,211,80,16,157,111,167,110,22,233,55,73,104,154,32,18,88,64,37,36,16,7,168,212,3,224,139,212,91,86,136,11,
-  248,4,237,154,77,111,128,196,1,122,6,196,218,103,224,0,97,230,141,157,204,255,182,83,90,21,54,147,209,252,247,103,222,204,188,124,19,157,208,25,
-  109,40,161,41,17,189,115,211,49,209,202,157,142,109,36,60,157,211,41,251,175,220,89,20,191,35,159,18,221,178,141,227,28,230,120,202,63,21,249,132,
-  168,38,79,113,206,5,73,221,133,226,29,240,201,48,158,107,1,227,93,24,223,210,121,132,124,76,119,195,167,194,176,141,148,232,183,128,221,119,177,63,
-  149,174,139,182,107,246,63,160,23,155,179,68,167,69,219,105,132,41,209,99,1,59,196,161,91,55,230,220,183,187,67,19,8,241,178,101,199,28,230,169,
-  108,97,158,174,133,45,120,38,252,147,195,214,232,113,11,127,237,196,94,184,84,231,195,172,10,206,39,152,4,219,57,198,93,177,57,236,218,137,189,112,
-  201,131,241,255,11,153,27,252,97,164,158,90,252,97,164,229,160,19,96,85,143,159,14,255,120,38,255,42,167,168,189,134,218,89,45,14,106,113,80,11,
-  219,107,122,131,91,163,145,222,90,139,222,160,255,185,115,162,183,38,219,38,242,83,224,147,230,29,104,213,155,179,74,141,207,152,247,172,253,16,163,47,
-  67,65,71,168,155,1,153,225,165,242,120,97,184,56,253,166,21,145,185,37,21,143,118,200,10,200,91,32,127,118,144,57,144,37,48,21,48,63,24,243,
-  133,227,30,167,158,110,130,108,154,65,179,85,216,172,242,60,166,101,148,83,227,111,233,249,147,119,20,115,184,1,207,239,1,230,211,110,146,51,84,156,
-  116,184,89,86,25,94,167,101,79,45,205,179,159,70,119,38,154,97,34,85,70,179,38,67,137,211,2,25,108,143,119,232,177,6,243,169,11,123,28,99,
-  134,139,134,243,253,243,153,116,166,58,235,225,127,73,47,123,248,91,251,185,241,245,150,85,139,102,248,197,181,14,171,229,171,201,118,101,252,111,176,47,
-  140,109,51,116,117,190,255,58,252,189,122,195,239,102,252,111,218,4,91,46,76,78,157,170,34,175,6,254,113,85,211,105,214,187,199,26,172,182,96,245,
-  209,173,122,20,69,3,26,176,24,223,179,101,225,243,44,200,35,170,88,246,32,229,75,148,25,228,98,183,35,153,195,107,222,59,222,28,204,211,223,235,
-  235,251,35,145,63,
-};
-static const LChunk level3_chunks[2] = {
-  {0,0,17120,490.0f,20100.0f,-1000000000.0f,1000000000.0f,1405,1000,1000,66,1},
-  {1405,1000,641760,20010.0f,24952.0f,-1000000000.0f,1000000000.0f,560,402,402,66,1},
-};
-static const LevelEvent level3_events[42] = {
-  {15,165,1,0,114,0,6,0,10000},
-  {2415,195,1,0,0,21,114,0,10000},
-  {2415,165,1,1,0,42,149,0,10000},
-  {3945,165,2,1,0,0,0,0,0},
-  {8235,255,1,0,0,0,0,0,1000},
-  {8235,225,1,1,0,0,0,0,1000},
-  {8565,135,1,0,20,70,0,0,500},
-  {8565,105,1,1,5,31,0,0,500},
-  {8655,135,2,5,0,0,0,0,0},
-  {8775,405,1,0,104,255,36,0,500},
-  {8775,375,1,1,40,162,0,0,500},
-  {9255,405,1,0,0,246,176,0,500},
-  {9255,375,1,1,0,155,114,0,500},
-  {9795,405,1,0,107,255,0,0,500},
-  {9795,375,1,1,66,159,0,0,500},
-  {10215,405,1,0,0,253,150,0,500},
-  {10215,375,1,1,0,147,89,0,500},
-  {10845,405,1,0,0,255,12,0,500},
-  {10845,375,1,1,9,139,0,0,500},
-  {11325,405,1,0,135,255,1,0,500},
-  {11325,375,1,1,72,138,0,0,500},
-  {11835,405,1,0,1,255,164,0,500},
-  {11835,375,1,1,0,143,101,0,500},
-  {12375,405,1,0,0,250,36,0,500},
-  {12375,375,1,1,0,159,16,0,500},
-  {12945,405,1,0,255,0,47,0,500},
-  {12945,375,1,1,177,0,38,0,500},
-  {12945,345,2,1,0,0,0,0,0},
-  {16845,345,2,5,0,0,0,0,0},
-  {16995,405,1,0,25,255,0,0,1000},
-  {16995,375,1,1,0,0,0,0,1000},
-  {17535,375,1,0,6,255,153,0,1000},
-  {18045,375,1,0,8,255,0,0,1000},
-  {18555,375,1,0,1,255,122,0,1000},
-  {19065,375,1,0,163,251,0,0,1000},
-  {19605,375,1,0,0,255,106,0,1000},
-  {20115,375,1,0,15,255,17,0,1000},
-  {20625,375,1,0,139,255,0,0,1000},
-  {21225,375,1,0,248,0,165,0,300},
-  {21225,345,1,1,180,0,119,0,300},
-  {23805,195,1,0,154,0,254,0,5000},
-  {23805,165,1,1,95,0,151,0,5000},
-};
-static const uint8_t level4_data[2478] = {
-  197,88,49,108,100,69,12,245,252,255,239,103,47,10,127,247,146,37,201,2,217,147,64,80,177,21,74,117,39,81,164,227,235,170,84,39,68,127,95,64,
-  129,16,58,9,122,86,87,165,66,226,42,26,86,84,41,129,18,137,21,85,106,74,138,148,87,129,68,73,131,199,158,249,223,51,158,217,44,185,2,69,
-  154,29,217,30,143,237,177,159,253,3,48,134,6,254,162,117,78,235,19,90,223,160,245,19,65,183,171,113,43,192,187,112,0,15,161,133,166,4,232,112,
-  157,227,222,210,59,90,159,195,204,233,153,195,2,80,4,247,5,254,44,161,25,1,172,105,191,130,18,215,107,228,90,153,130,100,118,192,210,11,146,177,
-  123,150,191,70,238,118,50,204,101,73,166,75,201,237,101,228,93,47,39,83,86,86,166,170,54,217,99,245,172,133,95,161,71,219,112,11,67,241,44,6,
-  110,89,49,119,136,127,21,216,28,239,217,78,171,167,165,215,47,224,30,236,211,90,195,43,112,4,199,180,15,95,115,251,119,220,252,130,47,207,101,203,
-  209,54,92,207,96,26,197,132,163,97,237,47,240,204,177,243,110,46,86,192,108,61,192,245,28,238,58,202,136,36,15,29,247,148,232,118,5,117,214,107,
-  248,140,184,95,147,158,107,170,130,123,102,70,150,52,35,47,115,0,175,246,242,231,36,191,38,201,191,97,70,126,13,146,131,37,158,98,95,33,119,99,
-  138,190,164,234,211,118,30,160,87,82,127,110,239,41,54,14,146,82,192,23,112,63,136,225,67,188,171,164,218,183,249,208,210,186,160,149,243,228,91,148,
-  246,117,215,209,218,186,26,228,218,41,96,98,125,199,63,201,29,255,143,50,243,132,157,99,193,93,82,54,182,194,163,65,198,115,59,165,185,85,92,173,
-  127,69,175,182,20,217,46,101,58,37,163,53,116,55,222,98,185,182,82,58,87,239,22,157,36,183,21,183,251,123,155,91,211,165,102,239,81,73,213,90,
-  85,18,141,183,221,15,149,254,129,202,124,89,35,45,229,164,204,67,79,47,162,136,241,217,149,235,77,190,30,231,189,157,246,70,190,87,87,83,92,29,
-  13,158,186,67,250,107,210,95,59,108,153,100,42,113,179,181,141,59,123,179,37,57,132,9,209,230,43,242,75,115,87,228,53,247,142,223,133,76,76,151,
-  54,131,195,195,143,122,249,60,82,197,183,231,228,61,118,61,79,74,234,152,255,23,31,181,85,23,130,203,168,120,65,26,126,22,26,46,34,60,244,116,
-  139,174,108,173,167,252,136,168,232,237,183,175,32,17,88,203,231,45,25,108,8,163,45,101,214,174,203,251,46,227,233,76,97,174,164,167,49,63,23,43,
-  223,1,59,152,18,158,79,9,207,167,229,33,82,134,44,245,200,89,150,30,217,58,81,89,158,91,140,66,58,199,65,114,67,124,43,122,25,121,54,68,
-  48,166,151,132,93,182,22,190,196,254,66,150,20,94,102,65,246,232,174,183,128,119,112,221,37,121,131,191,185,28,11,79,29,81,172,222,23,177,58,18,
-  145,140,247,82,50,95,155,167,153,76,176,89,234,167,232,244,108,160,43,75,234,79,117,240,92,117,115,253,230,184,108,73,206,206,77,22,74,79,67,59,
-  89,167,164,159,42,107,151,244,77,177,162,117,76,83,101,232,133,93,25,139,198,253,92,183,75,154,167,66,207,30,161,196,190,59,187,32,76,182,104,124,
-  19,82,49,98,51,122,51,146,63,233,187,76,69,58,95,75,224,124,231,50,182,70,172,54,189,182,99,248,20,49,161,206,222,213,138,187,198,78,79,41,
-  34,92,155,97,111,231,243,88,62,223,77,150,100,91,175,39,121,215,247,189,95,19,178,173,25,238,2,61,197,197,150,20,65,63,138,59,160,246,235,142,
-  171,107,217,7,249,222,26,233,247,17,109,116,142,105,61,126,206,172,69,182,12,81,90,146,109,105,127,227,236,189,173,143,50,86,97,180,115,113,222,212,
-  239,230,152,213,28,153,250,6,13,0,191,138,105,103,251,27,57,242,219,88,229,115,190,12,34,70,103,75,37,83,13,47,219,100,177,110,15,62,196,151,
-  221,207,98,108,75,29,51,141,24,186,215,55,98,222,152,8,202,68,104,208,50,57,84,223,131,71,189,109,77,244,95,14,252,58,40,36,229,72,97,224,
-  121,255,37,152,194,58,126,223,139,228,215,162,151,191,74,114,119,177,131,91,36,177,220,169,210,63,33,122,19,244,232,75,164,28,10,73,73,209,190,143,
-  72,195,97,2,49,114,125,234,82,244,23,222,115,79,148,158,242,212,113,98,76,79,127,68,95,190,87,48,29,229,244,75,205,126,213,122,248,174,219,104,
-  243,243,146,180,54,55,203,165,253,213,147,97,110,38,76,229,192,101,52,91,230,45,191,202,90,101,239,221,49,49,151,79,177,204,153,137,45,121,219,220,
-  141,246,67,4,188,228,99,138,240,55,34,206,191,81,132,207,76,24,97,111,225,142,208,169,237,145,214,190,160,172,126,70,218,248,150,7,166,137,116,114,
-  230,159,24,59,111,60,32,153,143,131,73,117,83,76,164,37,113,124,244,30,224,117,211,36,95,217,198,173,118,17,96,223,159,162,61,199,42,170,126,255,
-  216,52,65,204,253,36,185,128,183,202,220,43,115,252,1,222,51,211,164,13,155,162,234,189,91,247,179,208,48,225,55,253,220,245,57,204,70,60,23,229,
-  110,212,239,8,240,167,121,19,123,25,239,55,33,228,220,105,99,202,108,67,110,0,252,131,181,105,95,220,190,233,83,138,234,15,244,166,233,91,194,108,
-  249,131,206,234,156,121,145,193,79,206,159,95,232,148,206,34,89,29,233,44,210,239,165,81,14,224,187,140,126,150,249,137,190,32,152,203,242,86,38,140,
-  12,159,58,49,195,84,108,41,255,2,213,88,189,142,211,64,16,254,214,78,136,195,143,125,199,37,185,139,68,140,4,28,18,197,137,138,2,241,8,169,
-  16,79,64,135,161,186,39,160,60,186,19,13,136,226,132,144,72,133,210,210,208,17,58,158,128,50,79,98,118,103,98,123,236,245,230,236,228,224,160,153,
-  140,102,190,157,157,159,221,153,117,128,137,10,131,16,115,244,177,3,15,187,0,158,40,165,169,145,3,175,212,24,172,5,62,98,16,216,152,16,95,113,
-  75,243,245,22,226,149,100,15,195,90,121,101,175,14,219,169,211,22,62,212,105,11,31,98,167,15,213,184,10,223,70,154,38,100,255,45,10,121,34,172,
-  173,227,203,171,140,181,0,159,112,168,127,141,36,182,40,112,3,251,45,228,54,237,35,66,228,3,71,68,167,68,151,68,83,162,19,21,249,67,173,189,
-  162,109,70,68,167,232,106,202,187,76,148,145,164,36,95,162,155,231,231,129,218,117,242,192,88,13,43,18,83,211,38,107,221,54,139,120,93,187,72,190,
-  191,138,46,17,81,155,12,12,87,17,113,164,169,142,8,37,155,83,146,115,54,18,157,135,77,227,173,122,219,62,222,177,26,109,104,179,143,25,197,187,
-  200,107,61,212,241,118,243,106,74,155,89,101,13,93,16,157,53,174,114,15,7,154,191,173,246,27,226,155,158,1,59,246,170,157,17,220,177,203,115,158,
-  138,12,184,78,56,219,108,123,206,185,15,184,206,33,203,229,109,101,201,161,58,112,88,27,214,70,186,46,183,129,142,104,64,85,30,248,35,205,251,84,
-  95,207,55,49,122,36,247,3,19,139,71,121,240,252,88,99,60,194,244,40,15,61,170,184,71,103,160,71,81,247,176,29,102,73,124,250,223,96,124,175,
-  136,171,227,213,97,150,43,76,161,141,86,54,141,124,162,140,124,74,153,63,66,39,215,234,42,232,74,37,89,69,168,171,20,218,35,242,231,68,104,147,
-  138,214,224,25,227,229,152,170,214,172,186,56,140,185,245,161,166,61,101,38,230,223,219,247,95,195,152,202,154,137,127,134,65,67,155,172,61,17,103,227,
-  223,137,49,17,90,70,70,132,225,90,103,158,251,29,131,244,20,157,82,37,145,217,121,200,206,176,87,177,179,70,238,93,142,188,227,219,114,186,197,126,
-  118,211,185,27,100,183,158,179,20,34,91,37,179,202,125,224,39,189,33,37,190,156,249,172,99,196,165,29,37,94,98,228,90,23,70,218,97,31,170,200,
-  184,38,198,42,50,118,70,180,30,147,10,228,54,118,108,207,23,116,179,158,211,205,146,254,219,185,229,60,72,140,109,141,43,126,49,190,53,243,159,207,
-  9,159,135,245,72,174,81,147,58,54,193,240,12,178,145,76,217,243,148,238,175,241,109,164,241,131,107,129,117,66,174,98,95,221,215,185,183,79,142,137,
-  43,46,221,2,121,167,92,114,150,176,214,37,151,243,142,123,14,79,189,4,252,74,145,247,168,147,247,174,72,116,227,105,105,98,86,181,246,172,172,215,
-  2,95,112,115,75,11,159,245,27,109,59,11,114,166,184,187,183,175,138,110,236,81,55,54,52,34,202,95,43,252,82,93,224,158,126,129,166,24,40,147,
-  213,129,10,240,140,190,46,249,205,89,207,203,23,184,235,91,18,56,206,191,88,99,199,42,224,84,124,213,154,175,128,58,155,197,43,125,7,239,113,87,
-  215,159,229,41,204,151,245,67,250,166,54,124,19,234,198,47,169,171,216,124,61,13,8,51,106,96,25,132,204,248,95,232,159,203,27,59,229,85,235,120,
-  224,155,88,219,124,213,217,70,171,94,235,85,192,75,236,181,94,219,124,119,59,162,230,49,54,241,208,222,253,114,179,17,82,116,59,127,76,66,111,242,
-  146,220,229,201,136,240,193,57,146,89,94,145,192,178,115,222,237,43,239,168,168,255,40,234,231,33,245,46,195,63,198,56,104,126,163,47,214,242,230,177,
-  84,119,255,209,234,84,172,219,197,124,125,151,173,121,130,247,175,183,221,171,248,151,166,219,106,213,66,252,195,51,163,9,242,166,229,190,51,241,239,16,
-  219,57,169,248,96,166,213,29,108,115,155,222,233,25,23,210,11,89,209,100,52,244,41,77,109,215,100,145,115,237,5,77,103,158,53,143,180,60,180,248,
-  242,44,59,22,107,63,208,255,177,199,98,98,218,90,233,195,92,104,205,220,4,190,231,187,151,231,227,169,176,105,211,185,208,206,43,72,142,241,55,99,
-  96,96,98,16,100,144,131,146,167,25,56,25,24,192,108,6,6,94,6,113,32,249,128,65,24,46,187,22,46,11,19,233,71,82,191,157,65,18,69,4,
-  23,155,1,104,162,40,92,100,41,3,31,1,245,184,205,97,103,144,0,234,6,153,32,64,148,122,136,11,33,226,133,24,238,129,136,7,99,248,209,20,
-  73,101,44,216,4,83,52,55,32,139,224,98,67,194,19,38,226,141,228,107,92,234,99,145,92,11,115,167,24,138,136,0,84,189,23,80,134,15,69,92,
-  28,40,206,199,144,201,192,199,193,192,208,206,192,8,245,251,22,6,126,160,168,28,131,46,88,132,31,76,146,163,230,18,88,13,3,67,49,88,124,34,
-  88,252,32,216,181,216,197,247,224,16,151,194,16,151,194,161,178,130,68,27,117,24,85,193,226,236,96,145,66,176,108,63,152,189,31,40,11,0,
-};
-static const LChunk level4_chunks[3] = {
-  {0,0,18720,540.0f,13380.0f,-1000000000.0f,1000000000.0f,1290,1000,1000,66,1},
-  {1290,1000,426720,13290.0f,23229.0f,-1000000000.0f,1000000000.0f,989,1000,1000,66,1},
-  {2279,2000,742560,23160.0f,25710.0f,-1000000000.0f,1000000000.0f,199,126,126,66,1},
-};
-static const LevelEvent level4_events[20] = {
-  {2085,135,2,5,0,0,0,0,0},
-  {2085,105,1,1,144,0,183,0,500},
-  {2085,75,1,0,173,0,252,0,500},
-  {4245,315,2,1,0,0,0,0,0},
-  {4245,285,1,1,84,0,49,0,500},
-  {4245,255,1,0,198,0,89,0,500},
-  {8055,255,2,0,0,0,0,0,0},
-  {9015,345,2,1,0,0,0,0,0},
-  {9015,315,1,1,0,0,0,0,500},
-  {9015,285,1,0,0,0,0,0,500},
-  {13793,275,2,5,0,0,0,0,0},
-  {13793,245,1,0,93,0,77,0,500},
-  {13793,215,1,1,39,1,28,0,500},
-  {17985,555,3,1,0,0,0,0,0},
-  {17985,525,2,4,0,0,0,0,0},
-  {17985,495,1,1,54,88,0,0,500},
-  {17985,465,1,0,150,229,19,0,500},
-  {22155,435,1,0,243,18,222,0,500},
-  {22155,405,1,1,110,16,100,0,500},
-  {22155,375,3,0,0,0,0,0,0},
-};
-static const uint8_t level5_data[2152] = {
-  181,88,189,143,220,68,20,127,179,62,251,28,41,241,93,114,100,33,210,173,87,20,73,21,139,6,170,19,52,73,133,69,65,66,19,68,131,104,88,81,
-  32,104,34,42,58,86,169,82,37,161,0,81,89,84,169,82,240,7,172,16,69,170,8,168,168,86,169,174,138,162,252,1,206,204,111,60,246,155,47,223,
-  94,110,105,70,179,239,253,222,247,204,123,227,37,218,163,130,74,170,40,37,146,251,76,174,31,211,129,164,76,232,34,237,99,213,123,146,212,203,221,222,
-  80,62,160,115,14,229,237,158,98,239,15,104,234,32,111,75,46,209,183,116,169,167,92,144,18,28,99,232,223,5,245,16,53,84,228,68,43,18,114,255,
-  138,174,116,58,109,217,37,48,13,48,255,2,83,81,130,72,39,137,193,72,138,0,69,148,145,120,181,15,68,95,209,91,147,144,135,143,193,253,205,225,
-  218,26,142,129,249,207,195,60,5,125,38,148,159,71,66,249,249,141,184,98,113,75,90,203,26,145,69,9,103,140,232,190,195,229,20,179,186,182,124,205,
-  37,181,200,219,12,152,79,24,102,151,222,233,226,53,200,53,144,45,50,252,30,67,222,71,92,188,238,43,32,215,64,94,100,200,5,42,82,203,138,168,
-  90,168,149,87,71,114,119,192,21,224,118,149,34,250,169,63,165,246,186,164,121,175,217,61,177,241,188,213,240,193,183,94,195,250,96,119,176,226,158,171,
-  225,70,216,118,23,64,46,129,252,3,200,61,121,215,30,6,238,221,167,242,46,28,130,238,175,55,165,182,67,137,207,228,47,127,157,74,61,115,202,35,
-  220,137,244,97,46,165,53,101,15,158,84,88,107,185,150,114,45,144,219,2,49,22,226,23,69,73,84,230,213,42,35,77,74,32,21,69,16,143,229,179,
-  46,10,123,85,17,93,15,86,71,103,198,220,253,175,35,24,117,198,226,119,223,191,245,67,63,57,169,58,161,187,63,1,101,87,231,129,35,119,66,61,
-  97,56,57,220,226,20,113,229,86,44,53,242,80,161,178,186,190,90,74,69,253,176,207,127,65,159,247,39,33,233,145,63,192,255,191,224,249,35,212,200,
-  120,149,9,215,207,84,196,250,149,223,111,237,206,112,219,235,12,252,230,254,13,31,94,194,207,119,89,71,210,253,164,97,62,132,251,140,169,99,211,223,
-  199,242,132,105,242,212,243,231,103,121,106,201,235,108,241,121,177,118,108,105,204,121,244,132,75,29,189,2,230,72,168,179,61,195,218,226,156,155,190,39,
-  200,244,61,183,67,242,110,31,138,226,8,125,245,14,164,238,177,254,118,204,60,215,58,117,7,14,247,94,163,51,214,129,185,245,199,145,10,170,155,98,
-  219,229,107,27,173,136,59,163,119,197,185,83,68,103,87,100,229,213,98,184,215,190,221,130,254,65,173,85,30,246,3,62,235,245,46,124,120,0,31,254,
-  100,62,232,174,114,149,121,251,59,184,119,129,188,3,41,63,34,46,171,167,179,27,99,105,197,216,178,51,127,236,157,198,193,186,159,73,67,191,33,226,
-  245,50,251,47,61,15,31,192,171,39,240,234,57,243,74,89,36,76,8,162,29,153,123,57,127,233,154,195,117,51,230,123,107,219,82,214,167,244,62,180,
-  125,36,53,231,209,219,250,225,68,101,248,87,88,185,160,198,35,189,144,182,108,204,51,88,127,1,235,115,224,127,20,246,57,159,210,45,216,250,130,217,
-  122,2,169,103,144,18,144,138,229,228,6,172,63,71,173,85,126,202,142,162,145,122,47,171,223,87,173,161,52,177,235,222,160,163,26,174,218,75,140,160,
-  126,142,164,9,219,247,244,69,79,55,181,91,48,110,205,164,106,202,216,94,191,37,204,68,40,131,211,179,232,230,108,156,187,12,114,205,76,28,94,98,
-  155,203,26,110,19,209,172,35,106,49,209,214,148,230,92,63,33,70,134,20,49,187,124,106,135,173,136,45,231,164,236,222,0,97,169,178,243,199,167,235,
-  28,242,254,191,93,89,238,149,191,95,33,162,152,207,203,136,93,183,250,116,10,89,46,181,66,173,141,206,84,196,61,89,71,180,233,153,21,194,15,154,
-  215,163,154,99,25,110,152,134,102,84,131,31,233,130,201,46,54,176,94,123,26,42,166,161,26,213,80,71,50,227,222,2,10,202,242,119,99,154,199,61,
-  172,70,207,118,61,202,93,68,184,85,231,97,170,187,101,30,247,147,235,225,47,237,205,253,60,139,172,141,153,71,49,132,111,159,240,9,153,143,104,110,
-  70,185,203,209,136,182,37,165,51,195,191,151,67,178,155,158,234,229,168,111,227,241,174,70,185,182,63,39,33,11,96,246,163,245,170,49,163,99,211,100,
-  179,27,244,38,39,127,147,44,185,235,180,59,159,250,165,164,40,223,203,76,94,197,151,118,214,127,111,182,148,224,37,159,226,172,102,66,81,212,196,252,
-  191,247,45,222,30,230,159,141,100,130,47,122,116,123,133,169,177,46,186,88,50,237,231,121,237,39,89,111,21,141,81,49,17,93,19,123,249,246,246,218,
-  174,218,19,235,123,103,211,185,238,98,201,116,31,147,154,53,119,38,206,166,249,208,250,150,87,222,78,182,156,141,97,175,110,189,250,38,93,225,191,23,
-  155,158,118,113,197,101,91,124,5,156,214,186,202,15,222,120,57,177,127,165,108,140,214,175,255,71,122,243,189,249,103,169,70,116,156,94,195,186,236,99,
-  27,234,220,126,230,133,140,253,32,81,121,62,72,102,206,45,206,208,141,147,132,186,92,169,255,51,113,227,128,207,18,155,210,66,74,226,83,70,23,175,
-  1,173,87,61,111,19,65,16,125,187,235,179,76,112,46,137,1,71,9,142,141,32,162,9,22,85,42,36,36,202,200,101,36,16,5,45,81,36,26,10,
-  20,33,122,76,129,68,65,193,47,112,153,42,52,180,184,164,74,129,168,64,242,31,32,21,21,66,102,231,237,125,127,229,28,104,158,70,111,231,102,231,
-  205,206,236,221,1,115,52,85,31,67,139,136,109,19,218,115,242,195,132,61,130,93,180,140,185,12,28,194,71,204,11,166,25,211,160,167,73,243,195,92,
-  228,104,119,147,203,132,182,177,56,99,156,41,252,86,200,207,136,105,198,120,244,71,154,207,68,54,229,153,132,182,209,161,210,106,141,78,221,136,25,230,
-  53,22,105,41,179,23,208,168,75,52,170,243,117,21,156,163,206,105,52,185,115,84,245,206,113,81,251,72,73,14,143,85,211,226,61,226,12,94,75,118,
-  244,162,220,230,208,214,127,203,174,54,241,1,219,232,88,188,101,237,83,165,173,231,145,146,104,39,74,234,224,108,199,47,196,152,26,140,250,63,140,167,
-  68,175,223,74,243,231,219,75,120,160,6,184,90,195,179,107,43,169,88,73,159,29,162,44,255,30,27,173,214,130,62,101,241,55,109,254,3,52,22,204,
-  31,216,229,142,219,170,87,211,127,75,73,15,216,110,113,121,86,120,78,49,64,217,106,11,191,216,75,223,216,87,159,32,218,139,61,125,187,139,194,106,
-  233,234,188,114,117,75,165,87,203,24,81,228,183,86,75,43,112,18,244,134,116,254,153,146,206,95,214,130,59,196,61,226,129,110,232,62,243,17,70,252,
-  15,180,214,18,231,54,156,237,248,126,192,79,233,57,38,62,178,167,12,60,212,189,232,169,24,147,79,57,187,205,93,58,248,161,196,127,89,203,89,236,
-  16,207,148,212,115,207,218,125,42,66,160,46,25,39,210,98,168,197,80,139,161,22,67,45,134,90,76,7,175,216,135,79,152,225,208,102,216,96,206,233,
-  142,205,50,192,83,102,117,100,247,237,6,26,39,240,75,123,184,29,84,96,68,188,110,119,233,148,118,148,171,237,79,244,45,63,163,157,244,252,23,102,
-  138,170,217,159,208,231,144,213,136,243,196,5,125,234,48,99,212,189,139,198,118,202,16,157,169,174,53,197,253,160,230,117,230,125,8,159,111,82,223,100,
-  249,248,212,254,204,229,212,100,222,219,181,118,159,84,238,62,173,92,173,115,166,238,52,103,53,53,246,207,241,156,87,174,186,249,90,148,73,206,102,117,
-  86,174,86,47,114,189,84,125,83,197,145,179,183,183,66,158,113,183,95,121,15,72,38,245,222,14,147,204,44,135,95,38,73,159,120,70,234,241,51,118,
-  248,162,79,141,162,121,92,52,195,139,213,193,221,78,85,239,205,162,202,215,57,11,185,157,110,162,106,66,229,77,186,130,102,38,154,198,26,150,176,140,
-  245,212,247,137,227,179,53,244,88,147,38,239,249,102,16,173,200,211,49,130,192,21,92,11,108,185,79,60,86,187,89,26,7,184,171,54,16,222,225,238,
-  203,33,140,211,141,98,174,209,39,190,147,251,209,247,176,188,149,86,136,110,199,240,47,70,222,188,43,196,56,183,54,85,119,2,198,213,231,62,122,25,
-  93,14,195,254,241,10,181,103,49,84,189,143,75,149,62,221,66,159,221,136,73,86,47,188,237,93,103,126,197,134,229,215,19,207,174,103,226,172,218,12,
-  165,99,5,63,39,236,48,126,214,230,237,29,249,8,190,38,190,73,61,235,112,200,89,75,51,62,25,47,96,58,54,154,220,243,249,103,157,22,217,183,
-  200,22,189,249,213,48,183,100,245,228,236,128,231,92,253,194,154,28,179,62,191,89,153,164,231,126,34,90,210,118,17,178,171,225,164,135,253,147,237,210,
-  49,59,237,148,123,157,113,223,1,187,241,144,147,229,42,57,230,255,81,104,123,170,33,223,54,216,204,85,163,133,151,182,74,221,130,42,9,126,36,190,
-  37,110,38,240,25,241,6,177,135,59,182,102,146,155,225,83,58,58,139,119,204,240,152,25,126,183,53,209,226,211,248,11,
-};
-static const LChunk level5_chunks[2] = {
-  {0,0,9568,254.0f,16530.0f,-1000000000.0f,1000000000.0f,1241,1000,1000,66,1},
-  {1241,1000,527520,16440.0f,24752.0f,-1000000000.0f,1000000000.0f,911,691,691,66,1},
-};
-static const LevelEvent level5_events[13] = {
-  {3465,375,2,5,0,0,0,0,0},
-  {3555,345,1,0,225,0,117,0,500},
-  {3555,315,1,1,155,0,75,0,500},
-  {5745,465,1,0,255,0,55,0,4000},
-  {7035,675,1,0,0,0,0,0,200},
-  {7035,645,1,1,0,0,0,0,200},
-  {7125,255,2,1,0,0,0,0,0},
-  {14205,285,2,5,0,0,0,0,0},
-  {17595,375,2,2,0,0,0,0,0},
-  {21465,165,2,1,0,0,0,0,0},
-  {21555,135,1,0,238,0,82,0,500},
-  {21555,105,1,1,205,0,79,0,500},
-  {21945,135,1,0,240,0,82,0,10000},
-};
-static const uint8_t level6_data[2792] = {
-  229,88,189,110,19,65,16,158,179,147,179,99,133,179,147,24,147,64,98,164,132,164,194,101,170,164,163,179,69,69,135,132,104,99,26,148,130,2,33,90,
-  44,10,68,65,129,16,45,166,227,37,184,146,154,7,48,29,15,129,204,238,204,254,204,254,220,249,76,34,64,208,140,70,179,179,115,223,206,204,206,204,
-  30,64,3,186,112,31,6,144,0,192,20,105,27,82,65,115,164,51,164,115,164,123,137,164,39,130,246,161,6,27,144,193,21,184,6,29,228,73,34,247,
-  74,11,19,101,173,154,29,189,87,90,211,18,142,71,91,94,206,218,22,244,140,100,132,118,114,102,109,128,123,201,230,73,98,237,204,153,253,51,97,195,
-  181,217,128,109,131,141,163,250,132,146,59,104,225,16,105,3,233,119,92,253,2,26,91,23,81,181,148,205,49,179,51,67,126,132,250,28,91,145,231,37,
-  18,237,121,238,165,189,132,252,47,245,199,72,67,155,116,222,207,193,233,182,224,170,39,145,209,116,35,123,219,236,234,96,188,50,165,159,43,252,137,247,
-  173,120,164,100,100,179,230,117,161,147,193,10,242,20,157,109,148,164,202,154,148,235,211,77,144,175,193,174,137,35,173,206,84,100,179,102,11,247,118,75,
-  37,77,148,244,152,164,95,248,45,206,203,93,176,80,146,120,18,186,5,99,228,199,202,63,146,127,142,252,67,228,223,34,255,180,242,87,6,222,87,180,
-  159,135,24,151,42,95,127,134,252,3,228,95,33,255,184,194,183,242,210,104,90,36,148,27,53,153,159,43,187,42,79,150,171,9,25,203,192,109,204,201,
-  148,73,98,117,38,95,144,105,101,149,161,250,25,249,125,31,154,91,224,222,196,139,215,192,16,27,201,9,97,17,182,156,221,56,139,77,215,171,34,108,
-  69,117,143,172,149,251,77,87,209,197,126,107,43,107,137,131,45,68,8,42,75,233,110,134,118,194,58,246,194,179,38,235,252,77,227,49,191,154,105,250,
-  196,232,100,120,162,78,68,231,61,28,48,59,61,68,178,90,151,168,100,158,223,77,118,12,102,129,80,201,125,73,2,161,4,224,27,108,53,139,247,74,
-  204,174,60,103,113,119,119,165,21,48,216,58,16,230,161,237,185,220,38,192,163,2,132,220,130,238,47,210,27,60,238,118,215,101,157,17,224,99,169,199,
-  184,100,230,244,65,223,75,58,142,101,22,66,201,92,157,58,142,240,215,176,145,7,76,134,215,171,89,184,8,182,42,103,47,175,87,35,236,14,116,223,
-  127,204,119,154,213,98,93,221,39,85,188,17,102,78,88,183,199,136,147,230,144,27,96,113,46,235,109,94,133,170,156,212,189,71,113,155,121,80,195,171,
-  231,82,120,118,163,153,240,154,233,202,67,205,34,201,20,246,57,30,37,111,97,230,116,43,88,208,179,98,219,189,131,136,45,171,227,172,85,199,41,139,
-  240,215,249,36,41,53,235,73,188,7,173,54,139,59,99,155,249,112,200,230,82,217,83,50,103,198,14,123,7,237,122,17,153,129,123,134,159,50,228,242,
-  20,238,233,166,236,77,65,254,223,48,125,129,211,117,236,74,155,11,38,237,115,88,139,236,213,24,184,15,239,9,77,23,231,140,33,153,70,145,0,28,
-  163,253,99,220,75,211,26,105,126,133,29,117,162,216,42,71,27,95,173,102,147,251,150,42,137,149,235,57,234,28,37,50,34,157,200,123,208,210,14,124,
-  16,58,53,120,45,244,215,11,123,61,143,245,72,101,102,6,167,202,159,19,140,230,132,121,76,98,38,29,159,38,98,215,8,79,71,185,244,78,104,158,
-  122,58,169,169,141,195,146,140,114,53,253,57,39,133,151,112,40,50,55,21,90,0,71,73,91,100,254,255,204,211,75,150,170,10,231,231,234,141,73,146,
-  6,122,175,97,38,171,248,106,223,188,175,105,181,97,86,231,70,167,43,222,98,7,226,109,206,53,73,103,224,105,22,127,165,28,91,209,137,232,229,181,
-  151,216,87,216,191,194,39,234,143,132,203,15,84,230,251,94,162,187,19,95,213,255,112,102,65,92,104,175,140,206,166,136,224,62,214,219,69,154,203,71,
-  144,176,93,86,4,37,181,51,149,174,84,151,227,249,240,53,247,59,98,71,25,190,108,236,236,157,106,137,186,122,32,238,224,98,205,191,227,246,241,247,
-  233,12,150,139,187,237,29,174,92,207,174,182,115,13,48,87,105,117,77,116,190,150,144,28,9,47,89,201,159,195,92,158,33,186,186,38,209,219,237,175,
-  246,35,149,89,247,71,29,199,38,188,129,91,162,151,46,214,4,161,185,239,229,42,143,184,157,24,41,91,98,255,51,121,7,63,67,77,255,223,38,173,
-  182,112,218,236,154,191,160,244,34,214,51,152,158,124,244,191,184,20,126,2,205,88,189,114,211,64,16,222,147,28,69,120,140,236,4,199,216,1,187,128,
-  33,21,25,42,170,60,1,113,73,5,21,37,46,169,128,161,143,203,20,12,195,64,69,65,74,158,194,45,47,225,103,224,1,204,254,232,162,149,78,58,
-  75,73,236,164,217,185,217,253,246,247,86,103,239,2,76,33,2,128,99,166,93,164,19,8,96,47,165,0,31,224,30,210,93,24,34,71,206,153,212,98,
-  30,192,65,142,99,249,83,48,57,203,0,239,17,43,210,14,220,135,135,176,159,34,95,162,229,9,83,40,88,30,20,108,158,33,15,96,198,150,253,145,
-  23,163,2,248,205,186,115,214,157,177,214,250,220,117,214,110,60,19,88,66,18,3,172,216,230,11,51,186,68,94,48,103,206,150,215,251,42,122,57,40,
-  212,255,21,140,226,60,103,14,137,167,74,229,245,145,234,105,100,143,107,158,40,191,54,242,37,211,61,206,104,1,113,138,4,188,181,81,108,241,127,144,
-  99,249,83,180,162,249,214,139,238,1,145,22,59,193,198,76,253,96,111,103,193,244,31,140,210,120,34,246,50,100,100,164,34,25,166,186,212,159,0,143,
-  204,209,165,148,226,25,230,42,220,69,59,66,63,33,77,248,172,41,73,143,241,12,124,62,84,103,174,118,108,43,147,197,246,83,89,120,75,248,216,246,
-  252,23,148,158,50,255,151,227,5,224,249,101,238,17,71,222,81,113,118,42,190,26,249,82,30,115,149,130,244,188,96,143,217,77,5,169,133,242,126,147,
-  218,70,140,105,59,186,125,230,31,194,103,172,94,203,57,75,111,12,153,3,112,142,185,136,157,129,226,196,185,106,187,89,136,157,236,222,99,206,101,144,
-  251,234,179,243,33,159,91,105,70,228,189,205,119,42,111,69,222,151,235,69,188,23,123,204,118,154,239,5,0,167,50,19,231,69,26,194,15,120,154,86,
-  128,44,236,132,132,39,250,14,109,80,60,65,72,214,136,78,17,69,210,32,22,41,189,21,196,31,27,162,39,38,228,90,5,28,195,46,199,176,43,248,
-  32,195,19,103,108,136,158,152,160,17,94,114,105,170,117,53,188,72,93,173,181,248,118,25,70,91,184,62,94,234,176,29,173,58,120,65,230,187,226,38,
-  241,26,41,55,114,187,120,251,77,53,211,186,128,157,152,110,33,226,222,203,122,105,115,30,245,141,235,47,215,175,181,105,188,32,221,140,234,220,145,232,
-  254,133,46,158,191,193,147,43,104,221,20,126,198,175,183,206,72,240,245,43,112,87,240,61,206,37,217,138,214,182,114,47,188,243,113,217,109,222,20,94,
-  58,97,19,94,52,70,235,10,114,5,117,241,77,237,95,23,223,225,154,236,231,180,170,240,242,237,147,214,62,124,199,255,33,157,134,90,147,141,227,245,
-  155,80,223,126,21,82,191,120,132,239,243,75,216,110,232,165,175,126,77,218,37,90,186,67,170,60,94,45,206,58,90,85,117,112,163,170,95,49,66,14,
-  56,134,120,75,49,184,200,31,252,139,211,44,230,219,67,186,191,80,117,44,251,49,98,71,127,23,26,35,90,218,23,222,87,72,147,38,209,57,83,209,
-  197,105,194,240,236,96,120,118,48,132,39,58,133,176,69,200,29,158,79,101,126,145,255,75,36,197,249,162,53,64,105,223,144,148,232,2,105,236,76,91,
-  118,135,224,206,98,50,115,233,25,106,166,246,3,238,244,180,98,58,54,17,103,77,244,13,211,143,38,42,236,118,100,167,36,28,153,172,199,166,124,103,
-  210,85,94,124,54,245,78,105,130,51,105,150,203,185,119,179,36,19,253,9,123,191,72,39,229,200,51,33,150,123,111,179,247,190,227,81,246,78,213,187,
-  41,127,238,218,175,47,247,188,101,189,77,58,43,221,180,88,142,204,194,43,239,68,188,254,54,53,77,210,206,57,69,191,61,239,134,48,73,231,116,125,
-  191,139,52,30,159,223,37,74,123,222,61,97,82,185,1,91,174,181,223,171,168,85,2,175,49,175,128,183,10,73,165,119,201,232,43,60,107,236,119,130,
-  50,250,237,56,50,221,248,110,156,143,249,253,201,115,40,139,245,186,148,105,18,22,57,166,86,142,252,14,135,69,78,93,221,165,163,187,244,232,2,231,
-  88,228,212,245,213,44,71,201,235,63,221,86,75,110,19,65,16,173,182,241,196,177,194,216,16,199,12,200,216,18,159,176,193,75,54,36,176,1,54,12,
-  27,54,72,73,54,136,85,156,11,32,46,128,79,128,184,0,230,10,72,108,125,6,14,224,147,152,234,215,51,227,158,169,238,201,76,236,176,96,83,106,
-  189,174,126,245,186,170,250,67,20,80,151,136,14,85,183,77,52,37,69,35,11,241,141,137,86,20,54,139,136,127,45,209,68,248,79,132,191,193,13,178,
-  128,127,30,209,254,107,100,179,88,87,223,203,168,144,177,226,90,157,67,29,241,176,34,195,82,48,44,75,213,198,194,63,22,153,113,143,211,157,230,17,
-  85,226,63,17,254,147,82,255,42,85,243,173,141,197,218,248,218,170,86,183,67,234,213,168,74,135,252,219,125,85,57,53,219,234,195,237,239,107,64,223,
-  233,17,181,193,175,119,20,176,237,194,46,129,172,48,190,175,2,102,107,208,45,182,207,104,151,145,226,152,104,159,14,50,132,245,103,62,182,149,81,204,
-  218,5,240,37,144,117,68,162,115,102,53,107,67,186,73,119,168,151,240,76,224,111,51,204,129,44,18,229,129,83,121,170,115,176,5,61,41,219,14,69,
-  60,158,193,127,10,207,24,86,114,174,224,99,120,126,100,60,125,236,171,147,112,154,251,205,199,224,174,72,170,33,205,204,122,85,76,45,168,10,25,239,
-  178,61,229,10,221,166,99,140,129,115,159,24,229,191,232,46,221,19,120,4,164,33,60,63,37,249,143,193,188,30,191,4,255,115,172,26,101,86,101,86,
-  214,81,230,95,103,248,148,99,133,77,115,186,117,101,117,111,155,204,24,13,166,214,127,88,201,177,35,150,93,29,29,203,140,247,56,214,152,213,229,59,
-  225,32,231,31,209,43,48,239,64,201,99,216,143,236,53,4,255,235,68,207,204,82,149,214,221,165,74,102,120,228,193,47,196,46,136,158,102,29,18,193,
-  14,147,236,189,193,236,19,104,219,133,253,192,115,189,220,41,251,130,40,103,152,125,1,59,134,85,164,123,230,140,66,165,113,109,199,176,138,237,111,79,
-  173,135,30,252,107,105,230,243,25,54,29,98,144,247,92,131,116,95,186,111,131,196,191,155,249,248,120,6,204,51,230,155,202,237,211,209,231,250,198,158,
-  240,49,121,211,250,31,162,199,66,156,157,86,83,158,241,145,251,212,115,149,181,197,29,219,206,143,11,231,81,97,86,89,158,206,241,194,90,181,204,214,
-  18,253,164,253,146,85,155,196,42,236,232,191,137,85,55,135,51,177,202,188,23,115,139,225,162,148,193,30,79,75,217,102,22,231,187,13,85,213,209,51,
-  183,24,236,90,212,213,227,227,41,215,51,23,61,176,168,185,139,186,209,79,232,65,182,47,141,4,184,73,162,75,16,115,255,172,17,90,223,33,252,34,
-  23,241,252,127,163,228,167,193,19,111,153,35,93,101,144,226,56,189,21,237,89,249,14,250,78,211,185,147,191,135,151,46,204,113,74,205,178,199,220,10,
-  139,106,7,78,181,93,235,151,82,79,109,27,55,255,224,90,212,154,23,191,74,110,229,237,225,86,219,135,218,206,37,106,125,253,80,166,54,64,110,163,
-  173,170,141,240,14,6,222,232,190,31,102,241,30,38,126,225,93,252,233,255,237,106,154,37,155,206,109,158,173,252,47,157,253,162,149,249,69,87,83,88,
-  109,215,173,196,127,8,85,141,148,25,62,10,246,27,254,15,159,49,62,129,61,98,59,96,164,175,52,162,237,17,219,191,
-};
-static const LChunk level6_chunks[3] = {
-  {0,0,13920,390.0f,10440.0f,-1000000000.0f,1000000000.0f,1060,1000,1000,66,1},
-  {1060,1000,332640,10350.0f,17880.0f,-1000000000.0f,1000000000.0f,950,1000,1000,66,1},
-  {2010,2000,571680,17820.0f,26572.0f,-1000000000.0f,1000000000.0f,782,767,767,66,1},
-};
-static const LevelEvent level6_events[46] = {
-  {1485,315,1,0,254,0,212,0,5100},
-  {1485,285,1,1,209,6,197,0,4900},
-  {3195,285,2,5,0,0,0,0,0},
-  {3375,435,1,0,0,248,82,0,0},
-  {3375,405,1,1,7,176,74,0,0},
-  {4875,345,2,1,0,0,0,0,0},
-  {4935,375,1,0,255,7,208,0,0},
-  {4935,345,1,1,153,0,128,0,0},
-  {6615,255,2,5,0,0,0,0,0},
-  {6735,345,1,0,0,78,250,0,0},
-  {6735,315,1,1,0,0,0,0,500},
-  {7561,345,1,0,3,255,2,0,0},
-  {8403,345,1,0,0,99,255,0,0},
-  {9145,345,1,0,0,255,29,0,0},
-  {10065,345,2,1,0,0,0,0,0},
-  {10125,375,1,0,86,64,255,0,0},
-  {10125,345,1,1,53,5,236,0,0},
-  {11385,345,1,0,254,0,181,0,10000},
-  {11385,315,1,1,222,11,179,0,10000},
-  {13425,465,2,5,0,0,0,0,0},
-  {13455,465,3,0,0,0,0,0,0},
-  {13455,435,1,0,255,0,40,0,0},
-  {13455,405,1,1,0,0,0,0,0},
-  {15375,465,1,0,207,0,255,0,4000},
-  {15375,435,1,1,137,0,158,0,4000},
-  {15375,375,2,1,0,0,0,0,0},
-  {16725,465,2,4,0,0,0,0,0},
-  {16815,495,1,0,0,83,255,0,0},
-  {16815,465,1,1,0,0,0,0,0},
-  {16845,495,1,0,179,0,253,0,2000},
-  {17625,525,1,0,255,0,136,0,2000},
-  {18405,495,1,0,255,11,3,0,2000},
-  {19155,465,1,0,226,191,0,0,2000},
-  {19935,465,1,0,63,248,0,0,2000},
-  {20085,375,2,1,0,0,0,0,0},
-  {20655,465,1,0,0,255,215,0,2000},
-  {20805,345,2,5,0,0,0,0,0},
-  {21375,435,1,0,0,127,255,0,2000},
-  {22125,435,1,0,131,3,255,0,2000},
-  {22845,435,1,0,255,9,170,0,2000},
-  {23385,375,2,2,0,0,0,0,0},
-  {23565,435,1,0,253,72,0,0,2000},
-  {24315,435,1,0,118,250,0,0,2000},
-  {25035,435,1,0,0,239,182,0,2000},
-  {25125,405,2,1,0,0,0,0,0},
-  {25725,435,1,0,11,50,146,0,2100},
-};
-static const uint8_t level7_data[4988] = {
-  181,88,189,110,36,69,16,174,153,94,143,103,79,235,221,245,223,226,181,172,177,4,62,2,96,133,44,116,217,69,7,9,140,4,193,5,4,16,152,8,
-  38,32,224,9,78,186,192,19,145,32,116,130,24,93,128,120,128,123,0,71,60,192,69,68,247,12,126,0,168,250,250,127,122,102,189,107,32,216,86,171,
-  126,190,170,174,174,170,174,29,162,25,77,169,162,207,232,144,136,222,162,49,175,43,218,225,181,96,78,5,238,99,170,105,170,136,26,94,43,250,149,150,
-  36,251,140,215,154,215,79,32,115,138,245,204,173,194,253,136,14,24,97,197,20,2,37,220,63,55,118,101,189,162,71,144,127,202,251,207,29,26,27,164,
-  150,84,41,86,222,225,253,75,80,94,179,117,209,202,193,205,75,161,231,247,164,16,61,164,163,14,93,123,152,202,111,75,23,202,156,126,160,163,114,154,
-  208,167,18,201,114,158,208,75,208,23,9,61,7,253,172,7,95,252,79,241,15,224,213,228,95,211,251,34,38,39,138,233,226,155,230,158,96,95,244,224,
-  11,125,242,63,222,136,166,104,238,16,125,219,60,249,134,198,200,189,157,18,121,56,65,6,142,194,12,180,146,207,32,249,37,45,203,152,242,19,215,84,
-  191,140,26,85,38,110,175,80,77,51,248,220,114,21,188,199,22,223,166,159,131,154,58,141,106,234,3,131,153,185,147,182,38,254,153,171,142,144,146,211,
-  126,135,242,26,22,53,253,17,234,93,246,196,184,199,188,126,140,248,107,174,166,235,158,160,189,109,129,240,10,86,250,185,219,104,61,116,182,196,250,194,
-  157,72,184,161,15,210,55,206,157,207,90,126,143,165,44,87,50,110,159,173,28,170,61,236,231,166,99,120,187,83,67,111,169,80,225,158,232,119,62,117,
-  204,213,157,231,34,160,172,64,153,17,95,62,61,137,116,23,4,238,8,220,81,200,5,206,40,196,233,179,165,227,19,250,243,27,159,107,138,28,32,120,
-  50,55,25,34,103,209,149,62,147,147,102,51,151,129,98,101,229,122,105,197,191,67,122,129,125,201,146,71,106,145,220,130,237,240,250,22,196,250,66,36,
-  179,210,116,251,150,222,229,245,254,8,47,224,195,99,227,207,10,90,51,150,34,188,50,225,205,22,184,247,19,67,169,77,86,23,78,94,223,245,119,29,
-  45,125,251,58,103,44,221,190,71,69,47,194,181,67,120,64,187,108,175,4,194,196,233,170,30,93,161,23,153,208,119,65,223,5,125,119,45,61,95,131,
-  227,37,181,238,48,78,122,138,6,119,221,47,143,14,192,103,106,145,91,253,50,7,224,78,238,240,48,69,254,17,47,248,253,206,187,105,220,188,149,62,
-  180,41,60,159,15,232,150,224,46,6,184,57,184,103,91,198,115,219,123,209,241,175,204,124,194,185,148,11,165,160,190,147,254,137,147,190,4,126,11,74,
-  227,242,33,182,213,26,252,162,55,171,245,75,116,195,118,143,121,63,3,154,172,13,214,26,235,10,43,247,137,108,28,213,142,175,26,145,223,81,186,58,
-  198,162,165,160,165,160,165,142,255,179,184,173,207,147,22,61,127,8,109,152,123,119,238,205,156,214,25,71,73,58,216,13,186,196,45,119,176,124,192,219,
-  211,64,114,36,183,153,89,43,220,105,149,182,117,156,196,89,37,248,210,19,165,159,95,96,138,126,31,253,42,164,248,61,209,37,35,230,244,21,191,113,
-  103,61,50,53,34,112,105,222,199,44,210,13,247,7,44,121,142,41,78,40,151,120,205,187,50,155,96,202,180,230,113,66,173,20,115,83,223,10,248,118,
-  18,197,161,223,195,177,196,22,200,54,27,143,37,242,185,189,229,218,228,161,212,218,13,98,254,6,49,223,207,150,107,58,140,151,220,68,198,163,109,215,
-  45,117,31,88,207,173,131,106,210,152,111,96,247,111,216,253,48,91,162,186,119,136,92,7,88,215,57,67,93,139,175,84,152,249,125,248,45,240,249,116,
-  153,200,231,73,141,235,87,123,56,50,228,94,76,149,87,145,173,198,100,197,46,16,60,166,174,226,6,93,171,70,5,249,218,73,187,19,225,141,214,148,
-  113,148,9,53,236,134,200,122,54,168,97,215,251,140,201,10,115,96,17,69,195,210,103,38,151,236,217,83,132,148,98,109,133,214,53,66,99,111,182,35,
-  159,70,178,65,228,107,252,215,120,134,233,55,141,191,238,33,186,159,220,98,102,174,113,251,97,156,189,76,31,247,22,19,90,44,147,119,114,56,213,106,
-  108,246,58,15,227,236,85,238,246,195,106,74,163,209,2,217,203,204,233,91,204,180,241,252,35,177,234,74,86,29,153,92,255,243,202,236,59,152,90,111,
-  204,247,132,238,109,58,43,110,238,186,50,125,38,166,87,78,87,79,209,57,123,245,53,119,97,156,43,243,158,76,59,148,198,188,74,153,67,88,185,73,
-  32,252,54,226,171,163,200,98,45,221,57,61,102,224,137,70,203,22,60,23,201,73,255,0,218,95,124,167,101,175,255,93,138,181,162,50,127,227,74,1,
-  63,11,250,45,239,117,55,190,192,156,46,221,120,30,201,212,248,207,149,106,201,254,8,242,15,6,184,62,43,164,111,203,137,170,164,18,135,235,101,168,
-  35,133,181,19,106,93,219,14,208,153,177,175,34,79,124,134,92,153,211,245,201,19,125,207,231,170,76,135,12,185,191,112,86,200,215,143,177,139,246,125,
-  241,23,73,158,223,133,102,189,74,107,214,106,133,49,84,38,74,136,100,230,223,154,92,217,14,124,109,251,152,67,123,130,28,248,148,243,97,158,208,125,
-  134,143,76,15,196,87,145,30,132,106,141,110,110,40,68,95,224,44,214,219,115,87,5,155,34,164,50,49,166,71,43,76,206,92,195,231,167,124,119,39,
-  9,218,92,116,71,211,141,206,210,152,239,0,6,193,76,134,149,127,251,162,201,179,10,254,235,81,240,31,208,206,21,225,93,135,111,171,238,111,181,233,
-  210,225,205,122,132,33,139,253,19,139,141,64,215,202,48,206,144,221,109,241,183,245,127,61,166,157,31,36,147,111,130,183,175,243,106,119,40,126,78,136,
-  251,188,159,213,237,43,25,118,227,120,175,178,161,47,24,85,240,245,172,66,93,144,249,170,182,71,203,50,253,130,241,15,205,88,49,136,36,85,16,173,
-  223,61,59,219,187,123,219,51,183,59,179,183,131,187,61,137,122,28,203,96,32,6,114,24,25,29,195,69,34,114,156,137,38,203,68,34,6,11,138,24,
-  237,46,70,70,114,30,154,157,203,69,70,6,23,235,114,32,24,136,112,6,98,32,195,69,6,98,32,98,116,140,85,175,250,119,255,223,253,123,102,86,
-  78,48,216,207,108,245,123,85,213,245,171,234,255,106,162,136,46,19,209,54,237,80,70,167,180,194,191,223,165,53,94,111,208,32,161,252,233,57,173,240,
-  239,159,105,141,87,99,6,140,180,172,126,254,59,163,9,184,175,129,123,224,112,79,24,149,121,86,20,175,107,147,69,209,76,244,101,193,213,53,165,51,
-  254,35,102,25,94,223,96,124,183,65,51,5,252,81,157,31,81,175,192,108,210,149,10,107,12,214,75,96,109,130,245,150,131,47,173,172,179,183,226,195,
-  33,252,25,0,249,35,165,188,254,1,249,144,163,212,203,89,171,180,235,89,236,178,149,33,243,92,187,34,223,162,247,160,237,117,104,120,14,58,127,133,
-  206,39,144,140,88,231,165,90,228,187,252,166,190,182,45,142,79,138,8,8,235,101,232,249,11,122,182,141,72,94,13,234,17,214,208,145,87,227,249,57,
-  116,126,8,157,55,161,115,211,136,206,3,232,188,29,204,138,93,122,147,246,130,81,125,135,237,181,27,179,194,93,149,59,98,52,81,7,235,25,199,134,
-  104,223,72,78,94,55,49,145,231,231,117,211,102,209,53,115,57,201,242,223,42,23,73,143,6,166,159,172,231,153,80,125,154,5,36,226,155,236,230,149,
-  36,132,95,108,49,11,216,18,31,154,241,117,201,192,236,4,172,19,235,149,184,213,229,95,83,202,146,35,94,67,79,143,40,142,5,35,113,251,142,35,
-  74,244,54,117,88,254,41,231,169,174,25,178,209,183,168,17,176,26,162,72,52,68,21,13,119,232,249,66,67,208,46,88,177,185,136,93,203,77,59,120,
-  175,141,172,18,201,157,228,34,145,175,35,231,239,133,250,211,180,251,29,196,121,132,117,70,233,154,228,164,172,117,228,8,209,238,80,20,75,45,72,29,
-  205,40,78,4,31,49,126,138,218,244,241,17,240,171,84,226,35,224,69,18,194,75,84,89,191,113,244,95,130,254,141,48,62,5,94,86,246,124,3,158,
-  111,132,114,91,126,239,33,74,145,183,35,101,141,251,248,169,141,70,12,157,177,255,84,119,100,138,12,156,161,150,247,77,187,208,249,144,253,44,245,180,
-  141,125,223,25,226,240,16,111,225,219,106,27,251,84,145,37,134,156,221,201,196,98,84,90,140,107,200,54,217,119,215,157,186,193,49,204,196,183,88,206,
-  187,18,57,130,69,221,23,197,95,20,25,150,83,77,131,156,167,177,250,19,201,158,182,201,103,29,55,178,74,253,99,172,163,16,203,248,172,49,118,100,
-  146,103,209,242,172,118,16,127,248,84,241,138,236,4,240,49,118,95,60,127,92,203,141,58,247,48,175,139,50,175,92,86,88,78,115,125,64,220,140,127,
-  54,185,30,206,176,119,154,225,117,15,171,191,181,58,82,212,90,183,1,227,227,165,251,101,75,85,165,197,247,209,181,98,242,187,235,1,188,61,71,36,
-  167,120,139,25,48,247,81,143,29,244,162,16,190,173,85,28,203,205,167,183,16,175,189,122,138,30,56,3,230,28,61,109,145,149,8,172,213,92,191,114,
-  179,188,138,47,194,106,145,181,162,187,60,159,53,43,184,255,13,75,145,231,200,144,41,181,162,229,88,182,143,181,162,197,250,197,171,199,208,105,79,159,
-  22,149,29,53,74,124,150,34,199,121,207,105,21,217,238,158,59,46,94,51,220,178,202,211,106,244,191,100,217,90,214,106,141,138,179,82,241,182,78,69,
-  226,178,194,117,84,175,208,122,221,37,108,171,135,106,234,197,59,30,146,111,179,144,175,196,89,69,46,117,164,183,77,189,147,112,37,6,49,182,142,228,
-  247,29,122,150,66,24,229,250,111,93,118,167,78,94,227,229,249,203,85,233,156,170,130,215,137,239,172,136,67,86,156,143,195,202,220,103,229,166,184,171,
-  60,153,13,146,234,84,85,101,141,129,159,0,255,76,49,247,213,231,44,194,116,83,206,152,6,211,95,90,204,53,62,171,31,156,40,167,121,7,16,238,
-  11,60,167,88,150,43,119,231,193,38,252,252,185,242,164,50,171,102,28,61,65,126,2,228,20,241,252,27,19,244,33,88,195,66,115,104,14,117,51,170,
-  254,70,213,185,216,106,56,7,242,43,32,143,157,105,250,17,79,97,217,220,105,43,180,167,167,200,85,181,53,65,182,232,61,228,20,53,88,158,122,18,
-  115,57,37,39,181,91,135,214,233,15,136,231,239,136,231,62,230,196,121,248,249,182,18,186,199,187,191,179,192,226,77,196,86,239,18,251,60,159,70,96,
-  237,98,141,60,249,191,247,4,183,220,92,207,162,8,44,143,252,12,243,178,139,127,250,62,104,124,150,241,100,145,117,139,9,107,80,253,95,240,127,205,
-  24,205,216,51,210,46,164,223,118,162,100,145,221,51,220,190,230,239,93,253,105,121,106,84,245,199,45,205,115,63,171,221,26,169,87,214,12,21,221,55,
-  82,209,175,56,181,92,175,35,169,184,117,175,27,104,7,248,150,159,244,2,53,56,5,242,123,32,239,1,169,223,58,94,132,173,219,149,142,100,125,123,
-  132,204,169,215,254,178,245,238,118,18,188,29,175,191,65,219,55,208,182,103,182,23,246,16,229,94,53,210,237,255,4,151,76,7,239,50,40,206,151,82,
-  190,69,191,80,63,113,191,56,217,167,87,141,100,194,26,178,186,202,170,75,82,88,108,229,218,92,187,174,183,85,121,150,91,81,249,154,177,167,64,10,
-  61,221,160,158,62,88,161,183,163,134,104,204,143,88,55,175,119,183,183,75,215,77,29,139,13,24,147,122,218,126,66,237,60,64,143,189,155,159,173,126,
-  14,216,221,185,133,238,119,132,247,189,95,124,181,179,235,251,176,229,158,113,215,42,95,101,155,247,253,1,124,80,235,31,228,247,129,1,190,156,136,197,
-  91,176,248,177,247,157,176,250,141,241,46,206,122,61,79,93,43,234,127,253,171,166,139,209,206,160,83,243,137,83,203,99,212,242,4,247,162,96,135,15,
-  202,181,51,184,61,103,130,46,116,140,206,19,102,249,79,93,249,184,208,249,15,173,88,189,111,28,85,16,159,183,123,31,107,231,188,119,177,239,46,103,
-  235,188,68,65,4,68,108,130,20,69,32,133,143,2,26,219,162,64,65,138,2,20,116,216,136,6,33,132,4,18,18,66,226,254,130,32,81,208,145,127,
-  0,138,244,24,106,148,130,130,210,249,3,8,18,5,165,153,249,205,190,221,217,219,183,231,143,80,120,252,52,111,230,247,230,205,155,153,157,57,162,109,
-  234,16,81,31,244,128,34,74,232,144,134,241,152,215,29,71,116,159,210,132,152,195,75,250,135,214,153,70,116,145,178,192,174,229,203,154,104,141,70,228,
-  119,85,82,16,198,130,239,18,35,233,181,190,160,105,16,231,43,182,46,19,4,94,207,128,118,0,186,7,186,13,228,242,196,44,95,207,40,117,34,41,
-  116,143,169,242,87,89,102,76,189,252,20,229,108,83,155,229,47,209,82,97,243,46,255,183,50,150,18,16,86,25,83,180,110,66,107,133,214,217,134,253,
-  57,45,149,204,42,103,29,64,235,54,180,174,65,235,219,66,203,218,159,21,126,136,113,211,14,110,234,95,42,131,22,229,94,218,163,46,118,187,216,237,
-  22,222,171,243,231,113,244,197,207,139,230,249,255,39,102,19,90,88,190,37,175,76,27,13,187,17,118,167,244,35,44,169,35,207,240,22,7,140,226,241,
-  103,136,177,186,85,202,111,178,217,107,133,45,159,151,151,92,136,113,122,20,67,38,73,233,23,182,112,16,144,100,25,100,89,220,82,201,38,255,168,229,
-  25,29,81,202,152,199,160,155,46,141,189,205,138,86,226,139,164,228,206,49,232,166,19,250,150,91,47,238,104,109,216,59,199,187,156,253,125,53,254,69,
-  203,251,211,115,218,110,25,121,49,12,100,162,205,62,206,199,120,128,28,76,3,187,125,228,53,203,184,80,70,95,40,242,148,26,50,84,119,199,44,57,
-  226,10,105,117,103,240,246,125,208,67,166,25,109,33,222,252,174,86,63,71,213,42,218,231,83,172,13,61,160,175,26,78,10,153,8,104,105,67,21,210,
-  245,160,82,193,118,27,229,71,65,239,245,11,239,165,240,222,32,188,235,66,53,237,181,162,98,147,177,33,91,88,3,75,191,137,252,39,56,101,7,167,
-  104,158,214,107,160,141,234,67,80,69,88,225,211,210,218,221,7,149,216,190,142,168,182,95,168,82,55,107,244,210,30,61,93,145,247,187,199,20,39,146,
-  47,18,183,183,64,239,130,126,14,42,55,37,186,231,36,187,31,209,90,82,106,73,46,220,117,93,104,117,145,113,93,104,117,33,223,113,103,151,188,107,
-  108,80,123,142,185,62,136,76,148,219,211,129,61,147,19,48,21,77,145,79,47,217,116,186,250,193,75,74,94,159,6,83,191,185,130,236,253,118,132,111,
-  250,147,217,19,247,72,112,122,33,171,74,93,162,111,220,197,68,236,108,243,137,35,183,196,244,85,183,94,193,87,25,162,79,221,56,169,190,172,69,240,
-  54,151,81,23,66,24,53,232,202,233,255,146,156,254,84,131,238,175,193,115,213,170,58,63,165,135,176,231,49,236,17,204,65,192,219,139,173,106,242,137,
-  228,78,21,225,209,66,219,14,81,207,181,6,126,134,76,47,43,67,245,196,158,155,34,191,228,220,27,56,247,189,160,55,178,70,75,194,119,25,72,245,
-  72,236,151,46,109,240,198,233,61,188,28,240,143,248,97,216,120,187,112,60,12,106,145,147,6,238,219,247,189,110,133,63,161,191,104,10,221,170,37,157,
-  66,94,251,228,52,120,163,48,166,247,97,127,142,31,226,252,128,136,157,225,244,223,240,93,147,147,137,62,98,63,112,85,151,6,135,174,69,146,125,43,
-  160,143,145,137,15,65,127,6,229,106,25,101,185,214,78,36,200,47,69,130,60,207,97,59,163,75,201,233,36,159,141,198,1,190,76,28,87,248,77,172,
-  110,85,107,148,136,109,87,218,89,224,220,157,168,93,104,221,115,87,233,21,174,54,151,233,29,248,68,61,211,225,87,184,204,245,86,189,186,133,158,161,
-  220,85,250,49,221,192,91,191,13,153,175,217,99,27,53,206,174,145,127,147,35,97,202,86,247,209,199,150,180,196,20,23,111,115,63,153,49,141,138,46,
-  235,124,107,141,147,38,142,159,182,162,162,51,220,199,29,45,103,15,86,157,134,227,39,56,237,6,165,203,213,121,129,111,228,172,199,222,205,207,229,57,
-  142,190,227,63,239,213,137,161,47,179,140,76,172,42,249,37,226,240,58,123,117,35,231,216,117,185,43,242,67,247,98,13,237,111,208,141,10,221,202,109,
-  115,236,127,157,227,194,179,100,154,103,156,116,182,81,173,19,235,229,147,163,74,42,223,123,181,83,104,137,87,39,198,3,195,64,135,25,238,42,87,17,
-  45,213,168,211,41,213,246,219,31,22,81,180,95,187,233,85,32,60,103,56,83,179,206,16,105,148,71,221,238,220,235,159,117,221,28,27,126,29,195,242,
-  22,249,190,180,224,183,192,111,53,35,207,144,83,234,159,63,216,51,213,221,55,216,167,114,74,11,56,113,11,121,100,126,91,16,221,7,208,234,99,54,
-  17,58,17,219,18,255,203,195,247,164,53,54,162,177,225,39,224,12,13,103,25,156,213,154,110,207,32,151,181,66,126,123,145,106,60,230,181,222,49,173,
-  244,159,105,222,229,190,158,159,62,102,252,114,119,146,87,114,137,210,78,165,107,93,42,122,93,50,8,158,147,34,182,75,153,196,224,140,43,56,93,150,
-  25,26,132,229,133,83,137,255,14,238,2,95,187,116,137,64,141,237,23,196,207,177,157,158,124,77,176,177,237,223,46,77,168,168,3,174,194,105,90,107,
-  166,127,80,171,156,211,220,126,181,237,25,182,114,40,93,68,203,223,101,219,204,158,125,96,214,39,38,137,159,9,58,135,78,30,45,106,243,3,42,123,
-  149,155,152,131,236,238,89,249,243,104,99,156,152,212,44,201,138,74,146,154,89,204,205,217,255,190,153,212,110,23,51,154,157,182,28,127,209,214,226,205,
-  156,127,203,181,227,172,88,119,226,136,126,231,153,104,90,114,156,125,107,149,105,90,87,127,151,179,187,153,147,62,161,46,191,233,210,164,206,169,225,184,
-  197,152,85,11,21,193,74,250,73,161,13,190,228,163,202,232,238,161,169,186,245,91,168,228,161,137,85,237,108,45,62,185,181,200,119,179,117,124,107,225,
-  60,63,196,9,219,236,173,90,100,249,252,238,19,217,236,66,39,218,223,102,239,212,48,237,174,183,95,232,145,241,124,19,78,249,106,39,197,219,243,152,
-  29,60,135,3,182,50,155,203,84,190,41,17,126,193,5,250,112,251,178,39,119,236,25,253,68,83,227,79,185,197,159,232,132,29,166,128,69,8,255,1,
-  189,86,49,142,211,64,20,125,99,59,137,209,154,120,87,73,140,130,180,65,2,81,80,108,181,37,226,4,22,7,64,84,84,40,53,5,21,21,69,78,
-  128,40,168,205,13,56,129,75,78,64,105,113,136,45,195,204,255,30,251,175,199,227,76,164,21,41,70,214,159,55,111,254,127,255,205,76,128,21,54,216,
-  33,194,21,128,111,106,174,128,175,234,42,5,62,169,34,117,227,227,200,141,30,87,40,58,158,26,179,24,248,131,71,169,68,46,161,212,86,207,254,196,
-  42,189,236,145,202,69,134,231,3,202,63,69,131,117,92,180,179,13,237,126,71,156,207,104,71,151,185,129,137,220,13,246,229,90,18,157,213,50,125,74,
-  35,38,241,140,73,78,114,22,109,158,253,238,51,229,203,176,48,181,168,244,44,229,141,2,71,161,192,70,25,230,35,233,240,198,163,128,197,204,99,55,
-  219,68,231,96,20,104,132,2,227,120,198,36,39,56,165,55,186,220,148,155,27,87,84,152,90,130,21,232,93,113,173,102,58,114,75,252,239,29,102,147,
-  131,254,169,213,153,174,54,93,251,129,165,158,125,139,173,142,124,129,134,180,120,238,160,238,230,132,211,194,60,60,162,79,60,166,207,47,202,228,35,101,
-  242,93,103,226,116,83,185,85,132,41,111,42,77,240,151,250,94,225,101,87,163,236,117,133,231,72,206,80,207,58,191,64,152,230,225,72,217,157,211,248,
-  29,114,196,228,144,56,237,235,138,19,224,179,154,235,239,119,52,190,214,227,78,99,22,250,251,134,240,57,204,247,17,253,170,87,196,118,164,184,69,46,
-  58,100,137,25,172,31,36,158,145,140,209,204,9,113,102,247,49,57,197,175,85,228,172,141,156,221,77,62,204,41,227,141,136,115,134,253,172,213,170,118,
-  48,13,134,60,149,7,83,59,200,3,85,154,83,213,62,124,53,198,159,133,241,215,30,164,91,87,227,32,7,138,101,99,138,13,181,181,14,244,105,110,
-  93,52,174,60,123,70,122,35,31,169,200,40,102,125,178,24,224,165,151,6,252,89,239,156,41,126,174,212,122,233,84,189,15,87,215,1,47,248,53,159,
-  168,206,250,255,127,87,39,251,107,86,217,186,220,51,194,156,242,164,248,92,199,60,149,131,169,61,72,121,82,78,159,17,193,159,89,140,212,211,69,242,
-  73,153,194,88,111,179,218,62,158,78,225,209,89,125,127,102,247,239,70,169,118,73,113,159,135,247,52,91,194,239,115,96,75,239,227,129,144,251,246,70,
-  157,58,23,252,226,87,164,234,129,102,67,86,29,200,63,33,200,61,33,67,114,46,9,233,227,97,111,187,113,118,114,31,89,106,182,77,247,223,152,35,
-  143,241,4,151,131,170,251,51,235,186,221,237,14,119,95,246,200,158,235,133,120,227,124,248,136,240,81,16,30,248,128,181,254,254,141,245,217,107,31,110,
-  47,121,207,248,246,186,65,164,12,210,140,101,123,243,68,23,244,254,94,160,61,35,178,203,253,94,255,0,
-};
-static const LChunk level7_chunks[4] = {
-  {0,0,19680,570.0f,9480.0f,-1000000000.0f,1000000000.0f,1392,1000,1000,66,1},
-  {1392,1000,302880,9411.0f,16410.0f,-1000000000.0f,1000000000.0f,1429,1000,1000,66,1},
-  {2821,2000,523680,16320.0f,26610.0f,-1000000000.0f,1000000000.0f,1499,1000,1000,66,1},
-  {4320,3000,850080,26499.0f,29520.0f,-1000000000.0f,1000000000.0f,668,563,563,66,1},
-};
-static const LevelEvent level7_events[30] = {
-  {45,135,1,0,0,240,181,0,1500},
-  {45,105,1,1,0,137,100,0,1500},
-  {4545,375,2,5,0,0,0,0,0},
-  {4545,255,1,1,0,10,164,0,600},
-  {4545,225,1,0,0,99,253,0,600},
-  {8745,315,1,0,255,0,191,0,500},
-  {8745,285,1,1,156,0,124,0,500},
-  {8925,435,3,1,0,0,0,0,0},
-  {12915,555,3,0,0,0,0,0,0},
-  {12915,435,2,1,0,0,0,0,0},
-  {14025,495,1,0,24,0,23,0,10000},
-  {14025,465,1,1,23,0,24,0,10000},
-  {17055,555,2,4,0,0,0,0,0},
-  {17055,435,1,0,0,0,0,0,500},
-  {17055,405,1,1,0,0,0,0,500},
-  {19185,165,1,0,154,0,130,0,10000},
-  {19185,135,1,1,141,0,105,0,10000},
-  {20415,705,2,1,0,0,0,0,0},
-  {21285,315,1,0,251,0,209,0,500},
-  {21285,285,1,1,151,0,120,0,500},
-  {23385,315,1,0,15,255,0,0,500},
-  {23385,285,1,1,7,135,0,0,500},
-  {24135,195,1,0,0,252,252,0,4000},
-  {24135,165,1,1,0,172,182,0,4000},
-  {25455,465,1,0,255,0,214,0,500},
-  {25455,435,1,1,100,0,82,0,500},
-  {26595,285,1,0,49,255,0,0,500},
-  {26595,255,1,1,34,138,0,0,500},
-  {27525,315,1,0,0,118,252,0,5000},
-  {27525,285,1,1,0,63,122,0,5000},
-};
-static const uint8_t level8_data[4641] = {
-  173,88,191,143,27,69,20,126,251,227,188,155,211,101,237,56,62,147,156,114,62,137,16,42,44,36,10,26,135,138,138,56,20,148,119,29,29,22,13,208,
-  156,80,10,170,224,18,154,40,138,168,93,134,10,42,202,69,66,8,10,36,68,65,121,66,136,18,33,254,0,243,230,123,51,187,111,103,188,246,58,162,
-  184,145,245,230,251,190,247,230,205,123,51,179,71,212,167,130,190,225,191,155,116,159,30,81,145,19,61,163,136,136,126,164,219,60,154,217,73,139,253,77,
-  58,166,33,189,129,223,20,96,38,45,246,251,240,245,144,98,186,99,49,19,154,2,217,103,204,132,237,55,236,104,112,199,52,224,217,51,158,173,237,122,
-  36,198,140,43,203,156,238,90,36,209,117,122,169,194,172,224,253,55,68,229,44,189,40,156,37,120,108,234,127,71,215,56,254,63,48,251,53,245,115,237,
-  215,205,106,251,18,106,98,103,47,85,30,52,178,199,182,166,197,247,242,42,175,229,101,250,200,230,199,140,23,38,75,140,153,67,255,17,214,226,44,102,
-  45,254,236,133,226,78,144,91,162,215,56,234,246,236,77,129,233,115,116,68,15,120,38,204,249,16,249,57,106,217,5,162,247,56,255,98,201,169,164,81,
-  50,182,179,37,148,255,85,249,47,57,230,28,106,99,101,153,108,252,237,184,38,159,69,30,70,78,244,59,178,23,69,6,243,115,99,47,206,170,217,191,
-  104,228,205,182,217,77,84,251,179,94,212,215,184,154,53,118,162,63,25,211,100,137,221,172,174,64,85,15,236,94,44,184,66,142,108,255,74,141,125,138,
-  26,120,138,140,253,160,122,208,183,127,16,88,82,32,79,42,123,47,34,107,49,99,26,224,31,86,157,91,215,204,2,191,151,248,173,59,78,98,144,190,
-  88,81,194,227,39,200,128,96,74,88,190,132,69,246,250,138,14,120,188,17,185,94,48,85,125,70,10,159,58,188,167,156,58,229,48,170,149,138,173,142,
-  234,130,45,69,174,163,189,198,246,126,114,76,175,160,67,251,28,155,65,198,224,54,145,174,155,204,108,27,198,205,134,92,99,31,66,1,94,82,217,241,
-  35,84,184,174,249,33,236,41,234,228,196,98,74,96,174,128,49,89,26,218,245,62,176,106,189,70,231,30,49,210,224,215,192,188,206,248,30,170,200,117,
-  177,228,103,14,214,20,163,40,124,94,157,0,161,194,208,218,245,9,176,6,230,52,50,152,119,177,119,254,137,97,102,19,198,204,162,152,183,252,60,74,
-  248,6,88,241,137,17,219,217,89,148,145,177,199,168,129,4,30,13,242,52,74,147,73,165,144,121,200,57,37,137,65,102,96,197,185,217,241,132,179,101,
-  214,152,91,150,216,5,19,42,76,161,176,32,81,51,190,182,227,251,136,74,240,83,198,27,86,70,187,88,178,107,206,75,6,157,12,10,187,185,154,53,
-  173,184,251,176,180,47,151,225,56,119,120,225,174,61,125,199,93,160,134,133,165,241,243,0,175,227,225,93,72,165,86,135,94,182,99,156,45,105,234,240,
-  218,59,239,102,218,3,235,150,169,147,8,117,146,146,237,47,121,39,112,109,28,25,150,153,93,67,205,224,79,232,43,62,15,83,133,52,239,129,68,60,
-  38,240,8,75,236,229,48,180,44,224,197,183,83,208,5,39,64,166,91,145,99,96,242,14,106,136,54,173,243,19,71,205,27,54,163,91,164,111,40,247,
-  251,99,62,179,136,222,161,219,121,19,255,55,244,175,163,31,223,130,254,115,32,101,246,49,227,129,137,29,70,110,61,253,106,10,21,154,55,254,49,29,
-  6,103,209,200,206,126,72,119,163,77,55,181,32,101,213,114,86,156,99,188,196,56,195,248,61,221,204,155,248,102,109,103,192,215,53,163,179,225,244,235,
-  42,189,12,184,63,209,40,223,132,191,140,178,13,190,38,22,227,78,57,31,121,174,240,18,73,87,188,67,74,14,187,233,155,91,192,224,211,206,94,198,
-  192,231,22,239,106,251,64,245,133,25,187,71,59,135,194,148,164,43,77,23,135,92,29,243,169,202,185,40,252,66,119,114,170,222,252,73,165,208,198,53,
-  202,99,174,243,51,238,35,185,241,219,106,105,230,85,212,8,47,135,67,197,42,232,91,58,96,239,191,226,142,123,138,204,255,35,183,94,132,27,16,227,
-  28,227,130,199,129,226,230,80,27,55,98,152,5,53,172,251,218,68,117,136,200,71,245,122,213,174,213,55,166,95,219,147,58,207,36,103,87,23,86,97,
-  95,140,38,219,3,187,215,154,213,60,219,19,106,247,190,182,183,85,97,207,100,220,116,169,227,182,177,174,236,55,136,95,33,205,61,106,214,201,164,81,
-  9,130,17,239,62,114,200,95,73,238,197,187,29,57,160,75,206,121,177,3,115,222,192,108,138,77,118,115,64,51,32,215,246,117,234,159,72,26,95,226,
-  11,197,245,181,127,22,133,39,152,188,247,204,119,180,123,253,174,172,151,108,39,119,9,95,238,13,92,191,48,53,183,220,162,224,222,246,154,91,218,187,
-  201,127,21,248,92,233,130,124,3,247,52,202,188,24,194,58,217,15,239,86,234,222,240,62,119,173,98,14,185,11,112,221,55,66,230,173,113,123,134,133,
-  187,192,26,95,76,65,118,86,43,132,49,139,218,170,37,87,230,255,36,180,33,6,205,221,22,195,166,248,219,98,208,220,39,91,21,186,100,160,77,65,
-  119,199,106,107,143,60,81,153,204,240,93,124,181,179,167,92,198,174,58,116,223,2,223,149,93,52,67,204,10,223,251,27,207,237,234,69,180,8,88,242,
-  85,213,22,243,220,158,186,81,167,248,119,249,218,23,191,196,73,18,178,184,211,19,220,215,73,147,59,199,235,177,139,130,251,30,23,86,173,16,174,241,
-  51,252,135,100,83,228,181,194,180,133,251,62,184,230,238,219,21,67,217,162,240,54,20,158,183,40,244,85,197,150,170,151,117,23,220,131,194,23,45,10,
-  75,165,208,119,239,177,124,87,55,233,187,114,25,112,247,59,145,220,42,116,36,225,42,74,218,198,93,217,93,40,246,226,10,94,175,93,159,66,229,150,
-  51,188,233,183,171,199,250,126,252,127,184,109,59,238,115,7,88,105,209,168,180,154,245,31,173,88,189,143,27,85,16,159,103,155,120,125,190,243,222,135,
-  215,231,156,146,5,137,4,138,200,66,233,14,69,128,128,46,86,42,36,32,18,77,68,131,75,144,208,73,20,161,195,68,40,74,138,80,80,208,225,18,
-  36,68,69,69,97,69,72,64,133,68,129,16,197,138,238,254,137,99,62,246,99,222,190,183,111,109,68,179,218,155,55,191,223,204,251,205,188,217,231,3,
-  184,128,62,0,220,50,244,188,203,207,51,124,70,48,131,17,76,32,6,131,22,122,7,88,243,251,85,246,17,84,230,197,166,37,202,148,40,241,20,148,
-  48,172,96,20,1,188,9,99,47,131,198,106,84,156,199,53,37,67,19,182,9,245,42,92,9,68,156,7,177,117,20,192,61,204,63,109,68,205,156,108,
-  215,94,158,255,131,33,140,157,7,81,218,127,193,181,214,40,225,172,99,79,216,179,215,24,75,231,83,199,78,24,27,89,254,51,149,73,8,155,254,71,
-  148,235,191,86,170,102,173,57,167,30,212,92,245,185,62,17,87,203,222,104,227,153,41,54,151,33,124,46,4,165,247,30,198,234,136,113,48,238,109,56,
-  242,50,116,224,64,157,232,250,52,40,78,208,40,128,205,242,252,41,174,198,214,253,123,152,193,4,123,204,69,181,213,72,247,134,9,96,63,104,216,163,
-  232,57,119,176,51,167,199,222,107,152,36,77,88,183,75,239,193,0,87,63,110,80,204,215,177,161,94,61,43,25,182,199,54,41,208,132,154,121,171,54,
-  98,77,246,173,184,243,6,253,253,19,117,87,105,114,104,97,117,223,22,249,72,7,10,143,97,30,195,60,6,18,196,198,134,80,49,254,149,193,216,144,
-  255,216,68,204,144,194,115,92,59,247,157,158,3,194,118,25,219,77,172,111,153,228,67,179,43,45,231,30,89,222,192,191,232,52,61,235,177,219,150,21,
-  215,122,153,243,20,156,109,40,225,23,212,55,220,183,239,192,229,200,246,145,85,178,23,254,23,249,41,35,251,29,115,57,199,250,98,21,218,246,203,172,
-  94,86,60,89,94,59,178,191,196,60,159,49,143,206,141,176,54,143,31,155,150,58,24,143,14,182,191,84,196,141,78,51,33,205,159,159,112,237,132,65,
-  102,197,17,214,190,200,255,33,246,80,170,252,129,167,74,97,209,29,53,87,153,44,85,165,46,176,166,58,226,14,236,193,49,206,117,177,100,234,94,180,
-  84,251,90,56,83,40,46,51,76,177,34,5,231,136,217,246,75,251,168,236,234,38,125,234,108,213,156,49,252,53,23,108,159,177,82,77,57,131,253,218,
-  52,72,204,88,97,171,175,234,38,216,51,67,21,249,146,251,234,41,87,68,162,175,173,204,67,12,127,242,173,201,222,163,223,243,110,126,186,41,226,3,
-  238,31,91,147,186,255,215,204,188,80,147,193,119,79,32,182,59,204,102,171,90,221,232,50,71,109,153,66,7,140,18,203,117,107,23,180,250,7,208,106,
-  63,191,19,146,69,50,249,10,237,191,35,219,139,120,231,233,192,81,7,224,93,236,196,95,120,215,41,107,149,182,40,159,112,39,139,39,173,158,194,107,
-  144,116,247,48,19,154,84,11,126,234,169,213,212,51,247,249,188,207,61,183,62,90,253,2,38,61,219,71,235,182,112,24,252,171,17,242,36,120,206,194,
-  12,161,12,41,127,154,222,213,12,167,213,216,12,88,165,30,220,194,254,61,201,213,248,11,14,163,66,49,81,111,149,127,239,138,91,141,86,248,4,126,
-  96,221,150,16,15,200,147,158,25,63,215,248,76,212,105,178,207,224,71,16,71,169,195,172,87,47,193,251,48,137,166,214,28,208,55,37,242,73,40,238,
-  144,227,14,57,226,144,163,15,247,40,171,103,78,185,202,167,240,10,103,88,175,41,43,208,82,89,128,79,97,218,168,222,30,49,155,183,89,177,83,248,
-  222,209,65,20,248,16,166,17,120,118,65,249,83,182,17,184,187,24,192,111,229,106,15,237,19,172,78,101,73,241,84,210,55,93,44,79,129,38,198,79,
-  48,233,200,106,4,67,152,118,77,190,59,241,148,29,93,203,191,32,21,67,221,14,240,35,188,128,243,243,38,230,52,242,250,208,123,17,247,24,43,248,
-  8,198,17,180,122,210,41,126,11,239,1,205,62,55,248,251,235,250,220,192,121,78,187,75,34,237,31,102,219,126,85,162,104,31,137,40,191,56,54,201,
-  220,85,224,38,158,88,159,14,33,173,40,238,164,69,207,205,99,237,80,141,118,199,13,60,9,159,20,233,100,186,209,77,241,46,119,206,216,75,60,79,
-  214,252,165,254,7,171,12,150,189,122,151,187,65,106,173,254,205,186,105,203,138,121,108,212,164,134,10,49,20,81,150,53,158,237,25,42,203,56,191,21,
-  63,96,149,234,185,209,239,104,58,65,168,79,119,200,158,59,240,43,76,59,133,79,169,97,39,66,149,200,115,93,122,22,156,199,220,51,223,50,234,58,
-  119,145,198,202,4,248,142,25,86,204,176,226,211,42,40,153,132,226,175,39,231,99,244,223,69,254,227,232,208,227,169,103,11,121,38,196,105,136,153,42,
-  219,148,143,158,168,148,207,142,218,197,144,246,101,104,119,196,224,87,64,252,135,164,85,217,69,226,115,206,51,252,0,146,94,79,113,142,213,106,209,201,
-  50,193,164,106,213,42,240,108,41,124,170,234,216,88,151,205,181,104,102,185,205,110,202,208,227,123,200,73,110,151,59,73,61,147,14,188,14,207,155,41,
-  175,246,60,17,55,137,85,101,181,15,79,224,74,84,204,222,159,89,25,141,114,153,221,119,189,71,173,167,86,91,180,213,171,194,76,62,131,252,219,161,
-  81,213,255,45,147,252,230,112,174,190,62,226,35,156,104,239,200,83,56,181,197,93,117,25,84,244,78,48,122,185,90,78,0,203,178,207,53,26,89,177,
-  180,191,188,235,185,161,245,169,58,16,212,47,214,212,210,170,186,229,22,246,144,101,80,221,139,186,144,159,119,247,118,164,111,206,183,213,175,194,149,178,
-  103,229,173,41,188,42,255,59,218,204,199,141,190,157,207,8,62,135,35,236,222,144,79,91,20,58,65,219,250,252,11,237,88,205,110,211,64,16,158,165,
-  18,181,19,228,69,137,29,169,135,248,64,33,156,34,120,128,222,122,195,71,94,160,28,144,234,39,129,87,224,1,242,36,169,196,133,87,232,193,71,120,
-  3,78,102,103,102,237,140,189,254,217,208,88,165,18,151,81,178,254,118,61,223,124,51,59,222,5,208,112,14,0,5,217,61,217,47,16,5,41,236,64,
-  153,223,91,178,211,97,62,192,18,134,49,205,167,25,68,53,102,95,35,79,133,1,40,201,174,85,27,255,21,150,193,49,120,127,36,70,233,41,227,81,
-  193,83,71,134,213,241,193,75,228,110,2,252,244,72,69,72,69,72,69,72,69,72,180,57,188,33,251,10,214,102,214,82,225,44,180,123,178,218,88,5,
-  27,165,77,149,29,44,192,133,74,26,35,125,227,161,89,77,159,225,106,104,11,178,37,217,181,210,103,137,137,213,37,121,24,213,89,177,27,240,54,193,
-  213,200,55,180,5,217,146,172,89,77,133,240,220,172,4,246,237,135,223,96,178,103,5,205,17,246,211,23,239,62,117,87,8,77,244,144,151,38,155,145,
-  205,5,211,189,137,48,113,164,104,115,6,202,140,101,166,24,1,102,154,19,175,140,236,150,172,30,101,234,227,103,63,30,145,145,153,149,192,203,30,76,
-  104,217,181,117,100,125,19,203,194,205,177,173,101,125,73,57,137,28,81,223,132,184,84,10,22,130,35,234,59,172,230,11,242,118,225,29,7,57,18,208,
-  220,213,32,166,98,202,236,88,205,109,173,105,98,121,105,71,199,210,178,107,106,157,8,237,154,154,230,240,176,188,29,206,85,191,188,149,76,75,161,175,
-  212,148,249,150,66,95,86,147,149,117,53,213,208,86,118,88,211,135,241,74,70,242,188,89,155,82,83,86,83,214,32,51,205,170,62,5,149,154,172,108,
-  46,56,202,170,204,132,154,230,141,207,0,223,62,75,197,239,152,60,156,137,17,246,60,237,193,167,45,36,107,183,10,228,120,216,163,26,51,77,122,247,
-  252,157,229,114,80,80,19,175,238,125,149,57,142,237,57,172,194,248,238,42,127,207,104,214,204,70,70,106,250,27,54,45,245,181,168,50,153,141,215,16,
-  27,251,19,226,32,181,170,21,141,122,60,244,74,236,140,0,55,230,95,19,121,67,111,97,204,182,163,155,159,30,89,136,125,227,113,145,221,24,204,141,
-  168,197,200,135,181,15,230,7,232,224,233,35,249,169,15,119,127,228,56,6,171,59,10,78,167,11,231,201,191,143,244,137,12,215,181,172,116,137,105,215,
-  102,123,175,56,175,87,158,170,10,0,190,153,62,50,77,77,157,10,195,138,12,103,190,187,207,248,215,148,196,119,199,252,63,190,11,207,249,83,66,55,
-  190,27,201,235,28,143,47,26,223,180,253,200,170,58,252,241,92,119,210,147,241,89,213,254,57,60,203,221,111,167,195,143,99,100,7,73,71,144,188,154,
-  196,247,197,211,157,117,44,158,123,135,236,110,227,179,254,22,47,51,217,39,158,110,151,28,214,203,237,29,143,133,247,233,35,159,233,27,251,187,232,221,
-  18,89,125,159,31,240,183,116,223,117,7,203,26,47,119,215,54,222,175,251,220,209,237,226,45,221,133,186,111,108,123,181,48,221,234,181,57,101,187,119,
-  20,159,232,123,187,125,166,88,25,100,76,103,135,88,109,204,55,253,2,174,0,239,18,174,204,90,49,124,84,59,208,33,157,77,66,58,95,132,120,230,
-  122,59,122,231,243,78,93,240,157,207,156,230,206,105,238,60,132,95,164,17,98,210,142,223,247,144,12,60,245,71,222,195,170,227,105,104,253,47,172,207,
-  232,63,242,109,250,140,126,190,183,231,205,109,125,35,148,52,78,49,153,243,53,146,219,155,195,74,133,180,209,103,221,241,238,145,63,197,87,189,110,212,
-  64,16,30,95,196,217,206,5,251,148,59,95,130,20,28,68,36,164,72,164,162,167,8,69,36,252,18,80,68,194,116,84,136,154,226,202,240,0,180,71,
-  153,130,6,69,136,234,90,90,10,10,10,43,21,188,68,216,153,177,111,103,127,124,246,129,4,205,156,53,251,237,204,236,55,63,187,7,144,66,8,49,
-  44,33,221,2,168,72,46,148,204,160,128,0,240,27,229,146,100,69,242,68,225,129,118,229,6,70,235,17,25,210,46,148,207,97,106,33,159,41,148,137,
-  95,174,118,153,200,18,146,158,200,254,54,253,24,128,11,152,70,121,141,97,252,59,72,163,118,155,18,57,135,164,39,178,191,205,182,56,153,79,137,228,
-  179,75,12,239,58,105,225,179,15,178,191,205,63,199,52,156,51,82,234,221,170,67,222,50,172,210,128,234,51,136,61,187,24,249,21,210,65,190,110,85,
-  121,148,250,98,229,37,23,223,146,255,88,229,23,251,162,164,190,168,156,236,148,117,13,160,124,79,188,21,100,173,18,49,204,107,54,18,194,179,95,205,
-  149,139,44,45,107,136,12,32,195,72,2,138,36,64,125,58,138,87,241,104,11,167,234,55,119,244,185,7,41,217,208,252,48,38,70,158,99,204,66,26,
-  103,245,174,202,153,9,92,207,108,95,90,246,35,51,180,57,130,58,143,21,229,241,49,28,136,168,80,254,162,168,134,116,118,252,78,224,7,100,209,88,
-  104,182,97,162,184,152,10,141,196,207,72,14,72,51,172,247,158,192,161,90,101,204,4,102,158,93,177,194,96,150,83,146,122,30,226,36,76,172,8,23,
-  212,239,213,234,116,25,238,10,16,131,82,158,78,70,88,120,99,0,21,225,204,138,164,32,239,50,30,142,132,251,183,48,242,200,49,52,241,96,180,58,
-  146,180,37,18,237,119,168,108,30,2,115,53,160,168,166,53,231,168,185,5,35,242,126,78,242,140,228,177,146,35,101,51,81,89,24,145,247,183,20,213,
-  57,125,159,145,60,86,114,42,188,4,104,39,32,59,1,217,9,200,78,48,170,253,34,242,64,124,203,8,65,89,159,64,110,232,81,3,112,13,123,181,
-  166,233,208,133,147,187,146,152,153,123,239,178,166,155,22,78,214,216,215,188,229,6,124,9,19,177,106,222,119,155,234,1,94,209,12,236,179,75,222,20,
-  50,251,254,56,27,174,228,4,176,53,0,79,21,147,99,234,145,164,19,143,54,135,245,189,160,189,152,154,176,174,237,4,62,40,150,198,206,106,110,48,
-  153,138,74,46,68,204,246,244,30,195,11,101,53,49,86,229,59,164,169,150,44,50,251,66,218,12,97,191,238,62,223,185,100,189,217,252,180,243,192,122,
-  201,134,228,1,49,187,52,169,118,28,125,222,202,140,219,221,188,250,17,14,34,179,14,109,30,186,88,178,45,55,121,231,72,62,67,28,53,147,141,185,
-  186,134,59,106,151,212,75,6,124,250,80,121,231,138,146,25,145,72,180,217,175,198,88,143,181,157,192,39,218,117,27,246,96,236,172,154,189,192,179,212,
-  206,32,192,23,120,96,32,77,47,28,167,246,53,32,95,73,135,47,182,204,179,194,173,28,222,245,134,78,125,65,12,92,17,159,110,15,106,76,191,85,
-  179,206,187,45,92,17,123,28,3,34,221,83,48,27,99,154,33,137,197,12,158,235,27,89,192,190,118,49,110,6,253,93,19,170,27,1,35,223,238,49,
-  151,218,53,110,143,227,251,33,247,188,4,220,91,126,78,247,47,223,149,108,237,59,113,242,19,246,35,221,143,235,86,177,151,187,48,69,15,47,254,23,
-  136,251,18,200,173,91,222,236,125,223,43,87,206,19,217,239,75,103,158,184,26,211,139,214,92,26,83,206,70,242,234,191,209,75,77,42,38,234,67,170,
-  55,102,70,206,213,75,81,159,172,47,225,254,150,212,52,53,169,95,158,99,178,214,76,81,121,59,176,5,206,145,214,52,249,170,68,204,120,247,113,181,
-  248,230,124,31,141,204,53,175,186,54,185,66,74,56,10,160,163,138,100,108,174,53,169,151,222,55,211,52,214,252,190,54,141,185,203,218,223,68,216,133,
-  148,25,156,89,108,223,163,127,43,186,90,0,30,169,59,126,135,170,104,183,229,255,136,239,92,165,248,47,160,39,219,186,93,51,112,89,138,84,119,79,
-  233,197,59,221,154,181,206,138,83,194,223,208,247,221,64,223,98,75,227,255,90,40,144,33,33,67,229,233,53,28,169,183,192,210,249,231,232,199,231,255,
-  25,217,247,92,237,54,55,195,52,19,166,205,47,79,42,70,222,192,186,8,25,41,45,243,29,218,23,159,91,47,70,123,126,234,236,3,60,81,83,239,
-  55,
-};
-static const LChunk level8_chunks[4] = {
-  {0,0,10080,270.0f,6840.0f,-1000000000.0f,1000000000.0f,1384,1000,1000,66,1},
-  {1384,1000,217440,6750.0f,12900.0f,-1000000000.0f,1000000000.0f,1367,1000,1000,66,1},
-  {2751,2000,411360,12810.0f,18720.0f,-1000000000.0f,1000000000.0f,844,1000,1000,66,1},
-  {3595,3000,597600,18630.0f,24270.0f,-1000000000.0f,1000000000.0f,1046,852,852,66,1},
-};
-static const LevelEvent level8_events[66] = {
-  {2055,225,1,0,136,0,70,0,6000},
-  {2055,195,1,1,255,14,147,0,6000},
-  {4275,465,2,5,0,0,0,0,0},
-  {7605,435,1,0,255,7,130,0,2500},
-  {8355,525,2,0,0,0,0,0,0},
-  {8535,375,1,0,0,0,0,0,500},
-  {8535,345,1,1,0,0,0,0,500},
-  {9075,465,1,0,81,0,127,0,500},
-  {9075,435,1,1,101,0,148,0,500},
-  {9135,195,2,1,0,0,0,0,0},
-  {9375,255,2,2,0,0,0,0,0},
-  {9675,255,2,1,0,0,0,0,0},
-  {13305,435,2,4,0,0,0,0,0},
-  {13485,375,1,0,238,0,246,0,200},
-  {13485,345,1,1,0,0,0,0,500},
-  {13755,375,1,0,176,4,255,0,200},
-  {14025,375,1,0,255,0,202,0,200},
-  {14295,375,1,0,255,4,143,0,200},
-  {14565,375,1,0,255,0,209,0,200},
-  {14805,375,1,0,243,0,255,0,200},
-  {15075,375,1,0,255,0,242,0,200},
-  {15345,375,1,0,207,0,255,0,200},
-  {15615,435,2,1,0,0,0,0,0},
-  {15615,375,1,0,255,0,128,0,200},
-  {15885,435,2,2,0,0,0,0,0},
-  {15885,375,1,0,255,2,238,0,200},
-  {16155,435,2,1,0,0,0,0,0},
-  {16155,375,1,0,238,0,113,0,200},
-  {16425,435,2,2,0,0,0,0,0},
-  {16425,375,1,0,255,0,241,0,200},
-  {16695,435,2,1,0,0,0,0,0},
-  {16695,375,1,0,255,0,153,0,200},
-  {16965,435,2,2,0,0,0,0,0},
-  {16965,375,1,0,255,21,229,0,200},
-  {17235,435,2,1,0,0,0,0,0},
-  {17235,375,1,0,220,0,245,0,200},
-  {17505,435,2,2,0,0,0,0,0},
-  {17505,375,1,0,251,0,199,0,200},
-  {17565,375,1,0,0,0,0,0,400},
-  {17805,285,2,4,0,0,0,0,0},
-  {18105,465,1,0,141,0,88,0,300},
-  {18105,435,1,1,255,3,124,0,300},
-  {18285,495,3,1,0,0,0,0,0},
-  {20085,375,2,2,0,0,0,0,0},
-  {20085,315,3,0,0,0,0,0,0},
-  {20265,285,1,0,0,62,188,0,300},
-  {20265,255,1,1,0,98,255,0,300},
-  {20385,285,3,1,0,0,0,0,0},
-  {20415,375,2,1,0,0,0,0,0},
-  {20685,375,2,2,0,0,0,0,0},
-  {20955,375,2,1,0,0,0,0,0},
-  {21225,375,2,2,0,0,0,0,0},
-  {21495,375,2,1,0,0,0,0,0},
-  {21765,375,2,2,0,0,0,0,0},
-  {22035,375,2,1,0,0,0,0,0},
-  {22305,375,2,4,0,0,0,0,0},
-  {22305,315,3,0,0,0,0,0,0},
-  {22395,285,1,0,255,23,123,0,300},
-  {22395,255,1,1,255,0,113,0,300},
-  {22515,315,3,1,0,0,0,0,0},
-  {22545,375,2,3,0,0,0,0,0},
-  {22845,375,2,4,0,0,0,0,0},
-  {23115,375,2,3,0,0,0,0,0},
-  {23385,375,2,4,0,0,0,0,0},
-  {23655,375,2,3,0,0,0,0,0},
-  {23895,375,2,5,0,0,0,0,0},
-};
-static const uint8_t level9_data[13338] = {
-  101,83,203,75,212,81,20,62,231,222,219,120,173,209,249,141,232,56,224,99,28,45,141,208,198,66,112,240,145,51,163,139,144,130,201,22,65,65,232,31,
-  16,250,7,24,124,155,160,54,69,16,65,80,57,160,180,45,172,149,8,221,85,139,114,45,182,178,85,25,68,171,22,173,186,157,249,205,56,15,60,135,
-  123,206,189,223,61,143,143,251,40,113,47,137,40,85,182,17,69,167,169,34,17,37,80,89,137,58,67,107,37,200,42,170,137,170,187,70,84,37,194,208,
-  246,134,168,246,166,20,35,214,84,1,219,184,91,110,122,188,85,43,30,46,3,213,33,38,228,168,42,77,84,67,75,89,51,19,199,131,120,46,183,146,
-  207,21,139,233,116,122,101,105,41,159,203,231,243,133,130,152,124,177,46,185,229,98,142,130,32,168,39,7,141,149,2,10,114,116,66,36,36,23,194,121,
-  230,128,89,43,37,69,211,74,13,165,135,164,148,27,197,103,237,191,107,244,251,118,247,152,221,0,146,216,214,126,95,99,194,237,104,183,99,176,232,162,
-  40,224,147,246,139,126,87,87,103,110,205,253,54,238,136,221,75,198,15,118,207,180,63,96,247,66,33,235,123,144,117,99,228,98,152,241,211,152,113,82,
-  21,177,107,123,234,23,95,109,73,117,251,77,141,24,14,204,106,54,179,165,38,147,201,204,213,129,45,149,42,78,254,97,162,241,76,133,238,250,122,244,
-  161,242,195,238,21,227,54,190,42,247,92,251,47,140,43,248,160,252,35,246,79,24,25,100,220,27,198,5,204,226,168,105,91,216,189,87,39,34,252,190,
-  89,112,107,248,167,253,3,93,166,251,151,133,43,238,34,139,203,254,186,144,221,53,94,136,151,83,170,165,252,79,198,107,227,71,70,222,114,189,222,76,
-  181,192,57,108,51,6,241,142,253,83,141,209,61,213,18,108,108,154,195,9,4,135,19,165,91,31,111,214,88,183,96,12,211,114,2,140,14,103,72,14,
-  163,149,48,239,210,88,40,197,73,142,60,230,7,201,205,202,89,176,216,59,110,10,11,110,17,221,238,30,97,142,220,178,239,115,5,66,63,185,130,68,
-  196,76,175,33,107,45,166,9,41,27,179,157,150,206,219,185,241,168,29,183,198,218,172,173,200,168,49,73,9,150,135,229,250,16,160,27,109,152,194,188,
-  220,60,133,72,76,110,181,13,41,244,28,99,184,49,227,24,211,232,147,222,229,240,40,33,142,139,84,90,197,253,122,2,129,165,111,152,211,137,75,24,
-  112,173,56,139,132,31,70,23,9,139,82,215,70,130,74,9,161,250,77,94,62,34,48,80,161,70,170,163,110,155,253,49,110,106,107,209,70,225,227,137,
-  188,93,43,31,216,178,149,97,216,144,209,162,108,78,25,35,62,34,150,100,126,166,73,181,161,168,14,189,138,170,168,228,91,249,134,162,229,252,10,254,
-  31,141,84,61,104,21,65,16,222,217,219,187,91,227,75,222,26,31,225,9,241,145,34,152,87,36,152,206,20,130,123,47,22,209,8,185,7,129,128,141,
-  239,236,2,1,219,32,68,6,11,9,38,133,136,248,196,38,177,74,202,168,168,41,4,15,68,16,44,18,252,33,41,132,60,172,82,88,89,89,136,235,
-  220,222,229,146,23,35,56,203,204,236,204,236,204,124,115,63,251,14,122,153,165,194,190,18,30,219,35,97,101,71,133,103,54,183,62,206,218,201,218,61,
-  210,238,187,218,156,169,42,176,35,156,156,139,246,42,114,111,211,213,238,247,60,246,47,202,34,156,71,58,210,181,90,141,41,198,186,249,97,120,58,149,
-  97,16,232,40,170,71,163,186,30,212,52,57,67,29,134,90,7,65,205,146,181,2,101,137,142,147,212,161,86,201,38,159,87,177,195,78,157,186,15,82,
-  146,158,167,40,155,68,57,16,5,245,160,30,213,73,16,5,97,189,158,192,161,230,97,77,237,245,188,199,91,176,3,107,48,85,93,1,124,230,154,65,
-  188,138,227,230,151,139,207,57,126,2,92,240,177,104,215,28,126,1,28,197,139,184,42,204,107,15,191,115,124,233,152,251,14,222,6,19,205,11,51,239,
-  154,9,179,8,248,211,51,63,248,42,47,111,114,229,47,129,124,3,140,109,242,13,190,14,171,176,205,47,80,149,23,162,90,172,54,97,118,5,180,140,
-  97,139,252,73,231,121,167,58,112,131,176,80,163,7,46,14,225,56,241,52,222,113,204,87,48,195,120,211,16,146,93,30,243,38,47,99,15,126,3,212,
-  120,151,227,71,48,31,92,92,112,246,65,230,9,184,46,204,130,247,63,57,107,206,223,163,153,153,116,24,244,112,150,198,49,77,176,99,226,24,230,88,
-  112,91,152,69,129,67,230,51,207,186,54,240,173,135,69,243,196,163,238,175,92,115,43,233,255,216,55,79,69,10,97,110,215,81,91,176,12,75,240,8,
-  154,192,244,6,87,200,245,136,225,239,65,85,207,169,101,88,129,145,114,49,129,244,16,240,183,147,63,3,178,166,11,82,49,95,202,184,59,27,83,98,
-  133,98,215,50,75,197,61,244,210,177,19,79,96,9,79,145,163,82,192,62,228,120,28,59,208,237,29,20,76,142,176,62,57,80,24,102,103,69,57,246,
-  153,148,82,73,89,102,19,86,83,88,170,94,76,63,157,248,36,229,140,83,110,39,202,228,179,75,124,120,217,92,138,195,180,87,30,247,208,63,250,196,
-  249,184,107,31,14,183,40,92,187,146,104,101,249,58,246,35,96,23,250,140,70,168,236,108,129,173,56,68,245,138,120,140,78,11,98,159,44,78,181,227,
-  51,132,45,89,50,253,75,101,202,244,44,228,84,43,251,9,91,94,203,195,116,113,203,220,106,113,192,147,122,69,190,243,114,221,198,25,65,166,72,211,
-  157,35,88,31,107,176,134,35,232,218,104,36,204,6,9,66,149,184,196,174,12,16,60,32,108,66,56,130,110,155,126,54,70,145,68,151,14,89,237,118,
-  162,5,155,97,147,36,39,105,79,245,73,150,72,78,90,91,8,113,58,175,44,196,31,117,84,61,104,84,65,16,158,153,183,119,247,212,227,110,79,131,
-  81,136,73,78,19,21,137,34,152,66,204,65,94,76,10,255,138,83,11,69,16,77,97,176,16,137,85,82,233,7,22,166,81,4,21,44,20,34,40,70,
-  34,138,65,80,16,241,165,176,177,178,145,160,136,57,176,48,101,26,49,130,184,206,190,187,139,57,127,102,152,189,217,111,254,247,237,222,75,110,161,6,
-  50,42,161,21,34,145,144,44,137,223,18,45,79,20,191,24,161,63,104,9,176,58,92,130,103,127,123,36,46,203,23,43,72,189,146,212,10,38,20,230,
-  126,199,166,107,176,252,85,75,26,176,114,68,54,242,139,21,89,41,82,43,229,151,40,34,97,38,46,216,66,68,125,125,229,98,49,210,149,108,185,28,
-  149,203,196,26,67,187,69,164,93,129,132,162,118,91,39,205,70,145,247,75,56,170,66,245,130,229,234,54,138,202,30,179,139,157,36,154,77,86,102,171,
-  149,69,6,153,139,197,98,225,32,113,95,20,137,108,40,110,176,13,53,230,101,70,112,151,225,130,49,30,25,99,247,213,224,70,224,222,27,183,5,123,
-  93,206,13,225,182,224,53,99,141,219,136,110,236,71,0,199,200,99,210,224,161,224,157,204,203,4,227,45,19,166,24,37,215,131,18,166,217,229,144,191,
-  202,234,114,114,115,27,82,200,159,220,124,228,180,198,61,78,205,200,156,140,241,171,96,78,220,84,224,38,101,65,110,178,187,147,113,93,205,56,230,186,
-  124,161,111,226,110,201,240,60,143,206,4,21,117,253,18,44,4,238,90,10,47,180,192,126,108,85,30,85,41,225,133,224,58,163,160,81,23,51,11,220,
-  182,51,230,251,28,243,200,85,30,153,224,16,231,112,143,113,137,241,148,53,72,27,125,47,216,234,102,3,204,49,14,224,20,174,112,56,38,13,78,238,
-  67,224,231,120,38,218,229,143,218,116,73,156,123,100,240,209,52,196,86,173,181,148,110,58,240,131,127,102,220,144,186,61,192,3,193,27,198,39,131,245,
-  206,186,159,6,93,22,173,164,93,183,86,134,102,159,176,110,92,143,61,122,2,103,97,103,187,43,223,249,213,97,76,167,170,167,90,250,207,140,217,48,
-  121,0,88,1,163,221,246,35,4,35,135,142,120,61,97,7,197,189,176,113,27,246,160,9,109,113,79,135,141,47,184,117,241,32,105,205,120,80,115,230,
-  75,104,50,20,98,84,159,130,53,113,198,63,164,106,42,5,59,209,220,139,67,104,214,92,1,76,245,149,169,241,124,220,137,37,23,28,108,146,91,230,
-  239,75,41,242,136,175,220,138,101,216,165,198,214,18,37,24,134,59,108,24,231,96,177,15,77,222,97,173,126,252,154,203,248,101,174,135,108,210,253,42,
-  143,197,219,144,143,55,225,56,161,224,6,200,36,35,245,211,120,190,146,33,100,224,27,113,61,52,190,218,143,146,165,74,122,105,59,72,235,65,72,194,
-  233,154,200,226,111,186,65,107,244,144,127,17,13,80,187,206,54,160,18,82,200,42,98,82,202,98,20,243,182,187,212,77,3,108,244,0,135,197,219,179,
-  222,135,158,171,61,171,168,215,91,52,206,172,52,65,24,24,253,195,50,180,38,225,61,254,200,213,214,164,250,25,149,250,46,100,175,123,15,175,153,69,
-  222,174,108,88,57,8,147,44,127,101,254,5,85,144,79,74,67,49,16,198,103,166,121,175,1,31,54,72,181,69,180,20,241,2,238,138,186,8,84,20,
-  170,160,180,210,149,224,186,107,15,208,111,35,162,43,197,141,27,193,59,232,1,114,20,183,158,34,206,188,87,23,254,146,73,230,239,23,200,100,135,148,
-  129,72,41,180,79,158,254,33,43,219,82,43,213,171,164,34,114,165,37,157,166,130,58,118,147,101,133,162,161,237,204,76,116,213,16,255,110,165,9,167,
-  211,32,33,196,208,204,175,208,162,102,130,205,106,49,196,142,130,49,230,120,96,124,10,126,24,47,140,121,222,120,227,54,81,191,231,19,183,27,172,211,
-  4,158,185,223,27,226,93,48,64,71,135,2,190,24,175,156,151,152,153,87,207,231,83,83,176,236,90,190,195,44,201,237,240,67,180,154,135,120,226,252,
-  40,218,122,134,65,94,87,1,147,168,188,146,238,25,23,105,145,150,233,136,210,24,231,206,247,61,121,219,53,110,101,93,253,184,180,135,77,8,157,196,
-  52,194,130,98,58,68,11,227,52,193,177,198,7,24,209,117,240,55,17,35,108,227,82,165,72,223,169,190,75,66,9,209,165,103,131,51,84,205,59,167,
-  95,235,88,207,150,43,92,233,218,78,60,123,170,23,107,133,170,150,223,117,69,40,2,117,213,42,241,22,255,2,93,79,177,74,3,65,16,157,153,44,
-  119,139,196,228,8,36,134,32,201,29,81,60,68,48,69,208,128,32,151,180,54,27,109,174,204,135,164,24,59,139,216,88,43,73,45,9,8,106,23,240,
-  16,75,43,123,201,117,246,22,182,231,100,57,27,223,219,217,121,143,121,203,50,167,219,32,104,2,149,138,64,162,52,64,17,28,248,67,67,106,237,100,
-  228,171,26,89,65,27,182,73,41,50,145,25,156,67,5,162,104,208,239,71,253,161,25,6,129,17,140,214,151,145,80,69,114,228,85,200,72,196,194,120,
-  68,1,81,59,104,3,49,234,227,158,203,79,152,149,248,3,175,112,4,198,111,249,177,171,121,142,92,142,33,220,235,28,186,33,0,79,145,171,92,205,
-  218,124,47,34,219,229,35,190,163,236,132,207,98,190,164,58,68,91,161,215,138,229,77,182,201,7,105,138,171,46,123,171,110,250,137,47,23,146,147,51,
-  65,29,149,117,178,32,222,231,5,205,241,29,203,75,4,15,150,168,117,114,93,128,177,150,189,181,238,137,123,148,205,184,153,60,16,240,14,240,55,242,
-  13,194,27,38,175,116,139,99,221,153,96,221,23,247,76,220,128,244,139,166,53,152,213,146,148,32,253,193,89,70,236,176,98,178,116,242,46,252,15,249,
-  202,3,251,33,74,145,34,165,21,90,130,143,170,144,83,156,202,115,107,101,231,191,99,201,97,96,96,80,84,100,100,92,192,220,192,255,159,175,129,255,
-  192,73,102,134,3,98,12,13,108,13,76,32,204,192,194,192,2,0,77,77,45,79,3,65,16,157,153,91,142,37,105,232,6,170,8,129,83,168,10,100,
-  5,33,215,26,144,87,5,178,252,139,202,23,62,10,226,66,16,164,152,162,74,130,33,41,130,4,228,74,144,252,3,248,11,8,236,50,123,105,75,223,
-  100,102,94,102,222,155,217,223,52,59,142,42,164,154,18,73,131,230,216,32,50,213,44,110,26,36,171,217,84,23,135,134,168,67,212,61,41,186,237,162,
-  40,122,69,222,142,40,22,209,137,214,53,89,119,78,159,228,121,78,228,156,84,102,209,209,13,227,73,240,205,187,238,240,136,158,121,194,173,55,126,101,
-  2,103,173,9,103,118,185,122,108,53,193,189,3,220,11,2,99,200,97,36,232,99,47,124,50,234,74,94,24,219,24,176,231,190,231,240,46,74,49,144,
-  40,27,51,154,24,10,30,5,99,14,31,130,11,61,125,201,106,24,177,63,19,127,39,231,172,231,45,89,237,54,22,103,169,105,231,40,217,17,78,69,
-  165,216,66,61,88,194,10,126,212,225,175,5,73,201,183,92,50,44,18,127,165,251,144,144,127,248,151,126,253,170,14,41,68,51,157,119,129,145,25,232,
-  152,13,155,89,165,138,201,66,212,166,65,86,247,134,106,137,89,210,80,102,76,197,254,0,101,81,189,75,195,80,16,191,123,121,38,143,58,52,84,39,
-  17,109,169,160,67,7,39,17,92,94,50,234,146,20,135,110,214,73,255,11,111,16,236,40,136,117,205,80,113,17,116,168,232,32,18,80,17,113,173,131,
-  91,54,87,23,231,120,151,170,245,227,46,239,126,31,239,222,75,142,172,79,3,232,37,24,133,26,49,161,122,200,43,0,83,224,202,230,36,168,18,64,
-  181,216,113,127,29,248,36,236,219,102,168,130,56,14,54,109,28,54,195,48,12,2,27,112,88,27,216,118,20,217,56,10,98,27,197,17,211,38,170,74,
-  165,98,1,34,203,42,226,227,190,226,168,213,185,56,19,78,189,86,119,38,24,184,103,225,10,143,144,14,157,55,220,242,203,254,70,100,188,214,9,158,
-  35,97,117,182,186,124,134,213,125,228,146,225,62,2,180,59,232,109,95,98,138,15,104,248,198,101,143,214,104,134,202,180,135,212,197,43,204,111,20,221,
-  98,7,219,151,195,194,130,125,113,155,244,164,168,145,191,115,73,186,72,199,152,237,228,47,138,252,228,80,229,143,10,216,72,14,196,166,88,164,104,224,
-  147,252,244,208,152,244,94,245,249,125,146,243,62,24,211,67,240,65,164,129,59,236,163,111,64,186,68,15,80,118,253,116,192,87,238,58,0,215,72,165,
-  244,89,157,114,143,44,166,52,206,206,5,3,80,25,178,87,149,55,50,143,89,194,133,202,249,74,154,177,83,140,36,114,53,201,229,99,52,185,164,62,
-  151,203,106,132,95,249,147,255,201,127,129,67,112,10,116,196,208,176,0,115,252,119,27,60,147,134,69,65,25,87,150,171,37,193,40,61,86,224,119,106,
-  206,22,104,228,100,108,161,118,138,142,15,157,84,205,107,19,81,16,159,153,221,212,53,196,118,179,9,82,176,148,150,22,82,177,130,199,130,5,55,57,
-  85,60,152,20,15,161,180,55,15,22,60,139,120,144,1,165,214,67,109,233,135,244,80,76,165,41,136,21,43,234,65,80,112,5,61,88,47,226,63,144,
-  222,244,224,73,68,123,242,57,243,54,107,154,210,147,243,242,222,204,252,230,227,55,155,108,222,99,236,1,0,34,200,139,242,201,135,195,132,218,61,58,
-  24,218,15,12,55,181,75,7,138,211,144,166,180,141,64,79,172,58,14,235,126,208,181,153,177,248,64,129,76,152,21,9,229,236,207,102,125,145,98,177,
-  82,41,82,80,162,96,188,20,32,2,102,43,69,196,108,185,8,88,42,171,248,125,190,95,214,2,20,216,151,226,74,177,92,14,181,22,32,24,31,15,
-  66,53,252,32,8,180,91,160,58,8,67,45,81,88,85,24,218,185,2,153,172,127,32,151,27,32,49,85,43,106,129,28,145,5,114,73,7,190,131,230,
-  10,223,228,32,154,67,190,143,102,6,163,223,196,157,230,24,119,250,252,154,244,211,107,62,18,63,81,253,2,121,19,121,194,108,56,158,119,100,29,199,
-  204,26,153,21,220,69,51,71,166,142,175,112,196,108,145,52,228,81,115,86,118,29,23,176,170,181,251,77,111,15,117,24,225,81,119,135,96,27,191,105,
-  189,18,140,42,52,205,163,58,71,39,119,129,244,150,158,23,71,70,204,87,18,96,135,248,130,217,67,14,204,60,174,227,25,33,127,132,90,118,157,79,
-  155,207,14,223,147,54,40,243,10,25,247,242,75,125,26,158,54,207,157,196,180,12,140,179,246,49,87,146,105,37,127,141,218,16,244,120,30,121,152,87,
-  145,175,153,119,50,35,154,37,228,163,188,133,141,25,251,252,155,8,194,81,59,101,22,144,63,209,219,47,88,59,222,196,120,13,249,3,242,121,115,155,
-  26,55,90,169,162,106,223,137,151,28,243,7,27,125,45,240,208,49,163,135,196,14,119,64,244,148,162,7,98,70,139,4,124,14,234,24,109,83,244,19,
-  65,130,25,144,47,71,140,33,121,207,192,220,69,158,2,206,179,188,177,156,183,25,189,90,32,14,196,24,188,199,73,79,132,51,90,203,87,61,224,148,
-  237,234,240,32,72,1,119,201,42,112,55,128,39,233,41,238,146,17,128,11,96,82,90,189,138,50,6,196,201,74,243,67,127,63,94,212,83,231,43,44,
-  227,27,140,110,145,204,160,244,207,116,226,196,91,198,161,104,67,255,36,76,124,66,130,117,226,193,117,223,76,242,148,16,166,106,37,161,228,124,99,34,
-  118,99,150,2,103,146,56,167,205,73,137,155,203,137,187,251,203,146,206,98,220,177,195,110,61,19,187,101,185,114,186,86,199,54,181,197,255,107,237,19,
-  164,118,145,127,171,133,28,17,108,58,106,59,54,232,201,173,224,201,69,210,90,174,61,135,192,69,87,236,170,216,151,100,229,37,171,42,119,156,108,116,
-  147,245,47,187,106,79,79,186,121,130,74,54,198,182,108,89,99,114,137,185,98,103,64,183,139,162,83,110,74,48,114,19,45,215,157,70,99,158,68,119,
-  131,219,236,239,170,45,204,61,144,240,90,102,180,152,158,237,253,208,253,11,117,82,61,107,84,65,20,189,247,190,113,223,184,251,216,55,110,10,23,201,
-  46,187,138,168,96,32,16,197,38,194,190,109,83,184,218,25,82,36,144,38,18,176,240,15,28,155,84,17,252,8,86,65,87,76,58,177,48,41,45,6,
-  27,131,85,172,76,25,108,253,5,86,227,157,247,18,89,252,184,247,205,253,56,115,206,97,138,247,208,209,63,35,35,67,109,33,50,134,106,117,115,138,
-  10,153,178,10,213,117,148,10,106,19,213,98,183,173,184,215,204,9,43,134,109,150,173,94,105,34,60,250,29,206,77,156,193,128,250,228,184,69,206,13,
-  138,162,232,247,93,127,101,120,175,40,70,189,222,50,243,221,145,27,173,20,81,67,3,231,90,67,71,226,220,48,58,187,209,64,45,227,16,211,197,78,
-  78,68,146,132,46,41,71,142,152,110,229,105,154,223,105,95,13,247,67,231,207,122,192,41,54,146,112,14,47,25,139,161,137,46,190,49,94,8,186,189,
-  67,182,46,116,208,13,29,114,105,218,35,138,163,35,204,91,139,53,149,121,238,149,54,77,207,225,137,32,71,158,19,102,84,177,128,53,194,215,36,52,
-  203,220,96,123,200,225,64,102,211,136,253,100,252,224,240,158,49,230,240,152,241,72,175,149,95,146,63,36,216,73,74,1,46,135,105,92,31,47,16,110,
-  142,167,94,207,69,195,176,199,55,108,21,250,144,20,127,213,245,89,255,153,209,194,174,248,93,193,52,249,61,241,159,4,243,59,188,205,75,132,140,176,
-  136,117,58,239,246,217,45,33,67,178,236,159,11,237,179,245,95,100,213,174,110,114,233,116,123,139,145,250,55,130,62,249,87,66,184,130,167,66,239,216,
-  63,19,204,148,153,127,84,59,228,219,236,34,118,17,13,24,92,195,20,46,32,31,127,151,138,23,81,101,250,183,130,14,29,31,9,156,122,97,46,52,
-  142,183,132,252,3,136,106,4,181,137,115,186,79,100,140,68,132,245,99,45,98,196,156,53,13,147,153,166,177,134,12,219,186,158,255,117,49,100,53,245,
-  119,48,26,108,162,58,34,70,123,82,221,217,51,113,58,225,171,50,99,197,37,110,25,217,18,81,53,103,218,173,86,19,111,126,1,77,82,61,72,92,
-  65,16,158,111,223,248,222,38,200,221,26,48,94,17,222,121,32,34,162,144,164,73,138,144,123,79,4,33,164,184,179,177,84,75,43,75,75,7,82,4,
-  108,68,11,83,93,103,149,52,33,77,174,16,110,9,151,38,245,21,218,9,41,114,101,58,33,205,102,119,159,158,206,199,252,125,223,204,108,179,239,12,
-  61,176,154,74,125,160,84,41,14,237,242,3,73,77,82,168,212,124,104,22,41,142,209,51,154,246,209,120,235,120,35,179,211,217,161,150,103,90,173,40,
-  251,39,128,86,183,220,45,186,221,110,89,22,69,81,174,173,109,2,101,152,47,194,154,185,159,11,157,252,83,174,238,114,119,6,162,237,75,56,227,62,
-  36,22,3,144,252,72,228,119,34,87,202,237,187,49,108,46,53,185,81,178,46,167,202,211,238,173,187,80,114,174,228,165,12,147,195,195,253,215,175,138,
-  239,104,204,53,198,232,163,189,53,70,123,227,64,126,38,110,132,76,70,33,21,3,252,69,85,202,71,184,63,74,222,248,107,238,219,237,173,19,184,207,
-  168,206,85,236,100,242,139,178,153,212,3,180,214,36,169,60,34,173,229,8,246,23,164,7,201,165,110,123,32,251,9,50,132,237,195,30,67,30,203,11,
-  97,81,246,105,216,90,34,29,209,120,111,180,110,26,237,175,237,153,16,200,172,203,140,79,146,147,61,131,172,86,155,77,121,18,119,191,66,158,95,207,
-  70,217,191,169,162,87,72,39,49,141,184,227,21,128,132,153,83,54,17,13,6,215,152,162,147,175,193,100,18,166,5,223,25,90,241,110,136,167,56,225,
-  105,175,50,251,63,192,89,80,98,157,241,127,19,19,96,0,3,1,6,37,45,6,6,38,38,59,32,139,65,140,33,0,2,24,133,4,28,19,131,28,
-  29,5,32,96,6,35,68,113,195,119,166,255,25,13,50,23,24,237,57,38,48,94,96,100,104,208,109,144,249,47,221,160,11,100,244,48,114,128,193,129,
-  215,140,12,7,254,51,214,8,176,183,48,182,48,30,152,201,212,192,15,228,54,72,1,41,16,187,129,165,129,13,2,153,152,88,89,32,144,25,12,89,
-  89,24,4,64,60,6,21,6,30,160,91,64,36,16,3,0,109,82,177,110,19,65,16,157,153,91,110,151,96,225,227,144,200,21,1,206,200,160,20,64,
-  28,41,69,10,75,113,66,99,160,136,101,81,209,36,39,132,171,40,202,39,188,2,137,46,127,16,41,72,41,233,144,210,128,148,45,233,161,72,25,254,
-  130,110,153,61,251,2,182,152,185,217,121,251,246,205,206,172,116,135,25,45,90,75,132,200,69,62,213,48,212,122,240,247,76,22,145,106,69,102,251,252,
-  250,216,68,212,21,205,68,43,211,157,68,150,70,148,13,70,115,54,160,206,157,124,90,85,143,50,232,116,42,166,172,122,241,110,60,38,218,158,25,113,
-  157,84,81,86,213,168,26,15,182,119,70,59,205,21,148,103,89,115,1,51,169,139,126,202,13,195,123,76,154,129,183,136,172,166,125,244,112,16,202,240,
-  10,31,25,247,224,112,46,56,196,177,132,47,140,31,28,126,49,78,19,44,127,103,149,13,203,240,137,209,198,100,127,207,22,187,200,49,41,31,102,155,
-  78,77,241,7,142,104,15,137,10,207,4,63,229,146,139,182,117,186,46,95,178,187,226,89,87,156,37,225,54,250,218,44,92,48,126,11,10,124,147,185,
-  118,53,113,146,132,2,95,147,176,161,35,125,78,194,35,172,55,53,6,109,90,117,115,182,130,45,63,198,1,249,30,158,147,206,215,246,119,117,32,139,
-  39,254,152,169,239,245,149,145,164,225,154,163,77,255,152,168,160,186,204,91,188,141,185,240,214,111,144,183,134,202,85,219,165,242,105,102,148,237,69,197,
-  46,186,16,173,246,71,254,217,63,215,190,86,252,6,47,181,105,63,220,87,81,47,220,186,74,99,147,20,6,162,235,52,34,150,154,251,159,167,215,186,
-  169,74,93,88,26,99,195,38,53,214,56,115,211,44,213,158,43,106,240,146,185,161,231,137,78,204,70,127,35,197,162,140,209,32,23,177,40,23,131,28,
-  153,5,119,98,90,90,23,215,63,117,81,191,107,20,81,16,158,153,123,220,189,92,78,178,156,49,174,230,76,54,114,144,3,19,12,24,49,133,224,238,
-  5,69,145,152,119,75,138,84,193,116,135,8,57,68,16,43,191,66,208,70,240,63,72,64,132,136,138,150,1,155,197,20,86,98,233,143,42,173,149,41,
-  237,158,179,123,71,18,2,206,247,222,204,219,111,190,157,121,179,251,148,27,68,166,78,85,209,64,68,103,169,176,6,29,53,57,118,84,39,198,30,203,
-  73,65,23,69,14,44,160,178,42,171,135,50,161,49,165,142,212,233,119,117,113,59,127,138,99,93,1,185,190,117,18,23,59,151,116,214,59,157,180,157,
-  198,46,137,147,78,146,180,23,219,113,162,193,173,167,177,166,211,52,109,183,157,10,227,252,21,146,160,174,139,152,3,102,42,73,14,189,4,145,230,181,
-  139,211,27,5,253,123,113,189,84,10,88,74,139,253,83,80,175,63,231,185,17,124,18,188,53,132,159,178,199,95,24,179,241,14,251,207,236,187,131,89,
-  239,174,186,185,111,28,245,30,61,1,147,109,117,33,155,188,218,221,228,5,103,163,15,178,207,91,50,105,109,244,146,91,147,219,178,45,144,141,74,232,
-  254,240,71,233,70,91,188,201,189,13,5,97,159,243,53,129,93,198,8,225,133,129,193,188,111,169,31,243,85,127,77,227,240,96,191,103,63,143,37,188,
-  19,188,41,109,75,60,141,89,220,14,50,246,59,162,156,255,37,232,225,55,107,206,15,164,127,25,15,252,138,191,236,191,50,94,11,22,253,188,127,37,
-  61,236,10,206,251,53,63,229,191,107,67,157,204,255,16,245,51,100,179,229,173,251,89,136,199,205,0,245,102,132,10,172,177,246,166,181,54,255,249,150,
-  66,107,201,158,166,176,161,195,135,100,237,116,84,105,180,172,189,210,140,42,51,205,166,38,201,6,170,108,169,212,18,238,32,204,150,113,138,112,17,15,
-  51,157,130,242,17,114,119,242,112,162,236,22,174,103,75,168,102,207,184,145,55,197,120,131,112,6,85,220,32,82,14,99,133,96,5,23,252,36,34,76,
-  100,41,174,250,25,204,146,22,158,242,195,168,97,100,239,18,101,247,8,101,136,86,204,125,121,224,77,1,57,136,229,131,221,87,28,50,197,89,114,99,
-  22,150,255,27,141,82,109,200,228,168,12,64,1,27,54,202,47,136,161,5,133,41,41,71,77,49,92,160,248,18,53,178,108,250,70,186,149,173,81,112,
-  206,140,231,217,144,28,69,250,70,77,17,22,126,116,200,148,205,9,213,253,3,125,83,77,104,93,85,16,158,153,115,222,123,87,155,144,211,151,71,82,
-  225,153,92,177,180,23,154,66,105,75,35,24,244,222,215,133,177,181,244,230,197,146,180,171,116,211,133,136,4,17,116,249,181,208,106,139,138,43,121,162,
-  139,84,17,196,159,133,85,72,119,61,184,18,87,21,55,69,144,188,93,5,33,237,166,221,149,211,57,247,37,33,253,193,57,51,115,230,231,155,57,115,
-  207,189,247,42,31,36,162,33,17,25,26,162,54,61,78,66,79,33,121,196,146,200,66,86,6,214,38,213,55,1,79,109,241,68,183,86,157,108,61,162,
-  173,84,53,205,170,157,165,132,200,69,135,74,230,82,201,113,81,148,69,110,154,221,78,183,123,212,24,102,38,101,226,179,197,220,92,49,87,228,69,222,
-  233,104,160,168,168,83,158,45,186,101,167,179,180,148,119,28,73,153,119,83,42,43,202,115,231,92,179,217,204,187,138,118,228,28,211,11,163,198,40,55,
-  149,71,141,166,84,73,20,142,41,161,188,36,151,19,229,213,124,74,241,169,197,53,217,24,236,199,241,112,12,199,241,189,193,186,252,46,184,103,148,251,
-  188,55,153,197,159,38,252,32,61,78,199,243,36,92,226,112,209,220,228,217,53,89,186,206,152,32,220,178,152,9,223,24,252,43,152,209,22,247,44,238,
-  219,240,177,205,95,91,112,43,178,42,105,79,210,236,134,228,184,109,49,17,190,180,47,53,22,220,120,154,46,46,158,28,207,175,243,26,247,100,50,223,
-  139,95,12,238,152,112,44,41,39,99,245,3,163,168,197,91,188,42,48,175,226,43,139,15,194,186,193,175,140,15,89,117,143,71,50,92,176,20,206,91,
-  220,229,120,238,254,112,129,241,15,135,158,132,255,4,22,135,67,166,122,12,39,195,105,149,47,56,60,139,177,240,28,62,103,61,39,252,21,243,211,184,
-  89,11,127,215,208,13,167,240,45,227,188,37,156,11,87,25,63,115,184,38,248,196,232,72,247,227,61,124,198,120,19,251,190,99,252,40,248,67,176,106,
-  113,133,195,111,140,107,181,240,62,214,45,214,172,222,219,3,27,158,143,163,5,198,25,124,93,11,11,234,172,156,192,228,141,81,76,249,121,63,255,134,
-  95,246,203,173,217,54,97,24,233,46,253,26,146,240,17,227,21,151,108,88,151,217,31,36,8,134,169,210,216,73,154,137,48,74,166,15,84,169,52,66,
-  105,186,157,186,100,42,73,90,217,238,180,127,164,127,132,118,83,230,95,196,206,116,3,142,148,48,130,247,48,66,51,142,252,97,52,160,143,53,76,168,
-  227,25,12,199,43,33,236,136,202,198,140,174,29,106,234,145,213,54,208,254,40,18,29,161,133,38,38,252,203,237,3,254,93,63,175,99,55,218,253,215,
-  49,231,247,16,46,178,255,137,201,191,227,75,164,254,4,246,96,164,127,200,191,229,63,229,120,114,93,151,85,145,74,164,242,99,100,211,182,143,104,217,
-  178,7,187,221,170,216,158,151,109,29,54,101,123,95,217,34,253,141,132,163,193,242,127,52,200,154,13,143,50,93,73,205,214,173,181,212,98,203,186,71,
-  45,86,255,216,140,86,200,139,122,117,75,111,179,53,131,232,16,217,136,167,172,94,33,141,86,140,169,223,80,75,179,51,250,34,6,184,164,97,7,221,
-  105,89,107,50,141,76,209,46,205,196,168,115,90,241,16,141,82,61,104,20,65,20,126,111,102,238,110,252,195,217,61,33,22,122,30,120,232,21,74,82,
-  8,9,24,114,187,151,192,45,40,184,119,32,216,73,208,66,176,9,136,36,54,250,16,212,8,26,66,192,68,196,66,208,78,193,128,105,236,22,27,127,
-  42,177,17,177,136,86,10,130,218,217,168,227,155,217,205,105,17,209,247,110,223,251,222,255,204,155,123,140,109,0,208,33,236,128,191,144,128,127,210,186,
-  41,225,58,190,114,145,255,31,61,215,186,214,24,24,225,218,137,190,83,129,102,153,50,69,105,58,25,27,99,48,78,187,113,154,198,147,147,213,170,232,
-  245,122,39,170,213,221,136,24,1,154,56,64,8,0,226,56,234,118,227,184,27,197,44,157,106,183,219,227,136,16,5,1,68,241,26,177,179,157,166,198,
-  83,148,254,38,103,135,97,24,25,68,55,141,85,224,92,65,16,56,232,127,76,161,8,67,193,151,51,85,41,171,197,77,133,112,139,200,133,48,33,6,
-  82,38,243,248,26,231,113,25,111,10,32,113,196,62,65,123,25,105,78,216,27,88,31,24,156,186,48,139,205,99,77,251,76,1,221,147,75,216,154,197,
-  142,61,5,116,5,105,134,70,105,5,35,251,65,48,88,68,109,239,11,122,133,100,209,190,148,14,204,137,150,25,89,197,250,169,161,85,108,214,155,51,
-  157,244,11,78,113,183,74,197,184,242,26,189,16,218,254,144,12,190,72,221,49,3,245,189,67,195,145,62,66,88,169,204,10,176,171,146,253,246,179,164,
-  159,210,101,93,87,173,37,62,102,229,41,38,201,208,244,76,5,104,63,15,229,67,28,178,207,5,171,55,98,25,233,163,176,146,8,237,39,193,209,21,
-  164,91,72,155,72,209,184,125,136,246,146,164,175,200,238,247,104,47,34,29,176,195,92,110,239,32,245,236,81,187,145,166,236,25,150,115,200,217,92,225,
-  146,71,237,35,119,25,190,91,205,21,94,241,107,89,244,50,164,239,72,11,210,118,232,45,210,19,201,45,233,144,75,152,166,7,200,107,163,219,104,207,
-  210,53,97,239,250,236,243,108,252,224,249,174,7,125,19,238,212,249,142,7,217,49,1,6,70,79,106,101,104,11,213,128,6,65,107,247,119,210,96,151,
-  144,182,210,160,54,160,237,57,70,167,179,221,252,60,64,91,250,210,11,159,235,75,114,0,195,90,55,125,170,206,227,166,136,235,142,214,90,177,211,21,
-  230,223,118,237,166,249,58,77,117,6,180,128,0,141,108,136,248,177,55,184,9,126,25,192,170,4,222,116,176,146,171,77,191,5,239,235,32,240,233,129,
-  143,185,53,27,227,125,105,103,101,53,234,81,43,219,149,237,201,26,116,21,33,59,78,181,44,118,183,20,12,198,28,224,188,119,141,108,22,179,11,84,
-  179,59,185,176,236,89,48,231,58,199,162,240,151,121,90,110,171,34,170,250,159,250,195,22,222,46,255,229,83,253,126,107,125,214,147,121,15,85,228,123,
-  46,72,74,137,5,137,62,229,166,236,219,107,91,23,74,40,80,88,48,36,14,131,227,4,18,84,133,149,56,63,236,243,58,231,29,185,46,169,146,194,
-  134,226,12,81,212,162,146,174,162,14,28,129,145,178,226,39,101,15,251,140,242,90,184,152,230,140,38,108,243,19,29,222,12,13,246,26,70,219,93,37,
-  219,190,27,243,4,28,46,185,154,228,23,93,83,205,139,211,64,20,127,47,25,211,177,91,210,176,148,108,22,106,183,126,65,15,91,140,176,176,130,139,
-  78,162,216,130,139,68,17,235,246,32,155,163,224,189,123,124,158,188,121,16,241,60,151,253,15,60,20,188,4,4,143,250,23,8,30,61,120,244,30,223,
-  76,218,52,235,251,250,253,242,222,155,121,195,12,121,139,1,52,164,195,46,36,248,82,0,120,157,104,83,112,172,173,105,245,237,172,83,22,132,104,27,
-  240,170,140,211,220,53,100,111,59,171,180,193,158,73,0,72,91,205,154,146,168,44,67,0,165,130,64,1,228,89,146,228,79,147,156,69,169,36,83,137,
-  82,105,154,154,62,165,84,166,242,60,49,146,166,85,76,79,121,113,22,24,1,133,128,142,235,110,91,51,35,3,107,236,25,172,24,186,110,213,59,128,
-  51,101,79,18,179,223,203,84,172,23,250,5,141,191,225,43,253,7,105,176,68,125,69,223,12,229,104,170,64,142,226,29,25,46,81,62,33,148,163,232,
-  7,254,198,238,39,156,190,188,53,124,143,147,37,62,242,135,126,176,51,148,123,45,3,123,97,232,5,173,22,232,15,72,239,172,157,99,121,66,71,190,
-  14,203,118,233,210,181,178,77,97,185,203,241,160,60,228,248,140,132,62,71,250,130,229,130,198,250,186,254,142,244,154,22,244,25,245,95,151,79,82,222,
-  141,27,229,13,251,136,244,19,105,254,255,20,126,70,89,75,95,222,137,138,7,69,76,131,55,71,197,140,14,163,98,86,204,4,95,131,140,249,21,34,
-  232,41,232,48,29,206,84,212,139,101,4,125,57,237,139,211,99,174,201,137,124,206,48,121,120,44,50,222,136,134,212,165,57,251,24,250,197,1,109,145,
-  160,219,180,5,12,117,40,238,211,128,30,83,151,71,92,37,159,155,253,226,43,242,208,221,160,174,52,113,254,235,70,189,37,121,86,157,6,86,190,86,
-  143,103,24,23,53,91,231,47,244,162,21,231,130,68,194,21,151,5,174,180,195,234,113,198,40,8,190,129,128,149,185,96,110,234,156,19,45,113,73,56,
-  150,113,221,34,218,126,111,147,151,188,106,159,255,154,192,226,254,166,242,15,37,73,33,14,194,64,16,156,93,46,229,130,32,117,109,8,226,20,156,32,
-  193,34,175,24,42,107,234,175,174,143,168,56,209,132,62,0,137,228,13,104,30,195,47,48,12,116,118,102,119,102,214,109,55,32,172,129,66,119,92,97,
-  5,100,208,53,75,37,181,137,77,248,163,146,170,235,194,25,33,204,156,129,88,239,251,139,159,100,146,101,158,174,226,163,141,54,125,196,23,12,236,104,
-  81,251,227,169,136,145,246,33,163,148,206,230,35,175,187,73,106,135,1,119,193,235,185,24,202,212,178,163,27,197,91,254,92,249,22,166,148,113,244,39,
-  129,65,142,131,26,53,95,85,81,187,74,67,65,16,157,51,46,55,131,4,115,137,175,128,168,177,75,161,144,194,226,150,123,211,9,22,49,8,90,88,
-  68,72,35,88,248,9,83,4,177,72,97,33,152,34,118,218,89,90,88,40,110,153,198,47,16,193,198,214,194,66,203,235,108,180,113,14,243,58,103,246,
-  193,238,86,74,127,86,54,119,180,96,81,136,89,164,58,169,136,216,96,68,44,22,40,97,154,225,233,132,173,119,81,155,97,71,73,28,17,106,255,154,
-  111,123,239,59,107,220,77,201,123,242,148,231,126,39,207,15,219,135,157,86,203,231,185,169,121,215,34,165,169,39,147,169,202,54,70,113,150,96,37,210,
-  120,161,115,144,175,212,22,155,251,245,186,62,179,46,53,181,64,177,188,119,82,92,97,12,253,196,208,48,70,41,45,157,65,26,105,128,229,172,68,54,
-  126,134,70,64,77,191,153,244,232,28,122,203,250,130,223,124,197,186,174,55,160,19,173,23,143,48,186,209,182,160,35,132,83,126,122,135,148,244,3,182,
-  104,83,204,178,148,228,32,147,213,112,205,69,118,172,211,58,39,3,232,198,5,140,232,163,143,1,132,100,87,252,98,31,178,237,101,123,55,147,94,179,
-  71,225,30,58,4,245,194,29,194,43,38,233,11,225,210,152,134,174,104,197,184,1,70,81,210,44,60,112,161,182,83,221,186,183,145,29,156,40,79,144,
-  168,51,255,7,142,6,160,234,102,221,188,19,131,189,189,176,67,204,53,251,183,50,77,56,184,138,155,50,197,197,174,22,227,15,93,80,49,74,67,65,
-  16,157,55,174,241,147,164,88,62,98,64,146,66,211,72,138,4,65,59,145,213,19,124,36,96,253,171,92,194,98,142,144,218,51,108,21,62,86,41,150,
-  144,35,8,90,120,0,75,111,48,238,36,95,144,188,199,123,243,120,204,110,49,83,79,45,60,157,57,231,38,57,49,223,155,19,117,157,185,201,243,126,
-  169,250,3,202,80,86,161,174,235,167,199,7,123,28,178,133,170,77,33,236,127,108,64,52,219,197,244,198,58,115,233,27,119,243,136,171,231,226,37,34,
-  149,242,10,13,186,24,202,18,122,155,126,48,31,28,116,55,67,189,144,21,116,160,35,189,212,69,68,209,34,109,88,202,119,164,15,222,162,65,132,47,
-  78,214,88,35,125,177,140,228,92,198,13,164,39,215,233,147,27,248,131,50,194,38,229,234,84,58,50,206,234,8,155,179,193,25,139,127,100,71,59,30,
-  231,219,28,57,234,147,169,255,11,117,84,77,107,20,65,16,173,215,211,155,140,75,200,246,46,146,172,129,172,27,16,221,67,130,130,130,57,120,152,73,
-  130,1,35,102,54,94,84,68,20,60,40,40,241,230,30,60,20,30,116,193,47,16,141,23,9,65,12,57,196,139,40,34,42,76,139,135,248,3,84,200,
-  77,17,52,224,69,68,240,230,88,61,251,225,170,177,222,116,117,117,213,235,170,234,158,97,158,192,208,63,210,75,255,19,213,39,42,75,90,101,55,54,
-  28,254,186,44,250,127,130,245,93,170,101,184,252,212,245,23,61,75,52,32,246,128,44,165,114,74,8,140,8,165,35,106,72,96,128,230,147,7,242,50,
-  3,5,47,69,129,200,17,100,99,20,84,171,97,56,51,52,36,199,70,53,148,69,20,70,81,56,51,38,32,180,128,80,36,8,195,131,99,227,227,99,
-  14,212,142,84,195,166,24,131,232,4,64,170,156,207,231,3,67,106,134,92,63,5,17,101,220,172,76,185,96,210,146,81,68,174,211,2,60,226,82,50,
-  200,35,60,149,244,38,195,156,75,177,136,227,244,25,181,226,142,21,28,226,146,213,124,13,241,69,200,60,27,159,20,93,141,247,242,154,138,63,42,222,
-  153,156,178,1,223,247,226,183,158,219,24,87,236,21,196,23,236,217,248,152,157,142,3,18,223,99,76,27,90,0,127,82,124,90,148,152,119,80,171,44,
-  161,14,78,192,35,201,249,228,17,36,178,170,110,160,216,95,236,47,7,126,140,238,58,206,21,39,87,192,37,158,67,114,9,92,75,78,241,145,100,31,
-  239,145,14,75,252,92,149,111,96,212,76,142,94,198,230,218,172,31,236,222,177,173,44,238,220,95,180,53,245,3,181,58,126,192,49,166,249,186,34,57,
-  87,255,130,74,150,21,79,73,101,169,187,166,248,21,220,250,129,242,249,131,180,67,210,243,117,37,183,33,139,92,242,76,241,30,177,146,219,144,99,8,
-  147,107,146,250,174,59,200,28,100,139,28,192,81,110,123,201,112,242,19,252,14,114,184,247,200,241,37,237,158,54,221,174,170,228,50,246,115,134,179,156,
-  33,6,247,54,111,185,66,190,159,126,174,252,66,238,150,108,246,183,98,45,141,100,3,214,98,54,238,85,252,237,241,5,246,13,56,227,155,91,32,251,
-  13,118,78,217,239,184,10,247,225,251,100,231,65,172,165,86,200,89,35,235,180,132,191,93,70,206,62,148,80,174,227,201,186,184,144,182,185,78,28,236,
-  61,252,65,216,228,82,166,33,73,43,157,28,246,143,178,33,238,227,93,118,17,220,205,134,7,79,58,199,160,177,79,145,26,114,177,91,41,61,94,137,
-  151,64,196,55,69,217,215,144,72,151,219,115,128,135,236,18,164,241,51,190,253,10,251,18,239,151,29,161,14,59,47,47,168,139,85,123,232,84,187,89,
-  117,160,17,237,140,117,238,233,228,233,14,94,87,27,173,184,110,198,117,7,175,197,104,51,255,16,79,173,47,164,229,15,32,200,104,79,67,108,232,110,
-  209,238,206,122,196,75,21,42,83,145,140,167,229,213,183,87,18,47,139,158,72,209,35,208,41,42,130,45,90,187,125,144,108,20,165,72,243,83,15,26,
-  115,3,126,163,82,195,227,216,27,210,149,192,229,218,72,19,240,169,220,242,255,2,125,83,191,79,84,65,16,158,217,125,247,178,18,34,235,133,152,139,
-  209,67,43,175,128,64,161,137,133,197,59,174,208,4,147,219,187,198,43,76,200,85,248,7,144,72,97,49,133,17,44,80,26,144,194,194,226,12,38,88,
-  16,181,80,11,125,160,141,37,177,128,78,136,133,196,230,104,140,229,58,179,239,29,63,34,113,102,118,102,239,155,249,102,118,247,238,158,162,133,99,98,
-  225,34,251,40,86,22,12,111,12,156,44,234,31,64,169,147,51,103,179,16,159,64,238,203,99,108,163,98,128,101,218,185,252,28,61,113,65,172,114,46,
-  113,140,59,87,173,214,106,151,130,64,187,237,92,187,221,104,184,96,205,102,179,154,84,217,18,246,227,53,214,241,90,146,96,38,103,68,184,204,53,170,
-  141,70,226,26,114,211,98,179,105,57,88,91,84,69,22,153,214,139,138,161,112,12,85,180,69,25,205,45,52,11,117,52,128,95,68,223,65,122,113,232,
-  71,183,113,11,183,177,238,232,67,68,51,239,212,228,115,236,34,237,105,177,5,124,137,176,131,245,86,157,22,53,141,208,44,210,128,223,86,52,226,119,
-  176,50,4,107,216,50,30,151,241,198,205,210,79,36,44,37,91,56,135,110,7,75,179,106,1,43,51,93,172,76,237,99,233,94,216,141,37,210,95,136,
-  52,65,187,232,215,53,199,175,145,127,31,209,67,45,167,234,226,154,154,108,77,222,77,186,232,150,249,8,134,54,52,237,163,127,45,131,31,171,219,117,
-  174,163,137,192,247,171,10,232,143,226,13,119,217,69,186,206,0,109,106,90,10,109,151,144,94,41,255,93,211,91,148,125,214,189,131,254,2,63,128,116,
-  243,232,231,21,213,88,127,105,234,106,225,126,210,254,163,166,213,200,111,96,239,1,126,71,66,91,68,250,129,254,77,232,184,174,211,57,190,63,43,82,
-  129,250,178,85,225,47,222,64,202,21,215,238,27,99,210,111,40,214,81,183,204,3,180,3,150,25,64,108,101,160,2,24,91,130,80,46,118,217,194,116,
-  248,157,26,70,70,5,54,112,231,25,166,43,92,125,26,200,210,0,240,158,135,156,162,33,225,230,52,30,241,5,67,214,151,140,77,215,185,122,136,123,
-  243,195,94,149,41,192,111,245,40,155,55,45,31,185,64,232,146,22,108,36,253,140,98,155,152,62,65,42,211,20,149,211,121,164,21,12,103,223,147,219,
-  149,253,112,184,227,0,197,172,138,53,62,178,212,17,244,16,83,20,229,49,206,181,199,136,143,96,189,218,227,154,231,20,162,250,175,200,31,1,162,76,
-  241,96,21,216,23,114,84,137,239,135,254,136,5,67,30,66,196,195,92,4,45,24,99,63,6,21,102,85,176,210,99,171,160,58,239,0,131,7,177,31,
-  140,234,117,48,70,170,109,28,58,197,172,153,232,176,139,133,59,200,106,161,196,107,24,28,156,135,43,89,159,191,117,83,191,107,20,81,16,158,121,239,
-  121,183,92,206,236,187,13,72,144,228,48,16,52,133,33,4,2,166,56,201,37,22,177,220,139,173,133,118,73,103,33,92,202,65,72,162,54,1,225,4,
-  251,164,180,50,96,233,130,133,127,131,149,10,130,133,141,133,136,149,207,111,222,222,158,71,204,205,220,204,155,95,111,230,219,217,219,83,190,118,133,168,
-  65,68,198,93,167,113,50,99,182,171,92,67,116,65,145,153,112,141,252,185,152,27,115,29,93,72,174,76,95,205,80,151,168,17,163,89,158,231,222,231,
-  221,156,22,22,90,45,21,165,133,135,196,180,217,235,26,107,238,220,219,66,128,65,45,46,147,222,183,90,189,205,188,219,235,1,69,182,179,195,104,195,
-  102,43,18,108,38,230,205,72,158,188,207,178,29,239,97,228,58,135,224,102,222,71,205,236,181,210,107,231,44,179,145,77,230,129,46,51,6,207,7,27,
-  176,48,213,90,75,191,57,125,32,251,242,131,223,178,240,83,35,7,151,224,165,225,144,37,149,143,6,214,47,85,211,165,32,146,200,158,44,203,123,158,
-  125,199,187,161,63,50,101,159,104,152,145,229,240,205,232,169,93,213,132,238,171,250,195,170,63,115,216,21,238,234,184,99,136,156,216,48,47,129,195,128,
-  87,30,201,192,234,197,20,220,14,111,184,94,95,79,146,100,20,236,132,155,49,188,180,178,190,113,87,113,132,127,237,3,111,203,161,133,77,64,58,192,
-  205,27,164,240,151,195,201,112,120,95,218,0,180,143,241,184,120,20,199,90,121,205,1,56,62,176,76,137,147,181,176,20,54,226,236,52,60,97,185,29,
-  182,131,13,141,40,153,156,41,128,61,200,161,13,125,52,45,91,98,89,29,249,201,225,43,107,65,181,69,41,211,128,182,18,203,138,239,124,63,241,197,
-  23,150,186,167,199,197,39,46,142,0,211,144,64,79,3,111,252,229,84,40,248,58,222,79,216,42,207,34,196,85,20,167,136,91,146,121,130,37,22,167,
-  92,150,186,36,165,16,37,224,226,185,150,182,101,102,54,41,94,233,14,180,229,76,146,164,216,31,114,213,144,213,88,156,20,103,101,159,224,129,168,76,
-  131,87,19,45,62,131,55,31,26,104,222,150,103,248,207,201,11,168,98,192,226,40,110,105,170,52,146,225,162,110,141,162,101,38,213,222,81,13,155,232,
-  227,30,163,231,1,23,47,205,112,7,241,192,171,92,140,83,106,98,38,74,201,181,200,149,93,101,106,35,54,19,185,6,92,149,184,115,157,254,175,5,
-  155,113,194,247,97,205,36,210,175,203,225,115,95,194,155,114,224,14,53,227,217,5,87,103,197,227,113,55,58,75,110,198,123,29,154,163,53,245,27,206,
-  56,118,54,234,81,77,71,61,227,156,171,185,166,203,28,222,97,121,171,233,34,217,200,13,71,107,90,133,248,28,45,82,236,17,251,47,170,23,103,116,
-  255,2,125,82,189,107,84,65,16,159,217,93,223,91,46,103,222,222,69,207,16,52,158,65,200,21,41,46,96,17,33,144,188,35,69,64,136,47,233,18,
-  82,24,9,196,34,197,21,130,33,138,78,149,128,224,23,162,160,68,16,44,77,37,169,196,226,129,77,74,177,74,97,17,108,204,127,96,231,58,179,121,
-  231,37,98,252,205,206,236,238,111,190,222,236,221,75,60,15,37,7,0,101,80,34,37,117,25,142,66,193,63,161,78,226,122,79,72,96,68,96,224,191,
-  168,149,164,10,7,213,170,144,77,242,202,178,140,63,13,1,82,184,84,153,117,149,217,204,33,31,91,115,8,46,173,128,240,152,166,169,214,170,21,128,
-  14,165,14,2,98,58,203,146,166,173,214,210,82,246,7,142,145,117,22,64,38,29,152,66,12,11,100,99,104,70,149,87,95,85,245,85,117,213,77,74,
-  205,144,235,246,176,73,219,202,181,39,220,46,210,32,141,211,103,164,239,218,127,82,228,145,130,225,53,232,252,150,156,93,236,231,233,141,178,126,79,209,
-  194,74,131,18,90,160,29,116,254,163,162,53,190,28,176,231,7,123,108,18,251,94,150,13,140,227,186,181,54,148,240,143,216,195,65,63,149,196,140,251,
-  17,166,54,208,157,171,15,55,109,243,45,174,60,85,240,160,209,216,199,47,156,148,36,137,191,192,254,121,90,155,246,191,80,44,183,216,193,105,255,94,
-  113,137,196,223,138,227,246,157,54,61,86,116,141,195,52,77,249,25,182,55,253,42,221,163,30,50,212,227,39,232,53,250,135,40,209,116,221,107,95,98,
-  125,134,180,137,108,15,175,244,21,253,55,164,219,236,158,160,77,77,202,191,211,60,61,55,61,80,242,22,254,180,176,210,98,209,209,54,46,91,235,150,
-  233,106,254,1,169,150,207,209,22,230,187,56,194,154,223,37,3,210,20,108,176,52,64,163,73,61,127,133,16,120,224,254,193,63,4,214,250,25,190,245,
-  89,155,240,163,228,171,252,157,3,193,29,162,128,70,193,6,121,130,99,229,186,131,254,69,99,5,135,3,117,154,116,140,204,53,106,37,156,214,33,127,
-  129,71,253,133,218,96,229,185,230,10,206,146,46,216,110,96,254,92,141,208,13,58,75,195,249,58,207,71,23,153,216,191,15,252,219,139,68,71,180,43,
-  17,167,70,193,154,191,56,83,176,209,177,252,40,236,157,216,110,92,145,91,64,254,165,136,234,56,224,12,240,83,240,152,14,28,26,168,195,21,29,44,
-  52,209,160,9,231,41,214,49,24,147,59,56,101,68,34,19,27,107,74,166,108,122,13,176,74,156,46,108,28,108,100,14,243,79,177,95,178,216,215,207,
-  117,66,13,174,214,47,170,13,150,67,223,178,236,202,252,6,133,83,191,107,84,65,16,158,217,183,185,188,156,185,187,205,35,228,20,78,141,24,130,74,
-  4,9,254,2,79,73,162,104,136,63,120,38,68,72,80,36,157,130,133,71,26,27,97,108,98,101,32,17,237,44,44,210,249,63,184,96,101,169,157,98,
-  145,222,222,216,141,223,238,249,46,119,26,113,102,231,123,179,223,206,183,59,187,240,54,185,49,66,68,22,81,53,54,163,6,18,50,180,135,153,191,9,
-  3,93,160,211,30,190,20,209,210,255,205,218,160,116,237,205,109,60,96,28,49,101,96,228,242,156,153,114,98,199,71,50,38,38,135,140,152,77,199,28,
-  7,18,84,97,249,116,104,106,10,230,156,11,251,186,142,81,22,202,195,112,67,76,20,83,50,73,146,245,140,108,38,136,99,111,46,34,38,16,103,36,
-  175,89,39,130,203,171,68,15,94,115,242,221,200,183,68,62,114,42,95,89,62,176,212,244,19,203,79,124,101,199,200,117,93,146,135,250,194,4,213,156,
-  52,161,58,164,51,97,82,109,187,44,163,174,237,144,110,129,151,231,28,54,136,165,178,128,242,9,228,115,178,172,15,228,137,174,113,218,47,239,140,180,
-  34,228,245,122,93,62,179,172,155,112,194,27,19,116,53,105,21,123,235,18,145,172,37,250,195,16,90,211,47,28,26,220,49,154,200,130,222,3,182,116,
-  35,246,181,40,243,122,85,46,234,121,57,163,199,197,202,136,150,177,86,198,247,0,240,180,158,3,206,235,34,240,177,174,2,215,89,55,88,203,122,43,
-  207,79,213,103,209,229,219,68,207,202,170,190,52,114,50,246,253,140,49,116,60,174,181,207,167,71,219,39,218,215,244,71,101,200,57,127,217,223,246,119,
-  238,146,31,2,247,20,79,86,245,104,178,214,53,238,227,206,191,95,70,47,20,89,79,209,100,183,192,142,250,155,58,224,47,201,240,88,154,166,69,29,
-  124,178,243,190,109,55,136,45,38,205,200,87,196,146,236,139,64,93,24,65,15,199,233,222,32,182,113,165,153,166,50,232,141,76,75,85,250,112,141,77,
-  150,204,175,248,21,169,133,133,237,82,60,230,125,3,231,149,224,38,70,225,165,174,204,254,17,197,250,174,170,155,235,137,93,75,130,153,127,24,13,227,
-  87,30,172,88,99,217,38,150,110,80,147,102,169,89,182,169,37,219,15,46,176,125,214,218,178,29,0,103,240,173,192,131,10,213,99,168,78,225,142,246,
-  211,40,29,179,224,67,69,21,254,11,117,83,49,104,20,81,16,157,249,255,223,237,230,60,115,187,103,56,78,73,78,197,20,33,196,152,34,1,65,209,
-  205,9,34,40,186,151,66,72,170,136,133,137,157,32,104,35,62,68,84,16,84,34,200,33,8,130,10,150,162,118,34,126,181,16,5,11,177,177,145,216,
-  169,133,96,99,253,157,191,123,23,147,152,204,48,255,207,204,155,121,127,246,239,238,83,142,202,229,94,202,68,25,165,84,238,12,102,27,21,201,208,255,
-  162,214,79,153,60,80,165,78,92,252,151,93,83,66,162,206,225,165,37,30,179,156,177,175,75,100,84,70,38,13,52,155,80,154,38,105,26,69,30,73,
-  41,219,91,34,73,58,149,52,41,246,110,139,121,59,197,49,115,196,172,170,44,66,98,113,76,28,197,234,64,179,217,204,51,147,34,173,22,77,182,132,
-  196,179,68,94,170,213,106,36,96,68,190,89,98,169,172,86,181,242,166,85,146,36,105,146,248,210,124,176,104,105,233,164,243,141,34,150,107,240,100,28,
-  235,77,208,109,141,215,133,100,246,216,214,4,119,216,125,81,88,44,224,141,198,47,141,219,133,182,114,223,216,61,99,204,224,174,198,3,141,135,250,7,
-  135,65,120,139,101,107,107,194,188,61,33,97,16,218,3,104,248,186,71,236,230,208,16,34,9,223,176,157,66,229,85,224,166,113,222,13,184,94,209,17,
-  193,126,123,236,156,56,123,243,221,205,133,149,32,192,204,82,193,225,32,104,115,180,63,18,130,251,188,75,18,21,34,84,112,67,101,131,8,255,85,198,
-  7,133,123,202,253,44,96,193,207,54,239,180,43,57,141,119,236,62,177,248,7,97,48,142,235,140,231,236,190,43,9,106,174,4,199,238,33,103,101,51,
-  62,47,143,150,53,61,214,245,250,125,213,230,186,251,172,176,3,23,100,218,175,202,189,96,124,84,248,163,220,75,237,46,107,60,49,88,100,119,211,224,
-  45,251,139,217,134,43,236,78,97,55,122,86,118,230,209,37,229,210,14,147,220,227,69,156,113,193,138,145,223,43,65,182,185,105,51,104,199,250,41,12,
-  9,140,1,140,98,212,78,216,169,17,196,232,135,194,144,61,110,143,27,249,168,194,62,234,15,172,66,193,251,132,125,132,141,2,203,149,144,95,220,30,
-  52,4,172,228,74,168,17,26,30,106,144,27,21,234,176,139,17,38,195,176,44,95,3,54,151,35,187,111,169,101,60,59,76,24,165,103,129,137,236,70,
-  185,173,13,98,140,82,238,201,116,228,125,194,6,215,43,149,30,84,132,158,28,237,15,101,190,16,167,81,147,76,197,114,70,52,133,189,226,121,29,182,
-  19,24,32,236,36,12,47,43,243,238,97,108,237,244,28,181,169,141,145,126,147,127,200,94,99,123,82,190,136,1,121,233,69,153,107,45,91,29,117,181,
-  40,3,121,83,43,144,98,71,255,175,94,157,201,148,213,186,34,63,255,144,188,128,122,246,26,252,77,158,165,49,58,68,71,186,198,117,174,75,38,83,
-  54,180,133,106,221,232,159,106,163,140,96,99,100,170,166,215,4,70,75,20,24,242,185,136,253,26,114,22,177,81,101,57,163,78,145,223,189,117,235,61,
-  203,95,109,84,189,111,19,81,12,183,253,94,143,11,173,210,119,81,64,40,64,148,147,178,70,116,4,169,130,3,6,42,216,145,216,34,49,177,178,208,
-  209,83,17,67,0,161,164,83,216,96,42,3,2,254,128,147,152,96,66,108,108,101,99,235,216,9,30,246,187,207,166,181,239,249,243,103,63,59,186,203,
-  28,29,20,228,160,91,91,0,27,52,32,81,22,206,32,90,241,109,59,188,146,188,88,168,168,157,139,131,65,27,42,206,203,137,108,64,80,28,178,189,
-  48,194,200,193,104,4,206,161,144,17,114,66,144,5,0,98,146,38,136,0,105,170,7,145,132,0,3,223,38,19,248,110,146,166,105,226,146,68,235,49,
-  81,114,250,56,167,150,131,158,144,116,44,100,80,61,9,82,184,96,170,251,79,195,188,68,153,230,131,224,3,235,231,134,23,70,229,115,148,199,207,72,
-  92,222,229,151,196,63,76,225,169,188,214,152,109,121,253,35,242,91,226,119,173,208,210,242,208,127,50,252,129,252,1,105,211,33,239,106,220,87,150,95,
-  168,117,76,2,91,96,83,183,103,120,219,127,35,222,230,95,20,172,17,63,56,21,121,143,252,68,71,27,202,192,254,42,79,100,208,239,212,224,22,166,
-  92,161,144,114,229,62,150,55,202,148,225,242,103,229,117,50,216,158,241,71,210,207,255,211,197,181,235,210,250,37,241,196,127,198,2,4,252,5,155,159,
-  101,31,229,182,153,229,77,197,29,34,255,212,168,227,175,40,17,97,199,191,209,191,64,127,133,143,76,19,21,20,207,137,255,8,240,152,202,101,255,154,
-  215,216,180,206,216,240,58,107,219,41,119,121,45,159,64,254,88,13,238,248,203,133,174,252,252,81,63,223,170,156,12,216,128,20,13,129,239,72,68,26,
-  90,238,168,90,3,127,171,196,63,5,238,106,128,59,224,111,52,118,46,133,235,138,223,132,60,5,30,136,41,6,15,36,114,65,91,21,157,106,173,157,
-  182,52,235,99,201,118,125,156,223,147,2,153,89,18,172,111,61,191,145,23,55,191,207,93,77,176,227,206,56,31,203,82,107,28,245,117,185,135,89,191,
-  242,243,25,66,254,10,251,124,179,152,16,14,245,35,98,90,225,168,62,209,9,175,141,136,234,108,116,170,138,234,236,9,62,131,76,219,193,49,90,28,
-  131,181,22,156,177,242,73,23,188,35,127,6,122,172,18,40,70,88,53,140,96,167,244,20,231,106,233,74,59,150,92,108,170,124,172,61,192,97,140,241,
-  57,91,144,17,182,130,9,216,24,46,193,88,78,129,205,42,204,127,
-};
-static const LChunk level9_chunks[27] = {
-  {0,0,8640,226.5f,1620.0f,-44.0f,540.0f,641,360,160,60,0},
-  {641,360,50400,1530.0f,3660.0f,-49.0f,540.0f,702,360,197,60,0},
-  {1343,720,115680,3570.0f,5790.0f,-44.0f,510.0f,749,360,189,60,0},
-  {2092,1080,183840,5700.0f,7110.0f,-59.0f,480.0f,298,231,74,90,0},
-  {2390,1311,206880,6375.0f,7110.0f,375.0f,930.0f,312,123,62,90,0},
-  {2702,1434,217680,6764.0f,6884.0f,870.0f,1005.0f,36,6,4,45,0},
-  {2738,1440,226080,7020.0f,8026.0f,120.0f,654.0f,286,187,62,60,0},
-  {3024,1627,226080,7020.0f,8029.0f,569.0f,900.0f,387,173,84,50,0},
-  {3411,1800,255840,7950.0f,9060.0f,300.0f,821.0f,729,360,170,60,0},
-  {4140,2160,288480,8970.0f,10005.0f,150.0f,907.0f,495,360,111,60,0},
-  {4635,2520,318240,9900.0f,10980.0f,-30.0f,494.0f,377,276,74,60,0},
-  {5012,2796,324960,10095.0f,10980.0f,420.0f,750.0f,124,84,22,60,0},
-  {5136,2880,349920,10890.0f,11880.0f,-41.0f,660.0f,433,360,110,60,0},
-  {5569,3240,378720,11790.0f,13050.0f,-30.0f,480.0f,572,360,132,60,0},
-  {6141,3600,416160,12960.0f,14550.0f,-13.0f,433.0f,754,360,161,90,0},
-  {6895,3960,464160,14460.0f,15720.0f,-30.0f,450.0f,756,360,185,90,0},
-  {7651,4320,501840,15638.0f,16950.0f,-30.0f,480.0f,489,319,129,60,0},
-  {8140,4639,523680,16305.0f,16935.0f,405.0f,937.0f,147,41,32,90,0},
-  {8287,4680,540960,16845.0f,17760.0f,150.0f,678.0f,347,226,73,90,0},
-  {8634,4906,542400,16897.0f,17790.0f,600.0f,937.0f,215,134,46,60,0},
-  {8849,5040,567840,17700.0f,18930.0f,240.0f,720.0f,733,360,182,110,0},
-  {9582,5400,604320,18840.0f,20340.0f,197.0f,703.0f,648,360,151,90,0},
-  {10230,5760,649440,20250.0f,21690.0f,197.0f,643.0f,652,360,165,90,0},
-  {10882,6120,692640,21600.0f,22710.0f,-30.0f,611.0f,614,360,150,60,0},
-  {11496,6480,725280,22620.0f,23700.0f,-55.0f,450.0f,554,360,146,60,0},
-  {12050,6840,756960,23610.0f,25470.0f,-57.0f,469.0f,712,360,178,80,0},
-  {12762,7200,813600,25380.0f,26668.0f,-59.0f,482.0f,576,306,148,90,0},
-};
-static const LChan level9_chans[16] = {
-  {{0,0,0},0,255,65535,0,64,64},
-  {{0,0,0},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},3,255,65535,0,64,64},
-  {{255,255,255},5,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{0,0,0},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-};
-static const LStyle level9_styles[1] = {
-  {1048575u,0,0},
-};
-static const uint16_t level9_gsets[1] = {0};
-static const int32_t level9_scales[1][2] = {{1000,1000}};
-static const uint8_t level9_trig[1208] = {
-  240,1,1,0,180,0,24,255,0,208,15,224,66,1,0,224,0,29,255,0,0,0,6,5,240,1,1,0,180,0,24,255,0,200,1,224,15,1,0,0,
-  182,44,255,0,160,31,240,61,1,0,0,0,0,255,0,160,31,128,120,6,4,240,1,1,0,0,0,0,255,0,184,23,176,99,1,0,243,1,0,255,
-  0,220,11,192,22,1,0,14,0,11,255,0,252,17,144,43,6,1,240,1,1,0,255,12,234,255,0,100,176,9,6,2,128,1,1,0,255,9,178,255,
-  0,0,208,2,1,0,255,12,234,255,0,200,1,176,11,6,1,144,1,1,0,255,9,178,255,0,0,128,2,1,0,255,12,234,255,0,200,1,176,4,
-  1,0,255,187,35,255,0,200,1,128,14,6,2,240,1,1,0,255,144,35,255,0,0,208,2,1,0,255,187,35,255,0,200,1,192,11,6,1,128,2,
-  1,0,255,12,234,255,0,200,1,208,18,6,2,128,1,1,0,255,9,178,255,0,0,208,2,1,0,255,12,234,255,0,200,1,176,11,6,1,128,3,
-  1,0,255,187,35,255,0,200,1,240,13,6,2,208,2,1,0,255,144,35,255,0,0,208,2,1,0,255,187,35,255,0,200,1,224,9,6,1,192,7,
-  1,0,255,12,234,255,0,0,240,1,1,0,255,187,35,255,0,0,240,1,1,0,255,12,234,255,0,0,240,1,1,0,255,187,35,255,0,0,240,1,
-  1,0,255,12,234,255,0,0,240,1,1,0,255,12,234,255,8,244,3,192,15,1,0,242,12,255,255,8,0,240,3,1,0,190,12,255,255,8,0,224,
-  3,1,0,136,12,255,255,8,0,224,3,1,0,96,12,255,255,8,0,160,25,1,0,149,12,255,255,8,0,240,3,1,0,191,12,255,255,8,0,224,
-  3,1,0,236,12,255,255,8,0,224,3,1,0,255,12,236,255,8,0,144,25,1,0,230,0,243,255,8,0,240,3,1,0,166,0,227,255,8,0,224,
-  3,1,0,114,0,225,255,8,0,224,3,1,0,78,0,226,255,8,0,128,5,1,0,0,0,0,255,8,164,13,144,43,1,0,255,17,211,255,0,244,
-  3,0,6,1,0,1,1,0,0,0,255,0,244,3,208,35,6,2,0,1,0,31,216,255,255,0,0,240,1,1,0,9,76,255,255,0,200,1,192,34,
-  1,0,255,69,252,255,0,0,0,6,1,240,1,1,0,255,17,211,255,0,200,1,176,33,1,0,31,216,255,255,0,0,0,6,2,240,1,1,0,9,
-  76,255,255,0,200,1,128,9,1,0,0,0,0,255,0,208,15,160,26,1,0,146,255,62,255,0,0,0,6,11,240,1,1,0,8,225,0,255,0,200,
-  1,176,34,1,0,52,166,255,255,0,0,0,6,10,240,1,1,0,9,76,255,255,0,200,1,128,35,1,0,146,255,62,255,0,0,0,6,11,240,1,
-  1,0,8,225,0,255,0,200,1,176,24,1,0,0,20,56,255,0,196,19,160,11,6,6,128,60,1,0,111,0,3,255,0,184,23,240,46,6,10,0,
-  1,0,255,9,19,255,0,200,1,224,11,1,0,255,18,129,255,0,0,160,2,1,0,255,9,19,255,0,200,1,128,16,6,11,0,1,0,65,255,9,
-  255,0,200,1,176,9,1,0,25,255,73,255,0,0,160,2,1,0,65,255,9,255,0,200,1,208,18,1,0,255,9,19,255,0,200,1,176,13,6,10,
-  0,1,0,255,18,129,255,0,0,160,2,1,0,255,9,19,255,0,200,1,192,28,1,0,65,255,9,255,0,200,1,240,8,1,0,9,255,171,255,0,
-  0,16,6,11,144,2,1,0,65,255,9,255,0,200,1,128,12,1,0,15,0,13,255,0,220,11,208,20,6,10,0,1,0,255,0,98,255,0,100,224,
-  3,1,0,201,6,255,255,0,176,9,0,1,3,246,9,255,255,0,244,3,176,21,1,0,6,36,255,255,0,176,9,16,1,3,6,114,255,255,0,244,
-  3,240,14,1,0,214,6,255,255,0,176,9,16,1,3,255,45,235,255,0,244,3,224,16,1,0,255,6,114,255,0,220,11,16,1,3,255,40,133,255,
-  0,244,3,128,13,1,3,244,255,255,255,0,244,3,192,1,1,0,255,49,208,255,0,0,192,1,6,2,112,1,0,255,1,100,255,0,200,1,224,34,
-  1,0,60,2,255,255,0,200,1,0,6,1,160,11,1,0,255,1,100,255,0,200,1,0,6,2,176,9,1,0,46,0,87,255,0,232,7,224,3,6,
-  1,160,11,1,0,11,0,249,255,0,200,1,144,13,6,6,192,1,1,0,0,97,249,255,0,0,240,3,1,0,0,147,238,255,0,0,224,3,1,0,
-  0,229,230,255,0,0,224,3,1,0,0,209,15,255,0,0,224,7,1,0,255,151,0,255,0,176,9,144,28,1,0,255,0,134,255,0,176,9,240,31,
-  1,0,44,0,255,255,0,176,9,160,11,6,10,144,8,1,0,42,119,255,255,0,0,176,2,1,0,44,0,255,255,0,200,1,144,10,1,0,253,0,
-  232,255,0,176,9,128,15,6,9,240,16,1,0,253,0,21,255,0,176,9,240,31,1,0,253,98,0,255,0,176,9,224,18,1,3,255,223,24,255,0,
-  244,3,144,13,1,0,198,0,4,255,0,176,9,176,9,1,3,255,106,20,255,0,144,3,240,16,1,3,244,255,255,255,0,160,6,208,5,1,0,14,
-  0,7,255,0,208,15,0,0,
-};
-static const uint16_t level9_touch[1] = {0};
-static const uint32_t level9_chan_off[16] = {0u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u};
-static const uint8_t level9_chan_frame[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-static const uint16_t level9_spawn_first[1] = {0};
-static const uint16_t level9_spawn_list[1] = {0};
-static const int16_t level9_anchors[1][2] = {{0,0}};
-static const LevelEvent level9_events[1] = {
+static const uint8_t level0_data[391] = {
+  181,148,177,78,2,81,16,69,135,32,98,86,179,40,162,130,139,43,141,198,96,76,108,36,209,213,6,13,24,45,172,108,248,0,11,67,135,5,54,54,
+  52,38,38,154,88,89,216,98,172,44,140,127,96,99,205,31,248,37,250,246,32,102,194,134,13,134,53,155,125,153,220,25,238,157,185,111,22,145,148,196,
+  36,35,239,226,72,69,54,76,44,6,73,114,218,226,42,100,80,28,172,124,149,47,195,86,248,193,253,243,26,254,35,180,154,32,111,42,59,45,159,38,
+  91,51,209,130,121,215,100,213,196,126,165,219,119,250,90,190,74,130,250,156,66,116,118,23,206,73,73,203,188,204,18,119,148,174,141,202,19,72,156,62,
+  157,1,42,110,40,191,251,203,220,139,235,48,47,75,219,48,86,97,43,17,151,201,122,244,115,169,234,107,76,49,131,51,113,153,51,143,165,102,175,133,
+  58,156,163,243,68,232,141,140,161,184,168,240,91,250,57,8,245,246,175,83,119,134,232,118,248,205,233,50,159,208,103,11,230,44,46,149,35,226,111,42,
+  135,187,251,144,194,165,246,8,158,8,247,222,117,163,196,109,62,18,95,129,79,49,203,161,82,204,131,63,140,236,91,6,30,171,207,189,158,74,137,108,
+  154,126,234,145,222,145,133,99,31,112,238,113,59,30,53,14,120,18,197,123,181,33,121,118,213,166,114,133,61,111,69,186,129,199,56,188,196,188,231,202,
+  129,109,250,105,144,157,0,105,80,83,4,89,167,43,43,240,143,84,37,123,163,248,247,249,213,157,170,28,103,138,151,192,87,176,195,236,133,136,124,126,
+  166,195,162,82,185,64,183,130,74,246,31,190,187,51,28,219,196,1,15,245,88,96,70,237,213,41,245,91,84,126,3,
+};
+static const LChunk level0_chunks[1] = {
+  {0,0,9600,255.0f,13083.0f,-1000000000.0f,1000000000.0f,391,268,268,66,1},
+};
+static const LevelEvent level0_events[1] = {
   {0,0,0,0,0,0,0,0,0},
 };
-static const uint8_t level10_data[43969] = {
-  173,85,93,104,92,69,20,62,103,230,238,189,115,247,110,178,119,55,219,116,83,217,52,173,70,82,76,49,72,69,37,165,172,137,63,155,40,106,69,11,
-  62,36,248,162,40,8,42,148,180,15,165,156,7,201,67,148,90,251,160,69,11,142,146,134,10,33,22,44,6,155,96,70,241,231,165,85,40,226,79,16,
-  217,7,169,37,136,45,190,89,193,241,204,189,187,118,99,35,26,236,57,243,157,57,115,254,230,204,220,123,119,95,22,55,130,136,179,192,163,149,94,197,
-  100,82,177,200,122,16,39,250,14,0,1,30,128,15,237,78,19,78,244,251,69,16,162,153,116,69,131,52,66,184,232,181,72,172,195,154,186,212,218,9,
-  235,46,84,114,167,114,141,10,39,188,102,159,194,57,216,160,32,171,84,178,87,181,86,85,170,220,164,92,74,74,213,70,106,195,9,113,200,22,23,40,
-  37,39,168,155,24,81,196,238,209,26,23,169,138,162,16,69,8,17,135,134,164,140,134,101,199,112,79,15,34,215,193,88,33,132,97,168,10,184,45,27,
-  53,9,224,206,42,7,163,10,195,66,193,201,80,136,161,33,232,1,14,69,94,117,117,133,9,169,144,157,91,5,39,96,25,174,174,3,50,41,196,41,
-  10,93,10,96,107,161,112,173,66,238,108,181,182,196,198,193,57,200,140,228,239,207,177,191,65,97,4,250,67,164,145,51,11,66,159,70,61,133,84,209,
-  43,98,6,7,192,142,217,87,144,142,160,213,72,151,208,254,129,100,19,201,250,69,39,143,109,56,86,126,157,217,201,73,212,11,110,204,224,36,170,175,
-  49,80,65,16,240,146,14,216,65,253,41,210,221,78,28,176,253,250,35,193,162,97,159,18,246,174,191,217,121,112,254,12,234,147,72,155,233,169,62,59,
-  104,7,105,59,216,138,158,23,250,7,180,237,244,88,57,176,211,72,231,208,238,171,218,207,144,198,149,94,20,118,71,42,190,67,218,74,79,127,127,89,
-  44,252,142,212,189,248,35,46,140,78,239,190,224,191,248,75,114,140,123,222,220,11,188,193,39,15,255,228,167,252,13,227,219,129,11,190,158,229,58,61,
-  27,41,162,110,251,46,39,210,94,218,110,207,34,237,164,60,227,118,202,219,62,198,51,52,14,1,77,208,59,232,84,218,100,138,75,211,104,138,230,57,
-  51,176,244,49,154,1,115,175,145,180,7,150,234,104,78,160,233,53,210,118,45,205,35,219,142,163,29,51,123,40,111,140,88,103,107,156,97,70,254,185,
-  59,215,223,53,235,78,127,129,180,223,238,163,253,19,250,176,228,103,195,53,43,60,233,211,66,79,73,59,143,116,171,94,196,67,115,8,7,109,124,144,
-  38,210,23,197,137,197,183,240,141,226,75,227,135,103,196,161,222,47,95,195,149,21,156,157,224,55,136,159,196,245,231,111,225,70,122,233,6,51,234,129,
-  170,239,214,81,93,234,136,114,36,175,96,57,72,190,217,229,192,20,140,232,236,134,234,109,113,95,28,155,235,168,196,23,38,104,103,170,233,109,188,74,
-  109,187,236,96,170,213,157,77,152,66,55,116,114,96,6,192,10,46,168,24,94,189,98,2,190,155,124,94,217,14,98,43,80,64,74,153,26,39,220,193,
-  118,254,134,102,197,41,132,51,209,41,121,57,156,107,59,186,75,111,74,58,203,47,13,79,182,207,181,205,181,157,100,28,97,252,246,224,92,155,225,14,
-  185,121,208,17,212,165,147,144,206,124,65,71,145,242,1,212,17,40,15,250,129,213,17,70,214,3,208,236,13,204,22,176,239,115,100,253,113,70,252,159,
-  119,174,199,203,143,94,211,189,53,223,131,132,126,243,136,169,112,146,233,55,21,51,70,37,48,229,115,55,131,71,247,121,144,60,42,198,87,242,231,231,
-  223,46,253,250,196,121,245,130,127,41,123,17,205,40,121,124,141,87,179,207,188,150,221,35,239,172,159,178,211,93,220,123,216,202,137,199,229,123,212,140,
-  72,33,86,173,90,225,53,226,69,67,243,255,109,135,73,252,191,59,36,178,9,239,184,119,66,110,126,136,130,103,159,252,0,63,247,81,8,41,37,255,
-  160,11,129,13,18,171,201,121,133,108,117,72,241,151,165,153,227,139,140,244,188,76,38,179,177,37,179,225,139,162,13,133,66,49,155,205,198,140,108,71,
-  71,46,42,149,58,197,122,73,174,135,124,38,149,201,59,10,130,48,211,150,201,248,60,188,132,218,219,193,67,15,188,144,145,101,45,226,57,225,152,209,
-  3,158,112,222,178,139,128,28,67,177,84,252,151,171,152,83,75,170,39,82,122,41,255,9,141,86,93,108,84,69,20,158,51,51,59,247,175,119,183,182,
-  82,110,97,187,64,109,13,82,196,42,36,86,36,113,41,1,75,53,128,13,141,72,130,145,16,136,188,152,197,240,64,140,15,7,105,76,163,64,20,20,
-  124,235,198,160,137,9,46,77,144,40,9,102,71,131,63,49,177,105,162,137,38,26,247,62,72,91,131,38,4,226,131,68,115,61,115,111,75,233,178,27,
-  250,157,57,103,102,206,156,159,111,238,222,205,238,73,190,188,69,50,213,96,179,154,64,88,199,105,74,243,234,131,238,106,135,100,156,84,177,52,205,70,
-  122,121,236,148,230,44,201,230,102,40,54,47,240,154,203,4,46,155,63,248,93,203,221,107,42,218,9,255,68,90,152,237,176,60,3,176,131,188,29,236,
-  216,177,60,176,131,192,182,201,244,37,203,190,205,125,142,237,3,192,122,79,120,241,16,100,133,19,4,129,67,1,153,24,158,231,49,22,80,113,33,40,
-  149,210,61,175,175,207,118,221,129,1,7,158,218,176,97,169,1,167,26,1,115,12,108,120,192,155,129,235,213,66,62,239,128,237,216,14,239,237,93,202,
-  192,73,178,204,104,247,188,59,74,212,47,227,129,129,35,168,28,101,48,136,203,205,173,70,247,8,124,198,32,5,155,157,167,125,114,18,28,252,7,240,
-  99,56,20,117,12,239,30,222,141,253,209,90,132,232,19,136,214,210,59,242,124,148,38,221,69,122,28,48,99,36,90,217,24,47,30,140,94,7,220,137,
-  151,32,223,211,168,247,146,99,63,62,23,165,163,172,69,177,235,241,25,244,204,249,41,96,209,254,168,11,183,70,221,216,30,117,143,31,168,40,86,17,
-  69,127,196,47,122,35,222,17,175,34,42,188,34,70,68,69,12,181,87,100,69,224,126,125,4,240,144,49,111,131,62,152,152,26,190,124,15,109,203,123,
-  245,193,130,141,23,1,31,93,104,219,88,192,214,104,99,212,165,127,135,242,103,96,118,250,101,226,247,1,28,237,153,82,209,99,83,106,74,93,250,8,
-  194,126,118,245,39,248,118,193,185,236,164,154,84,195,79,26,123,161,243,203,99,112,227,165,11,157,99,185,11,157,87,212,159,187,76,236,155,91,127,28,
-  188,186,229,228,234,169,97,136,14,3,217,201,195,48,62,12,63,43,54,165,88,193,142,86,99,46,106,163,135,144,166,155,183,48,43,156,0,186,252,187,
-  128,7,116,83,121,153,238,198,12,43,55,105,161,215,48,45,162,101,229,77,152,169,166,113,178,4,101,106,126,46,123,139,204,150,72,205,161,51,169,174,
-  168,161,103,77,134,161,19,83,169,203,40,92,143,93,209,224,191,15,29,17,236,191,198,122,244,58,234,113,195,157,204,124,84,248,8,246,70,43,112,241,
-  241,61,131,47,190,211,79,131,222,10,92,19,155,107,37,56,222,249,221,23,128,175,234,85,29,120,207,88,215,88,151,230,152,98,232,98,138,158,125,59,
-  230,66,187,168,72,57,2,9,71,143,161,100,232,208,74,234,237,174,203,116,129,97,63,69,231,48,213,136,205,152,165,131,128,52,203,204,107,178,148,60,
-  57,134,139,198,159,40,194,11,161,64,8,57,11,197,95,27,208,210,42,209,177,230,34,208,220,170,11,51,26,54,205,174,141,22,155,117,193,117,117,161,
-  92,208,5,105,107,11,115,25,219,214,15,51,108,67,95,111,42,239,214,237,196,1,5,102,38,238,47,249,103,68,201,47,249,103,55,226,125,152,249,116,
-  4,142,186,137,227,24,24,123,84,53,157,176,222,80,103,72,71,253,175,250,74,254,168,255,107,234,61,235,148,250,90,13,252,214,176,109,180,1,225,45,
-  159,141,250,76,218,225,62,70,79,147,70,101,8,44,22,154,175,200,242,226,227,137,79,83,47,22,54,232,110,22,85,32,28,130,59,59,127,243,57,104,
-  218,188,47,110,245,79,163,127,27,3,211,249,198,160,113,24,6,212,253,78,10,97,15,42,12,174,173,248,80,178,31,130,90,124,138,123,234,177,41,10,
-  122,26,13,40,244,118,157,199,37,40,79,172,236,150,175,45,160,161,87,97,172,215,95,153,176,175,185,40,79,195,105,64,137,178,164,232,3,187,139,172,
-  91,119,81,204,202,117,117,217,186,108,197,39,10,111,207,150,70,190,87,51,98,78,207,67,125,153,141,172,45,148,111,42,242,191,101,188,154,222,197,93,
-  227,206,243,239,52,191,126,70,110,170,155,252,166,58,47,206,195,31,138,94,225,153,158,53,251,155,27,47,57,13,219,186,126,177,246,237,187,8,211,224,
-  92,16,96,22,156,39,54,153,227,69,2,81,5,224,115,211,234,197,9,193,147,80,43,21,67,165,164,76,45,92,104,66,131,128,7,51,147,49,126,75,
-  54,155,243,22,79,99,81,53,154,92,183,209,117,221,230,230,182,54,175,205,227,115,65,191,41,156,199,245,130,164,108,82,52,118,87,163,138,95,43,129,
-  236,237,171,86,35,6,139,171,47,163,8,211,247,72,41,41,211,92,114,25,255,15,145,64,194,166,119,32,133,217,153,223,63,82,38,226,136,6,99,37,
-  157,152,51,101,60,54,73,108,45,105,197,121,255,3,149,84,77,136,28,69,20,126,175,187,166,167,255,50,61,59,59,198,157,105,147,157,157,221,5,67,
-  28,24,79,43,201,104,122,102,23,55,155,49,201,154,131,104,148,108,8,100,73,8,100,89,60,68,4,245,17,80,111,97,64,79,65,100,4,115,17,132,
-  5,241,176,34,76,221,188,174,103,37,244,73,17,252,201,37,94,203,87,221,51,59,189,110,230,144,239,85,117,85,189,239,123,239,85,117,23,189,135,207,
-  87,171,112,0,247,49,25,22,96,197,16,86,193,48,140,21,16,89,222,72,218,19,33,152,176,134,154,195,152,16,229,38,145,240,20,17,101,238,165,97,
-  37,214,232,13,149,19,177,173,57,27,214,215,163,200,158,209,224,103,181,122,226,132,231,157,60,233,216,204,152,182,109,123,182,27,117,46,105,187,20,122,
-  97,24,182,113,202,65,135,81,153,238,118,150,151,185,105,120,26,38,39,104,99,197,169,92,93,139,218,107,237,118,196,218,169,41,22,215,59,166,209,169,
-  33,214,128,67,153,175,24,117,215,115,61,207,117,189,240,96,128,131,149,10,231,198,122,199,75,35,116,37,219,1,46,167,75,114,160,23,234,157,242,98,
-  205,63,226,21,130,215,10,90,144,194,57,18,0,244,78,197,13,99,6,242,20,169,211,212,82,231,232,38,181,120,252,7,129,110,66,60,64,18,234,85,
-  238,38,137,94,147,130,94,179,119,166,183,198,182,63,82,112,23,183,224,234,198,141,45,160,21,186,160,222,161,11,212,245,251,247,144,26,241,143,72,75,
-  234,11,84,133,212,175,150,162,141,218,217,173,218,155,119,102,2,155,197,1,157,161,64,189,210,143,98,147,142,209,203,229,126,139,183,240,41,210,241,247,
-  47,158,221,40,62,91,100,209,139,236,57,78,151,169,161,190,227,13,253,137,160,238,34,93,183,229,47,40,77,89,85,5,245,51,234,141,203,18,47,78,
-  203,166,142,126,137,189,95,227,160,41,231,6,77,144,115,92,252,34,5,147,115,7,244,222,240,184,135,179,15,190,26,231,25,148,216,215,74,74,93,87,
-  159,224,184,22,135,4,124,128,46,191,186,110,124,227,135,83,187,111,95,35,23,30,159,255,215,133,107,143,151,227,15,105,89,125,134,113,35,158,166,111,
-  145,154,247,46,171,99,212,253,102,23,127,255,30,31,110,107,182,247,186,220,22,252,53,232,45,10,128,27,240,131,95,203,11,20,200,219,160,174,128,116,
-  96,103,21,246,206,107,219,89,77,199,71,171,236,42,7,250,206,113,96,135,76,242,201,4,63,222,228,160,163,124,168,14,167,72,124,138,80,95,219,164,
-  217,64,11,137,223,35,228,111,204,87,220,143,111,37,53,69,146,72,11,206,141,54,208,80,123,104,211,29,245,49,218,49,74,15,164,73,45,185,164,89,
-  221,7,125,212,155,148,30,191,19,238,236,211,220,164,116,19,242,101,195,225,127,185,229,187,20,244,75,192,135,146,31,252,230,222,55,125,138,64,69,212,
-  6,255,35,249,6,80,40,183,229,151,200,236,175,252,17,158,129,71,71,255,54,255,66,77,88,100,236,119,145,140,98,223,210,185,145,120,71,38,134,186,
-  212,159,206,178,236,56,126,156,215,200,112,214,176,198,88,111,101,234,89,7,214,147,50,140,115,60,73,97,141,114,61,16,127,152,15,196,58,225,78,158,
-  242,155,155,155,187,248,57,254,100,97,10,3,179,48,14,129,93,166,153,225,135,235,100,146,234,133,200,217,185,76,196,226,98,189,62,63,63,91,43,185,
-  69,119,122,118,86,255,87,28,35,251,76,16,134,35,253,12,155,110,156,215,12,67,51,69,133,77,183,17,44,70,126,33,159,91,92,204,205,207,231,24,
-  86,78,104,204,21,10,5,95,240,111,218,135,162,16,200,22,176,65,17,139,194,72,141,25,125,163,18,13,242,136,204,234,149,37,160,198,115,155,249,50,
-  60,55,188,119,101,54,173,47,14,185,114,242,223,182,135,170,132,65,97,11,221,255,3,149,85,77,108,91,69,16,222,217,221,247,188,239,61,247,217,56,
-  141,229,58,117,28,43,33,117,109,71,10,180,149,144,218,67,210,180,160,210,3,244,15,17,4,66,72,16,9,37,112,168,42,122,29,14,84,8,9,80,
-  144,248,235,201,151,86,244,64,14,112,64,28,80,70,72,64,143,45,7,36,80,85,229,84,137,67,34,36,46,136,203,50,111,159,255,154,152,54,253,102,
-  119,103,103,118,126,118,102,159,236,191,161,158,15,69,89,108,199,85,224,101,111,44,197,9,33,133,22,126,204,140,233,201,124,34,245,32,165,24,10,233,
-  14,124,222,12,61,21,15,66,40,6,51,236,206,107,239,128,85,232,214,244,102,186,227,152,72,146,173,156,210,20,164,97,246,124,189,110,194,114,185,81,
-  230,37,69,20,53,155,198,4,124,8,37,33,148,49,165,200,24,30,38,156,155,227,213,8,35,163,49,152,63,3,16,4,234,156,146,11,81,20,70,93,
-  76,64,169,84,42,239,11,212,92,77,0,200,227,74,78,78,78,170,17,153,14,17,152,96,27,184,71,50,106,72,197,33,18,175,131,108,32,143,71,178,
-  217,108,70,99,97,58,38,96,168,91,212,96,159,146,67,185,28,134,198,204,207,171,4,167,2,169,84,214,3,15,130,56,183,135,109,141,67,28,199,193,
-  41,65,47,211,135,64,199,240,51,200,110,213,54,91,98,235,69,187,95,108,182,182,98,156,177,45,91,193,28,142,243,116,68,6,181,85,168,233,35,160,
-  179,180,128,227,188,177,207,210,23,96,79,38,75,139,150,83,197,89,124,186,47,167,150,83,85,124,171,27,134,41,178,95,130,141,105,182,85,197,162,157,
-  194,178,141,241,6,60,99,139,248,53,8,251,1,224,17,27,219,215,16,217,166,159,221,42,122,133,105,1,95,178,87,0,175,1,69,244,35,220,190,2,
-  43,246,13,97,227,213,202,39,81,149,11,168,109,45,11,187,71,136,196,163,187,180,111,193,237,75,66,172,87,108,188,217,90,91,17,236,169,248,96,128,
-  109,174,224,105,187,104,143,174,45,83,238,215,115,98,117,137,10,226,145,226,139,135,37,168,117,195,175,23,146,216,73,21,139,174,18,193,165,8,251,45,
-  8,58,44,86,132,53,130,190,129,100,190,254,211,119,240,243,90,210,129,25,250,24,222,143,47,220,240,46,252,246,11,124,250,3,8,102,116,204,62,129,
-  55,211,119,163,87,237,33,186,100,243,24,112,179,198,255,185,9,231,41,196,42,198,244,28,30,210,200,189,202,241,83,46,166,77,76,47,62,72,196,21,
-  72,65,94,123,180,61,42,40,135,89,242,176,152,240,246,168,147,198,172,227,27,163,29,19,109,240,93,232,187,219,63,0,47,114,11,222,102,189,194,44,
-  158,103,21,130,219,27,60,201,22,128,33,234,78,175,28,249,116,152,30,71,197,10,27,183,87,129,155,112,89,227,209,244,59,179,239,24,188,108,223,3,
-  39,207,36,186,129,70,111,228,241,41,84,84,238,84,66,138,34,62,24,100,235,119,192,93,34,71,251,168,176,62,193,186,144,114,84,121,196,44,84,166,
-  202,67,242,252,14,189,44,5,151,129,203,225,145,69,101,31,115,55,80,237,2,170,41,179,193,31,125,155,184,93,237,187,208,186,119,228,223,122,18,47,
-  251,215,244,236,173,51,179,215,11,87,79,136,235,5,126,165,12,182,146,183,162,55,177,70,243,184,112,167,154,188,227,87,35,251,233,5,244,81,186,169,
-  121,74,183,215,142,100,79,246,239,219,251,29,143,62,233,14,117,37,191,39,233,206,28,180,237,102,184,159,119,163,239,62,210,131,98,249,189,91,247,248,
-  53,167,175,126,14,60,2,204,124,159,89,90,90,186,248,167,15,67,32,221,178,29,176,67,11,125,213,240,179,14,87,29,56,73,122,158,148,154,127,33,
-  189,29,25,166,25,141,3,197,3,133,48,204,135,97,56,210,168,23,139,238,96,216,239,247,255,66,237,26,254,0,154,153,192,155,158,246,124,207,243,124,
-  157,34,62,8,90,244,201,72,237,107,143,73,235,76,186,147,94,242,143,172,217,42,43,234,160,85,186,119,182,219,104,167,198,36,214,106,32,254,127,157,
-  85,205,111,19,71,20,159,55,51,246,206,122,55,107,39,88,101,227,130,1,9,4,117,108,169,135,64,162,214,7,59,70,129,16,169,173,42,53,34,8,
-  104,41,33,226,16,36,36,14,109,145,170,62,169,135,222,163,150,3,170,218,28,8,71,139,67,79,92,118,206,156,72,254,128,38,82,197,13,184,245,60,
-  188,217,175,216,49,31,82,126,191,153,55,239,205,251,26,205,218,187,255,193,103,146,201,26,123,27,16,236,126,133,113,198,30,2,73,98,125,40,128,243,
-  209,164,34,145,179,119,226,61,46,198,74,76,30,40,179,202,252,216,205,179,40,201,147,195,113,114,209,162,170,64,155,151,59,23,149,10,195,240,76,152,
-  163,84,171,41,207,155,154,114,221,133,133,69,162,149,157,175,8,141,90,10,232,222,232,118,187,224,186,52,44,68,207,243,66,117,195,237,116,96,124,124,
-  124,226,251,30,97,142,192,249,28,23,156,134,160,126,96,193,197,132,151,66,8,145,169,54,211,157,156,156,204,51,47,149,248,92,201,43,209,240,74,199,
-  143,199,89,37,178,178,204,76,9,195,94,15,160,215,235,10,225,50,54,183,184,232,187,193,151,99,116,32,69,240,125,127,172,163,159,129,94,48,135,244,
-  199,62,83,253,107,219,159,96,121,107,118,187,134,245,173,165,237,89,210,102,105,93,218,90,50,77,188,98,130,104,153,49,125,86,255,140,210,8,148,79,
-  254,1,182,162,156,21,181,230,172,57,43,39,143,209,133,225,67,48,159,155,0,91,86,38,220,216,132,166,195,28,7,127,3,51,67,174,182,185,148,185,
-  136,66,225,29,44,235,175,241,199,235,127,111,130,239,244,215,204,81,203,109,79,29,14,15,211,25,157,139,20,245,7,40,114,4,88,55,205,188,236,24,
-  165,157,96,86,213,235,16,253,10,145,136,188,215,203,38,160,19,95,200,130,94,5,145,192,242,235,239,176,28,157,136,188,104,34,153,7,232,132,15,178,
-  22,88,143,123,142,118,234,175,13,119,209,61,118,132,109,124,177,51,95,97,114,119,126,231,204,198,53,19,144,225,132,116,225,143,55,225,197,41,70,82,
-  47,224,57,115,147,238,191,165,191,53,87,255,141,143,244,242,49,156,215,151,245,5,156,213,79,161,170,24,222,166,127,20,6,169,40,39,35,161,57,106,
-  165,254,37,18,12,57,211,119,177,60,205,194,182,106,171,233,112,90,218,39,140,231,108,64,30,79,177,63,209,126,69,97,184,111,159,106,253,5,10,79,
-  147,38,88,123,247,190,84,248,3,214,45,205,14,40,197,104,28,83,29,12,204,239,96,61,131,169,187,64,101,107,90,196,229,107,209,45,237,105,161,239,
-  13,133,152,231,160,63,37,239,12,77,65,254,137,100,30,160,207,82,90,63,235,55,179,191,143,77,26,236,177,33,80,52,149,254,8,91,74,29,161,95,
-  113,155,212,50,182,42,14,211,203,235,126,127,158,173,251,116,213,30,222,38,121,79,63,0,252,230,207,71,96,207,243,220,107,162,196,34,242,116,90,202,
-  120,39,177,247,116,78,26,207,99,134,201,7,114,139,185,198,243,106,50,205,229,3,246,30,247,242,249,208,73,222,85,43,177,71,171,140,86,224,121,237,
-  76,163,245,60,58,255,59,171,171,171,125,72,65,47,160,76,5,78,24,80,69,14,128,161,152,20,31,10,221,23,30,167,164,171,164,215,83,129,191,13,
-  99,77,66,163,213,106,52,26,213,42,137,70,238,113,115,240,112,36,77,124,24,197,226,20,189,206,11,205,102,161,80,40,22,11,210,34,160,207,74,76,
-  78,100,241,148,52,29,89,162,181,32,109,144,195,29,78,31,17,75,57,72,72,166,42,90,75,13,112,208,170,16,149,67,245,222,0,125,84,77,108,27,
-  69,20,126,111,118,188,59,187,155,250,39,178,150,149,113,28,91,160,226,16,187,113,210,16,130,20,209,53,169,136,35,31,162,6,33,146,92,160,84,138,
-  26,229,194,169,228,248,196,161,136,75,85,251,192,1,9,213,220,17,66,28,123,201,138,51,135,42,55,14,85,211,11,18,135,2,7,56,210,225,205,238,
-  186,113,91,218,239,205,155,121,239,123,223,60,239,207,120,127,198,114,185,8,66,202,10,60,135,111,16,138,188,8,30,98,59,89,65,66,57,13,4,156,
-  103,23,60,236,96,114,143,16,240,34,216,108,144,246,131,201,64,128,20,103,241,179,213,242,100,243,204,243,82,140,181,2,106,80,46,169,124,30,162,104,
-  103,140,144,81,217,51,152,159,159,155,159,247,251,253,190,82,0,86,163,1,8,160,148,175,152,84,234,176,127,216,79,74,77,216,9,149,82,98,90,84,
-  60,15,163,82,189,212,64,70,169,219,141,186,46,3,93,203,242,25,97,120,229,234,181,15,182,223,67,236,34,138,245,245,109,55,129,143,220,85,92,185,
-  186,222,55,53,38,54,93,215,235,247,247,178,42,119,14,67,30,21,175,226,41,229,37,110,77,185,126,126,235,92,97,115,115,179,215,243,253,136,126,71,
-  250,144,254,69,202,81,208,11,87,249,238,22,28,158,126,176,120,58,185,143,179,245,89,0,250,9,73,222,118,78,215,70,51,119,102,154,106,129,130,196,
-  222,210,17,213,233,178,118,245,150,89,51,102,79,191,195,220,174,97,154,170,227,116,154,111,24,241,240,75,28,180,157,225,218,160,63,60,160,194,224,136,
-  22,105,141,86,117,94,231,71,67,12,105,75,95,162,69,221,161,69,208,22,21,244,76,180,17,169,97,193,68,212,30,156,224,240,107,28,172,82,225,209,
-  52,21,18,107,211,218,106,174,124,201,139,134,15,241,143,188,122,212,210,249,193,65,83,125,52,114,227,251,24,91,199,211,199,115,113,229,120,238,244,227,
-  184,65,15,241,180,241,32,96,57,176,222,48,47,223,67,26,65,63,70,243,19,250,122,50,239,210,145,254,156,142,232,47,46,236,194,200,135,81,0,244,
-  29,210,43,191,221,197,95,219,127,159,135,100,237,133,27,189,133,239,239,226,159,173,79,52,82,151,74,16,207,150,215,150,85,6,202,167,151,174,111,40,
-  62,6,42,62,7,241,103,250,58,80,161,10,157,56,136,157,184,78,53,122,45,118,128,222,166,37,147,100,196,187,122,5,232,192,36,82,73,85,173,118,
-  88,26,196,135,148,83,228,241,43,243,184,227,29,62,3,244,5,154,238,241,161,228,150,233,160,42,240,69,240,225,35,47,33,88,172,111,27,213,251,220,
-  216,92,139,5,23,108,40,122,16,223,50,13,146,135,173,84,97,116,35,221,93,0,126,53,59,64,86,44,34,214,241,209,1,78,95,172,125,128,100,17,
-  255,45,184,45,208,77,52,235,200,98,234,38,63,219,83,174,105,65,214,232,22,198,51,67,247,151,107,223,206,129,89,202,197,176,220,188,231,221,251,244,
-  117,146,100,147,96,179,19,183,147,60,101,196,196,154,86,159,174,201,39,156,156,168,159,105,236,204,228,255,68,103,90,153,101,226,41,157,120,153,250,43,
-  231,242,143,72,206,63,14,137,253,253,253,19,123,67,8,156,128,176,210,92,152,97,101,220,36,44,129,103,97,10,35,77,118,121,30,103,82,230,86,86,
-  196,243,104,181,218,126,173,86,243,219,65,224,141,225,95,188,200,159,137,55,47,4,79,84,238,24,97,152,49,175,90,207,98,121,121,113,201,12,155,177,
-  156,204,75,75,110,46,215,106,229,24,29,123,129,63,110,114,108,74,186,153,141,25,148,48,133,50,151,152,197,247,192,156,98,78,138,212,249,160,103,202,
-  41,246,34,103,69,8,161,10,210,78,247,74,168,179,170,158,196,89,228,72,227,6,255,1,157,84,207,107,27,87,16,158,247,67,187,179,90,197,43,27,
-  33,86,18,150,237,82,28,91,142,100,39,82,220,66,76,178,146,26,36,69,134,52,9,105,99,39,248,224,166,105,140,41,134,54,208,158,204,208,208,64,
-  15,253,229,82,122,40,165,123,40,180,167,18,122,236,197,251,7,148,18,40,148,30,74,106,232,57,233,169,231,215,247,118,37,199,118,75,40,249,102,223,
-  188,153,121,223,55,179,187,90,244,11,203,229,96,76,130,228,62,28,2,177,34,100,227,136,155,197,47,199,59,72,200,37,1,135,233,225,161,241,218,184,
-  204,239,39,71,97,197,23,252,251,228,72,193,146,201,144,167,179,114,7,14,44,75,79,78,20,156,155,209,57,72,143,141,34,178,0,192,233,94,75,112,
-  249,194,170,1,186,174,51,59,59,55,231,246,122,253,126,247,54,192,232,148,51,170,133,136,88,42,149,92,196,94,111,179,191,185,97,124,191,167,173,219,
-  237,6,47,163,110,27,116,3,54,57,197,24,107,54,131,102,161,224,148,68,187,228,251,197,160,219,235,181,131,160,217,187,116,169,213,186,210,110,181,218,
-  237,43,173,214,36,48,167,80,120,78,240,146,16,218,165,131,110,179,25,179,86,86,90,173,235,125,205,234,95,55,44,103,200,114,221,116,9,209,215,64,
-  44,22,211,105,52,58,55,197,82,44,227,28,115,28,125,119,232,56,161,220,251,129,169,211,225,235,219,234,51,22,158,15,249,43,54,120,230,169,103,236,
-  87,205,22,94,11,127,99,36,63,185,24,142,127,61,78,101,227,107,90,184,182,22,222,103,234,76,248,33,3,170,170,19,202,9,127,100,234,68,82,187,
-  203,40,109,148,166,82,131,44,122,139,54,248,182,87,243,23,181,108,237,35,230,169,142,58,75,39,169,179,141,53,186,168,206,209,73,181,160,211,59,91,
-  104,227,163,51,228,253,254,23,83,159,179,157,85,252,116,53,156,165,13,170,110,227,84,201,217,182,39,236,14,190,139,157,0,237,227,230,222,233,79,70,
-  158,186,160,70,52,57,18,164,216,174,216,117,119,199,34,161,116,143,221,133,232,92,88,124,86,161,11,84,166,13,117,91,15,239,131,26,135,176,8,225,
-  99,246,240,3,14,15,223,227,122,83,35,223,177,171,191,242,171,63,175,223,107,221,107,133,231,233,91,150,184,47,25,213,126,106,135,92,49,170,147,23,
-  189,207,158,167,137,104,41,122,109,9,19,108,189,232,155,45,90,143,60,136,190,210,239,206,83,223,24,191,12,243,144,147,209,188,214,216,228,233,2,21,
-  226,196,172,179,106,81,231,94,146,221,200,190,129,221,27,152,221,194,238,242,252,242,124,70,230,50,72,75,106,69,75,138,250,107,141,181,0,147,128,64,
-  5,253,27,168,183,144,110,146,208,197,49,168,96,90,226,12,102,161,131,129,94,51,89,236,224,158,126,19,81,71,55,47,195,238,93,22,185,145,136,238,
-  168,119,168,159,12,36,241,44,170,63,24,9,226,96,166,102,72,40,78,34,20,36,162,205,232,109,173,250,152,69,55,201,187,159,95,120,208,89,216,59,
-  190,99,239,216,209,18,37,235,77,42,60,112,162,117,146,218,44,226,122,29,246,50,94,252,136,89,251,246,132,203,99,102,210,133,15,84,79,252,176,139,
-  181,159,15,171,242,64,183,36,151,135,186,255,95,110,50,151,79,124,193,244,245,210,223,246,173,91,223,51,178,88,2,33,140,231,113,204,117,44,6,33,
-  79,118,19,112,62,32,241,167,86,133,65,42,197,101,42,117,154,31,194,177,233,105,183,92,174,84,171,101,183,90,201,231,157,244,16,110,189,146,171,215,
-  221,122,174,82,119,43,110,165,150,207,115,238,24,248,254,1,185,56,138,70,163,113,170,113,202,210,104,52,112,206,73,165,44,125,73,57,242,2,72,38,
-  185,196,129,57,250,255,94,28,48,46,1,153,174,65,70,127,143,153,129,33,67,48,38,141,143,99,31,124,97,88,114,144,197,245,132,197,240,191,106,34,
-  158,3,177,253,3,157,84,77,136,92,69,16,174,234,238,247,94,191,121,111,222,140,227,100,125,198,240,92,98,50,172,59,19,245,176,33,227,95,152,157,
-  93,112,147,201,146,89,150,64,204,37,226,37,4,196,171,9,8,41,20,205,69,5,3,122,88,36,174,146,8,138,204,81,240,180,125,50,30,36,8,94,
-  12,122,152,139,30,61,8,201,209,182,250,189,157,201,236,48,254,86,117,85,119,125,253,85,117,117,31,250,59,92,168,30,130,25,178,133,197,60,175,96,
-  21,132,2,31,18,16,2,132,139,4,204,20,177,107,69,192,44,127,34,158,226,77,1,26,64,253,27,38,212,115,31,139,17,93,21,135,138,185,188,72,
-  93,67,95,235,52,77,157,21,162,23,75,251,75,143,179,68,81,115,237,196,26,104,13,90,70,218,73,20,173,157,92,235,164,213,180,218,103,55,226,167,
-  103,207,118,187,93,78,184,184,188,188,188,177,178,178,185,25,1,164,105,24,62,220,239,116,48,68,196,90,183,187,210,237,74,22,209,157,71,172,2,134,
-  33,143,131,53,193,16,239,227,3,5,51,12,153,217,99,102,52,102,230,196,156,26,69,145,59,174,84,226,156,48,138,164,144,81,28,134,113,185,92,206,
-  155,11,203,96,230,169,215,183,47,219,58,249,246,49,58,68,31,162,253,26,121,238,217,87,71,158,247,246,81,70,21,160,10,109,33,41,43,217,246,145,
-  162,205,133,88,83,111,103,201,28,166,51,59,133,237,137,98,189,160,41,165,151,236,121,218,152,183,239,32,189,139,127,239,1,142,105,61,124,196,28,54,
-  23,234,213,160,19,60,202,61,190,127,142,78,177,102,116,105,123,125,248,138,61,185,160,181,61,106,19,186,138,174,39,251,45,118,130,99,157,128,161,101,
-  218,224,216,211,195,243,70,154,253,182,69,153,227,113,243,31,161,169,241,78,223,190,70,23,237,81,190,68,101,59,37,249,255,170,85,172,154,81,207,189,
-  205,85,4,155,192,31,63,225,189,203,215,20,221,194,31,142,223,73,191,169,221,209,84,179,175,223,62,245,107,139,222,195,95,50,200,103,174,64,77,122,
-  106,112,19,169,241,229,19,187,192,6,61,175,232,82,254,202,48,105,60,236,139,174,57,214,43,64,79,194,206,117,4,83,207,26,96,142,83,197,172,59,
-  191,221,230,213,56,26,114,212,128,76,221,175,53,53,180,62,173,181,153,3,58,2,138,95,248,33,54,58,99,50,115,132,36,215,184,50,228,219,49,78,
-  61,62,49,99,190,189,129,90,183,95,208,116,174,8,63,64,61,68,19,129,145,148,153,246,232,254,149,157,79,208,37,228,72,182,253,22,55,249,223,43,
-  149,73,204,168,37,185,175,152,164,21,36,127,255,20,63,107,126,149,152,47,240,243,55,241,199,185,27,165,219,235,132,31,215,223,120,238,90,64,213,223,
-  78,131,155,232,130,185,76,217,207,215,145,228,247,161,11,201,231,178,247,77,177,119,179,63,198,166,213,97,138,181,224,168,137,181,63,177,242,39,240,34,
-  239,31,114,222,246,166,178,112,224,15,196,77,53,16,60,171,91,1,249,171,171,132,119,131,187,193,86,48,192,1,142,69,136,194,139,137,133,200,127,129,
-  191,64,70,160,116,176,82,145,39,102,72,139,165,209,104,45,70,89,242,108,146,148,218,207,148,218,15,62,29,199,139,51,168,97,58,94,202,61,178,180,
-  228,179,4,205,102,51,244,188,86,203,243,60,197,146,36,82,129,194,93,245,216,132,242,217,71,140,58,229,127,200,253,173,202,103,175,28,18,227,238,206,
-  44,245,185,130,83,72,161,10,85,84,146,171,241,55,124,128,205,233,129,189,145,84,133,254,9,149,85,79,104,28,101,20,255,254,237,206,219,153,77,103,
-  187,166,117,186,146,201,18,75,181,205,182,134,8,34,116,147,157,221,8,110,54,37,221,180,80,183,241,210,147,52,69,244,104,142,239,208,147,72,17,44,
-  45,130,72,20,2,42,122,174,39,119,192,131,149,182,91,41,30,43,14,244,214,131,246,210,155,48,125,223,55,147,205,254,73,74,253,253,190,63,239,123,
-  239,125,239,189,111,190,97,6,197,252,9,102,112,131,179,81,40,234,194,72,34,89,21,7,173,5,49,228,156,245,217,158,1,246,135,122,206,210,190,50,
-  108,20,253,82,116,42,6,35,166,231,235,39,205,42,171,180,135,206,67,22,229,37,103,96,194,182,219,109,240,60,15,114,99,152,157,117,28,154,28,199,
-  213,3,181,35,169,97,101,229,253,87,28,104,54,155,157,139,7,15,242,4,141,78,167,211,244,94,247,18,128,7,132,102,130,78,171,85,178,75,246,16,
-  104,73,150,214,128,150,252,150,143,236,100,128,118,208,12,58,41,154,141,198,70,125,227,248,90,176,86,175,47,159,95,90,242,188,75,129,78,57,211,208,
-  40,151,245,134,25,57,35,25,187,20,24,121,68,111,10,2,144,82,234,115,100,184,235,174,46,235,242,192,99,160,26,81,151,139,185,248,60,67,87,243,
-  63,228,104,247,82,126,239,222,177,239,25,222,177,239,219,187,114,196,81,33,160,122,240,136,127,57,253,243,75,183,212,111,206,205,226,215,191,240,199,211,
-  191,23,254,246,175,247,56,186,93,63,250,142,199,7,6,57,7,64,73,162,91,188,165,115,199,83,232,198,83,131,246,245,117,96,133,184,130,39,227,211,
-  218,132,62,201,46,158,164,249,114,34,199,83,45,160,43,134,130,11,76,111,37,107,53,190,104,124,199,251,1,220,100,232,175,67,193,162,101,53,110,13,
-  102,194,77,244,207,237,89,3,85,39,230,96,218,219,121,117,94,131,10,189,61,39,188,154,87,182,222,0,136,36,174,23,173,24,146,103,21,103,128,89,
-  46,132,30,29,247,213,68,133,185,174,236,58,20,231,83,142,240,98,158,146,170,59,141,85,218,193,162,27,252,199,220,31,71,239,217,145,133,254,85,184,
-  127,244,246,202,123,209,117,30,127,206,153,184,246,5,199,195,241,155,244,44,214,226,249,232,12,139,150,69,244,161,98,248,43,79,227,185,255,20,209,185,
-  155,222,220,147,227,189,254,45,222,237,75,189,76,56,193,80,176,31,90,171,108,107,166,92,190,182,198,30,28,218,18,209,59,189,83,65,120,181,31,200,
-  208,254,24,0,219,241,217,240,91,158,7,125,115,243,108,200,238,42,69,119,129,159,113,82,167,141,245,197,188,190,38,198,192,2,156,215,134,190,203,64,
-  139,63,161,41,79,94,248,209,72,228,248,50,233,41,118,123,68,175,75,97,58,114,138,119,97,146,1,214,41,25,188,13,103,169,220,34,83,128,219,233,
-  57,226,136,83,126,11,232,101,117,195,111,82,101,247,47,30,58,161,236,202,255,227,187,85,100,40,217,86,17,101,120,33,252,137,63,221,236,217,225,109,
-  142,254,191,95,241,199,171,127,110,156,10,47,96,137,85,31,150,240,48,162,222,155,195,67,225,6,250,225,149,42,90,3,204,236,195,44,10,98,150,182,
-  114,227,199,77,223,149,45,178,237,71,189,79,189,128,46,201,49,78,53,198,236,158,186,12,85,33,183,213,182,210,210,244,77,83,214,7,130,115,41,69,
-  2,250,28,9,169,135,81,208,87,135,15,44,140,135,30,164,241,222,149,104,18,38,216,68,134,134,124,198,248,87,199,80,169,28,59,54,164,24,74,86,
-  122,89,143,11,141,198,66,99,129,154,153,141,84,175,17,3,106,245,186,158,106,139,181,197,128,72,179,86,215,130,90,64,99,58,212,234,41,22,53,150,
-  196,30,144,41,178,6,75,150,53,59,59,81,169,100,148,193,91,108,82,42,102,200,69,78,112,243,205,210,52,82,222,88,180,84,224,218,67,165,26,197,
-  96,132,133,84,223,39,40,145,248,23,232,151,54,201,199,119,236,80,233,252,212,225,25,157,85,77,108,91,69,16,222,121,126,142,215,235,58,118,219,168,
-  184,118,29,71,5,137,168,74,91,171,189,20,37,246,123,175,150,224,213,81,213,67,85,245,197,18,231,164,32,80,196,1,46,32,45,7,212,74,180,21,
-  39,138,170,8,69,136,30,42,85,5,74,144,218,92,176,200,133,230,199,168,28,160,135,30,82,169,170,196,1,33,56,193,37,143,153,221,125,182,95,20,
-  210,146,239,219,153,157,157,157,153,157,93,91,246,188,117,204,218,115,11,216,115,97,64,79,22,41,155,177,61,207,8,207,91,219,108,190,196,254,39,108,
-  182,99,216,59,46,43,22,192,102,34,13,105,131,204,246,48,1,89,154,210,217,140,231,185,134,189,10,233,82,38,209,104,52,50,165,76,166,196,253,224,
-  148,31,4,192,119,3,10,42,209,108,54,19,2,137,8,2,220,34,152,137,192,121,129,160,244,168,178,138,111,52,15,21,69,145,224,251,20,234,71,104,
-  182,154,52,12,68,81,244,163,168,70,52,9,95,39,154,248,94,16,109,158,154,194,38,13,247,239,239,123,132,201,73,84,156,101,211,114,86,238,147,63,
-  193,242,18,172,136,181,46,87,196,47,103,59,162,35,214,190,130,185,69,232,106,114,173,138,135,111,174,138,142,226,149,137,21,241,209,37,184,251,193,111,
-  239,204,205,172,189,46,207,126,227,63,169,93,59,190,60,250,79,121,113,239,239,124,117,247,211,244,231,95,195,247,247,225,82,230,179,189,243,103,126,220,
-  247,247,148,108,61,254,1,100,229,54,95,47,223,203,205,164,156,19,71,71,43,133,28,151,147,225,151,32,115,242,34,132,239,201,11,225,20,174,199,229,
-  225,176,140,214,5,217,226,156,135,99,33,230,61,198,152,112,3,228,240,236,52,159,57,207,85,120,216,196,188,37,50,198,208,32,182,82,169,20,38,143,
-  27,25,36,50,94,168,240,2,209,65,85,201,231,95,224,12,15,122,0,58,217,204,114,56,252,131,172,9,172,140,153,27,218,166,182,88,62,133,45,96,
-  33,108,160,140,97,120,214,236,116,62,152,46,4,231,57,14,198,89,149,150,1,207,41,166,240,2,216,239,2,245,139,23,187,8,42,173,39,131,178,69,
-  251,75,228,199,179,15,203,27,100,125,75,231,45,128,154,25,14,60,1,175,206,177,178,79,87,82,111,244,41,232,11,69,37,126,6,253,114,200,153,105,
-  30,68,15,138,207,152,195,178,230,65,162,20,74,194,183,44,43,239,112,123,86,118,224,220,250,77,144,239,182,253,141,87,232,179,237,116,249,224,52,173,
-  238,36,230,82,90,180,247,195,131,81,204,119,135,86,197,130,125,125,128,228,142,61,215,39,87,7,218,246,114,211,253,179,32,199,71,70,214,95,237,156,
-  89,172,253,122,252,147,108,27,254,106,204,195,163,35,67,156,94,139,40,147,120,71,166,175,170,70,248,49,200,203,16,94,7,188,180,124,81,55,31,190,
-  213,254,2,14,112,198,208,149,148,66,38,49,67,80,166,218,124,159,71,238,158,19,127,21,184,254,5,224,90,240,44,233,153,163,140,50,58,188,11,184,
-  247,54,101,153,38,134,184,73,209,61,30,237,179,25,15,11,81,149,254,166,167,98,165,35,247,46,140,71,188,172,39,186,13,51,159,70,142,190,177,221,
-  197,80,175,60,147,67,177,152,174,77,15,34,143,145,137,111,209,190,2,237,215,142,72,187,42,97,19,83,207,160,142,249,47,33,157,52,171,254,122,218,
-  178,250,56,128,180,183,148,254,8,77,11,189,122,111,43,90,155,234,110,23,165,234,85,174,129,5,61,88,132,68,28,86,4,179,77,17,240,60,176,98,
-  216,84,53,17,15,138,57,181,43,55,152,204,38,39,118,4,107,51,138,241,101,237,100,13,199,73,51,169,17,51,162,85,45,90,185,174,83,247,112,184,
-  56,60,199,115,29,215,163,73,45,188,186,87,119,220,186,83,119,145,142,10,194,141,186,131,94,138,192,84,7,69,145,76,173,181,242,182,69,163,84,194,
-  239,240,9,245,77,174,34,181,222,133,255,210,91,137,166,182,56,74,30,108,163,199,88,207,26,209,118,44,190,218,173,207,187,103,85,187,39,26,239,191,
-  165,85,77,136,83,87,20,190,231,37,250,238,220,56,147,231,76,232,60,95,218,24,84,112,16,51,157,14,82,2,243,146,188,137,46,98,178,168,203,36,
-  131,186,147,25,161,218,93,102,85,78,55,117,138,155,82,21,251,99,165,165,213,133,136,136,78,97,164,133,6,103,81,161,211,64,23,45,34,136,163,173,
-  180,74,161,160,131,96,23,62,207,189,247,229,77,226,76,127,134,126,223,59,231,158,251,157,115,238,61,249,35,143,97,148,53,129,253,11,214,119,110,140,
-  96,141,42,223,255,183,77,150,177,138,184,141,253,87,68,217,90,16,93,131,46,102,193,17,61,221,136,173,64,151,222,27,132,122,25,175,141,151,52,55,
-  1,244,4,140,76,236,78,198,236,106,169,84,218,104,3,192,70,167,92,46,15,136,8,97,178,90,178,185,109,15,217,129,183,185,56,92,175,151,235,100,
-  142,112,156,29,78,27,162,90,149,253,213,146,92,101,69,89,67,86,9,13,39,136,72,18,178,184,90,173,171,42,45,75,239,56,181,189,132,77,114,250,
-  100,165,50,49,145,140,197,146,73,155,225,91,126,237,217,129,159,205,47,250,127,16,146,79,222,135,249,79,224,131,243,112,251,50,92,252,26,90,162,37,
-  238,145,125,158,149,81,75,252,242,0,174,44,193,253,7,48,187,4,11,226,167,175,64,119,125,47,78,111,189,97,63,237,189,20,121,116,18,110,245,63,
-  126,109,110,224,250,208,220,192,181,67,159,57,191,199,230,6,102,98,190,251,225,190,27,23,225,189,220,195,205,191,77,159,61,6,126,170,153,191,179,255,
-  210,89,120,154,250,216,253,40,243,109,106,209,29,177,6,75,111,84,15,78,30,157,246,191,4,172,99,220,111,32,21,158,2,60,7,254,85,192,121,240,
-  127,4,188,43,21,171,128,117,191,134,83,217,44,231,254,187,64,225,60,96,156,58,22,1,43,166,105,98,198,31,35,235,147,180,57,195,10,166,72,72,
-  97,197,159,36,95,167,131,83,56,37,139,235,68,215,255,19,184,201,167,143,1,66,131,163,75,181,59,49,67,190,70,7,190,66,149,25,25,73,5,221,
-  172,21,207,50,222,152,110,112,54,3,7,173,65,30,87,52,233,144,62,170,145,183,200,30,109,125,88,97,242,82,134,113,166,103,163,225,201,251,144,181,
-  134,120,131,15,89,131,114,86,117,161,158,85,14,74,166,106,227,35,166,202,234,140,204,101,169,135,230,157,10,242,56,213,124,105,241,0,186,11,175,223,
-  52,150,76,253,241,252,1,247,248,67,248,149,76,238,190,33,187,187,127,65,101,206,152,87,34,210,90,226,157,45,45,161,181,150,96,244,92,24,75,15,
-  179,254,157,159,198,48,195,88,58,205,90,30,253,242,255,114,191,219,158,110,66,250,209,174,35,163,103,134,61,150,96,60,32,38,152,126,65,193,227,31,
-  7,150,198,4,186,205,19,240,50,231,28,215,161,32,139,171,207,227,205,23,132,13,140,227,17,217,213,101,204,159,3,58,89,31,191,175,45,135,217,142,
-  203,57,127,117,57,246,123,150,43,245,91,92,126,65,96,116,31,97,179,242,56,202,244,16,84,56,22,134,9,149,74,132,153,227,208,45,208,171,106,190,
-  141,128,38,153,102,36,180,54,205,21,132,144,102,216,107,134,22,9,163,238,202,206,94,29,27,29,92,79,140,174,176,206,220,74,118,119,107,174,162,25,
-  6,180,97,252,3,96,45,232,232,139,116,160,51,169,149,229,186,120,111,175,251,63,208,53,171,179,28,230,138,197,98,142,92,174,184,39,87,148,44,6,
-  190,152,235,102,174,224,229,11,121,114,121,122,10,158,151,87,219,60,193,43,228,131,84,65,171,58,44,80,17,61,114,45,104,39,253,248,42,216,205,44,
-  224,154,44,97,112,131,51,143,121,114,133,40,253,25,89,146,160,86,144,113,148,165,137,81,250,146,187,108,23,147,21,158,82,169,6,44,181,151,181,27,
-  2,79,29,250,60,69,181,163,189,86,229,105,129,26,174,109,6,19,180,103,81,249,196,115,149,85,77,108,27,69,20,158,55,94,239,206,174,227,172,157,
-  88,200,117,90,26,137,72,184,81,8,81,78,149,112,178,107,139,226,159,69,114,160,74,149,248,130,196,5,151,91,17,136,28,42,244,10,8,42,85,68,
-  8,169,1,69,61,248,2,168,18,7,104,203,129,219,74,156,80,219,72,237,165,61,81,35,33,78,28,122,232,21,134,55,179,235,191,212,33,233,247,205,
-  155,121,127,243,230,237,206,202,254,7,150,217,148,41,58,192,14,7,103,6,9,155,224,76,28,152,51,53,222,157,49,39,255,167,46,103,207,0,227,200,
-  78,133,79,129,235,206,25,115,140,88,49,217,115,134,122,18,109,207,167,28,0,176,247,35,165,48,163,209,91,242,133,84,202,182,103,108,225,212,235,155,
-  132,90,61,11,89,91,17,18,169,32,8,18,132,26,33,43,178,217,44,216,78,163,69,152,118,166,167,167,19,66,108,108,108,180,73,242,249,124,145,164,
-  64,177,70,171,81,40,204,23,10,142,93,235,161,65,190,150,134,14,106,56,68,189,198,208,137,58,37,138,234,64,93,225,24,193,86,141,4,186,93,173,
-  81,106,163,145,47,168,109,177,98,139,180,176,143,9,158,132,180,237,2,158,197,5,76,227,77,192,159,225,155,191,225,174,115,219,185,235,252,116,241,207,
-  11,163,242,215,133,155,23,111,59,191,76,254,176,185,231,40,222,113,190,159,191,227,236,245,248,49,92,255,13,212,206,30,241,15,192,231,191,60,43,107,
-  225,54,200,207,0,131,199,219,28,119,56,219,178,170,150,101,185,2,75,248,57,200,171,128,223,130,164,179,127,5,121,15,104,143,252,23,208,197,64,8,
-  33,23,72,33,46,105,93,110,226,121,101,169,82,219,92,46,232,42,248,146,124,133,100,82,145,106,211,200,100,150,170,194,247,176,196,40,185,37,219,52,
-  111,201,46,156,22,94,173,202,48,160,52,87,158,32,23,85,217,225,75,244,13,19,171,181,162,104,214,154,194,213,180,176,20,103,13,100,18,3,170,23,
-  13,213,134,252,16,183,104,254,130,171,222,170,69,75,181,82,138,218,80,185,186,239,45,217,166,83,158,138,169,13,216,138,158,76,117,113,31,116,6,92,
-  6,55,35,186,15,32,76,132,167,194,196,126,187,243,21,103,248,8,58,143,232,157,170,201,197,55,241,6,172,95,255,14,214,201,77,23,215,9,194,102,
-  120,13,194,243,97,251,199,217,232,122,110,25,187,230,13,227,218,62,217,115,126,47,94,125,187,119,109,151,140,161,43,116,238,121,195,86,88,196,75,240,
-  176,130,239,93,254,8,221,7,115,116,79,120,11,228,137,9,161,193,48,215,127,37,106,200,43,64,94,124,33,122,178,57,165,39,209,33,209,118,28,30,
-  117,82,57,42,154,99,234,151,68,224,91,148,165,10,49,185,11,202,69,185,107,253,119,190,3,199,69,116,89,236,69,38,6,148,246,112,15,244,70,27,
-  125,35,42,134,110,78,29,123,82,159,189,28,159,235,210,87,227,70,133,221,227,58,146,235,71,162,62,135,28,187,218,49,149,99,53,214,93,100,225,251,
-  108,72,125,124,5,58,203,79,206,117,79,179,238,41,116,195,119,194,119,23,239,191,188,24,174,135,109,52,30,90,159,0,30,206,4,90,7,240,233,60,
-  181,90,104,34,31,161,137,198,136,40,14,98,17,141,177,52,71,170,244,56,206,103,14,85,82,25,230,201,175,129,6,38,63,224,28,20,120,132,68,4,
-  173,247,124,81,194,161,224,125,36,134,49,136,13,149,30,216,192,7,131,243,76,50,105,166,211,165,35,160,94,215,75,179,217,228,99,96,199,235,218,90,
-  101,133,88,169,172,172,84,94,165,149,12,13,229,91,89,243,87,253,85,111,213,243,86,253,178,87,166,89,155,132,88,245,98,229,76,217,11,202,190,239,
-  123,10,106,209,170,239,159,241,252,242,65,176,171,68,53,245,255,23,94,127,227,181,6,97,102,38,205,102,199,147,171,63,180,217,35,83,229,26,160,246,
-  24,163,62,214,243,205,197,190,103,171,123,20,78,12,81,252,7,141,83,205,110,211,64,16,158,93,155,252,84,73,19,153,200,138,45,53,92,168,148,67,
-  139,44,206,156,16,80,215,105,155,150,166,174,113,207,28,114,68,66,34,7,212,14,79,208,30,128,43,57,195,13,30,160,251,26,220,246,13,232,27,44,
-  179,187,118,29,3,18,253,190,157,111,126,118,102,119,173,40,111,190,51,120,10,30,88,240,194,251,100,158,201,26,100,107,224,154,184,79,118,110,34,94,
-  84,225,182,231,111,248,102,223,162,138,90,33,100,241,48,12,130,96,104,204,104,24,14,11,80,68,185,70,16,216,32,203,179,60,207,105,35,172,34,187,
-  167,181,109,199,90,84,12,59,157,242,208,85,60,200,98,30,73,7,100,122,233,47,183,46,125,149,92,249,114,254,235,66,190,86,27,56,82,9,224,66,
-  37,56,17,19,252,204,148,100,164,50,85,137,220,193,137,218,50,158,122,112,97,106,105,149,175,180,115,88,107,53,91,98,40,156,107,71,56,245,12,159,
-  225,8,23,52,242,67,119,94,255,100,54,165,43,191,113,209,196,158,184,176,170,119,202,243,62,158,11,122,195,11,26,218,168,155,60,81,235,216,195,158,
-  90,175,188,124,207,163,65,44,198,248,129,221,248,87,62,208,183,77,140,163,75,70,128,57,137,250,196,112,177,140,232,59,1,159,208,237,100,234,29,249,
-  109,83,209,239,217,214,111,210,153,237,242,246,6,16,131,124,4,226,109,45,190,185,79,191,223,242,49,200,231,96,3,131,47,95,153,30,18,115,16,155,
-  160,143,41,151,216,212,143,172,83,204,7,49,186,216,64,78,202,201,187,69,228,154,106,165,117,218,254,186,254,105,77,206,57,99,156,113,135,86,233,52,
-  250,253,70,183,187,187,59,155,205,94,77,167,211,35,242,228,102,211,52,221,223,207,14,13,179,67,210,252,165,246,167,167,7,7,237,246,14,81,75,124,
-  139,19,131,61,131,35,179,116,118,118,150,252,3,221,227,99,136,60,215,115,97,252,31,54,10,142,239,192,162,247,94,71,211,45,108,149,245,26,253,49,
-  13,93,34,205,141,140,185,240,144,106,86,75,142,239,204,232,55,101,84,95,111,27,69,16,159,217,59,159,119,109,39,190,186,193,186,51,244,194,3,21,
-  177,18,42,171,2,241,130,144,35,241,231,10,78,147,52,118,49,38,198,134,39,162,74,60,33,145,183,46,127,218,72,60,208,212,106,65,42,2,31,68,
-  8,169,60,246,181,109,22,196,7,224,27,176,223,160,60,32,94,143,217,189,139,147,136,249,237,204,252,102,118,118,103,111,117,218,95,176,21,121,28,174,
-  194,171,12,142,132,129,75,10,30,81,247,56,11,51,202,88,13,160,102,99,83,83,202,202,97,254,168,202,51,38,48,102,201,24,230,50,26,46,100,217,
-  172,150,229,235,96,182,203,177,212,221,156,228,158,182,107,192,179,194,117,219,113,63,6,209,108,54,151,151,159,46,149,203,65,67,148,69,217,140,50,52,
-  133,16,28,130,48,20,129,224,2,194,144,151,74,171,227,32,8,120,192,121,169,193,69,200,137,5,66,132,98,206,10,77,129,3,28,121,153,243,242,106,
-  123,167,29,19,86,161,29,199,237,143,218,49,138,254,160,63,24,12,130,70,163,113,204,194,144,26,132,118,83,138,42,116,18,190,68,141,155,22,162,128,
-  213,126,204,245,175,76,223,54,227,30,242,82,75,159,33,118,88,73,162,105,4,64,193,249,195,138,170,104,7,244,148,253,85,79,110,48,185,12,201,15,
-  44,41,76,163,164,160,31,178,63,191,98,79,238,227,173,122,178,114,171,46,127,67,89,77,15,216,126,93,239,62,249,26,245,199,233,57,25,201,3,76,
-  255,69,144,123,152,110,200,205,9,78,80,117,211,45,249,51,234,81,186,165,41,149,94,180,62,162,228,94,150,28,157,72,252,241,144,61,194,71,248,246,
-  99,124,60,91,120,155,201,146,78,24,245,58,123,146,79,208,159,32,247,77,11,3,58,220,61,164,79,226,63,97,209,183,37,37,168,85,253,170,122,94,
-  57,135,142,114,78,71,114,141,26,158,75,95,162,150,68,30,160,42,202,111,140,169,166,35,219,244,14,157,237,31,76,15,104,86,222,204,124,242,5,25,
-  61,146,119,109,248,0,211,59,152,76,48,157,167,51,245,244,13,164,171,244,85,130,234,154,186,182,13,11,177,254,30,229,231,168,42,116,107,34,189,105,
-  86,46,234,72,209,221,170,37,249,25,82,253,244,69,154,79,231,101,72,142,174,247,229,164,160,174,171,122,107,191,14,251,117,85,132,228,53,203,168,125,
-  4,170,168,174,144,75,239,162,220,237,116,147,150,220,5,249,138,220,53,154,126,74,254,5,48,153,200,48,210,200,68,191,239,161,185,194,47,29,99,237,
-  10,181,38,87,213,26,200,141,25,89,240,43,1,60,183,221,237,168,235,207,84,56,175,112,80,63,34,212,58,11,16,131,190,0,234,147,83,252,239,179,
-  144,92,212,175,3,89,243,203,79,239,163,217,116,71,45,74,15,100,64,70,247,64,157,151,66,122,164,79,233,55,100,85,237,92,80,59,11,177,250,14,
-  165,75,240,36,179,202,136,27,117,8,158,101,110,158,245,242,42,215,86,186,179,74,55,159,51,22,45,156,217,234,76,189,188,234,24,94,190,147,55,139,
-  50,206,22,191,69,89,116,172,48,82,100,14,99,136,164,4,27,229,142,164,86,59,99,197,47,120,67,54,55,55,28,14,223,39,144,92,186,52,60,18,
-  214,237,118,223,101,235,235,235,155,68,200,117,215,175,174,173,245,55,44,250,27,100,7,87,140,255,208,202,59,151,47,215,198,227,241,7,227,209,104,100,
-  26,48,33,222,36,24,19,207,164,215,235,117,58,157,77,51,136,188,247,214,105,153,219,218,218,134,22,112,122,122,44,208,245,9,104,248,202,12,46,189,
-  72,6,43,39,144,101,56,112,183,114,18,78,174,255,207,209,187,71,143,34,100,88,194,236,201,181,64,31,125,32,56,220,250,214,127,109,85,77,108,27,
-  85,16,126,243,118,109,191,181,29,55,127,34,235,38,169,141,154,182,9,182,133,91,162,164,82,35,225,52,135,56,113,163,160,18,20,167,34,196,144,110,
-  18,199,129,166,148,216,6,33,117,84,137,63,9,133,84,226,196,1,27,169,149,56,161,74,225,80,209,131,87,5,164,114,227,128,144,144,144,188,18,55,
-  184,132,94,144,122,89,230,173,55,182,73,153,121,51,243,102,230,155,121,179,111,215,242,207,112,154,113,226,134,34,35,252,199,153,67,159,3,107,132,158,
-  38,213,77,180,165,189,109,217,182,112,107,43,212,208,57,230,63,82,197,56,57,106,208,49,173,132,180,167,143,52,104,1,252,170,51,45,213,244,54,219,
-  60,199,216,113,57,213,9,218,203,40,8,225,23,126,135,132,150,202,166,179,217,108,42,43,132,8,143,140,132,53,45,22,139,245,147,4,250,251,3,253,
-  254,0,81,44,166,107,26,89,71,249,3,50,38,156,189,67,98,4,116,160,162,147,84,147,78,165,46,94,156,154,205,100,166,82,74,170,163,131,41,129,
-  128,50,162,131,63,166,244,244,40,74,64,17,130,49,37,166,40,66,22,234,66,158,66,13,136,102,210,51,153,41,42,155,153,73,79,102,200,166,211,169,
-  217,204,204,108,102,106,86,164,178,52,96,154,2,66,23,186,174,135,137,200,28,11,105,90,186,67,235,8,48,60,134,55,240,46,199,103,113,1,13,124,
-  5,159,128,125,142,98,47,227,109,110,127,199,113,13,127,224,248,17,36,163,76,12,207,159,23,248,30,62,2,251,55,192,7,188,22,172,38,234,127,128,
-  52,214,62,212,247,161,146,176,30,67,173,194,209,166,109,237,79,168,71,177,92,191,100,253,13,149,15,121,173,11,61,24,174,5,241,123,64,213,140,152,
-  247,185,253,16,170,15,192,182,0,239,130,249,141,227,38,236,37,89,187,207,37,214,30,148,218,26,181,190,114,114,116,234,67,160,115,26,5,213,201,134,
-  197,129,189,81,246,217,169,131,59,188,58,152,171,14,86,150,72,8,60,120,31,74,217,249,156,184,38,202,17,125,111,84,255,53,252,139,138,101,252,93,
-  246,144,243,95,192,113,123,12,199,241,37,252,75,54,100,76,182,58,129,189,246,133,234,8,62,230,110,239,113,28,103,164,218,235,24,93,69,163,166,89,
-  33,241,63,113,204,83,32,53,254,53,116,70,22,183,35,116,252,243,31,67,167,94,202,202,65,58,87,238,193,122,57,178,130,3,130,201,151,69,175,1,
-  39,232,138,51,36,19,120,69,222,242,21,114,190,5,233,201,190,63,2,35,177,55,147,248,1,224,38,102,237,39,50,134,11,204,204,225,144,57,198,208,
-  48,199,112,221,252,18,228,199,105,158,197,125,152,8,210,151,145,38,103,1,147,116,109,183,192,12,86,61,213,126,169,43,143,160,122,210,210,44,158,66,
-  78,102,0,21,4,203,91,21,86,200,12,82,65,240,32,198,112,193,58,139,137,202,46,96,130,70,186,69,166,190,132,29,4,15,209,205,132,25,171,190,
-  97,69,40,118,134,48,183,29,76,125,76,106,243,166,249,12,38,246,124,7,151,153,125,135,70,158,96,118,136,5,117,225,27,102,58,91,140,14,153,151,
-  227,187,159,2,51,231,112,18,19,246,23,244,120,230,41,28,70,143,173,218,11,206,73,146,51,246,251,20,159,51,163,78,199,87,9,145,32,221,86,50,
-  199,92,116,222,65,18,142,62,217,222,206,228,124,212,23,137,170,186,96,201,69,93,208,169,81,253,210,153,190,232,121,243,230,64,80,8,90,241,33,51,
-  233,252,122,241,186,188,165,23,24,187,151,167,181,231,155,168,9,124,17,119,193,222,5,51,143,170,195,94,228,174,230,205,189,180,138,147,85,220,156,215,
-  181,74,147,189,77,62,204,74,60,111,178,218,244,189,109,194,219,234,188,8,232,115,108,11,217,98,181,109,170,150,127,52,247,127,93,15,17,45,246,173,
-  173,33,255,4,208,251,143,87,81,56,231,202,211,4,240,95,175,129,2,144,59,233,144,7,174,106,120,220,197,184,57,104,230,92,221,213,197,121,79,207,
-  198,198,107,27,111,175,109,44,47,95,223,200,243,80,31,37,174,189,243,150,97,24,219,219,219,101,195,40,47,75,50,228,162,88,60,190,108,80,148,148,
-  33,163,134,179,182,157,16,45,217,180,248,174,84,249,124,241,234,213,124,177,187,187,187,88,212,138,188,80,216,44,229,94,47,148,10,185,66,41,87,202,
-  21,114,91,43,171,59,91,59,59,13,179,181,154,95,221,218,201,175,54,198,14,133,250,180,233,190,105,62,205,249,250,250,122,60,238,241,120,223,212,110,
-  104,33,21,84,161,122,212,128,202,92,6,149,147,208,63,142,107,37,75,135,113,104,98,14,145,146,89,156,197,65,61,100,38,36,131,83,205,85,85,85,
-  168,187,236,229,35,249,23,117,84,77,108,27,69,20,158,121,251,227,93,219,237,110,235,34,175,99,197,217,170,73,255,54,20,5,68,47,13,180,36,64,
-  156,186,18,33,73,165,8,169,82,66,212,52,52,151,80,75,40,138,211,244,209,136,170,21,162,148,3,66,32,144,45,21,110,136,11,7,18,144,240,156,
-  17,135,138,3,2,113,176,5,226,231,70,56,113,235,242,102,118,215,118,42,241,190,153,55,111,222,247,189,55,179,235,149,119,248,81,166,51,6,18,89,
-  208,1,210,144,102,210,86,105,14,2,251,63,211,89,196,197,10,179,135,50,227,52,116,232,233,30,165,60,237,80,111,169,92,143,42,175,46,209,173,27,
-  236,233,121,82,58,79,17,234,182,37,217,36,77,230,165,173,62,203,138,85,30,155,155,59,199,172,52,88,133,194,137,66,193,182,11,118,161,80,8,130,
-  160,24,89,144,33,4,182,109,103,138,25,98,51,100,118,180,20,229,8,130,116,177,60,54,94,121,249,185,241,241,169,169,169,233,233,87,181,92,38,167,
-  157,56,124,32,56,146,59,146,161,83,50,202,130,98,160,154,89,150,85,169,84,38,39,43,231,207,79,86,206,77,143,81,201,152,172,245,34,163,195,251,
-  250,104,181,60,131,27,220,113,232,40,203,218,103,239,99,248,11,132,239,1,126,198,67,31,47,225,46,199,10,30,192,251,28,23,113,20,111,115,124,12,
-  239,2,190,175,73,79,227,83,13,157,240,39,176,172,85,252,23,240,89,22,62,131,79,226,207,208,204,54,74,245,82,243,11,160,108,115,75,195,111,160,
-  245,55,39,125,189,68,249,239,160,213,143,149,246,67,94,255,8,196,118,148,163,217,238,175,159,20,229,102,22,191,226,168,227,159,16,190,3,72,210,135,
-  128,159,3,142,138,239,33,252,90,182,107,189,165,209,141,62,145,169,223,19,205,233,104,173,223,210,148,182,245,107,84,179,59,212,232,127,55,21,238,247,
-  82,94,106,155,251,3,254,54,151,191,131,143,191,201,194,240,152,18,97,93,11,207,176,240,99,160,158,12,71,67,170,125,81,181,143,84,212,54,252,39,
-  106,71,137,68,183,71,232,179,148,199,44,223,57,238,80,127,117,134,175,78,195,191,136,12,239,107,248,56,97,20,75,225,151,28,95,65,7,67,78,187,
-  132,115,176,68,239,229,226,143,183,248,69,220,225,76,190,225,145,144,222,246,109,30,94,195,28,126,203,195,15,57,17,56,139,103,196,105,188,204,164,19,
-  79,225,138,24,193,1,49,35,106,98,69,32,23,87,9,69,134,105,86,102,98,16,77,188,201,17,196,93,142,85,145,109,24,109,91,0,19,89,214,48,
-  88,219,110,24,245,29,46,163,99,109,16,32,247,209,148,59,81,124,240,54,103,237,55,176,196,234,171,116,231,18,86,41,108,45,179,110,236,73,174,42,
-  247,173,23,164,111,166,216,189,161,246,90,182,204,38,158,119,159,112,47,88,214,132,101,137,27,244,176,27,146,22,67,248,90,244,224,178,131,19,142,8,
-  95,165,73,192,98,5,221,50,22,56,18,137,68,155,123,137,70,182,60,59,49,123,214,189,224,158,117,101,123,113,24,13,84,127,0,248,58,77,71,62,
-  172,74,136,171,167,126,56,116,234,65,149,137,153,123,254,110,74,204,224,113,241,52,210,23,199,69,149,62,38,19,129,166,174,34,25,67,199,203,53,225,
-  161,179,139,50,90,15,204,61,208,21,160,7,122,220,29,226,51,244,78,102,175,186,219,225,209,78,189,221,65,77,51,190,11,116,186,41,12,124,192,105,
-  208,157,244,165,63,244,165,59,252,14,71,19,184,166,1,153,182,199,56,239,4,60,34,185,138,148,52,74,168,37,225,162,36,85,1,135,30,51,12,0,
-  55,7,215,164,45,95,90,126,83,146,75,75,200,183,98,92,78,134,196,230,218,38,185,45,254,40,134,135,149,100,179,83,178,214,13,187,140,114,181,235,
-  215,161,86,171,29,164,57,191,50,191,177,176,48,47,221,194,194,6,249,218,98,141,198,77,190,184,88,203,231,243,19,4,232,131,124,126,125,253,202,250,
-  149,225,97,195,48,76,211,182,111,208,191,175,199,244,253,122,86,103,62,129,60,232,220,101,174,154,186,130,75,89,55,201,81,172,107,244,30,148,58,170,
-  144,80,177,226,165,98,46,206,83,7,233,59,113,194,187,177,214,143,79,208,129,20,182,46,239,145,100,152,117,80,255,15,101,79,65,107,19,81,16,158,
-  121,111,19,223,54,105,211,154,66,3,177,237,182,196,146,54,181,138,136,8,9,88,18,177,177,65,10,161,94,138,7,227,65,67,78,61,138,8,14,90,
-  19,211,26,123,82,143,205,65,111,30,197,107,158,130,224,63,240,152,253,13,5,175,174,243,118,55,105,218,206,240,190,153,249,102,190,217,217,221,165,185,
-  20,236,2,44,193,105,139,26,16,131,196,216,88,72,24,171,142,228,96,1,76,195,9,193,97,109,88,26,88,52,97,197,108,152,0,145,129,245,148,2,
-  80,246,178,109,231,98,177,92,46,157,75,167,99,177,152,109,219,6,194,196,88,121,179,84,170,151,235,229,106,181,216,80,49,41,89,176,188,156,76,38,
-  37,203,253,129,80,171,148,170,55,138,197,70,189,241,184,81,188,87,41,149,82,106,60,197,166,82,241,8,38,108,18,14,85,220,60,125,65,111,15,233,
-  14,121,216,139,247,190,227,209,138,235,162,59,213,59,70,119,150,42,253,58,181,208,107,34,244,226,186,220,139,83,71,120,255,144,10,221,175,232,253,68,
-  125,108,176,63,75,5,125,16,240,253,155,84,112,63,27,182,251,219,224,91,132,22,58,140,183,97,3,156,58,127,131,198,204,224,117,106,11,224,62,85,
-  232,25,215,0,84,96,198,95,17,198,191,56,168,192,36,193,17,39,83,193,226,44,135,167,217,141,160,160,143,200,203,154,72,9,30,75,24,197,132,151,
-  255,198,223,200,63,160,31,72,191,144,182,11,58,237,232,12,9,178,40,171,227,250,190,43,142,254,160,251,80,79,185,54,116,35,192,170,4,211,66,199,
-  221,28,95,150,56,122,73,59,148,165,157,254,42,119,178,134,233,219,204,190,66,166,182,105,71,58,74,229,28,231,218,85,165,64,11,254,167,138,183,216,
-  171,242,216,21,160,57,111,214,108,227,125,194,232,244,13,110,190,240,179,146,247,129,239,132,209,238,234,214,45,5,153,173,117,80,151,230,179,138,22,128,
-  164,94,160,136,206,0,159,42,117,77,239,174,49,92,230,171,163,252,132,127,127,212,143,209,208,131,142,28,250,9,111,133,138,64,21,120,116,184,71,156,
-  218,50,170,56,207,89,155,243,159,144,46,180,81,158,49,68,33,164,20,3,11,51,211,16,231,108,122,50,18,21,226,73,7,59,248,154,125,16,219,225,
-  27,120,103,136,157,83,204,40,187,207,126,192,175,137,123,126,190,143,239,249,93,124,227,135,67,124,244,14,107,181,67,100,108,113,82,51,149,153,9,102,
-  3,228,123,102,102,158,179,221,29,183,133,101,76,88,17,11,38,205,131,73,195,152,40,45,201,172,244,115,83,89,195,9,80,160,208,119,80,66,69,44,
-  100,61,242,172,176,254,3,125,144,207,107,19,65,20,199,223,155,253,225,110,118,33,6,196,146,4,227,34,40,89,74,91,188,135,54,1,145,216,228,84,
-  242,7,228,84,66,238,5,241,244,32,74,84,104,68,74,197,91,231,222,30,218,127,160,153,226,205,127,34,249,75,92,191,51,73,106,79,190,239,206,155,
-  239,124,222,123,51,176,251,191,89,209,43,186,143,144,20,22,81,137,96,232,200,101,132,255,100,227,212,46,57,139,239,5,146,82,165,60,175,86,171,113,
-  158,39,73,18,59,37,73,167,123,56,28,143,35,47,225,56,175,84,242,8,40,217,174,215,183,147,168,219,110,143,218,163,81,231,93,175,86,170,213,228,
-  23,75,38,111,204,30,204,98,201,68,250,100,158,234,198,69,67,55,230,169,156,243,226,169,249,160,27,230,140,117,0,22,100,77,202,70,7,50,229,162,
-  45,61,41,193,200,251,226,15,147,53,223,89,222,74,175,136,129,11,94,67,2,253,204,83,206,154,24,195,176,252,192,128,148,165,101,46,217,92,49,153,
-  25,147,14,0,202,58,53,41,222,232,232,192,164,203,59,190,120,41,183,188,120,134,4,216,212,65,159,178,193,163,166,249,201,184,191,101,167,200,14,201,
-  14,8,78,210,42,94,91,184,98,197,33,104,63,138,178,1,101,253,236,185,220,224,157,107,20,67,72,57,249,107,23,194,121,80,232,220,170,226,63,232,
-  83,235,174,77,85,221,79,65,74,41,207,6,43,79,173,194,99,27,43,127,60,225,83,158,56,125,249,143,62,66,95,93,182,154,241,39,228,161,253,99,
-  195,111,60,116,102,234,234,155,30,165,182,182,216,87,62,61,182,10,253,208,39,156,130,53,249,183,115,132,174,8,59,200,95,77,143,207,107,19,81,16,
-  199,103,222,78,54,239,37,27,147,131,135,158,210,181,198,98,72,91,42,4,33,176,208,28,164,172,70,193,31,151,226,73,111,33,130,22,60,116,17,196,
-  65,212,146,106,163,30,196,235,138,255,130,247,190,63,192,75,193,131,39,179,226,209,63,34,206,219,77,99,190,223,157,207,124,223,188,121,135,29,92,14,
-  3,13,240,24,20,172,195,92,190,28,4,162,10,184,8,112,119,222,9,206,231,73,193,86,49,16,172,109,84,224,156,132,22,233,56,222,219,235,131,174,
-  84,218,166,221,17,85,69,166,90,40,142,111,12,135,2,173,171,237,182,49,70,186,168,211,209,122,52,138,71,162,235,131,193,202,74,16,212,76,189,110,
-  98,254,131,73,162,203,251,220,228,175,200,3,142,50,149,254,194,147,96,122,138,217,41,206,14,210,166,125,36,252,41,209,254,64,153,114,146,169,226,230,
-  249,236,32,217,233,203,183,211,231,223,50,224,151,200,127,93,79,92,21,81,96,242,6,197,65,94,36,32,47,4,92,135,111,27,204,40,111,239,113,199,
-  133,47,152,216,219,221,46,105,176,235,96,91,144,245,210,158,13,166,223,49,51,124,63,45,217,30,71,246,14,71,252,116,58,228,67,76,55,179,53,142,
-  166,87,57,106,133,112,113,187,17,54,236,45,142,102,230,164,44,255,178,41,107,117,119,182,47,102,87,132,19,156,125,66,110,186,9,133,55,159,108,67,
-  120,109,53,228,11,182,101,31,130,125,176,229,120,169,203,138,137,125,177,18,251,146,137,61,177,191,152,169,124,118,150,255,111,169,124,195,37,90,253,140,
-  92,230,242,24,17,189,133,80,41,207,83,202,17,213,146,26,141,146,239,31,161,179,82,230,3,126,196,227,133,199,226,227,69,45,115,44,235,175,164,222,
-  226,155,121,42,56,193,215,121,154,228,124,143,239,240,112,78,87,203,155,103,73,61,219,221,117,169,86,51,71,24,80,64,68,32,165,201,207,77,228,81,
-  73,232,19,104,208,30,97,222,3,170,209,63,85,140,49,75,196,64,16,133,103,198,205,146,77,14,78,11,33,92,33,34,34,132,67,188,242,186,164,84,
-  75,185,226,138,148,41,52,130,141,200,165,156,226,4,61,80,17,107,33,141,141,135,136,182,22,183,127,193,127,144,222,31,96,169,153,37,39,248,190,121,
-  243,30,203,50,219,25,56,157,209,142,132,38,13,1,193,17,65,68,48,0,2,160,45,40,198,233,88,20,4,113,108,154,49,38,60,44,138,48,142,195,
-  126,255,88,116,208,235,117,211,193,158,28,224,39,228,253,154,234,79,92,156,46,58,213,6,79,108,102,47,42,111,88,38,124,206,95,248,51,105,163,76,
-  202,36,29,114,151,79,56,206,193,23,217,57,218,23,172,31,176,54,118,205,118,42,175,126,71,126,149,169,188,124,20,217,15,180,143,200,187,203,28,109,
-  102,171,81,206,111,8,246,25,153,88,179,106,76,188,226,26,185,190,220,234,91,19,33,137,80,98,221,85,210,247,120,211,112,253,143,41,206,26,79,241,
-  22,47,241,10,239,26,207,218,55,49,145,81,202,251,131,148,110,241,156,5,244,5,242,65,201,207,95,189,85,93,104,92,69,20,158,51,119,238,221,217,
-  217,109,111,108,210,244,154,109,147,212,182,144,101,91,147,74,173,133,4,141,89,40,217,13,75,69,9,148,5,125,10,18,250,22,4,125,61,162,248,27,
-  53,154,182,105,223,214,135,226,147,79,22,193,190,236,248,34,40,37,32,34,72,17,221,135,82,250,102,41,69,65,40,227,153,153,189,217,159,110,244,205,
-  239,155,115,206,156,51,223,157,153,123,118,217,253,13,166,88,196,184,100,22,249,23,200,157,103,156,9,138,17,143,104,197,129,19,189,27,179,169,96,93,
-  224,125,51,175,229,246,209,60,219,29,114,112,57,223,189,97,123,175,168,231,24,63,81,108,197,197,177,180,164,250,54,26,162,251,143,75,69,47,38,165,
-  220,227,193,146,36,201,17,138,185,82,41,155,203,230,138,69,96,178,84,90,88,152,159,95,88,157,127,190,178,0,22,149,197,46,250,96,221,121,135,106,
-  149,146,213,213,11,171,23,170,89,7,89,145,169,121,231,70,37,235,134,236,89,174,208,59,7,197,199,29,152,44,150,192,221,89,74,186,145,47,38,197,
-  146,116,105,174,228,55,183,39,46,210,165,147,108,31,66,200,202,220,158,44,211,101,156,126,80,199,151,245,231,252,239,13,254,77,108,212,141,189,223,229,
-  204,99,250,61,174,51,184,132,39,240,93,208,63,65,243,6,232,55,193,204,54,236,137,58,106,40,12,27,225,245,248,202,236,214,236,250,40,198,235,153,
-  173,67,71,227,252,204,196,28,59,200,98,253,41,199,216,28,34,219,187,146,25,218,161,92,161,207,204,115,196,117,216,63,49,34,143,30,24,210,63,131,
-  81,56,102,141,153,179,147,230,57,172,119,7,150,166,195,137,153,193,97,105,246,173,144,120,106,200,57,115,24,231,6,5,43,211,163,244,228,73,205,113,
-  201,157,104,18,140,241,25,51,171,39,91,82,215,204,113,172,235,73,39,57,135,227,38,209,181,84,116,150,36,110,217,28,119,34,206,110,125,5,119,148,
-  101,75,221,85,98,38,89,100,212,158,58,181,231,50,180,126,4,173,180,186,169,62,44,223,170,93,45,223,169,93,43,63,168,125,65,118,173,124,83,109,
-  83,93,191,207,95,210,95,130,29,151,192,54,246,3,110,231,39,113,66,75,166,69,107,63,130,206,207,51,218,228,8,218,111,34,22,245,43,180,90,109,
-  189,13,230,13,83,197,122,235,245,198,50,190,214,8,155,199,24,46,109,100,216,189,83,24,143,76,30,148,114,120,230,20,155,208,135,25,198,52,10,146,
-  117,56,220,153,73,11,47,159,163,250,98,243,12,10,204,89,99,40,88,159,247,161,227,10,221,201,163,122,231,244,179,212,213,176,89,198,113,138,41,21,
-  195,16,79,52,206,252,46,245,180,45,232,105,43,163,222,142,155,39,154,199,186,133,86,231,53,246,59,67,202,119,184,249,158,255,0,95,43,207,235,202,
-  254,92,72,189,159,252,183,79,217,86,111,171,251,193,175,209,237,224,110,244,75,240,103,219,108,171,183,149,222,128,39,245,50,49,171,167,244,38,232,229,
-  23,29,46,114,12,144,183,25,57,6,100,194,101,222,210,122,154,137,46,246,102,187,147,239,170,76,119,237,103,212,190,197,163,85,119,147,183,50,29,210,
-  141,255,149,19,91,240,234,95,209,31,209,195,136,115,0,30,4,1,64,0,110,14,62,112,155,114,74,71,29,14,132,9,95,91,91,59,237,240,52,173,
-  80,178,246,17,244,146,123,92,129,65,44,12,44,125,246,159,188,252,191,240,99,216,183,131,77,216,132,139,68,239,83,166,181,205,157,250,39,176,222,126,
-  229,75,208,207,173,129,44,180,67,24,21,78,95,5,38,2,193,133,116,62,32,102,68,36,132,96,93,12,169,18,209,138,32,5,253,89,117,72,218,222,
-  220,86,72,51,194,36,23,224,98,64,181,127,0,149,83,77,72,84,81,20,62,231,190,55,227,125,142,52,131,90,188,113,134,180,176,76,38,114,130,72,
-  161,65,94,34,49,42,65,80,209,100,136,184,169,113,220,52,43,91,213,161,141,35,185,16,127,48,4,193,69,129,155,80,168,125,55,33,42,87,181,104,
-  215,162,69,66,75,23,129,139,160,215,121,63,243,198,105,106,170,239,187,247,220,123,191,115,238,189,231,158,55,243,28,79,10,161,131,56,4,160,11,19,
-  160,15,160,13,28,136,140,0,48,225,55,16,110,119,120,28,160,78,128,172,113,116,148,189,1,116,144,191,106,206,252,62,91,233,78,219,32,236,107,97,
-  55,72,180,130,46,1,37,131,87,22,228,172,172,105,58,105,74,102,196,136,68,140,184,11,83,166,18,9,110,137,68,164,45,146,186,98,13,12,88,3,
-  121,203,186,152,171,32,159,203,101,11,163,30,114,217,225,225,236,80,62,235,121,134,70,71,93,199,112,161,16,3,208,180,110,239,204,88,28,100,119,138,
-  171,34,101,36,226,107,102,220,236,78,57,107,174,149,201,91,57,153,16,26,12,63,67,96,27,143,2,80,154,214,4,61,197,23,72,55,232,163,160,25,
-  180,79,211,36,33,125,17,91,200,169,211,8,217,72,227,116,157,229,162,125,158,122,169,132,244,73,208,136,221,75,187,56,183,45,236,31,232,150,231,219,
-  14,218,159,113,238,137,88,185,201,35,237,8,251,157,91,152,185,125,124,116,4,74,56,29,155,199,13,108,223,64,96,59,143,211,132,15,14,180,244,38,
-  242,120,207,255,52,7,162,55,112,198,59,63,15,211,91,184,233,206,215,177,139,147,114,110,89,19,246,89,206,240,117,144,5,189,69,251,13,218,38,69,
-  105,86,176,185,228,100,255,183,216,199,229,72,246,176,85,15,121,189,254,29,41,10,167,74,232,87,96,87,92,229,218,208,164,189,204,230,192,172,20,20,
-  7,232,21,210,93,226,155,190,10,174,30,93,83,11,168,12,213,64,168,142,169,91,100,82,211,57,53,197,191,17,18,64,71,85,63,240,62,201,108,87,
-  61,180,141,170,147,4,137,151,39,56,145,128,243,13,20,221,155,176,63,56,137,84,212,189,9,71,79,74,72,15,202,78,51,217,215,34,161,76,199,164,
-  65,186,240,3,90,188,85,223,29,233,233,22,168,126,62,37,67,33,138,86,223,70,141,172,53,2,181,210,136,186,76,153,250,97,229,40,251,2,71,90,
-  240,190,159,255,48,49,117,216,121,88,225,12,63,54,76,205,212,20,140,61,229,215,118,169,103,92,18,74,168,41,53,69,58,123,197,63,83,119,25,254,
-  195,158,58,122,251,10,222,102,204,226,126,88,211,52,20,1,52,212,130,57,106,232,67,176,136,94,11,197,199,198,138,69,215,111,24,197,162,63,173,193,
-  2,214,227,234,127,120,86,127,27,213,92,193,34,58,92,170,225,162,223,151,2,255,248,248,50,86,24,98,132,25,134,145,72,240,151,210,27,185,195,96,
-  133,168,235,58,36,33,163,233,144,241,40,92,5,117,116,148,218,238,218,144,142,85,132,164,168,58,181,250,68,221,187,163,163,250,222,224,238,26,29,116,
-  199,227,158,235,229,235,217,228,79,149,82,65,107,19,81,16,158,153,188,108,87,147,210,53,93,183,75,12,54,133,196,38,4,75,196,165,237,33,150,109,
-  44,146,38,23,165,8,177,85,48,162,18,123,106,110,30,60,12,40,22,73,169,209,86,61,136,232,69,47,94,189,247,93,189,120,232,205,158,252,9,254,
-  131,117,118,55,129,120,236,124,111,118,190,249,102,118,152,7,239,209,37,2,82,54,145,3,203,89,0,130,154,75,0,33,1,162,2,140,155,72,103,197,
-  21,101,227,68,40,152,67,26,250,179,80,74,83,90,129,50,66,73,145,33,58,129,109,164,17,77,215,244,87,177,221,118,111,250,224,67,10,202,110,37,
-  91,169,215,235,171,183,218,177,109,198,214,108,54,205,238,246,118,187,1,144,72,148,45,211,170,0,152,102,42,85,118,221,74,24,125,56,7,245,182,43,
-  19,231,138,115,73,156,90,111,132,243,124,127,210,55,249,101,130,159,240,83,254,133,252,130,74,247,121,159,242,192,181,210,60,87,150,121,149,87,120,23,
-  247,188,190,183,183,143,125,175,239,184,86,190,187,19,93,203,132,82,124,63,145,164,199,173,206,238,116,37,114,45,184,2,188,20,44,242,101,254,138,129,
-  207,75,188,249,159,124,60,20,131,59,188,233,74,237,39,242,226,46,230,185,246,227,132,194,198,41,126,143,252,134,54,190,111,109,240,111,42,149,100,137,
-  70,176,37,235,124,163,1,242,33,113,79,63,71,62,163,231,117,209,187,171,31,40,147,243,118,3,114,192,39,168,91,71,197,65,231,111,231,181,51,112,
-  114,85,88,91,155,54,35,171,198,65,36,221,154,238,138,174,111,179,23,92,227,235,71,69,126,8,220,98,91,175,240,204,184,56,210,2,135,103,10,127,
-  156,47,14,95,156,176,245,85,253,25,117,13,244,148,238,44,28,175,47,72,230,121,57,176,101,107,187,33,219,232,79,200,74,96,68,78,17,140,33,70,
-  124,20,227,14,99,246,3,202,225,137,199,175,16,145,18,114,40,182,144,37,194,16,30,34,43,153,52,178,116,175,39,180,23,213,223,226,105,144,201,100,
-  14,240,0,15,35,196,108,148,191,19,220,152,76,26,23,62,34,20,206,43,71,0,150,82,168,98,79,203,119,4,121,183,99,25,70,117,21,245,36,133,
-  167,133,37,21,69,17,84,56,73,254,176,192,250,7,109,84,77,104,19,65,20,158,55,59,155,204,110,234,102,171,162,155,54,106,161,254,255,132,162,162,
-  133,218,186,33,69,173,130,88,219,226,22,17,87,15,218,158,172,216,67,143,15,4,169,232,73,45,138,86,154,155,7,193,127,60,154,65,20,60,232,69,
-  188,121,201,209,163,55,143,227,155,73,106,27,219,239,203,190,247,205,123,243,222,204,236,79,158,65,151,47,124,159,147,97,45,232,97,76,118,48,110,228,
-  128,32,35,27,225,54,206,109,144,7,100,58,124,146,155,73,216,98,206,174,44,111,192,255,19,77,39,87,207,46,9,78,107,116,88,149,225,92,52,34,
-  107,51,161,148,146,197,101,22,39,105,98,17,39,113,76,110,188,60,20,53,11,115,81,71,16,72,223,15,8,94,185,92,153,136,135,135,203,81,36,229,
-  196,201,36,57,185,43,12,57,219,21,69,190,204,77,150,11,224,21,160,208,89,57,213,153,75,134,78,196,96,64,43,0,120,28,192,49,152,44,183,183,
-  175,91,231,216,140,137,152,105,30,120,158,23,49,233,186,0,254,240,153,36,114,193,112,232,68,91,115,7,50,206,225,59,142,55,1,187,241,29,204,244,
-  224,107,72,89,18,94,76,25,237,66,110,204,202,124,54,10,37,230,241,33,96,5,159,0,14,232,171,248,6,116,55,126,2,156,227,120,94,247,233,138,
-  154,229,56,134,153,59,189,186,242,104,76,87,240,55,164,225,206,148,157,139,83,252,197,245,56,110,215,149,52,149,189,89,252,0,250,5,224,164,14,72,
-  181,12,216,123,96,11,71,113,31,230,245,113,90,108,179,222,25,73,42,235,155,144,161,212,5,220,160,183,234,64,7,245,47,96,167,28,166,154,32,174,
-  254,228,58,135,162,118,76,247,224,75,218,145,109,97,34,120,89,247,213,239,114,117,186,54,165,252,90,65,221,64,161,14,235,238,85,123,213,119,168,252,
-  194,53,29,168,64,102,25,173,252,22,70,158,143,141,252,152,231,35,51,51,248,141,183,156,216,222,130,111,60,197,63,28,31,131,218,161,182,225,44,140,
-  142,170,167,48,42,204,91,34,237,3,55,254,8,99,216,165,46,97,94,245,227,26,44,98,59,74,149,80,141,142,170,37,12,72,176,134,210,107,48,120,
-  245,17,6,7,153,232,149,108,176,122,11,204,225,49,16,20,97,234,32,142,145,189,13,255,4,43,134,245,126,106,61,192,88,109,138,252,190,250,158,34,
-  173,134,51,102,231,196,122,191,177,138,30,102,158,213,94,65,245,30,109,190,54,173,14,225,192,194,116,125,175,41,166,241,148,41,163,20,195,253,12,219,
-  88,109,186,139,82,43,187,84,199,89,117,55,230,169,205,145,112,189,58,48,59,15,165,179,165,239,165,18,157,247,51,44,59,150,57,228,103,24,85,95,
-  1,51,116,235,13,141,231,150,25,203,134,50,86,172,74,110,43,50,203,200,87,176,117,254,226,197,87,212,103,137,198,139,45,15,161,241,187,130,220,0,
-  232,114,28,110,190,13,222,8,128,13,216,12,64,167,69,177,232,186,238,38,231,194,117,222,130,235,238,18,28,27,185,7,139,92,251,0,238,55,249,0,
-  90,203,184,179,132,57,152,3,55,227,121,243,224,9,38,64,72,193,133,35,92,33,200,187,34,75,99,38,60,138,0,141,88,17,200,11,145,177,89,3,
-  167,105,77,37,189,104,2,26,158,148,99,185,56,162,127,53,234,242,23,141,84,75,104,20,65,16,237,234,238,217,204,108,220,191,200,110,18,119,131,223,
-  36,234,226,69,13,24,67,136,81,220,99,8,130,129,32,4,193,131,10,42,138,231,82,81,81,68,99,208,68,196,196,37,32,30,36,248,57,249,1,167,
-  33,144,128,66,14,162,40,8,50,7,197,155,130,138,151,8,109,245,12,59,155,53,26,173,234,174,169,239,171,26,166,167,31,67,123,84,46,99,181,52,
-  2,193,211,174,241,174,8,181,39,192,22,18,255,93,231,127,72,178,255,90,242,87,152,166,120,69,151,36,140,43,75,34,194,151,144,222,5,44,107,104,
-  143,109,39,187,146,140,37,57,25,209,134,104,131,109,219,209,42,217,217,172,109,251,43,151,114,114,189,253,78,174,191,63,231,212,55,54,54,210,174,55,
-  232,192,3,162,58,16,0,32,136,50,34,164,140,72,165,32,213,155,18,153,76,134,182,201,8,114,194,164,140,48,48,14,56,78,61,145,15,211,100,129,
-  5,96,37,10,137,82,105,215,46,185,68,74,243,246,208,229,56,93,222,51,254,28,188,107,210,187,45,49,129,235,176,85,231,176,129,97,18,227,122,235,
-  20,224,48,96,179,122,8,88,143,173,94,30,181,212,159,133,90,173,198,133,254,193,241,10,148,211,129,75,239,193,81,238,94,135,48,64,82,189,1,53,
-  41,244,25,129,247,192,19,120,27,240,139,112,103,132,178,113,88,232,111,28,29,60,15,216,226,221,7,220,64,65,253,133,103,109,92,171,74,27,179,106,
-  22,112,12,244,61,11,119,227,0,82,102,73,15,9,60,7,250,50,120,35,18,75,152,199,132,123,74,168,215,220,165,224,48,168,151,128,219,221,183,160,
-  62,129,186,233,199,245,122,181,19,47,10,125,137,171,25,174,167,57,190,227,122,86,104,129,26,244,26,189,73,143,1,78,130,169,159,18,40,144,83,151,
-  15,92,63,226,218,166,105,76,112,31,141,161,230,64,15,203,133,35,168,59,160,62,128,233,127,204,128,207,241,90,4,189,212,224,94,18,53,45,195,177,
-  177,206,61,47,240,129,25,85,119,135,211,207,155,250,234,123,240,190,138,190,187,111,120,223,171,159,124,199,116,234,198,11,80,189,109,101,160,229,61,21,
-  186,9,175,112,253,17,188,113,65,22,126,7,163,167,39,76,141,126,203,219,112,20,6,212,85,80,131,244,113,49,193,108,140,51,44,6,231,92,237,197,
-  142,230,114,198,184,125,245,86,71,185,35,48,245,86,220,96,158,229,179,64,18,243,126,41,99,229,33,250,179,176,179,114,254,221,35,198,79,156,167,20,
-  53,104,84,21,83,219,116,220,36,251,210,59,224,59,219,89,153,206,76,39,115,143,179,102,111,189,41,112,87,26,24,178,205,84,29,152,39,228,0,183,
-  6,147,170,88,109,158,106,152,7,18,182,44,134,13,171,29,213,9,117,176,120,35,82,188,176,178,101,252,232,132,133,155,123,178,61,89,117,146,222,7,
-  91,208,86,67,160,78,3,110,33,237,240,128,58,132,178,135,62,152,252,111,142,16,243,255,228,197,145,184,191,249,2,47,255,87,255,194,40,4,11,235,
-  12,239,223,79,26,149,249,55,5,248,210,255,241,249,60,50,166,127,53,84,195,181,9,188,234,175,100,37,45,203,206,71,242,133,229,133,66,37,193,250,
-  19,241,197,169,122,87,237,140,197,98,150,21,137,56,206,56,140,1,72,195,76,194,60,102,50,234,123,226,161,223,49,222,238,32,198,137,65,166,125,73,
-  246,42,182,42,38,45,210,172,5,126,72,67,250,23,173,84,95,104,28,69,24,255,190,185,217,189,153,235,220,237,166,9,114,127,154,120,214,68,42,109,
-  2,234,131,1,75,93,180,98,165,15,30,24,52,208,10,145,170,68,210,168,32,90,99,125,248,136,80,181,98,77,31,68,42,193,174,152,135,42,69,40,
-  230,49,112,3,250,164,7,22,31,124,205,190,11,138,34,190,136,140,223,236,94,226,165,214,66,192,239,255,206,204,247,253,190,153,217,221,239,113,42,148,
-  97,197,40,184,37,77,195,88,82,68,2,194,34,48,112,27,60,91,140,120,35,4,8,41,225,40,108,45,187,57,221,124,92,108,195,139,93,37,214,64,
-  214,189,15,57,109,111,8,18,100,77,61,6,144,36,179,157,78,114,172,211,137,1,98,136,251,182,79,16,11,97,204,81,99,76,189,126,176,249,194,130,
-  50,170,86,169,84,84,189,94,159,157,159,157,205,117,118,126,158,37,57,150,64,3,27,186,209,106,161,71,65,244,14,133,40,149,74,195,165,156,52,55,
-  174,53,160,66,208,74,243,2,244,147,8,67,168,57,111,120,24,255,43,17,125,34,66,158,166,134,250,121,220,130,172,106,12,180,50,38,81,74,235,68,
-  219,63,68,15,237,85,180,63,226,42,243,55,120,102,58,81,111,99,153,70,232,190,205,241,44,116,79,83,149,154,212,114,19,180,135,238,118,7,10,165,
-  73,186,130,238,93,164,179,110,129,166,169,220,141,8,179,159,133,141,123,248,251,10,246,76,207,172,47,163,251,68,216,191,68,247,39,177,138,109,251,78,
-  233,189,101,209,187,132,95,45,172,95,67,247,131,160,87,236,154,160,200,94,64,119,14,215,80,149,1,174,34,27,88,197,13,238,3,54,176,199,205,40,
-  251,0,195,173,35,125,140,238,33,42,187,239,208,190,97,203,214,225,230,10,102,85,123,17,221,251,124,111,52,65,251,40,2,187,232,170,221,67,20,229,
-  124,156,30,119,15,2,221,227,78,103,177,61,66,135,232,34,118,255,68,200,206,139,205,243,194,238,181,47,119,159,97,157,177,167,104,178,187,130,246,75,
-  164,104,243,120,218,162,55,93,45,107,49,234,253,244,53,242,46,23,183,97,121,180,156,189,152,173,160,91,198,255,5,184,123,106,7,170,253,69,0,43,
-  95,5,45,61,113,237,87,124,132,111,196,203,37,164,215,123,133,179,191,33,61,185,138,246,94,251,112,135,150,236,7,56,51,51,226,95,108,165,184,137,
-  172,214,166,73,126,224,208,235,160,128,251,16,129,142,192,201,236,44,64,26,217,200,189,133,118,201,64,182,72,181,52,186,28,165,17,5,112,253,28,66,
-  122,134,198,140,82,113,108,88,227,17,99,226,145,241,113,149,93,65,59,193,69,199,160,123,129,55,50,151,180,109,181,221,230,173,214,104,168,216,180,155,
-  207,170,233,84,255,0,250,144,163,116,98,142,106,96,247,216,18,164,141,44,240,65,161,69,87,221,87,237,83,105,148,213,210,235,216,7,216,66,240,35,
-  115,115,176,91,144,172,145,14,128,236,192,224,123,136,236,9,251,26,221,53,245,197,193,3,124,112,94,62,71,58,124,50,183,246,57,122,105,198,126,139,
-  36,41,36,193,44,119,176,232,107,49,39,250,43,118,218,127,86,135,55,100,222,88,107,55,213,6,106,221,254,17,178,60,127,122,163,76,33,127,204,66,
-  248,47,218,219,109,42,229,127,135,127,141,236,223,127,103,219,211,29,129,26,29,213,154,51,69,16,4,159,98,208,12,154,77,118,133,4,250,81,33,82,
-  188,21,175,121,212,1,42,109,211,103,232,89,235,32,212,57,93,70,144,161,68,169,101,69,10,9,57,35,115,97,75,172,34,103,204,103,165,12,120,117,
-  152,63,151,37,40,254,87,231,188,229,125,196,241,62,244,246,48,230,213,56,207,128,28,136,77,129,242,55,109,84,205,79,19,65,20,127,111,153,118,103,
-  75,105,75,210,224,182,6,108,2,196,2,33,225,160,97,13,70,26,57,116,35,38,16,48,161,42,61,97,176,132,131,112,49,28,39,198,27,152,128,138,
-  23,53,46,40,130,223,159,248,173,204,205,11,7,245,47,224,79,48,241,15,168,111,102,23,10,148,247,203,123,243,251,189,55,51,59,111,58,233,83,108,
-  55,12,102,132,33,26,78,128,50,7,154,12,48,78,42,106,192,94,83,154,109,139,40,84,217,133,76,245,252,106,101,84,113,130,78,208,41,78,233,92,
-  44,136,172,129,27,28,56,48,154,17,78,82,4,203,130,122,139,23,10,88,95,159,0,155,157,101,172,141,243,116,122,226,252,4,217,121,109,253,147,147,
-  147,150,85,91,203,235,234,34,241,120,36,18,177,83,86,42,101,181,181,89,20,82,169,142,218,142,195,29,188,84,112,221,2,153,91,82,177,160,162,78,
-  104,89,42,185,190,40,185,165,146,154,73,130,168,27,141,185,131,185,156,235,230,206,228,234,226,125,125,125,136,232,199,66,193,14,89,156,219,209,40,184,
-  116,70,224,98,13,197,113,113,73,172,160,24,19,127,176,28,19,119,80,12,211,5,151,99,229,24,136,38,17,23,75,200,197,61,20,49,89,47,127,226,
-  198,111,148,157,98,17,167,70,178,71,97,112,64,223,77,134,59,221,178,241,253,248,173,177,231,227,114,19,55,94,32,148,35,155,211,48,91,164,137,229,
-  94,16,157,162,95,244,207,222,71,0,218,189,188,88,25,233,179,115,230,191,161,217,161,185,33,49,49,51,146,233,202,131,9,182,147,55,185,201,103,6,
-  52,5,115,80,201,169,43,182,254,28,119,156,110,197,149,224,14,56,226,200,230,120,134,119,217,110,175,219,235,108,53,223,46,38,76,115,171,89,29,190,
-  66,84,27,212,64,15,65,117,40,155,54,47,239,52,37,238,170,194,176,108,147,89,217,234,93,21,211,242,172,104,151,163,114,17,25,23,143,144,218,87,
-  200,128,188,137,231,68,90,174,163,108,16,39,188,38,47,148,99,57,250,189,129,107,235,6,176,229,53,234,11,228,128,236,129,7,141,94,35,148,15,229,
-  122,127,149,182,226,0,243,166,160,168,54,82,129,174,180,188,133,243,125,127,143,205,155,127,91,229,117,164,141,64,189,157,96,179,168,163,169,130,82,212,
-  36,36,18,137,168,3,25,102,103,19,74,36,157,4,168,175,37,33,153,84,235,146,30,137,81,206,189,135,250,188,21,150,228,242,180,204,120,69,175,40,
-  93,209,229,221,192,93,109,180,202,162,92,64,193,52,140,0,225,93,209,216,149,175,6,18,76,130,191,62,124,32,88,224,254,94,149,121,187,248,70,104,
-  252,34,26,129,209,251,52,140,26,244,169,82,100,205,166,25,11,145,133,201,90,91,90,44,107,29,215,213,140,101,76,47,161,143,116,250,29,174,225,59,
-  76,191,33,74,246,134,212,6,166,159,227,23,84,190,132,207,240,21,197,207,248,61,88,144,207,127,196,252,42,62,38,172,106,175,32,255,24,223,210,240,
-  1,61,194,107,242,21,138,202,95,227,15,157,171,192,207,250,163,183,175,234,231,42,234,224,202,138,94,247,18,191,225,163,0,47,240,43,62,209,8,133,
-  23,112,1,159,226,39,92,198,216,123,4,30,97,17,6,12,9,22,99,172,134,56,121,22,105,84,96,196,183,129,44,28,212,81,101,85,61,171,61,171,
-  50,134,202,235,215,69,127,140,20,3,190,31,209,189,21,226,254,222,124,103,77,160,137,103,212,217,232,116,252,63,133,82,223,107,92,69,20,62,103,118,
-  246,222,217,205,110,238,20,130,123,55,202,122,209,88,34,109,218,40,149,172,26,236,34,104,215,216,135,128,63,216,109,4,17,125,216,218,135,180,79,89,
-  69,225,60,136,10,246,33,34,168,111,174,84,168,166,81,161,136,40,66,58,160,22,244,193,159,15,205,131,96,241,31,104,160,121,31,207,185,247,238,38,
-  209,136,223,119,247,204,57,223,124,51,59,103,238,253,18,143,128,6,80,16,24,0,176,101,128,38,8,26,105,100,29,30,202,199,17,36,215,59,101,5,
-  118,227,101,216,11,5,251,11,106,111,42,81,41,201,12,116,164,12,82,145,255,38,150,209,66,58,163,71,11,38,141,41,9,88,52,208,178,214,84,118,
-  67,107,29,199,177,153,236,158,238,118,187,167,207,44,45,45,61,126,166,84,26,27,51,113,181,92,46,71,17,135,250,221,245,122,92,103,147,169,223,122,
-  232,80,135,209,102,246,24,157,12,237,244,233,245,218,237,188,236,181,123,47,118,218,169,161,215,91,88,96,137,149,202,56,159,203,128,170,70,60,24,211,
-  233,196,49,63,113,12,213,106,181,36,10,31,204,100,224,131,63,70,63,34,157,164,77,229,63,65,255,36,189,134,190,75,17,121,228,146,174,161,255,10,
-  251,244,5,210,41,106,12,46,35,89,103,221,253,18,233,178,242,79,211,171,178,230,99,164,55,208,223,75,127,40,127,77,22,159,163,62,157,242,223,40,
-  250,11,155,103,151,161,5,203,139,0,179,49,253,134,111,93,197,245,31,240,157,171,232,94,160,190,55,126,154,125,91,120,179,8,219,63,33,61,229,215,
-  213,246,115,236,242,191,34,156,15,183,207,158,15,169,65,243,212,240,43,254,58,114,17,181,90,115,97,127,174,117,220,216,154,141,248,228,237,176,213,90,
-  233,153,163,225,80,232,31,111,201,123,49,240,62,126,128,205,52,231,55,145,86,224,126,199,155,223,35,111,79,235,138,190,229,134,252,2,205,15,54,241,
-  210,207,56,120,222,21,133,84,180,139,172,223,192,69,105,151,222,149,174,155,180,134,143,124,125,1,159,144,27,185,129,244,104,118,39,196,187,125,135,255,
-  125,9,137,171,144,113,175,35,213,232,176,91,67,154,113,39,221,60,221,229,66,119,236,240,21,164,16,248,1,226,179,185,55,145,110,161,144,125,53,190,
-  245,192,189,68,15,211,12,221,67,17,184,200,77,104,121,129,201,92,26,221,57,58,224,45,29,144,73,122,192,183,41,98,199,131,224,15,138,147,55,140,
-  40,90,13,183,194,85,222,24,174,207,252,217,216,58,230,87,100,61,223,64,146,6,107,173,54,242,197,154,36,85,109,42,152,89,155,44,87,108,18,107,
-  99,147,217,103,173,182,54,201,254,204,85,220,132,180,65,161,15,6,92,255,114,52,251,250,69,225,224,166,36,148,169,61,189,217,61,194,205,85,168,238,
-  2,119,223,224,21,94,185,95,83,207,144,30,81,253,15,249,134,152,193,136,178,70,70,158,187,253,61,228,135,2,53,4,10,84,161,160,84,33,75,239,
-  72,113,103,134,48,12,139,197,98,192,152,60,88,156,154,42,13,145,47,206,171,15,113,200,43,187,56,185,147,174,231,20,203,231,185,245,210,40,187,152,
-  243,196,69,28,175,141,215,106,39,164,24,140,184,145,114,144,199,253,56,156,217,223,177,241,47,223,96,228,223,169,54,240,51,230,71,204,79,153,210,220,
-  5,252,39,165,215,85,124,27,87,83,174,49,243,11,112,136,26,180,226,31,234,130,134,132,171,132,25,143,73,21,11,199,100,204,245,84,211,48,161,217,
-  31,136,195,112,221,76,163,209,76,216,205,76,191,45,171,246,204,202,190,22,37,155,46,26,204,21,52,138,107,152,22,95,129,79,35,231,217,137,127,3,
-  149,84,205,79,19,65,20,127,111,92,186,179,21,232,154,144,116,104,106,105,128,16,194,135,217,131,1,14,96,55,177,196,181,137,161,23,99,169,7,18,
-  14,10,7,227,17,195,133,23,46,94,72,32,38,8,23,35,70,18,226,197,147,23,19,131,171,127,9,23,15,198,163,222,215,55,179,91,186,165,126,132,
-  247,219,121,31,191,247,102,246,205,236,180,31,113,44,35,44,128,12,8,144,0,66,193,28,64,9,216,187,5,90,4,252,81,50,90,245,166,153,77,248,
-  139,136,255,209,162,187,204,4,22,27,227,172,154,64,15,5,110,235,197,162,0,174,116,28,71,41,200,74,41,29,87,170,98,175,22,75,41,85,40,20,
-  150,181,172,27,189,252,176,45,156,202,22,6,89,148,146,138,141,227,52,90,18,196,42,96,187,214,232,144,139,228,26,71,205,90,141,89,61,135,85,160,
-  115,65,173,214,52,84,224,251,224,75,41,178,56,120,109,176,161,180,220,235,147,45,129,187,64,55,233,19,210,200,206,123,164,5,106,68,57,58,17,209,
-  15,164,12,189,70,154,167,251,244,1,169,68,165,163,125,12,135,226,170,60,141,237,188,16,36,233,37,82,51,58,67,90,231,154,128,79,161,114,136,7,
-  120,126,108,42,54,225,54,70,79,34,135,94,137,232,27,254,218,98,230,231,22,61,231,153,148,139,231,150,244,58,57,56,196,59,126,197,183,55,130,250,
-  46,206,85,2,119,41,112,87,180,31,44,5,117,223,134,89,127,131,189,52,91,9,130,248,141,115,179,0,245,242,30,238,98,227,1,4,224,61,53,36,
-  204,106,83,95,74,18,158,244,169,57,78,207,162,53,238,185,70,55,168,159,55,87,114,249,221,209,62,234,14,116,27,222,98,188,109,110,249,59,210,49,
-  166,247,235,209,237,48,27,14,132,87,183,11,180,74,35,100,135,11,225,68,56,15,52,29,78,134,61,64,130,250,32,156,224,228,34,93,255,186,73,62,
-  0,141,242,45,225,51,46,67,124,214,143,181,31,187,156,214,217,208,166,156,198,158,205,199,114,54,29,223,51,169,81,6,99,207,31,169,19,252,185,202,
-  157,36,211,174,199,215,208,93,113,97,94,91,183,215,229,26,237,192,10,184,85,237,89,96,81,31,63,36,34,228,46,31,233,151,240,199,179,73,134,163,
-  36,171,227,188,7,160,73,18,237,230,171,100,25,136,75,34,147,192,186,136,161,3,190,79,162,83,80,136,43,152,200,240,240,8,139,93,24,227,159,144,
-  51,51,99,180,174,209,206,27,108,227,243,165,208,158,119,146,32,159,239,215,79,127,254,8,219,56,61,71,43,110,235,110,164,107,255,93,153,206,157,38,
-  51,187,153,211,142,218,244,202,199,9,132,120,135,111,177,53,28,103,15,91,208,199,243,5,249,15,200,66,254,200,61,60,96,20,6,44,142,140,175,18,
-  20,57,42,166,48,158,96,170,3,138,153,162,177,49,120,21,203,226,63,99,214,80,229,139,166,208,12,214,69,142,166,64,154,149,138,38,138,185,34,36,
-  21,113,101,194,117,215,152,58,221,23,223,78,207,84,180,58,208,25,47,197,13,176,63,213,99,246,19,143,223,173,84,79,104,28,101,20,127,239,203,116,
-  231,155,221,201,204,87,40,201,36,212,52,182,37,221,178,155,176,96,14,57,136,29,37,202,118,21,162,177,176,211,148,222,36,93,154,67,11,45,4,138,
-  214,135,136,94,162,221,75,105,241,16,182,38,69,212,248,7,241,228,33,25,35,4,123,233,33,189,121,81,15,130,71,161,57,121,25,223,247,237,55,105,
-  146,38,151,226,239,55,243,190,247,222,247,222,247,222,60,102,230,1,142,72,40,4,32,148,4,141,9,190,101,31,136,151,180,33,224,32,228,59,206,30,
-  191,191,211,184,113,96,218,254,30,177,39,192,218,66,152,69,247,55,99,43,178,40,6,122,43,48,110,135,149,130,4,41,75,82,98,172,148,74,148,58,
-  122,52,138,98,223,119,100,20,13,14,158,215,56,123,190,139,11,115,23,24,115,93,233,49,74,12,41,123,25,197,98,49,100,12,22,139,167,7,6,6,
-  162,129,72,70,30,43,73,146,180,18,141,58,43,245,122,98,237,186,182,115,71,210,50,202,204,229,153,70,163,213,106,89,47,27,13,109,215,125,63,8,
-  18,5,245,250,43,162,183,55,12,61,244,34,11,159,235,122,161,148,62,67,74,136,227,152,62,16,52,66,119,4,253,141,20,102,1,141,214,232,79,164,
-  215,179,79,132,162,251,172,116,158,75,143,117,150,89,185,139,11,139,8,11,28,38,41,195,140,93,163,28,80,51,195,139,186,51,60,211,198,91,8,208,
-  130,43,218,186,186,85,218,108,139,191,150,113,101,54,123,136,15,141,250,195,108,250,175,206,221,248,21,129,77,248,253,29,250,84,100,141,199,15,16,62,
-  219,68,184,127,49,123,151,54,113,107,154,211,31,79,111,77,47,172,152,66,97,214,162,143,145,134,88,196,174,124,179,9,202,85,201,148,155,76,169,126,
-  233,78,176,38,65,197,205,97,235,144,181,164,25,37,205,110,55,109,60,5,87,161,150,192,153,188,191,86,89,123,62,90,212,237,60,154,227,170,195,252,
-  192,217,109,140,100,200,189,252,246,185,246,103,215,239,114,55,180,34,40,164,33,160,95,244,64,26,92,95,247,250,227,58,210,216,171,27,213,183,233,103,
-  51,177,133,224,167,91,58,103,99,214,206,167,86,251,30,211,183,210,62,242,233,54,166,47,210,104,250,222,100,218,3,228,0,149,128,14,107,89,93,111,
-  210,203,235,31,34,197,92,32,164,23,192,145,26,101,35,229,251,96,22,21,105,145,94,163,74,12,107,21,45,105,138,131,207,2,155,151,76,222,16,164,
-  21,88,235,203,170,92,195,53,158,176,237,254,227,182,89,135,63,66,26,5,125,46,232,171,108,164,62,215,49,135,243,27,94,182,14,201,49,117,80,106,
-  30,148,148,111,200,97,95,170,26,191,213,243,38,243,156,28,78,23,49,94,171,164,21,63,125,158,28,95,186,84,234,88,15,205,114,137,244,48,151,229,
-  89,133,233,24,241,60,210,249,244,102,57,25,227,133,31,188,115,83,119,109,159,117,114,114,156,28,42,144,248,31,136,150,174,101,97,155,142,101,30,105,
-  172,99,119,144,47,114,197,62,192,46,68,79,15,238,6,239,29,63,126,226,132,123,200,162,96,161,6,71,14,21,78,50,244,215,236,153,51,60,239,30,
-  230,92,123,6,174,236,161,62,231,107,252,206,220,247,246,177,190,176,236,231,43,232,231,43,232,224,19,174,110,51,183,59,79,113,119,204,234,83,187,251,
-  101,60,201,220,237,93,181,178,131,223,90,46,27,126,99,41,196,18,46,225,58,126,201,247,146,145,175,233,201,245,182,249,227,252,202,210,243,248,191,106,
-  137,59,214,130,211,163,245,234,1,28,23,14,140,27,30,129,147,28,63,97,169,51,142,216,24,214,145,207,1,71,232,51,165,144,40,89,151,252,207,210,
-  154,97,190,178,55,143,208,250,142,29,102,213,74,174,202,103,142,99,190,191,221,139,217,55,117,132,237,94,24,249,31,141,80,187,78,3,49,16,244,250,
-  236,211,5,9,29,69,136,44,130,210,208,133,38,29,13,21,95,65,73,75,193,47,160,149,160,228,27,40,136,4,17,5,5,85,20,20,201,223,128,8,
-  10,232,120,68,36,144,175,192,172,215,119,151,75,42,102,53,227,217,241,218,242,221,193,182,88,194,24,150,251,132,245,136,245,178,186,215,41,204,134,16,
-  198,152,196,228,66,172,25,79,210,45,198,26,195,44,112,24,242,245,2,73,146,216,158,118,63,18,247,177,133,41,58,112,87,58,247,143,80,134,118,168,
-  240,216,79,205,165,235,70,238,23,112,160,188,206,165,200,83,58,245,224,13,77,186,129,36,47,194,98,175,245,234,196,237,82,98,97,245,138,139,174,18,
-  61,121,51,148,164,227,190,87,123,159,95,106,27,24,211,119,227,14,214,253,210,246,63,193,54,177,134,49,69,154,158,218,196,84,184,115,224,190,78,251,
-  182,141,123,216,118,167,94,237,230,34,54,165,117,39,165,205,26,83,61,213,253,93,214,150,87,186,155,14,162,244,245,173,207,226,187,184,170,146,1,0,
-  81,20,5,223,41,48,131,119,248,96,206,224,25,198,204,69,146,193,23,115,68,149,177,43,250,176,19,210,81,101,206,235,20,222,136,79,172,85,255,201,
-  245,202,21,252,4,94,136,66,73,37,84,172,194,154,148,157,80,41,51,85,80,241,226,95,254,15,157,84,207,107,19,81,16,158,121,217,36,155,52,77,
-  114,8,54,155,166,49,173,173,164,150,162,96,14,61,120,232,65,36,109,192,20,17,109,109,105,61,86,139,231,22,65,58,32,88,4,177,197,98,143,37,
-  85,65,234,79,138,61,20,133,230,129,216,63,192,155,63,176,185,138,8,5,123,241,226,58,239,237,54,89,19,15,226,247,101,102,222,155,249,102,222,203,
-  110,200,42,30,13,8,136,103,128,49,0,147,42,128,128,102,56,57,163,33,27,169,47,175,123,116,2,254,152,35,26,166,168,32,60,81,89,0,224,18,
-  28,156,97,64,56,98,68,77,128,104,2,32,44,6,227,10,201,100,178,47,149,234,75,93,25,234,181,198,20,134,102,198,251,218,103,198,21,172,80,168,
-  189,165,197,52,59,58,90,25,97,133,84,56,220,107,89,73,54,43,100,133,166,11,166,57,157,203,77,23,14,220,213,225,209,92,110,84,89,161,224,212,
-  134,157,140,105,166,35,17,19,146,250,46,166,105,134,249,26,5,30,107,97,8,45,180,146,10,17,127,105,148,85,161,65,218,195,234,27,164,9,122,135,
-  35,64,119,133,253,11,201,70,160,24,123,250,138,178,84,185,41,168,40,183,176,114,109,110,138,138,246,176,158,58,146,93,64,90,65,251,62,206,205,170,
-  253,78,7,21,169,248,237,30,170,32,63,163,28,251,185,34,128,138,234,243,186,100,127,66,90,20,246,91,174,218,91,170,143,138,251,31,16,224,78,112,
-  255,220,143,87,130,250,185,43,195,62,67,56,165,6,148,148,35,4,189,153,115,66,22,64,55,206,186,193,77,151,254,82,187,117,88,37,171,155,72,177,
-  221,13,228,169,95,176,250,30,119,151,209,238,32,95,117,3,119,31,32,123,58,203,219,239,24,252,120,68,169,65,31,223,207,95,251,20,91,172,246,8,
-  54,23,5,205,47,33,236,100,244,157,8,115,242,50,117,202,46,138,229,165,143,37,74,149,102,155,172,92,144,183,145,130,210,47,133,49,66,65,50,29,
-  44,160,222,128,222,200,85,84,27,59,170,60,77,86,51,229,99,64,65,224,178,125,145,78,66,189,38,123,212,37,150,14,237,5,247,242,174,34,61,160,
-  135,42,103,228,78,232,144,213,169,169,236,121,93,137,107,159,142,231,106,186,82,124,162,94,113,207,166,12,72,126,49,9,202,72,65,49,153,149,17,41,
-  42,66,102,249,60,191,89,118,53,203,252,110,156,83,101,167,186,136,60,206,242,121,153,57,157,47,175,107,133,236,202,83,128,41,254,131,232,97,192,165,
-  225,161,163,242,102,140,138,159,130,55,16,69,19,116,202,231,243,161,130,240,107,4,52,226,61,129,238,238,238,144,16,107,152,90,67,237,42,255,200,103,
-  30,170,214,167,248,178,102,107,13,124,172,217,198,159,104,180,45,218,86,198,109,205,178,203,250,202,203,237,6,85,115,102,187,33,243,66,243,81,3,159,
-  107,170,71,176,142,15,153,202,159,105,93,194,39,154,209,86,3,141,8,155,227,193,8,176,129,94,25,134,223,128,92,157,134,1,9,191,107,53,22,92,
-  38,248,47,50,9,73,213,199,107,195,33,154,154,77,145,21,252,91,215,253,58,58,121,79,182,192,221,5,136,171,25,245,187,33,231,127,3,133,84,79,
-  104,28,85,24,255,190,151,217,157,55,179,179,59,67,209,236,236,26,211,149,174,53,75,226,161,197,67,18,2,198,128,100,15,226,45,56,122,73,208,131,
-  219,196,138,52,133,66,177,245,65,107,133,166,216,120,176,41,21,97,162,181,197,90,215,210,139,52,135,236,43,218,82,104,241,32,61,41,234,92,244,96,
-  143,5,79,194,248,125,111,255,184,73,138,254,126,251,125,239,251,126,223,247,230,189,121,195,219,111,113,175,180,0,4,0,4,50,128,113,144,96,193,46,
-  202,167,88,50,232,5,221,208,130,126,120,91,50,56,10,219,32,254,67,16,59,59,68,111,16,66,152,32,11,240,26,173,105,193,160,160,61,242,242,2,
-  228,99,82,58,140,92,238,5,8,130,48,148,162,46,61,207,178,234,53,25,202,90,185,236,142,214,106,7,94,101,28,24,29,53,125,57,41,243,4,215,
-  247,93,70,173,22,82,167,12,157,82,45,44,149,202,81,84,167,31,89,219,49,58,66,55,111,200,145,122,163,30,53,162,200,109,24,93,142,52,164,172,
-  183,21,146,26,172,121,94,33,154,6,57,61,3,144,207,251,88,10,9,153,124,158,182,230,73,218,186,3,201,166,72,102,239,223,193,51,111,174,164,152,
-  156,197,149,227,234,39,76,47,224,105,76,62,194,228,41,245,65,199,61,16,112,148,199,59,152,174,81,198,45,110,252,184,62,166,206,97,235,83,161,92,
-  253,182,250,2,211,79,68,43,151,156,70,18,95,49,167,22,165,167,16,46,189,213,156,248,113,233,193,58,94,159,248,97,41,62,197,213,27,77,4,234,
-  135,91,203,103,36,220,61,139,122,158,103,191,155,190,143,247,79,112,253,225,135,236,149,175,166,148,127,247,47,113,239,136,242,87,6,31,190,163,104,165,
-  225,116,67,92,65,27,2,123,30,34,57,223,8,138,243,13,219,254,12,37,4,197,202,145,133,174,32,47,96,250,49,242,242,48,253,252,121,92,163,245,
-  206,161,91,135,89,0,218,32,233,231,77,189,0,209,26,118,203,224,2,212,169,225,143,131,180,155,27,75,251,103,146,235,152,190,209,120,47,185,137,105,
-  184,113,136,196,223,15,39,177,80,126,223,185,252,130,201,9,241,98,50,121,233,224,237,201,141,197,254,227,73,126,197,100,82,207,232,193,139,115,127,87,
-  78,6,250,245,171,99,202,83,222,115,122,191,30,0,149,7,253,178,218,55,164,114,183,15,171,125,77,58,50,111,76,219,122,183,42,37,83,73,165,53,
-  161,134,149,175,39,90,116,176,227,129,100,164,63,163,90,214,203,64,239,255,36,57,245,140,42,169,41,10,32,61,164,230,96,225,183,144,11,234,89,158,
-  177,250,132,42,209,217,95,243,175,13,195,170,189,106,39,62,40,223,162,207,45,43,1,240,87,231,80,26,1,70,122,185,180,84,70,185,21,190,116,65,
-  144,222,67,107,60,32,240,243,36,21,230,72,101,253,79,84,195,30,55,5,21,189,204,75,122,158,14,20,221,8,246,177,81,212,73,4,93,0,61,68,
-  94,47,140,232,197,248,56,237,179,247,154,122,151,94,84,214,22,102,59,20,255,75,236,208,38,242,140,246,108,246,237,58,69,173,204,238,53,60,38,250,
-  128,4,33,6,6,76,128,98,207,30,219,206,24,100,13,158,46,239,173,86,171,194,233,64,136,194,45,44,56,206,247,88,94,71,102,119,104,225,163,120,
-  181,143,220,246,21,126,99,108,189,227,187,188,76,44,22,138,97,241,50,22,200,102,11,197,217,24,153,155,134,177,177,184,111,252,151,92,111,246,42,59,
-  235,49,126,247,136,57,59,159,177,85,221,220,54,175,105,120,145,248,181,161,248,28,191,68,54,199,89,197,43,134,142,83,200,88,89,139,45,107,89,52,
-  2,121,97,33,25,253,9,142,245,72,74,166,163,154,74,159,71,73,23,85,182,61,117,182,205,228,70,217,166,118,148,42,84,200,87,224,37,193,113,85,
-  72,147,25,133,252,16,107,252,252,238,222,254,1,141,141,189,14,1,65,16,199,103,246,62,44,241,213,144,205,5,149,230,42,23,15,224,1,60,133,23,
-  240,14,155,80,122,6,45,149,90,185,181,78,71,162,32,206,241,22,103,118,100,227,132,194,255,151,249,237,236,236,36,155,116,224,157,3,186,78,178,39,
-  0,203,215,40,113,15,77,0,165,164,114,85,102,162,40,170,112,20,135,174,53,23,41,165,9,116,143,104,228,227,207,211,164,152,159,81,95,156,247,152,
-  215,1,104,202,31,25,143,170,196,237,98,135,176,22,43,225,100,142,180,98,218,244,162,99,171,145,93,111,233,134,142,168,6,244,193,28,117,172,71,166,
-  111,237,46,45,182,226,209,212,250,212,76,131,52,216,118,217,67,235,215,142,22,150,44,152,133,155,176,104,33,4,34,122,158,71,77,226,114,195,12,127,
-  213,245,15,210,2,247,47,30,12,248,224,135,126,209,53,162,202,254,197,19,141,83,65,108,19,71,20,253,127,60,241,206,218,27,111,132,34,188,222,8,
-  100,138,43,28,100,164,28,122,0,69,72,22,173,154,149,125,192,170,64,222,6,209,228,128,82,67,144,154,91,37,164,74,115,2,36,130,100,36,130,64,
-  66,202,162,6,133,150,16,132,224,84,137,120,224,66,213,91,122,41,112,104,124,9,61,182,21,185,111,255,236,26,176,83,35,229,61,255,63,255,255,121,
-  243,119,102,52,126,132,69,72,49,200,124,5,0,2,248,46,40,67,55,88,159,132,247,40,192,234,77,47,64,63,48,248,120,153,117,43,58,21,198,59,
-  126,146,199,31,76,89,60,163,55,8,169,97,0,211,52,193,33,148,143,149,45,43,151,115,114,194,116,196,200,200,72,218,117,207,142,142,156,154,157,61,
-  21,99,212,52,71,71,211,105,33,156,193,193,20,193,182,181,55,115,4,225,208,50,199,161,216,243,125,95,219,118,120,253,170,13,207,47,30,244,60,175,
-  209,104,248,190,40,30,172,84,168,210,104,88,153,114,217,43,215,106,229,65,59,71,42,189,55,107,192,22,194,178,132,48,203,114,137,201,170,156,147,127,
-  96,248,20,229,77,164,228,174,118,213,60,228,231,231,194,146,90,101,208,106,162,106,98,104,202,147,173,127,153,250,139,133,39,0,100,181,245,2,195,5,
-  172,185,183,38,1,252,122,124,67,114,53,177,184,204,174,207,204,63,67,184,178,196,110,206,168,107,168,46,82,191,141,215,8,193,55,170,210,250,27,213,
-  47,236,241,85,154,62,173,110,51,221,99,9,183,22,88,72,162,223,49,92,215,254,237,111,40,237,173,185,121,99,235,243,183,235,76,190,98,155,235,248,
-  38,67,186,161,90,29,132,39,140,227,254,148,255,193,68,109,194,155,48,124,67,116,23,167,124,133,7,96,243,34,222,154,12,176,120,28,234,80,3,23,
-  222,84,234,240,43,213,15,212,131,203,184,50,211,198,38,230,199,138,77,124,137,91,243,40,79,203,27,120,143,158,220,251,43,120,178,129,242,156,252,83,
-  95,75,120,180,125,9,87,190,213,55,34,103,199,212,152,180,131,243,234,132,44,169,113,169,95,69,193,249,226,249,21,218,181,50,200,210,42,17,88,109,
-  166,210,211,139,71,164,173,169,246,201,18,151,147,225,215,66,228,29,17,161,157,104,79,67,144,85,159,109,84,65,126,210,38,81,80,130,176,210,182,131,
-  204,180,142,118,7,123,22,247,200,82,107,183,220,11,210,134,166,1,255,24,77,67,27,180,169,114,136,3,53,209,189,160,155,92,251,62,101,33,100,53,
-  108,112,81,28,18,121,78,177,220,27,126,47,134,168,92,116,212,25,224,180,140,3,15,206,128,172,83,168,146,16,109,250,176,74,146,141,203,108,240,29,
-  196,167,75,149,36,143,152,220,70,182,67,34,209,32,246,174,142,123,234,121,222,26,144,198,15,172,15,48,2,99,137,68,39,216,191,127,128,144,36,12,
-  125,154,44,20,232,111,167,101,166,233,186,119,48,254,145,115,221,104,108,125,148,238,10,174,144,76,251,59,17,239,227,195,78,212,27,47,191,103,38,187,
-  140,19,203,152,157,200,100,179,1,174,97,128,218,247,103,208,53,6,93,249,255,231,223,117,250,48,118,115,109,219,252,90,143,110,13,87,137,75,248,128,
-  200,126,68,205,159,48,30,191,28,108,210,35,255,153,104,154,153,4,199,136,48,12,195,9,242,44,138,116,76,17,167,39,80,34,234,249,82,55,147,140,
-  51,100,164,43,196,70,93,134,33,94,205,19,68,16,59,39,219,153,218,162,175,104,117,156,21,224,48,211,79,59,170,162,160,61,89,188,115,146,119,39,
-  250,15,141,83,79,72,84,97,16,159,153,247,237,250,246,185,187,207,54,211,183,34,174,138,229,154,24,254,1,147,68,144,8,20,20,137,232,176,32,120,
-  242,96,23,131,20,242,214,64,16,104,16,157,58,116,72,37,15,66,34,81,116,49,232,13,4,89,66,160,209,37,146,218,123,151,14,93,234,242,53,111,
-  119,49,43,200,126,191,55,243,205,55,223,252,121,111,248,222,77,204,64,0,17,140,10,149,172,90,50,27,88,242,36,161,25,250,225,79,228,245,100,20,
-  254,13,239,192,106,133,82,3,175,236,165,223,162,116,71,73,208,55,104,72,36,18,213,213,94,164,92,215,245,60,15,106,160,163,163,179,211,243,162,109,
-  33,31,20,42,168,88,51,10,8,18,1,4,217,142,142,32,91,90,179,174,166,96,22,179,217,72,117,86,187,144,112,181,172,74,16,4,41,133,169,141,
-  197,76,33,170,232,250,190,118,243,124,95,235,39,181,107,202,117,101,133,64,110,240,180,221,68,222,38,110,180,57,185,227,216,15,200,125,118,86,150,136,
-  79,112,189,61,197,245,92,39,107,36,183,72,170,132,128,61,144,36,72,21,240,18,65,146,215,201,190,197,129,179,23,135,225,42,116,243,57,251,9,219,
-  203,131,53,32,123,196,126,88,31,62,33,30,227,174,48,207,109,252,2,195,217,112,78,60,246,249,30,242,149,208,11,183,145,223,161,134,125,65,110,147,
-  97,53,178,225,253,232,100,46,28,230,231,81,126,192,184,178,139,118,70,90,100,158,23,236,30,170,241,24,237,117,187,134,218,192,110,17,47,200,62,129,
-  125,175,159,178,79,246,50,55,41,179,181,188,133,242,141,236,51,226,2,79,44,15,193,231,52,216,30,190,141,63,30,34,124,255,72,252,146,228,18,63,
-  64,123,77,198,101,19,109,77,84,67,166,109,175,204,2,251,118,158,39,249,180,244,113,179,237,226,180,244,2,112,15,128,140,41,11,197,117,148,147,225,
-  14,242,66,113,88,122,119,7,121,72,186,120,208,104,22,184,80,163,99,214,96,63,26,183,155,28,48,163,236,128,24,209,123,32,122,213,196,43,219,156,
-  80,235,56,199,35,103,244,120,21,165,37,194,86,110,42,230,212,0,169,230,38,16,71,23,95,226,234,144,49,96,157,123,192,221,90,224,76,70,46,20,
-  51,156,6,78,45,251,80,60,15,28,131,175,6,238,122,156,92,201,113,74,6,139,11,82,199,19,50,30,141,217,252,69,58,96,188,162,77,69,168,116,
-  30,63,164,205,65,100,57,34,62,149,203,77,69,145,139,206,162,179,139,187,184,233,108,58,108,38,159,86,17,145,67,101,160,67,136,116,8,49,69,62,
-  66,187,162,229,216,54,110,227,163,35,216,160,88,197,85,28,25,233,239,223,192,163,185,82,33,29,133,114,249,29,101,34,241,10,255,143,233,244,107,124,
-  131,198,56,70,127,82,23,41,78,73,202,24,212,107,30,83,33,3,21,146,250,82,38,163,82,38,184,228,106,188,75,154,169,185,141,81,140,102,229,33,
-  255,43,39,202,114,42,2,170,75,93,2,200,255,4,141,147,93,104,92,69,20,199,231,156,153,187,247,107,147,187,44,42,55,221,236,218,13,132,116,235,
-  166,181,22,42,245,171,45,138,109,160,98,20,196,21,81,139,4,181,69,159,172,246,45,30,145,130,70,95,210,134,42,69,232,218,7,21,18,106,164,180,
-  152,82,184,19,105,83,104,226,118,109,85,66,4,189,160,201,107,20,4,53,24,198,115,111,178,109,124,9,254,254,156,57,103,206,204,153,153,123,153,121,
-  15,242,34,20,41,74,180,184,3,99,16,216,234,173,6,91,110,141,223,228,176,248,127,120,162,196,203,135,236,211,206,173,181,87,195,118,54,62,199,6,
-  215,245,253,192,15,220,182,130,159,226,229,132,227,129,211,151,224,162,5,200,41,207,169,213,106,251,246,57,97,45,241,181,21,194,92,24,86,58,42,0,
-  16,58,110,197,5,215,237,0,119,131,223,66,74,153,79,157,43,66,166,173,205,178,110,183,148,227,5,174,27,4,94,16,36,115,178,217,54,134,19,142,
-  19,79,129,136,123,77,64,251,233,11,52,161,209,72,67,50,190,12,102,167,57,68,103,165,57,72,59,205,203,102,8,105,2,77,53,190,0,241,44,212,
-  199,185,100,70,146,179,215,190,219,201,69,207,68,249,120,25,245,211,102,32,218,76,131,209,86,234,172,79,227,105,232,127,188,223,49,71,76,85,156,130,
-  58,36,118,68,124,14,159,65,98,117,136,37,61,64,1,29,212,175,69,159,160,94,130,185,39,38,236,27,254,251,19,72,99,248,199,192,217,38,214,47,
-  225,169,75,184,112,17,231,47,98,180,155,122,41,168,55,49,206,207,180,125,231,95,176,231,51,31,101,191,61,112,220,31,182,103,187,135,237,227,254,229,
-  151,102,6,63,204,94,63,240,123,246,152,77,203,160,43,241,111,104,218,121,143,107,24,31,67,17,159,3,218,72,101,42,189,21,119,211,174,147,179,184,
-  240,54,136,47,251,196,141,236,210,60,138,191,59,76,137,94,52,251,227,71,232,185,147,95,3,189,97,142,194,210,30,250,30,205,136,92,122,23,226,17,
-  20,250,94,115,143,222,70,207,154,119,128,74,180,151,20,129,222,62,240,75,149,122,8,168,66,22,39,42,36,117,81,23,119,211,253,186,139,100,206,113,
-  68,142,242,230,5,26,212,57,243,138,174,82,87,148,23,241,163,74,56,66,80,59,1,143,179,210,70,144,228,27,161,149,222,166,189,19,106,200,159,179,
-  167,80,76,193,18,198,170,238,29,58,81,212,124,23,127,62,28,63,56,133,115,246,144,127,238,201,159,228,66,102,220,110,120,35,15,55,188,113,251,43,
-  156,126,157,51,214,245,167,26,94,253,62,93,214,157,20,232,12,109,215,69,161,11,188,87,47,109,137,95,141,246,188,73,91,197,209,141,226,211,194,175,
-  40,254,145,116,39,33,117,213,219,197,249,94,234,211,242,7,235,175,226,7,15,45,86,117,145,166,129,191,37,213,40,16,254,152,89,137,207,200,166,90,
-  182,71,57,234,127,140,43,145,210,252,85,43,241,221,127,66,218,197,8,8,118,69,138,59,156,143,44,202,180,86,154,148,36,39,113,81,142,75,30,181,
-  34,43,157,56,172,154,60,48,153,33,155,212,243,201,113,146,66,46,89,100,157,145,43,226,82,213,180,79,195,109,163,50,249,229,137,62,182,241,191,240,
-  43,0,148,144,186,22,50,97,237,164,205,229,138,180,172,77,9,85,203,234,233,41,151,239,42,151,203,165,43,112,5,70,111,106,122,77,188,86,59,118,
-  20,146,119,20,98,129,25,131,49,136,86,109,61,225,122,52,160,193,235,54,224,42,107,138,117,45,109,215,83,59,51,3,223,128,98,196,38,145,115,148,
-  80,142,2,86,192,81,160,60,22,174,154,226,86,116,42,149,225,40,96,147,124,233,146,153,22,203,86,121,174,19,206,191,149,84,93,104,92,69,20,158,
-  51,51,247,206,253,217,187,119,147,198,178,217,152,173,193,159,70,154,150,34,104,69,133,228,65,252,67,164,224,131,105,20,91,42,98,192,31,44,246,161,
-  1,31,78,89,155,54,109,90,176,4,209,54,152,75,132,54,144,109,13,8,49,13,234,189,91,227,6,210,18,219,144,98,163,80,171,136,47,250,98,17,
-  3,149,50,158,185,187,54,1,81,233,119,246,156,249,230,220,51,231,204,156,59,123,199,160,145,49,150,103,41,100,109,224,172,142,38,162,153,69,88,237,
-  74,217,125,236,63,176,155,221,34,60,198,138,105,237,188,161,117,31,95,85,207,240,76,35,203,231,11,133,208,15,195,48,27,186,6,190,159,39,235,184,
-  94,161,64,1,57,199,113,60,47,112,28,112,92,225,121,226,9,215,125,170,187,134,124,158,126,14,73,111,222,113,12,171,129,229,218,92,183,57,77,229,
-  182,129,129,79,16,66,20,140,33,248,194,111,52,212,247,239,244,69,35,119,193,173,173,15,2,105,89,146,96,89,161,235,167,8,195,32,8,220,192,236,
-  199,137,34,161,47,115,92,226,100,163,5,174,171,128,31,130,222,130,247,235,67,28,79,66,52,13,216,128,207,224,38,253,152,142,1,47,242,8,133,238,
-  209,37,208,8,216,137,239,0,94,2,253,180,62,193,163,195,66,79,242,104,92,232,107,20,3,87,7,86,165,61,11,152,213,51,128,115,92,79,115,140,
-  0,223,214,89,221,160,159,220,169,71,32,57,205,125,59,183,117,123,239,43,189,24,234,179,240,38,238,49,65,101,78,51,26,195,247,33,117,99,128,147,
-  96,198,86,60,0,88,52,236,75,168,217,104,55,134,120,1,226,159,161,220,253,187,93,142,224,80,176,143,98,130,171,217,133,29,159,170,243,123,226,143,
-  248,116,48,232,95,167,243,192,39,39,224,55,251,3,95,103,150,126,129,105,181,232,15,6,201,171,131,193,188,87,86,253,251,225,27,126,88,125,223,87,
-  125,99,249,165,193,224,122,239,169,224,156,55,174,150,134,249,81,53,180,31,142,29,129,145,81,94,205,224,94,72,190,18,241,41,30,119,68,111,233,93,
-  24,70,147,156,182,161,119,70,37,96,209,94,192,1,142,69,218,223,12,167,62,101,245,93,186,121,250,56,68,200,245,115,181,125,31,7,124,94,35,175,
-  158,228,44,250,149,235,143,233,64,209,57,142,141,186,79,63,90,254,156,71,251,128,37,91,176,71,15,2,246,36,138,122,236,227,70,236,192,59,116,123,
-  210,130,205,12,215,224,189,148,118,83,34,177,25,31,68,142,10,155,244,235,184,25,95,72,90,235,218,220,69,203,139,180,122,45,222,78,1,30,90,180,
-  122,59,230,112,29,118,73,236,76,214,100,232,242,58,36,152,65,193,210,231,22,138,200,222,193,208,65,83,81,161,98,53,94,83,193,88,34,191,104,157,
-  242,39,237,126,120,109,88,116,45,192,1,175,44,18,255,71,254,153,26,117,48,172,60,59,229,143,57,195,98,216,63,232,127,171,170,60,222,182,200,135,
-  212,81,255,143,71,14,170,121,239,188,252,137,79,200,69,254,231,174,154,247,116,126,222,155,187,231,114,195,68,235,20,245,224,33,44,38,34,177,113,45,
-  134,137,69,239,241,238,164,143,37,183,165,59,104,167,99,9,58,1,188,151,195,151,245,86,234,68,128,69,134,98,84,177,36,164,179,61,156,4,216,134,
-  121,180,202,219,146,62,236,46,201,146,252,142,180,115,72,93,177,251,85,63,76,88,37,121,67,216,21,64,121,76,161,156,85,104,163,156,81,27,134,12,
-  225,103,236,101,154,142,200,51,106,89,9,180,98,139,42,201,88,164,21,249,44,12,192,227,110,197,70,85,81,53,111,204,47,1,221,127,234,78,103,76,
-  174,138,68,171,66,109,171,80,240,230,138,122,215,54,41,215,189,104,44,9,37,190,38,126,16,177,236,188,162,142,200,25,49,1,19,64,185,230,68,118,
-  76,222,32,79,73,241,58,4,23,96,70,250,59,11,14,117,240,21,136,21,220,244,181,165,200,88,86,251,223,232,88,191,190,80,216,176,113,22,106,50,
-  126,75,242,128,65,75,11,39,49,224,49,148,255,33,113,170,241,205,217,138,172,158,241,127,193,56,204,147,152,90,243,48,71,242,53,84,255,71,178,23,
-  224,34,0,125,179,140,210,85,109,2,135,229,152,20,210,150,230,83,102,148,101,72,137,9,82,158,50,139,172,25,253,186,50,199,78,99,25,61,23,164,
-  138,172,67,158,191,0,157,84,77,104,20,89,16,174,122,239,245,204,155,110,147,105,197,64,167,39,49,70,163,200,238,228,71,17,35,18,112,16,197,70,
-  28,245,16,80,68,61,187,172,238,202,130,55,119,183,48,254,128,63,144,131,38,42,10,3,130,30,162,32,40,10,122,72,129,160,224,37,81,15,138,10,
-  254,129,120,112,89,97,5,15,18,158,213,61,137,235,138,178,224,247,77,125,245,189,215,76,85,189,215,195,236,199,25,16,65,10,245,73,38,85,48,211,
-  26,211,159,173,213,158,197,217,142,153,122,4,187,224,11,248,48,199,111,20,253,6,140,170,23,250,172,252,148,159,5,54,142,34,235,199,162,133,216,207,
-  16,219,40,138,253,32,136,165,160,181,149,74,5,194,74,197,223,100,109,36,15,62,1,195,8,162,118,20,132,128,237,190,138,161,16,97,131,192,54,84,
-  19,147,70,180,117,107,82,173,26,91,143,196,70,137,160,181,173,216,220,92,8,74,165,32,40,53,151,2,233,29,199,214,114,30,248,6,210,25,229,14,
-  107,26,200,185,7,134,238,33,31,87,244,76,187,87,169,167,3,154,143,106,119,78,185,133,180,129,122,137,21,79,167,83,154,110,162,91,71,119,148,227,
-  28,208,124,49,172,249,161,230,34,135,79,84,242,84,241,89,237,86,180,237,224,253,216,66,155,156,114,253,180,202,173,228,35,30,13,161,155,208,244,90,
-  165,230,175,116,73,155,235,171,43,67,248,207,32,210,73,164,86,42,142,214,240,221,79,231,205,181,252,253,192,173,126,183,236,242,206,63,57,71,141,84,
-  172,253,56,58,143,115,60,134,60,3,164,5,128,123,136,34,215,145,38,228,37,185,15,134,198,229,114,95,167,123,55,141,91,47,233,23,58,38,59,59,
-  234,243,100,163,93,63,131,180,134,198,189,90,175,156,145,222,162,123,98,232,55,185,0,122,142,238,144,231,54,214,94,42,119,16,233,172,87,187,170,232,
-  134,114,251,140,11,233,174,78,59,246,186,69,92,0,234,116,101,26,64,72,109,68,63,131,140,214,73,91,228,149,178,204,64,71,17,220,31,20,210,175,
-  192,173,252,59,175,227,106,75,100,185,137,214,134,211,184,195,128,156,2,211,224,16,40,71,115,129,102,2,253,0,240,55,190,53,89,133,65,111,168,241,
-  80,240,40,127,85,133,151,138,148,112,0,240,172,139,11,236,241,118,110,1,110,146,14,114,58,242,168,89,180,137,234,63,99,202,147,21,13,72,106,76,
-  203,122,73,207,189,7,112,116,55,92,216,155,94,198,46,146,75,160,118,242,223,20,105,55,188,105,0,42,115,85,6,164,139,56,140,164,50,230,94,225,
-  40,18,46,63,157,110,24,82,109,219,234,249,43,49,165,102,66,167,28,54,3,25,223,75,76,228,181,86,168,180,82,136,90,160,84,170,168,254,11,207,
-  235,234,238,234,94,144,125,234,185,187,171,92,46,223,198,219,56,242,29,92,178,164,116,1,255,229,11,225,227,76,31,8,235,46,107,59,130,119,132,35,
-  223,201,177,140,183,254,151,247,240,62,162,129,50,44,134,19,18,9,116,64,69,254,57,122,196,247,67,31,204,54,2,109,140,213,214,183,38,163,154,116,
-  242,45,211,99,208,40,201,125,146,97,246,36,7,33,193,14,8,179,154,86,106,44,21,215,3,107,33,249,8,181,86,79,104,28,85,24,255,222,159,221,
-  121,51,155,117,39,26,220,201,106,221,61,148,205,68,74,27,137,176,81,130,59,107,10,221,157,181,96,60,104,82,44,120,234,81,188,8,85,16,94,18,
-  168,197,108,85,40,85,244,144,228,160,37,96,41,6,60,136,167,33,77,69,52,180,61,198,189,52,122,16,212,45,120,8,69,74,226,248,189,55,187,217,
-  205,110,18,236,193,223,55,239,125,127,222,239,251,222,190,111,102,103,119,158,62,13,8,138,23,133,243,168,203,240,95,17,87,89,0,143,31,66,121,244,
-  144,181,163,192,225,225,192,15,176,91,120,4,224,173,195,242,61,204,178,186,14,64,169,62,61,206,3,148,59,142,149,177,156,140,149,113,50,30,128,109,
-  154,142,217,133,68,15,50,106,50,19,166,153,76,36,188,114,169,84,242,42,21,51,97,85,171,190,63,129,82,157,152,240,95,156,240,125,95,136,178,134,
-  223,9,203,210,106,106,42,90,173,84,42,187,148,170,170,208,180,252,106,139,220,178,21,85,81,148,219,91,214,247,157,78,136,76,55,44,160,49,114,250,
-  116,57,153,20,34,153,116,206,158,21,78,89,36,7,7,159,192,147,224,249,177,37,242,23,34,223,39,225,119,84,86,229,95,68,158,15,167,229,21,38,
-  127,32,32,79,185,114,133,202,69,26,46,208,165,27,44,56,119,55,118,249,213,229,201,13,183,222,63,63,67,106,227,117,119,43,127,105,134,108,229,235,
-  110,109,28,35,27,253,117,247,39,43,120,105,221,154,127,109,221,90,121,126,163,127,121,180,54,254,243,60,50,174,142,110,229,209,168,141,95,29,173,247,
-  163,177,60,217,224,119,223,8,206,253,230,99,194,21,14,245,59,252,179,51,75,131,139,131,159,159,249,155,216,35,134,97,23,64,126,66,32,156,206,130,
-  99,56,110,214,6,33,78,165,94,46,8,33,239,243,240,11,34,132,35,132,72,27,134,103,104,160,37,191,36,225,17,33,138,66,124,75,161,201,2,1,
-  99,66,156,64,106,86,164,132,225,26,234,82,24,49,138,99,69,12,225,38,42,105,72,100,221,33,100,95,164,99,41,167,224,26,142,81,24,25,146,84,
-  228,48,177,185,5,106,85,28,228,83,216,178,27,68,166,186,4,11,173,178,158,168,138,239,113,171,193,29,14,215,118,216,164,139,101,86,240,97,12,95,
-  199,177,128,70,212,104,213,242,7,254,230,77,34,191,33,225,77,42,127,164,155,139,84,94,32,155,239,134,39,229,135,84,62,96,209,21,152,152,49,71,
-  32,48,245,252,17,9,184,188,68,250,164,21,76,203,252,17,88,224,95,199,97,213,128,26,107,207,31,48,88,51,110,89,151,189,91,214,253,87,214,173,
-  181,102,68,205,187,156,235,241,37,14,51,200,90,58,185,154,188,104,110,15,111,167,255,73,111,15,51,27,91,232,216,32,31,11,175,19,25,23,0,34,
-  7,170,109,34,103,103,113,45,80,65,125,75,176,253,216,180,130,208,158,140,135,239,105,255,168,102,128,186,31,66,163,216,180,237,136,139,208,129,40,193,
-  110,122,220,17,144,197,93,133,147,118,120,84,54,23,109,170,146,114,34,176,229,176,124,65,178,246,247,92,126,76,122,222,5,65,141,132,179,100,173,122,
-  188,15,215,241,129,151,207,225,200,99,28,27,133,253,154,189,64,174,205,226,147,246,38,52,82,242,237,70,50,120,7,2,95,137,52,36,209,35,38,217,
-  1,58,134,218,64,143,105,38,67,127,63,29,141,40,47,138,168,181,248,161,194,15,148,120,199,204,179,159,18,73,209,232,28,124,135,237,176,57,62,199,
-  119,12,70,40,130,81,162,117,23,24,195,137,236,162,25,99,172,195,109,70,90,177,61,11,29,171,45,138,14,236,45,198,232,1,120,38,118,252,68,36,
-  199,190,34,251,201,31,255,187,208,135,193,61,114,143,148,126,39,197,146,87,106,144,63,81,240,253,95,82,94,135,139,208,102,131,148,60,69,109,251,158,
-  162,70,196,166,106,40,195,43,237,131,95,137,146,246,206,233,158,207,146,222,191,99,109,185,77,190,239,17,252,62,13,224,120,22,198,32,7,199,96,10,
-  166,56,2,127,39,185,126,77,138,62,109,119,138,232,137,0,55,247,120,140,171,58,90,6,192,134,17,252,75,241,228,191,205,85,77,76,83,65,16,222,
-  121,125,240,182,75,66,91,72,164,125,5,210,16,109,12,106,72,176,7,141,6,44,166,81,90,13,193,139,181,28,138,23,19,66,226,185,39,179,65,227,
-  95,235,193,68,145,52,96,72,44,193,27,152,162,198,131,218,224,193,3,80,197,139,166,241,32,7,18,99,140,63,133,3,183,117,246,61,250,67,43,9,
-  120,114,166,179,187,223,55,243,205,110,166,77,250,2,242,64,254,213,106,137,82,193,236,217,182,182,161,154,218,191,219,251,84,244,130,189,194,103,187,92,
-  86,171,12,115,149,81,87,110,110,183,25,229,167,162,185,172,46,172,182,217,48,81,39,51,196,229,15,27,157,220,74,93,8,201,72,207,201,144,34,53,
-  138,203,73,41,181,58,47,12,4,131,110,157,49,166,179,160,83,82,72,246,74,11,235,58,171,11,73,11,70,34,198,30,98,210,116,93,15,154,80,215,
-  41,163,212,217,27,138,68,144,38,138,229,122,195,186,55,217,159,247,62,185,7,159,28,115,151,114,142,59,143,32,203,18,141,21,236,82,18,30,39,97,
-  45,5,153,25,88,100,89,182,200,22,62,67,222,59,213,156,115,100,174,65,206,177,122,11,11,191,14,228,189,226,33,172,123,197,209,37,54,119,183,138,
-  78,31,200,57,166,154,243,222,220,83,88,96,75,108,129,189,158,129,245,20,76,39,225,251,91,32,153,125,137,88,124,40,17,123,48,5,124,5,166,117,
-  242,241,57,140,141,66,60,150,24,138,199,226,54,254,1,196,23,144,107,26,78,247,225,78,68,11,17,41,32,124,136,31,39,188,149,136,101,160,39,40,
-  229,173,98,30,201,21,16,199,196,65,110,67,199,126,114,179,161,156,146,176,102,104,176,77,61,122,10,248,40,160,4,253,6,86,17,252,160,218,46,237,
-  60,246,228,111,228,157,118,19,107,212,216,249,33,81,143,189,90,48,210,128,151,181,132,163,6,47,238,35,194,107,101,111,204,45,67,152,244,105,230,61,
-  105,200,156,35,252,202,132,74,124,36,201,112,217,104,207,178,155,158,2,154,24,30,83,158,209,49,69,78,53,203,70,124,36,203,200,234,145,66,246,182,
-  103,145,109,180,23,208,242,176,204,142,248,178,198,119,96,234,38,253,243,141,227,54,223,248,160,239,221,32,111,155,117,145,201,125,47,131,18,94,189,248,
-  190,139,183,101,106,120,23,161,188,67,206,136,171,98,22,95,88,75,120,51,225,29,148,16,141,159,229,141,200,241,54,222,197,251,51,152,83,229,168,8,
-  74,154,236,148,31,22,81,228,229,244,84,17,165,70,154,24,99,226,30,227,167,111,23,81,130,82,19,80,218,100,55,14,220,99,142,18,139,81,69,77,
-  174,135,224,67,226,128,139,13,155,107,84,147,141,197,153,204,101,113,42,179,151,107,28,182,132,5,189,146,43,156,10,190,149,45,68,13,58,84,105,75,
-  213,37,133,197,168,44,48,90,113,215,138,8,112,26,181,127,245,173,188,82,116,117,151,46,53,181,80,50,165,202,44,37,3,75,177,70,162,114,145,101,
-  147,216,148,108,219,177,212,76,49,117,138,210,217,249,13,254,79,87,118,100,1,191,191,219,191,6,254,31,240,19,126,193,111,252,23,65,224,15,84,224,
-  10,136,209,29,168,100,3,107,102,233,166,41,116,103,110,65,55,119,19,171,120,82,13,86,53,118,176,19,187,138,43,216,37,46,71,102,221,31,197,83,
-  77,104,20,89,16,126,245,186,77,191,233,56,206,140,7,211,61,163,73,227,97,50,44,193,40,27,137,7,215,76,171,132,206,140,32,57,73,118,143,130,
-  217,245,226,53,135,61,60,88,209,44,198,101,15,198,159,176,235,122,210,131,11,139,164,245,32,98,70,197,83,36,160,44,172,9,130,10,198,131,120,208,
-  216,155,131,136,111,171,94,207,204,246,196,159,69,47,91,53,175,94,213,247,125,85,93,221,48,143,97,9,216,231,154,72,228,235,62,170,92,251,81,182,
-  244,57,15,55,255,163,142,45,4,155,181,165,82,78,10,205,117,83,169,228,77,214,158,176,66,33,121,231,41,164,80,154,78,103,50,8,182,151,3,223,
-  119,83,67,188,189,90,176,119,161,85,80,86,221,89,173,22,218,141,93,21,30,4,142,43,130,32,176,209,42,149,74,129,66,158,66,165,130,8,178,142,
-  8,28,49,52,20,75,242,121,60,118,181,170,249,10,222,40,205,199,114,93,16,111,59,164,207,107,89,158,160,192,197,25,129,158,79,227,181,220,182,215,
-  131,209,245,252,6,132,189,191,109,125,104,222,217,125,106,239,211,145,233,31,120,84,156,26,94,42,202,67,81,241,248,232,66,238,229,159,112,63,23,30,
-  88,200,77,29,198,228,216,104,84,156,217,50,177,125,126,240,252,240,204,50,204,218,79,255,128,243,195,127,13,78,108,159,217,18,21,107,155,238,231,102,
-  47,192,66,110,241,71,212,214,46,97,86,219,20,21,23,175,193,82,81,157,5,20,60,128,197,145,211,123,103,119,63,50,207,109,157,238,157,173,193,29,
-  123,97,30,206,220,130,137,177,104,18,102,190,103,181,253,76,186,175,38,225,216,216,212,45,24,135,108,183,165,166,65,42,96,234,91,249,29,83,111,65,
-  254,202,251,133,16,142,250,133,203,147,32,59,89,169,155,169,73,144,99,242,107,171,164,142,96,143,32,85,6,123,80,167,54,168,53,106,13,10,59,44,
-  75,61,2,121,15,44,107,155,58,206,145,181,50,52,101,146,164,153,122,83,167,124,140,9,178,63,241,46,209,133,221,61,72,30,5,117,149,35,117,20,
-  40,213,100,175,229,89,100,158,229,197,179,116,83,39,78,23,29,2,27,55,171,139,92,254,206,41,82,31,163,71,96,246,2,186,5,45,209,73,35,132,
-  23,247,40,208,178,159,245,232,140,102,84,143,94,185,171,177,241,230,248,33,29,216,66,235,134,110,109,30,103,58,119,33,228,103,141,55,102,200,167,68,
-  200,159,88,172,143,93,225,172,200,174,83,22,114,252,107,204,217,244,187,189,113,206,190,217,83,47,74,196,244,145,166,158,61,177,174,240,211,216,255,218,
-  60,103,132,252,242,23,115,246,184,115,194,237,11,249,27,250,91,190,93,23,242,190,19,174,145,205,10,185,67,166,153,26,7,201,153,76,75,238,225,171,
-  122,148,175,103,108,31,69,185,67,100,101,206,20,168,146,220,193,143,119,80,191,54,165,146,171,61,248,177,37,151,105,209,31,39,72,153,76,75,245,52,
-  65,166,14,50,146,48,29,235,88,183,142,26,214,82,214,223,4,176,198,47,203,106,171,144,241,152,250,10,175,18,163,149,20,237,104,234,14,79,168,111,
-  104,9,79,72,15,119,240,168,175,87,95,153,218,30,217,33,71,49,130,180,154,199,74,84,171,164,241,78,221,56,128,110,36,144,228,140,149,117,235,124,
-  75,179,208,124,90,3,53,100,219,39,56,71,55,87,120,91,253,52,56,11,128,127,216,12,35,166,33,182,127,225,216,160,21,95,129,182,246,180,52,54,
-  117,117,48,33,213,20,231,95,162,101,219,158,193,255,233,127,215,79,236,252,19,205,31,24,120,5,126,217,247,151,97,25,124,223,199,2,129,1,66,34,
-  136,8,241,155,92,153,164,3,126,131,41,147,46,214,151,35,84,96,169,111,146,105,238,189,54,152,54,76,46,90,61,70,12,116,83,199,56,135,44,203,
-  82,132,108,163,50,117,69,89,242,54,68,236,176,26,86,255,3,205,84,95,104,91,85,24,63,223,189,55,247,158,220,52,205,45,3,147,181,54,9,34,
-  235,85,86,44,35,91,176,141,77,178,88,186,36,226,156,153,208,63,176,13,117,12,251,36,67,112,197,151,3,99,101,184,34,211,202,182,190,104,218,135,
-  188,40,161,118,117,84,25,246,226,64,164,127,194,168,99,15,99,212,189,164,138,212,189,88,167,221,131,215,239,156,155,164,127,182,90,31,124,240,251,157,
-  63,223,249,206,239,251,125,39,247,228,222,17,233,213,60,144,255,202,232,134,185,254,241,20,169,230,25,59,17,8,121,202,153,148,127,83,91,250,199,176,
-  180,51,251,27,192,66,58,33,65,60,59,184,221,238,64,192,237,222,45,90,101,216,96,30,79,147,0,183,38,143,227,56,43,97,141,206,90,48,48,215,
-  235,69,103,55,70,8,133,100,50,141,150,204,100,60,158,93,185,84,42,117,48,149,202,0,28,73,38,115,178,156,203,81,110,61,61,153,45,6,13,32,
-  243,253,84,46,151,162,52,208,211,51,48,32,152,212,77,221,135,56,61,155,21,188,202,132,78,70,120,120,210,222,52,71,58,219,223,239,241,224,144,205,
-  246,103,251,49,47,141,212,116,175,27,67,158,38,140,100,121,156,114,233,67,155,11,203,224,242,214,121,221,224,6,118,17,190,187,6,247,213,31,242,240,
-  163,194,70,225,211,227,115,241,161,73,248,245,84,249,232,215,55,224,220,155,51,29,119,26,38,35,249,19,107,19,176,186,103,42,242,219,201,225,216,84,
-  228,194,123,133,35,243,122,73,159,215,237,93,115,250,130,62,167,231,223,46,171,159,199,70,83,83,149,94,86,11,79,150,213,159,212,82,123,249,22,76,
-  142,64,169,253,234,13,24,142,157,151,150,83,139,237,246,23,168,149,247,79,237,91,59,121,167,97,122,239,185,215,75,103,193,62,179,226,186,167,12,21,
-  96,89,253,89,157,12,205,5,38,67,151,79,179,193,209,211,43,106,33,114,171,0,11,217,207,134,129,44,127,5,172,117,230,75,200,47,66,185,131,5,
-  89,43,27,96,65,187,79,11,83,252,111,198,169,198,6,137,221,71,205,16,53,124,154,159,93,6,214,172,181,69,195,118,134,197,40,101,253,204,199,97,
-  159,161,212,167,153,26,90,155,230,227,143,59,78,89,1,88,135,157,102,123,169,224,250,48,139,157,7,100,55,107,97,191,200,36,162,217,89,246,146,29,
-  11,113,129,0,2,45,172,5,168,143,250,41,13,153,33,51,78,184,146,93,143,105,212,140,210,182,104,128,18,46,136,111,78,139,17,110,49,217,32,74,
-  244,81,141,134,95,49,121,53,194,203,101,137,207,97,227,111,225,199,123,139,154,113,83,28,206,47,14,103,69,8,251,16,186,216,113,187,142,176,17,176,
-  101,91,103,39,172,215,198,234,139,222,219,240,137,156,216,51,171,190,15,15,165,89,117,69,14,92,81,201,53,229,123,169,36,147,105,229,18,247,49,80,
-  18,23,245,87,35,31,75,250,88,1,38,188,119,245,69,105,73,191,137,125,81,42,122,47,184,138,222,9,239,184,188,234,186,162,140,203,31,203,100,30,
-  138,174,113,121,31,206,31,208,119,200,44,220,164,31,73,215,233,125,245,158,60,242,134,67,29,214,199,229,9,47,225,139,162,255,118,227,93,35,79,201,
-  217,167,243,193,233,231,47,181,126,91,63,230,203,7,45,13,175,71,60,93,74,232,97,202,159,30,222,65,136,223,77,216,122,130,197,12,98,116,91,67,
-  48,211,97,68,145,42,46,134,5,41,141,82,147,182,80,26,70,7,205,160,149,29,159,97,53,207,188,107,24,152,101,105,132,245,241,143,12,119,124,181,
-  70,121,174,129,104,17,137,248,196,163,162,52,49,40,225,210,40,33,190,77,198,97,148,232,197,178,184,209,141,1,81,188,21,121,97,133,243,240,92,86,
-  115,162,219,116,200,149,147,181,162,182,137,119,28,166,207,9,113,230,103,167,172,163,166,245,12,123,153,88,47,178,6,102,88,207,94,215,22,212,5,149,
-  1,211,24,224,92,29,93,76,102,184,227,204,27,70,7,46,7,87,97,59,48,217,25,121,206,70,207,153,153,118,149,215,19,149,183,130,185,138,32,78,
-  163,45,169,75,42,147,139,120,162,99,199,152,138,80,4,28,79,125,4,210,99,124,105,27,40,91,32,109,202,222,78,117,29,138,232,210,14,64,229,16,
-  190,202,72,157,208,56,152,6,85,147,182,49,185,102,184,64,214,58,29,67,124,150,107,217,21,158,88,58,9,91,164,215,181,54,229,84,85,55,9,84,
-  217,82,36,66,205,253,251,127,129,255,47,126,223,178,150,118,178,131,47,160,253,9,15,33,25,71,36,30,64,18,27,183,85,88,117,156,7,128,145,4,
-  130,199,120,67,94,39,218,31,192,59,71,231,26,186,124,88,131,174,46,236,157,241,196,42,38,241,158,232,114,118,28,74,53,37,249,168,93,4,151,235,
-  192,1,89,33,10,80,14,34,224,248,24,173,172,156,142,47,49,2,106,126,37,131,127,30,20,82,39,161,6,66,112,248,62,208,170,34,212,20,43,187,
-  198,223,213,85,95,104,83,103,20,255,206,189,215,123,79,218,102,249,198,28,94,173,139,197,7,13,46,96,144,49,135,164,55,43,125,72,211,8,77,173,
-  176,164,129,234,131,144,226,139,194,96,236,161,15,247,97,173,178,117,27,99,217,152,29,108,80,138,8,106,168,102,47,246,65,125,89,95,90,55,156,34,
-  138,160,219,67,253,211,13,21,41,164,201,254,100,231,251,238,189,73,154,22,172,176,151,157,223,119,254,255,206,185,55,129,47,121,10,207,129,253,39,130,
-  171,162,87,132,81,154,104,124,141,154,144,237,107,212,180,90,164,172,235,21,20,182,142,1,159,233,243,249,54,59,135,212,147,214,246,86,247,212,164,221,
-  67,123,251,22,183,80,167,56,67,162,232,5,61,239,14,14,14,118,245,247,247,15,116,15,116,211,25,32,233,78,203,26,65,164,221,174,33,12,15,167,
-  211,61,105,71,66,104,166,123,90,119,29,165,188,151,232,164,137,76,34,145,201,100,18,153,108,50,153,204,146,72,231,68,34,145,154,36,146,108,208,145,
-  228,68,50,91,167,121,209,15,243,80,244,77,240,27,31,204,165,199,38,96,110,223,47,159,195,18,78,188,94,28,83,40,157,221,127,166,237,210,151,48,
-  123,1,78,125,172,204,28,154,75,95,36,125,160,63,208,127,253,22,22,102,224,102,30,138,157,163,67,243,121,56,235,185,217,183,139,157,63,145,46,232,
-  11,250,216,9,88,208,31,234,23,178,243,7,159,196,110,191,90,58,7,179,7,199,163,75,59,206,95,166,250,239,122,121,115,254,53,251,20,136,117,115,
-  63,195,213,204,243,17,233,42,35,55,132,187,115,224,106,230,250,1,225,43,231,225,226,190,124,240,199,81,168,246,254,241,21,92,9,127,17,253,116,112,
-  230,9,156,254,13,70,163,213,112,181,119,226,107,42,126,31,173,102,78,2,223,196,140,225,92,106,231,182,227,57,76,231,82,241,64,106,167,113,18,12,
-  134,195,123,35,123,141,20,85,100,25,83,34,53,241,240,177,119,118,167,88,46,210,17,170,110,176,117,198,177,250,70,53,140,54,32,195,0,99,6,103,
-  52,134,185,80,104,55,110,75,153,120,12,123,226,200,104,222,204,137,104,83,202,52,223,195,72,12,141,15,57,61,151,179,0,242,0,19,100,241,32,193,
-  233,147,3,50,9,133,222,95,210,102,112,74,157,84,23,245,73,245,150,194,222,50,23,245,111,84,214,178,171,162,140,183,76,170,66,167,253,5,255,39,
-  71,10,126,143,229,216,41,181,177,255,56,34,172,200,243,42,227,227,45,123,216,51,165,224,159,246,223,106,189,13,143,15,59,61,54,222,50,37,12,69,
-  5,63,155,246,147,253,104,207,200,214,71,91,237,224,137,184,29,220,177,229,116,96,249,205,239,192,14,218,193,251,81,59,184,49,220,198,88,132,133,57,
-  227,113,198,57,186,126,35,235,16,215,145,243,128,48,125,181,72,19,55,152,155,40,174,177,141,204,54,24,171,126,6,182,13,76,67,52,176,3,49,128,
-  29,92,222,100,206,250,136,140,114,77,96,117,41,138,204,64,70,95,32,67,77,22,208,225,196,27,147,107,122,29,182,97,131,109,200,72,122,39,174,163,
-  8,235,133,152,111,244,2,43,119,173,70,65,176,161,64,184,167,223,211,239,146,210,251,24,5,137,161,161,236,144,173,191,0,202,250,160,190,112,209,203,
-  64,91,19,202,203,3,154,68,105,18,181,73,106,13,80,84,143,47,234,110,10,245,33,193,1,153,172,177,189,190,80,86,213,26,105,69,123,17,254,111,
-  240,62,223,50,84,160,179,38,21,88,134,63,225,47,82,17,85,160,12,37,232,42,67,87,87,201,9,44,203,18,145,37,79,137,218,78,100,73,181,172,
-  178,168,52,25,75,104,172,12,255,64,172,4,127,83,69,186,152,37,251,86,195,84,195,30,247,25,244,15,203,197,101,39,141,72,120,25,23,0,205,241,
-  148,19,232,71,211,148,157,16,121,7,232,245,220,9,83,170,233,70,156,182,107,138,6,109,194,59,0,77,117,34,116,109,35,156,41,116,119,52,238,242,
-  172,247,94,222,196,74,126,35,79,118,254,5,125,83,205,111,19,71,20,159,25,111,118,199,107,98,111,81,229,108,4,53,22,18,200,27,18,20,136,169,
-  80,109,100,167,41,145,77,142,109,37,196,1,137,67,165,228,80,169,183,112,124,73,193,73,147,66,19,83,84,164,246,192,159,80,81,212,43,123,104,213,
-  67,92,151,67,47,229,80,229,136,42,14,85,115,64,165,31,211,247,102,118,55,235,96,58,191,125,239,253,222,231,206,238,236,190,224,135,207,218,110,147,
-  49,118,149,165,151,96,54,59,196,134,47,49,52,42,181,62,28,121,238,144,10,107,176,217,62,144,206,31,24,45,94,110,214,203,251,159,10,57,44,23,
-  83,224,73,168,136,119,19,19,62,77,243,253,241,44,173,92,188,46,95,201,230,178,65,182,66,65,153,53,75,26,34,131,160,18,100,219,237,86,187,165,
-  147,210,240,75,3,43,8,168,20,213,169,92,238,20,130,244,162,148,139,8,210,19,174,235,182,23,105,226,82,86,162,37,191,117,185,213,106,183,169,173,
-  189,68,122,112,96,155,214,2,173,10,78,168,72,26,25,84,42,129,196,237,160,79,34,99,209,57,31,17,248,126,37,240,41,72,161,236,120,238,8,2,
-  233,161,209,17,94,96,176,203,33,15,5,240,96,10,245,21,117,233,217,91,59,238,142,251,35,202,47,226,201,107,183,74,79,249,31,39,55,75,79,42,
-  61,183,231,250,172,231,64,161,115,125,187,120,127,242,78,177,83,39,187,91,216,59,161,106,157,250,139,218,222,181,167,5,227,67,93,45,195,245,205,219,
-  28,221,133,189,107,176,4,37,245,6,148,160,228,121,199,60,79,213,136,70,122,217,155,110,120,211,158,195,112,127,190,163,141,236,173,242,29,183,55,143,
-  130,187,128,250,55,31,238,184,12,234,140,166,146,143,182,70,188,137,177,178,90,62,111,34,200,112,96,157,169,90,211,129,5,149,199,216,36,197,166,202,
-  106,17,61,147,194,175,66,158,247,232,198,180,1,220,202,178,217,153,39,11,210,161,143,70,195,35,53,134,174,131,59,79,110,7,21,61,2,182,185,242,
-  241,85,205,147,86,103,48,67,222,148,186,170,237,54,55,69,175,234,123,95,249,234,56,70,223,211,121,234,137,58,152,214,247,63,8,29,149,9,157,240,
-  92,232,252,28,176,103,110,232,60,156,235,125,4,222,187,240,54,188,30,222,229,225,92,248,78,56,7,248,33,67,151,159,238,187,125,124,71,125,247,219,
-  179,172,122,207,101,111,222,115,41,98,181,30,207,252,90,254,105,102,171,200,182,138,187,14,26,178,146,52,211,106,215,97,38,248,104,146,65,137,65,81,
-  255,74,128,79,140,94,236,90,114,26,15,195,146,178,76,103,162,74,125,247,65,128,50,209,119,25,145,47,31,112,168,194,57,246,121,245,251,46,50,134,
-  20,170,142,14,105,107,2,234,43,93,5,213,49,9,39,0,191,182,147,172,25,230,25,241,36,101,53,37,27,195,90,70,45,172,201,194,25,252,129,241,
-  0,202,210,49,231,81,39,85,144,13,38,149,149,12,254,46,234,198,211,27,103,112,132,212,81,134,218,112,42,212,217,225,13,84,147,42,79,170,227,45,
-  253,126,134,61,194,190,37,246,53,30,192,227,227,44,188,248,208,14,231,78,135,23,241,213,91,192,83,112,16,70,59,9,183,192,6,17,105,27,45,65,
-  164,60,195,236,40,186,95,151,182,25,156,20,75,204,98,164,239,111,15,192,138,36,173,173,161,136,59,68,130,151,35,49,210,125,177,111,31,251,2,31,
-  85,236,47,206,69,38,147,225,198,144,69,22,37,82,75,232,172,46,24,232,77,185,158,55,98,255,64,238,111,252,213,24,25,33,29,239,112,77,163,139,
-  2,218,66,226,19,239,234,154,110,234,137,226,236,65,13,169,234,193,213,17,171,98,83,124,170,229,51,237,117,144,111,138,109,205,41,70,178,42,20,95,
-  23,235,98,11,45,177,173,20,95,215,54,206,155,120,156,141,243,23,46,252,197,255,30,168,218,175,80,252,79,62,139,215,236,236,115,109,159,235,171,241,
-  47,111,252,195,27,40,72,26,144,122,234,27,226,19,196,13,132,225,107,218,51,182,27,69,205,155,0,177,34,54,196,29,45,43,226,166,184,133,184,137,
-  88,65,187,161,125,147,167,8,177,141,84,21,136,143,181,172,137,219,56,245,174,150,249,209,81,252,129,253,140,101,89,89,43,135,96,71,15,32,63,68,
-  72,147,181,146,136,233,179,52,242,145,151,79,34,251,200,107,141,217,76,116,88,255,1,157,83,61,111,19,65,16,221,91,111,236,243,37,182,79,65,28,
-  123,177,99,40,48,138,3,81,8,4,40,114,45,8,183,136,194,142,16,162,67,252,139,17,5,13,5,142,77,72,76,2,138,248,5,124,252,0,95,129,
-  68,225,40,127,128,38,61,20,9,162,55,51,123,187,119,23,199,14,136,125,154,153,55,239,205,236,89,167,243,7,107,246,185,197,158,176,89,54,114,248,
-  168,192,46,143,244,34,53,149,77,233,174,174,222,196,155,104,147,217,147,236,68,0,75,95,100,75,191,185,158,247,243,190,191,32,41,75,12,95,54,90,
-  173,70,179,133,52,143,98,3,5,159,70,234,104,249,211,101,117,108,169,142,51,183,184,62,151,71,191,233,27,238,215,91,45,220,144,114,186,124,181,92,
-  198,29,27,103,235,116,63,101,41,109,185,160,86,141,45,79,187,202,194,155,240,57,243,51,80,84,63,245,69,112,92,59,44,237,93,235,62,128,32,171,
-  169,247,163,246,179,246,210,35,102,187,238,69,215,29,174,65,21,170,38,51,85,230,161,186,239,64,48,184,7,193,151,21,172,206,190,51,112,112,36,96,
-  108,224,208,171,64,2,75,140,225,96,48,92,187,68,194,176,8,165,28,148,134,69,163,65,41,186,17,159,128,215,169,233,115,228,224,46,248,152,134,15,
-  113,98,9,55,86,168,185,155,80,137,186,111,38,199,173,5,216,63,54,75,154,74,84,205,18,37,69,246,234,97,46,92,237,223,198,246,25,73,225,166,
-  5,28,58,150,184,127,157,181,241,131,192,56,180,35,114,52,127,84,65,214,246,132,250,100,224,2,70,21,195,115,225,60,49,204,7,14,251,188,136,249,
-  215,163,3,231,251,39,139,193,173,240,233,241,134,69,5,106,44,42,148,251,187,228,49,108,115,244,18,174,216,97,19,74,105,145,8,50,6,203,106,252,
-  171,113,60,26,87,175,183,162,89,88,134,155,138,193,178,158,153,176,50,121,35,126,240,199,30,126,191,253,27,12,86,127,55,224,14,8,5,14,89,12,
-  83,137,101,117,22,113,111,24,215,60,131,176,16,81,205,104,102,84,11,167,34,68,187,34,102,217,24,252,20,206,242,18,136,20,56,183,240,240,168,68,
-  135,199,199,180,174,251,13,203,212,84,135,247,56,197,201,156,212,113,174,201,201,204,6,223,225,175,248,182,170,219,42,136,237,40,70,104,243,173,20,218,
-  58,182,254,162,39,110,244,148,215,252,157,10,147,59,88,123,41,45,225,61,229,154,95,250,86,225,13,127,175,194,228,110,172,158,228,196,186,58,210,91,
-  61,190,171,177,201,11,133,130,40,136,25,4,254,37,8,21,93,255,21,197,255,156,41,158,225,70,138,136,123,49,86,29,221,76,251,66,35,210,19,30,
-  213,98,122,35,195,5,207,32,44,206,220,63,149,84,75,79,19,81,20,190,115,230,206,116,218,38,45,49,138,165,36,196,133,36,214,98,66,98,19,255,
-  66,41,27,151,110,112,237,63,112,103,110,42,202,75,19,8,184,242,193,128,22,229,33,17,252,1,206,222,4,77,40,42,202,163,62,81,32,209,149,49,
-  186,24,207,185,51,211,206,116,90,208,115,122,94,223,249,206,185,115,211,78,43,202,41,182,165,176,198,2,77,240,22,108,28,105,210,227,161,73,61,60,
-  239,203,91,15,61,145,187,107,160,57,179,110,12,78,35,2,231,221,42,26,143,74,49,140,250,216,131,146,71,149,21,106,212,173,243,249,66,44,234,147,
-  184,79,242,121,195,48,242,142,47,20,98,177,88,1,103,242,114,43,205,185,72,143,220,73,251,12,87,156,233,76,198,169,156,232,85,14,161,158,153,74,
-  165,200,145,5,58,40,23,140,222,120,111,38,147,201,102,179,241,172,57,101,216,221,51,105,49,161,141,205,105,102,87,101,135,155,93,227,115,26,214,246,
-  56,249,145,48,122,61,204,213,91,94,66,203,119,32,111,47,105,162,67,252,228,162,35,144,213,8,51,124,145,39,197,146,178,127,18,7,159,223,163,241,
-  167,67,90,195,220,121,4,191,15,227,137,10,84,203,10,232,129,234,5,4,74,164,238,16,210,47,145,105,233,251,53,7,172,163,234,161,171,16,96,254,
-  138,216,251,145,234,209,98,152,219,119,163,84,238,241,186,167,50,207,82,223,2,145,180,255,68,68,82,92,211,48,147,55,179,23,180,38,181,105,26,254,
-  237,238,34,211,248,255,83,93,250,111,238,238,15,230,13,207,17,235,16,56,100,83,181,127,24,238,249,28,191,173,59,228,158,240,137,91,26,99,72,161,
-  87,67,180,179,110,54,74,175,32,186,138,81,75,35,213,148,187,239,171,56,78,174,131,92,171,11,37,18,204,234,179,142,177,149,24,91,206,8,101,37,
-  42,148,229,12,85,183,175,48,145,19,138,200,177,165,139,94,118,52,148,156,243,18,206,12,38,58,49,77,160,117,98,225,235,224,113,57,38,20,242,140,
-  89,39,68,82,182,172,54,43,205,236,81,197,227,89,173,76,196,24,54,233,74,136,164,228,72,59,19,109,254,41,36,154,233,131,119,80,79,46,64,147,
-  227,254,97,251,178,127,180,146,78,88,125,244,49,35,86,206,202,61,187,100,97,20,103,172,136,0,84,142,170,99,212,15,200,117,153,115,201,111,150,171,
-  168,10,106,163,232,169,226,83,61,160,188,137,213,20,2,218,188,83,207,243,179,171,56,40,174,128,20,197,39,46,18,108,84,145,162,90,84,167,96,21,
-  166,128,252,42,56,121,89,214,101,25,203,80,130,53,52,242,107,210,215,184,181,88,246,205,212,184,78,164,51,138,234,136,58,11,155,48,9,91,48,139,
-  127,23,147,240,17,230,96,15,238,195,62,16,78,24,213,212,167,30,225,38,108,160,109,195,3,216,61,36,119,106,15,11,115,168,218,144,113,91,98,132,
-  238,130,119,243,50,140,168,244,164,243,176,142,246,9,30,227,159,26,229,69,117,8,25,243,200,113,112,202,223,195,23,217,47,161,95,195,88,219,81,146,
-  55,237,87,167,225,29,76,195,7,184,169,206,192,55,88,128,183,104,159,97,17,190,202,124,64,246,9,33,14,161,196,26,168,78,81,53,168,122,83,195,
-  42,49,6,213,171,234,13,215,222,192,107,120,133,231,61,66,45,193,67,192,23,245,31,20,64,149,202,18,206,207,224,47,125,82,77,79,19,81,20,189,
-  239,117,218,78,135,143,14,168,227,155,14,98,226,87,90,171,136,6,112,97,87,198,52,38,44,241,3,88,136,11,23,173,59,195,134,149,94,19,67,76,
-  136,6,100,33,209,141,123,53,66,65,80,80,250,92,185,128,176,240,23,240,79,198,251,222,155,41,3,54,190,51,247,158,123,207,61,119,38,205,235,34,
-  187,197,59,111,2,192,67,232,133,228,225,137,250,92,162,182,226,81,38,86,92,157,189,54,123,218,13,118,187,73,220,32,75,170,94,183,26,141,128,195,
-  65,248,204,31,159,204,149,74,69,63,231,251,130,194,23,245,122,173,78,228,251,19,227,19,165,18,41,126,57,8,232,169,9,65,207,227,66,161,94,163,
-  233,184,42,200,231,79,216,194,22,29,65,71,80,178,109,90,19,180,97,219,66,216,17,244,68,168,129,154,8,209,18,11,189,133,194,217,114,42,232,40,
-  151,203,169,206,52,235,202,229,109,27,95,114,188,143,247,48,15,56,67,9,102,39,23,188,15,151,22,61,172,204,206,44,188,102,170,12,111,96,101,78,
-  139,69,55,239,98,63,246,135,167,84,80,179,251,104,199,217,173,82,56,59,142,178,193,78,149,210,32,69,145,34,175,234,44,142,134,221,152,207,170,166,
-  24,109,187,56,138,21,229,15,143,25,198,233,80,96,30,171,160,40,188,74,214,240,14,245,151,41,166,35,71,187,141,187,202,95,33,225,29,51,43,21,
-  53,136,140,81,172,205,50,245,81,172,52,159,51,192,23,76,102,155,191,25,126,102,225,39,218,193,39,107,27,12,95,241,177,143,13,54,134,235,12,231,
-  120,184,204,228,51,233,75,31,57,190,161,91,180,110,15,206,123,48,239,237,219,96,56,107,216,162,63,8,158,4,236,7,244,168,148,39,246,156,198,69,
-  138,210,158,243,254,41,14,227,208,202,3,149,143,183,210,117,149,44,27,47,208,143,58,111,155,14,112,24,112,8,228,21,213,65,56,207,52,75,15,125,
-  192,62,242,57,128,1,104,134,216,212,198,27,89,15,188,177,167,166,105,255,154,218,206,201,172,60,3,210,1,153,165,37,41,164,24,248,83,27,80,140,
-  53,180,34,100,232,71,31,229,12,241,225,156,66,150,136,148,102,133,76,4,43,17,6,60,129,118,90,18,86,244,37,237,61,253,150,209,131,89,198,56,
-  163,224,42,155,66,159,100,109,142,155,78,103,70,136,211,233,6,55,248,209,66,35,81,29,157,25,172,146,182,196,2,122,86,137,151,88,131,7,193,23,
-  254,147,112,56,27,110,175,168,183,46,83,172,243,38,95,163,88,39,69,213,77,210,140,210,164,249,154,238,98,239,87,190,205,87,40,182,184,228,155,20,
-  91,164,72,194,182,198,166,174,87,116,125,212,57,165,206,119,62,245,141,79,85,115,185,174,95,124,131,247,88,25,203,182,122,8,208,167,225,50,215,68,
-  4,163,246,49,151,37,85,55,214,76,205,254,155,255,117,30,40,173,119,90,166,99,81,21,35,49,183,90,124,184,142,28,116,193,174,186,84,232,166,42,
-  186,224,191,125,82,59,111,19,65,16,222,93,111,236,187,115,162,59,44,48,119,28,138,82,240,144,137,163,16,41,40,69,174,72,26,203,14,5,82,132,
-  132,157,2,168,80,40,168,19,9,9,141,40,82,231,129,4,2,33,229,47,240,168,80,32,39,66,200,195,81,126,67,122,74,104,160,57,102,118,125,15,
-  91,118,118,60,243,125,243,205,99,125,246,125,225,175,56,123,204,74,172,207,17,125,180,107,125,52,217,221,156,239,174,58,9,43,159,179,89,237,48,6,
-  53,164,41,240,204,58,199,245,154,75,166,103,154,158,103,184,38,130,34,156,115,214,104,180,90,245,70,179,69,37,148,60,62,63,55,79,101,101,102,209,
-  71,83,161,222,52,92,67,133,133,37,235,138,213,104,213,155,38,237,170,235,20,183,208,6,179,129,13,46,43,250,190,95,172,224,62,195,117,61,79,99,
-  133,81,116,25,53,24,113,131,171,235,8,21,151,170,186,128,121,37,55,238,231,252,241,145,97,27,108,124,130,181,9,8,54,22,183,171,103,246,118,117,
-  107,17,130,191,179,16,252,155,253,245,158,159,217,16,104,105,45,216,40,35,43,59,120,38,209,163,22,140,146,69,43,24,3,98,142,237,156,204,64,208,
-  174,65,240,105,74,227,73,173,109,97,67,16,225,62,84,94,242,152,186,99,26,157,14,78,142,197,250,205,177,168,138,93,11,152,221,45,196,178,147,185,
-  16,47,162,27,117,33,186,135,190,2,171,200,241,58,22,221,7,27,38,192,142,158,193,42,201,113,14,181,200,165,152,52,159,179,128,196,183,60,153,199,
-  20,60,156,78,102,213,243,40,246,249,53,255,141,75,218,197,104,133,69,23,112,167,29,110,112,120,218,158,133,42,8,216,228,178,126,155,173,211,187,134,
-  225,204,96,41,47,96,88,47,203,206,59,9,151,41,140,82,192,55,137,133,151,216,169,197,62,222,82,177,114,106,189,123,193,224,14,131,233,15,15,53,
-  94,236,130,25,13,18,95,89,184,193,240,207,132,235,70,162,49,34,24,166,89,56,169,181,104,157,107,18,150,177,25,44,170,94,85,99,138,250,224,37,
-  173,131,71,210,9,26,72,250,150,53,110,63,153,99,161,185,187,28,22,224,1,118,88,127,26,39,83,225,115,144,202,242,248,195,144,235,140,184,206,180,
-  46,149,139,62,92,64,14,141,163,165,168,121,46,81,180,229,51,38,251,120,108,162,199,6,87,82,147,157,106,250,44,5,193,233,8,58,60,57,34,57,
-  217,212,113,242,66,12,13,237,136,61,177,35,40,238,137,157,142,247,42,189,90,55,190,225,63,133,255,61,5,159,152,118,204,233,243,85,252,16,228,155,
-  252,60,150,42,221,85,66,202,52,82,53,254,158,187,226,64,121,137,194,1,74,187,40,30,36,114,156,151,74,241,192,55,177,175,124,139,135,226,72,144,
-  31,171,120,164,212,125,17,171,58,59,198,190,126,19,143,14,197,161,120,68,103,164,54,82,148,69,57,140,198,28,238,48,101,49,102,179,110,45,91,205,
-  78,241,65,83,178,239,180,100,189,55,202,78,148,153,9,153,88,102,54,39,180,9,193,44,142,248,31,141,83,189,79,20,65,20,159,121,44,199,236,17,
-  189,133,232,185,27,148,16,35,134,51,26,36,129,88,120,5,215,152,93,108,32,177,0,10,185,74,237,248,15,204,84,218,34,104,98,98,67,99,227,71,
-  161,82,27,226,129,200,221,129,64,101,73,111,212,8,86,54,235,123,51,115,123,115,151,91,226,251,221,251,250,189,143,153,77,230,170,252,41,103,101,214,
-  207,82,4,58,178,151,82,186,157,246,153,76,123,135,103,197,249,19,143,209,187,68,90,143,157,73,110,182,249,193,236,188,203,93,206,93,193,18,223,231,
-  186,125,125,174,240,162,168,84,10,163,201,18,209,140,187,209,204,76,24,77,207,184,13,9,220,160,151,100,64,219,48,20,66,204,146,157,157,154,202,102,
-  179,243,81,20,134,174,43,220,185,48,33,80,104,50,154,155,195,107,10,79,15,22,10,66,48,97,108,16,8,225,249,24,97,25,247,9,191,209,227,251,
-  74,131,192,247,125,97,85,48,47,228,80,232,179,30,229,100,241,247,240,97,110,245,234,97,204,143,247,65,22,227,155,178,248,189,133,201,200,53,254,164,
-  202,145,120,76,230,246,241,51,64,134,121,158,55,138,138,253,131,114,208,216,11,222,180,183,136,90,15,100,177,118,75,22,63,140,105,95,207,226,68,237,
-  35,71,27,255,226,250,16,70,212,95,43,17,67,42,42,15,173,242,248,53,176,242,162,201,197,80,15,50,223,232,110,167,101,174,124,63,41,208,21,150,
-  120,188,13,201,217,12,105,90,21,111,89,123,229,8,198,119,100,78,94,147,185,120,172,25,75,186,20,139,235,28,195,151,100,70,154,51,39,45,42,198,
-  23,181,151,65,99,1,214,138,246,120,203,71,174,189,129,227,87,120,251,90,175,140,121,92,138,223,82,51,200,101,238,132,215,217,18,189,41,52,135,162,
-  25,246,232,144,172,99,222,179,60,135,58,136,154,55,196,250,89,182,155,101,239,175,40,91,32,251,226,33,147,19,76,142,179,119,119,77,112,198,242,232,
-  110,152,212,193,167,34,47,51,252,224,97,140,154,44,29,51,193,40,198,245,163,122,38,94,226,166,190,158,103,50,160,150,243,198,15,208,134,108,163,87,
-  181,164,12,233,145,100,32,233,143,31,152,96,245,222,36,91,119,255,228,229,184,228,168,142,2,200,140,210,246,56,147,100,25,149,81,21,172,200,102,187,
-  16,28,209,201,55,192,45,100,90,224,164,104,19,208,130,244,138,141,198,22,140,128,43,1,37,220,18,176,164,201,226,115,247,0,186,187,43,80,129,159,
-  80,81,56,66,173,43,28,161,86,44,212,13,62,195,115,254,9,6,140,59,64,87,211,25,233,129,102,241,135,228,6,44,115,210,29,212,101,254,195,68,
-  54,187,97,42,218,239,116,236,104,239,209,219,232,62,91,208,143,191,61,101,43,38,83,30,169,254,58,236,81,70,125,155,176,194,87,248,46,218,109,168,
-  2,233,190,241,155,134,35,79,92,21,118,85,47,229,164,237,51,11,95,96,225,43,156,66,201,59,26,248,231,249,127,56,9,210,120,187,158,68,93,160,
-  241,15,125,84,65,111,27,69,20,126,51,59,94,207,110,108,239,198,2,215,142,67,186,137,72,101,151,0,5,165,77,212,58,32,113,64,94,7,85,21,
-  244,96,56,180,32,149,42,230,15,148,83,245,2,106,65,2,33,75,145,72,165,94,202,47,64,20,206,116,207,109,212,43,87,255,129,164,105,146,214,109,
-  72,25,222,204,122,55,54,165,125,223,204,123,223,251,230,189,217,221,25,203,17,123,79,228,108,9,176,8,218,62,167,89,132,33,227,48,106,182,228,188,
-  8,207,155,24,170,181,135,218,11,3,82,122,201,158,166,89,247,241,255,47,26,145,143,9,126,142,148,82,129,202,57,183,245,190,34,215,108,183,203,211,
-  178,92,153,104,151,39,38,156,186,83,151,142,67,195,145,50,12,59,157,78,51,92,49,121,216,12,91,112,238,3,39,159,119,98,27,243,198,200,180,107,
-  74,217,92,145,242,171,86,203,117,195,206,10,85,55,137,181,90,97,135,202,194,112,153,78,72,214,164,212,229,99,245,186,227,75,41,161,46,101,157,166,
-  166,198,91,218,29,22,149,203,178,94,214,161,102,86,223,48,242,152,108,47,251,80,169,120,25,230,72,33,168,21,191,227,120,147,225,89,60,187,40,179,
-  16,93,140,28,244,212,21,236,0,13,181,114,221,195,198,195,217,158,183,59,107,255,84,90,43,145,195,198,218,199,216,0,223,247,225,109,223,87,103,112,
-  74,189,166,167,239,249,53,92,103,223,51,100,27,149,189,147,119,164,90,216,112,239,185,27,46,54,238,125,136,13,42,92,84,11,160,147,31,79,255,112,
-  154,8,125,82,16,168,51,112,226,104,89,205,129,12,178,106,78,21,208,203,250,164,215,146,157,253,0,240,51,92,194,79,213,3,166,55,1,172,225,155,
-  84,142,13,188,68,21,53,252,149,169,223,25,49,143,228,25,85,166,72,15,84,231,117,78,243,18,46,169,175,147,134,95,216,203,182,250,139,197,186,222,
-  164,98,182,104,140,182,167,148,246,89,103,223,176,171,184,195,238,180,207,247,244,179,63,250,68,31,35,141,136,225,31,204,156,39,68,75,209,23,209,114,
-  20,10,104,34,143,50,145,3,248,45,83,5,129,227,248,37,142,159,128,110,137,70,79,118,75,228,179,38,49,63,68,186,18,192,35,128,83,128,37,240,
-  33,215,155,46,22,163,87,145,253,41,187,236,246,241,251,238,237,58,220,119,225,230,213,174,181,253,14,206,195,111,23,144,225,60,145,87,240,100,226,223,
-  167,91,165,32,64,226,49,122,185,89,185,96,214,114,130,100,32,2,11,81,16,209,93,103,77,153,234,50,156,194,35,164,71,89,170,246,34,30,113,204,
-  208,75,76,98,5,176,10,228,1,116,195,160,30,122,211,47,110,143,198,181,76,157,113,227,80,155,186,146,210,91,51,250,163,112,46,192,119,111,205,239,
-  181,162,240,45,58,171,37,106,93,101,116,100,139,116,64,54,10,3,110,24,55,51,230,246,16,79,188,69,160,159,157,241,135,60,1,75,97,15,32,82,
-  47,6,60,1,31,193,139,244,195,117,30,191,231,209,117,118,153,254,13,88,108,156,31,242,36,229,195,42,197,153,153,105,50,63,115,202,173,246,245,130,
-  113,153,85,107,213,202,108,81,18,207,157,20,125,51,183,140,222,79,217,206,127,208,231,55,216,13,86,173,238,243,109,190,79,124,155,87,181,176,111,146,
-  106,117,155,228,234,38,127,72,248,135,16,199,205,1,219,76,181,56,75,170,54,135,84,157,247,211,39,63,162,248,132,160,120,241,145,185,131,45,146,158,
-  208,66,44,234,216,167,248,119,218,208,231,207,248,53,235,154,245,128,226,46,225,49,63,224,79,9,7,132,199,124,141,105,253,41,233,90,217,37,254,108,
-  160,233,218,3,126,55,173,191,203,127,102,26,123,252,98,62,99,95,183,78,229,68,94,100,4,188,174,125,65,112,202,242,228,97,114,128,0,38,45,17,
-  199,1,4,8,82,98,140,102,9,2,8,92,46,132,197,45,254,47,53,143,189,10,194,48,16,199,211,187,82,162,17,92,11,117,14,226,67,116,114,117,
-  168,160,165,224,42,14,93,5,55,185,217,138,130,245,99,180,143,210,55,73,30,193,55,208,75,90,239,248,253,63,142,44,153,76,197,39,0,33,230,76,
-  40,34,1,32,56,49,51,23,229,64,74,57,148,126,148,146,49,91,162,148,138,185,168,102,247,221,210,150,246,166,180,11,90,115,26,155,146,142,61,220,
-  205,198,37,155,154,212,123,241,94,53,75,123,48,101,91,80,66,25,101,86,27,221,228,77,46,44,155,213,238,224,106,215,140,182,186,205,186,107,247,152,
-  66,130,126,35,94,175,129,27,0,8,130,26,43,172,241,175,53,62,241,218,183,10,31,248,194,139,231,134,39,207,29,207,140,83,254,243,8,224,7,133,
-  84,207,139,20,87,16,126,85,245,102,166,103,186,217,217,52,178,244,204,172,235,42,46,76,86,205,33,96,178,144,144,221,147,17,22,68,16,180,119,93,
-  140,4,34,241,230,33,135,64,136,148,9,226,33,135,40,27,226,70,147,56,106,252,185,171,30,188,120,235,151,28,87,20,205,73,241,144,37,249,3,226,
-  33,167,160,188,84,117,207,236,238,160,144,170,87,245,170,190,250,234,245,116,117,247,204,67,219,24,211,52,24,69,198,76,152,87,36,21,11,196,134,186,
-  57,118,247,8,181,107,13,107,247,215,173,186,242,42,27,251,122,53,26,55,136,102,79,23,42,143,152,50,98,193,40,155,230,64,35,105,36,83,122,241,
-  79,211,68,36,8,18,147,4,213,134,74,181,89,171,134,173,48,73,154,205,84,240,217,90,173,217,14,130,160,38,178,119,138,40,85,48,173,213,218,237,
-  241,241,36,48,73,139,194,214,155,141,193,160,177,45,76,76,144,144,33,61,173,21,42,154,40,40,189,73,168,121,24,166,219,228,232,205,131,249,101,26,
-  166,4,213,32,178,118,120,216,150,118,203,0,248,25,26,255,158,25,228,33,254,13,100,153,195,31,241,239,192,159,243,14,158,21,171,251,151,164,27,31,
-  229,17,241,59,248,125,158,22,63,173,240,21,112,143,192,248,132,159,160,180,248,199,96,100,187,7,254,44,240,83,244,47,96,212,57,200,164,54,199,191,
-  230,136,132,79,113,82,16,247,4,197,155,164,243,177,185,39,7,244,248,198,189,200,249,57,91,121,10,247,138,188,43,123,0,110,167,28,118,31,120,1,
-  252,159,40,63,227,95,240,7,179,157,252,23,250,69,228,239,128,231,178,51,208,249,22,46,164,255,211,121,13,215,250,220,33,173,249,191,129,151,176,71,
-  124,119,37,69,247,141,30,37,43,59,228,78,65,118,18,254,121,40,79,81,70,101,248,46,176,131,37,224,227,162,231,200,223,69,127,152,159,3,159,64,
-  61,229,20,116,103,121,60,3,30,227,125,60,182,149,223,118,169,75,173,217,205,197,107,193,117,117,95,67,241,206,248,1,227,70,248,11,255,37,127,230,
-  170,50,227,79,184,30,241,136,225,217,15,101,232,17,83,86,209,209,75,174,9,71,113,188,18,251,1,27,40,101,58,240,27,57,18,66,93,30,88,228,
-  70,243,54,127,26,164,225,64,209,232,222,48,238,136,71,191,223,141,186,138,27,146,234,140,251,224,143,225,215,83,215,51,165,154,29,83,88,130,206,150,
-  206,112,236,42,43,155,59,19,217,144,27,115,229,149,138,80,42,124,84,189,155,112,179,111,185,25,55,51,201,49,31,227,250,36,127,5,12,197,61,207,
-  176,125,69,177,171,229,117,186,30,195,215,160,235,217,182,107,125,186,233,44,28,97,68,4,36,92,147,213,24,242,165,14,186,5,130,210,59,34,242,117,
-  45,210,34,93,16,197,5,194,228,103,42,22,74,246,19,173,165,11,84,21,57,65,133,94,165,115,116,155,46,202,126,91,162,139,180,64,119,114,68,179,
-  59,146,221,20,253,129,110,209,21,209,91,18,105,172,251,213,156,93,248,248,26,197,151,40,142,139,236,58,157,167,121,184,76,55,232,36,253,72,191,136,
-  221,144,92,247,121,184,46,182,140,231,233,50,45,163,162,90,95,198,101,252,30,122,186,72,75,249,77,116,196,74,229,86,171,117,154,206,144,217,90,104,
-  205,170,149,45,88,43,6,182,36,134,150,196,147,173,90,51,183,193,134,162,27,108,143,175,156,94,140,26,171,118,115,178,90,151,104,21,233,161,216,135,
-  90,148,127,60,139,125,44,51,101,182,255,7,149,84,77,72,85,65,20,62,103,206,248,222,189,175,87,239,38,17,215,247,74,163,172,252,201,32,200,16,
-  18,132,168,20,205,10,107,33,46,90,43,21,180,171,229,177,54,106,46,204,204,118,249,42,211,202,210,130,104,23,206,174,160,77,80,80,187,6,218,181,
-  140,150,193,237,204,157,231,79,80,72,231,187,243,205,153,239,156,51,119,102,222,188,59,133,251,20,0,100,64,195,246,83,240,23,171,85,109,18,5,37,
-  208,110,156,247,29,184,42,104,168,184,190,247,154,152,100,4,127,42,190,223,38,142,76,148,145,209,133,84,112,158,36,231,182,184,148,192,39,70,42,175,
-  131,154,184,38,142,131,48,132,216,89,144,247,86,83,177,188,14,195,198,160,57,46,54,54,6,65,144,203,197,65,127,16,15,228,138,177,12,154,250,197,
-  239,207,53,52,197,16,151,168,167,228,43,154,47,198,145,204,19,151,54,173,83,226,184,84,42,13,118,117,119,13,118,13,158,237,239,59,230,3,65,250,
-  202,56,127,162,10,177,176,67,235,42,121,177,91,154,125,67,118,28,33,57,10,118,137,120,200,126,35,110,183,211,100,137,175,113,11,15,112,59,247,112,
-  109,185,153,35,19,153,146,227,175,11,154,11,34,215,74,208,37,180,72,137,157,209,229,173,80,126,71,73,152,132,150,192,254,34,206,217,151,36,181,237,
-  201,101,153,240,181,184,221,60,174,146,183,106,151,185,169,150,223,42,139,124,135,160,3,186,193,203,96,68,155,166,14,59,134,94,224,147,203,163,248,5,
-  93,234,38,224,81,76,70,16,184,119,185,247,11,218,41,55,224,222,255,72,149,101,184,238,59,54,192,15,156,84,251,127,224,152,186,174,234,218,62,49,
-  130,219,59,148,71,200,206,203,214,101,59,190,251,121,93,43,158,164,143,19,36,108,134,181,61,151,156,1,224,7,202,126,198,228,180,223,179,63,167,195,
-  203,200,123,249,28,239,53,89,120,175,229,136,250,88,173,191,106,60,137,21,239,85,209,212,155,90,190,98,178,229,166,153,38,19,242,13,116,135,117,72,
-  206,179,144,236,228,194,135,3,92,200,187,131,237,228,33,46,152,172,211,229,132,11,58,16,177,39,72,118,138,116,205,236,114,25,201,4,242,16,248,36,
-  240,121,201,22,240,177,141,51,146,171,142,117,16,201,157,212,90,174,170,205,26,1,15,57,54,109,70,214,111,34,128,241,129,3,112,80,184,131,207,203,
-  54,218,59,248,22,166,91,232,51,231,89,255,3,74,144,17,120,206,84,252,63,177,145,190,138,186,186,187,120,23,57,203,90,41,68,181,102,126,144,50,
-  10,239,246,182,39,27,85,85,101,142,180,182,182,30,201,229,212,2,45,208,140,32,20,139,239,145,127,42,245,43,67,247,72,184,120,31,139,195,52,76,
-  69,113,86,208,217,57,71,139,116,159,60,47,9,22,5,75,244,84,240,156,30,9,158,167,152,91,205,169,174,158,151,246,128,170,95,164,226,99,186,141,
-  15,233,9,77,225,75,154,21,158,194,39,41,207,166,202,90,116,150,202,184,30,179,184,64,207,210,181,151,165,45,210,67,92,195,201,205,242,223,46,133,
-  80,15,245,40,128,124,70,163,252,128,74,147,134,8,53,136,143,105,3,105,168,107,4,25,247,97,210,46,63,109,151,148,94,169,70,87,181,170,11,82,
-  22,63,213,83,111,131,104,202,65,138,72,144,119,51,87,230,174,119,159,84,89,135,231,227,191,1,125,84,77,104,92,85,20,62,231,206,203,204,153,255,
-  135,96,230,205,116,72,218,56,150,55,77,21,141,162,65,139,40,130,25,227,44,68,138,12,93,148,8,26,39,166,27,93,168,184,58,234,66,144,44,220,
-  248,179,168,248,130,245,175,173,10,214,85,23,201,109,10,213,133,16,145,88,68,4,159,139,34,133,1,55,69,151,207,115,239,123,243,151,142,126,223,220,
-  115,207,223,61,231,220,203,240,46,227,97,80,105,0,7,0,212,10,196,152,49,198,67,176,15,106,68,142,195,185,201,83,24,209,95,155,80,101,130,161,
-  246,187,134,14,101,167,147,41,79,36,173,172,204,185,211,201,220,64,224,121,94,54,151,207,103,11,133,122,161,94,175,23,4,37,167,218,172,86,61,146,
-  117,96,254,128,160,86,91,107,54,215,231,231,171,35,104,54,179,217,108,62,159,39,143,168,88,204,213,114,181,178,32,39,104,146,39,62,41,43,89,157,
-  86,171,67,94,199,247,100,23,24,217,215,173,221,241,169,187,188,188,44,10,249,190,111,125,36,218,11,157,174,36,250,173,66,169,244,100,167,5,46,20,
-  203,101,172,122,67,20,202,50,39,17,229,32,204,243,105,21,190,141,161,207,223,34,175,245,246,84,116,21,249,52,70,235,186,205,135,180,171,159,215,179,
-  186,206,119,240,49,125,103,239,57,254,11,163,79,145,79,245,46,98,112,43,255,163,162,191,21,232,5,125,81,69,61,5,81,54,202,38,62,0,253,27,
-  70,239,226,28,191,103,54,159,215,162,110,120,9,57,39,25,19,215,141,123,182,119,241,151,85,62,245,254,46,126,179,26,60,168,47,96,116,148,79,252,
-  126,29,33,56,169,187,209,209,232,2,254,32,198,181,46,252,186,40,21,121,11,163,238,222,226,70,134,203,252,9,154,46,59,230,199,31,170,104,153,203,
-  209,25,228,153,5,112,43,113,123,226,183,236,230,86,40,115,4,220,12,140,216,164,62,192,87,102,191,199,239,144,127,50,78,240,23,43,57,107,254,33,
-  29,204,220,115,179,38,35,142,38,215,177,9,96,51,128,23,206,239,226,181,110,237,150,207,49,186,132,209,90,248,5,238,221,199,87,240,207,110,248,51,
-  114,57,60,196,175,242,49,243,126,48,84,111,188,153,210,111,164,122,175,171,115,63,226,149,213,177,103,229,167,64,223,165,51,0,59,213,171,143,232,39,
-  206,78,109,60,203,253,191,230,206,60,23,249,233,235,233,157,117,73,144,139,151,117,126,37,84,92,14,10,31,181,172,109,125,30,147,195,207,48,221,111,
-  68,152,2,201,221,247,11,31,208,105,216,78,139,224,187,87,204,153,240,8,108,63,110,181,160,1,38,54,195,20,101,152,116,230,157,219,165,175,9,64,
-  56,13,76,224,16,16,63,202,68,44,97,209,137,140,199,31,88,228,136,4,151,239,101,114,151,136,10,177,202,211,124,216,228,81,98,208,146,3,174,141,
-  28,228,151,204,32,142,3,140,92,210,20,190,104,76,62,9,218,94,90,174,227,218,109,163,189,209,14,94,150,209,134,111,192,78,194,244,127,80,141,49,
-  253,63,107,72,20,102,18,166,7,29,226,152,209,50,234,38,96,2,165,82,169,190,166,212,92,130,219,4,153,41,139,180,133,155,110,52,26,42,155,160,
-  95,196,232,53,193,38,110,162,145,181,90,223,218,30,97,109,12,231,113,200,205,132,231,240,235,49,125,212,254,12,75,149,37,131,82,165,84,9,112,11,
-  205,138,25,88,246,247,96,16,9,6,107,18,183,38,156,217,159,177,53,161,114,128,95,89,158,17,126,105,169,62,198,73,124,172,120,22,13,205,235,192,
-  65,249,184,59,49,209,129,182,89,208,78,89,105,136,3,13,156,148,100,76,9,99,41,231,38,83,9,27,224,155,179,82,167,209,175,46,95,125,138,137,
-  4,99,28,179,31,6,79,206,152,206,198,50,125,227,120,163,31,65,74,34,52,200,58,46,177,227,201,13,108,39,53,162,255,11,149,84,207,79,19,81,
-  16,158,183,93,218,215,186,237,54,98,236,182,33,80,180,109,182,2,73,37,28,208,144,208,200,129,21,19,77,60,149,77,212,131,137,22,140,137,7,8,
-  200,105,18,141,94,52,225,34,18,47,20,127,196,68,81,18,229,12,123,145,139,222,36,209,155,239,104,188,242,7,172,243,118,183,180,165,212,196,239,235,
-  124,59,51,111,230,253,234,182,155,172,160,132,1,194,38,0,140,146,65,111,25,64,145,78,160,157,160,182,101,180,186,179,116,120,68,233,28,43,45,161,
-  226,7,180,33,185,41,176,15,86,241,158,37,233,112,206,13,35,90,174,84,42,61,4,77,51,50,153,153,98,241,206,192,64,58,93,44,166,219,16,37,
-  28,35,112,131,199,9,177,76,76,39,196,8,69,74,25,81,42,161,169,42,150,85,225,166,225,61,3,88,21,138,131,176,106,85,170,38,183,102,167,108,
-  110,154,213,106,133,200,77,94,157,53,77,75,211,18,9,203,130,114,60,174,235,44,109,72,152,158,26,92,35,112,113,89,236,50,17,195,33,220,98,206,
-  23,150,225,134,133,33,138,134,240,49,195,33,241,146,137,7,204,157,70,251,130,148,146,251,140,225,10,19,61,24,195,31,12,99,238,31,41,209,127,219,
-  215,110,103,212,233,255,57,247,252,27,91,61,247,59,251,105,94,92,116,7,29,123,237,38,160,13,107,25,242,183,216,254,83,6,47,86,24,188,217,101,
-  104,187,103,105,141,189,185,253,188,59,136,54,234,110,21,117,188,132,189,87,229,21,39,83,238,52,245,241,8,79,166,120,100,202,75,69,168,98,198,79,
-  240,227,139,55,82,37,185,85,40,77,166,196,56,208,76,112,38,181,184,80,242,218,160,36,198,101,6,79,160,253,61,75,11,198,22,177,111,120,207,160,
-  53,139,171,116,174,126,212,69,8,14,78,239,126,102,244,20,141,235,112,186,55,206,239,245,237,206,211,181,224,132,115,205,137,160,14,79,150,153,252,242,
-  81,33,31,192,153,198,235,24,199,130,138,247,176,112,69,10,77,72,233,72,199,143,24,46,59,57,112,115,82,69,25,245,90,130,28,204,195,175,91,210,
-  39,135,194,157,49,44,184,121,44,56,145,229,17,186,12,29,196,73,192,130,247,174,113,224,152,199,94,244,93,206,235,185,17,76,249,9,174,146,38,113,
-  2,11,217,5,131,59,11,178,54,171,114,72,38,253,190,236,109,231,17,163,65,92,194,252,78,206,201,169,28,153,38,238,251,1,222,5,199,63,24,144,
-  58,125,82,65,60,100,114,179,116,84,149,78,221,204,240,127,88,43,89,192,72,192,48,205,237,179,94,65,190,82,7,243,161,40,161,80,221,59,37,113,
-  186,43,64,56,64,142,160,40,242,55,86,111,141,174,51,201,157,38,102,142,196,6,107,165,223,247,158,109,122,118,84,180,206,222,178,201,201,68,74,178,
-  198,124,110,123,214,208,90,160,205,220,110,169,170,29,193,198,72,123,205,246,33,251,24,240,53,241,67,64,229,21,235,196,119,1,163,244,247,168,1,135,
-  44,153,234,83,245,76,85,187,136,190,202,154,176,18,86,188,218,78,28,107,144,102,144,70,12,209,91,232,147,121,132,38,13,50,73,104,201,83,173,225,
-  89,206,203,140,177,160,63,200,246,52,106,235,251,109,231,95,29,202,65,142,1,65,24,5,224,87,127,255,244,175,85,40,54,58,34,33,147,137,176,97,
-  51,17,11,193,74,106,229,14,118,141,72,172,173,234,0,179,112,4,50,11,183,104,29,103,112,128,58,128,67,168,145,47,239,109,222,235,244,39,83,73,
-  231,132,50,52,112,34,2,24,128,158,211,55,79,196,234,165,78,183,123,73,134,146,218,204,102,187,204,218,93,152,7,34,190,75,46,106,191,180,111,39,
-  230,82,115,131,103,245,55,118,245,102,51,129,73,0,227,217,47,252,218,71,62,122,105,119,100,215,152,61,86,238,192,112,7,20,241,121,131,31,214,166,
-  206,61,51,46,90,69,20,52,138,81,56,80,80,38,165,212,87,76,68,149,171,186,7,215,224,166,106,173,92,93,130,92,229,159,254,207,95,80,1,151,
-  62,192,204,16,37,16,18,240,27,
-};
-static const LChunk level10_chunks[57] = {
-  {0,0,4560,71.6f,996.6f,-57.6f,420.0f,1024,360,271,84,0},
-  {1024,360,30240,906.6f,1553.3f,-55.0f,496.5f,1150,360,275,84,0},
-  {2174,720,47280,1412.5f,2028.5f,-41.5f,478.0f,889,360,208,72,0},
-  {3063,1080,63360,1931.0f,2451.0f,-45.0f,598.0f,936,360,243,84,0},
-  {3999,1440,76800,2355.0f,2875.0f,-52.0f,598.0f,836,360,227,72,0},
-  {4835,1800,89760,2760.0f,3411.0f,-56.0f,598.0f,869,360,194,90,0},
-  {5704,2160,106320,3241.1f,3900.0f,-55.7f,480.0f,901,360,211,84,0},
-  {6605,2520,123360,3810.0f,4346.0f,-55.7f,480.0f,820,360,204,80,0},
-  {7425,2880,137520,4235.0f,4800.0f,-41.5f,570.0f,918,360,256,84,0},
-  {8343,3240,152160,4710.0f,5310.0f,-30.0f,460.0f,937,360,288,84,0},
-  {9280,3600,168480,5220.0f,5850.0f,0.0f,460.0f,904,360,243,45,0},
-  {10184,3960,185760,5743.0f,6406.0f,-965.2f,1625.2f,913,360,253,84,0},
-  {11097,4320,203760,6315.0f,7013.5f,-1205.2f,1625.2f,480,360,113,70,0},
-  {11577,4680,222960,6923.5f,7650.0f,-1205.2f,1625.2f,858,360,167,84,0},
-  {12435,5040,243360,7560.0f,8392.0f,-293.0f,609.0f,1092,360,208,96,0},
-  {13527,5400,267360,8310.0f,9330.0f,-150.0f,609.0f,985,360,185,96,0},
-  {14512,5760,297120,9240.0f,9870.0f,-690.0f,790.5f,615,226,112,84,0},
-  {15127,5986,297120,9240.0f,9870.0f,-240.0f,1150.5f,386,134,62,90,0},
-  {15513,6120,314400,9780.0f,10359.0f,-679.5f,815.5f,459,206,75,90,0},
-  {15972,6326,314400,9785.5f,10340.0f,-229.5f,1120.5f,255,154,36,90,0},
-  {16227,6480,329280,10230.0f,10950.0f,-660.0f,1060.5f,866,360,222,110,0},
-  {17093,6840,349920,10890.0f,11741.0f,-120.0f,540.0f,716,360,179,110,0},
-  {17809,7200,373920,11637.0f,12540.0f,-120.0f,546.0f,525,360,101,110,0},
-  {18334,7560,399840,12450.0f,13336.0f,-30.0f,540.0f,765,360,167,84,0},
-  {19099,7920,425520,13256.0f,14732.0f,131.0f,461.5f,795,360,185,84,0},
-  {19894,8280,469440,14632.0f,15510.0f,0.0f,540.0f,854,360,207,84,0},
-  {20748,8640,494880,15420.0f,15960.0f,-30.0f,510.0f,802,360,170,80,0},
-  {21550,9000,509280,15851.0f,16680.0f,-49.0f,630.0f,850,360,182,84,0},
-  {22400,9360,532320,16590.0f,17340.0f,-41.0f,450.0f,709,360,185,74,0},
-  {23109,9720,553440,17250.0f,18000.0f,-38.0f,540.0f,882,360,201,84,0},
-  {23991,10080,729600,17708.0f,29316.0f,-32.0f,332.6f,315,360,66,5124,0},
-  {24306,10440,574560,17910.0f,18625.0f,-38.0f,570.0f,731,360,158,80,0},
-  {25037,10800,594480,18535.0f,19380.0f,-51.0f,540.0f,896,360,183,80,0},
-  {25933,11160,774720,19118.0f,29766.0f,-36.6f,332.6f,207,284,48,5124,0},
-  {26140,11444,618720,19290.0f,20240.0f,-90.0f,510.0f,822,360,177,80,0},
-  {26962,11804,646080,20121.0f,21074.9f,-49.0f,513.0f,692,360,131,84,0},
-  {27654,12164,672240,20951.4f,22000.0f,-49.0f,525.0f,858,360,137,84,0},
-  {28512,12524,702480,21910.0f,22932.0f,-51.0f,479.0f,1014,360,168,84,0},
-  {29526,12884,731520,22813.0f,24817.9f,-48.8f,465.0f,743,360,133,84,0},
-  {30269,13244,792480,24685.0f,26070.0f,-72.0f,368.0f,963,360,267,84,0},
-  {31232,13604,832800,25985.9f,26550.0f,-72.0f,372.0f,766,360,185,69,0},
-  {31998,13964,848160,26460.0f,27180.0f,-60.0f,360.0f,899,360,225,70,0},
-  {32897,14324,868320,27083.0f,27755.0f,-73.5f,360.0f,1145,360,275,78,0},
-  {34042,14684,886560,27655.0f,28320.0f,-50.0f,350.0f,930,360,239,50,0},
-  {34972,15044,904800,28223.0f,28800.0f,-253.2f,459.8f,1011,360,250,84,0},
-  {35983,15404,920160,28710.0f,29220.0f,-149.2f,557.0f,629,360,162,45,0},
-  {36612,15764,930000,28899.8f,31972.0f,-149.2f,455.0f,780,268,224,795,0},
-  {37392,16032,933600,29130.0f,29797.0f,-149.2f,455.0f,691,360,147,84,0},
-  {38083,16392,951840,29700.0f,30210.0f,-254.2f,460.5f,704,360,186,70,0},
-  {38787,16752,965280,30120.0f,30930.0f,-254.2f,460.5f,695,360,202,45,0},
-  {39482,17112,988320,30840.0f,31590.0f,-53.0f,455.0f,896,360,192,90,0},
-  {40378,17472,1006800,31120.0f,32059.5f,117.0f,297.0f,181,33,28,345,0},
-  {40559,17505,1009440,31467.0f,32712.0f,-1008.0f,1316.0f,813,360,147,110,0},
-  {41372,17865,1043760,32541.0f,33800.0f,-1008.0f,1316.0f,774,360,148,110,0},
-  {42146,18225,1080240,33715.0f,34600.5f,-46.0f,450.0f,888,360,195,74,0},
-  {43034,18585,1106160,34523.5f,35174.0f,-46.0f,540.0f,742,360,175,74,0},
-  {43776,18945,1124400,35093.5f,35340.0f,-38.0f,270.0f,193,61,28,50,0},
-};
-static const LChan level10_chans[80] = {
-  {{0,22,36},0,255,65535,0,64,64},
-  {{0,29,33},0,255,65535,0,64,64},
-  {{0,51,59},0,255,65535,0,64,64},
-  {{0,255,255},2,255,65535,0,64,64},
-  {{0,49,75},0,255,65535,0,64,64},
-  {{0,0,255},3,255,65535,0,64,64},
-  {{125,0,255},5,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{0,18,28},0,255,65535,0,64,64},
-  {{0,0,0},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,116,0},2,255,65535,0,64,64},
-  {{0,22,35},0,255,65535,0,64,64},
-  {{185,0,255},4,255,65535,0,64,64},
-  {{255,255,255},4,255,65535,0,64,64},
-  {{185,0,255},5,26,65535,0,64,64},
-  {{255,88,0},1,0,65535,0,64,64},
-  {{146,0,255},0,255,65535,0,64,64},
-  {{0,0,0},0,255,65535,0,64,64},
-  {{255,0,188},1,255,65535,0,64,64},
-  {{193,0,255},0,255,65535,0,64,64},
-  {{193,0,255},0,255,65535,0,64,64},
-  {{0,255,27},1,255,65535,0,64,64},
-  {{255,107,0},1,255,65535,0,64,64},
-  {{0,0,0},0,0,65535,0,64,64},
-  {{0,0,0},0,0,65535,0,64,64},
-  {{255,88,0},1,255,65535,0,64,64},
-  {{193,0,255},0,255,65535,0,64,64},
-  {{4,255,0},1,255,65535,0,64,64},
-  {{0,255,255},2,255,65535,0,64,64},
-  {{0,0,0},0,255,65535,0,64,64},
-  {{11,179,0},1,255,65535,0,64,64},
-  {{255,255,255},64,255,18,0,64,38},
-  {{255,0,212},64,255,18,0,64,38},
-  {{0,0,0},1,255,65535,0,64,64},
-  {{0,255,12},0,255,65535,0,64,64},
-  {{193,0,255},0,255,65535,0,64,64},
-  {{255,255,255},64,255,0,0,74,81},
-  {{255,255,255},65,255,0,0,64,64},
-  {{0,255,30},0,255,65535,0,64,64},
-  {{0,235,255},0,255,65535,0,64,64},
-  {{58,196,255},0,255,65535,0,64,64},
-  {{155,250,255},0,255,65535,0,64,64},
-  {{0,223,255},1,255,65535,0,64,64},
-  {{255,255,255},64,255,0,0,64,96},
-  {{255,86,0},0,255,65535,0,64,64},
-  {{255,0,0},0,255,65535,0,64,64},
-  {{255,138,0},1,255,65535,0,64,64},
-  {{255,105,0},1,255,65535,0,64,64},
-  {{255,255,255},65,255,52,0,64,64},
-  {{255,255,255},64,255,46,0,64,32},
-  {{242,0,255},1,255,65535,0,64,64},
-  {{0,75,86},1,255,65535,0,64,64},
-  {{255,255,255},64,255,28,0,64,38},
-  {{0,231,255},1,255,65535,0,64,64},
-  {{122,120,120},0,255,65535,0,64,64},
-  {{182,178,178},0,255,65535,0,64,64},
-  {{0,255,8},0,255,65535,0,64,64},
-  {{255,111,0},0,255,65535,0,64,64},
-  {{255,253,0},0,255,65535,0,64,64},
-  {{79,79,80},0,255,65535,0,64,64},
-  {{255,255,255},64,255,61,0,64,36},
-  {{255,229,0},1,255,65535,0,64,64},
-  {{255,255,255},64,255,56,0,64,32},
-  {{255,255,255},64,255,57,0,64,32},
-  {{0,224,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},64,255,56,0,64,38},
-  {{255,255,255},64,255,57,0,64,38},
-  {{255,107,0},1,255,65535,0,64,64},
-  {{255,53,0},1,255,65535,0,64,64},
-  {{0,143,255},1,255,65535,0,64,64},
-  {{0,100,255},1,255,65535,0,64,64},
-  {{0,199,255},1,255,65535,0,64,64},
-  {{43,189,255},1,255,65535,0,64,64},
-  {{0,130,255},1,255,65535,0,64,64},
-  {{255,255,255},64,255,27,0,64,32},
-  {{255,255,255},64,255,28,0,64,32},
-  {{255,0,238},1,255,65535,0,64,64},
-};
-static const LStyle level10_styles[434] = {
-  {1048575u,0,0},
-  {4193296u,0,0},
-  {1047555u,0,0},
-  {1047564u,0,0},
-  {4193294u,0,0},
-  {1047559u,0,0},
-  {1047558u,0,0},
-  {3150854u,0,0},
-  {1047581u,0,0},
-  {4194303u,0,0},
-  {14335u,0,0},
-  {1048575u,1,0},
-  {5242879u,1,0},
-  {4193287u,0,0},
-  {5242879u,0,0},
-  {5126u,0,0},
-  {13324u,0,0},
-  {1047582u,3,0},
-  {1047556u,0,0},
-  {13325u,0,0},
-  {12291u,3,0},
-  {1047564u,5,0},
-  {1048575u,5,0},
-  {5241859u,0,0},
-  {6290435u,0,0},
-  {6290444u,0,0},
-  {1047583u,0,0},
-  {6291455u,0,0},
-  {1047582u,5,0},
-  {13311u,5,0},
-  {1047555u,1,0},
-  {1048575u,7,0},
-  {1047555u,7,0},
-  {5241870u,0,0},
-  {1047584u,9,0},
-  {4193312u,9,0},
-  {3151877u,0,0},
-  {4193312u,11,0},
-  {4193312u,13,0},
-  {1047555u,5,0},
-  {12291u,5,0},
-  {1048575u,0,169},
-  {1048575u,3,0},
-  {6149u,0,0},
-  {4193312u,0,0},
-  {1047555u,3,0},
-  {5242879u,5,0},
-  {1047558u,7,0},
-  {1047559u,7,0},
-  {4193286u,0,0},
-  {6290438u,0,0},
-  {12291u,1,0},
-  {5241862u,0,0},
-  {4194303u,15,0},
-  {1048575u,15,0},
-  {1048575u,0,1897},
-  {4208639u,0,0},
-  {4207629u,0,0},
-  {4207628u,0,0},
-  {5241860u,0,0},
-  {1047569u,0,0},
-  {1047585u,0,0},
-  {31778u,0,0},
-  {31777u,0,0},
-  {31762u,0,0},
-  {4226082u,0,0},
-  {1047570u,0,0},
-  {1047587u,0,0},
-  {1047586u,0,0},
-  {4226066u,0,0},
-  {1047588u,0,0},
-  {4193283u,0,0},
-  {4193299u,0,0},
-  {1047572u,0,0},
-  {3185702u,0,0},
-  {4226081u,0,0},
-  {4206595u,17,0},
-  {5241887u,17,0},
-  {5241896u,17,0},
-  {5241859u,17,0},
-  {4226069u,17,0},
-  {5242879u,17,0},
-  {5241877u,17,0},
-  {4193310u,0,0},
-  {5241859u,19,0},
-  {4237311u,19,0},
-  {5241887u,19,0},
-  {5241897u,19,0},
-  {4226085u,19,0},
-  {5242879u,19,0},
-  {5241893u,19,0},
-  {4193316u,0,0},
-  {3189802u,0,0},
-  {1047596u,0,0},
-  {5241900u,0,0},
-  {12291u,0,0},
-  {47103u,0,0},
-  {46083u,0,0},
-  {1047592u,0,0},
-  {47107u,0,0},
-  {1047599u,0,0},
-  {1047600u,0,0},
-  {1047601u,0,0},
-  {4193330u,0,0},
-  {4193329u,0,0},
-  {6291455u,21,0},
-  {5289983u,21,0},
-  {52255u,0,0},
-  {48127u,0,0},
-  {1048575u,23,0},
-  {1048575u,0,1},
-  {1048575u,0,2},
-  {5241900u,21,0},
-  {4193324u,0,0},
-  {5241905u,0,0},
-  {1048575u,25,0},
-  {1048575u,0,3},
-  {12291u,27,0},
-  {1048575u,27,0},
-  {46083u,27,0},
-  {1047596u,27,0},
-  {1047555u,27,0},
-  {4193332u,0,0},
-  {1048575u,29,0},
-  {47103u,29,0},
-  {1047555u,29,0},
-  {1047596u,29,0},
-  {1048575u,31,0},
-  {1048575u,0,4},
-  {4194303u,29,0},
-  {12291u,29,0},
-  {1047605u,0,0},
-  {1048575u,33,0},
-  {1047556u,33,0},
-  {1047555u,33,0},
-  {46083u,33,0},
-  {47103u,33,0},
-  {1047605u,33,0},
-  {1048575u,35,0},
-  {1047555u,35,0},
-  {46083u,35,0},
-  {1047605u,35,0},
-  {1047556u,35,0},
-  {47103u,35,0},
-  {1047557u,0,0},
-  {4193285u,0,0},
-  {31772u,0,0},
-  {1047580u,0,0},
-  {1047606u,0,0},
-  {6290487u,0,0},
-  {5274652u,0,0},
-  {5252108u,0,0},
-  {6290442u,0,0},
-  {1048575u,0,1824},
-  {4226076u,0,0},
-  {1048575u,0,1930},
-  {1048575u,0,1832},
-  {1048575u,0,190},
-  {1048575u,0,198},
-  {1048575u,0,1836},
-  {58424u,0,0},
-  {1047575u,0,0},
-  {1048575u,39,0},
-  {1047610u,0,0},
-  {11267u,0,0},
-  {58424u,39,0},
-  {4193311u,39,0},
-  {4193311u,0,0},
-  {1047583u,39,0},
-  {4193338u,0,0},
-  {3207227u,0,0},
-  {1047576u,0,0},
-  {6290463u,0,0},
-  {62526u,0,0},
-  {5301304u,0,0},
-  {1047615u,0,0},
-  {66624u,37,0},
-  {1047583u,37,0},
-  {4193283u,37,0},
-  {1047583u,41,0},
-  {1047618u,39,0},
-  {1048575u,37,0},
-  {4193347u,37,0},
-  {4193283u,39,0},
-  {3207227u,39,0},
-  {1047576u,39,0},
-  {6290463u,39,0},
-  {62526u,39,0},
-  {5301304u,39,0},
-  {1047615u,39,0},
-  {4252728u,0,0},
-  {5241887u,0,0},
-  {1048575u,0,1728},
-  {1048575u,0,1878},
-  {5241914u,0,0},
-  {70724u,0,0},
-  {1048575u,0,5},
-  {1048575u,44,0},
-  {25626u,0,0},
-  {1047555u,15,0},
-  {1048575u,0,1954},
-  {1048575u,0,1840},
-  {4193304u,0,0},
-  {6290456u,0,0},
-  {1048575u,0,186},
-  {1048575u,0,1734},
-  {5241880u,0,0},
-  {3171354u,0,0},
-  {1048575u,0,1856},
-  {1048575u,0,1776},
-  {1048575u,0,96},
-  {1048575u,0,1896},
-  {17824838u,48,0},
-  {17824792u,48,0},
-  {1048575u,51,0},
-  {1047623u,55,0},
-  {1047555u,51,0},
-  {1048575u,57,0},
-  {25626u,57,0},
-  {1047624u,59,0},
-  {17824841u,61,0},
-  {17824842u,61,0},
-  {1048575u,64,0},
-  {1047555u,64,0},
-  {77899u,68,0},
-  {1048575u,68,0},
-  {1047623u,70,0},
-  {17824792u,72,0},
-  {17824838u,72,0},
-  {1048575u,75,0},
-  {1047555u,75,0},
-  {25626u,79,0},
-  {1048575u,79,0},
-  {5274658u,0,0},
-  {1047579u,0,0},
-  {31762u,81,0},
-  {31777u,81,0},
-  {1047585u,81,0},
-  {31777u,84,0},
-  {31762u,87,0},
-  {31777u,90,0},
-  {31762u,93,0},
-  {31777u,96,0},
-  {31762u,99,0},
-  {31762u,101,0},
-  {1047629u,0,0},
-  {31777u,101,0},
-  {4226082u,103,0},
-  {5241890u,103,0},
-  {4226066u,103,0},
-  {5241874u,103,0},
-  {1047586u,103,0},
-  {1047570u,103,0},
-  {31778u,103,0},
-  {31762u,103,0},
-  {31772u,105,0},
-  {1048575u,105,0},
-  {1047580u,105,0},
-  {6291455u,105,0},
-  {12291u,105,0},
-  {1047556u,105,0},
-  {1047630u,105,0},
-  {6290442u,105,0},
-  {1048575u,107,0},
-  {31772u,107,0},
-  {1047556u,107,0},
-  {1047580u,107,0},
-  {6290442u,107,0},
-  {6291455u,107,0},
-  {1047630u,107,0},
-  {12291u,107,0},
-  {6291455u,109,0},
-  {31772u,109,0},
-  {6290442u,109,0},
-  {1048575u,109,0},
-  {1047580u,109,0},
-  {1047556u,109,0},
-  {12291u,109,0},
-  {1047630u,109,0},
-  {31772u,111,0},
-  {6291455u,111,0},
-  {1048575u,111,0},
-  {1047580u,111,0},
-  {6290442u,111,0},
-  {12291u,111,0},
-  {1047556u,111,0},
-  {1047630u,111,0},
-  {6291455u,113,0},
-  {31772u,113,0},
-  {1048575u,113,0},
-  {1047580u,113,0},
-  {6291455u,116,0},
-  {31772u,116,0},
-  {1048575u,116,0},
-  {1047580u,116,0},
-  {12291u,116,0},
-  {12291u,113,0},
-  {6290442u,113,0},
-  {6290442u,116,0},
-  {1047556u,113,0},
-  {1047630u,113,0},
-  {1047556u,116,0},
-  {1047630u,116,0},
-  {5274652u,119,0},
-  {5242879u,119,0},
-  {4193308u,119,0},
-  {6291455u,119,0},
-  {6290442u,119,0},
-  {5241860u,119,0},
-  {6290460u,119,0},
-  {6290436u,119,0},
-  {5242879u,0,1838},
-  {12291u,119,0},
-  {1048575u,119,0},
-  {4193358u,119,0},
-  {6290510u,119,0},
-  {1048575u,121,0},
-  {31772u,121,0},
-  {1047580u,121,0},
-  {1047556u,121,0},
-  {1047630u,121,0},
-  {1048575u,0,202},
-  {6291455u,123,0},
-  {1048575u,123,0},
-  {31772u,123,0},
-  {1047580u,123,0},
-  {6290442u,123,0},
-  {1047556u,123,0},
-  {12291u,123,0},
-  {1047630u,123,0},
-  {1047630u,0,0},
-  {6291455u,125,0},
-  {1048575u,125,0},
-  {31772u,125,0},
-  {1047580u,125,0},
-  {12291u,125,0},
-  {1047556u,125,0},
-  {1047630u,125,0},
-  {6290442u,125,0},
-  {1048575u,127,0},
-  {1048575u,131,0},
-  {1048575u,135,0},
-  {12291u,135,0},
-  {12291u,131,0},
-  {12291u,127,0},
-  {1047556u,127,0},
-  {1047630u,127,0},
-  {1047580u,127,0},
-  {31772u,127,0},
-  {6290442u,138,0},
-  {6291455u,138,0},
-  {31772u,131,0},
-  {6290442u,141,0},
-  {1048575u,143,0},
-  {1047580u,131,0},
-  {6291455u,141,0},
-  {1047556u,131,0},
-  {1047630u,131,0},
-  {1047556u,143,0},
-  {1047556u,135,0},
-  {1047630u,135,0},
-  {1047580u,135,0},
-  {31772u,135,0},
-  {6290442u,146,0},
-  {6291455u,146,0},
-  {31772u,148,0},
-  {1048575u,148,0},
-  {1047580u,148,0},
-  {6291455u,150,0},
-  {31772u,150,0},
-  {1048575u,150,0},
-  {1047580u,150,0},
-  {12291u,150,0},
-  {1047556u,148,0},
-  {1047630u,148,0},
-  {1048575u,152,0},
-  {1047556u,150,0},
-  {1047630u,150,0},
-  {6290442u,150,0},
-  {4194303u,152,0},
-  {1047630u,152,0},
-  {1047580u,152,0},
-  {31772u,152,0},
-  {1047556u,152,0},
-  {1047592u,152,0},
-  {1047631u,0,0},
-  {1048575u,154,0},
-  {5274652u,154,0},
-  {4193308u,154,0},
-  {4193308u,0,0},
-  {1048575u,156,0},
-  {1047580u,154,0},
-  {1047630u,154,0},
-  {1047556u,154,0},
-  {1047630u,158,0},
-  {1048575u,158,0},
-  {5274652u,158,0},
-  {4193308u,158,0},
-  {1047580u,158,0},
-  {1047556u,158,0},
-  {1048575u,160,0},
-  {1048575u,162,0},
-  {1047630u,164,0},
-  {1048575u,164,0},
-  {5274652u,164,0},
-  {4193308u,164,0},
-  {1047556u,164,0},
-  {1047580u,164,0},
-  {1047555u,166,0},
-  {31772u,166,0},
-  {1048575u,166,0},
-  {1047580u,166,0},
-  {1047606u,166,0},
-  {6291455u,166,0},
-  {6290435u,168,0},
-  {1048575u,170,0},
-  {12291u,170,0},
-  {1048575u,172,0},
-  {1047556u,172,0},
-  {1047580u,172,0},
-  {1047606u,172,0},
-  {31772u,172,0},
-  {1048575u,175,0},
-  {1047556u,175,0},
-  {1047580u,175,0},
-  {1047606u,175,0},
-  {31772u,175,0},
-  {1048575u,178,0},
-  {12291u,178,0},
-  {31772u,168,0},
-  {1048575u,168,0},
-  {1047555u,168,0},
-  {1047556u,168,0},
-  {1047606u,168,0},
-};
-static const uint16_t level10_gsets[180] = {0,1,0,1,1,1,2,1,7,1,3,1,4,1,5,1,6,1,11,1,12,1,14,1,15,1,17,1,16,1,18,1,19,1,21,1,20,1,13,1,22,2,13,23,1,24,1,25,2,27,35,3,6,28,35,1,26,1,35,1,29,2,31,36,3,6,30,36,1,36,1,32,2,33,37,3,6,34,37,1,37,2,38,39,2,39,40,2,39,42,2,39,41,2,39,43,2,39,44,1,39,1,45,1,46,1,47,1,48,1,49,1,50,2,51,52,2,51,53,1,54,1,55,1,56,1,57,3,59,61,62,3,59,60,62,2,58,62,2,59,61,1,59,2,59,62,1,58,1,64,1,63,1,65,1,66,1,68,1,67,1,70,1,71,1,69,1,74,1,75,1,72,2,72,75,2,73,75,1,73};
-static const int32_t level10_scales[55][2] = {{1000,1000},{1610,1610},{720,720},{640,640},{930,930},{1200,1200},{500,500},{1070,1070},{830,830},{780,780},{2000,2000},{1330,1330},{1160,1160},{890,890},{1120,1120},{650,650},{700,700},{600,600},{1180,1180},{1600,1600},{1240,1240},{1290,1290},{1450,1450},{1530,1530},{1420,1420},{630,630},{900,900},{690,690},{740,740},{1750,1750},{670,670},{1300,1300},{840,840},{800,800},{1100,1100},{1220,1220},{610,610},{870,870},{750,750},{1480,1480},{1570,1570},{940,940},{680,680},{1150,1150},{850,850},{820,820},{1430,1430},{1770,1770},{1400,1400},{1030,1030},{1520,1520},{1230,1230},{1280,1280},{1730,1730},{1950,1950}};
-static const uint8_t level10_trig[5087] = {
-  16,1,16,201,0,255,255,5,249,11,0,1,2,0,243,255,255,0,199,19,224,2,1,4,0,0,0,255,0,184,15,0,1,13,0,67,79,255,0,217,
-  9,0,1,13,0,67,79,255,0,217,9,128,1,1,0,0,80,109,255,0,154,23,0,1,1,0,58,66,255,0,225,23,0,1,8,0,126,158,255,0,
-  226,23,240,26,5,0,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,192,10,5,1,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,
-  208,5,5,2,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,176,1,5,1,0,0,0,0,172,2,160,6,172,2,224,3,5,8,0,0,0,
-  0,172,2,188,5,172,2,0,5,2,0,0,0,0,172,2,232,7,172,2,192,2,5,12,255,255,255,64,244,3,0,244,3,15,0,128,1,128,1,0,
-  32,1,0,82,0,129,255,0,95,160,15,1,0,0,80,109,255,0,95,176,1,5,2,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,176,8,
-  3,3,0,0,0,3,4,0,0,0,3,5,0,0,208,5,1,0,135,0,48,255,0,251,54,0,1,1,66,0,23,255,0,228,54,0,1,8,158,0,
-  68,255,0,241,54,0,1,2,255,0,126,255,0,236,54,0,1,13,79,0,39,255,0,197,54,208,4,5,0,255,255,255,65,0,0,244,3,15,0,128,
-  1,128,1,0,128,1,3,6,0,0,192,9,5,7,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,32,3,3,255,148,2,144,7,1,12,255,
-  205,0,255,0,244,3,48,3,4,255,148,2,192,7,3,5,255,148,2,160,1,1,12,0,255,14,255,0,244,3,160,8,1,12,0,255,14,255,2,244,
-  3,160,9,5,2,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,144,6,5,1,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,10,
-  5,12,255,255,255,64,0,100,232,7,15,0,128,1,128,1,0,118,6,5,144,28,1,2,0,0,0,255,1,208,15,0,1,1,0,0,0,255,0,208,
-  15,0,1,8,0,0,0,255,0,208,15,128,4,5,1,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,224,3,5,2,255,255,255,65,0,0,
-  244,3,15,0,128,1,128,1,0,240,2,5,7,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,128,4,5,0,255,255,255,65,0,0,244,3,
-  15,0,128,1,128,1,0,240,22,1,0,127,0,251,255,0,226,38,0,1,13,54,0,79,255,0,139,31,2,5,12,255,255,255,64,0,100,232,7,15,
-  0,128,1,128,1,0,142,13,5,0,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,128,4,5,1,255,255,255,65,0,0,244,3,15,0,128,
-  1,128,1,0,224,5,5,2,255,255,255,65,0,0,244,3,15,0,128,1,128,1,0,192,14,5,0,255,255,255,65,0,0,244,3,15,0,128,1,128,
-  1,0,224,5,5,12,255,255,255,64,244,3,244,3,244,3,15,0,128,1,128,1,0,16,5,1,255,255,255,65,0,0,244,3,15,0,128,1,128,1,
-  0,192,5,1,3,0,0,0,255,0,151,8,0,1,0,66,0,106,255,0,151,8,208,20,6,11,240,1,1,0,255,0,90,255,0,0,0,1,3,216,
-  255,0,255,0,0,0,1,2,255,98,0,255,65,179,2,18,0,128,1,128,1,0,0,5,35,0,255,0,0,0,0,244,3,0,1,17,255,227,65,255,
-  1,0,240,1,1,0,136,0,48,255,0,241,5,0,1,3,160,255,0,255,0,164,2,0,1,17,255,88,0,255,1,224,7,160,11,5,3,232,250,255,
-  0,0,0,244,3,0,5,35,0,210,255,0,0,0,244,3,144,13,5,0,255,255,255,64,0,0,244,3,12,0,128,2,128,2,0,0,5,35,255,0,
-  55,0,0,0,244,3,176,9,1,3,0,235,255,255,0,218,2,0,1,0,77,0,87,255,0,202,2,0,1,18,255,0,72,255,0,181,2,0,1,17,
-  135,0,196,255,1,244,3,224,3,5,3,232,250,255,0,0,0,244,3,0,5,35,246,255,0,0,0,0,244,3,240,1,6,10,160,11,5,0,255,255,
-  255,64,0,0,244,3,12,0,128,2,128,2,0,0,5,35,0,255,25,0,0,0,244,3,144,13,5,3,232,250,255,0,0,0,244,3,0,5,35,0,
-  220,255,0,0,0,244,3,144,13,5,0,255,255,255,64,0,0,244,3,12,0,128,2,128,2,0,0,1,0,87,0,31,255,0,225,7,0,1,18,137,
-  136,138,255,0,225,7,0,1,17,146,143,145,255,1,225,7,0,1,3,250,255,250,255,0,136,8,0,5,35,0,220,255,0,0,0,244,3,224,18,2,
-  12,0,128,15,177,8,1,20,0,0,2,11,0,255,14,177,8,1,20,0,240,1,3,8,0,0,0,3,9,0,0,0,3,10,0,0,224,3,1,19,
-  0,222,255,255,0,0,0,1,2,0,0,0,255,1,244,3,0,6,3,48,1,0,255,96,233,255,0,0,192,1,5,21,0,247,255,0,0,100,216,4,
-  48,1,0,147,0,255,255,0,152,8,128,9,5,19,0,255,25,0,0,100,216,4,0,5,37,255,255,255,64,0,100,216,4,15,0,128,1,128,1,0,
-  176,9,2,12,0,255,14,132,7,1,20,0,0,2,11,0,128,15,132,7,1,20,0,48,1,0,62,62,63,255,0,146,23,192,1,4,13,0,0,5,
-  21,0,247,255,0,0,100,216,4,160,10,5,19,0,255,25,0,0,100,216,4,0,5,37,255,255,255,64,0,100,216,4,15,0,128,1,128,1,0,128,
-  1,1,20,0,223,255,255,1,169,15,192,7,2,12,0,128,15,150,6,1,20,0,0,2,11,0,255,14,150,6,1,20,0,240,1,5,21,0,247,255,
-  0,0,100,216,4,208,10,5,19,0,255,25,0,0,100,216,4,48,5,37,255,255,255,64,0,100,216,4,15,0,128,1,128,1,0,224,7,2,12,0,
-  255,14,150,6,1,20,0,0,2,11,0,128,15,150,6,1,20,0,176,2,5,21,0,247,255,0,0,100,232,7,224,10,5,19,0,255,25,0,0,100,
-  216,4,192,7,2,12,0,128,15,150,6,1,20,0,0,2,11,0,255,14,150,6,1,20,0,224,3,6,10,0,1,12,250,254,255,255,0,0,0,1,
-  0,255,54,240,255,0,0,240,1,1,2,0,231,255,255,1,0,0,1,12,0,224,255,255,0,221,4,0,1,0,108,0,140,255,0,137,8,144,30,5,
-  50,255,255,255,64,0,100,232,7,44,0,128,1,128,1,0,0,1,0,0,255,156,255,0,0,224,1,1,12,0,224,255,255,0,221,4,16,1,0,108,
-  0,140,255,0,185,7,208,11,2,16,0,208,5,138,2,6,20,0,240,8,1,0,59,0,53,255,0,245,11,96,2,18,0,208,5,138,2,6,20,0,
-  176,14,5,0,255,255,255,64,0,100,216,4,12,0,128,1,218,1,0,0,5,50,255,255,255,64,0,100,232,7,44,0,128,1,128,1,0,176,7,5,
-  0,255,255,255,64,0,200,1,232,7,12,0,128,1,128,2,0,240,1,1,21,0,242,255,255,1,0,0,1,22,0,234,255,255,1,0,176,9,6,11,
-  0,1,0,255,0,127,255,0,0,0,5,53,0,223,255,0,0,0,216,4,240,1,1,0,178,0,117,255,0,130,4,192,7,5,53,255,79,0,0,0,
-  0,216,4,200,6,2,21,0,255,14,143,14,1,20,0,0,2,20,0,128,15,143,14,1,20,0,200,3,5,53,0,223,255,0,0,0,216,4,224,9,
-  5,53,255,79,0,0,0,0,216,4,160,11,5,53,0,223,255,0,0,0,216,4,96,1,0,0,0,0,255,0,205,23,224,9,5,53,255,79,0,0,
-  0,0,216,4,168,4,2,21,0,128,15,222,12,1,20,0,0,2,20,0,255,14,222,12,1,20,0,216,7,5,53,0,223,255,0,0,0,232,7,208,
-  2,1,21,255,0,0,255,1,151,6,224,18,6,5,0,1,0,255,0,234,255,0,0,0,5,3,19,255,0,0,0,100,244,3,0,3,6,0,0,48,
-  5,21,237,242,238,0,0,200,1,216,4,192,1,1,0,108,0,136,255,0,184,7,128,30,5,28,255,255,255,64,244,3,0,244,3,12,40,128,1,128,
-  1,0,240,1,7,1,0,6,4,0,5,0,255,0,95,0,0,100,244,3,0,5,3,19,255,0,0,0,100,244,3,224,48,5,28,255,255,255,64,144,
-  3,0,144,3,12,80,128,1,128,1,0,240,4,7,0,0,6,5,16,5,0,255,0,95,0,0,100,244,3,0,5,3,0,255,14,0,0,100,244,3,
-  240,11,5,28,255,255,255,64,144,3,0,144,3,12,80,128,1,128,1,0,128,15,5,28,255,255,255,64,172,2,0,172,2,12,120,128,1,128,1,0,
-  160,9,5,0,255,0,95,0,0,100,244,3,0,5,3,26,255,0,0,0,100,244,3,16,6,4,0,7,1,224,3,5,28,255,255,255,64,172,2,0,
-  172,2,12,120,128,1,128,1,0,160,11,5,28,255,255,255,64,172,2,0,172,2,12,120,128,1,128,1,0,160,11,5,28,255,255,255,64,172,2,0,
-  172,2,12,120,128,1,128,1,0,160,11,7,0,0,6,2,0,5,28,255,255,255,64,172,2,0,172,2,12,120,128,1,128,1,0,0,5,0,185,0,
-  152,0,232,7,0,232,7,240,1,5,12,0,255,9,0,0,100,160,6,160,26,5,0,206,0,153,0,160,6,0,132,7,240,1,6,1,0,5,12,0,
-  255,9,0,0,100,160,6,128,30,5,0,211,0,129,0,216,4,0,216,4,208,5,6,2,0,5,12,0,255,9,0,0,100,160,6,224,18,5,0,208,
-  0,89,0,144,3,0,144,3,240,16,5,0,255,0,109,0,172,2,0,172,2,208,5,6,1,0,5,12,0,255,9,0,0,100,160,6,192,7,5,0,
-  255,0,109,0,172,2,0,172,2,160,11,5,0,255,0,109,0,200,1,0,172,2,208,5,132,37,22,0,224,3,5,0,255,0,109,0,100,0,100,224,
-  3,5,0,255,0,109,0,100,0,100,176,3,5,0,255,0,109,0,100,0,100,160,2,3,23,178,0,192,1,5,0,255,0,109,0,100,0,100,160,2,
-  1,23,0,139,162,255,1,153,4,240,1,6,0,0,5,12,0,255,9,0,0,100,160,6,0,1,0,140,46,255,255,0,0,240,1,1,0,46,46,45,
-  255,0,254,7,224,33,5,0,80,0,149,0,172,2,0,232,7,208,35,5,0,80,0,149,0,172,2,0,232,7,224,33,5,0,80,0,149,0,172,2,
-  0,232,7,176,24,1,0,83,0,153,255,0,145,3,176,9,6,5,0,1,23,162,0,40,255,1,0,0,1,0,255,0,130,255,0,0,240,1,1,0,
-  91,0,56,255,0,153,4,128,15,4,24,0,160,11,6,3,192,7,6,4,192,7,6,5,240,1,5,0,80,0,149,0,172,2,0,232,7,128,45,5,
-  0,80,0,149,0,172,2,0,232,7,160,41,5,0,80,0,149,0,172,2,0,232,7,240,1,1,0,0,0,0,255,0,134,8,240,1,1,24,0,0,
-  0,255,1,0,224,3,2,25,0,159,11,188,5,6,20,0,240,1,1,2,0,0,0,255,1,244,3,240,31,1,24,255,169,0,255,1,138,2,0,1,
-  26,255,111,0,255,0,184,1,0,1,25,255,253,0,255,0,184,1,0,1,12,255,255,255,255,0,244,3,0,1,2,0,0,0,255,0,0,240,1,1,
-  0,255,250,250,255,0,0,240,1,1,0,255,0,6,255,0,250,2,240,136,1,4,28,0,0,4,30,0,0,4,34,0,120,3,27,0,0,0,3,33,
-  0,0,0,3,31,0,0,120,3,26,0,0,0,3,29,0,0,0,3,32,0,0,176,24,6,6,224,3,2,35,0,0,144,78,0,20,1,200,1,200,
-  1,0,3,26,255,65,240,1,2,35,191,7,0,168,4,1,20,0,236,2,3,26,0,206,1,196,6,3,26,255,65,220,4,3,26,0,132,2,132,14,
-  2,35,192,1,0,232,2,1,20,0,232,2,3,27,255,66,8,4,28,1,192,6,2,36,0,0,144,78,0,20,1,200,1,200,1,240,1,2,36,191,
-  7,0,169,5,1,20,0,0,2,35,239,1,0,133,3,1,20,0,224,3,1,0,255,0,219,255,0,244,3,0,1,24,0,231,255,255,1,191,2,0,
-  1,26,81,82,255,255,0,182,2,0,1,25,0,247,255,255,0,182,2,240,1,3,29,255,65,104,3,27,0,227,1,136,1,2,35,192,7,0,228,6,
-  1,20,0,80,4,28,0,156,2,3,29,0,206,1,220,1,3,35,0,252,2,232,4,3,29,255,65,220,4,3,29,0,132,2,164,10,2,36,192,1,
-  0,232,2,1,20,0,232,2,3,31,255,66,8,4,30,1,112,4,35,0,208,5,2,36,239,1,0,133,3,1,20,0,240,1,2,37,0,0,144,78,
-  0,20,1,200,1,200,1,240,1,2,37,191,7,0,131,4,1,20,0,104,3,31,0,227,1,136,1,2,36,192,7,0,228,6,1,20,0,240,1,4,
-  30,0,240,1,1,0,255,0,6,255,0,244,3,0,1,24,255,169,0,255,1,191,2,0,3,32,255,65,16,1,26,255,111,0,255,0,184,1,0,1,
-  25,255,253,0,255,0,184,1,88,3,36,0,252,2,244,3,3,32,0,206,1,196,6,3,32,255,65,220,4,3,32,0,132,2,180,8,2,37,192,1,
-  0,232,2,1,20,0,232,2,3,33,255,66,8,4,34,1,208,4,4,36,0,240,1,2,37,239,1,0,133,3,1,20,0,128,1,1,18,146,0,255,
-  255,0,0,200,3,3,33,0,227,1,136,1,4,34,0,0,2,37,192,7,0,228,6,1,20,0,224,3,1,0,92,0,90,255,0,221,15,104,3,37,
-  0,252,2,208,7,1,3,160,255,0,255,0,164,2,136,14,1,0,108,0,0,255,0,219,3,144,13,4,37,0,240,1,6,11,120,1,0,255,80,226,
-  255,0,0,0,1,3,216,255,0,255,0,0,0,1,2,255,98,0,255,65,179,2,18,0,128,1,128,1,0,8,1,18,255,0,200,255,0,0,232,1,
-  1,0,131,0,46,255,0,161,4,0,1,3,160,255,0,255,0,164,2,232,3,1,18,146,0,255,255,0,176,4,224,3,5,38,31,255,0,3,0,0,
-  244,3,144,5,5,40,31,255,0,3,0,0,244,3,128,5,5,42,31,255,0,3,0,0,244,3,208,4,5,41,31,255,0,3,0,0,244,3,208,4,
-  5,43,31,255,0,3,0,0,244,3,208,4,5,44,31,255,0,3,0,0,244,3,128,5,6,10,0,5,39,0,232,255,3,0,200,1,244,3,16,1,
-  3,0,235,255,255,0,0,0,1,0,225,0,255,255,0,0,0,1,18,255,0,72,255,0,0,0,1,27,135,0,196,255,1,0,240,1,1,0,77,0,
-  87,255,0,137,4,208,13,5,45,0,235,255,3,0,100,144,3,144,12,5,45,0,235,255,3,0,100,144,3,160,12,5,45,0,235,255,3,0,100,144,
-  3,160,1,5,0,255,255,255,64,244,3,0,244,3,12,0,128,2,128,2,0,240,10,5,45,0,235,255,3,0,100,144,3,160,12,5,45,0,235,255,
-  3,0,100,144,3,160,1,6,2,128,1,1,3,160,255,0,255,0,0,0,1,0,255,80,226,255,0,0,0,1,18,255,0,228,255,0,0,0,1,27,
-  255,88,0,255,1,0,240,1,1,0,131,0,46,255,0,137,4,0,1,18,146,0,255,255,0,236,3,160,4,5,46,0,255,1,3,0,100,144,3,144,
-  4,1,28,113,111,111,255,0,0,160,10,5,46,0,255,1,3,0,100,144,3,192,8,6,1,0,1,0,0,0,0,255,0,205,15,0,1,18,56,55,
-  55,255,0,132,12,176,6,5,46,0,255,1,3,0,100,144,3,224,19,1,18,255,0,228,255,0,0,0,1,18,121,119,121,255,0,0,16,6,3,0,
-  1,2,0,0,0,255,1,0,0,1,0,198,0,255,255,0,0,0,5,47,0,255,28,3,0,100,244,3,16,1,28,250,55,255,255,0,0,208,1,1,
-  18,140,138,140,255,0,133,4,16,1,0,0,0,0,255,0,193,7,0,2,47,0,200,6,144,3,1,20,0,16,1,28,208,0,255,255,0,204,7,176,
-  7,5,48,0,255,28,3,0,100,244,3,0,2,48,0,199,6,144,3,1,20,0,192,7,2,49,0,199,6,144,3,1,20,0,240,1,5,49,0,255,
-  28,3,0,100,244,3,176,9,5,50,255,0,112,3,0,100,160,6,0,2,50,0,199,6,232,7,1,20,0,144,13,6,11,48,1,0,255,32,89,255,
-  0,0,0,5,51,0,255,12,3,0,100,244,3,192,1,2,51,192,7,0,131,3,1,20,0,48,1,0,0,0,0,255,0,149,4,144,7,2,53,0,
-  200,6,178,3,1,20,0,0,2,52,0,199,6,178,3,1,20,0,240,1,5,54,11,255,0,3,0,100,244,3,240,1,2,54,0,199,6,139,3,1,
-  20,0,176,9,5,55,255,0,112,3,0,100,160,6,240,1,1,0,0,0,0,255,0,210,11,176,9,5,55,0,228,255,3,0,100,160,6,232,11,1,
-  0,198,0,255,255,0,0,24,6,4,216,1,1,0,0,0,0,255,0,193,7,248,6,5,56,11,255,0,3,0,100,244,3,0,2,56,0,199,6,139,
-  3,1,20,0,192,12,5,57,11,255,0,3,0,100,244,3,144,8,2,57,0,200,6,210,2,1,20,0,0,2,56,0,200,6,215,3,1,20,0,160,
-  2,5,58,0,220,255,3,0,100,216,4,224,3,5,60,0,220,255,3,0,100,216,4,192,1,2,58,192,7,0,224,1,1,20,0,0,2,59,128,15,
-  0,179,3,1,20,0,160,2,5,61,0,220,255,3,0,100,216,4,152,5,1,0,255,32,89,255,0,0,8,6,11,0,5,62,255,0,112,3,0,100,
-  160,6,232,1,1,0,0,0,0,255,0,149,4,232,3,2,61,0,199,6,139,3,1,20,0,128,5,5,63,11,255,0,3,0,100,244,3,144,8,2,
-  63,0,200,6,139,3,1,20,0,128,5,5,64,11,255,0,3,0,100,244,3,192,7,5,65,0,220,255,3,0,100,244,3,176,9,5,79,0,255,8,
-  0,0,100,160,6,16,6,4,8,1,0,89,91,89,255,0,0,8,1,2,0,0,0,255,65,0,3,0,128,1,128,1,0,16,5,28,255,0,117,0,
-  0,100,244,3,0,5,66,18,255,0,3,0,100,244,3,216,1,1,0,0,0,0,255,0,152,8,168,2,2,66,240,46,0,136,25,0,20,0,128,2,
-  5,68,18,255,0,1,0,100,244,3,104,5,28,255,255,255,64,244,3,0,244,3,12,40,128,1,128,1,0,120,2,67,223,18,0,213,16,0,20,0,
-  176,5,5,67,18,255,0,3,0,100,244,3,136,3,5,28,255,255,255,64,144,3,0,144,3,12,80,128,1,128,1,0,120,2,69,223,18,0,146,13,
-  0,20,0,192,3,5,69,2,209,255,3,0,100,244,3,224,7,6,3,56,1,0,121,0,44,255,0,0,8,5,28,255,0,117,0,0,100,244,3,0,
-  1,3,255,0,238,255,0,0,0,5,79,0,255,8,0,0,100,160,6,232,1,1,0,0,0,0,255,0,152,8,8,1,3,0,247,255,255,0,140,4,
-  176,1,5,70,2,255,8,1,0,100,244,3,120,5,28,255,255,255,64,144,3,0,144,3,12,80,128,1,128,1,0,184,1,5,71,2,255,8,1,0,
-  100,244,3,128,6,5,66,18,255,0,3,0,100,244,3,224,4,2,72,0,255,14,132,10,1,20,0,0,2,73,0,128,15,132,10,1,20,0,192,3,
-  5,74,0,236,255,3,0,100,244,3,240,5,6,6,96,5,79,0,255,8,0,0,100,160,6,8,1,0,183,0,66,255,0,0,8,1,3,255,0,238,
-  255,0,0,128,1,5,28,255,0,117,0,0,100,244,3,104,1,0,0,0,0,255,0,152,8,8,1,3,16,255,0,255,0,140,4,8,5,28,255,255,
-  255,64,144,3,0,144,3,12,80,128,1,128,1,0,120,2,73,0,255,14,132,10,1,20,0,0,2,72,0,128,15,132,10,1,20,0,160,8,5,75,
-  15,255,0,3,0,100,244,3,216,7,5,28,255,255,255,64,144,3,0,144,3,12,80,128,1,128,1,0,136,4,5,75,255,0,239,3,0,100,244,3,
-  176,4,2,72,0,255,14,132,10,1,20,0,0,2,73,0,128,15,132,10,1,20,0,128,6,5,75,0,237,255,3,0,100,244,3,72,5,28,255,255,
-  255,64,172,2,0,172,2,12,120,128,1,128,1,0,224,8,1,0,255,0,83,255,0,0,8,5,28,255,0,117,0,0,100,244,3,0,1,3,255,0,
-  238,255,0,0,32,5,79,0,255,8,0,0,100,160,6,200,1,1,0,0,0,0,255,0,152,8,8,1,3,16,255,0,255,0,140,4,184,2,5,28,
-  255,255,255,64,172,2,0,172,2,12,120,128,1,128,1,0,184,8,2,73,0,255,14,132,10,1,20,0,0,2,72,0,128,15,132,10,1,20,0,208,
-  2,5,75,15,255,0,3,0,100,244,3,24,5,28,255,255,255,64,172,2,0,172,2,12,120,128,1,128,1,0,120,1,23,0,139,162,255,1,153,4,
-  168,10,5,28,255,255,255,64,172,2,0,172,2,12,120,128,1,128,1,0,184,3,5,75,255,0,236,3,0,100,244,3,232,7,5,28,255,255,255,64,
-  172,2,0,172,2,12,120,128,1,128,1,0,152,3,5,75,0,255,252,3,0,100,244,3,128,9,6,5,0,5,2,0,231,255,0,172,2,0,232,7,
-  0,5,3,0,240,255,0,172,2,0,232,7,0,1,28,7,255,0,255,0,0,8,1,0,114,0,255,255,0,0,232,1,1,28,157,0,255,255,0,227,
-  7,8,1,0,35,35,34,255,0,254,7,232,31,5,2,0,231,255,0,172,2,0,232,7,0,5,3,0,240,255,0,172,2,0,232,7,0,5,0,102,
-  0,191,0,172,2,0,232,7,224,32,5,2,0,231,255,0,172,2,0,232,7,0,5,3,0,240,255,0,172,2,0,232,7,0,5,0,187,0,170,0,
-  172,2,0,232,7,240,32,5,2,0,231,255,0,172,2,0,232,7,0,5,3,0,240,255,0,172,2,0,232,7,0,5,0,104,0,195,0,172,2,0,
-  232,7,0,0,4,13,1,2,14,0,223,3,116,3,20,0,2,15,0,160,11,147,1,3,20,0,2,17,0,191,7,70,3,20,0,2,19,0,191,7,
-  70,3,20,0,4,24,1,
-};
-static const uint16_t level10_touch[6] = {5044,5047,5056,5066,5075,5084};
-static const uint32_t level10_chan_off[16] = {0u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u,4294967295u};
-static const uint8_t level10_chan_frame[16] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-static const uint16_t level10_spawn_first[77] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
-static const uint16_t level10_spawn_list[1] = {0};
-static const int16_t level10_anchors[76][2] = {{517,35},{675,112},{765,82},{1735,31},{1861,221},{1997,31},{3327,199},{1574,143},{32767,32767},{32767,32767},{32767,32767},{6368,280},{6497,90},{15585,285},{7875,358},{7871,-17},{8295,45},{8259,393},{8445,65},{8465,393},{9795,-15},{9575,305},{15495,315},{15555,315},{19035,105},{32767,32767},{22965,155},{22815,171},{22811,167},{23445,45},{23471,251},{23437,279},{24165,239},{24157,279},{24161,251},{22815,171},{23437,279},{24157,279},{25875,135},{25875,135},{26085,135},{26175,135},{26145,135},{26265,135},{26295,135},{26895,135},{27435,300},{28485,180},{28591,151},{28734,148},{28845,180},{29094,147},{29094,147},{29094,253},{29355,285},{29431,151},{29934,149},{30294,253},{30391,255},{30391,45},{30391,151},{30391,45},{30391,45},{30894,149},{30885,75},{30991,45},{31095,52},{31439,252},{31195,195},{31624,174},{31605,135},{31649,235},{32095,256},{32255,65},{31905,34},{32085,296}};
-static const LevelEvent level10_events[1] = {
-  {0,0,0,0,0,0,0,0,0},
-};
-static const uint8_t level11_data[53732] = {
-  117,148,127,108,83,85,20,199,239,185,239,246,245,181,125,125,175,115,99,235,106,233,182,182,113,133,117,16,183,201,36,107,12,26,12,157,91,202,198,48,
-  41,24,22,209,63,220,128,21,227,2,108,248,7,7,49,211,24,153,194,20,81,23,87,29,154,101,68,220,52,160,201,72,90,37,252,144,4,53,24,19,
-  19,20,250,7,38,254,195,156,139,255,232,31,94,239,125,237,186,77,229,243,189,247,244,222,115,207,61,239,221,211,219,78,3,37,18,31,41,66,195,228,
-  12,44,206,200,50,24,147,54,45,188,15,17,70,238,22,181,232,84,201,255,194,228,98,7,161,6,149,65,65,233,42,35,196,185,184,85,203,39,87,243,
-  105,232,178,164,190,100,50,25,143,111,143,39,123,221,245,149,219,4,173,222,13,68,91,138,215,235,213,116,175,238,208,117,159,207,171,27,78,167,179,181,
-  213,145,74,37,18,221,169,110,139,132,63,234,207,19,245,7,214,4,2,86,239,214,188,186,160,125,1,191,95,215,221,238,64,192,88,107,154,186,161,235,
-  70,34,145,48,18,226,211,108,151,113,241,118,221,33,113,73,100,164,68,255,55,134,140,124,153,86,155,25,208,114,48,160,33,156,127,132,204,132,197,73,
-  170,170,241,60,252,10,24,192,33,133,31,192,24,158,3,62,192,15,225,231,148,255,1,248,61,96,2,135,169,104,132,191,203,240,67,192,24,193,25,138,
-  49,62,162,100,127,162,25,54,31,255,189,3,219,210,63,195,236,52,156,10,159,153,166,216,198,131,61,40,242,165,105,68,180,181,145,90,171,96,15,226,
-  29,64,19,235,69,239,229,61,194,110,199,11,194,193,79,83,222,66,196,196,196,54,194,183,17,156,128,8,142,50,126,139,98,142,206,199,241,20,240,55,
-  160,88,80,76,112,58,122,150,222,78,220,170,224,109,99,195,148,211,219,83,244,194,74,108,231,62,28,192,117,248,18,96,23,71,56,73,35,19,20,199,
-  217,21,138,103,65,52,254,22,224,7,74,79,238,55,32,233,128,188,53,243,241,147,23,217,156,253,134,57,173,190,201,134,157,168,253,96,126,83,254,23,
-  195,41,37,247,21,224,85,121,60,89,9,105,63,131,116,77,238,34,197,39,112,68,193,175,129,183,226,29,5,67,223,249,191,221,139,147,192,111,2,111,
-  225,45,83,31,211,79,254,164,120,84,150,73,110,235,209,61,213,113,178,73,220,29,116,136,131,117,202,87,39,168,132,177,33,83,139,1,130,181,104,160,
-  11,197,99,49,68,248,163,4,61,216,98,213,104,22,174,219,178,34,114,179,120,199,89,149,28,223,65,136,238,197,134,141,36,70,180,194,205,106,206,2,
-  65,113,29,209,148,27,68,253,66,214,84,140,172,10,102,214,139,231,155,36,163,163,173,120,85,95,80,254,118,10,95,186,27,61,191,188,2,151,92,239,
-  152,67,59,197,70,99,142,146,57,70,14,197,72,44,187,179,41,107,199,122,30,197,58,61,27,37,217,6,18,138,144,155,253,31,193,198,121,118,73,61,
-  87,146,250,20,126,164,168,166,131,88,126,98,29,153,132,201,62,146,6,116,146,172,3,105,70,193,50,132,13,8,87,232,23,84,124,237,78,20,54,117,
-  28,120,201,13,69,188,62,170,203,196,164,61,109,15,206,176,69,231,132,253,8,253,18,174,209,33,229,154,114,76,189,108,187,174,14,219,46,51,145,166,
-  40,1,80,170,208,37,40,80,64,44,73,20,57,162,133,137,224,170,80,132,69,26,25,171,173,133,69,204,255,2,16,105,92,18,225,118,212,59,92,14,
-  195,21,21,191,38,69,80,200,104,130,105,171,9,6,107,34,141,33,251,10,11,85,93,21,90,121,255,234,251,234,214,84,55,249,43,203,26,180,112,169,
-  175,42,153,124,210,52,94,132,202,113,90,41,251,56,93,80,229,230,85,15,31,104,93,253,42,172,239,121,15,220,207,246,50,247,189,129,221,187,75,123,
-  119,237,234,31,130,170,210,82,97,251,203,182,108,121,102,4,158,58,108,53,139,195,16,46,48,6,99,197,113,248,233,35,144,186,167,175,175,4,168,98,
-  215,84,155,211,165,7,253,7,71,225,24,12,6,171,15,14,190,14,131,214,31,130,204,242,220,219,224,233,240,164,161,188,107,235,214,174,189,123,246,12,
-  195,130,94,43,234,113,111,211,166,168,104,21,21,251,246,181,237,223,191,99,224,249,206,247,225,177,7,234,142,130,175,51,210,220,188,2,24,101,192,8,
-  51,68,23,42,203,139,138,177,67,172,120,242,94,22,164,54,102,99,68,147,125,137,172,53,40,196,220,77,249,117,187,150,23,209,254,1,133,85,107,108,
-  20,85,20,190,231,204,176,59,187,59,219,217,54,132,110,210,237,218,150,212,150,96,187,85,2,180,180,43,200,43,109,217,150,106,20,74,217,32,6,196,
-  31,54,38,38,68,48,65,56,49,66,107,141,22,121,212,242,222,96,49,53,90,130,202,67,176,178,3,42,129,90,164,136,74,99,16,75,98,136,63,20,
-  98,226,15,99,140,227,185,51,83,219,53,37,126,223,189,231,156,123,94,247,206,100,238,238,79,128,66,162,84,10,68,191,126,20,196,68,80,153,255,11,
-  93,136,150,227,32,22,142,21,101,0,39,40,209,220,16,102,100,161,155,172,235,172,81,232,136,17,116,253,178,2,237,2,196,34,129,126,17,202,108,142,
-  30,191,99,248,157,3,200,60,78,46,43,43,211,117,61,24,52,12,35,16,208,106,245,81,132,25,211,244,105,82,133,167,7,131,142,83,211,180,96,48,
-  200,82,203,178,225,247,251,185,78,78,134,108,83,87,151,72,38,90,91,147,201,198,231,146,201,100,107,43,175,146,137,68,162,177,177,145,235,34,201,68,
-  80,170,68,50,105,100,25,70,22,251,140,88,76,86,102,141,66,215,229,212,19,114,250,244,49,36,50,32,83,236,237,12,45,19,186,47,236,24,13,117,
-  117,13,229,229,229,62,134,86,91,75,109,96,85,91,213,180,209,218,64,53,148,71,113,170,182,194,182,29,167,215,213,94,229,175,109,118,252,149,141,194,
-  218,32,168,70,208,17,224,88,11,45,73,251,63,104,184,188,60,61,141,186,192,90,33,189,209,142,2,218,163,152,158,131,47,186,169,135,207,162,213,9,
-  28,223,59,164,144,65,198,158,175,84,206,179,14,2,203,31,78,161,155,117,243,140,92,15,172,26,58,131,118,210,155,234,237,191,237,116,43,95,74,121,
-  62,121,154,253,10,65,47,182,67,65,69,105,232,25,81,89,74,210,42,232,132,112,229,108,173,57,20,139,53,211,111,114,43,107,55,108,105,10,91,91,
-  101,79,171,199,150,71,32,60,47,108,189,64,249,169,242,67,124,204,252,230,84,10,165,191,222,90,206,170,227,81,11,232,79,15,29,85,122,122,148,126,
-  181,95,109,247,140,73,234,0,218,137,214,14,133,222,69,247,32,181,82,88,213,5,169,122,58,143,212,7,25,146,15,233,140,17,133,238,242,129,155,98,
-  205,219,161,57,182,250,162,162,105,114,82,167,66,219,144,150,208,176,66,109,154,91,116,7,7,119,42,189,217,35,223,123,76,143,169,50,39,209,36,82,
-  233,182,199,253,56,101,191,59,72,103,209,236,3,211,75,63,202,215,52,217,186,197,237,69,47,138,253,155,229,129,78,214,139,223,235,79,214,83,163,124,
-  73,233,53,20,37,160,41,20,21,233,217,194,202,19,20,73,47,77,151,82,252,129,171,85,111,228,252,140,55,64,112,136,27,203,175,221,244,154,26,239,
-  235,181,93,156,180,90,88,69,110,56,202,9,189,124,138,225,160,76,181,214,184,238,82,65,217,195,124,115,122,253,215,115,133,56,22,20,226,74,9,71,
-  204,199,35,33,251,238,106,154,225,92,98,77,218,66,24,33,97,250,73,227,19,41,92,157,45,200,39,72,198,173,66,126,74,31,7,130,98,164,72,88,
-  147,201,35,72,39,195,92,97,22,140,68,71,47,118,122,42,45,182,74,104,209,173,153,188,197,244,195,32,110,70,68,10,205,60,225,140,131,207,118,173,
-  252,227,177,212,220,237,143,232,124,167,229,140,8,57,204,98,179,152,162,230,2,51,95,230,249,249,169,134,226,78,67,115,17,239,232,210,148,108,54,245,
-  84,190,172,16,98,228,190,8,119,56,148,224,173,186,81,20,118,99,218,27,9,17,78,64,143,77,149,233,185,7,213,125,158,99,147,238,25,29,199,187,
-  94,197,49,6,212,247,188,183,97,237,47,94,135,128,10,255,6,193,120,240,90,81,20,200,244,253,119,205,24,132,65,248,18,114,114,114,236,223,135,104,
-  222,20,191,141,25,53,53,142,209,212,212,244,175,225,32,59,59,187,186,100,20,153,13,129,127,132,28,105,216,43,144,218,231,11,4,2,190,192,19,202,
-  210,81,132,149,48,134,92,196,108,84,85,86,101,52,113,27,180,84,84,204,140,199,231,20,23,231,230,230,214,86,150,212,150,84,22,206,154,63,191,112,
-  214,172,171,176,11,19,115,202,22,55,230,79,125,104,94,203,75,251,224,28,244,67,55,172,91,177,23,214,167,225,26,47,78,48,157,240,46,96,111,10,
-  135,240,27,92,215,47,195,142,155,157,195,174,123,189,163,28,185,232,254,7,79,192,147,123,240,41,130,119,224,12,156,6,254,24,217,58,13,203,54,237,
-  134,83,252,182,164,222,180,73,90,172,79,193,202,3,176,114,121,23,116,193,150,11,114,108,222,252,49,92,129,3,188,230,37,219,79,15,192,14,88,123,
-  9,6,224,18,92,198,62,56,132,146,215,108,126,103,179,225,125,136,189,12,11,138,43,120,20,87,204,104,131,207,224,85,248,20,218,225,60,124,4,31,
-  242,60,203,92,102,239,37,229,32,12,224,215,248,45,126,129,87,241,58,30,134,231,183,114,152,148,14,248,28,122,236,167,254,53,112,199,230,126,155,55,
-  48,147,199,225,109,120,13,62,129,139,208,135,231,240,2,158,132,100,178,11,223,194,133,229,213,53,241,248,195,115,87,237,68,190,140,76,80,145,169,168,
-  32,255,153,89,58,122,188,205,82,227,123,164,219,107,91,143,102,216,29,208,177,255,1,133,86,125,80,84,85,20,191,231,242,246,237,219,229,177,187,10,
-  67,187,12,193,138,165,155,161,72,82,102,146,97,31,186,4,50,12,213,204,78,227,56,211,76,51,166,32,53,147,58,78,127,228,65,81,241,99,80,137,
-  17,134,104,216,198,48,13,35,29,107,178,38,229,41,154,127,216,135,99,4,249,145,96,223,249,1,106,153,150,202,235,220,183,143,221,183,12,212,239,247,
-  238,221,223,61,231,220,115,207,187,251,238,219,173,225,156,13,33,45,170,24,103,105,18,147,229,77,96,142,211,35,198,255,133,52,226,80,53,250,90,46,
-  179,60,231,240,160,255,76,106,117,202,163,78,146,44,54,57,133,243,0,39,136,177,42,221,99,24,83,44,193,206,216,52,151,49,141,71,230,82,146,96,
-  40,24,162,75,113,62,191,40,24,42,92,228,240,249,28,62,199,125,14,69,81,10,130,170,9,69,192,171,70,225,181,106,135,55,137,224,76,115,187,221,
-  174,120,40,138,83,32,201,64,97,97,97,65,69,101,101,229,252,249,197,37,37,149,11,34,72,143,64,37,22,171,106,122,134,43,131,224,202,112,209,181,
-  160,36,221,178,136,154,164,170,73,180,130,59,199,61,12,217,6,98,161,42,37,42,46,161,53,92,37,170,34,198,214,52,14,129,68,1,113,79,78,167,
-  75,85,93,212,84,135,99,94,24,26,160,17,216,203,254,28,28,135,147,230,178,144,50,151,97,27,215,203,245,87,49,19,171,1,51,181,82,134,219,0,
-  79,113,214,8,165,223,125,198,27,102,53,78,59,239,191,49,227,250,3,56,225,234,88,244,99,51,215,120,71,23,232,119,51,44,106,122,174,201,211,232,
-  105,50,105,40,39,186,245,1,24,193,225,235,240,105,99,251,199,235,229,56,245,206,118,24,120,5,243,219,63,6,44,32,125,182,155,215,41,91,151,214,
-  41,245,202,233,204,58,165,223,46,84,235,17,168,87,46,217,235,73,106,111,115,148,113,186,126,24,244,23,245,44,44,234,63,199,69,22,244,220,217,7,
-  232,41,93,225,95,177,19,148,117,48,49,12,76,161,207,76,111,228,33,192,29,128,110,156,65,245,92,1,220,101,104,82,12,195,220,171,171,250,58,208,
-  105,249,110,26,79,210,207,11,103,19,144,159,84,152,235,203,245,157,160,167,121,51,107,249,181,224,72,119,210,92,88,221,3,45,137,250,132,222,3,128,
-  215,128,209,13,111,200,101,235,139,54,148,180,247,80,105,125,246,62,187,230,239,179,135,21,161,14,116,194,144,172,237,181,22,30,63,194,47,56,118,14,
-  93,101,12,215,112,60,8,97,88,185,31,62,128,0,238,231,1,97,119,180,148,51,204,103,163,213,213,157,89,173,124,226,62,145,218,108,251,200,190,90,
-  249,212,253,117,234,155,54,236,2,164,133,102,210,62,15,126,8,212,139,173,104,3,220,7,122,158,254,13,52,78,222,179,176,247,65,250,186,105,119,153,
-  164,208,6,50,63,211,103,250,233,204,60,172,208,51,146,128,137,12,129,105,54,156,140,143,226,20,150,159,125,120,118,24,250,146,210,107,188,103,61,205,
-  112,50,81,203,66,103,129,150,140,247,163,205,122,112,209,19,211,154,172,165,222,94,74,169,84,132,91,101,172,107,142,16,7,119,208,214,39,80,160,241,
-  6,89,101,188,141,48,128,78,70,95,197,120,198,218,223,1,49,65,56,178,179,61,217,18,43,160,234,20,22,16,21,10,104,99,68,188,141,226,153,177,
-  240,54,199,98,180,233,89,198,72,36,17,61,185,243,105,245,49,150,178,180,100,127,159,13,19,194,11,245,215,49,3,203,208,175,103,162,3,229,193,22,
-  24,94,203,224,241,104,1,131,123,163,178,251,17,205,99,240,133,188,112,234,150,212,148,64,74,128,105,121,121,154,7,39,106,105,12,51,152,102,183,172,
-  182,105,217,148,65,232,130,26,249,102,178,41,180,187,180,183,196,195,6,43,17,180,100,141,132,46,161,205,93,92,103,211,178,113,2,163,199,92,80,178,
-  48,98,225,113,180,248,59,120,45,188,100,6,89,41,141,206,122,126,6,206,240,173,80,122,201,214,42,183,218,6,228,61,246,42,169,67,110,0,224,6,
-  96,56,120,66,2,53,211,27,31,192,201,110,4,36,12,155,66,81,150,56,217,68,96,246,16,98,234,105,66,48,24,156,19,143,34,3,19,9,113,121,
-  99,111,68,171,118,131,24,195,180,88,210,135,28,79,61,25,121,5,38,58,230,198,161,216,64,161,129,121,57,57,57,148,231,113,51,249,212,172,113,227,
-  178,44,73,158,120,108,82,110,110,238,244,130,89,247,110,231,33,95,40,116,28,118,18,143,67,53,248,124,219,57,93,239,43,109,202,49,249,152,188,91,
-  217,173,144,225,43,88,195,125,95,194,153,97,220,3,119,224,54,28,163,115,92,30,195,239,112,29,22,119,193,98,19,127,194,53,184,12,117,252,23,88,
-  197,143,200,107,161,13,126,130,106,254,185,188,145,111,228,63,128,224,96,148,116,156,76,138,57,151,225,36,69,139,25,91,249,175,80,197,171,120,167,220,
-  41,159,130,115,80,118,17,46,194,46,120,3,46,152,108,133,42,106,86,182,140,192,75,196,245,124,100,143,232,87,195,187,212,150,44,233,166,22,193,13,
-  120,237,42,156,39,182,195,0,252,65,189,224,22,106,155,248,143,32,184,154,15,241,168,60,196,90,254,27,92,33,118,200,29,242,22,254,51,232,196,67,
-  242,33,121,3,191,5,55,225,111,208,232,151,170,151,40,202,190,96,20,222,15,239,193,63,176,142,159,133,239,225,153,103,43,42,190,133,10,19,127,193,
-  230,17,216,7,155,233,176,28,150,69,91,118,26,214,242,211,176,124,47,156,128,163,80,195,123,160,7,184,196,37,32,210,255,3,73,54,63,153,97,225,
-  166,138,88,108,68,250,159,163,82,175,196,49,26,49,26,163,254,184,89,76,250,23,133,84,107,108,20,85,20,190,231,116,118,118,134,157,125,65,41,187,
-  107,45,40,74,119,177,17,9,6,223,18,138,214,37,44,85,40,75,91,37,213,95,74,228,17,52,86,249,97,210,19,169,193,168,32,15,69,194,115,0,
-  173,138,136,32,15,31,20,246,170,24,53,24,21,227,15,20,129,69,17,43,160,8,213,127,166,215,115,103,199,62,66,162,223,183,231,187,231,220,123,206,
-  157,51,51,119,246,48,160,240,145,242,20,83,86,100,51,136,126,64,241,95,48,122,101,0,28,45,75,209,188,189,95,214,255,237,167,23,204,254,57,88,
-  18,244,4,121,169,182,228,89,94,84,85,222,151,232,151,13,230,5,222,98,246,236,166,38,254,101,179,218,172,164,109,9,219,234,143,68,194,113,18,22,
-  11,123,118,34,145,201,100,156,76,42,21,137,164,24,161,104,77,52,18,137,232,52,91,87,217,131,24,33,182,176,134,109,207,157,53,191,133,49,75,35,
-  55,191,94,7,225,112,101,13,155,94,247,36,170,81,21,173,106,209,151,9,59,165,184,15,53,17,199,137,48,25,145,92,174,62,151,155,58,53,202,113,
-  56,234,52,233,182,172,68,54,155,205,120,151,101,32,103,217,225,107,211,213,215,141,177,210,99,132,57,34,157,86,142,250,4,220,25,110,23,184,25,247,
-  44,184,219,129,202,84,84,221,66,181,130,157,81,42,162,76,154,165,238,81,245,110,136,166,116,92,179,123,112,71,152,110,85,135,161,227,113,118,39,171,
-  113,162,112,159,140,9,121,167,160,161,133,251,165,45,109,241,212,77,162,39,46,168,74,168,113,135,23,67,79,83,1,63,204,173,176,94,180,138,171,128,
-  76,161,234,105,166,80,211,4,85,40,131,30,17,170,89,168,10,154,162,166,10,183,121,89,64,108,202,109,206,185,231,64,102,198,167,135,91,252,10,252,
-  86,135,7,99,177,132,203,7,73,61,72,81,106,18,109,106,50,47,182,209,189,130,55,185,76,13,21,20,164,80,225,242,194,4,222,169,38,237,134,188,
-  230,110,150,185,141,215,119,142,63,149,85,217,117,32,220,39,46,60,230,90,197,96,49,184,226,101,104,159,209,105,116,26,212,186,207,216,62,248,226,17,
-  96,169,227,235,11,247,56,184,237,224,126,3,106,136,106,152,89,109,205,31,211,210,82,220,4,50,233,206,117,87,130,187,131,119,201,152,254,222,199,65,
-  6,11,43,193,178,12,119,27,252,125,12,142,182,151,142,185,59,132,246,129,123,131,251,36,61,196,55,194,71,213,18,55,10,97,197,244,153,165,161,212,
-  14,212,74,195,229,196,66,84,86,114,211,72,229,116,165,168,56,83,78,64,6,19,105,13,80,192,219,136,98,90,34,66,150,201,148,144,131,248,22,15,
-  86,119,198,10,195,252,227,77,241,111,71,186,139,160,171,98,47,127,28,52,140,28,46,208,130,130,38,209,88,181,28,244,27,160,219,200,84,49,177,122,
-  225,178,248,51,241,30,251,217,96,33,78,181,134,200,10,62,138,186,51,203,138,37,172,160,16,50,64,1,50,4,55,192,111,159,194,28,88,218,43,70,
-  248,165,143,21,106,20,133,168,82,168,90,154,164,28,10,11,25,231,235,23,171,30,160,197,112,226,69,160,202,98,51,197,100,235,129,209,60,187,191,141,
-  90,133,216,149,39,236,57,4,235,27,123,118,194,15,176,100,220,215,203,161,61,78,143,202,148,92,64,208,230,196,210,78,236,170,59,228,60,190,179,73,
-  114,129,36,80,166,156,168,159,143,155,210,77,115,59,211,183,182,173,154,192,61,248,148,235,161,123,161,28,38,29,81,136,11,255,57,153,30,145,105,120,
-  58,48,98,93,20,248,51,224,103,13,164,174,239,27,241,146,181,75,105,246,101,158,199,211,240,52,96,47,160,23,28,148,49,74,67,105,194,119,60,104,
-  207,91,5,132,178,222,106,108,100,204,228,63,150,233,211,234,234,234,26,26,26,166,52,84,151,0,253,80,250,210,161,87,74,33,163,177,209,174,15,49,
-  236,252,93,140,252,221,26,185,178,201,51,24,249,230,124,62,239,87,151,244,138,198,198,145,163,199,94,189,5,147,91,112,11,174,71,173,235,188,145,39,
-  146,201,183,172,100,23,94,192,83,120,28,139,184,31,15,226,87,248,35,74,124,27,247,225,121,60,128,107,112,206,7,56,71,219,195,140,35,248,19,94,
-  132,87,176,19,63,198,147,248,11,110,195,173,184,27,11,158,157,198,223,241,87,252,13,119,226,18,158,127,13,159,243,120,17,74,53,58,95,215,237,228,
-  10,61,163,253,173,28,233,202,29,184,139,185,156,173,27,95,194,205,248,61,190,218,203,13,248,157,111,27,240,51,236,192,61,158,237,193,77,204,141,176,
-  17,244,120,212,139,52,95,199,47,240,211,1,252,28,247,250,156,199,184,0,39,97,45,118,67,55,235,90,124,23,159,247,121,12,223,244,120,134,185,20,
-  255,194,101,248,142,207,247,240,4,155,166,238,97,143,167,31,49,15,225,89,220,142,95,122,254,106,156,203,232,194,63,244,19,213,143,54,249,51,190,223,
-  143,47,96,235,27,120,142,111,174,27,249,227,27,33,202,129,63,66,52,202,12,52,68,76,24,166,1,236,105,229,121,38,50,193,155,67,47,214,12,32,
-  120,43,166,79,222,199,97,227,17,74,89,214,191,181,122,212,213,166,55,171,149,207,155,241,15,43,151,185,198,200,194,194,192,195,192,112,137,9,76,17,
-  2,22,120,228,242,8,107,23,1,147,6,44,44,76,30,50,210,124,124,92,82,92,60,178,178,252,132,1,31,30,192,73,24,112,128,129,135,143,143,143,
-  204,1,145,7,92,13,28,13,203,153,14,8,52,240,54,244,48,45,96,58,32,219,192,241,142,103,23,199,14,40,220,69,128,198,45,115,96,53,211,127,
-  182,201,223,24,119,137,54,136,237,18,69,135,235,123,152,26,56,102,112,237,1,74,238,16,221,35,186,3,69,114,1,208,1,187,56,246,112,236,130,67,
-  236,108,252,42,14,136,54,24,53,24,3,161,85,131,113,11,163,204,26,198,53,140,58,147,186,24,15,76,96,4,146,12,31,122,25,25,24,30,116,48,
-  30,152,202,216,192,177,12,40,64,16,128,85,54,112,32,137,252,231,71,19,248,64,148,57,237,16,69,62,58,58,58,13,44,131,13,50,49,49,51,49,
-  49,49,18,6,76,40,128,25,5,148,148,148,116,51,133,134,22,19,6,161,161,165,72,0,149,87,86,87,255,132,249,1,243,35,32,126,192,124,12,12,
-  239,115,63,100,126,204,124,159,42,16,100,18,46,136,87,142,155,26,240,25,51,2,62,226,126,202,188,154,101,13,139,32,139,26,147,0,139,0,11,63,
-  11,0,149,149,107,108,20,85,20,199,239,61,103,118,247,238,116,118,103,33,210,244,177,1,98,3,26,210,212,170,21,49,209,68,141,193,109,221,218,196,
-  15,216,216,42,45,96,49,208,86,136,24,249,230,41,214,22,233,67,40,15,17,164,93,192,82,170,82,192,40,49,181,208,9,225,139,196,4,98,76,17,
-  80,217,26,124,144,0,109,12,250,65,107,199,51,59,219,237,211,128,255,223,156,251,58,247,222,115,230,206,204,238,85,9,66,136,44,225,42,28,106,150,
-  92,10,1,98,6,105,183,29,48,220,170,21,196,66,246,106,233,218,127,236,148,24,245,78,243,193,248,244,100,237,133,165,32,20,168,187,239,114,198,148,
-  184,51,205,78,109,8,28,133,251,179,181,72,105,132,175,82,127,102,166,223,175,148,97,24,74,169,140,12,247,202,224,110,128,165,235,166,105,6,167,74,
-  169,0,187,121,138,174,115,79,215,211,2,174,252,126,127,32,32,68,121,121,121,109,32,16,206,101,194,92,27,97,214,220,188,188,96,94,48,131,35,24,
-  134,57,93,134,171,160,49,166,104,244,217,104,212,84,78,138,188,104,138,156,9,42,145,111,66,28,214,239,164,37,132,211,211,117,189,220,8,250,3,254,
-  0,103,89,170,242,27,165,32,169,236,107,146,178,233,33,154,71,157,146,210,184,248,169,116,32,125,32,157,206,72,42,182,203,133,51,250,40,153,246,144,
-  164,65,201,245,147,130,42,133,216,246,131,164,197,212,200,174,27,7,64,244,68,18,157,239,239,107,83,55,125,109,106,135,186,52,39,213,170,74,181,178,
-  219,148,21,147,226,187,87,206,235,231,244,243,122,23,63,127,123,190,160,60,174,8,132,29,184,249,48,133,104,33,219,27,108,185,84,64,235,4,109,160,
-  189,210,201,224,145,138,82,245,60,29,146,206,136,105,183,3,153,244,24,219,19,226,77,122,192,94,79,203,120,143,54,118,150,89,213,253,233,246,87,220,
-  26,100,51,169,89,242,250,158,252,184,47,166,226,190,184,207,74,79,181,86,167,90,225,171,170,79,235,211,90,151,76,140,222,146,51,185,79,23,36,157,
-  149,165,27,95,221,42,183,74,122,141,6,164,216,40,84,76,198,90,161,163,21,254,87,217,52,247,11,255,141,89,103,179,186,54,193,217,43,242,244,162,
-  166,45,99,175,241,47,102,157,106,244,125,166,159,105,129,211,234,27,117,221,75,126,242,208,162,228,65,219,191,186,71,62,159,174,75,187,152,10,132,115,
-  62,15,210,50,62,30,67,132,238,229,175,135,106,137,223,49,202,164,121,86,81,67,161,16,86,22,63,216,157,146,60,188,55,133,216,130,34,150,21,151,
-  98,164,80,144,78,230,223,121,226,219,116,110,157,218,44,83,31,3,233,137,210,20,148,35,246,248,196,215,105,162,215,199,43,236,108,119,165,19,85,239,
-  105,144,238,76,50,173,34,97,5,9,72,90,69,86,68,211,212,227,150,135,51,246,241,107,149,216,70,18,114,32,73,26,63,10,211,206,231,140,164,53,
-  139,94,176,102,177,211,202,16,163,117,211,3,199,55,8,49,122,36,21,224,100,163,28,221,62,30,46,215,90,108,24,75,194,97,43,223,114,110,152,147,
-  234,159,67,62,142,48,205,172,164,145,108,211,158,138,156,144,185,245,80,181,203,67,202,197,98,72,253,229,123,174,29,155,225,143,194,218,97,252,209,19,
-  95,47,226,129,196,193,216,25,92,25,86,136,128,239,143,51,45,180,34,205,81,190,137,49,96,18,222,132,105,19,185,228,221,237,33,40,73,56,92,180,
-  59,1,134,228,97,24,130,78,249,169,231,156,214,13,195,188,12,28,201,25,133,136,174,103,70,255,248,160,215,235,125,185,178,178,136,21,137,68,150,78,
-  213,202,21,43,86,178,155,175,103,92,149,175,190,135,23,141,255,254,76,108,150,149,61,61,69,37,37,37,81,87,80,232,170,56,234,46,175,88,181,188,
-  234,165,170,170,85,21,203,115,22,221,191,96,193,48,190,152,121,16,92,184,145,217,163,142,50,199,212,111,176,13,47,75,135,118,252,8,119,225,218,94,
-  88,187,110,205,154,221,216,134,59,241,48,30,196,143,113,51,110,197,24,246,225,53,184,1,111,97,19,246,96,93,138,119,82,28,72,209,203,56,171,63,
-  76,226,238,50,190,159,179,207,113,104,196,70,124,151,57,206,88,184,19,46,202,63,193,225,18,92,100,62,135,253,76,135,28,199,233,95,134,125,56,113,
-  172,67,238,229,254,9,168,169,169,121,15,7,229,160,220,132,99,108,73,177,63,197,151,248,59,56,212,99,61,54,51,71,153,83,248,9,54,48,173,204,
-  17,230,36,94,129,61,232,166,208,137,135,48,38,63,192,234,234,234,247,113,24,186,241,214,109,172,35,201,45,112,203,201,252,156,164,11,93,222,198,22,
-  60,134,253,201,250,245,110,216,142,35,48,2,23,228,5,249,15,236,75,219,129,160,233,26,104,82,19,92,35,227,148,224,142,132,36,215,98,2,56,169,
-  39,120,142,158,92,193,255,206,5,255,2,227,253,192,200,0,6,127,152,192,20,7,7,135,7,16,240,128,65,3,63,80,132,157,129,161,79,170,65,160,
-  65,13,136,203,27,4,14,60,96,108,224,63,192,207,97,194,193,241,239,52,72,111,3,23,131,15,24,252,102,250,197,244,143,233,63,211,119,166,31,76,
-  63,153,90,152,91,152,123,128,112,61,16,2,0,117,84,109,108,20,69,24,158,217,119,187,183,119,183,119,219,18,114,222,213,227,210,59,26,109,204,181,
-  154,88,73,35,72,137,63,234,85,14,127,24,174,189,68,4,75,85,42,88,44,198,4,53,254,120,131,4,252,224,71,49,77,68,98,116,18,18,238,31,
-  65,161,128,168,237,104,53,226,7,122,162,82,84,40,203,159,250,5,10,138,196,248,209,245,157,221,187,43,70,120,158,157,153,247,227,153,153,119,119,118,
-  247,101,174,177,10,26,25,107,138,189,194,43,94,45,124,25,244,255,25,10,150,234,86,48,118,137,235,255,153,166,49,195,115,53,173,234,147,165,251,10,
-  175,107,102,45,218,130,170,218,36,86,102,71,153,174,105,70,210,219,40,87,44,230,242,166,105,153,197,96,208,36,228,84,103,198,9,137,68,98,222,188,
-  132,25,183,44,235,90,130,157,176,20,162,209,104,196,34,125,132,236,16,57,201,100,50,30,161,206,74,42,100,173,108,42,154,106,75,181,197,105,154,77,
-  176,178,30,44,202,91,151,33,25,181,172,124,62,66,80,34,187,88,164,61,253,229,151,69,66,150,21,204,83,65,150,153,50,155,58,91,48,67,156,143,
-  25,195,213,176,94,116,136,197,34,130,221,204,143,210,32,194,216,234,102,177,21,233,41,141,235,50,128,215,145,23,112,23,50,134,55,49,38,231,108,191,
-  69,182,59,105,65,114,39,35,50,19,199,249,11,230,136,121,200,40,135,78,100,48,80,106,47,135,74,52,17,115,238,173,140,137,14,92,132,139,220,141,
-  219,175,119,22,156,230,167,57,54,139,101,42,34,76,76,163,237,222,200,48,197,48,205,200,80,155,138,126,119,201,30,46,76,39,224,4,68,72,246,56,
-  105,42,102,190,147,190,112,148,187,182,211,249,90,155,211,41,134,185,123,179,232,193,53,179,89,225,112,119,152,99,2,123,221,185,146,50,134,177,237,94,
-  191,184,201,199,170,69,26,113,220,202,233,142,90,47,182,236,11,78,55,60,221,56,106,76,134,219,112,141,152,35,182,112,117,117,46,22,49,39,134,49,
-  188,70,116,54,211,201,154,222,73,226,8,103,110,82,222,45,151,99,196,63,114,172,99,88,207,36,71,27,109,169,109,227,251,195,50,140,92,132,29,206,
-  198,187,84,16,237,145,85,50,135,182,18,207,116,51,182,51,199,166,13,228,211,192,14,7,72,228,70,132,69,67,153,50,200,167,150,111,190,173,172,239,
-  54,156,165,242,118,122,176,13,168,49,218,199,141,50,223,144,13,76,54,162,62,179,83,189,223,231,87,200,33,181,230,88,15,166,102,22,226,134,77,41,
-  236,64,205,233,99,178,79,133,101,59,114,181,164,211,207,178,89,217,59,251,210,151,155,24,123,107,201,48,191,243,172,182,219,24,229,237,76,238,224,50,
-  38,235,100,207,92,239,126,122,81,39,26,30,103,45,69,205,243,52,47,122,53,146,238,28,104,10,252,106,88,191,126,195,67,15,244,245,229,214,42,116,
-  117,117,245,175,94,221,79,62,93,131,131,131,75,31,121,248,209,231,181,66,161,96,207,226,158,187,238,32,12,20,20,242,249,161,238,161,39,41,91,168,
-  97,96,192,182,215,86,113,255,125,15,174,90,185,114,221,186,199,111,216,248,196,83,239,66,98,151,182,75,251,10,232,51,35,107,175,185,215,76,36,14,
-  194,215,112,50,252,43,252,13,63,192,169,240,179,250,208,71,176,3,62,132,83,21,126,2,199,96,2,222,135,3,176,31,14,193,183,30,143,193,59,240,
-  57,28,133,159,224,31,184,0,91,245,195,160,56,74,84,74,53,250,234,137,202,248,165,199,247,64,194,23,30,157,240,55,160,248,42,191,18,95,132,35,
-  112,134,159,225,111,130,207,55,224,3,248,14,254,132,243,176,69,31,131,49,56,9,111,83,155,34,30,135,239,97,18,206,194,38,253,103,120,70,159,130,
-  42,79,192,111,240,58,236,171,85,56,91,233,75,240,49,156,131,63,96,179,94,130,18,124,10,37,143,101,248,17,198,225,119,184,4,159,193,69,248,5,
-  254,162,246,156,126,196,208,244,58,221,210,185,30,242,91,189,207,160,206,168,85,189,152,250,253,17,107,121,210,178,43,80,173,80,87,35,51,149,214,143,
-  254,11,125,148,93,108,20,85,20,199,239,199,233,236,236,206,216,29,171,134,157,118,59,93,186,213,7,92,76,140,16,107,44,137,41,62,172,82,125,16,
-  106,55,132,23,194,11,2,45,5,131,154,88,146,131,162,4,91,17,241,3,234,7,189,90,44,31,129,55,162,143,123,35,144,128,242,80,40,79,160,237,
-  152,144,32,31,137,111,24,19,195,120,238,204,46,253,136,250,255,237,61,115,238,185,231,126,156,189,179,187,159,11,22,171,153,93,225,137,199,106,145,255,
-  145,184,159,2,38,61,99,188,117,113,255,46,143,99,179,107,8,102,89,198,138,216,23,177,67,159,142,53,110,61,195,38,152,149,97,150,176,154,77,86,
-  166,226,218,110,165,82,46,87,236,154,114,132,239,251,173,173,126,206,79,231,252,68,65,11,201,105,73,228,251,105,151,148,107,110,78,103,156,116,58,159,
-  207,231,124,50,109,109,109,121,215,37,167,53,95,34,91,114,131,39,114,182,91,42,149,242,109,102,204,109,116,107,106,116,237,7,140,178,164,74,153,182,
-  36,223,109,76,179,158,114,79,143,109,225,35,88,196,118,207,203,189,106,171,2,195,98,184,88,117,34,29,85,57,120,134,71,63,114,99,191,167,194,171,
-  80,77,69,22,166,16,57,102,35,43,170,149,168,161,58,68,182,9,71,121,117,73,18,82,195,92,167,244,62,62,179,67,21,17,116,171,126,38,10,176,
-  43,156,226,209,202,200,83,67,184,150,150,238,194,174,232,77,124,43,76,207,240,25,78,79,30,114,61,197,89,117,64,9,92,74,60,167,250,48,139,101,
-  204,50,218,236,197,200,73,142,163,78,113,93,8,219,177,61,108,162,57,212,104,179,55,162,151,213,46,174,10,225,243,201,144,218,16,53,68,129,46,40,
-  228,39,27,168,152,248,8,63,188,146,60,173,141,72,71,193,64,117,155,9,170,69,61,170,14,112,250,88,158,231,169,206,14,12,24,243,204,29,235,245,
-  84,7,230,141,105,96,232,49,77,53,99,86,139,17,126,218,209,46,22,181,75,8,19,171,83,93,87,221,81,243,187,230,198,105,214,160,46,83,21,102,
-  173,34,181,215,163,118,154,63,200,38,95,160,14,15,151,238,94,49,9,19,214,200,83,19,214,36,132,143,51,189,92,119,51,22,174,208,15,49,148,102,
-  154,122,108,172,147,233,7,153,14,104,18,187,247,236,238,85,239,4,127,191,207,169,142,64,63,205,194,190,112,125,124,90,189,140,46,45,220,16,174,214,
-  125,179,175,239,100,129,6,58,104,88,47,210,105,189,74,245,60,108,110,172,27,173,24,32,140,21,11,176,106,44,140,195,125,234,115,235,171,252,23,41,
-  147,97,113,49,71,252,95,52,48,176,237,181,109,155,72,253,253,253,91,183,108,223,190,101,235,176,216,3,123,161,151,148,173,11,57,245,6,99,245,246,
-  190,148,205,246,198,218,184,169,174,149,155,55,239,124,242,237,161,161,113,65,191,159,81,248,2,70,193,31,23,247,228,180,115,195,249,8,142,193,81,56,
-  14,39,224,39,57,120,65,30,146,191,214,184,40,47,203,115,242,48,28,129,67,48,54,143,175,225,154,52,92,150,71,200,159,203,4,92,146,227,16,201,
-  155,206,167,176,15,190,131,111,137,195,96,86,153,32,174,72,195,89,169,96,74,26,190,2,195,117,103,38,115,199,185,42,13,95,194,24,159,101,175,48,
-  246,188,60,40,127,227,127,202,91,206,135,240,139,252,38,110,134,105,57,45,63,16,239,194,199,176,11,126,119,246,199,253,105,137,176,135,190,159,250,9,
-  234,207,159,229,168,28,134,79,224,115,8,249,95,242,182,51,2,119,229,65,120,15,254,144,7,224,51,88,98,3,3,78,56,4,247,18,82,96,154,4,
-  1,244,218,207,35,25,95,24,149,208,84,187,70,122,185,8,27,0,230,101,10,250,187,139,119,97,11,112,160,33,134,199,107,39,217,14,252,3,149,84,
-  255,111,83,85,20,191,231,246,180,125,93,223,235,67,179,96,219,189,182,9,152,161,113,6,253,5,13,234,156,65,221,183,146,248,21,155,57,4,127,48,
-  49,113,102,93,245,7,67,52,185,195,41,8,252,194,36,3,225,135,86,33,72,136,95,16,157,67,54,236,115,34,248,221,33,48,217,208,245,237,235,95,
-  65,124,158,123,219,117,29,86,163,159,79,207,185,231,158,115,238,57,239,222,119,95,135,129,51,137,168,210,245,53,71,128,45,129,179,255,5,94,117,21,
-  86,122,107,148,238,92,140,157,4,95,163,74,225,203,170,248,150,213,192,242,234,162,198,150,117,172,150,49,75,153,45,225,112,234,249,84,32,16,136,4,
-  152,86,137,176,22,14,107,145,112,56,28,9,71,34,145,88,32,98,220,26,137,25,17,133,80,188,78,193,188,173,46,97,22,77,67,215,117,211,52,35,
-  209,104,168,2,90,32,16,36,232,20,13,153,84,199,136,25,150,101,153,9,73,35,144,180,44,61,153,52,12,163,193,210,245,56,129,186,169,42,101,52,
-  88,13,148,99,233,102,194,178,214,38,18,9,61,169,107,169,84,74,238,34,158,209,220,35,224,198,238,88,203,197,20,184,33,17,119,231,64,156,2,231,
-  28,56,94,167,141,9,96,238,106,70,131,216,76,217,142,71,220,46,76,49,64,206,183,192,109,86,19,93,244,131,187,151,222,87,30,11,177,92,135,179,
-  169,48,8,162,35,187,141,138,20,238,83,39,149,127,82,116,228,155,164,37,48,247,30,100,135,41,94,120,153,226,217,13,42,238,172,57,208,57,99,204,
-  24,243,79,237,10,237,10,137,123,221,152,232,248,224,217,125,218,62,237,253,5,144,195,149,245,74,119,74,157,187,0,217,67,144,123,37,187,23,114,29,
-  174,215,93,55,26,29,137,14,60,176,231,174,139,47,29,187,219,185,95,174,117,158,115,47,203,61,228,26,11,80,0,233,201,166,138,226,160,56,15,219,
-  178,179,96,251,133,153,209,156,113,122,108,247,18,8,250,197,220,67,224,62,36,76,55,84,218,165,51,8,110,189,152,4,199,239,248,243,243,106,176,239,
-  81,122,179,212,206,52,20,187,184,67,144,107,182,15,150,102,249,131,180,185,92,51,147,93,105,103,155,50,116,144,110,154,135,53,123,26,10,148,177,65,
-  188,232,172,215,25,141,245,76,67,241,170,240,211,209,2,179,183,216,43,236,167,229,9,173,34,213,196,154,200,235,149,103,99,7,108,31,105,205,246,218,
-  1,58,108,211,230,180,112,36,220,231,97,215,60,172,47,40,93,69,230,59,89,254,181,197,137,93,55,80,127,156,179,113,100,199,107,150,82,236,52,21,
-  116,53,42,247,140,176,152,189,130,186,249,23,111,183,88,45,30,145,81,157,45,102,141,109,117,110,162,36,74,233,123,124,12,143,250,246,196,216,81,31,
-  27,67,233,219,138,185,155,233,218,211,83,9,175,208,4,50,97,230,26,179,27,153,234,114,3,53,136,10,191,221,7,149,13,236,19,64,19,17,255,243,
-  209,209,7,201,56,179,146,109,95,41,226,215,210,228,18,113,167,91,183,183,228,116,250,196,236,94,153,198,236,27,5,150,233,43,179,56,231,85,89,153,
-  85,61,3,255,3,151,170,248,142,121,233,125,85,246,253,87,2,240,42,128,235,192,61,240,55,223,50,244,180,181,181,245,244,180,180,180,244,194,155,138,
-  175,43,62,92,129,237,208,11,111,80,164,143,252,237,237,237,221,93,153,76,166,171,171,187,123,39,174,217,129,187,249,110,106,32,63,122,40,126,251,59,
-  97,7,52,87,32,73,72,183,182,182,166,75,216,8,171,238,140,28,230,95,225,135,56,73,114,152,171,191,166,217,224,111,120,5,47,224,56,126,142,95,
-  98,30,109,156,193,89,156,195,121,76,127,143,233,211,252,133,179,120,192,243,29,201,89,236,247,252,130,69,126,132,87,113,24,63,197,9,210,195,164,151,
-  248,9,78,225,57,252,6,127,82,28,197,33,229,25,34,78,85,112,16,167,21,127,85,252,17,79,162,131,167,255,129,253,30,217,77,202,40,113,176,180,
-  86,174,251,26,63,198,223,113,68,241,103,197,207,176,80,150,133,224,99,147,188,80,51,23,156,15,78,240,9,254,46,95,192,5,204,194,85,158,133,75,
-  52,22,185,223,243,45,238,247,76,195,52,124,129,213,121,166,196,31,240,148,226,9,252,3,199,104,38,71,201,203,56,193,159,184,136,239,120,206,147,188,
-  237,225,200,80,138,129,172,22,80,35,139,105,128,172,129,44,77,218,69,2,122,165,93,187,56,191,158,213,226,62,186,100,36,197,250,203,34,156,51,14,
-  178,83,137,229,126,181,21,34,171,150,171,171,248,45,127,1,157,147,65,108,84,85,20,134,239,57,115,103,230,206,248,102,222,67,27,210,146,153,182,41,
-  2,99,44,133,18,36,93,128,38,38,226,116,58,69,23,154,20,173,45,38,141,65,42,221,176,112,99,228,80,140,182,69,106,3,5,27,82,211,73,186,
-  144,24,23,198,77,17,48,189,33,49,106,156,176,113,99,149,197,35,49,181,17,17,138,96,165,173,62,207,125,51,181,83,90,26,226,255,189,115,222,57,
-  231,158,119,239,123,119,238,124,5,40,140,214,177,225,142,225,98,86,34,185,98,26,50,87,63,214,150,45,244,163,9,74,31,94,54,209,226,64,104,217,
-  168,44,148,49,206,152,60,181,93,56,133,122,84,220,95,24,229,153,36,155,227,160,104,73,51,251,211,45,145,10,165,84,162,60,97,149,171,152,165,202,
-  203,147,73,123,93,85,85,124,169,44,21,143,178,212,67,209,100,50,34,186,94,105,109,110,109,99,181,102,91,219,186,178,205,217,214,230,108,251,158,246,
-  182,231,246,36,140,44,38,97,177,85,198,153,186,202,186,186,184,173,20,87,237,165,42,52,199,45,139,45,22,139,219,89,21,77,167,211,153,76,66,89,
-  171,40,146,224,47,177,34,177,136,82,233,22,28,2,101,171,112,141,242,170,189,164,123,13,93,219,109,116,59,188,125,244,170,254,8,244,75,222,48,234,
-  17,28,207,163,240,66,116,10,71,102,129,187,102,128,42,70,126,230,232,211,13,131,106,80,253,240,184,241,31,31,88,140,11,62,23,18,84,33,104,163,
-  254,26,104,119,110,16,189,90,234,208,155,249,249,183,221,195,159,67,31,56,97,229,239,233,37,216,20,22,53,251,183,142,193,0,84,111,105,216,146,170,
-  170,118,243,64,182,183,151,108,106,226,251,36,208,54,122,153,131,227,64,253,224,13,131,160,119,249,133,50,130,118,26,111,202,46,232,144,251,148,112,239,
-  162,151,244,230,128,54,186,97,55,172,107,141,31,127,125,49,46,120,151,95,130,42,141,119,159,160,239,192,93,227,94,64,247,19,116,9,221,43,64,39,
-  193,235,244,202,168,171,198,221,174,243,208,13,74,165,194,188,35,143,158,189,100,14,202,145,245,221,235,31,204,184,89,79,160,219,225,158,197,145,163,232,
-  197,220,103,92,135,186,4,127,189,147,81,150,18,13,66,73,65,111,81,132,30,214,41,125,152,2,132,20,23,4,196,159,242,141,28,194,125,100,95,220,
-  75,106,238,77,253,218,233,40,41,58,6,254,17,36,181,112,24,123,170,135,240,67,52,141,237,130,182,241,238,110,190,217,3,164,244,147,122,215,11,82,
-  40,145,230,99,41,165,211,192,203,112,38,194,236,148,208,252,163,216,102,26,160,40,73,115,139,147,217,235,157,197,178,205,165,92,215,120,64,175,17,250,
-  17,30,145,250,157,123,215,213,159,241,42,180,86,159,54,139,213,230,14,233,29,185,122,189,85,15,0,57,58,168,131,94,72,135,44,157,202,29,146,74,
-  133,149,14,18,126,239,76,89,147,76,62,114,38,112,57,50,196,70,114,82,77,74,242,109,138,99,146,121,191,54,85,172,229,99,151,99,147,150,57,129,
-  182,174,167,231,121,157,152,78,209,90,161,119,209,99,252,210,146,1,222,46,60,26,54,158,66,166,242,52,223,74,65,191,237,190,148,221,8,87,16,94,
-  1,62,14,8,136,8,203,132,1,48,3,184,194,224,10,221,70,125,112,12,142,179,239,133,76,166,15,210,233,221,75,213,203,3,77,77,255,253,123,55,
-  25,7,254,85,170,123,82,163,15,224,197,30,120,118,169,178,217,108,99,99,115,115,182,31,236,172,61,0,9,59,193,11,191,255,63,233,131,250,13,163,
-  88,49,138,99,161,115,12,7,21,172,95,101,231,121,188,46,175,203,206,3,211,114,138,57,17,152,150,23,152,105,57,43,199,152,243,171,50,85,228,68,
-  96,150,251,167,125,46,50,167,240,182,252,179,200,221,34,63,226,140,156,145,183,153,9,188,37,111,21,125,41,35,176,200,79,216,139,165,249,114,254,146,
-  127,203,131,7,41,72,193,171,240,133,92,141,47,125,206,49,125,248,143,60,19,184,35,239,200,63,228,85,88,96,2,223,195,57,57,138,254,246,140,226,
-  111,242,141,238,96,129,121,249,160,86,224,72,240,154,60,25,248,69,206,227,60,254,46,191,13,221,144,55,101,64,10,137,76,80,10,7,156,128,4,199,
-  228,224,103,232,251,98,196,157,166,94,192,68,1,255,57,81,4,138,102,230,19,101,66,46,197,140,20,230,50,222,32,229,191,227,97,98,184,196,194,196,
-  0,6,44,66,30,25,121,113,16,144,39,195,213,192,184,138,113,18,35,68,170,139,49,161,132,161,164,132,3,12,74,14,92,99,100,130,1,126,24,240,
-  121,201,178,131,237,11,203,79,20,248,133,101,47,11,3,11,43,11,35,10,4,242,5,0,99,252,192,200,177,128,233,192,55,230,255,44,0,213,85,77,
-  104,19,65,20,158,55,153,73,150,184,110,66,45,109,18,99,26,208,162,160,105,226,65,47,122,40,212,67,32,105,10,98,139,213,210,147,39,45,165,23,
-  17,68,240,97,109,109,107,173,253,181,53,23,99,171,30,5,109,17,42,66,23,188,136,134,30,164,158,109,47,33,215,22,180,32,182,235,155,108,154,198,
-  130,226,193,10,126,223,206,123,223,123,243,222,176,187,51,48,115,192,89,17,65,253,29,108,105,173,96,157,108,137,102,75,5,5,8,219,149,146,188,172,
-  193,96,94,138,57,231,26,185,54,70,145,202,253,125,112,47,139,199,227,231,125,218,17,159,230,211,125,158,128,39,96,4,2,1,119,1,154,214,81,103,
-  180,41,180,183,119,182,135,8,42,10,213,133,140,36,249,100,138,160,27,117,134,225,241,4,131,186,65,208,109,24,198,94,143,238,118,211,194,113,125,55,
-  192,124,245,154,79,179,102,1,35,214,49,188,192,24,134,88,190,197,12,155,251,205,240,116,176,127,30,204,11,152,64,183,178,11,157,102,2,19,249,203,
-  120,186,203,154,0,76,196,93,97,198,162,90,216,101,93,163,175,167,222,250,176,245,4,148,136,49,90,243,48,13,252,68,123,103,45,1,182,46,156,197,
-  86,60,96,25,24,193,16,222,96,20,92,197,22,188,137,167,176,86,145,18,107,23,103,247,97,237,194,33,108,141,81,231,243,147,180,102,246,196,166,255,
-  69,87,62,92,242,8,155,254,141,75,42,152,123,12,31,16,222,167,225,223,135,101,175,240,75,233,223,244,103,222,2,190,2,107,28,42,233,196,225,25,
-  134,30,250,114,15,86,152,126,172,204,56,205,42,211,101,86,177,204,81,250,33,213,120,93,89,171,65,217,229,24,134,4,14,209,126,8,141,105,90,53,
-  25,236,162,62,34,19,94,47,54,216,235,8,141,80,67,195,244,210,68,166,3,35,11,49,140,152,21,72,39,127,14,150,39,169,63,115,28,67,102,20,
-  107,204,105,40,62,125,148,253,88,221,227,32,253,153,118,66,167,246,85,95,47,228,244,156,158,118,102,33,7,105,135,242,121,152,114,164,178,128,98,145,
-  82,57,71,224,101,73,34,164,80,100,127,150,121,146,201,92,161,0,149,92,148,217,162,76,229,182,11,84,109,190,208,150,220,90,140,18,194,46,93,132,
-  172,84,211,72,185,92,105,54,189,103,17,204,38,179,105,249,92,183,171,219,133,28,249,55,215,134,11,20,120,1,14,135,131,243,237,144,219,129,157,216,
-  82,48,10,3,196,49,240,252,33,70,160,185,185,121,2,26,27,135,96,136,154,162,209,104,50,25,28,134,216,32,252,31,60,232,159,225,244,204,59,95,
-  59,231,157,111,136,51,252,158,188,178,42,182,56,32,211,50,35,203,173,202,174,139,219,114,76,126,21,59,57,40,109,78,200,117,177,94,168,82,117,99,
-  114,77,236,228,35,80,188,35,167,100,191,28,151,88,228,83,217,45,31,200,47,194,230,176,28,146,247,101,159,124,40,87,96,5,70,100,175,156,148,246,
-  235,222,149,54,191,139,91,178,167,204,111,235,158,178,249,221,210,191,87,106,60,147,163,146,9,16,156,134,36,210,197,67,74,89,78,116,20,84,49,167,
-  211,237,83,138,133,176,187,184,93,173,51,219,210,141,244,3,101,140,61,110,194,64,16,133,247,45,59,235,85,10,111,73,5,162,65,162,193,7,137,147,
-  30,165,224,4,28,98,10,74,58,180,29,63,2,91,226,12,40,9,184,142,34,69,73,67,145,198,55,33,99,59,8,9,190,183,243,244,102,158,180,29,
-  173,42,126,140,82,77,18,76,61,78,197,189,241,200,13,6,206,37,73,210,149,87,51,150,37,246,222,199,241,195,232,156,131,95,56,61,63,114,202,67,
-  153,148,125,189,231,168,255,185,244,28,80,216,233,7,142,144,84,45,1,19,118,138,35,110,115,191,248,134,98,215,184,92,252,69,19,142,228,82,126,225,
-  216,226,149,102,95,254,162,248,68,121,2,235,74,183,64,163,194,223,17,16,240,252,116,176,123,251,102,15,246,213,190,219,41,205,41,163,25,5,218,138,
-  95,149,81,211,44,104,69,59,209,134,150,180,38,24,101,180,33,227,76,36,169,241,171,240,223,252,1,99,252,192,200,177,128,233,64,43,203,108,86,0,
-  173,148,93,72,20,81,20,199,239,185,59,119,103,55,87,119,23,182,13,105,176,47,73,11,50,136,40,99,51,10,33,136,172,247,194,183,40,144,122,240,
-  37,55,124,144,3,134,214,170,107,81,154,154,181,11,101,152,154,102,154,26,9,59,148,148,68,89,9,150,21,200,106,81,98,70,95,212,131,15,221,238,
-  157,221,100,252,234,3,250,255,102,206,255,204,57,119,230,222,249,96,202,224,11,16,33,106,61,68,72,143,76,119,146,217,178,77,27,53,18,133,144,162,
-  25,3,60,54,242,183,82,136,105,44,165,230,150,75,236,154,150,152,152,104,79,114,56,28,118,161,220,92,77,115,56,180,28,77,59,146,146,145,146,36,
-  16,13,71,220,126,41,105,134,180,228,184,236,130,228,228,165,191,145,152,199,116,158,211,44,57,121,56,129,32,82,189,32,228,235,179,223,179,132,203,232,
-  64,65,131,47,156,22,60,13,207,206,208,171,213,226,185,217,120,144,162,19,7,129,96,134,145,87,82,91,228,141,133,232,67,162,34,170,252,41,132,159,
-  83,76,225,58,197,27,148,247,83,228,192,43,104,99,25,237,44,168,245,197,173,214,39,99,73,57,53,217,253,81,232,219,49,228,111,109,129,158,215,192,
-  179,186,143,213,251,78,62,130,238,173,19,71,195,9,152,23,241,226,58,238,211,179,185,95,15,66,36,8,250,5,49,213,101,208,91,0,157,122,9,141,
-  124,164,60,9,247,71,242,245,124,238,199,82,224,85,128,13,192,59,64,191,13,252,14,136,133,233,170,174,226,93,89,18,13,61,59,50,14,177,11,201,
-  193,126,204,227,251,112,119,36,59,60,14,88,66,135,15,46,184,144,232,136,165,244,5,253,230,235,41,44,110,131,154,17,184,209,4,31,183,124,205,26,
-  26,128,177,29,188,168,171,29,194,107,240,20,224,89,42,23,96,65,215,240,50,130,94,124,12,209,189,209,13,34,211,253,47,149,222,21,23,211,21,130,
-  9,226,197,163,116,17,184,135,160,252,42,208,57,225,12,208,135,150,141,39,173,1,138,74,48,141,4,189,33,55,41,247,150,91,69,56,158,45,14,107,
-  182,137,236,221,250,17,54,232,126,224,157,74,192,197,81,214,234,30,115,69,61,223,237,58,251,84,39,110,147,152,182,152,135,186,102,149,205,205,217,197,
-  84,244,244,166,206,123,121,103,205,129,202,237,253,139,234,18,155,148,169,213,1,24,88,242,150,117,106,147,236,135,251,186,71,247,163,21,151,99,58,42,
-  6,180,130,125,179,182,90,111,89,226,199,255,149,194,41,235,176,58,169,238,106,84,151,148,168,153,123,158,168,153,141,234,230,98,117,101,72,125,165,218,
-  97,134,232,191,203,98,82,0,206,194,5,131,51,112,17,194,16,2,231,28,85,65,21,156,128,106,144,94,13,117,115,168,55,56,111,80,59,47,1,88,
-  117,14,230,35,0,53,11,114,248,131,210,197,36,151,217,103,165,155,73,174,199,9,193,159,105,96,13,108,212,136,146,142,57,220,52,232,52,184,198,218,
-  89,155,136,210,219,141,40,243,73,229,18,157,75,242,124,197,191,231,10,187,194,154,217,85,65,243,180,199,242,247,74,19,91,136,214,56,170,75,117,17,
-  5,20,241,187,221,40,246,76,162,152,200,36,57,36,71,117,201,87,76,168,252,48,172,194,73,58,161,49,236,70,164,162,35,187,177,40,42,155,98,93,
-  49,118,45,204,232,197,162,141,170,174,159,211,248,194,200,192,241,138,137,1,8,122,24,65,164,12,3,26,224,1,17,44,32,66,147,147,147,151,151,151,
-  159,159,15,4,36,33,128,83,18,6,192,162,252,32,240,132,181,254,9,139,85,23,243,127,38,206,46,166,103,71,153,255,91,76,92,207,216,85,53,211,
-  254,193,49,198,3,47,24,255,63,96,60,112,138,177,193,230,255,63,198,3,187,25,27,162,246,183,49,29,152,203,248,127,42,227,129,250,255,229,13,153,
-  255,35,27,188,255,91,35,107,59,241,144,249,191,205,84,131,222,202,9,182,13,247,24,27,188,27,118,48,53,92,102,108,224,7,66,190,6,129,39,23,
-  24,27,4,86,48,93,16,223,195,249,225,26,35,195,1,118,6,24,70,66,72,138,214,92,97,108,96,220,33,50,131,107,25,119,3,19,26,100,33,4,
-  143,176,219,198,172,96,151,102,100,100,66,0,102,32,152,202,56,141,113,42,35,136,156,9,135,211,225,112,6,28,46,97,93,194,186,130,117,57,28,110,
-  100,93,11,196,32,114,49,19,33,184,146,117,53,235,74,86,16,185,10,14,153,89,24,152,88,152,24,192,238,96,0,67,70,48,143,17,10,217,153,0,
-  99,250,192,200,192,193,177,128,169,225,18,227,129,111,204,13,252,107,88,55,177,2,0,125,148,77,76,19,65,20,199,231,77,231,177,75,187,187,109,98,
-  13,133,30,244,128,166,38,53,24,99,226,145,198,152,240,97,1,141,30,208,52,92,76,148,131,18,185,122,113,163,164,134,106,212,68,69,33,81,80,80,
-  52,132,248,17,18,5,68,198,47,168,132,0,23,35,42,2,7,36,30,76,180,152,224,17,103,118,91,182,128,248,255,205,206,204,155,247,118,222,188,57,
-  76,3,80,98,107,15,115,223,6,49,102,236,101,209,28,103,202,172,225,26,13,5,86,7,178,116,68,86,79,136,42,150,169,234,167,244,152,48,124,210,
-  225,38,107,82,184,137,234,38,213,165,66,178,139,68,84,33,79,129,55,45,67,168,192,48,182,229,106,105,25,30,209,60,94,79,110,164,174,178,50,150,
-  165,104,77,172,170,170,170,166,170,82,211,162,209,168,33,87,78,84,214,25,186,174,27,186,33,255,116,27,70,89,89,121,249,190,124,79,48,232,177,55,
-  211,211,50,140,128,158,235,223,44,50,239,142,148,132,195,97,126,220,244,74,230,252,13,190,155,197,196,244,58,141,144,193,211,19,193,230,237,252,192,162,
-  39,81,237,172,183,150,240,253,83,129,194,37,45,169,12,43,103,248,161,176,22,200,243,103,106,12,137,157,139,253,33,185,125,81,60,175,239,176,48,123,
-  227,160,42,170,188,35,83,109,138,38,92,201,6,24,175,72,182,129,185,149,135,109,150,240,119,176,133,22,42,94,69,155,117,17,194,21,193,46,107,187,
-  132,54,111,49,166,143,234,243,218,119,109,212,221,66,121,136,31,52,33,74,228,245,17,85,84,207,111,129,93,196,217,171,48,157,51,4,206,81,123,124,
-  228,169,78,46,132,8,87,249,8,180,36,96,49,223,113,94,222,192,251,97,182,25,218,10,205,64,100,208,109,122,120,55,196,216,41,194,212,44,249,162,
-  86,26,194,47,129,76,104,122,153,101,146,137,163,124,76,100,141,63,131,241,77,241,73,184,210,1,124,206,105,143,246,206,236,236,169,143,137,208,210,95,
-  223,160,181,17,172,146,148,145,4,252,176,202,152,215,70,245,196,198,244,149,61,62,217,83,223,54,15,188,11,76,122,78,49,115,86,33,215,168,128,201,
-  239,1,90,243,12,203,49,194,155,97,213,255,63,93,71,96,133,92,66,64,41,149,189,139,90,114,81,219,69,29,221,131,149,116,167,233,132,14,184,191,
-  138,78,184,43,184,3,222,117,212,14,78,47,117,29,154,160,182,182,182,162,168,168,104,71,51,52,195,197,255,112,67,176,37,191,157,102,147,255,30,63,
-  225,20,206,96,138,165,216,16,142,224,36,126,198,47,248,21,167,113,22,71,241,131,245,73,95,138,61,199,181,17,41,246,50,237,181,73,226,31,38,233,
-  195,245,120,33,34,222,161,68,142,11,108,33,109,201,121,43,100,211,72,7,112,0,7,45,250,241,53,114,124,133,111,240,60,237,198,39,40,14,110,157,
-  222,41,164,23,215,167,11,31,226,91,252,8,195,72,25,48,23,19,15,12,83,254,129,244,74,159,29,97,207,229,99,100,243,23,117,145,207,107,212,64,
-  20,199,231,77,50,155,84,102,54,81,16,187,32,234,77,68,97,165,130,85,40,158,122,136,178,27,247,31,208,155,226,169,39,15,30,10,14,94,180,165,
-  43,122,104,41,82,81,180,136,213,106,213,250,19,173,205,201,67,173,107,93,87,207,107,183,148,30,4,181,135,122,178,241,189,36,187,100,165,126,63,201,
-  188,239,124,223,252,32,228,4,103,7,165,59,6,156,197,138,106,134,165,68,201,40,223,151,201,38,205,88,169,37,220,78,76,182,171,192,118,36,126,147,
-  41,169,197,207,120,224,121,182,148,89,148,227,236,233,64,73,148,82,182,237,56,152,81,160,60,175,175,175,175,232,251,254,73,146,239,23,138,164,2,6,
-  199,243,74,57,145,242,170,176,87,37,146,178,216,235,251,74,218,94,80,134,82,73,95,135,96,20,162,107,67,71,111,209,199,206,135,89,34,14,41,10,
-  109,166,59,194,205,218,101,97,70,31,141,187,151,70,112,235,174,109,150,237,90,86,252,5,22,179,59,45,203,242,186,113,168,95,131,122,111,152,95,203,
-  15,242,144,207,194,172,12,221,250,101,208,184,231,134,49,120,120,89,18,21,53,175,150,229,138,196,116,252,42,148,240,4,60,83,159,235,247,130,10,175,
-  65,13,130,21,184,117,135,179,70,23,187,121,132,45,110,103,56,215,61,122,171,118,181,83,93,7,86,237,97,23,228,156,186,178,155,253,56,48,167,254,
-  28,98,239,138,193,52,143,251,65,217,160,19,250,217,254,113,96,182,221,109,71,66,207,168,238,196,87,255,132,224,59,232,179,225,41,90,143,116,234,44,
-  101,116,117,56,6,193,100,243,103,5,67,70,48,131,167,145,45,27,216,215,153,8,222,34,147,26,145,37,35,234,155,45,210,107,155,59,54,96,29,78,
-  3,137,227,131,50,12,136,13,10,218,196,39,96,2,30,32,84,31,194,20,220,69,238,35,228,167,112,36,255,8,158,129,243,95,13,3,49,2,195,9,
-  69,103,18,134,254,97,26,94,192,61,120,14,79,144,167,240,24,110,243,92,46,87,19,31,196,87,49,47,190,68,245,151,185,32,94,182,72,167,239,69,
-  85,44,160,163,249,39,241,54,161,33,114,185,223,38,177,150,240,70,16,205,217,234,134,12,240,25,209,206,107,177,106,126,20,23,249,43,209,206,162,88,
-  18,21,241,13,105,136,207,2,76,110,26,8,75,227,18,127,1,227,186,193,194,176,131,145,1,2,120,128,128,151,23,136,121,26,156,246,219,237,80,158,
-  198,115,89,98,49,215,49,221,111,108,135,173,55,50,45,248,194,212,192,223,119,135,105,19,147,192,55,54,134,37,92,90,211,120,14,179,53,178,31,102,
-  239,102,234,102,58,202,136,10,207,114,159,225,238,96,67,133,0,117,144,79,72,84,65,28,199,127,191,223,155,217,247,180,221,183,203,118,216,231,98,186,
-  225,193,16,138,232,20,66,116,11,197,204,46,65,68,150,93,98,79,117,241,18,24,76,176,199,69,136,212,232,54,17,68,148,135,232,228,154,127,158,80,
-  93,18,43,17,242,16,228,197,45,251,99,155,17,133,134,219,111,158,251,244,21,248,253,204,124,231,247,251,205,188,121,51,211,71,0,144,133,5,4,19,
-  68,20,164,49,234,99,255,141,97,14,32,130,72,64,108,123,161,0,74,19,17,144,3,68,30,207,114,210,68,237,98,107,23,23,32,223,113,246,92,103,
-  167,227,100,179,110,68,77,241,132,231,121,174,19,103,245,246,94,185,120,222,168,167,167,251,106,15,123,188,38,179,48,24,195,118,242,20,211,200,149,142,
-  68,163,81,130,101,142,226,130,182,148,163,5,148,19,126,124,138,241,35,221,248,157,219,88,201,168,236,171,6,213,165,146,243,182,174,91,109,27,74,223,
-  74,15,165,93,240,50,110,142,183,176,205,157,98,57,208,205,176,126,77,37,85,178,218,165,154,171,46,123,202,100,250,176,58,166,143,235,22,125,89,159,
-  88,188,80,61,186,216,173,15,170,211,250,144,190,222,148,99,116,86,239,209,55,80,231,197,67,251,201,62,115,117,221,174,247,3,12,28,200,181,22,209,
-  241,71,73,93,82,127,8,30,53,70,222,120,174,222,31,36,80,71,0,22,222,147,239,211,98,129,224,117,26,10,152,203,164,6,28,22,100,6,28,239,
-  25,182,102,70,11,244,96,239,139,18,63,189,194,254,34,86,81,17,244,87,126,145,162,202,6,233,13,242,11,150,127,211,242,55,168,138,75,235,180,84,
-  180,170,150,191,73,74,89,239,208,94,64,123,22,253,21,50,109,211,180,17,228,227,148,237,185,196,108,162,28,47,199,253,187,150,95,32,85,207,196,34,
-  8,38,166,248,15,91,81,219,86,153,16,233,31,33,162,69,22,90,24,106,108,23,30,227,20,62,229,113,188,70,242,127,149,176,132,195,56,194,12,7,
-  99,232,249,124,222,199,51,201,65,156,198,228,12,206,68,63,44,226,14,45,19,56,137,19,120,143,66,26,222,202,47,114,94,190,148,229,93,120,35,63,
-  203,21,57,38,191,113,47,203,41,249,177,198,114,141,241,127,88,150,207,153,53,97,252,3,51,201,252,168,245,144,233,8,63,133,97,85,174,114,188,38,
-  43,219,124,101,190,51,13,37,185,195,125,249,41,0,132,35,72,212,5,88,2,82,40,80,216,2,2,183,106,64,202,49,53,47,228,47,19,102,186,194,
-  194,128,2,88,152,182,48,122,196,160,2,95,31,94,22,84,101,28,44,44,167,152,75,88,56,80,64,73,206,129,135,140,13,108,13,108,252,232,160,135,
-  113,49,211,46,86,124,240,41,235,81,214,157,172,28,44,184,33,59,11,0,99,188,193,226,195,240,135,249,18,227,81,110,0,125,85,93,76,28,85,20,
-  158,115,103,239,157,217,217,157,153,37,49,77,183,184,128,77,35,149,144,66,180,62,200,106,130,212,212,141,133,23,211,4,76,193,244,209,7,181,15,190,
-  244,193,152,83,75,187,85,40,194,186,187,70,33,4,219,218,135,138,180,129,150,54,66,100,181,216,170,21,44,181,15,53,82,186,42,109,212,208,5,43,
-  127,214,214,241,222,153,217,93,32,209,239,155,123,238,57,231,222,239,156,157,59,51,217,62,32,146,192,6,219,62,220,12,82,153,228,100,86,130,228,173,
-  71,250,79,56,187,52,41,78,170,220,128,100,5,36,191,158,3,203,139,8,145,212,149,75,91,37,30,231,182,87,219,118,147,228,231,181,136,212,16,225,
-  84,27,34,145,200,174,93,213,94,175,170,6,131,94,175,174,105,27,56,52,205,40,42,50,204,71,84,63,135,33,224,117,161,218,208,108,24,14,188,126,
-  63,119,117,221,251,114,211,171,141,2,229,126,191,94,87,219,216,232,47,47,55,182,108,209,243,48,57,244,7,205,44,120,109,145,53,178,113,109,109,173,
-  223,159,235,104,123,26,239,168,9,71,170,86,75,85,60,15,187,75,84,117,143,186,27,43,49,1,216,12,214,19,184,153,123,35,143,91,225,9,243,246,
-  99,18,238,149,172,176,132,87,64,178,14,19,220,107,133,185,59,49,4,201,178,68,232,247,194,94,253,106,20,122,245,201,170,152,154,81,98,106,92,77,
-  21,114,245,43,184,121,164,9,131,214,78,12,166,10,115,234,121,144,48,10,118,248,128,93,229,143,102,114,199,228,41,43,156,44,251,193,224,61,135,226,
-  48,90,202,231,76,13,6,122,78,67,192,12,216,199,59,126,31,38,0,229,120,32,96,86,23,115,29,34,151,140,84,167,90,248,148,94,2,125,128,236,
-  131,103,14,195,0,188,49,42,2,36,113,22,247,39,245,174,77,159,23,13,62,244,154,100,65,95,56,173,244,168,105,37,173,96,27,32,193,154,158,121,
-  24,34,47,238,233,200,64,107,6,234,127,129,250,65,168,159,241,93,214,213,72,49,86,136,99,40,225,198,218,106,133,45,106,61,133,223,131,181,205,10,
-  183,90,80,60,73,102,124,3,47,88,39,193,217,181,13,11,184,147,4,251,232,70,65,229,111,198,84,136,207,170,90,172,78,67,122,140,160,47,213,44,
-  163,129,215,184,199,105,126,251,244,165,26,9,77,113,77,133,164,161,58,52,209,156,10,29,11,158,248,21,146,13,93,21,18,250,164,246,207,100,113,207,
-  92,34,34,113,241,237,134,171,184,30,118,213,215,75,132,240,227,237,227,154,40,113,98,128,244,63,137,190,206,170,174,10,222,101,88,150,176,87,110,133,
-  245,165,175,139,23,107,238,0,57,215,132,5,221,230,49,224,15,122,42,148,138,202,104,222,8,165,13,52,71,111,194,140,175,75,255,74,63,165,207,104,
-  246,236,23,113,204,140,25,135,180,101,58,62,7,203,145,165,42,209,1,3,151,207,218,191,171,253,144,156,90,38,88,52,253,51,244,87,246,87,198,30,
-  61,104,158,108,135,100,65,119,113,156,143,100,193,124,209,176,38,78,32,53,45,110,94,24,244,162,105,109,68,138,76,120,131,83,228,222,186,201,117,199,
-  205,214,192,141,178,212,119,4,189,237,103,100,41,149,38,232,63,158,33,221,6,122,214,144,216,100,220,91,57,136,88,27,148,145,13,43,232,233,96,191,
-  209,31,121,125,49,47,184,243,79,52,198,22,216,128,242,141,226,86,32,142,198,225,69,42,248,17,123,139,44,65,118,28,145,227,242,44,185,171,200,50,
-  184,32,2,144,7,143,100,217,94,94,153,93,177,55,191,253,185,83,224,48,242,5,56,220,46,224,228,206,185,107,217,165,29,59,178,159,235,85,16,188,
-  5,185,239,217,92,211,38,1,73,119,36,224,89,129,139,240,210,40,204,185,172,203,192,106,154,171,112,13,28,110,188,0,23,224,60,124,13,71,201,187,
-  44,198,238,209,191,232,105,22,12,6,143,146,96,48,202,162,44,206,238,211,69,206,36,67,214,202,174,208,75,180,131,37,216,223,244,31,250,9,235,99,
-  19,244,29,182,76,7,217,219,108,150,206,210,37,151,251,88,150,139,116,209,85,11,189,120,26,121,173,168,149,224,25,17,59,85,110,81,167,222,188,93,
-  197,177,251,217,126,246,252,77,42,248,105,142,31,40,14,191,164,119,60,237,236,46,61,195,58,217,65,254,0,133,125,95,249,63,254,73,243,124,147,101,
-  217,197,70,232,1,118,68,113,56,68,63,84,86,211,233,178,224,242,61,102,113,123,219,245,58,21,135,59,163,164,133,181,176,49,24,131,54,214,198,154,
-  57,249,255,0,39,17,118,189,227,231,41,123,96,77,198,179,38,254,23,147,248,194,200,113,131,137,137,1,5,112,49,176,1,73,77,238,188,24,84,160,
-  203,11,2,211,180,166,105,9,160,106,96,104,248,198,200,48,71,153,225,11,99,15,227,170,221,140,171,214,48,178,176,112,160,128,3,140,13,55,25,207,
-  109,102,108,224,7,67,38,32,100,3,66,38,8,100,100,226,71,3,140,140,211,24,167,2,225,52,198,247,172,95,88,159,178,238,194,11,103,178,207,100,
-  255,204,10,129,140,44,188,44,12,120,33,47,11,0,101,143,77,104,19,65,20,199,223,199,116,118,2,187,140,120,16,45,20,114,72,37,132,156,60,8,
-  130,7,79,165,193,178,39,47,253,186,246,80,104,189,122,220,131,98,34,205,65,80,72,86,180,27,10,90,52,20,60,121,93,218,34,86,138,164,45,20,
-  69,47,18,137,10,18,72,168,13,74,64,103,242,133,224,255,247,230,189,255,155,55,3,51,151,9,198,47,221,202,16,12,69,32,7,181,68,215,128,122,
-  206,100,9,174,29,93,37,200,156,75,157,21,48,123,61,55,173,148,59,212,121,207,72,37,180,246,116,98,229,230,162,145,214,139,190,175,117,54,235,186,
-  102,164,93,55,225,121,137,169,228,170,31,205,69,21,252,86,64,248,164,251,177,0,175,150,238,221,168,122,141,215,8,119,2,12,210,191,61,248,178,122,
-  55,29,61,196,169,164,111,30,208,124,135,227,190,147,12,143,240,229,216,22,7,103,236,10,143,49,154,143,150,255,76,68,31,112,235,192,250,185,232,1,
-  6,120,155,96,141,78,112,191,32,226,207,28,124,228,225,183,170,169,218,87,6,187,81,77,193,139,20,216,46,222,231,53,123,92,41,213,200,139,182,50,
-  119,97,247,23,119,169,86,103,168,237,49,116,79,249,71,219,6,196,63,185,218,226,184,40,242,223,57,126,203,1,5,210,32,70,208,208,45,247,138,236,
-  35,205,145,43,23,159,15,70,247,77,87,231,188,36,52,98,38,102,198,55,255,177,109,248,215,235,158,14,241,208,58,196,153,153,92,174,105,109,11,223,
-  227,14,78,110,208,6,93,104,138,72,62,149,143,229,147,209,234,231,146,12,13,125,87,234,85,219,111,202,142,232,136,211,1,161,19,58,29,209,54,148,
-  157,178,83,144,5,89,52,84,156,178,180,108,58,143,156,138,92,151,207,12,36,64,144,1,71,128,2,245,23,147,150,217,195,194,128,10,56,64,132,8,
-  16,207,97,204,148,1,3,30,48,4,1,94,94,126,8,224,201,90,192,196,112,96,46,35,195,254,185,140,64,170,65,252,191,216,34,217,133,178,191,4,
-  127,10,66,68,24,24,222,29,96,60,204,212,200,200,253,140,109,222,62,198,21,172,229,170,235,142,50,186,252,103,109,176,57,160,218,192,127,128,253,0,
-  123,23,203,55,46,143,29,124,43,120,111,48,130,184,13,252,13,252,47,150,50,190,224,61,193,251,128,183,217,236,212,121,198,94,237,21,188,83,4,150,
-  116,48,54,48,61,99,124,3,36,155,153,142,179,238,100,90,199,250,139,181,155,141,145,145,137,145,137,153,249,17,227,35,198,75,64,8,34,239,34,97,
-  136,232,37,70,48,248,192,248,14,12,143,50,46,102,154,197,142,31,206,132,195,69,236,11,193,112,49,59,43,11,147,0,147,0,35,11,16,10,48,176,
-  64,32,140,5,0,149,148,109,72,20,65,24,199,231,153,89,103,207,219,151,123,201,194,36,206,60,194,36,44,138,162,15,5,213,39,33,173,190,21,177,
-  245,33,138,144,162,239,125,9,28,172,196,242,188,178,84,212,204,236,140,130,244,46,123,209,138,174,60,162,4,253,16,117,22,189,90,151,217,169,32,101,
-  129,41,151,122,205,238,233,117,166,9,254,127,59,243,252,159,121,118,103,119,103,150,45,6,140,184,210,208,75,64,200,176,186,76,232,175,62,98,52,171,
-  4,227,152,93,41,179,142,174,67,40,247,159,33,71,98,146,106,74,53,237,62,180,219,100,50,153,205,105,92,170,195,97,50,18,179,89,229,90,18,147,
-  172,31,178,238,20,89,145,185,184,153,33,217,98,72,177,204,38,121,166,244,107,226,245,16,97,121,204,194,242,76,135,243,185,213,152,22,146,16,203,67,
-  76,67,209,43,192,75,90,125,174,145,148,128,17,150,51,141,91,126,214,37,104,187,8,129,139,124,33,17,55,189,183,161,97,17,170,180,87,216,245,54,
-  89,169,133,47,85,240,171,160,107,255,213,156,14,167,113,31,237,220,67,216,186,216,218,73,198,240,56,252,134,247,184,140,158,151,43,148,155,234,3,245,
-  164,165,116,131,63,251,129,250,90,61,123,84,242,222,1,191,122,194,210,94,11,219,124,109,112,5,202,72,87,230,171,244,190,131,108,87,169,181,219,122,
-  106,89,216,86,236,2,237,64,152,104,45,68,59,163,148,42,167,156,33,187,254,240,197,79,1,21,212,226,244,106,50,14,94,233,197,53,240,216,107,54,
-  87,172,172,91,232,94,203,178,58,212,72,11,132,229,175,114,88,142,62,228,239,240,51,231,71,61,15,108,71,244,26,15,238,157,117,141,4,33,39,58,
-  182,47,208,196,205,199,187,188,227,105,212,134,156,186,119,162,12,158,119,219,156,25,40,208,3,1,49,32,242,101,227,4,196,71,80,72,153,165,80,158,
-  192,207,164,91,36,86,169,77,238,77,90,58,6,123,29,250,164,206,242,110,104,87,67,138,75,233,84,34,202,208,18,143,250,56,243,156,90,108,30,77,
-  186,71,30,193,19,200,82,179,51,171,183,132,148,230,85,122,246,41,223,85,65,134,11,225,206,154,208,106,79,70,16,122,97,133,213,15,56,101,228,62,
-  84,218,106,236,117,233,229,182,186,244,74,91,196,225,150,70,205,198,244,67,3,128,218,173,190,61,69,214,34,91,104,193,51,105,148,48,248,0,19,128,
-  252,88,15,174,95,198,222,213,108,68,229,73,65,17,49,210,159,140,142,48,188,73,42,195,253,124,23,170,112,43,62,141,195,48,8,223,193,13,59,214,
-  167,42,116,92,76,198,12,31,199,3,226,176,24,17,143,83,191,120,31,71,249,131,108,191,36,68,200,48,241,8,141,194,32,25,32,145,164,18,90,66,
-  189,188,233,46,44,140,8,110,129,225,73,4,38,124,22,18,123,48,132,49,142,5,66,98,249,228,160,46,18,23,158,82,51,36,18,132,30,222,98,244,
-  192,219,184,15,198,43,125,240,21,250,161,203,128,127,221,239,96,186,122,255,218,161,4,190,25,76,197,153,240,153,222,192,220,184,254,203,109,218,76,111,
-  208,46,26,164,13,184,1,183,72,173,210,93,201,199,87,173,145,54,209,231,244,5,109,165,183,232,171,120,230,165,62,195,235,99,122,165,70,156,15,45,
-  244,38,125,73,171,197,249,226,73,224,178,193,84,156,73,236,30,23,196,185,185,193,241,114,154,196,235,162,111,90,207,255,164,28,179,32,9,104,26,96,
-  157,203,253,1,141,147,75,104,19,65,24,199,231,155,153,206,132,116,179,27,31,180,186,141,137,150,30,42,130,88,137,15,188,152,130,68,197,32,34,168,
-  77,78,21,188,120,17,143,61,201,90,138,218,144,10,86,106,31,98,104,26,237,203,82,139,40,104,245,16,193,90,168,77,11,162,82,172,132,248,170,66,
-  131,214,226,131,30,66,156,177,155,38,54,34,254,126,204,55,255,249,152,25,150,129,173,197,8,33,29,161,231,128,100,66,200,130,114,36,48,42,132,10,
-  255,100,117,46,186,209,118,188,50,187,112,46,78,86,221,170,251,247,251,45,22,135,67,23,40,138,170,90,77,20,135,86,128,211,185,188,99,203,161,170,
-  74,14,179,151,220,96,104,198,1,67,195,30,75,114,139,17,72,110,52,2,25,63,50,2,168,115,157,72,85,98,156,5,185,204,84,201,218,86,116,97,
-  211,120,51,180,220,133,185,227,17,239,147,242,199,39,127,22,167,213,140,154,254,109,118,150,73,220,27,24,124,4,147,61,208,102,75,108,253,224,24,56,
-  212,210,4,65,219,124,205,123,91,91,245,37,37,82,151,208,31,110,27,210,95,105,51,71,167,189,223,86,245,55,192,181,234,198,138,243,246,249,61,33,
-  251,39,45,185,91,124,202,145,228,137,43,195,176,80,58,218,1,231,106,59,43,103,79,55,251,227,123,7,93,201,32,100,252,19,23,33,238,206,248,131,
-  141,112,44,252,145,136,119,10,137,215,142,205,16,52,156,34,104,122,133,104,200,128,22,163,196,232,166,232,129,171,210,91,238,153,129,125,190,131,62,159,
-  57,228,233,129,5,130,15,59,187,113,3,238,41,98,104,231,0,236,170,177,214,41,225,31,228,84,133,91,237,134,146,122,88,195,152,220,24,155,35,177,
-  175,228,206,44,121,141,195,176,222,115,198,227,68,161,20,49,96,140,54,88,12,24,198,183,21,131,74,55,51,129,139,229,177,35,205,211,188,140,105,172,
-  136,165,120,9,251,206,149,47,188,236,50,189,69,235,105,59,13,210,41,210,74,83,228,13,105,162,139,23,180,114,89,167,120,41,22,16,1,64,54,21,
-  130,77,242,59,67,144,243,29,188,133,103,240,194,244,165,200,127,87,211,96,25,159,151,156,203,75,114,223,84,129,33,225,136,89,71,224,6,187,206,226,
-  108,156,69,241,218,40,190,87,124,191,184,139,141,177,62,214,207,38,216,36,147,89,142,126,209,153,20,157,108,191,131,255,159,81,246,148,181,243,127,27,
-  89,178,43,47,201,147,189,188,151,95,45,240,38,239,227,81,179,70,185,252,79,25,37,20,229,9,118,89,127,1,51,146,97,184,194,248,130,137,1,59,
-  224,128,210,34,96,178,14,136,229,64,140,204,72,14,29,25,30,25,32,224,199,5,120,193,128,7,12,128,148,129,122,131,116,67,193,127,190,3,38,251,
-  157,255,243,253,215,57,192,126,201,245,31,207,94,145,6,222,137,194,31,185,127,137,247,170,252,18,233,85,252,33,114,89,238,38,223,28,197,179,250,151,
-  148,155,5,247,4,254,86,157,37,247,145,99,35,87,163,216,93,238,215,60,247,124,22,115,79,230,191,207,115,90,176,93,184,193,238,53,79,163,240,108,
-  177,119,188,155,120,54,75,124,82,94,196,241,133,81,226,192,85,230,3,71,152,27,228,14,176,31,96,111,224,111,224,63,32,214,155,124,128,125,31,235,
-  1,246,54,166,99,28,70,155,56,214,49,239,96,93,199,188,128,241,7,235,57,198,115,76,107,152,95,177,109,56,206,188,64,97,187,216,5,150,14,206,
-  67,124,43,152,58,88,143,28,99,158,198,253,131,231,21,231,3,214,39,172,61,39,153,207,113,109,225,184,196,49,227,41,115,196,17,230,127,140,11,56,
-  27,216,26,88,86,51,66,224,12,198,52,32,2,2,47,189,52,61,47,189,205,140,121,147,24,211,170,252,244,156,167,176,78,100,253,197,114,150,229,12,
-  203,86,150,27,108,204,232,128,137,9,66,95,98,188,196,248,136,241,18,35,50,125,137,241,26,20,35,120,48,26,6,222,33,193,27,80,120,20,14,23,
-  51,45,102,186,195,54,139,157,52,56,19,13,46,68,130,179,161,112,49,28,50,178,176,176,48,0,33,35,11,19,16,50,10,0,0,149,148,93,108,12,
-  81,20,199,239,185,51,247,204,108,231,99,167,245,21,37,52,18,42,218,70,19,30,240,44,146,18,225,65,208,13,15,125,145,52,34,125,167,98,4,235,
-  107,101,61,8,107,73,105,139,176,173,180,105,226,179,13,171,62,18,66,83,130,46,107,87,109,107,169,8,141,172,86,170,172,59,51,90,253,216,4,255,
-  223,156,123,254,247,220,123,79,102,50,147,217,9,148,88,202,157,91,15,132,56,158,75,38,153,21,164,75,135,189,104,95,99,52,113,244,116,33,33,203,
-  51,180,153,49,114,50,157,148,151,148,151,108,94,81,14,178,44,23,21,112,205,159,95,80,160,185,92,252,82,20,183,162,100,101,217,201,109,133,238,210,
-  10,11,85,213,109,105,203,150,10,247,56,105,163,181,114,229,42,53,131,52,205,25,53,141,31,113,105,214,227,230,145,98,115,142,105,152,75,210,139,171,
-  86,199,248,141,147,88,54,137,47,36,85,171,98,11,120,182,43,118,74,79,34,230,34,18,91,192,215,248,204,30,171,69,51,223,220,154,118,133,103,191,
-  41,172,145,218,196,131,176,31,174,65,29,202,36,239,228,38,247,125,225,59,253,9,131,112,128,78,123,39,76,236,163,198,126,54,200,102,237,17,78,176,
-  46,246,173,236,43,28,23,124,212,75,27,225,54,63,117,138,74,31,225,48,124,128,46,86,45,243,227,167,105,96,253,142,160,232,223,224,219,224,247,180,
-  151,250,61,245,27,253,158,203,107,253,158,35,235,102,70,196,27,240,29,46,225,33,53,41,147,150,138,6,245,138,114,76,62,36,110,106,99,33,87,71,
-  78,82,77,170,102,62,169,52,242,140,124,163,50,92,39,132,251,193,44,50,139,194,39,105,186,144,152,30,146,46,53,61,150,139,243,50,177,86,72,122,
-  39,56,198,220,70,210,47,134,124,17,47,219,185,166,220,234,18,5,83,14,79,62,95,22,240,220,92,52,168,15,232,85,122,167,186,27,138,167,180,132,
-  168,79,123,160,13,104,189,211,107,244,150,169,111,175,192,67,189,77,239,117,251,244,214,101,161,220,164,22,200,13,103,181,170,161,87,112,94,175,55,190,
-  184,207,233,109,70,85,78,147,222,106,196,221,33,189,221,8,233,71,245,195,57,149,197,83,246,69,33,229,186,103,248,212,62,177,73,78,225,3,173,15,
-  131,98,10,159,74,41,236,205,242,26,119,178,59,39,36,141,68,118,34,199,215,7,166,231,204,100,251,113,189,106,163,122,85,9,200,123,183,19,194,111,
-  146,152,116,4,56,106,246,223,4,216,154,20,88,188,132,58,112,74,94,236,97,143,88,63,11,226,17,252,1,205,252,221,238,166,1,58,0,63,249,174,
-  125,244,21,223,119,19,34,236,24,139,48,47,222,225,209,205,78,179,110,182,11,111,217,17,97,183,216,159,246,31,165,121,155,67,191,251,94,160,189,72,
-  41,112,81,42,8,224,136,218,18,134,69,127,151,133,17,37,174,70,200,196,19,78,2,226,118,182,232,224,193,63,121,24,82,15,68,135,236,39,248,204,
-  99,252,232,56,126,40,2,255,134,143,115,119,12,62,155,217,111,49,137,17,124,129,175,177,19,107,105,179,210,162,92,87,18,216,133,221,248,28,59,240,
-  61,70,49,134,113,252,100,87,18,118,237,143,107,199,199,216,131,31,248,46,107,79,116,56,63,195,179,82,48,3,239,240,37,190,193,227,210,223,169,150,
-  106,120,140,31,29,231,244,57,33,253,27,13,210,69,169,118,12,141,54,103,56,252,143,201,209,68,50,14,151,72,13,199,253,2,125,142,91,72,84,65,
-  24,199,231,155,51,59,179,123,46,123,52,163,68,54,19,69,84,76,242,193,55,45,66,148,82,131,136,32,186,128,143,37,68,20,10,62,68,208,244,144,
-  172,18,177,62,180,234,118,241,182,74,161,153,168,8,101,173,171,40,154,86,136,130,72,185,11,90,72,154,187,90,224,165,69,218,206,89,21,86,131,253,
-  253,230,251,230,63,204,48,51,197,24,161,56,132,82,219,65,11,70,164,227,192,121,104,7,162,185,135,131,225,139,172,194,189,155,40,30,237,199,130,210,
-  69,233,210,229,2,100,204,72,79,151,85,81,148,36,147,197,98,81,20,89,150,21,243,113,37,12,85,85,183,251,46,242,62,180,93,89,31,219,73,214,
-  78,152,20,94,200,207,6,139,140,153,140,231,243,211,207,207,121,162,145,187,26,26,115,155,114,81,240,2,226,249,238,116,212,159,28,40,255,30,59,92,
-  86,99,241,227,81,43,112,59,4,139,108,103,218,149,175,113,211,105,21,202,140,210,125,126,181,184,255,198,176,180,97,122,105,252,248,0,198,205,62,105,
-  168,10,90,204,111,212,95,201,99,73,115,49,207,18,198,242,26,204,253,183,30,43,65,99,71,34,47,116,149,12,28,104,72,9,28,254,116,181,57,186,
-  210,252,218,180,102,152,98,30,216,122,4,115,81,53,247,252,183,239,199,172,223,233,46,170,40,24,200,222,48,245,158,28,201,112,38,77,197,218,229,63,
-  169,62,131,207,52,18,59,45,207,102,87,73,85,18,207,71,238,62,72,244,30,201,201,52,186,107,193,61,14,238,65,64,136,15,64,80,244,80,228,165,
-  200,93,7,65,3,207,113,39,255,38,189,216,5,14,106,99,182,235,243,125,224,53,47,95,187,91,122,165,212,9,78,56,102,53,44,80,155,233,135,248,
-  229,148,21,230,233,232,7,112,97,7,173,47,225,216,220,5,241,157,120,82,124,43,90,205,175,142,106,79,125,46,75,64,239,240,22,216,89,15,237,20,
-  135,162,151,148,5,181,151,186,132,25,252,212,176,73,94,92,228,162,29,103,181,154,202,69,63,61,212,129,157,120,93,180,26,91,177,246,72,78,23,237,
-  161,218,103,16,199,154,132,211,208,188,99,173,16,96,1,182,204,56,150,22,89,138,188,194,188,236,4,41,184,89,9,245,64,19,174,84,147,53,161,151,
-  44,10,107,194,130,208,68,250,180,213,36,9,144,54,195,55,162,223,52,65,6,133,106,194,133,65,60,33,84,11,19,184,13,116,211,86,9,198,88,16,
-  64,111,122,105,109,135,80,234,4,221,121,205,73,152,13,57,9,30,152,3,85,133,189,248,97,69,171,93,195,179,58,3,145,29,142,232,195,144,201,63,
-  233,95,186,76,155,177,238,123,201,79,23,233,18,229,204,79,55,232,102,40,183,48,199,127,6,169,143,214,177,72,54,178,38,173,118,13,207,62,250,132,
-  69,182,57,162,46,73,215,201,156,12,17,70,128,160,109,163,80,148,81,155,255,1,181,86,123,76,20,71,24,159,111,118,216,57,238,246,65,213,40,156,
-  120,69,61,104,26,149,26,3,134,84,67,19,10,141,85,209,90,49,90,180,106,108,99,76,255,104,73,155,88,99,219,100,1,17,164,216,40,190,0,169,
-  148,151,148,71,236,121,98,21,165,229,101,171,18,65,132,214,90,4,122,16,67,69,20,240,85,4,132,235,236,222,1,87,164,214,196,244,247,219,239,253,
-  205,238,55,179,119,151,139,193,24,13,195,232,48,62,197,160,154,209,188,43,116,232,105,208,161,20,28,60,126,137,140,177,207,134,73,207,216,23,160,170,
-  197,232,63,134,211,11,255,82,242,212,121,234,116,122,163,81,111,92,243,230,59,107,215,174,141,116,215,169,240,246,246,150,156,48,26,77,38,147,81,131,
-  32,232,116,130,32,73,122,189,90,144,85,135,185,178,102,84,136,130,224,173,138,224,16,65,16,181,75,133,183,183,73,50,137,162,48,124,57,33,72,50,
-  131,166,156,24,245,197,39,32,143,11,117,34,73,120,58,244,250,197,226,200,56,206,145,156,251,83,170,192,126,0,20,89,89,226,16,187,13,84,179,81,
-  167,251,72,183,104,185,98,7,101,161,18,169,68,170,233,72,165,3,52,123,250,67,84,38,160,187,65,40,71,64,249,155,144,18,15,246,157,106,57,18,
-  177,50,98,166,93,1,148,187,6,41,197,106,161,32,14,80,126,34,104,145,118,151,121,199,61,106,182,58,218,119,178,116,12,100,207,188,254,30,171,14,
-  175,46,207,2,52,52,4,109,143,217,179,51,11,113,91,54,46,51,151,249,182,254,14,109,133,56,227,139,104,31,54,175,237,147,92,211,221,224,35,47,
-  158,177,64,231,148,179,94,9,114,158,249,192,230,186,176,190,205,234,118,36,198,79,181,161,175,176,189,116,89,240,89,233,208,130,163,179,175,136,169,242,
-  33,211,73,67,133,216,32,246,9,131,194,41,49,119,150,85,42,12,185,102,84,196,178,144,111,94,238,14,84,188,114,54,220,254,172,71,78,147,127,17,
-  123,164,147,171,99,165,6,41,95,220,39,217,197,50,241,236,187,23,2,174,38,66,183,21,10,196,242,192,204,109,77,198,83,226,131,16,171,49,253,24,
-  238,244,47,241,178,185,183,249,223,15,187,34,95,10,107,142,56,47,247,125,220,39,119,173,232,155,151,61,167,104,169,125,93,66,248,207,33,185,242,133,
-  34,248,45,236,162,88,61,173,71,46,89,80,34,119,200,191,46,43,9,109,148,6,167,221,154,211,189,240,106,6,174,250,60,206,163,65,140,13,188,233,
-  171,212,107,231,233,60,174,61,199,176,194,13,76,183,79,219,231,157,63,253,162,24,61,241,79,57,206,227,252,140,106,49,126,102,234,148,83,94,251,111,
-  64,197,196,1,177,63,162,193,216,16,94,27,3,123,251,224,220,38,251,242,42,63,219,66,219,75,121,114,243,251,85,47,216,142,1,90,119,59,15,239,
-  126,173,121,250,165,117,151,3,7,252,30,175,28,104,1,101,85,209,102,171,103,179,96,95,96,79,100,129,61,66,89,165,108,64,142,87,20,239,120,118,
-  91,148,34,179,111,137,50,7,169,54,32,8,189,130,208,92,37,7,202,217,251,85,102,177,156,98,101,31,29,84,17,138,36,84,172,118,206,64,215,125,
-  88,162,201,23,57,22,38,1,75,181,248,42,114,77,40,234,145,53,15,149,172,218,47,222,6,103,207,245,215,45,184,78,112,237,207,202,129,203,60,122,
-  171,125,110,181,174,17,182,182,79,72,113,175,116,83,200,81,183,34,216,102,174,252,160,0,122,200,252,91,184,28,102,43,208,22,85,203,213,209,54,142,
-  205,199,86,127,181,218,127,6,49,147,237,54,156,14,181,208,5,69,110,55,200,13,208,167,195,65,182,251,42,48,111,105,198,237,43,223,38,102,191,69,
-  81,165,48,4,245,144,140,127,4,143,2,238,132,148,172,175,131,101,107,244,166,72,193,242,3,4,109,241,51,207,143,120,181,8,91,112,50,182,192,82,
-  126,211,108,179,21,6,200,183,176,47,42,29,7,248,197,128,201,202,85,67,139,112,20,150,30,132,9,81,135,167,116,209,82,210,72,202,73,168,122,90,
-  218,40,165,43,206,232,124,54,158,38,197,186,82,28,156,142,75,241,17,240,105,194,235,135,160,63,184,9,47,219,3,235,139,65,127,218,205,199,180,17,
-  5,179,74,58,86,118,0,10,141,89,210,136,171,137,133,228,224,100,126,187,15,202,129,70,238,141,68,62,5,208,77,1,89,131,218,133,52,140,106,245,
-  41,24,41,100,148,225,225,91,98,121,81,116,199,132,78,246,243,240,95,242,34,30,164,110,221,84,234,165,147,210,200,32,237,167,131,20,83,209,83,152,
-  236,77,166,246,82,190,133,242,15,169,208,79,187,233,212,155,92,39,87,207,13,50,157,64,242,72,57,119,136,164,146,122,78,189,231,29,174,148,187,195,
-  188,74,86,237,224,106,200,126,50,200,101,144,44,242,29,217,75,74,72,53,249,158,197,187,72,6,201,37,217,36,159,180,114,249,204,239,101,157,133,92,
-  7,46,196,35,128,17,176,128,211,48,26,107,224,134,161,165,92,10,227,214,159,40,252,99,141,5,84,94,118,178,214,73,71,118,216,83,43,22,39,239,
-  184,216,71,92,27,168,188,199,164,147,73,3,52,49,214,107,90,101,43,227,31,44,182,105,94,43,200,53,80,3,218,79,47,192,45,112,200,88,140,151,
-  99,232,210,216,61,198,186,70,195,186,123,76,118,188,222,46,199,20,215,224,121,248,19,99,210,136,78,114,250,14,111,60,238,160,247,248,187,124,44,221,
-  65,19,104,60,29,228,251,249,62,62,27,123,105,151,202,221,180,210,80,101,168,48,148,25,202,13,137,84,161,143,249,47,105,18,117,149,251,252,3,62,
-  154,118,51,137,163,59,105,47,255,136,127,200,255,165,117,61,224,239,243,137,206,21,106,151,99,125,52,29,237,86,59,29,241,216,181,231,12,105,244,107,
-  154,54,66,87,127,60,198,104,236,225,99,232,46,106,231,7,248,84,250,255,49,83,99,214,24,235,26,13,235,172,49,217,241,122,51,181,185,29,83,31,
-  166,207,67,245,220,98,105,54,227,201,17,93,236,244,213,168,216,41,39,24,143,83,171,83,179,127,114,78,234,8,79,144,153,9,49,16,244,20,98,15,
-  236,161,27,137,254,6,227,190,193,194,0,5,59,24,25,120,100,128,64,142,143,15,136,230,132,220,86,7,10,110,91,198,216,160,243,95,187,129,135,161,
-  33,234,192,109,198,3,114,13,54,32,184,251,4,99,131,85,3,83,131,229,151,91,140,12,76,96,240,144,241,17,26,236,1,194,89,236,232,112,35,251,
-  38,118,70,1,8,100,0,66,0,99,186,193,194,32,35,179,128,153,161,225,21,115,131,205,35,198,71,140,179,216,103,177,51,10,48,10,0,0,117,202,
-  95,72,83,97,24,199,241,243,123,207,123,206,187,215,109,231,72,105,108,52,100,16,66,116,161,16,116,53,144,160,155,238,131,160,11,47,140,46,187,172,
-  46,229,37,151,136,66,198,26,253,209,77,232,24,100,22,113,200,202,99,93,180,108,212,146,136,57,215,90,32,43,44,104,137,154,88,86,142,133,29,15,
-  154,167,69,223,207,251,190,15,15,188,135,66,210,191,85,101,233,224,159,197,179,57,27,58,93,63,246,58,47,117,222,122,233,216,97,79,109,1,206,125,
-  154,174,55,53,105,45,154,61,117,189,213,206,239,115,210,92,233,78,156,147,12,206,121,215,6,72,190,159,204,8,146,249,138,231,31,81,126,139,15,47,
-  81,157,196,186,127,125,24,147,23,241,36,10,113,234,218,9,227,200,163,93,79,91,98,73,172,116,164,58,110,180,223,14,45,7,146,144,30,55,223,219,
-  51,182,95,132,70,14,92,242,199,125,113,181,147,82,90,140,204,71,102,253,223,149,4,73,144,91,114,183,65,250,155,199,167,97,221,196,226,153,88,219,
-  171,149,191,86,235,29,89,173,98,232,13,22,175,163,112,122,176,205,28,66,250,248,73,169,219,91,97,166,146,229,15,229,103,222,240,72,157,69,133,87,
-  80,131,151,20,65,77,100,85,3,37,244,228,177,180,251,125,142,76,159,69,145,68,213,1,46,244,20,19,1,161,139,72,62,131,159,74,111,221,5,173,
-  71,23,142,229,23,24,205,162,226,51,118,46,53,198,118,152,13,247,143,70,247,229,212,217,112,154,125,227,169,2,182,151,222,50,10,158,187,225,18,55,
-  27,43,36,247,26,83,65,65,215,228,140,242,131,165,217,20,27,99,171,106,76,237,218,244,139,244,193,100,93,136,179,214,207,236,60,107,39,238,100,187,
-  218,93,150,251,200,12,202,248,132,156,109,14,11,246,157,195,86,95,80,116,185,234,114,217,229,138,203,48,217,16,116,206,255,153,138,169,4,147,172,86,
-  162,134,193,6,93,38,216,184,109,194,153,22,123,96,179,156,57,170,108,187,99,3,5,149,54,212,111,249,13,149,150,123,76,83,119,20,199,239,57,247,
-  213,194,109,65,68,168,172,32,160,78,77,140,115,141,33,38,62,166,153,113,203,102,246,135,217,116,201,50,230,220,150,185,49,113,46,217,102,248,131,92,
-  165,20,214,64,199,83,41,111,139,64,233,16,43,96,45,202,160,42,115,78,216,192,194,28,182,160,150,215,116,22,68,197,199,154,13,118,219,242,168,74,
-  182,249,253,228,60,126,231,156,223,239,54,189,183,205,117,128,156,120,38,69,215,3,161,67,138,192,245,222,53,51,221,65,223,177,169,178,200,91,167,124,
-  90,137,179,158,27,76,112,162,89,79,122,102,249,236,102,144,17,150,82,209,147,146,137,254,77,132,92,46,22,196,113,156,92,46,9,223,242,89,172,87,
-  241,146,73,189,16,32,136,227,164,30,113,211,146,72,2,188,154,41,73,125,36,151,251,79,231,211,91,166,18,57,247,255,53,117,25,207,165,228,98,137,
-  88,252,170,229,18,57,24,118,126,105,242,234,235,17,170,37,73,111,21,127,224,216,115,219,207,193,245,170,177,154,59,194,17,23,7,225,251,94,232,79,
-  24,107,195,31,47,128,245,60,180,158,134,33,35,12,251,223,209,194,104,26,156,83,194,5,177,57,190,175,8,92,220,57,13,42,239,67,111,9,52,253,
-  4,69,57,56,190,214,82,10,252,166,148,17,120,24,253,203,188,218,42,56,41,220,126,107,22,106,119,243,44,191,143,224,227,198,28,100,255,222,113,166,
-  47,166,94,84,183,208,178,152,40,132,225,37,171,8,34,114,129,44,52,144,37,70,223,205,100,178,185,92,201,113,233,233,112,62,32,57,162,248,29,251,
-  246,46,137,50,160,81,170,44,3,254,20,36,37,240,235,38,94,159,144,242,91,38,164,169,38,168,255,74,187,70,119,7,180,107,220,201,144,119,93,126,
-  17,154,165,13,65,7,94,212,135,255,26,94,39,61,22,105,94,223,179,227,10,153,238,159,29,212,190,130,159,211,254,28,145,21,172,150,169,149,158,225,
-  252,78,248,115,99,251,56,184,58,161,68,15,103,19,70,76,112,41,166,220,2,238,143,170,132,252,31,200,89,187,15,122,240,138,25,218,244,144,19,145,
-  219,0,133,233,48,172,135,210,179,144,87,9,173,42,208,118,66,75,232,141,47,141,243,26,44,240,200,14,250,69,149,25,56,16,165,159,127,61,5,114,
-  66,171,126,131,131,71,193,177,227,106,21,84,246,129,33,204,89,7,153,97,246,224,211,123,90,98,39,94,59,163,224,171,225,104,92,253,202,218,133,5,
-  137,29,113,39,182,101,197,164,204,25,12,190,241,94,242,82,237,71,163,95,223,122,191,122,93,231,220,162,208,172,151,172,243,154,119,95,126,185,36,196,
-  33,235,218,220,26,114,79,214,213,79,182,110,116,212,163,97,28,210,59,64,85,6,197,169,112,198,5,134,13,214,81,176,127,82,111,193,171,217,192,199,
-  17,182,126,242,206,222,213,214,5,133,184,75,7,138,28,52,49,119,201,203,180,134,171,161,55,152,233,46,134,120,187,91,220,134,67,208,33,182,146,38,
-  166,150,236,98,123,80,45,178,145,26,38,143,182,66,49,108,9,139,15,124,64,37,74,121,212,145,177,46,146,49,33,241,185,77,100,41,2,103,104,139,
-  68,8,134,143,51,86,233,138,160,93,198,71,241,50,11,203,7,228,139,85,76,48,17,42,252,164,221,104,20,25,82,181,223,35,218,76,54,1,209,2,
-  199,99,133,7,102,85,11,52,129,109,17,15,231,128,7,63,30,8,30,52,49,132,38,196,57,55,141,33,210,66,148,91,133,252,224,118,106,16,92,228,
-  181,4,131,180,15,120,242,190,72,201,253,21,226,10,201,9,170,97,121,82,249,10,113,57,114,128,117,236,19,166,179,55,169,34,108,17,230,224,241,72,
-  43,103,19,61,162,92,34,11,205,7,88,150,101,44,120,178,254,115,104,42,99,196,1,241,89,28,135,14,48,160,13,83,217,139,168,216,249,97,55,148,
-  98,183,104,83,30,169,136,221,185,109,209,1,248,162,145,59,5,43,151,246,128,10,42,96,185,134,219,218,6,138,79,213,160,131,149,21,24,56,230,47,
-  141,142,215,163,226,8,6,141,249,175,80,227,106,3,25,252,135,223,242,17,58,216,249,124,226,88,84,139,95,126,116,126,128,115,190,145,202,160,251,196,
-  231,253,116,203,46,204,17,190,37,162,112,87,142,226,205,60,250,12,117,147,222,181,222,255,54,104,224,141,24,25,73,49,73,248,144,117,177,247,217,155,
-  108,55,217,72,14,145,205,228,33,186,145,186,66,169,168,110,74,5,119,25,23,219,200,190,82,206,102,131,147,73,148,27,217,205,153,236,126,168,194,81,
-  166,155,77,132,41,161,32,223,156,156,140,30,205,100,228,140,238,193,24,244,129,83,48,171,192,239,112,3,102,254,43,192,87,86,180,98,46,228,194,193,
-  73,203,127,140,66,15,35,112,91,48,175,247,102,221,62,68,69,187,125,129,7,237,83,168,5,14,61,133,25,13,104,194,42,172,198,147,88,128,149,216,
-  128,249,88,132,71,241,4,234,49,13,243,80,141,106,208,96,49,86,160,22,255,134,122,172,17,252,4,124,139,223,224,33,44,199,18,172,195,99,200,99,
-  42,26,177,22,15,98,6,30,193,82,60,142,223,225,97,76,193,50,220,143,185,152,137,58,44,196,44,204,65,21,30,192,108,76,199,36,76,70,165,240,
-  100,228,205,74,39,118,225,226,50,156,141,249,130,4,239,73,103,159,248,47,154,217,97,170,146,53,210,70,186,132,45,122,140,166,89,40,124,10,173,128,
-  59,94,21,24,240,193,241,24,253,30,14,179,58,193,188,222,155,21,248,80,204,150,122,98,159,135,147,108,131,96,110,223,48,153,57,41,39,85,65,155,
-  88,51,107,98,221,222,60,153,245,122,232,153,244,61,172,141,181,79,175,236,2,54,246,22,101,247,116,220,185,187,110,243,204,120,231,122,166,43,238,104,
-  247,169,185,79,242,158,54,181,219,62,185,211,27,221,24,232,217,184,198,94,103,43,4,106,232,26,122,132,162,40,58,144,14,20,94,47,60,144,130,9,
-  175,38,20,76,174,209,211,21,250,107,255,1,189,150,123,76,83,119,20,199,239,57,247,119,123,91,123,219,162,50,68,173,139,186,77,167,89,140,155,153,
-  81,135,64,124,48,227,116,127,25,147,17,226,244,15,141,83,116,49,83,183,37,74,174,138,21,41,226,171,32,176,134,86,92,171,2,146,14,26,180,136,
-  180,50,97,142,151,80,124,64,69,90,21,137,145,98,54,53,76,26,180,187,183,15,130,139,36,99,110,59,159,123,206,239,252,206,249,158,95,126,201,109,
-  154,123,22,213,212,255,101,179,127,4,10,169,2,36,226,38,97,72,67,58,36,65,138,18,250,41,195,159,18,73,113,210,97,90,248,230,119,28,230,8,
-  9,53,74,188,222,8,44,250,141,100,156,84,170,86,43,100,130,113,73,73,73,43,146,146,215,136,182,149,19,76,205,41,149,74,46,108,202,97,76,165,
-  82,169,213,242,225,90,10,78,33,60,226,188,98,240,36,78,44,134,182,234,193,154,40,83,12,230,162,34,20,85,175,55,78,41,94,218,168,33,6,229,
-  3,121,127,38,214,200,106,47,163,59,198,127,26,61,202,110,121,222,20,211,35,48,23,16,251,94,218,113,22,253,215,64,251,24,138,229,158,239,249,2,
-  186,191,24,235,83,106,54,121,79,210,198,125,144,91,137,185,30,208,173,124,86,141,141,39,193,144,5,245,43,187,231,120,107,80,123,3,221,42,115,7,
-  104,31,130,215,131,134,228,188,117,79,87,63,94,233,94,212,173,50,207,240,91,192,173,240,93,64,59,87,118,28,173,22,52,153,176,125,182,231,12,26,
-  99,122,14,17,111,23,248,151,243,133,200,127,225,47,194,254,46,200,59,73,12,5,180,246,155,140,187,192,87,129,255,60,242,151,232,254,108,226,227,105,
-  127,31,54,176,86,55,214,180,97,109,29,250,85,245,101,72,53,60,2,126,129,255,3,94,213,186,23,243,238,130,187,3,172,172,175,1,90,165,173,149,
-  224,41,131,163,103,192,152,15,189,89,224,72,131,150,221,13,92,197,134,250,68,227,231,135,228,166,121,207,38,246,42,242,38,26,171,192,152,76,25,39,
-  80,66,226,233,161,253,135,177,108,47,92,223,135,238,124,24,35,165,68,162,199,69,176,148,241,60,246,47,246,173,235,47,2,254,52,238,79,7,254,51,
-  255,36,94,101,46,68,235,206,220,79,66,139,166,104,232,226,213,194,137,115,120,160,26,242,202,72,110,9,54,89,224,144,13,181,139,52,47,64,179,244,
-  247,139,80,91,138,173,247,105,254,9,24,75,209,180,171,223,138,53,113,181,23,177,126,169,201,9,222,179,96,219,222,20,47,222,105,91,198,19,250,31,
-  156,146,96,106,9,159,146,225,5,221,57,240,45,59,119,1,139,54,87,92,134,253,71,161,248,29,62,13,114,53,168,169,160,143,78,48,88,209,182,154,
-  239,67,219,215,63,53,195,129,209,62,59,250,151,183,31,196,135,95,30,120,223,97,128,91,169,216,102,161,139,54,219,26,225,241,11,104,119,163,102,31,
-  157,155,242,32,3,205,75,91,198,118,215,10,163,186,185,7,70,223,42,198,99,113,215,223,178,111,113,90,2,131,39,214,219,237,96,136,114,54,98,207,
-  186,226,133,45,99,13,37,232,76,40,105,134,99,113,90,51,246,70,55,93,71,251,22,215,98,67,148,59,218,153,80,31,213,27,253,76,71,122,151,244,
-  116,131,251,211,7,123,160,52,206,101,7,227,238,253,113,237,223,154,203,208,182,216,84,138,254,237,21,243,28,231,177,61,197,179,176,104,15,154,155,160,
-  221,4,221,59,122,230,243,19,61,94,112,245,210,141,71,80,24,20,94,154,227,195,231,208,9,51,119,145,74,216,197,67,74,29,108,200,131,1,32,60,
-  173,135,248,106,232,196,52,28,128,232,46,32,229,164,4,116,152,188,96,107,38,174,181,208,22,152,54,213,5,85,76,29,51,0,47,165,107,115,72,58,
-  108,183,126,52,185,13,242,193,12,106,15,76,94,83,128,43,172,200,19,138,7,30,99,211,232,5,57,244,70,33,165,121,58,182,26,174,16,189,196,136,
-  55,233,66,154,39,105,72,61,23,84,200,227,119,125,146,148,223,100,148,69,182,86,199,234,209,71,183,145,231,76,62,244,49,84,57,83,5,3,56,89,
-  143,107,226,211,143,161,163,27,40,239,184,43,10,199,113,44,216,89,142,252,116,231,36,199,42,46,240,179,83,5,98,246,148,43,144,80,65,83,9,7,
-  37,233,194,13,50,167,83,153,81,207,71,81,25,81,169,139,133,44,39,86,200,142,79,73,151,84,144,18,169,75,86,204,92,192,76,89,234,4,15,22,
-  206,191,138,26,85,23,243,110,9,73,204,86,180,141,181,146,123,147,42,101,206,241,109,180,131,225,85,142,121,71,230,252,141,25,250,222,219,193,153,34,
-  102,149,15,170,100,249,48,43,34,121,193,212,120,117,98,100,98,210,38,46,62,210,50,106,102,228,180,169,73,249,16,131,99,18,147,98,102,9,37,35,
-  114,169,210,216,151,16,57,123,102,228,178,71,16,170,176,177,213,116,108,105,96,71,115,169,163,98,75,25,78,63,55,77,54,183,155,190,201,105,148,46,
-  146,195,30,137,60,18,163,67,61,62,66,221,152,46,73,161,116,163,57,178,92,210,39,237,155,156,201,120,148,169,51,178,96,96,135,142,152,223,75,127,
-  251,12,115,138,209,16,35,51,64,6,96,225,41,208,64,96,41,99,151,164,130,150,221,118,24,158,72,58,37,169,112,8,50,217,195,208,41,177,177,75,
-  101,62,86,220,5,179,102,118,125,29,187,76,207,78,209,178,155,255,16,118,141,236,146,21,103,216,105,95,105,89,217,125,201,62,48,176,107,152,121,122,
-  246,227,209,48,196,112,24,27,182,65,191,222,128,39,79,225,153,16,247,144,161,127,202,89,224,68,209,157,152,13,89,2,217,144,55,4,125,128,31,2,
-  228,142,144,116,129,19,35,196,134,45,104,19,184,42,120,29,94,198,122,172,20,178,6,172,197,159,177,9,27,241,87,252,5,155,241,26,94,17,170,53,
-  1,165,168,117,8,218,75,130,186,18,211,161,26,171,3,106,81,89,133,246,128,34,172,190,40,224,16,148,162,198,134,21,131,125,91,168,39,214,196,60,
-  7,70,194,13,188,137,167,70,200,248,83,248,223,240,175,29,220,42,111,145,59,229,118,182,151,220,144,91,152,32,215,229,85,236,235,233,98,59,3,46,
-  198,32,119,135,112,63,192,189,0,54,246,252,43,46,198,224,26,206,130,222,44,15,226,37,94,210,206,94,96,203,95,113,49,6,215,112,22,244,107,242,
-  32,46,246,14,235,98,131,241,14,123,59,128,75,240,142,16,119,66,116,8,213,142,128,50,168,11,107,123,200,80,101,112,218,53,168,190,29,162,35,52,
-  27,238,255,53,47,100,134,231,146,208,173,20,188,73,30,198,205,186,217,18,38,8,16,138,72,35,164,17,194,247,110,8,225,203,152,64,120,167,22,123,
-  210,136,63,1,77,142,205,107,19,65,24,198,231,157,157,100,102,235,236,199,65,226,38,72,40,213,74,23,154,144,99,188,245,16,48,129,37,244,80,208,
-  150,152,130,23,227,101,241,224,31,48,122,8,69,68,65,43,77,11,234,72,65,176,120,17,139,135,248,181,130,55,15,86,143,57,248,7,152,181,20,44,
-  38,213,195,58,155,108,37,207,111,158,153,103,222,121,103,152,26,70,35,229,148,231,208,11,64,163,61,67,91,120,1,161,228,140,168,144,142,3,78,28,
-  87,218,16,7,91,109,241,73,140,145,137,204,211,168,90,189,212,82,131,197,66,140,113,206,115,57,206,116,223,247,27,141,134,215,240,188,102,179,94,231,
-  188,232,251,156,231,155,188,96,88,150,105,242,88,102,85,215,107,243,38,183,44,221,96,149,74,6,177,18,98,115,146,9,67,24,81,70,122,209,140,188,
-  34,86,165,139,214,201,125,163,119,249,240,76,120,85,186,153,114,233,156,250,181,61,109,103,202,245,146,116,197,181,168,85,46,133,183,64,172,124,126,5,
-  229,103,176,191,166,98,180,44,86,122,53,49,43,47,200,38,18,171,168,223,129,140,92,136,40,149,238,238,89,233,134,83,93,80,239,74,55,79,43,234,
-  211,54,98,193,69,49,37,184,184,30,60,2,49,29,220,3,81,8,79,125,50,222,222,56,33,139,225,38,172,23,131,119,64,22,29,238,56,54,179,153,
-  231,120,78,112,71,245,68,47,97,209,9,238,198,105,222,233,205,180,215,226,116,94,20,94,111,0,58,216,130,224,33,32,81,64,79,151,150,196,46,8,
-  203,14,82,143,253,32,63,92,126,223,6,245,30,82,110,216,157,148,72,79,242,132,110,209,231,248,32,13,99,97,12,240,63,106,218,47,56,132,7,10,
-  203,178,126,224,24,107,60,172,164,167,143,251,234,194,55,28,38,180,90,218,78,194,38,220,134,13,229,142,98,246,72,59,210,182,113,118,27,39,211,49,
-  217,223,108,200,62,208,159,36,160,199,12,233,128,196,116,83,147,140,107,3,178,71,247,232,215,17,95,18,190,211,191,9,31,71,8,93,232,55,21,127,
-  104,86,41,36,93,218,39,59,169,55,116,160,216,39,132,32,162,41,167,84,162,106,69,132,240,24,224,19,149,81,7,34,255,0,165,144,177,107,20,65,
-  20,198,223,155,29,179,179,222,238,109,192,194,221,19,207,160,160,137,236,101,175,19,77,225,53,130,22,230,10,27,179,144,28,249,7,60,9,132,8,6,
-  242,184,88,166,10,1,27,11,229,180,48,96,47,105,50,216,38,98,4,109,180,217,66,46,154,19,82,73,48,17,38,51,187,57,143,136,93,190,223,204,
-  247,190,121,236,206,48,115,135,65,79,37,224,91,8,96,26,66,207,47,44,207,0,60,115,6,3,112,20,242,226,230,85,127,251,40,11,195,183,239,79,
-  56,35,161,30,137,200,20,150,206,21,28,225,20,154,205,7,147,119,53,147,83,141,70,125,106,188,94,119,61,47,110,22,71,189,114,163,81,44,143,123,
-  238,63,42,206,136,107,116,25,200,166,123,218,230,82,36,47,221,192,244,9,83,109,164,217,52,164,119,168,70,40,121,254,6,233,34,221,80,7,152,84,
-  23,74,181,155,15,155,48,19,15,85,23,236,164,154,126,70,21,81,162,38,170,106,23,97,229,45,110,158,143,135,215,95,161,244,253,79,239,177,51,68,
-  183,168,166,150,80,217,20,209,50,118,42,116,101,127,58,109,49,80,47,16,232,49,236,251,243,250,90,228,83,57,179,88,110,35,185,114,23,229,15,164,
-  34,85,168,139,116,154,46,253,13,42,90,194,224,236,10,138,65,49,24,204,139,32,136,225,25,6,178,131,116,134,42,234,66,160,174,147,39,95,50,53,
-  38,2,21,1,164,29,148,93,253,208,53,98,32,175,202,239,250,200,138,222,28,200,2,138,224,219,47,36,126,98,6,24,102,178,140,49,139,49,227,38,
-  234,236,251,254,14,203,199,142,89,104,97,79,93,243,223,182,182,159,204,233,233,43,91,181,86,173,215,26,83,159,98,216,102,109,214,183,156,240,183,216,
-  19,127,132,180,143,179,199,13,107,167,250,228,157,62,91,182,225,163,198,248,135,99,28,216,221,255,176,232,44,58,74,40,209,114,90,206,154,205,56,114,
-  224,92,79,227,130,179,163,92,224,232,90,46,215,88,89,175,215,53,43,75,115,8,99,185,194,194,196,192,147,23,27,155,199,32,192,192,240,133,241,11,
-  163,196,23,198,6,150,6,22,102,102,254,87,76,175,152,24,191,179,236,98,221,197,122,145,157,153,133,133,135,133,135,153,5,0,69,142,63,75,3,97,
-  12,198,147,52,54,135,132,190,239,32,229,116,40,186,57,248,65,28,74,167,142,29,28,29,142,234,214,229,40,183,170,187,147,67,209,79,32,56,57,72,
-  41,56,249,23,197,165,147,116,170,181,112,21,138,103,39,205,11,138,207,47,79,66,72,32,169,209,12,1,70,4,96,241,39,50,1,48,208,41,66,117,
-  91,117,45,169,183,91,73,203,148,88,174,107,163,161,181,74,210,86,221,210,114,111,138,240,253,134,93,240,213,253,61,216,237,236,248,168,19,101,7,84,
-  174,188,126,96,230,160,235,167,203,97,199,156,158,140,240,120,229,28,155,155,162,16,199,62,178,83,177,239,61,99,154,102,159,246,69,115,189,63,198,225,
-  5,142,55,6,57,154,200,92,224,28,157,115,19,202,105,98,96,72,121,40,238,136,92,152,32,190,211,23,30,26,103,116,43,247,210,151,129,20,124,45,
-  151,75,255,44,100,241,219,175,22,92,240,149,4,30,229,73,30,228,69,110,228,78,128,75,108,86,212,146,1,76,10,129,80,153,109,2,252,3,125,82,
-  93,108,20,85,20,190,231,204,108,239,29,157,157,217,68,204,238,150,182,54,182,132,53,176,177,47,90,19,73,216,55,215,184,221,245,77,90,219,221,38,
-  154,216,7,44,143,226,219,121,88,160,13,171,54,90,26,76,136,18,11,132,96,253,73,168,36,86,82,71,139,149,8,68,33,155,148,159,7,150,7,170,
-  182,107,107,140,109,165,68,198,51,179,253,217,54,193,239,219,243,243,157,115,239,185,51,179,119,16,80,84,161,150,77,23,205,122,1,132,168,243,10,27,
-  186,2,107,42,225,40,38,86,10,213,205,85,129,254,79,23,155,128,155,50,93,173,141,236,180,132,85,213,173,171,19,61,201,61,30,219,141,167,162,47,
-  50,218,219,149,74,36,76,211,84,140,164,105,214,110,181,86,176,181,214,82,166,97,26,150,101,236,237,237,237,77,239,203,116,166,82,169,206,84,91,91,
-  87,87,87,218,76,117,102,179,185,92,111,54,157,201,152,150,181,151,39,4,131,13,217,116,54,109,61,157,225,221,166,217,233,233,92,46,27,143,7,109,
-  219,230,2,131,189,101,155,86,69,120,120,196,219,103,132,132,138,9,161,118,211,51,130,100,82,12,128,146,130,182,80,71,119,247,205,33,188,98,157,220,
-  66,109,116,17,220,55,221,62,104,153,126,15,71,31,253,112,9,220,218,201,183,138,246,101,187,104,95,99,43,218,229,224,199,71,225,84,1,104,8,157,
-  112,105,14,110,143,194,169,166,155,175,45,215,23,250,145,206,1,193,62,130,204,203,111,36,27,147,161,214,80,44,23,178,187,115,123,120,217,0,108,127,
-  165,165,53,214,29,78,132,147,206,2,144,237,62,73,224,94,5,250,19,220,35,224,238,164,67,224,158,5,193,123,5,237,119,79,64,146,158,103,113,185,
-  103,244,36,108,191,244,61,80,199,217,93,45,173,45,137,191,31,167,142,242,71,48,251,15,87,202,35,48,86,4,122,150,118,17,143,66,87,58,119,128,
-  36,237,247,212,105,40,189,131,4,84,2,74,10,122,93,184,124,31,136,95,230,93,14,175,242,163,11,186,6,244,21,63,109,30,248,163,40,37,148,32,
-  155,26,132,186,0,44,157,99,72,241,243,112,30,230,46,224,140,241,185,230,12,33,53,112,223,138,144,131,194,173,167,166,146,170,252,213,230,96,243,241,
-  39,156,121,164,79,188,21,129,131,198,114,211,7,205,172,157,59,152,231,27,24,17,141,17,47,134,148,136,169,80,72,133,143,15,227,9,80,225,136,138,
-  136,208,32,60,23,162,3,40,6,94,200,3,213,249,7,60,70,113,254,246,222,21,161,32,53,70,190,176,196,151,150,115,132,71,43,110,198,221,30,222,
-  23,42,229,249,225,10,187,15,191,77,59,222,79,159,187,132,52,201,218,169,79,16,14,92,71,154,240,197,68,173,243,0,157,111,145,94,162,99,40,74,
-  59,68,73,19,180,211,1,49,223,76,99,40,126,26,71,231,54,18,146,254,112,158,14,252,95,183,138,53,204,85,143,243,90,7,172,67,67,192,74,230,
-  7,244,176,222,93,17,85,43,126,71,143,191,49,23,160,154,139,112,157,107,139,126,180,43,152,193,25,156,71,219,115,51,232,43,14,135,17,252,38,216,
-  60,204,139,27,112,3,111,32,204,242,57,179,56,91,57,180,140,101,156,194,138,239,49,60,180,25,198,45,252,3,141,57,156,195,51,218,25,237,83,166,
-  23,239,226,136,54,162,125,198,44,192,182,97,140,14,163,199,104,181,91,173,69,111,129,199,101,213,111,220,87,255,170,7,202,145,15,227,132,156,222,160,
-  167,229,197,192,146,190,164,255,32,151,244,73,233,101,99,129,123,242,158,28,11,108,102,244,47,125,105,141,235,249,184,28,151,253,248,139,92,231,213,53,
-  86,242,95,229,2,219,207,114,138,173,154,69,121,159,121,119,197,127,39,103,215,248,77,96,53,91,240,125,222,200,27,7,152,7,153,139,242,144,193,196,
-  62,163,207,248,58,48,5,63,6,132,174,233,34,86,163,163,46,116,201,38,116,157,43,146,141,235,58,248,21,48,133,137,190,161,223,213,252,149,254,138,
-  4,51,38,120,183,230,179,50,71,232,255,1,99,189,198,194,0,4,177,64,224,151,16,159,16,31,208,194,196,33,192,193,208,192,2,129,76,175,160,144,
-  127,23,43,12,50,240,48,241,128,48,0,133,147,91,108,20,101,20,199,207,57,51,219,111,70,166,51,171,24,187,54,219,45,38,60,84,157,94,140,15,
-  90,187,49,229,197,244,178,105,188,4,83,8,212,74,140,145,196,52,94,94,120,232,195,167,209,196,148,162,36,180,5,137,208,53,128,15,82,192,196,62,
-  96,209,118,194,165,2,173,92,42,73,1,141,40,177,181,165,27,9,210,218,200,3,227,249,102,118,151,94,76,252,255,114,254,231,50,223,101,119,179,179,
-  15,9,88,197,202,142,34,228,20,7,202,149,84,16,56,236,165,103,224,158,8,244,108,165,195,18,45,27,192,162,125,11,19,128,101,0,108,224,235,242,
-  211,7,140,220,49,65,65,106,86,16,127,163,185,185,174,185,190,126,221,186,245,86,94,134,17,143,171,92,92,108,219,150,101,179,18,230,155,174,155,114,
-  173,138,138,10,187,165,109,99,97,170,169,201,230,162,69,173,11,34,193,178,153,84,220,141,43,89,106,158,200,78,131,19,154,218,236,148,42,90,90,194,
-  75,10,109,135,221,177,18,169,224,6,91,205,226,134,25,51,98,49,211,52,131,81,220,113,216,107,99,69,177,85,165,101,134,128,186,206,215,135,94,185,
-  250,194,173,53,125,149,187,43,79,213,117,190,135,255,172,156,184,95,190,234,187,210,129,201,84,255,138,175,159,238,95,113,251,113,217,152,254,16,229,75,
-  233,23,125,119,168,68,110,246,221,206,231,118,214,166,251,17,134,147,3,238,83,202,190,169,225,112,7,220,202,45,81,217,135,80,101,240,192,46,45,43,
-  245,10,165,35,147,224,215,100,19,200,132,76,250,13,16,54,153,228,76,50,147,84,191,157,76,248,37,190,61,227,66,198,85,237,76,121,166,188,171,102,
-  71,77,151,45,109,240,235,203,158,7,200,172,239,178,213,160,180,86,246,160,76,76,62,54,81,237,191,38,171,122,87,167,219,123,219,100,185,180,228,70,
-  255,209,95,27,174,213,183,250,173,163,13,178,122,228,45,185,70,62,43,55,129,239,130,116,188,61,248,69,242,64,163,247,144,119,159,87,220,183,242,116,
-  129,44,26,221,131,178,122,235,230,33,193,235,156,209,126,244,221,39,120,125,162,181,19,99,6,24,39,17,12,3,6,47,210,159,120,212,152,213,250,241,
-  44,125,132,163,212,129,95,106,222,9,146,206,103,215,177,231,193,115,205,124,52,164,159,4,240,110,146,60,207,99,191,132,191,168,195,29,200,223,168,29,
-  96,21,63,87,95,183,17,170,162,25,132,253,104,168,29,49,136,202,105,245,15,230,90,153,95,146,47,219,85,161,206,8,40,148,196,81,9,126,55,46,
-  153,113,92,168,132,175,108,136,250,214,126,12,246,64,25,244,220,194,14,186,171,81,26,161,111,203,136,196,49,137,222,118,205,251,88,3,46,238,18,124,
-  139,178,232,187,151,165,62,248,14,223,117,134,212,166,227,19,152,222,75,195,154,122,99,118,107,151,52,239,19,237,253,207,73,234,155,126,126,27,142,223,
-  196,237,189,36,241,131,119,193,187,131,188,89,15,153,141,228,42,89,112,88,40,238,104,115,34,70,154,166,17,34,146,134,202,41,244,32,45,22,41,229,
-  23,105,97,31,14,89,56,77,203,153,199,89,156,162,144,29,120,153,166,242,92,102,156,5,186,65,7,52,199,193,128,101,194,255,214,21,186,178,240,99,
-  118,51,191,83,15,142,209,24,141,83,55,142,147,185,246,42,173,53,205,71,38,233,83,204,113,68,59,162,29,102,58,112,103,158,14,220,149,229,58,237,
-  203,243,112,174,248,9,151,211,105,110,53,71,197,57,225,101,57,33,78,50,147,249,222,227,122,82,116,211,41,161,24,22,243,250,188,174,42,149,21,3,
-  145,129,136,202,127,45,136,65,241,127,252,200,92,88,192,197,108,204,137,49,206,33,247,166,127,240,92,185,90,121,158,25,15,226,18,243,11,115,59,235,
-  19,236,19,98,70,76,137,27,98,154,119,204,137,93,244,183,56,20,57,20,57,35,20,219,204,109,102,7,51,34,78,47,97,86,28,140,28,140,124,47,
-  206,50,63,136,99,98,202,56,198,126,77,160,14,22,163,135,80,148,162,186,46,116,136,145,174,49,144,117,126,159,116,178,148,23,170,206,10,34,138,225,
-  51,69,20,44,10,79,10,137,49,214,162,94,143,232,5,234,220,40,16,50,20,253,23,19,184,194,194,0,4,76,96,204,197,192,176,132,145,193,135,135,
-  135,143,47,6,8,120,120,124,100,228,100,100,24,142,217,236,210,217,105,189,75,7,164,240,65,245,127,62,134,55,54,255,249,26,248,25,74,64,2,44,
-  18,18,18,243,217,26,242,128,156,91,91,24,95,40,50,50,50,242,131,192,43,38,8,236,6,66,160,216,15,198,46,198,163,236,48,184,139,21,2,37,
-  37,47,179,95,102,191,196,126,149,253,52,59,11,15,4,50,0,33,147,0,147,0,0,99,189,194,194,196,192,192,147,23,171,43,155,151,193,208,176,134,
-  241,255,106,198,140,47,140,45,76,12,13,186,95,24,27,88,64,144,137,137,255,21,211,82,230,87,76,140,223,89,118,177,130,224,5,118,86,22,38,30,
-  6,30,38,30,86,22,0,19,248,196,248,132,137,129,129,1,140,57,24,248,166,49,50,48,200,196,0,1,47,16,228,228,228,241,200,200,200,48,112,0,
-  37,123,132,25,94,200,51,172,96,92,193,200,176,171,25,168,136,97,206,35,70,22,9,9,137,83,27,25,25,94,201,51,132,132,48,60,184,195,120,107,
-  11,227,11,197,6,254,6,70,8,100,252,206,248,138,9,2,27,152,183,50,131,48,35,35,227,44,198,31,140,93,64,120,134,125,23,43,4,206,224,132,
-  192,107,236,55,216,47,178,63,100,191,202,126,26,8,89,4,88,121,88,121,216,128,144,153,5,4,89,4,64,16,0,157,146,93,104,20,87,20,199,207,
-  185,115,119,206,76,156,221,72,169,52,134,193,77,164,73,16,106,252,120,178,20,164,79,169,196,45,8,133,226,23,197,151,66,30,130,79,66,74,9,245,
-  182,166,65,36,4,171,117,187,110,98,28,252,216,10,221,6,90,163,136,6,51,145,52,164,133,68,18,66,45,105,161,219,168,241,3,81,146,166,173,93,
-  36,211,51,179,153,53,105,217,66,251,255,221,243,63,231,112,230,204,178,151,249,4,5,64,37,0,172,77,34,59,216,220,26,144,22,160,195,102,11,150,
-  138,7,18,74,73,250,115,17,54,50,40,37,124,16,142,109,40,45,105,4,111,15,150,117,191,126,161,172,105,219,182,61,141,141,141,175,71,125,25,182,
-  85,102,197,76,214,246,232,50,37,154,19,182,189,215,182,109,78,118,179,237,203,178,95,89,243,14,107,127,125,179,21,75,36,172,64,177,88,172,144,45,
-  43,145,72,196,2,153,255,166,224,9,187,220,87,44,106,70,77,76,92,70,48,234,235,12,99,107,122,26,157,85,233,85,41,142,71,175,57,149,233,126,
-  209,17,237,24,21,223,124,43,156,87,15,58,7,156,93,107,242,205,240,40,14,51,113,120,28,120,161,240,247,115,119,208,107,49,212,123,170,220,107,199,
-  101,25,194,227,93,196,138,151,86,18,168,243,200,27,188,101,56,99,232,53,168,119,85,181,183,193,107,81,111,170,54,156,186,37,166,78,161,58,132,5,
-  7,184,218,227,231,173,176,241,238,6,206,31,231,113,98,157,170,240,26,166,34,195,186,171,15,51,35,28,57,45,43,51,178,87,102,165,195,158,97,178,
-  242,49,78,136,49,49,44,38,133,43,252,106,117,124,189,51,128,125,117,19,235,238,238,152,105,242,26,156,202,171,214,212,198,76,181,247,134,179,203,89,
-  225,108,81,232,161,66,103,20,247,183,238,132,214,125,134,209,135,253,247,68,55,95,133,31,238,121,241,245,239,216,123,6,33,151,210,6,200,85,66,157,
-  194,51,227,226,237,159,176,123,22,225,97,28,238,199,23,189,80,180,26,59,212,67,84,58,40,19,150,121,120,31,222,91,252,37,26,160,42,90,63,61,
-  135,199,207,225,36,66,114,22,143,8,80,168,180,170,211,26,92,78,106,157,39,132,170,122,250,20,239,107,41,251,65,125,219,87,220,245,241,157,124,94,
-  163,170,254,44,203,109,202,215,171,218,233,172,152,212,158,147,20,199,244,163,204,49,189,67,15,171,158,200,97,106,163,143,232,48,45,232,237,92,205,235,
-  67,116,157,220,78,209,51,40,114,155,110,188,124,165,76,213,222,120,130,207,178,34,83,55,183,89,213,142,188,232,230,209,93,64,254,143,93,108,238,184,
-  232,67,37,21,133,92,136,92,136,52,205,71,120,140,165,233,165,165,204,232,255,164,255,111,228,35,62,239,15,208,111,250,16,143,15,233,79,180,221,124,
-  20,9,22,106,184,68,130,79,40,205,23,62,16,33,243,248,140,57,206,151,120,73,43,21,136,229,165,133,121,255,39,78,96,50,136,36,127,70,190,55,
-  165,241,57,221,76,245,218,234,46,236,194,147,139,124,86,228,8,166,138,220,22,53,53,29,120,86,172,62,43,124,56,253,136,33,247,140,49,114,3,134,
-  232,67,195,163,211,52,75,157,148,50,75,243,61,205,201,63,228,117,250,239,252,192,140,211,45,186,73,119,138,252,26,248,32,253,178,132,219,76,15,57,
-  52,71,211,204,151,145,2,35,244,255,200,68,190,96,190,35,223,71,233,90,145,159,73,25,202,88,160,5,58,105,154,178,92,202,149,166,212,37,4,200,
-  192,181,197,78,44,230,176,198,98,103,242,214,95,147,144,185,198,200,192,113,143,137,129,137,129,131,137,129,143,161,129,145,65,134,1,8,120,24,88,204,
-  178,248,184,248,120,121,243,252,242,252,252,120,120,248,248,56,65,128,143,143,63,128,97,214,90,166,30,222,55,139,153,118,45,98,98,88,192,200,177,128,
-  113,5,35,123,195,6,166,255,76,187,92,255,59,78,113,84,55,84,53,6,177,172,102,48,126,97,124,112,155,217,1,136,127,157,103,102,104,97,98,232,
-  97,2,18,13,64,161,3,79,152,27,212,63,157,103,62,196,190,141,253,8,251,30,118,48,255,206,11,230,63,140,13,64,248,139,21,6,55,176,49,49,
-  49,51,129,0,152,4,202,3,85,48,111,101,102,228,103,100,100,228,228,156,201,56,147,113,58,16,206,96,92,204,116,128,29,4,103,112,206,224,252,196,
-  242,157,229,6,251,121,32,124,13,132,107,89,215,178,158,96,135,193,213,172,171,89,119,179,51,177,176,179,176,177,48,176,0,0,77,146,63,72,195,64,
-  20,198,223,123,119,154,11,196,70,16,68,10,109,22,135,46,226,90,92,116,12,8,146,77,17,201,224,236,46,130,202,81,20,28,92,252,67,43,46,10,
-  130,155,147,117,113,202,226,44,138,224,96,133,10,34,162,214,66,7,59,88,169,239,146,182,250,253,242,242,125,239,242,238,184,33,19,4,144,190,67,96,
-  99,17,244,3,84,146,220,91,234,153,234,182,142,132,85,182,197,185,57,127,94,169,84,42,155,78,165,210,92,217,165,165,133,133,112,38,28,136,21,114,
-  226,39,203,50,158,201,100,60,207,9,67,135,21,248,1,104,212,103,212,94,59,220,194,70,17,175,118,169,186,133,81,17,35,71,15,235,91,252,88,215,
-  37,188,106,35,168,65,200,7,37,60,181,224,197,131,87,15,124,21,204,78,30,227,17,242,152,203,131,237,101,21,248,179,122,140,41,98,251,6,245,180,
-  86,254,164,46,35,232,21,128,13,2,181,77,209,139,208,88,125,16,83,230,238,209,151,128,56,239,211,32,140,140,131,122,174,11,115,240,155,103,166,65,
-  89,160,162,77,9,241,94,158,110,10,179,73,87,196,62,193,241,147,105,90,168,255,35,187,16,145,96,145,113,74,148,180,113,33,146,104,225,35,237,225,
-  55,191,147,84,167,58,189,49,174,235,106,113,33,186,133,174,139,255,116,79,93,108,196,178,40,139,115,230,132,18,118,237,29,59,178,254,40,168,130,74,
-  210,79,135,203,62,195,129,253,71,67,54,153,70,135,154,245,193,212,172,235,14,159,61,222,173,22,83,178,75,118,145,233,147,200,64,94,200,126,73,236,
-  232,240,111,192,8,57,36,33,39,184,32,111,144,18,76,30,141,87,84,135,92,252,85,254,2,227,188,198,194,0,5,49,64,224,3,66,12,12,18,12,
-  226,28,18,226,18,44,18,18,18,28,12,12,2,28,175,152,32,144,159,31,66,239,98,133,192,191,236,32,12,130,140,60,140,60,12,64,200,202,194,194,
-  195,194,3,0,93,146,207,107,19,65,20,199,223,123,51,201,204,202,178,9,232,97,77,215,221,120,106,15,138,34,81,10,246,16,240,34,216,158,188,196,
-  37,228,224,41,254,248,3,60,244,48,244,96,41,74,26,164,69,241,32,133,160,39,193,10,21,106,122,217,128,39,41,120,41,4,90,41,241,146,131,180,
-  182,212,130,8,169,113,102,119,43,197,239,135,239,119,191,239,49,115,24,216,27,4,0,5,128,85,244,192,84,45,130,172,206,37,154,136,39,158,238,180,
-  179,105,73,214,36,9,166,227,238,95,169,104,221,172,84,108,41,109,187,224,56,206,41,215,181,109,199,177,30,86,181,38,77,212,106,158,231,249,190,105,
-  65,224,56,185,32,240,29,199,243,171,53,219,168,96,151,199,47,93,174,23,229,216,97,3,149,163,238,175,60,232,119,240,231,43,122,236,109,78,245,237,
-  246,7,84,215,212,157,149,187,171,29,124,178,143,81,184,244,26,165,11,32,198,244,45,57,10,234,170,202,169,112,120,189,44,245,164,110,169,80,77,168,
-  139,195,115,195,69,84,143,116,244,71,54,110,191,61,93,30,15,84,30,212,61,80,23,134,45,84,185,202,58,74,128,117,4,136,222,176,168,193,160,247,
-  130,37,111,139,254,80,58,168,53,54,45,93,55,47,227,179,66,70,123,230,253,205,231,108,3,205,185,35,130,112,11,73,33,132,155,139,172,186,240,146,
-  53,91,236,19,66,244,140,65,17,122,163,239,70,62,207,177,29,60,204,40,126,12,158,16,17,49,163,120,200,126,165,1,110,211,111,237,164,109,211,247,
-  148,92,14,13,177,226,79,151,186,244,141,122,212,165,164,213,235,108,10,113,153,45,179,247,154,243,79,177,69,9,103,77,108,97,195,106,90,145,56,201,
-  140,156,145,199,125,79,28,165,180,51,237,204,1,255,197,19,31,240,93,177,163,217,21,115,244,69,116,133,241,143,255,232,196,172,101,6,98,32,230,173,
-  121,107,65,179,47,102,233,99,6,74,200,145,235,255,132,75,109,226,22,39,155,199,228,57,148,192,184,4,110,12,23,102,42,254,219,157,209,221,3,91,
-  231,164,182,217,20,255,2,99,102,98,96,136,8,136,96,8,16,184,195,204,192,48,133,121,10,51,7,11,3,16,2,0,85,207,49,75,3,81,12,7,
-  240,36,47,94,50,60,94,111,112,56,75,181,110,46,246,27,116,87,151,219,45,135,159,160,248,25,130,232,86,208,193,89,139,245,67,136,211,77,142,58,
-  58,88,113,23,43,82,74,39,75,251,174,5,177,255,95,32,129,12,33,245,6,60,224,110,50,36,168,194,16,187,174,102,72,225,232,216,215,67,209,45,
-  138,226,228,52,15,59,33,111,108,199,52,155,121,174,218,243,38,79,73,31,15,15,110,17,244,10,47,209,196,106,246,131,96,237,249,190,117,172,101,173,
-  249,61,90,187,90,245,8,202,103,87,78,93,127,232,38,168,105,150,237,77,48,43,47,24,224,156,238,166,238,6,151,23,175,9,140,215,145,163,85,33,
-  146,75,222,233,243,79,13,151,249,160,215,127,16,183,6,244,134,103,90,202,76,6,58,147,202,227,198,152,199,60,146,47,25,201,139,124,175,249,141,2,
-  167,76,30,60,121,141,226,204,129,227,247,90,113,12,30,54,23,227,102,98,8,88,196,120,138,73,130,129,129,105,22,35,131,71,4,3,7,75,78,76,
-  140,143,143,15,67,66,195,119,166,134,157,204,64,242,1,227,125,70,134,9,140,27,24,25,88,18,14,220,101,60,112,138,241,192,13,70,21,3,9,151,
-  28,134,11,140,175,152,64,240,18,99,15,227,54,102,190,197,76,147,57,22,115,252,101,255,203,62,135,99,22,231,108,78,1,22,38,30,70,32,4,0,
-  77,79,61,104,20,65,20,158,247,102,246,102,246,24,119,183,16,46,196,24,34,130,166,16,43,139,120,30,26,4,205,65,214,16,172,82,172,141,85,138,
-  67,172,37,197,51,168,81,34,241,224,72,46,154,19,15,78,174,146,24,82,88,152,102,5,43,9,68,228,208,246,234,37,49,65,132,52,73,214,153,53,
-  7,249,190,247,125,239,135,55,15,230,58,246,119,0,25,230,176,97,188,200,144,157,4,246,34,107,132,145,169,5,203,219,201,140,81,137,157,158,154,82,
-  253,94,159,151,119,93,183,18,70,149,232,94,37,234,33,212,58,140,30,232,129,1,173,61,207,171,132,94,228,123,22,225,196,196,160,214,218,60,185,169,
-  70,104,184,237,53,139,116,191,125,151,94,65,243,27,176,230,96,185,160,70,131,209,201,177,58,76,150,235,192,134,31,178,101,120,87,7,122,9,229,27,
-  207,129,222,34,249,105,3,210,75,228,211,18,164,207,32,30,47,23,152,162,167,144,158,109,123,69,186,26,143,87,97,172,64,91,64,231,89,42,232,114,
-  199,92,13,58,176,9,241,2,239,46,115,22,31,161,73,198,55,143,144,110,209,6,255,0,67,79,192,126,49,80,38,2,198,250,102,154,97,124,229,43,
-  4,23,227,29,96,116,155,74,44,189,70,165,106,221,174,210,169,14,196,135,248,24,102,225,211,18,103,213,22,127,15,108,40,125,212,173,113,214,189,240,
-  241,204,207,3,115,117,27,146,92,146,251,235,16,146,72,33,5,11,204,140,243,227,6,107,80,3,223,79,112,23,19,132,4,79,210,183,246,3,230,113,
-  30,125,31,142,145,21,191,176,139,123,56,61,125,199,54,235,124,157,159,107,97,11,107,110,44,99,57,171,172,214,156,53,103,87,238,139,125,113,40,255,
-  179,165,122,149,229,103,199,122,67,89,218,173,63,226,181,90,80,111,212,142,220,150,214,95,224,119,105,185,37,127,103,252,98,184,225,172,168,21,117,32,
-  171,106,209,93,116,247,228,28,174,58,171,142,16,32,208,200,80,51,13,58,47,184,70,147,33,115,51,17,104,42,33,164,112,69,206,108,10,145,23,255,
-  0,99,100,138,96,184,195,60,133,89,134,5,0,99,252,192,232,193,80,188,145,3,0,117,144,77,107,19,81,20,134,207,185,247,154,156,113,102,146,89,
-  8,78,67,51,234,42,119,145,64,22,10,89,244,7,76,72,198,245,88,170,168,43,179,232,127,184,138,72,145,174,218,128,34,161,86,26,63,22,46,244,
-  23,152,69,208,42,46,20,75,113,217,149,72,42,234,162,11,17,116,60,119,18,75,93,120,158,57,239,249,120,239,220,129,137,5,216,168,0,236,32,87,
-  101,7,226,231,157,152,26,32,102,201,90,128,35,145,239,78,92,133,16,160,84,97,75,139,152,72,167,157,222,241,74,204,209,107,95,136,162,118,167,19,
-  87,61,111,190,158,44,45,249,126,116,105,185,234,55,46,46,39,213,170,239,219,108,36,73,82,78,120,197,226,199,221,110,59,142,186,112,62,214,246,230,
-  32,48,11,166,220,212,80,107,2,101,215,160,9,186,101,34,235,232,26,152,222,78,225,195,101,208,89,221,52,128,180,102,195,68,253,210,122,157,139,233,
-  217,67,251,139,124,11,101,165,150,233,141,156,20,78,53,83,19,165,89,51,77,7,104,200,212,13,133,101,238,86,17,6,72,160,7,168,105,187,118,111,
-  126,136,65,56,198,209,71,49,122,42,86,207,152,198,129,164,32,220,251,44,246,10,102,49,156,189,121,50,224,63,197,62,127,196,212,1,190,156,235,151,
-  128,40,187,146,219,103,195,23,173,49,154,79,98,228,12,17,78,191,197,33,142,158,201,33,154,133,33,183,166,96,68,142,154,85,219,169,255,78,71,119,
-  255,158,18,179,89,9,27,136,121,226,117,121,67,226,45,153,137,76,76,4,78,88,30,203,39,210,48,101,196,50,39,199,207,67,153,233,15,225,32,102,
-  242,145,188,141,191,229,123,220,18,127,153,155,251,230,126,119,159,59,99,231,149,187,225,172,147,229,33,109,208,180,251,74,187,197,95,57,91,52,213,3,
-  230,46,179,91,60,202,10,109,210,125,178,186,146,87,171,155,244,128,235,205,67,38,180,207,188,118,223,184,246,230,151,238,29,218,118,251,197,181,34,170,
-  99,202,6,4,66,73,79,122,168,192,3,79,112,39,24,187,5,37,149,80,188,103,48,71,41,12,254,0,109,143,191,107,20,65,20,199,223,123,51,222,
-  190,205,205,238,94,37,123,97,9,87,164,178,80,11,139,43,44,174,220,211,77,47,178,118,87,236,193,5,33,248,7,76,136,154,32,71,56,147,77,170,
-  132,68,14,46,10,130,164,19,27,23,69,176,18,149,144,194,70,171,20,39,106,147,70,65,206,153,205,165,243,125,230,253,224,189,239,99,102,90,4,165,
-  205,30,33,72,147,153,63,210,180,69,231,129,128,228,121,93,33,62,235,39,23,33,4,63,146,116,233,86,108,200,110,182,227,56,10,195,246,141,184,151,
-  166,73,47,189,19,165,42,242,188,180,151,46,70,158,223,75,146,228,114,154,46,250,190,242,231,124,99,11,190,167,146,153,118,164,32,6,104,132,28,212,
-  194,38,232,96,194,122,201,201,90,25,131,195,28,232,128,1,190,221,253,90,129,236,138,3,250,118,209,205,202,151,53,157,87,221,147,67,124,254,12,139,
-  174,86,58,208,115,134,78,75,191,193,98,25,95,187,173,137,215,52,141,17,234,123,205,14,52,236,167,114,236,35,172,29,226,203,186,190,206,125,204,49,
-  153,15,67,128,171,31,102,175,233,121,237,234,85,60,170,24,41,23,63,80,207,12,222,97,98,119,252,78,131,39,254,151,183,152,191,199,193,39,44,78,
-  209,94,158,163,17,21,91,84,184,57,190,136,251,88,28,148,103,159,250,168,165,166,255,65,88,26,89,67,92,22,56,166,49,253,34,27,241,55,105,241,
-  25,181,56,16,79,69,128,65,128,24,88,237,159,50,80,38,22,202,85,215,248,72,60,194,21,49,36,75,189,12,245,61,183,112,119,121,115,202,79,62,
-  118,134,60,228,191,142,117,203,54,239,240,54,159,26,142,157,51,214,77,181,202,107,252,132,247,121,207,228,251,83,86,12,15,121,192,27,252,184,212,142,
-  121,157,191,27,54,249,129,241,45,30,241,134,163,36,74,41,65,10,85,149,194,212,66,9,133,138,212,5,9,202,214,85,9,53,59,175,154,25,212,170,
-  165,22,25,107,255,0,99,102,10,106,97,137,112,242,97,80,72,184,195,252,4,8,25,47,49,78,97,158,202,206,195,2,0,99,188,198,18,195,48,133,
-  233,21,211,98,14,102,30,0,109,145,177,107,20,81,16,198,103,222,174,183,195,185,217,91,44,228,41,139,166,184,104,163,49,4,59,15,98,33,100,33,
-  75,106,57,23,139,96,97,17,193,78,59,71,18,204,41,33,16,188,72,154,144,132,147,104,162,141,141,36,177,121,197,97,97,105,145,255,65,33,96,18,
-  109,212,227,156,247,54,201,65,240,251,205,204,219,157,249,118,223,242,118,92,65,161,243,48,184,129,178,82,113,251,89,157,177,147,163,116,82,37,232,233,
-  168,91,10,199,225,108,168,64,13,251,174,125,251,80,164,211,68,147,38,162,114,249,116,57,157,204,243,44,44,82,148,101,249,221,36,207,39,51,185,148,
-  72,34,25,132,73,20,69,23,162,36,234,11,69,9,133,36,69,203,43,211,209,56,230,10,87,134,248,42,211,19,190,197,151,164,116,39,248,57,242,64,
-  247,225,80,170,33,230,1,13,250,253,132,117,211,205,145,254,203,252,88,67,10,163,242,40,164,221,103,200,117,157,190,155,193,217,218,74,101,235,17,207,
-  224,252,216,246,53,126,192,131,220,103,182,208,212,77,29,76,93,118,184,200,87,120,204,218,239,240,38,102,242,229,208,15,96,214,16,154,216,248,128,155,
-  231,184,6,230,11,74,237,222,0,224,90,19,179,170,214,112,93,167,224,204,206,189,139,89,113,136,18,205,8,238,137,15,172,159,107,31,219,104,126,162,
-  24,192,44,168,246,54,182,215,145,213,235,79,104,222,160,221,3,88,6,243,138,75,92,194,99,121,248,212,195,239,202,114,160,216,99,239,43,190,245,236,
-  160,226,162,167,223,2,226,31,213,81,184,167,246,213,95,117,223,185,68,47,112,218,155,18,90,170,199,55,106,169,117,218,160,197,96,137,94,254,135,197,
-  96,39,104,81,139,58,65,39,120,69,66,240,139,118,130,147,204,81,131,86,15,115,69,104,208,178,208,16,166,79,48,69,214,61,71,187,180,79,7,146,
-  123,180,64,107,199,252,32,168,90,78,249,224,240,125,242,85,232,251,158,143,178,22,20,14,208,158,116,33,150,148,255,141,174,58,170,214,45,243,24,99,
-  136,255,1,173,80,207,107,19,65,20,126,239,237,152,188,53,97,55,120,136,205,54,93,115,40,8,18,193,91,3,13,84,188,24,48,85,16,132,30,92,
-  197,155,253,15,60,201,40,106,197,67,46,17,20,17,127,16,11,130,138,69,122,243,208,161,94,4,111,34,34,232,209,139,69,177,151,42,20,116,125,179,
-  59,73,35,94,253,62,190,111,190,217,247,222,12,179,243,4,22,145,181,119,168,178,13,91,251,32,5,130,204,134,32,40,192,56,70,149,61,0,199,161,
-  122,164,112,0,96,193,162,19,69,209,238,136,107,181,154,31,199,190,63,57,89,74,146,164,123,186,25,159,73,134,56,17,199,83,83,201,14,246,137,230,
-  195,48,12,194,114,16,196,193,193,152,187,221,174,106,85,230,90,13,83,212,109,29,235,80,199,166,106,66,221,195,244,162,94,76,207,193,225,60,30,211,
-  97,25,160,94,252,186,138,79,158,33,40,238,28,229,67,123,229,21,166,170,151,208,156,76,103,161,5,51,78,233,249,114,103,174,181,182,132,82,186,122,
-  225,218,162,110,155,179,233,41,219,199,122,65,191,64,185,97,5,155,0,171,8,208,0,48,43,158,125,159,121,73,102,157,64,183,225,245,254,59,117,23,
-  211,217,79,200,252,25,39,204,35,210,203,56,225,70,152,121,198,124,36,120,218,243,110,6,238,103,90,245,155,210,208,144,41,59,11,230,173,156,129,182,
-  79,166,229,22,243,156,238,202,188,86,142,5,161,210,148,249,255,96,129,114,32,90,179,107,14,242,232,146,119,217,147,180,65,27,244,216,211,66,12,67,
-  12,93,125,27,199,145,239,126,211,54,253,164,31,180,229,78,185,129,190,239,15,232,11,15,40,231,102,233,123,41,215,155,82,159,115,46,243,61,238,143,
-  248,190,104,249,171,56,224,45,190,45,204,247,127,179,199,61,190,46,188,239,244,192,233,161,211,149,127,184,51,247,141,111,241,38,175,249,235,254,43,127,
-  151,2,133,202,19,39,17,48,42,149,101,42,83,25,234,80,17,9,37,231,95,166,109,39,84,48,115,75,111,148,96,152,198,215,122,126,26,76,203,45,
-  149,63,99,98,58,193,22,225,195,160,113,135,249,9,243,69,198,41,204,211,217,185,88,0,99,188,198,18,195,48,133,233,21,211,98,14,38,30,0,141,
-  145,191,111,211,80,16,199,239,222,51,241,25,153,196,44,200,17,73,108,33,160,17,82,149,80,24,58,118,96,112,91,71,140,4,201,222,50,128,84,182,
-  254,1,15,17,34,26,10,17,74,96,2,9,53,82,210,129,129,31,69,98,52,76,168,35,63,42,177,177,82,160,93,58,33,69,225,158,91,162,140,220,
-  231,189,187,243,215,95,223,179,236,107,2,38,177,135,156,140,195,158,128,50,219,2,166,238,138,73,250,87,51,48,45,145,13,225,41,112,33,11,5,30,
-  34,46,212,131,224,70,189,206,57,168,19,5,65,193,189,25,44,46,158,94,90,14,150,226,56,138,162,112,37,12,163,144,155,200,182,237,232,86,84,171,
-  197,181,90,88,176,237,217,56,174,197,185,156,150,226,218,213,172,29,134,217,19,156,120,2,27,33,160,114,206,169,184,174,231,87,28,117,69,153,30,168,
-  210,184,88,158,41,123,42,36,223,135,121,112,192,92,112,102,28,168,84,185,85,203,159,47,125,201,64,149,47,60,240,171,227,235,170,4,234,248,60,191,
-  109,183,8,90,102,21,94,24,190,167,206,36,115,137,229,123,101,30,184,133,170,164,102,213,69,106,16,241,12,253,45,32,217,70,118,222,123,133,239,242,
-  228,2,141,79,174,35,173,246,176,137,206,89,215,5,112,200,97,215,101,87,157,83,231,191,103,26,108,1,126,182,161,230,248,52,96,19,192,184,168,74,
-  90,39,202,125,40,245,62,226,170,159,252,198,228,27,38,214,170,191,226,39,67,84,70,50,192,133,228,43,174,163,202,164,24,71,245,191,16,136,188,56,
-  110,75,196,93,161,217,231,205,109,75,98,75,182,164,98,62,225,166,28,202,28,7,242,154,196,31,230,40,14,132,180,44,174,3,57,144,109,108,99,83,
-  222,149,125,145,207,247,69,95,252,160,190,120,100,118,76,189,95,90,79,173,231,214,123,235,25,117,83,122,204,91,166,71,123,180,79,111,104,141,250,204,
-  200,28,153,135,121,100,62,32,205,19,102,131,14,152,29,83,179,150,122,53,59,230,67,234,112,237,208,22,221,167,33,109,166,181,153,210,78,121,205,251,
-  14,237,210,47,246,252,100,244,169,122,63,166,13,107,64,3,234,154,134,1,6,50,199,12,254,111,182,228,78,7,26,194,22,54,218,48,133,86,65,187,
-  82,143,238,39,138,243,23,85,147,207,75,20,97,24,199,159,247,71,51,207,184,51,59,123,170,81,220,117,232,178,6,153,18,68,29,54,240,230,136,59,
-  68,55,179,221,186,133,130,251,63,188,153,45,166,165,197,46,20,177,165,226,230,122,232,16,253,32,232,210,18,30,58,132,167,48,251,1,117,16,33,147,
-  138,168,139,32,246,204,140,174,58,159,121,191,207,207,247,125,103,94,102,114,28,246,174,150,174,42,3,25,249,72,183,198,199,120,247,94,3,111,200,174,
-  213,224,96,145,50,113,200,30,6,7,32,14,173,92,54,13,13,246,247,123,196,32,73,139,233,121,67,189,205,199,46,164,82,125,125,125,158,231,89,133,
-  108,214,207,229,178,195,185,220,57,211,178,82,151,10,249,124,222,47,248,249,14,43,21,183,173,164,159,183,146,5,223,247,109,202,251,126,33,111,15,251,
-  113,203,26,54,205,222,222,148,9,22,36,192,198,132,131,186,125,196,133,226,89,116,81,87,23,183,237,54,101,67,123,26,93,128,181,12,244,67,79,23,
-  128,211,3,46,168,204,87,109,250,20,36,220,78,202,116,162,106,223,54,182,147,42,165,50,27,3,229,56,96,41,89,142,159,14,222,128,86,165,134,116,
-  241,60,184,234,168,202,188,54,224,91,230,50,186,202,86,103,84,247,90,166,194,32,129,225,1,97,2,234,79,196,167,26,127,204,220,10,75,40,161,76,
-  231,109,250,126,43,133,109,139,172,202,42,108,105,158,127,33,67,253,212,235,56,233,153,87,252,221,137,247,154,26,112,194,36,160,3,245,42,87,29,170,
-  9,212,201,250,155,224,8,131,135,167,165,75,199,119,59,54,23,121,133,181,215,63,115,181,198,235,70,133,77,242,63,30,237,64,59,47,173,240,250,42,
-  167,61,148,70,72,34,82,178,171,34,140,162,74,84,213,246,117,237,175,104,141,89,187,53,121,96,206,78,116,133,115,206,24,23,100,184,96,76,240,17,
-  121,85,140,136,235,146,173,243,162,96,69,81,20,235,60,130,213,196,130,168,9,58,15,97,51,34,144,224,218,108,72,195,48,54,104,24,164,243,226,154,
-  156,23,227,236,37,27,149,119,244,41,98,142,55,127,199,219,100,200,161,251,119,108,57,54,107,60,48,202,88,194,23,52,74,248,8,31,98,20,253,196,
-  95,196,74,108,89,175,226,173,144,45,125,75,159,195,104,252,195,191,196,61,226,6,177,172,63,11,53,96,138,188,73,156,162,104,2,39,176,134,11,248,
-  156,24,195,105,156,193,89,178,227,196,40,141,167,164,163,120,19,55,112,157,186,127,16,101,252,16,43,133,187,223,197,143,177,149,24,253,51,146,190,27,
-  100,82,74,78,72,138,165,100,228,129,9,38,11,149,172,201,105,16,65,94,30,162,186,8,61,182,211,29,174,17,102,163,245,254,3,99,100,138,96,184,
-  195,60,133,153,137,5,0,99,188,198,18,195,48,133,233,21,211,98,14,38,30,0,211,248,195,200,128,10,238,49,65,25,48,154,3,74,243,66,1,63,
-  20,240,128,216,124,252,252,48,49,24,255,140,194,11,169,229,130,221,178,243,121,218,244,151,10,158,230,105,224,93,192,191,89,247,139,240,51,209,157,178,
-  179,244,215,202,29,51,89,45,219,198,215,42,203,240,73,246,0,255,83,185,5,226,203,100,87,235,180,201,178,117,203,62,227,125,128,46,251,174,129,169,
-  238,27,99,213,57,7,61,150,127,140,221,110,105,211,24,89,38,56,88,61,97,106,96,156,247,141,145,109,18,147,196,141,112,163,30,38,182,142,119,140,
-  12,95,24,243,126,164,139,125,96,84,128,203,24,244,49,177,45,101,106,103,122,200,248,145,113,34,219,39,214,57,108,127,89,31,50,182,51,125,100,92,
-  202,52,135,13,36,242,151,85,252,19,251,119,118,174,239,64,66,228,59,251,39,118,46,65,129,247,236,127,217,17,162,76,88,192,116,230,95,204,51,152,
-  167,1,225,100,230,41,204,83,129,236,95,64,246,116,32,27,36,50,149,249,55,115,59,115,39,115,55,16,246,51,79,100,238,101,158,195,252,151,121,46,
-  115,23,243,44,32,57,147,121,54,243,31,230,14,32,175,7,8,39,48,79,98,238,99,222,199,177,159,227,32,199,1,32,6,177,64,52,136,132,136,238,
-  3,178,246,112,108,227,216,193,177,11,136,65,172,93,28,71,56,14,115,28,226,56,10,36,143,2,233,35,28,123,57,182,115,236,228,216,13,196,32,214,
-  110,14,0,125,82,207,107,19,81,16,158,121,251,106,102,151,71,55,120,49,202,18,47,30,55,251,23,68,240,80,104,36,133,120,172,18,122,20,12,53,
-  255,128,151,17,123,144,30,244,162,34,165,213,96,82,161,214,128,224,161,69,20,22,15,97,181,189,248,171,120,242,15,40,30,68,60,137,176,206,123,91,
-  49,139,224,247,241,102,190,111,222,204,190,57,236,188,2,56,5,240,25,129,190,227,101,176,80,142,5,52,148,81,246,234,120,210,15,138,146,86,189,222,
-  165,90,173,102,34,83,139,77,146,36,179,203,177,137,98,129,137,147,164,235,176,220,237,46,9,250,75,125,91,54,81,100,251,164,51,50,87,253,200,144,
-  113,96,236,92,224,80,184,137,131,95,248,240,11,190,56,68,254,134,124,15,129,47,66,126,87,22,229,43,192,117,169,89,39,117,14,243,17,114,19,90,
-  4,52,223,162,14,44,86,67,234,180,224,111,135,27,227,166,157,95,204,155,124,86,142,124,177,1,188,39,145,207,243,53,142,243,119,200,61,142,127,204,
-  173,85,244,57,74,31,35,64,186,129,217,9,9,131,53,204,54,228,129,252,53,114,91,250,219,103,110,182,211,219,200,94,86,177,14,100,215,122,30,115,
-  99,1,100,1,0,162,211,133,56,186,190,51,251,53,20,17,22,227,117,219,205,141,236,22,166,175,112,110,240,18,211,109,76,183,228,53,150,179,186,131,
-  207,238,35,31,99,84,74,225,191,216,245,174,123,187,94,161,15,213,3,239,189,44,97,117,120,116,47,57,12,167,10,63,167,102,23,112,21,87,188,21,
-  239,134,227,7,245,81,29,208,39,58,160,147,67,53,84,99,127,228,143,253,29,127,66,19,122,43,180,121,68,111,104,157,134,126,225,255,84,39,180,21,
-  252,159,251,180,79,25,21,49,43,169,140,246,232,73,240,156,198,193,35,127,115,138,219,193,211,160,162,103,180,252,93,49,105,165,181,17,101,192,69,37,
-  89,60,57,106,119,132,168,161,68,44,103,219,107,160,42,52,206,187,56,163,85,245,55,109,82,61,108,211,80,16,190,123,54,213,75,106,158,93,88,172,
-  146,120,68,8,53,22,99,165,186,168,27,3,208,10,117,105,67,153,88,154,170,13,11,72,29,42,113,67,149,70,17,44,144,130,196,208,6,40,91,16,
-  67,203,79,186,208,169,132,210,137,138,13,137,174,64,39,20,41,81,23,115,207,118,2,18,220,167,187,251,238,123,159,207,207,146,175,9,136,226,23,66,
-  18,242,143,112,62,72,180,216,100,66,47,68,31,252,27,145,107,12,42,56,59,197,152,203,91,150,149,82,253,74,41,43,173,116,119,211,131,41,75,249,
-  202,47,22,199,231,173,161,249,43,190,149,201,40,223,247,61,207,247,23,22,50,22,91,121,84,158,82,158,95,212,44,195,76,93,189,149,146,132,48,193,
-  203,107,119,14,7,14,7,190,61,198,90,69,172,87,68,237,182,30,183,111,54,38,119,159,96,107,188,241,29,183,39,239,93,162,2,61,194,112,21,105,
-  5,233,5,134,1,93,4,154,230,199,29,42,132,179,0,52,71,5,32,155,114,116,29,64,219,236,80,81,32,37,229,225,46,141,66,162,130,222,49,29,
-  142,16,211,112,138,151,140,114,22,246,131,173,60,31,238,4,18,90,101,92,70,144,195,114,194,217,89,229,47,167,11,237,153,206,96,249,6,0,143,225,
-  41,58,221,30,234,204,148,207,64,237,129,120,127,150,22,235,13,209,108,99,168,58,252,194,28,175,112,207,185,75,178,51,226,12,135,89,214,201,134,48,
-  219,225,107,240,173,108,125,57,123,153,183,203,170,122,152,133,106,246,213,201,170,162,203,71,94,85,1,121,124,93,126,250,40,87,205,2,229,154,37,1,
-  43,54,45,194,210,216,215,134,32,147,209,247,147,51,6,138,56,80,19,131,59,87,14,145,232,6,98,215,17,233,134,161,13,248,206,248,63,48,137,146,
-  177,102,252,16,37,206,53,214,236,72,139,235,113,148,199,9,195,94,95,103,95,139,111,241,92,28,200,3,249,153,241,133,81,79,105,188,150,47,57,99,
-  94,143,88,119,126,147,122,203,249,44,189,43,99,236,49,116,191,47,63,202,13,174,27,220,255,62,219,235,77,155,114,75,54,123,216,143,16,179,238,220,
-  61,251,192,248,20,213,77,198,211,52,184,96,246,155,6,3,162,202,93,242,111,111,129,137,38,184,168,153,195,85,171,50,98,22,195,101,56,218,195,213,
-  137,221,96,9,83,152,39,204,223,19,96,98,184,196,194,192,196,192,194,192,192,192,1,196,12,78,25,25,124,124,57,124,122,32,40,167,199,199,231,111,
-  16,208,48,157,241,191,13,71,67,86,67,52,67,131,13,3,152,252,111,211,96,203,240,133,145,225,192,13,230,6,254,63,140,13,252,7,78,50,55,232,
-  254,215,105,208,5,49,248,255,243,53,200,53,240,127,97,108,96,99,98,102,98,98,98,102,6,97,102,70,70,198,87,76,243,64,20,20,92,226,184,204,
-  113,12,8,151,112,156,4,211,32,120,2,14,55,115,112,178,48,178,48,240,0,221,198,1,36,5,24,56,0,99,186,193,194,224,227,195,32,241,133,137,
-  227,18,227,37,198,45,220,239,56,1,125,82,191,107,20,65,20,126,111,118,133,183,203,112,187,90,152,83,214,237,132,32,123,171,133,69,138,147,92,97,
-  151,52,66,154,28,71,192,54,72,254,134,17,181,9,24,65,162,9,129,132,195,189,4,98,18,84,44,18,4,227,98,181,196,120,196,31,104,12,10,22,
-  118,6,35,154,202,102,124,179,155,147,156,160,239,219,247,230,123,111,190,55,59,51,204,37,1,112,18,0,182,17,128,224,7,158,169,130,49,1,66,192,
-  31,179,161,219,254,206,89,122,108,1,139,170,45,128,70,235,163,229,114,153,6,101,32,75,101,39,138,100,28,199,81,20,240,39,13,47,197,113,35,183,
-  43,141,198,8,219,216,200,88,196,34,25,5,172,139,75,60,29,115,163,12,72,26,103,234,76,227,45,172,129,170,43,79,205,35,125,62,218,148,79,166,
-  196,207,47,200,185,167,42,160,238,162,26,6,125,199,228,76,43,106,86,128,190,41,84,168,234,160,135,193,204,67,47,1,213,250,169,15,206,250,30,245,
-  245,3,171,190,163,222,67,142,166,147,117,106,15,245,55,44,162,105,209,85,117,129,23,156,16,207,114,21,175,86,85,3,170,162,19,84,175,81,249,251,
-  23,103,46,171,71,184,239,7,231,40,93,224,235,131,33,200,122,210,89,132,230,12,46,175,99,118,154,245,117,221,66,110,26,200,142,243,130,233,109,204,
-  206,115,230,129,217,181,126,110,118,90,101,175,12,241,213,231,95,79,65,184,149,5,42,156,44,237,122,42,212,143,205,185,66,46,120,147,167,118,205,137,
-  195,108,130,255,151,62,197,116,9,211,69,132,90,77,33,140,175,226,195,105,212,206,199,117,252,106,163,16,2,255,109,107,214,154,117,213,50,177,200,231,
-  172,57,75,49,247,14,139,56,241,188,3,98,236,87,103,226,128,52,173,193,113,188,110,221,176,174,49,222,136,183,140,79,244,142,222,83,34,78,36,34,
-  17,43,206,138,211,114,30,112,92,117,90,238,6,109,80,155,182,25,109,122,73,175,40,113,12,47,170,237,124,44,216,162,251,127,108,210,14,25,223,161,
-  45,70,39,219,100,108,229,120,65,31,216,239,187,247,156,249,67,88,114,151,25,137,123,196,70,219,24,68,100,219,146,159,172,228,235,150,252,160,37,74,
-  144,182,201,108,70,17,115,160,13,93,192,238,209,116,152,21,252,156,119,106,28,45,159,107,189,191,1,125,80,65,107,19,81,16,158,217,93,225,109,89,
-  222,182,183,80,146,253,1,146,228,44,184,189,9,66,15,137,183,54,249,5,213,131,7,255,128,79,144,198,131,7,33,105,46,130,68,177,245,162,81,200,
-  193,226,165,81,47,161,106,180,40,68,164,96,143,130,69,65,11,21,47,207,111,246,37,49,5,241,251,50,51,223,204,124,251,222,110,170,30,9,126,48,
-  57,168,105,123,58,165,9,224,9,104,6,138,254,5,119,210,46,175,174,173,174,93,170,71,81,164,5,46,231,22,23,195,98,84,6,116,185,114,57,42,
-  235,98,62,175,19,157,36,50,209,249,40,143,145,134,196,8,165,34,141,134,33,209,58,84,183,184,138,115,59,77,62,88,56,88,248,252,0,165,127,69,
-  228,179,107,124,243,252,81,197,110,240,207,138,105,179,105,176,93,151,108,54,217,188,100,178,169,93,33,204,201,212,168,138,153,109,177,115,145,137,77,201,
-  62,103,83,50,117,19,91,109,107,68,110,99,82,123,150,174,154,37,130,151,76,157,164,199,214,124,199,105,223,88,76,54,53,75,48,246,211,157,23,242,
-  64,175,118,163,205,71,91,124,157,233,130,90,201,245,123,248,15,142,151,179,91,73,154,227,101,121,102,67,46,238,60,241,118,206,161,62,28,121,131,47,
-  184,219,22,126,105,188,193,69,168,30,231,206,12,214,61,244,109,150,93,74,182,208,136,221,187,199,242,77,41,140,37,217,196,38,105,233,102,209,196,173,
-  194,237,130,41,29,214,91,218,36,38,110,238,113,171,64,57,249,174,67,172,104,112,223,163,70,105,122,245,254,200,251,26,176,231,128,234,251,89,17,49,
-  81,34,125,230,177,201,159,32,51,111,255,135,60,197,29,95,200,28,131,242,115,248,61,19,46,141,75,7,214,187,254,61,255,189,218,87,31,192,17,216,
-  13,133,143,192,238,148,143,179,73,55,220,14,159,34,182,230,134,74,184,11,74,253,8,14,213,158,122,131,24,170,147,59,167,68,191,59,193,215,224,172,
-  254,4,254,157,189,5,95,141,99,115,142,131,83,129,31,120,1,35,75,245,3,18,42,138,16,80,28,65,205,51,246,146,41,202,230,243,160,243,136,138,
-  50,157,157,225,5,127,0,61,134,193,13,131,48,16,4,215,119,126,32,4,9,13,64,42,176,27,0,250,161,139,92,37,169,197,21,32,64,60,210,1,
-  29,240,138,228,156,1,177,163,25,109,73,139,5,89,0,153,138,225,225,189,79,54,42,164,143,157,188,196,64,58,104,223,210,227,103,194,206,177,14,95,
-  14,27,139,139,173,184,116,158,177,134,56,98,34,98,78,178,49,31,245,218,154,141,202,124,52,49,221,228,22,133,98,15,10,84,231,255,3,125,83,61,
-  111,19,65,16,157,217,61,197,123,214,230,206,78,1,14,185,24,26,36,115,178,45,126,64,10,42,132,40,168,40,136,133,168,41,16,173,221,32,13,226,
-  43,162,136,4,56,1,34,64,22,14,14,81,144,248,44,18,98,193,165,0,252,19,76,72,68,10,58,168,16,69,68,179,204,158,207,86,138,152,247,244,
-  230,222,206,155,93,221,135,174,34,0,14,1,116,17,44,20,235,183,181,225,20,244,32,64,8,216,11,103,136,31,192,142,175,162,141,156,116,33,172,228,
-  84,78,107,29,176,180,231,229,148,82,110,145,81,102,20,139,1,187,192,134,118,233,121,231,45,46,93,176,184,172,3,78,7,25,167,156,123,65,96,21,
-  40,173,92,154,71,51,135,10,232,22,146,223,208,59,217,157,236,247,236,59,194,7,163,11,119,240,115,233,225,149,70,21,232,62,70,94,228,81,158,166,
-  168,102,170,172,60,149,193,148,184,193,187,242,192,103,128,185,137,84,162,10,144,111,46,38,67,172,35,138,95,133,82,25,95,165,248,57,226,185,105,170,
-  176,106,102,18,226,75,149,166,169,108,60,123,53,231,168,198,251,249,204,79,156,80,9,248,192,178,25,165,89,252,115,56,58,99,78,158,138,90,252,74,
-  163,199,92,58,7,183,198,224,199,23,124,36,62,22,23,195,198,2,82,8,240,98,3,59,71,41,164,49,10,205,233,93,190,157,153,160,115,128,194,232,
-  46,118,82,220,46,209,113,160,9,242,193,188,226,113,146,189,201,179,246,6,193,143,43,143,229,73,179,100,156,179,171,123,247,146,97,189,139,51,1,111,
-  152,168,139,95,186,62,217,153,229,182,57,198,167,175,96,180,140,39,34,36,140,94,227,214,6,254,116,80,8,252,63,86,165,229,85,185,30,179,205,126,
-  93,246,179,39,114,77,146,93,249,137,134,225,239,94,103,23,77,217,148,183,241,186,188,33,175,201,241,109,181,173,154,98,188,41,94,186,150,139,110,59,
-  230,7,246,109,119,205,125,31,243,121,186,171,150,92,171,62,191,169,183,110,51,233,116,85,63,233,79,89,45,167,247,231,166,218,84,45,183,229,218,218,
-  115,195,252,87,245,38,214,83,247,89,194,149,244,82,122,196,65,71,56,41,91,181,116,64,51,237,55,225,202,43,7,53,106,209,235,40,254,39,20,255,
-  50,9,113,31,199,204,196,251,157,120,71,175,163,71,6,83,152,129,2,20,254,1,117,83,49,107,84,65,16,222,217,125,119,217,125,108,246,114,96,97,
-  4,95,2,54,39,122,7,119,164,140,141,189,125,226,15,176,182,75,138,20,83,72,76,109,46,71,184,66,14,4,15,66,64,212,4,244,12,248,196,66,
-  235,20,146,196,20,215,8,146,128,133,141,33,205,58,179,251,146,187,32,126,223,206,188,153,239,155,217,199,43,222,3,41,8,251,32,102,249,169,41,126,
-  3,165,71,34,66,138,68,92,133,44,139,255,129,175,90,184,174,107,53,107,221,5,110,164,105,218,8,112,20,89,214,200,92,44,57,59,154,203,232,100,
-  13,142,140,44,87,24,44,56,167,241,41,96,221,223,245,27,208,205,225,112,182,103,135,213,97,181,253,120,115,242,232,25,236,223,249,177,50,92,22,184,
-  9,185,235,57,188,39,144,26,23,134,177,3,56,195,187,128,21,239,184,163,7,233,130,74,225,23,113,217,47,133,233,207,64,199,127,34,125,30,31,198,
-  61,206,59,224,223,114,77,159,227,23,105,144,111,197,25,191,228,231,121,96,129,55,217,254,72,23,61,1,108,161,66,139,181,213,95,112,255,235,79,218,
-  57,107,138,188,43,7,242,245,220,89,115,120,74,190,16,249,170,196,58,150,232,83,110,243,40,150,242,13,137,173,252,15,189,184,130,183,56,77,23,126,
-  151,239,75,99,147,111,75,58,235,115,109,135,217,73,169,99,72,155,166,72,41,50,90,169,175,127,129,246,205,147,107,157,42,90,65,106,86,120,117,186,
-  23,91,190,137,45,25,161,148,188,172,70,245,69,175,20,200,127,181,8,238,202,229,119,138,249,33,112,47,84,80,224,185,26,40,168,0,159,49,156,23,
-  49,106,207,199,237,158,234,169,99,189,107,94,200,93,115,172,183,204,150,121,21,184,87,144,171,247,102,16,120,160,15,116,223,244,205,183,137,190,225,234,
-  187,222,9,90,84,251,151,62,231,209,236,154,62,10,124,105,198,35,50,234,107,122,84,71,239,80,191,9,33,19,72,116,82,74,84,66,63,131,21,26,
-  236,68,66,255,128,5,162,152,130,132,53,138,36,208,134,78,139,41,34,171,49,179,98,203,209,15,189,164,250,47,227,100,98,184,196,194,196,194,192,193,
-  192,144,161,193,199,199,167,7,68,12,13,211,24,65,104,25,99,195,116,198,6,57,32,81,223,32,255,133,177,129,245,192,57,102,16,186,203,252,159,15,
-  76,48,48,51,49,49,51,49,51,51,238,98,102,4,129,59,28,91,57,151,115,110,1,226,229,156,203,192,144,145,133,1,12,1,149,77,61,79,195,48,
-  16,245,37,110,226,68,145,195,130,132,68,49,252,0,200,194,95,96,68,221,25,88,249,29,7,19,66,157,88,97,226,179,124,140,32,164,10,80,166,78,
-  76,136,157,78,140,12,76,180,75,176,175,13,118,75,130,224,189,220,243,157,243,238,121,211,99,6,207,192,150,4,179,248,0,58,182,88,5,248,143,62,
-  96,53,232,2,143,9,73,210,76,8,146,32,8,89,38,51,149,41,13,18,105,190,86,83,150,80,227,243,219,37,149,26,29,173,209,143,166,96,152,150,
-  188,158,191,153,195,180,31,15,229,155,108,167,67,249,34,7,235,152,150,83,14,182,31,47,21,18,87,138,101,102,100,162,209,37,49,21,152,190,134,100,
-  91,208,170,244,149,41,61,59,79,186,57,211,17,101,76,177,225,120,21,102,121,23,208,67,142,2,67,140,123,3,56,156,221,189,5,124,130,119,191,35,
-  218,225,78,252,41,15,50,244,202,9,123,96,135,124,213,110,98,67,199,25,157,236,168,68,190,15,253,69,242,114,173,134,13,244,205,214,196,227,249,154,
-  19,86,17,67,81,133,114,22,174,64,127,30,1,234,225,77,163,194,227,19,130,96,219,191,175,97,101,52,250,119,149,132,223,177,7,23,145,229,165,230,
-  73,244,88,195,7,135,231,127,230,113,212,169,164,235,57,251,55,143,162,211,136,37,76,132,60,228,76,48,83,35,181,157,81,174,61,60,208,164,185,188,
-  183,78,227,152,249,2,141,141,187,74,3,65,20,134,207,153,29,102,215,205,50,3,198,54,169,45,76,106,65,159,64,34,190,65,74,159,227,20,162,65,
-  44,109,197,136,216,108,37,177,16,36,136,149,88,91,88,139,133,88,164,178,180,112,156,75,214,217,205,110,208,239,219,51,123,254,185,238,49,176,60,227,
-  58,4,62,209,253,246,161,6,175,245,98,113,75,226,200,100,137,212,49,28,202,174,161,111,48,163,107,179,26,254,64,216,211,39,21,124,31,156,166,135,
-  106,162,158,228,68,61,202,243,221,15,89,164,19,12,61,0,245,244,198,188,58,254,164,238,0,109,235,45,176,107,227,216,100,73,93,83,102,5,138,175,
-  89,189,179,112,1,245,30,174,25,37,212,34,73,107,212,190,191,98,7,23,236,45,206,91,35,57,107,127,175,30,13,142,121,145,190,198,44,132,25,38,
-  148,81,228,75,223,224,239,21,138,184,233,230,207,189,230,204,68,65,140,236,27,72,169,73,169,181,242,104,37,232,205,166,171,152,35,114,248,30,61,81,
-  137,218,140,152,70,205,98,157,219,168,89,108,230,146,5,243,149,233,18,239,74,190,196,255,241,108,137,229,61,163,228,47,129,163,209,143,177,171,152,67,
-  6,153,112,163,21,185,224,182,68,101,30,249,15,227,191,194,194,128,2,226,228,96,128,15,136,248,24,26,116,255,235,160,97,190,6,126,8,236,97,106,
-  224,105,96,198,130,129,114,255,179,25,81,0,51,42,151,241,26,59,62,200,200,130,13,50,176,0,0,83,253,194,248,128,137,1,27,96,225,130,51,119,
-  49,178,48,200,228,197,193,129,158,92,28,159,156,159,28,8,200,128,185,124,32,38,15,135,76,3,191,0,88,3,191,4,63,59,67,131,238,127,89,9,
-  134,255,214,26,255,249,254,235,0,57,64,220,192,207,192,192,209,32,247,95,22,194,5,11,217,52,248,252,183,234,216,202,200,44,192,1,2,12,64,220,
-  192,222,192,193,208,192,217,192,6,38,32,248,192,36,70,23,136,12,146,216,106,70,32,106,96,36,4,26,153,177,139,55,32,137,119,49,54,51,47,225,
-  92,78,2,92,204,185,12,11,92,196,185,20,8,25,120,24,88,24,88,24,89,152,192,144,129,131,145,133,153,5,4,152,89,32,226,12,8,200,3,225,
-  51,161,136,1,0,149,144,61,75,3,65,16,134,111,247,226,221,237,26,119,49,126,32,168,87,136,133,136,6,172,245,7,72,212,252,4,197,63,96,163,
-  149,213,84,106,17,108,12,106,161,112,32,196,175,94,193,143,196,210,66,27,137,177,19,11,181,51,136,4,9,34,196,187,189,28,183,73,54,168,239,179,
-  115,204,188,55,59,55,220,34,214,2,221,33,77,27,210,212,250,64,82,49,60,33,21,17,69,119,232,25,202,105,55,200,114,69,19,9,74,105,52,16,
-  107,144,37,68,133,200,108,220,182,109,230,69,156,85,111,244,201,205,98,68,50,233,102,97,167,144,240,226,140,0,247,169,140,91,150,159,61,13,64,79,
-  186,55,67,215,121,153,229,153,195,29,254,50,147,226,65,149,155,92,225,37,246,202,50,60,205,223,102,210,60,168,150,195,150,141,169,208,118,90,45,176,
-  221,233,35,48,90,233,7,91,211,188,47,1,119,76,55,169,158,202,72,152,7,167,126,39,229,144,218,22,49,54,122,149,210,33,6,12,104,229,214,253,
-  155,208,13,237,192,139,247,248,186,231,171,227,104,21,151,217,123,215,73,123,150,21,219,30,230,189,109,253,106,123,12,98,155,236,145,0,89,107,217,154,
-  222,233,12,170,157,18,10,155,190,7,195,23,78,22,47,129,9,24,12,32,34,252,125,23,32,246,244,137,129,10,44,55,34,64,115,121,228,38,45,213,
-  136,186,97,250,185,106,81,213,208,185,134,46,207,42,229,240,179,254,101,96,33,36,228,231,186,144,236,123,10,28,89,168,70,122,85,134,97,92,232,255,
-  67,30,115,170,255,13,244,139,246,176,207,33,9,57,22,100,155,112,209,132,75,137,51,137,99,178,175,160,96,22,204,221,58,14,136,26,175,215,67,190,
-  159,81,176,102,249,212,123,231,68,139,224,136,38,129,196,179,222,251,1,147,99,186,196,194,128,6,128,2,44,108,80,54,135,30,159,28,20,232,129,1,
-  31,15,16,240,65,217,13,222,12,13,252,48,109,13,114,255,249,128,88,167,193,6,40,182,32,8,200,225,111,240,110,240,254,47,139,36,124,96,63,243,
-  129,38,150,6,105,160,20,10,252,127,147,177,129,177,129,179,129,185,129,173,65,164,65,247,193,94,102,16,23,164,122,63,243,127,102,100,41,70,56,96,
-  134,0,56,141,14,182,51,131,32,156,187,152,233,26,59,33,56,23,12,175,177,119,112,160,66,118,22,6,22,70,20,200,206,194,6,196,44,44,32,25,
-  54,22,86,32,102,6,98,6,22,0,99,186,194,194,32,199,199,208,192,127,96,9,107,3,63,35,16,92,99,191,198,206,192,2,0,211,254,194,248,128,
-  137,1,7,96,225,66,230,237,98,100,97,144,241,139,131,2,62,185,60,61,57,36,32,195,167,135,196,151,225,225,105,224,71,104,5,178,27,248,255,203,
-  54,216,252,183,198,196,96,73,236,210,13,114,13,186,13,186,29,91,25,85,56,160,160,129,163,129,157,161,129,165,129,5,98,38,2,29,152,196,120,224,
-  18,99,3,59,134,220,129,213,140,7,86,50,58,48,18,5,26,153,113,74,53,160,74,117,49,182,48,183,50,47,225,92,78,50,92,204,185,12,39,92,
-  196,185,20,8,25,120,88,208,0,51,152,100,224,97,192,129,153,129,42,176,202,8,0,0,133,147,203,74,195,64,20,134,231,146,54,23,202,68,208,133,
-  120,9,93,74,41,125,1,107,31,64,87,130,235,130,47,224,3,184,26,23,22,5,133,34,46,21,11,130,86,42,46,68,16,106,181,34,46,93,21,20,
-  41,130,22,92,186,177,184,208,34,198,57,153,140,105,210,82,255,143,201,153,57,231,63,103,66,32,139,4,73,53,240,20,138,170,141,213,46,149,237,206,
-  107,17,159,58,199,81,63,221,97,195,48,70,45,203,26,75,8,77,48,198,28,127,137,135,42,89,230,82,198,1,101,50,16,193,232,155,193,233,168,70,
-  223,164,102,72,179,99,34,110,3,110,90,198,151,241,170,213,158,221,203,150,236,74,178,195,26,172,100,63,167,78,230,86,179,5,155,59,245,92,131,149,
-  109,216,149,176,172,189,167,85,166,48,99,136,33,147,60,235,78,139,197,212,56,132,74,122,248,2,136,46,227,142,231,6,71,184,220,119,74,79,100,162,
-  175,147,187,190,165,60,198,9,199,238,10,230,58,215,184,86,219,164,229,22,121,164,35,77,250,197,206,244,55,218,164,167,243,79,56,153,39,45,189,16,
-  251,198,121,242,113,79,182,245,13,173,73,143,23,100,226,181,72,119,48,244,34,249,46,235,88,206,244,62,198,141,127,129,88,94,172,111,193,69,148,67,
-  3,129,166,222,87,8,13,91,142,20,85,130,51,184,224,179,72,127,180,97,34,132,133,32,18,10,34,42,37,68,131,140,47,28,136,6,138,215,232,255,
-  224,110,157,211,193,224,129,218,39,146,35,83,82,49,175,34,212,250,112,233,83,253,163,98,30,134,120,208,3,118,35,148,205,48,202,167,122,15,66,172,
-  25,146,232,89,114,97,98,77,34,126,65,239,233,237,19,200,91,176,83,245,94,2,23,246,157,200,16,107,8,78,191,19,188,194,194,0,5,124,80,58,
-  79,79,78,14,136,228,228,96,12,142,6,254,6,126,134,255,58,13,186,64,89,100,206,20,166,6,166,6,70,160,0,123,3,88,184,129,31,93,132,25,
-  29,48,162,131,107,236,232,176,131,3,21,178,0,1,35,16,50,129,73,16,100,6,66,70,36,8,0,149,75,185,13,2,49,16,244,130,225,108,116,178,
-  69,126,56,34,32,184,115,3,80,1,72,148,64,9,212,48,100,136,144,18,120,3,98,18,162,43,133,34,200,205,158,249,2,64,136,153,29,237,236,140,
-  182,123,161,115,77,124,132,108,61,220,137,100,54,158,220,225,157,113,206,121,231,166,44,151,121,195,222,179,77,21,108,47,73,18,91,125,96,20,134,24,
-  132,62,138,144,195,193,134,92,5,131,130,11,203,149,169,200,97,39,102,24,192,207,143,148,170,59,144,64,65,163,25,165,64,104,10,72,52,248,211,150,
-  75,42,55,132,54,123,83,21,183,188,60,16,207,47,204,234,95,10,188,138,5,109,244,254,47,174,245,238,141,43,189,213,34,21,146,100,77,190,208,144,
-  117,190,111,169,136,155,226,102,166,50,222,226,201,43,141,143,189,75,195,64,24,198,115,185,52,105,74,185,211,193,45,102,118,144,108,130,147,232,34,133,
-  58,249,71,116,116,117,244,69,20,4,209,161,184,42,5,161,173,90,196,65,16,165,218,46,78,78,182,32,78,210,65,65,220,116,106,93,226,229,174,231,
-  157,241,10,125,126,185,230,233,251,121,89,183,45,165,14,178,172,25,203,164,47,164,253,41,105,222,49,150,235,81,215,50,43,203,149,227,202,15,69,210,
-  210,139,214,162,40,10,195,144,68,17,33,249,128,85,7,233,22,125,136,172,214,149,116,66,49,38,18,221,87,151,174,131,251,176,178,60,32,187,116,64,
-  222,72,181,32,221,30,109,47,108,211,79,210,37,93,218,43,72,247,72,96,69,85,64,81,197,179,124,240,44,80,246,145,16,138,233,149,85,190,143,198,
-  211,252,29,138,237,86,76,196,35,82,236,140,188,158,105,104,186,70,250,118,3,67,14,124,112,192,5,59,62,71,48,9,20,8,120,224,244,223,237,139,
-  169,78,30,26,118,127,226,155,108,146,75,175,54,39,221,51,46,207,191,248,21,255,3,191,102,30,2,233,142,108,168,15,139,15,188,62,46,47,170,196,
-  22,98,27,48,32,6,229,236,35,177,182,119,42,246,35,150,101,55,96,176,223,86,43,201,122,236,100,216,113,152,75,90,93,112,70,223,246,223,130,141,
-  17,133,80,18,9,155,11,113,113,139,185,244,48,66,42,162,11,253,17,254,149,235,186,77,60,62,250,144,43,60,62,104,12,29,219,138,19,95,113,198,
-  185,51,210,52,114,171,113,163,81,75,241,228,9,14,13,212,125,51,178,39,65,159,85,77,177,147,85,152,226,14,147,229,96,118,52,12,209,31,227,189,
-  194,194,0,2,124,96,146,33,79,15,4,32,164,30,71,131,205,127,175,6,221,255,124,13,114,72,204,255,214,127,24,27,64,144,185,129,165,129,9,153,
-  221,160,194,140,12,24,145,193,53,118,4,236,224,64,134,236,44,172,44,236,44,108,64,200,10,196,44,44,12,28,172,64,22,11,11,51,11,0,133,144,
-  189,74,196,64,20,133,239,157,25,147,155,101,152,109,4,183,8,97,187,13,40,91,201,54,106,105,35,178,143,48,165,149,228,25,70,108,196,194,194,210,
-  66,196,127,177,22,65,116,205,83,88,88,249,12,218,44,54,227,204,36,6,221,128,158,47,57,100,206,185,185,144,140,24,192,59,146,55,128,45,152,145,
-  248,246,232,119,254,128,2,54,58,157,84,74,69,68,133,30,102,133,118,26,7,215,58,85,94,99,165,138,97,166,117,29,186,163,164,52,183,202,42,211,
-  253,92,127,86,165,60,218,180,234,67,1,152,85,187,146,15,122,11,0,249,32,236,55,221,147,101,63,230,135,243,198,226,184,95,213,213,146,204,172,217,
-  197,109,19,27,218,187,195,201,43,78,35,56,126,113,126,64,162,239,83,112,184,15,163,160,242,16,223,70,134,12,115,247,92,120,105,201,27,81,221,199,
-  254,84,222,162,187,12,50,198,176,37,86,235,103,198,57,223,225,143,129,214,188,225,247,13,237,109,251,184,203,111,18,207,121,50,9,60,5,174,254,229,
-  44,185,110,168,146,203,63,57,77,46,28,32,153,128,249,88,128,132,240,99,152,96,130,11,214,128,161,137,132,235,220,243,76,67,95,75,97,98,128,130,
-  75,140,12,26,12,24,224,19,35,140,165,101,131,44,206,130,170,12,206,101,99,192,6,206,48,114,128,1,151,151,23,15,24,240,161,2,144,20,24,112,
-  198,249,233,233,201,201,233,129,161,28,15,28,128,85,65,153,126,126,113,126,80,125,126,200,170,57,15,4,253,231,131,193,6,57,118,246,99,182,19,141,
-  219,12,150,242,119,243,255,228,123,99,9,161,15,216,125,230,187,200,183,156,255,41,223,68,254,77,30,48,214,1,53,144,92,131,55,66,238,152,18,11,
-  67,131,55,200,36,6,160,97,252,255,101,27,228,254,235,52,232,50,60,240,98,0,11,65,17,80,20,76,163,91,13,211,140,16,193,102,216,44,149,3,
-  231,153,26,248,26,4,26,4,65,248,255,54,96,48,29,152,203,116,201,120,201,75,198,31,124,125,252,79,248,94,234,64,232,127,154,183,120,183,9,60,
-  17,120,195,223,32,216,234,4,99,205,249,194,248,142,175,133,255,159,33,66,242,217,22,166,26,142,134,116,176,161,252,13,76,13,188,13,204,13,60,13,
-  172,13,92,13,252,15,110,51,1,41,54,32,102,71,208,251,247,50,130,101,129,24,211,45,64,147,34,208,132,160,2,104,70,63,217,204,244,156,181,134,
-  137,137,137,17,8,152,192,128,25,4,32,76,70,70,102,4,96,98,130,9,66,0,51,10,96,99,219,195,76,12,100,68,6,219,153,241,65,70,252,96,
-  49,19,2,174,228,4,193,213,64,184,15,13,238,193,10,247,130,225,46,36,184,154,115,57,16,94,99,199,6,231,98,129,43,56,97,16,89,229,114,176,
-  41,203,128,176,131,3,1,151,97,136,32,224,110,78,96,22,100,97,101,97,224,96,224,96,2,146,140,32,22,152,135,75,28,0,147,184,194,194,128,1,
-  248,192,132,28,16,232,201,129,1,159,30,16,200,233,229,233,233,241,233,53,120,255,231,3,65,134,255,124,13,252,80,13,32,126,131,13,80,76,0,198,
-  58,112,157,185,129,31,10,185,26,88,225,108,32,252,191,137,177,129,177,129,169,129,19,72,242,127,129,179,81,0,51,2,48,226,0,215,216,137,129,29,
-  28,48,200,192,194,200,194,4,132,236,96,18,4,25,89,24,88,152,89,88,88,88,129,52,3,80,158,9,204,99,96,1,0,11,100,98,96,96,184,196,
-  200,192,160,192,193,128,0,159,24,65,100,26,3,38,96,65,80,108,12,216,192,46,70,22,6,41,41,46,46,30,30,30,25,30,48,224,3,3,14,16,
-  144,147,211,3,66,84,32,3,99,240,241,97,147,230,227,3,26,179,64,234,63,95,131,77,3,255,26,229,95,138,51,157,22,72,93,81,217,204,255,147,
-  111,153,238,47,190,45,252,79,21,96,236,213,222,87,180,38,243,239,228,7,177,33,58,254,235,0,177,87,3,63,144,141,3,47,144,90,192,254,159,15,
-  200,150,3,145,48,123,136,213,13,86,203,189,64,179,65,247,192,33,198,6,230,6,214,6,246,158,191,140,207,88,63,48,117,108,101,124,119,145,209,234,
-  7,19,195,55,150,39,108,221,252,16,150,198,187,179,140,82,64,214,52,214,3,214,16,229,12,64,138,7,55,62,48,137,241,129,58,88,37,19,136,132,
-  219,114,192,139,40,237,96,165,171,25,15,172,100,116,96,2,2,70,156,128,9,14,48,229,152,129,128,141,141,173,145,121,15,14,136,205,192,6,230,237,
-  72,16,183,197,93,140,45,204,173,204,43,57,33,112,53,24,46,225,220,135,3,238,133,195,229,68,194,197,156,43,144,32,76,116,25,9,112,17,231,82,
-  32,4,166,120,30,32,4,146,236,44,12,44,236,44,16,54,78,12,33,69,144,72,32,102,3,234,100,35,164,83,0,0,11,96,98,0,129,95,140,12,
-  8,240,9,204,73,99,192,2,88,208,153,108,152,106,56,192,128,15,9,112,129,128,156,30,16,242,201,241,233,1,129,28,20,240,241,64,129,12,140,1,
-  213,129,164,136,111,129,230,127,190,6,185,255,58,13,54,13,252,199,84,158,242,189,145,253,175,243,194,250,25,223,100,5,24,251,167,215,50,45,24,123,
-  1,119,131,46,72,237,127,235,6,239,255,94,64,125,80,189,255,101,161,206,107,208,61,96,128,16,4,179,192,74,145,173,65,102,255,215,65,55,2,104,
-  194,1,166,6,198,6,38,32,100,110,96,255,181,129,105,2,99,23,211,4,166,31,76,187,216,110,243,193,216,31,216,126,109,129,75,28,56,193,220,192,
-  219,192,196,208,192,15,212,193,243,127,41,35,66,59,80,8,5,62,216,135,48,27,201,22,20,43,81,56,12,184,204,98,2,3,102,48,0,51,25,33,
-  128,25,5,96,17,219,131,3,50,98,3,219,153,177,65,70,92,96,49,19,2,238,225,196,14,119,193,225,53,118,98,225,92,172,16,89,69,7,7,49,
-  144,145,5,1,217,161,144,129,7,13,178,176,65,33,170,56,0,227,184,194,194,0,1,122,114,32,40,39,215,160,251,95,167,193,230,191,117,131,247,127,
-  47,6,134,3,77,44,13,76,12,13,252,13,204,13,60,64,146,159,17,13,92,99,71,133,44,44,140,44,32,204,12,196,32,8,0,117,147,193,107,19,
-  65,20,198,231,205,108,146,153,176,153,237,65,177,149,109,44,162,23,221,246,162,55,243,7,148,136,57,75,15,197,83,109,111,30,132,122,243,21,196,138,
-  136,84,105,131,208,86,138,105,171,146,94,60,136,80,108,93,2,213,104,171,182,241,42,52,40,10,158,4,15,162,1,89,223,236,110,108,147,224,247,155,
-  247,246,205,190,55,95,178,11,123,145,51,163,26,176,62,198,36,139,245,3,40,141,176,118,241,112,237,219,197,247,44,246,31,113,214,117,128,243,145,19,
-  73,43,121,116,112,240,124,62,159,183,73,221,20,82,147,210,146,228,217,158,173,135,135,135,7,178,113,104,215,117,105,66,199,178,61,215,29,208,133,66,
-  65,83,97,187,102,118,32,75,131,209,44,169,80,112,105,138,14,216,110,38,51,216,199,228,17,41,235,246,203,195,152,197,73,8,46,248,233,134,190,229,
-  172,218,95,188,175,218,84,141,241,85,136,42,92,50,143,25,204,152,140,94,112,50,206,18,123,131,12,14,209,46,139,57,60,187,59,15,232,4,26,29,
-  116,152,89,57,106,56,212,166,191,238,207,0,121,4,163,12,199,40,5,94,100,128,69,48,158,251,188,174,152,31,145,18,115,254,152,57,114,41,164,8,
-  216,143,163,88,6,204,117,95,3,201,14,73,185,114,135,55,186,110,60,133,202,153,159,199,166,190,193,130,211,208,69,189,113,186,40,163,170,241,17,138,
-  18,169,172,94,165,163,89,236,159,92,2,243,6,127,233,189,84,189,109,108,251,253,187,128,61,40,235,7,81,34,167,72,96,218,68,117,222,116,115,44,
-  24,199,161,203,244,150,166,56,89,145,17,61,80,118,90,207,46,66,100,100,188,154,166,211,189,179,158,148,213,235,156,213,231,184,191,11,209,170,223,227,
-  126,25,252,207,224,127,130,237,39,124,26,78,125,23,156,115,232,20,143,21,86,29,93,33,4,229,100,114,66,76,136,231,45,116,58,221,23,6,20,53,
-  168,193,51,209,10,181,157,112,40,202,141,246,179,209,141,5,113,110,93,24,214,196,77,120,33,118,196,241,18,239,41,241,199,202,80,38,22,137,55,106,
-  61,164,121,53,213,90,204,38,81,73,85,82,15,85,196,102,219,213,116,74,242,79,234,119,170,164,230,228,156,124,164,90,137,78,87,82,155,170,233,241,
-  94,109,17,175,99,150,67,182,226,104,230,229,176,179,215,175,18,239,84,77,109,171,29,245,86,61,80,31,212,74,122,67,189,82,9,43,97,209,55,108,
-  49,11,136,40,195,191,29,97,199,184,86,84,187,33,241,12,179,91,167,201,203,250,11,109,143,177,107,219,64,20,198,223,221,201,150,46,85,79,54,120,
-  40,33,136,210,161,147,229,161,107,37,104,182,208,144,127,192,253,7,146,12,217,179,189,33,132,182,116,244,216,22,67,75,29,50,38,134,148,144,65,16,
-  90,119,9,132,82,60,148,14,222,227,14,245,144,33,203,229,61,73,182,101,211,239,199,241,190,247,221,187,59,105,75,2,76,4,128,7,133,184,1,120,
-  250,204,192,92,82,78,205,188,86,97,89,18,204,185,120,226,121,158,41,105,133,180,170,95,180,72,166,85,200,47,20,134,89,104,200,242,104,104,194,86,
-  56,157,162,174,169,95,98,192,116,55,70,245,81,125,172,59,65,63,56,52,182,53,49,236,126,110,180,115,51,126,136,201,99,200,71,109,19,247,193,238,
-  228,13,224,171,174,75,153,193,176,88,1,38,220,3,96,12,197,137,130,26,69,246,57,128,141,112,215,182,179,40,177,49,38,128,73,26,35,10,76,30,
-  165,67,137,46,234,31,127,232,239,113,32,15,220,35,253,190,242,111,237,216,205,221,237,165,124,155,217,190,115,125,42,63,139,244,183,66,77,60,192,154,
-  125,39,48,178,235,124,26,27,24,165,111,212,232,138,239,82,232,208,170,210,237,58,189,145,252,65,155,52,183,141,49,205,228,143,21,101,92,233,208,15,
-  208,62,45,187,55,174,54,248,34,192,136,146,136,79,166,127,37,189,217,23,71,149,182,204,165,88,153,19,172,114,192,54,139,102,115,217,150,146,95,21,
-  115,145,49,173,236,68,73,31,213,217,18,34,40,239,223,45,85,33,186,74,124,146,204,133,254,63,231,51,190,235,161,59,165,167,123,122,238,78,245,7,
-  119,17,78,203,228,179,175,61,230,139,158,195,221,98,118,66,252,210,223,244,64,43,7,60,233,8,7,168,130,239,58,12,121,95,248,80,163,212,103,79,
-  59,53,130,146,170,195,100,153,207,231,60,231,30,99,190,194,194,192,160,167,167,215,32,247,159,239,63,223,129,169,44,13,44,13,108,140,96,112,141,29,
-  4,89,89,88,88,152,89,0,141,84,77,104,19,65,20,158,153,93,205,206,102,76,130,20,173,178,89,171,32,148,176,141,222,188,120,40,122,17,196,139,
-  167,180,244,162,120,168,224,65,79,214,31,100,250,3,130,168,151,214,130,96,107,49,81,177,149,42,84,5,41,197,49,122,136,177,90,107,11,182,254,180,
-  245,175,182,38,98,5,45,232,101,125,111,146,254,94,244,125,251,190,121,223,155,217,247,94,38,33,199,25,33,100,61,56,25,166,200,38,146,133,68,70,
-  152,94,8,211,94,20,203,226,5,51,151,233,194,153,16,4,204,219,4,81,249,74,160,216,252,65,147,9,198,106,19,137,68,41,152,181,203,2,115,28,
-  12,45,203,182,109,79,120,34,30,143,59,142,227,213,56,194,115,4,34,30,18,194,241,16,66,155,27,119,227,33,48,207,193,93,129,47,104,13,111,97,
-  54,142,231,133,8,133,86,33,59,218,74,1,34,196,57,63,176,101,107,165,178,165,43,31,81,160,86,122,200,79,16,249,146,18,181,25,50,254,41,89,
-  45,235,84,53,178,159,162,90,140,226,237,248,46,33,106,141,188,3,41,63,97,18,213,75,137,95,37,195,114,55,248,65,25,246,107,137,58,12,85,228,
-  57,3,196,44,131,236,0,149,225,92,43,205,7,115,193,130,251,59,137,28,163,164,249,60,212,107,217,6,101,253,40,145,174,31,133,58,216,173,78,110,
-  128,38,64,90,170,125,200,15,122,244,8,149,18,214,10,153,165,242,52,85,109,134,218,15,157,252,187,20,24,213,17,89,37,143,249,117,42,128,211,213,
-  249,93,76,237,197,253,179,76,70,100,154,202,136,234,102,234,30,157,24,100,215,6,25,240,201,50,18,81,159,244,55,126,137,74,10,35,144,236,12,37,
-  179,59,32,82,61,76,143,4,148,105,195,150,174,172,240,143,194,90,145,193,169,165,91,147,222,152,233,197,141,237,4,37,241,47,192,128,234,34,131,131,
-  175,160,20,199,167,132,228,131,248,228,202,180,202,195,71,255,233,97,57,40,6,247,226,182,132,224,205,102,184,220,112,33,211,162,219,165,230,59,171,19,
-  114,173,100,19,247,89,118,150,170,105,170,171,251,81,200,255,162,170,147,73,42,163,227,171,27,174,227,56,149,13,147,208,20,127,110,234,7,85,83,116,
-  106,136,117,15,50,224,70,51,22,139,209,127,90,189,81,111,20,195,118,3,161,140,135,134,196,84,88,99,222,6,140,5,44,232,194,129,63,26,75,195,
-  14,3,1,193,158,23,133,6,31,141,199,26,125,198,25,90,64,147,209,100,52,2,134,88,31,77,178,17,158,100,73,182,174,240,116,216,121,126,203,254,
-  198,111,219,41,158,226,111,121,150,191,95,194,79,1,233,64,58,80,88,147,214,36,79,90,191,3,159,121,82,235,81,62,170,119,199,248,152,214,239,248,
-  7,126,195,254,31,12,240,126,192,19,141,55,224,19,90,247,47,210,175,121,134,143,23,121,88,227,57,239,180,219,131,216,3,189,49,248,157,95,182,103,
-  248,51,254,133,79,129,95,225,87,23,161,203,190,105,79,243,175,60,199,153,73,53,136,105,105,103,194,16,240,239,128,176,138,43,228,136,160,0,11,64,
-  4,228,17,115,167,150,98,110,215,92,188,111,105,208,8,1,172,0,135,168,156,160,151,252,5,83,251,196,194,64,12,224,197,3,248,225,224,153,202,20,
-  190,30,190,41,124,147,128,24,72,182,50,254,87,254,207,7,130,83,226,123,248,110,206,103,124,183,150,113,255,110,198,75,39,25,231,95,103,220,242,148,
-  177,245,51,227,172,70,166,183,125,76,167,121,47,243,94,228,61,11,196,59,222,49,255,231,109,229,67,197,7,154,152,26,88,145,32,99,31,163,147,131,
-  195,6,160,160,206,21,150,51,140,91,152,223,49,77,98,234,99,41,218,192,186,128,109,17,27,4,119,7,172,98,93,193,186,10,8,151,128,73,16,239,
-  56,10,60,201,218,202,6,129,39,129,236,35,108,232,24,1,119,50,97,66,102,56,96,36,10,60,225,68,134,215,57,175,65,225,117,32,188,138,129,17,
-  240,49,22,8,0,117,202,191,74,3,65,16,6,240,153,253,103,198,245,156,235,132,96,97,171,160,15,32,17,236,237,124,143,125,135,37,132,171,52,16,
-  72,105,225,3,216,89,136,32,100,45,4,139,148,86,22,118,118,34,168,185,68,2,130,179,23,196,52,249,126,236,55,195,50,219,19,108,193,139,2,80,
-  14,164,55,225,47,167,112,112,172,212,46,249,16,194,126,193,33,112,33,225,38,5,111,16,145,115,176,179,5,85,251,141,243,140,165,47,124,117,52,162,
-  91,113,35,175,106,67,229,162,185,178,209,164,31,155,222,109,60,233,233,178,149,122,46,213,54,118,100,79,157,187,71,219,229,200,93,126,221,27,251,39,
-  63,246,207,210,105,106,227,97,26,184,139,123,119,54,202,29,87,49,11,125,253,47,255,95,175,101,136,168,155,32,139,185,64,188,212,184,148,7,61,161,
-  236,163,81,211,151,248,108,156,175,47,12,151,212,114,49,167,41,205,232,155,148,1,3,37,26,148,169,204,47,99,255,196,194,0,6,188,188,188,252,64,
-  176,140,145,155,119,87,210,78,206,237,156,59,57,15,204,102,109,226,255,197,183,94,246,10,247,45,238,51,220,13,44,32,216,199,12,129,32,192,8,1,
-  189,92,32,56,5,10,1,149,144,191,74,3,65,16,198,103,118,135,120,123,209,157,3,27,17,142,216,43,177,181,180,179,81,210,248,8,62,135,236,59,
-  24,208,114,65,56,123,203,16,201,26,27,17,140,157,88,94,33,87,137,166,16,11,17,215,217,211,66,75,191,31,223,55,127,138,41,166,84,207,72,144,
-  1,188,34,192,1,116,0,148,34,104,165,160,56,132,149,108,145,45,115,119,189,203,204,61,222,76,241,163,37,94,243,251,213,206,196,36,195,104,11,160,
-  233,69,219,20,142,29,55,232,119,155,34,218,225,198,145,141,165,227,97,217,244,193,111,251,65,204,195,156,66,160,143,107,122,236,191,221,211,195,114,181,
-  234,159,200,47,212,182,254,164,248,29,142,235,57,185,75,106,7,144,123,24,229,102,253,66,129,101,27,38,228,148,235,252,23,133,74,43,145,70,9,196,
-  182,213,50,225,149,158,234,228,169,244,73,140,248,158,170,132,215,123,51,125,161,79,213,73,126,99,198,38,121,108,70,45,103,191,184,51,213,31,206,133,
-  153,57,206,111,141,252,82,1,9,217,23,147,96,250,196,200,193,240,133,145,129,33,133,129,141,129,129,9,136,65,128,137,193,206,75,130,159,159,159,91,
-  155,27,72,202,243,231,3,49,4,240,242,62,16,124,224,247,192,143,97,139,39,3,195,3,131,255,124,15,20,27,248,27,248,185,30,40,254,231,155,162,
-  51,153,239,191,108,3,255,20,217,7,246,12,9,15,120,14,236,103,59,112,156,109,205,46,182,21,82,13,123,216,22,176,63,224,59,112,142,237,63,132,
-  104,224,223,195,12,102,48,0,181,51,254,7,26,1,82,205,127,224,61,27,16,53,16,15,153,154,217,152,152,152,153,128,128,153,17,72,48,130,89,204,
-  76,204,135,192,144,17,10,126,65,137,5,204,140,143,153,23,51,237,225,4,193,93,96,184,28,9,46,67,129,155,128,112,1,247,124,110,38,22,96,120,
-  176,0,33,7,0,85,143,177,14,1,81,16,69,239,204,123,177,187,242,50,148,34,225,11,148,126,64,244,239,19,84,10,127,65,65,163,93,141,68,33,
-  145,160,209,40,81,108,16,9,81,170,84,26,189,136,74,195,219,21,9,247,204,185,185,237,228,248,78,240,129,7,1,117,164,0,118,198,97,52,140,24,
-  145,116,62,109,173,173,217,162,21,119,34,86,244,174,218,41,239,170,253,202,52,223,210,67,239,34,198,51,30,34,223,188,4,104,101,155,47,209,81,102,
-  75,237,165,222,156,169,59,211,251,35,225,118,101,224,72,254,137,50,126,52,80,39,10,11,61,201,34,44,245,10,91,2,179,98,23,69,174,40,89,138,
-  213,70,173,19,215,138,62,121,126,107,168,70,124,8,86,65,236,42,88,36,76,126,24,255,49,119,176,118,255,232,152,55,109,140,189,74,3,65,16,199,
-  103,118,215,187,219,115,201,194,86,158,92,18,44,213,152,39,176,72,111,30,225,30,192,230,222,97,140,221,9,169,212,42,168,120,6,177,78,165,133,156,
-  169,130,96,35,129,180,139,248,245,6,126,128,156,107,212,96,225,239,55,197,127,24,230,95,103,139,48,70,1,119,12,192,13,48,1,51,188,46,174,128,
-  104,110,6,65,176,172,226,181,180,173,148,74,227,88,197,141,218,23,205,212,237,170,109,172,71,218,214,31,205,123,197,114,90,95,48,64,250,80,153,35,
-  238,26,72,59,107,101,149,116,89,1,99,35,203,193,10,182,139,197,61,66,113,193,138,62,102,27,163,46,190,54,32,25,46,93,70,118,53,161,9,146,
-  118,127,80,86,225,59,36,197,57,235,156,34,181,58,207,216,67,242,126,197,41,91,252,96,234,21,39,126,139,59,76,227,31,110,120,134,25,110,243,23,
-  158,179,40,103,251,225,181,60,145,121,240,230,127,248,15,50,151,189,96,16,14,253,179,240,63,71,114,47,124,146,199,178,47,7,243,115,66,9,84,220,
-  169,4,252,136,179,4,238,250,9,197,80,61,79,220,64,16,157,245,46,216,235,248,110,221,32,185,136,241,41,77,56,132,197,117,135,68,202,52,57,114,
-  50,45,197,137,164,187,43,92,167,34,26,4,162,64,66,20,80,163,40,64,36,4,127,1,177,66,74,196,135,147,52,41,40,232,169,32,82,82,32,144,
-  18,103,214,199,93,40,146,154,121,158,55,111,246,189,45,214,207,45,0,248,193,136,192,57,51,218,20,77,171,167,169,68,159,238,23,5,202,96,189,29,
-  37,67,88,237,246,76,167,234,197,99,222,163,86,179,217,106,182,162,40,77,195,177,148,36,85,146,36,179,113,168,162,113,218,74,161,177,149,74,162,72,
-  169,217,52,85,102,198,178,84,146,202,7,5,75,234,118,230,227,147,79,143,73,4,129,95,15,252,124,18,227,74,144,55,176,67,118,37,168,67,37,120,
-  26,232,151,121,249,160,170,171,104,66,107,111,214,203,181,113,154,147,235,161,9,198,107,13,18,190,194,97,29,229,33,58,232,225,52,38,104,229,76,191,
-  192,36,99,181,154,163,175,45,124,141,10,176,163,191,243,69,122,200,4,64,62,12,231,12,240,3,211,63,121,198,38,70,232,127,56,117,50,240,146,163,
-  202,231,112,133,129,73,226,20,128,79,233,54,201,6,96,4,144,177,87,7,13,125,197,241,25,254,182,52,125,23,92,95,115,28,66,95,47,8,189,43,
-  112,240,225,192,254,83,25,159,231,25,161,183,111,240,13,174,57,114,101,22,117,119,216,157,183,236,222,232,242,59,186,215,220,231,203,108,145,47,240,125,
-  182,105,117,113,34,87,221,45,234,85,247,68,30,218,135,246,105,159,79,229,141,253,203,190,177,55,139,147,191,94,207,221,113,119,220,175,5,31,203,99,
-  153,201,127,113,79,29,21,248,70,248,34,63,203,247,114,187,192,174,187,231,14,8,16,166,7,5,120,66,128,67,16,5,60,240,24,245,64,87,139,59,
-  56,164,251,9,227,9,115,211,255,3,173,146,63,104,20,65,20,198,223,206,204,238,206,172,183,59,91,46,196,205,6,68,184,149,93,132,107,44,210,89,
-  164,80,214,211,46,39,88,136,54,87,92,109,251,4,27,239,16,139,75,163,213,97,98,174,177,73,236,36,144,33,40,248,39,136,197,129,101,174,208,78,
-  44,44,132,59,148,117,102,18,197,196,214,247,227,251,230,155,247,102,25,150,221,139,4,224,171,3,12,116,113,99,223,28,2,182,110,27,35,122,115,180,
-  7,226,193,223,101,219,17,180,174,156,99,157,110,206,121,17,230,73,46,56,63,21,44,136,92,152,186,81,85,89,150,134,141,134,14,85,21,202,118,47,
-  76,117,12,195,50,203,164,108,203,94,37,101,148,101,189,48,204,57,120,24,122,120,235,213,233,231,43,243,2,188,121,138,114,86,204,11,44,159,181,14,
-  175,139,147,184,94,198,82,211,61,88,85,55,249,82,6,9,212,81,210,252,34,215,34,72,226,97,161,151,58,197,114,120,105,45,77,134,41,79,244,113,
-  137,165,114,80,54,145,227,85,108,79,8,199,174,26,184,120,223,81,7,12,61,92,194,51,120,94,125,103,216,194,170,190,134,103,213,134,139,47,221,145,
-  63,141,166,190,118,173,79,250,45,235,69,80,15,92,245,153,77,47,192,132,0,231,9,22,245,42,252,32,234,39,131,24,0,11,192,184,190,14,152,233,
-  220,153,144,230,238,29,188,252,161,163,62,50,92,188,71,85,223,60,170,166,230,190,227,252,219,249,175,56,132,56,199,107,159,222,165,54,40,138,116,64,
-  6,122,46,15,39,243,19,110,52,162,35,218,103,58,188,167,125,103,157,24,30,7,51,241,48,216,16,111,53,59,127,124,71,188,56,193,158,191,231,191,
-  19,70,51,127,93,108,5,219,129,233,24,198,98,108,251,99,241,230,136,125,177,105,49,233,247,254,181,216,214,50,62,209,140,197,163,224,137,120,42,92,
-  6,140,50,199,186,149,254,22,250,199,101,208,176,106,0,55,51,131,199,92,187,254,2,99,60,199,230,193,112,134,249,57,7,0,157,144,193,107,212,64,
-  20,198,231,77,178,217,204,118,220,8,94,130,110,54,32,42,150,78,70,68,84,196,245,31,80,164,71,165,176,224,169,119,255,1,125,228,80,65,164,5,
-  109,5,143,182,61,84,111,82,168,117,89,36,238,161,182,117,15,86,22,61,122,209,139,168,160,158,218,195,198,55,217,109,93,151,20,196,239,151,121,147,
-  249,230,155,151,33,215,248,79,96,108,7,216,36,27,22,239,215,189,217,102,185,58,152,235,62,5,215,31,149,71,198,148,10,234,245,171,74,42,169,195,
-  48,244,180,214,42,144,180,10,130,186,84,58,44,143,143,75,21,244,50,149,138,172,232,44,21,82,172,76,115,142,36,46,2,195,135,128,53,134,143,0,
-  183,128,165,111,193,247,125,188,76,31,77,163,244,1,96,148,113,128,49,92,134,116,1,240,22,170,67,75,28,171,120,133,101,135,163,244,21,96,11,174,
-  179,175,107,166,1,157,239,213,172,75,170,76,64,221,70,109,82,89,171,116,10,112,150,254,18,234,4,216,206,141,111,103,214,47,253,58,221,190,248,227,
-  212,218,133,237,168,115,62,29,107,159,77,71,59,35,83,39,95,84,166,79,44,31,190,119,236,185,127,255,40,190,131,228,153,147,44,21,24,78,38,139,
-  5,180,146,143,54,53,243,232,150,116,147,200,140,116,11,48,48,107,141,53,140,204,190,102,24,208,206,68,242,217,102,29,142,19,148,153,51,151,184,3,
-  159,184,247,125,222,49,153,42,122,187,93,76,31,15,171,166,143,135,101,227,133,244,82,51,110,242,129,146,43,199,227,145,115,177,104,242,184,184,106,99,
-  225,165,211,229,13,55,134,166,64,88,117,99,171,233,196,133,21,59,46,198,143,29,116,208,70,142,206,190,240,253,119,111,206,192,208,51,184,226,28,254,
-  136,91,48,40,43,71,237,191,35,153,190,240,196,90,183,54,172,215,4,18,240,95,186,11,11,124,83,108,138,153,82,67,52,196,155,33,90,197,86,113,
-  216,217,30,160,43,186,125,183,87,223,19,79,74,109,49,204,70,70,190,223,33,166,75,255,198,188,16,182,155,193,220,1,236,93,160,55,75,144,76,146,
-  47,185,52,131,170,107,70,31,217,199,38,47,203,115,9,123,231,127,3,99,187,198,194,0,2,50,178,177,64,192,208,192,15,226,156,232,99,252,161,35,
-  1,4,13,108,48,56,143,25,1,23,115,32,32,3,15,19,28,2,0,29,138,49,106,2,65,20,134,223,155,221,204,206,44,203,236,150,3,217,102,15,
-  224,13,44,188,128,93,106,193,206,83,132,57,64,42,91,81,134,216,40,86,42,88,8,234,196,66,52,16,5,9,169,115,2,15,176,42,250,102,255,239,
-  241,255,239,135,95,179,58,204,48,20,48,96,208,128,144,96,144,189,131,151,6,16,90,8,41,243,60,81,137,202,149,74,188,148,181,104,153,121,179,11,
-  180,35,180,93,52,81,85,45,154,244,227,140,147,87,255,213,200,92,237,159,38,12,204,28,31,45,48,109,231,56,157,209,238,139,47,79,220,173,121,153,
-  125,86,221,113,184,76,249,89,255,110,56,248,226,254,252,16,140,48,25,60,94,58,29,172,148,98,90,98,137,104,131,102,177,11,142,193,10,139,85,48,
-  100,253,248,91,122,110,196,54,218,70,227,248,36,15,196,158,56,202,171,188,203,94,124,167,252,145,44,196,16,18,32,127,2,141,142,177,78,195,48,16,
-  134,239,236,168,78,36,75,205,152,161,109,70,24,210,76,108,240,4,116,96,165,131,213,181,32,33,94,225,6,120,4,214,14,100,101,42,47,96,70,4,
-  11,82,213,137,39,96,96,97,234,130,57,59,65,33,66,180,252,159,236,252,190,251,127,41,7,171,8,186,18,157,211,131,223,74,161,24,26,115,81,248,
-  91,151,57,203,152,98,56,96,153,89,153,95,158,180,91,163,243,50,4,88,244,130,238,1,179,44,163,67,8,134,230,110,236,110,145,198,158,20,232,6,
-  221,53,210,136,38,238,152,38,252,190,71,87,225,41,116,122,75,84,161,184,68,191,110,235,110,106,17,236,163,164,17,255,31,245,253,136,141,155,114,7,
-  224,21,51,30,157,219,15,9,60,190,19,123,64,103,87,98,191,19,239,167,62,63,247,15,95,161,220,190,75,58,162,222,78,4,179,35,131,141,132,196,
-  63,181,144,11,249,38,172,164,6,220,162,167,100,59,85,92,197,27,181,81,159,73,205,247,124,173,214,234,57,249,31,43,6,34,136,3,3,118,13,162,
-  117,90,104,100,120,31,14,54,132,244,143,30,79,162,250,139,186,109,215,254,11,109,147,77,72,85,65,20,199,207,204,92,231,205,29,47,247,138,184,120,
-  218,229,209,247,34,174,143,183,104,17,228,162,93,66,31,219,196,133,155,192,108,83,66,90,209,166,147,197,211,44,138,138,132,192,100,242,3,137,36,40,
-  18,138,10,167,2,43,19,131,180,168,183,120,42,109,162,69,68,203,62,184,157,251,174,82,68,255,223,204,153,115,206,156,115,231,50,151,187,159,67,170,
-  134,245,117,67,204,129,63,82,0,223,88,180,185,46,241,211,34,190,234,241,191,202,254,4,206,106,236,3,63,193,147,244,150,36,231,0,95,219,209,210,
-  220,220,210,210,220,144,5,165,66,143,148,85,81,84,175,181,210,213,13,110,243,161,124,62,239,71,148,207,181,37,123,81,152,111,219,27,121,141,81,20,
-  250,129,79,10,60,47,140,114,249,92,222,247,188,188,79,181,97,142,76,176,155,106,253,208,203,134,158,242,124,221,14,59,212,206,66,77,220,109,170,77,
-  167,121,196,77,153,153,234,146,59,93,176,133,233,66,105,29,118,95,217,250,169,118,126,223,68,23,122,230,1,139,39,25,222,101,102,138,153,206,163,237,
-  246,0,6,83,199,192,76,240,120,15,238,194,92,124,16,74,117,165,194,251,66,169,96,44,195,32,14,84,198,88,14,168,226,76,236,163,131,213,177,140,
-  89,92,69,59,190,149,30,224,72,82,52,204,128,30,9,11,235,169,7,78,2,13,114,78,26,129,147,108,233,35,51,47,120,145,153,15,44,238,0,236,
-  50,219,240,184,89,131,155,240,176,25,97,241,17,51,198,204,19,54,42,178,0,5,0,108,178,215,164,157,147,182,44,237,19,105,47,200,190,144,174,242,
-  235,70,250,32,216,212,219,4,247,95,75,94,108,178,23,50,195,115,114,86,140,10,187,29,236,65,108,180,215,37,86,1,246,210,171,100,123,250,36,181,
-  216,59,18,3,108,133,181,182,152,56,59,177,29,57,214,162,158,50,204,182,162,143,30,242,169,240,203,176,4,116,32,22,137,125,179,129,122,6,252,171,
-  209,231,94,54,224,83,79,163,181,18,91,241,162,4,251,78,218,241,204,130,176,47,36,38,29,61,55,36,124,55,116,12,142,75,203,236,160,52,139,25,
-  186,25,167,131,206,168,192,18,37,86,8,158,136,85,172,96,105,158,83,54,117,217,172,152,89,225,157,120,155,238,127,230,67,98,149,87,43,176,128,248,
-  175,2,246,157,37,35,213,30,186,200,57,241,152,173,123,44,250,89,63,59,45,78,139,55,98,94,148,85,89,45,171,17,94,86,139,106,137,214,250,250,
-  33,125,81,143,186,41,61,250,158,126,74,244,235,103,122,134,162,25,183,95,159,215,63,221,101,21,187,207,245,180,46,18,243,250,84,133,179,196,136,155,
-  18,19,197,202,238,35,61,171,203,122,134,120,72,243,12,217,151,149,232,140,190,73,220,38,86,215,43,250,165,155,208,167,83,80,247,234,5,119,193,189,
-  76,29,203,106,80,255,114,127,184,151,244,176,123,78,143,185,9,183,244,45,61,161,235,153,35,29,199,1,39,227,104,66,58,130,144,78,21,101,18,143,
-  172,7,30,35,160,146,163,169,146,44,253,209,255,66,21,146,224,4,212,64,8,234,55,69,142,189,74,3,65,16,199,103,103,111,245,118,89,48,141,24,
-  37,88,6,145,228,200,3,248,0,33,209,210,87,176,76,45,40,56,224,69,2,105,172,108,34,230,240,171,180,75,151,226,42,69,12,42,120,154,120,133,
-  92,41,121,8,215,221,139,31,191,223,206,204,159,101,7,182,92,130,9,3,200,16,192,158,156,223,233,18,194,156,11,5,216,169,215,181,214,149,160,229,
-  122,73,151,180,231,85,44,158,254,35,104,5,193,230,53,243,163,91,4,115,196,162,33,154,125,136,250,72,101,66,179,98,182,168,105,26,212,164,1,26,
-  239,170,135,105,109,82,75,107,233,110,86,134,126,33,138,25,68,49,130,219,217,131,3,136,56,13,216,13,11,57,196,119,194,238,47,197,61,65,171,197,
-  248,68,0,9,90,35,59,170,144,93,122,36,206,215,237,239,62,230,105,59,243,163,197,120,44,168,26,127,10,90,112,239,55,168,106,26,69,26,8,8,
-  57,203,145,114,228,210,20,167,120,198,93,205,236,98,23,31,248,204,46,166,252,221,118,246,207,152,47,95,224,155,122,85,199,234,81,133,214,23,107,59,
-  175,182,58,180,126,201,153,99,149,168,83,63,84,70,14,213,72,61,169,142,127,47,59,126,199,79,100,34,159,21,120,185,218,137,63,186,27,199,55,227,
-  99,98,184,194,194,192,194,196,192,192,192,182,136,145,33,136,65,74,74,71,46,143,135,71,134,47,207,219,59,194,163,193,238,191,78,67,238,127,63,134,
-  134,70,198,255,108,255,25,27,56,25,4,56,36,36,14,108,224,104,144,59,240,143,189,65,100,14,203,129,41,28,13,252,13,188,255,181,230,176,172,96,
-  17,56,194,194,208,192,212,192,196,200,200,196,4,68,76,175,152,230,49,51,130,193,98,166,197,76,151,185,58,185,218,184,246,112,157,228,218,205,117,134,
-  171,131,75,82,114,49,147,36,51,11,11,11,51,15,35,15,19,200,25,44,140,44,0,133,142,63,104,20,65,20,198,223,204,236,159,217,201,236,220,5,
-  206,35,94,150,69,34,36,32,119,135,130,104,123,149,70,136,8,1,33,17,193,63,133,149,130,4,148,84,242,148,148,98,97,161,196,66,18,4,11,9,
-  105,60,5,141,7,19,80,81,19,19,79,18,179,132,96,66,16,17,193,194,66,20,155,117,118,179,57,228,64,252,126,204,123,223,124,111,118,103,142,80,
-  128,82,249,1,49,13,192,161,17,77,141,177,208,166,52,47,66,21,14,20,1,44,171,212,62,135,2,237,31,226,67,253,50,232,18,213,170,20,229,32,
-  8,202,166,72,211,131,74,112,65,37,10,195,80,37,185,146,106,64,157,84,234,152,146,82,250,190,47,253,180,115,238,25,164,172,29,196,67,60,143,163,
-  24,198,124,170,56,109,221,223,241,244,34,158,70,134,121,48,209,30,12,48,7,232,153,59,145,199,10,3,55,182,49,183,69,220,27,203,88,96,168,7,
-  146,35,185,184,11,15,107,81,139,187,243,72,209,7,28,52,255,60,53,229,173,230,96,188,231,70,247,120,79,189,15,70,155,229,225,141,206,235,94,179,
-  243,102,169,185,235,119,47,238,199,190,58,227,48,198,230,25,54,28,253,205,254,117,6,56,36,118,209,209,43,182,254,97,99,197,64,80,97,136,21,253,
-  179,117,55,118,32,229,241,185,214,246,50,250,90,129,254,108,67,242,150,227,250,171,141,231,235,12,175,140,49,253,208,65,127,175,126,239,232,39,206,196,
-  132,115,226,44,188,36,72,111,89,154,192,99,18,217,211,222,218,72,225,14,171,125,177,7,205,215,122,195,54,143,55,204,186,179,110,228,220,118,35,183,
-  176,233,76,186,100,91,148,82,150,217,37,230,45,179,15,108,137,145,187,236,111,72,187,114,137,134,143,18,178,146,204,26,236,59,91,251,7,187,247,109,
-  242,123,52,97,103,67,44,139,186,184,38,158,139,23,162,97,220,130,184,154,241,42,173,243,226,89,186,94,139,143,98,70,204,101,187,100,205,152,236,141,
-  33,202,88,244,214,233,130,247,72,124,18,239,204,100,206,240,214,155,236,88,23,255,231,210,42,97,150,99,81,206,172,4,223,2,153,193,211,106,17,139,
-  154,28,210,41,49,64,11,202,255,0,99,188,198,162,163,112,224,62,231,43,166,203,92,204,60,0,99,188,198,162,163,112,224,0,247,43,166,203,92,140,
-  60,0,117,143,93,72,20,81,20,199,239,204,157,221,251,49,187,51,107,97,172,186,108,10,37,33,107,74,65,244,100,18,21,180,249,28,98,164,209,211,
-  250,34,68,208,243,41,210,94,196,94,85,66,151,2,145,220,94,98,31,116,19,119,30,74,44,194,162,164,220,190,220,194,181,18,241,35,165,82,194,233,
-  204,248,65,154,254,127,156,115,207,57,247,220,63,51,141,42,33,228,24,9,129,66,214,20,38,206,196,139,241,115,99,228,234,128,151,148,5,84,247,98,
-  103,157,33,53,68,35,154,234,54,26,89,55,49,54,239,67,68,22,202,66,78,136,111,93,134,113,24,229,156,98,67,18,37,252,126,30,137,68,124,190,
-  80,185,207,239,15,149,27,40,211,52,204,253,206,126,56,140,165,225,175,192,231,60,232,172,159,173,61,23,141,214,70,163,81,206,133,224,136,16,126,1,
-  215,236,171,80,96,7,33,106,151,65,253,202,41,251,72,188,244,65,254,47,181,93,239,45,93,220,11,209,142,227,83,193,41,145,19,83,98,165,41,29,
-  105,53,151,43,226,85,150,246,47,217,125,233,162,132,183,239,104,194,11,13,174,75,3,80,8,64,57,104,224,1,109,194,211,237,121,23,35,153,11,19,
-  44,219,100,95,6,143,109,36,79,12,11,40,170,78,239,1,213,146,3,181,113,191,237,179,69,182,169,79,135,10,40,234,188,178,220,232,186,68,179,167,
-  193,180,10,44,205,54,108,163,56,96,6,121,37,231,12,42,91,69,46,111,184,36,205,22,138,103,74,123,148,238,72,3,212,131,98,245,51,8,19,168,
-  131,151,12,26,173,113,62,255,153,65,94,82,153,17,191,107,82,230,52,123,78,225,53,195,111,202,49,220,33,240,132,129,65,32,144,237,224,91,255,36,
-  126,113,238,131,66,192,36,86,134,223,69,167,24,58,161,179,245,134,17,235,49,190,1,205,50,172,170,126,74,70,132,101,164,91,20,240,225,236,228,29,
-  101,72,88,90,53,254,174,74,58,130,100,196,132,186,113,95,66,183,134,24,136,84,156,15,24,214,168,99,245,130,101,123,184,227,93,13,38,152,9,45,
-  104,6,130,131,26,57,196,95,13,178,243,157,234,165,78,229,15,157,86,91,148,135,218,13,97,189,229,160,2,219,134,210,235,137,197,112,174,32,107,183,
-  138,27,107,189,10,94,240,102,188,95,88,59,11,103,88,254,28,173,83,118,151,138,162,116,173,192,132,135,119,93,99,244,43,253,70,191,187,241,158,142,
-  81,167,207,33,74,23,237,162,219,92,38,112,240,145,126,196,60,67,103,232,39,58,233,46,148,148,44,208,131,11,242,158,234,48,43,155,245,173,204,203,
-  164,108,211,219,244,219,200,162,156,151,78,127,83,223,13,155,181,232,183,244,89,109,84,54,203,235,242,153,124,42,31,201,37,204,75,136,83,253,112,103,
-  131,88,167,220,89,106,147,73,196,153,76,202,57,247,116,124,238,235,73,185,19,5,168,9,249,63,171,108,149,17,77,217,196,175,17,31,130,149,27,156,
-  4,17,172,49,115,135,191,227,252,194,248,128,137,137,129,137,1,8,100,116,100,100,124,124,88,100,100,26,228,26,152,27,116,254,75,75,112,60,16,187,
-  111,194,112,224,56,235,129,85,172,7,166,177,54,24,245,48,49,44,48,110,104,103,124,192,193,201,248,138,105,30,243,37,198,75,140,221,76,183,152,111,
-  50,95,227,58,199,117,153,171,145,107,22,247,108,238,235,92,87,184,152,56,24,89,24,120,24,120,152,56,152,56,0,227,253,192,204,0,4,41,28,12,
-  110,94,2,12,65,156,32,160,195,207,207,203,235,233,173,211,80,176,159,5,2,27,152,111,37,60,229,108,48,105,176,212,96,104,240,110,152,205,121,128,
-  5,10,103,114,30,155,205,121,143,243,192,94,206,134,147,156,95,88,56,62,125,231,108,96,68,134,46,199,89,26,216,26,216,152,153,25,65,224,49,243,
-  35,230,22,110,24,60,199,181,139,107,55,215,68,238,38,238,45,92,91,184,254,113,241,178,48,112,0,0,99,188,194,162,211,192,124,224,23,23,227,57,
-  46,46,22,0,117,144,79,104,19,65,20,198,223,236,172,51,147,217,100,178,130,104,26,220,237,94,244,160,130,17,139,32,45,214,75,61,84,232,65,20,
-  74,79,30,76,240,80,60,138,120,154,67,4,173,85,122,40,66,130,144,80,165,182,152,139,168,69,139,144,61,136,222,196,98,16,76,145,108,161,4,255,
-  84,177,54,167,94,198,217,108,34,109,197,239,55,239,155,225,123,179,59,204,156,53,0,224,23,2,96,122,6,190,134,160,171,203,96,194,78,237,63,4,
-  167,1,226,96,234,150,161,251,4,196,182,126,154,115,46,132,136,199,181,13,243,142,44,75,8,39,30,74,136,164,166,215,237,117,133,24,17,161,28,103,
-  68,231,169,244,232,216,232,88,60,206,88,34,22,141,68,76,158,82,25,153,85,251,252,33,255,72,117,124,243,132,127,252,233,94,255,64,53,155,145,78,
-  133,212,46,84,200,28,169,16,213,39,137,36,80,187,248,129,20,109,105,151,221,192,105,28,11,250,155,123,212,192,141,195,16,56,80,118,65,29,85,187,
-  75,188,124,45,35,61,121,78,78,32,53,160,6,235,125,202,201,200,51,106,80,142,7,169,170,105,83,155,46,230,81,145,21,174,76,198,154,231,171,185,
-  233,116,107,232,109,110,243,224,187,254,66,174,152,125,153,245,231,169,76,130,116,229,2,149,66,162,246,164,18,225,114,210,124,255,144,130,12,95,81,158,
-  4,101,73,226,127,164,1,121,49,203,102,48,128,231,125,186,131,100,162,120,189,253,58,190,233,35,207,155,52,253,34,149,174,127,159,202,132,76,214,75,
-  76,39,229,39,250,255,94,240,156,193,107,19,94,153,112,175,64,175,242,212,93,148,55,134,223,24,211,248,210,2,158,49,91,120,106,87,120,91,125,124,
-  4,13,125,137,172,144,41,90,162,75,116,133,38,29,244,175,12,3,253,71,203,184,134,151,113,228,97,205,225,71,24,125,198,93,244,142,6,238,140,40,
-  137,117,62,156,197,27,154,117,220,220,194,23,190,206,191,243,7,198,55,254,131,111,240,208,163,213,79,150,183,182,115,91,215,132,166,197,23,255,178,202,
-  191,242,214,22,186,249,77,107,149,175,181,187,191,219,249,45,171,98,61,182,230,173,103,60,162,167,167,110,213,173,6,111,240,157,30,22,152,200,70,12,
-  49,131,33,27,108,100,27,12,179,110,253,1,141,80,77,104,19,65,20,126,179,147,157,125,59,187,217,45,61,136,148,24,138,88,65,137,87,91,209,139,
-  232,97,136,189,41,254,64,79,30,196,147,39,207,58,104,192,182,74,143,30,170,135,96,107,245,16,196,131,40,72,234,110,15,226,69,161,146,216,154,182,
-  154,128,162,16,164,160,55,115,89,223,108,154,32,34,180,223,55,239,251,222,204,188,183,179,51,167,45,232,98,104,133,145,90,32,182,230,18,126,176,173,
-  244,82,183,38,211,43,5,216,149,129,131,112,88,194,0,100,76,43,252,11,165,16,149,42,22,207,251,132,92,206,104,64,80,202,117,17,77,228,186,139,
-  227,5,242,124,144,207,7,129,63,78,152,48,98,54,252,172,159,205,166,158,53,78,67,141,106,71,227,112,56,28,98,60,195,162,145,232,68,60,162,243,
-  208,185,30,229,163,98,92,184,115,40,58,22,21,244,41,21,234,107,160,133,22,201,129,212,116,64,69,149,139,117,81,219,87,23,187,99,166,143,232,16,
-  146,49,208,42,57,171,207,81,92,85,225,88,56,160,70,169,113,134,37,151,245,201,100,207,219,27,236,181,91,31,108,12,213,236,230,25,152,117,225,253,
-  32,124,119,224,229,94,152,61,254,251,40,204,115,164,43,34,98,137,235,178,57,128,233,32,126,99,235,253,253,89,146,42,84,57,46,47,154,127,16,160,
-  121,106,241,93,187,245,212,110,161,190,197,90,162,140,45,81,225,241,55,27,64,135,73,96,148,70,220,182,169,175,194,233,235,116,16,165,241,61,145,110,
-  60,185,41,158,177,43,165,204,103,231,62,131,54,163,151,47,219,128,48,49,237,116,47,74,172,138,142,168,58,75,98,73,208,91,57,29,135,253,133,117,
-  94,231,38,92,183,151,245,180,109,173,241,6,127,204,31,165,193,194,62,46,184,46,99,171,156,177,5,190,192,127,17,127,18,55,118,192,117,249,46,229,
-  87,252,130,115,150,225,39,25,201,53,249,74,174,200,15,178,151,27,93,36,223,196,77,188,237,149,82,246,188,38,87,101,93,78,123,93,54,228,199,255,
-  176,105,77,122,147,222,11,249,92,46,203,13,217,144,83,222,148,247,208,155,247,230,188,7,94,83,110,79,39,99,161,133,204,55,74,175,217,167,133,127,
-  0,125,146,193,107,19,65,20,198,223,219,153,205,236,236,108,103,150,10,146,86,220,173,189,88,21,37,135,30,20,5,3,138,23,99,196,99,151,146,127,
-  195,235,32,109,80,20,17,140,32,94,92,180,23,161,65,5,79,1,233,10,222,188,120,19,106,211,172,82,60,136,7,15,105,68,140,172,179,221,38,109,
-  47,126,191,153,247,190,55,51,239,48,195,92,180,224,39,2,56,48,48,241,228,188,132,255,200,58,124,166,234,1,80,99,169,101,82,9,242,227,81,36,
-  165,244,164,235,186,188,90,91,92,172,53,26,141,122,163,46,101,16,134,102,195,36,165,148,84,50,12,76,81,15,85,88,171,121,210,155,158,142,140,38,
-  140,230,84,92,79,69,42,146,203,250,148,190,133,171,165,181,67,113,224,87,24,155,11,125,86,14,213,147,35,241,133,167,87,50,245,109,226,110,165,121,
-  35,59,191,28,54,79,232,201,222,105,173,210,73,72,143,66,28,64,178,144,44,232,101,60,187,62,175,163,236,166,15,250,106,38,117,148,150,215,168,207,
-  124,182,126,7,219,180,135,26,91,118,69,127,229,0,121,248,248,129,131,70,221,231,43,246,170,237,56,112,188,236,128,227,124,106,35,84,159,145,193,11,
-  252,221,198,217,153,192,74,76,27,36,100,231,246,201,38,79,190,243,228,29,111,217,183,239,113,152,89,177,65,95,202,174,167,93,30,15,28,216,160,176,
-  69,225,253,75,254,195,126,192,30,179,251,168,153,166,58,143,249,28,51,44,117,216,144,157,195,131,178,114,145,3,218,93,70,139,228,124,25,179,215,212,
-  37,57,163,92,120,196,30,41,134,186,182,115,104,246,216,54,121,75,250,164,73,11,254,184,207,173,191,238,136,37,177,36,62,139,77,252,229,14,220,109,
-  195,208,205,93,238,59,187,244,199,174,179,111,109,143,71,162,37,182,76,95,81,109,96,23,95,139,135,226,149,120,227,22,76,77,245,220,2,164,54,5,
-  15,124,243,111,12,72,141,243,169,137,104,30,222,96,42,203,33,206,104,254,3,227,254,194,200,241,136,137,1,8,196,152,106,24,36,56,116,120,228,228,
-  228,120,248,120,120,14,240,59,28,48,222,47,123,64,135,129,161,65,236,128,211,1,209,6,189,3,251,184,64,104,39,87,3,211,127,198,6,254,6,254,
-  3,199,185,14,156,224,58,112,152,171,129,133,17,8,248,65,192,215,103,47,243,55,230,95,92,191,184,126,112,157,231,252,193,5,130,231,56,127,114,157,
-  229,220,196,205,202,194,200,194,0,134,0,109,146,61,104,20,65,20,199,231,99,119,50,59,187,206,136,4,145,99,111,13,137,4,61,20,113,139,19,65,
-  180,93,194,89,169,24,65,108,132,148,233,2,150,99,72,224,226,71,97,99,161,41,14,34,151,20,34,22,65,52,68,220,20,106,165,70,179,230,235,34,
-  25,16,131,4,9,136,96,113,8,227,204,174,9,72,252,255,230,253,223,204,188,199,188,45,182,134,128,85,105,17,2,128,0,201,15,12,124,135,160,208,
-  64,81,118,114,71,96,91,251,205,77,5,84,217,94,91,42,237,92,119,162,254,36,73,250,250,250,15,4,65,24,210,32,224,156,39,137,231,81,106,35,
-  12,195,32,87,88,227,81,104,79,17,143,56,15,120,205,232,138,9,110,106,123,114,236,226,241,241,46,209,37,144,186,166,123,116,89,97,208,184,52,122,
-  80,151,111,31,123,121,58,141,98,161,46,0,73,36,209,71,242,164,144,105,120,116,62,35,11,135,50,162,134,52,151,228,164,188,1,53,111,32,41,128,
-  93,17,208,28,200,170,34,233,213,88,116,11,20,199,66,246,170,179,186,252,250,242,43,47,219,183,82,154,233,190,115,184,125,116,116,80,157,249,121,74,
-  93,84,3,227,152,2,74,233,8,150,119,137,228,82,164,111,92,217,251,119,111,222,135,146,79,99,58,255,152,216,241,64,226,60,165,247,92,245,196,85,
-  84,94,87,164,65,205,172,111,174,105,231,84,87,36,79,91,110,254,33,66,151,141,25,58,211,47,174,172,154,71,30,98,51,101,28,155,157,174,164,15,
-  136,20,195,191,220,167,112,112,216,89,134,117,242,27,78,185,155,240,62,73,55,220,84,185,146,20,204,146,54,153,237,104,119,192,127,149,225,12,123,158,
-  245,12,183,76,108,162,85,188,130,167,240,100,30,69,143,216,17,60,231,121,16,46,97,216,196,77,252,2,255,48,172,253,135,158,19,19,168,197,54,232,
-  87,58,129,44,211,108,142,165,108,145,125,98,197,110,142,125,54,190,69,183,232,45,127,36,103,59,47,176,37,150,177,155,126,193,71,246,129,205,176,53,
-  102,243,242,46,222,123,235,232,157,87,247,235,254,115,246,140,205,155,206,49,127,204,127,235,77,250,77,127,157,237,102,104,21,34,135,58,208,193,20,83,
-  20,88,135,142,249,27,157,194,45,152,254,1,125,145,59,76,20,65,24,199,231,177,238,204,206,238,206,110,12,65,238,2,11,33,160,137,158,145,66,180,
-  48,38,215,169,23,133,206,156,88,89,137,13,90,89,79,136,16,16,66,163,133,137,68,46,49,42,198,71,194,67,34,23,149,41,172,144,135,194,69,35,
-  96,238,124,128,133,132,104,184,202,102,157,185,135,72,52,254,127,251,255,246,155,111,190,253,102,147,73,34,160,244,29,2,64,117,194,192,58,4,69,181,
-  43,27,224,95,66,149,6,216,27,119,244,174,1,144,14,38,0,252,175,182,40,139,178,68,21,231,142,67,57,79,36,152,146,173,196,185,46,185,174,83,
-  93,205,131,32,240,188,218,192,227,94,109,161,218,210,194,185,91,227,240,22,199,169,98,209,100,91,50,209,230,58,174,234,46,132,82,42,125,177,95,4,
-  97,179,47,207,79,181,202,198,180,37,99,221,141,147,7,101,80,225,203,122,97,138,42,97,134,187,128,8,192,245,216,162,153,105,88,52,229,165,144,119,
-  25,217,61,89,119,40,72,177,73,44,46,134,60,172,232,222,247,138,77,157,3,226,12,8,79,134,53,226,108,216,36,142,228,59,242,29,106,202,81,89,
-  155,14,114,53,227,29,155,199,125,25,17,13,41,36,59,97,216,110,80,35,126,120,102,247,99,122,199,191,22,153,105,234,10,70,220,209,99,171,149,15,
-  235,222,236,236,106,94,107,29,171,255,134,69,44,140,141,30,144,247,137,240,52,84,100,136,154,205,197,4,81,193,215,105,191,65,95,103,9,16,30,8,
-  163,234,103,45,97,202,183,36,103,166,104,206,148,15,84,215,210,133,91,184,19,215,197,223,11,40,144,250,136,15,156,152,99,47,244,229,164,140,58,1,
-  227,32,63,79,242,203,68,141,145,79,137,58,232,231,16,5,249,119,100,12,210,212,8,73,121,185,39,52,228,194,123,105,128,103,6,161,11,55,73,63,
-  236,135,177,5,116,3,77,195,65,148,60,221,9,47,175,163,110,116,104,112,199,4,202,152,162,12,81,167,149,33,197,213,128,57,107,14,144,62,115,218,
-  156,37,125,100,154,192,237,66,74,240,191,90,198,25,92,246,48,190,87,176,174,127,192,154,82,83,22,235,167,84,243,78,89,150,46,62,199,119,21,155,
-  248,7,94,219,198,74,193,219,227,10,254,200,114,236,54,210,140,179,175,236,115,193,197,108,131,110,208,43,118,145,190,146,175,150,88,101,95,88,154,229,
-  149,53,107,172,188,222,34,253,155,121,107,206,234,177,123,236,79,170,79,239,204,90,189,118,175,253,200,30,182,199,89,153,72,36,146,101,154,37,123,43,
-  254,13,48,144,1,13,224,43,212,91,229,20,82,149,83,244,7,191,0,125,140,205,107,19,65,24,198,223,119,119,220,221,217,221,204,6,204,37,1,55,
-  86,4,161,224,161,232,161,24,133,88,180,103,65,80,41,98,193,83,165,224,217,131,135,177,212,165,98,245,160,1,141,7,187,40,41,8,193,138,228,210,
-  130,236,252,9,185,137,86,217,21,162,222,53,22,252,98,156,201,38,193,34,248,252,120,230,253,152,135,247,180,1,112,188,131,0,224,40,239,232,70,105,
-  114,6,118,105,22,234,0,62,0,81,24,186,88,192,118,39,42,149,10,48,37,223,103,204,205,69,67,198,66,22,86,131,64,63,213,80,127,51,53,249,
-  74,110,165,50,167,228,251,133,130,63,126,10,98,33,57,146,28,22,165,108,49,243,50,47,157,229,151,111,30,141,230,191,159,20,103,218,150,100,114,34,
-  169,54,88,219,18,165,60,247,104,50,61,148,237,147,65,179,248,246,122,122,66,78,73,143,47,202,11,32,206,202,154,136,48,153,81,137,144,207,169,161,
-  4,226,154,172,197,183,80,70,40,202,196,33,206,250,249,134,179,86,252,82,107,29,188,125,233,190,221,89,194,181,218,199,105,126,177,121,46,190,210,58,
-  118,7,197,75,202,3,126,85,244,40,79,40,128,234,19,181,144,140,7,221,23,20,4,17,123,132,83,135,39,61,154,7,231,95,63,70,53,154,59,207,
-  240,205,6,46,25,117,129,194,228,8,98,157,242,189,195,91,43,171,20,246,171,131,16,111,169,57,254,236,240,0,222,17,232,17,88,109,81,142,49,158,
-  106,27,245,101,156,62,224,220,35,165,62,174,96,195,89,224,54,39,28,21,246,136,174,181,105,253,176,238,218,155,118,215,46,224,191,50,180,204,92,127,
-  45,52,31,6,108,143,173,62,223,155,26,196,108,88,49,53,71,135,94,225,68,223,252,106,126,26,19,145,136,228,53,183,230,129,39,221,167,70,211,211,
-  220,24,123,89,177,61,64,119,191,232,67,143,123,223,220,173,1,253,161,243,94,211,83,232,196,104,254,77,127,210,13,239,185,215,113,71,148,203,169,251,
-  63,144,64,78,49,199,112,80,1,69,211,49,6,232,250,7,99,253,194,200,241,136,73,172,142,131,139,135,135,231,1,247,3,169,5,204,11,152,31,48,
-  29,216,199,5,66,187,185,14,28,231,58,112,152,139,145,223,119,47,243,47,174,95,92,231,57,207,113,158,229,4,0,77,145,61,75,3,65,16,134,103,
-  111,55,217,217,205,157,23,63,192,156,133,8,218,8,135,90,137,157,169,36,158,249,1,130,22,254,0,253,15,211,217,40,4,17,5,171,168,152,66,196,
-  42,32,40,232,9,98,161,96,163,96,26,49,133,4,133,168,248,129,133,77,220,59,141,250,60,204,188,59,195,178,205,142,88,0,48,166,55,24,196,84,
-  45,43,9,127,44,49,13,32,160,185,138,238,130,29,181,225,180,25,38,17,115,185,156,239,219,182,227,251,3,126,119,139,193,117,7,93,215,4,106,29,
-  4,185,192,48,17,4,74,141,143,43,199,54,160,109,231,243,25,154,109,12,226,80,182,238,220,171,55,94,87,123,234,82,215,20,245,211,104,232,29,37,
-  22,82,47,109,13,181,211,65,78,137,189,244,82,235,43,43,170,122,95,53,115,36,200,5,76,247,72,41,59,17,105,145,53,18,82,54,236,154,88,198,
-  211,228,142,88,102,84,102,52,77,35,61,178,44,168,157,186,224,68,188,139,112,23,129,38,224,99,234,204,134,112,29,195,45,12,79,21,57,112,61,147,
-  61,52,185,54,185,58,23,242,202,60,3,34,93,45,97,152,37,247,74,64,89,100,16,81,2,210,57,82,42,157,38,175,82,82,5,235,83,20,101,1,
-  139,219,24,30,163,121,61,67,73,146,70,139,88,220,255,249,153,96,6,43,130,127,99,241,159,225,129,223,243,39,254,200,159,227,19,171,240,58,103,236,
-  134,223,240,170,145,197,212,120,211,188,97,211,242,188,168,10,169,111,87,82,75,198,11,125,169,239,244,129,222,143,125,143,221,143,43,234,229,95,189,255,
-  220,234,166,241,136,130,27,205,255,10,71,36,49,202,47,37,137,173,78,3,65,20,133,239,204,157,25,102,239,110,218,6,209,208,178,108,130,105,16,27,
-  120,7,4,9,10,187,162,225,57,16,136,43,234,90,4,6,195,138,33,188,0,162,130,84,173,195,53,252,148,182,160,86,17,126,28,224,203,236,114,191,
-  156,115,191,228,116,101,23,230,66,2,64,41,193,191,202,148,15,156,182,219,251,89,150,109,196,113,154,54,118,163,40,141,227,40,234,39,201,222,113,255,
-  232,208,26,211,114,210,133,240,165,222,2,151,240,154,219,225,200,119,8,229,246,143,52,43,13,69,220,52,235,7,238,74,228,56,64,224,115,83,220,105,
-  238,113,15,138,75,205,205,226,66,115,192,73,121,163,75,235,196,247,73,142,171,77,110,240,86,107,128,99,188,69,119,102,88,86,8,127,18,49,8,62,
-  240,29,133,248,148,75,92,226,43,190,224,80,14,235,81,44,80,92,203,138,49,205,233,153,70,225,40,156,210,148,158,106,22,52,163,220,230,118,66,143,
-  244,64,191,52,161,123,223,157,78,160,132,130,42,214,227,205,42,180,255,46,234,197,99,255,0,93,143,77,75,2,65,24,199,159,121,217,157,221,73,221,
-  69,162,214,202,197,99,209,102,16,221,235,168,209,169,147,223,161,75,31,225,9,58,116,208,136,48,130,232,148,208,39,240,180,135,92,8,36,34,60,100,
-  132,167,242,160,97,5,209,65,8,187,108,179,154,30,250,253,102,254,240,188,48,48,203,20,224,139,168,0,104,83,74,57,252,227,132,128,84,66,180,177,
-  3,144,43,204,57,158,23,243,188,172,183,29,143,136,185,174,229,38,44,43,187,234,186,113,203,144,249,220,86,94,81,200,21,28,35,92,67,189,44,95,
-  205,174,217,98,61,19,151,112,195,169,219,187,247,20,101,160,65,55,9,104,134,137,122,18,181,90,230,103,62,48,195,25,56,23,87,110,219,172,241,204,
-  172,216,20,66,56,96,148,57,132,105,124,20,193,147,128,203,244,243,2,4,129,30,52,245,34,15,190,69,35,249,169,158,186,214,96,176,135,9,192,4,
-  174,192,209,116,201,39,120,72,194,83,130,55,196,223,55,6,177,246,153,1,7,124,17,110,153,109,219,69,245,63,212,80,252,169,35,71,130,116,120,39,
-  146,49,148,50,198,8,121,99,61,246,193,162,36,45,246,48,26,189,176,40,223,217,120,53,85,161,21,90,149,165,169,200,99,101,67,54,229,133,225,203,
-  254,196,174,236,200,59,233,15,141,170,190,170,59,195,73,85,153,26,81,161,234,0,39,74,248,51,206,53,131,140,58,235,48,233,254,2,99,190,194,194,
-  196,166,167,35,119,64,232,128,70,3,243,129,38,174,3,83,185,14,244,115,49,50,51,222,96,126,195,124,142,235,50,215,19,46,94,22,86,14,6,22,
-  0,99,186,194,194,164,167,115,128,249,128,228,129,199,220,7,158,115,51,50,222,96,62,199,117,153,139,133,133,145,3,0,99,188,193,194,178,128,241,193,
-  109,150,110,38,0,99,148,113,96,8,1,0,
-};
-static const LChunk level11_chunks[146] = {
-  {0,0,-480,-60.0f,1334.0f,-185.0f,540.0f,1036,360,177,158,0},
-  {1036,360,15840,108.9f,2899.0f,-748.1f,699.0f,1227,284,228,520,0},
-  {2263,644,39840,1200.0f,2020.7f,-127.2f,626.0f,1319,360,264,127,0},
-  {3582,1004,62160,1789.5f,2485.0f,-195.0f,754.1f,1203,360,209,326,0},
-  {4785,1364,98880,2332.0f,4762.0f,-3638.7f,4226.0f,297,226,119,1027,0},
-  {5082,1590,77280,2355.0f,3098.7f,-129.0f,509.0f,1129,347,228,80,0},
-  {6211,1937,79200,2430.0f,2973.2f,282.0f,840.0f,82,13,13,45,0},
-  {6293,1950,96720,2982.4f,3525.0f,-103.0f,569.0f,949,360,156,90,0},
-  {7242,2310,111120,3407.0f,3946.0f,-50.0f,528.0f,876,360,144,90,0},
-  {8118,2670,125040,3838.0f,4434.0f,-192.0f,528.0f,1058,360,187,79,0},
-  {9176,3030,140400,4319.0f,5270.0f,-174.0f,537.9f,1017,318,197,180,0},
-  {10193,3348,141360,4383.0f,5078.0f,360.0f,668.0f,71,41,12,45,0},
-  {10264,3389,159120,4932.0f,5022.0f,960.0f,1050.0f,13,1,1,45,0},
-  {10277,3390,164640,5063.0f,5621.0f,-155.8f,511.0f,739,252,180,180,0},
-  {11016,3642,165600,5130.0f,5616.1f,300.0f,787.0f,211,107,29,48,0},
-  {11227,3749,169680,5262.0f,5352.0f,990.0f,1080.0f,13,1,1,45,0},
-  {11240,3750,178320,5415.0f,6735.0f,-174.0f,519.0f,771,276,139,180,0},
-  {12011,4026,178560,5543.9f,6605.1f,290.6f,729.0f,269,82,40,62,0},
-  {12280,4108,180240,5592.0f,6102.0f,960.0f,1080.0f,23,2,2,45,0},
-  {12303,4110,210240,6547.0f,6935.0f,-8.0f,572.6f,691,245,132,70,0},
-  {12994,4355,210720,6562.0f,6995.6f,420.0f,1011.0f,543,115,93,120,0},
-  {13537,4470,235440,6749.9f,8101.8f,82.2f,1379.5f,80,10,10,614,0},
-  {13617,4480,220560,6825.2f,7268.0f,420.0f,848.5f,579,206,96,115,0},
-  {14196,4686,220800,6870.0f,7208.0f,-8.0f,480.0f,64,153,19,45,0},
-  {14260,4839,227040,7065.0f,7125.0f,1875.0f,1935.0f,13,1,1,30,0},
-  {14273,4840,230880,7164.0f,7838.0f,419.6f,962.0f,1066,215,174,126,0},
-  {15339,5055,230880,7192.0f,7730.0f,-20.0f,481.2f,115,69,24,45,0},
-  {15454,5124,234960,7307.2f,7811.0f,850.0f,1118.0f,415,76,54,105,0},
-  {15869,5200,248880,7662.0f,8262.0f,-132.0f,480.0f,216,54,27,120,0},
-  {16085,5254,248880,7662.0f,8244.6f,348.0f,925.0f,799,187,136,120,0},
-  {16884,5441,248880,7667.9f,8234.0f,904.5f,1220.0f,586,119,96,120,0},
-  {17470,5560,261600,8114.0f,8594.0f,860.0f,1220.0f,365,69,50,120,0},
-  {17835,5629,261600,8119.0f,8594.0f,377.0f,980.0f,799,171,129,120,0},
-  {18634,5800,261600,8125.7f,8541.8f,-132.0f,509.5f,668,120,94,120,0},
-  {19302,5920,271200,8382.0f,9220.5f,-133.2f,512.3f,1424,333,258,124,0},
-  {20726,6253,272160,8474.0f,9190.8f,339.1f,980.0f,83,21,11,120,0},
-  {20809,6274,274800,8474.0f,8954.0f,860.0f,1220.0f,29,6,2,120,0},
-  {20838,6280,292080,9014.8f,9930.0f,242.0f,813.7f,471,78,67,120,0},
-  {21309,6358,291360,9040.5f,10281.0f,-169.2f,548.1f,1383,282,225,216,0},
-  {22692,6640,324240,9969.0f,11481.0f,-168.3f,694.1f,1552,360,297,216,0},
-  {24244,7000,361680,11169.0f,11963.0f,-168.3f,510.8f,510,154,73,216,0},
-  {24754,7154,363120,11306.0f,11963.0f,391.0f,908.0f,468,184,73,94,0},
-  {25222,7338,364320,11362.0f,11963.0f,847.0f,1073.0f,52,22,4,68,0},
-  {25274,7360,380880,11857.0f,12555.0f,-23.0f,672.8f,244,68,30,180,0},
-  {25518,7428,380640,11861.0f,12510.0f,427.0f,983.0f,934,279,148,88,0},
-  {26452,7707,383520,11917.0f,12503.0f,907.0f,1163.0f,39,13,5,68,0},
-  {26491,7720,398880,12315.0f,13035.0f,272.4f,953.0f,972,292,163,180,0},
-  {27463,8012,398880,12397.0f,12983.0f,-53.0f,517.0f,120,44,16,88,0},
-  {27583,8056,400800,12457.0f,12938.0f,892.0f,1133.0f,64,24,5,68,0},
-  {27647,8080,415200,12795.0f,13755.0f,-53.0f,632.4f,144,74,16,180,0},
-  {27791,8154,413520,12795.0f,13755.0f,299.0f,1038.9f,822,243,145,180,0},
-  {28613,8397,416160,12943.9f,13735.9f,777.9f,1238.0f,221,43,24,150,0},
-  {28834,8440,436320,13499.6f,14310.0f,841.6f,1283.0f,391,151,58,150,0},
-  {29225,8591,436320,13567.0f,14273.0f,-53.0f,473.0f,59,31,9,68,0},
-  {29284,8622,436320,13597.0f,14310.0f,397.0f,936.0f,483,164,67,68,0},
-  {29767,8786,444000,13830.0f,14310.0f,1740.0f,1830.0f,25,14,3,45,0},
-  {29792,8800,456480,14197.0f,15203.0f,847.0f,1253.0f,225,128,26,68,0},
-  {30017,8928,457440,14227.0f,15222.0f,-30.0f,509.0f,103,35,11,76,0},
-  {30120,8963,456480,14227.0f,15212.0f,427.0f,963.2f,481,166,62,78,0},
-  {30601,9129,457440,14250.0f,15210.0f,1740.0f,1830.0f,12,30,1,45,0},
-  {30613,9159,482400,15030.0f,15120.0f,-480.0f,-390.0f,10,1,1,45,0},
-  {30623,9160,487200,15035.0f,15775.0f,533.0f,1203.0f,485,148,72,190,0},
-  {31108,9308,486240,15075.0f,15720.0f,39.0f,616.2f,458,191,64,180,0},
-  {31566,9499,486240,15150.0f,15630.0f,1740.0f,1860.0f,27,16,3,45,0},
-  {31593,9515,487200,15157.0f,15653.0f,967.0f,1103.0f,15,5,1,68,0},
-  {31608,9520,498720,15435.0f,16080.0f,39.0f,600.0f,475,170,78,180,0},
-  {32083,9690,499200,15465.0f,16135.0f,495.0f,1203.0f,479,173,77,190,0},
-  {32562,9863,499680,15570.0f,15990.0f,1740.0f,1875.0f,22,13,2,60,0},
-  {32584,9876,501600,15607.0f,16013.0f,967.0f,1103.0f,15,4,1,68,0},
-  {32599,9880,511200,15795.0f,16515.0f,39.0f,600.0f,528,167,87,180,0},
-  {33127,10047,511200,15825.0f,16380.0f,517.0f,1203.0f,628,185,92,190,0},
-  {33755,10232,511200,15930.0f,16110.0f,1740.0f,1830.0f,12,4,1,45,0},
-  {33767,10236,513120,15967.0f,16373.0f,967.0f,1103.0f,15,4,1,68,0},
-  {33782,10240,512640,15973.5f,16188.4f,448.1f,717.9f,341,40,40,48,0},
-  {34123,10280,523680,16261.4f,17010.0f,-240.0f,732.0f,460,164,71,180,0},
-  {34583,10444,522720,16292.0f,16923.5f,140.1f,1210.0f,546,160,81,73,0},
-  {35129,10604,523680,16327.0f,16890.0f,618.0f,1512.0f,140,34,16,73,0},
-  {35269,10638,524640,16365.0f,16515.0f,1365.0f,1455.0f,21,2,2,30,0},
-  {35290,10640,540000,16755.0f,17595.0f,-237.9f,711.0f,537,175,81,180,0},
-  {35827,10815,540000,16830.0f,17490.0f,195.1f,1161.0f,500,151,79,73,0},
-  {36327,10966,548640,17100.0f,17290.0f,671.0f,1521.0f,110,34,13,73,0},
-  {36437,11000,558240,17355.0f,17955.0f,-246.0f,662.7f,545,187,90,180,0},
-  {36982,11187,558240,17400.0f,17880.7f,195.1f,1146.0f,488,159,77,73,0},
-  {37470,11346,558240,17400.0f,17845.0f,654.0f,1236.0f,84,14,9,68,0},
-  {37554,11360,570720,17715.0f,18195.0f,80.0f,586.5f,332,155,93,180,0},
-  {37886,11515,570720,17792.2f,18060.2f,514.9f,1022.0f,287,167,79,55,0},
-  {38173,11682,570720,17812.0f,18038.0f,982.0f,1262.0f,54,38,15,23,0},
-  {38227,11720,576480,17910.0f,18315.0f,-38.0f,523.0f,178,95,37,180,0},
-  {38405,11815,576480,17970.0f,18241.0f,412.0f,929.4f,414,140,115,60,0},
-  {38819,11955,576480,17992.0f,18218.0f,850.0f,1346.0f,151,122,30,45,0},
-  {38970,12077,578400,18052.0f,18128.0f,1330.0f,1406.0f,25,3,2,23,0},
-  {38995,12080,582240,18075.0f,18555.0f,112.0f,594.0f,149,130,43,180,0},
-  {39144,12210,582240,18150.0f,18420.9f,562.0f,1048.0f,407,168,97,60,0},
-  {39551,12378,582240,18172.0f,18368.0f,1012.0f,1214.0f,76,62,17,23,0},
-  {39627,12440,588000,18270.0f,18675.0f,22.0f,523.0f,187,110,36,180,0},
-  {39814,12550,588000,18330.0f,18595.7f,472.0f,964.0f,384,161,119,55,0},
-  {40198,12711,588000,18352.0f,18548.0f,922.0f,1212.0f,80,89,13,23,0},
-  {40278,12800,593760,18435.0f,18810.0f,-8.0f,523.0f,277,133,54,180,0},
-  {40555,12933,593280,18490.4f,18751.9f,411.6f,934.0f,399,140,100,60,0},
-  {40954,13073,593760,18532.0f,18728.0f,892.0f,1346.0f,119,87,24,23,0},
-  {41073,13160,598800,18555.0f,19035.0f,96.0f,568.5f,319,160,81,180,0},
-  {41392,13320,598800,18665.4f,18930.0f,554.9f,1026.0f,265,168,80,55,0},
-  {41657,13488,599520,18712.0f,18908.0f,1006.0f,1212.0f,58,32,8,23,0},
-  {41715,13520,604320,18795.0f,19350.0f,142.0f,678.2f,588,176,103,180,0},
-  {42303,13696,604320,18841.4f,19190.1f,545.2f,1080.0f,430,166,77,73,0},
-  {42733,13862,605280,18892.0f,18998.0f,1044.0f,1270.0f,35,18,3,23,0},
-  {42768,13880,615360,19065.0f,20190.0f,154.0f,720.0f,737,262,122,180,0},
-  {43505,14142,612960,19127.3f,20462.2f,235.1f,964.9f,180,38,38,317,0},
-  {43685,14180,642720,19799.4f,20555.5f,1107.9f,1862.8f,224,41,28,317,0},
-  {43909,14221,643680,19800.2f,20631.1f,1018.0f,1723.1f,58,7,7,317,0},
-  {43967,14228,637200,19868.0f,20126.0f,1108.0f,1334.8f,244,36,29,45,0},
-  {44211,14264,636720,19869.0f,20100.0f,1607.7f,1813.0f,194,31,24,54,0},
-  {44405,14295,637440,19879.7f,20100.1f,660.0f,1187.1f,187,31,24,45,0},
-  {44592,14326,642480,19905.0f,20368.0f,154.0f,808.0f,257,97,31,180,0},
-  {44849,14423,642720,20040.0f,20470.0f,706.0f,1360.0f,441,144,68,180,0},
-  {45290,14567,642720,20040.1f,20458.0f,1040.0f,1680.0f,453,118,66,180,0},
-  {45743,14685,642720,20063.0f,20107.0f,1703.0f,1747.0f,11,1,1,22,0},
-  {45754,14686,650400,20280.0f,20925.0f,1137.0f,1782.0f,505,184,87,180,0},
-  {46259,14870,651360,20282.0f,20728.0f,212.1f,808.0f,40,22,6,73,0},
-  {46299,14892,650640,20287.0f,20788.0f,1612.7f,1762.5f,214,33,24,50,0},
-  {46513,14925,650400,20295.0f,20766.0f,752.0f,1225.0f,268,121,52,90,0},
-  {46781,15046,664080,20600.0f,21618.7f,1359.0f,2151.0f,722,246,99,336,0},
-  {47503,15292,664080,20695.9f,21495.0f,1092.5f,1720.0f,296,68,38,175,0},
-  {47799,15360,676320,21112.0f,21448.0f,1977.0f,2473.0f,144,38,14,73,0},
-  {47943,15398,684960,21207.0f,21879.0f,1359.0f,2151.0f,507,151,73,336,0},
-  {48450,15549,683280,21285.0f,21421.0f,2427.0f,2923.0f,16,5,1,68,0},
-  {48466,15554,683280,21285.0f,21421.0f,2877.0f,3193.0f,16,3,1,68,0},
-  {48482,15557,684960,21319.2f,21686.0f,1839.0f,2394.0f,685,147,105,155,0},
-  {49167,15704,684960,21364.0f,21735.0f,975.0f,1513.0f,104,22,9,90,0},
-  {49271,15726,684960,21388.0f,21674.0f,2313.0f,2798.0f,117,28,13,74,0},
-  {49388,15754,684960,21388.0f,21434.0f,2782.0f,3158.0f,16,12,1,23,0},
-  {49404,15766,692640,21603.0f,21970.0f,1820.2f,2197.0f,528,111,75,53,0},
-  {49932,15877,692640,21605.0f,21983.0f,1257.0f,1758.2f,509,114,83,90,0},
-  {50441,15991,692640,21616.8f,21962.7f,2243.0f,2764.0f,460,113,63,95,0},
-  {50901,16104,695040,21676.0f,21976.0f,2640.0f,2758.0f,110,22,11,48,0},
-  {51011,16126,702000,21855.0f,22281.0f,1257.0f,1728.2f,521,123,76,90,0},
-  {51532,16249,701760,21895.9f,22248.0f,1830.0f,2197.0f,607,126,88,53,0},
-  {52139,16375,701760,21897.7f,22257.0f,2232.5f,2700.0f,477,106,69,53,0},
-  {52616,16481,702000,21915.0f,22036.0f,2640.0f,2732.0f,55,5,5,45,0},
-  {52671,16486,710880,22079.0f,22620.0f,1986.0f,2685.0f,384,98,56,155,0},
-  {53055,16584,711120,22080.3f,22590.0f,1257.0f,1760.0f,250,68,26,155,0},
-  {53305,16652,710880,22080.3f,22505.0f,1642.0f,2266.0f,331,84,43,155,0},
-  {53636,16736,712320,22240.0f,22390.0f,2542.0f,3012.0f,45,24,3,49,0},
-  {53681,16760,713280,22274.0f,22390.0f,2974.0f,3192.0f,31,9,2,49,0},
-  {53712,16769,714720,22332.5f,22342.5f,1202.5f,1212.5f,13,1,1,5,0},
-  {53725,16770,759840,23700.0f,23790.0f,270.0f,360.0f,7,1,1,45,0},
-};
-static const LChan level11_chans[394] = {
-  {{30,0,0},0,255,65535,0,64,64},
-  {{23,0,0},0,255,65535,0,64,64},
-  {{255,13,0},1,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{125,255,0},3,255,65535,0,64,64},
-  {{0,0,255},5,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{56,0,0},0,255,65535,0,64,64},
-  {{0,0,0},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{231,227,227},0,255,65535,0,64,64},
-  {{255,229,0},1,255,65535,0,64,64},
-  {{255,0,0},1,255,65535,0,64,64},
-  {{90,0,0},1,255,65535,0,64,64},
-  {{255,0,71},0,33,65535,0,64,64},
-  {{255,61,0},0,255,65535,0,64,64},
-  {{255,0,0},0,0,65535,0,64,64},
-  {{255,127,0},0,255,65535,0,64,64},
-  {{255,148,0},0,255,65535,0,64,64},
-  {{228,0,0},0,255,65535,0,64,64},
-  {{37,25,0},0,255,65535,0,64,64},
-  {{255,70,0},0,255,65535,0,64,64},
-  {{245,255,0},1,255,65535,0,64,64},
-  {{24,0,0},0,255,65535,0,64,64},
-  {{255,51,0},1,255,65535,0,64,64},
-  {{250,255,0},0,255,65535,0,64,64},
-  {{255,70,0},0,255,65535,0,64,64},
-  {{255,182,0},0,255,65535,0,64,64},
-  {{255,0,0},0,0,65535,0,64,64},
-  {{39,0,94},0,255,65535,0,64,64},
-  {{31,0,77},0,255,65535,0,64,64},
-  {{36,0,87},0,255,65535,0,64,64},
-  {{0,185,255},0,255,65535,0,64,64},
-  {{90,0,189},0,149,65535,0,64,64},
-  {{0,104,255},0,255,65535,0,64,64},
-  {{156,119,255},1,255,65535,0,64,64},
-  {{0,244,255},0,255,65535,0,64,64},
-  {{75,0,255},0,255,65535,0,64,64},
-  {{96,0,255},0,255,65535,0,64,64},
-  {{255,0,220},0,255,65535,0,64,64},
-  {{255,195,0},0,255,65535,0,64,64},
-  {{61,0,255},1,255,65535,0,64,64},
-  {{255,0,0},0,0,65535,0,64,64},
-  {{0,0,0},0,0,65535,0,64,64},
-  {{255,255,255},1,255,65535,0,64,64},
-  {{0,135,255},0,255,65535,0,64,64},
-  {{255,255,255},1,255,65535,0,64,64},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{0,188,255},0,255,65535,0,64,64},
-  {{97,0,125},0,255,65535,0,64,64},
-  {{105,0,110},1,195,65535,0,64,64},
-  {{69,255,0},0,255,65535,0,64,64},
-  {{238,255,0},0,255,65535,0,64,64},
-  {{9,11,9},1,255,65535,0,64,64},
-  {{0,244,26},0,255,65535,0,64,64},
-  {{255,123,0},1,255,65535,0,64,64},
-  {{255,189,0},0,255,65535,0,64,64},
-  {{255,0,0},1,170,65535,0,64,64},
-  {{55,0,0},1,255,65535,0,64,64},
-  {{255,135,0},1,255,65535,0,64,64},
-  {{255,0,71},0,33,65535,0,64,64},
-  {{24,0,0},0,255,65535,0,64,64},
-  {{247,0,0},0,255,65535,0,64,64},
-  {{255,202,0},0,255,65535,0,64,64},
-  {{255,222,0},1,255,65535,0,64,64},
-  {{255,115,0},1,255,65535,0,64,64},
-  {{255,61,0},1,255,65535,0,64,64},
-  {{251,0,0},1,126,65535,0,64,64},
-  {{136,0,0},0,255,65535,0,64,64},
-  {{139,16,0},0,255,65535,0,64,64},
-  {{255,102,0},1,255,65535,0,64,64},
-  {{241,242,0},1,255,65535,0,64,64},
-  {{118,45,0},1,255,65535,0,64,64},
-  {{232,255,0},0,255,65535,0,64,64},
-  {{255,0,0},0,255,65535,0,64,64},
-  {{255,0,0},1,223,65535,0,64,64},
-  {{254,255,0},1,255,65535,0,64,64},
-  {{90,0,0},64,255,0,0,64,58},
-  {{0,0,0},1,255,65535,0,64,64},
-  {{64,31,31},0,255,65535,0,64,64},
-  {{255,240,0},0,255,65535,0,64,64},
-  {{254,255,0},0,255,65535,0,64,64},
-  {{39,255,0},1,255,65535,0,64,64},
-  {{255,0,0},1,255,65535,0,64,64},
-  {{255,90,0},0,255,65535,0,64,64},
-  {{255,231,0},1,255,65535,0,64,64},
-  {{248,255,0},1,255,65535,0,64,64},
-  {{169,255,0},0,255,65535,0,64,64},
-  {{255,108,0},0,255,65535,0,64,64},
-  {{255,248,0},0,255,65535,0,64,64},
-  {{255,137,0},0,255,65535,0,64,64},
-  {{255,255,255},64,255,90,0,64,45},
-  {{255,255,255},0,255,65535,0,64,64},
-  {{255,145,0},0,255,65535,0,64,64},
-  {{81,81,81},0,255,65535,0,64,64},
-  {{255,0,0},0,12,65535,0,64,64},
-  {{255,255,255},64,255,81,0,64,45},
-  {{255,115,0},0,255,65535,0,64,64},
-  {{255,244,0},0,255,65535,0,64,64},
-  {{0,217,235},1,176,65535,0,64,64},
-  {{0,161,255},1,255,65535,0,64,64},
-  {{204,0,0},0,255,65535,0,64,64},
-  {{255,161,0},0,255,65535,0,64,64},
-  {{253,255,0},0,255,65535,0,64,64},
-  {{134,0,0},1,255,65535,0,64,64},
-  {{117,0,0},1,255,65535,0,64,64},
-  {{255,190,0},1,255,65535,0,64,64},
-  {{136,0,255},1,240,65535,0,64,64},
-  {{78,0,0},0,255,65535,0,64,64},
-  {{131,25,0},0,255,65535,0,64,64},
-  {{108,82,82},0,255,65535,0,64,64},
-  {{255,255,255},64,255,112,0,64,105},
-  {{236,255,0},0,255,65535,0,64,64},
-  {{0,0,0},0,255,65535,0,64,64},
-  {{255,239,0},1,255,65535,0,64,64},
-  {{255,63,0},0,255,65535,0,64,64},
-  {{255,219,0},0,255,65535,0,64,64},
-  {{255,166,0},1,255,65535,0,64,64},
-  {{255,111,99},0,71,65535,0,64,64},
-  {{255,255,255},64,255,112,0,64,38},
-  {{255,255,255},64,255,120,0,64,51},
-  {{255,255,255},64,255,112,0,64,51},
-  {{0,0,0},0,61,65535,0,64,64},
-  {{255,255,255},0,98,65535,0,64,64},
-  {{31,255,0},1,210,65535,0,64,64},
-  {{32,32,32},0,255,65535,0,64,64},
-  {{37,0,45},1,255,65535,0,64,64},
-  {{255,255,255},65,255,102,-40,64,64},
-  {{255,255,255},65,255,101,-50,64,64},
-  {{2,255,0},0,255,65535,0,64,64},
-  {{255,29,0},1,177,65535,0,64,64},
-  {{255,70,3},0,255,65535,0,64,64},
-  {{255,254,0},0,255,65535,0,64,64},
-  {{34,0,24},0,183,65535,0,64,64},
-  {{88,46,46},0,255,65535,0,64,64},
-  {{123,65,65},0,255,65535,0,64,64},
-  {{255,33,33},1,122,65535,0,64,64},
-  {{107,0,0},0,255,65535,0,64,64},
-  {{118,92,92},0,255,65535,0,64,64},
-  {{64,44,44},0,255,65535,0,64,64},
-  {{255,148,0},1,255,65535,0,64,64},
-  {{87,87,87},0,255,65535,0,64,64},
-  {{173,173,173},0,255,65535,0,64,64},
-  {{0,0,0},0,102,65535,0,64,64},
-  {{0,0,0},0,80,65535,0,64,64},
-  {{255,128,0},1,255,65535,0,64,64},
-  {{41,24,0},0,255,65535,0,64,64},
-  {{0,0,0},0,134,65535,0,64,64},
-  {{92,30,27},0,255,65535,0,64,64},
-  {{255,78,0},0,255,65535,0,64,64},
-  {{255,152,0},0,255,65535,0,64,64},
-  {{0,246,255},0,255,65535,0,64,64},
-  {{255,255,255},0,109,65535,0,64,64},
-  {{99,0,106},0,255,65535,0,64,64},
-  {{255,255,255},0,126,65535,0,64,64},
-  {{255,255,255},64,255,105,-8,64,64},
-  {{38,0,44},0,255,65535,0,64,64},
-  {{125,125,125},0,255,65535,0,64,64},
-  {{255,255,255},64,255,105,-10,64,64},
-  {{0,0,0},0,95,65535,0,64,64},
-  {{58,0,14},0,187,65535,0,64,64},
-  {{255,140,0},1,255,65535,0,64,64},
-  {{0,0,0},0,196,65535,0,64,64},
-  {{255,226,0},0,255,65535,0,64,64},
-  {{255,247,243},0,255,65535,0,64,64},
-  {{255,13,13},0,255,65535,0,64,64},
-  {{255,194,0},0,255,65535,0,64,64},
-  {{255,255,255},64,255,3,101,64,64},
-  {{12,0,0},0,255,65535,0,64,64},
-  {{33,0,0},0,255,65535,0,64,64},
-  {{0,0,0},0,182,65535,0,64,64},
-  {{255,208,0},1,255,65535,0,64,64},
-  {{255,0,211},1,255,65535,0,64,64},
-  {{255,68,0},0,255,65535,0,64,64},
-  {{255,0,0},1,162,65535,0,64,64},
-  {{131,81,81},0,255,65535,0,64,64},
-  {{76,49,49},0,255,65535,0,64,64},
-  {{0,0,0},0,77,65535,0,64,64},
-  {{0,0,0},0,152,65535,0,64,64},
-  {{255,252,0},0,255,65535,0,64,64},
-  {{139,62,62},0,255,65535,0,64,64},
-  {{0,0,0},0,94,65535,0,64,64},
-  {{255,255,255},64,255,103,-5,64,38},
-  {{255,255,255},64,255,104,-31,64,64},
-  {{255,0,0},0,52,65535,0,64,64},
-  {{255,190,0},1,166,65535,0,64,64},
-  {{0,0,0},0,164,65535,0,64,64},
-  {{255,53,0},0,255,65535,0,64,64},
-  {{255,255,0},0,255,65535,0,64,64},
-  {{251,0,0},0,255,65535,0,64,64},
-  {{255,173,0},0,255,65535,0,64,64},
-  {{1,255,0},1,189,65535,0,64,64},
-  {{0,255,65},0,255,65535,0,64,64},
-  {{13,255,0},1,255,65535,0,64,64},
-  {{142,51,0},0,255,65535,0,64,64},
-  {{255,186,0},0,255,65535,0,64,64},
-  {{97,55,0},0,255,65535,0,64,64},
-  {{255,70,0},0,255,65535,0,64,64},
-  {{250,255,0},0,255,65535,0,64,64},
-  {{0,190,255},0,255,65535,0,64,64},
-  {{147,250,255},0,255,65535,0,64,64},
-  {{105,255,0},0,255,65535,0,64,64},
-  {{255,124,0},1,255,65535,0,64,64},
-  {{0,104,255},0,255,65535,0,64,64},
-  {{0,231,255},0,255,65535,0,64,64},
-  {{255,82,0},0,255,65535,0,64,64},
-  {{255,35,204},0,255,65535,0,64,64},
-  {{255,207,0},1,255,65535,0,64,64},
-  {{44,0,127},1,255,65535,0,64,64},
-  {{73,0,133},0,255,65535,0,64,64},
-  {{185,0,255},0,133,65535,0,64,64},
-  {{248,255,0},1,160,65535,0,64,64},
-  {{255,187,0},1,133,65535,0,64,64},
-  {{0,255,28},1,255,65535,0,64,64},
-  {{240,255,132},1,255,65535,0,64,64},
-  {{255,83,0},1,255,65535,0,64,64},
-  {{0,0,0},0,165,65535,0,64,64},
-  {{188,0,255},1,150,65535,0,64,64},
-  {{255,227,0},0,255,65535,0,64,64},
-  {{255,58,0},0,255,65535,0,64,64},
-  {{0,0,0},0,133,65535,0,64,64},
-  {{255,111,0},0,255,65535,0,64,64},
-  {{155,255,0},1,255,65535,0,64,64},
-  {{255,162,0},1,255,65535,0,64,64},
-  {{0,0,0},0,116,65535,0,64,64},
-  {{255,126,0},0,255,65535,0,64,64},
-  {{255,48,0},0,255,65535,0,64,64},
-  {{96,27,0},0,255,65535,0,64,64},
-  {{255,42,0},1,255,65535,0,64,64},
-  {{66,33,33},0,255,65535,0,64,64},
-  {{123,37,37},0,255,65535,0,64,64},
-  {{10,10,10},0,148,65535,0,64,64},
-  {{254,168,0},1,255,65535,0,64,64},
-  {{38,255,0},1,255,65535,0,64,64},
-  {{255,0,251},0,255,65535,0,64,64},
-  {{0,198,255},0,255,65535,0,64,64},
-  {{59,237,255},0,255,65535,0,64,64},
-  {{77,77,77},0,255,65535,0,64,64},
-  {{255,179,0},1,255,65535,0,64,64},
-  {{255,151,0},1,128,65535,0,64,64},
-  {{0,0,0},0,43,65535,0,64,64},
-  {{0,0,0},0,155,65535,0,64,64},
-  {{0,230,255},1,204,65535,0,64,64},
-  {{255,151,0},1,206,65535,0,64,64},
-  {{0,0,0},0,96,65535,0,64,64},
-  {{255,255,255},64,255,50,-45,64,64},
-  {{59,0,27},0,255,65535,0,64,64},
-  {{118,0,77},1,255,65535,0,64,64},
-  {{169,0,41},0,69,65535,0,64,64},
-  {{255,0,54},0,125,65535,0,64,64},
-  {{0,0,0},0,90,65535,0,64,64},
-  {{255,255,255},64,255,24,0,64,38},
-  {{255,246,239},0,182,65535,0,64,64},
-  {{255,255,255},0,48,65535,0,64,64},
-  {{255,255,255},0,52,65535,0,64,64},
-  {{255,255,255},0,56,65535,0,64,64},
-  {{255,255,255},64,255,23,34,64,64},
-  {{106,0,58},1,255,65535,0,64,64},
-  {{134,0,65},0,0,65535,0,64,64},
-  {{255,255,255},64,255,259,0,64,31},
-  {{255,255,255},64,255,259,0,64,12},
-  {{255,255,255},64,255,259,0,64,5},
-  {{255,0,126},0,224,65535,0,64,64},
-  {{255,99,0},0,255,65535,0,64,64},
-  {{77,0,97},0,255,65535,0,64,64},
-  {{224,0,248},0,134,65535,0,64,64},
-  {{0,207,255},1,255,65535,0,64,64},
-  {{0,43,255},0,255,65535,0,64,64},
-  {{0,196,255},0,255,65535,0,64,64},
-  {{44,200,0},0,255,65535,0,64,64},
-  {{47,255,13},0,255,65535,0,64,64},
-  {{0,0,0},0,73,65535,0,64,64},
-  {{67,0,30},1,255,65535,0,64,64},
-  {{255,255,255},64,255,274,0,64,41},
-  {{255,255,255},64,255,274,0,64,38},
-  {{255,255,255},64,255,274,0,64,36},
-  {{255,255,255},0,0,65535,0,64,64},
-  {{53,53,53},0,255,65535,0,64,64},
-  {{70,0,238},1,255,65535,0,64,64},
-  {{0,255,2},1,255,65535,0,64,64},
-  {{7,68,0},1,255,65535,0,64,64},
-  {{37,107,0},1,255,65535,0,64,64},
-  {{71,0,121},1,255,65535,0,64,64},
-  {{1,255,0},0,255,65535,0,64,64},
-  {{255,255,255},64,255,39,0,64,37},
-  {{0,146,255},1,255,65535,0,64,64},
-  {{255,110,0},1,255,65535,0,64,64},
-  {{165,122,0},1,255,65535,0,64,64},
-  {{255,255,255},64,255,7,0,64,12},
-  {{255,255,255},64,255,39,0,64,64},
-  {{255,255,255},64,255,38,0,64,38},
-  {{255,255,255},64,255,39,0,64,51},
-  {{255,255,255},64,255,38,0,64,45},
-  {{255,255,255},64,255,39,0,64,49},
-  {{255,255,255},64,255,38,0,64,33},
-  {{255,255,255},64,255,39,0,64,46},
-  {{255,255,255},64,255,38,0,64,35},
-  {{153,255,0},0,255,65535,0,64,64},
-  {{0,136,13},0,255,65535,0,64,64},
-  {{170,0,229},1,255,65535,0,64,64},
-  {{255,236,0},1,255,65535,0,64,64},
-  {{44,255,0},0,97,65535,0,64,64},
-  {{33,255,0},0,255,65535,0,64,64},
-  {{255,255,255},64,255,304,-14,64,64},
-  {{255,255,255},64,255,304,-28,64,64},
-  {{12,255,0},0,255,65535,0,64,64},
-  {{220,255,70},0,255,65535,0,64,64},
-  {{25,25,25},0,255,65535,0,64,64},
-  {{55,119,82},0,255,65535,0,64,64},
-  {{72,255,0},0,255,65535,0,64,64},
-  {{78,78,78},0,255,65535,0,64,64},
-  {{255,255,255},0,182,65535,0,64,64},
-  {{181,0,40},0,255,65535,0,64,64},
-  {{0,255,76},1,146,65535,0,64,64},
-  {{249,0,255},1,109,65535,0,64,64},
-  {{255,255,255},64,255,316,0,64,19},
-  {{0,112,0},1,255,65535,0,64,64},
-  {{0,27,37},1,255,65535,0,64,64},
-  {{0,70,4},1,255,65535,0,64,64},
-  {{255,255,255},80,255,319,0,64,18},
-  {{88,88,88},1,255,65535,0,64,64},
-  {{0,60,52},1,255,65535,0,64,64},
-  {{239,95,0},1,255,65535,0,64,64},
-  {{160,111,0},0,255,65535,0,64,64},
-  {{0,255,19},0,255,65535,0,64,64},
-  {{0,47,47},0,255,65535,0,64,64},
-  {{0,183,139},0,255,65535,0,64,64},
-  {{197,255,0},1,255,65535,0,64,64},
-  {{0,40,44},0,199,65535,0,64,64},
-  {{0,54,53},0,124,65535,0,64,64},
-  {{241,255,0},0,255,65535,0,64,64},
-  {{0,255,162},0,255,65535,0,64,64},
-  {{255,126,0},1,255,65535,0,64,64},
-  {{255,255,255},64,255,334,15,64,64},
-  {{255,255,255},64,255,334,8,64,26},
-  {{0,79,70},0,255,65535,0,64,64},
-  {{0,29,20},0,255,65535,0,64,64},
-  {{0,57,40},0,255,65535,0,64,64},
-  {{0,255,158},0,255,65535,0,64,64},
-  {{76,0,156},1,255,65535,0,64,64},
-  {{0,139,255},0,255,65535,0,64,64},
-  {{0,255,240},0,255,65535,0,64,64},
-  {{0,20,51},0,255,65535,0,64,64},
-  {{0,45,94},0,64,65535,0,64,64},
-  {{255,255,255},64,255,344,53,64,42},
-  {{255,255,255},64,255,345,0,64,52},
-  {{0,132,255},1,255,65535,0,64,64},
-  {{255,255,255},64,255,344,53,64,32},
-  {{255,255,255},64,255,345,0,64,38},
-  {{0,18,56},0,255,65535,0,64,64},
-  {{0,235,255},0,0,65535,0,64,64},
-  {{255,81,0},0,255,65535,0,64,64},
-  {{241,255,0},1,255,65535,0,64,64},
-  {{222,123,0},1,255,65535,0,64,64},
-  {{255,117,0},1,255,65535,0,64,64},
-  {{31,0,55},0,255,65535,0,64,64},
-  {{255,255,255},64,255,344,22,54,47},
-  {{255,255,255},64,255,345,0,64,51},
-  {{0,30,64},0,255,65535,0,64,64},
-  {{0,64,86},0,255,65535,0,64,64},
-  {{0,217,255},0,255,65535,0,64,64},
-  {{255,255,255},64,255,361,-47,64,64},
-  {{255,255,255},64,255,362,-35,64,64},
-  {{16,0,39},1,255,65535,0,64,64},
-  {{79,83,0},1,255,65535,0,64,64},
-  {{166,59,255},0,255,65535,0,64,64},
-  {{72,0,175},1,255,65535,0,64,64},
-  {{82,26,128},1,255,65535,0,64,64},
-  {{255,255,255},64,255,344,0,64,72},
-  {{255,255,255},64,255,345,0,64,96},
-  {{124,244,255},1,255,65535,0,64,64},
-  {{0,80,255},1,255,65535,0,64,64},
-  {{255,255,255},64,255,344,-29,64,72},
-  {{255,255,255},64,255,345,-96,64,96},
-  {{255,255,255},64,255,361,-9,64,38},
-  {{255,255,255},64,255,362,-21,51,27},
-  {{255,255,255},64,255,344,-9,64,72},
-  {{255,255,255},64,255,345,-84,64,96},
-  {{255,255,255},64,255,80,0,64,38},
-  {{255,225,0},0,255,65535,0,64,64},
-  {{72,0,107},1,255,65535,0,64,64},
-  {{175,233,255},1,255,65535,0,64,64},
-  {{0,56,255},1,255,65535,0,64,64},
-  {{68,213,255},1,255,65535,0,64,64},
-  {{0,148,255},1,255,65535,0,64,64},
-  {{0,140,255},1,255,65535,0,64,64},
-  {{255,255,255},64,255,387,0,64,45},
-  {{185,174,0},1,255,65535,0,64,64},
-  {{255,255,255},64,255,389,0,64,24},
-  {{255,122,0},0,255,65535,0,64,64},
-  {{121,15,0},0,255,65535,0,64,64},
-  {{255,255,255},64,255,389,0,64,17},
-};
-static const LStyle level11_styles[1521] = {
-  {1048575u,0,0},
-  {3205177u,1,0},
-  {3205177u,3,0},
-  {3205177u,5,0},
-  {51379259u,7,0},
-  {3205177u,9,0},
-  {3205177u,11,0},
-  {3205177u,13,0},
-  {3205177u,15,0},
-  {2159676u,0,0},
-  {3205177u,17,0},
-  {3205177u,19,0},
-  {3205177u,21,0},
-  {51379259u,0,0},
-  {1047614u,0,0},
-  {1047615u,0,0},
-  {5309504u,0,0},
-  {3205177u,25,0},
-  {68674u,0,0},
-  {3144772u,0,0},
-  {1047621u,0,0},
-  {4194303u,0,0},
-  {1047624u,0,0},
-  {2110478u,0,0},
-  {2173001u,0,0},
-  {68157439u,0,0},
-  {5320779u,27,0},
-  {57670682u,7,0},
-  {5315654u,29,0},
-  {5241933u,31,0},
-  {57670715u,0,0},
-  {8387662u,0,0},
-  {5315654u,0,0},
-  {3144719u,35,0},
-  {1129551u,37,0},
-  {5241936u,39,0},
-  {2096209u,0,0},
-  {4278348u,42,0},
-  {139459667u,42,0},
-  {68157439u,35,0},
-  {7427156u,27,0},
-  {1048575u,35,0},
-  {1048575u,0,1},
-  {1126486u,48,0},
-  {1135700u,50,0},
-  {5241943u,35,0},
-  {5241944u,35,0},
-  {2159676u,35,0},
-  {4278348u,52,0},
-  {139459667u,52,0},
-  {5241933u,55,0},
-  {2096217u,59,0},
-  {1135700u,62,0},
-  {1126486u,64,0},
-  {3144719u,66,0},
-  {7427156u,0,0},
-  {68157439u,66,0},
-  {1048575u,0,2},
-  {5241943u,66,0},
-  {5241944u,66,0},
-  {2190426u,71,0},
-  {1142877u,59,0},
-  {3144798u,71,0},
-  {4193375u,66,0},
-  {5241936u,79,0},
-  {1048575u,66,3},
-  {3144719u,82,0},
-  {4278348u,84,0},
-  {5241944u,82,0},
-  {139459667u,84,0},
-  {5241933u,87,0},
-  {1135700u,91,0},
-  {68157439u,82,0},
-  {1048575u,0,4},
-  {1126486u,96,0},
-  {2096224u,96,0},
-  {5241943u,82,0},
-  {2159676u,82,0},
-  {5241936u,98,0},
-  {1048575u,82,5},
-  {1148002u,0,0},
-  {3248227u,0,0},
-  {1047653u,0,0},
-  {7339110u,0,0},
-  {1047654u,0,0},
-  {135345151u,0,0},
-  {106599u,104,0},
-  {1047657u,107,0},
-  {75496451u,0,0},
-  {5241962u,110,0},
-  {56622187u,104,0},
-  {6290540u,107,0},
-  {5241965u,123,0},
-  {5320779u,125,0},
-  {1048575u,127,0},
-  {1047661u,123,0},
-  {68156419u,130,0},
-  {1047655u,104,0},
-  {106599u,130,0},
-  {1047657u,137,0},
-  {2169926u,140,0},
-  {2169926u,143,0},
-  {1047578u,140,0},
-  {1047655u,130,0},
-  {1048575u,0,6},
-  {1047578u,0,0},
-  {3144730u,0,0},
-  {54524952u,7,0},
-  {3144727u,0,0},
-  {2120731u,0,0},
-  {23579u,0,0},
-  {1047575u,0,0},
-  {56622104u,7,0},
-  {113774u,110,0},
-  {113774u,149,0},
-  {5241962u,149,0},
-  {5241962u,153,0},
-  {2124827u,0,0},
-  {3144800u,0,0},
-  {1048575u,0,7},
-  {5320779u,160,0},
-  {2211953u,162,0},
-  {1129551u,0,0},
-  {5320779u,0,0},
-  {106599u,140,0},
-  {56622187u,140,0},
-  {1047657u,164,0},
-  {6290540u,164,0},
-  {1047655u,140,0},
-  {106599u,167,0},
-  {2159676u,153,0},
-  {1047657u,170,0},
-  {75496451u,173,0},
-  {113774u,153,0},
-  {5241962u,175,0},
-  {5359692u,178,0},
-  {5359692u,183,0},
-  {6290508u,189,0},
-  {5241971u,194,0},
-  {1047668u,194,0},
-  {1048575u,140,8},
-  {5320779u,202,0},
-  {3144816u,0,0},
-  {4193392u,0,0},
-  {2211953u,173,0},
-  {3260529u,173,0},
-  {2169926u,204,0},
-  {1047655u,167,0},
-  {1047578u,204,0},
-  {106599u,204,0},
-  {1047657u,207,0},
-  {4308078u,175,0},
-  {3144730u,204,0},
-  {113774u,175,0},
-  {5241962u,210,0},
-  {56622187u,204,0},
-  {2169926u,29,0},
-  {6290540u,207,0},
-  {1048575u,0,9},
-  {2096150u,0,0},
-  {1147926u,0,0},
-  {5320779u,218,0},
-  {2210926u,210,0},
-  {1169525u,220,0},
-  {3144823u,220,0},
-  {106599u,222,0},
-  {1047655u,204,0},
-  {1047657u,225,0},
-  {68156419u,228,0},
-  {1047655u,222,0},
-  {113774u,230,0},
-  {5241962u,230,0},
-  {2159676u,210,0},
-  {4256828u,210,0},
-  {2211953u,228,0},
-  {1048575u,0,10},
-  {1048575u,204,11},
-  {5320779u,239,0},
-  {2222201u,241,0},
-  {2222203u,241,0},
-  {135344137u,241,0},
-  {2096252u,241,0},
-  {1047677u,241,0},
-  {106599u,245,0},
-  {1047657u,248,0},
-  {34602087u,245,0},
-  {1047655u,245,0},
-  {1047668u,251,0},
-  {1047578u,245,0},
-  {39844940u,255,0},
-  {113774u,260,0},
-  {5241962u,260,0},
-  {4308078u,230,0},
-  {56622187u,245,0},
-  {38914124u,264,0},
-  {38914124u,270,0},
-  {38796403u,251,0},
-  {5320779u,275,0},
-  {6290540u,248,0},
-  {1048575u,245,12},
-  {34602100u,251,0},
-  {2169926u,245,0},
-  {2169926u,281,0},
-  {109050883u,0,0},
-  {33661031u,245,0},
-  {34603007u,0,0},
-  {101711871u,0,0},
-  {34602089u,248,0},
-  {38875211u,285,0},
-  {168820735u,245,0},
-  {38796394u,287,0},
-  {38796394u,260,0},
-  {36699162u,0,0},
-  {36699159u,0,0},
-  {35675163u,0,0},
-  {38796414u,0,0},
-  {34602010u,245,0},
-  {34602110u,0,0},
-  {3144831u,0,0},
-  {1047680u,0,0},
-  {1047681u,0,0},
-  {7339138u,0,0},
-  {1047682u,0,0},
-  {2169878u,0,0},
-  {2231411u,0,0},
-  {2126876u,0,0},
-  {139459716u,289,0},
-  {134355077u,289,0},
-  {139459719u,289,0},
-  {138552456u,289,0},
-  {139459722u,289,0},
-  {135265419u,289,0},
-  {137507980u,289,0},
-  {56622187u,291,0},
-  {106599u,291,0},
-  {1047655u,291,0},
-  {1047657u,291,0},
-  {5241962u,293,0},
-  {113774u,293,0},
-  {2169926u,0,0},
-  {137507980u,296,0},
-  {2169926u,298,0},
-  {1047578u,291,0},
-  {2169926u,291,0},
-  {3144730u,291,0},
-  {54524952u,301,0},
-  {3144727u,291,0},
-  {2120731u,291,0},
-  {6290508u,304,0},
-  {5359692u,307,0},
-  {5241971u,304,0},
-  {5359692u,304,0},
-  {1048575u,0,13},
-  {1048575u,315,14},
-  {139459716u,296,0},
-  {138552456u,296,0},
-  {135266303u,296,0},
-  {135265419u,296,0},
-  {139459722u,296,0},
-  {134355077u,296,0},
-  {139459719u,296,0},
-  {135266303u,291,0},
-  {3144831u,291,0},
-  {2096270u,0,0},
-  {3144813u,0,0},
-  {2096271u,0,0},
-  {1076247u,0,0},
-  {139459716u,321,0},
-  {134355077u,321,0},
-  {139459719u,321,0},
-  {137507980u,321,0},
-  {135266303u,321,0},
-  {138552456u,321,0},
-  {135265419u,321,0},
-  {139459722u,321,0},
-  {269484031u,323,0},
-  {1048575u,323,0},
-  {1047661u,0,0},
-  {5241965u,326,0},
-  {5241965u,329,0},
-  {7339117u,0,0},
-  {1047661u,329,0},
-  {1048575u,0,15},
-  {2211953u,331,0},
-  {68157439u,336,0},
-  {68156419u,336,0},
-  {106599u,0,0},
-  {2244702u,338,0},
-  {4193425u,338,0},
-  {6290540u,0,0},
-  {1047655u,0,0},
-  {68156419u,0,0},
-  {5241962u,340,0},
-  {1047655u,173,0},
-  {3252327u,173,0},
-  {5242002u,331,0},
-  {1047657u,0,0},
-  {2096224u,0,0},
-  {4193386u,331,0},
-  {3293278u,331,0},
-  {5242003u,331,0},
-  {1048575u,338,0},
-  {113774u,0,0},
-  {1048575u,0,16},
-  {135265428u,331,0},
-  {4193429u,0,0},
-  {154774u,331,0},
-  {135265432u,331,0},
-  {5241962u,342,0},
-  {106599u,173,0},
-  {1047657u,173,0},
-  {3303577u,345,0},
-  {2096283u,0,0},
-  {4193392u,331,0},
-  {56622187u,0,0},
-  {1048575u,0,17},
-  {5241936u,340,0},
-  {1048575u,0,18},
-  {1048575u,0,19},
-  {5241936u,342,0},
-  {1048575u,0,20},
-  {1048575u,349,0},
-  {4300903u,0,0},
-  {4193386u,351,0},
-  {1048575u,0,21},
-  {4193436u,338,0},
-  {1048575u,353,0},
-  {5241961u,0,0},
-  {4300903u,173,0},
-  {5242013u,0,0},
-  {3308702u,338,0},
-  {2210926u,0,0},
-  {5242016u,0,0},
-  {3303577u,355,0},
-  {113774u,173,0},
-  {1048575u,0,22},
-  {4193425u,349,0},
-  {4193436u,349,0},
-  {3308702u,349,0},
-  {2244702u,349,0},
-  {4193425u,353,0},
-  {3308702u,353,0},
-  {2244702u,353,0},
-  {4193436u,353,0},
-  {6290538u,361,0},
-  {5349479u,0,0},
-  {6290535u,0,0},
-  {6290537u,0,0},
-  {2096289u,363,0},
-  {3303577u,366,0},
-  {1048575u,0,23},
-  {2124823u,0,0},
-  {1048575u,0,24},
-  {4193360u,351,0},
-  {1048575u,0,25},
-  {6290512u,361,0},
-  {1048575u,0,26},
-  {4193442u,0,0},
-  {4193386u,373,0},
-  {3144853u,0,0},
-  {72351743u,0,0},
-  {5241962u,373,0},
-  {4341854u,0,0},
-  {3259502u,0,0},
-  {2096224u,291,0},
-  {5241936u,373,0},
-  {4193360u,373,0},
-  {1048575u,0,27},
-  {72350723u,0,0},
-  {269484031u,390,0},
-  {5390430u,0,0},
-  {5242019u,390,0},
-  {2096292u,390,0},
-  {2159676u,293,0},
-  {1218725u,0,0},
-  {1048575u,0,28},
-  {1048575u,0,29},
-  {1048575u,0,30},
-  {1048575u,0,31},
-  {1048575u,0,32},
-  {5241965u,0,0},
-  {6291455u,0,0},
-  {1048575u,0,33},
-  {1048575u,0,34},
-  {1220775u,396,0},
-  {173014148u,398,0},
-  {167909509u,398,0},
-  {173014151u,398,0},
-  {171062412u,398,0},
-  {168820735u,398,0},
-  {172106888u,398,0},
-  {168819851u,398,0},
-  {173014154u,398,0},
-  {173014148u,400,0},
-  {167909509u,400,0},
-  {173014151u,400,0},
-  {171062412u,400,0},
-  {168820735u,400,0},
-  {172106888u,400,0},
-  {168819851u,400,0},
-  {173014154u,400,0},
-  {1047721u,0,0},
-  {6290538u,0,0},
-  {3144800u,291,0},
-  {1047555u,0,0},
-  {6290512u,402,0},
-  {1048575u,404,35},
-  {4217883u,0,0},
-  {5241882u,0,0},
-  {5241879u,0,0},
-  {2096298u,0,0},
-  {3144726u,0,0},
-  {3144846u,0,0},
-  {3144847u,0,0},
-  {1048575u,406,36},
-  {2096299u,0,0},
-  {173014154u,408,0},
-  {167909509u,408,0},
-  {173014148u,408,0},
-  {3144789u,410,0},
-  {3144876u,413,0},
-  {3252327u,415,0},
-  {5241961u,413,0},
-  {3144875u,0,0},
-  {3144877u,413,0},
-  {2096292u,413,0},
-  {1048575u,0,37},
-  {3144784u,410,0},
-  {2159676u,413,0},
-  {172106888u,408,0},
-  {173014151u,408,0},
-  {171062412u,408,0},
-  {168820735u,408,0},
-  {168819851u,408,0},
-  {3252327u,420,0},
-  {5241961u,423,0},
-  {3144789u,425,0},
-  {3144876u,423,0},
-  {3144877u,425,0},
-  {1048575u,0,38},
-  {3144784u,425,0},
-  {2159676u,423,0},
-  {173014148u,432,0},
-  {167909509u,432,0},
-  {173014154u,432,0},
-  {172106888u,432,0},
-  {171062412u,432,0},
-  {168820735u,432,0},
-  {168819851u,432,0},
-  {173014151u,432,0},
-  {118488067u,0,0},
-  {53476526u,0,0},
-  {51379375u,0,0},
-  {51379376u,0,0},
-  {192937075u,434,0},
-  {1231025u,436,0},
-  {5266459u,0,0},
-  {6290458u,0,0},
-  {57670680u,7,0},
-  {6290455u,0,0},
-  {51379379u,0,0},
-  {1047732u,436,0},
-  {53476523u,0,0},
-  {55573613u,0,0},
-  {4272309u,436,0},
-  {55573636u,0,0},
-  {51379335u,0,0},
-  {56622262u,0,0},
-  {55573687u,0,0},
-  {68157439u,436,0},
-  {1047667u,436,0},
-  {3335352u,436,0},
-  {3223628u,436,0},
-  {1048575u,0,39},
-  {53617800u,0,0},
-  {55573642u,0,0},
-  {54666376u,0,0},
-  {55573639u,0,0},
-  {3144890u,0,0},
-  {140529685u,434,0},
-  {193985723u,434,0},
-  {189811848u,434,0},
-  {191888572u,434,0},
-  {189932680u,434,0},
-  {68157439u,440,0},
-  {68157439u,442,0},
-  {1048575u,434,0},
-  {1231025u,444,0},
-  {1047667u,446,0},
-  {1048575u,0,40},
-  {4272309u,446,0},
-  {1047732u,444,0},
-  {4389053u,450,0},
-  {68156607u,453,0},
-  {3335352u,446,0},
-  {68156492u,0,16533},
-  {1231025u,446,0},
-  {1047732u,446,0},
-  {1048575u,0,41},
-  {3223628u,446,0},
-  {68157439u,0,166},
-  {5439588u,0,0},
-  {56622176u,0,0},
-  {1231025u,463,0},
-  {68156607u,465,0},
-  {4272309u,463,0},
-  {1231025u,469,0},
-  {67121162u,0,170},
-  {1048575u,0,42},
-  {1047732u,469,0},
-  {1048575u,0,43},
-  {1047732u,463,0},
-  {3223628u,463,0},
-  {3335352u,463,0},
-  {4389053u,473,0},
-  {1047667u,463,0},
-  {68156607u,486,0},
-  {67121162u,0,186},
-  {1231025u,494,0},
-  {1047732u,494,0},
-  {4389053u,496,0},
-  {1048575u,0,44},
-  {67121162u,0,179},
-  {68156607u,503,0},
-  {55771236u,0,0},
-  {1231025u,507,0},
-  {1047732u,507,0},
-  {1048575u,0,45},
-  {3335352u,511,0},
-  {1047667u,507,0},
-  {67121162u,0,195},
-  {68156607u,520,0},
-  {1047732u,522,0},
-  {67121162u,0,204},
-  {68156607u,526,0},
-  {36699312u,0,0},
-  {1047731u,528,0},
-  {68157439u,528,0},
-  {68156419u,528,0},
-  {3286152u,530,0},
-  {6290614u,530,0},
-  {5241991u,530,0},
-  {1047745u,528,0},
-  {5241994u,530,0},
-  {1047746u,533,0},
-  {4334728u,530,0},
-  {5241988u,530,0},
-  {51379332u,0,0},
-  {1047687u,528,0},
-  {5241988u,528,0},
-  {1047632u,536,0},
-  {1048575u,528,46},
-  {1048575u,0,47},
-  {1048575u,528,48},
-  {1048575u,0,49},
-  {68157439u,541,0},
-  {1048575u,541,0},
-  {68156419u,545,0},
-  {1047745u,545,0},
-  {1047746u,547,0},
-  {4334728u,550,0},
-  {5241991u,550,0},
-  {5241988u,550,0},
-  {5241994u,550,0},
-  {6290614u,550,0},
-  {1047632u,553,0},
-  {1048575u,545,50},
-  {139459719u,0,0},
-  {138552456u,0,0},
-  {134355077u,0,0},
-  {139459716u,0,0},
-  {139459722u,0,0},
-  {135265419u,0,0},
-  {137507980u,0,0},
-  {1048575u,0,51},
-  {1048575u,545,52},
-  {1048575u,0,53},
-  {68156419u,558,0},
-  {1047745u,558,0},
-  {1047746u,560,0},
-  {4193415u,563,0},
-  {4193418u,563,0},
-  {4193418u,566,0},
-  {4193303u,0,0},
-  {3169307u,0,0},
-  {4193306u,0,0},
-  {55573528u,7,0},
-  {4334728u,563,0},
-  {5241988u,558,0},
-  {5241994u,563,0},
-  {6290614u,558,0},
-  {5241991u,563,0},
-  {3286152u,563,0},
-  {1048575u,558,54},
-  {1047632u,568,0},
-  {2096270u,558,0},
-  {2096271u,558,0},
-  {1076247u,558,0},
-  {1048575u,558,55},
-  {1048575u,0,56},
-  {1048575u,0,57},
-  {5241994u,577,0},
-  {68156419u,575,0},
-  {1047745u,575,0},
-  {1047746u,580,0},
-  {4334728u,577,0},
-  {5241991u,577,0},
-  {6290614u,577,0},
-  {5241988u,577,0},
-  {1047632u,583,0},
-  {1048575u,575,58},
-  {1048575u,575,59},
-  {1048575u,0,60},
-  {1048575u,0,61},
-  {7339116u,0,0},
-  {55573630u,0,0},
-  {53476547u,0,0},
-  {1047646u,0,0},
-  {1048575u,0,62},
-  {52452379u,0,0},
-  {53476375u,0,0},
-  {52427802u,0,0},
-  {269484031u,0,0},
-  {68157439u,0,120},
-  {68156419u,0,120},
-  {4193317u,0,0},
-  {4233255u,0,0},
-  {201924u,592,0},
-  {38951u,592,0},
-  {2140201u,0,0},
-  {1047591u,0,0},
-  {38951u,0,0},
-  {2096271u,592,0},
-  {1047591u,592,0},
-  {1047589u,592,0},
-  {2096270u,592,0},
-  {2096159u,594,0},
-  {2096326u,592,0},
-  {1253575u,592,0},
-  {1048575u,0,63},
-  {3352777u,0,0},
-  {1256457u,592,0},
-  {2096159u,596,0},
-  {1253575u,598,0},
-  {38951u,598,0},
-  {2096159u,600,0},
-  {2096270u,598,0},
-  {2096271u,598,0},
-  {201924u,598,0},
-  {2096326u,598,0},
-  {1047589u,598,0},
-  {2096159u,604,0},
-  {1047591u,598,0},
-  {2096332u,0,0},
-  {6290508u,606,0},
-  {5454029u,611,0},
-  {5454029u,617,0},
-  {5241971u,622,0},
-  {1047668u,622,0},
-  {38951u,626,0},
-  {2096326u,626,0},
-  {1047591u,626,0},
-  {1253575u,626,0},
-  {2096270u,626,0},
-  {2096271u,626,0},
-  {201924u,626,0},
-  {4193317u,626,0},
-  {1048575u,0,64},
-  {2096271u,628,0},
-  {201924u,628,0},
-  {2096326u,628,0},
-  {2096270u,628,0},
-  {4193317u,628,0},
-  {1253575u,628,0},
-  {1047591u,628,0},
-  {38951u,628,0},
-  {1047595u,628,0},
-  {2304201u,0,0},
-  {135475199u,0,0},
-  {2310351u,628,0},
-  {4193323u,628,0},
-  {3193902u,630,0},
-  {3196977u,0,0},
-  {3193902u,632,0},
-  {1048575u,0,65},
-  {4193328u,632,0},
-  {1047761u,0,0},
-  {6290480u,630,0},
-  {1047762u,0,0},
-  {4193328u,630,0},
-  {1048575u,0,66},
-  {35868883u,0,0},
-  {36699278u,0,0},
-  {34808007u,0,0},
-  {1047765u,0,0},
-  {1047766u,0,0},
-  {1047595u,0,0},
-  {2096159u,0,0},
-  {51379239u,0,0},
-  {1253575u,0,0},
-  {5241895u,0,0},
-  {2310351u,0,0},
-  {4193323u,0,0},
-  {2132004u,0,0},
-  {5241932u,634,0},
-  {4405453u,638,0},
-  {4405453u,643,0},
-  {4193395u,647,0},
-  {5241972u,647,0},
-  {54564903u,0,0},
-  {4193317u,650,0},
-  {38796503u,0,0},
-  {34602199u,0,0},
-  {1048575u,0,67},
-  {4193360u,650,0},
-  {4193360u,652,0},
-  {4193317u,654,0},
-  {54524965u,656,0},
-  {221400u,0,0},
-  {6290649u,0,0},
-  {1047770u,0,0},
-  {4193498u,0,0},
-  {4193317u,652,0},
-  {1047771u,0,0},
-  {1048575u,0,68},
-  {4193360u,654,0},
-  {54525008u,656,0},
-  {1048575u,0,69},
-  {54524965u,658,0},
-  {1048575u,0,70},
-  {54525008u,658,0},
-  {54524965u,660,0},
-  {1048575u,0,71},
-  {54525008u,660,0},
-  {54524965u,662,0},
-  {1048575u,0,72},
-  {54525008u,662,0},
-  {226524u,0,0},
-  {3372252u,0,0},
-  {38796430u,0,0},
-  {6516830u,0,0},
-  {50370599u,0,0},
-  {2096350u,0,0},
-  {2325609u,0,0},
-  {3144927u,0,0},
-  {4193504u,0,0},
-  {2204777u,0,0},
-  {3144929u,0,0},
-  {1048575u,0,73},
-  {2133024u,0,0},
-  {1280226u,0,0},
-  {34602027u,0,0},
-  {2138145u,0,0},
-  {1089569u,0,0},
-  {1083428u,0,0},
-  {35864783u,0,0},
-  {37747755u,0,0},
-  {4230176u,666,0},
-  {4193502u,666,0},
-  {3144820u,666,0},
-  {4193498u,668,0},
-  {68156419u,668,0},
-  {4233255u,668,0},
-  {4193317u,670,0},
-  {68157439u,668,0},
-  {1048575u,668,74},
-  {4193360u,670,0},
-  {2133024u,668,0},
-  {2096350u,668,0},
-  {38796420u,0,0},
-  {33691781u,0,0},
-  {34602123u,0,0},
-  {2330851u,666,0},
-  {2132004u,668,0},
-  {2096357u,668,0},
-  {3144735u,666,0},
-  {2096159u,673,0},
-  {36731935u,0,0},
-  {38796423u,0,0},
-  {3381363u,666,0},
-  {38796426u,0,0},
-  {37986535u,0,0},
-  {2096361u,666,0},
-  {4193498u,602,0},
-  {4233255u,602,0},
-  {4193317u,677,0},
-  {68156419u,602,0},
-  {68157439u,602,0},
-  {1048575u,602,75},
-  {4193360u,677,0},
-  {2096350u,602,0},
-  {2133024u,602,0},
-  {4193502u,0,0},
-  {3181600u,0,0},
-  {3144820u,0,0},
-  {2096357u,602,0},
-  {2132004u,602,0},
-  {4193317u,680,0},
-  {4193360u,680,0},
-  {2330851u,0,0},
-  {3144735u,0,0},
-  {3381363u,0,0},
-  {4193498u,682,0},
-  {4233255u,682,0},
-  {68156419u,682,0},
-  {68157439u,682,0},
-  {1048575u,0,76},
-  {38796522u,0,0},
-  {34602218u,0,0},
-  {4193360u,687,0},
-  {4193515u,687,0},
-  {4193515u,684,0},
-  {4193360u,684,0},
-  {4193515u,690,0},
-  {4193360u,690,0},
-  {68156419u,693,0},
-  {68157439u,693,0},
-  {4233255u,693,0},
-  {4193498u,693,0},
-  {68156419u,695,0},
-  {68157439u,695,0},
-  {4233255u,695,0},
-  {4193498u,695,0},
-  {68157439u,592,0},
-  {68156419u,592,0},
-  {68156419u,598,0},
-  {68157439u,598,0},
-  {68157439u,626,0},
-  {68156419u,626,0},
-  {68157439u,628,0},
-  {68156419u,628,0},
-  {137507980u,697,0},
-  {139459716u,697,0},
-  {138552456u,697,0},
-  {135266303u,697,0},
-  {135265419u,697,0},
-  {139459722u,697,0},
-  {134355077u,697,0},
-  {139459719u,697,0},
-  {68156419u,697,0},
-  {4436062u,0,0},
-  {54660190u,0,0},
-  {4193498u,701,0},
-  {4233255u,701,0},
-  {68156419u,701,0},
-  {68157439u,701,0},
-  {4193360u,703,0},
-  {4193515u,703,0},
-  {4193515u,706,0},
-  {4193360u,706,0},
-  {68156419u,709,0},
-  {68157439u,709,0},
-  {4233255u,709,0},
-  {4193498u,709,0},
-  {4193515u,713,0},
-  {4193360u,713,0},
-  {68156419u,716,0},
-  {68157439u,716,0},
-  {4233255u,716,0},
-  {4193498u,716,0},
-  {1048575u,0,77},
-  {4193515u,718,0},
-  {4193360u,718,0},
-  {68156419u,721,0},
-  {68157439u,721,0},
-  {4233255u,721,0},
-  {4193498u,721,0},
-  {4193515u,723,0},
-  {4193360u,723,0},
-  {68156419u,726,0},
-  {68157439u,726,0},
-  {4233255u,726,0},
-  {4193498u,726,0},
-  {4193515u,728,0},
-  {4193360u,728,0},
-  {68156419u,731,0},
-  {68157439u,731,0},
-  {4233255u,731,0},
-  {4193498u,731,0},
-  {4193498u,733,0},
-  {4233255u,733,0},
-  {68156419u,733,0},
-  {68157439u,733,0},
-  {4193360u,738,0},
-  {4193515u,738,0},
-  {4193515u,735,0},
-  {4193360u,735,0},
-  {4193515u,741,0},
-  {4193360u,741,0},
-  {68156419u,744,0},
-  {68157439u,744,0},
-  {4233255u,744,0},
-  {4193498u,744,0},
-  {68156419u,746,0},
-  {68157439u,746,0},
-  {4233255u,746,0},
-  {4193498u,746,0},
-  {4193498u,748,0},
-  {4233255u,748,0},
-  {68157439u,748,0},
-  {68156419u,748,0},
-  {4193515u,750,0},
-  {4193360u,750,0},
-  {68156419u,753,0},
-  {68157439u,753,0},
-  {4233255u,753,0},
-  {4193498u,753,0},
-  {4193515u,755,0},
-  {4193360u,755,0},
-  {1048575u,753,0},
-  {537919487u,0,-26934},
-  {68156419u,762,0},
-  {68156419u,765,0},
-  {68157439u,762,0},
-  {8632557u,0,0},
-  {8632557u,765,0},
-  {605028351u,0,292},
-  {1048575u,767,0},
-  {68157439u,769,0},
-  {537919487u,0,293},
-  {68157439u,771,0},
-  {5487731u,0,0},
-  {6290547u,0,0},
-  {3144759u,0,0},
-  {6536307u,0,0},
-  {7339123u,0,0},
-  {7339248u,0,0},
-  {1047793u,0,0},
-  {1047792u,0,0},
-  {248050u,0,0},
-  {4442354u,0,0},
-  {2096371u,0,0},
-  {38796532u,0,0},
-  {34602228u,0,0},
-  {38796533u,0,0},
-  {34602229u,0,0},
-  {3397878u,0,0},
-  {2096371u,682,0},
-  {2096371u,693,0},
-  {2096371u,701,0},
-  {2096371u,695,0},
-  {2096371u,716,0},
-  {2096371u,709,0},
-  {2096371u,726,0},
-  {2096371u,721,0},
-  {2096371u,746,0},
-  {2096371u,744,0},
-  {2096371u,753,0},
-  {2096371u,733,0},
-  {2096371u,748,0},
-  {3193902u,777,0},
-  {4193328u,777,0},
-  {3193902u,779,0},
-  {4193328u,779,0},
-  {2145326u,0,0},
-  {2148401u,0,0},
-  {3196977u,781,0},
-  {3398705u,0,0},
-  {2096376u,0,0},
-  {54524952u,0,0},
-  {4193529u,0,0},
-  {2354426u,0,0},
-  {5281831u,0,0},
-  {4193532u,0,0},
-  {2096380u,0,0},
-  {2136103u,0,0},
-  {1087527u,0,0},
-  {1096750u,632,0},
-  {68156419u,783,0},
-  {3144752u,632,0},
-  {2145326u,632,0},
-  {54524951u,0,0},
-  {55573757u,7,0},
-  {53500955u,0,0},
-  {53476378u,0,0},
-  {1047806u,0,0},
-  {1047807u,0,0},
-  {1047808u,0,0},
-  {3144960u,0,0},
-  {3144959u,0,0},
-  {1047809u,0,0},
-  {55573762u,0,0},
-  {6330407u,0,0},
-  {5242110u,0,0},
-  {5242112u,0,0},
-  {135474185u,0,0},
-  {51646723u,0,0},
-  {51646725u,0,0},
-  {51646726u,0,0},
-  {51646727u,0,0},
-  {2368776u,0,0},
-  {2293860u,0,0},
-  {52427872u,0,0},
-  {35925258u,0,0},
-  {36699404u,0,0},
-  {34879757u,0,0},
-  {1320200u,0,0},
-  {3424527u,0,0},
-  {3144977u,0,0},
-  {5242111u,0,0},
-  {2096402u,0,0},
-  {2096403u,0,0},
-  {2096404u,0,0},
-  {2096405u,0,0},
-  {285974u,0,0},
-  {4480278u,0,0},
-  {2375951u,0,0},
-  {1047832u,0,0},
-  {7339288u,0,0},
-  {1047833u,0,0},
-  {7339289u,0,0},
-  {3417352u,0,0},
-  {138620927u,0,0},
-  {7339290u,0,0},
-  {6290715u,0,0},
-  {38796572u,0,0},
-  {34602268u,0,0},
-  {56622119u,0,0},
-  {3144752u,0,0},
-  {3437853u,0,0},
-  {4233502u,0,0},
-  {57670695u,0,0},
-  {38796575u,0,0},
-  {34602271u,0,0},
-  {38796576u,0,0},
-  {34602272u,0,0},
-  {3144993u,0,0},
-  {6588706u,0,0},
-  {7339262u,0,0},
-  {7339150u,0,0},
-  {6496455u,0,0},
-  {7339151u,0,0},
-  {7339264u,0,0},
-  {6330407u,765,0},
-  {7339262u,765,0},
-  {7339264u,765,0},
-  {6588706u,765,0},
-  {57670695u,765,0},
-  {6590755u,0,0},
-  {6590755u,765,0},
-  {6592805u,0,0},
-  {6594855u,0,0},
-  {6596905u,0,0},
-  {4193332u,0,0},
-  {4193332u,765,0},
-  {3453227u,791,0},
-  {4193580u,791,0},
-  {3453227u,793,0},
-  {4193580u,793,0},
-  {73699619u,0,0},
-  {7626006u,0,0},
-  {7379230u,0,0},
-  {76546047u,0,0},
-  {3145005u,791,0},
-  {1047854u,793,0},
-  {8387887u,0,0},
-  {8387889u,0,0},
-  {8387890u,0,0},
-  {76546047u,791,0},
-  {58719271u,0,0},
-  {58719271u,765,0},
-  {3145005u,793,0},
-  {3461427u,791,0},
-  {8387887u,765,0},
-  {8387889u,765,0},
-  {68157439u,791,0},
-  {68156419u,791,0},
-  {68156419u,289,0},
-  {68156419u,296,0},
-  {68156419u,321,0},
-  {68156419u,398,0},
-  {68156419u,400,0},
-  {68156419u,432,0},
-  {1048575u,0,78},
-  {7339262u,795,0},
-  {6330407u,795,0},
-  {7339264u,795,0},
-  {4193332u,795,0},
-  {6330407u,797,0},
-  {7339262u,797,0},
-  {6330407u,800,0},
-  {7339262u,800,0},
-  {6330407u,803,0},
-  {7339262u,803,0},
-  {6330407u,806,0},
-  {7339262u,806,0},
-  {4193332u,797,0},
-  {4193332u,806,0},
-  {4193332u,803,0},
-  {4193332u,800,0},
-  {6590755u,803,0},
-  {6590755u,806,0},
-  {6590755u,797,0},
-  {6590755u,800,0},
-  {3184679u,809,0},
-  {4193534u,809,0},
-  {4193536u,809,0},
-  {54524967u,809,0},
-  {3184679u,811,0},
-  {4193534u,811,0},
-  {4193536u,811,0},
-  {54524967u,811,0},
-  {3184679u,813,0},
-  {4193534u,813,0},
-  {4193536u,813,0},
-  {54524967u,813,0},
-  {71302147u,809,0},
-  {71302147u,811,0},
-  {71302147u,813,0},
-  {68156419u,809,0},
-  {68156419u,811,0},
-  {68156419u,813,0},
-  {3184679u,815,0},
-  {4193534u,815,0},
-  {4193536u,815,0},
-  {54524967u,815,0},
-  {71302147u,815,0},
-  {68156419u,815,0},
-  {68156419u,828,0},
-  {68156419u,830,0},
-  {68156419u,833,0},
-  {68157439u,828,0},
-  {68156419u,835,0},
-  {68156419u,839,0},
-  {68156419u,841,0},
-  {68156419u,843,0},
-  {68157439u,845,0},
-  {1048575u,0,140},
-  {1099825u,0,0},
-  {68156492u,795,0},
-  {317749u,0,0},
-  {318579u,0,0},
-  {317749u,765,0},
-  {318579u,765,0},
-  {135265395u,0,0},
-  {140508275u,765,0},
-  {1048575u,765,0},
-  {7660856u,0,0},
-  {7572794u,0,0},
-  {7592182u,0,0},
-  {6290747u,0,0},
-  {6290747u,765,0},
-  {1048575u,0,79},
-  {1048575u,0,80},
-  {1048575u,0,81},
-  {1048575u,0,82},
-  {1048575u,0,83},
-  {1048575u,0,84},
-  {1048575u,0,85},
-  {1048575u,0,86},
-  {1048575u,0,87},
-  {4193360u,849,0},
-  {4193360u,851,0},
-  {4193360u,853,0},
-  {4193360u,855,0},
-  {4193360u,857,0},
-  {4193360u,859,0},
-  {4193360u,861,0},
-  {4193360u,863,0},
-  {4193360u,865,0},
-  {4193360u,867,0},
-  {1048575u,0,88},
-  {4193360u,869,0},
-  {1048575u,0,89},
-  {1048575u,0,90},
-  {4193360u,871,0},
-  {1048575u,0,91},
-  {4193360u,873,0},
-  {1048575u,0,92},
-  {1048575u,0,93},
-  {1048575u,0,94},
-  {1048575u,0,95},
-  {4193360u,875,0},
-  {4193360u,877,0},
-  {4193360u,879,0},
-  {4193360u,881,0},
-  {2096208u,883,0},
-  {68157439u,0,16735},
-  {1047868u,0,0},
-  {1047869u,0,0},
-  {1048575u,0,96},
-  {1048575u,0,97},
-  {1048575u,0,98},
-  {1048575u,0,99},
-  {1048575u,0,100},
-  {1048575u,0,101},
-  {4501803u,0,0},
-  {5242156u,0,0},
-  {4193598u,0,0},
-  {4510003u,0,0},
-  {4193536u,0,0},
-  {3184679u,0,0},
-  {4193395u,0,0},
-  {70253571u,0,0},
-  {5242175u,0,0},
-  {1047871u,0,0},
-  {3145024u,809,0},
-  {3145024u,811,0},
-  {3145024u,813,0},
-  {3145024u,815,0},
-  {1048575u,0,102},
-  {1048575u,0,103},
-  {4193534u,0,0},
-  {54524967u,0,0},
-  {4193319u,0,0},
-  {71302147u,0,0},
-  {2151478u,809,0},
-  {2151478u,811,0},
-  {2151478u,813,0},
-  {2151478u,815,0},
-  {2151478u,0,0},
-  {1047873u,0,0},
-  {3145024u,0,0},
-  {1102902u,0,0},
-  {2096448u,0,0},
-  {142850285u,919,0},
-  {1048575u,0,104},
-  {1048575u,0,105},
-  {142850285u,923,0},
-  {142850285u,925,0},
-  {1048575u,0,106},
-  {38796610u,0,0},
-  {34602306u,0,0},
-  {1048575u,0,150},
-  {6290686u,0,0},
-  {6290688u,0,0},
-  {3145027u,0,0},
-  {7378983u,0,0},
-  {8387840u,0,0},
-  {4193604u,0,0},
-  {3350727u,0,0},
-  {4193605u,0,0},
-  {6290758u,927,0},
-  {6627655u,929,0},
-  {5579079u,927,0},
-  {1047881u,927,0},
-  {1387850u,0,0},
-  {1387850u,940,0},
-  {1387850u,942,0},
-  {1387850u,944,0},
-  {68156419u,946,0},
-  {3184679u,946,0},
-  {4193534u,946,0},
-  {4193536u,946,0},
-  {3145027u,946,0},
-  {2396451u,946,0},
-  {3184679u,948,0},
-  {4193534u,948,0},
-  {4193536u,948,0},
-  {3145027u,948,0},
-  {2396451u,948,0},
-  {1387850u,950,0},
-  {1387850u,952,0},
-  {1047884u,0,0},
-  {59767847u,0,0},
-  {4312179u,0,0},
-  {7457907u,0,0},
-  {2190426u,948,0},
-  {1142877u,948,0},
-  {3144798u,948,0},
-  {1048575u,0,107},
-  {1048575u,0,108},
-  {1047885u,0,0},
-  {3144784u,956,0},
-  {3144784u,959,0},
-  {3184679u,962,0},
-  {4193534u,962,0},
-  {4193536u,962,0},
-  {3145027u,962,0},
-  {2396451u,962,0},
-  {2190426u,962,0},
-  {1142877u,962,0},
-  {3144798u,962,0},
-  {1048575u,0,109},
-  {3144784u,964,0},
-  {7339343u,0,0},
-  {1047888u,0,0},
-  {7339342u,0,0},
-  {5242188u,0,0},
-  {5281831u,828,0},
-  {6290686u,828,0},
-  {56622119u,828,0},
-  {3145027u,828,0},
-  {57670695u,828,0},
-  {6330407u,828,0},
-  {58719271u,828,0},
-  {3184679u,828,0},
-  {4193534u,828,0},
-  {4193536u,828,0},
-  {54524967u,828,0},
-  {3145024u,828,0},
-  {4501803u,828,0},
-  {2151478u,828,0},
-  {1387850u,967,0},
-  {1387850u,970,0},
-  {5242158u,0,0},
-  {5242158u,828,0},
-  {4193604u,828,0},
-  {3350727u,828,0},
-  {4193605u,828,0},
-  {1387850u,974,0},
-  {3144784u,977,0},
-  {1048575u,954,110},
-  {3144784u,979,0},
-  {1048575u,954,111},
-  {3144784u,981,0},
-  {1048575u,954,112},
-  {3144784u,983,0},
-  {3144784u,985,0},
-  {1048575u,954,113},
-  {1048575u,988,114},
-  {3144784u,991,0},
-  {1048575u,954,115},
-  {1047873u,809,0},
-  {1047871u,809,0},
-  {1047873u,811,0},
-  {1047871u,811,0},
-  {1047873u,813,0},
-  {1047871u,813,0},
-  {1047873u,815,0},
-  {1047871u,815,0},
-  {4193617u,0,0},
-  {5242194u,0,0},
-  {4508980u,0,0},
-  {52428115u,0,0},
-  {137711731u,0,0},
-  {4193617u,828,0},
-  {1048575u,0,116},
-  {1048575u,0,117},
-  {76546047u,999,0},
-  {76546047u,1001,0},
-  {76546047u,1003,0},
-  {3145045u,0,0},
-  {351574u,835,0},
-  {351574u,839,0},
-  {351574u,841,0},
-  {351574u,843,0},
-  {351574u,845,0},
-  {4545878u,0,0},
-  {4545878u,833,0},
-  {2452826u,833,0},
-  {3145045u,1005,0},
-  {3145045u,1008,0},
-  {3145045u,1011,0},
-  {3145045u,1014,0},
-  {3145045u,1017,0},
-  {1047900u,828,0},
-  {3145045u,828,0},
-  {1047900u,1020,0},
-  {1047900u,1022,0},
-  {7378983u,828,0},
-  {2136103u,828,0},
-  {53476391u,828,0},
-  {4547928u,833,0},
-  {4549978u,833,0},
-  {5594454u,833,0},
-  {2455901u,833,0},
-  {68156419u,1025,0},
-  {7699571u,833,0},
-  {8387936u,833,0},
-  {362849u,0,0},
-  {3499352u,833,0},
-  {3501402u,833,0},
-  {8387699u,833,0},
-  {5242209u,0,0},
-  {5242211u,0,0},
-  {5242212u,0,0},
-  {6290788u,0,0},
-  {2096485u,0,0},
-  {4545878u,1025,0},
-  {3145045u,1027,0},
-  {68156419u,1030,0},
-  {4545878u,1030,0},
-  {3145045u,1032,0},
-  {5596504u,833,0},
-  {3144819u,0,0},
-  {68156419u,1035,0},
-  {68156419u,1037,0},
-  {351574u,1035,0},
-  {3145045u,1039,0},
-  {4547928u,0,0},
-  {4549978u,0,0},
-  {4545878u,1037,0},
-  {3145045u,1042,0},
-  {68156419u,1045,0},
-  {4545878u,1045,0},
-  {3145045u,1047,0},
-  {68156419u,1050,0},
-  {351574u,1050,0},
-  {3145045u,1052,0},
-  {1048575u,1055,0},
-  {351574u,1055,0},
-  {3145045u,1057,0},
-  {68156419u,1060,0},
-  {4545878u,1060,0},
-  {3145045u,1062,0},
-  {5594454u,0,0},
-  {3499352u,0,0},
-  {3513702u,0,0},
-  {3501402u,0,0},
-  {2096488u,0,0},
-  {2096243u,1065,0},
-  {3145045u,1067,0},
-  {68156419u,1071,0},
-  {4545878u,1071,0},
-  {3145045u,1073,0},
-  {1048575u,0,4516},
-  {68156419u,1078,0},
-  {4545878u,1078,0},
-  {3145045u,1080,0},
-  {371049u,1083,0},
-  {373099u,1085,0},
-  {2151539u,0,0},
-  {1047917u,0,0},
-  {4193646u,1057,0},
-  {4193646u,0,0},
-  {376117u,0,0},
-  {4193648u,0,0},
-  {6290801u,0,0},
-  {136369267u,0,0},
-  {1047900u,1087,0},
-  {1047900u,1089,0},
-  {1047900u,1091,0},
-  {1047900u,1093,0},
-  {1047900u,1095,0},
-  {4574578u,1083,0},
-  {1047900u,1097,0},
-  {4193604u,1071,0},
-  {3350727u,1071,0},
-  {4193605u,1071,0},
-  {1047900u,0,0},
-  {68156419u,1102,0},
-  {4545878u,1102,0},
-  {3145045u,1099,0},
-  {1047924u,0,0},
-  {1047925u,0,0},
-  {68157439u,353,0},
-  {1048575u,0,400},
-  {3530102u,1085,0},
-  {386424u,1106,0},
-  {3534202u,1106,0},
-  {3144784u,1005,0},
-  {3144784u,1008,0},
-  {3144784u,1011,0},
-  {3144784u,1027,0},
-  {3144784u,1032,0},
-  {3144784u,1014,0},
-  {3144784u,1017,0},
-  {3144784u,1039,0},
-  {3144784u,1052,0},
-  {3144784u,1055,0},
-  {3144784u,1062,0},
-  {3144784u,1047,0},
-  {3144784u,1042,0},
-  {3144784u,1080,0},
-  {3144784u,1099,0},
-  {3144784u,1073,0},
-  {3144784u,1067,0},
-  {3145084u,1067,0},
-  {68157439u,0,163},
-  {1047933u,0,0},
-  {1048575u,0,118},
-  {1048575u,0,119},
-  {1048575u,0,120},
-  {1048575u,0,121},
-  {1048575u,0,122},
-  {1048575u,0,123},
-  {1048575u,0,124},
-  {1048575u,0,125},
-  {1048575u,0,126},
-  {2096371u,731,0},
-  {1048575u,0,127},
-  {1048575u,0,128},
-  {1048575u,0,129},
-  {1048575u,0,130},
-  {1048575u,0,131},
-  {3145086u,753,0},
-  {1047608u,0,0},
-  {8782207u,1128,0},
-  {1048575u,0,132},
-  {8784257u,1134,0},
-  {9436547u,1128,0},
-  {9436548u,1128,0},
-  {1048575u,0,133},
-  {68157439u,1148,0},
-  {68157439u,1153,0},
-  {3196977u,1158,0},
-  {3193902u,1158,0},
-  {4193328u,1158,0},
-  {1048575u,0,134},
-  {1048575u,0,135},
-  {1048575u,1158,0},
-  {1047942u,1158,0},
-  {34602373u,1158,0},
-  {9437183u,1169,0},
-  {8387801u,1169,0},
-  {41942158u,1169,0},
-  {8613982u,1171,0},
-  {2096243u,0,0},
-  {69260403u,0,0},
-  {1048575u,0,136},
-  {1048575u,0,137},
-  {1048575u,0,138},
-  {68157439u,434,0},
-  {68157439u,1175,0},
-  {76546047u,434,0},
-  {9437183u,434,2},
-  {5242879u,1183,0},
-  {3145095u,1185,0},
-  {3145096u,1185,0},
-  {36699529u,1158,0},
-  {1048575u,0,139},
-  {4389053u,1191,0},
-  {1047732u,1194,0},
-  {1231025u,1194,0},
-  {4272309u,1198,0},
-  {4193356u,1203,0},
-  {68157439u,338,0},
-  {68157439u,349,0},
-  {68157439u,793,0},
-  {68156419u,793,0},
-};
-static const uint16_t level11_gsets[1207] = {0,1,0,1,1,1,2,1,4,1,13,1,14,1,3,1,15,1,16,1,17,1,18,1,5,1,20,1,25,1,23,3,19,21,27,1,21,1,24,2,21,27,2,19,21,2,21,33,1,9,1,6,2,26,28,3,26,28,34,2,12,26,1,7,1,10,1,26,2,26,35,3,12,26,37,3,26,37,38,2,26,34,1,31,2,31,32,3,31,32,39,1,8,2,31,40,1,11,2,31,39,2,30,41,2,47,48,2,47,49,3,47,48,50,2,29,41,2,41,42,2,41,43,1,46,1,55,2,46,54,2,58,59,3,47,48,56,2,59,60,2,61,62,3,23,61,62,1,64,3,58,59,64,3,61,62,66,2,41,52,1,63,1,59,2,61,67,2,68,69,2,68,70,1,68,2,68,71,4,51,61,67,72,5,51,53,61,67,72,4,51,61,62,72,3,51,61,62,3,61,62,73,1,74,2,77,78,2,77,79,3,77,78,80,1,71,1,57,1,75,1,76,2,83,84,2,83,85,1,83,2,83,86,1,86,3,77,78,81,1,82,1,44,1,45,2,88,90,2,88,91,3,51,88,90,4,51,65,88,90,3,88,90,92,5,51,53,65,88,91,4,51,65,88,91,1,87,3,88,90,93,3,23,88,90,1,89,1,92,1,94,1,97,2,97,98,1,95,2,23,97,2,4,97,2,51,97,3,51,53,97,1,99,1,100,1,98,1,101,1,102,1,96,2,104,105,2,104,106,1,104,1,108,2,102,103,1,111,1,112,1,113,2,68,115,1,114,1,116,1,118,1,120,1,122,1,121,1,123,1,125,1,127,2,112,128,1,129,1,130,2,102,109,2,68,132,1,124,1,133,1,134,1,135,1,126,1,136,1,107,1,119,1,137,1,138,1,110,1,117,1,131,1,140,1,141,1,144,1,139,2,145,146,1,145,2,145,147,1,148,2,150,151,1,150,2,150,152,1,153,1,154,1,143,1,142,1,157,1,155,1,149,1,156,1,160,1,161,1,163,2,160,164,1,166,1,159,1,167,1,165,1,168,1,169,1,170,1,171,1,172,1,173,2,172,176,1,162,1,177,1,175,1,178,1,174,1,179,1,180,1,181,1,184,1,187,2,185,187,1,188,1,189,1,186,1,190,1,192,1,191,2,192,193,1,196,1,198,1,200,1,195,1,202,1,203,1,204,1,207,2,207,209,2,207,210,2,207,211,1,212,1,208,1,213,1,214,2,214,215,2,214,216,2,214,217,1,218,1,220,2,220,221,2,220,222,1,222,2,220,223,1,219,1,224,1,226,2,226,227,2,226,228,2,226,229,1,225,1,230,1,231,1,233,1,238,1,239,1,235,1,237,1,242,1,236,4,51,62,72,235,5,51,53,67,72,235,4,51,67,72,235,3,51,62,235,1,234,1,232,1,240,1,241,3,51,62,72,4,51,53,67,72,3,51,67,72,2,51,62,1,244,1,245,1,246,1,247,1,248,1,249,1,250,1,251,1,252,1,253,2,253,254,3,242,253,255,2,242,256,1,257,1,258,2,259,260,2,258,261,2,262,263,1,259,1,262,1,264,1,243,1,265,2,265,266,2,267,268,1,268,1,269,2,270,271,1,270,2,272,273,1,272,2,274,275,1,274,2,276,277,1,276,1,278,2,279,280,2,278,281,2,282,283,1,279,1,282,1,284,2,285,286,1,285,2,284,287,1,288,1,289,2,290,291,1,291,1,292,1,293,1,294,1,295,1,296,1,297,1,298,1,299,1,300,1,301,1,302,1,303,1,304,1,305,1,307,2,307,309,2,307,310,2,307,311,2,307,312,1,313,1,314,1,315,1,316,1,317,1,318,1,319,1,321,2,322,323,1,323,2,323,324,1,324,1,325,1,326,1,327,1,328,1,329,1,330,1,306,1,332,1,331,1,333,1,337,1,334,1,335,1,336,1,338,1,339,1,340,1,341,1,342,1,343,1,344,1,347,1,346,1,345,1,348,1,349,1,350,1,351,1,352,1,358,1,359,1,360,1,353,1,354,1,355,1,356,1,357,1,362,1,363,1,364,1,365,1,366,1,367,1,368,1,369,1,370,1,51,2,51,53,1,371,2,372,373,2,372,374,1,375,1,376,1,377,1,378,1,379,1,380,1,381,1,382,2,378,383,2,379,384,1,385,2,385,387,2,388,389,1,389,1,386,2,389,390,1,391,1,392,1,393,1,394,2,323,395,2,323,382,1,396,1,397,1,398,1,399,1,400,1,401,1,402,2,325,403,2,327,404,2,328,405,2,329,406,2,330,407,1,408,2,324,408,1,409,2,409,410,1,411,2,411,412,1,413,1,414,2,413,415,2,414,416,1,417,2,417,418,1,419,2,419,420,1,421,2,421,422,1,423,2,423,424,1,425,1,426,1,427,1,428,2,428,429,1,430,1,431,2,431,432,1,433,1,434,1,435,1,436,1,437,1,438,1,439,1,440,2,441,442,1,441,1,443,1,444,1,445,1,446,1,447,1,448,1,449,1,450,1,451,1,452,1,453,1,454,1,455,1,456,1,457,1,458,1,459,1,460,1,462,1,463,1,464,1,465,4,242,253,255,466,4,242,253,255,467,1,468,1,469,2,469,470,1,472,1,471,1,473,1,474,1,475,1,476,2,475,478,2,479,480,1,481,1,482,1,479,1,489,2,197,201,1,201,1,206,2,192,490,1,491,3,192,193,492};
-static const int32_t level11_scales[523][2] = {{1000,1000},{1875,1875},{2143,1664},{2143,2143},{1451,1355},{1080,1080},{500,500},{1300,1300},{2530,2520},{2000,2000},{1102,1000},{2000,1407},{1000,690},{2000,2550},{2000,1794},{1876,1876},{3592,3592},{1953,1000},{1980,1000},{2110,3256},{2328,2328},{3689,1000},{1231,5899},{1000,2535},{1770,1770},{2173,2173},{1909,3268},{1231,8189},{2423,2423},{1237,1424},{1231,4488},{2067,3491},{1677,1352},{1060,1060},{1310,1310},{820,820},{1677,1007},{1480,1480},{1790,1777},{30020,30020},{1423,1000},{640,550},{1000,2000},{1685,1673},{1407,1262},{1407,1794},{1700,1688},{3354,3354},{1140,1140},{1710,1694},{1235,1225},{1282,1000},{2150,2134},{1379,1574},{1910,2435},{2300,2284},{2544,1966},{2544,2410},{840,840},{1260,1550},{865,1253},{1253,865},{2075,2060},{1380,540},{2000,1986},{1080,1000},{2468,2468},{1330,1330},{3210,3210},{2160,2160},{1087,1000},{1990,1990},{473,1000},{3460,3460},{538,1000},{1630,1000},{4000,4000},{3176,3176},{3990,3990},{1308,1308},{1338,1160},{7237,2299},{1000,2299},{1138,1000},{2247,2131},{2001,2001},{1099,379},{1228,1000},{612,1000},{2200,2200},{3440,3440},{2590,2590},{730,730},{1000,2983},{1092,1115},{1088,1119},{1094,1113},{520,1000},{1061,1160},{1160,1061},{1098,1109},{520,528},{1111,1096},{520,520},{2144,2144},{1000,787},{1094,1000},{560,560},{490,1000},{1000,1674},{700,1000},{250,1000},{3748,3748},{1160,1000},{675,1000},{1990,1600},{1000,783},{1952,2001},{1000,1712},{1933,1000},{1240,820},{1930,1000},{2001,1366},{1950,1000},{2000,1000},{1103,1011},{1200,1200},{1180,1180},{3581,3581},{883,1000},{1000,883},{939,1000},{1000,939},{1000,918},{918,1000},{4596,4596},{2855,2855},{1000,1800},{4000,1000},{4000,3120},{1600,1600},{1000,3120},{1500,1500},{2001,1713},{1870,1870},{2001,1497},{2150,1071},{778,1000},{4000,2000},{2001,3043},{2001,2605},{2235,2235},{1550,1550},{1887,1887},{3525,3525},{1436,1436},{2695,2695},{1822,469},{1853,1000},{1858,1000},{1838,1000},{1000,926},{926,1000},{1738,1876},{1280,965},{707,1000},{1000,707},{690,1000},{1000,893},{764,1000},{1236,904},{1000,764},{1359,2039},{893,1000},{577,1390},{510,1351},{1000,1488},{670,670},{1868,1190},{757,1981},{769,760},{760,769},{1170,1182},{2980,2229},{833,1208},{1287,1000},{1210,1242},{2540,2119},{1640,1640},{1270,1270},{2540,1394},{1044,1044},{1766,1766},{4537,4111},{890,1917},{1894,1643},{1590,1590},{1375,1375},{2020,2020},{1660,1660},{1048,1000},{1894,2280},{1000,396},{1980,1222},{1980,1272},{2105,1876},{820,1000},{832,1073},{1000,1677},{480,480},{30000,30000},{71687,42848},{18732,38078},{71687,30000},{52688,30000},{52688,37498},{2990,2990},{25331,102368},{2210,1875},{2179,1875},{66172,30000},{66172,35537},{14901,60380},{34821,32894},{75037,37403},{75037,30000},{120000,120000},{85011,120000},{2307,1875},{52212,30000},{50741,30000},{56418,30000},{58642,41852},{2245,1875},{2123,1875},{36773,123524},{98432,120000},{2370,1488},{3075,3075},{3675,3675},{3750,3750},{2770,2770},{96996,53673},{4000,4789},{4000,2694},{1043,1000},{811,1000},{4000,3843},{4000,3572},{966,1000},{1875,1657},{945,1000},{746,1000},{1704,891},{1680,902},{1731,878},{1751,867},{1766,860},{1729,879},{1701,892},{1681,902},{1581,890},{1757,865},{1758,864},{1750,868},{1736,875},{1689,898},{5000,5000},{1569,873},{1502,902},{1635,842},{1686,817},{1721,798},{1632,844},{1559,877},{1503,902},{1447,876},{1687,815},{1690,815},{1671,824},{1558,878},{1636,841},{1521,893},{1440,856},{1327,902},{1547,810},{1626,770},{1681,740},{1541,812},{1425,864},{1328,902},{1319,864},{1624,770},{1628,769},{1598,784},{1418,867},{1545,810},{1358,890},{1317,842},{1152,902},{1466,780},{1572,726},{1645,685},{1458,784},{1296,851},{1154,902},{1196,854},{1566,728},{1572,727},{1532,746},{1284,856},{1459,783},{1197,887},{1680,840},{1558,840},{1502,840},{1632,777},{1579,804},{1536,824},{1422,825},{1607,789},{1609,789},{1327,840},{1485,771},{1399,810},{1292,812},{1541,742},{1152,840},{1267,797},{1153,840},{1166,801},{1611,788},{1598,794},{1589,717},{1544,741},{1398,741},{1481,698},{1485,697},{2269,2269},{1780,1493},{1480,2950},{1780,1572},{1780,1180},{2001,2000},{859,1000},{1875,1724},{2780,2780},{2440,3362},{720,1000},{735,1000},{751,1000},{2001,2348},{2001,1754},{2001,2242},{1780,1650},{1780,1773},{2944,2944},{1998,1000},{2007,1000},{1999,1875},{763,1000},{300,300},{5625,5625},{1995,1875},{2001,1228},{3186,2572},{2981,2981},{1875,5625},{2001,2016},{1731,1875},{1720,1875},{3937,5625},{1743,1875},{1741,1875},{1758,1875},{1742,1875},{1008,1875},{5625,4824},{1747,1875},{1788,1875},{1778,1875},{1817,1875},{1756,1875},{5625,6765},{90000,90000},{3000,1479},{3000,4208},{1410,1410},{1030,1030},{860,860},{5625,1875},{1745,1546},{1744,1545},{1426,1426},{1425,1425},{1721,1547},{1720,1547},{1665,1499},{1665,1498},{1748,1520},{1746,1519},{1765,1557},{1765,1556},{830,830},{810,810},{799,799},{825,825},{824,824},{760,760},{1498,1498},{1519,1519},{1556,1556},{1545,1545},{1547,1547},{6048,5625},{1724,1875},{1745,1875},{1727,1875},{1709,1875},{1762,1875},{2727,2727},{3863,5625},{1460,1460},{30000,2986},{3314,30000},{5864,1000},{4165,1000},{5488,1000},{4896,1000},{2587,914},{2481,871},{2396,893},{3551,988},{2199,834},{4815,923},{2100,724},{4455,889},{149259,90000},{1900,1900},{1650,20000},{1185,1000},{2381,5625},{2325,5625},{880,1000},{836,1209},{1110,1110},{6507,6507},{2010,2010},{4106,5625},{90000,30000},{876,1000},{929,1000},{1988,1000},{2723,1000},{1320,1320},{4630,5625},{4106,4144},{4106,1875},{3235,1479},{97407,90000},{1000,3879},{3450,1000},{2575,1000},{1482,1482},{3160,3160},{980,1960},{1250,1050},{1690,1690},{602,1000},{1000,3379},{1000,7460},{1818,1818},{4031,4031},{60000,60000},{60000,30000},{1163,1000},{1040,1040},{1875,2652},{2105,1875},{1875,2028},{2530,1875},{782,1000},{619,3346},{4425,4425},{1969,1875},{710,710},{910,910},{1260,1000},{1000,1559},{1000,3442},{1875,2104},{901,3442},{1875,2144},{1242,1559},{1243,3442},{676,1559},{1780,1780},{2185,1000},{3920,1000},{3864,1000},{5839,1000},{5877,1000},{1949,1840},{5149,3897},{690,690},{2890,2890},{820,885},{1661,1538},{1660,1538},{1538,1538},{1700,1700},{1580,1580},{1420,1420},{994,994},{1220,1220},{1658,2488},{938,927},{927,938},{800,800},{8000,8000},{1122,1122},{10531,5000},{1711,1875}};
-static const uint8_t level11_trig[10751] = {
-  239,1,3,9,0,0,0,3,10,0,0,0,3,11,0,0,0,3,6,0,0,0,3,7,0,0,0,3,8,0,0,0,4,5,0,0,4,12,0,0,
-  4,168,1,0,0,4,174,1,0,0,4,189,1,0,0,4,194,1,0,0,4,205,1,0,0,4,206,1,0,176,1,2,0,0,192,1,145,8,6,6,
-  0,64,1,16,255,64,0,76,0,204,8,0,1,0,35,0,9,255,0,204,8,0,1,1,30,0,1,255,0,204,8,0,1,8,97,2,0,255,0,204,
-  8,176,1,2,1,0,192,1,145,8,6,6,0,240,1,2,2,0,192,1,145,8,6,6,0,240,1,2,0,0,191,1,217,7,2,6,0,0,2,3,
-  0,192,1,145,8,6,6,0,240,1,2,1,0,191,1,217,7,2,6,0,0,2,15,0,192,1,145,8,6,6,0,240,1,2,2,0,191,1,217,7,
-  2,6,0,0,2,14,0,192,1,145,8,6,6,0,240,1,2,3,0,191,1,217,7,2,6,0,0,2,13,0,192,1,145,8,6,6,0,240,1,2,
-  15,0,191,1,217,7,2,6,0,0,2,16,0,192,1,145,8,6,6,0,240,1,2,14,0,191,1,217,7,2,6,0,0,2,17,0,192,1,145,8,
-  6,6,0,240,1,2,13,0,191,1,217,7,2,6,0,0,2,18,0,192,1,145,8,6,6,0,64,1,12,255,255,255,255,0,244,3,176,1,2,16,
-  0,191,1,217,7,2,6,0,0,2,20,0,192,1,145,8,6,6,0,240,1,2,17,0,191,1,217,7,2,6,0,64,4,5,1,176,1,2,18,0,
-  191,1,217,7,2,6,0,32,4,12,1,32,3,9,255,170,1,0,7,1,0,1,17,255,0,0,0,0,244,3,0,5,1,135,0,0,0,0,200,1,
-  188,5,0,5,8,255,178,0,0,0,200,1,188,5,0,5,25,220,0,0,0,0,200,1,188,5,0,1,16,255,226,0,255,0,0,0,5,19,255,237,
-  156,5,0,200,1,172,2,0,5,19,255,209,0,3,0,200,1,172,2,0,2,21,0,192,7,244,3,6,6,0,0,5,4,255,143,0,1,0,200,1,
-  244,3,0,5,22,226,255,0,1,0,200,1,244,3,0,5,70,255,164,0,0,0,200,1,244,3,0,5,71,201,255,0,0,0,200,1,244,3,0,5,
-  0,215,105,0,0,0,200,1,188,5,0,2,23,0,47,200,1,1,20,0,0,3,6,255,0,0,2,24,0,240,1,244,3,6,5,0,0,5,25,251,
-  255,0,5,0,0,172,2,0,5,25,246,247,242,3,0,0,172,2,0,20,10,176,2,0,6,10,176,1,2,20,0,191,1,217,7,2,6,0,64,5,
-  28,255,237,156,5,0,200,1,172,2,0,5,28,255,209,0,3,0,200,1,172,2,0,2,26,0,176,9,244,3,6,6,0,0,3,7,255,0,0,2,
-  23,0,48,200,1,1,20,0,0,1,16,255,0,70,64,0,210,5,0,3,6,0,154,3,0,1,18,76,0,2,0,0,232,7,0,1,17,255,65,0,
-  0,0,232,7,240,1,3,10,255,170,1,0,5,32,255,237,156,5,0,200,1,172,2,0,5,32,255,209,0,3,0,200,1,172,2,0,2,31,0,176,
-  9,244,3,6,6,0,0,3,8,255,0,0,3,7,0,154,3,240,1,3,8,0,154,3,240,1,3,11,255,170,1,0,8,31,0,0,0,8,30,0,
-  0,224,3,7,0,208,5,3,36,0,0,0,2,23,0,47,200,1,1,20,0,0,10,38,39,168,5,200,10,6,13,0,192,1,5,25,159,0,0,0,
-  0,200,1,188,5,0,1,16,255,226,0,255,0,0,0,5,76,255,128,0,0,0,200,1,244,3,0,5,70,255,164,0,0,0,200,1,188,5,0,5,
-  71,255,250,0,0,0,200,1,188,5,0,5,0,103,0,0,0,0,200,1,188,5,0,5,2,255,228,0,0,0,200,1,216,4,0,5,8,255,0,0,
-  0,0,200,1,160,6,240,1,1,16,255,0,70,64,0,210,5,144,4,2,23,0,48,200,1,1,20,0,224,3,10,45,46,56,188,5,1,20,0,0,
-  1,18,78,0,255,0,1,160,6,0,1,17,216,0,255,255,1,132,7,208,5,21,1,182,1,2,20,244,3,0,21,0,116,0,0,244,3,240,1,5,
-  70,255,164,0,0,0,200,1,188,5,0,5,71,255,250,0,0,0,200,1,188,5,0,5,0,137,0,0,0,0,200,1,176,9,0,5,25,159,0,0,
-  0,0,200,1,188,5,0,1,16,255,196,0,255,0,0,240,1,3,46,0,244,3,0,10,55,0,207,5,244,3,1,20,0,0,2,46,119,0,244,3,
-  1,20,0,0,2,47,48,0,0,0,20,0,0,1,0,66,0,0,255,0,0,0,5,55,255,255,255,1,0,0,100,0,1,16,255,0,70,64,0,210,
-  5,48,5,49,255,255,255,65,0,200,1,144,3,12,0,0,128,2,0,0,5,48,255,255,255,65,0,200,1,144,3,12,48,102,128,2,0,16,2,47,
-  0,95,195,5,1,20,0,0,10,48,57,39,209,4,1,20,0,80,2,47,47,0,0,0,20,0,64,5,63,255,255,255,1,0,0,100,112,2,59,0,
-  72,168,2,1,20,0,208,1,10,45,46,111,232,7,1,20,0,32,5,60,255,255,255,65,0,200,1,144,3,12,0,0,128,2,0,0,5,58,255,255,
-  255,65,0,200,1,144,3,12,48,102,128,2,0,144,3,5,65,255,255,255,1,0,0,100,0,5,2,255,221,0,0,0,100,172,2,0,5,8,255,255,
-  255,64,0,100,172,2,12,20,128,1,166,1,0,0,5,1,255,255,255,64,0,100,172,2,12,20,128,1,154,1,0,0,5,0,255,255,255,64,0,100,
-  172,2,12,24,128,1,166,1,0,0,20,1,104,0,2,61,24,0,0,0,20,0,64,5,72,252,255,112,1,0,200,1,200,1,16,5,67,255,255,255,
-  65,0,200,1,144,3,12,0,0,128,2,0,0,5,62,255,255,255,65,0,200,1,144,3,12,48,102,128,2,0,0,2,59,0,71,168,2,1,20,0,
-  64,2,61,23,0,0,0,20,0,80,5,74,255,255,255,1,0,0,100,64,2,61,48,0,0,0,20,0,16,2,61,0,191,1,219,8,1,20,0,0,
-  10,62,74,40,209,4,1,20,0,16,5,75,255,255,255,1,0,0,100,0,2,76,0,200,6,172,2,3,20,0,112,2,61,47,0,0,0,20,0,240,
-  2,5,70,255,255,255,65,0,200,1,144,3,12,0,0,128,2,0,0,5,69,255,255,255,65,0,200,1,144,3,12,48,102,128,2,0,0,2,68,0,
-  72,168,2,1,20,0,160,1,5,2,255,221,0,0,0,100,172,2,0,5,8,255,255,255,64,0,100,172,2,12,20,128,1,166,1,0,0,5,1,255,
-  255,255,64,0,100,172,2,12,20,128,1,154,1,0,0,5,0,255,255,255,64,0,100,172,2,12,20,128,1,154,1,0,0,20,1,104,0,10,77,0,
-  160,11,172,2,1,20,0,0,2,76,0,191,7,144,3,2,20,0,240,1,5,70,255,164,0,0,0,200,1,188,5,0,5,71,255,250,0,0,0,200,
-  1,188,5,176,2,2,77,0,95,195,5,1,20,0,0,10,78,82,40,209,4,1,20,0,16,5,79,255,255,255,65,0,200,1,144,3,12,0,0,128,
-  2,0,0,5,78,255,255,255,65,0,200,1,144,3,12,48,102,128,2,0,0,2,68,0,71,168,2,1,20,0,16,5,82,255,255,255,1,0,0,100,
-  144,1,2,77,48,0,0,0,20,0,144,1,2,77,47,0,0,0,20,0,128,1,2,77,48,0,0,0,20,0,80,10,45,46,112,232,7,1,20,0,
-  128,1,5,2,255,221,0,0,0,100,200,1,0,5,8,255,255,255,64,0,100,200,1,12,20,128,1,166,1,0,0,5,1,255,255,255,64,0,100,200,
-  1,12,20,128,1,154,1,0,0,5,0,255,255,255,64,0,100,200,1,12,20,128,1,154,1,0,0,20,1,104,80,5,85,255,255,255,65,0,200,1,
-  144,3,12,0,0,128,2,0,0,5,84,255,255,255,65,0,200,1,144,3,12,48,102,128,2,0,0,2,83,0,72,168,2,1,20,0,144,3,2,88,
-  0,95,183,9,1,20,0,0,10,89,94,39,141,8,1,20,0,32,5,65,252,255,112,1,0,200,1,200,1,0,5,91,255,255,255,65,0,200,1,144,
-  3,12,0,0,128,2,0,0,5,90,255,255,255,65,0,200,1,144,3,12,48,102,128,2,0,128,1,5,87,255,255,255,1,0,0,100,32,2,88,47,
-  0,0,0,20,0,48,5,2,255,221,0,0,0,100,172,2,0,5,8,255,255,255,64,0,100,172,2,12,20,128,1,166,1,0,0,5,1,255,255,255,
-  64,0,100,172,2,12,20,128,1,154,1,0,0,5,0,255,255,255,64,0,100,172,2,12,28,128,1,180,1,0,0,2,136,2,0,207,5,216,4,9,
-  20,0,0,21,1,200,1,2,20,188,5,0,21,0,116,0,1,192,5,80,2,83,0,71,168,2,1,20,0,16,2,88,48,0,0,0,20,0,128,1,
-  2,88,47,0,0,0,20,0,16,5,89,255,255,255,1,0,0,100,176,3,20,5,250,1,48,1,18,0,30,223,0,0,232,7,0,1,17,255,0,34,
-  255,0,232,7,0,2,94,0,215,4,216,4,9,20,0,16,5,8,184,0,0,0,0,200,1,160,6,8,5,0,186,0,89,0,0,200,1,248,10,0,
-  5,25,159,0,0,0,0,200,1,188,5,0,1,16,255,196,0,255,0,0,240,1,1,16,255,0,70,64,0,232,7,216,1,2,95,0,215,4,160,6,
-  9,20,0,224,3,2,96,0,215,4,244,3,9,20,0,192,7,5,25,137,0,0,0,172,2,0,188,5,0,1,16,166,127,0,255,0,172,2,224,3,
-  5,0,156,0,53,0,0,200,1,176,9,224,3,1,16,255,0,70,64,0,232,7,208,5,136,191,2,104,0,0,224,1,21,1,166,1,2,20,244,3,
-  16,138,205,2,111,0,40,244,3,1,20,0,0,1,18,0,30,223,0,0,244,3,0,1,17,255,0,34,255,0,244,3,0,21,0,216,1,2,0,160,
-  6,0,21,0,216,1,4,0,144,3,224,3,3,104,0,238,5,0,10,106,0,224,8,176,9,1,20,0,0,2,104,119,0,232,7,1,20,0,224,3,
-  2,117,0,207,5,172,27,0,20,0,0,5,103,253,0,0,0,200,1,0,244,3,0,5,104,242,255,89,0,200,1,0,244,3,0,5,105,240,255,170,
-  0,200,1,0,244,3,0,5,1,255,255,255,64,200,1,0,244,3,12,0,128,1,128,2,0,0,5,8,255,255,255,64,200,1,0,244,3,12,0,128,
-  1,192,1,0,0,5,2,255,242,0,0,200,1,0,244,3,0,5,0,138,0,39,0,200,1,0,176,9,0,5,25,159,0,0,0,200,1,0,188,5,
-  0,1,16,255,196,0,255,0,200,1,128,3,1,16,255,0,70,64,0,232,7,16,2,108,0,191,7,244,3,9,20,0,80,2,131,1,0,207,5,136,
-  39,0,20,0,0,138,205,2,111,0,39,244,3,1,20,0,224,3,17,2,4,1,1,0,80,2,119,0,208,5,172,2,1,20,0,160,1,5,103,253,
-  0,0,0,200,1,0,244,3,0,5,104,242,255,89,0,200,1,0,244,3,0,5,105,240,255,170,0,200,1,0,244,3,0,5,1,255,255,255,64,200,
-  1,0,244,3,12,0,128,1,128,2,0,0,5,8,255,255,255,64,200,1,0,244,3,12,0,128,1,192,1,0,0,5,2,255,242,0,0,200,1,0,
-  244,3,232,2,1,16,255,0,70,64,0,232,7,200,6,21,1,200,1,2,20,188,5,0,21,0,116,0,1,160,6,240,1,5,0,255,255,255,64,200,
-  1,200,1,160,6,12,0,102,192,1,0,160,11,2,139,1,0,215,4,244,3,9,20,0,208,5,2,143,1,0,215,4,216,4,9,20,0,0,6,5,
-  240,1,130,148,3,142,1,0,255,29,222,32,2,25,0,224,3,15,1,2,223,3,1,0,12,2,8,236,3,1,0,12,2,10,234,3,1,208,5,9,
-  103,192,7,4,149,1,0,216,1,21,0,184,2,4,0,244,3,248,3,1,16,144,71,0,255,0,100,0,5,23,255,114,0,0,100,200,1,176,9,0,
-  5,18,93,0,0,0,100,200,1,176,9,0,5,17,255,126,0,0,100,200,1,176,9,0,5,175,1,255,229,0,0,100,200,1,176,9,0,5,2,255,
-  242,0,0,100,200,1,176,9,0,5,0,92,0,55,0,100,200,1,176,9,0,5,136,1,255,255,255,64,100,200,1,176,9,12,0,140,1,140,1,0,
-  0,5,8,255,255,255,64,100,200,1,176,9,12,32,128,1,174,1,0,0,5,21,255,66,0,0,100,200,1,176,9,0,5,20,218,255,87,0,100,200,
-  1,176,9,224,3,2,149,1,0,0,203,12,0,20,3,200,1,200,1,0,2,156,1,0,0,203,12,0,20,3,200,1,200,1,96,1,16,255,0,70,
-  64,0,176,9,192,25,21,0,0,0,1,244,3,208,5,21,1,182,1,2,20,244,3,240,1,130,144,4,208,1,0,0,208,15,0,20,3,200,1,200,
-  1,240,1,1,2,255,0,227,255,0,152,17,0,1,8,88,0,128,255,0,152,17,0,1,23,255,0,198,255,0,152,17,0,1,18,70,0,255,0,0,
-  152,17,0,1,17,141,0,255,255,0,152,17,0,1,0,46,0,44,255,0,152,17,0,1,16,79,0,94,255,0,152,17,144,48,21,1,250,1,2,20,
-  200,1,0,19,20,128,5,19,100,16,21,1,166,1,12,12,232,7,48,7,1,16,1,18,0,0,0,0,0,0,0,1,17,0,151,255,255,0,0,0,
-  1,0,109,0,255,255,0,0,0,1,25,0,21,170,255,1,0,0,1,16,0,134,255,255,1,0,0,1,1,67,0,255,255,0,0,0,1,8,0,154,
-  255,255,0,0,0,1,2,0,255,237,255,0,0,0,1,26,0,226,255,255,1,0,0,1,24,0,167,255,255,1,0,0,1,23,0,88,255,255,0,0,
-  0,1,27,206,255,251,255,0,0,0,1,28,0,88,255,255,0,0,0,1,29,206,255,251,255,0,0,0,1,22,104,0,159,255,0,0,0,5,0,0,
-  92,255,0,0,0,160,6,0,5,22,0,92,255,0,0,0,160,6,16,6,10,64,2,232,1,0,223,3,160,31,0,20,0,0,2,234,1,0,215,4,
-  160,31,0,20,0,0,2,235,1,0,223,3,160,31,0,20,0,0,2,233,1,0,239,1,208,15,0,20,0,208,5,2,239,1,0,192,7,160,31,0,
-  20,0,0,2,237,1,0,208,5,160,31,0,20,0,240,1,2,238,1,0,191,7,160,31,0,20,0,0,2,236,1,0,207,5,160,31,0,20,0,128,
-  15,2,240,1,0,96,238,5,1,20,0,0,5,17,255,145,162,0,200,1,0,188,5,0,5,16,206,255,0,0,200,1,0,244,3,0,5,0,141,0,
-  255,0,200,1,0,244,3,224,3,2,241,1,0,95,238,5,1,20,0,176,9,21,1,134,1,2,20,232,7,224,3,2,240,1,0,95,238,5,1,20,
-  0,224,3,2,241,1,0,96,238,5,1,20,0,0,21,2,0,30,0,244,3,112,5,17,255,145,162,0,250,1,0,188,5,0,5,16,206,255,0,0,
-  250,1,0,244,3,0,5,0,141,0,255,0,250,1,0,244,3,176,10,1,30,255,0,0,204,0,208,15,240,1,2,240,1,0,96,238,5,1,20,0,
-  224,3,2,241,1,0,95,238,5,1,20,0,192,7,5,17,250,43,255,0,200,1,0,188,5,0,5,16,206,255,0,0,200,1,0,244,3,0,5,0,
-  141,0,255,0,200,1,0,244,3,208,5,2,240,1,0,95,238,5,1,20,0,224,3,2,241,1,0,96,238,5,1,20,0,160,11,5,47,255,106,0,
-  0,200,1,0,192,12,0,5,50,255,106,0,0,200,1,0,192,12,240,1,2,240,1,0,96,238,5,1,20,0,0,5,211,1,189,0,228,0,0,200,
-  1,248,10,0,5,25,71,0,116,0,200,1,0,248,10,0,5,16,206,255,0,0,200,1,0,248,10,0,5,0,182,0,255,0,0,200,1,248,10,0,
-  1,0,64,0,128,255,0,0,0,1,31,19,0,47,255,0,208,15,96,5,17,255,145,162,0,200,1,0,188,5,128,3,2,241,1,0,95,238,5,1,
-  20,0,176,9,1,30,255,0,0,0,0,232,7,0,21,2,0,0,0,232,7,0,21,1,182,1,2,20,232,7,224,3,2,240,1,0,95,238,5,1,
-  20,0,240,1,4,243,1,0,240,1,2,241,1,0,96,238,5,1,20,0,144,13,2,240,1,0,96,238,5,1,20,0,240,1,6,5,240,1,2,241,
-  1,0,95,238,5,1,20,0,224,1,5,31,94,0,97,0,200,1,200,1,248,10,0,5,0,255,0,243,0,200,1,200,1,248,10,0,5,43,58,208,
-  255,0,200,1,200,1,248,10,0,5,207,1,255,255,255,0,200,1,200,1,248,10,0,5,208,1,255,237,0,0,200,1,200,1,248,10,240,1,1,0,
-  77,0,149,255,0,0,0,1,31,0,10,36,255,0,0,16,17,1,4,3,2,0,176,9,2,240,1,0,95,238,5,1,20,0,48,5,0,255,72,0,
-  0,0,200,1,136,14,0,5,37,255,254,0,0,0,200,1,136,14,0,5,33,188,66,0,0,0,200,1,136,14,0,5,40,255,206,0,0,0,200,1,
-  136,14,32,1,38,255,227,0,255,0,0,0,1,37,255,0,0,255,1,0,0,1,39,189,0,0,255,0,0,0,1,36,255,84,0,255,0,0,0,1,
-  35,146,0,0,235,0,0,0,1,34,251,255,0,255,0,0,0,1,32,39,0,0,255,0,0,0,1,33,60,0,0,255,0,0,0,1,31,24,0,0,
-  255,0,0,0,1,40,255,111,0,255,0,0,0,1,41,24,0,0,255,0,0,0,1,42,255,59,0,255,0,0,0,1,43,255,119,0,255,1,0,0,
-  4,243,1,1,16,1,0,94,0,0,255,0,0,128,3,2,241,1,0,96,238,5,1,20,0,240,1,9,42,240,1,2,252,1,0,71,244,3,1,20,
-  0,224,7,1,44,0,0,0,0,0,0,128,2,1,30,0,0,0,0,0,0,0,1,44,0,0,0,255,0,232,7,176,3,2,252,1,0,72,244,3,
-  1,20,0,208,5,10,128,2,211,3,39,172,2,1,20,0,0,2,253,1,0,95,172,2,1,20,0,192,7,2,252,1,0,71,244,3,1,20,0,0,
-  10,128,2,211,3,40,244,3,1,20,0,0,2,253,1,0,96,244,3,1,20,0,240,1,10,128,2,212,3,40,172,2,1,20,0,0,2,242,1,0,
-  95,172,2,1,20,0,192,7,1,1,0,0,0,255,0,244,3,0,1,8,0,0,0,255,0,244,3,0,1,2,0,0,0,255,0,244,3,0,1,25,
-  43,0,0,0,1,244,3,0,1,16,43,0,0,0,1,244,3,0,10,128,2,212,3,39,244,3,1,20,0,0,2,242,1,0,96,244,3,1,20,0,
-  224,3,2,252,1,0,72,244,3,1,20,0,0,1,0,32,32,32,255,0,232,7,208,20,21,0,208,4,0,0,208,15,208,17,145,199,5,2,3,3,
-  3,220,1,224,6,1,0,52,0,0,255,0,184,23,0,1,55,29,10,10,255,1,184,23,0,1,56,251,0,0,255,1,184,23,208,5,9,252,1,208,
-  5,21,0,0,0,1,208,15,0,1,46,253,255,0,255,1,172,2,0,1,47,255,72,0,255,0,172,2,0,1,48,255,136,0,255,1,172,2,0,1,
-  49,236,255,0,255,0,172,2,0,1,50,255,66,0,255,0,172,2,0,1,26,255,51,0,255,1,172,2,0,1,27,250,255,0,255,0,172,2,0,1,
-  23,255,70,0,255,0,172,2,0,1,24,236,255,0,255,1,172,2,0,1,17,255,61,0,255,0,172,2,0,1,22,37,25,0,255,0,172,2,192,22,
-  2,169,2,0,96,238,5,1,20,0,0,1,39,24,24,24,255,0,244,3,0,1,38,79,79,79,255,0,244,3,224,3,2,170,2,0,95,238,5,1,
-  20,0,144,13,2,169,2,0,95,238,5,1,20,0,224,3,2,170,2,0,96,238,5,1,20,0,216,3,7,1,8,21,1,120,12,10,244,3,0,1,
-  0,130,0,50,255,0,0,0,1,25,24,0,0,255,0,0,0,1,16,83,0,21,255,0,0,0,5,16,126,0,59,0,250,1,0,232,7,0,3,212,
-  3,0,0,176,9,2,169,2,0,96,238,5,1,20,0,224,3,2,170,2,0,95,238,5,1,20,0,176,9,5,0,154,0,128,0,250,1,0,244,3,
-  0,5,51,177,0,255,0,250,1,0,188,5,0,5,16,156,0,135,0,250,1,0,244,3,224,3,2,169,2,0,95,238,5,1,20,0,224,3,2,170,
-  2,0,96,238,5,1,20,0,144,13,2,169,2,0,96,238,5,1,20,0,0,5,0,181,0,51,0,144,3,0,160,6,0,5,25,105,0,25,0,144,
-  3,0,160,6,0,5,16,206,0,53,0,144,3,0,160,6,224,3,2,170,2,0,95,238,5,1,20,0,144,13,2,169,2,0,95,238,5,1,20,0,
-  224,3,2,170,2,0,96,238,5,1,20,0,224,3,5,0,155,0,129,0,250,1,0,244,3,0,5,51,177,0,255,0,250,1,0,188,5,0,5,16,
-  156,0,135,0,250,1,0,244,3,176,9,2,169,2,0,96,238,5,1,20,0,224,3,2,170,2,0,95,238,5,1,20,0,176,9,5,0,181,0,51,
-  0,144,3,0,160,6,0,5,25,105,0,25,0,144,3,0,160,6,0,5,16,206,0,53,0,144,3,0,160,6,224,3,2,169,2,0,95,238,5,1,
-  20,0,224,3,2,170,2,0,96,238,5,1,20,0,208,5,21,1,160,1,2,20,184,23,192,7,2,169,2,0,96,238,5,1,20,0,224,3,2,170,
-  2,0,95,238,5,1,20,0,240,1,21,2,0,60,0,248,10,160,11,2,169,2,0,95,238,5,1,20,0,224,3,2,170,2,0,96,238,5,1,20,
-  0,0,21,0,220,4,4,0,184,23,0,1,0,110,0,147,255,0,208,15,144,13,2,169,2,0,96,238,5,1,20,0,224,3,2,170,2,0,95,238,
-  5,1,20,0,144,13,2,169,2,0,95,238,5,1,20,0,240,1,21,2,0,0,0,232,7,240,1,2,170,2,0,96,238,5,1,20,0,144,13,2,
-  169,2,0,96,238,5,1,20,0,224,3,2,170,2,0,95,238,5,1,20,0,240,1,1,0,130,0,50,255,0,0,240,1,21,1,140,1,12,10,244,
-  3,0,21,0,222,4,4,0,232,7,240,1,3,221,2,0,0,224,33,5,0,181,0,51,0,144,3,0,160,6,0,5,25,105,0,25,0,144,3,0,
-  160,6,0,5,16,206,0,53,0,144,3,0,160,6,128,30,21,0,224,4,4,0,232,7,224,18,1,0,30,0,46,255,0,184,23,208,50,4,166,2,
-  0,0,21,0,194,4,0,0,208,15,224,3,1,45,0,0,0,255,0,220,11,192,37,3,178,2,178,0,0,4,179,2,0,0,3,225,2,0,0,0,
-  3,226,2,0,0,0,3,227,2,0,0,0,3,228,2,0,0,0,3,229,2,0,0,0,3,239,2,0,0,0,3,241,2,0,0,0,3,242,2,0,
-  0,0,3,204,3,0,0,0,4,243,2,0,0,3,199,3,0,0,0,3,205,3,0,0,0,4,217,3,0,240,1,1,45,0,0,0,0,0,0,0,
-  1,0,47,0,26,255,0,0,0,21,0,196,4,0,0,0,0,21,1,120,0,20,0,0,21,2,0,0,0,0,144,28,2,176,2,0,144,4,144,78,
-  1,20,0,224,3,8,199,3,0,0,224,3,21,0,196,4,0,0,0,0,130,149,7,161,2,0,0,0,0,20,3,10,10,160,11,3,178,2,255,208,
-  15,240,16,17,1,4,1,4,200,1,144,103,21,0,252,4,4,0,148,10,192,7,5,0,255,255,255,64,188,5,0,232,7,12,59,128,1,192,1,0,
-  0,1,54,254,255,0,255,0,188,5,0,1,53,255,255,0,255,0,188,5,208,20,1,54,238,255,0,255,0,232,7,0,1,53,69,255,0,255,0,232,
-  7,192,7,21,0,254,4,4,0,176,9,160,11,136,169,7,247,2,0,0,0,136,166,7,246,2,0,0,240,1,1,0,0,0,0,255,0,208,15,160,
-  11,21,1,140,1,2,20,232,7,144,28,1,0,0,26,26,255,0,200,1,144,28,9,235,2,240,16,21,0,128,5,0,0,232,7,0,5,191,3,255,
-  216,0,1,100,0,232,7,0,5,178,3,255,255,255,65,100,0,232,7,12,159,1,128,1,216,1,0,0,5,0,255,255,255,64,200,1,0,208,15,12,
-  0,128,1,128,2,0,0,5,202,2,255,255,255,64,200,1,0,208,15,12,0,128,1,184,1,0,240,1,9,245,2,160,11,17,1,4,1,11,200,1,
-  192,7,1,0,0,14,31,255,0,184,23,0,4,196,2,0,0,21,0,132,5,0,1,208,15,176,39,21,1,180,1,2,20,208,15,0,21,0,134,5,
-  0,0,208,15,240,31,21,1,120,2,20,0,0,21,0,142,5,0,0,0,240,1,4,195,2,0,0,4,196,2,1,0,1,0,27,0,56,255,0,0,
-  0,8,193,3,0,0,0,8,194,3,224,93,0,128,2,8,191,3,0,0,208,3,2,198,2,0,224,93,160,156,1,1,15,0,0,21,0,142,5,0,
-  0,0,176,9,8,190,3,0,2,40,198,2,58,148,3,224,4,8,190,3,0,2,40,154,3,58,155,3,224,4,8,190,3,0,2,40,200,2,58,149,
-  3,208,3,8,190,3,0,2,40,201,2,58,150,3,224,4,8,190,3,0,2,40,156,3,58,157,3,208,4,8,190,3,0,2,40,202,2,58,151,3,
-  224,3,8,190,3,0,2,40,203,2,58,152,3,176,10,8,188,3,0,0,192,21,17,3,2,1,12,200,1,0,0,239,16,17,4,2,3,0,199,1,
-  0,0,176,99,17,4,2,3,0,199,1,0,0,175,84,21,0,210,4,0,0,208,15,176,21,145,199,5,4,1,3,0,241,1,0,0,208,95,17,3,
-  1,1,5,200,1,0,0,239,219,15,2,177,2,0,223,6,168,70,3,16,0,240,16,8,199,3,0,0,224,18,8,236,2,0,0,192,7,17,2,3,
-  3,6,199,1,0,0,239,91,21,1,160,1,2,20,144,78,192,7,8,202,3,0,0,208,5,17,4,2,3,7,199,1,0,0,144,156,15,8,202,3,
-  0,0,224,18,8,202,3,0,0,192,7,145,253,5,1,4,1,8,200,1,0,0,208,80,17,3,1,1,9,200,1,0,0,239,204,15,8,207,3,0,
-  0,192,22,136,248,8,209,3,0,0,208,5,144,136,9,215,3,1,240,31,17,4,2,1,10,200,1,0,0,240,174,15,9,225,2,240,1,9,214,3,
-  0,3,199,3,0,0,0,3,204,3,0,0,0,4,243,2,1,0,1,25,0,3,8,255,0,0,0,1,16,0,245,230,56,0,0,0,1,51,0,125,
-  88,255,0,0,0,1,52,0,90,80,195,0,0,0,1,1,0,0,0,255,0,0,0,1,8,0,0,0,255,0,0,0,1,2,0,0,0,255,0,0,
-  0,1,0,0,26,26,255,0,0,0,5,0,0,43,87,0,0,0,232,7,0,20,5,244,3,0,21,1,120,12,10,244,3,0,4,166,2,1,0,4,
-  162,2,0,0,4,179,2,1,16,21,0,0,2,1,232,7,208,3,2,182,2,24,72,208,15,0,20,0,0,2,183,2,23,23,208,15,0,20,0,0,
-  2,184,2,24,71,208,15,0,20,0,0,2,181,2,23,24,208,15,0,20,0,164,2,3,163,2,0,200,1,156,5,2,185,2,0,223,15,206,54,0,
-  20,0,0,2,186,2,0,144,13,136,44,0,20,0,0,2,187,2,0,199,12,138,45,0,20,0,0,2,188,2,0,192,13,184,48,0,20,0,160,26,
-  17,4,2,1,0,200,1,0,0,176,84,21,0,130,5,0,1,232,7,176,54,5,0,0,64,71,0,144,3,0,220,11,0,21,0,132,5,0,0,232,
-  7,224,3,5,133,3,255,255,255,65,200,1,0,232,7,12,0,128,1,208,1,0,0,5,141,3,255,216,0,1,100,0,232,7,0,5,188,3,255,255,
-  255,65,100,0,232,7,12,23,128,1,222,1,0,208,5,17,4,2,1,0,200,1,0,0,143,228,21,8,188,3,0,1,180,3,181,3,224,15,8,190,
-  3,0,2,40,158,3,58,160,3,224,4,8,190,3,0,2,40,159,3,58,161,3,192,6,8,190,3,0,2,40,164,3,58,165,3,208,5,8,190,3,
-  0,2,40,162,3,58,163,3,240,7,8,190,3,0,2,40,168,3,58,169,3,192,6,8,190,3,0,2,40,166,3,58,167,3,160,4,8,188,3,0,
-  1,180,3,182,3,192,23,17,4,2,1,13,200,1,0,0,176,244,20,8,188,3,0,1,180,3,183,3,144,52,8,188,3,0,1,180,3,184,3,176,
-  22,17,3,2,1,14,200,1,0,0,143,230,21,8,188,3,0,1,180,3,185,3,192,8,5,0,255,255,255,64,244,3,0,220,11,12,20,128,1,192,
-  1,0,128,1,8,190,3,0,2,40,186,3,58,187,3,192,7,8,190,3,0,2,40,176,3,58,177,3,144,12,5,0,255,255,255,64,244,3,0,220,
-  11,12,22,128,1,192,1,0,240,1,8,190,3,0,2,40,173,3,58,174,3,128,15,5,174,3,255,216,0,1,200,1,0,232,7,0,5,177,3,255,
-  211,0,5,200,1,0,232,7,0,5,177,3,155,71,0,3,200,1,0,232,7,240,1,17,4,2,1,15,200,1,0,0,144,138,21,5,0,255,255,255,
-  64,244,3,0,160,31,12,24,128,1,192,1,0,144,13,5,169,3,255,166,0,1,100,0,160,31,0,5,170,3,255,166,0,1,100,0,160,31,0,21,
-  0,216,6,0,0,160,31,0,21,1,200,1,2,20,160,31,208,3,18,0,0,133,35,27,255,242,0,1,0,200,1,244,3,10,22,34,39,244,3,9,
-  20,0,10,27,36,56,244,3,9,20,0,133,66,34,255,242,0,1,0,200,1,244,3,10,32,41,63,244,3,9,20,0,133,82,39,255,242,0,1,0,
-  200,1,244,3,5,64,11,255,0,1,0,200,1,244,3,5,50,11,255,0,1,0,200,1,244,3,133,140,1,66,11,255,0,1,0,200,1,244,3,5,
-  71,11,255,0,1,0,200,1,244,3,5,86,11,255,0,1,0,200,1,244,3,133,204,1,80,11,255,0,1,0,200,1,244,3,133,245,1,92,11,255,
-  0,1,0,200,1,244,3,8,101,0,0,133,187,2,98,255,241,0,1,0,200,1,244,3,9,42,2,114,0,48,204,1,3,20,0,8,117,0,0,5,
-  113,0,152,255,1,0,200,1,244,3,5,115,0,152,255,1,0,200,1,244,3,2,111,0,191,7,244,3,1,20,0,2,121,48,0,204,1,3,20,0,
-  8,126,0,0,2,129,1,0,47,204,1,3,20,0,8,131,1,0,0,5,120,0,152,255,1,0,200,1,244,3,5,127,0,152,255,1,0,200,1,244,
-  3,5,132,1,0,152,255,1,0,200,1,244,3,1,19,114,165,0,255,0,0,1,20,155,255,0,255,0,0,1,21,40,199,0,255,0,0,1,0,102,
-  0,0,255,0,232,7,1,22,57,0,0,255,0,232,7,1,17,166,0,255,255,0,232,7,1,18,0,30,223,0,0,232,7,130,148,3,142,1,0,191,
-  22,222,32,2,20,0,133,150,3,140,1,255,220,9,1,0,200,1,244,3,8,145,1,0,0,8,154,1,0,0,8,160,1,0,0,8,163,1,0,0,
-  8,164,1,0,0,8,172,1,0,0,8,176,1,0,0,8,185,1,0,0,8,191,1,0,0,133,144,4,211,1,255,118,0,1,0,100,144,3,8,213,
-  1,0,0,133,144,4,210,1,255,238,0,1,0,100,144,3,5,209,1,255,255,255,65,200,1,0,244,3,12,0,166,1,230,1,0,133,161,4,217,1,
-  255,118,0,1,0,100,144,3,5,216,1,255,255,255,65,200,1,0,244,3,12,0,166,1,230,1,0,133,161,4,215,1,255,242,0,1,0,100,144,3,
-  8,219,1,0,0,133,174,4,223,1,255,118,0,1,0,100,144,3,133,174,4,221,1,255,246,0,1,0,100,144,3,8,225,1,0,0,5,222,1,255,
-  255,255,65,200,1,0,244,3,12,0,166,1,230,1,0,133,191,4,229,1,255,118,0,1,0,100,144,3,133,191,4,228,1,255,240,0,1,0,100,144,
-  3,8,231,1,0,0,5,227,1,255,255,255,65,200,1,0,244,3,12,0,166,1,230,1,0,21,2,60,60,0,200,1,5,17,255,145,162,0,200,1,
-  0,188,5,5,17,255,145,162,0,250,1,0,138,5,5,17,250,43,255,0,172,2,0,188,5,5,17,255,145,162,0,200,1,0,188,5,5,244,1,255,
-  170,0,1,0,200,1,244,3,5,246,1,255,170,0,1,0,200,1,244,3,5,247,1,255,170,0,1,0,200,1,244,3,5,248,1,255,170,0,1,0,
-  200,1,244,3,5,249,1,255,170,0,1,0,200,1,244,3,5,250,1,255,170,0,1,0,200,1,244,3,5,245,1,255,218,0,1,0,200,1,244,3,
-  133,156,5,254,1,255,218,0,1,0,200,1,244,3,133,218,4,128,2,255,218,0,1,0,200,1,244,3,5,129,2,255,218,0,1,0,200,1,244,3,
-  4,141,2,0,4,180,2,0,5,203,2,255,229,0,1,0,0,232,7,5,204,2,255,229,0,1,0,0,232,7,5,205,2,255,229,0,1,0,0,232,
-  7,5,206,2,255,229,0,1,0,0,232,7,5,207,2,255,229,0,1,0,0,232,7,5,208,2,255,229,0,1,0,0,232,7,5,209,2,255,229,0,
-  1,0,0,232,7,5,210,2,255,229,0,1,0,0,232,7,5,211,2,255,229,0,1,0,0,232,7,5,212,2,255,229,0,1,0,0,232,7,5,213,
-  2,255,229,0,1,0,0,232,7,5,214,2,255,229,0,1,0,0,232,7,5,215,2,255,229,0,1,0,0,232,7,5,216,2,255,229,0,1,0,0,
-  232,7,5,217,2,255,229,0,1,0,0,232,7,5,218,2,255,229,0,1,0,0,232,7,5,219,2,255,229,0,1,0,0,232,7,8,233,2,0,0,
-  8,233,2,0,2,231,2,226,2,226,2,227,2,8,233,2,0,2,231,2,227,2,226,2,228,2,8,233,2,0,2,231,2,228,2,226,2,229,2,8,
-  233,2,0,2,231,2,229,2,226,2,230,2,8,233,2,0,2,231,2,230,2,226,2,234,2,8,237,2,0,0,8,238,2,0,0,8,241,2,0,0,
-  8,241,2,0,1,240,2,242,2,8,241,2,0,1,240,2,243,2,8,255,2,0,0,8,255,2,0,2,251,2,252,2,128,3,129,3,8,131,3,0,
-  2,251,2,252,2,128,3,129,3,133,186,7,135,3,0,255,89,1,0,0,232,7,133,186,7,136,3,0,255,89,1,0,0,232,7,133,186,7,137,3,
-  0,255,89,1,0,0,232,7,133,186,7,138,3,0,255,89,1,0,0,232,7,133,220,7,139,3,0,255,89,1,0,0,232,7,133,186,7,140,3,0,
-  255,89,1,0,0,232,7,8,143,3,0,0,8,144,3,0,2,251,2,252,2,128,3,129,3,8,195,3,0,2,40,135,2,58,136,2,8,195,3,0,
-  2,40,132,2,58,133,2,8,195,3,0,2,40,141,2,58,140,2,8,196,3,0,2,40,131,2,58,134,2,8,196,3,0,2,40,138,2,58,139,2,
-  8,197,3,0,2,40,143,2,58,144,2,8,197,3,0,2,40,147,2,58,148,2,8,198,3,0,2,40,145,2,58,146,2,8,198,3,0,2,40,149,
-  2,58,150,2,8,196,3,0,2,40,155,2,58,156,2,8,196,3,0,2,40,152,2,58,153,2,8,196,3,0,2,40,158,2,58,159,2,8,195,3,
-  0,2,40,151,2,58,154,2,8,195,3,0,2,40,157,2,58,160,2,8,201,3,0,0,9,239,2,3,212,3,255,172,2,3,171,2,0,172,2,8,
-  220,3,0,0,8,220,3,0,0,8,220,3,0,0,8,197,1,0,0,4,172,2,0,136,101,43,0,0,136,101,44,110,0,136,101,31,132,2,0,130,
-  114,51,0,47,244,3,1,20,0,136,114,53,162,4,0,130,117,53,0,47,100,1,20,0,130,120,53,0,48,100,1,20,0,130,157,1,51,0,48,244,
-  3,1,20,0,136,157,1,30,162,4,0,136,185,2,102,250,1,0,136,185,2,100,0,0,130,183,2,97,0,71,200,1,1,20,0,130,189,2,97,0,
-  72,244,3,1,20,0,136,205,2,110,194,4,0,130,205,2,110,0,47,244,3,1,20,0,130,242,2,110,0,48,244,3,1,20,0,136,242,2,104,194,
-  4,0,136,231,2,124,50,0,130,231,2,112,24,0,0,0,20,0,130,229,2,118,24,0,0,0,20,0,136,229,2,127,30,0,130,229,2,112,23,0,
-  0,0,20,0,136,229,2,125,30,0,133,240,2,0,121,0,0,0,172,2,0,176,9,129,240,2,16,255,142,0,255,0,172,2,133,240,2,25,125,0,
-  0,0,172,2,0,188,5,130,128,3,118,23,0,0,0,20,0,136,128,3,135,1,30,0,136,248,2,134,1,100,0,130,248,2,112,24,0,0,0,20,
-  0,136,128,3,137,1,40,0,130,128,3,122,24,0,0,0,20,0,136,252,2,136,1,100,0,130,252,2,118,24,0,0,0,20,0,130,250,2,112,0,
-  175,9,244,3,2,17,0,130,250,2,128,1,0,175,9,244,3,2,17,0,136,130,3,138,1,30,0,130,130,3,122,23,0,0,0,20,0,130,254,2,
-  118,0,175,9,244,3,2,17,0,136,136,3,139,1,100,0,130,136,3,122,24,0,0,0,20,0,130,138,3,122,0,175,9,244,3,2,17,0,133,165,
-  9,226,3,0,255,6,1,0,0,232,7,130,165,9,225,3,0,160,11,244,3,1,20,0,133,177,9,236,3,4,255,0,1,0,0,232,7,131,177,9,
-  234,3,0,200,1,133,165,9,193,1,0,255,6,1,0,0,232,7,133,150,3,146,1,255,220,9,1,0,100,244,3,133,150,3,147,1,255,255,255,65,
-  0,100,244,3,12,46,128,1,148,1,0,130,150,3,145,1,0,71,150,1,1,20,0,136,150,3,149,1,154,1,0,130,162,3,145,1,0,72,144,3,
-  1,20,0,130,172,3,150,1,0,71,150,1,1,20,0,136,172,3,155,1,154,1,0,133,172,3,151,1,255,255,255,65,0,100,244,3,12,46,128,1,
-  148,1,0,133,172,3,152,1,255,220,9,1,0,100,244,3,130,174,3,150,1,0,72,144,3,1,20,0,2,158,1,0,71,150,1,1,20,0,2,158,
-  1,0,72,144,3,1,20,0,136,199,3,168,1,120,0,130,201,3,157,1,0,119,144,3,1,20,0,130,199,3,157,1,0,120,120,3,20,0,130,149,
-  9,142,1,0,0,244,3,9,20,4,221,3,222,3,2,137,153,9,142,1,141,163,9,2,2,1,133,192,3,164,1,255,255,255,65,0,200,1,144,3,
-  12,140,1,128,1,128,1,0,136,192,3,166,1,120,0,130,192,3,160,1,0,120,120,3,20,0,130,203,3,160,1,0,119,144,3,1,20,0,130,192,
-  3,168,1,0,152,3,150,1,12,20,0,131,192,3,168,1,0,244,3,133,192,3,168,1,255,243,0,1,0,50,172,2,132,192,3,168,1,1,130,156,
-  9,142,1,0,240,1,244,3,3,20,0,136,192,3,224,3,0,0,133,192,3,227,3,20,184,0,1,0,144,78,0,130,220,3,161,1,0,120,120,3,
-  20,0,130,222,3,161,1,0,119,144,3,1,20,0,136,220,3,178,1,120,0,130,211,3,172,1,0,120,120,3,20,0,130,215,3,172,1,0,119,144,
-  3,1,20,0,136,211,3,174,1,120,0,133,211,3,176,1,255,255,255,65,0,200,1,144,3,12,140,1,128,1,128,1,0,133,211,3,228,3,20,184,
-  0,1,0,144,78,0,133,211,3,174,1,255,243,0,1,0,50,172,2,130,211,3,174,1,0,152,3,150,1,12,20,0,131,211,3,174,1,0,244,3,
-  132,211,3,174,1,1,136,211,3,224,3,0,0,130,224,3,169,1,0,120,120,3,20,0,130,226,3,169,1,0,119,144,3,1,20,0,136,224,3,179,
-  1,120,0,133,236,3,185,1,255,255,255,65,0,200,1,144,3,12,140,1,128,1,128,1,0,130,243,3,187,1,0,119,144,3,1,20,0,130,236,3,
-  187,1,0,120,120,3,20,0,136,236,3,189,1,120,0,133,236,3,230,3,20,184,0,1,0,144,78,0,130,236,3,189,1,0,152,3,150,1,12,20,
-  0,131,236,3,189,1,0,244,3,133,236,3,189,1,255,243,0,1,0,50,172,2,132,236,3,189,1,1,136,236,3,224,3,0,0,136,232,3,182,1,
-  120,0,130,232,3,182,1,0,120,120,3,20,0,130,234,3,182,1,0,119,144,3,1,20,0,133,232,3,183,1,255,255,255,65,0,200,1,144,3,12,
-  140,1,128,1,128,1,0,133,232,3,229,3,20,184,0,1,0,144,78,0,131,232,3,194,1,0,244,3,130,232,3,194,1,0,152,3,150,1,12,20,
-  0,133,232,3,194,1,255,243,0,1,0,50,172,2,132,232,3,194,1,1,136,232,3,224,3,0,0,141,249,3,2,2,1,136,249,3,192,1,120,0,
-  130,253,3,192,1,0,119,144,3,1,20,0,130,249,3,192,1,0,120,120,3,20,0,133,132,4,199,1,255,255,255,65,0,200,1,144,3,12,140,1,
-  128,1,128,1,0,130,140,4,202,1,0,119,144,3,1,20,0,130,132,4,202,1,0,120,120,3,20,0,136,132,4,204,1,120,0,133,132,4,232,3,
-  20,184,0,1,0,144,78,0,130,132,4,205,1,0,152,3,150,1,12,20,0,131,132,4,205,1,0,244,3,133,132,4,205,1,255,243,0,1,0,50,
-  172,2,132,132,4,205,1,1,136,132,4,224,3,0,0,133,130,4,197,1,255,255,255,65,0,200,1,144,3,12,140,1,128,1,128,1,0,136,130,4,
-  201,1,120,0,130,130,4,201,1,0,120,120,3,20,0,130,134,4,201,1,0,119,144,3,1,20,0,133,130,4,231,3,20,184,0,1,0,144,78,0,
-  136,130,4,224,3,0,0,130,130,4,206,1,0,152,3,150,1,12,20,0,131,130,4,206,1,0,244,3,132,130,4,206,1,1,133,130,4,206,1,255,
-  243,0,1,0,50,172,2,136,155,4,214,1,212,1,0,130,155,4,207,1,0,72,200,1,1,20,0,130,159,4,207,1,0,71,244,3,1,20,0,130,
-  172,4,214,1,0,72,200,1,1,20,0,136,172,4,220,1,212,1,0,130,187,4,214,1,0,71,244,3,1,20,0,136,189,4,226,1,212,1,0,130,
-  189,4,220,1,0,71,200,1,1,20,0,130,202,4,220,1,0,72,244,3,1,20,0,136,204,4,232,1,212,1,0,130,204,4,226,1,0,72,200,1,
-  1,20,0,130,206,4,226,1,0,71,244,3,1,20,0,130,222,8,39,0,95,244,3,3,18,0,133,222,8,57,255,166,0,1,0,200,1,244,3,130,
-  224,8,39,0,96,244,3,3,18,0,133,224,8,57,255,166,0,1,0,200,1,244,3,130,226,8,39,95,0,244,3,3,18,0,133,226,8,57,255,166,
-  0,1,0,200,1,244,3,130,228,8,39,96,0,244,3,3,18,0,133,228,8,57,255,166,0,1,0,200,1,244,3,130,222,8,39,0,96,244,3,1,
-  20,0,130,224,8,39,0,95,244,3,1,20,0,130,226,8,39,96,0,244,3,1,20,0,130,228,8,39,95,0,244,3,1,20,0,133,247,6,220,2,
-  41,0,31,1,172,2,200,1,232,7,131,247,6,221,2,255,200,1,136,249,6,223,2,0,0,131,247,6,221,2,0,160,6,132,141,9,217,3,1,136,
-  141,9,219,3,0,0,133,138,9,199,3,255,144,0,1,0,0,244,3,141,138,9,1,2,1,142,138,9,1,2,176,9,216,3,0,137,143,9,214,3,
-  136,143,9,217,3,0,0,133,248,8,0,255,255,255,64,100,0,172,2,12,0,110,230,1,0,133,255,6,230,2,0,255,11,1,0,0,232,7,136,129,
-  7,232,2,0,0,131,255,6,225,2,255,244,3,133,248,8,0,255,255,255,64,100,0,172,2,12,0,110,230,1,0,133,230,8,0,255,255,255,64,244,
-  3,0,232,7,12,0,128,1,192,1,0,133,236,8,0,255,255,255,64,244,3,0,232,7,12,0,128,1,230,1,0,133,244,8,0,255,255,255,64,144,
-  3,0,232,7,12,0,116,128,2,0,133,246,8,0,255,255,255,64,200,1,0,216,4,12,0,102,128,2,0,133,250,8,0,255,255,255,64,100,0,144,
-  3,12,0,102,128,2,0,131,255,6,230,2,0,244,3,133,248,8,0,255,255,255,64,100,0,172,2,12,0,110,230,1,0,133,248,8,0,255,255,255,
-  64,100,0,172,2,12,0,110,230,1,0,133,153,7,239,2,255,255,255,1,0,0,200,1,131,153,7,239,2,255,0,131,234,8,199,3,255,200,1,136,
-  234,8,203,3,0,0,131,234,8,202,3,0,144,3,136,234,8,204,3,0,0,131,234,8,204,3,255,0,139,234,8,205,3,200,3,200,1,200,1,152,
-  117,131,153,7,239,2,0,188,5,149,248,8,1,200,1,2,20,184,23,133,248,8,0,255,255,255,64,0,0,100,12,0,102,128,2,0,133,248,8,0,
-  255,255,255,64,0,0,100,12,0,102,128,2,0,133,248,8,0,255,255,255,64,0,0,100,12,0,102,128,2,0,133,248,8,0,255,255,255,64,0,0,
-  100,12,0,102,128,2,0,133,248,8,0,255,255,255,64,0,0,100,12,0,102,128,2,0,133,248,8,0,255,255,255,64,0,0,100,12,0,102,128,2,
-  0,129,248,8,0,0,0,0,255,0,232,7,130,166,7,51,0,47,244,3,1,20,0,130,169,7,53,0,47,100,1,20,0,130,169,7,53,0,48,100,
-  1,20,0,136,169,7,247,2,0,0,130,166,7,51,0,48,244,3,1,20,0,136,166,7,246,2,0,0,130,186,7,250,2,0,71,244,3,3,20,0,
-  133,186,7,255,2,0,255,89,1,0,0,232,7,130,204,7,129,3,72,0,244,3,3,20,0,133,204,7,131,3,0,255,89,1,0,0,232,7,130,227,
-  7,247,2,48,47,244,3,3,20,0,130,227,7,253,2,48,23,244,3,3,20,0,130,227,7,248,2,23,47,244,3,3,20,0,130,229,7,249,2,48,
-  23,244,3,3,20,0,138,204,7,133,3,145,3,32,244,3,3,20,0,138,204,7,135,3,146,3,32,244,3,3,20,0,138,229,7,253,2,147,3,31,
-  244,3,3,20,0,130,186,7,250,2,0,72,232,7,1,20,0,130,204,7,129,3,71,0,232,7,1,20,0,130,227,7,247,2,47,48,232,7,1,20,
-  0,130,227,7,253,2,47,24,232,7,1,20,0,130,227,7,248,2,24,48,232,7,1,20,0,130,229,7,249,2,47,24,232,7,1,20,0,138,204,7,
-  133,3,145,3,31,232,7,1,20,0,138,204,7,135,3,146,3,31,232,7,1,20,0,138,229,7,253,2,147,3,32,232,7,1,20,0,133,218,8,0,
-  255,255,255,64,200,1,0,188,5,12,16,128,1,166,1,0,136,218,8,193,3,170,7,0,137,220,8,193,3,130,212,8,39,0,71,244,3,3,20,0,
-  133,212,8,57,255,166,0,1,100,0,232,7,130,212,8,39,0,72,232,7,1,20,0,133,208,8,179,3,255,185,0,1,0,0,232,7,136,208,8,180,
-  3,0,0,133,214,8,152,3,255,159,0,1,0,0,232,7,136,214,8,153,3,0,0,131,208,8,179,3,178,232,7,
-};
-static const uint16_t level11_touch[141] = {6741,6753,6762,6771,6783,6792,6804,6815,6826,6839,6850,6861,6874,6887,6891,6904,6906,6915,6919,6930,6941,6951,6960,6964,6974,6979,6990,7001,7013,7021,7029,7037,7046,7055,7064,7073,7086,7100,7105,7110,7115,7120,7125,7130,7135,7140,7145,7158,7163,7176,7195,7208,7227,7240,7245,7258,7271,7276,7295,7308,7321,7326,7345,7352,7363,7374,7385,7396,7408,7420,7432,7444,7456,7468,7480,7494,7508,7520,7524,7528,7539,7550,7561,7572,7583,7594,7605,7616,7627,7638,7649,7660,7671,7682,7693,7704,7715,7720,7733,7746,7759,7772,7785,7790,7795,7800,7809,7818,7823,7836,7849,7862,7875,7888,7901,7914,7927,7932,7945,7956,7967,7978,7989,8000,8011,8022,8033,8044,8055,8066,8077,8088,8099,8104,8107,8113,8119,8124,8129,8134,8139};
-static const uint32_t level11_chan_off[16] = {0u,5831u,5842u,5853u,5876u,5887u,5926u,5954u,5982u,5993u,6029u,6289u,6384u,6496u,6530u,6672u};
-static const uint8_t level11_chan_frame[16] = {0,1,3,1,3,2,1,0,3,2,0,3,2,0,2,0};
-static const uint16_t level11_spawn_first[494] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,5,5,5,5,5,5,5,5,5,5,5,14,15,16,16,16,16,16,16,16,16,16,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,21,22,26,28,28,28,28,28,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30,34,36,38,42,42,42,42,45,45,45,47,49,50,52,54,55,55,55,55,55,55,59,59,59,59,60,60,60,60,60,64,65,65,65,65,65,67,67,67,69,78,78,79,79,80,80,80,80,89,89,90,90,92,92,93,94,94,103,104,104,104,113,113,113,113,114,114,117,118,118,118,118,118,127,127,136,136,137,137,137,138,138,138,138,138,138,138,138,138,140,141,141,141,141,141,143,144,144,144,144,144,146,147,147,147,147,147,149,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,150,153,154,154,154,154,154,154,154,154,157,158,158,158,158,158,158,158,158,161,161,161,161,167,170,173,173,173,173,173,173,173,173,176,176,176,176,183,183,183,183,183,183,183,183,183,183,183,183,189,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,193,196,196,199,201,201,203,204,207,210,213,216,217,217,223,224,224,224,224,224,225,226,238,239,239,239,239,242,245,247,249,249,249,251,251,251,252,254,255,255,255,255,255,255,255,255,255,258,258,260,260};
-static const uint16_t level11_spawn_list[260] = {8159,8169,8143,8148,8153,8143,8148,8153,8159,8169,8175,8184,8193,8204,8175,8184,8193,8204,8224,8211,8218,8235,8246,8253,8264,8275,8246,8253,8264,8275,8298,8308,8314,8324,8384,8391,8282,8288,8367,8377,8401,8408,8330,8343,8354,8435,8447,8418,8425,8477,8460,8467,8489,8496,8506,8578,8591,8611,8623,8631,8643,8655,8663,8683,8696,8728,8747,8911,8934,8786,8808,8815,8838,8851,8859,8872,8891,8898,8826,8735,8941,8964,8971,8993,9006,9019,9032,9040,9046,8952,9053,9076,8922,9064,9195,9202,9225,9247,9260,9268,9281,9294,9300,9213,9083,9117,9128,9135,9148,9161,9169,9182,9188,9105,9307,9313,9332,9320,9455,9477,9484,9507,9520,9527,9540,9548,9554,9343,9377,9388,9395,9408,9421,9429,9442,9448,9495,9365,9567,9575,9587,9599,9611,9619,9631,9639,9651,9663,9671,9683,9835,9850,9865,9858,9945,9965,10087,9958,10131,10144,10201,10332,10343,10353,10363,10370,10381,10332,10370,10381,10343,10353,10363,10388,10400,10525,10413,10425,10486,10499,10537,10597,10610,10438,10450,10462,10549,10561,10573,10474,10512,10585,10623,10703,10716,10743,10669,10680,10692,10723,10736,10636,10656,10664,9695,9706,9791,9719,9730,9802,9743,9754,9813,9767,9778,9824,9991,10151,10159,10166,10174,10181,10188,10011,10031,10050,9927,9973,10095,10113,10209,10219,10236,10253,10270,10287,10304,10321,10069,9886,9899,9905,9886,9899,9905,9915,9920,9873,9879,8758,8775,8775,8780,8878,8878,8518,8531,8565,8544,8557};
-static const int16_t level11_anchors[493][2] = {{15,-15},{45,-15},{75,-15},{105,-15},{-15,10},{32767,32767},{525,111},{645,108},{765,330},{529,41},{649,39},{769,35},{644,5},{195,-15},{165,-15},{135,-15},{225,-15},{255,-15},{285,-15},{497,-10},{313,-25},{497,-10},{32767,32767},{435,13},{441,-9},{377,45},{645,-48},{497,-10},{645,-48},{32767,32767},{32767,32767},{739,-167},{765,-108},{32767,32767},{645,-10},{32767,32767},{32767,32767},{644,4},{32767,32767},{765,-70},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{1319,182},{32767,32767},{975,105},{975,45},{975,45},{975,45},{966,70},{1139,55},{32767,32767},{1139,55},{975,105},{971,1},{32767,32767},{32767,32767},{1065,225},{1065,225},{1065,225},{1076,100},{1076,100},{1041,3},{1079,195},{1485,55},{1086,130},{1095,105},{1185,285},{1185,285},{1185,225},{1199,200},{1139,55},{32767,32767},{1132,43},{1215,15},{1227,25},{1252,28},{1252,28},{1275,45},{1266,70},{32767,32767},{1335,0},{1365,285},{1365,285},{1395,225},{1395,195},{1435,11},{1485,105},{1542,1},{1485,105},{1485,105},{1485,130},{32767,32767},{1747,339},{1859,498},{1995,333},{1875,10},{1836,100},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{2085,165},{2085,165},{2085,165},{32767,32767},{2100,333},{32767,32767},{2557,59},{2168,112},{2196,126},{2186,130},{2181,235},{2134,230},{32767,32767},{2575,273},{2225,134},{2413,-31},{2270,151},{2275,179},{2265,134},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{2256,70},{2235,236},{2297,65},{32767,32767},{2683,273},{2309,230},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{2891,294},{2761,70},{32767,32767},{3149,284},{3008,323},{32767,32767},{2968,126},{2968,126},{2955,105},{32767,32767},{3195,165},{3045,165},{3045,165},{3032,186},{32767,32767},{32767,32767},{32767,32767},{3195,165},{3196,345},{32767,32767},{32767,32767},{3263,225},{3401,196},{32767,32767},{32767,32767},{3263,195},{32767,32767},{3292,65},{32767,32767},{32767,32767},{3538,375},{3382,65},{32767,32767},{3331,405},{32767,32767},{32767,32767},{32767,32767},{3331,195},{32767,32767},{32767,32767},{3472,65},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{3469,195},{3532,65},{3469,225},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{3675,255},{3675,195},{32767,32767},{3652,65},{32767,32767},{3607,195},{32767,32767},{32767,32767},{32767,32767},{3607,195},{3602,175},{32767,32767},{3712,65},{32767,32767},{32767,32767},{3797,280},{3735,165},{3785,256},{3795,241},{3721,225},{32767,32767},{32767,32767},{3975,255},{3975,241},{3990,270},{3987,225},{32767,32767},{32767,32767},{4095,179},{4095,193},{4059,59},{4079,207},{32767,32767},{32767,32767},{4161,375},{4161,375},{4185,241},{4144,225},{32767,32767},{32767,32767},{5473,416},{4901,289},{5355,689},{5145,304},{5254,-50},{5188,23},{4962,296},{5032,200},{5668,120},{5690,352},{7364,761},{32767,32767},{6770,311},{6876,760},{6890,509},{6890,611},{6800,341},{6830,371},{6860,401},{32767,32767},{7279,713},{7326,785},{7326,820},{7364,761},{7471,790},{7592,950},{7836,985},{7981,879},{7981,879},{7861,949},{7826,879},{7826,879},{1531,500},{8016,985},{8041,949},{8161,880},{8161,880},{32767,32767},{8230,659},{8230,659},{8300,569},{8300,569},{8230,479},{8230,479},{8298,389},{8298,389},{8556,245},{8701,351},{8701,351},{8581,281},{8546,351},{8546,351},{8736,245},{8971,321},{8971,321},{8778,280},{32767,32767},{32767,32767},{16155,525},{16155,525},{15555,1815},{15765,555},{15765,555},{32767,32767},{32767,32767},{9370,184},{9458,291},{10707,455},{12750,580},{32767,32767},{32767,32767},{32767,32767},{15975,335},{16005,865},{32767,32767},{16155,495},{32767,32767},{16066,493},{16094,497},{16036,497},{16096,673},{16545,525},{16845,285},{17145,585},{17445,285},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{21195,1665},{21315,1845},{21645,1635},{32767,32767},{21795,1635},{21855,1605},{22005,1605},{22065,1575},{11491,299},{11541,485},{11681,389},{11865,479},{12039,568},{12239,656},{11787,573},{11957,663},{12165,754},{12451,628},{12571,688},{12661,658},{13667,805},{13877,806},{13995,962},{14237,962},{14335,808},{13204,546},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{15765,585},{32767,32767},{15765,585},{15765,585},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{19156,712},{19503,584},{19665,579},{19455,585},{19845,645},{19893,648},{19229,517},{32767,32767},{19457,597},{19877,657},{20115,1515},{32767,32767},{20097,1571},{20118,1335},{20118,1335},{20144,1546},{20129,627},{20071,1151},{20101,1301},{20695,1681},{21187,1681},{19635,599},{32767,32767},{32767,32767},{32767,32767},{20118,1338},{20312,1338},{20150,550},{21630,1658},{21780,1658},{21840,1628},{21990,1628},{22050,1598},{21500,1815},{21719,1605},{21691,1630},{21945,1575},{21901,1600},{22053,1905},{21963,1875},{22068,1928},{22007,1900},{21769,1875},{21755,1900},{21873,1905},{21888,1928},{21553,1952},{21568,1958},{21641,1905},{21627,1930},{21853,2705},{21961,2685},{32767,32767},{21825,2475},{21848,2500},{32767,32767},{22036,2435},{22080,2460},{21519,2450},{20057,491},{22255,1575},{22255,1965},{21455,2024},{21455,2204},{22262,2171},{22254,2530},{22169,2405},{22192,2430},{32767,32767},{19923,1759},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{15555,615},{32767,32767},{32767,32767},{15555,615},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{7364,774},{7490,744},{10315,509},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{16097,591},{16087,689},{32767,32767},{3094,152},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{3919,33},{3896,88},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{32767,32767},{3674,195},{32767,32767},{3674,194}};
-static const LevelEvent level11_events[1] = {
-  {0,0,0,0,0,0,0,0,0},
+static const uint8_t level1_data[582] = {
+  173,149,207,75,27,65,20,199,223,186,134,77,162,70,13,198,32,209,136,248,131,86,180,20,42,22,181,66,193,91,69,4,69,20,69,133,66,11,11,109,
+  177,80,104,233,169,151,210,131,55,123,146,30,122,242,236,161,133,130,87,47,226,165,144,255,32,127,137,206,126,178,209,73,150,140,195,102,9,25,30,239,
+  125,231,251,190,243,222,204,91,145,94,113,164,220,180,122,34,50,107,176,95,40,59,135,39,39,167,114,41,37,89,192,174,192,176,11,70,66,124,13,121,
+  239,233,7,223,211,128,249,32,83,13,152,232,46,79,10,234,231,202,141,218,123,69,150,58,79,124,229,41,56,15,224,44,200,35,165,97,23,158,47,68,
+  255,178,138,108,41,255,142,228,101,80,190,18,93,34,239,152,84,213,58,12,230,49,209,99,141,249,72,253,139,242,26,252,34,252,75,224,221,59,230,186,
+  230,1,216,178,177,244,167,209,127,205,222,25,120,158,24,107,168,219,57,244,244,25,241,37,206,245,79,171,73,153,93,63,201,229,226,47,202,153,178,87,
+  172,243,70,187,60,204,41,58,52,127,69,59,227,118,216,247,32,227,16,185,14,201,155,194,222,106,35,175,238,249,6,219,134,241,45,212,238,94,169,69,
+  95,22,232,184,171,41,127,9,231,9,246,111,246,62,211,162,149,182,223,93,206,153,149,73,120,106,209,96,93,229,68,55,172,35,142,167,69,3,79,53,
+  140,122,97,212,151,31,74,149,223,196,16,172,126,200,224,68,248,27,163,62,125,241,31,212,16,216,151,161,6,175,73,131,31,50,180,198,36,195,208,90,
+  161,79,167,108,25,90,87,178,170,162,19,50,227,196,233,108,57,162,208,198,83,187,15,5,110,87,6,251,23,246,115,139,57,60,66,239,28,235,55,98,
+  126,77,241,238,243,28,106,211,48,244,243,210,123,176,93,58,242,223,226,20,246,111,92,159,42,65,245,70,67,187,220,48,109,130,137,183,201,148,91,102,
+  205,36,170,33,195,148,40,24,241,251,244,165,151,236,111,35,10,29,252,239,192,188,73,188,62,142,82,120,198,215,48,254,92,202,82,195,171,136,242,81,
+  52,255,129,179,147,44,159,180,175,161,253,41,234,95,76,19,126,156,123,117,142,127,13,252,119,178,172,99,119,89,231,42,82,109,47,130,31,160,143,89,
+  139,219,53,68,198,148,22,189,64,219,60,122,210,240,15,182,81,237,61,42,249,217,248,250,242,100,233,214,60,30,158,98,66,243,71,255,162,189,231,116,
+  93,120,62,98,175,224,159,166,14,79,19,186,171,221,204,138,188,17,255,138,140,183,
+};
+static const LChunk level1_chunks[1] = {
+  {0,0,9600,255.0f,17519.0f,-1000000000.0f,1000000000.0f,582,464,464,66,1},
+};
+static const LevelEvent level1_events[2] = {
+  {6780,15,1,0,10,52,60,0,600},
+  {6780,15,1,1,16,120,110,0,600},
+};
+static const uint8_t level2_data[609] = {
+  197,151,205,78,19,81,20,199,207,69,194,128,216,1,74,128,166,116,170,49,106,72,128,16,240,3,22,77,72,216,16,108,212,184,19,20,3,9,155,110,
+  8,59,186,114,99,8,111,64,112,193,2,141,27,215,238,92,226,19,204,146,93,223,128,55,192,123,127,51,232,109,167,83,107,59,83,211,228,228,228,204,
+  249,248,159,115,207,253,207,84,100,68,92,241,181,84,178,37,243,90,138,214,29,164,43,69,203,18,167,183,246,244,100,66,255,84,196,223,151,62,41,200,
+  73,104,153,71,150,145,21,237,185,34,95,101,90,134,136,93,198,191,154,26,194,168,103,85,102,228,145,174,21,68,25,105,176,221,13,245,41,169,105,108,
+  142,245,212,3,237,146,100,101,82,206,193,89,197,158,5,255,103,44,197,6,25,116,29,175,151,200,144,167,150,146,11,45,111,253,62,41,87,190,97,153,
+  177,48,12,130,97,18,125,25,148,7,248,204,198,116,97,203,123,248,191,12,115,154,222,215,200,150,227,140,202,232,229,152,147,154,34,118,55,229,51,26,
+  3,67,166,201,22,253,233,194,239,104,206,197,134,190,218,179,148,234,234,182,218,228,28,59,176,147,208,124,68,246,245,233,216,246,12,91,55,214,50,234,
+  137,92,235,233,93,106,251,67,166,20,197,105,228,49,81,158,82,17,31,99,175,33,175,177,120,202,209,49,39,58,103,165,131,108,205,124,42,218,171,179,
+  108,255,138,45,240,84,161,231,255,199,102,158,94,132,158,78,157,167,223,6,254,138,124,111,130,173,89,221,246,179,213,180,207,3,153,83,189,187,77,1,
+  255,20,34,119,57,41,38,241,45,78,62,130,81,23,186,224,228,0,225,33,121,222,162,151,96,206,66,216,133,177,191,239,26,255,16,247,122,194,178,151,
+  224,192,23,228,223,72,141,105,179,116,113,39,134,105,243,48,201,48,24,222,129,240,117,162,72,92,170,59,84,249,65,149,62,107,230,155,84,92,98,218,
+  235,109,188,215,174,18,222,162,86,60,63,13,170,109,139,231,215,57,175,69,44,5,244,83,116,133,238,161,239,241,118,216,239,26,103,142,201,12,88,246,
+  167,76,239,140,167,91,76,53,67,221,0,201,171,134,187,118,163,231,121,218,143,254,12,108,159,232,107,181,227,119,71,178,140,154,70,182,244,25,181,23,
+  157,214,215,125,174,110,56,252,111,119,228,49,167,188,201,182,236,89,60,185,129,229,13,55,113,60,53,182,25,101,187,110,179,159,253,145,40,151,234,63,
+  195,239,91,163,31,134,95,59,38,106,205,234,226,35,123,187,138,125,212,234,226,12,203,32,114,36,209,46,6,64,114,159,41,125,32,255,92,15,255,161,
+  44,80,241,11,122,192,198,191,0,
+};
+static const LChunk level2_chunks[1] = {
+  {0,0,9600,255.0f,22346.0f,-1000000000.0f,1000000000.0f,609,588,588,66,1},
+};
+static const LevelEvent level2_events[2] = {
+  {9960,15,1,0,58,14,52,0,600},
+  {9960,15,1,1,170,40,110,0,600},
+};
+static const uint8_t level3_data[598] = {
+  213,150,205,78,83,81,16,199,231,150,143,203,231,5,10,130,66,129,4,176,216,4,26,141,9,9,218,4,99,76,76,212,109,53,233,6,22,4,104,2,
+  36,118,197,198,53,110,100,121,223,128,157,27,55,190,0,11,227,150,55,240,13,124,3,156,243,187,213,158,114,219,235,105,105,137,166,201,228,116,230,127,
+  103,254,51,115,102,238,21,25,147,64,22,144,151,42,61,206,182,244,69,100,221,233,108,228,107,71,77,191,220,209,223,70,93,244,148,100,36,188,134,52,
+  178,172,248,19,48,39,22,222,88,23,171,231,65,185,144,57,245,87,179,230,36,45,211,114,36,15,36,43,239,176,246,144,209,180,156,235,249,5,204,165,
+  26,43,122,170,166,105,118,142,144,19,120,30,181,244,89,124,126,78,228,95,148,43,197,44,91,89,248,242,67,53,51,156,143,241,185,107,241,143,228,7,
+  158,42,198,250,210,75,196,217,38,29,73,99,29,177,52,133,106,197,2,141,87,235,117,163,74,218,50,164,122,69,188,245,89,250,67,122,183,7,147,210,
+  13,42,105,107,6,225,246,221,129,85,142,232,223,136,158,135,219,90,135,56,36,35,93,239,103,235,19,180,73,70,61,86,142,91,244,125,147,250,135,138,
+  89,173,235,87,168,55,39,24,88,64,134,255,152,62,240,214,101,69,214,188,154,117,143,187,125,216,181,221,50,195,29,240,27,108,24,163,223,136,237,183,
+  82,23,110,203,16,29,76,209,181,116,131,155,211,78,238,1,222,242,120,24,98,58,166,98,147,59,76,142,147,156,31,82,231,79,104,162,77,152,225,156,
+  74,156,166,183,120,126,15,50,7,183,97,226,30,97,205,226,243,204,121,51,187,108,149,143,108,227,131,142,246,98,28,158,65,34,254,13,251,182,66,118,
+  83,22,159,167,104,78,177,142,39,102,58,65,173,246,19,223,68,182,252,217,181,251,150,134,201,72,139,59,234,30,79,109,131,172,144,239,115,197,220,167,
+  107,245,179,35,106,53,242,10,205,188,231,199,48,145,79,35,79,65,206,123,158,254,191,84,159,229,150,188,25,253,69,21,227,215,97,202,90,227,184,183,
+  223,185,24,164,247,31,114,107,20,177,172,29,115,243,246,234,207,118,245,20,97,230,104,236,86,222,125,25,98,125,117,222,99,119,217,39,253,29,248,74,
+  52,115,157,103,66,7,156,191,21,159,192,54,197,13,47,56,79,235,23,240,91,228,181,202,249,113,135,106,27,205,93,223,95,190,46,174,243,217,33,247,
+  10,153,22,224,83,106,146,239,35,172,47,111,240,5,210,94,119,150,200,107,214,226,252,140,202,247,194,231,172,45,38,5,203,219,40,21,248,5,
+};
+static const LChunk level3_chunks[1] = {
+  {0,0,9600,255.0f,22207.0f,-1000000000.0f,1000000000.0f,598,539,539,66,1},
+};
+static const LevelEvent level3_events[2] = {
+  {9510,15,1,0,64,40,12,0,600},
+  {9510,15,1,1,190,110,30,0,600},
+};
+static const uint8_t level4_data[641] = {
+  213,86,189,106,27,65,16,158,147,101,157,20,135,59,226,159,200,206,89,23,23,146,147,128,15,220,56,69,48,105,83,8,220,217,4,57,69,42,195,145,
+  96,92,197,56,164,12,248,13,174,76,42,21,33,144,194,248,13,252,6,7,169,82,233,13,252,6,201,204,183,43,123,237,149,204,74,186,8,204,161,97,
+  52,251,221,236,55,127,123,75,20,146,71,243,244,151,34,58,96,61,160,71,252,171,83,153,122,108,249,142,213,14,37,44,137,117,31,50,160,216,176,12,
+  211,71,69,126,195,142,45,48,9,177,111,124,75,10,50,185,67,223,134,159,18,248,175,66,207,53,7,145,175,225,255,21,61,167,117,106,82,151,245,151,
+  35,70,183,0,15,115,22,190,76,75,252,60,49,236,63,16,197,11,172,190,197,94,159,199,138,232,90,23,217,102,75,9,28,86,45,187,141,220,54,98,
+  15,193,225,194,176,40,217,6,243,211,130,184,205,32,234,200,129,219,58,119,220,99,126,174,153,228,19,84,124,25,222,42,58,34,225,160,234,91,67,173,
+  59,176,127,65,87,236,141,88,113,162,67,246,96,247,106,3,222,60,195,110,242,39,112,152,36,147,46,22,31,181,219,50,114,184,134,222,56,179,170,188,
+  3,182,95,13,139,120,120,122,3,163,228,101,65,157,224,98,169,131,127,11,251,122,220,155,17,103,85,157,3,162,31,49,178,133,172,154,111,137,76,117,
+  134,69,54,60,177,156,234,254,177,145,106,85,33,69,118,25,153,50,54,98,233,138,119,231,144,210,249,0,207,130,233,105,188,127,133,79,175,122,94,118,
+  17,121,129,213,30,164,137,76,224,185,163,61,187,225,115,103,14,41,101,83,202,134,226,236,13,228,220,30,51,27,255,39,207,61,214,155,180,225,201,91,
+  31,112,146,204,97,178,74,232,207,12,81,196,252,175,161,35,138,135,72,98,108,80,181,237,75,120,106,26,115,70,141,1,152,204,154,214,58,78,21,127,
+  224,204,246,245,99,156,132,251,214,183,79,201,93,172,158,96,190,202,198,140,135,136,46,28,249,59,43,81,168,111,98,205,56,195,167,115,91,80,209,125,
+  196,201,246,30,28,42,86,188,146,183,53,173,171,10,46,24,171,170,10,127,10,229,156,59,156,177,85,48,105,130,57,121,9,61,187,241,86,198,171,210,
+  51,34,179,123,98,15,188,254,188,4,220,95,18,93,21,152,159,186,55,38,157,151,216,152,20,31,61,92,135,165,130,78,94,30,50,53,118,15,152,178,
+  137,234,255,42,148,91,85,223,106,196,178,8,110,15,238,228,246,14,28,62,89,183,160,162,186,145,224,63,31,243,155,222,191,195,4,92,65,53,43,183,
+  79,149,135,168,239,60,244,4,177,119,29,242,191,130,19,117,22,122,132,183,126,67,223,68,198,222,96,167,253,41,222,67,204,123,178,58,205,182,192,240,
+  31,
+};
+static const LChunk level4_chunks[1] = {
+  {0,0,9600,255.0f,22197.0f,-1000000000.0f,1000000000.0f,641,559,559,66,1},
+};
+static const LevelEvent level4_events[2] = {
+  {14340,15,1,0,14,28,40,0,600},
+  {14340,15,1,1,40,90,130,0,600},
+};
+static const uint8_t level5_data[673] = {
+  197,87,207,107,212,80,16,158,183,173,166,20,77,108,105,253,209,52,105,177,214,42,184,138,194,46,34,61,168,7,65,2,130,94,132,160,210,222,220,30,
+  42,244,84,232,201,83,255,131,61,121,245,34,136,178,228,228,81,239,30,242,31,236,95,178,206,124,73,235,203,38,217,125,217,141,149,133,225,49,111,222,
+  247,102,190,153,55,179,33,250,69,138,124,106,144,71,148,174,139,37,81,151,236,185,242,221,30,121,153,221,37,234,147,75,243,88,119,201,97,121,200,210,
+  102,141,77,87,232,11,214,190,38,137,2,90,207,104,18,121,43,181,175,211,207,6,48,87,115,187,219,124,219,77,10,135,188,90,43,240,234,49,45,210,
+  101,250,110,28,69,139,150,249,119,155,6,204,201,125,190,203,165,93,112,18,82,19,94,57,100,65,138,253,95,141,190,94,1,159,179,57,123,162,125,246,
+  185,236,148,135,72,85,238,84,172,249,246,9,254,180,177,94,129,135,179,218,110,128,72,143,141,35,189,75,159,25,225,189,198,228,6,52,223,42,198,235,
+  143,180,92,66,92,243,35,237,99,174,150,85,212,158,104,154,144,1,100,231,180,26,15,225,213,51,48,240,0,154,8,242,21,120,216,64,214,222,142,196,
+  185,7,126,158,167,103,155,28,119,92,104,41,242,24,30,122,74,225,150,113,54,33,35,185,224,176,42,154,232,251,144,3,104,60,101,49,78,55,131,166,
+  210,119,36,150,86,198,114,18,180,170,145,38,104,234,20,45,154,10,205,132,183,162,40,34,100,159,184,62,19,54,172,2,54,66,254,37,104,227,44,205,
+  209,98,246,234,6,221,81,82,51,31,81,99,47,107,125,29,38,29,192,71,205,39,62,251,67,242,164,66,198,175,79,184,53,209,108,107,93,34,198,93,
+  14,122,90,80,83,212,10,145,122,153,46,49,192,12,26,62,21,213,58,77,46,225,22,59,183,219,205,245,198,3,88,238,24,115,238,160,115,58,154,70,
+  231,240,53,50,120,116,134,25,244,81,171,254,80,30,197,19,201,227,35,200,39,6,211,179,13,156,31,198,51,229,41,50,251,14,108,60,132,188,58,242,
+  150,107,224,249,28,214,215,209,159,127,255,199,58,23,255,37,83,77,68,253,2,235,229,137,252,209,145,207,3,237,43,34,93,203,49,214,3,75,111,248,
+  212,166,209,60,146,174,101,87,176,236,160,199,118,206,12,185,168,123,11,66,25,114,118,190,200,45,130,28,101,144,203,39,160,224,76,131,92,149,141,242,
+  232,58,152,179,213,124,30,55,131,4,71,144,195,26,120,46,207,96,63,157,113,242,223,105,23,53,223,42,225,51,121,221,109,237,255,88,126,14,46,162,
+  183,92,152,104,46,204,0,255,34,94,196,79,237,75,100,11,94,125,248,103,95,64,250,20,216,67,23,106,32,10,23,111,54,152,168,3,184,136,98,102,
+  234,190,116,0,79,204,39,81,194,222,130,166,105,129,61,43,237,192,194,176,159,251,178,232,33,210,117,141,243,57,104,254,0,
+};
+static const LChunk level5_chunks[1] = {
+  {0,0,8640,225.0f,22343.0f,-1000000000.0f,1000000000.0f,673,617,617,66,1},
+};
+static const LevelEvent level5_events[2] = {
+  {9270,15,1,0,30,10,20,0,600},
+  {9270,15,1,1,120,20,60,0,600},
+};
+static const uint8_t level6_data[728] = {
+  213,151,207,107,19,65,20,199,223,38,161,41,177,164,109,36,109,236,54,107,196,90,42,118,43,138,74,40,21,212,131,40,129,226,69,2,169,120,72,20,
+  217,131,218,131,72,193,163,135,8,30,133,30,244,92,5,207,193,171,135,122,240,156,255,160,127,73,157,253,204,26,55,63,54,78,54,37,34,33,143,201,
+  155,55,223,249,190,55,239,189,153,136,204,74,86,222,203,145,216,146,147,99,37,175,163,113,144,117,165,91,144,178,28,40,125,89,105,44,169,137,171,164,
+  168,113,26,233,91,254,209,204,128,144,11,105,156,161,246,206,80,203,118,136,137,72,69,206,6,227,176,188,166,190,139,50,5,195,71,178,38,171,138,97,
+  66,150,165,4,147,215,1,154,139,172,32,61,181,203,30,107,247,12,60,90,34,50,169,88,30,77,195,109,33,194,47,27,100,205,255,45,76,156,30,169,
+  153,155,140,181,119,102,154,173,80,244,218,177,246,221,32,218,217,16,206,46,154,122,16,85,125,10,113,144,167,229,80,225,204,128,150,137,229,221,21,50,
+  246,212,216,62,234,40,77,73,94,125,10,1,154,159,81,45,53,251,41,200,156,120,152,73,24,218,140,207,147,3,47,145,183,122,56,155,229,255,3,208,
+  238,118,98,222,61,235,175,42,5,227,34,81,181,66,179,231,200,189,139,236,254,121,12,143,156,62,182,90,230,64,182,136,219,119,99,252,101,236,19,125,
+  187,20,241,212,138,216,171,202,236,27,131,138,118,140,107,57,3,230,79,244,41,88,45,133,118,108,144,27,27,100,236,109,131,147,202,16,127,151,85,31,
+  88,85,87,191,46,224,75,127,143,242,101,19,38,69,203,151,7,129,215,102,150,158,178,181,149,236,173,14,81,39,226,203,99,52,69,75,35,68,33,107,
+  75,171,99,217,4,185,213,133,236,207,30,6,200,233,30,228,202,0,228,104,14,158,236,7,200,218,11,141,156,30,136,236,118,234,218,196,210,83,25,49,
+  153,104,152,35,255,45,110,158,234,49,163,70,99,148,56,31,41,203,21,89,183,92,249,24,220,134,81,125,35,44,215,201,222,31,255,232,182,122,69,13,
+  62,54,168,181,77,42,247,27,220,180,119,5,122,221,83,58,146,67,37,158,49,192,169,224,111,21,251,109,52,59,140,147,232,175,130,118,135,247,198,46,
+  227,213,136,204,201,195,188,209,121,117,252,198,223,129,85,149,110,80,154,96,84,245,189,118,3,14,115,236,158,53,190,113,244,43,209,38,194,91,172,109,
+  246,217,220,35,26,51,236,50,143,253,115,99,239,178,172,157,27,219,199,20,177,45,135,88,61,3,249,139,178,89,51,234,165,45,131,62,80,163,3,212,
+  12,234,186,101,80,203,53,58,213,255,129,22,221,103,78,158,219,168,167,48,234,153,118,219,212,184,61,219,65,135,244,171,123,63,130,67,131,220,206,247,
+  213,117,84,237,92,162,94,110,34,223,197,170,247,77,106,42,209,245,238,26,198,240,50,246,247,67,255,119,102,233,96,30,26,125,82,219,65,181,158,204,
+  171,41,60,78,82,131,246,192,127,64,147,234,117,43,116,170,66,40,98,139,68,96,30,175,191,162,57,205,57,234,55,94,26,205,11,236,158,12,141,173,
+  190,29,92,236,31,130,246,11,
+};
+static const LChunk level6_chunks[1] = {
+  {0,0,9600,255.0f,24130.0f,-1000000000.0f,1000000000.0f,728,653,653,66,1},
+};
+static const LevelEvent level6_events[2] = {
+  {12750,15,1,0,8,40,70,0,600},
+  {12750,15,1,1,40,150,200,0,600},
+};
+static const uint8_t level7_data[713] = {
+  213,87,79,107,19,81,16,159,13,181,93,36,221,53,161,70,67,154,173,80,219,164,218,32,244,32,138,30,244,34,244,31,94,170,200,34,136,61,20,130,
+  160,72,61,244,11,20,123,244,180,7,245,90,232,197,75,105,63,65,241,230,65,246,27,228,147,212,153,223,107,204,91,95,222,102,183,73,14,18,50,121,
+  204,155,249,189,153,121,51,191,215,18,249,228,81,160,201,87,252,189,65,15,233,140,106,244,148,10,52,75,109,234,240,186,197,187,83,68,252,43,114,29,
+  178,77,14,61,161,50,85,232,1,124,231,233,144,45,95,96,237,2,97,27,187,85,232,159,179,222,161,144,17,28,246,85,104,234,220,158,198,182,54,45,
+  93,186,206,159,74,170,253,123,58,231,115,175,82,147,22,105,18,241,108,33,134,21,100,244,12,54,95,16,219,109,100,26,89,114,244,225,59,135,92,214,
+  224,117,15,8,171,35,205,40,221,242,8,185,220,209,110,106,13,21,56,24,105,12,147,192,252,101,116,197,39,228,59,129,74,134,154,94,170,52,151,176,
+  84,242,17,112,78,13,253,107,116,215,49,159,216,160,88,211,71,140,239,185,1,100,244,159,232,61,167,197,125,179,204,242,27,157,112,70,77,100,164,247,
+  143,84,181,3,121,14,77,221,153,98,75,31,154,67,200,51,232,59,144,61,155,144,63,53,212,89,161,41,75,167,143,101,62,180,65,150,163,71,27,84,
+  13,226,138,74,71,69,137,124,147,211,39,246,142,5,83,217,136,252,124,97,35,179,16,91,209,146,150,39,25,78,12,217,202,68,179,221,108,54,180,152,
+  186,157,243,149,246,208,87,155,224,150,125,99,94,4,231,22,51,152,240,207,140,177,123,31,83,246,29,189,17,48,131,213,47,250,36,176,72,169,182,116,
+  175,109,247,152,234,137,93,197,123,62,214,17,110,60,248,71,118,251,83,95,247,162,53,119,187,213,203,162,153,1,51,23,144,227,162,150,117,156,57,18,
+  125,253,88,67,152,0,11,125,64,156,111,134,230,207,50,184,177,168,233,85,204,179,169,94,138,253,154,96,245,151,200,116,107,136,188,124,100,228,107,175,
+  94,21,217,173,103,224,234,187,232,189,159,154,102,19,104,55,129,80,4,218,91,195,107,25,49,31,140,173,247,148,252,136,218,46,12,125,227,5,228,248,
+  91,211,108,32,187,26,240,223,89,230,206,172,213,10,110,182,4,175,31,57,59,231,26,78,244,82,237,229,77,89,48,222,145,126,76,34,60,230,101,122,
+  113,196,215,227,175,112,108,59,195,155,34,56,221,41,75,103,120,193,17,228,112,236,200,217,236,199,27,243,229,234,156,253,6,7,197,208,230,183,34,111,
+  53,242,34,95,174,235,250,189,173,18,161,32,199,152,49,121,239,60,103,148,92,81,194,68,79,27,187,145,49,179,71,152,86,245,151,115,3,51,216,192,
+  20,239,192,126,26,187,165,212,168,138,224,186,114,78,30,211,189,108,177,237,32,146,85,88,206,67,83,5,223,94,193,122,247,239,11,53,136,195,27,240,
+  114,193,219,138,177,79,241,31,77,9,235,125,203,205,42,14,223,0,194,158,134,230,66,95,73,101,194,22,206,90,2,254,31,
+};
+static const LChunk level7_chunks[1] = {
+  {0,0,9600,255.0f,24491.0f,-1000000000.0f,1000000000.0f,713,609,609,66,1},
+};
+static const LevelEvent level7_events[2] = {
+  {11280,15,1,0,40,30,30,0,600},
+  {11280,15,1,1,110,80,70,0,600},
+};
+static const uint8_t level8_data[669] = {
+  205,86,187,110,19,65,20,189,235,196,89,147,216,27,199,193,6,226,56,164,200,3,164,88,66,65,130,6,69,162,48,18,162,66,32,33,45,21,162,193,
+  181,37,20,133,130,34,69,68,145,14,109,71,153,130,22,229,3,144,242,7,254,2,92,166,203,31,132,59,103,134,100,236,121,100,214,118,65,225,171,209,
+  248,204,153,115,239,204,156,189,68,139,20,209,44,13,168,73,43,24,175,93,197,152,136,218,158,241,51,30,39,152,73,232,43,157,49,195,27,42,208,42,
+  101,87,24,17,95,33,118,25,255,24,152,14,240,251,218,90,129,185,175,198,122,60,160,75,198,127,160,19,142,245,17,109,121,20,46,81,141,26,84,81,
+  251,62,160,45,74,49,46,35,235,26,198,61,104,123,206,81,48,20,168,197,12,114,108,143,196,89,38,37,115,190,194,74,235,188,163,196,252,162,150,5,
+  147,65,127,172,42,214,6,82,106,150,185,95,207,184,198,38,178,15,78,2,231,54,42,246,26,152,83,163,170,162,218,235,106,188,140,10,20,129,159,211,
+  48,85,254,221,161,63,224,76,189,251,214,176,99,57,88,103,17,204,61,237,20,92,218,244,248,8,85,253,109,204,119,48,95,135,134,83,222,229,7,234,
+  96,187,123,68,173,40,66,53,220,255,166,224,73,71,48,226,223,75,133,137,115,50,136,249,129,98,136,199,98,240,107,176,241,19,29,161,182,71,138,39,
+  82,55,89,32,99,135,18,27,79,62,6,155,206,20,247,42,13,60,17,183,134,62,255,187,65,59,209,205,183,49,252,189,36,184,135,85,47,254,29,244,
+  127,65,5,164,95,109,41,39,17,103,212,134,59,189,165,73,85,85,241,6,19,109,190,138,93,62,98,247,201,29,169,140,76,107,1,142,228,207,162,14,
+  157,183,188,185,44,97,175,202,136,47,13,191,217,61,100,247,125,232,21,139,85,179,168,231,19,229,138,163,171,222,99,85,7,53,217,13,248,118,92,104,
+  167,86,6,103,19,107,143,3,50,45,0,185,26,124,151,22,160,109,217,139,127,137,236,190,25,58,55,49,127,206,248,237,161,90,101,92,109,113,154,34,
+  102,255,217,124,18,137,247,248,137,227,166,195,111,165,11,253,123,227,196,245,76,114,32,187,140,109,114,28,151,217,238,138,93,48,103,138,89,174,149,206,
+  22,91,156,77,176,141,199,108,247,186,107,87,20,250,167,85,141,16,230,241,52,135,159,160,77,67,151,125,221,100,118,43,201,91,141,129,246,69,152,195,
+  235,190,171,117,134,242,165,207,4,247,135,43,202,127,22,161,68,116,176,235,224,252,236,200,119,23,248,23,192,23,225,138,61,213,209,157,76,177,163,107,
+  128,185,228,197,247,13,39,108,64,67,201,240,153,190,227,59,34,123,191,123,193,95,147,53,239,119,68,246,147,135,19,244,234,243,168,237,109,229,153,103,
+  86,207,116,117,137,59,240,225,167,88,117,76,211,236,22,30,130,243,231,84,57,245,113,19,202,103,12,252,95,
+};
+static const LChunk level8_chunks[1] = {
+  {0,0,9600,255.0f,22941.0f,-1000000000.0f,1000000000.0f,669,581,581,66,1},
+};
+static const LevelEvent level8_events[2] = {
+  {8070,15,1,0,18,16,40,0,600},
+  {8070,15,1,1,70,60,150,0,600},
+};
+static const uint8_t level9_data[660] = {
+  221,87,189,110,19,65,16,254,22,71,57,39,40,139,73,226,224,40,248,2,34,137,16,177,69,65,133,228,138,2,129,162,20,8,33,208,81,209,197,37,
+  77,100,165,162,179,232,16,18,233,160,194,15,144,200,15,16,41,60,65,222,32,111,192,27,132,217,239,28,123,207,119,123,94,59,230,71,200,210,104,53,
+  59,251,205,204,183,179,51,103,224,6,52,66,75,2,59,184,147,208,196,242,167,72,197,181,45,3,177,175,123,173,3,34,251,105,86,197,223,45,220,179,
+  188,159,225,26,110,227,112,200,210,200,166,216,183,104,211,178,236,91,184,143,45,204,224,28,107,120,133,83,145,42,23,97,19,101,249,189,180,112,90,140,
+  33,98,166,69,92,8,66,5,29,145,111,184,219,192,34,86,18,30,71,179,167,177,192,72,110,114,189,74,180,23,244,187,231,205,173,38,66,201,210,20,
+  152,227,227,84,238,17,215,37,218,107,143,8,107,204,247,135,165,249,192,172,31,49,206,183,226,235,155,220,130,125,35,201,245,248,181,209,112,160,249,104,
+  166,235,81,171,58,54,176,39,242,43,245,89,21,2,84,149,66,215,66,131,48,111,228,5,53,85,21,8,231,109,225,42,174,25,8,243,177,77,144,176,
+  233,166,170,221,236,170,62,66,167,135,224,19,67,214,110,196,27,143,114,227,244,141,193,157,133,241,184,69,28,183,77,36,54,62,108,92,29,193,159,79,
+  23,27,163,98,56,195,101,133,124,207,168,204,174,88,234,98,104,201,238,127,106,83,227,75,169,41,179,27,177,7,238,178,255,108,147,195,168,199,112,204,
+  118,140,51,208,184,214,105,203,18,123,145,206,181,143,111,97,134,61,106,131,53,255,156,241,188,155,106,36,225,200,24,46,167,207,2,59,249,71,86,81,
+  40,179,166,218,171,168,208,33,33,179,200,176,58,208,44,147,201,249,132,205,49,170,197,53,230,88,72,33,28,230,78,180,187,68,123,205,216,118,137,176,
+  109,221,236,60,223,197,242,136,137,96,50,90,34,206,17,53,43,196,41,38,42,100,242,124,99,57,199,91,43,91,249,206,210,99,37,35,223,228,20,91,
+  207,136,121,159,149,112,240,7,191,85,26,67,115,100,211,49,65,140,108,83,118,250,189,218,48,166,115,237,147,221,204,156,213,178,103,114,108,58,167,192,
+  112,127,51,56,122,236,168,154,188,133,191,233,101,50,198,254,77,47,254,140,229,207,92,227,165,221,243,162,250,21,210,161,205,41,101,250,84,61,225,69,
+  245,35,119,217,239,208,75,243,74,94,198,201,229,28,131,153,98,191,229,50,187,141,162,124,202,94,180,111,245,219,117,246,141,47,185,61,240,33,79,41,
+  222,203,51,158,10,248,118,222,123,127,183,47,209,203,19,198,240,137,61,243,250,111,155,47,179,140,182,226,152,50,105,143,37,70,165,39,242,123,194,92,
+  22,51,191,177,167,151,93,204,222,103,242,255,128,204,23,60,254,199,253,2,
+};
+static const LChunk level9_chunks[1] = {
+  {0,0,9600,255.0f,27015.0f,-1000000000.0f,1000000000.0f,660,622,622,66,1},
+};
+static const LevelEvent level9_events[2] = {
+  {11070,15,1,0,6,6,10,0,600},
+  {11070,15,1,1,60,60,80,0,600},
+};
+static const uint8_t level10_data[662] = {
+  213,87,191,139,19,65,20,126,115,224,110,138,100,67,34,122,193,99,87,13,81,79,52,232,53,7,66,64,237,14,2,130,162,130,83,137,141,110,163,141,
+  133,118,90,93,103,153,70,175,184,34,149,157,23,208,62,255,193,254,7,249,75,226,155,111,247,246,38,153,253,49,49,107,68,142,123,12,111,190,247,235,
+  123,111,54,51,68,125,250,74,31,168,73,130,2,200,26,77,105,135,46,166,26,151,136,49,249,235,125,186,192,127,14,107,60,232,61,138,180,245,39,26,
+  179,183,39,154,134,104,72,151,147,181,46,111,194,207,136,102,140,223,67,116,9,255,148,196,138,145,103,154,96,97,247,45,93,95,210,152,248,54,87,229,
+  192,255,83,218,101,252,45,228,118,199,34,183,123,176,253,105,232,7,252,191,205,57,47,235,149,159,43,108,51,103,255,117,99,247,33,188,125,1,207,87,
+  141,221,71,208,247,144,231,75,240,208,133,159,231,216,109,65,31,32,238,107,70,170,94,108,145,207,17,227,117,182,36,206,209,171,117,224,217,201,197,252,
+  32,191,230,32,183,142,177,59,0,99,82,155,147,192,122,66,6,57,179,161,115,101,114,190,143,170,183,80,239,47,104,234,88,183,53,204,16,60,188,66,
+  31,175,173,56,51,197,211,34,192,195,137,5,195,29,100,229,104,60,183,145,79,189,144,103,83,63,66,254,7,73,141,213,84,225,137,62,243,18,165,189,
+  112,193,182,146,33,48,51,200,57,52,190,80,242,48,233,145,142,23,73,237,10,239,46,225,67,198,135,108,181,195,178,9,204,33,228,24,152,41,164,105,
+  213,79,162,172,130,15,57,147,56,202,233,92,41,43,81,96,53,204,168,165,172,246,16,189,11,51,173,220,52,219,57,100,108,53,94,139,177,117,250,162,
+  103,229,166,108,248,34,142,174,162,204,74,106,201,178,138,86,172,61,196,87,165,202,40,127,187,150,178,238,207,24,223,163,55,124,118,110,44,124,175,212,
+  111,147,199,39,87,201,209,127,162,87,95,128,184,150,221,21,56,159,88,35,37,250,34,255,137,231,197,105,220,156,231,252,211,45,113,174,165,245,212,77,
+  172,115,144,56,101,235,242,156,149,131,196,204,111,154,141,42,58,24,165,231,244,40,243,11,92,230,249,204,219,180,176,107,139,124,102,115,120,90,105,62,
+  27,147,194,93,201,177,170,242,176,25,30,108,60,216,207,124,213,189,136,103,227,182,176,189,109,198,119,203,46,238,147,223,145,195,54,216,126,134,211,113,
+  174,162,251,88,3,183,202,86,33,62,178,120,143,124,67,86,29,200,248,118,253,57,241,172,170,120,96,225,225,46,94,91,205,228,182,163,228,193,218,247,
+  231,22,216,107,104,250,23,240,252,177,210,155,121,80,202,158,192,123,214,163,243,224,228,216,168,189,135,151,197,125,112,245,174,210,220,244,222,189,71,244,
+  199,96,160,241,71,239,166,192,56,203,54,154,46,226,94,210,50,241,49,207,191,1,
+};
+static const LChunk level10_chunks[1] = {
+  {0,0,9600,255.0f,25484.0f,-1000000000.0f,1000000000.0f,662,679,679,66,1},
+};
+static const LevelEvent level10_events[2] = {
+  {14010,15,1,0,50,8,0,0,600},
+  {14010,15,1,1,170,50,0,0,600},
+};
+static const uint8_t level11_data[772] = {
+  229,88,77,139,19,65,16,173,89,53,31,178,59,217,100,221,53,106,50,70,113,101,81,3,178,57,42,94,4,97,89,4,241,36,189,224,105,17,199,131,
+  224,65,217,171,32,236,81,240,176,7,63,110,14,120,150,193,171,7,61,233,65,152,127,144,127,224,63,88,171,223,140,153,30,123,166,211,147,68,9,72,
+  160,24,170,171,171,94,85,117,215,188,9,81,131,92,242,20,185,75,95,232,12,221,97,233,176,102,129,186,68,201,115,42,107,116,200,54,107,138,134,232,
+  128,220,90,131,2,214,55,52,251,223,54,31,169,91,211,245,7,136,123,156,134,216,43,61,239,208,42,255,238,43,168,136,182,233,108,6,103,44,207,81,
+  139,113,60,165,13,186,72,130,53,14,53,225,97,9,207,222,72,86,217,67,223,234,185,138,88,121,154,83,200,238,152,166,239,49,142,147,212,81,80,69,
+  136,187,135,231,80,195,44,119,245,114,114,89,71,214,223,177,87,0,21,37,177,98,155,84,227,101,86,31,115,238,158,102,95,71,101,86,21,125,7,157,
+  253,132,213,10,158,219,153,232,178,110,55,145,203,35,107,204,3,216,215,80,153,29,116,161,9,207,91,74,5,86,128,164,135,254,62,215,60,108,34,235,
+  23,240,112,143,209,6,168,158,90,97,41,125,100,209,117,28,101,85,106,134,144,135,208,116,157,42,219,237,179,31,31,209,41,57,117,67,172,166,54,145,
+  214,65,185,234,140,60,4,137,135,249,193,144,23,37,50,250,247,249,55,31,24,134,188,247,2,93,113,250,244,134,239,66,159,222,141,137,27,26,43,47,
+  112,186,132,17,85,104,68,37,128,74,24,109,66,163,127,129,254,10,35,206,208,152,163,64,109,103,143,65,175,164,77,29,166,175,164,77,55,139,179,136,
+  112,66,30,242,9,121,143,179,145,157,15,33,91,186,252,214,72,101,248,31,219,200,123,20,215,106,189,96,78,74,185,15,25,140,78,163,236,160,91,218,
+  222,199,196,246,13,187,178,189,150,30,254,70,20,251,92,242,206,152,244,224,26,167,250,124,86,108,154,92,230,173,47,197,168,124,204,115,191,100,5,38,
+  203,37,125,19,189,5,51,81,249,161,67,203,64,226,206,136,43,234,154,235,26,63,244,74,114,212,107,64,232,192,67,27,188,171,50,133,183,201,178,184,
+  10,182,182,168,228,178,130,218,126,230,47,133,14,152,124,94,31,79,192,102,23,246,207,144,197,130,130,118,9,171,77,107,228,151,193,84,151,193,42,29,
+  173,170,246,204,89,231,204,167,225,249,168,162,143,140,121,197,252,246,22,238,227,166,54,189,183,129,112,11,171,55,128,173,133,76,31,96,181,143,74,174,
+  33,226,147,127,216,193,1,80,213,103,90,183,162,213,54,122,93,209,236,93,100,253,213,34,110,29,21,83,191,98,90,240,185,104,220,69,184,29,46,223,
+  244,13,195,116,29,199,57,211,169,21,51,207,168,128,237,228,177,166,148,243,20,113,167,61,133,1,6,137,101,213,200,3,139,35,10,62,161,69,140,52,
+  155,69,104,81,13,193,86,246,153,142,195,47,248,247,39,207,28,199,120,203,98,179,201,180,184,110,209,232,189,240,58,185,209,241,189,184,139,155,50,192,
+  9,188,173,124,207,158,199,9,124,165,88,198,95,205,47,45,102,133,234,255,3,252,92,42,121,251,220,100,250,153,236,143,96,182,252,152,104,170,168,239,
+  169,26,16,126,179,248,31,230,167,166,249,5,
+};
+static const LChunk level11_chunks[1] = {
+  {0,0,9600,255.0f,31785.0f,-1000000000.0f,1000000000.0f,772,783,783,66,1},
+};
+static const LevelEvent level11_events[2] = {
+  {11820,15,1,0,0,20,30,0,600},
+  {11820,15,1,1,0,90,90,0,600},
 };
 const LevelDef level_defs[LEVEL_COUNT] = {
-  {"STEREO MADNESS",level0_data,level0_chunks,level0_events,NULL,2272,3,19,26714,26700,{1000,1388,2259},{40,62,255},{0,19,200},{255,255,255},{255,255,255},1,1,160,0,3},
-  {"BACK ON TRACK",level1_data,level1_chunks,level1_events,NULL,1530,2,15,25335,25320,{484,669,1372},{255,4,181},{226,0,138},{255,255,255},{255,255,255},1,2,130,0,3},
-  {"POLARGEIST",level2_data,level2_chunks,level2_events,NULL,1509,2,22,27975,27960,{470,846,1135},{6,255,0},{7,163,0},{255,255,255},{255,255,255},2,3,165,0,3},
-  {"DRY OUT",level3_data,level3_chunks,level3_events,NULL,1402,2,42,25237,25230,{326,760,1034},{255,40,79},{255,0,51},{255,255,255},{255,255,255},2,4,140,0,3},
-  {"BASE AFTER BASE",level4_data,level4_chunks,level4_events,NULL,2126,3,20,25995,25980,{466,905,1586},{40,125,255},{0,102,255},{255,255,255},{255,255,255},3,5,142,0,3},
-  {"CAN'T LET GO",level5_data,level5_chunks,level5_events,NULL,1691,2,13,25037,25050,{418,931,1247},{213,0,238},{157,0,163},{255,255,255},{255,255,255},3,6,144,0,3},
-  {"JUMPER",level6_data,level6_chunks,level6_events,NULL,2767,3,46,26857,26850,{925,1119,2057},{149,26,255},{112,0,200},{255,255,255},{255,255,255},4,7,175,0,3},
-  {"TIME MACHINE",level7_data,level7_chunks,level7_events,NULL,3563,4,30,29805,29820,{259,1183,2563},{117,247,0},{49,144,0},{255,255,255},{255,255,255},4,8,143,0,3},
-  {"CYCLES",level8_data,level8_chunks,level8_events,NULL,3852,4,66,24555,24540,{1629,2435,3465},{102,0,99},{191,0,255},{255,255,255},{255,255,255},4,9,128,0,3},
-  {"CLUBSTEP",level9_data,level9_chunks,level9_events,&(const LevelExt){level9_chans,level9_styles,level9_gsets,level9_scales,level9_trig,level9_touch,level9_chan_off,level9_chan_frame,level9_spawn_first,level9_spawn_list,level9_anchors,16,16,1,0,1,1208,0,0,0,0,0u},7506,27,0,26953,26940,{563,5500,7363},{0,0,0},{0,0,0},{255,255,255},{255,255,255},6,14,128,0,3},
-  {"DEADLOCKED",level10_data,level10_chunks,level10_events,&(const LevelExt){level10_chans,level10_styles,level10_gsets,level10_scales,level10_trig,level10_touch,level10_chan_off,level10_chan_frame,level10_spawn_first,level10_spawn_list,level10_anchors,80,29,434,76,55,5087,6,11,8,0,0u},19006,57,0,35625,35640,{8787,10951,13084},{0,22,36},{0,29,33},{0,51,59},{0,255,255},6,15,130,0,3},
-  {"DASH",level11_data,level11_chunks,level11_events,&(const LevelExt){level11_chans,level11_styles,level11_gsets,level11_scales,level11_trig,level11_touch,level11_chan_off,level11_chan_frame,level11_spawn_first,level11_spawn_list,level11_anchors,394,57,1521,493,523,10751,141,25,17,1,32832u},16771,146,0,24075,24060,{2683,6779,10144},{30,0,0},{23,0,0},{255,13,0},{255,255,255},5,12,128,0,3},
-};
-_Static_assert(WIN_CAP >= 2144, "WIN_CAP (level.h) is below what the levels need at once");
-_Static_assert(WIN_CHUNKS >= 17, "WIN_CHUNKS (level.h) is below what the levels need at once");
+  {"NEON START",level0_data,level0_chunks,level0_events,NULL,268,1,0,13368,13380,{24,66,125},{22,18,64},{94,36,160},{255,214,102},{255,255,255},1,1,150,0,3},
+  {"PULSE RIDE",level1_data,level1_chunks,level1_events,NULL,464,1,2,17804,17790,{22,44,48},{10,52,60},{16,120,110},{255,180,90},{255,255,255},1,2,135,0,3},
+  {"SKY CIRCUIT",level2_data,level2_chunks,level2_events,NULL,588,1,2,22631,22620,{46,88,157},{58,14,52},{170,40,110},{120,240,210},{255,255,255},2,3,160,0,3},
+  {"SALT FLATS",level3_data,level3_chunks,level3_events,NULL,539,1,2,22483,22470,{37,90,154},{64,40,12},{190,110,30},{255,240,200},{255,255,255},2,4,140,0,3},
+  {"GRID RUNNER",level4_data,level4_chunks,level4_events,NULL,559,1,2,22482,22470,{40,122,133},{14,28,40},{40,90,130},{250,120,80},{255,255,255},3,5,145,0,3},
+  {"HOLLOW BEAT",level5_data,level5_chunks,level5_events,NULL,617,1,2,22628,22620,{45,75,100},{30,10,20},{120,20,60},{255,200,60},{255,255,255},3,6,150,0,3},
+  {"FROST LINE",level6_data,level6_chunks,level6_events,NULL,653,1,2,24415,24420,{34,99,161},{8,40,70},{40,150,200},{230,250,255},{255,255,255},4,7,170,0,3},
+  {"IRON TIDE",level7_data,level7_chunks,level7_events,NULL,609,1,2,24776,24780,{38,93,192},{40,30,30},{110,80,70},{255,160,60},{255,255,255},4,8,142,0,3},
+  {"LUNAR LOOP",level8_data,level8_chunks,level8_events,NULL,581,1,2,23220,23220,{40,105,163},{18,16,40},{70,60,150},{200,200,255},{255,255,255},4,9,130,0,3},
+  {"STATIC STORM",level9_data,level9_chunks,level9_events,NULL,622,1,2,27300,27300,{36,78,180},{6,6,10},{60,60,80},{120,255,120},{255,255,255},5,10,128,0,3},
+  {"MAGMA CORE",level10_data,level10_chunks,level10_events,NULL,679,1,2,25769,25770,{33,41,92},{50,8,0},{170,50,0},{255,220,120},{255,255,255},6,12,132,0,3},
+  {"FINAL SIGNAL",level11_data,level11_chunks,level11_events,NULL,783,1,2,32070,32070,{33,75,98},{0,20,30},{0,90,90},{255,90,200},{255,255,255},6,14,136,0,3},
+};
+_Static_assert(WIN_CAP >= 783, "WIN_CAP (level.h) is below what the levels need at once");
+_Static_assert(WIN_CHUNKS >= 1, "WIN_CHUNKS (level.h) is below what the levels need at once");
diff --git a/games/numdash/src/menu.c b/games/numdash/src/menu.c
index a240b1a..cf47b49 100644
--- a/games/numdash/src/menu.c
+++ b/games/numdash/src/menu.c
@@ -9,17 +9,19 @@
 
 /* Colours the main menu cycles through and the level select page tints. */
 static const uint8_t page_colors[9][3] = {
-  {0, 0, 232}, {227, 0, 229}, {233, 0, 115}, {233, 0, 0}, {231, 112, 0}, {233, 232, 0}, {0, 231, 0}, {0, 227, 228}, {0, 112, 229}};
+  {94, 36, 160}, {16, 120, 110}, {170, 40, 110}, {190, 110, 30}, {40, 90, 130}, {120, 20, 60}, {40, 150, 200}, {110, 80, 70}, {70, 60, 150}};
 static color_t page_color(int i) {
   i %= 9;
   if (i < 0) i += 9;
   return rgb(page_colors[i][0], page_colors[i][1], page_colors[i][2]);
 }
 static int wrap(int v, int n) { v %= n; return v < 0 ? v + n : v; }
-/* GD colours a level's page by its place among all the official levels */
+/* each level's page has the colour of its ground */
 static color_t level_color(int i) {
-  static const uint8_t gd_index[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 19, 21};
-  return page_color(i < (int)sizeof(gd_index) ? gd_index[i] : i);
+  static const uint8_t ground[12][3] = {{94, 36, 160}, {16, 120, 110}, {170, 40, 110}, {190, 110, 30}, {40, 90, 130}, {120, 20, 60},
+                                        {40, 150, 200}, {110, 80, 70}, {70, 60, 150}, {60, 60, 80}, {170, 50, 0}, {0, 90, 90}};
+  if (i >= 0 && i < 12) return rgb(ground[i][0], ground[i][1], ground[i][2]);
+  return page_color(i);
 }
 
 enum { POP_NONE, POP_SETTINGS, POP_STATS, POP_HELP };
@@ -107,8 +109,8 @@ static void main_activate(int id) {
 
 static void main_draw(void) {
   scene_draw();
-  gfx_layer_draw(160, 38, 256, rgb(215, 255, 100), rgb(70, 180, 10), 256);
-  gfx_text_center(FONT_SMALL, 160, 62, T("NUMWORKS EDITION"), rgb(255, 255, 255), rgb(200, 230, 255), 230);
+  gfx_layer_draw(160, 38, 256, rgb(255, 238, 150), rgb(255, 96, 70), 256);
+  gfx_text_center(FONT_SMALL, 160, 62, T("A CALCADE GAME"), rgb(255, 255, 255), rgb(200, 230, 255), 230);
   ui_sprite(SPR_BTN_GARAGE, 62, 118, btn_scale(0), 256);
   ui_sprite(SPR_BTN_PLAY, 160, 114, btn_scale(1), 256);
   ui_sprite(SPR_BTN_CREATOR, 258, 118, btn_scale(2), 256);
@@ -176,10 +178,10 @@ static void popup_draw(void) {
     stat_row(98, T("TOTAL ATTEMPTS"), progress.attempts, -1);
     stat_row(122, T("COMPLETED LEVELS"), completed, -1);
     stat_row(146, T("STARS"), stars, SPR_STAR_UI);
-    stat_row(170, T("SECRET COINS"), coins, SPR_COIN_UI);
+    stat_row(170, T("STAR SHARDS"), coins, SPR_COIN_UI);
   } else {
     static const char *const pages[2][8] = {
-      {T("HOW TO PLAY"), T("OK, EXE OR UP: JUMP"), T("HOLD TO KEEP JUMPING OR TO FLY"), T("TAP IN MID AIR ON AN ORB"), T("BACK: PAUSE    HOME: SAVE AND QUIT"),
+      {T("HOW TO PLAY"), T("OK, EXE OR UP: JUMP"), T("HOLD TO KEEP JUMPING OR TO FLY"), T("PRESS INSIDE A RING TO BOUNCE"), T("BACK: PAUSE    HOME: SAVE AND QUIT"),
        T("PRACTICE: 0 PLACES A CHECKPOINT"), T("BACKSPACE REMOVES THE LAST ONE"), T("START PRACTICE FROM THE PAUSE MENU")},
       {T("LEVEL EDITOR"), T("ARROWS: MOVE    OK: USE TOOL"), T("0: BUILD / EDIT / DELETE"), T("+ -  OR TOOLBOX: PICK OBJECT"), T("SHIFT: ROTATE    XNT: COPY"),
        T("ALPHA: UNDO    BACKSPACE: ERASE"), T("VAR: SAVE    LN: LEVEL SETTINGS"), T("EXE: PLAYTEST    BACK: EXIT")}};
@@ -232,9 +234,9 @@ static void level_page(int page, int dx) {
   for (int k = 0; k < 3; k++)
     gfx_sprite((s->coins >> k & 1) ? SPR_COIN_UI : SPR_COIN_UI_EMPTY, cx + 72 + k * 17, 108, 0, 0xffff, 256, BLEND_NORMAL);
   ui_title(FONT_SMALL, cx, 138, T("NORMAL MODE"));
-  ui_progress_bar(cx, 149, 220, 14, s->normal, rgb(0, 255, 0), true);
+  ui_progress_bar(cx, 149, 220, 14, s->normal, rgb(255, 122, 89), true);
   ui_title(FONT_SMALL, cx, 173, T("PRACTICE MODE"));
-  ui_progress_bar(cx, 184, 220, 14, s->practice, rgb(0, 255, 255), true);
+  ui_progress_bar(cx, 184, 220, 14, s->practice, rgb(95, 245, 194), true);
 }
 
 static void select_draw(void) {
@@ -279,7 +281,7 @@ static void garage_tick(void) {
 static void garage_draw(void) {
   ui_gradient_bg(rgb(170, 170, 170));
   gfx_sprite(SPR_ARROW_BACK, 22, 26, 0, 0xffff, 256, BLEND_NORMAL);
-  ui_title(FONT_BIG, 160, 30, T("ICON KIT"));
+  ui_title(FONT_BIG, 160, 30, T("GARAGE"));
   /* preview on a small floor */
   gfx_round_rect(70, 84, 180, 4, 2, 0, 90);
   float bob = 0;
@@ -309,18 +311,21 @@ static void garage_draw(void) {
 
 /* ------------------------------------------------------------ loading */
 
+/* Calcade, 19 octobre 2026 : NumDash's own loading lines (the old ones were Geometry Dash's). */
 static const char *const tips[] = {
-  T("LISTEN TO THE MUSIC TO HELP TIME YOUR JUMPS"), T("BACK FOR MORE ARE YA?"), T("USE PRACTICE MODE TO LEARN THE LAYOUT OF A LEVEL"),
-  T("IF AT FIRST YOU DON'T SUCCEED, TRY, TRY AGAIN..."), T("CUSTOMIZE YOUR CHARACTER'S ICON AND COLOR!"),
-  T("SPIKES ARE NOT YOUR FRIENDS. DON'T FORGET TO JUMP"), T("BUILD YOUR OWN LEVELS USING THE LEVEL EDITOR"),
-  T("CAN YOU BEAT THEM ALL?"), T("PRO TIP: DON'T CRASH"), T("HOLD DOWN TO KEEP JUMPING"), T("PRO TIP: JUMP"),
-  T("PLAY, CRASH, RINSE AND REPEAT"), T("ONLY ONE BUTTON REQUIRED TO CRASH"), T("IT'S ALL IN THE TIMING"), T("FAKE SPIKES ARE FAKE"),
-  T("WHERE DID I PUT THAT COIN..."), T("CALCULATING CHANCE OF SUCCESS"), T("LOADING WILL BE FINISHED... SOON")};
+  T("TAP IN TIME WITH THE PULSE OF THE LEVEL"), T("PRACTICE MODE KEEPS YOUR CHECKPOINTS"),
+  T("EVERY CRASH TEACHES YOU THE NEXT JUMP"), T("THREE STARS HIDE IN EVERY LEVEL"),
+  T("PAINT YOUR CUBE IN THE GARAGE"), T("A PAD UNDER YOUR FEET MEANS A BIG JUMP"),
+  T("BUILD YOUR OWN LEVELS WITH THE EDITOR"), T("RINGS ONLY WORK IF YOU PRESS IN THEM"),
+  T("HOLD THE KEY TO KEEP JUMPING"), T("THE SHIP RISES WHILE YOU HOLD"),
+  T("LOOK AHEAD, NOT AT YOUR CUBE"), T("WARMING UP THE CALCULATOR..."),
+  T("COUNTING THE SPIKES..."), T("ONE KEY, TWELVE LEVELS"), T("BREATHE, THEN TRY AGAIN"),
+  T("ALMOST READY...")};
 static int tip;
 
 static void loading_draw(void) {
-  scene_background(rgb(0, 102, 255), 0, 0);
-  gfx_layer_draw(160, 96, 256, rgb(215, 255, 100), rgb(70, 180, 10), 256);
+  scene_background(rgb(48, 26, 110), 0, 0);
+  gfx_layer_draw(160, 96, 256, rgb(255, 238, 150), rgb(255, 96, 70), 256);
   float t = app.t / 1.2f;
   if (t > 1) t = 1;
   int w = 200, x = 60, y = 132;
@@ -328,7 +333,7 @@ static void loading_draw(void) {
   gfx_round_rect(x, y, w, 10, 5, rgb(20, 20, 20), 256);
   int fw = (int)((w - 4) * t);
   if (fw > 6) {
-    gfx_round_rect(x + 2, y + 2, fw, 6, 3, rgb(90, 255, 30), 256);
+    gfx_round_rect(x + 2, y + 2, fw, 6, 3, rgb(255, 150, 70), 256);
     gfx_add(x + 4, y + 3, fw - 4, 1, 0xffff, 90);
   }
   /* long tips wrap onto two lines at the space nearest the middle */
@@ -368,7 +373,7 @@ void menu_enter(Screen s) {
   popup = POP_NONE;
   if (s == SCR_LOADING) {
     tip = (int)(frand() * (sizeof(tips) / sizeof(tips[0])));
-    gfx_layer_build(FONT_HUGE, "GEOMETRY DASH");
+    gfx_layer_build(FONT_HUGE, "NUMDASH");
   } else if (s == SCR_MENU) {
     memset(&menu_level, 0, sizeof(menu_level));
     menu_level.name = "";
@@ -377,7 +382,7 @@ void menu_enter(Screen s) {
     for (int c = 0; c < CH_COUNT; c++) memset(menu_level.colors[c], 255, 3);
     app.g.L = NULL;
     runner_reset();
-    gfx_layer_build(FONT_HUGE, "GEOMETRY DASH");
+    gfx_layer_build(FONT_HUGE, "NUMDASH");
     app.sel = 1;
   } else if (s == SCR_SELECT) {
     app.select_page = app.level < LEVEL_COUNT ? app.level : 0;
diff --git a/games/numdash/src/objdefs.c b/games/numdash/src/objdefs.c
index 4e6828f..20cb048 100644
--- a/games/numdash/src/objdefs.c
+++ b/games/numdash/src/objdefs.c
@@ -1,440 +1,178 @@
 /* Generated by tools/levels.py. Do not edit. */
 #include "objdefs.h"
 #include "assets_lv.h"
-const uint8_t tile_prog_data[28764] = {1,226,226,30,30,1,255,1,226,26,30,30,0,255,0,1,226,226,30,30,1,255,1,226,26,30,30,0,255,1,226,226,230,26,0,255,0,1,226,226,30,30,1,255,1,226,26,230,30,0,255,0,1,226,226,30,30,1,255,0,1,226,226,30,30,1,255,1,226,26,30,30,0,255,1,226,226,230,26,0,255,1,26,226,30,26,0,255,0,1,226,226,30,30,1,255,1,226,226,230,30,0,255,1,26,226,30,30,0,255,0,1,226,26,30,30,0,255,1,226,226,30,230,0,255,1,226,230,230,26,0,255,1,26,230,30,26,0,255,0,1,226,26,30,30,0,255,0,1,226,26,230,30,0,255,0,1,226,226,230,30,0,255,1,26,226,30,30,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,26,30,30,0,255,1,226,226,30,230,0,255,1,226,230,230,26,0,255,1,26,230,30,26,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,26,30,30,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,26,30,30,0,255,1,226,226,230,26,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,26,230,30,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,26,30,30,0,255,1,226,226,230,26,0,255,1,26,226,30,26,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,226,230,30,0,255,1,26,226,30,30,0,255,0,1,226,226,30,30,0,107,1,226,226,30,8,1,191,1,226,26,30,30,0,255,0,1,226,226,30,30,0,107,1,248,226,30,8,1,191,1,226,26,30,30,0,255,1,226,226,230,26,0,255,0,1,226,226,30,30,0,107,1,248,226,30,30,1,191,1,226,226,248,8,1,191,1,226,26,230,30,0,255,0,1,226,226,30,30,0,107,1,226,226,30,8,1,191,0,1,226,226,30,30,0,107,1,246,226,10,8,1,191,1,226,26,30,30,0,255,1,226,226,230,26,0,255,1,26,226,30,26,0,255,0,1,226,226,30,30,0,107,1,246,226,10,30,1,191,1,226,226,230,30,0,255,1,26,226,30,30,0,255,0,1,226,226,30,30,0,107,1,226,226,30,0,1,191,1,246,0,10,30,1,191,1,226,26,230,30,0,255,0,1,226,226,30,30,0,107,1,226,10,246,30,1,191,1,10,10,30,30,1,191,1,246,246,10,10,1,191,1,226,226,246,246,1,191,1,10,226,30,246,1,191,1,226,26,30,30,0,255,1,226,226,30,230,0,255,1,226,230,230,26,0,255,1,26,230,30,26,0,255,0,1,226,226,30,30,1,204,0,130,206,244,218,255,0,255,26,130,218,244,233,12,0,255,26,2,164,210,228,11,0,255,26,2,228,210,28,242,0,255,26,2,28,210,100,28,0,255,26,130,25,244,38,0,0,255,26,130,38,244,50,251,0,255,26,0,130,224,248,234,0,0,255,26,2,168,222,220,31,0,255,26,2,220,222,8,7,0,255,26,2,8,222,68,249,0,255,26,130,17,248,32,4,0,255,26,0,1,226,235,30,21,1,217,1,226,8,30,18,0,255,1,226,18,30,21,0,153,1,234,245,242,253,0,204,1,14,245,22,253,0,204,0,1,226,235,30,21,1,217,1,226,8,30,18,0,255,1,226,18,30,21,0,153,1,234,245,242,253,0,204,1,16,235,30,8,0,128,0,2,226,236,30,20,10,0,217,0,2,226,226,30,30,10,0,217,0,2,241,246,15,10,10,0,217,0,2,241,236,15,20,10,0,217,0,3,7,20,236,20,20,8,18,252,12,244,4,238,248,236,236,10,43,3,7,20,236,20,12,10,10,1,6,250,255,246,246,244,236,10,52,3,7,20,236,20,4,13,3,6,255,1,250,253,243,252,236,10,66,3,7,20,236,20,252,15,251,11,249,7,245,5,241,4,236,10,88,3,7,20,236,20,244,18,244,15,242,14,241,12,238,12,236,10,135,0,3,7,30,226,30,30,11,27,251,19,237,5,229,245,226,226,10,43,3,7,30,226,30,18,15,16,2,9,247,254,240,241,238,226,10,52,3,7,30,226,30,6,19,4,9,255,1,247,252,237,250,226,10,66,3,7,30,226,30,250,23,249,16,245,11,240,7,233,6,226,10,88,3,7,30,226,30,238,26,237,23,236,20,233,19,230,18,226,10,135,0,2,226,226,30,0,10,0,204,3,4,0,226,30,226,30,30,0,30,10,0,3,4,20,226,30,226,30,30,20,30,10,51,3,4,10,226,30,226,30,30,10,30,10,51,3,4,0,226,30,226,30,30,0,30,10,51,0,3,3,242,236,26,20,26,236,10,64,3,3,0,236,26,6,26,236,10,76,3,3,12,236,26,250,26,236,10,89,0,3,3,247,236,31,20,31,236,10,51,3,3,11,236,31,0,31,236,10,89,0,1,226,27,30,30,10,255,1,226,226,30,229,10,255,1,226,226,229,30,10,255,1,27,226,30,30,10,255,0,2,226,30,30,40,6,0,102,2,226,20,30,30,6,102,0,2,226,226,30,236,6,102,0,2,226,216,30,226,6,0,102,3,4,228,226,228,30,224,30,224,226,6,85,3,4,228,226,228,30,231,30,231,226,6,85,3,4,224,226,224,30,221,30,221,226,6,51,3,4,231,226,231,30,234,30,234,226,6,51,3,4,221,226,221,30,218,30,218,226,6,17,3,4,234,226,234,30,238,30,238,226,6,17,3,4,28,226,28,30,25,30,25,226,6,85,3,4,28,226,28,30,32,30,32,226,6,85,3,4,25,226,25,30,22,30,22,226,6,51,3,4,32,226,32,30,35,30,35,226,6,51,3,4,22,226,22,30,18,30,18,226,6,17,3,4,35,226,35,30,38,30,38,226,6,17,0,1,226,254,30,2,10,255,0,2,226,2,30,11,6,0,102,2,226,245,30,254,6,102,0,0,1,226,27,30,30,10,255,1,226,226,229,30,10,255,0,2,226,30,30,40,6,0,102,2,226,20,30,30,6,102,0,3,4,228,226,228,30,224,30,224,226,6,85,3,4,228,226,228,30,231,30,231,226,6,85,3,4,224,226,224,30,221,30,221,226,6,51,3,4,231,226,231,30,234,30,234,226,6,51,3,4,221,226,221,30,218,30,218,226,6,17,3,4,234,226,234,30,238,30,238,226,6,17,0,1,226,27,30,30,10,255,1,226,226,229,30,10,255,1,27,226,30,30,10,255,0,2,226,30,30,40,6,0,102,2,226,20,30,30,6,102,0,3,4,228,226,228,30,224,30,224,226,6,85,3,4,228,226,228,30,231,30,231,226,6,85,3,4,224,226,224,30,221,30,221,226,6,51,3,4,231,226,231,30,234,30,234,226,6,51,3,4,221,226,221,30,218,30,218,226,6,17,3,4,234,226,234,30,238,30,238,226,6,17,3,4,28,226,28,30,25,30,25,226,6,85,3,4,28,226,28,30,32,30,32,226,6,85,3,4,25,226,25,30,22,30,22,226,6,51,3,4,32,226,32,30,35,30,35,226,6,51,3,4,22,226,22,30,18,30,18,226,6,17,3,4,35,226,35,30,38,30,38,226,6,17,0,1,226,226,229,30,10,255,1,27,226,30,30,10,255,0,3,4,228,226,228,30,224,30,224,226,6,85,3,4,228,226,228,30,231,30,231,226,6,85,3,4,224,226,224,30,221,30,221,226,6,51,3,4,231,226,231,30,234,30,234,226,6,51,3,4,221,226,221,30,218,30,218,226,6,17,3,4,234,226,234,30,238,30,238,226,6,17,3,4,28,226,28,30,25,30,25,226,6,85,3,4,28,226,28,30,32,30,32,226,6,85,3,4,25,226,25,30,22,30,22,226,6,51,3,4,32,226,32,30,35,30,35,226,6,51,3,4,22,226,22,30,18,30,18,226,6,17,3,4,35,226,35,30,38,30,38,226,6,17,0,1,226,27,229,30,10,255,0,3,3,226,27,226,30,232,30,10,255,0,3,3,226,28,226,30,236,30,10,255,0,3,4,226,254,30,254,30,2,232,2,10,255,0,2,226,2,30,10,6,0,89,2,226,246,30,254,6,89,0,0,1,226,12,30,15,10,255,1,226,241,30,244,10,255,1,226,241,229,15,10,255,1,27,241,30,15,10,255,0,2,226,15,30,25,6,0,102,2,226,5,30,15,6,102,0,2,226,241,30,251,6,102,0,2,226,231,30,241,6,0,102,3,4,228,241,228,15,224,15,224,241,6,85,3,4,228,241,228,15,231,15,231,241,6,85,3,4,224,241,224,15,221,15,221,241,6,51,3,4,231,241,231,15,234,15,234,241,6,51,3,4,221,241,221,15,218,15,218,241,6,17,3,4,234,241,234,15,238,15,238,241,6,17,3,4,28,241,28,15,25,15,25,241,6,85,3,4,28,241,28,15,32,15,32,241,6,85,3,4,25,241,25,15,22,15,22,241,6,51,3,4,32,241,32,15,35,15,35,241,6,51,3,4,22,241,22,15,18,15,18,241,6,17,3,4,35,241,35,15,38,15,38,241,6,17,0,1,226,12,30,15,10,255,1,226,241,30,244,10,255,0,2,226,15,30,25,6,0,102,2,226,5,30,15,6,102,0,2,226,241,30,251,6,102,0,2,226,231,30,241,6,0,102,0,1,226,12,30,15,10,255,1,226,241,30,244,10,255,1,226,241,229,15,10,255,0,2,226,15,30,25,6,0,102,2,226,5,30,15,6,102,0,2,226,241,30,251,6,102,0,2,226,231,30,241,6,0,102,3,4,228,241,228,15,224,15,224,241,6,85,3,4,228,241,228,15,231,15,231,241,6,85,3,4,224,241,224,15,221,15,221,241,6,51,3,4,231,241,231,15,234,15,234,241,6,51,3,4,221,241,221,15,218,15,218,241,6,17,3,4,234,241,234,15,238,15,238,241,6,17,0,1,226,253,30,3,10,255,0,2,226,3,30,14,6,0,102,2,226,242,30,253,6,102,0,0,1,241,9,15,15,10,255,1,241,241,15,247,10,255,1,241,241,247,15,10,255,1,9,241,15,15,10,255,0,2,241,15,15,25,6,0,102,2,241,5,15,15,6,102,0,2,241,241,15,251,6,102,0,2,241,231,15,241,6,0,102,3,4,242,241,242,15,239,15,239,241,6,85,3,4,242,241,242,15,246,15,246,241,6,85,3,4,239,241,239,15,236,15,236,241,6,51,3,4,246,241,246,15,249,15,249,241,6,51,3,4,236,241,236,15,232,15,232,241,6,17,3,4,249,241,249,15,252,15,252,241,6,17,3,4,14,241,14,15,10,15,10,241,6,85,3,4,14,241,14,15,17,15,17,241,6,85,3,4,10,241,10,15,7,15,7,241,6,51,3,4,17,241,17,15,20,15,20,241,6,51,3,4,7,241,7,15,4,15,4,241,6,17,3,4,20,241,20,15,24,15,24,241,6,17,0,1,226,24,30,30,10,255,1,226,226,30,232,10,255,1,226,226,232,30,10,255,1,24,226,30,30,10,255,0,2,226,30,30,40,6,0,102,2,226,20,30,30,6,102,0,2,226,226,30,236,6,102,0,2,226,216,30,226,6,0,102,3,4,228,226,228,30,224,30,224,226,6,85,3,4,228,226,228,30,231,30,231,226,6,85,3,4,224,226,224,30,221,30,221,226,6,51,3,4,231,226,231,30,234,30,234,226,6,51,3,4,221,226,221,30,218,30,218,226,6,17,3,4,234,226,234,30,238,30,238,226,6,17,3,4,28,226,28,30,25,30,25,226,6,85,3,4,28,226,28,30,32,30,32,226,6,85,3,4,25,226,25,30,22,30,22,226,6,51,3,4,32,226,32,30,35,30,35,226,6,51,3,4,22,226,22,30,18,30,18,226,6,17,3,4,35,226,35,30,38,30,38,226,6,17,0,3,4,225,227,29,31,31,29,227,225,10,255,0,3,4,226,226,30,30,28,32,224,228,6,96,3,4,226,226,30,30,32,28,228,224,6,96,3,4,224,228,28,32,25,35,221,231,6,57,3,4,228,224,32,28,35,25,231,221,6,57,3,4,221,231,25,35,23,37,219,233,6,19,3,4,231,221,35,25,37,23,233,219,6,19,0,3,4,195,228,59,32,61,28,197,224,10,255,0,3,4,196,226,60,30,59,33,195,229,6,96,3,4,196,226,60,30,61,27,197,223,6,96,3,4,195,229,59,33,57,36,193,232,6,57,3,4,197,223,61,27,63,24,199,220,6,57,3,4,193,232,57,36,56,39,192,235,6,19,3,4,199,220,63,24,64,21,200,217,6,19,0,3,3,196,226,60,30,60,226,1,255,3,4,195,228,59,32,61,28,197,224,10,255,3,4,220,226,60,18,60,6,244,226,11,128,0,3,3,226,226,30,30,30,226,10,255,0,3,3,196,226,60,30,60,226,10,255,0,3,4,226,226,30,30,30,20,236,226,15,255,3,4,236,226,30,20,30,10,246,226,16,255,3,4,246,226,30,10,30,0,0,226,17,255,3,4,0,226,30,0,30,246,10,226,18,255,3,4,10,226,30,246,30,236,20,226,19,255,3,4,20,226,30,236,30,226,30,226,20,255,0,3,4,226,30,30,226,20,226,226,20,20,255,3,4,226,20,20,226,10,226,226,10,19,255,3,4,226,10,10,226,0,226,226,0,18,255,3,4,226,0,0,226,246,226,226,246,17,255,3,4,226,246,246,226,236,226,226,236,16,255,3,4,226,236,236,226,226,226,226,226,15,255,0,1,226,226,30,16,12,255,1,226,16,30,30,11,255,0,1,240,226,30,16,12,255,1,226,16,30,30,11,255,1,226,226,240,16,11,255,0,1,241,226,15,16,12,255,1,227,16,29,30,11,255,1,227,226,241,16,11,255,1,15,226,29,16,11,255,0,1,241,226,15,30,12,255,1,227,226,241,30,11,255,1,15,226,29,30,11,255,0,1,240,226,30,30,12,255,1,226,226,240,30,11,255,0,1,226,226,30,30,12,255,1,226,16,240,30,11,255,0,1,240,240,16,16,12,255,1,226,16,30,30,11,255,1,226,226,30,240,11,255,1,226,240,240,16,11,255,1,16,240,30,16,11,255,0,1,240,226,30,30,12,255,1,226,226,240,30,11,255,1,16,16,30,30,11,255,0,1,240,226,30,16,12,255,1,226,16,30,30,11,255,1,226,226,240,16,11,255,1,16,226,30,240,11,255,0,1,226,241,30,15,12,255,1,226,15,30,29,11,255,1,226,227,30,241,11,255,0,1,240,241,30,15,12,255,1,226,15,30,29,11,255,1,226,227,30,241,11,255,1,226,241,240,15,11,255,0,1,226,226,30,30,12,255,0,1,226,240,16,30,12,255,1,226,226,30,240,11,255,1,16,240,30,30,11,255,0,3,3,226,226,30,10,30,226,12,255,3,4,226,226,246,226,30,10,30,30,11,255,0,3,3,196,226,60,14,60,226,12,255,3,4,196,226,227,226,60,14,60,30,11,255,0,1,226,226,30,30,12,255,3,3,226,10,226,30,246,30,11,255,0,1,226,226,30,30,12,255,3,3,226,14,226,30,1,30,11,255,0,3,4,226,226,226,30,30,30,30,226,12,255,3,3,226,10,226,30,246,30,11,255,0,1,226,16,30,30,11,255,0,1,226,16,240,30,11,255,0,1,241,241,15,15,10,255,0,1,248,248,8,8,10,255,0,1,226,226,30,30,10,255,0,3,4,225,247,245,10,247,7,227,245,10,255,1,245,7,30,10,10,255,0,1,226,6,30,10,10,255,0,1,241,6,15,10,10,255,0,3,4,243,245,11,13,13,11,245,243,10,255,1,254,10,12,14,10,255,1,10,254,14,12,10,255,0,3,4,239,241,255,1,1,255,241,239,10,255,1,254,254,20,2,10,255,1,254,0,2,20,10,255,0,3,4,243,245,11,13,13,11,245,243,10,255,1,244,10,12,14,10,255,0,3,4,240,247,250,9,252,8,242,245,10,255,1,250,6,15,10,10,255,0,3,4,226,246,246,10,0,10,0,246,10,255,1,0,246,30,10,10,255,0,1,226,246,30,10,10,255,0,3,3,246,246,10,10,10,246,10,255,0,3,4,241,246,5,10,15,10,15,246,10,255,0,1,226,246,30,10,12,255,1,226,7,30,10,10,255,0,3,3,246,246,10,10,10,246,12,255,0,3,4,226,246,246,10,30,10,30,246,1,255,3,4,240,246,245,246,9,10,4,10,11,255,3,4,250,246,255,246,19,10,14,10,11,255,3,4,4,246,9,246,29,10,24,10,11,255,3,4,14,246,19,246,39,10,34,10,11,255,0,1,226,246,30,10,1,255,3,4,222,246,228,246,248,10,242,10,11,255,3,4,234,246,240,246,4,10,254,10,11,255,3,4,246,246,252,246,16,10,10,10,11,255,3,4,2,246,8,246,28,10,22,10,11,255,3,4,14,246,20,246,40,10,34,10,11,255,0,3,3,246,246,10,10,10,246,1,255,3,4,254,246,6,246,10,250,10,2,11,255,0,3,4,241,246,5,10,15,10,15,246,1,255,3,4,252,246,0,246,20,10,16,10,11,255,3,4,4,246,8,246,28,10,24,10,11,255,0,1,226,226,30,30,12,255,1,226,2,255,30,10,255,3,4,226,30,255,30,252,27,229,27,11,255,3,4,226,2,226,30,229,27,229,5,11,178,3,4,226,2,255,2,252,5,229,5,12,255,3,4,255,2,255,30,252,27,252,5,12,255,1,1,2,30,30,10,255,3,4,1,30,30,30,27,27,4,27,11,255,3,4,1,2,1,30,4,27,4,5,11,178,3,4,1,2,30,2,27,5,4,5,12,255,3,4,30,2,30,30,27,27,27,5,12,255,1,226,226,30,254,10,255,3,4,226,254,30,254,27,251,229,251,11,255,3,4,226,226,226,254,229,251,229,229,11,178,3,4,226,226,30,226,27,229,229,229,12,255,3,4,30,226,30,254,27,251,27,229,12,255,0,1,226,226,30,30,12,255,1,226,2,30,30,10,255,3,4,226,30,30,30,27,27,229,27,11,255,3,4,226,2,226,30,229,27,229,5,11,178,3,4,226,2,30,2,27,5,229,5,12,255,3,4,30,2,30,30,27,27,27,5,12,255,1,226,226,255,254,10,255,3,4,226,254,255,254,252,251,229,251,11,255,3,4,226,226,226,254,229,251,229,229,11,178,3,4,226,226,255,226,252,229,229,229,12,255,3,4,255,226,255,254,252,251,252,229,12,255,1,1,226,30,254,10,255,3,4,1,254,30,254,27,251,4,251,11,255,3,4,1,226,1,254,4,251,4,229,11,178,3,4,1,226,30,226,27,229,4,229,12,255,3,4,30,226,30,254,27,251,27,229,12,255,0,1,226,226,30,30,12,255,1,228,2,255,28,10,255,3,4,228,28,255,28,252,25,231,25,11,255,3,4,228,2,228,28,231,25,231,5,11,178,3,4,228,2,255,2,252,5,231,5,12,255,3,4,255,2,255,28,252,25,252,5,12,255,1,1,2,30,28,10,255,3,4,1,28,30,28,27,25,4,25,11,255,3,4,1,2,1,28,4,25,4,5,11,178,3,4,1,2,30,2,27,5,4,5,12,255,3,4,30,2,30,28,27,25,27,5,12,255,1,228,226,30,254,10,255,3,4,228,254,30,254,27,251,231,251,11,255,3,4,228,226,228,254,231,251,231,229,11,178,3,4,228,226,30,226,27,229,231,229,12,255,3,4,30,226,30,254,27,251,27,229,12,255,0,1,226,226,30,30,12,255,1,226,2,255,28,10,255,3,4,226,28,255,28,252,25,229,25,11,255,3,4,226,2,226,28,229,25,229,5,11,178,3,4,226,2,255,2,252,5,229,5,12,255,3,4,255,2,255,28,252,25,252,5,12,255,1,1,2,28,28,10,255,3,4,1,28,28,28,25,25,4,25,11,255,3,4,1,2,1,28,4,25,4,5,11,178,3,4,1,2,28,2,25,5,4,5,12,255,3,4,28,2,28,28,25,25,25,5,12,255,1,226,226,28,254,10,255,3,4,226,254,28,254,25,251,229,251,11,255,3,4,226,226,226,254,229,251,229,229,11,178,3,4,226,226,28,226,25,229,229,229,12,255,3,4,28,226,28,254,25,251,25,229,12,255,0,1,226,226,30,30,12,255,1,228,2,255,30,10,255,3,4,228,30,255,30,252,27,231,27,11,255,3,4,228,2,228,30,231,27,231,5,11,178,3,4,228,2,255,2,252,5,231,5,12,255,3,4,255,2,255,30,252,27,252,5,12,255,1,1,2,30,30,10,255,3,4,1,30,30,30,27,27,4,27,11,255,3,4,1,2,1,30,4,27,4,5,11,178,3,4,1,2,30,2,27,5,4,5,12,255,3,4,30,2,30,30,27,27,27,5,12,255,1,228,228,30,254,10,255,3,4,228,254,30,254,27,251,231,251,11,255,3,4,228,228,228,254,231,251,231,231,11,178,3,4,228,228,30,228,27,231,231,231,12,255,3,4,30,228,30,254,27,251,27,231,12,255,0,1,226,226,30,30,12,255,1,226,2,255,30,10,255,3,4,226,30,255,30,252,27,229,27,11,255,3,4,226,2,226,30,229,27,229,5,11,178,3,4,226,2,255,2,252,5,229,5,12,255,3,4,255,2,255,30,252,27,252,5,12,255,1,1,2,28,30,10,255,3,4,1,30,28,30,25,27,4,27,11,255,3,4,1,2,1,30,4,27,4,5,11,178,3,4,1,2,28,2,25,5,4,5,12,255,3,4,28,2,28,30,25,27,25,5,12,255,1,226,228,28,254,10,255,3,4,226,254,28,254,25,251,229,251,11,255,3,4,226,228,226,254,229,251,229,231,11,178,3,4,226,228,28,228,25,231,229,231,12,255,3,4,28,228,28,254,25,251,25,231,12,255,0,1,226,226,30,30,12,255,1,228,12,252,28,10,255,3,4,228,28,252,28,249,25,231,25,11,255,3,4,228,12,228,28,231,25,231,15,11,178,3,4,228,12,252,12,249,15,231,15,12,255,3,4,252,12,252,28,249,25,249,15,12,255,1,254,12,28,28,10,255,3,4,254,28,28,28,25,25,1,25,11,255,3,4,254,12,254,28,1,25,1,15,11,178,3,4,254,12,28,12,25,15,1,15,12,255,3,4,28,12,28,28,25,25,25,15,12,255,1,228,248,8,8,10,255,3,4,228,8,8,8,5,5,231,5,11,255,3,4,228,248,228,8,231,5,231,251,11,178,3,4,228,248,8,248,5,251,231,251,12,255,3,4,8,248,8,8,5,5,5,251,12,255,1,10,248,28,8,10,255,3,4,10,8,28,8,25,5,13,5,11,255,3,4,10,248,10,8,13,5,13,251,11,178,3,4,10,248,28,248,25,251,13,251,12,255,3,4,28,248,28,8,25,5,25,251,12,255,1,228,228,246,244,10,255,3,4,228,244,246,244,243,241,231,241,11,255,3,4,228,228,228,244,231,241,231,231,11,178,3,4,228,228,246,228,243,231,231,231,12,255,3,4,246,228,246,244,243,241,243,231,12,255,1,248,228,28,244,10,255,3,4,248,244,28,244,25,241,251,241,11,255,3,4,248,228,248,244,251,241,251,231,11,178,3,4,248,228,28,228,25,231,251,231,12,255,3,4,28,228,28,244,25,241,25,231,12,255,0,1,226,226,30,30,12,255,1,226,16,244,30,10,255,3,4,226,30,244,30,241,27,229,27,11,255,3,4,226,16,226,30,229,27,229,19,11,178,3,4,226,16,244,16,241,19,229,19,12,255,3,4,244,16,244,30,241,27,241,19,12,255,1,246,16,10,30,10,255,3,4,246,30,10,30,7,27,249,27,11,255,3,4,246,16,246,30,249,27,249,19,11,178,3,4,246,16,10,16,7,19,249,19,12,255,3,4,10,16,10,30,7,27,7,19,12,255,1,12,16,30,30,10,255,3,4,12,30,30,30,27,27,15,27,11,255,3,4,12,16,12,30,15,27,15,19,11,178,3,4,12,16,30,16,27,19,15,19,12,255,3,4,30,16,30,30,27,27,27,19,12,255,1,226,0,0,14,10,255,3,4,226,14,0,14,253,11,229,11,11,255,3,4,226,0,226,14,229,11,229,3,11,178,3,4,226,0,0,0,253,3,229,3,12,255,3,4,0,0,0,14,253,11,253,3,12,255,1,2,0,30,14,10,255,3,4,2,14,30,14,27,11,5,11,11,255,3,4,2,0,2,14,5,11,5,3,11,178,3,4,2,0,30,0,27,3,5,3,12,255,3,4,30,0,30,14,27,11,27,3,12,255,1,226,240,244,254,10,255,3,4,226,254,244,254,241,251,229,251,11,255,3,4,226,240,226,254,229,251,229,243,11,178,3,4,226,240,244,240,241,243,229,243,12,255,3,4,244,240,244,254,241,251,241,243,12,255,1,246,240,10,254,10,255,3,4,246,254,10,254,7,251,249,251,11,255,3,4,246,240,246,254,249,251,249,243,11,178,3,4,246,240,10,240,7,243,249,243,12,255,3,4,10,240,10,254,7,251,7,243,12,255,1,12,240,30,254,10,255,3,4,12,254,30,254,27,251,15,251,11,255,3,4,12,240,12,254,15,251,15,243,11,178,3,4,12,240,30,240,27,243,15,243,12,255,3,4,30,240,30,254,27,251,27,243,12,255,1,226,226,0,238,10,255,3,4,226,238,0,238,253,235,229,235,11,255,3,4,226,226,226,238,229,235,229,229,11,178,3,4,226,226,0,226,253,229,229,229,12,255,3,4,0,226,0,238,253,235,253,229,12,255,1,2,226,30,238,10,255,3,4,2,238,30,238,27,235,5,235,11,255,3,4,2,226,2,238,5,235,5,229,11,178,3,4,2,226,30,226,27,229,5,229,12,255,3,4,30,226,30,238,27,235,27,229,12,255,0,1,226,0,0,14,10,255,3,4,226,14,0,14,253,11,229,11,11,255,3,4,226,0,226,14,229,11,229,3,11,178,3,4,226,0,0,0,253,3,229,3,12,255,3,4,0,0,0,14,253,11,253,3,12,255,1,2,0,30,14,10,255,3,4,2,14,30,14,27,11,5,11,11,255,3,4,2,0,2,14,5,11,5,3,11,178,3,4,2,0,30,0,27,3,5,3,12,255,3,4,30,0,30,14,27,11,27,3,12,255,1,226,240,244,254,10,255,3,4,226,254,244,254,241,251,229,251,11,255,3,4,226,240,226,254,229,251,229,243,11,178,3,4,226,240,244,240,241,243,229,243,12,255,3,4,244,240,244,254,241,251,241,243,12,255,1,246,240,10,254,10,255,3,4,246,254,10,254,7,251,249,251,11,255,3,4,246,240,246,254,249,251,249,243,11,178,3,4,246,240,10,240,7,243,249,243,12,255,3,4,10,240,10,254,7,251,7,243,12,255,1,12,240,30,254,10,255,3,4,12,254,30,254,27,251,15,251,11,255,3,4,12,240,12,254,15,251,15,243,11,178,3,4,12,240,30,240,27,243,15,243,12,255,3,4,30,240,30,254,27,251,27,243,12,255,1,226,226,0,238,10,255,3,4,226,238,0,238,253,235,229,235,11,255,3,4,226,226,226,238,229,235,229,229,11,178,3,4,226,226,0,226,253,229,229,229,12,255,3,4,0,226,0,238,253,235,253,229,12,255,1,2,226,30,238,10,255,3,4,2,238,30,238,27,235,5,235,11,255,3,4,2,226,2,238,5,235,5,229,11,178,3,4,2,226,30,226,27,229,5,229,12,255,3,4,30,226,30,238,27,235,27,229,12,255,0,1,8,16,30,30,10,255,3,4,8,30,30,30,27,27,11,27,11,255,3,4,8,16,8,30,11,27,11,19,11,178,3,4,8,16,30,16,27,19,11,19,12,255,3,4,30,16,30,30,27,27,27,19,12,255,1,248,0,30,14,10,255,3,4,248,14,30,14,27,11,251,11,11,255,3,4,248,0,248,14,251,11,251,3,11,178,3,4,248,0,30,0,27,3,251,3,12,255,3,4,30,0,30,14,27,11,27,3,12,255,1,236,240,30,254,10,255,3,4,236,254,30,254,27,251,239,251,11,255,3,4,236,240,236,254,239,251,239,243,11,178,3,4,236,240,30,240,27,243,239,243,12,255,3,4,30,240,30,254,27,251,27,243,12,255,1,226,226,30,238,10,255,3,4,226,238,30,238,27,235,229,235,11,255,3,4,226,226,226,238,229,235,229,229,11,178,3,4,226,226,30,226,27,229,229,229,12,255,3,4,30,226,30,238,27,235,27,229,12,255,0,1,226,16,248,30,10,255,3,4,226,30,248,30,245,27,229,27,11,255,3,4,226,16,226,30,229,27,229,19,11,178,3,4,226,16,248,16,245,19,229,19,12,255,3,4,248,16,248,30,245,27,245,19,12,255,1,226,0,8,14,10,255,3,4,226,14,8,14,5,11,229,11,11,255,3,4,226,0,226,14,229,11,229,3,11,178,3,4,226,0,8,0,5,3,229,3,12,255,3,4,8,0,8,14,5,11,5,3,12,255,1,226,240,20,254,10,255,3,4,226,254,20,254,17,251,229,251,11,255,3,4,226,240,226,254,229,251,229,243,11,178,3,4,226,240,20,240,17,243,229,243,12,255,3,4,20,240,20,254,17,251,17,243,12,255,1,226,226,30,238,10,255,3,4,226,238,30,238,27,235,229,235,11,255,3,4,226,226,226,238,229,235,229,229,11,178,3,4,226,226,30,226,27,229,229,229,12,255,3,4,30,226,30,238,27,235,27,229,12,255,0,1,230,16,244,30,10,255,3,4,230,30,244,30,241,27,233,27,11,255,3,4,230,16,230,30,233,27,233,19,11,178,3,4,230,16,244,16,241,19,233,19,12,255,3,4,244,16,244,30,241,27,241,19,12,255,1,246,16,10,30,10,255,3,4,246,30,10,30,7,27,249,27,11,255,3,4,246,16,246,30,249,27,249,19,11,178,3,4,246,16,10,16,7,19,249,19,12,255,3,4,10,16,10,30,7,27,7,19,12,255,1,12,16,30,30,10,255,3,4,12,30,30,30,27,27,15,27,11,255,3,4,12,16,12,30,15,27,15,19,11,178,3,4,12,16,30,16,27,19,15,19,12,255,3,4,30,16,30,30,27,27,27,19,12,255,1,230,0,0,14,10,255,3,4,230,14,0,14,253,11,233,11,11,255,3,4,230,0,230,14,233,11,233,3,11,178,3,4,230,0,0,0,253,3,233,3,12,255,3,4,0,0,0,14,253,11,253,3,12,255,1,2,0,30,14,10,255,3,4,2,14,30,14,27,11,5,11,11,255,3,4,2,0,2,14,5,11,5,3,11,178,3,4,2,0,30,0,27,3,5,3,12,255,3,4,30,0,30,14,27,11,27,3,12,255,1,230,240,244,254,10,255,3,4,230,254,244,254,241,251,233,251,11,255,3,4,230,240,230,254,233,251,233,243,11,178,3,4,230,240,244,240,241,243,233,243,12,255,3,4,244,240,244,254,241,251,241,243,12,255,1,246,240,10,254,10,255,3,4,246,254,10,254,7,251,249,251,11,255,3,4,246,240,246,254,249,251,249,243,11,178,3,4,246,240,10,240,7,243,249,243,12,255,3,4,10,240,10,254,7,251,7,243,12,255,1,12,240,30,254,10,255,3,4,12,254,30,254,27,251,15,251,11,255,3,4,12,240,12,254,15,251,15,243,11,178,3,4,12,240,30,240,27,243,15,243,12,255,3,4,30,240,30,254,27,251,27,243,12,255,1,230,226,0,238,10,255,3,4,230,238,0,238,253,235,233,235,11,255,3,4,230,226,230,238,233,235,233,229,11,178,3,4,230,226,0,226,253,229,233,229,12,255,3,4,0,226,0,238,253,235,253,229,12,255,1,2,226,30,238,10,255,3,4,2,238,30,238,27,235,5,235,11,255,3,4,2,226,2,238,5,235,5,229,11,178,3,4,2,226,30,226,27,229,5,229,12,255,3,4,30,226,30,238,27,235,27,229,12,255,0,1,226,241,30,15,10,255,3,4,226,15,30,15,26,11,230,11,11,255,3,4,226,241,226,15,230,11,230,245,11,178,3,4,226,241,30,241,26,245,230,245,12,255,3,4,30,241,30,15,26,11,26,245,12,255,0,1,246,241,10,15,10,255,3,4,246,15,10,15,7,12,249,12,11,255,3,4,246,241,246,15,249,12,249,244,11,178,3,4,246,241,10,241,7,244,249,244,12,255,3,4,10,241,10,15,7,12,7,244,12,255,0,1,241,241,15,15,10,255,3,4,241,15,15,15,12,12,244,12,11,255,3,4,241,241,241,15,244,12,244,244,11,178,3,4,241,241,15,241,12,244,244,244,12,255,3,4,15,241,15,15,12,12,12,244,12,255,0,1,246,241,10,15,10,255,3,4,246,15,10,15,7,12,249,12,11,255,3,4,246,241,246,15,249,12,249,244,11,178,3,4,246,241,10,241,7,244,249,244,12,255,3,4,10,241,10,15,7,12,7,244,12,255,1,241,10,15,15,11,255,0,1,246,241,10,15,10,255,3,4,246,15,10,15,7,12,249,12,11,255,3,4,246,241,246,15,249,12,249,244,11,178,3,4,246,241,10,241,7,244,249,244,12,255,3,4,10,241,10,15,7,12,7,244,12,255,1,241,241,15,246,12,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,10,217,3,4,230,22,235,22,237,26,232,26,11,255,3,4,240,22,245,22,247,26,243,26,11,255,3,4,251,22,255,22,2,26,253,26,11,255,3,4,5,22,10,22,12,26,8,26,11,255,3,4,16,22,20,22,23,26,18,26,11,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,12,217,3,4,230,22,235,22,237,26,232,26,11,255,3,4,240,22,245,22,247,26,243,26,11,255,3,4,251,22,255,22,2,26,253,26,11,255,3,4,5,22,10,22,12,26,8,26,11,255,3,4,16,22,20,22,23,26,18,26,11,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,10,217,3,4,230,22,235,22,237,26,232,26,11,255,3,4,240,22,245,22,247,26,243,26,11,255,3,4,251,22,255,22,2,26,253,26,11,255,3,4,5,22,10,22,12,26,8,26,11,255,3,4,16,22,20,22,23,26,18,26,11,255,3,4,230,230,234,230,234,22,230,22,11,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,12,217,3,4,230,22,235,22,237,26,232,26,11,255,3,4,240,22,245,22,247,26,243,26,11,255,3,4,251,22,255,22,2,26,253,26,11,255,3,4,5,22,10,22,12,26,8,26,11,255,3,4,16,22,20,22,23,26,18,26,11,255,3,4,230,230,234,230,234,22,230,22,11,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,10,217,3,4,230,230,234,230,234,26,230,26,11,255,3,4,22,230,26,230,26,26,22,26,11,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,12,217,3,4,230,230,234,230,234,26,230,26,11,255,3,4,22,230,26,230,26,26,22,26,11,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,10,217,3,4,230,22,235,22,237,26,232,26,11,255,3,4,240,22,245,22,247,26,243,26,11,255,3,4,251,22,255,22,2,26,253,26,11,255,3,4,5,22,10,22,12,26,8,26,11,255,3,4,16,22,20,22,23,26,18,26,11,255,1,230,230,234,22,11,255,1,22,230,26,22,11,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,12,217,3,4,230,22,235,22,237,26,232,26,11,255,3,4,240,22,245,22,247,26,243,26,11,255,3,4,251,22,255,22,2,26,253,26,11,255,3,4,5,22,10,22,12,26,8,26,11,255,3,4,16,22,20,22,23,26,18,26,11,255,1,230,230,234,22,11,255,1,22,230,26,22,11,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,10,217,3,4,230,22,235,22,237,26,232,26,11,255,3,4,240,22,245,22,247,26,243,26,11,255,3,4,251,22,255,22,2,26,253,26,11,255,3,4,5,22,10,22,12,26,8,26,11,255,3,4,16,22,20,22,23,26,18,26,11,255,3,4,230,230,235,230,237,234,232,234,11,255,3,4,240,230,245,230,247,234,243,234,11,255,3,4,251,230,255,230,2,234,253,234,11,255,3,4,5,230,10,230,12,234,8,234,11,255,3,4,16,230,20,230,23,234,18,234,11,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,10,217,1,236,18,240,22,13,255,1,16,18,20,22,13,255,1,236,234,240,238,13,255,1,16,234,20,238,13,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,12,217,1,246,6,10,10,1,255,1,254,252,2,6,1,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,10,217,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,12,217,0,3,3,226,226,30,30,30,226,13,255,3,3,234,230,26,22,26,230,12,255,3,4,236,232,244,240,248,236,240,228,11,255,3,4,248,244,0,252,4,248,252,240,11,255,3,4,4,0,12,8,16,4,8,252,11,255,0,1,226,226,30,30,13,255,1,230,230,26,26,1,255,1,234,234,22,22,10,217,3,3,226,22,226,30,234,30,11,255,0,1,226,241,30,15,13,255,1,226,245,30,11,1,255,1,226,249,30,7,12,217,3,4,226,8,230,8,233,12,228,12,11,255,3,4,236,8,240,8,243,12,238,12,11,255,3,4,246,8,250,8,253,12,248,12,11,255,3,4,0,8,4,8,7,12,2,12,11,255,3,4,10,8,14,8,17,12,12,12,11,255,3,4,20,8,24,8,27,12,22,12,11,255,3,4,226,244,230,244,233,248,228,248,11,255,3,4,236,244,240,244,243,248,238,248,11,255,3,4,246,244,250,244,253,248,248,248,11,255,3,4,0,244,4,244,7,248,2,248,11,255,3,4,10,244,14,244,17,248,12,248,11,255,3,4,20,244,24,244,27,248,22,248,11,255,0,1,226,241,30,15,13,255,1,226,245,30,11,1,255,1,226,249,30,7,12,217,3,4,226,8,230,8,233,12,228,12,11,255,3,4,236,8,240,8,243,12,238,12,11,255,3,4,246,8,250,8,253,12,248,12,11,255,3,4,0,8,4,8,7,12,2,12,11,255,3,4,10,8,14,8,17,12,12,12,11,255,3,4,20,8,24,8,27,12,22,12,11,255,3,4,226,244,230,244,233,248,228,248,11,255,3,4,236,244,240,244,243,248,238,248,11,255,3,4,246,244,250,244,253,248,248,248,11,255,3,4,0,244,4,244,7,248,2,248,11,255,3,4,10,244,14,244,17,248,12,248,11,255,3,4,20,244,24,244,27,248,22,248,11,255,1,226,241,232,15,13,255,0,1,226,241,30,15,13,255,1,226,245,30,11,1,255,1,226,249,30,7,12,217,3,4,226,8,230,8,233,12,228,12,11,255,3,4,236,8,240,8,243,12,238,12,11,255,3,4,246,8,250,8,253,12,248,12,11,255,3,4,0,8,4,8,7,12,2,12,11,255,3,4,10,8,14,8,17,12,12,12,11,255,3,4,20,8,24,8,27,12,22,12,11,255,3,4,226,244,230,244,233,248,228,248,11,255,3,4,236,244,240,244,243,248,238,248,11,255,3,4,246,244,250,244,253,248,248,248,11,255,3,4,0,244,4,244,7,248,2,248,11,255,3,4,10,244,14,244,17,248,12,248,11,255,3,4,20,244,24,244,27,248,22,248,11,255,1,226,241,232,15,13,255,1,24,241,30,15,13,255,0,1,226,226,30,30,13,255,1,232,232,24,24,10,255,1,232,20,24,24,13,153,0,1,226,241,30,15,13,255,1,232,247,24,9,10,255,1,246,9,10,15,10,255,0,3,8,226,226,226,246,246,246,246,10,10,10,10,30,30,30,30,226,13,255,1,232,232,24,240,10,255,1,16,240,24,24,10,255,0,1,236,226,20,30,13,255,1,244,226,12,30,10,255,1,236,6,20,14,13,255,0,1,226,226,30,0,13,255,1,232,232,24,250,10,255,1,236,0,20,30,13,255,1,244,0,12,30,10,255,0,3,8,226,243,226,2,236,252,246,10,0,254,10,10,20,252,30,2,1,255,1,226,243,30,254,1,255,0,3,7,226,238,226,18,238,2,0,252,18,2,30,18,30,238,1,255,0,3,4,226,238,226,18,246,252,30,238,1,255,0,1,226,241,30,0,1,255,1,232,0,248,15,1,255,1,8,0,24,15,1,255,0,3,3,226,226,30,30,30,226,1,255,1,241,226,0,15,1,255,1,0,226,15,30,1,255,0,3,3,248,248,8,8,8,248,1,255,0,1,248,248,8,8,1,255,0,3,8,226,246,226,2,238,8,250,2,6,8,18,2,30,8,30,246,1,255,0,3,4,226,246,226,254,240,8,30,246,1,255,0,3,5,241,248,241,8,0,0,15,8,15,248,1,255,0,1,226,254,232,1,10,255,1,232,254,235,16,10,255,1,232,14,248,17,10,255,1,245,254,248,16,10,255,1,245,254,11,1,10,255,1,8,254,11,16,10,255,1,8,14,24,17,10,255,1,21,254,24,16,10,255,1,24,254,30,1,10,255,0,1,246,7,10,10,10,255,1,7,246,10,10,10,255,0,3,4,225,227,239,241,241,239,227,225,10,255,1,238,238,242,0,10,255,1,238,254,0,2,10,255,3,4,255,1,15,17,17,15,1,255,10,255,1,14,16,18,30,10,255,1,16,27,30,30,10,255,0,3,4,245,247,9,11,11,9,247,245,10,255,0,3,3,226,226,0,30,30,226,10,255,3,3,232,230,0,21,24,230,11,255,0,3,3,236,237,0,19,20,237,10,255,3,3,242,241,0,10,14,241,11,255,0,3,3,244,244,0,12,12,244,10,255,3,3,250,248,0,3,6,248,11,255,0,3,4,243,245,255,13,1,11,245,243,10,255,3,4,1,13,13,245,11,243,255,11,10,255,1,244,243,12,245,10,255,0,3,4,225,244,255,15,1,12,227,241,10,255,3,4,1,15,31,244,29,241,255,12,10,255,1,226,241,30,244,10,255,0,1,226,11,30,14,10,255,1,226,242,30,245,10,255,1,226,242,229,14,10,255,1,27,242,30,14,10,255,0,2,226,226,30,30,10,38,115,0,2,226,230,30,11,10,140,38,3,4,226,11,226,12,241,20,241,11,10,140,3,4,241,11,241,20,0,26,0,11,10,140,3,4,0,11,0,26,15,20,15,11,10,140,3,4,15,11,15,20,30,12,30,11,10,140,0,2,226,230,30,11,10,140,38,3,4,226,11,226,26,241,14,241,11,10,140,3,4,241,11,241,14,0,11,0,11,10,140,3,4,0,11,0,11,15,14,15,11,10,140,3,4,15,11,15,14,30,26,30,11,10,140,0,2,226,230,30,6,10,128,38,3,3,226,6,236,26,246,6,10,128,3,3,246,6,0,16,10,6,10,128,3,3,10,6,20,26,30,6,10,128,0,2,226,230,30,6,10,128,38,3,3,226,6,241,22,0,6,10,128,3,3,0,6,15,16,30,6,10,128,0,2,226,230,30,6,10,128,38,3,3,241,6,0,24,15,6,10,128,0,1,226,241,30,15,11,255,3,4,216,241,225,241,255,15,246,15,10,255,3,4,234,241,242,241,16,15,8,15,10,255,3,4,251,241,4,241,34,15,25,15,10,255,3,4,12,241,21,241,51,15,42,15,10,255,0,3,3,234,212,22,0,234,44,10,255,0,3,3,230,234,0,22,26,234,10,255,0,1,254,2,2,30,10,255,1,2,254,30,2,10,255,3,4,251,0,0,5,5,0,0,251,11,255,0,1,226,254,30,2,10,255,1,254,226,2,254,10,255,3,4,251,0,0,5,5,0,0,251,11,255,0,1,226,254,248,2,10,255,1,8,254,30,2,10,255,3,4,251,0,0,5,5,0,0,251,11,255,0,1,254,226,2,248,10,255,3,4,251,0,0,5,5,0,0,251,11,255,0,131,4,6,1,32,4,32,252,6,255,10,89,3,4,24,2,76,9,76,247,24,254,10,54,3,4,14,20,78,103,103,78,20,14,10,89,3,4,16,18,47,60,60,47,18,16,10,54,131,4,255,6,252,32,4,32,1,6,10,89,3,4,254,24,247,76,9,76,2,24,10,54,3,4,236,14,153,78,178,103,242,20,10,89,3,4,238,16,196,47,209,60,240,18,10,54,131,4,250,255,224,252,224,4,250,1,10,89,3,4,232,254,180,247,180,9,232,2,10,54,3,4,242,236,178,153,153,178,236,242,10,89,3,4,240,238,209,196,196,209,238,240,10,54,131,4,1,250,4,224,252,224,255,250,10,89,3,4,2,232,9,180,247,180,254,232,10,54,3,4,20,242,103,178,78,153,14,236,10,89,3,4,18,240,60,209,47,196,16,238,10,54,0,3,4,20,3,104,14,104,242,20,253,10,89,3,4,20,2,62,7,62,249,20,254,10,54,3,4,12,16,64,83,83,64,16,12,10,89,3,4,13,15,39,49,49,39,15,13,10,54,3,4,253,20,242,104,14,104,3,20,10,89,3,4,255,20,249,62,7,62,2,20,10,54,3,4,240,12,173,64,192,83,244,16,10,89,3,4,241,13,207,39,217,49,243,15,10,54,3,4,236,253,152,242,152,14,236,3,10,89,3,4,236,255,194,249,194,7,236,2,10,54,3,4,244,240,192,173,173,192,240,244,10,89,3,4,243,241,217,207,207,217,241,243,10,54,3,4,3,236,14,152,242,152,253,236,10,89,3,4,1,236,7,194,249,194,254,236,10,54,3,4,16,244,83,192,64,173,12,240,10,89,3,4,15,243,49,217,39,207,13,241,10,54,0,1,240,12,244,16,12,255,1,244,12,0,16,10,255,1,0,8,4,16,12,255,1,4,12,16,16,10,255,1,240,8,244,12,10,255,1,244,8,248,12,11,255,1,248,8,0,12,10,255,1,4,8,8,12,10,255,1,8,8,12,12,11,255,1,12,8,16,12,10,255,1,240,4,16,8,12,255,1,240,0,248,4,10,255,1,248,252,252,4,12,255,1,252,0,12,4,10,255,1,12,252,16,4,12,255,1,240,252,244,0,10,255,1,244,252,248,0,11,255,1,252,252,4,0,10,255,1,4,252,8,0,11,255,1,8,252,12,0,10,255,1,240,248,16,252,12,255,1,240,244,252,248,10,255,1,252,240,0,248,12,255,1,0,244,16,248,10,255,1,240,240,244,244,11,255,1,244,240,252,244,10,255,1,0,240,8,244,10,255,1,8,240,12,244,11,255,1,12,240,16,244,10,255,0,1,240,240,16,16,10,255,0,1,255,255,1,1,10,255,0,1,240,12,16,16,13,255,1,240,8,244,12,10,255,1,244,8,248,12,11,255,1,248,8,4,12,10,255,1,4,8,8,12,11,255,1,8,8,16,12,10,255,1,240,4,16,8,12,255,1,240,0,252,4,10,255,1,252,252,0,4,12,255,1,0,0,16,4,10,255,1,240,252,244,0,10,255,1,244,252,248,0,11,255,1,248,252,252,0,10,255,1,0,252,8,0,10,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,240,248,16,252,12,255,1,240,240,244,248,10,255,1,244,240,248,248,12,255,1,248,244,8,248,10,255,1,8,240,12,248,12,255,1,12,240,16,248,10,255,1,248,240,0,244,10,255,1,0,240,4,244,11,255,1,4,240,8,244,10,255,0,1,240,12,252,16,10,255,1,252,8,0,16,12,255,1,0,12,16,16,10,255,1,240,8,244,12,10,255,1,244,8,248,12,11,255,1,248,8,252,12,10,255,1,0,8,8,12,10,255,1,8,8,12,12,11,255,1,12,8,16,12,10,255,1,240,4,16,8,12,255,1,240,252,244,4,10,255,1,244,252,248,4,12,255,1,248,0,8,4,10,255,1,8,252,12,4,12,255,1,12,252,16,4,10,255,1,248,252,252,0,10,255,1,252,252,0,0,11,255,1,0,252,8,0,10,255,1,240,248,16,252,12,255,1,240,244,252,248,10,255,1,252,240,0,248,12,255,1,0,244,16,248,10,255,1,240,240,244,244,11,255,1,244,240,252,244,10,255,1,0,240,12,244,10,255,1,12,240,16,244,11,255,0,1,240,12,244,16,13,255,1,244,12,4,16,10,255,1,4,12,8,16,13,255,1,8,12,16,16,10,255,1,240,8,248,12,10,255,1,248,8,252,12,12,255,1,252,8,12,12,10,255,1,12,8,16,12,13,255,1,240,4,244,8,10,255,1,244,4,252,8,12,255,1,252,4,4,8,10,255,1,4,4,8,8,12,255,1,8,0,16,8,10,255,1,240,0,0,4,10,255,1,0,0,8,4,12,255,1,240,252,244,0,13,255,1,244,252,12,0,10,255,1,12,252,16,0,12,255,1,240,248,248,252,10,255,1,248,248,252,252,12,255,1,252,248,8,252,10,255,1,8,248,16,252,12,255,1,240,244,244,248,10,255,1,244,244,252,248,12,255,1,252,244,0,248,10,255,1,0,244,4,248,13,255,1,4,244,16,248,10,255,1,240,240,16,244,10,255,0,1,240,8,248,12,11,255,1,0,8,8,12,11,255,1,12,8,16,12,11,255,1,240,4,244,8,11,255,1,244,4,248,8,10,255,1,248,4,0,8,11,255,1,0,4,8,8,10,255,1,8,4,16,8,11,255,1,240,0,16,4,10,255,1,240,252,244,0,10,255,1,244,252,248,0,11,255,1,248,252,8,0,10,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,240,248,0,252,10,255,1,0,248,4,252,11,255,1,4,248,16,252,10,255,1,240,244,16,248,10,255,1,240,240,248,244,10,255,1,248,240,252,244,11,255,1,252,240,16,244,10,255,0,1,8,12,16,16,13,255,1,8,8,12,12,13,255,1,8,4,16,8,13,255,1,8,0,12,4,13,255,1,8,252,16,0,13,255,1,8,248,12,252,13,255,1,8,244,16,248,13,255,1,8,240,12,244,13,255,0,1,240,12,16,16,13,255,1,240,8,244,12,13,255,1,248,8,252,12,13,255,1,0,8,4,12,13,255,1,8,8,12,12,13,255,0,1,244,8,248,16,10,255,1,4,12,8,16,10,255,1,0,8,8,12,10,255,1,240,244,244,8,10,255,1,244,252,248,8,11,255,1,252,0,0,8,10,255,1,0,0,4,8,11,255,1,4,4,8,8,10,255,1,12,4,16,8,10,255,1,4,0,12,4,10,255,1,12,244,16,4,11,255,1,248,252,0,0,10,255,1,0,244,8,0,11,255,1,8,244,12,0,10,255,1,244,244,252,252,11,255,1,252,244,0,252,10,255,1,240,240,16,244,10,255,0,1,252,4,4,8,10,255,1,248,252,252,4,10,255,1,252,252,4,4,11,255,1,4,252,8,4,10,255,1,244,244,248,252,10,255,1,248,248,4,252,11,255,1,4,248,8,252,12,255,1,8,244,12,252,10,255,1,248,244,8,248,11,255,1,240,240,16,244,10,255,0,1,252,8,0,16,10,255,1,248,252,252,8,10,255,1,252,252,0,8,11,255,1,0,244,4,0,10,255,1,244,244,248,252,10,255,1,248,244,0,252,11,255,1,240,240,8,244,10,255,0,1,252,12,0,16,11,255,1,252,8,0,12,10,255,1,252,0,0,4,11,255,1,252,252,0,0,10,255,1,252,244,0,248,11,255,1,252,240,0,244,10,255,0,1,240,12,16,16,13,255,1,240,8,16,12,10,255,1,244,0,248,8,10,255,1,248,0,252,8,11,255,1,252,0,4,8,10,255,1,4,0,8,8,11,255,1,8,0,12,8,10,255,1,248,240,252,0,10,255,1,252,240,4,0,11,255,1,4,240,8,0,10,255,0,1,248,240,252,16,10,255,1,252,240,4,16,11,255,1,4,240,8,16,10,255,0,1,248,12,4,16,10,255,1,244,4,248,12,10,255,1,4,4,8,12,10,255,1,248,252,4,4,10,255,1,244,244,248,252,10,255,1,4,244,8,252,10,255,1,248,240,4,244,10,255,0,1,248,8,252,12,11,255,1,244,4,0,8,11,255,1,8,4,12,8,11,255,1,248,0,252,4,11,255,1,252,0,0,4,10,255,1,0,0,4,4,11,255,1,8,0,16,4,11,255,1,252,252,4,0,10,255,1,4,252,8,0,11,255,1,248,248,252,252,11,255,1,0,248,4,252,10,255,1,244,244,248,248,11,255,0,1,248,12,252,16,11,255,1,8,12,12,16,11,255,1,244,8,252,12,11,255,1,0,8,4,12,11,255,1,8,8,16,12,11,255,1,240,4,12,8,11,255,1,240,0,244,4,11,255,1,244,0,248,4,10,255,1,248,0,252,4,11,255,1,252,0,0,4,10,255,1,0,0,8,4,11,255,1,8,0,12,4,10,255,1,12,0,16,4,11,255,1,240,252,16,0,10,255,1,240,248,244,252,10,255,1,244,248,248,252,12,255,1,248,248,4,252,10,255,1,4,248,8,252,12,255,1,8,248,16,252,10,255,1,240,244,16,248,10,255,1,240,240,248,244,10,255,1,248,240,252,244,12,255,1,252,240,16,244,10,255,0,1,240,12,16,16,12,255,1,240,244,244,12,12,255,1,244,8,8,12,10,255,1,8,8,12,12,11,255,1,12,244,16,12,12,255,1,244,4,248,8,10,255,1,248,4,252,8,12,255,1,252,4,4,8,10,255,1,4,4,8,8,11,255,1,8,4,12,8,10,255,1,244,252,252,4,10,255,1,252,0,0,4,12,255,1,0,0,4,4,11,255,1,4,252,12,4,10,255,1,252,252,0,0,11,255,1,0,252,4,0,12,255,1,244,248,248,252,10,255,1,248,248,252,252,11,255,1,252,248,4,252,10,255,1,4,248,8,252,12,255,1,8,248,12,252,10,255,1,244,244,248,248,11,255,1,248,244,12,248,10,255,1,240,240,16,244,12,255,0,1,240,12,16,16,13,255,1,240,4,244,12,13,255,1,248,8,252,12,13,255,1,4,4,8,12,13,255,1,252,4,0,8,13,255,1,240,0,12,4,13,255,1,240,244,244,0,13,255,1,0,252,8,0,13,255,1,252,248,0,252,13,255,1,4,244,8,252,13,255,1,248,244,252,248,13,255,1,240,240,248,244,13,255,0,1,248,12,8,16,13,255,1,244,8,12,12,13,255,1,240,0,244,8,13,255,1,244,0,252,8,1,255,1,252,0,4,8,13,255,1,4,0,12,8,1,255,1,12,0,16,8,13,255,1,240,252,252,0,13,255,1,252,252,4,0,1,255,1,4,252,16,0,13,255,1,244,248,12,252,13,255,1,248,244,252,248,13,255,1,0,244,4,248,13,255,1,8,244,12,248,13,255,0,1,240,12,244,16,11,255,1,244,8,248,16,10,255,1,248,12,252,16,12,255,1,252,12,12,16,10,255,1,12,12,16,16,13,255,1,240,8,244,12,13,255,1,248,8,252,12,13,255,1,252,8,8,12,10,255,1,8,8,12,12,11,255,1,12,8,16,12,10,255,1,240,4,244,8,10,255,1,244,4,248,8,13,255,1,248,4,252,8,10,255,1,252,4,0,8,13,255,1,0,4,4,8,12,255,1,4,4,8,8,11,255,1,8,4,16,8,10,255,1,240,0,248,4,10,255,1,248,0,252,4,13,255,1,252,252,0,4,11,255,1,0,0,4,4,13,255,1,4,0,16,4,10,255,1,240,252,244,0,10,255,1,244,252,248,0,11,255,1,248,252,252,0,10,255,1,0,248,4,0,10,255,1,4,252,8,0,12,255,1,8,248,16,0,10,255,1,240,248,244,252,11,255,1,244,248,252,252,10,255,1,252,248,0,252,13,255,1,4,248,8,252,13,255,1,240,244,0,248,10,255,1,0,244,4,248,13,255,1,4,244,8,248,10,255,1,8,244,12,248,13,255,1,12,244,16,248,12,255,1,240,240,244,244,12,255,1,244,240,4,244,10,255,1,4,240,8,244,13,255,1,8,240,12,244,11,255,1,12,240,16,244,13,255,0,1,240,12,4,16,10,255,1,4,12,8,16,13,255,1,8,12,12,16,10,255,1,12,12,16,16,13,255,1,240,8,16,12,10,255,1,240,4,244,8,10,255,1,244,4,252,8,12,255,1,252,4,0,8,10,255,1,0,4,4,8,12,255,1,4,4,16,8,10,255,1,240,0,244,4,13,255,1,244,0,248,4,10,255,1,248,0,252,4,13,255,1,252,0,4,4,10,255,1,4,0,8,4,13,255,1,8,0,16,4,10,255,1,240,248,16,0,10,255,1,240,244,244,248,13,255,1,244,244,0,248,10,255,1,0,244,8,248,12,255,1,8,244,12,248,10,255,1,12,244,16,248,12,255,1,240,240,252,244,10,255,1,252,240,0,244,13,255,1,0,240,4,244,10,255,1,4,240,8,244,13,255,1,8,240,16,244,10,255,0,1,240,8,244,16,10,255,1,244,8,248,16,13,255,1,248,12,252,16,10,255,1,252,12,0,16,12,255,1,0,12,4,16,13,255,1,4,12,12,16,10,255,1,12,12,16,16,12,255,1,248,8,8,12,10,255,1,8,8,16,12,11,255,1,240,4,244,8,11,255,1,244,4,0,8,10,255,1,0,4,8,8,11,255,1,8,4,12,8,13,255,1,12,4,16,8,10,255,1,240,0,248,4,10,255,1,248,0,252,4,12,255,1,252,0,0,4,11,255,1,0,0,16,4,10,255,1,240,252,244,0,10,255,1,244,252,252,0,11,255,1,252,252,0,0,10,255,1,0,248,4,0,13,255,1,4,252,8,0,10,255,1,8,252,12,0,12,255,1,12,252,16,0,13,255,1,240,248,244,252,11,255,1,244,248,248,252,13,255,1,248,248,0,252,10,255,1,4,248,16,252,10,255,1,240,244,252,248,10,255,1,252,244,0,248,11,255,1,0,244,12,248,10,255,1,12,244,16,248,11,255,1,240,240,244,244,10,255,1,244,240,248,244,12,255,1,248,240,252,244,13,255,1,252,240,4,244,10,255,1,4,240,8,244,12,255,1,8,240,12,244,11,255,1,12,240,16,244,10,255,0,1,240,12,4,16,10,255,1,4,12,8,16,12,255,1,8,12,16,16,10,255,1,240,8,0,12,10,255,1,0,8,4,12,11,255,1,4,8,12,12,12,255,1,12,8,16,12,10,255,1,240,4,248,8,10,255,1,248,4,252,8,11,255,1,252,4,4,8,13,255,1,4,4,8,8,11,255,1,8,4,16,8,10,255,1,240,0,244,4,12,255,1,244,0,252,4,10,255,1,252,0,0,4,11,255,1,0,0,16,4,10,255,1,240,252,248,0,12,255,1,248,252,16,0,10,255,1,240,248,244,252,11,255,1,244,248,12,252,10,255,1,12,248,16,252,11,255,1,240,244,4,248,10,255,1,4,244,8,248,11,255,1,8,244,16,248,13,255,1,240,240,252,244,10,255,1,252,240,0,244,12,255,1,0,240,8,244,10,255,1,8,240,12,244,11,255,1,12,240,16,244,10,255,0,1,240,12,16,16,10,255,1,240,8,244,12,12,255,1,244,8,4,12,10,255,1,4,8,8,12,12,255,1,8,8,12,12,10,255,1,12,8,16,12,12,255,1,240,4,252,8,10,255,1,252,4,0,8,13,255,1,0,4,12,8,10,255,1,12,4,16,8,13,255,1,240,0,0,4,10,255,1,0,0,4,4,11,255,1,4,0,8,4,10,255,1,8,0,12,4,13,255,1,12,0,16,4,10,255,1,240,252,244,0,12,255,1,244,252,248,0,10,255,1,248,252,252,0,12,255,1,252,252,16,0,10,255,1,240,248,248,252,10,255,1,248,248,252,252,13,255,1,252,248,0,252,12,255,1,0,248,16,252,10,255,1,240,244,244,248,10,255,1,244,244,248,248,13,255,1,248,244,8,248,10,255,1,8,244,12,248,13,255,1,12,244,16,248,10,255,1,240,240,12,244,10,255,1,12,240,16,244,11,255,0,1,240,12,252,16,10,255,1,252,12,0,16,13,255,1,0,12,16,16,10,255,1,240,8,248,12,10,255,1,248,8,252,12,13,255,1,252,8,8,12,10,255,1,8,4,12,12,11,255,1,12,4,16,12,10,255,1,240,4,244,8,10,255,1,244,4,248,8,13,255,1,248,4,0,8,10,255,1,0,0,4,8,12,255,1,4,4,8,8,10,255,1,240,0,0,4,10,255,1,4,0,16,4,10,255,1,240,248,244,0,10,255,1,244,248,248,0,11,255,1,248,252,8,0,10,255,1,8,252,12,0,13,255,1,12,252,16,0,10,255,1,248,248,4,252,10,255,1,4,248,8,252,13,255,1,8,248,16,252,10,255,1,240,244,0,248,10,255,1,0,244,4,248,13,255,1,4,244,12,248,10,255,1,12,240,16,248,12,255,1,240,240,244,244,10,255,1,244,240,248,244,13,255,1,248,240,12,244,10,255,0,1,240,12,244,16,10,255,1,244,12,248,16,13,255,1,248,12,252,16,12,255,1,252,12,0,16,11,255,1,0,12,8,16,10,255,1,8,12,12,16,13,255,1,12,12,16,16,11,255,1,240,8,244,12,13,255,1,244,8,252,12,11,255,1,252,8,4,12,10,255,1,4,8,8,12,11,255,1,8,8,16,12,10,255,1,240,4,244,8,11,255,1,244,4,252,8,10,255,1,252,4,0,8,12,255,1,0,4,4,8,11,255,1,4,4,12,8,12,255,1,12,4,16,8,10,255,1,240,0,244,4,10,255,1,244,0,248,4,13,255,1,248,0,252,4,11,255,1,252,0,8,4,13,255,1,8,0,12,4,10,255,1,12,0,16,4,11,255,1,240,252,244,0,11,255,1,244,252,0,0,10,255,1,0,252,4,0,13,255,1,4,252,8,0,12,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,240,248,248,252,12,255,1,248,248,252,252,10,255,1,252,248,0,252,13,255,1,0,248,8,252,11,255,1,8,248,16,252,10,255,1,240,244,244,248,13,255,1,244,244,248,248,10,255,1,248,244,0,248,11,255,1,0,244,8,248,10,255,1,8,244,12,248,12,255,1,12,244,16,248,11,255,1,240,240,244,244,12,255,1,244,240,248,244,11,255,1,248,240,0,244,10,255,1,0,240,4,244,13,255,1,4,240,8,244,11,255,1,8,240,16,244,13,255,0,1,240,8,244,16,10,255,1,244,8,248,16,11,255,1,248,12,252,16,10,255,1,252,12,0,16,11,255,1,0,12,4,16,10,255,1,4,12,8,16,12,255,1,8,12,12,16,10,255,1,12,12,16,16,11,255,1,248,8,4,12,10,255,1,4,8,8,12,11,255,1,8,8,12,12,13,255,1,12,8,16,12,12,255,1,240,4,252,8,10,255,1,252,4,0,8,12,255,1,0,4,4,8,10,255,1,4,4,8,8,13,255,1,8,0,12,8,10,255,1,12,4,16,8,11,255,1,240,0,244,4,12,255,1,244,0,248,4,10,255,1,248,0,252,4,11,255,1,252,0,4,4,10,255,1,4,0,8,4,12,255,1,12,0,16,4,12,255,1,240,252,244,0,11,255,1,244,252,248,0,13,255,1,248,252,252,0,12,255,1,252,248,0,0,10,255,1,0,248,4,0,11,255,1,4,252,8,0,10,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,240,248,244,252,13,255,1,244,244,248,252,10,255,1,248,248,252,252,11,255,1,4,248,16,252,10,255,1,240,244,244,248,12,255,1,248,244,252,248,12,255,1,252,244,8,248,10,255,1,8,244,12,248,12,255,1,12,244,16,248,10,255,1,240,240,244,244,10,255,1,244,240,248,244,11,255,1,248,240,252,244,10,255,1,252,240,0,244,12,255,1,0,240,4,244,10,255,1,4,240,8,244,11,255,1,8,240,16,244,10,255,0,1,240,12,244,16,11,255,1,244,12,248,16,10,255,1,248,12,0,16,12,255,1,0,12,12,16,10,255,1,12,12,16,16,12,255,1,240,8,244,12,10,255,1,244,8,248,12,13,255,1,248,8,0,12,10,255,1,0,8,4,12,13,255,1,4,4,16,12,10,255,1,240,4,0,8,10,255,1,0,4,4,8,11,255,1,240,0,248,4,10,255,1,248,0,252,4,12,255,1,252,0,0,4,13,255,1,0,252,4,4,10,255,1,4,0,8,4,11,255,1,8,0,16,4,10,255,1,240,252,252,0,10,255,1,252,252,0,0,11,255,1,4,252,12,0,12,255,1,12,252,16,0,10,255,1,240,248,0,252,10,255,1,0,248,4,252,13,255,1,4,248,12,252,10,255,1,12,248,16,252,13,255,1,240,244,244,248,11,255,1,244,244,12,248,10,255,1,12,244,16,248,11,255,1,240,240,248,244,12,255,1,248,240,4,244,10,255,1,4,240,8,244,12,255,1,8,240,12,244,13,255,1,12,240,16,244,10,255,0,1,240,12,248,16,10,255,1,248,12,252,16,13,255,1,252,12,0,16,11,255,1,0,12,12,16,10,255,1,12,12,16,16,11,255,1,240,8,244,12,10,255,1,244,8,252,12,11,255,1,252,8,4,12,10,255,1,4,8,8,12,12,255,1,8,8,16,12,10,255,1,240,4,244,8,11,255,1,244,4,252,8,10,255,1,252,4,0,8,13,255,1,0,4,8,8,10,255,1,8,4,12,8,12,255,1,12,4,16,8,10,255,1,240,0,248,4,10,255,1,248,0,252,4,11,255,1,252,0,8,4,10,255,1,8,0,16,4,12,255,1,240,252,244,0,12,255,1,244,252,4,0,10,255,1,4,252,8,0,13,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,240,244,244,252,10,255,1,244,248,248,252,12,255,1,248,248,0,252,10,255,1,0,248,8,252,11,255,1,8,248,16,252,10,255,1,244,244,252,248,12,255,1,252,244,0,248,11,255,1,0,244,8,248,10,255,1,8,244,12,248,13,255,1,12,244,16,248,10,255,1,240,240,244,244,13,255,1,244,240,248,244,11,255,1,248,240,4,244,10,255,1,4,240,8,244,11,255,1,8,240,16,244,10,255,0,1,240,12,252,16,10,255,1,252,12,0,16,11,255,1,0,12,4,16,12,255,1,4,12,12,16,10,255,1,12,12,16,16,11,255,1,240,8,248,12,12,255,1,248,8,252,12,13,255,1,252,8,4,12,10,255,1,4,8,8,12,12,255,1,8,8,12,12,10,255,1,12,4,16,12,12,255,1,240,4,0,8,10,255,1,0,0,4,8,11,255,1,4,4,8,8,10,255,1,8,4,12,8,11,255,1,240,0,248,4,10,255,1,248,0,252,4,11,255,1,252,0,0,4,10,255,1,4,0,16,4,13,255,1,240,252,244,0,12,255,1,244,252,248,0,10,255,1,248,252,252,0,12,255,1,252,252,8,0,10,255,1,8,252,12,0,11,255,1,12,252,16,0,12,255,1,240,248,244,252,10,255,1,244,248,248,252,11,255,1,248,248,4,252,12,255,1,4,248,8,252,13,255,1,8,248,16,252,10,255,1,240,244,252,248,13,255,1,252,244,12,248,10,255,1,12,240,16,248,11,255,1,240,240,244,244,10,255,1,244,240,248,244,11,255,1,248,240,252,244,12,255,1,252,240,4,244,10,255,1,4,240,8,244,11,255,1,8,240,12,244,10,255,0,1,240,8,244,16,12,255,1,244,12,12,16,10,255,1,12,12,16,16,12,255,1,244,8,4,12,10,255,1,4,8,12,12,13,255,1,12,8,16,12,10,255,1,240,4,16,8,10,255,1,240,0,248,4,10,255,1,248,0,0,4,12,255,1,0,248,16,4,10,255,1,240,252,248,0,13,255,1,248,252,252,0,10,255,1,252,248,0,0,12,255,1,240,248,252,252,10,255,1,240,244,16,248,10,255,1,240,240,4,244,10,255,1,4,240,12,244,12,255,1,12,240,16,244,10,255,0,1,240,12,244,16,10,255,1,244,12,248,16,12,255,1,248,12,252,16,10,255,1,252,12,0,16,13,255,1,0,12,16,16,10,255,1,240,8,244,12,13,255,1,244,8,248,12,10,255,1,248,8,252,12,11,255,1,252,8,4,12,10,255,1,4,8,8,12,12,255,1,8,8,12,12,10,255,1,12,8,16,12,12,255,1,240,4,244,8,12,255,1,244,4,248,8,13,255,1,248,4,4,8,10,255,1,4,4,8,8,13,255,1,8,4,12,8,11,255,1,12,0,16,8,13,255,1,240,0,0,4,10,255,1,0,0,4,4,11,255,1,4,0,12,4,10,255,1,240,252,244,0,12,255,1,244,252,248,0,10,255,1,248,252,252,0,12,255,1,252,252,0,0,10,255,1,0,252,4,0,12,255,1,4,252,8,0,10,255,1,8,252,12,0,13,255,1,12,252,16,0,10,255,1,240,248,244,252,13,255,1,244,248,248,252,11,255,1,248,248,0,252,13,255,1,0,248,4,252,10,255,1,4,248,8,252,11,255,1,8,248,16,252,10,255,1,240,244,248,248,10,255,1,248,244,252,248,13,255,1,252,244,0,248,12,255,1,0,244,4,248,13,255,1,4,244,16,248,10,255,1,240,240,244,244,10,255,1,244,240,248,244,13,255,1,248,240,12,244,10,255,1,12,240,16,244,11,255,0,1,240,8,252,16,10,255,1,252,12,0,16,13,255,1,0,8,4,16,10,255,1,4,12,8,16,11,255,1,8,4,16,16,10,255,1,252,8,0,12,12,255,1,4,4,8,12,12,255,1,240,4,0,8,10,255,1,0,4,4,8,13,255,1,240,0,244,4,11,255,1,244,0,252,4,10,255,1,252,0,0,4,13,255,1,0,0,16,4,10,255,1,240,248,244,0,12,255,1,244,248,8,0,10,255,1,8,252,12,0,13,255,1,12,248,16,0,10,255,1,8,248,12,252,12,255,1,240,244,12,248,10,255,1,12,244,16,248,13,255,1,240,240,244,244,10,255,1,244,240,248,244,13,255,1,248,240,252,244,10,255,1,252,240,0,244,11,255,1,0,240,8,244,10,255,1,8,240,12,244,13,255,1,12,240,16,244,10,255,0,1,240,12,248,16,10,255,1,248,12,252,16,12,255,1,252,12,0,16,11,255,1,0,12,4,16,10,255,1,4,12,8,16,12,255,1,8,12,16,16,10,255,1,240,8,244,12,10,255,1,244,8,248,12,11,255,1,248,8,8,12,10,255,1,8,8,12,12,12,255,1,12,8,16,12,10,255,1,240,4,244,8,11,255,1,244,4,248,8,10,255,1,248,4,252,8,11,255,1,252,4,16,8,10,255,1,240,0,244,4,12,255,1,244,0,12,4,10,255,1,12,0,16,4,11,255,1,240,252,244,0,10,255,1,244,252,248,0,12,255,1,248,252,4,0,10,255,1,4,252,8,0,12,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,240,248,0,252,10,255,1,0,248,4,252,11,255,1,4,248,16,252,10,255,1,240,244,248,248,10,255,1,248,244,0,248,11,255,1,0,244,4,248,10,255,1,4,244,8,248,11,255,1,8,244,16,248,10,255,1,240,240,244,244,12,255,1,244,240,248,244,11,255,1,248,240,252,244,10,255,1,252,240,0,244,12,255,1,0,240,16,244,10,255,0,1,240,12,244,16,11,255,1,244,12,252,16,10,255,1,252,12,0,16,11,255,1,0,12,16,16,10,255,1,240,8,244,12,10,255,1,244,8,248,12,11,255,1,248,8,252,12,13,255,1,252,8,16,12,10,255,1,240,4,8,8,10,255,1,8,4,12,8,12,255,1,12,4,16,8,13,255,1,240,0,12,4,10,255,1,12,0,16,4,12,255,1,240,252,252,0,10,255,1,252,252,0,0,11,255,1,0,252,8,0,10,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,240,248,244,252,10,255,1,244,248,248,252,12,255,1,248,248,252,252,13,255,1,252,248,0,252,10,255,1,0,248,4,252,11,255,1,4,248,8,252,13,255,1,8,248,16,252,10,255,1,240,244,248,248,10,255,1,248,244,252,248,12,255,1,252,244,16,248,10,255,1,240,240,244,244,10,255,1,244,240,248,244,11,255,1,248,240,16,244,10,255,0,1,240,4,244,16,10,255,1,244,12,248,16,11,255,1,248,12,252,16,10,255,1,252,12,0,16,11,255,1,0,12,16,16,10,255,1,244,4,248,12,12,255,1,248,8,16,12,10,255,1,248,4,12,8,10,255,1,12,4,16,8,12,255,1,240,0,8,4,10,255,1,8,252,12,4,11,255,1,12,252,16,4,10,255,1,240,252,0,0,10,255,1,0,252,4,0,11,255,1,4,252,8,0,10,255,1,240,248,248,252,10,255,1,248,248,252,252,12,255,1,252,248,0,252,10,255,1,0,244,4,252,12,255,1,4,244,16,252,10,255,1,240,240,244,248,10,255,1,244,240,248,248,11,255,1,248,244,0,248,10,255,1,248,240,16,244,10,255,0,1,240,12,252,16,10,255,1,252,12,0,16,11,255,1,0,12,4,16,10,255,1,4,12,8,16,13,255,1,8,12,16,16,10,255,1,240,4,244,12,10,255,1,244,8,248,12,12,255,1,248,8,252,12,13,255,1,252,8,16,12,10,255,1,244,4,248,8,13,255,1,248,4,16,8,10,255,1,240,0,244,4,13,255,1,244,0,12,4,10,255,1,12,0,16,4,13,255,1,240,252,8,0,10,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,240,248,0,252,10,255,1,0,248,4,252,12,255,1,4,248,8,252,13,255,1,8,248,16,252,10,255,1,240,244,248,248,10,255,1,248,244,252,248,13,255,1,252,244,0,248,10,255,1,0,244,4,248,13,255,1,4,244,16,248,10,255,1,240,240,244,244,10,255,1,244,240,248,244,11,255,1,248,240,252,244,10,255,1,252,240,0,244,13,255,1,0,240,16,244,10,255,0,1,240,12,244,16,10,255,1,244,4,248,16,12,255,1,248,8,252,16,10,255,1,252,8,0,16,11,255,1,0,12,8,16,10,255,1,8,12,12,16,11,255,1,12,12,16,16,10,255,1,240,8,244,12,13,255,1,0,8,4,12,12,255,1,4,8,16,12,10,255,1,240,0,244,8,10,255,1,248,4,252,8,13,255,1,252,4,4,8,10,255,1,4,4,8,8,12,255,1,8,4,16,8,10,255,1,244,0,248,4,11,255,1,248,0,252,4,10,255,1,252,0,0,4,13,255,1,0,0,12,4,10,255,1,12,0,16,4,13,255,1,240,252,0,0,10,255,1,0,244,4,0,12,255,1,4,248,8,0,10,255,1,8,248,12,0,11,255,1,12,252,16,0,10,255,1,240,248,244,252,12,255,1,244,248,252,252,10,255,1,252,248,0,252,13,255,1,12,248,16,252,12,255,1,240,244,248,248,10,255,1,248,244,252,248,13,255,1,252,244,0,248,10,255,1,4,244,8,248,13,255,1,8,244,16,248,10,255,1,240,240,244,244,10,255,1,244,240,248,244,11,255,1,248,240,0,244,10,255,1,0,240,4,244,11,255,1,4,240,8,244,10,255,1,8,240,12,244,13,255,1,12,240,16,244,10,255,0,1,240,12,244,16,10,255,1,244,12,248,16,11,255,1,248,12,12,16,10,255,1,12,12,16,16,11,255,1,240,8,244,12,11,255,1,244,8,4,12,10,255,1,4,8,8,12,12,255,1,8,8,16,12,10,255,1,240,4,0,8,10,255,1,0,4,4,8,11,255,1,4,0,8,8,10,255,1,8,0,12,8,11,255,1,12,4,16,8,12,255,1,240,0,248,4,10,255,1,248,0,252,4,11,255,1,252,0,0,4,10,255,1,0,0,4,4,12,255,1,12,0,16,4,10,255,1,240,252,244,0,12,255,1,244,252,0,0,10,255,1,0,252,4,0,11,255,1,4,252,16,0,10,255,1,240,244,244,252,10,255,1,244,244,248,252,11,255,1,248,248,252,252,12,255,1,252,248,0,252,11,255,1,0,248,16,252,10,255,1,248,244,12,248,10,255,1,12,244,16,248,11,255,1,240,240,4,244,10,255,1,4,240,8,244,11,255,1,8,240,12,244,10,255,1,12,240,16,244,12,255,0,1,240,12,248,16,10,255,1,248,12,252,16,11,255,1,252,12,0,16,10,255,1,0,12,4,16,13,255,1,4,12,16,16,10,255,1,240,8,244,12,11,255,1,244,8,4,12,10,255,1,4,8,8,12,12,255,1,8,8,12,12,10,255,1,12,8,16,12,12,255,1,240,4,244,8,12,255,1,244,4,248,8,10,255,1,248,4,252,8,12,255,1,252,4,16,8,10,255,1,240,0,8,4,10,255,1,8,0,12,4,12,255,1,12,0,16,4,10,255,1,240,252,244,0,12,255,1,244,252,248,0,10,255,1,248,252,252,0,12,255,1,252,252,4,0,10,255,1,4,252,8,0,11,255,1,8,252,12,0,10,255,1,12,252,16,0,13,255,1,240,248,252,252,10,255,1,252,248,0,252,11,255,1,0,248,16,252,10,255,1,240,244,244,248,10,255,1,244,244,248,248,12,255,1,248,244,252,248,10,255,1,252,244,0,248,12,255,1,0,244,4,248,10,255,1,4,244,8,248,12,255,1,8,244,16,248,10,255,1,240,240,244,244,11,255,1,244,240,248,244,10,255,1,248,240,252,244,13,255,1,252,240,16,244,10,255,0,1,240,12,248,16,12,255,1,248,12,252,16,13,255,1,252,12,0,16,10,255,1,0,12,4,16,12,255,1,4,12,16,16,10,255,1,240,8,248,12,10,255,1,248,8,0,12,13,255,1,0,8,4,12,10,255,1,4,8,12,12,12,255,1,12,8,16,12,10,255,1,240,4,0,8,10,255,1,0,0,4,8,13,255,1,4,4,8,8,11,255,1,8,4,12,8,12,255,1,12,4,16,8,13,255,1,240,0,252,4,10,255,1,252,0,0,4,11,255,1,4,0,8,4,10,255,1,8,0,12,4,11,255,1,12,0,16,4,10,255,1,240,252,248,0,12,255,1,248,252,252,0,10,255,1,252,252,4,0,12,255,1,4,252,8,0,13,255,1,8,252,12,0,10,255,1,12,252,16,0,12,255,1,240,248,244,252,11,255,1,244,248,248,252,12,255,1,248,248,252,252,13,255,1,252,248,4,252,10,255,1,4,248,12,252,13,255,1,12,248,16,252,10,255,1,240,244,244,248,10,255,1,244,244,248,248,11,255,1,248,244,12,248,10,255,1,12,240,16,248,13,255,1,240,240,244,244,13,255,1,244,240,248,244,10,255,1,248,240,252,244,12,255,1,252,240,8,244,10,255,1,8,240,12,244,11,255,0,1,240,12,0,16,10,255,1,0,8,4,16,12,255,1,4,12,8,16,10,255,1,8,12,12,16,11,255,1,12,12,16,16,10,255,1,240,8,244,12,13,255,1,244,8,248,12,10,255,1,248,8,0,12,13,255,1,4,8,8,12,11,255,1,8,8,16,12,10,255,1,240,4,248,8,10,255,1,248,4,252,8,13,255,1,252,4,0,8,11,255,1,0,4,4,8,13,255,1,4,4,16,8,10,255,1,240,0,244,4,10,255,1,244,0,248,4,11,255,1,248,0,16,4,10,255,1,240,252,244,0,11,255,1,244,252,12,0,10,255,1,12,248,16,0,12,255,1,240,248,252,252,10,255,1,252,248,0,252,13,255,1,0,248,4,252,10,255,1,4,248,12,252,13,255,1,240,244,4,248,10,255,1,4,244,8,248,13,255,1,8,244,12,248,11,255,1,12,244,16,248,13,255,1,240,240,248,244,10,255,1,248,240,252,244,12,255,1,252,240,0,244,10,255,1,0,240,4,244,11,255,1,4,240,16,244,10,255,0,1,240,12,244,16,11,255,1,244,12,248,16,12,255,1,248,12,0,16,10,255,1,0,8,4,16,13,255,1,4,12,8,16,10,255,1,8,12,12,16,12,255,1,12,12,16,16,10,255,1,240,8,0,12,10,255,1,4,8,8,12,11,255,1,8,8,12,12,10,255,1,12,4,16,12,13,255,1,240,4,244,8,12,255,1,244,4,252,8,10,255,1,252,4,0,8,11,255,1,0,4,8,8,10,255,1,8,4,12,8,11,255,1,240,0,244,4,10,255,1,244,0,248,4,12,255,1,248,0,252,4,10,255,1,252,0,4,4,12,255,1,4,0,16,4,10,255,1,240,252,244,0,11,255,1,244,252,248,0,10,255,1,248,248,252,0,13,255,1,252,252,0,0,11,255,1,0,252,4,0,12,255,1,4,252,12,0,10,255,1,12,248,16,0,13,255,1,240,248,244,252,10,255,1,244,248,248,252,11,255,1,252,248,12,252,10,255,1,240,244,252,248,10,255,1,252,244,0,248,12,255,1,0,244,8,248,10,255,1,8,244,12,248,11,255,1,12,244,16,248,10,255,1,240,240,248,244,10,255,1,248,240,252,244,13,255,1,252,240,0,244,10,255,1,0,240,4,244,12,255,1,4,240,8,244,10,255,1,8,240,16,244,12,255,0,1,240,12,244,16,10,255,1,244,12,248,16,11,255,1,248,12,252,16,13,255,1,252,12,12,16,10,255,1,12,12,16,16,13,255,1,240,8,16,12,10,255,1,240,4,12,8,10,255,1,12,4,16,8,12,255,1,240,0,248,4,10,255,1,248,0,252,4,13,255,1,252,0,0,4,10,255,1,0,0,8,4,13,255,1,8,0,12,4,11,255,1,12,0,16,4,10,255,1,240,252,0,0,10,255,1,0,252,4,0,11,255,1,4,252,8,0,13,255,1,8,252,16,0,10,255,1,240,248,248,252,10,255,1,248,248,252,252,12,255,1,252,248,16,252,10,255,1,240,240,244,248,13,255,1,244,244,248,248,11,255,1,248,244,16,248,10,255,1,244,240,4,244,10,255,1,4,240,8,244,13,255,1,8,240,12,244,10,255,1,12,240,16,244,13,255,0,1,240,12,12,16,10,255,1,12,12,16,16,12,255,1,240,8,244,12,12,255,1,244,8,252,12,10,255,1,252,8,0,12,12,255,1,0,8,8,12,10,255,1,8,8,16,12,13,255,1,240,4,244,8,13,255,1,244,4,248,8,10,255,1,248,4,252,8,13,255,1,252,4,12,8,10,255,1,12,4,16,8,12,255,1,240,0,248,4,10,255,1,248,0,4,4,12,255,1,4,0,8,4,10,255,1,8,0,12,4,13,255,1,12,0,16,4,10,255,1,240,252,244,0,10,255,1,244,252,252,0,13,255,1,252,252,16,0,10,255,1,240,248,248,252,10,255,1,248,248,0,252,12,255,1,0,248,8,252,10,255,1,8,248,12,252,12,255,1,12,248,16,252,10,255,1,240,244,244,248,10,255,1,244,244,248,248,13,255,1,248,244,252,248,10,255,1,252,244,0,248,13,255,1,0,244,4,248,10,255,1,4,244,8,248,13,255,1,8,244,16,248,10,255,1,240,240,4,244,10,255,1,4,240,16,244,12,255,0,1,240,12,244,16,12,255,1,244,12,4,16,10,255,1,4,12,8,16,13,255,1,8,12,12,16,10,255,1,12,12,16,16,12,255,1,240,8,16,12,10,255,1,240,4,244,8,10,255,1,244,4,248,8,13,255,1,248,4,0,8,10,255,1,0,4,4,8,11,255,1,4,4,16,8,10,255,1,240,0,244,4,13,255,1,244,0,248,4,10,255,1,248,0,252,4,12,255,1,252,0,4,4,10,255,1,4,0,8,4,11,255,1,8,0,16,4,10,255,1,240,252,252,0,10,255,1,252,252,0,0,12,255,1,0,252,16,0,10,255,1,240,248,16,252,10,255,1,240,244,244,248,11,255,1,244,244,0,248,10,255,1,0,244,4,248,13,255,1,4,244,12,248,10,255,1,12,244,16,248,11,255,1,240,240,252,244,10,255,1,252,240,0,244,13,255,1,0,240,4,244,10,255,1,4,240,8,244,12,255,1,8,240,16,244,10,255,0,1,240,12,248,16,10,255,1,248,12,252,16,11,255,1,252,12,0,16,13,255,1,0,8,4,16,12,255,1,4,12,16,16,10,255,1,240,8,244,12,12,255,1,244,8,248,12,10,255,1,248,8,252,12,13,255,1,252,8,0,12,10,255,1,4,8,12,12,10,255,1,12,8,16,12,13,255,1,240,4,244,8,10,255,1,244,4,248,8,11,255,1,248,4,16,8,10,255,1,240,0,4,4,10,255,1,4,0,8,4,13,255,1,8,0,12,4,10,255,1,12,0,16,4,11,255,1,240,252,248,0,10,255,1,248,252,252,0,13,255,1,252,252,4,0,10,255,1,4,252,8,0,11,255,1,8,252,12,0,13,255,1,12,248,16,0,12,255,1,240,248,252,252,10,255,1,252,248,0,252,12,255,1,0,248,4,252,10,255,1,4,248,8,252,13,255,1,8,248,12,252,10,255,1,240,244,244,248,13,255,1,244,244,248,248,10,255,1,248,244,252,248,11,255,1,252,244,0,248,10,255,1,0,244,4,248,11,255,1,4,244,16,248,10,255,1,240,240,244,244,11,255,1,244,240,248,244,13,255,1,248,240,252,244,12,255,1,252,240,16,244,10,255,0,1,240,12,244,16,12,255,1,244,12,248,16,13,255,1,248,12,0,16,10,255,1,0,12,8,16,12,255,1,8,12,16,16,10,255,1,240,8,252,12,10,255,1,252,8,4,12,13,255,1,4,8,12,12,10,255,1,12,8,16,12,13,255,1,240,4,8,8,10,255,1,8,4,12,8,11,255,1,12,4,16,8,10,255,1,240,0,244,4,12,255,1,244,0,0,4,10,255,1,0,0,4,4,12,255,1,4,0,8,4,11,255,1,8,0,16,4,10,255,1,240,252,248,0,10,255,1,248,252,252,0,13,255,1,252,252,0,0,12,255,1,0,252,4,0,13,255,1,4,252,12,0,10,255,1,12,252,16,0,12,255,1,240,248,244,252,10,255,1,244,248,248,252,11,255,1,248,248,8,252,10,255,1,8,248,16,252,13,255,1,240,244,244,248,11,255,1,244,244,16,248,10,255,1,240,240,248,244,10,255,1,248,240,0,244,12,255,1,0,240,12,244,10,255,1,12,240,16,244,12,255,0,1,240,12,12,16,10,255,1,12,8,16,16,11,255,1,240,4,244,12,10,255,1,244,8,248,12,11,255,1,248,8,4,12,10,255,1,4,4,8,12,12,255,1,8,0,12,12,10,255,1,244,4,248,8,12,255,1,248,4,252,8,10,255,1,252,0,0,8,13,255,1,0,4,4,8,11,255,1,12,0,16,8,12,255,1,240,0,248,4,10,255,1,248,252,252,4,11,255,1,0,0,4,4,10,255,1,4,0,8,4,13,255,1,240,248,244,0,12,255,1,244,244,248,0,10,255,1,252,252,16,0,10,255,1,248,244,252,252,12,255,1,252,244,0,252,10,255,1,0,248,4,252,11,255,1,4,248,16,252,10,255,1,240,244,244,248,13,255,1,0,244,4,248,12,255,1,4,244,8,248,10,255,1,8,240,12,248,13,255,1,12,244,16,248,11,255,1,240,240,4,244,10,255,1,4,240,8,244,11,255,1,12,240,16,244,10,255,0,1,240,12,244,16,13,255,1,244,12,248,16,10,255,1,248,8,252,16,12,255,1,252,12,0,16,10,255,1,0,12,8,16,11,255,1,8,12,12,16,10,255,1,12,12,16,16,11,255,1,240,8,244,12,10,255,1,244,8,248,12,11,255,1,252,8,4,12,11,255,1,4,8,8,12,12,255,1,8,8,12,12,13,255,1,12,4,16,12,10,255,1,240,4,244,8,13,255,1,244,4,252,8,11,255,1,252,4,0,8,13,255,1,0,4,4,8,10,255,1,4,4,8,8,13,255,1,8,4,12,8,12,255,1,240,0,244,4,11,255,1,244,0,248,4,10,255,1,248,0,252,4,11,255,1,252,0,0,4,10,255,1,0,0,4,4,13,255,1,4,248,8,4,12,255,1,8,252,12,4,10,255,1,12,252,16,4,11,255,1,240,252,244,0,12,255,1,244,252,248,0,13,255,1,248,252,252,0,10,255,1,252,252,0,0,13,255,1,0,252,4,0,10,255,1,240,248,244,252,13,255,1,244,248,248,252,12,255,1,248,248,0,252,10,255,1,0,248,4,252,11,255,1,8,248,16,252,11,255,1,240,240,244,248,12,255,1,244,240,248,248,10,255,1,248,244,252,248,11,255,1,252,244,0,248,13,255,1,0,244,8,248,11,255,1,8,244,12,248,13,255,1,12,244,16,248,10,255,1,248,240,0,244,11,255,1,0,240,4,244,10,255,1,4,240,8,244,11,255,1,8,240,12,244,10,255,1,12,240,16,244,13,255,0,1,240,12,244,16,13,255,1,244,12,248,16,10,255,1,248,12,252,16,11,255,1,252,12,12,16,10,255,1,12,12,16,16,12,255,1,240,8,244,12,12,255,1,244,8,248,12,13,255,1,248,8,12,12,10,255,1,12,8,16,12,13,255,1,240,4,244,8,13,255,1,244,4,0,8,10,255,1,0,4,4,8,11,255,1,4,4,8,8,10,255,1,8,4,12,8,13,255,1,12,4,16,8,10,255,1,240,252,248,4,10,255,1,248,0,252,4,12,255,1,252,0,0,4,13,255,1,0,0,16,4,10,255,1,248,252,0,0,13,255,1,0,252,4,0,10,255,1,4,252,8,0,11,255,1,8,252,16,0,10,255,1,240,248,244,252,10,255,1,244,248,248,252,13,255,1,248,248,252,252,10,255,1,252,248,0,252,12,255,1,0,248,4,252,13,255,1,4,248,16,252,10,255,1,240,244,252,248,10,255,1,252,244,0,248,13,255,1,0,244,12,248,10,255,1,12,244,16,248,11,255,1,240,240,244,244,11,255,1,244,240,4,244,10,255,1,4,240,8,244,12,255,1,8,240,12,244,13,255,1,12,240,16,244,10,255,0,1,240,12,248,16,10,255,1,248,12,252,16,11,255,1,252,12,0,16,10,255,1,0,12,4,16,13,255,1,4,12,12,16,10,255,1,12,12,16,16,13,255,1,240,8,244,12,12,255,1,244,8,252,12,10,255,1,252,4,0,12,13,255,1,0,4,8,12,10,255,1,8,0,12,12,13,255,1,12,8,16,12,10,255,1,240,4,252,8,10,255,1,12,4,16,8,11,255,1,240,0,248,4,10,255,1,248,0,252,4,13,255,1,252,0,4,4,10,255,1,4,0,8,4,12,255,1,12,0,16,4,10,255,1,240,248,244,0,10,255,1,244,244,248,0,13,255,1,248,252,4,0,10,255,1,4,252,8,0,11,255,1,8,252,12,0,10,255,1,12,252,16,0,13,255,1,248,248,252,252,11,255,1,252,248,0,252,12,255,1,0,248,8,252,10,255,1,8,244,12,252,13,255,1,12,244,16,252,10,255,1,240,244,244,248,12,255,1,248,244,8,248,10,255,1,240,240,244,244,11,255,1,244,240,248,244,10,255,1,248,240,252,244,13,255,1,252,240,4,244,10,255,1,4,240,8,244,13,255,1,8,240,16,244,10,255,0,1,240,12,244,16,12,255,1,244,12,248,16,11,255,1,248,12,0,16,10,255,1,0,12,4,16,11,255,1,4,12,12,16,13,255,1,12,12,16,16,12,255,1,240,8,244,12,10,255,1,244,8,248,12,13,255,1,248,0,252,12,12,255,1,252,8,4,12,10,255,1,4,8,8,12,13,255,1,8,8,12,12,10,255,1,12,8,16,12,13,255,1,240,4,244,8,13,255,1,244,4,248,8,11,255,1,252,4,0,8,10,255,1,0,4,4,8,11,255,1,4,4,8,8,10,255,1,8,4,12,8,13,255,1,12,4,16,8,11,255,1,240,0,248,4,13,255,1,252,0,0,4,13,255,1,0,0,4,4,10,255,1,4,0,8,4,11,255,1,8,0,16,4,10,255,1,240,252,244,0,13,255,1,244,252,248,0,10,255,1,248,252,252,0,13,255,1,252,252,0,0,12,255,1,0,252,4,0,11,255,1,4,252,12,0,10,255,1,12,252,16,0,11,255,1,240,248,244,252,10,255,1,244,248,248,252,13,255,1,248,248,252,252,11,255,1,252,248,0,252,10,255,1,0,248,4,252,13,255,1,4,240,8,252,12,255,1,8,248,16,252,10,255,1,240,244,244,248,11,255,1,244,244,252,248,10,255,1,252,244,0,248,13,255,1,0,244,4,248,11,255,1,8,244,12,248,10,255,1,12,244,16,248,11,255,1,240,240,248,244,10,255,1,248,240,252,244,11,255,1,252,240,4,244,13,255,1,8,240,12,244,13,255,1,12,240,16,244,10,255,0,1,240,12,244,16,10,255,1,244,12,252,16,12,255,1,252,12,8,16,10,255,1,8,12,12,16,11,255,1,12,12,16,16,13,255,1,240,8,244,12,13,255,1,244,8,0,12,10,255,1,0,4,4,12,12,255,1,4,4,16,12,10,255,1,240,4,252,8,10,255,1,252,4,0,8,11,255,1,240,0,244,4,10,255,1,244,0,248,4,11,255,1,248,0,0,4,13,255,1,0,0,16,4,10,255,1,240,252,0,0,10,255,1,0,252,8,0,12,255,1,8,252,16,0,10,255,1,240,248,252,252,10,255,1,252,248,0,252,13,255,1,0,248,12,252,10,255,1,12,244,16,252,12,255,1,240,244,8,248,10,255,1,8,244,12,248,11,255,1,240,240,244,244,12,255,1,244,240,0,244,10,255,1,0,240,4,244,11,255,1,4,240,12,244,13,255,1,12,240,16,244,10,255,0,1,240,4,244,16,10,255,1,244,12,248,16,13,255,1,248,12,4,16,10,255,1,4,12,8,16,11,255,1,8,12,12,16,10,255,1,12,12,16,16,11,255,1,244,8,248,12,11,255,1,248,8,252,12,10,255,1,252,8,0,12,12,255,1,0,8,4,12,10,255,1,4,8,8,12,12,255,1,8,8,16,12,10,255,1,244,4,248,8,13,255,1,248,0,252,8,11,255,1,252,4,16,8,10,255,1,240,0,244,4,11,255,1,244,0,248,4,10,255,1,252,0,4,4,10,255,1,4,0,8,4,13,255,1,8,0,12,4,10,255,1,12,0,16,4,12,255,1,240,252,244,0,12,255,1,244,252,0,0,10,255,1,0,252,4,0,13,255,1,4,252,16,0,10,255,1,240,248,0,252,10,255,1,0,248,4,252,11,255,1,4,248,8,252,10,255,1,8,248,12,252,12,255,1,12,248,16,252,10,255,1,240,244,244,248,13,255,1,244,244,248,248,10,255,1,248,244,252,248,12,255,1,252,244,0,248,10,255,1,0,244,4,248,13,255,1,4,240,8,248,11,255,1,8,240,16,248,10,255,1,240,240,252,244,10,255,1,252,240,0,244,11,255,1,0,240,4,244,10,255,0,1,240,12,252,16,10,255,1,252,12,0,16,11,255,1,0,12,8,16,10,255,1,8,12,12,16,11,255,1,12,12,16,16,10,255,1,240,8,244,12,10,255,1,244,8,248,12,11,255,1,248,8,252,12,13,255,1,252,8,0,12,10,255,1,0,8,4,12,12,255,1,4,8,12,12,10,255,1,12,8,16,12,11,255,1,240,4,252,8,10,255,1,252,4,0,8,11,255,1,0,4,4,8,10,255,1,4,4,8,8,11,255,1,8,4,12,8,10,255,1,12,0,16,8,12,255,1,240,0,244,4,10,255,1,244,0,248,4,11,255,1,248,0,252,4,10,255,1,252,0,0,4,12,255,1,0,0,12,4,10,255,1,240,252,248,0,10,255,1,248,252,252,0,11,255,1,252,252,8,0,10,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,240,248,244,252,11,255,1,244,248,248,252,10,255,1,248,244,252,252,12,255,1,252,248,0,252,10,255,1,0,248,4,252,11,255,1,4,248,8,252,13,255,1,8,248,12,252,10,255,1,12,248,16,252,12,255,1,240,244,248,248,10,255,1,252,244,8,248,10,255,1,8,244,12,248,11,255,1,12,240,16,248,10,255,1,240,240,244,244,10,255,1,244,240,248,244,11,255,1,248,240,0,244,10,255,1,0,240,4,244,11,255,1,4,240,8,244,10,255,1,8,240,12,244,12,255,0,1,240,12,244,16,12,255,1,244,12,248,16,10,255,1,248,12,252,16,12,255,1,252,12,0,16,11,255,1,0,12,4,16,10,255,1,4,12,12,16,12,255,1,12,12,16,16,10,255,1,240,8,244,12,10,255,1,244,8,248,12,11,255,1,248,8,0,12,10,255,1,0,8,4,12,13,255,1,4,8,16,12,10,255,1,240,4,244,8,11,255,1,244,4,252,8,10,255,1,252,4,0,8,11,255,1,0,4,8,8,10,255,1,8,4,12,8,12,255,1,12,4,16,8,10,255,1,240,0,248,4,12,255,1,248,0,0,4,10,255,1,0,0,4,4,13,255,1,4,0,8,4,11,255,1,8,0,12,4,10,255,1,12,0,16,4,11,255,1,240,252,252,0,10,255,1,252,252,0,0,12,255,1,0,252,4,0,10,255,1,4,252,8,0,12,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,240,248,244,252,10,255,1,244,248,248,252,12,255,1,248,248,0,252,10,255,1,0,248,4,252,11,255,1,4,248,12,252,10,255,1,12,248,16,252,13,255,1,240,244,244,248,11,255,1,244,244,248,248,10,255,1,248,244,0,248,11,255,1,0,244,8,248,10,255,1,8,244,12,248,11,255,1,12,244,16,248,10,255,1,240,240,244,244,12,255,1,244,240,248,244,11,255,1,248,240,252,244,10,255,1,252,240,4,244,12,255,1,4,240,12,244,10,255,1,12,240,16,244,13,255,0,1,240,12,244,16,10,255,1,244,12,252,16,12,255,1,252,12,0,16,11,255,1,0,12,12,16,10,255,1,12,8,16,16,11,255,1,240,8,244,12,13,255,1,244,8,248,12,11,255,1,248,8,4,12,10,255,1,4,4,8,12,12,255,1,8,8,12,12,10,255,1,240,4,0,8,10,255,1,0,4,4,8,11,255,1,8,4,16,8,13,255,1,240,0,248,4,10,255,1,248,252,252,4,11,255,1,252,0,0,4,13,255,1,0,0,12,4,10,255,1,12,0,16,4,11,255,1,240,248,244,0,12,255,1,244,252,248,0,10,255,1,252,252,0,0,10,255,1,0,252,8,0,12,255,1,8,252,12,0,11,255,1,12,252,16,0,10,255,1,244,248,0,252,13,255,1,0,248,4,252,11,255,1,4,248,16,252,10,255,1,240,244,248,248,10,255,1,248,244,252,248,11,255,1,252,244,12,248,10,255,1,12,244,16,248,11,255,1,240,240,244,244,12,255,1,244,240,248,244,11,255,1,248,240,4,244,10,255,1,4,240,8,244,11,255,1,8,240,12,244,13,255,1,12,240,16,244,10,255,0,1,240,12,252,16,10,255,1,252,12,0,16,11,255,1,0,8,4,16,10,255,1,4,12,8,16,11,255,1,8,12,12,16,10,255,1,12,12,16,16,11,255,1,240,8,244,12,10,255,1,244,8,252,12,11,255,1,252,8,0,12,12,255,1,4,8,8,12,12,255,1,8,8,12,12,13,255,1,12,8,16,12,10,255,1,240,0,244,8,11,255,1,244,4,248,8,13,255,1,248,0,252,8,11,255,1,252,4,4,8,10,255,1,4,4,8,8,13,255,1,8,4,16,8,10,255,1,244,0,248,4,10,255,1,252,0,0,4,10,255,1,0,0,4,4,13,255,1,4,0,12,4,10,255,1,12,0,16,4,12,255,1,240,252,244,0,12,255,1,244,252,248,0,13,255,1,248,252,8,0,10,255,1,8,252,12,0,11,255,1,12,248,16,0,10,255,1,240,248,244,252,13,255,1,244,248,0,252,10,255,1,0,248,8,252,11,255,1,8,248,12,252,12,255,1,240,244,248,248,10,255,1,248,244,252,248,12,255,1,252,240,0,248,11,255,1,0,244,4,248,13,255,1,4,240,8,248,11,255,1,8,244,16,248,10,255,1,240,240,244,244,10,255,1,244,240,248,244,11,255,1,248,240,252,244,10,255,1,0,240,4,244,10,255,1,8,240,12,244,10,255,1,12,240,16,244,13,255,0,1,240,12,252,16,10,255,1,252,12,0,16,11,255,1,0,12,4,16,12,255,1,4,12,8,16,13,255,1,8,12,12,16,10,255,1,12,12,16,16,11,255,1,240,4,244,12,10,255,1,244,8,248,12,12,255,1,248,8,252,12,13,255,1,252,8,0,12,10,255,1,0,4,4,12,11,255,1,4,8,8,12,12,255,1,8,8,12,12,11,255,1,12,8,16,12,10,255,1,244,4,248,8,11,255,1,248,4,252,8,12,255,1,252,4,0,8,13,255,1,4,0,12,8,10,255,1,12,4,16,8,12,255,1,240,0,244,4,13,255,1,244,0,248,4,10,255,1,248,0,252,4,11,255,1,252,0,0,4,10,255,1,0,0,4,4,12,255,1,12,0,16,4,13,255,1,240,252,244,0,12,255,1,244,252,248,0,11,255,1,248,252,8,0,10,255,1,8,252,12,0,11,255,1,12,252,16,0,12,255,1,240,244,248,252,10,255,1,248,248,252,252,12,255,1,252,244,0,252,10,255,1,0,248,4,252,12,255,1,4,248,8,252,13,255,1,8,248,12,252,10,255,1,12,244,16,252,11,255,1,248,244,252,248,13,255,1,0,244,4,248,11,255,1,4,244,8,248,12,255,1,8,244,12,248,13,255,1,240,240,244,244,10,255,1,244,240,248,244,11,255,1,248,240,252,244,12,255,1,252,240,0,244,13,255,1,0,240,4,244,10,255,1,4,240,8,244,11,255,1,8,240,12,244,10,255,1,12,240,16,244,12,255,0,1,240,12,244,16,12,255,1,244,12,252,16,10,255,1,252,8,0,16,11,255,1,0,12,4,16,13,255,1,4,12,12,16,10,255,1,12,12,16,16,11,255,1,240,8,244,12,10,255,1,244,4,248,12,12,255,1,248,4,252,12,10,255,1,0,8,4,12,10,255,1,4,8,8,12,12,255,1,8,8,16,12,10,255,1,240,4,244,8,11,255,1,252,4,0,8,13,255,1,0,4,16,8,10,255,1,240,0,248,4,10,255,1,248,0,252,4,11,255,1,252,0,4,4,10,255,1,4,0,8,4,11,255,1,8,0,16,4,10,255,1,240,252,244,0,12,255,1,244,252,252,0,10,255,1,252,252,0,0,12,255,1,0,252,8,0,10,255,1,8,248,12,0,11,255,1,12,252,16,0,13,255,1,240,248,0,252,10,255,1,0,244,4,252,12,255,1,4,244,8,252,10,255,1,12,244,16,252,10,255,1,240,244,244,248,11,255,1,244,244,252,248,10,255,1,252,244,0,248,11,255,1,8,244,12,248,13,255,1,240,240,244,244,10,255,1,244,240,248,244,11,255,1,248,240,252,244,13,255,1,252,240,4,244,10,255,1,4,240,8,244,11,255,1,8,240,16,244,10,255,0,1,240,12,248,16,13,255,1,248,12,252,16,12,255,1,252,8,0,16,13,255,1,0,12,16,16,10,255,1,240,8,244,12,13,255,1,244,8,252,12,10,255,1,0,8,4,12,12,255,1,4,8,8,12,10,255,1,8,8,12,12,13,255,1,12,8,16,12,12,255,1,240,4,248,8,10,255,1,248,4,252,8,13,255,1,252,4,4,8,10,255,1,4,4,12,8,13,255,1,12,4,16,8,10,255,1,240,0,4,4,10,255,1,4,252,8,4,12,255,1,8,0,12,4,10,255,1,12,0,16,4,11,255,1,240,252,244,0,10,255,1,244,252,248,0,13,255,1,248,252,252,0,12,255,1,252,252,4,0,13,255,1,8,248,12,0,13,255,1,12,252,16,0,10,255,1,240,248,248,252,13,255,1,248,248,252,252,10,255,1,252,248,0,252,13,255,1,0,248,8,252,10,255,1,12,248,16,252,12,255,1,240,240,244,248,12,255,1,244,244,248,248,10,255,1,248,244,252,248,11,255,1,252,244,4,248,10,255,1,4,244,8,248,13,255,1,8,244,16,248,10,255,1,244,240,248,244,13,255,1,248,240,16,244,10,255,0,1,240,12,248,16,10,255,1,248,12,252,16,13,255,1,252,8,0,16,12,255,1,0,12,4,16,10,255,1,4,12,8,16,11,255,1,8,12,12,16,10,255,1,12,4,16,16,12,255,1,240,8,244,12,10,255,1,244,4,248,12,13,255,1,248,8,252,12,11,255,1,0,8,12,12,10,255,1,240,0,244,8,11,255,1,248,4,12,8,10,255,1,244,0,248,4,10,255,1,248,248,252,4,12,255,1,252,252,4,4,10,255,1,4,0,12,4,13,255,1,12,248,16,4,10,255,1,240,248,248,0,10,255,1,4,252,8,0,13,255,1,8,248,12,0,12,255,1,252,248,0,252,10,255,1,0,244,4,252,13,255,1,4,248,8,252,11,255,1,240,244,248,248,13,255,1,248,240,252,248,10,255,1,252,240,0,248,11,255,1,4,244,16,248,10,255,1,240,240,244,244,13,255,1,244,240,248,244,12,255,1,0,240,4,244,10,255,1,4,240,8,244,12,255,1,8,240,16,244,10,255,0,1,240,12,244,16,13,255,1,244,12,248,16,10,255,1,248,12,252,16,12,255,1,252,12,0,16,11,255,1,0,12,4,16,12,255,1,4,12,8,16,11,255,1,8,12,12,16,10,255,1,12,12,16,16,11,255,1,240,4,244,12,10,255,1,244,8,248,12,11,255,1,248,8,252,12,13,255,1,252,8,4,12,11,255,1,4,8,8,12,12,255,1,8,8,16,12,10,255,1,244,4,252,8,11,255,1,252,4,0,8,13,255,1,0,4,8,8,10,255,1,8,4,12,8,13,255,1,12,4,16,8,10,255,1,240,0,244,4,11,255,1,244,0,248,4,10,255,1,248,0,252,4,11,255,1,252,0,12,4,10,255,1,12,0,16,4,11,255,1,240,252,244,0,12,255,1,244,252,252,0,10,255,1,252,252,0,0,13,255,1,0,252,4,0,10,255,1,4,252,8,0,12,255,1,8,252,12,0,11,255,1,12,252,16,0,12,255,1,240,248,244,252,10,255,1,244,248,248,252,13,255,1,248,248,0,252,10,255,1,0,248,4,252,11,255,1,4,248,8,252,13,255,1,8,248,16,252,11,255,1,240,244,248,248,10,255,1,248,244,252,248,11,255,1,252,244,0,248,10,255,1,0,244,8,248,11,255,1,8,244,12,248,13,255,1,12,244,16,248,10,255,1,240,240,244,244,12,255,1,244,240,248,244,11,255,1,248,240,252,244,12,255,1,252,240,0,244,11,255,1,0,240,4,244,10,255,1,4,240,8,244,11,255,1,8,240,16,244,10,255,0,1,240,12,0,16,10,255,1,0,12,8,16,11,255,1,8,12,16,16,10,255,1,240,8,244,12,11,255,1,244,8,248,12,10,255,1,248,8,252,12,12,255,1,252,8,4,12,11,255,1,4,8,8,12,10,255,1,8,8,12,12,12,255,1,12,8,16,12,10,255,1,240,4,244,8,10,255,1,244,4,252,8,11,255,1,252,4,0,8,10,255,1,0,4,8,8,13,255,1,8,4,16,8,10,255,1,240,0,244,4,11,255,1,244,0,8,4,10,255,1,8,0,12,4,12,255,1,12,0,16,4,10,255,1,240,252,244,0,10,255,1,244,252,248,0,12,255,1,248,252,12,0,10,255,1,12,252,16,0,11,255,1,240,248,244,252,13,255,1,244,248,252,252,10,255,1,252,248,0,252,11,255,1,0,248,4,252,10,255,1,4,248,8,252,12,255,1,8,248,16,252,11,255,1,240,244,244,248,10,255,1,244,244,248,248,12,255,1,248,244,0,248,10,255,1,0,244,8,248,11,255,1,8,244,12,248,10,255,1,12,244,16,248,13,255,1,240,240,248,244,10,255,1,248,240,0,244,11,255,1,0,240,16,244,10,255,0,1,240,12,8,16,10,255,1,8,12,12,16,13,255,1,12,12,16,16,10,255,1,240,8,244,12,12,255,1,244,8,4,12,10,255,1,4,8,8,12,11,255,1,8,8,12,12,10,255,1,12,8,16,12,13,255,1,240,4,252,8,10,255,1,252,4,0,8,12,255,1,0,4,4,8,13,255,1,4,4,16,8,10,255,1,240,0,244,4,10,255,1,244,0,248,4,13,255,1,248,0,252,4,10,255,1,252,0,0,4,13,255,1,0,0,16,4,10,255,1,240,252,244,0,11,255,1,244,252,248,0,10,255,1,248,252,252,0,13,255,1,252,252,16,0,10,255,1,240,248,252,252,10,255,1,252,248,0,252,12,255,1,0,248,16,252,10,255,1,240,244,8,248,10,255,1,8,244,12,248,12,255,1,12,244,16,248,13,255,1,240,240,0,244,10,255,1,0,240,4,244,13,255,1,4,240,8,244,10,255,1,8,240,12,244,13,255,1,12,240,16,244,10,255,0,1,240,8,244,16,10,255,1,244,12,248,16,11,255,1,248,12,252,16,13,255,1,252,12,0,16,10,255,1,0,12,4,16,12,255,1,4,12,8,16,10,255,1,8,12,12,16,12,255,1,12,12,16,16,10,255,1,244,8,248,12,13,255,1,248,8,16,12,10,255,1,240,4,252,8,10,255,1,252,4,0,8,11,255,1,0,4,12,8,10,255,1,12,4,16,8,12,255,1,240,0,244,4,10,255,1,244,0,248,4,12,255,1,248,0,4,4,10,255,1,4,252,8,4,13,255,1,8,0,12,4,11,255,1,12,0,16,4,10,255,1,240,252,0,0,10,255,1,0,252,4,0,11,255,1,8,252,12,0,10,255,1,12,252,16,0,12,255,1,240,248,248,252,10,255,1,248,248,252,252,12,255,1,252,248,0,252,10,255,1,0,248,4,252,13,255,1,4,248,16,252,10,255,1,240,240,244,248,13,255,1,244,244,248,248,11,255,1,248,244,8,248,10,255,1,8,244,12,248,11,255,1,12,244,16,248,10,255,1,244,240,248,244,10,255,1,248,240,252,244,12,255,1,252,240,0,244,10,255,1,0,240,4,244,12,255,1,4,240,16,244,10,255,0,1,240,12,244,16,10,255,1,244,8,248,16,13,255,1,248,12,252,16,11,255,1,252,12,0,16,10,255,1,0,12,4,16,13,255,1,4,12,8,16,12,255,1,8,12,12,16,11,255,1,12,12,16,16,10,255,1,240,8,244,12,11,255,1,248,8,252,12,10,255,1,252,8,0,12,13,255,1,0,8,4,12,11,255,1,4,8,12,12,10,255,1,12,8,16,12,13,255,1,240,4,244,8,13,255,1,244,4,248,8,10,255,1,248,4,0,8,11,255,1,0,4,16,8,10,255,1,240,0,244,4,12,255,1,244,0,248,4,11,255,1,248,0,252,4,10,255,1,252,0,12,4,12,255,1,12,0,16,4,10,255,1,240,252,248,0,10,255,1,248,252,252,0,13,255,1,252,252,0,0,10,255,1,0,248,4,0,13,255,1,4,252,8,0,11,255,1,8,252,12,0,10,255,1,12,252,16,0,13,255,1,240,248,252,252,10,255,1,252,248,0,252,11,255,1,4,248,8,252,10,255,1,8,248,12,252,13,255,1,12,248,16,252,11,255,1,240,244,248,248,12,255,1,248,244,252,248,10,255,1,252,244,0,248,13,255,1,0,244,4,248,10,255,1,4,244,12,248,11,255,1,12,244,16,248,10,255,1,240,240,244,244,11,255,1,244,240,248,244,10,255,1,248,240,252,244,13,255,1,252,240,0,244,12,255,1,0,240,4,244,11,255,1,4,240,8,244,10,255,1,8,240,16,244,12,255,0,1,240,12,244,16,13,255,1,244,12,248,16,11,255,1,248,12,16,16,10,255,1,240,8,8,12,10,255,1,8,8,12,12,13,255,1,12,8,16,12,10,255,1,240,4,12,8,10,255,1,12,4,16,8,11,255,1,240,0,252,4,10,255,1,252,0,0,4,12,255,1,0,0,4,4,10,255,1,4,0,8,4,12,255,1,8,0,12,4,11,255,1,12,0,16,4,10,255,1,240,252,244,0,10,255,1,244,252,248,0,13,255,1,248,252,252,0,10,255,1,252,252,0,0,13,255,1,0,252,4,0,11,255,1,4,252,16,0,10,255,1,240,248,248,252,10,255,1,248,248,252,252,11,255,1,252,248,16,252,10,255,1,240,244,244,248,12,255,1,244,244,248,248,11,255,1,248,244,16,248,10,255,1,240,240,8,244,10,255,1,8,240,12,244,12,255,1,12,240,16,244,10,255,0,1,240,12,252,16,10,255,1,252,12,0,16,12,255,1,0,12,4,16,10,255,1,4,12,8,16,13,255,1,8,12,16,16,10,255,1,240,8,244,12,12,255,1,244,8,248,12,10,255,1,248,8,252,12,13,255,1,252,8,12,12,10,255,1,12,8,16,12,11,255,1,240,4,244,8,10,255,1,244,4,248,8,13,255,1,248,4,252,8,12,255,1,252,4,4,8,10,255,1,4,4,8,8,12,255,1,8,4,12,8,11,255,1,12,4,16,8,12,255,1,240,0,244,4,13,255,1,244,0,0,4,10,255,1,0,0,4,4,11,255,1,4,0,12,4,13,255,1,12,252,16,4,10,255,1,240,252,248,0,10,255,1,248,252,252,0,11,255,1,252,252,8,0,10,255,1,8,252,12,0,12,255,1,240,248,244,252,12,255,1,244,248,248,252,11,255,1,248,248,0,252,12,255,1,0,248,4,252,10,255,1,4,248,8,252,13,255,1,8,244,16,252,10,255,1,240,244,248,248,13,255,1,248,244,0,248,10,255,1,0,244,4,248,13,255,1,4,244,8,248,12,255,1,240,240,244,244,10,255,1,244,240,248,244,12,255,1,248,240,252,244,10,255,1,252,240,0,244,13,255,1,0,240,12,244,10,255,1,12,240,16,244,11,255,0,1,240,12,244,16,12,255,1,244,12,252,16,11,255,1,252,12,12,16,10,255,1,12,8,16,16,12,255,1,240,8,248,12,11,255,1,248,8,252,12,10,255,1,252,8,0,12,13,255,1,0,8,4,12,10,255,1,4,4,12,12,13,255,1,240,4,4,8,10,255,1,12,4,16,8,11,255,1,240,0,248,4,10,255,1,248,0,252,4,12,255,1,252,0,4,4,10,255,1,4,0,16,4,11,255,1,240,248,248,0,13,255,1,248,252,0,0,12,255,1,0,252,8,0,11,255,1,8,252,16,0,10,255,1,248,248,4,252,11,255,1,4,248,8,252,10,255,1,8,248,12,252,13,255,1,12,248,16,252,10,255,1,240,244,252,248,11,255,1,252,244,16,248,10,255,1,240,240,244,244,11,255,1,244,240,4,244,10,255,1,4,240,8,244,12,255,1,8,240,16,244,10,255,0,1,240,12,248,16,10,255,1,248,12,252,16,11,255,1,252,12,0,16,13,255,1,0,12,12,16,10,255,1,12,12,16,16,13,255,1,240,8,244,12,11,255,1,244,8,8,12,10,255,1,8,8,12,12,11,255,1,12,8,16,12,10,255,1,240,4,244,8,12,255,1,244,4,252,8,10,255,1,252,4,0,8,13,255,1,0,4,4,8,12,255,1,4,4,16,8,10,255,1,240,0,248,4,10,255,1,248,0,252,4,13,255,1,252,0,8,4,10,255,1,8,0,12,4,12,255,1,12,0,16,4,11,255,1,240,252,244,0,10,255,1,244,252,248,0,11,255,1,248,252,4,0,10,255,1,4,252,8,0,11,255,1,8,252,12,0,13,255,1,12,252,16,0,10,255,1,240,248,252,252,10,255,1,252,248,0,252,11,255,1,0,248,16,252,10,255,1,240,244,244,248,10,255,1,244,244,248,248,12,255,1,248,244,252,248,11,255,1,252,244,0,248,12,255,1,0,244,8,248,10,255,1,8,244,12,248,13,255,1,12,244,16,248,12,255,1,240,240,244,244,11,255,1,244,240,248,244,13,255,1,248,240,4,244,10,255,1,4,240,8,244,13,255,1,8,240,16,244,10,255,0,1,240,12,244,16,13,255,1,244,12,252,16,10,255,1,252,12,0,16,13,255,1,0,12,4,16,11,255,1,4,12,12,16,10,255,1,12,12,16,16,13,255,1,240,4,244,12,12,255,1,244,4,248,12,10,255,1,248,8,252,12,11,255,1,252,8,16,12,10,255,1,248,4,252,8,12,255,1,252,4,0,8,10,255,1,0,4,8,8,12,255,1,8,4,16,8,10,255,1,240,0,248,4,10,255,1,248,0,0,4,13,255,1,0,0,4,4,10,255,1,4,0,8,4,12,255,1,8,0,12,4,10,255,1,12,0,16,4,13,255,1,240,252,252,0,10,255,1,252,252,0,0,13,255,1,0,252,8,0,10,255,1,8,252,12,0,13,255,1,12,252,16,0,11,255,1,240,244,244,252,12,255,1,244,248,252,252,10,255,1,252,244,0,252,12,255,1,0,244,4,252,10,255,1,4,248,8,252,11,255,1,8,248,16,252,10,255,1,244,244,248,248,10,255,1,248,244,252,248,13,255,1,4,244,8,248,12,255,1,8,244,12,248,10,255,1,12,244,16,248,12,255,1,240,240,244,244,10,255,1,244,240,248,244,13,255,1,248,240,252,244,11,255,1,252,240,4,244,10,255,1,4,240,12,244,13,255,1,12,240,16,244,10,255,0,1,240,12,244,16,12,255,1,244,12,248,16,10,255,1,248,12,252,16,12,255,1,252,12,0,16,10,255,1,0,12,4,16,12,255,1,4,12,16,16,10,255,1,240,8,244,12,10,255,1,244,8,248,12,11,255,1,248,8,16,12,10,255,1,240,4,8,8,10,255,1,8,4,16,8,13,255,1,240,0,12,4,10,255,1,12,0,16,4,11,255,1,240,252,252,0,10,255,1,252,252,0,0,12,255,1,0,252,4,0,10,255,1,4,252,8,0,12,255,1,8,252,12,0,10,255,1,12,252,16,0,12,255,1,240,248,244,252,10,255,1,244,248,252,252,13,255,1,252,248,0,252,10,255,1,0,248,4,252,11,255,1,4,248,16,252,10,255,1,240,244,248,248,10,255,1,248,244,252,248,11,255,1,252,240,16,248,10,255,1,240,240,244,244,12,255,1,244,240,248,244,10,255,1,248,240,252,244,12,255,0,1,240,12,16,16,10,255,1,240,8,12,12,10,255,1,12,8,16,12,11,255,1,240,4,4,8,10,255,1,4,4,12,8,11,255,1,12,4,16,8,10,255,1,240,0,252,4,10,255,1,252,0,0,4,12,255,1,0,0,4,4,11,255,1,4,0,12,4,10,255,1,12,0,16,4,13,255,1,240,252,248,0,10,255,1,248,252,252,0,11,255,1,252,252,16,0,10,255,1,240,248,248,252,11,255,1,248,248,16,252,10,255,1,240,244,248,248,10,255,1,248,244,252,248,13,255,1,252,244,16,248,10,255,1,240,240,8,244,10,255,1,8,240,12,244,12,255,1,12,240,16,244,11,255,0,1,240,12,252,16,10,255,1,252,12,0,16,12,255,1,0,12,4,16,13,255,1,4,12,8,16,10,255,1,8,12,12,16,13,255,1,12,12,16,16,11,255,1,240,8,4,12,10,255,1,4,8,8,12,11,255,1,8,8,16,12,10,255,1,240,4,244,8,11,255,1,244,4,252,8,10,255,1,252,4,0,8,12,255,1,0,4,4,8,11,255,1,4,0,16,8,10,255,1,240,0,244,4,10,255,1,244,0,248,4,13,255,1,248,0,252,4,11,255,1,252,0,0,4,10,255,1,0,0,4,4,12,255,1,240,252,244,0,11,255,1,244,252,8,0,10,255,1,8,252,12,0,12,255,1,12,252,16,0,13,255,1,240,248,16,252,10,255,1,240,244,252,248,10,255,1,252,244,0,248,11,255,1,0,244,8,248,10,255,1,8,244,12,248,12,255,1,12,244,16,248,11,255,1,240,240,244,244,10,255,1,244,240,248,244,12,255,1,248,240,252,244,13,255,1,252,240,0,244,10,255,1,0,240,4,244,13,255,1,4,240,8,244,11,255,1,8,240,12,244,10,255,1,12,240,16,244,12,255,0,1,240,12,244,16,10,255,1,244,12,248,16,12,255,1,248,12,8,16,10,255,1,8,12,12,16,11,255,1,12,12,16,16,13,255,1,240,8,244,12,13,255,1,244,8,248,12,10,255,1,248,0,252,12,13,255,1,252,8,0,12,10,255,1,0,8,4,12,12,255,1,4,8,16,12,10,255,1,240,4,248,8,10,255,1,252,4,0,8,11,255,1,0,4,12,8,10,255,1,12,4,16,8,13,255,1,240,0,244,4,10,255,1,244,0,248,4,11,255,1,252,0,16,4,10,255,1,240,252,0,0,10,255,1,0,252,4,0,12,255,1,4,252,16,0,10,255,1,240,248,248,252,10,255,1,248,248,0,252,13,255,1,0,248,4,252,10,255,1,4,240,8,252,13,255,1,8,248,12,252,10,255,1,12,248,16,252,12,255,1,240,244,4,248,10,255,1,8,244,12,248,11,255,1,12,244,16,248,10,255,1,240,240,0,244,10,255,1,0,240,4,244,11,255,1,8,240,16,244,10,255,0,3,7,0,0,30,0,9,29,232,18,232,238,9,227,30,0,10,36,3,7,0,0,24,0,7,23,237,14,237,242,7,233,24,0,10,42,3,7,0,0,18,0,6,17,241,11,241,245,6,239,18,0,10,49,3,7,0,0,12,0,4,11,246,7,246,249,4,245,12,0,10,61,3,7,0,0,6,0,2,6,251,4,251,252,2,250,6,0,10,81,0,3,7,0,0,20,0,6,19,240,12,240,244,6,237,20,0,10,45,3,7,0,0,15,0,5,14,244,9,244,247,5,242,15,0,10,54,3,7,0,0,10,0,3,10,248,6,248,250,3,246,10,0,10,69,3,7,0,0,5,0,2,5,252,3,252,253,2,251,5,0,10,94,0,3,7,0,0,10,0,3,10,248,6,248,250,3,246,10,0,10,59,3,7,0,0,7,0,2,6,251,4,251,252,2,250,7,0,10,78,3,7,0,0,3,0,1,3,253,2,253,254,1,253,3,0,10,111,0,3,4,226,226,30,30,30,10,246,226,10,128,3,4,246,226,30,10,30,246,10,226,10,64,0,3,4,196,226,60,30,60,14,228,226,10,128,0,3,4,226,30,30,30,30,10,246,10,10,115,0,3,7,10,246,10,10,4,9,254,6,250,2,247,252,246,246,10,68,3,7,10,246,10,3,6,3,2,1,255,254,253,250,253,246,10,93,3,7,10,246,10,253,8,252,6,251,5,250,4,248,3,246,10,146,0,2,226,226,30,30,10,0,178,0,3,4,225,227,29,31,31,29,227,225,10,255,1,26,226,30,30,10,255,0,3,4,195,228,59,32,61,28,197,224,10,255,1,56,226,60,30,10,255,0,1,226,226,30,30,1,255,0,1,241,12,15,15,10,255,1,241,241,15,244,10,255,1,241,241,244,15,10,255,1,12,241,15,15,10,255,0,2,241,15,15,23,6,0,102,2,241,7,15,15,6,102,0,2,241,241,15,249,6,102,0,2,241,233,15,241,6,0,102,3,4,242,241,242,15,240,15,240,241,6,85,3,4,242,241,242,15,245,15,245,241,6,85,3,4,240,241,240,15,237,15,237,241,6,51,3,4,245,241,245,15,248,15,248,241,6,51,3,4,237,241,237,15,234,15,234,241,6,17,3,4,248,241,248,15,250,15,250,241,6,17,3,4,14,241,14,15,11,15,11,241,6,85,3,4,14,241,14,15,16,15,16,241,6,85,3,4,11,241,11,15,8,15,8,241,6,51,3,4,16,241,16,15,19,15,19,241,6,51,3,4,8,241,8,15,6,15,6,241,6,17,3,4,19,241,19,15,22,15,22,241,6,17,0,2,226,242,30,14,11,230,51,1,226,11,30,14,10,255,1,226,242,30,245,10,255,1,226,242,229,14,10,255,1,27,242,30,14,10,255,0,2,241,241,15,15,11,230,51,1,241,12,15,15,10,255,1,241,241,15,244,10,255,1,241,241,244,15,10,255,1,12,241,15,15,10,255,0,3,3,244,244,0,12,12,244,1,255,3,4,243,244,255,12,1,12,245,244,10,255,3,4,1,12,13,244,11,244,255,12,10,255,0,1,251,238,254,18,10,255,1,2,238,5,18,10,255,1,251,15,5,18,10,255,1,251,238,5,241,10,255,0,3,7,0,0,24,0,7,23,237,14,237,242,7,233,24,0,10,255,1,6,4,14,12,11,255,1,8,244,18,248,11,255,0,3,7,0,0,18,0,6,17,241,11,241,245,6,239,18,0,10,136,3,7,0,0,12,0,4,11,246,7,246,249,4,245,12,0,10,128,3,7,0,0,6,0,2,6,251,4,251,252,2,250,6,0,10,255,0,3,7,0,0,8,0,2,8,250,5,250,251,2,248,8,0,11,204,3,7,0,0,4,0,1,4,253,2,253,254,1,252,4,0,11,255,0,3,4,217,22,247,6,245,2,215,18,10,255,3,4,244,5,4,25,8,23,248,3,10,255,3,4,7,25,41,249,39,247,5,23,10,255,3,4,245,4,5,24,7,24,247,4,11,255,0,3,8,0,12,3,3,12,0,3,253,0,244,253,253,244,0,253,3,10,255,0,3,7,0,0,40,0,12,38,224,24,224,232,12,218,40,0,10,22,3,7,0,0,30,0,9,29,232,18,232,238,9,227,30,0,10,24,3,7,0,0,20,0,6,19,240,12,240,244,6,237,20,0,10,27,3,7,0,0,10,0,3,10,248,6,248,250,3,246,10,0,10,30,0,3,4,228,216,28,0,228,40,244,0,10,255,0,1,226,255,30,1,10,255,0,1,232,252,24,24,10,255,1,236,0,20,20,11,255,1,253,228,3,252,10,255,0,1,253,216,3,40,10,255,1,250,34,6,40,11,255,0,1,240,251,4,5,10,255,3,3,4,242,18,0,4,14,10,255,0,3,3,246,248,250,8,254,248,10,255,3,3,0,248,4,6,8,248,10,255,0};
-const uint16_t tile_prog_off[299] = {0,0,15,37,52,60,89,111,140,148,156,171,249,306,370,427,477,548,612,634,663,692,707,743,772,801,872,880,937,978,1014,1050,1059,1068,1077,1086,1177,1268,1325,1356,1377,1406,1583,1591,1608,1623,1712,1734,1895,1910,2055,2063,2074,2085,2098,2115,2144,2321,2336,2369,2391,2496,2504,2521,2550,2727,2756,2933,2946,3019,3032,3105,3140,3151,3162,3235,3308,3323,3345,3374,3396,3411,3426,3462,3484,3513,3535,3564,3572,3594,3617,3640,3658,3676,3699,3707,3715,3723,3731,3739,3759,3767,3775,3802,3829,3849,3869,3889,3897,3908,3921,3936,3947,4008,4076,4099,4136,4309,4482,4655,4828,5001,5174,5512,6070,6456,6677,6898,7449,7505,7561,7617,7680,7743,7825,7907,8001,8095,8141,8187,8283,8379,8521,8571,8607,8629,8651,8708,8740,8906,9079,9259,9281,9303,9338,9360,9389,9417,9436,9449,9471,9496,9507,9515,9536,9549,9564,9628,9643,9696,9709,9730,9751,9772,9804,9836,9865,9874,9931,9988,10027,10056,10075,10131,10142,10153,10180,10207,10234,10254,10447,10640,10844,10852,10860,11036,11219,11416,11564,11621,11657,11777,11848,11898,11941,12012,12034,12084,12169,12331,12500,12585,12684,12979,13169,13450,13654,13865,14076,14406,14743,14982,15263,15537,15664,15973,16163,16423,16641,16810,17028,17316,17548,17815,18103,18342,18637,18834,19073,19291,19565,19797,20015,20359,20626,20893,21244,21448,21729,22052,22389,22649,22958,23302,23583,23850,24082,24433,24700,24925,25199,25536,25740,26035,26239,26520,26815,27026,27181,27441,27673,27764,27837,27892,27917,27930,27943,27998,28007,28027,28047,28055,28084,28261,28298,28335,28370,28399,28432,28487,28524,28573,28594,28667,28680,28688,28710,28725,28743};
+const uint8_t tile_prog_data[3222] = {1,226,226,30,30,1,255,1,226,26,30,30,0,255,0,1,226,226,30,30,1,255,1,226,26,30,30,0,255,1,226,226,230,26,0,255,0,1,226,226,30,30,1,255,1,226,26,230,30,0,255,0,1,226,226,30,30,1,255,0,1,226,226,30,30,1,255,1,226,26,30,30,0,255,1,226,226,230,26,0,255,1,26,226,30,26,0,255,0,1,226,226,30,30,1,255,1,226,226,230,30,0,255,1,26,226,30,30,0,255,0,1,226,26,30,30,0,255,1,226,226,30,230,0,255,1,226,230,230,26,0,255,1,26,230,30,26,0,255,0,1,226,26,30,30,0,255,0,1,226,26,230,30,0,255,0,1,226,226,230,30,0,255,1,26,226,30,30,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,26,30,30,0,255,1,226,226,30,230,0,255,1,226,230,230,26,0,255,1,26,230,30,26,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,26,30,30,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,26,30,30,0,255,1,226,226,230,26,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,26,230,30,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,26,30,30,0,255,1,226,226,230,26,0,255,1,26,226,30,26,0,255,0,1,226,226,30,30,1,158,1,230,3,26,26,1,153,1,235,8,21,21,1,128,1,226,230,253,253,1,153,1,231,235,248,248,1,128,1,3,230,30,253,1,153,1,8,235,25,248,1,128,1,226,226,230,30,0,255,1,26,226,30,30,0,255,0,1,226,226,30,30,0,107,1,226,226,30,8,1,191,1,226,26,30,30,0,255,0,1,226,226,30,30,0,107,1,248,226,30,8,1,191,1,226,26,30,30,0,255,1,226,226,230,26,0,255,0,1,226,226,30,30,0,107,1,248,226,30,30,1,191,1,226,226,248,8,1,191,1,226,26,230,30,0,255,0,1,226,226,30,30,0,107,1,226,226,30,8,1,191,0,1,226,226,30,30,0,107,1,246,226,10,8,1,191,1,226,26,30,30,0,255,1,226,226,230,26,0,255,1,26,226,30,26,0,255,0,1,226,226,30,30,0,107,1,246,226,10,30,1,191,1,226,226,230,30,0,255,1,26,226,30,30,0,255,0,1,226,226,30,30,0,107,1,226,226,30,0,1,191,1,246,0,10,30,1,191,1,226,26,230,30,0,255,0,1,226,226,30,30,0,107,1,226,10,246,30,1,191,1,10,10,30,30,1,191,1,246,246,10,10,1,191,1,226,226,246,246,1,191,1,10,226,30,246,1,191,1,226,26,30,30,0,255,1,226,226,30,230,0,255,1,226,230,230,26,0,255,1,26,230,30,26,0,255,0,1,226,226,30,30,1,204,0,130,206,244,218,255,0,255,26,130,218,244,233,12,0,255,26,2,164,210,228,11,0,255,26,2,228,210,28,242,0,255,26,2,28,210,100,28,0,255,26,130,25,244,38,0,0,255,26,130,38,244,50,251,0,255,26,0,130,224,248,234,0,0,255,26,2,168,222,220,31,0,255,26,2,220,222,8,7,0,255,26,2,8,222,68,249,0,255,26,130,17,248,32,4,0,255,26,0,1,226,235,30,21,1,217,1,226,8,30,18,0,255,1,226,18,30,21,0,153,1,234,245,242,253,0,204,1,14,245,22,253,0,204,0,1,226,235,30,21,1,217,1,226,8,30,18,0,255,1,226,18,30,21,0,153,1,234,245,242,253,0,204,1,16,235,30,8,0,128,0,3,3,244,244,0,12,12,244,1,255,3,4,243,244,255,12,1,12,245,244,10,255,3,4,1,12,13,244,11,244,255,12,10,255,0,3,3,226,226,0,30,30,226,10,255,3,3,232,230,0,21,24,230,11,255,0,3,3,236,237,0,19,20,237,10,255,3,3,242,241,0,10,14,241,11,255,0,3,3,244,244,0,12,12,244,10,255,3,3,250,248,0,3,6,248,11,255,0,2,226,242,30,14,11,230,51,1,226,11,30,14,10,255,1,226,242,30,245,10,255,1,226,242,229,14,10,255,1,27,242,30,14,10,255,0,2,241,241,15,15,11,230,51,1,241,12,15,15,10,255,1,241,241,15,244,10,255,1,241,241,244,15,10,255,1,12,241,15,15,10,255,0,3,4,225,244,255,15,1,12,227,241,10,255,3,4,1,15,31,244,29,241,255,12,10,255,1,226,241,30,244,10,255,0,1,226,11,30,14,10,255,1,226,242,30,245,10,255,1,226,242,229,14,10,255,1,27,242,30,14,10,255,0,3,4,243,245,255,13,1,11,245,243,10,255,3,4,1,13,13,245,11,243,255,11,10,255,1,244,243,12,245,10,255,0,1,226,27,30,30,10,255,1,226,226,229,30,10,255,0,1,226,226,229,30,10,255,1,27,226,30,30,10,255,0,1,226,12,30,15,10,255,1,226,241,30,244,10,255,1,226,241,229,15,10,255,1,27,241,30,15,10,255,0,1,226,12,30,15,10,255,1,226,241,30,244,10,255,0,1,226,12,30,15,10,255,1,226,241,30,244,10,255,1,226,241,229,15,10,255,0,1,226,27,30,30,10,255,1,226,226,30,229,10,255,1,226,226,229,30,10,255,1,27,226,30,30,10,255,0,1,226,27,30,30,10,255,1,226,226,229,30,10,255,1,27,226,30,30,10,255,0,1,241,12,15,15,10,255,1,241,241,15,244,10,255,1,241,241,244,15,10,255,1,12,241,15,15,10,255,0,3,4,226,254,30,254,30,2,232,2,10,255,0,1,241,9,15,15,10,255,1,241,241,15,247,10,255,1,241,241,247,15,10,255,1,9,241,15,15,10,255,0,1,226,24,30,30,10,255,1,226,226,30,232,10,255,1,226,226,232,30,10,255,1,24,226,30,30,10,255,0,1,226,253,30,3,10,255,0,1,226,254,30,2,10,255,0,2,226,30,30,40,6,0,102,2,226,20,30,30,6,102,0,3,4,228,226,228,30,224,30,224,226,6,85,3,4,228,226,228,30,231,30,231,226,6,85,3,4,224,226,224,30,221,30,221,226,6,51,3,4,231,226,231,30,234,30,234,226,6,51,3,4,221,226,221,30,218,30,218,226,6,17,3,4,234,226,234,30,238,30,238,226,6,17,0,3,4,228,226,228,30,224,30,224,226,6,85,3,4,228,226,228,30,231,30,231,226,6,85,3,4,224,226,224,30,221,30,221,226,6,51,3,4,231,226,231,30,234,30,234,226,6,51,3,4,221,226,221,30,218,30,218,226,6,17,3,4,234,226,234,30,238,30,238,226,6,17,3,4,28,226,28,30,25,30,25,226,6,85,3,4,28,226,28,30,32,30,32,226,6,85,3,4,25,226,25,30,22,30,22,226,6,51,3,4,32,226,32,30,35,30,35,226,6,51,3,4,22,226,22,30,18,30,18,226,6,17,3,4,35,226,35,30,38,30,38,226,6,17,0,2,226,15,30,25,6,0,102,2,226,5,30,15,6,102,0,2,226,241,30,251,6,102,0,2,226,231,30,241,6,0,102,3,4,228,241,228,15,224,15,224,241,6,85,3,4,228,241,228,15,231,15,231,241,6,85,3,4,224,241,224,15,221,15,221,241,6,51,3,4,231,241,231,15,234,15,234,241,6,51,3,4,221,241,221,15,218,15,218,241,6,17,3,4,234,241,234,15,238,15,238,241,6,17,3,4,28,241,28,15,25,15,25,241,6,85,3,4,28,241,28,15,32,15,32,241,6,85,3,4,25,241,25,15,22,15,22,241,6,51,3,4,32,241,32,15,35,15,35,241,6,51,3,4,22,241,22,15,18,15,18,241,6,17,3,4,35,241,35,15,38,15,38,241,6,17,0,2,226,15,30,25,6,0,102,2,226,5,30,15,6,102,0,2,226,241,30,251,6,102,0,2,226,231,30,241,6,0,102,0,2,226,15,30,25,6,0,102,2,226,5,30,15,6,102,0,2,226,241,30,251,6,102,0,2,226,231,30,241,6,0,102,3,4,228,241,228,15,224,15,224,241,6,85,3,4,228,241,228,15,231,15,231,241,6,85,3,4,224,241,224,15,221,15,221,241,6,51,3,4,231,241,231,15,234,15,234,241,6,51,3,4,221,241,221,15,218,15,218,241,6,17,3,4,234,241,234,15,238,15,238,241,6,17,0,2,226,30,30,40,6,0,102,2,226,20,30,30,6,102,0,2,226,226,30,236,6,102,0,2,226,216,30,226,6,0,102,3,4,228,226,228,30,224,30,224,226,6,85,3,4,228,226,228,30,231,30,231,226,6,85,3,4,224,226,224,30,221,30,221,226,6,51,3,4,231,226,231,30,234,30,234,226,6,51,3,4,221,226,221,30,218,30,218,226,6,17,3,4,234,226,234,30,238,30,238,226,6,17,3,4,28,226,28,30,25,30,25,226,6,85,3,4,28,226,28,30,32,30,32,226,6,85,3,4,25,226,25,30,22,30,22,226,6,51,3,4,32,226,32,30,35,30,35,226,6,51,3,4,22,226,22,30,18,30,18,226,6,17,3,4,35,226,35,30,38,30,38,226,6,17,0,2,226,30,30,40,6,0,102,2,226,20,30,30,6,102,0,3,4,228,226,228,30,224,30,224,226,6,85,3,4,228,226,228,30,231,30,231,226,6,85,3,4,224,226,224,30,221,30,221,226,6,51,3,4,231,226,231,30,234,30,234,226,6,51,3,4,221,226,221,30,218,30,218,226,6,17,3,4,234,226,234,30,238,30,238,226,6,17,3,4,28,226,28,30,25,30,25,226,6,85,3,4,28,226,28,30,32,30,32,226,6,85,3,4,25,226,25,30,22,30,22,226,6,51,3,4,32,226,32,30,35,30,35,226,6,51,3,4,22,226,22,30,18,30,18,226,6,17,3,4,35,226,35,30,38,30,38,226,6,17,0,2,241,15,15,23,6,0,102,2,241,7,15,15,6,102,0,2,241,241,15,249,6,102,0,2,241,233,15,241,6,0,102,3,4,242,241,242,15,240,15,240,241,6,85,3,4,242,241,242,15,245,15,245,241,6,85,3,4,240,241,240,15,237,15,237,241,6,51,3,4,245,241,245,15,248,15,248,241,6,51,3,4,237,241,237,15,234,15,234,241,6,17,3,4,248,241,248,15,250,15,250,241,6,17,3,4,14,241,14,15,11,15,11,241,6,85,3,4,14,241,14,15,16,15,16,241,6,85,3,4,11,241,11,15,8,15,8,241,6,51,3,4,16,241,16,15,19,15,19,241,6,51,3,4,8,241,8,15,6,15,6,241,6,17,3,4,19,241,19,15,22,15,22,241,6,17,0,2,226,2,30,10,6,0,89,2,226,246,30,254,6,89,0,0,2,241,15,15,25,6,0,102,2,241,5,15,15,6,102,0,2,241,241,15,251,6,102,0,2,241,231,15,241,6,0,102,3,4,242,241,242,15,239,15,239,241,6,85,3,4,242,241,242,15,246,15,246,241,6,85,3,4,239,241,239,15,236,15,236,241,6,51,3,4,246,241,246,15,249,15,249,241,6,51,3,4,236,241,236,15,232,15,232,241,6,17,3,4,249,241,249,15,252,15,252,241,6,17,3,4,14,241,14,15,10,15,10,241,6,85,3,4,14,241,14,15,17,15,17,241,6,85,3,4,10,241,10,15,7,15,7,241,6,51,3,4,17,241,17,15,20,15,20,241,6,51,3,4,7,241,7,15,4,15,4,241,6,17,3,4,20,241,20,15,24,15,24,241,6,17,0,2,226,30,30,40,6,0,102,2,226,20,30,30,6,102,0,2,226,226,30,236,6,102,0,2,226,216,30,226,6,0,102,3,4,228,226,228,30,224,30,224,226,6,85,3,4,228,226,228,30,231,30,231,226,6,85,3,4,224,226,224,30,221,30,221,226,6,51,3,4,231,226,231,30,234,30,234,226,6,51,3,4,221,226,221,30,218,30,218,226,6,17,3,4,234,226,234,30,238,30,238,226,6,17,3,4,28,226,28,30,25,30,25,226,6,85,3,4,28,226,28,30,32,30,32,226,6,85,3,4,25,226,25,30,22,30,22,226,6,51,3,4,32,226,32,30,35,30,35,226,6,51,3,4,22,226,22,30,18,30,18,226,6,17,3,4,35,226,35,30,38,30,38,226,6,17,0,2,226,3,30,14,6,0,102,2,226,242,30,253,6,102,0,0,2,226,2,30,11,6,0,102,2,226,245,30,254,6,102,0,0,3,7,226,238,226,18,238,2,0,252,18,2,30,18,30,238,1,255,0,3,4,226,238,226,18,246,252,30,238,1,255,0,3,8,226,243,226,2,236,252,246,10,0,254,10,10,20,252,30,2,1,255,1,226,243,30,254,1,255,0,1,248,248,8,8,1,255,0,3,5,241,248,241,8,0,0,15,8,15,248,1,255,0,1,226,241,30,0,1,255,1,232,0,248,15,1,255,1,8,0,24,15,1,255,0,3,3,226,226,30,30,30,226,1,255,1,241,226,0,15,1,255,1,0,226,15,30,1,255,0,3,4,226,246,226,254,240,8,30,246,1,255,0,3,3,248,248,8,8,8,248,1,255,0,3,8,226,246,226,2,238,8,250,2,6,8,18,2,30,8,30,246,1,255,0};
+const uint16_t tile_prog_off[76] = {0,0,15,37,52,60,89,111,140,148,156,171,249,306,370,427,477,548,612,634,663,692,707,743,772,801,872,880,937,978,1014,1050,1085,1106,1127,1148,1185,1222,1254,1283,1315,1330,1345,1374,1389,1411,1440,1462,1491,1504,1533,1562,1570,1578,1667,1812,1989,2022,2127,2304,2465,2642,2659,2836,3013,3030,3047,3066,3079,3107,3115,3130,3152,3177,3190,3201};
 const ObjDef objdefs[OT_COUNT] = {
-  {0,0,0,0,0,0,0,0,0,0,0,0,0},
-  {1,1,SP_NONE,300,300,0,2,0,SHAPE_BOX,0,3,12,0},
-  {2,1,SP_NONE,300,300,0,2,2,SHAPE_BOX,0,3,12,0},
-  {3,1,SP_NONE,300,300,0,2,4,SHAPE_BOX,0,3,12,0},
-  {4,1,SP_NONE,300,300,0,2,6,SHAPE_BOX,0,3,12,0},
-  {6,1,SP_NONE,300,300,0,2,8,SHAPE_BOX,0,3,12,0},
-  {7,1,SP_NONE,300,300,0,2,10,SHAPE_BOX,0,3,12,0},
-  {5,0,SP_NONE,0,0,0,1,12,SHAPE_BOX,0,3,12,0},
-  {73,0,SP_NONE,0,0,0,1,13,SHAPE_BOX,0,3,12,0},
-  {40,1,SP_NONE,300,140,8,2,14,SHAPE_BOX,0,3,12,0},
-  {62,1,SP_NONE,300,160,7,1,16,SHAPE_BOX,0,3,12,0},
-  {65,1,SP_NONE,300,160,7,1,17,SHAPE_BOX,0,3,12,0},
-  {66,1,SP_NONE,300,160,7,1,18,SHAPE_BOX,0,3,12,0},
-  {68,1,SP_NONE,300,160,7,1,19,SHAPE_BOX,0,3,12,0},
-  {8,2,SP_NONE,60,120,0,2,20,SHAPE_BOX,0,3,12,0},
-  {39,2,SP_NONE,60,56,-9,2,22,SHAPE_BOX,0,3,12,0},
-  {103,2,SP_NONE,40,76,-6,2,24,SHAPE_BOX,0,3,12,0},
-  {9,2,SP_NONE,90,108,-13,1,26,SHAPE_BOX,0,9,12,0},
-  {15,0,SP_NONE,0,0,6,2,27,SHAPE_BOX,0,9,12,0},
-  {16,0,SP_NONE,0,0,-1,2,29,SHAPE_BOX,0,9,12,0},
-  {17,0,SP_NONE,0,0,-8,2,31,SHAPE_BOX,0,9,12,0},
-  {18,0,SP_NONE,0,0,4,1,33,SHAPE_BOX,0,5,12,0},
-  {19,0,SP_NONE,0,0,4,1,34,SHAPE_BOX,0,5,12,0},
-  {20,0,SP_NONE,0,0,-2,1,35,SHAPE_BOX,0,5,12,0},
-  {21,0,SP_NONE,0,0,-8,1,36,SHAPE_BOX,0,5,12,0},
-  {41,0,SP_NONE,0,0,-12,1,37,SHAPE_BOX,0,5,12,0},
-  {110,0,SP_NONE,0,0,-13,1,38,SHAPE_BOX,0,5,12,0},
-  {54,0,SP_NONE,0,0,0,1,39,SHAPE_BOX,0,6,12,0},
-  {35,3,SP_PAD_Y,250,40,-13,2,40,SHAPE_BOX,0,10,12,0},
-  {67,3,SP_PAD_B,250,60,-12,2,42,SHAPE_BOX,0,10,12,0},
-  {140,3,SP_PAD_P,250,50,-13,2,44,SHAPE_BOX,0,10,12,0},
-  {36,3,SP_ORB_Y,360,360,0,2,46,SHAPE_BOX,0,10,12,0},
-  {141,3,SP_ORB_P,360,360,0,2,48,SHAPE_BOX,0,10,12,0},
-  {84,3,SP_ORB_B,360,360,0,2,50,SHAPE_BOX,0,10,12,0},
-  {10,3,SP_GRAV_N,250,750,0,2,52,SHAPE_BOX,0,10,12,0},
-  {11,3,SP_GRAV_F,250,750,0,2,54,SHAPE_BOX,0,10,12,0},
-  {12,3,SP_PORTAL_CUBE,340,860,0,2,56,SHAPE_BOX,0,10,12,0},
-  {13,3,SP_PORTAL_SHIP,340,860,0,2,58,SHAPE_BOX,0,10,12,0},
-  {1329,3,SP_COIN,400,400,0,1,60,SHAPE_BOX,0,10,12,0},
-  {47,3,SP_PORTAL_BALL,340,860,0,2,61,SHAPE_BOX,0,10,12,0},
-  {111,3,SP_PORTAL_UFO,340,860,0,2,63,SHAPE_BOX,0,10,12,0},
-  {101,3,SP_SIZE_MINI,310,900,0,2,65,SHAPE_BOX,0,10,12,0},
-  {99,3,SP_SIZE_NORMAL,310,900,0,2,67,SHAPE_BOX,0,10,12,0},
-  {91,1,SP_NONE,300,300,0,2,69,SHAPE_BOX,0,3,12,0},
-  {92,1,SP_NONE,300,300,0,2,71,SHAPE_BOX,0,3,12,0},
-  {93,1,SP_NONE,300,300,0,1,73,SHAPE_BOX,0,3,12,0},
-  {94,1,SP_NONE,300,300,0,1,74,SHAPE_BOX,0,3,12,0},
-  {95,1,SP_NONE,300,300,0,2,75,SHAPE_BOX,0,3,12,0},
-  {96,1,SP_NONE,300,300,0,2,77,SHAPE_BOX,0,3,12,0},
-  {69,1,SP_NONE,300,300,0,3,79,SHAPE_BOX,0,9,12,0},
-  {70,1,SP_NONE,300,300,0,3,82,SHAPE_BOX,0,9,12,0},
-  {72,1,SP_NONE,300,300,0,3,85,SHAPE_BOX,0,9,12,0},
-  {75,1,SP_NONE,300,300,0,3,88,SHAPE_BOX,0,9,12,0},
-  {116,1,SP_NONE,300,300,0,2,91,SHAPE_BOX,0,3,12,0},
-  {117,1,SP_NONE,300,300,0,2,93,SHAPE_BOX,0,3,12,0},
-  {118,1,SP_NONE,300,300,0,2,95,SHAPE_BOX,0,3,12,0},
-  {119,1,SP_NONE,300,300,0,2,97,SHAPE_BOX,0,3,12,0},
-  {120,0,SP_NONE,0,0,0,1,99,SHAPE_BOX,0,3,12,0},
-  {121,1,SP_NONE,300,300,0,2,100,SHAPE_BOX,0,3,12,0},
-  {122,1,SP_NONE,300,300,0,2,102,SHAPE_BOX,0,3,12,0},
-  {161,1,SP_NONE,300,300,0,2,104,SHAPE_BOX,0,3,12,0},
-  {162,1,SP_NONE,300,300,0,2,106,SHAPE_BOX,0,3,12,0},
-  {163,1,SP_NONE,300,300,0,2,108,SHAPE_BOX,0,3,12,0},
-  {164,0,SP_NONE,0,0,0,1,110,SHAPE_BOX,0,3,12,0},
-  {165,1,SP_NONE,300,300,0,2,111,SHAPE_BOX,0,3,12,0},
-  {166,1,SP_NONE,300,300,0,2,113,SHAPE_BOX,0,3,12,0},
-  {167,1,SP_NONE,300,300,0,2,115,SHAPE_BOX,0,3,12,0},
-  {169,1,SP_NONE,300,300,0,2,117,SHAPE_BOX,0,3,12,0},
-  {170,1,SP_NONE,300,210,5,1,119,SHAPE_BOX,0,3,12,0},
-  {171,1,SP_NONE,300,210,5,1,120,SHAPE_BOX,0,3,12,0},
-  {191,0,SP_NONE,0,0,0,1,121,SHAPE_BOX,0,9,12,0},
-  {193,0,SP_NONE,0,0,0,1,122,SHAPE_BOX,0,3,12,0},
-  {198,0,SP_NONE,0,0,0,1,123,SHAPE_BOX,0,9,12,0},
-  {199,0,SP_NONE,0,0,0,1,124,SHAPE_BOX,0,9,12,0},
-  {61,2,SP_NONE,90,72,-8,1,125,SHAPE_BOX,0,3,12,0},
-  {177,2,SP_NONE,60,120,0,2,126,SHAPE_BOX,0,3,12,0},
-  {178,2,SP_NONE,60,64,-8,1,128,SHAPE_BOX,0,3,12,0},
-  {179,2,SP_NONE,40,80,-5,1,129,SHAPE_BOX,0,3,12,0},
-  {144,2,SP_NONE,60,120,0,1,130,SHAPE_BOX,3,3,12,0},
-  {145,2,SP_NONE,40,76,-6,1,131,SHAPE_BOX,3,3,12,0},
-  {146,1,SP_NONE,300,300,0,1,132,SHAPE_BOX,3,3,12,0},
-  {88,2,SP_NONE,323,323,0,1,133,SHAPE_CIRCLE,1,9,12,0},
-  {89,2,SP_NONE,216,216,0,1,134,SHAPE_CIRCLE,1,9,12,0},
-  {98,2,SP_NONE,120,120,0,1,135,SHAPE_CIRCLE,1,9,12,0},
-  {183,2,SP_NONE,157,157,0,1,136,SHAPE_CIRCLE,1,3,12,0},
-  {184,2,SP_NONE,204,204,0,1,137,SHAPE_CIRCLE,1,3,12,0},
-  {185,2,SP_NONE,28,28,0,1,138,SHAPE_CIRCLE,1,3,12,0},
-  {186,2,SP_NONE,323,323,0,1,139,SHAPE_CIRCLE,1,3,12,0},
-  {187,2,SP_NONE,220,220,0,1,140,SHAPE_CIRCLE,1,3,12,0},
-  {85,0,SP_NONE,0,0,0,1,141,SHAPE_BOX,2,5,12,0},
-  {86,0,SP_NONE,0,0,0,1,142,SHAPE_BOX,2,5,12,0},
-  {87,0,SP_NONE,0,0,0,1,143,SHAPE_BOX,2,5,12,0},
-  {137,0,SP_NONE,0,0,0,1,144,SHAPE_BOX,2,6,12,0},
-  {138,0,SP_NONE,0,0,0,1,145,SHAPE_BOX,2,6,12,0},
-  {139,0,SP_NONE,0,0,0,1,146,SHAPE_BOX,2,6,12,0},
-  {154,0,SP_NONE,0,0,0,1,147,SHAPE_BOX,2,5,12,0},
-  {180,0,SP_NONE,0,0,0,1,148,SHAPE_BOX,2,6,12,0},
-  {181,0,SP_NONE,0,0,0,1,149,SHAPE_BOX,2,6,12,0},
-  {182,0,SP_NONE,0,0,0,1,150,SHAPE_BOX,2,6,12,0},
-  {106,0,SP_NONE,0,0,0,1,151,SHAPE_BOX,0,6,12,0},
-  {107,0,SP_NONE,0,0,0,1,152,SHAPE_BOX,0,6,12,0},
-  {48,0,SP_NONE,0,0,0,1,153,SHAPE_BOX,0,6,12,0},
-  {49,0,SP_NONE,0,0,0,1,154,SHAPE_BOX,0,6,12,0},
-  {129,0,SP_NONE,0,0,0,1,155,SHAPE_BOX,0,5,12,0},
-  {130,0,SP_NONE,0,0,0,1,156,SHAPE_BOX,0,5,12,0},
-  {131,0,SP_NONE,0,0,0,1,157,SHAPE_BOX,0,5,12,0},
-  {50,0,SP_NONE,0,0,0,1,158,SHAPE_BOX,0,6,12,0},
-  {51,0,SP_NONE,0,0,0,1,159,SHAPE_BOX,0,6,12,0},
-  {53,0,SP_NONE,0,0,0,1,160,SHAPE_BOX,0,6,12,0},
-  {132,0,SP_NONE,0,0,0,1,161,SHAPE_BOX,0,6,12,0},
-  {150,0,SP_NONE,0,0,0,1,162,SHAPE_BOX,0,6,12,0},
-  {151,0,SP_NONE,0,0,0,1,163,SHAPE_BOX,0,5,12,0},
-  {152,0,SP_NONE,0,0,0,1,164,SHAPE_BOX,0,5,12,0},
-  {153,0,SP_NONE,0,0,0,1,165,SHAPE_BOX,0,5,12,0},
-  {190,0,SP_NONE,0,0,0,1,166,SHAPE_BOX,0,6,12,0},
-  {157,0,SP_NONE,0,0,0,1,167,SHAPE_BOX,0,7,12,0},
-  {158,0,SP_NONE,0,0,0,1,168,SHAPE_BOX,0,7,12,0},
-  {159,0,SP_NONE,0,0,0,1,169,SHAPE_BOX,0,7,12,0},
-  {113,0,SP_NONE,0,0,0,1,170,SHAPE_BOX,0,5,12,0},
-  {114,0,SP_NONE,0,0,0,1,171,SHAPE_BOX,0,5,12,0},
-  {0,3,SP_TOUCH,300,300,0,0,172,SHAPE_BOX,0,3,12,0},
-  {503,0,SP_NONE,0,0,0,1,172,SHAPE_BOX,0,12,12,0},
-  {1011,0,SP_NONE,0,0,0,1,173,SHAPE_BOX,0,12,12,0},
-  {1292,0,SP_NONE,0,0,0,1,174,SHAPE_BOX,0,12,12,0},
-  {1291,0,SP_NONE,0,0,0,1,175,SHAPE_BOX,0,12,12,0},
-  {504,0,SP_NONE,0,0,0,1,176,SHAPE_BOX,0,12,12,0},
-  {1012,0,SP_NONE,0,0,0,1,177,SHAPE_BOX,0,12,12,0},
-  {505,0,SP_NONE,0,0,0,1,178,SHAPE_BOX,0,12,12,0},
-  {1273,0,SP_NONE,0,0,0,1,179,SHAPE_BOX,0,12,12,0},
-  {1274,0,SP_NONE,0,0,0,1,180,SHAPE_BOX,0,12,12,0},
-  {467,1,SP_NONE,300,300,0,2,181,SHAPE_BOX,0,3,12,0},
-  {468,1,SP_NONE,300,15,0,2,183,SHAPE_BOX,0,3,12,0},
-  {469,1,SP_NONE,300,300,0,2,185,SHAPE_BOX,0,3,12,0},
-  {470,1,SP_NONE,300,300,0,2,187,SHAPE_BOX,0,3,12,0},
-  {471,1,SP_NONE,300,300,0,2,189,SHAPE_BOX,0,3,12,0},
-  {472,0,SP_NONE,0,0,0,1,191,SHAPE_BOX,0,3,12,0},
-  {473,0,SP_NONE,0,0,0,1,192,SHAPE_BOX,0,3,12,0},
-  {474,0,SP_NONE,0,0,0,1,193,SHAPE_BOX,0,3,12,0},
-  {475,1,SP_NONE,300,15,0,2,194,SHAPE_BOX,0,3,12,0},
-  {662,1,SP_NONE,300,150,0,2,196,SHAPE_BOX,0,3,12,0},
-  {663,1,SP_NONE,300,150,0,2,198,SHAPE_BOX,0,3,12,0},
-  {664,1,SP_NONE,300,150,0,2,200,SHAPE_BOX,0,3,12,0},
-  {1202,1,SP_NONE,300,30,0,2,202,SHAPE_BOX,0,3,12,0},
-  {1208,1,SP_NONE,150,150,0,2,204,SHAPE_BOX,0,3,12,0},
-  {1210,1,SP_NONE,300,300,0,2,206,SHAPE_BOX,0,3,12,0},
-  {665,1,SP_NONE,300,300,0,2,208,SHAPE_SLOPE,0,3,12,0},
-  {666,1,SP_NONE,600,300,0,2,210,SHAPE_SLOPE,0,3,12,0},
-  {652,1,SP_NONE,600,300,0,2,212,SHAPE_SLOPE,0,3,12,0},
-  {687,0,SP_NONE,0,0,0,1,214,SHAPE_BOX,0,3,12,0},
-  {688,0,SP_NONE,0,0,0,1,215,SHAPE_BOX,0,3,12,0},
-  {1014,0,SP_NONE,0,0,0,1,216,SHAPE_BOX,0,10,12,0},
-  {1016,0,SP_NONE,0,0,0,1,217,SHAPE_BOX,0,10,12,0},
-  {1162,0,SP_NONE,0,0,0,1,218,SHAPE_BOX,0,3,12,0},
-  {1163,0,SP_NONE,0,0,0,1,219,SHAPE_BOX,0,3,12,0},
-  {1164,0,SP_NONE,0,0,0,1,220,SHAPE_BOX,0,3,12,0},
-  {1165,0,SP_NONE,0,0,0,1,221,SHAPE_BOX,0,3,12,0},
-  {1167,0,SP_NONE,0,0,0,1,222,SHAPE_BOX,0,3,12,0},
-  {1168,0,SP_NONE,0,0,0,1,223,SHAPE_BOX,0,3,12,0},
-  {1170,0,SP_NONE,0,0,0,1,224,SHAPE_BOX,0,3,12,0},
-  {1171,0,SP_NONE,0,0,0,1,225,SHAPE_BOX,0,3,12,0},
-  {1173,0,SP_NONE,0,0,0,1,226,SHAPE_BOX,0,3,12,0},
-  {1174,0,SP_NONE,0,0,0,1,227,SHAPE_BOX,0,3,12,0},
-  {1176,0,SP_NONE,0,0,0,1,228,SHAPE_BOX,0,3,12,0},
-  {1186,0,SP_NONE,0,0,0,1,229,SHAPE_BOX,0,3,12,0},
-  {1322,0,SP_NONE,0,0,0,1,230,SHAPE_BOX,0,3,12,0},
-  {1187,0,SP_NONE,0,0,0,1,231,SHAPE_BOX,0,3,12,0},
-  {1188,0,SP_NONE,0,0,0,1,232,SHAPE_BOX,0,3,12,0},
-  {1189,0,SP_NONE,0,0,0,1,233,SHAPE_BOX,0,3,12,0},
-  {1190,0,SP_NONE,0,0,0,1,234,SHAPE_BOX,0,3,12,0},
-  {1325,0,SP_NONE,0,0,0,1,235,SHAPE_BOX,0,3,12,0},
-  {1191,0,SP_NONE,0,0,0,1,236,SHAPE_BOX,0,3,12,0},
-  {1194,0,SP_NONE,0,0,0,1,237,SHAPE_BOX,0,3,12,0},
-  {916,0,SP_NONE,0,0,0,1,238,SHAPE_BOX,0,12,12,0},
-  {917,0,SP_NONE,0,0,0,1,239,SHAPE_BOX,0,12,12,0},
-  {211,0,SP_NONE,0,0,0,1,240,SHAPE_BOX,0,12,12,0},
-  {506,0,SP_NONE,0,0,0,1,241,SHAPE_BOX,0,4,12,0},
-  {507,0,SP_NONE,0,0,0,1,242,SHAPE_BOX,0,4,12,0},
-  {508,0,SP_NONE,0,0,0,1,243,SHAPE_BOX,0,4,12,0},
-  {509,0,SP_NONE,0,0,0,1,244,SHAPE_BOX,0,4,12,0},
-  {510,0,SP_NONE,0,0,0,1,245,SHAPE_BOX,0,4,12,0},
-  {511,0,SP_NONE,0,0,0,1,246,SHAPE_BOX,0,4,12,0},
-  {512,0,SP_NONE,0,0,0,1,247,SHAPE_BOX,0,4,12,0},
-  {578,0,SP_NONE,0,0,0,1,248,SHAPE_BOX,0,14,12,0},
-  {579,0,SP_NONE,0,0,0,1,249,SHAPE_BOX,0,14,12,0},
-  {583,0,SP_NONE,0,0,0,1,250,SHAPE_BOX,0,14,12,0},
-  {584,0,SP_NONE,0,0,0,1,251,SHAPE_BOX,0,14,12,0},
-  {624,0,SP_NONE,0,0,0,1,252,SHAPE_BOX,0,3,12,0},
-  {628,0,SP_NONE,0,0,0,1,253,SHAPE_BOX,0,3,12,0},
-  {980,0,SP_NONE,0,0,0,1,254,SHAPE_BOX,0,3,12,0},
-  {981,0,SP_NONE,0,0,0,1,255,SHAPE_BOX,0,3,12,0},
-  {983,0,SP_NONE,0,0,0,1,256,SHAPE_BOX,0,3,12,0},
-  {986,0,SP_NONE,0,0,0,1,257,SHAPE_BOX,0,3,12,0},
-  {869,0,SP_NONE,0,0,0,1,258,SHAPE_BOX,0,3,11,0},
-  {870,0,SP_NONE,0,0,0,1,259,SHAPE_BOX,0,3,11,0},
-  {871,0,SP_NONE,0,0,0,1,260,SHAPE_BOX,0,3,11,0},
-  {872,0,SP_NONE,0,0,0,1,261,SHAPE_BOX,0,3,11,0},
-  {1266,0,SP_NONE,0,0,0,1,262,SHAPE_BOX,0,3,11,0},
-  {1267,0,SP_NONE,0,0,0,1,263,SHAPE_BOX,0,3,11,0},
-  {867,0,SP_NONE,0,0,0,1,264,SHAPE_BOX,0,3,11,0},
-  {880,0,SP_NONE,0,0,0,1,265,SHAPE_BOX,0,3,11,0},
-  {881,0,SP_NONE,0,0,0,1,266,SHAPE_BOX,0,3,11,0},
-  {882,0,SP_NONE,0,0,0,1,267,SHAPE_BOX,0,3,11,0},
-  {883,0,SP_NONE,0,0,0,1,268,SHAPE_BOX,0,3,11,0},
-  {884,0,SP_NONE,0,0,0,1,269,SHAPE_BOX,0,3,11,0},
-  {891,0,SP_NONE,0,0,0,1,270,SHAPE_BOX,0,3,11,0},
-  {893,0,SP_NONE,0,0,0,1,271,SHAPE_BOX,0,3,11,0},
-  {853,0,SP_NONE,0,0,0,1,272,SHAPE_BOX,0,3,11,0},
-  {857,0,SP_NONE,0,0,0,1,273,SHAPE_BOX,0,3,11,0},
-  {859,0,SP_NONE,0,0,0,1,274,SHAPE_BOX,0,3,11,0},
-  {807,0,SP_NONE,0,0,0,1,275,SHAPE_BOX,0,3,12,0},
-  {808,0,SP_NONE,0,0,0,1,276,SHAPE_BOX,0,3,12,0},
-  {809,0,SP_NONE,0,0,0,1,277,SHAPE_BOX,0,3,12,0},
-  {810,0,SP_NONE,0,0,0,1,278,SHAPE_BOX,0,3,12,0},
-  {811,0,SP_NONE,0,0,0,1,279,SHAPE_BOX,0,3,12,0},
-  {812,0,SP_NONE,0,0,0,1,280,SHAPE_BOX,0,3,12,0},
-  {813,0,SP_NONE,0,0,0,1,281,SHAPE_BOX,0,3,12,0},
-  {814,0,SP_NONE,0,0,0,1,282,SHAPE_BOX,0,3,12,0},
-  {815,0,SP_NONE,0,0,0,1,283,SHAPE_BOX,0,3,12,0},
-  {817,0,SP_NONE,0,0,0,1,284,SHAPE_BOX,0,3,12,0},
-  {820,0,SP_NONE,0,0,0,1,285,SHAPE_BOX,0,3,12,0},
-  {823,0,SP_NONE,0,0,0,1,286,SHAPE_BOX,0,3,12,0},
-  {824,0,SP_NONE,0,0,0,1,287,SHAPE_BOX,0,3,12,0},
-  {827,0,SP_NONE,0,0,0,1,288,SHAPE_BOX,0,3,12,0},
-  {830,0,SP_NONE,0,0,0,1,289,SHAPE_BOX,0,3,12,0},
-  {1079,0,SP_NONE,0,0,0,1,290,SHAPE_BOX,0,3,12,0},
-  {1080,0,SP_NONE,0,0,0,1,291,SHAPE_BOX,0,3,12,0},
-  {1081,0,SP_NONE,0,0,0,1,292,SHAPE_BOX,0,3,12,0},
-  {738,0,SP_NONE,0,0,0,1,293,SHAPE_BOX,0,3,12,0},
-  {668,0,SP_NONE,0,0,0,1,294,SHAPE_BOX,0,3,12,0},
-  {669,0,SP_NONE,0,0,0,1,295,SHAPE_BOX,0,3,12,0},
-  {671,0,SP_NONE,0,0,0,1,296,SHAPE_BOX,0,3,12,0},
-  {672,0,SP_NONE,0,0,0,1,297,SHAPE_BOX,0,3,12,0},
-  {421,2,SP_NONE,90,52,-8,1,298,SHAPE_BOX,0,3,12,0},
-  {446,2,SP_NONE,90,72,0,1,299,SHAPE_BOX,0,3,12,0},
-  {447,2,SP_NONE,52,72,0,1,300,SHAPE_BOX,0,3,12,-10},
-  {667,2,SP_NONE,90,60,0,1,301,SHAPE_BOX,0,3,12,0},
-  {989,2,SP_NONE,90,120,0,1,302,SHAPE_BOX,0,3,12,0},
-  {991,2,SP_NONE,24,32,0,1,303,SHAPE_BOX,0,3,12,0},
-  {720,2,SP_NONE,24,32,0,1,304,SHAPE_BOX,0,3,12,0},
-  {368,2,SP_NONE,90,40,-8,1,305,SHAPE_BOX,0,3,12,0},
-  {422,2,SP_NONE,60,44,-8,1,306,SHAPE_BOX,0,3,12,-10},
-  {768,2,SP_NONE,45,52,0,1,307,SHAPE_BOX,0,3,12,0},
-  {719,0,SP_NONE,0,0,0,1,308,SHAPE_BOX,0,12,12,0},
-  {721,0,SP_NONE,0,0,0,1,309,SHAPE_BOX,0,12,12,0},
-  {990,0,SP_NONE,0,0,0,1,310,SHAPE_BOX,0,12,12,0},
-  {992,0,SP_NONE,0,0,0,1,311,SHAPE_BOX,0,12,12,0},
-  {216,2,SP_NONE,60,120,0,2,312,SHAPE_BOX,0,3,12,0},
-  {218,2,SP_NONE,40,76,-6,2,314,SHAPE_BOX,0,3,12,0},
-  {458,2,SP_NONE,26,48,-9,2,316,SHAPE_BOX,0,3,12,0},
-  {459,2,SP_NONE,26,48,-9,1,318,SHAPE_BOX,3,3,12,0},
-  {205,2,SP_NONE,60,56,-9,1,319,SHAPE_BOX,3,3,12,0},
-  {147,1,SP_NONE,300,140,8,1,320,SHAPE_BOX,3,3,12,0},
-  {1228,0,SP_NONE,0,0,0,1,321,SHAPE_BOX,0,7,12,0},
-  {1050,0,SP_NONE,0,0,0,1,322,SHAPE_BOX,0,7,12,0},
-  {1052,0,SP_NONE,0,0,0,1,323,SHAPE_BOX,0,7,12,0},
-  {419,0,SP_NONE,0,0,0,1,324,SHAPE_BOX,0,7,12,0},
-  {420,0,SP_NONE,0,0,0,1,325,SHAPE_BOX,0,7,12,0},
-  {767,0,SP_NONE,0,0,0,1,326,SHAPE_BOX,0,7,12,0},
-  {1054,0,SP_NONE,0,0,0,1,327,SHAPE_BOX,0,12,9,0},
-  {494,0,SP_NONE,0,0,0,1,328,SHAPE_BOX,0,5,12,0},
-  {149,0,SP_NONE,0,0,0,1,329,SHAPE_BOX,0,6,12,0},
-  {1002,0,SP_NONE,0,0,0,1,330,SHAPE_BOX,0,5,6,0},
-  {1003,0,SP_NONE,0,0,0,1,331,SHAPE_BOX,0,5,6,0},
-  {1004,0,SP_NONE,0,0,0,1,332,SHAPE_BOX,0,5,6,0},
-  {1005,0,SP_NONE,0,0,0,1,333,SHAPE_BOX,0,5,6,0},
-  {1019,0,SP_NONE,0,0,0,1,334,SHAPE_BOX,2,5,12,0},
-  {1020,0,SP_NONE,0,0,0,1,335,SHAPE_BOX,2,5,12,0},
-  {997,0,SP_NONE,0,0,0,1,336,SHAPE_BOX,2,5,12,0},
-  {998,0,SP_NONE,0,0,0,1,337,SHAPE_BOX,2,5,12,0},
-  {999,0,SP_NONE,0,0,0,1,338,SHAPE_BOX,2,5,12,0},
-  {1000,0,SP_NONE,0,0,0,1,339,SHAPE_BOX,2,5,12,0},
-  {1058,0,SP_NONE,0,0,0,1,340,SHAPE_BOX,2,7,12,0},
-  {1059,0,SP_NONE,0,0,0,1,341,SHAPE_BOX,2,7,12,0},
-  {1055,0,SP_NONE,0,0,0,1,342,SHAPE_BOX,2,7,12,0},
-  {1056,0,SP_NONE,0,0,0,1,343,SHAPE_BOX,2,7,12,0},
-  {1057,0,SP_NONE,0,0,0,1,344,SHAPE_BOX,2,7,12,0},
-  {920,0,SP_NONE,0,0,0,2,345,SHAPE_BOX,4,10,12,0},
-  {921,0,SP_NONE,0,0,0,2,347,SHAPE_BOX,4,10,12,0},
-  {923,0,SP_NONE,0,0,0,2,349,SHAPE_BOX,4,10,12,0},
-  {924,0,SP_NONE,0,0,0,2,351,SHAPE_BOX,4,10,12,0},
-  {675,2,SP_NONE,320,320,0,2,353,SHAPE_CIRCLE,1,9,12,0},
-  {676,2,SP_NONE,177,177,0,2,355,SHAPE_CIRCLE,1,9,12,0},
-  {677,2,SP_NONE,125,125,0,2,357,SHAPE_CIRCLE,1,9,12,0},
-  {397,2,SP_NONE,289,289,0,2,359,SHAPE_CIRCLE,1,9,12,0},
-  {398,2,SP_NONE,176,176,0,2,361,SHAPE_CIRCLE,1,9,12,0},
-  {918,2,SP_NONE,240,240,0,3,363,SHAPE_CIRCLE,5,9,10,0},
-  {200,3,SP_SPEED_0,350,440,0,1,366,SHAPE_BOX,0,10,12,0},
-  {201,3,SP_SPEED_1,330,560,0,1,367,SHAPE_BOX,0,10,12,0},
-  {202,3,SP_SPEED_2,510,560,0,1,368,SHAPE_BOX,0,10,12,0},
-  {203,3,SP_SPEED_3,650,560,0,1,369,SHAPE_BOX,0,10,12,0},
-  {660,3,SP_PORTAL_WAVE,340,860,0,2,370,SHAPE_BOX,0,10,12,0},
-  {745,3,SP_PORTAL_ROBOT,340,860,0,2,372,SHAPE_BOX,0,10,12,0},
-  {286,3,SP_DUAL_ON,410,910,0,2,374,SHAPE_BOX,0,10,12,0},
-  {287,3,SP_DUAL_OFF,410,910,0,2,376,SHAPE_BOX,0,10,12,0},
-  {747,3,SP_TELEPORT,250,900,0,2,378,SHAPE_BOX,0,10,12,24},
-  {1022,3,SP_ORB_G,360,360,0,2,380,SHAPE_BOX,0,10,12,0},
-  {1275,3,SP_KEY,250,200,0,2,382,SHAPE_BOX,0,12,10,0},
-  {1276,0,SP_NONE,0,0,0,2,384,SHAPE_BOX,0,12,11,0},
-  {2467,0,SP_NONE,0,0,0,1,386,SHAPE_BOX,0,12,13,0},
-  {2466,0,SP_NONE,0,0,0,1,387,SHAPE_BOX,0,12,13,0},
-  {3092,0,SP_NONE,0,0,0,1,388,SHAPE_BOX,0,12,12,0},
-  {2465,0,SP_NONE,0,0,0,1,389,SHAPE_BOX,0,12,13,0},
-  {2468,0,SP_NONE,0,0,0,1,390,SHAPE_BOX,0,12,13,0},
-  {2596,0,SP_NONE,0,0,0,1,391,SHAPE_BOX,0,12,13,0},
-  {4318,0,SP_NONE,0,0,0,1,392,SHAPE_BOX,0,12,13,0},
-  {4372,0,SP_NONE,0,0,0,1,393,SHAPE_BOX,0,12,13,0},
-  {4368,0,SP_NONE,0,0,0,1,394,SHAPE_BOX,0,12,13,0},
-  {2538,0,SP_NONE,0,0,0,1,395,SHAPE_BOX,0,12,13,0},
-  {2310,0,SP_NONE,0,0,0,1,396,SHAPE_BOX,0,12,13,0},
-  {2255,0,SP_NONE,0,0,0,1,397,SHAPE_BOX,0,12,13,0},
-  {2312,0,SP_NONE,0,0,0,1,398,SHAPE_BOX,0,12,13,0},
-  {2360,0,SP_NONE,0,0,0,1,399,SHAPE_BOX,0,12,13,0},
-  {2361,0,SP_NONE,0,0,0,1,400,SHAPE_BOX,0,12,13,0},
-  {4187,0,SP_NONE,0,0,0,1,401,SHAPE_BOX,0,12,13,0},
-  {4322,0,SP_NONE,0,0,0,1,402,SHAPE_BOX,0,12,13,0},
-  {2481,0,SP_NONE,0,0,0,1,403,SHAPE_BOX,0,12,13,0},
-  {2417,0,SP_NONE,0,0,0,1,404,SHAPE_BOX,0,12,13,0},
-  {2620,0,SP_NONE,0,0,0,1,405,SHAPE_BOX,0,12,13,0},
-  {1602,0,SP_NONE,0,0,0,1,406,SHAPE_BOX,0,12,13,0},
-  {2101,0,SP_NONE,0,0,0,1,407,SHAPE_BOX,0,12,13,0},
-  {2103,0,SP_NONE,0,0,0,1,408,SHAPE_BOX,0,12,13,0},
-  {2104,0,SP_NONE,0,0,0,1,409,SHAPE_BOX,0,12,13,0},
-  {2118,0,SP_NONE,0,0,0,1,410,SHAPE_BOX,0,12,13,0},
-  {2119,0,SP_NONE,0,0,0,1,411,SHAPE_BOX,0,12,13,0},
-  {2123,0,SP_NONE,0,0,0,1,412,SHAPE_BOX,0,12,13,0},
-  {2124,0,SP_NONE,0,0,0,1,413,SHAPE_BOX,0,12,13,0},
-  {2125,0,SP_NONE,0,0,0,1,414,SHAPE_BOX,0,12,13,0},
-  {2143,0,SP_NONE,0,0,0,1,415,SHAPE_BOX,0,12,13,0},
-  {2171,0,SP_NONE,0,0,0,1,416,SHAPE_BOX,0,12,13,0},
-  {2172,0,SP_NONE,0,0,0,1,417,SHAPE_BOX,0,12,13,0},
-  {2222,0,SP_NONE,0,0,0,1,418,SHAPE_BOX,0,12,13,0},
-  {2372,0,SP_NONE,0,0,0,1,419,SHAPE_BOX,0,12,13,0},
-  {2373,0,SP_NONE,0,0,0,1,420,SHAPE_BOX,0,12,13,0},
-  {2374,0,SP_NONE,0,0,0,1,421,SHAPE_BOX,0,12,13,0},
-  {2375,0,SP_NONE,0,0,0,1,422,SHAPE_BOX,0,12,13,0},
-  {2407,0,SP_NONE,0,0,0,1,423,SHAPE_BOX,0,12,13,0},
-  {2414,0,SP_NONE,0,0,0,1,424,SHAPE_BOX,0,12,13,0},
-  {2452,0,SP_NONE,0,0,0,1,425,SHAPE_BOX,0,12,13,0},
-  {2469,0,SP_NONE,0,0,0,1,426,SHAPE_BOX,0,12,13,0},
-  {2488,0,SP_NONE,0,0,0,1,427,SHAPE_BOX,0,12,13,0},
-  {2489,0,SP_NONE,0,0,0,1,428,SHAPE_BOX,0,12,13,0},
-  {2498,0,SP_NONE,0,0,0,1,429,SHAPE_BOX,0,12,13,0},
-  {2499,0,SP_NONE,0,0,0,1,430,SHAPE_BOX,0,12,13,0},
-  {2501,0,SP_NONE,0,0,0,1,431,SHAPE_BOX,0,12,13,0},
-  {2506,0,SP_NONE,0,0,0,1,432,SHAPE_BOX,0,12,13,0},
-  {2507,0,SP_NONE,0,0,0,1,433,SHAPE_BOX,0,12,13,0},
-  {2529,0,SP_NONE,0,0,0,1,434,SHAPE_BOX,0,12,13,0},
-  {2530,0,SP_NONE,0,0,0,1,435,SHAPE_BOX,0,12,13,0},
-  {2536,0,SP_NONE,0,0,0,1,436,SHAPE_BOX,0,12,13,0},
-  {2537,0,SP_NONE,0,0,0,1,437,SHAPE_BOX,0,12,13,0},
-  {2542,0,SP_NONE,0,0,0,1,438,SHAPE_BOX,0,12,13,0},
-  {2546,0,SP_NONE,0,0,0,1,439,SHAPE_BOX,0,12,13,0},
-  {2551,0,SP_NONE,0,0,0,1,440,SHAPE_BOX,0,12,13,0},
-  {2554,0,SP_NONE,0,0,0,1,441,SHAPE_BOX,0,12,13,0},
-  {2570,0,SP_NONE,0,0,0,1,442,SHAPE_BOX,0,12,13,0},
-  {2578,0,SP_NONE,0,0,0,1,443,SHAPE_BOX,0,12,13,0},
-  {2579,0,SP_NONE,0,0,0,1,444,SHAPE_BOX,0,12,13,0},
-  {2600,0,SP_NONE,0,0,0,1,445,SHAPE_BOX,0,12,13,0},
-  {2601,0,SP_NONE,0,0,0,1,446,SHAPE_BOX,0,12,13,0},
-  {2602,0,SP_NONE,0,0,0,1,447,SHAPE_BOX,0,12,13,0},
-  {2603,0,SP_NONE,0,0,0,1,448,SHAPE_BOX,0,12,13,0},
-  {2604,0,SP_NONE,0,0,0,1,449,SHAPE_BOX,0,12,13,0},
-  {2632,0,SP_NONE,0,0,0,1,450,SHAPE_BOX,0,12,13,0},
-  {2646,0,SP_NONE,0,0,0,1,451,SHAPE_BOX,0,12,13,0},
-  {2694,0,SP_NONE,0,0,0,1,452,SHAPE_BOX,0,12,13,0},
-  {3458,0,SP_NONE,0,0,0,1,453,SHAPE_BOX,0,12,13,0},
-  {3576,0,SP_NONE,0,0,0,1,454,SHAPE_BOX,0,12,13,0},
-  {3577,0,SP_NONE,0,0,0,1,455,SHAPE_BOX,0,12,13,0},
-  {3578,0,SP_NONE,0,0,0,1,456,SHAPE_BOX,0,12,13,0},
-  {4000,0,SP_NONE,0,0,0,1,457,SHAPE_BOX,0,12,13,0},
-  {4082,0,SP_NONE,0,0,0,1,458,SHAPE_BOX,0,12,13,0},
-  {4231,0,SP_NONE,0,0,0,1,459,SHAPE_BOX,0,12,13,0},
-  {4233,0,SP_NONE,0,0,0,1,460,SHAPE_BOX,0,12,13,0},
-  {4269,0,SP_NONE,0,0,0,1,461,SHAPE_BOX,0,12,13,0},
-  {4300,0,SP_NONE,0,0,0,1,462,SHAPE_BOX,0,12,13,0},
-  {4384,0,SP_NONE,0,0,0,1,463,SHAPE_BOX,0,12,13,0},
-  {2083,0,SP_NONE,0,0,0,1,464,SHAPE_BOX,0,12,13,0},
-  {1888,0,SP_NONE,0,0,0,1,465,SHAPE_BOX,0,12,12,0},
-  {1886,0,SP_NONE,0,0,0,1,466,SHAPE_BOX,0,12,12,0},
-  {1887,0,SP_NONE,0,0,0,1,467,SHAPE_BOX,0,12,12,0},
-  {1762,0,SP_NONE,0,0,0,1,468,SHAPE_BOX,0,12,12,0},
-  {1759,0,SP_NONE,0,0,0,1,469,SHAPE_BOX,0,12,12,0},
-  {1269,0,SP_NONE,0,0,0,1,470,SHAPE_BOX,0,12,12,0},
-  {1009,0,SP_NONE,0,0,0,1,471,SHAPE_BOX,0,12,12,0},
-  {1013,0,SP_NONE,0,0,0,1,472,SHAPE_BOX,0,12,12,0},
-  {1743,1,SP_NONE,300,300,0,2,473,SHAPE_SLOPE,0,3,12,0},
-  {1744,1,SP_NONE,600,300,0,2,475,SHAPE_SLOPE,0,3,12,0},
-  {955,0,SP_NONE,0,0,0,1,477,SHAPE_BOX,0,3,12,0},
-  {661,1,SP_NONE,150,150,0,2,478,SHAPE_BOX,0,3,12,0},
-  {1903,1,SP_NONE,300,140,0,1,480,SHAPE_BOX,0,3,12,0},
-  {1910,1,SP_NONE,150,150,0,1,481,SHAPE_BOX,0,3,12,0},
-  {392,2,SP_NONE,26,48,-9,1,482,SHAPE_BOX,0,3,12,0},
-  {498,0,SP_NONE,0,0,0,1,483,SHAPE_BOX,0,12,12,0},
-  {1327,2,SP_NONE,40,40,0,1,484,SHAPE_CIRCLE,0,9,10,0},
-  {2012,2,SP_NONE,120,120,0,2,485,SHAPE_CIRCLE,1,9,10,0},
-  {1619,2,SP_NONE,250,250,0,2,487,SHAPE_CIRCLE,1,3,12,0},
-  {1583,2,SP_NONE,40,40,0,2,489,SHAPE_CIRCLE,4,12,11,0},
-  {2032,0,SP_NONE,0,0,0,2,491,SHAPE_BOX,0,12,13,0},
-  {3000,0,SP_NONE,0,0,0,1,493,SHAPE_BOX,2,12,12,0},
-  {2888,0,SP_NONE,0,0,0,1,494,SHAPE_BOX,4,12,13,0},
-  {1856,0,SP_NONE,0,0,0,1,495,SHAPE_BOX,2,10,12,0},
-  {1519,0,SP_NONE,0,0,0,1,496,SHAPE_BOX,2,10,12,0},
-  {1936,0,SP_NONE,0,0,0,1,497,SHAPE_BOX,4,10,12,0},
-  {2042,0,SP_NONE,0,0,0,1,498,SHAPE_BOX,0,12,12,0},
-  {2864,0,SP_NONE,0,0,0,2,499,SHAPE_BOX,4,12,13,0},
-  {2027,0,SP_NONE,0,0,0,1,501,SHAPE_BOX,2,12,12,0},
-  {1752,0,SP_NONE,0,0,0,1,502,SHAPE_BOX,2,7,12,0},
-  {460,0,SP_NONE,0,0,0,1,503,SHAPE_BOX,0,6,12,0},
-  {1753,0,SP_NONE,0,0,0,1,504,SHAPE_BOX,0,7,12,0},
-  {1600,0,SP_NONE,0,0,0,1,505,SHAPE_BOX,0,10,12,0},
-  {1601,0,SP_NONE,0,0,0,1,506,SHAPE_BOX,0,10,12,0},
-  {1603,0,SP_NONE,0,0,0,1,507,SHAPE_BOX,0,10,12,0},
-  {942,0,SP_NONE,0,0,0,1,508,SHAPE_BOX,0,12,12,0},
-  {1331,3,SP_PORTAL_SPIDER,340,860,0,2,509,SHAPE_BOX,0,10,12,0},
-  {1933,3,SP_PORTAL_SWING,340,860,0,2,511,SHAPE_BOX,0,10,12,0},
-  {1704,3,SP_ORB_DASH,360,360,0,2,513,SHAPE_BOX,0,10,12,0},
-  {1751,3,SP_ORB_DASH_G,360,360,0,2,515,SHAPE_BOX,0,10,12,0},
-  {3004,3,SP_ORB_SPIDER,360,360,0,2,517,SHAPE_BOX,0,10,12,0},
-  {1333,3,SP_ORB_R,360,360,0,2,519,SHAPE_BOX,0,10,12,0},
-  {1332,3,SP_PAD_R,250,40,-12,1,521,SHAPE_BOX,0,10,12,0},
-  {1594,3,SP_ORB_T,360,360,0,2,522,SHAPE_BOX,0,10,12,0},
-  {2902,3,SP_TELEPORT2,250,900,0,2,524,SHAPE_BOX,0,10,12,24},
-  {4401,3,SP_ITEM,150,150,0,2,526,SHAPE_BOX,0,12,10,0},
-  {2069,3,SP_FORCE,300,300,0,0,528,SHAPE_BOX,0,3,12,0},
-  {3645,3,SP_FORCE_CIRCLE,150,150,0,0,528,SHAPE_CIRCLE,0,3,12,0},
-  {1816,0,SP_NONE,300,300,0,0,528,SHAPE_BOX,0,3,12,0},
-  {1829,3,SP_STOP_DASH,300,300,0,0,528,SHAPE_BOX,0,3,12,0},
-  {1859,3,SP_ARM_HEAD,300,300,0,0,528,SHAPE_BOX,0,3,12,0},
-  {1755,3,SP_ARM_SLIDE,300,300,0,0,528,SHAPE_BOX,0,3,12,0},
-  {2866,3,SP_ARM_FLIP,300,300,0,0,528,SHAPE_BOX,0,3,12,0},
-  {1813,3,SP_ARM_NOAUTO,300,300,0,0,528,SHAPE_BOX,0,3,12,0},
+  {0,0,0,0,0,0,0,0,0,0,0,0},
+  {1,1,SP_NONE,300,300,0,2,0,SHAPE_BOX,0,3,12},
+  {2,1,SP_NONE,300,300,0,2,2,SHAPE_BOX,0,3,12},
+  {3,1,SP_NONE,300,300,0,2,4,SHAPE_BOX,0,3,12},
+  {4,1,SP_NONE,300,300,0,2,6,SHAPE_BOX,0,3,12},
+  {5,1,SP_NONE,300,300,0,2,8,SHAPE_BOX,0,3,12},
+  {6,1,SP_NONE,300,300,0,2,10,SHAPE_BOX,0,3,12},
+  {7,0,SP_NONE,0,0,0,1,12,SHAPE_BOX,0,3,12},
+  {8,0,SP_NONE,0,0,0,1,13,SHAPE_BOX,0,3,12},
+  {9,1,SP_NONE,300,140,8,2,14,SHAPE_BOX,0,3,12},
+  {10,1,SP_NONE,300,160,7,1,16,SHAPE_BOX,0,3,12},
+  {11,1,SP_NONE,300,160,7,1,17,SHAPE_BOX,0,3,12},
+  {12,1,SP_NONE,300,160,7,1,18,SHAPE_BOX,0,3,12},
+  {13,1,SP_NONE,300,160,7,1,19,SHAPE_BOX,0,3,12},
+  {14,2,SP_NONE,90,140,0,2,20,SHAPE_BOX,0,3,12},
+  {15,2,SP_NONE,90,60,-9,2,22,SHAPE_BOX,0,3,12},
+  {16,2,SP_NONE,60,90,-6,2,24,SHAPE_BOX,0,3,12},
+  {17,2,SP_NONE,120,90,-13,1,26,SHAPE_BOX,0,9,12},
+  {18,0,SP_NONE,0,0,6,2,27,SHAPE_BOX,0,9,12},
+  {19,0,SP_NONE,0,0,-1,2,29,SHAPE_BOX,0,9,12},
+  {20,0,SP_NONE,0,0,-8,2,31,SHAPE_BOX,0,9,12},
+  {21,0,SP_NONE,0,0,4,1,33,SHAPE_BOX,0,5,12},
+  {22,0,SP_NONE,0,0,4,1,34,SHAPE_BOX,0,5,12},
+  {23,0,SP_NONE,0,0,-2,1,35,SHAPE_BOX,0,5,12},
+  {24,0,SP_NONE,0,0,-8,1,36,SHAPE_BOX,0,5,12},
+  {25,0,SP_NONE,0,0,-12,1,37,SHAPE_BOX,0,5,12},
+  {26,0,SP_NONE,0,0,-13,1,38,SHAPE_BOX,0,5,12},
+  {27,0,SP_NONE,0,0,0,1,39,SHAPE_BOX,0,6,12},
+  {28,3,SP_PAD_Y,260,60,-13,2,40,SHAPE_BOX,0,10,12},
+  {29,3,SP_PAD_B,260,60,-12,2,42,SHAPE_BOX,0,10,12},
+  {30,3,SP_PAD_P,260,60,-13,2,44,SHAPE_BOX,0,10,12},
+  {31,3,SP_ORB_Y,340,340,0,2,46,SHAPE_BOX,0,10,12},
+  {32,3,SP_ORB_P,340,340,0,2,48,SHAPE_BOX,0,10,12},
+  {33,3,SP_ORB_B,340,340,0,2,50,SHAPE_BOX,0,10,12},
+  {34,3,SP_GRAV_N,280,800,0,2,52,SHAPE_BOX,0,10,12},
+  {35,3,SP_GRAV_F,280,800,0,2,54,SHAPE_BOX,0,10,12},
+  {36,3,SP_PORTAL_CUBE,360,920,0,2,56,SHAPE_BOX,0,10,12},
+  {37,3,SP_PORTAL_SHIP,360,920,0,2,58,SHAPE_BOX,0,10,12},
+  {38,3,SP_COIN,360,360,0,1,60,SHAPE_BOX,0,10,12},
+  {39,3,SP_PORTAL_BALL,360,920,0,2,61,SHAPE_BOX,0,10,12},
+  {40,3,SP_PORTAL_UFO,360,920,0,2,63,SHAPE_BOX,0,10,12},
+  {41,3,SP_SIZE_MINI,360,920,0,2,65,SHAPE_BOX,0,10,12},
+  {42,3,SP_SIZE_NORMAL,360,920,0,2,67,SHAPE_BOX,0,10,12},
+  {43,1,SP_NONE,300,300,0,2,69,SHAPE_BOX,0,3,12},
+  {44,1,SP_NONE,300,300,0,2,71,SHAPE_BOX,0,3,12},
+  {45,1,SP_NONE,300,300,0,1,73,SHAPE_BOX,0,3,12},
+  {46,1,SP_NONE,300,300,0,1,74,SHAPE_BOX,0,3,12},
+  {47,1,SP_NONE,300,300,0,2,75,SHAPE_BOX,0,3,12},
+  {48,1,SP_NONE,300,300,0,2,77,SHAPE_BOX,0,3,12},
+  {49,1,SP_NONE,300,300,0,3,79,SHAPE_BOX,0,9,12},
+  {50,1,SP_NONE,300,300,0,3,82,SHAPE_BOX,0,9,12},
+  {51,1,SP_NONE,300,300,0,3,85,SHAPE_BOX,0,9,12},
+  {52,1,SP_NONE,300,300,0,3,88,SHAPE_BOX,0,9,12},
+  {53,1,SP_NONE,300,300,0,2,91,SHAPE_BOX,0,3,12},
+  {54,1,SP_NONE,300,300,0,2,93,SHAPE_BOX,0,3,12},
+  {55,1,SP_NONE,300,300,0,2,95,SHAPE_BOX,0,3,12},
+  {56,1,SP_NONE,300,300,0,2,97,SHAPE_BOX,0,3,12},
+  {57,0,SP_NONE,0,0,0,1,99,SHAPE_BOX,0,3,12},
+  {58,1,SP_NONE,300,300,0,2,100,SHAPE_BOX,0,3,12},
+  {59,1,SP_NONE,300,300,0,2,102,SHAPE_BOX,0,3,12},
+  {60,1,SP_NONE,300,300,0,2,104,SHAPE_BOX,0,3,12},
+  {61,1,SP_NONE,300,300,0,2,106,SHAPE_BOX,0,3,12},
+  {62,1,SP_NONE,300,300,0,2,108,SHAPE_BOX,0,3,12},
+  {63,0,SP_NONE,0,0,0,1,110,SHAPE_BOX,0,3,12},
+  {64,1,SP_NONE,300,300,0,2,111,SHAPE_BOX,0,3,12},
+  {65,1,SP_NONE,300,300,0,2,113,SHAPE_BOX,0,3,12},
+  {66,1,SP_NONE,300,300,0,2,115,SHAPE_BOX,0,3,12},
+  {67,1,SP_NONE,300,300,0,2,117,SHAPE_BOX,0,3,12},
+  {68,1,SP_NONE,300,210,5,1,119,SHAPE_BOX,0,3,12},
+  {69,1,SP_NONE,300,210,5,1,120,SHAPE_BOX,0,3,12},
+  {70,0,SP_NONE,0,0,0,1,121,SHAPE_BOX,0,9,12},
+  {71,0,SP_NONE,0,0,0,1,122,SHAPE_BOX,0,3,12},
+  {72,0,SP_NONE,0,0,0,1,123,SHAPE_BOX,0,9,12},
+  {73,0,SP_NONE,0,0,0,1,124,SHAPE_BOX,0,9,12},
+  {74,2,SP_NONE,120,80,-8,1,125,SHAPE_BOX,0,3,12},
+  {75,2,SP_NONE,90,140,0,2,126,SHAPE_BOX,0,3,12},
+  {76,2,SP_NONE,90,70,-8,1,128,SHAPE_BOX,0,3,12},
+  {77,2,SP_NONE,60,90,-5,1,129,SHAPE_BOX,0,3,12},
+  {78,2,SP_NONE,90,140,0,1,130,SHAPE_BOX,3,3,12},
+  {79,2,SP_NONE,60,90,-6,1,131,SHAPE_BOX,3,3,12},
+  {80,1,SP_NONE,300,300,0,1,132,SHAPE_BOX,3,3,12},
+  {81,2,SP_NONE,291,291,0,1,133,SHAPE_CIRCLE,1,9,12},
+  {82,2,SP_NONE,194,194,0,1,134,SHAPE_CIRCLE,1,9,12},
+  {83,2,SP_NONE,108,108,0,1,135,SHAPE_CIRCLE,1,9,12},
+  {84,2,SP_NONE,141,141,0,1,136,SHAPE_CIRCLE,1,3,12},
+  {85,2,SP_NONE,184,184,0,1,137,SHAPE_CIRCLE,1,3,12},
+  {86,2,SP_NONE,26,26,0,1,138,SHAPE_CIRCLE,1,3,12},
+  {87,2,SP_NONE,291,291,0,1,139,SHAPE_CIRCLE,1,3,12},
+  {88,2,SP_NONE,198,198,0,1,140,SHAPE_CIRCLE,1,3,12},
+  {89,0,SP_NONE,0,0,0,1,141,SHAPE_BOX,2,5,12},
+  {90,0,SP_NONE,0,0,0,1,142,SHAPE_BOX,2,5,12},
+  {91,0,SP_NONE,0,0,0,1,143,SHAPE_BOX,2,5,12},
+  {92,0,SP_NONE,0,0,0,1,144,SHAPE_BOX,2,6,12},
+  {93,0,SP_NONE,0,0,0,1,145,SHAPE_BOX,2,6,12},
+  {94,0,SP_NONE,0,0,0,1,146,SHAPE_BOX,2,6,12},
+  {95,0,SP_NONE,0,0,0,1,147,SHAPE_BOX,2,5,12},
+  {96,0,SP_NONE,0,0,0,1,148,SHAPE_BOX,2,6,12},
+  {97,0,SP_NONE,0,0,0,1,149,SHAPE_BOX,2,6,12},
+  {98,0,SP_NONE,0,0,0,1,150,SHAPE_BOX,2,6,12},
+  {99,0,SP_NONE,0,0,0,1,151,SHAPE_BOX,0,6,12},
+  {100,0,SP_NONE,0,0,0,1,152,SHAPE_BOX,0,6,12},
+  {101,0,SP_NONE,0,0,0,1,153,SHAPE_BOX,0,6,12},
+  {102,0,SP_NONE,0,0,0,1,154,SHAPE_BOX,0,6,12},
+  {103,0,SP_NONE,0,0,0,1,155,SHAPE_BOX,0,5,12},
+  {104,0,SP_NONE,0,0,0,1,156,SHAPE_BOX,0,5,12},
+  {105,0,SP_NONE,0,0,0,1,157,SHAPE_BOX,0,5,12},
+  {106,0,SP_NONE,0,0,0,1,158,SHAPE_BOX,0,6,12},
+  {107,0,SP_NONE,0,0,0,1,159,SHAPE_BOX,0,6,12},
+  {108,0,SP_NONE,0,0,0,1,160,SHAPE_BOX,0,6,12},
+  {109,0,SP_NONE,0,0,0,1,161,SHAPE_BOX,0,6,12},
+  {110,0,SP_NONE,0,0,0,1,162,SHAPE_BOX,0,6,12},
+  {111,0,SP_NONE,0,0,0,1,163,SHAPE_BOX,0,5,12},
+  {112,0,SP_NONE,0,0,0,1,164,SHAPE_BOX,0,5,12},
+  {113,0,SP_NONE,0,0,0,1,165,SHAPE_BOX,0,5,12},
+  {114,0,SP_NONE,0,0,0,1,166,SHAPE_BOX,0,6,12},
+  {115,0,SP_NONE,0,0,0,1,167,SHAPE_BOX,0,7,12},
+  {116,0,SP_NONE,0,0,0,1,168,SHAPE_BOX,0,7,12},
+  {117,0,SP_NONE,0,0,0,1,169,SHAPE_BOX,0,7,12},
+  {118,0,SP_NONE,0,0,0,1,170,SHAPE_BOX,0,5,12},
+  {119,0,SP_NONE,0,0,0,1,171,SHAPE_BOX,0,5,12},
+  {120,1,SP_NONE,300,300,0,2,172,SHAPE_BOX,0,3,12},
+  {121,1,SP_NONE,300,15,0,2,174,SHAPE_BOX,0,3,12},
+  {122,1,SP_NONE,300,300,0,2,176,SHAPE_BOX,0,3,12},
+  {123,1,SP_NONE,300,300,0,2,178,SHAPE_BOX,0,3,12},
+  {124,1,SP_NONE,300,300,0,2,180,SHAPE_BOX,0,3,12},
+  {125,1,SP_NONE,300,15,0,2,182,SHAPE_BOX,0,3,12},
+  {126,1,SP_NONE,300,150,0,2,184,SHAPE_BOX,0,3,12},
+  {127,1,SP_NONE,300,150,0,2,186,SHAPE_BOX,0,3,12},
+  {128,1,SP_NONE,300,150,0,2,188,SHAPE_BOX,0,3,12},
+  {129,1,SP_NONE,300,30,0,2,190,SHAPE_BOX,0,3,12},
+  {130,1,SP_NONE,150,150,0,2,192,SHAPE_BOX,0,3,12},
+  {131,1,SP_NONE,300,300,0,2,194,SHAPE_BOX,0,3,12},
+  {132,2,SP_NONE,81,47,-8,1,196,SHAPE_BOX,0,3,12},
+  {133,2,SP_NONE,81,65,0,1,197,SHAPE_BOX,0,3,12},
+  {134,2,SP_NONE,47,65,0,1,198,SHAPE_BOX,0,3,12},
+  {135,2,SP_NONE,81,54,0,1,199,SHAPE_BOX,0,3,12},
+  {136,2,SP_NONE,81,108,0,1,200,SHAPE_BOX,0,3,12},
+  {137,2,SP_NONE,22,29,0,1,201,SHAPE_BOX,0,3,12},
+  {138,2,SP_NONE,22,29,0,1,202,SHAPE_BOX,0,3,12},
+  {139,2,SP_NONE,81,36,-8,1,203,SHAPE_BOX,0,3,12},
+  {140,2,SP_NONE,54,40,-8,1,204,SHAPE_BOX,0,3,12},
+  {141,2,SP_NONE,40,47,0,1,205,SHAPE_BOX,0,3,12},
+  {142,2,SP_NONE,54,108,0,2,206,SHAPE_BOX,0,3,12},
+  {143,2,SP_NONE,36,68,-6,2,208,SHAPE_BOX,0,3,12},
+  {144,2,SP_NONE,23,43,-9,2,210,SHAPE_BOX,0,3,12},
+  {145,2,SP_NONE,23,43,-9,1,212,SHAPE_BOX,3,3,12},
+  {146,2,SP_NONE,54,50,-9,1,213,SHAPE_BOX,3,3,12},
+  {147,1,SP_NONE,300,140,8,1,214,SHAPE_BOX,3,3,12},
+  {148,2,SP_NONE,288,288,0,2,215,SHAPE_CIRCLE,1,9,12},
+  {149,2,SP_NONE,159,159,0,2,217,SHAPE_CIRCLE,1,9,12},
+  {150,2,SP_NONE,112,112,0,2,219,SHAPE_CIRCLE,1,9,12},
+  {151,2,SP_NONE,260,260,0,2,221,SHAPE_CIRCLE,1,9,12},
+  {152,2,SP_NONE,158,158,0,2,223,SHAPE_CIRCLE,1,9,12},
+  {153,3,SP_SPEED_0,360,920,0,1,225,SHAPE_BOX,0,10,12},
+  {154,3,SP_SPEED_1,360,920,0,1,226,SHAPE_BOX,0,10,12},
+  {155,3,SP_SPEED_2,360,920,0,1,227,SHAPE_BOX,0,10,12},
+  {156,3,SP_SPEED_3,360,920,0,1,228,SHAPE_BOX,0,10,12},
+  {157,3,SP_PORTAL_WAVE,360,920,0,2,229,SHAPE_BOX,0,10,12},
+  {158,3,SP_PORTAL_ROBOT,360,920,0,2,231,SHAPE_BOX,0,10,12},
+  {159,3,SP_ORB_G,340,340,0,2,233,SHAPE_BOX,0,10,12},
+  {160,1,SP_NONE,150,150,0,2,235,SHAPE_BOX,0,3,12},
+  {161,1,SP_NONE,300,140,0,1,237,SHAPE_BOX,0,3,12},
+  {162,1,SP_NONE,150,150,0,1,238,SHAPE_BOX,0,3,12},
+  {163,2,SP_NONE,23,43,-9,1,239,SHAPE_BOX,0,3,12},
+  {164,3,SP_PORTAL_SPIDER,360,920,0,2,240,SHAPE_BOX,0,10,12},
+  {165,3,SP_PORTAL_SWING,360,920,0,2,242,SHAPE_BOX,0,10,12},
+  {166,3,SP_ORB_SPIDER,340,340,0,2,244,SHAPE_BOX,0,10,12},
+  {167,3,SP_ORB_R,340,340,0,2,246,SHAPE_BOX,0,10,12},
+  {168,3,SP_PAD_R,260,60,-12,1,248,SHAPE_BOX,0,10,12},
 };
 const ObjPart objparts[] = {
   {SPR_BLOCK,0,0,LAYER_BLOCK,CT_OBJ,0,0},{SPR_GLOW_ALL,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,0},{SPR_GRID_T,0,0,LAYER_BLOCK,CT_OBJ,0,0},{SPR_GLOW_T,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,0},
@@ -480,94 +218,25 @@ const ObjPart objparts[] = {
   {SPR_PULSE_DIAMOND,0,0,LAYER_DETAIL,CT_P2ADD,1,0},{SPR_PULSE_ARROW,0,0,LAYER_DETAIL,CT_P2ADD,1,0},{SPR_PULSE_CROSS,0,0,LAYER_DETAIL,CT_P2ADD,1,0},{SPR_SPIKEROD_L,0,0,LAYER_DETAIL,CT_P1ADD,0,0},
   {SPR_SPIKEROD_M,0,0,LAYER_DETAIL,CT_P1ADD,0,0},{SPR_SPIKEROD_S,0,0,LAYER_DETAIL,CT_P1ADD,0,0},{SPR_DIAMOND_ROD,0,0,LAYER_DETAIL,CT_P2ADD,0,0},{SPR_WAVY,0,0,LAYER_DETAIL,CT_LBG,0,0},
   {SPR_WAVY_L,0,0,LAYER_DETAIL,CT_LBG,0,0},{SPR_WAVY_R,0,0,LAYER_DETAIL,CT_LBG,0,0},{-1,0,0,LAYER_DETAIL,CT_P1ADD,0,27},{-1,0,0,LAYER_DETAIL,CT_P1ADD,0,28},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,31},{-1,0,0,LAYER_RODS,CT_BASE,0,32},{-1,0,0,LAYER_RODS,CT_BASE,0,33},{-1,0,0,LAYER_RODS,CT_BASE,0,34},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,35},{-1,0,0,LAYER_RODS,CT_BASE,0,36},{-1,0,0,LAYER_RODS,CT_BASE,0,37},{-1,0,0,LAYER_RODS,CT_BASE,0,38},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,39},{-1,0,0,LAYER_BLOCK,CT_BASE,0,40},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,41},{-1,0,0,LAYER_BLOCK,CT_BASE,0,42},
-  {-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,43},{-1,0,0,LAYER_BLOCK,CT_BASE,0,44},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,45},{-1,0,0,LAYER_BLOCK,CT_BASE,0,46},
-  {-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,47},{-1,0,0,LAYER_BLOCK,CT_BASE,0,48},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,49},{-1,0,0,LAYER_BLOCK,CT_BASE,0,50},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,51},{-1,0,0,LAYER_BLOCK,CT_BASE,0,52},{-1,0,0,LAYER_BLOCK,CT_BASE,0,53},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,54},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,55},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,56},{-1,0,0,LAYER_BLOCK,CT_BASE,0,57},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,58},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,59},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,60},{-1,0,0,LAYER_BLOCK,CT_BASE,0,61},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,62},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,63},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,64},{-1,0,0,LAYER_BLOCK,CT_BASE,0,65},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,66},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,67},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,68},{-1,0,0,LAYER_BLOCK,CT_BASE,0,69},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,70},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,71},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,70},{-1,0,0,LAYER_DETAIL,CT_BASE,0,72},{-1,0,0,LAYER_DETAIL,CT_BASE,0,73},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,74},{-1,0,0,LAYER_RODS,CT_BASE,0,75},{-1,0,0,LAYER_RODS,CT_BASE,0,76},{-1,0,0,LAYER_RODS,CT_BASE,0,77},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,78},{-1,0,0,LAYER_RODS,CT_BASE,0,79},{-1,0,0,LAYER_RODS,CT_BASE,0,80},{-1,0,0,LAYER_RODS,CT_BASE,0,81},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,82},{-1,0,0,LAYER_RODS,CT_BASE,0,83},{-1,0,0,LAYER_RODS,CT_BASE,0,84},{-1,0,0,LAYER_RODS,CT_BASE,0,85},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,86},{-1,0,0,LAYER_RODS,CT_BASE,0,87},{-1,0,0,LAYER_RODS,CT_BASE,0,88},{-1,0,0,LAYER_RODS,CT_BASE,0,89},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,90},{-1,0,0,LAYER_RODS,CT_BASE,0,91},{-1,0,0,LAYER_RODS,CT_BASE,0,92},{-1,0,0,LAYER_RODS,CT_BASE,0,93},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,94},{-1,0,0,LAYER_BLOCK,CT_BASE,0,95},{-1,0,0,LAYER_DETAIL,CT_BASE,0,96},{-1,0,0,LAYER_DETAIL,CT_BASE,0,97},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,98},{-1,0,0,LAYER_DETAIL,CT_BASE,0,99},{-1,0,0,LAYER_DETAIL,CT_BASE,0,100},{-1,0,0,LAYER_DETAIL,CT_BASE,0,101},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,102},{-1,0,0,LAYER_DETAIL,CT_BASE,0,103},{-1,0,0,LAYER_DETAIL,CT_BASE,0,104},{-1,0,0,LAYER_DETAIL,CT_BASE,0,105},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,106},{-1,0,0,LAYER_RODS,CT_BASE,0,107},{-1,0,0,LAYER_RODS,CT_BASE,0,108},{-1,0,0,LAYER_RODS,CT_BASE,0,109},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,110},{-1,0,0,LAYER_RODS,CT_BASE,0,111},{-1,0,0,LAYER_RODS,CT_BASE,0,112},{-1,0,0,LAYER_RODS,CT_BASE,0,113},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,114},{-1,0,0,LAYER_RODS,CT_BASE,0,115},{-1,0,0,LAYER_RODS,CT_BASE,0,116},{-1,0,0,LAYER_RODS,CT_BASE,0,117},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,118},{-1,0,0,LAYER_RODS,CT_BASE,0,119},{-1,0,0,LAYER_RODS,CT_BASE,0,120},{-1,0,0,LAYER_RODS,CT_BASE,0,121},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,122},{-1,0,0,LAYER_RODS,CT_BASE,0,123},{-1,0,0,LAYER_RODS,CT_BASE,0,124},{-1,0,0,LAYER_RODS,CT_BASE,0,125},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,126},{-1,0,0,LAYER_RODS,CT_BASE,0,127},{-1,0,0,LAYER_RODS,CT_BASE,0,128},{-1,0,0,LAYER_RODS,CT_BASE,0,129},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,130},{-1,0,0,LAYER_RODS,CT_BASE,0,131},{-1,0,0,LAYER_RODS,CT_BASE,0,132},{-1,0,0,LAYER_RODS,CT_BASE,0,133},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,134},{-1,0,0,LAYER_RODS,CT_BASE,0,135},{-1,0,0,LAYER_RODS,CT_BASE,0,136},{-1,0,0,LAYER_RODS,CT_BASE,0,137},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,138},{-1,0,0,LAYER_RODS,CT_BASE,0,139},{-1,0,0,LAYER_RODS,CT_BASE,0,140},{-1,0,0,LAYER_RODS,CT_BASE,0,141},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,142},{-1,0,0,LAYER_RODS,CT_BASE,0,143},{-1,0,0,LAYER_RODS,CT_BASE,0,144},{-1,0,0,LAYER_RODS,CT_BASE,0,145},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,146},{-1,0,0,LAYER_RODS,CT_BASE,0,147},{-1,0,0,LAYER_RODS,CT_BASE,0,148},{-1,0,0,LAYER_RODS,CT_BASE,0,149},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,150},{-1,0,0,LAYER_RODS,CT_BASE,0,151},{-1,0,0,LAYER_RODS,CT_BASE,0,152},{-1,0,0,LAYER_RODS,CT_BASE,0,153},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,154},{-1,0,0,LAYER_RODS,CT_BASE,0,155},{-1,0,0,LAYER_BLOCK,CT_BASE,0,156},{-1,0,0,LAYER_BLOCK,CT_BASE,0,157},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,158},{-1,0,0,LAYER_BLOCK,CT_BASE,0,159},{-1,0,0,LAYER_BLOCK,CT_BASE,0,160},{-1,0,0,LAYER_BLOCK,CT_BASE,0,161},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,162},{-1,0,0,LAYER_BLOCK,CT_BASE,0,163},{-1,0,0,LAYER_BLOCK,CT_BASE,0,164},{-1,0,0,LAYER_BLOCK,CT_BASE,0,165},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,166},{-1,0,0,LAYER_DETAIL,CT_BASE,0,167},{-1,0,0,LAYER_DETAIL,CT_BASE,0,168},{-1,0,0,LAYER_DETAIL,CT_BASE,0,169},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,170},{SPR_GLOW_SPIKE,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,0},{-1,0,0,LAYER_BLOCK,CT_BASE,0,171},{SPR_GLOW_SPIKE,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,0},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,172},{SPR_GLOW_SPIKE,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,0},{-1,0,0,LAYER_BLOCK,CT_BASE,0,173},{-1,0,0,LAYER_BLOCK,CT_BASE,0,174},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,175},{-1,0,0,LAYER_DETAIL,CT_BASE,0,176},{-1,0,0,LAYER_DETAIL,CT_BASE,0,177},{-1,0,0,LAYER_DETAIL,CT_BASE,0,178},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,179},{-1,0,0,LAYER_DETAIL,CT_BASE,0,180},{-1,0,0,LAYER_DETAIL,CT_BASE,0,181},{-1,0,0,LAYER_DETAIL,CT_BASE,0,182},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,1,183},{-1,0,0,LAYER_DETAIL,CT_BASE,1,184},{-1,0,0,LAYER_DETAIL,CT_BASE,0,185},{-1,0,0,LAYER_DETAIL,CT_BASE,0,186},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,187},{-1,0,0,LAYER_DETAIL,CT_BASE,0,188},{-1,0,0,LAYER_DETAIL,CT_BASE,0,189},{-1,0,0,LAYER_DETAIL,CT_BASE,0,190},
-  {SPR_RINGSEG_L,0,0,LAYER_DETAIL,CT_BASE,16,0},{SPR_RINGSEG_M,0,0,LAYER_DETAIL,CT_BASE,16,0},{SPR_RINGSEG_S,0,0,LAYER_DETAIL,CT_BASE,16,0},{SPR_RINGSEG_XS,0,0,LAYER_DETAIL,CT_BASE,16,0},
-  {SPR_SWIRL_L,0,0,LAYER_DETAIL,CT_BASE,0,0},{SPR_SWIRL_M,0,0,LAYER_DETAIL,CT_BASE,0,0},{SPR_PICKUP_RING1,0,0,LAYER_DETAIL,CT_BASE,1,0},{SPR_PICKUP_RING2,0,0,LAYER_DETAIL,CT_BASE,1,0},
-  {SPR_PICKUP_RING4,0,0,LAYER_DETAIL,CT_BASE,1,0},{SPR_FIRE_L,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_FIRE_L_IN,0,-16,LAYER_BLOCK,CT_DETAIL,0,0},{SPR_FIRE_BURST,0,0,LAYER_BLOCK,CT_BASE,0,0},
-  {SPR_FIRE_BURST_IN,0,-24,LAYER_BLOCK,CT_DETAIL,0,0},{SPR_FIRE_T1,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_FIRE_T1_IN,0,-16,LAYER_BLOCK,CT_DETAIL,0,0},{SPR_FIRE_T2,0,0,LAYER_BLOCK,CT_BASE,0,0},
-  {SPR_FIRE_T2_IN,0,-16,LAYER_BLOCK,CT_DETAIL,0,0},{SPR_COGSAW_L,0,0,LAYER_BLOCK,CT_BLACK,16,0},{SPR_COGSAW_L_RING,0,0,LAYER_BLOCK,CT_BASE,16,0},{SPR_COGSAW_M,0,0,LAYER_BLOCK,CT_BLACK,0,0},
-  {SPR_COGSAW_M_RING,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_COGSAW_S,0,0,LAYER_BLOCK,CT_BLACK,0,0},{SPR_COGSAW_S_RING,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_DARKBLADE_L,0,0,LAYER_BLOCK,CT_BLACK,16,0},
-  {SPR_DARKBLADE_L_CORE,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_DARKBLADE_M,0,0,LAYER_BLOCK,CT_BLACK,0,0},{SPR_DARKBLADE_M_CORE,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_BEAST_TOP,0,32,LAYER_BLOCK,CT_BASE,8,0},
-  {SPR_BEAST_BOT,0,-56,LAYER_BLOCK,CT_BASE,8,0},{SPR_BEAST_EYE,72,48,LAYER_BLOCK,CT_DETAIL,0,0},{SPR_SPEED0,0,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_SPEED1,0,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},
-  {SPR_SPEED2,0,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_SPEED3,0,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_WAVE_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_WAVE_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},
-  {SPR_PORTAL_ROBOT_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_ROBOT_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},{SPR_PORTAL_DUAL_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_DUAL_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},
-  {SPR_PORTAL_SINGLE_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_SINGLE_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},{SPR_PORTAL_TELE_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_TELE_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},
-  {SPR_ORB_GREEN,0,0,LAYER_SPECIAL,CT_WHITE,1,0},{SPR_GLOW_ORB_GREEN,0,0,LAYER_SPECIAL_GLOW,CT_GLOW_Y,0,0},{SPR_KEY,0,0,LAYER_COIN,CT_BASE,0,0},{SPR_KEY_DETAIL,0,0,LAYER_COIN,CT_DETAIL,0,0},
-  {SPR_KEYHOLE,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_KEYHOLE_DETAIL,0,0,LAYER_BLOCK,CT_DETAIL,0,0},{-1,0,0,LAYER_DETAIL,CT_BASE,0,191},{-1,0,0,LAYER_DETAIL,CT_BASE,0,192},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,193},{-1,0,0,LAYER_DETAIL,CT_BASE,0,194},{-1,0,0,LAYER_DETAIL,CT_BASE,0,195},{-1,0,0,LAYER_DETAIL,CT_BASE,0,196},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,197},{-1,0,0,LAYER_DETAIL,CT_BASE,0,198},{-1,0,0,LAYER_DETAIL,CT_BASE,0,199},{-1,0,0,LAYER_DETAIL,CT_BASE,0,200},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,201},{-1,0,0,LAYER_DETAIL,CT_BASE,0,202},{-1,0,0,LAYER_DETAIL,CT_BASE,0,203},{-1,0,0,LAYER_DETAIL,CT_BASE,0,204},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,205},{-1,0,0,LAYER_DETAIL,CT_BASE,0,206},{-1,0,0,LAYER_DETAIL,CT_BASE,0,207},{-1,0,0,LAYER_DETAIL,CT_BASE,0,208},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,209},{-1,0,0,LAYER_DETAIL,CT_BASE,0,210},{-1,0,0,LAYER_DETAIL,CT_BASE,0,211},{-1,0,0,LAYER_DETAIL,CT_BASE,0,212},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,213},{-1,0,0,LAYER_DETAIL,CT_BASE,0,214},{-1,0,0,LAYER_DETAIL,CT_BASE,0,215},{-1,0,0,LAYER_DETAIL,CT_BASE,0,216},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,217},{-1,0,0,LAYER_DETAIL,CT_BASE,0,218},{-1,0,0,LAYER_DETAIL,CT_BASE,0,219},{-1,0,0,LAYER_DETAIL,CT_BASE,0,220},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,221},{-1,0,0,LAYER_DETAIL,CT_BASE,0,222},{-1,0,0,LAYER_DETAIL,CT_BASE,0,223},{-1,0,0,LAYER_DETAIL,CT_BASE,0,224},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,225},{-1,0,0,LAYER_DETAIL,CT_BASE,0,226},{-1,0,0,LAYER_DETAIL,CT_BASE,0,227},{-1,0,0,LAYER_DETAIL,CT_BASE,0,228},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,229},{-1,0,0,LAYER_DETAIL,CT_BASE,0,230},{-1,0,0,LAYER_DETAIL,CT_BASE,0,231},{-1,0,0,LAYER_DETAIL,CT_BASE,0,232},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,233},{-1,0,0,LAYER_DETAIL,CT_BASE,0,234},{-1,0,0,LAYER_DETAIL,CT_BASE,0,235},{-1,0,0,LAYER_DETAIL,CT_BASE,0,236},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,237},{-1,0,0,LAYER_DETAIL,CT_BASE,0,238},{-1,0,0,LAYER_DETAIL,CT_BASE,0,239},{-1,0,0,LAYER_DETAIL,CT_BASE,0,240},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,241},{-1,0,0,LAYER_DETAIL,CT_BASE,0,242},{-1,0,0,LAYER_DETAIL,CT_BASE,0,243},{-1,0,0,LAYER_DETAIL,CT_BASE,0,244},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,245},{-1,0,0,LAYER_DETAIL,CT_BASE,0,246},{-1,0,0,LAYER_DETAIL,CT_BASE,0,247},{-1,0,0,LAYER_DETAIL,CT_BASE,0,248},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,249},{-1,0,0,LAYER_DETAIL,CT_BASE,0,250},{-1,0,0,LAYER_DETAIL,CT_BASE,0,251},{-1,0,0,LAYER_DETAIL,CT_BASE,0,252},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,253},{-1,0,0,LAYER_DETAIL,CT_BASE,0,254},{-1,0,0,LAYER_DETAIL,CT_BASE,0,255},{-1,0,0,LAYER_DETAIL,CT_BASE,0,256},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,257},{-1,0,0,LAYER_DETAIL,CT_BASE,0,258},{-1,0,0,LAYER_DETAIL,CT_BASE,0,259},{-1,0,0,LAYER_DETAIL,CT_BASE,0,260},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,261},{-1,0,0,LAYER_DETAIL,CT_BASE,0,262},{-1,0,0,LAYER_DETAIL,CT_BASE,0,263},{-1,0,0,LAYER_DETAIL,CT_BASE,0,264},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,265},{-1,0,0,LAYER_DETAIL,CT_BASE,0,266},{-1,0,0,LAYER_DETAIL,CT_BASE,0,267},{-1,0,0,LAYER_DETAIL,CT_BASE,0,268},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,269},{-1,0,0,LAYER_RODS,CT_BASE,0,270},{-1,0,0,LAYER_RODS,CT_BASE,0,271},{-1,0,0,LAYER_RODS,CT_BASE,0,272},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,273},{-1,0,0,LAYER_RODS,CT_BASE,0,274},{-1,0,0,LAYER_RODS,CT_BASE,0,275},{-1,0,0,LAYER_RODS,CT_BASE,0,276},
-  {-1,0,0,LAYER_RODS,CT_BASE,0,277},{-1,0,0,LAYER_BLOCK,CT_BASE,0,278},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,68},{-1,0,0,LAYER_BLOCK,CT_BASE,0,279},
-  {-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,70},{-1,0,0,LAYER_RODS,CT_BASE,0,280},{-1,0,0,LAYER_BLOCK,CT_BASE,0,281},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,282},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,283},{-1,0,0,LAYER_BLOCK,CT_BASE,0,284},{-1,0,0,LAYER_BLOCK,CT_BASE,0,285},{-1,0,0,LAYER_DETAIL,CT_BASE,0,286},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,287},{SPR_COGSAW_S,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_BEAST_EYE,16,12,LAYER_BLOCK,CT_DETAIL,0,0},{SPR_DARKBLADE_M,0,0,LAYER_BLOCK,CT_BASE,0,0},
-  {SPR_DARKBLADE_M_CORE,0,0,LAYER_BLOCK,CT_DETAIL,0,0},{SPR_FIRE_T1,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_FIRE_T1_IN,0,-12,LAYER_BLOCK,CT_DETAIL,0,0},{-1,0,0,LAYER_BLOCK,CT_BASE,1,288},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,0,289},{SPR_PICKUP_RING2,0,0,LAYER_DETAIL,CT_BASE,1,0},{-1,0,0,LAYER_BLOCK,CT_BASE,1,290},{SPR_PICKUP_RING1,0,0,LAYER_DETAIL,CT_BASE,1,0},
-  {-1,0,0,LAYER_BLOCK,CT_BASE,1,291},{SPR_FIRE_T1,0,0,LAYER_BLOCK,CT_BASE,0,0},{-1,0,0,LAYER_DETAIL,CT_BASE,0,292},{SPR_FIRE_L,0,0,LAYER_BLOCK,CT_BASE,0,0},
-  {SPR_FIRE_L_IN,0,-16,LAYER_BLOCK,CT_DETAIL,0,0},{SPR_SWIRL_M,0,0,LAYER_DETAIL,CT_BASE,0,0},{SPR_SWIRL_L,0,0,LAYER_DETAIL,CT_BASE,0,0},{-1,0,0,LAYER_DETAIL,CT_BASE,1,293},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,294},{-1,0,0,LAYER_DETAIL,CT_BASE,0,295},{-1,0,0,LAYER_DETAIL,CT_BASE,0,296},{-1,0,0,LAYER_DETAIL,CT_BASE,0,297},
-  {-1,0,0,LAYER_DETAIL,CT_BASE,0,298},{SPR_PORTAL_SPIDER_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_SPIDER_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},{SPR_PORTAL_SWING_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},
-  {SPR_PORTAL_SWING_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},{SPR_ORB_DASH,0,0,LAYER_SPECIAL,CT_WHITE,1,0},{SPR_GLOW_ORB_GREEN,0,0,LAYER_SPECIAL_GLOW,CT_GLOW_Y,0,0},{SPR_ORB_DASH_G,0,0,LAYER_SPECIAL,CT_WHITE,1,0},
-  {SPR_GLOW_ORB_RED,0,0,LAYER_SPECIAL_GLOW,CT_GLOW_P,0,0},{SPR_ORB_SPIDER,0,0,LAYER_SPECIAL,CT_WHITE,1,0},{SPR_GLOW_ORB_RED,0,0,LAYER_SPECIAL_GLOW,CT_GLOW_P,0,0},{SPR_ORB_RED,0,0,LAYER_SPECIAL,CT_WHITE,1,0},
-  {SPR_GLOW_ORB_RED,0,0,LAYER_SPECIAL_GLOW,CT_GLOW_P,0,0},{SPR_PAD_RED,0,-4,LAYER_SPECIAL,CT_WHITE,0,0},{SPR_ORB_TOGGLE,0,0,LAYER_SPECIAL,CT_BASE,1,0},{SPR_ORB_TOGGLE_DETAIL,0,0,LAYER_SPECIAL,CT_DETAIL,0,0},
-  {SPR_PORTAL_TELE_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_TELE_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},{SPR_PICKUP_ITEM,0,0,LAYER_COIN,CT_BASE,0,0},{SPR_PICKUP_ITEM_DETAIL,0,0,LAYER_COIN,CT_DETAIL,0,0},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,45},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,58},{-1,0,0,LAYER_BLOCK,CT_BASE,0,52},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,65},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,40},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,53},{-1,0,0,LAYER_BLOCK,CT_BASE,0,46},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,59},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,41},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,54},{-1,0,0,LAYER_BLOCK,CT_BASE,0,48},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,61},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,42},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,55},{-1,0,0,LAYER_BLOCK,CT_BASE,0,43},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,56},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,44},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,57},{-1,0,0,LAYER_BLOCK,CT_BASE,0,51},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,64},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,49},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,62},{-1,0,0,LAYER_BLOCK,CT_BASE,0,50},{-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,63},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,68},{-1,0,0,LAYER_BLOCK,CT_BASE,0,66},{-1,0,0,LAYER_BLOCK,CT_BASE,0,67},{-1,0,0,LAYER_BLOCK,CT_BASE,0,71},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,72},{-1,0,0,LAYER_BLOCK,CT_BASE,0,74},{-1,0,0,LAYER_BLOCK,CT_BASE,0,69},{-1,0,0,LAYER_BLOCK,CT_BASE,0,75},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,73},{-1,0,0,LAYER_BLOCK,CT_BASE,0,70},{-1,0,0,LAYER_BLOCK,CT_BASE,0,32},{SPR_GLOW_SPIKE,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,0},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,33},{SPR_GLOW_SPIKE,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,0},{-1,0,0,LAYER_BLOCK,CT_BASE,0,34},{SPR_GLOW_SPIKE,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,0},
+  {-1,0,0,LAYER_BLOCK,CT_BASE,0,39},{-1,0,0,LAYER_BLOCK,CT_BASE,0,37},{-1,0,0,LAYER_BLOCK,CT_BASE,0,38},{SPR_COGSAW_L,0,0,LAYER_BLOCK,CT_BLACK,16,0},
+  {SPR_COGSAW_L_RING,0,0,LAYER_BLOCK,CT_BASE,16,0},{SPR_COGSAW_M,0,0,LAYER_BLOCK,CT_BLACK,0,0},{SPR_COGSAW_M_RING,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_COGSAW_S,0,0,LAYER_BLOCK,CT_BLACK,0,0},
+  {SPR_COGSAW_S_RING,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_DARKBLADE_L,0,0,LAYER_BLOCK,CT_BLACK,16,0},{SPR_DARKBLADE_L_CORE,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_DARKBLADE_M,0,0,LAYER_BLOCK,CT_BLACK,0,0},
+  {SPR_DARKBLADE_M_CORE,0,0,LAYER_BLOCK,CT_BASE,0,0},{SPR_SPEED0,0,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_SPEED1,0,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_SPEED2,0,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},
+  {SPR_SPEED3,0,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_WAVE_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_WAVE_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},{SPR_PORTAL_ROBOT_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},
+  {SPR_PORTAL_ROBOT_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},{SPR_ORB_GREEN,0,0,LAYER_SPECIAL,CT_WHITE,1,0},{SPR_GLOW_ORB_GREEN,0,0,LAYER_SPECIAL_GLOW,CT_GLOW_Y,0,0},{-1,0,0,LAYER_BLOCK,CT_BASE,0,47},
+  {-1,0,0,LAYER_BLOCK_GLOW,CT_GLOW,0,60},{-1,0,0,LAYER_BLOCK,CT_BASE,0,35},{-1,0,0,LAYER_BLOCK,CT_BASE,0,36},{-1,0,0,LAYER_BLOCK,CT_BASE,0,31},
+  {SPR_PORTAL_SPIDER_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_SPIDER_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},{SPR_PORTAL_SWING_FRONT,20,0,LAYER_PORTAL_FRONT,CT_WHITE,0,0},{SPR_PORTAL_SWING_BACK,-24,0,LAYER_PORTAL_BACK,CT_WHITE,0,0},
+  {SPR_ORB_SPIDER,0,0,LAYER_SPECIAL,CT_WHITE,1,0},{SPR_GLOW_ORB_RED,0,0,LAYER_SPECIAL_GLOW,CT_GLOW_P,0,0},{SPR_ORB_RED,0,0,LAYER_SPECIAL,CT_WHITE,1,0},{SPR_GLOW_ORB_RED,0,0,LAYER_SPECIAL_GLOW,CT_GLOW_P,0,0},
+  {SPR_PAD_RED,0,-4,LAYER_SPECIAL,CT_WHITE,0,0},
 };
-const uint8_t editor_types[EDITOR_TYPES] = {OT_BLOCK,OT_GRID_T,OT_GRID_TL,OT_GRID_LTR,OT_GRID_LR,OT_GRID_C,OT_PLANK,OT_SPIKE,OT_SPIKE_SMALL,OT_SPIKE_MED,OT_PIT,OT_PAD_Y,OT_PAD_P,OT_PAD_B,OT_ORB_Y,OT_PORTAL_SHIP,OT_PORTAL_CUBE,OT_PORTAL_BALL,OT_GRAV_F,OT_GRAV_N,OT_COIN,OT_GRID_DECO,OT_ROD1,OT_ROD2,OT_ROD3,OT_DSPIKES3,OT_DSPIKES4,OT_CHAIN,OT_STAR};
+const uint8_t editor_types[EDITOR_TYPES] = {OT_BLOCK,OT_GRID_T,OT_GRID_TL,OT_GRID_C,OT_GRID_LTR,OT_GRID_LR,OT_PLANK,OT_GRID_DECO,OT_SPIKE,OT_SPIKE_MED,OT_SPIKE_SMALL,OT_PIT,OT_PAD_Y,OT_PAD_P,OT_PAD_B,OT_ORB_Y,OT_PORTAL_CUBE,OT_PORTAL_SHIP,OT_PORTAL_BALL,OT_GRAV_N,OT_GRAV_F,OT_COIN,OT_STAR,OT_CHAIN,OT_ROD1,OT_ROD2,OT_ROD3,OT_DSPIKES3,OT_DSPIKES4};
diff --git a/games/numdash/src/objdefs.h b/games/numdash/src/objdefs.h
index 3ee88fe..cbf48a1 100644
--- a/games/numdash/src/objdefs.h
+++ b/games/numdash/src/objdefs.h
@@ -123,319 +123,57 @@ enum {
   OT_WAVY_R = 117,
   OT_DECO_BRICKS_L = 118,
   OT_DECO_BRICKS_M = 119,
-  OT_TOUCH = 120,
-  OT_GLOW_MED = 121,
-  OT_GLOW_LARGE = 122,
-  OT_GLOW_SMALL = 123,
-  OT_GLOW_HALF = 124,
-  OT_GLOW_OUTER = 125,
-  OT_GLOW_OUTER_L = 126,
-  OT_GLOW_INNER = 127,
-  OT_GLOW_SLOPE1 = 128,
-  OT_GLOW_SLOPE2 = 129,
-  OT_OUT_SQUARE = 130,
-  OT_OUT_TOP = 131,
-  OT_OUT_CORNER = 132,
-  OT_OUT_TOP_PILLAR = 133,
-  OT_OUT_PILLAR = 134,
-  OT_OUT_INNER = 135,
-  OT_OUT_SLOPE_CORNER = 136,
-  OT_OUT_WSLOPE_CORNER = 137,
-  OT_OUT_SLOPE_SIDE = 138,
-  OT_OUT_SLAB = 139,
-  OT_OUT_SLAB_MID = 140,
-  OT_OUT_SLAB_SIDE = 141,
-  OT_OUT_THICK_TOP = 142,
-  OT_OUT_THICK_SMALL = 143,
-  OT_OUT_THICK_SQUARE = 144,
-  OT_OUT_SLOPE = 145,
-  OT_OUT_WSLOPE = 146,
-  OT_BLOCK_WSLOPE = 147,
-  OT_DECO_SLOPE = 148,
-  OT_DECO_WSLOPE = 149,
-  OT_RAINBOW_SLOPE = 150,
-  OT_RAINBOW_SQUARE = 151,
-  OT_NEON_TOP = 152,
-  OT_NEON_TL = 153,
-  OT_NEON_VPILLAR_TOP = 154,
-  OT_NEON_VPILLAR = 155,
-  OT_NEON_LEFT = 156,
-  OT_NEON_TL_INNER = 157,
-  OT_NEON_SQUARE = 158,
-  OT_NEON_SIDE_TOP = 159,
-  OT_NEON_PILLAR_TL = 160,
-  OT_NEON_HPILLAR = 161,
-  OT_NEON_HPILLAR_L = 162,
-  OT_NEON_INNER = 163,
-  OT_NEON_INV_BOTTOM_SIDE = 164,
-  OT_NEON_SLOPE = 165,
-  OT_NEON_WSLOPE = 166,
-  OT_NEON_SLOPE_CONN = 167,
-  OT_NEON_WSLOPE_CONN = 168,
-  OT_NEON_HSLOPE_CONN = 169,
-  OT_NEON_OUTLINE_TOP = 170,
-  OT_NEON_OUTLINE_INNER = 171,
-  OT_QUARTER_COLOR = 172,
-  OT_SIXTEENTH_COLOR = 173,
-  OT_COLOR_SQUARE = 174,
-  OT_L3_TOP_LEFT = 175,
-  OT_L3_TOP_MID = 176,
-  OT_L3_HALF_TOP_MID = 177,
-  OT_L3_TOP_RIGHT = 178,
-  OT_L3_INNER = 179,
-  OT_L3_OUTER = 180,
-  OT_L3_HALF_TOP_LEFT = 181,
-  OT_C3_TOP_LEFT = 182,
-  OT_C3_TOP_MID = 183,
-  OT_C3_OUTER = 184,
-  OT_C3_HALF_TOP_LEFT = 185,
-  OT_C3_SQUARE_MID = 186,
-  OT_C3_SQUARE_OUTER = 187,
-  OT_S3_TOP_LEFT = 188,
-  OT_S3_TOP_MID = 189,
-  OT_S3_TOP_RIGHT = 190,
-  OT_S3_HALF_TOP_LEFT = 191,
-  OT_BRICK_MID = 192,
-  OT_BRICK_BOND = 193,
-  OT_BRICK_LEFT1 = 194,
-  OT_BRICK_RIGHT1 = 195,
-  OT_BRICK_LEFT2 = 196,
-  OT_BRICK_RIGHT2 = 197,
-  OT_BRICKS1 = 198,
-  OT_SBRICKS = 199,
-  OT_SBRICKS_RECESS = 200,
-  OT_SBRICK_PILE_L = 201,
-  OT_SBRICK_PILE_R = 202,
-  OT_SBRICKS_LEFT = 203,
-  OT_BEVEL_SLAB = 204,
-  OT_BEVEL_PIPE = 205,
-  OT_BEVEL_PIPE_CONN = 206,
-  OT_BEVEL_PIPE_DOWN = 207,
-  OT_BEVEL_PIPE_UP = 208,
-  OT_INDUS_TOP_L = 209,
-  OT_INDUS_TOP_D = 210,
-  OT_INDUS_CORNER_L = 211,
-  OT_INDUS_CORNER_D = 212,
-  OT_INDUS_PILLAR_L = 213,
-  OT_INDUS_PILLAR_D = 214,
-  OT_INDUS_PTOP_L = 215,
-  OT_INDUS_PTOP_D = 216,
-  OT_INDUS_SQUARE_L = 217,
-  OT_INDUS_BOLTS_L = 218,
-  OT_INDUS_HATCH_D = 219,
-  OT_INDUS_INNER_L = 220,
-  OT_INDUS_INNER_D = 221,
-  OT_INDUS_SLOPE_D = 222,
-  OT_INDUS_SLOPE_CONN_L = 223,
-  OT_INDUS_SLAB_MID = 224,
-  OT_INDUS_SLAB_SIDE = 225,
-  OT_INDUS_SLAB_SINGLE = 226,
-  OT_PIX_TILE = 227,
-  OT_PIX_EDGE = 228,
-  OT_PIX_INNER = 229,
-  OT_PIX_PIPE = 230,
-  OT_PIX_PIPE_BASE = 231,
-  OT_PIT_CROWN = 232,
-  OT_PIT_BOWL = 233,
-  OT_PIT_BOWL2 = 234,
-  OT_PIT_SQUARE = 235,
-  OT_PIT_STAIR = 236,
-  OT_PIT_TRI = 237,
-  OT_PIT_DOT = 238,
-  OT_PIT_WAVE_LOW = 239,
-  OT_PIT_TRI_LOW = 240,
-  OT_PIT_NOTCH = 241,
-  OT_PIT_SHINE = 242,
-  OT_PIT_SHINE_CORNER = 243,
-  OT_PIT_SHINE_STAIR = 244,
-  OT_PIT_SHINE_DIAG = 245,
-  OT_CSPIKE = 246,
-  OT_CSPIKE_SMALL = 247,
-  OT_CSPIKE_TINY = 248,
-  OT_ISPIKE_TINY = 249,
-  OT_ISPIKE_HALF = 250,
-  OT_INVIS_SLAB = 251,
-  OT_WAVE_SQUARE = 252,
-  OT_CIRCLE_WAVE = 253,
-  OT_CIRCLE_WAVE_INV = 254,
-  OT_WATER1 = 255,
-  OT_WATER2 = 256,
-  OT_JAGGED_HALF = 257,
-  OT_STRIPE_SLAB = 258,
-  OT_PULSE_ARROW3 = 259,
-  OT_PULSE_TRIANGLE = 260,
-  OT_LINK_ADJ = 261,
-  OT_LINK_THREE = 262,
-  OT_LINK_OPP = 263,
-  OT_LINK_ONE = 264,
-  OT_SHINE_L = 265,
-  OT_SHINE_M = 266,
-  OT_SPLIT_CIRCLE_L = 267,
-  OT_SPLIT_CIRCLE_M = 268,
-  OT_SPLIT_CIRCLE_S = 269,
-  OT_SPLIT_CIRCLE_XS = 270,
-  OT_SWIRL_L = 271,
-  OT_SWIRL_M = 272,
-  OT_PICKUP_RING1 = 273,
-  OT_PICKUP_RING2 = 274,
-  OT_PICKUP_RING4 = 275,
-  OT_FIRE_LARGE = 276,
-  OT_FIRE_BURST = 277,
-  OT_FIRE_THIN1 = 278,
-  OT_FIRE_THIN2 = 279,
-  OT_COGSAW_L = 280,
-  OT_COGSAW_M = 281,
-  OT_COGSAW_S = 282,
-  OT_DARKBLADE_L = 283,
-  OT_DARKBLADE_M = 284,
-  OT_BEAST = 285,
-  OT_SPEED_SLOW = 286,
-  OT_SPEED_NORMAL = 287,
-  OT_SPEED_FAST = 288,
-  OT_SPEED_FASTER = 289,
-  OT_WAVE_PORTAL = 290,
-  OT_ROBOT_PORTAL = 291,
-  OT_DUAL_PORTAL = 292,
-  OT_DUAL_EXIT = 293,
-  OT_TELEPORT = 294,
-  OT_ORB_GREEN = 295,
-  OT_KEY = 296,
-  OT_KEYHOLE = 297,
-  OT_PX_LAVA_BRICK = 298,
-  OT_PX_SOLID = 299,
-  OT_PX_UNIT = 300,
-  OT_PX_BRICK_TOP = 301,
-  OT_PX_BRICK = 302,
-  OT_PX_STONE = 303,
-  OT_PX_LAVA_TOP = 304,
-  OT_PX_EDGE_V = 305,
-  OT_PX_EDGE_H = 306,
-  OT_PX_SPIKES3 = 307,
-  OT_PX_SPIKE_WIDE = 308,
-  OT_PX_SPIKE_THIN = 309,
-  OT_PX_DOTS = 310,
-  OT_PX_PILLAR_TOP = 311,
-  OT_PX_PILLAR = 312,
-  OT_PX_CHAIN = 313,
-  OT_PX_SPARKS = 314,
-  OT_PX_GRASS = 315,
-  OT_PX_CRATE = 316,
-  OT_PX_WEB = 317,
-  OT_PX_SKULL = 318,
-  OT_PX_2101 = 319,
-  OT_PX_2103 = 320,
-  OT_PX_2104 = 321,
-  OT_PX_2118 = 322,
-  OT_PX_2119 = 323,
-  OT_PX_2123 = 324,
-  OT_PX_2124 = 325,
-  OT_PX_2125 = 326,
-  OT_PX_2143 = 327,
-  OT_PX_2171 = 328,
-  OT_PX_2172 = 329,
-  OT_PX_2222 = 330,
-  OT_PX_2372 = 331,
-  OT_PX_2373 = 332,
-  OT_PX_2374 = 333,
-  OT_PX_2375 = 334,
-  OT_PX_2407 = 335,
-  OT_PX_2414 = 336,
-  OT_PX_2452 = 337,
-  OT_PX_2469 = 338,
-  OT_PX_2488 = 339,
-  OT_PX_2489 = 340,
-  OT_PX_2498 = 341,
-  OT_PX_2499 = 342,
-  OT_PX_2501 = 343,
-  OT_PX_2506 = 344,
-  OT_PX_2507 = 345,
-  OT_PX_2529 = 346,
-  OT_PX_2530 = 347,
-  OT_PX_2536 = 348,
-  OT_PX_2537 = 349,
-  OT_PX_2542 = 350,
-  OT_PX_2546 = 351,
-  OT_PX_2551 = 352,
-  OT_PX_2554 = 353,
-  OT_PX_2570 = 354,
-  OT_PX_2578 = 355,
-  OT_PX_2579 = 356,
-  OT_PX_2600 = 357,
-  OT_PX_2601 = 358,
-  OT_PX_2602 = 359,
-  OT_PX_2603 = 360,
-  OT_PX_2604 = 361,
-  OT_PX_2632 = 362,
-  OT_PX_2646 = 363,
-  OT_PX_2694 = 364,
-  OT_PX_3458 = 365,
-  OT_PX_3576 = 366,
-  OT_PX_3577 = 367,
-  OT_PX_3578 = 368,
-  OT_PX_4000 = 369,
-  OT_PX_4082 = 370,
-  OT_PX_4231 = 371,
-  OT_PX_4233 = 372,
-  OT_PX_4269 = 373,
-  OT_PX_4300 = 374,
-  OT_PX_4384 = 375,
-  OT_PX_2083 = 376,
-  OT_GLOW_ORB_L = 377,
-  OT_GLOW_ORB_M = 378,
-  OT_GLOW_ORB_S = 379,
-  OT_GLOW_SLOPE_L = 380,
-  OT_GLOW_SLOPE_M2 = 381,
-  OT_GLOW_SLOPE_CORNER = 382,
-  OT_GLOW_OUTER_S = 383,
-  OT_GLOW_INNER_L = 384,
-  OT_GRID_SLOPE = 385,
-  OT_GRID_WSLOPE = 386,
-  OT_GRASS_BASE = 387,
-  OT_OUT_SMALL_SQUARE = 388,
-  OT_GRAD_SLAB = 389,
-  OT_GRAD_SMALL = 390,
-  OT_BSPIKE_TINY = 391,
-  OT_CHAIN_LINK = 392,
-  OT_MONSTER_S = 393,
-  OT_MONSTER_SPIKED = 394,
-  OT_SCYTHE = 395,
-  OT_FIREBALL = 396,
-  OT_ENERGY_BALL = 397,
-  OT_CIRCLE_WAVE_ANIM = 398,
-  OT_ELECTRIC = 399,
-  OT_BUBBLES = 400,
-  OT_SPARKLE = 401,
-  OT_BLOBS = 402,
-  OT_SMOKE = 403,
-  OT_FLAME_WIDE = 404,
-  OT_SLASH = 405,
-  OT_TRI_SWIRL = 406,
-  OT_ARROW2 = 407,
-  OT_THIN_LINE = 408,
-  OT_SIGN = 409,
-  OT_SIGN_POST = 410,
-  OT_CARTOON_ARROW = 411,
-  OT_GRASS_PATCH = 412,
-  OT_SPIDER_PORTAL = 413,
-  OT_SWING_PORTAL = 414,
-  OT_DASH_ORB = 415,
-  OT_DASH_ORB_G = 416,
-  OT_SPIDER_ORB = 417,
-  OT_RED_ORB = 418,
-  OT_RED_PAD = 419,
-  OT_TOGGLE_ORB = 420,
-  OT_TELEPORT2 = 421,
-  OT_COLLECT_ITEM = 422,
-  OT_FORCE_BLOCK = 423,
-  OT_FORCE_CIRCLE = 424,
-  OT_COLLISION_BLOCK = 425,
-  OT_STOP_DASH = 426,
-  OT_HEAD_COLLIDE = 427,
-  OT_WAVE_DRAG = 428,
-  OT_GRAV_MODIFIER = 429,
-  OT_STOP_BUFFER = 430,
-  OT_COUNT = 431,
-  OT_LOBJ = 121    /* types an 8-bit LObj (custom level) can hold */
+  OT_OUT_SQUARE = 120,
+  OT_OUT_TOP = 121,
+  OT_OUT_CORNER = 122,
+  OT_OUT_TOP_PILLAR = 123,
+  OT_OUT_PILLAR = 124,
+  OT_OUT_SLOPE_SIDE = 125,
+  OT_OUT_SLAB = 126,
+  OT_OUT_SLAB_MID = 127,
+  OT_OUT_SLAB_SIDE = 128,
+  OT_OUT_THICK_TOP = 129,
+  OT_OUT_THICK_SMALL = 130,
+  OT_OUT_THICK_SQUARE = 131,
+  OT_PIT_CROWN = 132,
+  OT_PIT_BOWL = 133,
+  OT_PIT_BOWL2 = 134,
+  OT_PIT_SQUARE = 135,
+  OT_PIT_STAIR = 136,
+  OT_PIT_TRI = 137,
+  OT_PIT_DOT = 138,
+  OT_PIT_WAVE_LOW = 139,
+  OT_PIT_TRI_LOW = 140,
+  OT_PIT_NOTCH = 141,
+  OT_CSPIKE = 142,
+  OT_CSPIKE_SMALL = 143,
+  OT_CSPIKE_TINY = 144,
+  OT_ISPIKE_TINY = 145,
+  OT_ISPIKE_HALF = 146,
+  OT_INVIS_SLAB = 147,
+  OT_COGSAW_L = 148,
+  OT_COGSAW_M = 149,
+  OT_COGSAW_S = 150,
+  OT_DARKBLADE_L = 151,
+  OT_DARKBLADE_M = 152,
+  OT_SPEED_SLOW = 153,
+  OT_SPEED_NORMAL = 154,
+  OT_SPEED_FAST = 155,
+  OT_SPEED_FASTER = 156,
+  OT_WAVE_PORTAL = 157,
+  OT_ROBOT_PORTAL = 158,
+  OT_ORB_GREEN = 159,
+  OT_OUT_SMALL_SQUARE = 160,
+  OT_GRAD_SLAB = 161,
+  OT_GRAD_SMALL = 162,
+  OT_BSPIKE_TINY = 163,
+  OT_SPIDER_PORTAL = 164,
+  OT_SWING_PORTAL = 165,
+  OT_SPIDER_ORB = 166,
+  OT_RED_ORB = 167,
+  OT_RED_PAD = 168,
+  OT_COUNT = 169,
+  OT_LOBJ = 120    /* types an 8-bit LObj (custom level) can hold */
 };
 enum { HIT_NONE, HIT_SOLID, HIT_HAZARD, HIT_SPECIAL };
 enum { SHAPE_BOX, SHAPE_CIRCLE, SHAPE_SLOPE };
@@ -452,8 +190,8 @@ extern const uint8_t tile_prog_data[];
 extern const uint16_t tile_prog_off[];
 enum { EV_COLOR = 1, EV_FADE = 2, EV_TRAIL = 3 };
 typedef struct { int16_t sprite; int8_t dx4, dy4; uint8_t layer, ctype, flags; uint16_t prog; } ObjPart;
-/* dbase, ddetail: default colour channels (dense index, see level.h); hx2: hitbox x offset in half units */
-typedef struct { uint16_t gd_id; uint8_t hit, special; uint16_t w10, h10; int8_t editor_dy; uint8_t nparts; uint16_t part0; uint8_t shape, anim, dbase, ddetail; int8_t hx2; } ObjDef;
+/* nd_id: NumDash's number of the object (its OT_ value); dbase, ddetail: default colour channels (see level.h) */
+typedef struct { uint16_t nd_id; uint8_t hit, special; uint16_t w10, h10; int8_t editor_dy; uint8_t nparts; uint16_t part0; uint8_t shape, anim, dbase, ddetail; } ObjDef;
 extern const ObjDef objdefs[OT_COUNT];
 extern const ObjPart objparts[];
 #define OBJ_PART(d, k) (&objparts[(d)->part0 + (k)])
diff --git a/games/numdash/src/play.c b/games/numdash/src/play.c
index 20be41c..f9194f2 100644
--- a/games/numdash/src/play.c
+++ b/games/numdash/src/play.c
@@ -1,7 +1,6 @@
 /* Gameplay screen: attempts, death and respawn, practice checkpoints, the
  * pause menu, the new-best popup and the level complete sequence (end wall
- * rays, rings and fireworks, then the level complete window). Timings follow
- * Geometry Dash (and the gd3ds recreation). */
+ * rays, rings and fireworks, then the level complete window). */
 #include "app.h"
 #include "ui.h"
 #include <math.h>
@@ -37,10 +36,11 @@ static uint8_t coins_run, coins_new;
 static bool stars_new;
 static int msg_index;
 
+/* Calcade, 19 octobre 2026 : NumDash's own cheers (the old list was Geometry Dash's). */
 static const char *const complete_msgs[] = {
-  T("AWESOME!"), T("GOOD JOB!"), T("WELL DONE!"), T("IMPRESSIVE!"), T("AMAZING!"), T("INCREDIBLE!"), T("SKILLFUL!"), T("BRILLIANT!"),
-  T("NOT BAD!"), T("WARP SPEED!"), T("CHALLENGE BREAKER!"), T("REFLEX MASTER!"), T("I AM SPEECHLESS..."), T("YOU ARE... THE ONE!"),
-  T("HOW IS THIS POSSIBLE!?"), T("YOU BEAT ME...")};
+  T("NICE RUN!"), T("CLEAN!"), T("SMOOTH!"), T("ON THE BEAT!"), T("SHARP!"), T("UNSTOPPABLE!"), T("FLAWLESS TIMING!"), T("TOP SPEED!"),
+  T("NOT A SCRATCH!"), T("SPIKES CAN'T STOP YOU!"), T("THE CALCULATOR IS PROUD!"), T("ONE KEY, ONE HERO!"), T("WHAT A FINISH!"),
+  T("LEGENDARY!"), T("PURE RHYTHM!"), T("SEE YOU AT THE NEXT ONE!")};
 
 static color_t white_if_black(color_t c) { return c == 0 ? 0xffff : c; }
 
@@ -419,7 +419,7 @@ static void draw_popup(void) {
     else if (popup_t < 1.54f) s = 1.1f;
     else if (popup_t < 1.76f) { float u = (popup_t - 1.54f) / 0.22f; s = 1.1f - 1.09f * u * u; }
     else { popup = POP_NONE; return; }
-    color_t top = app.practice ? rgb(170, 255, 255) : rgb(210, 255, 90), bot = app.practice ? rgb(0, 200, 255) : rgb(60, 200, 0);
+    color_t top = app.practice ? rgb(210, 255, 240) : rgb(255, 238, 150), bot = app.practice ? rgb(46, 196, 182) : rgb(255, 96, 70);
     gfx_layer_draw(160, 116, (int)(s * 256), top, bot, 256);
   } else if (popup == POP_NEWBEST) {
     if (popup_t < 0.4f) s = 0.01f + 0.99f * ui_ease_elastic_out(popup_t / 0.4f, 0.3f);
@@ -438,9 +438,9 @@ static void pause_draw(void) {
   ui_title(FONT_BIG, 160, 34, app.L.name);
   const LevelStat *s = &progress.lv[app.level];
   ui_title(FONT_SMALL, 160, 56, T("NORMAL MODE"));
-  ui_progress_bar(160, 67, 210, 14, app.testing ? 0 : s->normal, rgb(0, 255, 0), true);
+  ui_progress_bar(160, 67, 210, 14, app.testing ? 0 : s->normal, rgb(255, 122, 89), true);
   ui_title(FONT_SMALL, 160, 90, T("PRACTICE MODE"));
-  ui_progress_bar(160, 101, 210, 14, app.testing ? 0 : s->practice, rgb(0, 255, 255), true);
+  ui_progress_bar(160, 101, 210, 14, app.testing ? 0 : s->practice, rgb(95, 245, 194), true);
   unsigned nc = level_coins();
   if (nc && !app.testing)
     for (unsigned i = 0; i < nc; i++)
@@ -476,7 +476,7 @@ static void end_draw(void) {
   draw_chain(256, -8, top + 6);
   ui_window_navy(26, top, 268, 204);
   y -= 6;
-  if (app.practice) gfx_text_center(FONT_BIG, 160, y - 66, T("PRACTICE COMPLETE!"), rgb(170, 255, 255), rgb(0, 200, 255), 256);
+  if (app.practice) gfx_text_center(FONT_BIG, 160, y - 66, T("PRACTICE COMPLETE!"), rgb(210, 255, 240), rgb(46, 196, 182), 256);
   else gfx_text_center(FONT_BIG, 160, y - 66, T("LEVEL COMPLETE!"), rgb(210, 255, 90), rgb(60, 200, 0), 256);
   char buf[32];
   int n;
@@ -501,8 +501,8 @@ static void end_draw(void) {
   ui_gold(FONT_BIG, 160, y - 6, buf);
   unsigned nc = level_coins();
   if (app.practice) {
-    ui_title(FONT_SMALL, 160, y + 14, T("WELL DONE... NOW TRY TO COMPLETE"));
-    ui_title(FONT_SMALL, 160, y + 26, T("IT WITHOUT ANY CHECKPOINTS!"));
+    ui_title(FONT_SMALL, 160, y + 14, T("PRACTICE DONE! NEXT STEP:"));
+    ui_title(FONT_SMALL, 160, y + 26, T("THE SAME RUN, NO CHECKPOINTS"));
   } else if (nc && !app.testing) {
     for (unsigned i = 0; i < nc; i++) {
       int x = 160 + ((int)i * 2 - (int)nc + 1) * 22;
diff --git a/games/numdash/src/save.c b/games/numdash/src/save.c
index 7a2c25b..f653572 100644
--- a/games/numdash/src/save.c
+++ b/games/numdash/src/save.c
@@ -25,17 +25,20 @@ static void wr32(uint8_t *p, uint32_t v) { wr16(p, v & 0xffff); wr16(p + 2, v >>
 void progress_defaults(Progress *p) {
   memset(p, 0, sizeof(*p));
   p->color1 = 0;
-  p->color2 = 3;
+  p->color2 = 8;
   p->options = OPT_PERCENT | OPT_BAR;
 }
 
 /* Layout version 1 used 12 bytes per level; version 2 drops the spare byte
-   so that twelve levels and the custom slots fit the same 192 bytes. */
+   so that twelve levels and the custom slots fit the same 192 bytes.
+   Version 3 (Calcade, 19 octobre 2026): the same layout, written since the
+   built-in levels are NumDash's own; an older save keeps its custom levels,
+   totals, colours and settings, but not the stats of the old built-in levels. */
 void progress_encode(const Progress *p, uint8_t out[PROGRESS_BYTES]) {
   _Static_assert(12 + LEVEL_SLOTS * 11 + 12 <= PROGRESS_BYTES, "progress record too small");
   memset(out, 0, PROGRESS_BYTES);
   memcpy(out, "NDS1", 4);
-  out[8] = 2;
+  out[8] = 3;
   out[9] = LEVEL_COUNT;
   out[10] = CUSTOM_SLOTS;
   uint8_t *q = out + 12;
@@ -55,7 +58,8 @@ bool progress_decode(Progress *p, const uint8_t *in, size_t len) {
   /* A save from a release with fewer levels keeps its stats: the custom
      slots follow the built-in levels, so they move up. */
   int levels = in[9], stride = in[8] == 1 ? 12 : 11, a = stride - 8;
-  if (in[8] < 1 || in[8] > 2 || levels == 0 || levels > LEVEL_COUNT || in[10] != CUSTOM_SLOTS ||
+  bool old_levels = in[8] < 3;
+  if (in[8] < 1 || in[8] > 3 || levels == 0 || levels > LEVEL_COUNT || in[10] != CUSTOM_SLOTS ||
       12 + (levels + CUSTOM_SLOTS) * stride + 12 > PROGRESS_BYTES) return false;
   const uint8_t *q = in + 12;
   for (int i = 0; i < levels + CUSTOM_SLOTS; i++, q += stride)
@@ -63,6 +67,7 @@ bool progress_decode(Progress *p, const uint8_t *in, size_t len) {
   progress_defaults(p);
   q = in + 12;
   for (int i = 0; i < levels + CUSTOM_SLOTS; i++, q += stride) {
+    if (old_levels && i < levels) continue;
     LevelStat *s = &p->lv[i < levels ? i : i - levels + LEVEL_COUNT];
     s->normal = q[0]; s->practice = q[1]; s->coins = q[2];
     s->attempts = rd32(q + a);
@@ -70,10 +75,10 @@ bool progress_decode(Progress *p, const uint8_t *in, size_t len) {
   }
   p->attempts = rd32(q); p->jumps = rd32(q + 4);
   p->color1 = q[8] < 42 ? q[8] : 0;
-  p->color2 = q[9] < 42 ? q[9] : 3;
+  p->color2 = q[9] < 42 ? q[9] : 8;
   p->options = q[10];
   int last = q[11] < levels ? q[11] : q[11] - levels + LEVEL_COUNT;
-  p->last_level = q[11] < levels + CUSTOM_SLOTS ? (uint8_t)last : 0;
+  p->last_level = q[11] < levels + CUSTOM_SLOTS && !(old_levels && q[11] < levels) ? (uint8_t)last : 0;
   return true;
 }
 
@@ -151,11 +156,9 @@ bool custom_decode(const uint8_t *in, size_t len, LObj *objs, unsigned cap, Cust
 
 /* ------------------------------------------------------------ legacy saves */
 
-static uint8_t type_for_gd(unsigned id) {
-  for (unsigned t = 1; t < OT_LOBJ; t++) if (objdefs[t].gd_id == id) return (uint8_t)t;
-  return 0;
-}
-
+/* The first save format (NDASH002 / NDASH003) wrote the objects of custom levels with the
+   original game's numbers: they are not read any more (Calcade, 19 octobre 2026). Its totals
+   and settings still carry over; its custom levels come back empty. */
 bool legacy_decode(const uint8_t *in, size_t size, Progress *p, LObj *objs, unsigned cap, unsigned counts[CUSTOM_SLOTS],
                    CustomMeta metas[CUSTOM_SLOTS]) {
   if (size < 108) return false;
@@ -165,34 +168,24 @@ bool legacy_decode(const uint8_t *in, size_t size, Progress *p, LObj *objs, unsi
   unsigned stride = v2 ? 12 : 8;
   for (size_t n = 16; n < 86; n += 7) if (in[n] > 100 || in[n + 1] > 100 || in[n + 2] > 3) return false;
   progress_defaults(p);
-  /* The first four built-in levels are unchanged; the old 5-7 were others. */
-  for (int i = 0; i < 4; i++) {
-    const uint8_t *q = in + 16 + i * 7;
-    p->lv[i].normal = q[0];
-    p->lv[i].practice = q[1];
-    p->lv[i].coins = (uint8_t)((1u << q[2]) - 1);
-    p->lv[i].attempts = rd32(q + 3);
-  }
+  /* The built-in levels of those releases are not NumDash's levels any more
+     (Calcade, 19 octobre 2026): only the totals and settings carry over. */
   for (int i = 0; i < 10; i++) p->attempts += rd32(in + 16 + i * 7 + 3);
   if (!(v2 ? 1 : in[87])) p->options &= (uint8_t)~OPT_PERCENT;
   if (in[88]) p->options |= OPT_FPS;
   size_t n = 90;
-  unsigned used = 0;
+  (void)objs; (void)cap;
   for (int s = 0; s < CUSTOM_SLOTS; s++) {
     if (n + 6 > size) return false;
     unsigned count = rd16(in + n), length = rd16(in + n + 2);
     metas[s] = (CustomMeta){0, (uint16_t)length, in[n + 4], 0, count > 0};
     counts[s] = 0;
     n += 6;
-    for (unsigned j = 0; j < count; j++, n += stride) {
-      if (n + stride > size) return false;
-      int x = (int16_t)rd16(in + n), y = (int16_t)rd16(in + n + 2);
-      uint8_t t = type_for_gd(rd16(in + n + 4));
-      if (!t || x < 0 || used >= cap) continue;
-      objs[used++] = (LObj){(uint16_t)x, (int16_t)y, t, (uint8_t)(in[n + 6] & 3)};
-      counts[s]++;
-    }
-    metas[s].count = (uint16_t)counts[s];
+    /* the objects (old numbers) are skipped: the slot comes back empty */
+    if (n + (size_t)count * stride > size) return false;
+    n += (size_t)count * stride;
+    metas[s].count = 0;
+    metas[s].exists = false;
   }
   return true;
 }
diff --git a/games/numdash/src/scene.c b/games/numdash/src/scene.c
index 511af2a..c1baa3d 100644
--- a/games/numdash/src/scene.c
+++ b/games/numdash/src/scene.c
@@ -4,45 +4,40 @@
 #include <string.h>
 #include "../../common/np_text.h"
 
-#define PX (2.0f / 3.0f)       /* screen pixels per GD unit */
+#define PX (2.0f / 3.0f)       /* screen pixels per level unit */
 #define FADE_W 75.0f
 
 /* ------------------------------------------------------------ background */
 
+/* NumDash's backdrop (Calcade, 19 octobre 2026): a gradient crossed by wide slanted bands that
+   scroll slowly behind the level, and a row of soft rings. */
 void scene_background(color_t bg, float bg_x, float cam_y) {
-  const float tex = 0.9f, tile = 512 * tex;
-  float off = fmodf(bg_x * 0.1f, tile);
-  if (off < 0) off += tile;
-  float top = cam_y * 0.111f - 200;
-  int y0 = gfx_y0, y1 = gfx_y1;
-  for (int y = y0; y < y1; y++) {
-    float ty = (y + .5f - top) / tex;
-    if (ty < 0) ty = 0;
-    if (ty > 511) ty = 511;
-    float g = ty / 384.f;
+  const float period = 132.0f, band = 46.0f;
+  float off = fmodf(bg_x * 0.08f, period);
+  if (off < 0) off += period;
+  float top = cam_y * 0.1f - 160;
+  for (int y = gfx_y0; y < gfx_y1; y++) {
+    float ty = y + .5f - top;
+    float g = 0.55f + ty / 520.f;
     if (g > 1) g = 1;
+    if (g < 0.4f) g = 0.4f;
     unsigned gi = (unsigned)(g * 256);
-    color_t gap = c_scale(bg, gi), sq = c_scale(bg, gi * 216 / 256), sh = c_scale(bg, gi * 182 / 256);
-    gfx_fill(0, y, GFX_W, 1, gap);
-    int ity = (int)ty;
-    for (float base = -off; base < GFX_W; base += tile) {
-      for (int k = 0; k < BG_RECTS; k++) {
-        const uint16_t *r = bg_rects[k];
-        if (ity < r[1] || ity >= r[1] + r[3]) continue;
-        int a = (int)floorf(base + r[0] * tex + .5f), b = (int)floorf(base + (r[0] + r[2]) * tex + .5f);
-        if (b <= 0 || a >= GFX_W) continue;
-        gfx_fill(a, y, b - a - 1, 1, sq);
-        gfx_fill(b - 1, y, 1, 1, sh);
-      }
+    color_t base = c_scale(bg, gi), light = c_scale(bg, gi * 236 / 256 + 30 > 256 ? 256 : gi * 236 / 256 + 30);
+    gfx_fill(0, y, GFX_W, 1, base);
+    float shift = fmodf(ty * 0.58f + off, period);
+    for (float x = -shift; x < GFX_W; x += period) {
+      int a = (int)floorf(x + .5f), w = (int)band;
+      gfx_fill(a < 0 ? 0 : a, y, a < 0 ? w + a : w, 1, light);
+      gfx_add(a + w, y, 2, 1, 0xffff, 14);
     }
   }
 }
 
-static const uint8_t line_profile[23] = {3, 44, 87, 128, 170, 195, 204, 214, 223, 232, 241, 250, 243, 233, 224, 215, 206, 197, 176, 135, 92, 51, 9};
 
-/* Ground band whose top edge (or bottom edge for a ceiling) is at top_y. */
+/* Ground band whose top edge (or bottom edge for a ceiling) is at top_y: NumDash's ground is
+   crossed by dark slanted stripes, under a plain bright edge. */
 void scene_ground(color_t g1, color_t line, float ground_x, int top_y, bool ceiling, bool shadows) {
-  const float tile = 128 * PX;
+  const float tile = 40;
   float off = fmodf(ground_x * PX, tile);
   if (off < 0) off += tile;
   int ya = ceiling ? 0 : top_y, yb = ceiling ? top_y : GFX_H;
@@ -50,14 +45,13 @@ void scene_ground(color_t g1, color_t line, float ground_x, int top_y, bool ceil
   if (yb > gfx_y1) yb = gfx_y1;
   for (int y = ya; y < yb; y++) {
     float d = ceiling ? (top_y - 1 - y) : (y - top_y);   /* depth in px */
-    float t = d * 1.5f;                                   /* depth in units */
-    float in = t < 2 ? 1.0f : 0.85f - (t - 2) / 126.f * 0.65f;
-    if (in < 0.2f) in = 0.2f;
-    color_t base = c_scale(g1, (unsigned)(in * 256)), seam = c_scale(g1, (unsigned)((in + 0.13f > 1 ? 1 : in + 0.13f) * 256));
+    float in = 0.95f - d / 90.f * 0.55f;
+    if (in < 0.35f) in = 0.35f;
+    color_t base = c_scale(g1, (unsigned)(in * 256)), stripe = c_scale(g1, (unsigned)(in * 0.72f * 256));
     gfx_fill(0, y, GFX_W, 1, base);
-    for (float x = -off; x < GFX_W + tile; x += tile) {
+    for (float x = -off - d - tile; x < GFX_W + tile; x += tile) {
       int s = (int)floorf(x + .5f);
-      gfx_fill(s - 4, y, 8, 1, seam);
+      gfx_fill(s < 0 ? 0 : s, y, s < 0 ? 14 + s : 14, 1, stripe);
     }
   }
   if (shadows) {
@@ -66,18 +60,11 @@ void scene_ground(color_t g1, color_t line, float ground_x, int top_y, bool ceil
     gfx_hgrad_alpha(0, y, 86, h, 0, 100, 0, BLEND_NORMAL);
     gfx_hgrad_alpha(GFX_W - 86, y, 86, h, 0, 0, 100, BLEND_NORMAL);
   }
-  /* floor line: additive, brightest in the middle of the screen */
+  /* the edge: a solid bright line with a softer one beside it */
   int ly = ceiling ? top_y - 1 : top_y;
   if (ly >= gfx_y0 - 1 && ly < gfx_y1 + 1) {
-    const int len = 296, x0 = (GFX_W - len) / 2;
-    for (int i = 0; i < len; i++) {
-      float f = i * 22.f / (len - 1);
-      int k = (int)f;
-      float fr = f - k;
-      unsigned a = (unsigned)(line_profile[k] * (1 - fr) + line_profile[k < 22 ? k + 1 : 22] * fr);
-      gfx_add(x0 + i, ly, 1, 1, line, a);
-      gfx_add(x0 + i, ceiling ? ly - 1 : ly + 1, 1, 1, line, a / 3);
-    }
+    gfx_add(0, ly, GFX_W, 1, line, 230);
+    gfx_add(0, ceiling ? ly - 1 : ly + 1, GFX_W, 1, line, 90);
   }
 }
 
@@ -228,9 +215,9 @@ static void build_palette(const Game *g) {
   memcpy(slot_rgb[CH_BLACK], fixed_rgb[0], 3);
   memcpy(slot_rgb[CH_WHITE], fixed_rgb[1], 3);
   memcpy(slot_rgb[CH_LIGHTER], fixed_rgb[2], 3);
-  pal[PAL_GLOW_Y] = (Pal){rgb(255, 255, 0), 255, 1};
-  pal[PAL_GLOW_B] = (Pal){rgb(0, 255, 255), 255, 1};
-  pal[PAL_GLOW_P] = (Pal){rgb(255, 0, 255), 255, 1};
+  pal[PAL_GLOW_Y] = (Pal){rgb(255, 179, 71), 255, 1};
+  pal[PAL_GLOW_B] = (Pal){rgb(46, 196, 182), 255, 1};
+  pal[PAL_GLOW_P] = (Pal){rgb(255, 111, 168), 255, 1};
   static const uint8_t rain[6][3] = {{255, 30, 30}, {255, 150, 0}, {255, 240, 0}, {40, 230, 40}, {30, 120, 255}, {170, 40, 255}};
   for (int k = 0; k < 6; k++) pal[PAL_RAIN + k] = (Pal){c3(rain[k]), 255, 0};
   ndyn = 0;
@@ -748,9 +735,7 @@ static void draw_body(const Player *p, float sx, float sy, bool swap) {
 
 static void draw_player(void) {
   fx_draw_player_trail();
-  /* the dual's second body wears the colours the other way round */
-  if (G->dual) draw_body(&G->p2, wx_to_sx(G, G->p2.x), wy_to_sy(G, G->p2.y), G->p2.second);
-  draw_body(&G->p, player_sx, player_sy, G->p.second);
+  draw_body(&G->p, player_sx, player_sy, false);
 }
 
 static void draw_end_wall(void) {
diff --git a/games/numdash/src/trig.c b/games/numdash/src/trig.c
index 46b8b80..7202fca 100644
--- a/games/numdash/src/trig.c
+++ b/games/numdash/src/trig.c
@@ -1,708 +1,60 @@
-/* Triggers of 2.0+ levels: colour channels (fades, copies with HSV,
- * pulses), groups (moves with easing, rotations, opacity fades, on / off),
- * spawning, stopping, items, listeners (count, collision, tap), gameplay
- * rotation and camera triggers. Position triggers come in channels (GD
- * 2.2): the active channel's list fires as the player's forward coordinate
- * passes each one. Easing formulas are cocos2d's, as GD uses them (checked
- * against GD by gdsolver). */
+/* Calcade, 19 octobre 2026 : NumDash's levels have no groups or triggers (the
+ * trigger system that played the original game's later levels is removed).
+ * What the drawing code asks about groups always gets the plain answer, and
+ * colours are shifted with an ordinary HSV conversion. */
 #include "game.h"
 #include <math.h>
-#include <string.h>
-
-static const uint8_t *rp;
-static unsigned rv(void) {
-  unsigned v = 0;
-  for (int s = 0; s < 28; s += 7) {
-    uint8_t b = *rp++;
-    v |= (unsigned)(b & 127) << s;
-    if (!(b & 128)) break;
-  }
-  return v;
-}
-static int rz(void) { unsigned v = rv(); return (v & 1) ? -(int)((v + 1) >> 1) : (int)(v >> 1); }
-static uint16_t ticks_of(unsigned ms) { unsigned t = (ms * ND_HZ + 500) / 1000; return (uint16_t)(t > 65535 ? 65535 : t); }
-
-/* the spawn being run: its group remap (dense + 1, as the stream) */
-static const uint16_t (*remap)[2];
-static unsigned nremap;
-static unsigned G(unsigned v) {          /* stream group (dense + 1, 0 none) -> dense, or 0xffff */
-  for (unsigned k = 0; k < nremap; k++) if (remap[k][0] == v) { v = remap[k][1]; break; }
-  return v ? v - 1 : 0xffff;
-}
-static unsigned depth;                   /* spawn chains */
-
-/* ------------------------------------------------------------ groups */
-
-bool gset_on(const Game *g, unsigned set) {
-  if (!set) return true;
-  const uint16_t *s = g->L->ext->gsets + set;
-  for (unsigned k = 1; k <= s[0]; k++)
-    if (s[k] < MAX_GROUPS && !g->gr[s[k]].on) return false;
-  return true;
-}
-
-static bool gset_has(const Game *g, unsigned set, unsigned grp) {
-  if (!set) return false;
-  const uint16_t *s = g->L->ext->gsets + set;
-  for (unsigned k = 1; k <= s[0]; k++) if (s[k] == grp) return true;
-  return false;
-}
 
+bool gset_on(const Game *g, unsigned set) { (void)g; (void)set; return true; }
 void gset_state(const Game *g, unsigned set, float *dx, float *dy, unsigned *alpha, bool *on) {
+  (void)g; (void)set;
   *dx = *dy = 0;
   *alpha = 255;
   *on = true;
-  if (!set) return;
-  const uint16_t *s = g->L->ext->gsets + set;
-  for (unsigned k = 1; k <= s[0]; k++) {
-    if (s[k] >= MAX_GROUPS) continue;
-    const GroupState *gr = &g->gr[s[k]];
-    *dx += gr->dx;
-    *dy += gr->dy;
-    *alpha = *alpha * gr->alpha / 255;
-    if (!gr->on) *on = false;
-  }
 }
-
-/* Did any group of the set move vertically this tick or the last? */
-bool gset_moved(const Game *g, unsigned set) {
-  if (!set) return false;
-  const uint16_t *s = g->L->ext->gsets + set;
-  for (unsigned k = 1; k <= s[0]; k++) {
-    if (s[k] >= MAX_GROUPS) continue;
-    uint16_t m = g->gr[s[k]].moved, d = (uint16_t)((uint16_t)g->tick - m);
-    if (m && d <= 1) return true;
-  }
-  return false;
-}
-
+bool gset_moved(const Game *g, unsigned set) { (void)g; (void)set; return false; }
 bool gset_rot(const Game *g, unsigned set, float *angle, float *px, float *py) {
-  if (!set || !g->nrg) return false;
-  const uint16_t *s = g->L->ext->gsets + set;
-  for (unsigned j = 0; j < g->nrg; j++)
-    for (unsigned k = 1; k <= s[0]; k++)
-      if (s[k] == g->rg[j].group) { *angle = g->rg[j].angle; *px = g->rg[j].px; *py = g->rg[j].py; return true; }
+  (void)g; (void)set;
+  *angle = *px = *py = 0;
   return false;
 }
-
-bool trig_anchor(const Game *g, unsigned grp, float *x, float *y) {
-  const LevelExt *e = g->L->ext;
-  if (!e || grp >= e->ngroups || grp >= MAX_GROUPS || e->anchors[grp][0] == 32767) return false;
-  *x = e->anchors[grp][0] + g->gr[grp].dx;
-  *y = e->anchors[grp][1] + g->gr[grp].dy;
-  return true;
-}
-
-/* ------------------------------------------------------------ easing */
-
-static float bounce_out(float u) {
-  if (u < 1 / 2.75f) return 7.5625f * u * u;
-  if (u < 2 / 2.75f) { u -= 1.5f / 2.75f; return 7.5625f * u * u + .75f; }
-  if (u < 2.5f / 2.75f) { u -= 2.25f / 2.75f; return 7.5625f * u * u + .9375f; }
-  u -= 2.625f / 2.75f;
-  return 7.5625f * u * u + .984375f;
-}
-static float elastic_out(float u, float per) {
-  if (u <= 0 || u >= 1) return u;
-  return powf(2, -10 * u) * sinf((u - per / 4) * 6.2831853f / per) + 1;
-}
-static float elastic_in(float u, float per) {
-  if (u <= 0 || u >= 1) return u;
-  u -= 1;
-  return -powf(2, 10 * u) * sinf((u - per / 4) * 6.2831853f / per);
-}
-
-float ease(int kind, float rate, float u) {
-  u = u < 0 ? 0 : u > 1 ? 1 : u;
-  float p = rate > 0 ? rate : 2;
-  switch (kind) {
-    case 1: { float t = 2 * u; return t < 1 ? .5f * powf(t, p) : 1 - .5f * powf(2 - t, p); }
-    case 2: return powf(u, p);
-    case 3: return powf(u, 1 / p);
-    case 4: return u < .5f ? elastic_in(2 * u, p) * .5f : elastic_out(2 * u - 1, p) * .5f + .5f;
-    case 5: return elastic_in(u, p);
-    case 6: return elastic_out(u, p);
-    case 7: return u < .5f ? (1 - bounce_out(1 - 2 * u)) * .5f : bounce_out(2 * u - 1) * .5f + .5f;
-    case 8: return 1 - bounce_out(1 - u);
-    case 9: return bounce_out(u);
-    case 10: return u < .5f ? .5f * powf(2, 10 * (2 * u - 1)) : .5f * (2 - powf(2, -10 * (2 * u - 1)));
-    case 11: return u == 0 ? 0 : powf(2, 10 * (u - 1));
-    case 12: return 1 - powf(2, -10 * u);
-    case 13: return -.5f * (cosf(3.14159265f * u) - 1);
-    case 14: return 1 - cosf(u * 1.5707963f);
-    case 15: return sinf(u * 1.5707963f);
-    case 16: {
-      float o = 1.70158f * 1.525f;
-      u *= 2;
-      if (u < 1) return .5f * (u * u * ((o + 1) * u - o));
-      u -= 2;
-      return .5f * (u * u * ((o + 1) * u + o) + 2);
-    }
-    case 17: { float o = 1.70158f; return u * u * ((o + 1) * u - o); }
-    case 18: { float o = 1.70158f; u -= 1; return u * u * ((o + 1) * u + o) + 1; }
-    default: return u;
-  }
-}
-
-/* ------------------------------------------------------------ channels */
-
-static void chan_set(Channel *c, const uint8_t rgb[3], unsigned op, unsigned dur) {
-  memcpy(c->from, c->cur, 3);
-  memcpy(c->to, rgb, 3);
-  c->op_from = c->op;
-  c->op_to = (uint8_t)op;
-  c->t = 0;
-  c->dur = (uint16_t)dur;
-  if (!dur) { memcpy(c->cur, rgb, 3); c->op = (uint8_t)op; }
-}
-
-static void chan_ease(Channel *c) {
-  if (c->t >= c->dur) { memcpy(c->cur, c->to, 3); c->op = c->op_to; return; }
-  c->t++;
-  for (int k = 0; k < 3; k++) c->cur[k] = (uint8_t)(c->from[k] + ((int)c->to[k] - c->from[k]) * (int)c->t / (int)c->dur);
-  c->op = (uint8_t)(c->op_from + ((int)c->op_to - c->op_from) * (int)c->t / (int)c->dur);
-}
-
+bool trig_anchor(const Game *g, unsigned grp, float *x, float *y) { (void)g; (void)grp; *x = *y = 0; return false; }
+float ease(int kind, float rate, float u) { (void)kind; (void)rate; return u; }
+float pulse_level(const PulseAction *p) { (void)p; return 0; }
+void trig_start(Game *g) { (void)g; }
+void trig_log(Game *g, unsigned kind, unsigned arg, float val) { (void)g; (void)kind; (void)arg; (void)val; }
+void trig_touch(Game *g, unsigned idx) { (void)g; (void)idx; }
+void trig_tap(Game *g) { (void)g; }
+void trig_toggle_ring(Game *g, unsigned arg) { (void)g; (void)arg; }
+void trig_cross(Game *g) { (void)g; }
+void trig_step(Game *g, float player_dx) { (void)g; (void)player_dx; }
+
+/* in -> out with the hue turned by h degrees and saturation, value scaled by
+   s64 / 64 and v64 / 64 (or added, flags CHF_SADD / CHF_VADD). */
 void hsv_shift(const uint8_t in[3], int h, int s64, int v64, unsigned flags, uint8_t out[3]) {
-  float r = in[0] / 255.f, g = in[1] / 255.f, b = in[2] / 255.f;
-  float mx = fmaxf(r, fmaxf(g, b)), mn = fminf(r, fminf(g, b)), d = mx - mn, hh = 0;
-  if (d > 0) {
-    if (mx == r) hh = fmodf((g - b) / d, 6);
-    else if (mx == g) hh = (b - r) / d + 2;
-    else hh = (r - g) / d + 4;
-    hh *= 60;
-  }
-  float ss = mx > 0 ? d / mx : 0, vv = mx;
-  hh = fmodf(hh + h + 720, 360);
-  ss = (flags & CHF_SADD) ? ss + s64 / 64.f : ss * (s64 / 64.f);
-  vv = (flags & CHF_VADD) ? vv + v64 / 64.f : vv * (v64 / 64.f);
-  ss = ss < 0 ? 0 : ss > 1 ? 1 : ss;
-  vv = vv < 0 ? 0 : vv > 1 ? 1 : vv;
-  float c = vv * ss, x = c * (1 - fabsf(fmodf(hh / 60, 2) - 1)), m = vv - c, rr, gg, bb;
-  int sec = (int)(hh / 60) % 6;
-  switch (sec) {
-    case 0: rr = c; gg = x; bb = 0; break;
-    case 1: rr = x; gg = c; bb = 0; break;
-    case 2: rr = 0; gg = c; bb = x; break;
-    case 3: rr = 0; gg = x; bb = c; break;
-    case 4: rr = x; gg = 0; bb = c; break;
-    default: rr = c; gg = 0; bb = x; break;
-  }
-  out[0] = (uint8_t)((rr + m) * 255 + .5f);
-  out[1] = (uint8_t)((gg + m) * 255 + .5f);
-  out[2] = (uint8_t)((bb + m) * 255 + .5f);
-}
-
-/* ------------------------------------------------------------ start */
-
-static void chan_rewind(Game *g, unsigned c) {
-  const LevelExt *x = g->L->ext;
-  g->ch_pos[c] = 0xffffffffu;
-  if (!x || x->chan_off[c] == 0xffffffffu) return;
-  rp = x->trig + x->chan_off[c];
-  g->ch_fwd[c] = (float)rz() * 0.125f;
-  g->ch_pos[c] = (uint32_t)(rp - x->trig);
-}
-
-void trig_start(Game *g) {
-  const LevelExt *x = g->L->ext;
-  for (unsigned k = 0; k < MAX_GROUPS; k++) g->gr[k] = (GroupState){0, 0, 255, 1, 0};
-  for (unsigned c = 0; c < MAX_CHANNELS; c++) {
-    Channel *ch = &g->ch[c];
-    if (!x || c >= x->ndyn) {
-      if (c >= CH_COUNT) memset(ch->cur, 255, 3);
-      ch->op = ch->op_to = 255;
-      continue;
-    }
-    const LChan *l = &x->chans[c];
-    memcpy(ch->cur, l->rgb, 3);
-    memcpy(ch->to, l->rgb, 3);
-    ch->op = ch->op_to = l->opacity;
-    ch->flags = l->flags;
-    ch->copy = l->copy;
-    ch->h = l->h;
-    ch->s = l->s;
-    ch->v = l->v;
-  }
-  g->nmv = g->npu = g->nfa = g->nro = g->nrg = g->nsp = g->nfo = g->nli = 0;
-  memset(g->touch_bits, 0, sizeof(g->touch_bits));
-  memset(g->items, 0, sizeof(g->items));
-  g->active_ch = 0;
-  g->frame = 0;
-  g->time_mod = 1;
-  g->zoom = g->zoom_from = g->zoom_to = 1;
-  g->zoom_t = g->zoom_dur = 0;
-  g->cam_static = 0;
-  g->cam_off_x = g->cam_off_y = 0;
-  g->end_trig = false;
-  for (unsigned c = 0; c < TRIG_CHANNELS; c++) chan_rewind(g, c);
-}
-
-/* ------------------------------------------------------------ firing */
-
-static void spawn_group(Game *g, unsigned grp, const uint16_t (*rm)[2], unsigned nrm);
-
-static void stop_group(Game *g, unsigned grp) {
-  for (unsigned k = 0; k < g->nmv;) if (gset_has(g, g->mv[k].src, grp)) g->mv[k] = g->mv[--g->nmv]; else k++;
-  for (unsigned k = 0; k < g->nro;) if (gset_has(g, g->ro[k].src, grp)) g->ro[k] = g->ro[--g->nro]; else k++;
-  for (unsigned k = 0; k < g->nfa;) if (gset_has(g, g->fa[k].src, grp)) g->fa[k] = g->fa[--g->nfa]; else k++;
-  for (unsigned k = 0; k < g->nsp;) if (gset_has(g, g->sp[k].src, grp)) g->sp[k] = g->sp[--g->nsp]; else k++;
-  for (unsigned k = 0; k < g->nfo;) if (gset_has(g, g->fo[k].src, grp)) g->fo[k] = g->fo[--g->nfo]; else k++;
-  for (unsigned k = 0; k < g->nli;) if (gset_has(g, g->li[k].src, grp)) g->li[k] = g->li[--g->nli]; else k++;
-}
-
-static RotGroup *rot_group(Game *g, unsigned grp, float px, float py) {
-  for (unsigned k = 0; k < g->nrg; k++) if (g->rg[k].group == grp) return &g->rg[k];
-  if (g->nrg >= MAX_ROTG) return NULL;
-  g->rg[g->nrg] = (RotGroup){(uint16_t)grp, 0, px, py};
-  return &g->rg[g->nrg++];
-}
-
-static void activate(Game *g, unsigned grp, unsigned on) {
-  if (grp >= MAX_GROUPS) return;
-  if (on) g->gr[grp].on = 1;
-  spawn_group(g, grp, NULL, 0);
-}
-
-static void items_changed(Game *g) {
-  for (unsigned k = 0; k < g->nli;) {
-    Listener *l = &g->li[k];
-    if (l->kind == TR_COUNT && l->a < MAX_ITEM_IDS && g->items[l->a] == l->count) {
-      unsigned t = l->target, on = l->on;
-      g->li[k] = g->li[--g->nli];
-      activate(g, t, on);
-      continue;
-    }
-    k++;
-  }
-}
-
-static bool compare(int a, unsigned op, int b) {
-  switch (op) {
-    case 0: return a == b;
-    case 1: return a > b;
-    case 2: return a >= b;
-    case 3: return a < b;
-    case 4: return a <= b;
-    default: return a != b;
-  }
-}
-
-/* Reads a trigger's fields at rp; applies it only if `apply`. `src`: the
-   trigger's own group set (for stop triggers). */
-static void fire(Game *g, unsigned kind, bool apply, unsigned src) {
-  switch (kind) {
-    case TR_FADE: { unsigned v = *rp++; if (apply) g->fade_effect = (uint8_t)v; break; }
-    case TR_TRAIL: { unsigned v = *rp++; if (apply) g->trail = v != 0; break; }
-    case TR_COLOR: {
-      unsigned c = rv();
-      uint8_t rgb[3] = {rp[0], rp[1], rp[2]};
-      unsigned op = rp[3], fl = rp[4];
-      rp += 5;
-      unsigned dur = ticks_of(rv());
-      unsigned copy = 0xffff;
-      int h = 0, s = 64, v = 64;
-      unsigned hf = 0;
-      if (fl & CHF_COPY) { copy = rv(); h = rz(); s = rz(); v = rz(); hf = *rp++; }
-      for (int k = 0; k < 2 && apply; k++) {
-        unsigned t = k ? ((fl & 8) && c == CH_BG ? CH_G1 : 255u) : c;
-        if (t >= MAX_CHANNELS) continue;
-        Channel *ch = &g->ch[t];
-        chan_set(ch, rgb, op, dur);
-        ch->flags = (uint8_t)((fl & (CHF_BLEND | CHF_P1 | CHF_P2 | CHF_COPY)) | (hf & (CHF_SADD | CHF_VADD)));
-        ch->copy = (uint16_t)copy;
-        ch->h = (int16_t)h; ch->s = (int16_t)s; ch->v = (int16_t)v;
-      }
-      break;
-    }
-    case TR_MOVE: {
-      unsigned grp = rv();
-      float dx = rz() * .25f, dy = rz() * .25f;
-      float dur = (float)rv() * (ND_HZ / 1000.f);
-      unsigned easing = rp[0], rate = rp[1], fl = rp[2];
-      rp += 3;
-      float xmod = 1, ymod = 1;
-      if (fl & 3) { xmod = rz() * .01f; ymod = rz() * .01f; }
-      if (fl & 4) {
-        unsigned to = G(rv()), centre = G(rv()), axis = *rp++;
-        float tx, ty, cx, cy;
-        if (apply && trig_anchor(g, to, &tx, &ty) && trig_anchor(g, centre != 0xffff ? centre : grp, &cx, &cy)) {
-          dx = axis == 2 ? 0 : tx - cx;
-          dy = axis == 1 ? 0 : ty - cy;
-        } else {
-          dx = dy = 0;
-        }
-      }
-      if (grp >= MAX_GROUPS || !apply || g->nmv >= MAX_MOVES) break;
-      g->mv[g->nmv++] = (MoveAction){(uint16_t)grp, (uint16_t)src, (uint8_t)easing, (uint8_t)fl, -2, dx, dy, 0, 0, rate / 10.f, dur, xmod, ymod};
-      break;
-    }
-    case TR_ALPHA: {
-      unsigned grp = rv(), op = *rp++, dur = ticks_of(rv());
-      if (grp >= MAX_GROUPS || !apply) break;
-      GroupState *gr = &g->gr[grp];
-      for (unsigned k = 0; k < g->nfa; k++) if (g->fa[k].group == grp) { g->fa[k] = g->fa[--g->nfa]; break; }
-      if (!dur || g->nfa >= MAX_FADES) { gr->alpha = (uint8_t)op; break; }
-      g->fa[g->nfa++] = (FadeAction){(uint16_t)grp, (uint16_t)src, gr->alpha, (uint8_t)op, 0, (uint16_t)dur};
-      break;
-    }
-    case TR_TOGGLE: {
-      unsigned grp = rv(), on = *rp++;
-      if (grp < MAX_GROUPS && apply) g->gr[grp].on = (uint8_t)on;
-      break;
-    }
-    case TR_PULSE: {
-      PulseAction p;
-      p.target = (uint16_t)rv();
-      memcpy(p.rgb, rp, 3);
-      p.flags = rp[3];
-      rp += 4;
-      p.tin = ticks_of(rv());
-      p.hold = ticks_of(rv());
-      p.tout = ticks_of(rv());
-      p.copy = 0xffff; p.h = 0; p.s = 64; p.v = 64;
-      if (p.flags & CHF_COPY) {
-        p.copy = (uint16_t)rv();
-        p.h = (int16_t)rz(); p.s = (int16_t)rz(); p.v = (int16_t)rz();
-        p.flags |= (uint8_t)(*rp++ & (CHF_SADD | CHF_VADD));
-      }
-      p.t = 0;
-      p.src = (uint16_t)src;
-      if (!apply) break;
-      if (g->npu < MAX_PULSES) g->pu[g->npu++] = p;
-      else { memmove(g->pu, g->pu + 1, sizeof(PulseAction) * (MAX_PULSES - 1)); g->pu[MAX_PULSES - 1] = p; }
-      break;
-    }
-    case TR_SPAWN: {
-      unsigned grp = G(rv()), delay = ticks_of(rv()), n = *rp++;
-      uint16_t rm[4][2];
-      for (unsigned k = 0; k < n; k++) {
-        unsigned a = rv(), b = rv();
-        if (k < 4) { rm[k][0] = (uint16_t)a; rm[k][1] = (uint16_t)b; }
-      }
-      if (n > 4) n = 4;
-      if (!apply || grp >= MAX_GROUPS) break;
-      if (!delay) { spawn_group(g, grp, rm, n); break; }
-      if (g->nsp >= MAX_SPAWNS) break;
-      SpawnAction *a = &g->sp[g->nsp++];
-      a->group = (uint16_t)grp; a->src = (uint16_t)src; a->ticks = (uint16_t)delay; a->nremap = (uint8_t)n;
-      memcpy(a->remap, rm, sizeof(rm));
-      break;
-    }
-    case TR_STOP: {
-      unsigned grp = G(rv());
-      if (apply && grp < MAX_GROUPS) stop_group(g, grp);
-      break;
-    }
-    case TR_ROTATE: {
-      unsigned grp = G(rv()), centre = G(rv());
-      float deg = rz() * .25f, dur = (float)rv() * (ND_HZ / 1000.f);
-      unsigned easing = rp[0], rate = rp[1], fl = rp[2];
-      rp += 3;
-      if (!apply || grp >= MAX_GROUPS || g->nro >= MAX_ROTS) break;
-      float px, py;
-      if (!trig_anchor(g, centre != 0xffff ? centre : grp, &px, &py)) break;
-      g->ro[g->nro++] = (RotAction){(uint16_t)grp, (uint16_t)src, (uint8_t)easing, (uint8_t)fl, -2, deg, 0, rate / 10.f, dur, px, py};
-      break;
-    }
-    case TR_FOLLOW: {
-      unsigned grp = G(rv()), fol = G(rv());
-      float xm = rz() * .01f, ym = rz() * .01f, dur = (float)rv() * (ND_HZ / 1000.f);
-      float lx, ly;
-      if (!apply || grp >= MAX_GROUPS || g->nfo >= MAX_FOLLOWS || !trig_anchor(g, fol, &lx, &ly)) break;
-      g->fo[g->nfo++] = (FollowAction){(uint16_t)grp, (uint16_t)fol, (uint16_t)src, 0, xm, ym, dur, lx, ly};
-      break;
-    }
-    case TR_COUNT: {
-      unsigned item = *rp++;
-      int count = rz();
-      unsigned grp = G(rv()), on = *rp++;
-      if (!apply || grp >= MAX_GROUPS || g->nli >= MAX_LISTEN) break;
-      g->li[g->nli++] = (Listener){TR_COUNT, (uint8_t)item, 0, (uint8_t)on, (int16_t)count, (uint16_t)grp, (uint16_t)src};
-      items_changed(g);
-      break;
-    }
-    case TR_PICKUP: {
-      unsigned item = *rp++;
-      int count = rz();
-      unsigned fl = *rp++;
-      if (!apply || item >= MAX_ITEM_IDS) break;
-      g->items[item] = (int16_t)((fl & 1) ? count : g->items[item] + count);
-      items_changed(g);
-      break;
-    }
-    case TR_COMPARE: {
-      unsigned item = *rp++, op = *rp++;
-      int value = rz();
-      unsigned yes = G(rv()), no = G(rv());
-      if (!apply || item >= MAX_ITEM_IDS) break;
-      bool ok = compare(g->items[item] * 100, op, value);
-      unsigned t = ok ? yes : no;
-      if (t < MAX_GROUPS) spawn_group(g, t, NULL, 0);
-      break;
-    }
-    case TR_COLLISION: {
-      unsigned a = rp[0], b = rp[1];
-      rp += 2;
-      unsigned grp = G(rv()), on = *rp++;
-      if (!apply || grp >= MAX_GROUPS || g->nli >= MAX_LISTEN) break;
-      g->li[g->nli++] = (Listener){TR_COLLISION, (uint8_t)a, (uint8_t)b, (uint8_t)on, 0, (uint16_t)grp, (uint16_t)src};
-      break;
-    }
-    case TR_TAP: {
-      unsigned grp = G(rv()), mode = *rp++;
-      if (!apply || grp >= MAX_GROUPS || g->nli >= MAX_LISTEN) break;
-      g->li[g->nli++] = (Listener){TR_TAP, 0, 0, (uint8_t)mode, 0, (uint16_t)grp, (uint16_t)src};
-      break;
-    }
-    case TR_GROT: {
-      unsigned travel = rp[0], grav = rp[1], fl = rp[2], ch = rp[3];
-      rp += 4;
-      float vmod = rz() * .01f;
-      if (!apply) break;
-      game_rotate(g, travel, grav, fl, vmod);
-      if ((fl & 1) && ch < TRIG_CHANNELS) g->active_ch = (uint8_t)ch;
-      break;
-    }
-    case TR_END: if (apply) g->end_trig = true; break;
-    case TR_TIMEWARP: { unsigned m = *rp++; if (apply) g->time_mod = m / 100.f; break; }
-    case TR_SHAKE: {
-      unsigned st = *rp++, dur = rv();
-      if (apply) { g->shake_amp = (float)st; g->shake_t = dur / 1000.f; }
-      break;
-    }
-    case TR_CAMERA: {
-      unsigned cam = *rp++;
-      int a = rz(), b = rz();
-      unsigned c = *rp++, dur = rv();
-      if (!apply) break;
-      if (cam == CAM_STATIC) {
-        float x, y;
-        if (c || !a) g->cam_static = 0;
-        else if (trig_anchor(g, (unsigned)a - 1, &x, &y)) { g->cam_static = 1; g->cam_axis = (uint8_t)b; g->cam_tx = x; g->cam_ty = y; }
-      } else if (cam == CAM_ZOOM) {
-        g->zoom_from = g->zoom;
-        g->zoom_to = a / 100.f;
-        g->zoom_ease = (uint8_t)b;
-        g->zoom_rate = c / 10.f;
-        g->zoom_t = 0;
-        g->zoom_dur = (uint16_t)ticks_of(dur);
-        if (!g->zoom_dur) g->zoom = g->zoom_to;
-      } else {
-        g->cam_off_x = (float)a;
-        g->cam_off_y = (float)b;
-      }
-      break;
-    }
-    default: break;
-  }
-}
-
-/* Reads one trigger at rp and fires it unless its groups are off. */
-static void run_one(Game *g) {
-  unsigned kind = *rp++, set = 0;
-  if (kind & 0x80) { set = rv(); kind &= 0x7f; }
-  fire(g, kind, gset_on(g, set), set);
-}
-
-static void spawn_group(Game *g, unsigned grp, const uint16_t (*rm)[2], unsigned nrm) {
-  const LevelExt *x = g->L->ext;
-  if (!x || grp >= x->ngroups || depth > 6) return;
-  const uint16_t (*keep)[2] = remap;
-  unsigned keepn = nremap;
-  const uint8_t *keep_rp = rp;
-  remap = rm;
-  nremap = nrm;
-  depth++;
-  for (unsigned k = x->spawn_first[grp]; k < x->spawn_first[grp + 1]; k++) {
-    rp = x->trig + x->spawn_list[k];
-    run_one(g);
-  }
-  depth--;
-  remap = keep;
-  nremap = keepn;
-  rp = keep_rp;
-}
-
-void trig_log(Game *g, unsigned kind, unsigned arg, float val) {
-  if (!g->L->ext || g->rebuilding || g->nlog >= MAX_LOG) return;
-  g->log[g->nlog++] = (LogEntry){(uint16_t)g->tick, (uint8_t)kind, (uint8_t)arg, val};
-}
-
-void trig_touch(Game *g, unsigned idx) {
-  const LevelExt *x = g->L->ext;
-  if (!x || idx >= x->ntouch || idx >= sizeof(g->touch_bits) * 8) return;
-  if (g->touch_bits[idx >> 3] >> (idx & 7) & 1) return;
-  g->touch_bits[idx >> 3] |= (uint8_t)(1u << (idx & 7));
-  trig_log(g, LOG_TOUCH, idx, 0);
-  rp = x->trig + x->touch[idx];
-  run_one(g);
-}
-
-void trig_tap(Game *g) {
-  bool any = false;
-  for (unsigned k = 0; k < g->nli; k++) {
-    if (g->li[k].kind != TR_TAP) continue;
-    any = true;
-    activate(g, g->li[k].target, 0);
-  }
-  if (any) trig_log(g, LOG_TAP, 0, 0);
-}
-
-void trig_toggle_ring(Game *g, unsigned arg) {
-  unsigned grp = arg & 0x3fff;
-  if (grp < MAX_GROUPS) g->gr[grp].on = (arg & 0x4000) ? 1 : 0;
-  trig_log(g, LOG_TOGGLE, 0, (float)arg);
-}
-
-/* ------------------------------------------------------------ per tick */
-
-/* the player's forward coordinate along a frame's travel (world) */
-static float forward(const Game *g, unsigned frame) {
-  float X, Y;
-  to_world(g, g->p.x, g->p.y, &X, &Y);
-  switch (frame & 3) {
-    case 1: return -Y;
-    case 2: return -X;
-    case 3: return Y;
-    default: return X;
-  }
-}
-
-static bool colblock_hit(Game *g, unsigned a, unsigned b) {
-  /* collision blocks with ids a and b, near the player, overlapping */
-  float ax[4], ay[4];
-  unsigned na = 0;
-  float X, Y;
-  to_world(g, g->p.x, g->p.y, &X, &Y);
-  LIter it;
-  level_iter(g->L, X - 600, X + 900, &it);
-  float bx[8], by[8];
-  unsigned nb = 0;
-  for (const RObj *o; (o = level_next(&it));) {
-    if (o->type != OT_COLLISION_BLOCK) continue;
-    unsigned id = (unsigned)obj_style(g->L, o)->arg;
-    float x, y;
-    obj_where(g, o, &x, &y);
-    if (id == a && na < 4) { ax[na] = x; ay[na++] = y; }
-    if (id == b && nb < 8) { bx[nb] = x; by[nb++] = y; }
-  }
-  for (unsigned i = 0; i < na; i++)
-    for (unsigned j = 0; j < nb; j++)
-      if (fabsf(ax[i] - bx[j]) < 30 && fabsf(ay[i] - by[j]) < 30) return true;
-  return false;
-}
-
-/* Position triggers of the active channel the player has passed. GD fires
-   them in its collision pass, before the tick's button: game.c calls this
-   between the move and the player's own logic. */
-void trig_cross(Game *g) {
-  const LevelExt *x = g->L->ext;
-  if (!x) return;
-  for (int guard = 0; guard < 4; guard++) {
-    unsigned c = g->active_ch;
-    float f = forward(g, x->chan_frame[c]);
-    while (g->ch_pos[c] != 0xffffffffu && g->ch_fwd[c] <= f && g->active_ch == c) {
-      rp = x->trig + g->ch_pos[c];
-      if (*rp == 0) { g->ch_pos[c] = 0xffffffffu; break; }   /* the channel's end */
-      run_one(g);
-      g->ch_fwd[c] += (float)rv() * 0.125f;
-      g->ch_pos[c] = (uint32_t)(rp - x->trig);
-    }
-    if (g->active_ch == c) break;   /* else a rotation switched channels: go on there */
-  }
-}
-
-void trig_step(Game *g, float player_dx) {
-  const LevelExt *x = g->L->ext;
-  if (!x) return;
-  if (g->zoom_t < g->zoom_dur) {
-    g->zoom_t++;
-    g->zoom = g->zoom_from + (g->zoom_to - g->zoom_from) * ease(g->zoom_ease, g->zoom_rate, (float)g->zoom_t / g->zoom_dur);
-  }
-  /* delayed spawns */
-  for (unsigned k = 0; k < g->nsp;) {
-    SpawnAction *a = &g->sp[k];
-    if (--a->ticks) { k++; continue; }
-    SpawnAction s = *a;
-    g->sp[k] = g->sp[--g->nsp];
-    spawn_group(g, s.group, s.remap, s.nremap);
-  }
-  /* moves */
-  float pdy = g->p.delta_y;
-  for (unsigned k = 0; k < g->nmv;) {
-    MoveAction *m = &g->mv[k];
-    GroupState *gr = &g->gr[m->group];
-    m->t++;
-    float e = m->t >= m->dur ? 1 : ease(m->easing, m->rate, (float)m->t / m->dur);
-    gr->dx += m->tx * e - m->done_x;
-    if (m->ty * e != m->done_y) gr->moved = (uint16_t)g->tick;
-    gr->dy += m->ty * e - m->done_y;
-    m->done_x = m->tx * e;
-    m->done_y = m->ty * e;
-    if ((m->flags & 1) && m->t > 0) gr->dx += player_dx * m->xmod;
-    if ((m->flags & 2) && m->t > 0 && pdy != 0) { gr->dy += pdy * m->ymod; gr->moved = (uint16_t)g->tick; }
-    if (m->t >= m->dur) { *m = g->mv[--g->nmv]; continue; }
-    k++;
-  }
-  /* rotations */
-  for (unsigned k = 0; k < g->nro;) {
-    RotAction *r = &g->ro[k];
-    r->t++;
-    float e = r->t >= r->dur ? 1 : ease(r->easing, r->rate, (float)r->t / r->dur);
-    RotGroup *rg = rot_group(g, r->group, r->px, r->py);
-    if (rg) rg->angle += r->deg * e - r->done;
-    r->done = r->deg * e;
-    if (r->t >= r->dur) { *r = g->ro[--g->nro]; continue; }
-    k++;
-  }
-  /* follows */
-  for (unsigned k = 0; k < g->nfo;) {
-    FollowAction *f = &g->fo[k];
-    float fx, fy;
-    if (trig_anchor(g, f->follow, &fx, &fy)) {
-      g->gr[f->group].dx += (fx - f->lx) * f->xmod;
-      if (fy != f->ly && f->ymod != 0) g->gr[f->group].moved = (uint16_t)g->tick;
-      g->gr[f->group].dy += (fy - f->ly) * f->ymod;
-      f->lx = fx;
-      f->ly = fy;
-    }
-    if (++f->t >= f->dur) { *f = g->fo[--g->nfo]; continue; }
-    k++;
-  }
-  /* opacity fades */
-  for (unsigned k = 0; k < g->nfa;) {
-    FadeAction *a = &g->fa[k];
-    a->t++;
-    g->gr[a->group].alpha = (uint8_t)(a->from + ((int)a->to - a->from) * (int)a->t / (int)a->dur);
-    if (a->t >= a->dur) { g->fa[k] = g->fa[--g->nfa]; continue; }
-    k++;
-  }
-  /* pulses */
-  for (unsigned k = 0; k < g->npu;) {
-    PulseAction *p = &g->pu[k];
-    p->t++;
-    if (p->t > p->tin + p->hold + p->tout) { memmove(p, p + 1, sizeof(*p) * (g->npu - k - 1)); g->npu--; continue; }
-    k++;
-  }
-  /* collision listeners (every fourth tick) */
-  if (!(g->tick & 3))
-    for (unsigned k = 0; k < g->nli;) {
-      Listener *l = &g->li[k];
-      if (l->kind == TR_COLLISION && colblock_hit(g, l->a, l->b)) {
-        unsigned t = l->target, on = l->on;
-        g->li[k] = g->li[--g->nli];
-        activate(g, t, on);
-        continue;
-      }
-      k++;
-    }
-  for (unsigned c = 0; c < x->ndyn && c < MAX_CHANNELS; c++) chan_ease(&g->ch[c]);
-}
-
-/* Pulse strength 0..1 at its current time. */
-float pulse_level(const PulseAction *p) {
-  if (p->t < p->tin) return p->tin ? (float)p->t / p->tin : 1;
-  if (p->t <= p->tin + p->hold) return 1;
-  return p->tout ? 1 - (float)(p->t - p->tin - p->hold) / p->tout : 0;
+  float r = in[0] / 255.0f, gg = in[1] / 255.0f, b = in[2] / 255.0f;
+  float mx = fmaxf(r, fmaxf(gg, b)), mn = fminf(r, fminf(gg, b)), d = mx - mn, hue = 0;
+  if (d > 1e-6f) {
+    if (mx == r) hue = fmodf((gg - b) / d, 6.0f);
+    else if (mx == gg) hue = (b - r) / d + 2;
+    else hue = (r - gg) / d + 4;
+    hue *= 60;
+  }
+  float sat = mx > 0 ? d / mx : 0, val = mx;
+  hue = fmodf(hue + h, 360.0f);
+  if (hue < 0) hue += 360;
+  sat = (flags & CHF_SADD) ? sat + s64 / 64.0f : sat * s64 / 64.0f;
+  val = (flags & CHF_VADD) ? val + v64 / 64.0f : val * v64 / 64.0f;
+  sat = sat < 0 ? 0 : sat > 1 ? 1 : sat;
+  val = val < 0 ? 0 : val > 1 ? 1 : val;
+  float c = val * sat, x = c * (1 - fabsf(fmodf(hue / 60, 2) - 1)), m = val - c, rr, g2, bb;
+  if (hue < 60) { rr = c; g2 = x; bb = 0; }
+  else if (hue < 120) { rr = x; g2 = c; bb = 0; }
+  else if (hue < 180) { rr = 0; g2 = c; bb = x; }
+  else if (hue < 240) { rr = 0; g2 = x; bb = c; }
+  else if (hue < 300) { rr = x; g2 = 0; bb = c; }
+  else { rr = c; g2 = 0; bb = x; }
+  out[0] = (uint8_t)((rr + m) * 255 + 0.5f);
+  out[1] = (uint8_t)((g2 + m) * 255 + 0.5f);
+  out[2] = (uint8_t)((bb + m) * 255 + 0.5f);
 }
diff --git a/games/numdash/src/ui.c b/games/numdash/src/ui.c
index e95994e..ed1017a 100644
--- a/games/numdash/src/ui.c
+++ b/games/numdash/src/ui.c
@@ -2,7 +2,7 @@
 #include <math.h>
 
 void ui_gradient_bg(color_t c) {
-  /* GJ_gradientBG: white at the top fading to 44% grey, tinted */
+  /* tinted gradient, lighter at the top */
   gfx_vgrad(0, 0, GFX_W, GFX_H, c, c_scale(c, 113));
 }
 
@@ -29,8 +29,8 @@ static void box(int x, int y, int w, int h, int r, color_t body, color_t hi, col
   gfx_blend(x + r, y + 5, w - 2 * r, 2, hi, 110);
 }
 
-void ui_window_brown(int x, int y, int w, int h) { box(x, y, w, h, 7, rgb(153, 85, 51), rgb(187, 118, 60), rgb(85, 51, 17)); }
-void ui_window_blue(int x, int y, int w, int h) { box(x, y, w, h, 7, rgb(51, 68, 153), rgb(70, 72, 187), rgb(17, 17, 85)); }
+void ui_window_brown(int x, int y, int w, int h) { box(x, y, w, h, 7, rgb(74, 42, 110), rgb(110, 70, 160), rgb(34, 16, 58)); }
+void ui_window_blue(int x, int y, int w, int h) { box(x, y, w, h, 7, rgb(20, 92, 96), rgb(40, 140, 140), rgb(6, 40, 44)); }
 void ui_window_dark(int x, int y, int w, int h, unsigned alpha) { gfx_round_rect(x, y, w, h, 6, 0, alpha); }
 
 void ui_window_navy(int x, int y, int w, int h) {
@@ -52,7 +52,7 @@ void ui_window_navy(int x, int y, int w, int h) {
 void ui_text_button(int cx, int cy, int w, int h, const char *s, int style, float scale) {
   const int font = h >= 24 ? FONT_BIG : FONT_SMALL;
   static const uint8_t cols[4][2][3] = {
-    {{190, 255, 80}, {60, 170, 0}}, {{130, 255, 255}, {0, 160, 210}}, {{255, 150, 255}, {210, 40, 210}}, {{200, 200, 200}, {110, 110, 110}}};
+    {{255, 180, 156}, {196, 64, 42}}, {{166, 255, 242}, {17, 122, 114}}, {{255, 194, 221}, {184, 48, 106}}, {{200, 200, 200}, {110, 110, 110}}};
   w = (int)(w * scale);
   h = (int)(h * scale);
   int x = cx - w / 2, y = cy - h / 2;
@@ -87,7 +87,7 @@ void ui_checkbox(int cx, int cy, bool on, float scale) { ui_sprite(on ? SPR_CHEC
 
 void ui_top_bar(int cy, bool center) {
   const int x0 = 46, x1 = 274, y0 = cy - 14, y1 = cy + 7;
-  color_t lime_t = rgb(190, 242, 72), lime_b = rgb(80, 150, 30), cyan_t = rgb(120, 250, 250), cyan_b = rgb(0, 170, 180);
+  color_t lime_t = rgb(255, 180, 156), lime_b = rgb(196, 64, 42), cyan_t = rgb(166, 255, 242), cyan_b = rgb(17, 122, 114);
   gfx_round_rect(x0 - 3, y0 - 3, x1 - x0 + 6, y1 - y0 + 5, 4, rgb(24, 75, 153), 200);
   gfx_round_rect(x0 - 2, y0 - 2, x1 - x0 + 4, y1 - y0 + 3, 3, rgb(242, 245, 250), 256);
   gfx_fill(x0, y0, x1 - x0, y1 - y0, 0);
@@ -115,7 +115,7 @@ void ui_nav_dots(int cx, int cy, int n, int cur) {
   int x = cx - (n - 1) * step / 2;
   for (int i = 0; i < n; i++, x += step) {
     gfx_disc(x * 16, cy * 16, 4 * 16, 0, 200, BLEND_NORMAL);
-    gfx_disc(x * 16, cy * 16, 3 * 16, i == cur ? rgb(0, 255, 255) : rgb(125, 125, 125), 256, BLEND_NORMAL);
+    gfx_disc(x * 16, cy * 16, 3 * 16, i == cur ? rgb(255, 122, 89) : rgb(125, 125, 125), 256, BLEND_NORMAL);
   }
 }
 
diff --git a/games/numdash/src/ui.h b/games/numdash/src/ui.h
index 431c729..38136e7 100644
--- a/games/numdash/src/ui.h
+++ b/games/numdash/src/ui.h
@@ -3,10 +3,10 @@
 #include "gfx.h"
 #include <stdbool.h>
 
-/* Widgets in the style of Geometry Dash's menus. */
+/* NumDash's menu widgets (Calcade, 19 octobre 2026: its own colours). */
 enum { BTN_GREEN, BTN_CYAN, BTN_PINK, BTN_GRAY };
-#define GOLD_TOP rgb(255, 255, 140)
-#define GOLD_BOTTOM rgb(255, 170, 0)
+#define GOLD_TOP rgb(255, 246, 228)
+#define GOLD_BOTTOM rgb(255, 168, 128)
 
 void ui_gradient_bg(color_t c);
 void ui_dim(unsigned alpha256);
diff --git a/games/numdash/tests/replays/level1.txt b/games/numdash/tests/replays/level1.txt
index 385a9e9..ffb0c92 100644
--- a/games/numdash/tests/replays/level1.txt
+++ b/games/numdash/tests/replays/level1.txt
@@ -1,368 +1,114 @@
-input=381,1
-input=385,0
-input=733,1
-input=737,0
-input=1097,1
-input=1101,0
-input=1189,1
-input=1193,0
-input=1281,1
-input=1285,0
-input=1809,1
-input=1813,0
-input=1973,1
-input=1977,0
-input=2181,1
-input=2185,0
-input=2341,1
-input=2345,0
-input=2505,1
-input=2509,0
-input=2713,1
-input=2717,0
-input=2897,1
-input=2901,0
-input=2989,1
-input=2993,0
-input=3081,1
-input=3085,0
-input=3173,1
-input=3177,0
-input=3265,1
-input=3269,0
-input=3357,1
-input=3361,0
-input=3541,1
-input=3545,0
-input=3725,1
-input=3729,0
+input=193,1
+input=197,0
+input=513,1
+input=517,0
+input=677,1
+input=681,0
+input=781,1
+input=785,0
+input=913,1
+input=917,0
+input=1081,1
+input=1085,0
+input=1245,1
+input=1249,0
+input=1409,1
+input=1413,0
+input=1513,1
+input=1517,0
+input=1637,1
+input=1641,0
+input=1797,1
+input=1801,0
+input=1977,1
+input=1981,0
+input=2141,1
+input=2145,0
+input=2245,1
+input=2249,0
+input=2377,1
+input=2381,0
+input=2549,1
+input=2553,0
+input=2861,1
+input=2865,0
+input=3021,1
+input=3025,0
+input=3201,1
+input=3205,0
+input=3369,1
+input=3373,0
+input=3689,1
+input=3693,0
+input=3837,1
+input=3841,0
 input=4141,1
 input=4145,0
-input=4233,1
-input=4237,0
-input=4501,1
-input=4505,0
-input=4605,1
-input=4609,0
-input=4789,1
-input=4793,0
-input=4973,1
-input=4977,0
-input=5065,1
-input=5069,0
-input=5157,1
-input=5161,0
-input=5249,1
-input=5253,0
-input=5341,1
-input=5345,0
-input=7201,1
-input=7233,0
-input=7237,1
-input=7241,0
-input=7301,1
-input=7313,0
-input=7317,1
-input=7321,0
-input=7341,1
-input=7353,0
-input=7357,1
-input=7361,0
-input=7365,1
-input=7369,0
-input=7377,1
-input=7381,0
-input=7389,1
-input=7393,0
-input=7397,1
-input=7401,0
-input=7409,1
-input=7413,0
-input=7421,1
-input=7429,0
-input=7441,1
-input=7445,0
-input=7449,1
-input=7453,0
-input=7461,1
-input=7465,0
-input=7469,1
-input=7473,0
-input=7481,1
-input=7485,0
-input=7489,1
-input=7493,0
-input=7501,1
-input=7505,0
-input=7509,1
-input=7513,0
-input=7521,1
-input=7525,0
-input=7533,1
-input=7537,0
-input=7541,1
-input=7545,0
-input=7553,1
-input=7557,0
-input=7561,1
-input=7565,0
-input=7573,1
-input=7577,0
-input=7581,1
-input=7585,0
+input=4245,1
+input=4249,0
+input=4369,1
+input=4373,0
+input=4533,1
+input=4537,0
+input=4713,1
+input=4717,0
+input=4853,1
+input=4857,0
+input=4957,1
+input=4961,0
+input=5081,1
+input=5085,0
+input=5385,1
+input=5389,0
+input=5489,1
+input=5493,0
+input=5613,1
+input=5617,0
+input=5921,1
+input=5925,0
+input=6025,1
+input=6029,0
+input=6157,1
+input=6161,0
+input=6325,1
+input=6329,0
+input=6489,1
+input=6493,0
+input=6669,1
+input=6673,0
+input=6829,1
+input=6833,0
+input=6933,1
+input=6937,0
+input=7069,1
+input=7073,0
+input=7209,1
+input=7213,0
+input=7313,1
+input=7317,0
+input=7445,1
+input=7449,0
 input=7601,1
-input=7609,0
-input=7613,1
-input=7617,0
-input=7821,1
-input=7889,0
-input=8357,1
-input=8397,0
-input=8469,1
-input=8509,0
-input=8513,1
-input=8517,0
-input=8521,1
-input=8529,0
-input=8533,1
-input=8537,0
-input=8605,1
-input=8677,0
-input=9237,1
-input=9317,0
-input=9321,1
-input=9325,0
-input=10009,1
-input=10013,0
-input=10101,1
-input=10105,0
-input=10285,1
-input=10289,0
-input=10537,1
-input=10541,0
-input=10629,1
-input=10633,0
-input=10721,1
-input=10725,0
-input=10813,1
-input=10817,0
-input=10905,1
-input=10909,0
-input=10997,1
-input=11001,0
-input=11089,1
-input=11093,0
-input=11433,1
-input=11437,0
-input=11641,1
-input=11645,0
-input=12057,1
-input=12061,0
-input=12149,1
-input=12153,0
-input=12337,1
-input=12341,0
-input=12429,1
-input=12433,0
-input=12613,1
-input=12617,0
-input=12773,1
-input=12777,0
-input=12961,1
-input=12965,0
-input=13145,1
-input=13149,0
-input=13313,1
-input=13317,0
-input=13513,1
-input=13517,0
-input=13605,1
-input=13609,0
-input=13697,1
-input=13701,0
-input=13789,1
-input=13793,0
-input=14137,1
-input=14141,0
-input=14505,1
-input=14509,0
-input=14737,1
-input=14741,0
-input=14849,1
-input=14853,0
-input=14941,1
-input=14945,0
-input=15033,1
-input=15037,0
-input=15125,1
-input=15129,0
-input=15461,1
-input=15465,0
-input=15553,1
-input=15557,0
-input=15669,1
-input=15673,0
-input=15933,1
-input=15937,0
-input=16101,1
-input=16105,0
-input=16373,1
-input=16377,0
-input=16465,1
-input=16469,0
-input=16569,1
-input=16573,0
-input=16697,1
-input=16701,0
-input=16789,1
-input=16793,0
-input=17017,1
-input=17021,0
-input=17109,1
-input=17113,0
-input=17273,1
-input=17277,0
-input=17389,1
-input=17393,0
-input=17481,1
-input=17485,0
-input=17617,1
-input=17621,0
-input=17881,1
-input=17949,0
-input=17969,1
-input=17973,0
-input=18205,1
-input=18249,0
-input=18265,1
-input=18281,0
-input=18285,1
-input=18289,0
-input=18297,1
-input=18317,0
-input=18321,1
-input=18365,0
-input=18369,1
-input=18381,0
-input=18385,1
-input=18389,0
-input=18605,1
-input=18697,0
-input=18701,1
-input=18713,0
-input=18717,1
-input=18721,0
-input=18725,1
-input=18729,0
-input=18897,1
-input=18945,0
-input=18949,1
-input=18961,0
-input=18969,1
-input=18977,0
-input=18981,1
-input=18985,0
-input=18993,1
-input=18997,0
-input=19001,1
-input=19005,0
-input=19009,1
-input=19013,0
-input=19025,1
-input=19033,0
-input=19045,1
-input=19049,0
-input=19053,1
-input=19057,0
-input=19061,1
-input=19065,0
-input=19073,1
-input=19077,0
-input=19085,1
-input=19089,0
-input=19093,1
-input=19097,0
-input=19105,1
-input=19109,0
-input=19113,1
-input=19117,0
-input=19125,1
-input=19129,0
-input=19133,1
-input=19137,0
-input=19145,1
-input=19149,0
-input=19157,1
-input=19161,0
-input=19165,1
-input=19169,0
-input=19177,1
-input=19181,0
-input=19185,1
-input=19189,0
-input=19197,1
-input=19201,0
-input=19205,1
-input=19209,0
-input=19217,1
-input=19221,0
-input=19229,1
-input=19237,0
-input=19249,1
-input=19253,0
-input=19261,1
-input=19269,0
-input=19281,1
-input=19289,0
-input=19301,1
-input=19305,0
-input=19309,1
-input=19313,0
-input=19321,1
-input=19325,0
-input=19329,1
-input=19333,0
-input=19341,1
-input=19345,0
-input=19349,1
-input=19353,0
-input=19361,1
-input=19365,0
-input=19369,1
-input=19373,0
-input=19377,1
-input=19393,0
-input=19397,1
-input=19401,0
-input=19405,1
-input=19413,0
-input=19417,1
-input=19421,0
-input=19425,1
-input=19433,0
-input=19437,1
-input=19441,0
-input=19445,1
-input=19453,0
-input=19457,1
-input=19469,0
-input=19545,1
-input=19569,0
-input=19577,1
-input=19581,0
-input=19585,1
-input=19589,0
-input=19597,1
-input=19601,0
-input=19609,1
-input=19613,0
-input=19617,1
-input=19621,0
-input=19649,1
-input=19721,0
-input=19825,1
-input=19853,0
-input=19909,1
-input=19985,0
-input=19989,1
-input=19997,0
+input=7605,0
+input=7765,1
+input=7769,0
+input=7869,1
+input=7873,0
+input=8001,1
+input=8005,0
+input=8169,1
+input=8173,0
+input=8489,1
+input=8493,0
+input=8657,1
+input=8661,0
+input=8981,1
+input=8985,0
+input=9137,1
+input=9141,0
+input=9297,1
+input=9301,0
+input=9401,1
+input=9405,0
+input=9537,1
+input=9541,0
diff --git a/games/numdash/tests/replays/level10.txt b/games/numdash/tests/replays/level10.txt
index f64d3c7..0d24bc9 100644
--- a/games/numdash/tests/replays/level10.txt
+++ b/games/numdash/tests/replays/level10.txt
@@ -1,616 +1,240 @@
-input=237,1
-input=241,0
-input=473,1
-input=477,0
-input=521,1
-input=525,0
-input=661,1
-input=665,0
-input=669,1
-input=673,0
-input=677,1
-input=709,0
-input=721,1
-input=725,0
-input=745,1
-input=749,0
-input=757,1
-input=765,0
-input=781,1
-input=789,0
-input=837,1
-input=841,0
-input=857,1
-input=861,0
-input=945,1
-input=949,0
-input=1117,1
-input=1121,0
-input=1225,1
-input=1229,0
-input=1289,1
-input=1293,0
-input=1385,1
-input=1389,0
-input=1565,1
-input=1569,0
-input=1669,1
-input=1673,0
-input=1737,1
-input=1741,0
-input=1793,1
-input=1797,0
-input=1857,1
-input=1861,0
-input=2009,1
-input=2013,0
-input=2121,1
-input=2125,0
-input=2161,1
-input=2165,0
-input=2193,1
-input=2197,0
-input=2297,1
-input=2301,0
-input=2409,1
-input=2413,0
+input=201,1
+input=205,0
+input=289,1
+input=293,0
+input=481,1
+input=485,0
+input=613,1
+input=617,0
+input=709,1
+input=713,0
+input=889,1
+input=893,0
+input=1073,1
+input=1077,0
+input=1177,1
+input=1181,0
+input=1353,1
+input=1357,0
+input=1541,1
+input=1545,0
+input=1645,1
+input=1649,0
+input=1785,1
+input=1789,0
+input=1889,1
+input=1893,0
+input=2025,1
+input=2029,0
+input=2109,1
+input=2113,0
+input=2313,1
+input=2317,0
 input=2481,1
 input=2485,0
-input=2609,1
-input=2613,0
-input=2721,1
-input=2725,0
-input=2765,1
-input=2769,0
-input=3065,1
-input=3069,0
-input=3329,1
-input=3333,0
-input=3517,1
-input=3521,0
-input=3589,1
-input=3593,0
-input=3725,1
-input=3729,0
-input=3937,1
-input=3941,0
-input=4133,1
-input=4137,0
-input=4201,1
-input=4205,0
-input=4417,1
-input=4421,0
-input=4641,1
-input=4645,0
-input=5401,1
-input=5453,0
-input=5461,1
-input=5481,0
-input=5485,1
-input=5533,0
-input=5537,1
-input=5541,0
-input=5549,1
-input=5553,0
-input=5829,1
-input=5845,0
-input=5849,1
-input=5861,0
-input=5973,1
-input=6041,0
-input=6053,1
-input=6065,0
-input=6085,1
-input=6093,0
-input=6097,1
-input=6101,0
-input=6113,1
-input=6125,0
-input=6129,1
-input=6137,0
-input=6245,1
-input=6333,0
-input=6541,1
-input=6593,0
-input=6653,1
-input=6685,0
-input=6697,1
-input=6709,0
-input=6721,1
-input=6761,0
-input=6873,1
-input=6921,0
-input=7293,1
-input=7297,0
-input=7381,1
-input=7385,0
-input=7429,1
-input=7433,0
-input=7469,1
-input=7473,0
-input=7517,1
-input=7525,0
-input=7533,1
-input=7537,0
-input=7693,1
-input=7697,0
-input=7829,1
-input=7833,0
-input=7869,1
-input=7873,0
-input=7877,1
-input=7881,0
-input=7885,1
-input=7889,0
-input=7897,1
-input=7901,0
-input=7909,1
-input=7913,0
-input=7921,1
-input=7929,0
-input=7937,1
-input=7941,0
-input=7957,1
-input=7961,0
-input=7969,1
-input=7973,0
-input=8073,1
-input=8077,0
-input=8265,1
-input=8269,0
-input=8301,1
-input=8305,0
-input=8313,1
-input=8321,0
-input=8341,1
-input=8357,0
-input=8381,1
-input=8389,0
-input=8573,1
-input=8577,0
-input=8669,1
-input=8673,0
-input=8757,1
-input=8761,0
-input=8849,1
-input=8853,0
-input=8881,1
-input=8889,0
-input=8913,1
-input=8917,0
-input=9189,1
-input=9193,0
-input=9309,1
-input=9313,0
-input=9349,1
-input=9353,0
-input=9361,1
-input=9365,0
-input=9377,1
-input=9381,0
-input=9389,1
-input=9393,0
-input=9469,1
-input=9473,0
-input=9613,1
-input=9617,0
-input=9777,1
-input=9781,0
-input=9893,1
-input=9897,0
-input=9985,1
-input=9989,0
-input=10125,1
-input=10129,0
-input=10341,1
-input=10345,0
-input=10409,1
-input=10413,0
-input=10461,1
-input=10465,0
-input=10593,1
-input=10597,0
-input=10749,1
-input=10753,0
-input=10905,1
-input=10909,0
-input=10921,1
-input=10925,0
-input=11021,1
-input=11025,0
-input=11117,1
-input=11121,0
-input=11133,1
-input=11137,0
-input=11141,1
-input=11265,0
-input=11285,1
-input=11317,0
-input=11393,1
-input=11397,0
-input=11401,1
-input=11477,0
-input=11505,1
-input=11509,0
-input=11513,1
-input=11525,0
-input=11537,1
-input=11541,0
-input=11545,1
-input=11657,0
-input=11669,1
-input=11673,0
-input=11685,1
-input=11689,0
-input=11701,1
-input=11713,0
-input=11721,1
-input=11733,0
-input=11749,1
-input=11753,0
-input=11765,1
-input=11773,0
-input=11777,1
-input=11797,0
-input=11805,1
-input=11809,0
-input=11813,1
-input=11817,0
-input=11821,1
-input=11829,0
-input=11833,1
-input=11837,0
-input=11841,1
-input=11869,0
-input=11889,1
-input=11897,0
-input=11905,1
-input=11909,0
-input=11917,1
-input=11925,0
-input=11929,1
-input=11937,0
-input=11949,1
-input=11953,0
-input=11961,1
-input=11973,0
-input=11977,1
-input=11981,0
-input=12001,1
-input=12005,0
-input=12013,1
-input=12017,0
-input=12033,1
-input=12041,0
-input=12085,1
-input=12093,0
-input=12113,1
-input=12117,0
-input=12217,1
-input=12221,0
-input=12297,1
-input=12301,0
-input=12349,1
-input=12353,0
-input=12461,1
-input=12465,0
-input=12477,1
-input=12481,0
-input=12485,1
-input=12489,0
+input=2645,1
+input=2649,0
+input=2825,1
+input=2829,0
+input=2909,1
+input=2913,0
+input=3113,1
+input=3117,0
+input=3489,1
+input=3497,0
+input=3665,1
+input=3669,0
+input=3833,1
+input=3837,0
+input=3901,1
+input=3905,0
+input=3997,1
+input=4001,0
+input=4177,1
+input=4185,0
+input=4377,1
+input=4385,0
+input=4577,1
+input=4581,0
+input=4745,1
+input=4749,0
+input=4813,1
+input=4821,0
+input=4909,1
+input=4913,0
+input=5089,1
+input=5093,0
+input=5977,1
+input=5993,0
+input=5997,1
+input=6013,0
+input=6017,1
+input=6021,0
+input=6025,1
+input=6029,0
+input=6033,1
+input=6037,0
+input=6785,1
+input=6813,0
+input=6817,1
+input=6821,0
+input=6825,1
+input=6829,0
+input=6833,1
+input=6837,0
+input=6893,1
+input=6905,0
+input=6909,1
+input=6913,0
+input=6917,1
+input=6933,0
+input=6937,1
+input=6945,0
+input=6949,1
+input=6953,0
+input=6957,1
+input=6961,0
+input=6965,1
+input=6969,0
+input=7041,1
+input=7065,0
+input=7069,1
+input=7077,0
+input=7081,1
+input=7085,0
+input=7089,1
+input=7093,0
+input=7097,1
+input=7101,0
+input=7177,1
+input=7193,0
+input=7197,1
+input=7213,0
+input=7217,1
+input=7221,0
+input=7225,1
+input=7229,0
+input=7233,1
+input=7237,0
+input=7301,1
+input=7317,0
+input=7321,1
+input=7325,0
+input=7329,1
+input=7345,0
+input=7349,1
+input=7353,0
+input=7357,1
+input=7361,0
+input=7365,1
+input=7369,0
+input=7717,1
+input=7745,0
+input=7749,1
+input=7753,0
+input=7757,1
+input=7761,0
+input=7765,1
+input=7769,0
+input=8389,1
+input=8393,0
+input=8565,1
+input=8569,0
+input=8741,1
+input=8745,0
+input=8921,1
+input=8925,0
+input=9097,1
+input=9101,0
+input=9277,1
+input=9281,0
+input=9453,1
+input=9457,0
+input=9633,1
+input=9637,0
+input=9809,1
+input=9813,0
+input=9989,1
+input=9993,0
+input=10165,1
+input=10169,0
+input=10345,1
+input=10349,0
+input=10521,1
+input=10525,0
+input=10697,1
+input=10701,0
+input=11181,1
+input=11185,0
+input=11329,1
+input=11333,0
+input=11693,1
+input=11697,0
+input=11837,1
+input=11841,0
+input=12189,1
+input=12193,0
+input=12293,1
+input=12297,0
 input=12505,1
 input=12509,0
-input=12549,1
-input=12553,0
-input=13037,1
-input=13041,0
-input=13117,1
-input=13121,0
-input=13261,1
-input=13265,0
-input=13309,1
-input=13313,0
-input=13365,1
-input=13369,0
-input=13373,1
-input=13381,0
-input=13653,1
-input=13689,0
-input=13693,1
-input=13705,0
-input=13709,1
-input=13721,0
-input=13725,1
-input=13741,0
-input=13753,1
-input=13765,0
-input=13773,1
-input=13789,0
-input=13809,1
-input=13849,0
-input=13853,1
-input=13865,0
-input=13869,1
-input=13877,0
-input=13885,1
-input=13901,0
-input=13905,1
-input=13925,0
-input=13969,1
-input=14009,0
-input=14013,1
-input=14017,0
-input=14317,1
-input=14321,0
-input=14409,1
-input=14413,0
-input=14421,1
-input=14425,0
-input=14433,1
-input=14437,0
-input=14445,1
-input=14449,0
-input=14453,1
-input=14461,0
-input=14469,1
-input=14473,0
-input=14633,1
-input=14637,0
-input=14749,1
-input=14753,0
-input=14873,1
-input=14877,0
-input=14885,1
-input=14889,0
-input=15005,1
-input=15009,0
-input=15141,1
-input=15145,0
-input=15321,1
-input=15377,0
-input=15381,1
-input=15393,0
-input=15405,1
-input=15413,0
-input=15417,1
-input=15421,0
-input=15441,1
-input=15445,0
-input=15465,1
-input=15469,0
-input=15481,1
-input=15489,0
-input=15497,1
-input=15517,0
-input=15521,1
-input=15525,0
-input=15533,1
-input=15537,0
-input=15565,1
-input=15569,0
-input=15573,1
-input=15581,0
-input=15585,1
-input=15589,0
-input=15593,1
-input=15597,0
-input=15601,1
-input=15605,0
-input=15609,1
-input=15625,0
-input=15633,1
-input=15637,0
-input=15685,1
-input=15765,0
-input=15945,1
-input=15949,0
-input=15997,1
-input=16021,0
-input=16177,1
-input=16189,0
-input=16193,1
-input=16197,0
-input=16201,1
-input=16213,0
-input=16305,1
-input=16313,0
-input=16317,1
-input=16341,0
-input=16345,1
-input=16349,0
-input=16357,1
-input=16377,0
-input=16397,1
-input=16405,0
-input=16409,1
-input=16413,0
-input=16421,1
-input=16425,0
-input=16433,1
-input=16437,0
-input=16441,1
-input=16445,0
-input=16453,1
-input=16457,0
-input=16461,1
-input=16465,0
-input=16473,1
-input=16477,0
-input=16481,1
-input=16505,0
-input=16509,1
-input=16537,0
-input=16545,1
-input=16561,0
-input=16565,1
-input=16585,0
-input=16613,1
+input=12777,1
+input=12781,0
+input=12965,1
+input=12969,0
+input=12989,1
+input=12993,0
+input=13029,1
+input=13033,0
+input=13069,1
+input=13073,0
+input=13157,1
+input=13161,0
+input=13357,1
+input=13361,0
+input=13641,1
+input=13645,0
+input=13913,1
+input=13917,0
+input=13981,1
+input=13985,0
+input=14173,1
+input=14177,0
+input=14305,1
+input=14309,0
+input=14401,1
+input=14405,0
+input=16609,1
+input=16645,0
+input=16649,1
 input=16657,0
-input=16661,1
-input=16689,0
-input=16693,1
-input=16701,0
-input=16705,1
-input=16717,0
-input=16769,1
-input=16809,0
-input=16813,1
-input=16845,0
-input=16849,1
-input=16861,0
-input=16925,1
-input=16961,0
+input=16917,1
+input=16957,0
 input=16965,1
-input=16985,0
-input=16993,1
-input=16997,0
-input=17001,1
-input=17021,0
-input=17169,1
-input=17173,0
-input=17261,1
-input=17265,0
-input=17301,1
-input=17305,0
-input=17369,1
-input=17373,0
-input=17381,1
-input=17385,0
-input=17389,1
-input=17393,0
-input=17397,1
-input=17401,0
-input=17497,1
-input=17501,0
-input=17565,1
-input=17569,0
-input=17705,1
-input=17709,0
-input=17801,1
-input=17833,0
-input=17837,1
+input=16969,0
+input=17581,1
+input=17589,0
+input=17765,1
+input=17789,0
+input=17793,1
 input=17877,0
-input=17885,1
-input=17921,0
-input=17925,1
-input=17953,0
-input=17973,1
-input=17977,0
-input=17989,1
-input=17993,0
-input=18009,1
-input=18017,0
-input=18021,1
-input=18025,0
-input=18037,1
-input=18041,0
-input=18045,1
-input=18061,0
-input=18065,1
-input=18081,0
-input=18085,1
-input=18093,0
-input=18097,1
-input=18109,0
-input=18113,1
-input=18157,0
-input=18181,1
-input=18185,0
+input=18001,1
+input=18117,0
 input=18189,1
-input=18201,0
-input=18205,1
-input=18209,0
-input=18213,1
-input=18229,0
-input=18241,1
-input=18249,0
-input=18253,1
-input=18261,0
-input=18265,1
-input=18281,0
-input=18285,1
-input=18293,0
-input=18297,1
-input=18305,0
-input=18309,1
-input=18313,0
-input=18317,1
-input=18365,0
-input=18373,1
-input=18385,0
-input=18477,1
-input=18493,0
-input=18497,1
-input=18505,0
-input=18509,1
-input=18533,0
-input=18537,1
-input=18545,0
-input=18553,1
-input=18557,0
-input=18561,1
-input=18633,0
-input=18753,1
-input=18781,0
-input=18785,1
-input=18789,0
-input=18793,1
-input=18805,0
-input=18809,1
-input=18821,0
-input=18829,1
-input=18837,0
-input=18977,1
-input=18981,0
-input=19021,1
-input=19025,0
-input=19081,1
-input=19085,0
-input=19125,1
-input=19129,0
-input=19133,1
-input=19141,0
-input=19185,1
-input=19193,0
-input=19245,1
-input=19249,0
-input=19449,1
-input=19453,0
-input=19517,1
-input=19521,0
-input=19693,1
-input=19737,0
-input=19825,1
+input=18217,0
+input=18221,1
+input=18301,0
+input=18381,1
+input=18389,0
+input=18573,1
+input=18585,0
+input=18929,1
+input=18941,0
+input=19249,1
+input=19257,0
+input=19441,1
+input=19449,0
+input=19757,1
 input=19873,0
-input=19881,1
-input=19885,0
-input=19889,1
-input=19897,0
-input=19905,1
-input=19909,0
-input=19917,1
-input=19925,0
-input=19937,1
-input=19941,0
-input=19945,1
-input=19949,0
-input=19957,1
-input=19961,0
-input=19965,1
+input=19961,1
 input=19969,0
-input=20021,1
-input=20045,0
-input=20073,1
-input=20105,0
-input=20109,1
-input=20117,0
-input=20121,1
-input=20141,0
-input=20145,1
-input=20153,0
-input=20161,1
-input=20165,0
-input=20169,1
-input=20173,0
-input=20313,1
-input=20365,0
diff --git a/games/numdash/tests/replays/level11.txt b/games/numdash/tests/replays/level11.txt
index 78a24ac..ef5cb1e 100644
--- a/games/numdash/tests/replays/level11.txt
+++ b/games/numdash/tests/replays/level11.txt
@@ -1,672 +1,148 @@
-input=277,1
-input=281,0
-input=349,1
-input=353,0
-input=381,1
-input=385,0
-input=609,1
-input=613,0
-input=697,1
-input=745,0
-input=757,1
-input=761,0
-input=765,1
-input=777,0
-input=805,1
-input=809,0
-input=813,1
-input=817,0
-input=829,1
-input=833,0
-input=841,1
-input=845,0
-input=957,1
-input=961,0
-input=1017,1
-input=1021,0
-input=1097,1
-input=1101,0
-input=1145,1
-input=1149,0
-input=1229,1
-input=1233,0
-input=1257,1
-input=1261,0
-input=1357,1
-input=1361,0
-input=1461,1
-input=1481,0
-input=1561,1
-input=1569,0
-input=1589,1
-input=1593,0
+input=265,1
+input=269,0
+input=397,1
+input=401,0
+input=537,1
+input=541,0
+input=681,1
+input=685,0
+input=737,1
+input=741,0
+input=889,1
+input=893,0
+input=1149,1
+input=1153,0
+input=1201,1
+input=1205,0
+input=1361,1
+input=1365,0
+input=1525,1
+input=1529,0
 input=1597,1
 input=1601,0
-input=1605,1
-input=1645,0
-input=1857,1
-input=1861,0
-input=1893,1
-input=1897,0
-input=1973,1
-input=1977,0
-input=2013,1
-input=2017,0
-input=2029,1
-input=2033,0
-input=2077,1
-input=2101,0
-input=2237,1
-input=2241,0
-input=2381,1
-input=2385,0
-input=2445,1
-input=2449,0
-input=2457,1
-input=2469,0
-input=2685,1
-input=2713,0
-input=2853,1
-input=2857,0
-input=2949,1
-input=2953,0
-input=3217,1
-input=3221,0
-input=3341,1
-input=3345,0
-input=3509,1
-input=3533,0
-input=3549,1
-input=3565,0
-input=3581,1
-input=3597,0
-input=3613,1
-input=3689,0
-input=3865,1
-input=3933,0
-input=3949,1
-input=3965,0
-input=3981,1
-input=3997,0
-input=4013,1
-input=4029,0
+input=1757,1
+input=1761,0
+input=1885,1
+input=1889,0
+input=1989,1
+input=1993,0
+input=2161,1
+input=2165,0
+input=2377,1
+input=2381,0
+input=2509,1
+input=2513,0
+input=2653,1
+input=2657,0
+input=2725,1
+input=2729,0
+input=2885,1
+input=2889,0
+input=3037,1
+input=3041,0
+input=3361,1
+input=3365,0
+input=3577,1
+input=3581,0
 input=4205,1
-input=4257,0
-input=4321,1
-input=4405,0
-input=4525,1
-input=4533,0
-input=4541,1
-input=4553,0
-input=4557,1
-input=4569,0
-input=4573,1
-input=4613,0
-input=4621,1
-input=4633,0
-input=4641,1
-input=4685,0
-input=4705,1
-input=4733,0
-input=4737,1
-input=4745,0
-input=4893,1
-input=4897,0
-input=4905,1
-input=4917,0
-input=4921,1
-input=4933,0
-input=4941,1
-input=4953,0
-input=4957,1
-input=4965,0
-input=4969,1
-input=4985,0
-input=4989,1
-input=4993,0
-input=5001,1
-input=5009,0
-input=5013,1
-input=5025,0
-input=5029,1
-input=5033,0
-input=5057,1
-input=5121,0
-input=5313,1
-input=5317,0
-input=5453,1
-input=5457,0
-input=5653,1
-input=5657,0
-input=5697,1
-input=5701,0
-input=5845,1
-input=5849,0
-input=6005,1
-input=6009,0
-input=6069,1
-input=6073,0
-input=6125,1
-input=6129,0
-input=6137,1
-input=6141,0
-input=6201,1
-input=6205,0
-input=6449,1
-input=6453,0
-input=6465,1
-input=6469,0
-input=6481,1
-input=6485,0
-input=6489,1
-input=6501,0
-input=6505,1
-input=6509,0
-input=6513,1
-input=6517,0
-input=6525,1
+input=4245,0
+input=4249,1
+input=4253,0
+input=4341,1
+input=4373,0
+input=4389,1
+input=4397,0
+input=6409,1
+input=6421,0
+input=6517,1
 input=6529,0
-input=6753,1
-input=6757,0
-input=6797,1
-input=6801,0
-input=6809,1
-input=6813,0
-input=6821,1
-input=6825,0
-input=6985,1
-input=6989,0
+input=6621,1
+input=6637,0
+input=6729,1
+input=6745,0
+input=6837,1
+input=6853,0
+input=6945,1
+input=6961,0
 input=7053,1
-input=7057,0
-input=7145,1
-input=7149,0
-input=7405,1
-input=7409,0
-input=7485,1
-input=7489,0
+input=7065,0
+input=7161,1
+input=7173,0
+input=7269,1
+input=7281,0
+input=7377,1
+input=7389,0
+input=7481,1
+input=7497,0
 input=7589,1
-input=7593,0
-input=7689,1
-input=7693,0
-input=7757,1
-input=7773,0
-input=7821,1
-input=7825,0
-input=7893,1
-input=7901,0
-input=8185,1
-input=8197,0
-input=8289,1
-input=8301,0
-input=8617,1
-input=8621,0
-input=8685,1
-input=8689,0
-input=8753,1
-input=8757,0
-input=8813,1
-input=8817,0
-input=8869,1
-input=8873,0
-input=9001,1
-input=9005,0
-input=9061,1
-input=9065,0
-input=9105,1
-input=9109,0
-input=9277,1
-input=9281,0
-input=9389,1
-input=9393,0
-input=9537,1
-input=9541,0
-input=9589,1
-input=9593,0
-input=9885,1
-input=9889,0
-input=9925,1
-input=9929,0
-input=10089,1
-input=10093,0
-input=10185,1
-input=10189,0
-input=10517,1
-input=10521,0
-input=10645,1
-input=10649,0
-input=10969,1
-input=10973,0
-input=11053,1
-input=11057,0
-input=11189,1
-input=11193,0
-input=11265,1
-input=11269,0
-input=11385,1
-input=11389,0
-input=11601,1
-input=11605,0
-input=11697,1
-input=11701,0
-input=11765,1
-input=11769,0
-input=11881,1
-input=11885,0
-input=12017,1
-input=12033,0
-input=12185,1
-input=12193,0
-input=12261,1
-input=12265,0
-input=12381,1
-input=12385,0
-input=12477,1
-input=12485,0
-input=12697,1
-input=12701,0
-input=12749,1
-input=12753,0
-input=12873,1
-input=12877,0
-input=13061,1
-input=13089,0
-input=13169,1
-input=13177,0
-input=13245,1
-input=13249,0
-input=13333,1
-input=13337,0
-input=13421,1
-input=13425,0
-input=13513,1
-input=13517,0
-input=13609,1
-input=13613,0
-input=13697,1
-input=13733,0
-input=13741,1
-input=13749,0
-input=13769,1
-input=13773,0
-input=13777,1
-input=13781,0
-input=13785,1
-input=13793,0
-input=13797,1
-input=13801,0
-input=13809,1
-input=13813,0
-input=13817,1
-input=13821,0
-input=13873,1
-input=13913,0
-input=13921,1
-input=13961,0
-input=14133,1
-input=14153,0
-input=14157,1
-input=14169,0
-input=14177,1
-input=14189,0
-input=14193,1
-input=14201,0
-input=14209,1
-input=14217,0
-input=14221,1
-input=14225,0
-input=14229,1
-input=14233,0
-input=14237,1
-input=14253,0
-input=14257,1
-input=14261,0
-input=14265,1
-input=14281,0
-input=14285,1
-input=14289,0
-input=14297,1
-input=14317,0
-input=14529,1
-input=14549,0
-input=14597,1
-input=14621,0
-input=14625,1
-input=14637,0
-input=14641,1
-input=14645,0
-input=14653,1
-input=14665,0
-input=14669,1
-input=14689,0
-input=14693,1
-input=14713,0
-input=14717,1
-input=14725,0
-input=14729,1
-input=14749,0
-input=14753,1
-input=14761,0
-input=14769,1
-input=14785,0
-input=14949,1
-input=14989,0
-input=15001,1
-input=15025,0
-input=15029,1
-input=15033,0
-input=15041,1
-input=15061,0
-input=15065,1
-input=15069,0
-input=15077,1
-input=15097,0
-input=15105,1
-input=15109,0
-input=15113,1
-input=15121,0
-input=15129,1
-input=15133,0
-input=15141,1
-input=15173,0
-input=15213,1
-input=15229,0
-input=15389,1
-input=15393,0
-input=15549,1
-input=15553,0
-input=15705,1
-input=15709,0
-input=15801,1
-input=15805,0
-input=15953,1
-input=15957,0
-input=16049,1
-input=16053,0
-input=16069,1
-input=16073,0
-input=16077,1
-input=16081,0
-input=16085,1
-input=16089,0
-input=16093,1
-input=16097,0
-input=16101,1
-input=16109,0
-input=16297,1
-input=16301,0
-input=16425,1
-input=16429,0
-input=16529,1
-input=16533,0
-input=16645,1
-input=16649,0
-input=16801,1
-input=16805,0
-input=16913,1
-input=16917,0
-input=16921,1
-input=16925,0
-input=16937,1
-input=16941,0
-input=16945,1
-input=16949,0
-input=17241,1
-input=17253,0
-input=17273,1
-input=17285,0
-input=17305,1
-input=17317,0
-input=17333,1
-input=17345,0
-input=17365,1
-input=17377,0
-input=17397,1
-input=17409,0
-input=17437,1
-input=17485,0
-input=17501,1
-input=17513,0
-input=17529,1
-input=17545,0
-input=17557,1
-input=17573,0
-input=17589,1
-input=17605,0
-input=17621,1
-input=17637,0
-input=17677,1
-input=17685,0
-input=17689,1
-input=17693,0
-input=17701,1
-input=17725,0
-input=17729,1
-input=17749,0
-input=17753,1
-input=17773,0
-input=17777,1
-input=17793,0
-input=17797,1
-input=17813,0
-input=17817,1
-input=17845,0
-input=17849,1
-input=17865,0
-input=17881,1
-input=17885,0
-input=17977,1
-input=18061,0
-input=18117,1
-input=18145,0
-input=18177,1
-input=18205,0
-input=18233,1
-input=18261,0
-input=18361,1
-input=18437,0
-input=18493,1
-input=18549,0
-input=18577,1
-input=18633,0
-input=18693,1
-input=18705,0
-input=18709,1
-input=18717,0
-input=18721,1
-input=18725,0
-input=18733,1
-input=18737,0
-input=18749,1
-input=18761,0
-input=18765,1
-input=18773,0
-input=18777,1
-input=18781,0
-input=18789,1
-input=18793,0
-input=18805,1
-input=18813,0
-input=18817,1
-input=18825,0
-input=18857,1
-input=18897,0
-input=18905,1
-input=18921,0
-input=18925,1
-input=18941,0
-input=18949,1
-input=18957,0
-input=18961,1
-input=18965,0
-input=18969,1
-input=19041,0
-input=19049,1
-input=19061,0
-input=19069,1
-input=19077,0
-input=19085,1
-input=19089,0
-input=19093,1
-input=19097,0
-input=19105,1
-input=19113,0
-input=19169,1
-input=19173,0
-input=19197,1
-input=19205,0
-input=19209,1
-input=19217,0
-input=19221,1
-input=19225,0
-input=19229,1
-input=19237,0
-input=19253,1
-input=19265,0
-input=19273,1
-input=19281,0
-input=19285,1
-input=19289,0
-input=19293,1
-input=19309,0
-input=19313,1
-input=19317,0
-input=19325,1
-input=19329,0
-input=19345,1
-input=19349,0
-input=19353,1
-input=19357,0
-input=19361,1
-input=19409,0
-input=19417,1
-input=19421,0
-input=19509,1
-input=19541,0
-input=19545,1
-input=19557,0
-input=19561,1
-input=19569,0
-input=19577,1
-input=19593,0
-input=19605,1
-input=19613,0
-input=19625,1
-input=19637,0
-input=19645,1
-input=19661,0
-input=19673,1
-input=19681,0
-input=19737,1
-input=19765,0
-input=19777,1
-input=19785,0
-input=19841,1
-input=19857,0
-input=19861,1
-input=19865,0
-input=19869,1
-input=19877,0
-input=19885,1
-input=19929,0
-input=19933,1
-input=19937,0
-input=19941,1
-input=19945,0
-input=19953,1
-input=19957,0
-input=19961,1
-input=19965,0
-input=19973,1
-input=19977,0
-input=19981,1
-input=19989,0
-input=20005,1
-input=20017,0
-input=20021,1
-input=20029,0
-input=20033,1
-input=20037,0
-input=20049,1
-input=20065,0
-input=20145,1
-input=20149,0
-input=20165,1
-input=20173,0
-input=20241,1
-input=20249,0
-input=20253,1
-input=20317,0
-input=20329,1
-input=20333,0
-input=20337,1
-input=20353,0
-input=20361,1
-input=20393,0
-input=20401,1
-input=20405,0
-input=20625,1
-input=20629,0
-input=20697,1
-input=20701,0
-input=20773,1
-input=20777,0
-input=20865,1
-input=20869,0
-input=20909,1
-input=20913,0
-input=21081,1
-input=21085,0
-input=21137,1
-input=21141,0
-input=21209,1
-input=21213,0
-input=21277,1
-input=21281,0
-input=21465,1
-input=21469,0
-input=21493,1
-input=21497,0
-input=21501,1
-input=21509,0
-input=21517,1
-input=21521,0
-input=21529,1
-input=21533,0
-input=21785,1
-input=21789,0
-input=21981,1
-input=21985,0
-input=22057,1
-input=22061,0
-input=22125,1
-input=22129,0
-input=22145,1
-input=22149,0
-input=22153,1
-input=22157,0
-input=22165,1
-input=22169,0
-input=22189,1
-input=22193,0
-input=22317,1
-input=22321,0
-input=22409,1
-input=22413,0
-input=22589,1
-input=22593,0
-input=22709,1
-input=22713,0
-input=22869,1
-input=22873,0
-input=22961,1
-input=22965,0
-input=23101,1
-input=23105,0
-input=23237,1
-input=23241,0
-input=23305,1
-input=23309,0
-input=23517,1
-input=23521,0
-input=23585,1
-input=23589,0
+input=7605,0
+input=7697,1
+input=7713,0
+input=7805,1
+input=7821,0
+input=7913,1
+input=7925,0
+input=8021,1
+input=8033,0
+input=11093,1
+input=11117,0
+input=11121,1
+input=11125,0
+input=11129,1
+input=11133,0
+input=11197,1
+input=11221,0
+input=11225,1
+input=11229,0
+input=11233,1
+input=11237,0
+input=11241,1
+input=11245,0
+input=11309,1
+input=11333,0
+input=11337,1
+input=11341,0
+input=11345,1
+input=11349,0
+input=11417,1
+input=11441,0
+input=11445,1
+input=11449,0
+input=11453,1
+input=11457,0
+input=12645,1
+input=12653,0
+input=12717,1
+input=12741,0
+input=12869,1
+input=12881,0
+input=13165,1
+input=13173,0
+input=13217,1
+input=13261,0
+input=13381,1
+input=13389,0
+input=13505,1
+input=13513,0
+input=13561,1
+input=13601,0
+input=13713,1
+input=13721,0
+input=13961,1
+input=13973,0
+input=14225,1
+input=14265,0
+input=14269,1
+input=14345,0
+input=14437,1
+input=14445,0
+input=14589,1
+input=14601,0
+input=14849,1
+input=14857,0
+input=14985,1
+input=14993,0
+input=15081,1
+input=15105,0
+input=15109,1
+input=15209,0
diff --git a/games/numdash/tests/replays/level12.txt b/games/numdash/tests/replays/level12.txt
index 10c5d36..80f6ca2 100644
--- a/games/numdash/tests/replays/level12.txt
+++ b/games/numdash/tests/replays/level12.txt
@@ -1,1006 +1,148 @@
-input=261,1
-input=265,0
-input=305,1
-input=309,0
-input=437,1
-input=441,0
-input=621,1
-input=625,0
-input=817,1
-input=821,0
-input=877,1
-input=881,0
-input=933,1
-input=937,0
-input=1017,1
-input=1021,0
-input=1069,1
-input=1073,0
-input=1137,1
-input=1141,0
+input=201,1
+input=205,0
+input=481,1
+input=485,0
+input=757,1
+input=761,0
+input=913,1
+input=917,0
+input=977,1
+input=981,0
+input=1169,1
+input=1173,0
 input=1305,1
 input=1309,0
-input=1421,1
-input=1425,0
+input=1401,1
+input=1405,0
 input=1565,1
 input=1569,0
-input=1689,1
-input=1693,0
-input=1805,1
-input=1809,0
-input=1813,1
-input=1817,0
-input=1893,1
-input=1897,0
-input=1945,1
-input=1949,0
-input=2021,1
-input=2025,0
-input=2085,1
-input=2121,0
-input=2241,1
-input=2245,0
-input=2305,1
-input=2309,0
-input=2769,1
-input=2773,0
-input=2853,1
-input=2857,0
-input=2905,1
-input=2909,0
-input=2961,1
-input=2965,0
+input=1669,1
+input=1673,0
+input=1801,1
+input=1805,0
+input=1889,1
+input=1893,0
+input=2081,1
+input=2085,0
+input=2401,1
+input=2405,0
+input=2601,1
+input=2605,0
+input=2689,1
+input=2693,0
+input=2873,1
+input=2877,0
 input=2977,1
 input=2981,0
-input=3037,1
-input=3041,0
-input=3301,1
-input=3305,0
-input=3317,1
-input=3321,0
-input=3325,1
-input=3329,0
-input=3333,1
-input=3337,0
-input=3341,1
-input=3345,0
-input=3349,1
-input=3353,0
-input=3365,1
-input=3373,0
-input=3381,1
-input=3385,0
-input=3389,1
-input=3397,0
-input=3405,1
-input=3409,0
-input=3413,1
-input=3417,0
-input=3429,1
-input=3437,0
-input=3441,1
-input=3445,0
-input=3449,1
-input=3453,0
-input=3473,1
-input=3477,0
-input=3485,1
-input=3497,0
-input=3509,1
-input=3513,0
-input=3521,1
-input=3529,0
-input=3545,1
-input=3549,0
-input=3565,1
-input=3577,0
-input=3581,1
-input=3585,0
-input=3589,1
-input=3597,0
-input=3605,1
-input=3617,0
-input=3621,1
-input=3633,0
-input=3649,1
-input=3653,0
-input=3665,1
-input=3669,0
-input=3685,1
-input=3709,0
-input=3721,1
-input=3729,0
-input=3741,1
-input=3745,0
-input=3749,1
-input=3753,0
-input=3761,1
-input=3773,0
-input=3777,1
-input=3785,0
-input=3789,1
-input=3793,0
-input=3797,1
-input=3809,0
-input=3813,1
-input=3821,0
-input=3837,1
-input=3845,0
-input=3853,1
-input=3869,0
-input=3877,1
-input=3897,0
-input=3901,1
-input=3913,0
-input=3929,1
-input=3937,0
-input=3945,1
-input=3961,0
-input=3969,1
-input=3981,0
-input=3985,1
-input=3997,0
-input=4005,1
-input=4009,0
-input=4017,1
-input=4021,0
-input=4029,1
-input=4033,0
-input=4061,1
-input=4069,0
-input=4073,1
-input=4085,0
-input=4105,1
-input=4117,0
-input=4129,1
+input=3113,1
+input=3117,0
+input=3825,1
+input=3829,0
+input=4137,1
 input=4141,0
-input=4161,1
-input=4165,0
-input=4169,1
-input=4173,0
-input=4177,1
-input=4181,0
-input=4185,1
-input=4193,0
-input=4225,1
-input=4229,0
-input=4237,1
-input=4241,0
-input=4245,1
-input=4265,0
-input=4277,1
-input=4281,0
-input=4285,1
-input=4293,0
-input=4305,1
-input=4333,0
-input=4341,1
-input=4345,0
-input=4357,1
-input=4361,0
-input=4369,1
-input=4373,0
-input=4377,1
-input=4381,0
-input=4389,1
-input=4397,0
-input=4413,1
-input=4421,0
-input=4429,1
-input=4433,0
 input=4445,1
 input=4449,0
-input=4453,1
-input=4457,0
-input=4461,1
-input=4477,0
-input=4481,1
-input=4485,0
-input=4497,1
-input=4501,0
-input=4513,1
-input=4521,0
-input=4525,1
-input=4533,0
-input=4537,1
-input=4541,0
-input=4545,1
-input=4549,0
-input=4557,1
-input=4561,0
-input=4569,1
-input=4573,0
-input=4577,1
-input=4581,0
-input=4585,1
-input=4593,0
-input=4613,1
-input=4617,0
-input=4725,1
-input=4729,0
-input=5093,1
-input=5125,0
-input=5237,1
-input=5245,0
-input=5265,1
-input=5269,0
-input=5281,1
-input=5289,0
-input=5417,1
-input=5421,0
-input=5461,1
-input=5465,0
-input=5525,1
-input=5529,0
-input=5533,1
-input=5537,0
-input=5573,1
-input=5577,0
-input=5645,1
-input=5649,0
-input=5841,1
-input=5845,0
-input=5909,1
-input=5913,0
-input=5953,1
-input=5957,0
-input=6201,1
-input=6205,0
-input=6245,1
-input=6249,0
-input=6313,1
-input=6317,0
-input=6409,1
-input=6413,0
-input=6549,1
-input=6553,0
-input=6633,1
-input=6637,0
-input=6645,1
-input=6673,0
-input=6685,1
-input=6689,0
+input=6425,1
+input=6429,0
 input=6693,1
-input=6733,0
-input=6737,1
-input=6753,0
-input=6757,1
-input=6761,0
-input=6769,1
-input=6773,0
-input=6781,1
-input=6785,0
-input=6797,1
-input=6801,0
-input=6805,1
-input=6809,0
-input=6813,1
-input=6821,0
-input=6825,1
-input=6841,0
-input=6845,1
-input=6925,0
-input=6929,1
-input=6937,0
-input=6941,1
-input=6953,0
-input=6957,1
-input=6965,0
-input=6969,1
-input=6973,0
-input=6981,1
-input=6985,0
-input=6989,1
-input=7005,0
-input=7021,1
-input=7025,0
-input=7037,1
-input=7041,0
-input=7049,1
-input=7053,0
-input=7061,1
-input=7065,0
-input=7069,1
-input=7073,0
-input=7089,1
-input=7113,0
-input=7117,1
-input=7125,0
-input=7145,1
-input=7161,0
-input=7173,1
-input=7177,0
-input=7189,1
-input=7193,0
-input=7205,1
-input=7213,0
-input=7233,1
-input=7237,0
-input=7241,1
-input=7245,0
-input=7249,1
-input=7277,0
-input=7281,1
-input=7301,0
-input=7305,1
-input=7317,0
-input=7321,1
-input=7325,0
-input=7353,1
-input=7357,0
-input=7369,1
-input=7373,0
-input=7381,1
-input=7385,0
-input=7389,1
-input=7397,0
-input=7433,1
-input=7441,0
-input=7445,1
-input=7461,0
-input=7465,1
-input=7473,0
-input=7477,1
-input=7505,0
-input=7509,1
-input=7525,0
-input=7533,1
-input=7537,0
-input=7545,1
-input=7553,0
-input=7557,1
-input=7565,0
-input=7569,1
-input=7585,0
-input=7589,1
-input=7621,0
-input=7625,1
-input=7693,0
-input=7701,1
-input=7721,0
-input=7725,1
-input=7733,0
-input=7745,1
-input=7753,0
-input=7761,1
-input=7765,0
-input=7769,1
-input=7777,0
-input=7797,1
-input=7825,0
-input=7837,1
-input=7845,0
-input=7849,1
-input=7853,0
-input=7857,1
-input=7869,0
-input=7873,1
-input=7889,0
-input=7893,1
-input=7905,0
-input=7909,1
-input=7917,0
-input=8053,1
-input=8057,0
-input=8145,1
-input=8149,0
-input=8161,1
-input=8165,0
-input=8257,1
-input=8261,0
-input=8273,1
-input=8277,0
-input=8369,1
-input=8373,0
-input=8385,1
-input=8389,0
-input=8621,1
-input=8625,0
-input=8753,1
-input=8757,0
-input=8841,1
-input=8925,0
-input=9053,1
-input=9057,0
-input=9137,1
-input=9145,0
-input=9153,1
-input=9233,0
-input=9401,1
-input=9405,0
-input=9513,1
-input=9517,0
-input=9553,1
-input=9557,0
-input=9745,1
-input=9749,0
-input=9777,1
-input=9781,0
-input=10641,1
-input=10645,0
-input=10849,1
-input=10853,0
-input=11177,1
-input=11181,0
-input=11457,1
-input=11461,0
-input=11549,1
-input=11553,0
-input=11713,1
-input=11717,0
-input=11961,1
-input=11965,0
-input=12229,1
-input=12233,0
-input=12325,1
-input=12329,0
-input=12749,1
-input=12753,0
-input=12957,1
-input=12961,0
-input=13473,1
-input=13477,0
-input=13573,1
-input=13577,0
-input=13677,1
-input=13685,0
-input=13785,1
-input=13789,0
-input=13889,1
-input=13893,0
-input=13977,1
-input=13981,0
-input=13985,1
-input=14009,0
-input=14013,1
-input=14029,0
-input=14041,1
-input=14045,0
-input=14053,1
-input=14077,0
-input=14081,1
-input=14085,0
-input=14129,1
-input=14137,0
-input=14141,1
-input=14149,0
-input=14153,1
-input=14173,0
-input=14177,1
-input=14185,0
-input=14189,1
-input=14217,0
-input=14249,1
-input=14253,0
-input=14289,1
-input=14293,0
-input=14305,1
-input=14309,0
-input=14321,1
-input=14325,0
-input=14337,1
-input=14349,0
-input=14373,1
-input=14377,0
-input=14381,1
-input=14389,0
-input=14393,1
-input=14397,0
-input=14409,1
-input=14413,0
-input=14425,1
-input=14429,0
-input=14437,1
-input=14441,0
-input=14445,1
-input=14461,0
-input=14481,1
-input=14485,0
-input=14493,1
-input=14497,0
-input=14513,1
-input=14541,0
-input=14549,1
-input=14553,0
-input=14561,1
-input=14565,0
-input=14569,1
-input=14577,0
-input=14581,1
-input=14593,0
-input=14601,1
-input=14613,0
-input=14625,1
-input=14633,0
-input=14641,1
-input=14649,0
-input=14653,1
-input=14661,0
-input=14669,1
-input=14673,0
-input=14677,1
-input=14681,0
-input=14685,1
-input=14689,0
-input=14709,1
-input=14713,0
-input=14721,1
-input=14725,0
-input=14737,1
-input=14741,0
-input=14825,1
-input=14837,0
-input=14841,1
-input=14845,0
-input=14849,1
-input=14869,0
-input=14873,1
-input=14877,0
-input=14889,1
-input=14897,0
-input=14901,1
-input=14913,0
-input=14921,1
-input=14925,0
-input=14933,1
-input=14965,0
-input=14977,1
-input=15005,0
-input=15009,1
-input=15013,0
-input=15017,1
-input=15029,0
-input=15041,1
-input=15057,0
-input=15065,1
-input=15069,0
-input=15073,1
-input=15089,0
-input=15093,1
-input=15097,0
-input=15101,1
-input=15109,0
-input=15113,1
-input=15133,0
-input=15137,1
-input=15141,0
-input=15153,1
-input=15165,0
-input=15169,1
-input=15177,0
-input=15181,1
-input=15185,0
-input=15189,1
-input=15197,0
+input=6697,0
+input=7093,1
+input=7097,0
+input=7357,1
+input=7361,0
+input=9085,1
+input=9121,0
+input=9261,1
+input=9297,0
+input=9449,1
+input=9477,0
+input=9637,1
+input=9653,0
+input=9825,1
+input=9837,0
+input=10013,1
+input=10025,0
+input=10201,1
+input=10213,0
+input=10389,1
+input=10401,0
+input=10577,1
+input=10589,0
+input=10765,1
+input=10777,0
+input=10957,1
+input=10961,0
+input=10965,1
+input=10969,0
+input=11221,1
+input=11253,0
+input=11397,1
+input=11433,0
+input=11585,1
+input=11609,0
+input=15141,1
+input=15153,0
 input=15229,1
-input=15233,0
-input=15337,1
-input=15341,0
-input=15361,1
-input=15365,0
-input=15381,1
-input=15385,0
-input=15389,1
-input=15393,0
-input=15397,1
-input=15401,0
+input=15241,0
 input=15405,1
-input=15409,0
-input=15413,1
-input=15421,0
-input=15429,1
-input=15445,0
-input=15453,1
-input=15481,0
-input=15501,1
-input=15505,0
-input=15509,1
-input=15513,0
-input=15517,1
-input=15521,0
-input=15525,1
-input=15529,0
-input=15545,1
-input=15549,0
-input=15565,1
-input=15577,0
-input=15581,1
-input=15585,0
-input=15589,1
-input=15597,0
-input=15637,1
+input=15417,0
+input=15629,1
 input=15641,0
-input=15657,1
-input=15661,0
-input=15693,1
-input=15713,0
 input=15717,1
-input=15725,0
-input=15733,1
-input=15737,0
-input=15741,1
-input=15745,0
-input=15749,1
-input=15753,0
-input=15761,1
-input=15769,0
-input=15785,1
-input=15797,0
-input=15813,1
-input=15817,0
-input=15825,1
-input=15833,0
-input=15837,1
-input=15845,0
-input=15857,1
-input=15865,0
-input=15869,1
-input=15877,0
-input=15885,1
-input=15917,0
-input=15929,1
-input=15941,0
-input=15949,1
-input=15969,0
-input=15973,1
-input=15981,0
-input=15985,1
-input=15989,0
-input=15993,1
-input=16001,0
-input=16013,1
-input=16021,0
-input=16029,1
-input=16033,0
-input=16041,1
-input=16061,0
-input=16065,1
-input=16069,0
-input=16093,1
+input=15729,0
+input=16089,1
 input=16101,0
-input=16113,1
-input=16121,0
-input=16125,1
-input=16145,0
-input=16157,1
-input=16161,0
-input=16165,1
-input=16177,0
-input=16181,1
-input=16193,0
-input=16201,1
-input=16205,0
-input=16209,1
-input=16213,0
-input=16221,1
-input=16265,0
-input=16269,1
-input=16273,0
-input=16277,1
-input=16281,0
-input=16285,1
-input=16289,0
-input=16333,1
-input=16337,0
-input=16461,1
-input=16497,0
-input=16657,1
-input=16661,0
-input=16669,1
-input=16689,0
-input=16697,1
-input=16701,0
+input=16313,1
+input=16321,0
 input=16717,1
-input=16737,0
-input=16745,1
-input=16757,0
-input=16785,1
-input=16789,0
-input=16793,1
-input=16805,0
-input=16813,1
-input=16909,0
-input=16913,1
-input=16985,0
-input=16989,1
-input=17125,0
-input=17133,1
-input=17137,0
-input=17141,1
-input=17145,0
-input=17149,1
-input=17165,0
-input=17169,1
-input=17177,0
-input=17201,1
-input=17213,0
-input=17217,1
-input=17233,0
-input=17237,1
-input=17245,0
-input=17249,1
-input=17253,0
+input=16725,0
+input=16845,1
+input=16853,0
+input=16993,1
+input=17001,0
+input=17081,1
+input=17093,0
 input=17257,1
-input=17265,0
-input=17269,1
-input=17273,0
-input=17285,1
-input=17293,0
-input=17309,1
-input=17313,0
-input=17325,1
-input=17329,0
-input=17333,1
-input=17345,0
-input=17353,1
-input=17357,0
-input=17361,1
-input=17369,0
-input=17377,1
-input=17385,0
-input=17389,1
-input=17393,0
-input=17405,1
-input=17409,0
-input=17421,1
-input=17425,0
-input=17433,1
-input=17437,0
-input=17449,1
-input=17453,0
-input=17465,1
-input=17481,0
-input=17485,1
-input=17489,0
-input=17493,1
-input=17497,0
-input=17525,1
-input=17529,0
-input=17533,1
-input=17537,0
-input=17549,1
-input=17553,0
-input=17557,1
-input=17565,0
-input=17569,1
-input=17573,0
-input=17581,1
-input=17585,0
-input=17597,1
-input=17605,0
-input=17609,1
-input=17613,0
-input=17617,1
-input=17621,0
-input=17625,1
-input=17641,0
-input=17649,1
-input=17653,0
-input=17665,1
-input=17681,0
-input=17709,1
-input=17721,0
-input=17733,1
-input=17737,0
-input=17745,1
-input=17765,0
-input=17769,1
-input=17777,0
-input=17781,1
-input=17785,0
-input=17789,1
-input=17793,0
-input=17801,1
-input=17805,0
-input=17821,1
-input=17825,0
-input=17841,1
-input=17845,0
-input=17853,1
-input=17857,0
-input=17861,1
-input=17865,0
-input=17877,1
-input=17885,0
-input=17897,1
-input=17905,0
-input=17917,1
-input=17921,0
-input=17925,1
-input=17929,0
-input=17933,1
-input=17965,0
-input=17969,1
-input=17973,0
-input=17989,1
-input=17993,0
-input=18009,1
-input=18017,0
-input=18025,1
-input=18029,0
-input=18041,1
-input=18045,0
-input=18053,1
-input=18057,0
-input=18061,1
-input=18081,0
-input=18089,1
-input=18093,0
-input=18109,1
-input=18113,0
-input=18117,1
-input=18125,0
-input=18129,1
-input=18137,0
-input=18145,1
-input=18153,0
-input=18157,1
-input=18165,0
-input=18169,1
-input=18181,0
+input=17269,0
+input=17497,1
+input=17505,0
 input=18185,1
-input=18189,0
-input=18193,1
-input=18213,0
-input=18225,1
-input=18233,0
-input=18237,1
-input=18241,0
-input=18249,1
-input=18253,0
-input=18257,1
-input=18261,0
-input=18277,1
-input=18281,0
-input=18285,1
-input=18301,0
-input=18309,1
-input=18321,0
-input=18345,1
-input=18353,0
-input=18357,1
-input=18361,0
-input=18365,1
-input=18369,0
-input=18377,1
-input=18389,0
-input=18393,1
-input=18397,0
-input=18405,1
-input=18413,0
-input=18417,1
-input=18425,0
-input=18433,1
-input=18437,0
-input=18441,1
-input=18457,0
-input=18465,1
-input=18473,0
-input=18485,1
-input=18489,0
-input=18505,1
-input=18509,0
-input=18525,1
-input=18529,0
-input=18541,1
-input=18549,0
-input=18577,1
-input=18585,0
-input=18601,1
-input=18605,0
+input=18201,0
 input=18629,1
-input=18633,0
-input=18645,1
-input=18649,0
-input=18673,1
-input=18681,0
-input=18685,1
-input=18689,0
-input=18717,1
-input=18721,0
-input=18729,1
-input=18741,0
-input=18749,1
-input=18753,0
-input=18765,1
-input=18769,0
-input=18777,1
-input=18781,0
-input=18805,1
-input=18813,0
-input=18817,1
-input=18821,0
-input=18829,1
-input=18837,0
-input=18841,1
-input=18849,0
-input=18853,1
-input=18857,0
-input=18861,1
-input=18869,0
-input=18881,1
-input=18885,0
-input=18893,1
-input=18905,0
-input=18909,1
-input=18921,0
-input=18925,1
-input=18929,0
-input=18937,1
-input=18945,0
-input=18973,1
-input=18977,0
-input=18989,1
-input=18997,0
-input=19009,1
-input=19013,0
-input=19029,1
-input=19033,0
-input=19041,1
-input=19053,0
-input=19057,1
-input=19061,0
-input=19065,1
-input=19073,0
-input=19077,1
-input=19089,0
-input=19097,1
-input=19101,0
-input=19105,1
-input=19109,0
-input=19121,1
-input=19129,0
-input=19133,1
-input=19141,0
-input=19157,1
-input=19161,0
-input=19177,1
-input=19181,0
-input=19197,1
-input=19201,0
-input=19225,1
-input=19229,0
-input=19233,1
-input=19241,0
-input=19253,1
-input=19257,0
-input=19277,1
-input=19281,0
-input=19293,1
-input=19317,0
-input=19349,1
-input=19357,0
-input=19381,1
-input=19393,0
-input=19401,1
-input=19405,0
-input=19413,1
-input=19417,0
-input=19425,1
-input=19437,0
-input=19457,1
-input=19461,0
-input=19473,1
-input=19521,0
-input=19525,1
-input=19529,0
+input=18645,0
+input=19389,1
+input=19397,0
 input=19533,1
-input=19537,0
-input=19541,1
 input=19573,0
 input=19577,1
-input=19609,0
-input=19613,1
-input=19637,0
-input=19669,1
-input=19705,0
-input=19725,1
-input=19757,0
-input=19777,1
-input=19785,0
-input=19801,1
-input=19829,0
-input=19833,1
-input=19921,0
-input=19925,1
-input=20089,0
+input=19625,0
+input=19633,1
+input=19641,0
+input=19789,1
+input=19797,0
+input=19941,1
+input=20025,0
+input=20037,1
+input=20041,0
+input=20045,1
+input=20049,0
+input=20069,1
+input=20081,0
+input=20085,1
+input=20161,0
+input=20173,1
+input=20177,0
+input=20181,1
+input=20253,0
+input=20425,1
+input=20429,0
+input=20737,1
+input=20745,0
+input=20897,1
+input=20937,0
+input=21077,1
+input=21085,0
+input=21141,1
+input=21173,0
+input=21345,1
+input=21353,0
diff --git a/games/numdash/tests/replays/level2.txt b/games/numdash/tests/replays/level2.txt
index 97c2736..710561c 100644
--- a/games/numdash/tests/replays/level2.txt
+++ b/games/numdash/tests/replays/level2.txt
@@ -1,292 +1,126 @@
-input=517,1
-input=521,0
-input=749,1
-input=753,0
-input=841,1
-input=845,0
-input=1257,1
-input=1261,0
-input=1465,1
-input=1469,0
+input=193,1
+input=197,0
+input=353,1
+input=357,0
+input=533,1
+input=537,0
+input=681,1
+input=685,0
+input=993,1
+input=997,0
+input=1153,1
+input=1157,0
+input=1321,1
+input=1325,0
+input=1425,1
+input=1429,0
 input=1557,1
 input=1561,0
-input=1649,1
-input=1653,0
-input=1741,1
-input=1745,0
-input=1929,1
-input=1933,0
-input=2041,1
-input=2045,0
-input=2249,1
-input=2253,0
-input=2353,1
-input=2357,0
-input=2457,1
-input=2461,0
-input=2561,1
-input=2565,0
-input=2757,1
-input=2761,0
+input=1697,1
+input=1701,0
+input=1801,1
+input=1805,0
+input=1933,1
+input=1937,0
+input=2097,1
+input=2101,0
+input=2201,1
+input=2205,0
+input=2325,1
+input=2329,0
+input=2489,1
+input=2493,0
+input=2657,1
+input=2661,0
 input=2965,1
 input=2969,0
-input=3057,1
-input=3061,0
-input=3497,1
-input=3501,0
-input=3637,1
-input=3641,0
-input=3773,1
-input=3777,0
-input=4005,1
-input=4009,0
-input=4097,1
-input=4101,0
-input=4373,1
-input=4377,0
-input=4465,1
-input=4469,0
-input=4673,1
-input=4677,0
-input=4789,1
-input=4793,0
-input=4877,1
-input=4881,0
-input=5201,1
-input=5205,0
-input=5293,1
-input=5297,0
-input=5385,1
-input=5389,0
-input=5653,1
-input=5657,0
-input=5745,1
-input=5749,0
+input=3069,1
+input=3073,0
+input=3193,1
+input=3197,0
+input=3513,1
+input=3517,0
+input=3681,1
+input=3685,0
+input=3993,1
+input=3997,0
+input=4153,1
+input=4157,0
+input=4333,1
+input=4337,0
+input=4489,1
+input=4493,0
+input=4657,1
+input=4661,0
+input=4821,1
+input=4825,0
 input=5945,1
-input=5949,0
-input=6081,1
-input=6085,0
-input=6185,1
-input=6189,0
-input=6309,1
-input=6313,0
-input=6401,1
-input=6405,0
-input=6493,1
-input=6497,0
-input=6585,1
-input=6589,0
-input=6749,1
+input=5977,0
+input=6101,1
+input=6133,0
+input=6257,1
+input=6289,0
+input=6413,1
+input=6445,0
+input=6725,1
 input=6753,0
-input=7069,1
-input=7073,0
-input=7325,1
-input=7329,0
-input=7553,1
-input=7557,0
-input=7669,1
-input=7673,0
-input=7761,1
-input=7765,0
-input=8505,1
-input=8509,0
-input=8609,1
-input=8613,0
-input=8829,1
-input=8833,0
-input=8893,1
-input=8897,0
-input=9197,1
-input=9201,0
-input=9333,1
-input=9337,0
-input=9681,1
-input=9685,0
-input=10313,1
-input=10381,0
-input=10401,1
-input=10429,0
-input=10937,1
-input=11005,0
-input=11025,1
-input=11053,0
-input=11065,1
-input=11077,0
-input=11089,1
-input=11101,0
-input=11541,1
-input=11609,0
-input=11617,1
-input=11629,0
-input=11641,1
-input=11653,0
-input=11665,1
-input=11677,0
-input=11821,1
-input=11857,0
-input=11861,1
-input=11865,0
-input=11893,1
-input=11913,0
-input=11917,1
-input=11925,0
-input=11929,1
-input=11937,0
-input=11941,1
-input=11945,0
-input=11949,1
-input=11957,0
-input=11973,1
-input=11977,0
-input=11985,1
-input=11989,0
-input=11993,1
-input=11997,0
-input=12005,1
-input=12009,0
-input=12013,1
-input=12017,0
-input=12025,1
-input=12029,0
-input=12033,1
-input=12037,0
-input=12045,1
+input=7369,1
+input=7381,0
+input=7505,1
+input=7513,0
+input=7601,1
+input=7653,0
+input=7769,1
+input=7781,0
+input=8125,1
+input=8137,0
+input=8289,1
+input=8329,0
+input=8457,1
+input=8469,0
+input=8781,1
+input=8789,0
+input=8845,1
+input=8873,0
+input=9037,1
+input=9049,0
+input=9401,1
+input=9409,0
+input=9593,1
+input=9605,0
+input=9905,1
+input=9913,0
+input=10065,1
+input=10105,0
+input=10245,1
+input=10253,0
+input=10433,1
+input=10453,0
+input=10457,1
+input=10545,0
+input=10661,1
+input=10669,0
+input=10981,1
+input=10989,0
+input=11129,1
+input=11137,0
+input=11445,1
+input=11453,0
+input=11513,1
+input=11541,0
+input=11705,1
+input=11717,0
+input=11869,1
+input=11909,0
+input=12037,1
 input=12049,0
-input=12057,1
-input=12061,0
-input=12065,1
-input=12069,0
-input=12077,1
-input=12081,0
-input=12085,1
-input=12089,0
-input=12097,1
-input=12101,0
-input=12105,1
-input=12109,0
-input=12117,1
-input=12121,0
-input=12129,1
-input=12133,0
-input=12137,1
-input=12141,0
-input=12149,1
-input=12153,0
-input=12157,1
-input=12161,0
-input=12169,1
-input=12173,0
-input=12177,1
+input=12173,1
 input=12181,0
-input=12189,1
-input=12193,0
-input=12197,1
-input=12201,0
-input=12213,1
-input=12221,0
-input=12229,1
-input=12233,0
-input=12241,1
-input=12245,0
-input=12249,1
-input=12253,0
-input=12261,1
-input=12273,0
-input=12277,1
-input=12281,0
-input=12285,1
-input=12305,0
-input=12313,1
-input=12325,0
-input=12397,1
-input=12417,0
-input=12429,1
-input=12437,0
-input=12441,1
-input=12445,0
-input=12449,1
+input=12269,1
+input=12321,0
+input=12433,1
 input=12453,0
-input=12461,1
-input=12469,0
-input=12481,1
-input=12485,0
-input=12493,1
-input=12501,0
-input=12513,1
-input=12517,0
-input=12521,1
-input=12525,0
-input=12529,1
-input=12533,0
-input=12541,1
+input=12457,1
 input=12545,0
-input=12553,1
-input=12557,0
-input=13077,1
-input=13081,0
-input=13193,1
-input=13197,0
-input=13309,1
-input=13313,0
-input=13401,1
-input=13405,0
-input=13561,1
-input=13565,0
-input=13977,1
-input=13981,0
-input=14069,1
-input=14073,0
-input=14529,1
-input=14533,0
-input=14969,1
-input=14973,0
-input=15129,1
-input=15133,0
-input=15293,1
-input=15297,0
-input=15525,1
-input=15529,0
-input=15637,1
-input=15641,0
-input=15753,1
-input=15757,0
-input=15937,1
-input=15941,0
-input=16029,1
-input=16033,0
-input=16261,1
-input=16265,0
-input=16537,1
-input=16541,0
-input=16745,1
-input=16749,0
-input=16877,1
-input=16881,0
-input=16981,1
-input=16985,0
-input=17221,1
-input=17225,0
-input=17325,1
-input=17329,0
-input=17577,1
-input=17581,0
-input=17809,1
-input=17813,0
-input=18017,1
-input=18021,0
-input=18225,1
-input=18229,0
-input=18361,1
-input=18365,0
-input=18453,1
-input=18457,0
-input=18617,1
-input=18621,0
-input=18705,1
-input=18709,0
-input=18845,1
-input=18849,0
-input=18961,1
-input=18965,0
-input=19053,1
-input=19057,0
+input=12661,1
+input=12669,0
diff --git a/games/numdash/tests/replays/level3.txt b/games/numdash/tests/replays/level3.txt
index 464394a..1258bb1 100644
--- a/games/numdash/tests/replays/level3.txt
+++ b/games/numdash/tests/replays/level3.txt
@@ -1,256 +1,124 @@
+input=201,1
+input=205,0
 input=349,1
 input=353,0
-input=421,1
-input=425,0
-input=697,1
-input=701,0
-input=777,1
-input=781,0
-input=1057,1
-input=1061,0
-input=1121,1
-input=1125,0
-input=1233,1
-input=1237,0
-input=1325,1
-input=1329,0
+input=709,1
+input=713,0
+input=913,1
+input=917,0
+input=1045,1
+input=1049,0
+input=1357,1
+input=1361,0
 input=1421,1
 input=1425,0
-input=1581,1
-input=1585,0
-input=1697,1
-input=1701,0
-input=1905,1
-input=1909,0
-input=2009,1
-input=2013,0
-input=2297,1
-input=2301,0
-input=2505,1
-input=2509,0
-input=2757,1
-input=2761,0
-input=2829,1
-input=2833,0
-input=2921,1
-input=2925,0
-input=3197,1
-input=3201,0
-input=3289,1
-input=3293,0
-input=3433,1
-input=3437,0
-input=3521,1
-input=3525,0
-input=3729,1
-input=3733,0
-input=3909,1
-input=3913,0
-input=4009,1
-input=4013,0
-input=4213,1
-input=4217,0
-input=4317,1
-input=4321,0
-input=4717,1
-input=4721,0
-input=4809,1
-input=4813,0
-input=4909,1
-input=4913,0
-input=5121,1
-input=5125,0
-input=5209,1
-input=5213,0
-input=5621,1
-input=5625,0
-input=5717,1
-input=5721,0
-input=5945,1
-input=5949,0
-input=6041,1
-input=6045,0
-input=6201,1
-input=6205,0
-input=6385,1
-input=6389,0
-input=6641,1
-input=6645,0
-input=6789,1
-input=6793,0
-input=6929,1
-input=6933,0
-input=7069,1
-input=7073,0
-input=7205,1
-input=7209,0
-input=7289,1
-input=7293,0
-input=7381,1
-input=7385,0
-input=7853,1
-input=7897,0
-input=8385,1
-input=8429,0
-input=8881,1
-input=8905,0
-input=8909,1
-input=8917,0
-input=9197,1
-input=9237,0
-input=9541,1
-input=9581,0
-input=9997,1
-input=10037,0
-input=10041,1
-input=10069,0
-input=10077,1
-input=10093,0
-input=10377,1
-input=10381,0
-input=10469,1
-input=10473,0
-input=10573,1
-input=10577,0
-input=10669,1
-input=10673,0
-input=10821,1
-input=10825,0
-input=10901,1
-input=10905,0
-input=11213,1
-input=11217,0
-input=11317,1
-input=11321,0
-input=11429,1
-input=11433,0
-input=11517,1
-input=11521,0
-input=11613,1
-input=11617,0
-input=11709,1
-input=11713,0
-input=11885,1
-input=11889,0
+input=1609,1
+input=1613,0
+input=1713,1
+input=1717,0
+input=1837,1
+input=1841,0
+input=1997,1
+input=2001,0
+input=2177,1
+input=2181,0
+input=2333,1
+input=2337,0
+input=2533,1
+input=2537,0
+input=2601,1
+input=2605,0
+input=2797,1
+input=2801,0
+input=3001,1
+input=3005,0
+input=3133,1
+input=3137,0
+input=3445,1
+input=3449,0
+input=3613,1
+input=3617,0
+input=3749,1
+input=3753,0
+input=3845,1
+input=3849,0
+input=4021,1
+input=4025,0
+input=4225,1
+input=4229,0
+input=4353,1
+input=4357,0
+input=7349,1
+input=7357,0
+input=7481,1
+input=7493,0
+input=7577,1
+input=7629,0
+input=7749,1
+input=7757,0
+input=8021,1
+input=8069,0
+input=8077,1
+input=8129,0
+input=8281,1
+input=8293,0
+input=8445,1
+input=8485,0
+input=8625,1
+input=8633,0
+input=8769,1
+input=8781,0
+input=9081,1
+input=9093,0
+input=9449,1
+input=9453,0
+input=9593,1
+input=9605,0
+input=9913,1
+input=9921,0
+input=10089,1
+input=10097,0
+input=10157,1
+input=10185,0
+input=10349,1
+input=10361,0
+input=10665,1
+input=10781,0
+input=10869,1
+input=10877,0
+input=11049,1
+input=11053,0
+input=11181,1
+input=11189,0
+input=11349,1
+input=11361,0
+input=11669,1
+input=11677,0
+input=11825,1
+input=11833,0
 input=12001,1
-input=12005,0
-input=12093,1
-input=12097,0
-input=12185,1
-input=12189,0
-input=12277,1
-input=12281,0
-input=12365,1
-input=12369,0
-input=12805,1
-input=12809,0
-input=12921,1
-input=12925,0
-input=13013,1
-input=13017,0
-input=13105,1
-input=13109,0
-input=13197,1
-input=13201,0
-input=13289,1
-input=13293,0
-input=13473,1
-input=13477,0
-input=13761,1
-input=13765,0
-input=13913,1
-input=13917,0
-input=14097,1
-input=14101,0
-input=14257,1
-input=14261,0
-input=14361,1
-input=14365,0
-input=14533,1
-input=14537,0
-input=14813,1
-input=14817,0
+input=12009,0
+input=14425,1
+input=14433,0
+input=14489,1
+input=14517,0
+input=14645,1
+input=14693,0
+input=14701,1
+input=14753,0
 input=14905,1
-input=14909,0
-input=14997,1
-input=15001,0
-input=15085,1
-input=15089,0
-input=15669,1
-input=15673,0
-input=15781,1
-input=15785,0
-input=15893,1
-input=15897,0
-input=16009,1
-input=16013,0
-input=16281,1
-input=16285,0
-input=16405,1
-input=16409,0
-input=16497,1
+input=14917,0
+input=15273,1
+input=15277,0
+input=15425,1
+input=15433,0
+input=15557,1
+input=15605,0
+input=15613,1
+input=15665,0
+input=15817,1
+input=15829,0
+input=16129,1
+input=16137,0
+input=16493,1
 input=16501,0
-input=16757,1
-input=16761,0
-input=16845,1
-input=16849,0
-input=16965,1
-input=16969,0
-input=17049,1
-input=17053,0
-input=17165,1
-input=17169,0
-input=17269,1
-input=17273,0
-input=17373,1
-input=17377,0
-input=17465,1
-input=17469,0
-input=17625,1
-input=17629,0
-input=17793,1
-input=17797,0
-input=17925,1
-input=17929,0
-input=18085,1
-input=18089,0
-input=18177,1
-input=18181,0
-input=18269,1
-input=18273,0
-input=18361,1
-input=18365,0
-input=18709,1
-input=18713,0
-input=18869,1
-input=18873,0
-input=19061,1
-input=19065,0
-input=19149,1
-input=19153,0
-input=19261,1
-input=19265,0
-input=19561,1
-input=19565,0
-input=19677,1
-input=19681,0
-input=19817,1
-input=19821,0
-input=20161,1
-input=20165,0
-input=20301,1
-input=20305,0
-input=20425,1
-input=20429,0
-input=20529,1
-input=20533,0
-input=20741,1
-input=20745,0
-input=20833,1
-input=20837,0
-input=20969,1
-input=20973,0
-input=21105,1
-input=21109,0
-input=21237,1
-input=21241,0
diff --git a/games/numdash/tests/replays/level4.txt b/games/numdash/tests/replays/level4.txt
index 751bf81..af3adbd 100644
--- a/games/numdash/tests/replays/level4.txt
+++ b/games/numdash/tests/replays/level4.txt
@@ -1,434 +1,164 @@
-input=385,1
-input=389,0
-input=485,1
-input=489,0
-input=681,1
-input=685,0
-input=773,1
-input=777,0
-input=865,1
-input=869,0
-input=1073,1
-input=1077,0
-input=1281,1
-input=1285,0
-input=1453,1
-input=1457,0
-input=1557,1
-input=1561,0
-input=1649,1
-input=1653,0
-input=1881,1
-input=1885,0
-input=1973,1
-input=1977,0
-input=2109,1
-input=2113,0
-input=2273,1
-input=2277,0
-input=2373,1
-input=2377,0
-input=2457,1
-input=2461,0
-input=2585,1
-input=2589,0
-input=2809,1
-input=2813,0
-input=2905,1
-input=2909,0
-input=3105,1
-input=3109,0
-input=3197,1
-input=3201,0
-input=3301,1
-input=3305,0
-input=3389,1
-input=3393,0
-input=3589,1
-input=3593,0
-input=3773,1
-input=3777,0
-input=3957,1
-input=3961,0
-input=4069,1
-input=4073,0
-input=4257,1
-input=4261,0
-input=4533,1
-input=4537,0
-input=4637,1
-input=4641,0
-input=4741,1
-input=4745,0
-input=4813,1
-input=4817,0
-input=4881,1
-input=4885,0
-input=4949,1
-input=4953,0
-input=5133,1
-input=5137,0
-input=5201,1
-input=5205,0
-input=5273,1
-input=5277,0
-input=5549,1
-input=5553,0
-input=5813,1
-input=5817,0
-input=5913,1
-input=5917,0
-input=6021,1
-input=6025,0
-input=7145,1
-input=7149,0
-input=7309,1
-input=7313,0
-input=7449,1
-input=7453,0
-input=7557,1
-input=7561,0
-input=7653,1
-input=7657,0
-input=7749,1
-input=7753,0
-input=7925,1
-input=7929,0
-input=8025,1
-input=8029,0
-input=8225,1
-input=8229,0
-input=8341,1
-input=8345,0
-input=8437,1
-input=8441,0
-input=8529,1
-input=8533,0
-input=8601,1
-input=8605,0
-input=8781,1
-input=8785,0
-input=8873,1
-input=8877,0
-input=8969,1
-input=8973,0
-input=9145,1
-input=9149,0
-input=9241,1
-input=9245,0
-input=9333,1
-input=9337,0
-input=9409,1
-input=9413,0
-input=9585,1
-input=9589,0
-input=9649,1
-input=9653,0
-input=9765,1
-input=9769,0
-input=9861,1
-input=9865,0
-input=10033,1
-input=10037,0
-input=10137,1
-input=10141,0
-input=10277,1
-input=10281,0
-input=10369,1
-input=10373,0
-input=10437,1
-input=10441,0
-input=10505,1
-input=10509,0
-input=10737,1
-input=10741,0
-input=10889,1
-input=10893,0
-input=11085,1
-input=11089,0
-input=11177,1
-input=11181,0
-input=11433,1
-input=11437,0
-input=11545,1
-input=11549,0
-input=11853,1
-input=11857,0
-input=11941,1
-input=11945,0
-input=12033,1
-input=12037,0
-input=12205,1
-input=12209,0
-input=12309,1
-input=12313,0
-input=12449,1
-input=12453,0
-input=12541,1
-input=12545,0
-input=12701,1
-input=12705,0
-input=12793,1
-input=12797,0
-input=12885,1
-input=12889,0
-input=12989,1
-input=12993,0
-input=13193,1
-input=13261,0
-input=13749,1
-input=13817,0
-input=14409,1
-input=14453,0
-input=14477,1
-input=14481,0
-input=14489,1
-input=14509,0
-input=14529,1
-input=14545,0
-input=14549,1
-input=14557,0
-input=14677,1
-input=14717,0
-input=14725,1
-input=14741,0
-input=14745,1
-input=14749,0
+input=201,1
+input=205,0
+input=369,1
+input=373,0
+input=505,1
+input=509,0
+input=601,1
+input=605,0
+input=777,1
+input=781,0
+input=965,1
+input=969,0
+input=1069,1
+input=1073,0
+input=1133,1
+input=1137,0
+input=1325,1
+input=1329,0
+input=1645,1
+input=1649,0
+input=1833,1
+input=1837,0
+input=1937,1
+input=1941,0
+input=2113,1
+input=2117,0
+input=2305,1
+input=2309,0
+input=2465,1
+input=2469,0
+input=2645,1
+input=2649,0
+input=2709,1
+input=2713,0
+input=2913,1
+input=2917,0
+input=3081,1
+input=3085,0
+input=3401,1
+input=3405,0
+input=3465,1
+input=3469,0
+input=3661,1
+input=3665,0
+input=4021,1
+input=4025,0
+input=4225,1
+input=4229,0
+input=4369,1
+input=4373,0
+input=4465,1
+input=4469,0
+input=4841,1
+input=4845,0
+input=4973,1
+input=4977,0
+input=5105,1
+input=5109,0
+input=5241,1
+input=5245,0
+input=5373,1
+input=5377,0
+input=5505,1
+input=5509,0
+input=5641,1
+input=5645,0
+input=5773,1
+input=5777,0
+input=5905,1
+input=5909,0
+input=6041,1
+input=6045,0
+input=6173,1
+input=6177,0
+input=6305,1
+input=6309,0
+input=6441,1
+input=6445,0
+input=6573,1
+input=6577,0
+input=7025,1
+input=7029,0
+input=7193,1
+input=7197,0
+input=7325,1
+input=7329,0
+input=7421,1
+input=7425,0
+input=7593,1
+input=7597,0
+input=7949,1
+input=7953,0
+input=8109,1
+input=8113,0
+input=8289,1
+input=8293,0
+input=8489,1
+input=8493,0
+input=8557,1
+input=8561,0
+input=8741,1
+input=8745,0
+input=8845,1
+input=8849,0
+input=8977,1
+input=8981,0
+input=9165,1
+input=9169,0
+input=9269,1
+input=9273,0
+input=9425,1
+input=9429,0
+input=9489,1
+input=9493,0
+input=9681,1
+input=9685,0
+input=10045,1
+input=10049,0
+input=10221,1
+input=10225,0
+input=10409,1
+input=10413,0
+input=10513,1
+input=10517,0
+input=10577,1
+input=10581,0
+input=10773,1
+input=10777,0
+input=11133,1
+input=11137,0
+input=11337,1
+input=11341,0
+input=13641,1
+input=13649,0
+input=13993,1
+input=14005,0
+input=14129,1
+input=14137,0
+input=14225,1
+input=14277,0
+input=14401,1
+input=14517,0
+input=14589,1
+input=14617,0
+input=14621,1
+input=14701,0
 input=14757,1
-input=14761,0
-input=14765,1
-input=14769,0
-input=14773,1
-input=14777,0
-input=14785,1
 input=14789,0
-input=14797,1
-input=14801,0
-input=14805,1
-input=14809,0
-input=14817,1
-input=14821,0
-input=14825,1
-input=14829,0
-input=14837,1
-input=14841,0
-input=14845,1
-input=14849,0
-input=14857,1
-input=14861,0
-input=14869,1
-input=14873,0
-input=14877,1
-input=14881,0
-input=14889,1
-input=14893,0
-input=14897,1
-input=14901,0
-input=14909,1
-input=14913,0
-input=14917,1
-input=14921,0
-input=14929,1
-input=14933,0
-input=14941,1
-input=14949,0
-input=14961,1
-input=14965,0
-input=14973,1
-input=14981,0
-input=14993,1
-input=15001,0
-input=15013,1
-input=15017,0
-input=15021,1
-input=15025,0
-input=15033,1
-input=15037,0
-input=15041,1
-input=15045,0
-input=15049,1
-input=15053,0
-input=15065,1
-input=15069,0
-input=15073,1
-input=15077,0
-input=15081,1
-input=15085,0
-input=15093,1
-input=15097,0
-input=15105,1
-input=15109,0
-input=15113,1
-input=15117,0
-input=15121,1
-input=15125,0
-input=15137,1
-input=15145,0
-input=15157,1
-input=15161,0
-input=15165,1
-input=15169,0
-input=15173,1
-input=15177,0
-input=15189,1
-input=15197,0
-input=15205,1
-input=15209,0
-input=15217,1
-input=15221,0
-input=15225,1
-input=15229,0
-input=15237,1
-input=15241,0
-input=15249,1
-input=15253,0
-input=15257,1
-input=15261,0
-input=15265,1
-input=15269,0
-input=15281,1
-input=15289,0
-input=15301,1
-input=15309,0
-input=15321,1
-input=15325,0
-input=15329,1
-input=15333,0
-input=15341,1
-input=15349,0
-input=15361,1
-input=15365,0
-input=15373,1
-input=15381,0
-input=15393,1
-input=15397,0
-input=15401,1
-input=15405,0
-input=15409,1
-input=15413,0
-input=15421,1
-input=15425,0
-input=15433,1
-input=15437,0
-input=15441,1
-input=15445,0
-input=15453,1
-input=15457,0
-input=15461,1
-input=15465,0
-input=15473,1
-input=15477,0
-input=15485,1
-input=15489,0
-input=15493,1
-input=15497,0
-input=15501,1
-input=15505,0
-input=15517,1
-input=15525,0
-input=15537,1
-input=15545,0
-input=15557,1
-input=15561,0
-input=15565,1
-input=15569,0
-input=15573,1
-input=15577,0
-input=15589,1
-input=15597,0
-input=15605,1
-input=15609,0
-input=15617,1
-input=15621,0
-input=15629,1
-input=15637,0
-input=15649,1
-input=15653,0
-input=15657,1
-input=15661,0
-input=15669,1
-input=15673,0
-input=15677,1
-input=15681,0
-input=15689,1
-input=15693,0
-input=15697,1
-input=15701,0
-input=15709,1
-input=15713,0
-input=15721,1
-input=15729,0
-input=15741,1
-input=15745,0
-input=15749,1
-input=15753,0
-input=15761,1
-input=15765,0
-input=15769,1
-input=15773,0
-input=15781,1
-input=15785,0
-input=15793,1
-input=15801,0
-input=15813,1
-input=15817,0
-input=15821,1
-input=15825,0
-input=15833,1
-input=15837,0
-input=15841,1
-input=15845,0
-input=15853,1
-input=15893,0
-input=15897,1
-input=15905,0
-input=15909,1
-input=15913,0
-input=15917,1
-input=15925,0
-input=15929,1
-input=15937,0
-input=15945,1
-input=15949,0
-input=15969,1
-input=15973,0
-input=15977,1
-input=15997,0
-input=16009,1
-input=16013,0
-input=16489,1
-input=16493,0
-input=16693,1
-input=16697,0
-input=16817,1
-input=16821,0
-input=16949,1
-input=16953,0
-input=17133,1
-input=17137,0
-input=17253,1
-input=17257,0
-input=17381,1
-input=17385,0
-input=17473,1
-input=17477,0
-input=17597,1
-input=17601,0
-input=17661,1
-input=17665,0
-input=18017,1
-input=18021,0
-input=18181,1
-input=18185,0
-input=18285,1
-input=18289,0
-input=18429,1
-input=18433,0
-input=18541,1
-input=18545,0
-input=18701,1
-input=18705,0
-input=18769,1
-input=18773,0
-input=18941,1
-input=18945,0
+input=14949,1
+input=14961,0
+input=15313,1
+input=15321,0
+input=15513,1
+input=15629,0
+input=15713,1
+input=15721,0
+input=15861,1
+input=15873,0
+input=16025,1
+input=16077,0
+input=16193,1
+input=16205,0
+input=16357,1
+input=16397,0
diff --git a/games/numdash/tests/replays/level5.txt b/games/numdash/tests/replays/level5.txt
index 1d47a59..5acd16f 100644
--- a/games/numdash/tests/replays/level5.txt
+++ b/games/numdash/tests/replays/level5.txt
@@ -1,348 +1,168 @@
-input=425,1
-input=429,0
-input=609,1
-input=613,0
-input=713,1
-input=717,0
-input=817,1
-input=821,0
-input=1037,1
-input=1041,0
-input=1317,1
-input=1321,0
-input=1405,1
-input=1409,0
-input=1649,1
-input=1653,0
-input=1813,1
-input=1817,0
-input=1949,1
-input=1953,0
-input=2041,1
-input=2045,0
-input=2201,1
-input=2205,0
-input=2301,1
-input=2305,0
-input=2549,1
-input=2553,0
-input=2689,1
-input=2693,0
-input=2917,1
-input=2921,0
-input=3057,1
-input=3061,0
-input=3161,1
-input=3165,0
-input=3289,1
-input=3293,0
-input=3497,1
-input=3501,0
-input=3589,1
-input=3593,0
+input=185,1
+input=189,0
+input=289,1
+input=293,0
+input=413,1
+input=417,0
+input=769,1
+input=773,0
+input=933,1
+input=937,0
+input=1113,1
+input=1117,0
+input=1281,1
+input=1285,0
+input=1601,1
+input=1605,0
+input=1749,1
+input=1753,0
+input=1881,1
+input=1885,0
+input=1977,1
+input=1981,0
+input=2157,1
+input=2161,0
+input=2349,1
+input=2353,0
+input=2481,1
+input=2485,0
+input=2577,1
+input=2581,0
+input=2749,1
+input=2753,0
+input=2909,1
+input=2913,0
+input=3089,1
+input=3093,0
+input=3237,1
+input=3241,0
+input=3549,1
+input=3553,0
 input=3681,1
 input=3685,0
-input=3841,1
-input=3845,0
+input=3777,1
+input=3781,0
 input=3957,1
 input=3961,0
-input=4053,1
-input=4057,0
-input=4721,1
-input=4725,0
-input=4813,1
-input=4817,0
-input=5065,1
-input=5069,0
-input=5321,1
-input=5325,0
-input=5413,1
-input=5417,0
-input=5501,1
-input=5505,0
-input=5609,1
-input=5613,0
-input=5709,1
-input=5713,0
-input=5873,1
-input=5877,0
-input=5981,1
-input=5985,0
-input=6149,1
-input=6153,0
-input=6241,1
-input=6245,0
-input=6473,1
-input=6477,0
-input=6589,1
-input=6593,0
-input=6701,1
-input=6705,0
-input=6853,1
-input=6857,0
-input=6945,1
-input=6949,0
-input=7373,1
-input=7377,0
-input=7465,1
-input=7469,0
-input=7533,1
-input=7537,0
-input=7601,1
-input=7605,0
-input=7669,1
-input=7673,0
-input=7837,1
-input=7841,0
-input=7929,1
-input=7933,0
-input=8045,1
-input=8049,0
-input=8177,1
-input=8181,0
-input=8385,1
-input=8389,0
-input=8549,1
-input=8553,0
-input=8641,1
-input=8645,0
-input=8729,1
-input=8733,0
-input=8801,1
-input=8805,0
-input=8937,1
-input=8941,0
-input=9217,1
-input=9221,0
-input=9309,1
-input=9313,0
-input=9425,1
-input=9429,0
-input=9609,1
-input=9613,0
-input=9769,1
-input=9773,0
-input=10069,1
-input=10073,0
-input=10185,1
-input=10189,0
-input=10289,1
-input=10293,0
-input=10393,1
-input=10397,0
-input=10689,1
-input=10733,0
-input=10741,1
-input=10753,0
-input=10757,1
-input=10765,0
-input=10769,1
-input=10773,0
-input=10777,1
-input=10781,0
-input=10785,1
-input=10801,0
-input=10805,1
+input=4157,1
+input=4161,0
+input=4221,1
+input=4225,0
+input=4413,1
+input=4417,0
+input=4549,1
+input=4553,0
+input=4645,1
+input=4649,0
+input=5761,1
+input=5797,0
+input=5801,1
+input=5809,0
+input=5901,1
+input=5949,0
+input=5961,1
+input=5965,0
+input=6693,1
+input=6733,0
+input=7005,1
+input=7045,0
+input=7497,1
+input=7517,0
+input=7521,1
+input=7609,0
+input=7817,1
+input=7833,0
+input=8089,1
+input=8097,0
+input=8157,1
+input=8185,0
+input=8357,1
+input=8365,0
+input=8533,1
+input=8541,0
+input=8689,1
+input=8697,0
+input=8881,1
+input=8893,0
+input=9045,1
+input=9085,0
+input=9213,1
+input=9225,0
+input=9581,1
+input=9589,0
+input=9737,1
+input=9745,0
+input=9821,1
+input=9829,0
+input=10013,1
+input=10025,0
+input=10337,1
+input=10345,0
+input=10401,1
+input=10429,0
+input=10797,1
 input=10809,0
-input=10813,1
-input=10833,0
-input=10837,1
-input=10853,0
-input=10857,1
-input=10861,0
-input=10865,1
-input=10869,0
-input=10873,1
-input=10893,0
-input=11033,1
+input=10929,1
+input=10945,0
+input=11061,1
 input=11077,0
-input=11081,1
-input=11089,0
-input=11093,1
-input=11105,0
-input=11109,1
-input=11113,0
-input=11117,1
-input=11165,0
-input=11169,1
-input=11177,0
-input=11185,1
-input=11197,0
-input=11205,1
+input=11197,1
 input=11209,0
-input=11389,1
-input=11441,0
-input=11449,1
-input=11461,0
-input=11465,1
-input=11469,0
-input=11473,1
+input=11329,1
+input=11345,0
+input=11461,1
 input=11477,0
-input=11485,1
-input=11489,0
-input=11493,1
-input=11497,0
-input=11501,1
-input=11529,0
-input=11613,1
-input=11637,0
-input=11641,1
-input=11645,0
-input=11649,1
-input=11653,0
-input=11657,1
-input=11661,0
-input=11669,1
-input=11673,0
-input=11677,1
-input=11681,0
-input=11689,1
-input=11693,0
-input=11697,1
-input=11701,0
-input=11709,1
-input=11713,0
-input=11717,1
-input=11721,0
-input=11725,1
-input=11741,0
-input=11745,1
-input=11749,0
-input=11753,1
-input=11761,0
-input=11765,1
-input=11769,0
-input=11773,1
-input=11781,0
-input=11785,1
-input=11813,0
-input=11817,1
-input=11821,0
-input=11825,1
-input=11841,0
-input=11845,1
-input=11849,0
-input=12001,1
-input=12065,0
-input=12069,1
-input=12093,0
-input=12097,1
-input=12117,0
-input=12125,1
-input=12129,0
-input=12345,1
-input=12413,0
-input=12425,1
-input=12437,0
-input=12785,1
-input=12829,0
-input=12953,1
-input=12989,0
-input=12997,1
-input=13001,0
-input=13009,1
-input=13021,0
-input=13025,1
-input=13029,0
-input=13033,1
-input=13041,0
-input=13049,1
-input=13057,0
-input=13317,1
-input=13357,0
-input=13441,1
-input=13473,0
-input=13477,1
-input=13481,0
-input=13489,1
-input=13497,0
-input=13517,1
-input=13553,0
-input=13557,1
-input=13561,0
-input=13565,1
-input=13569,0
-input=13573,1
-input=13581,0
-input=13585,1
-input=13605,0
-input=13929,1
-input=13933,0
-input=14021,1
-input=14025,0
-input=14109,1
-input=14113,0
-input=14457,1
-input=14461,0
-input=14581,1
-input=14585,0
-input=14689,1
-input=14693,0
-input=14805,1
-input=14809,0
-input=14897,1
-input=14901,0
-input=14989,1
-input=14993,0
-input=15089,1
-input=15093,0
+input=11597,1
+input=11609,0
+input=11729,1
+input=11745,0
+input=11865,1
+input=11877,0
+input=11997,1
+input=12009,0
+input=12129,1
+input=12145,0
+input=12265,1
+input=12277,0
+input=12397,1
+input=12409,0
+input=12529,1
+input=12545,0
+input=12665,1
+input=12677,0
+input=12797,1
+input=12809,0
+input=13249,1
+input=13257,0
+input=13505,1
+input=13521,0
+input=13781,1
+input=13789,0
+input=13869,1
+input=13877,0
+input=14153,1
+input=14165,0
+input=14425,1
+input=14433,0
+input=14625,1
+input=14633,0
+input=14793,1
+input=14805,0
+input=15105,1
+input=15117,0
 input=15269,1
-input=15273,0
-input=15405,1
-input=15409,0
-input=15501,1
-input=15505,0
-input=15689,1
-input=15693,0
-input=15809,1
-input=15813,0
-input=15953,1
-input=15957,0
-input=16161,1
-input=16165,0
-input=16301,1
-input=16305,0
-input=16437,1
-input=16441,0
-input=16537,1
-input=16541,0
-input=16669,1
-input=16673,0
-input=16765,1
-input=16769,0
-input=16857,1
-input=16861,0
-input=16953,1
-input=16957,0
-input=17245,1
-input=17249,0
-input=17313,1
-input=17317,0
-input=17457,1
-input=17461,0
-input=17569,1
-input=17573,0
-input=17705,1
-input=17709,0
-input=17821,1
-input=17825,0
-input=18053,1
-input=18057,0
-input=18157,1
-input=18161,0
-input=18457,1
-input=18461,0
-input=18561,1
-input=18565,0
-input=18813,1
-input=18817,0
-input=18977,1
-input=18981,0
-input=19161,1
-input=19165,0
-input=19329,1
-input=19333,0
-input=19461,1
-input=19465,0
-input=19705,1
-input=19709,0
+input=15309,0
+input=15449,1
+input=15457,0
+input=15649,1
+input=15657,0
+input=15737,1
+input=15745,0
+input=15937,1
+input=15945,0
+input=16085,1
+input=16093,0
+input=16217,1
+input=16229,0
+input=16313,1
+input=16365,0
diff --git a/games/numdash/tests/replays/level6.txt b/games/numdash/tests/replays/level6.txt
index 20d51b5..0e7e20c 100644
--- a/games/numdash/tests/replays/level6.txt
+++ b/games/numdash/tests/replays/level6.txt
@@ -1,328 +1,152 @@
-input=205,1
-input=209,0
-input=273,1
-input=277,0
-input=449,1
-input=453,0
-input=517,1
-input=521,0
-input=725,1
-input=729,0
-input=793,1
-input=797,0
-input=861,1
-input=865,0
-input=977,1
-input=981,0
-input=1117,1
-input=1121,0
-input=1345,1
-input=1349,0
-input=1441,1
-input=1445,0
-input=1741,1
-input=1745,0
-input=1809,1
-input=1813,0
-input=2061,1
-input=2065,0
-input=2361,1
-input=2365,0
-input=2477,1
-input=2481,0
-input=2549,1
-input=2553,0
-input=2733,1
-input=2737,0
-input=2849,1
-input=2853,0
-input=3077,1
-input=3081,0
+input=281,1
+input=285,0
+input=541,1
+input=545,0
+input=645,1
+input=649,0
+input=777,1
+input=781,0
+input=865,1
+input=869,0
+input=1149,1
+input=1153,0
+input=1425,1
+input=1429,0
+input=1489,1
+input=1493,0
+input=1689,1
+input=1693,0
+input=1777,1
+input=1781,0
+input=1969,1
+input=1973,0
+input=2333,1
+input=2337,0
+input=2513,1
+input=2517,0
+input=2713,1
+input=2717,0
+input=2801,1
+input=2805,0
+input=3001,1
+input=3005,0
 input=3149,1
 input=3153,0
-input=3309,1
-input=3313,0
-input=3377,1
-input=3381,0
-input=3481,1
-input=3485,0
-input=3793,1
-input=3797,0
-input=3885,1
-input=3889,0
-input=4073,1
-input=4077,0
-input=4141,1
-input=4145,0
-input=4237,1
-input=4241,0
-input=4433,1
-input=4437,0
-input=4741,1
-input=4745,0
-input=4833,1
-input=4837,0
-input=5685,1
-input=5689,0
-input=5777,1
-input=5781,0
-input=5869,1
-input=5873,0
-input=6009,1
-input=6013,0
-input=6217,1
-input=6221,0
-input=6353,1
-input=6357,0
-input=6445,1
-input=6449,0
-input=6537,1
-input=6541,0
-input=6629,1
-input=6633,0
-input=6721,1
-input=6725,0
-input=6857,1
-input=6861,0
-input=6997,1
-input=7001,0
-input=7133,1
-input=7137,0
-input=7273,1
-input=7277,0
-input=7365,1
-input=7369,0
-input=7457,1
-input=7461,0
-input=7617,1
-input=7621,0
-input=7801,1
-input=7805,0
-input=7965,1
-input=7969,0
-input=8149,1
-input=8153,0
-input=8241,1
-input=8245,0
-input=8377,1
-input=8381,0
-input=8493,1
-input=8497,0
-input=8585,1
-input=8589,0
-input=8745,1
-input=8749,0
-input=8905,1
-input=8909,0
-input=9045,1
-input=9049,0
-input=9161,1
-input=9165,0
-input=9233,1
-input=9237,0
-input=9325,1
-input=9329,0
-input=9417,1
-input=9421,0
-input=9577,1
-input=9581,0
-input=9737,1
-input=9741,0
-input=9897,1
-input=9901,0
-input=9989,1
-input=9993,0
-input=10085,1
-input=10089,0
+input=3509,1
+input=3513,0
+input=3713,1
+input=3717,0
+input=3889,1
+input=3893,0
+input=4025,1
+input=4029,0
+input=4177,1
+input=4181,0
+input=4377,1
+input=4381,0
+input=6121,1
+input=6125,0
+input=6257,1
+input=6261,0
+input=6265,1
+input=6269,0
+input=6389,1
+input=6393,0
+input=6401,1
+input=6405,0
+input=6845,1
+input=6849,0
+input=6993,1
+input=6997,0
+input=7349,1
+input=7353,0
+input=7481,1
+input=7485,0
+input=7489,1
+input=7493,0
+input=7577,1
+input=7581,0
+input=7749,1
+input=7753,0
+input=8193,1
+input=8197,0
+input=8469,1
+input=8473,0
+input=8657,1
+input=8661,0
+input=8821,1
+input=8825,0
+input=8993,1
+input=8997,0
+input=9001,1
+input=9005,0
+input=9125,1
+input=9129,0
+input=9133,1
+input=9137,0
+input=9221,1
+input=9225,0
+input=9401,1
+input=9405,0
+input=9557,1
+input=9561,0
+input=9621,1
+input=9625,0
+input=9825,1
+input=9829,0
+input=9913,1
+input=9917,0
+input=10113,1
+input=10117,0
 input=10177,1
 input=10181,0
-input=10317,1
-input=10321,0
-input=10421,1
-input=10425,0
-input=10521,1
-input=10525,0
-input=10661,1
-input=10665,0
-input=10753,1
-input=10757,0
-input=10841,1
-input=10845,0
-input=11217,1
-input=11269,0
-input=11281,1
-input=11289,0
-input=11417,1
-input=11469,0
-input=11473,1
-input=11513,0
-input=11517,1
-input=11521,0
-input=11633,1
-input=11661,0
-input=11665,1
-input=11677,0
-input=11681,1
-input=11697,0
-input=11709,1
-input=11725,0
-input=11733,1
-input=11745,0
-input=11749,1
-input=11753,0
-input=11757,1
-input=11765,0
-input=11769,1
-input=11789,0
-input=11793,1
-input=11797,0
-input=11925,1
-input=11961,0
-input=11965,1
-input=11969,0
-input=11977,1
-input=11997,0
-input=12001,1
-input=12005,0
-input=12009,1
-input=12013,0
-input=12021,1
-input=12025,0
-input=12033,1
-input=12037,0
-input=12041,1
-input=12045,0
-input=12053,1
-input=12057,0
-input=12061,1
-input=12065,0
-input=12073,1
-input=12105,0
-input=12109,1
-input=12113,0
-input=12117,1
-input=12145,0
-input=12269,1
-input=12297,0
-input=12301,1
-input=12321,0
-input=12349,1
-input=12365,0
-input=12369,1
-input=12373,0
-input=12381,1
-input=12385,0
-input=12389,1
-input=12393,0
-input=12401,1
-input=12405,0
-input=12409,1
-input=12413,0
-input=12417,1
-input=12421,0
-input=12433,1
-input=12437,0
-input=12441,1
-input=12445,0
-input=12449,1
-input=12453,0
-input=12461,1
-input=12465,0
-input=12473,1
-input=12477,0
-input=12481,1
-input=12485,0
-input=12493,1
-input=12497,0
-input=12501,1
-input=12513,0
-input=12517,1
-input=12521,0
-input=12525,1
-input=12545,0
-input=12549,1
-input=12553,0
-input=12557,1
-input=12569,0
-input=12577,1
-input=12581,0
-input=12681,1
-input=12749,0
-input=13001,1
-input=13061,0
-input=13065,1
-input=13069,0
-input=13325,1
-input=13393,0
-input=13537,1
-input=13585,0
-input=13597,1
-input=13601,0
-input=13849,1
-input=13853,0
-input=13953,1
-input=13957,0
-input=14121,1
-input=14125,0
-input=14297,1
-input=14301,0
-input=14529,1
-input=14533,0
-input=14773,1
-input=14777,0
-input=15073,1
+input=10373,1
+input=10377,0
+input=10505,1
+input=10509,0
+input=10601,1
+input=10605,0
+input=10781,1
+input=10785,0
+input=10925,1
+input=10929,0
+input=10933,1
+input=10937,0
+input=11089,1
+input=11093,0
+input=11269,1
+input=11273,0
+input=13341,1
+input=13377,0
+input=13381,1
+input=13389,0
+input=14157,1
+input=14273,0
+input=14361,1
+input=14365,0
+input=14489,1
+input=14517,0
+input=14745,1
+input=14765,0
+input=14769,1
+input=14857,0
+input=15061,1
 input=15077,0
-input=15209,1
-input=15213,0
-input=15321,1
-input=15325,0
-input=15481,1
-input=15485,0
-input=15673,1
-input=15677,0
-input=15901,1
-input=15905,0
-input=16065,1
-input=16069,0
-input=16161,1
-input=16165,0
-input=16281,1
-input=16285,0
-input=16525,1
-input=16529,0
-input=16641,1
-input=16645,0
-input=16709,1
-input=16713,0
-input=17101,1
-input=17105,0
-input=17309,1
-input=17313,0
-input=17473,1
-input=17477,0
-input=17541,1
-input=17545,0
-input=17689,1
-input=17693,0
-input=17793,1
-input=17797,0
-input=17885,1
-input=17889,0
-input=17985,1
-input=17989,0
-input=18093,1
-input=18097,0
-input=18257,1
-input=18261,0
-input=18353,1
-input=18357,0
-input=18473,1
-input=18477,0
-input=18649,1
-input=18653,0
-input=18757,1
-input=18761,0
-input=18881,1
-input=18885,0
-input=18973,1
-input=18977,0
+input=15337,1
+input=15345,0
+input=15485,1
+input=15493,0
+input=15617,1
+input=15629,0
+input=15713,1
+input=15765,0
+input=15885,1
+input=15893,0
+input=16045,1
+input=16085,0
+input=16225,1
+input=16233,0
+input=16389,1
+input=16409,0
+input=16413,1
+input=16501,0
diff --git a/games/numdash/tests/replays/level7.txt b/games/numdash/tests/replays/level7.txt
index 813d789..bac64c0 100644
--- a/games/numdash/tests/replays/level7.txt
+++ b/games/numdash/tests/replays/level7.txt
@@ -1,471 +1,657 @@
-input=361,1
-input=365,0
-input=493,1
-input=497,0
-input=585,1
-input=589,0
-input=749,1
-input=753,0
-input=817,1
-input=821,0
-input=1001,1
-input=1005,0
-input=1301,1
-input=1305,0
-input=1461,1
-input=1465,0
-input=1645,1
-input=1649,0
-input=1773,1
-input=1777,0
-input=1877,1
-input=1881,0
-input=2037,1
-input=2041,0
-input=2201,1
-input=2205,0
-input=2293,1
-input=2297,0
-input=2421,1
-input=2425,0
-input=2505,1
-input=2509,0
-input=2685,1
-input=2689,0
-input=2749,1
-input=2753,0
-input=2813,1
-input=2817,0
-input=3009,1
-input=3013,0
-input=3169,1
-input=3173,0
-input=3261,1
-input=3265,0
-input=3421,1
-input=3425,0
-input=3561,1
-input=3565,0
-input=3725,1
-input=3729,0
-input=3881,1
-input=3885,0
-input=3973,1
-input=3977,0
-input=4133,1
-input=4137,0
-input=4213,1
-input=4217,0
-input=4525,1
-input=4529,0
-input=4605,1
-input=4609,0
-input=4849,1
-input=4853,0
-input=5009,1
-input=5013,0
-input=5101,1
-input=5105,0
-input=5245,1
-input=5297,0
-input=5305,1
-input=5317,0
-input=5325,1
-input=5329,0
+input=201,1
+input=205,0
+input=357,1
+input=361,0
+input=525,1
+input=529,0
+input=889,1
+input=893,0
+input=957,1
+input=961,0
+input=1153,1
+input=1157,0
+input=1357,1
+input=1361,0
+input=1489,1
+input=1493,0
+input=1801,1
+input=1805,0
+input=1949,1
+input=1953,0
+input=2081,1
+input=2085,0
+input=2177,1
+input=2181,0
+input=2349,1
+input=2353,0
+input=2509,1
+input=2513,0
+input=2689,1
+input=2693,0
+input=2837,1
+input=2841,0
+input=2969,1
+input=2973,0
+input=3065,1
+input=3069,0
+input=3237,1
+input=3241,0
+input=3397,1
+input=3401,0
+input=3641,1
+input=3645,0
+input=3773,1
+input=3777,0
+input=3917,1
+input=3921,0
+input=4061,1
+input=4065,0
+input=4185,1
+input=4189,0
+input=4241,1
+input=4245,0
+input=4401,1
+input=4405,0
+input=4473,1
+input=4477,0
+input=4625,1
+input=4629,0
+input=4757,1
+input=4761,0
+input=4901,1
+input=4905,0
+input=5057,1
+input=5061,0
+input=5189,1
+input=5193,0
 input=5333,1
 input=5337,0
-input=5341,1
-input=5345,0
-input=5349,1
-input=5353,0
-input=5361,1
-input=5365,0
-input=5373,1
-input=5381,0
-input=5393,1
-input=5397,0
-input=5401,1
-input=5405,0
-input=5413,1
-input=5417,0
-input=5421,1
-input=5425,0
-input=5433,1
-input=5437,0
-input=5441,1
-input=5445,0
-input=5453,1
-input=5457,0
-input=5465,1
-input=5469,0
-input=5473,1
-input=5477,0
-input=5481,1
-input=5485,0
-input=5497,1
-input=5505,0
-input=5517,1
-input=5521,0
-input=5525,1
-input=5529,0
-input=5533,1
-input=5537,0
-input=5545,1
-input=5549,0
-input=5557,1
-input=5561,0
-input=5565,1
-input=5569,0
-input=5577,1
-input=5581,0
-input=5585,1
-input=5589,0
-input=5597,1
-input=5601,0
-input=5605,1
-input=5609,0
-input=5617,1
-input=5621,0
-input=5629,1
-input=5633,0
-input=5637,1
-input=5641,0
-input=5645,1
-input=5649,0
-input=5653,1
-input=5661,0
-input=5665,1
-input=5681,0
-input=5685,1
-input=5689,0
-input=5697,1
-input=5729,0
-input=5757,1
-input=5773,0
-input=5777,1
-input=5781,0
-input=5949,1
+input=5485,1
+input=5489,0
+input=5745,1
+input=5749,0
+input=5905,1
+input=5909,0
+input=5957,1
 input=5961,0
-input=5965,1
-input=5969,0
-input=5973,1
-input=5981,0
-input=5989,1
-input=6001,0
-input=6005,1
-input=6013,0
-input=6021,1
-input=6029,0
-input=6033,1
-input=6037,0
-input=6041,1
-input=6045,0
-input=6049,1
-input=6057,0
-input=6061,1
-input=6065,0
-input=6073,1
-input=6081,0
-input=6085,1
-input=6093,0
-input=6101,1
-input=6109,0
-input=6113,1
-input=6117,0
-input=6121,1
-input=6125,0
-input=6129,1
-input=6133,0
-input=6137,1
-input=6141,0
-input=6145,1
-input=6153,0
-input=6157,1
-input=6161,0
-input=6165,1
-input=6169,0
-input=6173,1
-input=6177,0
-input=6181,1
-input=6189,0
-input=6197,1
-input=6225,0
-input=6229,1
-input=6241,0
-input=6249,1
-input=6253,0
-input=6257,1
-input=6261,0
-input=6265,1
-input=6269,0
-input=6277,1
-input=6285,0
-input=6301,1
-input=6305,0
-input=6309,1
-input=6313,0
-input=6321,1
-input=6329,0
-input=6337,1
-input=6341,0
-input=6345,1
-input=6349,0
-input=6353,1
-input=6357,0
-input=6361,1
-input=6381,0
-input=6385,1
-input=6421,0
-input=6425,1
-input=6429,0
-input=6585,1
-input=6629,0
-input=6633,1
-input=6637,0
-input=6641,1
-input=6661,0
-input=6801,1
-input=6829,0
-input=6833,1
-input=6853,0
-input=6869,1
-input=6881,0
-input=6885,1
-input=6905,0
-input=6913,1
-input=6929,0
-input=6933,1
-input=6941,0
-input=6945,1
-input=6953,0
-input=6957,1
-input=6961,0
-input=6977,1
-input=6997,0
-input=7001,1
-input=7009,0
-input=7161,1
-input=7205,0
-input=7209,1
-input=7229,0
-input=7233,1
-input=7241,0
-input=7365,1
-input=7445,0
-input=7449,1
-input=7453,0
-input=7457,1
-input=7477,0
-input=7481,1
-input=7493,0
-input=7509,1
-input=7513,0
-input=7597,1
-input=7621,0
-input=7625,1
-input=7637,0
-input=7653,1
-input=7693,0
-input=7697,1
-input=7701,0
-input=7717,1
-input=7737,0
-input=7741,1
-input=7745,0
-input=7853,1
-input=7857,0
-input=7861,1
-input=7901,0
-input=7945,1
-input=7977,0
-input=8081,1
-input=8149,0
-input=8269,1
+input=6993,1
+input=7033,0
+input=7117,1
+input=7157,0
+input=7745,1
+input=7785,0
+input=8037,1
+input=8109,0
+input=8113,1
+input=8117,0
+input=8133,1
+input=8141,0
+input=8157,1
+input=8161,0
+input=8189,1
+input=8193,0
+input=8197,1
+input=8201,0
+input=8245,1
+input=8249,0
+input=8253,1
+input=8257,0
+input=8265,1
+input=8269,0
+input=8277,1
+input=8285,0
+input=8293,1
 input=8301,0
-input=8337,1
-input=8393,0
-input=8497,1
-input=8529,0
+input=8305,1
+input=8309,0
+input=8321,1
+input=8333,0
+input=8349,1
+input=8385,0
+input=8393,1
+input=8413,0
+input=8421,1
+input=8425,0
+input=8445,1
+input=8457,0
+input=8461,1
+input=8473,0
+input=8477,1
+input=8481,0
+input=8513,1
+input=8549,0
+input=8557,1
+input=8581,0
+input=8585,1
+input=8589,0
+input=8593,1
+input=8597,0
 input=8637,1
 input=8645,0
-input=8809,1
-input=8821,0
-input=8965,1
-input=8977,0
-input=9145,1
-input=9157,0
+input=8649,1
+input=8653,0
+input=8657,1
+input=8661,0
+input=8681,1
+input=8689,0
+input=8693,1
+input=8697,0
+input=8705,1
+input=8709,0
+input=8725,1
+input=8737,0
+input=8757,1
+input=8761,0
+input=8765,1
+input=8781,0
+input=8785,1
+input=8789,0
+input=8801,1
+input=8809,0
+input=8825,1
+input=8829,0
+input=8849,1
+input=8861,0
+input=8873,1
+input=8893,0
+input=8897,1
+input=8925,0
+input=8933,1
+input=8941,0
+input=8945,1
+input=8953,0
+input=8977,1
+input=8981,0
+input=8997,1
+input=9001,0
+input=9013,1
+input=9017,0
+input=9049,1
+input=9053,0
+input=9061,1
+input=9093,0
+input=9129,1
+input=9141,0
+input=9149,1
+input=9153,0
+input=9161,1
+input=9173,0
+input=9213,1
+input=9217,0
 input=9237,1
-input=9249,0
-input=9377,1
-input=9385,0
+input=9245,0
+input=9257,1
+input=9261,0
+input=9309,1
+input=9317,0
+input=9325,1
+input=9329,0
+input=9333,1
+input=9341,0
+input=9357,1
+input=9361,0
+input=9393,1
+input=9421,0
+input=9425,1
+input=9429,0
+input=9437,1
+input=9441,0
+input=9453,1
+input=9457,0
+input=9465,1
+input=9469,0
+input=9489,1
+input=9493,0
+input=9501,1
+input=9509,0
+input=9513,1
+input=9521,0
 input=9525,1
-input=9537,0
-input=9649,1
-input=9661,0
-input=9741,1
+input=9533,0
+input=9553,1
+input=9557,0
+input=9569,1
+input=9573,0
+input=9577,1
+input=9581,0
+input=9653,1
+input=9657,0
+input=9697,1
+input=9701,0
+input=9705,1
+input=9709,0
+input=9717,1
+input=9729,0
+input=9737,1
+input=9745,0
+input=9749,1
+input=9757,0
+input=9765,1
 input=9773,0
-input=9809,1
+input=9777,1
+input=9801,0
+input=9805,1
+input=9813,0
+input=9825,1
 input=9833,0
+input=9837,1
+input=9853,0
+input=9873,1
+input=9889,0
+input=9893,1
+input=9905,0
+input=9917,1
+input=9921,0
 input=9925,1
-input=9937,0
-input=10109,1
-input=10117,0
-input=10205,1
-input=10241,0
-input=10369,1
-input=10377,0
+input=9933,0
+input=9937,1
+input=9941,0
+input=9949,1
+input=9953,0
+input=9969,1
+input=9977,0
+input=9989,1
+input=9997,0
+input=10033,1
+input=10041,0
+input=10097,1
+input=10109,0
+input=10125,1
+input=10133,0
+input=10137,1
+input=10153,0
+input=10169,1
+input=10173,0
+input=10177,1
+input=10181,0
+input=10185,1
+input=10193,0
+input=10217,1
+input=10225,0
+input=10249,1
+input=10253,0
+input=10265,1
+input=10269,0
+input=10277,1
+input=10297,0
+input=10301,1
+input=10325,0
+input=10329,1
+input=10349,0
+input=10353,1
+input=10369,0
+input=10429,1
+input=10433,0
+input=10437,1
+input=10445,0
+input=10457,1
+input=10473,0
+input=10493,1
+input=10497,0
 input=10505,1
-input=10517,0
-input=10693,1
-input=10701,0
+input=10521,0
+input=10529,1
+input=10533,0
+input=10541,1
+input=10545,0
+input=10561,1
+input=10565,0
+input=10581,1
+input=10585,0
+input=10601,1
+input=10605,0
+input=10613,1
+input=10617,0
+input=10621,1
+input=10625,0
+input=10629,1
+input=10637,0
+input=10653,1
+input=10657,0
+input=10665,1
+input=10669,0
+input=10677,1
+input=10681,0
+input=10685,1
+input=10705,0
+input=10709,1
+input=10713,0
+input=10721,1
+input=10725,0
+input=10733,1
+input=10737,0
+input=10741,1
+input=10749,0
+input=10753,1
+input=10757,0
+input=10769,1
+input=10773,0
+input=10777,1
+input=10785,0
+input=10789,1
+input=10793,0
 input=10829,1
-input=10841,0
-input=10897,1
-input=10909,0
-input=11005,1
-input=11013,0
-input=11153,1
-input=11165,0
-input=11277,1
-input=11289,0
-input=11421,1
-input=11433,0
-input=11565,1
-input=11573,0
-input=11689,1
-input=11721,0
-input=11729,1
-input=11785,0
+input=10833,0
+input=10841,1
+input=10849,0
+input=10853,1
+input=10857,0
+input=10865,1
+input=10869,0
+input=10909,1
+input=10921,0
+input=10929,1
+input=10953,0
+input=10961,1
+input=10965,0
+input=10985,1
+input=10993,0
+input=11001,1
+input=11005,0
+input=11013,1
+input=11017,0
+input=11033,1
+input=11037,0
+input=11085,1
+input=11113,0
+input=11121,1
+input=11125,0
+input=11129,1
+input=11137,0
+input=11177,1
+input=11209,0
+input=11213,1
+input=11221,0
+input=11245,1
+input=11261,0
+input=11285,1
+input=11293,0
+input=11305,1
+input=11317,0
+input=11321,1
+input=11325,0
+input=11353,1
+input=11381,0
+input=11385,1
+input=11393,0
+input=11397,1
+input=11429,0
+input=11437,1
+input=11441,0
+input=11457,1
+input=11461,0
+input=11465,1
+input=11469,0
+input=11481,1
+input=11485,0
+input=11497,1
+input=11509,0
+input=11513,1
+input=11517,0
+input=11521,1
+input=11525,0
+input=11529,1
+input=11541,0
+input=11553,1
+input=11565,0
+input=11573,1
+input=11581,0
+input=11593,1
+input=11609,0
+input=11637,1
+input=11649,0
+input=11657,1
+input=11661,0
+input=11665,1
+input=11677,0
+input=11705,1
+input=11709,0
+input=11749,1
+input=11753,0
+input=11757,1
+input=11761,0
+input=11769,1
+input=11773,0
+input=11777,1
+input=11781,0
+input=11785,1
+input=11789,0
+input=11793,1
+input=11801,0
+input=11809,1
+input=11817,0
+input=11821,1
+input=11829,0
+input=11833,1
+input=11841,0
+input=11845,1
+input=11849,0
+input=11853,1
+input=11869,0
+input=11873,1
+input=11889,0
 input=11893,1
 input=11901,0
-input=11985,1
-input=12017,0
-input=12145,1
+input=11905,1
+input=11913,0
+input=11929,1
+input=11937,0
+input=11945,1
+input=11949,0
+input=11957,1
+input=11961,0
+input=11965,1
+input=11969,0
+input=11973,1
+input=11981,0
+input=11989,1
+input=11993,0
+input=11997,1
+input=12009,0
+input=12017,1
+input=12021,0
+input=12025,1
+input=12045,0
+input=12049,1
+input=12053,0
+input=12057,1
+input=12069,0
+input=12073,1
+input=12081,0
+input=12085,1
+input=12089,0
+input=12093,1
+input=12137,0
+input=12149,1
+input=12153,0
+input=12161,1
+input=12169,0
+input=12173,1
 input=12177,0
-input=12285,1
+input=12181,1
+input=12205,0
+input=12209,1
+input=12217,0
+input=12221,1
+input=12225,0
+input=12233,1
+input=12237,0
+input=12245,1
+input=12257,0
+input=12281,1
+input=12285,0
+input=12293,1
+input=12297,0
+input=12305,1
+input=12309,0
+input=12317,1
+input=12321,0
+input=12333,1
 input=12341,0
-input=12445,1
-input=12501,0
-input=12621,1
-input=12665,0
-input=12713,1
-input=12765,0
-input=12873,1
-input=12917,0
+input=12345,1
+input=12349,0
+input=12357,1
+input=12361,0
+input=12369,1
+input=12373,0
+input=12377,1
+input=12385,0
+input=12389,1
+input=12393,0
+input=12405,1
+input=12413,0
+input=12437,1
+input=12449,0
+input=12457,1
+input=12469,0
+input=12485,1
+input=12493,0
+input=12501,1
+input=12509,0
+input=12513,1
+input=12537,0
+input=12541,1
+input=12553,0
+input=12557,1
+input=12561,0
+input=12565,1
+input=12573,0
+input=12585,1
+input=12605,0
+input=12617,1
+input=12629,0
+input=12641,1
+input=12645,0
+input=12653,1
+input=12657,0
+input=12661,1
+input=12669,0
+input=12673,1
+input=12677,0
+input=12681,1
+input=12685,0
+input=12689,1
+input=12697,0
+input=12701,1
+input=12717,0
+input=12721,1
+input=12725,0
+input=12741,1
+input=12773,0
+input=12777,1
+input=12789,0
+input=12793,1
+input=12821,0
+input=12829,1
+input=12837,0
+input=12845,1
+input=12849,0
+input=12857,1
+input=12861,0
+input=12865,1
+input=12869,0
+input=12877,1
+input=12881,0
+input=12893,1
+input=12897,0
+input=12901,1
+input=12909,0
+input=12921,1
+input=12933,0
+input=12945,1
+input=12961,0
+input=12977,1
+input=12993,0
+input=13001,1
+input=13009,0
+input=13017,1
+input=13029,0
+input=13033,1
+input=13037,0
+input=13049,1
+input=13053,0
+input=13057,1
+input=13061,0
 input=13065,1
+input=13073,0
+input=13085,1
 input=13097,0
-input=13101,1
-input=13117,0
-input=13121,1
-input=13141,0
-input=13149,1
+input=13105,1
+input=13125,0
+input=13133,1
+input=13137,0
+input=13145,1
 input=13153,0
-input=13161,1
-input=13165,0
-input=13169,1
-input=13173,0
-input=13181,1
-input=13185,0
-input=13189,1
-input=13193,0
-input=13201,1
-input=13205,0
-input=13209,1
-input=13213,0
-input=13221,1
+input=13157,1
+input=13161,0
+input=13193,1
+input=13197,0
+input=13205,1
+input=13209,0
+input=13217,1
 input=13225,0
 input=13229,1
-input=13233,0
+input=13237,0
 input=13241,1
 input=13245,0
 input=13253,1
 input=13257,0
 input=13261,1
-input=13265,0
+input=13269,0
 input=13273,1
 input=13277,0
-input=13281,1
-input=13285,0
-input=13293,1
+input=13285,1
 input=13297,0
-input=13301,1
-input=13305,0
-input=13313,1
-input=13317,0
-input=13325,1
-input=13329,0
-input=13333,1
+input=13329,1
 input=13337,0
-input=13345,1
-input=13349,0
-input=13353,1
-input=13357,0
-input=13365,1
+input=13341,1
 input=13369,0
 input=13373,1
 input=13377,0
-input=13385,1
-input=13389,0
-input=13397,1
-input=13401,0
-input=13405,1
-input=13409,0
-input=13413,1
-input=13417,0
-input=13429,1
-input=13437,0
-input=13449,1
-input=13453,0
+input=13381,1
+input=13393,0
+input=13409,1
+input=13413,0
+input=13417,1
+input=13421,0
+input=13425,1
+input=13445,0
 input=13457,1
 input=13461,0
-input=13465,1
-input=13469,0
-input=13477,1
-input=13481,0
-input=13489,1
-input=13493,0
-input=13497,1
+input=13469,1
+input=13473,0
+input=13485,1
 input=13501,0
-input=13509,1
-input=13513,0
-input=13517,1
-input=13521,0
-input=13529,1
-input=13533,0
-input=13537,1
-input=13541,0
-input=13549,1
-input=13553,0
+input=13513,1
+input=13517,0
+input=13525,1
+input=13537,0
+input=13541,1
+input=13545,0
+input=13553,1
+input=13557,0
 input=13561,1
-input=13565,0
-input=13569,1
-input=13573,0
-input=13581,1
-input=13585,0
-input=13589,1
-input=13593,0
-input=13601,1
-input=13605,0
+input=13569,0
+input=13577,1
+input=13589,0
+input=13593,1
+input=13601,0
 input=13609,1
 input=13613,0
-input=13621,1
-input=13625,0
-input=13633,1
-input=13637,0
-input=13641,1
-input=13645,0
+input=13629,1
+input=13641,0
 input=13649,1
 input=13653,0
-input=13665,1
+input=13657,1
+input=13665,0
+input=13669,1
 input=13673,0
-input=13685,1
-input=13689,0
-input=13693,1
+input=13689,1
 input=13697,0
 input=13701,1
-input=13705,0
-input=13713,1
-input=13717,0
+input=13709,0
+input=13717,1
+input=13721,0
 input=13725,1
 input=13729,0
 input=13733,1
@@ -477,350 +663,160 @@ input=13757,0
 input=13765,1
 input=13769,0
 input=13773,1
-input=13777,0
-input=13785,1
-input=13789,0
-input=13797,1
-input=13801,0
-input=13805,1
-input=13809,0
+input=13785,0
+input=13793,1
+input=13797,0
+input=13801,1
+input=13805,0
 input=13817,1
-input=13821,0
-input=13825,1
-input=13829,0
+input=13825,0
+input=13829,1
+input=13833,0
 input=13837,1
-input=13841,0
-input=13845,1
 input=13849,0
 input=13857,1
 input=13861,0
-input=13869,1
+input=13865,1
 input=13877,0
-input=13889,1
-input=13893,0
-input=13901,1
+input=13885,1
+input=13889,0
+input=13897,1
+input=13901,0
+input=13905,1
 input=13909,0
-input=13921,1
-input=13929,0
+input=13917,1
+input=13921,0
 input=13941,1
 input=13945,0
 input=13949,1
-input=13953,0
-input=13961,1
-input=13965,0
-input=13969,1
-input=13973,0
-input=13981,1
-input=13985,0
-input=13989,1
-input=13993,0
-input=14001,1
-input=14005,0
-input=14009,1
-input=14013,0
+input=13957,0
+input=13985,1
+input=13989,0
+input=13997,1
+input=14009,0
+input=14013,1
+input=14017,0
 input=14021,1
-input=14025,0
-input=14033,1
-input=14037,0
-input=14041,1
-input=14045,0
+input=14029,0
+input=14045,1
+input=14049,0
 input=14053,1
 input=14057,0
 input=14061,1
 input=14065,0
-input=14073,1
+input=14069,1
 input=14077,0
-input=14081,1
-input=14085,0
+input=14085,1
+input=14089,0
 input=14093,1
-input=14097,0
+input=14101,0
 input=14105,1
-input=14113,0
-input=14125,1
-input=14129,0
-input=14133,1
-input=14137,0
-input=14145,1
+input=14125,0
+input=14129,1
 input=14149,0
-input=14157,1
+input=14153,1
 input=14165,0
-input=14177,1
-input=14181,0
 input=14185,1
 input=14189,0
 input=14197,1
 input=14201,0
 input=14205,1
-input=14209,0
-input=14213,1
-input=14217,0
-input=14229,1
-input=14233,0
-input=14237,1
-input=14241,0
-input=14245,1
-input=14249,0
-input=14257,1
-input=14261,0
-input=14269,1
-input=14273,0
-input=14277,1
-input=14281,0
-input=14285,1
-input=14289,0
+input=14221,0
 input=14301,1
 input=14309,0
+input=14313,1
+input=14317,0
 input=14321,1
 input=14325,0
 input=14329,1
-input=14333,0
-input=14337,1
-input=14341,0
-input=14353,1
+input=14345,0
+input=14349,1
 input=14361,0
-input=14369,1
-input=14373,0
-input=14381,1
+input=14365,1
 input=14385,0
-input=14393,1
-input=14401,0
-input=14413,1
-input=14417,0
+input=14389,1
+input=14393,0
+input=14401,1
+input=14405,0
 input=14421,1
 input=14425,0
-input=14433,1
-input=14441,0
-input=14453,1
-input=14457,0
+input=14429,1
+input=14433,0
+input=14445,1
+input=14453,0
 input=14465,1
-input=14469,0
-input=14473,1
 input=14477,0
 input=14481,1
 input=14485,0
-input=14493,1
-input=14497,0
-input=14505,1
-input=14513,0
-input=14525,1
-input=14529,0
+input=14497,1
+input=14505,0
+input=14517,1
+input=14525,0
 input=14537,1
-input=14545,0
-input=14557,1
-input=14561,0
-input=14565,1
-input=14569,0
-input=14573,1
-input=14577,0
-input=14585,1
+input=14541,0
+input=14545,1
+input=14549,0
+input=14553,1
+input=14557,0
+input=14581,1
 input=14589,0
-input=14597,1
-input=14601,0
-input=14605,1
-input=14609,0
 input=14617,1
 input=14621,0
 input=14625,1
-input=14629,0
+input=14633,0
 input=14637,1
 input=14641,0
-input=14649,1
-input=14653,0
-input=14657,1
+input=14645,1
 input=14661,0
-input=14665,1
-input=14669,0
-input=14681,1
-input=14689,0
+input=14673,1
+input=14685,0
+input=14693,1
+input=14697,0
 input=14701,1
-input=14709,0
-input=14721,1
-input=14725,0
-input=14729,1
-input=14733,0
-input=14741,1
-input=14749,0
-input=14761,1
-input=14765,0
-input=14773,1
-input=14781,0
-input=14793,1
-input=14797,0
-input=14801,1
+input=14705,0
+input=14713,1
+input=14721,0
+input=14733,1
+input=14741,0
+input=14745,1
+input=14785,0
+input=14797,1
 input=14805,0
-input=14809,1
-input=14813,0
 input=14821,1
-input=14825,0
-input=14833,1
-input=14837,0
-input=14841,1
-input=14845,0
-input=14853,1
-input=14857,0
-input=14861,1
-input=14865,0
-input=14873,1
-input=14877,0
-input=14885,1
-input=14889,0
-input=14893,1
-input=14897,0
-input=14901,1
+input=14829,0
+input=14837,1
+input=14849,0
+input=14857,1
+input=14861,0
+input=14877,1
 input=14905,0
-input=14917,1
-input=14925,0
-input=14937,1
-input=14945,0
+input=14909,1
+input=14917,0
+input=14929,1
+input=14941,0
 input=14957,1
 input=14961,0
-input=14965,1
-input=14969,0
-input=14973,1
-input=14977,0
-input=14989,1
-input=14997,0
-input=15009,1
-input=15017,0
-input=15029,1
-input=15033,0
-input=15037,1
-input=15041,0
-input=15045,1
-input=15049,0
-input=15057,1
-input=15061,0
-input=15069,1
-input=15073,0
-input=15077,1
-input=15081,0
-input=15089,1
+input=14969,1
+input=14981,0
+input=14985,1
+input=14993,0
+input=14997,1
+input=15009,0
+input=15013,1
+input=15025,0
+input=15065,1
+input=15077,0
+input=15081,1
 input=15093,0
-input=15097,1
-input=15101,0
-input=15109,1
-input=15113,0
+input=15101,1
+input=15117,0
 input=15121,1
-input=15129,0
-input=15141,1
-input=15145,0
-input=15149,1
-input=15153,0
-input=15161,1
-input=15165,0
-input=15173,1
-input=15181,0
+input=15173,0
 input=15193,1
 input=15197,0
-input=15201,1
-input=15205,0
-input=15209,1
-input=15213,0
-input=15225,1
-input=15233,0
-input=15241,1
-input=15245,0
-input=15253,1
-input=15257,0
-input=15265,1
-input=15273,0
-input=15285,1
-input=15289,0
-input=15293,1
-input=15297,0
-input=15305,1
-input=15309,0
-input=15313,1
-input=15317,0
-input=15325,1
-input=15329,0
-input=15333,1
-input=15337,0
-input=15345,1
-input=15349,0
-input=15357,1
-input=15365,0
-input=15377,1
-input=15381,0
-input=15385,1
-input=15389,0
-input=15397,1
-input=15401,0
-input=15405,1
-input=15409,0
-input=15413,1
-input=15429,0
-input=15433,1
-input=15437,0
-input=15441,1
-input=15497,0
-input=15501,1
-input=15505,0
-input=15589,1
-input=15593,0
-input=15773,1
-input=15777,0
-input=15865,1
-input=15869,0
-input=16001,1
-input=16005,0
-input=16165,1
-input=16169,0
-input=16393,1
-input=16397,0
-input=16509,1
-input=16513,0
-input=16669,1
-input=16673,0
-input=16761,1
-input=16765,0
-input=16845,1
-input=16849,0
-input=17041,1
-input=17045,0
-input=17145,1
-input=17149,0
-input=17237,1
-input=17241,0
-input=17489,1
-input=17493,0
-input=17617,1
-input=17621,0
-input=17709,1
-input=17713,0
-input=17869,1
-input=17873,0
-input=17961,1
-input=17965,0
-input=18197,1
-input=18201,0
-input=18357,1
-input=18361,0
-input=18521,1
-input=18525,0
-input=18681,1
-input=18685,0
-input=18773,1
-input=18777,0
-input=18841,1
-input=18845,0
-input=19001,1
-input=19005,0
-input=19233,1
-input=19237,0
-input=19393,1
-input=19397,0
-input=19481,1
-input=19485,0
-input=19645,1
-input=19649,0
-input=19805,1
-input=19809,0
-input=19965,1
-input=19969,0
-input=20057,1
-input=20061,0
-input=20217,1
-input=20221,0
-input=20349,1
-input=20353,0
+input=15229,1
+input=15241,0
+input=15261,1
+input=15265,0
+input=15273,1
+input=15281,0
diff --git a/games/numdash/tests/replays/level8.txt b/games/numdash/tests/replays/level8.txt
index 9705bc4..3504658 100644
--- a/games/numdash/tests/replays/level8.txt
+++ b/games/numdash/tests/replays/level8.txt
@@ -1,402 +1,896 @@
-input=449,1
-input=453,0
-input=613,1
-input=617,0
-input=705,1
-input=709,0
-input=825,1
-input=829,0
-input=985,1
-input=989,0
-input=1221,1
-input=1225,0
+input=201,1
+input=205,0
+input=401,1
+input=405,0
+input=585,1
+input=589,0
+input=689,1
+input=693,0
+input=837,1
+input=841,0
+input=1185,1
+input=1189,0
+input=1289,1
+input=1293,0
 input=1421,1
 input=1425,0
-input=1633,1
-input=1637,0
-input=1789,1
-input=1793,0
-input=1933,1
-input=1937,0
-input=2021,1
-input=2025,0
-input=2229,1
-input=2233,0
-input=2337,1
-input=2341,0
-input=2597,1
-input=2601,0
-input=2689,1
-input=2693,0
-input=2853,1
-input=2857,0
-input=2989,1
-input=2993,0
-input=3197,1
-input=3201,0
-input=3269,1
-input=3273,0
-input=3361,1
-input=3365,0
-input=3449,1
-input=3453,0
-input=3637,1
-input=3641,0
-input=3833,1
-input=3837,0
-input=3961,1
-input=3965,0
-input=4029,1
-input=4033,0
-input=4213,1
-input=4217,0
-input=4433,1
-input=4437,0
-input=4533,1
-input=4537,0
-input=4633,1
-input=4637,0
-input=4733,1
-input=4737,0
-input=4861,1
-input=4865,0
-input=5045,1
-input=5049,0
-input=5169,1
-input=5173,0
-input=5273,1
-input=5277,0
-input=5437,1
-input=5441,0
-input=5829,1
-input=5833,0
-input=5949,1
-input=5953,0
-input=6061,1
-input=6065,0
-input=6153,1
-input=6157,0
-input=6477,1
-input=6481,0
-input=6565,1
-input=6569,0
-input=6665,1
-input=6669,0
-input=7169,1
-input=7173,0
-input=7261,1
-input=7265,0
-input=7401,1
-input=7405,0
-input=7501,1
-input=7505,0
+input=1625,1
+input=1629,0
+input=1753,1
+input=1757,0
+input=2069,1
+input=2073,0
+input=2237,1
+input=2241,0
+input=2557,1
+input=2561,0
+input=2757,1
+input=2761,0
+input=2821,1
+input=2825,0
+input=3025,1
+input=3029,0
+input=3417,1
+input=3421,0
+input=3549,1
+input=3553,0
+input=3685,1
+input=3689,0
+input=3817,1
+input=3821,0
+input=3949,1
+input=3953,0
+input=4085,1
+input=4089,0
+input=4217,1
+input=4221,0
+input=4349,1
+input=4353,0
+input=4485,1
+input=4489,0
+input=4617,1
+input=4621,0
+input=4749,1
+input=4753,0
+input=4885,1
+input=4889,0
+input=5017,1
+input=5021,0
+input=5149,1
+input=5153,0
+input=5285,1
+input=5289,0
+input=5417,1
+input=5421,0
+input=6193,1
+input=6201,0
+input=6205,1
+input=6209,0
+input=6409,1
+input=6413,0
+input=6421,1
+input=6425,0
+input=6521,1
+input=6525,0
+input=6625,1
+input=6629,0
+input=6733,1
+input=6737,0
+input=6741,1
+input=6745,0
+input=7617,1
+input=7625,0
+input=7629,1
+input=7633,0
+input=7641,1
+input=7645,0
+input=7653,1
+input=7657,0
+input=7669,1
+input=7673,0
 input=7677,1
 input=7681,0
-input=7777,1
-input=7781,0
-input=7869,1
-input=7873,0
-input=7969,1
-input=7973,0
-input=8305,1
-input=8365,0
-input=8373,1
-input=8377,0
-input=8381,1
-input=8389,0
-input=8401,1
+input=7685,1
+input=7689,0
+input=7697,1
+input=7701,0
+input=7721,1
+input=7725,0
+input=7733,1
+input=7737,0
+input=7745,1
+input=7749,0
+input=7757,1
+input=7761,0
+input=7773,1
+input=7777,0
+input=7781,1
+input=7785,0
+input=7793,1
+input=7801,0
+input=7813,1
+input=7817,0
+input=7837,1
+input=7841,0
+input=7853,1
+input=7861,0
+input=7893,1
+input=7897,0
+input=7921,1
+input=7925,0
+input=7937,1
+input=7941,0
+input=7953,1
+input=8073,0
+input=8081,1
+input=8085,0
+input=8117,1
+input=8125,0
+input=8129,1
+input=8133,0
+input=8137,1
+input=8209,0
+input=8245,1
+input=8249,0
+input=8365,1
+input=8369,0
+input=8397,1
 input=8405,0
-input=8409,1
-input=8413,0
 input=8421,1
 input=8425,0
-input=8429,1
-input=8433,0
-input=8441,1
-input=8445,0
 input=8449,1
 input=8453,0
-input=8461,1
-input=8465,0
-input=8473,1
-input=8481,0
-input=8493,1
-input=8497,0
+input=8481,1
+input=8485,0
 input=8501,1
 input=8505,0
-input=8513,1
-input=8517,0
-input=8521,1
-input=8525,0
-input=8533,1
-input=8537,0
-input=8545,1
+input=8509,1
+input=8513,0
+input=8537,1
 input=8549,0
-input=8553,1
-input=8557,0
 input=8561,1
 input=8565,0
-input=8573,1
-input=8577,0
-input=8585,1
-input=8589,0
-input=8593,1
-input=8597,0
-input=8605,1
-input=8609,0
+input=8569,1
+input=8573,0
 input=8617,1
-input=8657,0
-input=8661,1
-input=8665,0
-input=8669,1
-input=8677,0
-input=8681,1
-input=8685,0
-input=8689,1
-input=8725,0
-input=8857,1
-input=8885,0
-input=8893,1
-input=8897,0
-input=8905,1
-input=8917,0
-input=8921,1
-input=8933,0
+input=8621,0
+input=8641,1
+input=8645,0
+input=8697,1
+input=8709,0
+input=8717,1
+input=8721,0
+input=8729,1
+input=8737,0
+input=8765,1
+input=8769,0
+input=8793,1
+input=8797,0
+input=8801,1
+input=8805,0
+input=8813,1
+input=8817,0
+input=8821,1
+input=8833,0
+input=8837,1
+input=8841,0
 input=8941,1
 input=8953,0
-input=8957,1
-input=8961,0
-input=8973,1
-input=8981,0
-input=9001,1
-input=9057,0
-input=9061,1
-input=9065,0
-input=9069,1
-input=9073,0
-input=9197,1
-input=9225,0
-input=9229,1
-input=9249,0
-input=9257,1
-input=9261,0
-input=9269,1
-input=9273,0
-input=9277,1
-input=9281,0
-input=9365,1
-input=9445,0
-input=9449,1
-input=9461,0
-input=9537,1
-input=9561,0
-input=9569,1
-input=9573,0
-input=9581,1
-input=9589,0
-input=9601,1
-input=9605,0
-input=9609,1
-input=9613,0
-input=9621,1
-input=9625,0
-input=9629,1
-input=9633,0
-input=9637,1
-input=9681,0
-input=9685,1
-input=9693,0
-input=9697,1
-input=9701,0
-input=9705,1
+input=8997,1
+input=9001,0
+input=9005,1
+input=9009,0
+input=9025,1
+input=9041,0
+input=9081,1
+input=9089,0
+input=9097,1
+input=9109,0
+input=9113,1
+input=9133,0
+input=9165,1
+input=9169,0
+input=9177,1
+input=9181,0
+input=9233,1
+input=9237,0
+input=9253,1
+input=9257,0
+input=9381,1
+input=9385,0
+input=9393,1
+input=9397,0
+input=9409,1
+input=9413,0
+input=9433,1
+input=9437,0
+input=9465,1
+input=9469,0
+input=9493,1
+input=9497,0
+input=9509,1
+input=9513,0
+input=9525,1
+input=9553,0
+input=9577,1
+input=9581,0
+input=9589,1
+input=9609,0
+input=9665,1
+input=9673,0
+input=9681,1
+input=9697,0
+input=9709,1
 input=9713,0
-input=9717,1
-input=9721,0
-input=9817,1
-input=9837,0
-input=9873,1
+input=9741,1
+input=9753,0
+input=9757,1
+input=9769,0
+input=9789,1
+input=9793,0
+input=9797,1
+input=9829,0
+input=9893,1
+input=9901,0
+input=9917,1
+input=9925,0
+input=9929,1
 input=9933,0
-input=9937,1
-input=9941,0
-input=9949,1
-input=9965,0
-input=9969,1
-input=9973,0
+input=9953,1
+input=9957,0
 input=9977,1
-input=9989,0
-input=9993,1
-input=10001,0
-input=10105,1
-input=10109,0
-input=10197,1
-input=10201,0
-input=10285,1
-input=10289,0
+input=9981,0
+input=10005,1
+input=10009,0
+input=10013,1
+input=10025,0
+input=10029,1
+input=10033,0
+input=10117,1
+input=10125,0
+input=10129,1
+input=10177,0
+input=10201,1
+input=10213,0
+input=10265,1
+input=10269,0
+input=10273,1
+input=10277,0
+input=10289,1
+input=10293,0
+input=10321,1
+input=10349,0
+input=10353,1
+input=10357,0
+input=10361,1
+input=10373,0
+input=10393,1
+input=10397,0
+input=10405,1
+input=10409,0
+input=10421,1
+input=10425,0
+input=10429,1
+input=10433,0
+input=10437,1
+input=10445,0
+input=10449,1
+input=10457,0
+input=10465,1
+input=10469,0
 input=10473,1
 input=10477,0
-input=10609,1
-input=10613,0
-input=10873,1
-input=10877,0
-input=10981,1
-input=10985,0
-input=11257,1
-input=11261,0
-input=11377,1
-input=11381,0
+input=10481,1
+input=10489,0
+input=10513,1
+input=10541,0
+input=10565,1
+input=10573,0
+input=10605,1
+input=10609,0
+input=10617,1
+input=10621,0
+input=10629,1
+input=10633,0
+input=10649,1
+input=10657,0
+input=10705,1
+input=10709,0
+input=10725,1
+input=10729,0
+input=10777,1
+input=10781,0
+input=10789,1
+input=10793,0
+input=10805,1
+input=10809,0
+input=10821,1
+input=10825,0
+input=10845,1
+input=10849,0
+input=10853,1
+input=10861,0
+input=10869,1
+input=10873,0
+input=10877,1
+input=10897,0
+input=10949,1
+input=10965,0
+input=10977,1
+input=10981,0
+input=11009,1
+input=11077,0
+input=11101,1
+input=11105,0
+input=11109,1
+input=11113,0
+input=11117,1
+input=11121,0
+input=11173,1
+input=11177,0
+input=11181,1
+input=11193,0
+input=11201,1
+input=11205,0
+input=11209,1
+input=11217,0
+input=11229,1
+input=11233,0
+input=11245,1
+input=11249,0
+input=11261,1
+input=11269,0
+input=11297,1
+input=11301,0
+input=11341,1
+input=11345,0
+input=11365,1
+input=11377,0
+input=11389,1
+input=11393,0
+input=11397,1
+input=11409,0
+input=11445,1
+input=11449,0
+input=11457,1
+input=11461,0
+input=11481,1
+input=11485,0
+input=11493,1
+input=11501,0
+input=11521,1
+input=11525,0
+input=11533,1
+input=11537,0
+input=11545,1
+input=11553,0
+input=11561,1
+input=11565,0
+input=11569,1
+input=11577,0
+input=11581,1
+input=11589,0
+input=11593,1
+input=11609,0
 input=11629,1
-input=11633,0
-input=11721,1
-input=11725,0
-input=11825,1
+input=11641,0
+input=11645,1
+input=11649,0
+input=11653,1
+input=11657,0
+input=11661,1
+input=11665,0
+input=11673,1
+input=11677,0
+input=11693,1
+input=11701,0
+input=11705,1
+input=11713,0
+input=11745,1
+input=11757,0
+input=11817,1
 input=11829,0
-input=11925,1
-input=11929,0
+input=11833,1
+input=11841,0
+input=11853,1
+input=11857,0
+input=11869,1
+input=11881,0
+input=11921,1
+input=11925,0
+input=11933,1
+input=11937,0
+input=11949,1
+input=11953,0
+input=11957,1
+input=11965,0
+input=11969,1
+input=11981,0
+input=11985,1
+input=11989,0
+input=11993,1
+input=12001,0
+input=12013,1
+input=12037,0
+input=12085,1
+input=12089,0
+input=12093,1
+input=12097,0
+input=12101,1
+input=12105,0
+input=12109,1
+input=12113,0
+input=12117,1
+input=12133,0
+input=12137,1
+input=12141,0
+input=12149,1
+input=12157,0
+input=12165,1
+input=12169,0
+input=12237,1
+input=12241,0
+input=12249,1
+input=12253,0
+input=12257,1
+input=12265,0
+input=12285,1
+input=12297,0
+input=12317,1
+input=12325,0
+input=12329,1
+input=12333,0
+input=12341,1
+input=12345,0
+input=12349,1
+input=12353,0
+input=12357,1
+input=12365,0
 input=12369,1
-input=12373,0
+input=12377,0
+input=12381,1
+input=12385,0
+input=12393,1
+input=12397,0
+input=12401,1
+input=12405,0
+input=12425,1
+input=12437,0
+input=12445,1
+input=12449,0
+input=12457,1
+input=12465,0
+input=12473,1
+input=12477,0
 input=12505,1
-input=12509,0
+input=12513,0
+input=12521,1
+input=12525,0
+input=12529,1
+input=12533,0
+input=12541,1
+input=12549,0
+input=12557,1
+input=12565,0
+input=12581,1
+input=12585,0
+input=12593,1
+input=12597,0
+input=12609,1
+input=12617,0
+input=12621,1
+input=12625,0
+input=12633,1
+input=12637,0
+input=12665,1
+input=12677,0
+input=12681,1
+input=12697,0
+input=12705,1
+input=12709,0
+input=12713,1
+input=12721,0
+input=12737,1
+input=12741,0
+input=12745,1
+input=12761,0
+input=12765,1
+input=12773,0
+input=12793,1
+input=12797,0
+input=12805,1
+input=12809,0
+input=12821,1
+input=12829,0
+input=12845,1
+input=12849,0
+input=12853,1
+input=12857,0
+input=12861,1
+input=12865,0
+input=12869,1
+input=12873,0
 input=12889,1
-input=12893,0
-input=12981,1
-input=12985,0
-input=13073,1
-input=13077,0
+input=12897,0
+input=12901,1
+input=12917,0
+input=12925,1
+input=12929,0
+input=12933,1
+input=12937,0
+input=12945,1
+input=12949,0
+input=12953,1
+input=12957,0
+input=12969,1
+input=12973,0
+input=12985,1
+input=12989,0
+input=12997,1
+input=13001,0
+input=13005,1
+input=13013,0
+input=13029,1
+input=13037,0
+input=13041,1
+input=13045,0
+input=13049,1
+input=13057,0
+input=13093,1
+input=13109,0
+input=13113,1
+input=13121,0
+input=13141,1
+input=13145,0
+input=13149,1
+input=13153,0
+input=13173,1
+input=13177,0
+input=13181,1
+input=13185,0
+input=13189,1
+input=13193,0
+input=13197,1
+input=13201,0
+input=13209,1
+input=13217,0
+input=13221,1
+input=13241,0
+input=13245,1
+input=13253,0
+input=13269,1
+input=13281,0
+input=13285,1
+input=13293,0
+input=13301,1
+input=13305,0
+input=13309,1
+input=13313,0
+input=13321,1
+input=13325,0
+input=13329,1
+input=13333,0
 input=13341,1
 input=13345,0
+input=13353,1
+input=13357,0
+input=13365,1
+input=13369,0
+input=13381,1
+input=13385,0
+input=13397,1
+input=13405,0
+input=13409,1
+input=13413,0
+input=13417,1
+input=13425,0
 input=13429,1
-input=13433,0
+input=13441,0
+input=13449,1
+input=13453,0
+input=13461,1
+input=13469,0
+input=13473,1
+input=13477,0
+input=13501,1
+input=13505,0
+input=13525,1
+input=13529,0
+input=13537,1
+input=13545,0
+input=13549,1
+input=13561,0
+input=13569,1
+input=13577,0
+input=13601,1
+input=13605,0
+input=13613,1
+input=13617,0
+input=13625,1
+input=13633,0
+input=13637,1
+input=13641,0
+input=13649,1
+input=13653,0
+input=13657,1
+input=13661,0
+input=13665,1
+input=13677,0
+input=13681,1
+input=13689,0
+input=13693,1
+input=13701,0
 input=13705,1
-input=13709,0
+input=13717,0
+input=13733,1
+input=13737,0
+input=13741,1
+input=13745,0
+input=13749,1
+input=13761,0
+input=13773,1
+input=13781,0
+input=13785,1
+input=13789,0
+input=13813,1
+input=13821,0
+input=13833,1
+input=13837,0
 input=13845,1
 input=13849,0
-input=14029,1
-input=14033,0
-input=14133,1
-input=14137,0
+input=13853,1
+input=13865,0
+input=13873,1
+input=13881,0
+input=13885,1
+input=13893,0
+input=13897,1
+input=13909,0
+input=13913,1
+input=13917,0
+input=13929,1
+input=13937,0
+input=13941,1
+input=13949,0
+input=13957,1
+input=13985,0
+input=13989,1
+input=14001,0
+input=14009,1
+input=14013,0
+input=14025,1
+input=14029,0
+input=14041,1
+input=14045,0
+input=14049,1
+input=14061,0
+input=14073,1
+input=14085,0
+input=14093,1
+input=14097,0
+input=14101,1
+input=14109,0
+input=14117,1
+input=14121,0
+input=14125,1
+input=14133,0
+input=14137,1
+input=14149,0
+input=14177,1
+input=14181,0
+input=14193,1
+input=14197,0
+input=14201,1
+input=14205,0
+input=14209,1
+input=14213,0
 input=14225,1
 input=14229,0
-input=14617,1
-input=14621,0
+input=14233,1
+input=14245,0
+input=14253,1
+input=14257,0
+input=14261,1
+input=14269,0
+input=14273,1
+input=14281,0
+input=14285,1
+input=14301,0
+input=14305,1
+input=14309,0
+input=14317,1
+input=14321,0
+input=14325,1
+input=14329,0
+input=14349,1
+input=14353,0
+input=14361,1
+input=14365,0
+input=14369,1
+input=14381,0
+input=14385,1
+input=14389,0
+input=14397,1
+input=14421,0
+input=14429,1
+input=14433,0
+input=14445,1
+input=14453,0
+input=14461,1
+input=14469,0
+input=14473,1
+input=14481,0
+input=14497,1
+input=14517,0
+input=14521,1
+input=14529,0
+input=14537,1
+input=14553,0
+input=14557,1
+input=14565,0
+input=14573,1
+input=14577,0
+input=14589,1
+input=14593,0
+input=14601,1
+input=14605,0
+input=14609,1
+input=14645,0
+input=14665,1
+input=14669,0
+input=14677,1
+input=14681,0
+input=14689,1
+input=14693,0
+input=14701,1
+input=14705,0
+input=14709,1
+input=14713,0
+input=14717,1
+input=14721,0
+input=14729,1
+input=14733,0
+input=14749,1
+input=14757,0
+input=14765,1
+input=14781,0
+input=14797,1
+input=14801,0
+input=14821,1
+input=14841,0
+input=14861,1
+input=14865,0
+input=14869,1
+input=14873,0
+input=14885,1
+input=14889,0
+input=14893,1
+input=14901,0
 input=14929,1
-input=14933,0
-input=15045,1
-input=15049,0
+input=14949,0
+input=14969,1
+input=14977,0
+input=14981,1
+input=14989,0
+input=14993,1
+input=14997,0
+input=15009,1
+input=15013,0
+input=15017,1
+input=15025,0
+input=15029,1
+input=15037,0
+input=15041,1
+input=15045,0
+input=15061,1
+input=15065,0
+input=15069,1
+input=15077,0
+input=15093,1
+input=15097,0
+input=15129,1
+input=15133,0
 input=15145,1
-input=15149,0
-input=15277,1
-input=15281,0
-input=15445,1
-input=15449,0
-input=15901,1
-input=15905,0
-input=15997,1
-input=16001,0
-input=16217,1
-input=16221,0
-input=16545,1
-input=16549,0
-input=16637,1
-input=16641,0
-input=16937,1
-input=16941,0
-input=17129,1
-input=17133,0
-input=17349,1
-input=17353,0
-input=17453,1
-input=17457,0
-input=17545,1
-input=17549,0
-input=17857,1
-input=17861,0
-input=18157,1
-input=18161,0
-input=18533,1
-input=18537,0
-input=18653,1
-input=18657,0
-input=18761,1
-input=18765,0
-input=18865,1
-input=18869,0
-input=19157,1
-input=19161,0
-input=19261,1
-input=19265,0
-input=19477,1
-input=19481,0
-input=19777,1
-input=19781,0
-input=19893,1
-input=19897,0
-input=20025,1
-input=20029,0
-input=20193,1
-input=20197,0
-input=20633,1
-input=20637,0
-input=20793,1
-input=20797,0
-input=20981,1
-input=20985,0
-input=21117,1
-input=21121,0
-input=21257,1
-input=21325,0
-input=21329,1
-input=21369,0
-input=21373,1
-input=21377,0
-input=21381,1
-input=21389,0
-input=21393,1
-input=21397,0
-input=21521,1
-input=21541,0
-input=21553,1
-input=21557,0
-input=21561,1
-input=21577,0
-input=21581,1
-input=21585,0
-input=21657,1
-input=21693,0
-input=21701,1
-input=21713,0
-input=21717,1
-input=21721,0
-input=21725,1
-input=21741,0
-input=21745,1
-input=21769,0
-input=21873,1
-input=21901,0
-input=21905,1
-input=21925,0
-input=21985,1
-input=22037,0
-input=22041,1
-input=22065,0
-input=22073,1
-input=22085,0
-input=22089,1
-input=22117,0
-input=22385,1
-input=22425,0
-input=22429,1
-input=22437,0
-input=22441,1
-input=22445,0
-input=22453,1
-input=22473,0
-input=22477,1
-input=22481,0
-input=22489,1
-input=22501,0
-input=22505,1
-input=22521,0
-input=22533,1
-input=22545,0
-input=22549,1
-input=22553,0
+input=15153,0
+input=15157,1
+input=15165,0
+input=15189,1
+input=15205,0
+input=15209,1
+input=15213,0
+input=15221,1
+input=15225,0
+input=15237,1
+input=15241,0
+input=15245,1
+input=15253,0
+input=15265,1
+input=15269,0
+input=15273,1
+input=15277,0
+input=15285,1
+input=15293,0
+input=15297,1
+input=15301,0
+input=15305,1
+input=15317,0
+input=15333,1
+input=15341,0
+input=15349,1
+input=15353,0
+input=15357,1
+input=15373,0
+input=15377,1
+input=15413,0
+input=15417,1
+input=15421,0
+input=15425,1
+input=15433,0
+input=15437,1
+input=15445,0
+input=15457,1
+input=15461,0
+input=15477,1
+input=15485,0
+input=15489,1
+input=15497,0
+input=15509,1
+input=15513,0
+input=15517,1
+input=15521,0
+input=15525,1
+input=15529,0
+input=15533,1
+input=15537,0
+input=15545,1
+input=15549,0
+input=15557,1
+input=15565,0
+input=15569,1
+input=15593,0
+input=15597,1
+input=15601,0
+input=15621,1
+input=15625,0
+input=15629,1
+input=15633,0
+input=15645,1
+input=15649,0
+input=15653,1
+input=15657,0
+input=15673,1
+input=15681,0
+input=15689,1
+input=15697,0
+input=15701,1
+input=15705,0
+input=15713,1
+input=15721,0
+input=15725,1
+input=15729,0
+input=15741,1
+input=15749,0
+input=15765,1
+input=15773,0
+input=15777,1
+input=15785,0
+input=15789,1
+input=15805,0
+input=15829,1
+input=15833,0
+input=15837,1
+input=15853,0
+input=15861,1
+input=15873,0
+input=15877,1
+input=15881,0
+input=15893,1
+input=15901,0
+input=15905,1
+input=15917,0
+input=15921,1
+input=15929,0
+input=15945,1
+input=15949,0
+input=15965,1
+input=15969,0
diff --git a/games/numdash/tests/replays/level9.txt b/games/numdash/tests/replays/level9.txt
index a1f478f..70e23df 100644
--- a/games/numdash/tests/replays/level9.txt
+++ b/games/numdash/tests/replays/level9.txt
@@ -1,322 +1,144 @@
-input=217,1
-input=221,0
-input=401,1
-input=405,0
-input=505,1
-input=509,0
-input=781,1
-input=785,0
-input=985,1
-input=989,0
+input=193,1
+input=197,0
+input=353,1
+input=357,0
+input=533,1
+input=537,0
+input=721,1
+input=725,0
+input=825,1
+input=829,0
+input=889,1
+input=893,0
 input=1081,1
 input=1085,0
-input=1209,1
-input=1213,0
-input=1417,1
-input=1421,0
-input=1513,1
-input=1517,0
-input=1601,1
-input=1605,0
-input=1813,1
-input=1817,0
-input=1917,1
-input=1921,0
-input=2017,1
-input=2021,0
-input=2225,1
-input=2229,0
-input=2333,1
-input=2337,0
-input=2433,1
-input=2437,0
-input=2573,1
-input=2577,0
-input=2697,1
-input=2701,0
-input=2889,1
-input=2893,0
-input=2981,1
-input=2985,0
-input=3049,1
-input=3053,0
-input=3193,1
-input=3197,0
-input=3297,1
-input=3301,0
-input=3449,1
-input=3453,0
-input=3565,1
-input=3569,0
-input=3657,1
-input=3661,0
-input=3957,1
-input=3961,0
-input=4253,1
-input=4257,0
-input=4441,1
-input=4445,0
-input=4629,1
-input=4633,0
-input=4881,1
-input=4885,0
-input=5089,1
-input=5093,0
-input=5193,1
-input=5197,0
-input=5297,1
-input=5301,0
-input=5413,1
-input=5417,0
-input=5621,1
-input=5625,0
-input=5713,1
-input=5717,0
-input=5817,1
-input=5821,0
-input=6037,1
-input=6041,0
-input=6197,1
-input=6201,0
-input=6433,1
-input=6437,0
-input=6509,1
-input=6513,0
-input=7213,1
-input=7217,0
-input=7493,1
-input=7497,0
-input=7677,1
-input=7681,0
-input=8025,1
-input=8029,0
-input=8253,1
-input=8257,0
-input=8421,1
-input=8425,0
-input=8513,1
-input=8517,0
-input=8601,1
-input=8605,0
-input=8769,1
-input=8773,0
-input=8833,1
-input=8837,0
-input=9009,1
-input=9013,0
-input=9357,1
-input=9361,0
-input=9429,1
-input=9433,0
-input=9633,1
-input=9637,0
-input=9701,1
-input=9705,0
-input=9817,1
-input=9821,0
-input=9977,1
-input=9981,0
-input=10093,1
-input=10097,0
-input=10233,1
-input=10237,0
+input=1245,1
+input=1249,0
+input=1425,1
+input=1429,0
+input=1681,1
+input=1685,0
+input=1949,1
+input=1953,0
+input=2253,1
+input=2257,0
+input=2357,1
+input=2361,0
+input=2489,1
+input=2493,0
+input=2577,1
+input=2581,0
+input=2769,1
+input=2773,0
+input=3089,1
+input=3093,0
+input=3177,1
+input=3181,0
+input=3381,1
+input=3385,0
+input=4829,1
+input=4857,0
+input=4861,1
+input=4865,0
+input=4869,1
+input=4873,0
+input=4877,1
+input=4881,0
+input=5093,1
+input=5121,0
+input=5125,1
+input=5129,0
+input=5133,1
+input=5137,0
+input=5141,1
+input=5145,0
+input=5945,1
+input=5949,0
+input=6297,1
+input=6301,0
+input=6401,1
+input=6405,0
+input=6525,1
+input=6529,0
+input=6929,1
+input=6933,0
+input=7193,1
+input=7197,0
+input=7513,1
+input=7517,0
+input=7713,1
+input=7717,0
+input=7889,1
+input=7893,0
+input=8089,1
+input=8093,0
+input=8157,1
+input=8161,0
+input=8341,1
+input=8345,0
+input=8445,1
+input=8449,0
+input=8569,1
+input=8573,0
+input=8933,1
+input=8937,0
+input=9329,1
+input=9333,0
+input=9461,1
+input=9465,0
+input=9597,1
+input=9601,0
+input=9729,1
+input=9733,0
+input=9861,1
+input=9865,0
+input=9997,1
+input=10001,0
+input=10129,1
+input=10133,0
+input=10261,1
+input=10265,0
+input=10397,1
+input=10401,0
 input=10529,1
-input=10561,0
-input=10565,1
-input=10569,0
-input=10573,1
-input=10577,0
-input=10705,1
-input=10769,0
-input=10773,1
-input=10785,0
-input=10921,1
-input=10973,0
-input=10989,1
-input=10993,0
-input=11121,1
-input=11181,0
-input=11185,1
-input=11189,0
-input=11193,1
-input=11197,0
-input=11337,1
-input=11389,0
-input=11393,1
-input=11401,0
-input=11529,1
-input=11609,0
-input=11613,1
-input=11617,0
-input=11741,1
-input=11785,0
-input=11789,1
-input=11793,0
-input=11913,1
-input=11989,0
-input=11993,1
-input=12001,0
-input=12005,1
-input=12009,0
-input=12013,1
-input=12025,0
-input=12029,1
-input=12033,0
-input=12233,1
-input=12265,0
-input=12305,1
-input=12321,0
-input=12325,1
-input=12329,0
+input=10533,0
+input=10661,1
+input=10665,0
+input=10797,1
+input=10801,0
+input=10929,1
+input=10933,0
+input=11061,1
+input=11065,0
+input=12297,1
+input=12333,0
 input=12337,1
 input=12345,0
-input=12349,1
-input=12361,0
-input=12365,1
-input=12377,0
-input=12381,1
-input=12385,0
-input=12397,1
-input=12421,0
-input=12445,1
-input=12449,0
-input=12453,1
-input=12457,0
-input=12745,1
-input=12781,0
-input=12797,1
-input=12805,0
-input=12817,1
-input=12837,0
-input=12841,1
-input=12845,0
-input=12853,1
-input=12857,0
-input=12861,1
-input=12865,0
-input=12873,1
-input=12877,0
-input=12881,1
-input=12885,0
-input=12893,1
-input=12897,0
-input=12905,1
-input=12909,0
-input=12913,1
-input=12917,0
-input=12921,1
-input=12925,0
-input=12933,1
-input=12937,0
-input=12945,1
-input=12949,0
-input=12953,1
-input=12957,0
-input=12965,1
-input=12969,0
-input=12977,1
-input=12981,0
-input=12985,1
-input=12989,0
-input=12993,1
-input=12997,0
-input=13005,1
-input=13009,0
-input=13013,1
-input=13049,0
-input=13137,1
-input=13161,0
-input=13169,1
-input=13177,0
-input=13181,1
-input=13185,0
-input=13189,1
-input=13193,0
-input=13197,1
-input=13201,0
-input=13209,1
-input=13217,0
-input=13229,1
-input=13233,0
-input=13241,1
-input=13249,0
-input=13261,1
-input=13265,0
-input=13269,1
-input=13273,0
-input=13277,1
-input=13281,0
-input=13293,1
-input=13301,0
-input=13313,1
-input=13321,0
-input=13333,1
-input=13341,0
-input=13353,1
-input=13357,0
-input=13361,1
-input=13365,0
-input=13373,1
-input=13377,0
-input=13381,1
-input=13385,0
-input=13393,1
-input=13397,0
-input=13401,1
-input=13405,0
-input=13413,1
-input=13441,0
-input=14205,1
-input=14209,0
-input=14321,1
-input=14325,0
-input=14425,1
-input=14429,0
-input=14517,1
-input=14521,0
-input=14609,1
-input=14613,0
-input=14725,1
-input=14729,0
-input=14797,1
-input=14801,0
-input=14957,1
-input=14961,0
-input=15205,1
-input=15209,0
-input=15301,1
-input=15305,0
-input=15405,1
-input=15409,0
-input=15737,1
-input=15741,0
-input=15825,1
-input=15829,0
-input=15901,1
-input=15905,0
-input=16009,1
-input=16013,0
-input=16157,1
-input=16161,0
-input=16289,1
-input=16293,0
-input=16781,1
-input=16785,0
-input=16853,1
-input=16857,0
-input=17105,1
-input=17109,0
-input=17473,1
-input=17477,0
-input=17589,1
-input=17593,0
-input=17765,1
-input=17769,0
-input=17973,1
-input=17977,0
-input=18145,1
-input=18149,0
-input=18309,1
-input=18313,0
-input=18537,1
-input=18541,0
+input=14193,1
+input=14205,0
+input=14357,1
+input=14397,0
+input=14533,1
+input=14649,0
+input=14737,1
+input=14745,0
+input=14869,1
+input=14893,0
+input=15181,1
+input=15189,0
+input=15245,1
+input=15277,0
+input=15529,1
+input=15545,0
+input=15793,1
+input=15805,0
+input=15957,1
+input=15997,0
+input=16137,1
+input=16145,0
+input=16225,1
+input=16233,0
+input=16417,1
+input=16429,0
+input=16729,1
+input=16737,0
diff --git a/games/numdash/tests/test.c b/games/numdash/tests/test.c
index c7bcb3f..fefc6bc 100644
--- a/games/numdash/tests/test.c
+++ b/games/numdash/tests/test.c
@@ -73,7 +73,7 @@ static void fresh_app(void) {
 
 static void test_levels(void) {
   static Level L;
-  static const uint16_t counts[LEVEL_COUNT] = {2272, 1530, 1509, 1402, 2126, 1691, 2767, 3563, 3852, 7506, 19006, 16771};
+  static const uint16_t counts[LEVEL_COUNT] = {268, 464, 588, 539, 559, 617, 653, 609, 581, 622, 679, 783};  /* NumDash's levels (Calcade, 19 octobre 2026) */
   for (unsigned i = 0; i < LEVEL_COUNT; i++) {
     assert(level_load_builtin(&L, i));
     assert(L.count == counts[i]);
@@ -101,7 +101,7 @@ static void test_physics(void) {
     game_step(&a, i < 4);
     if (a.p.y > peak) peak = a.p.y;
   }
-  /* A GD cube jump peaks a little over two blocks above the ground. */
+  /* NumDash's cube jump peaks a little over two blocks above the ground. */
   assert(peak > 15 + 60 && peak < 15 + 90);
   assert(a.p.on_ground && !a.dead && a.jumps == 1);
   game_start(&a, &L, false);
@@ -200,7 +200,8 @@ static void test_storage(void) {
     prog[i] ^= 0x10;
   }
   assert(progress_decode(&q, prog, sizeof(prog)));
-  /* a save from the 7-level release: the custom slots' stats move up */
+  /* a save from the 7-level release: the custom slots' stats move up, the old built-in levels'
+     stats are dropped (they were other levels; Calcade, 19 octobre 2026) */
   memset(prog, 0, sizeof(prog));
   memcpy(prog, "NDS1", 4);
   prog[8] = 1; prog[9] = 7; prog[10] = CUSTOM_SLOTS;
@@ -210,7 +211,7 @@ static void test_storage(void) {
   uint32_t sum = nd_crc32(prog + 8, PROGRESS_BYTES - 8);
   for (int k = 0; k < 4; k++) prog[4 + k] = (uint8_t)(sum >> (8 * k));
   assert(progress_decode(&q, prog, sizeof(prog)));
-  assert(q.lv[2].normal == 77 && q.lv[7].normal == 0 && q.lv[8].normal == 0);
+  assert(q.lv[2].normal == 0 && q.lv[7].normal == 0 && q.lv[8].normal == 0);
   assert(q.lv[LEVEL_COUNT + 1].normal == 42 && q.last_level == LEVEL_COUNT + 1);
 }
 
@@ -274,16 +275,15 @@ static void test_legacy(void) {
   Progress p;
   CustomMeta metas[CUSTOM_SLOTS];
   assert(save_load_all(&p, metas));
-  assert(p.lv[1].normal == 64 && p.lv[1].practice == 100 && p.lv[1].coins == 3 && p.lv[1].attempts == 321);
-  assert(metas[0].exists && metas[0].count == 3 && !metas[1].exists);
+  /* an old save keeps its custom levels, not the stats of the old built-in levels (Calcade, 19 octobre 2026) */
+  assert(p.lv[1].normal == 0 && p.lv[1].attempts == 0);
+  /* its custom levels used the original game's object numbers: they come back empty */
+  assert(!metas[0].exists && !metas[1].exists);
   size_t len;
   assert(storage_read(store, sizeof(store), "numdash.nds", &len));
   assert(!storage_read(store, sizeof(store), "numdash.ndd", &len));   /* it was last: removed */
-  static LObj objs[8];
-  CustomMeta m;
-  assert(save_read_custom(0, objs, 8, &m) && m.count == 3 && objs[1].type == OT_SPIKE && objs[2].type == OT_PAD_Y);
   /* the second load uses the new records */
-  assert(save_load_all(&p, metas) && p.lv[1].attempts == 321);
+  assert(save_load_all(&p, metas) && p.lv[1].attempts == 0);
 }
 
 /* ------------------------------------------------------------ app flow */
@@ -311,7 +311,7 @@ static void test_app(void) {
   app.sel = 0;
   tap(K_OK);
   assert(app.practice && !app.paused);
-  run(0, 200);
+  run(0, 100);   /* (NumDash's first level has its first spike sooner) */
   tap(K_CHECK);
   assert(app.checkpoint_count == 1);
   tap(K_ERASE);
diff --git a/games/numdash/tools/art.py b/games/numdash/tools/art.py
index 67802a3..bcd1fc3 100644
--- a/games/numdash/tools/art.py
+++ b/games/numdash/tools/art.py
@@ -2,14 +2,14 @@
 
 All artwork is drawn from geometric primitives at 8x supersampling and
 downsampled, so the calculator sprites are anti-aliased without shipping any
-bitmap from the original game. Coordinates are in Geometry Dash units (30 per
+bitmap. Coordinates are in the engine's units (30 per
 block) relative to the sprite anchor unless noted; S converts them to pixels.
 """
 import math
 import numpy as np
 from PIL import Image, ImageDraw
 
-S = 2.0 / 3.0      # screen pixels per GD unit (20 px blocks)
+S = 2.0 / 3.0      # screen pixels per level unit (20 px blocks)
 SS = 8             # supersampling factor
 
 
diff --git a/games/numdash/tools/assets_lv.py b/games/numdash/tools/assets_lv.py
index 85c1311..d897c06 100644
--- a/games/numdash/tools/assets_lv.py
+++ b/games/numdash/tools/assets_lv.py
@@ -43,8 +43,20 @@ def preview(sprites, path):
     im.save(path)
 
 
+def used_names():
+    """Sprites an object draws or the C code names (Calcade, 19 octobre 2026: the decorations of the
+    original game's later levels are no longer in the catalogue, so their art is not shipped)."""
+    import objdefs as od
+    names = set(p[0] for o in od.OBJECTS for p in o[7] if isinstance(p[0], str))
+    code = ''.join(f.read_text() for f in (ROOT / 'src').glob('*.c') if not f.name.startswith(('assets', 'objdefs', 'leveldata')))
+    code += ''.join(f.read_text() for f in (ROOT / 'src').glob('*.h') if not f.name.startswith(('assets', 'objdefs')))
+    return names, set(re.findall(r'SPR_\w+', code))
+
+
 def main():
     sprites = lv_sprites()
+    names, refs = used_names()
+    sprites = [sp for sp in sprites if sp[0] in names or c_ident(sp[0]) in refs]
     if len(sys.argv) > 1:
         preview(sprites, sys.argv[1])
     pk = Packer(dedupe=True)
diff --git a/games/numdash/tools/background.py b/games/numdash/tools/background.py
index 601639d..583ad5c 100644
--- a/games/numdash/tools/background.py
+++ b/games/numdash/tools/background.py
@@ -1,6 +1,5 @@
-"""Background tile layout: rectangles of assorted sizes separated by bright
-seams, in the style of Geometry Dash's default backdrop (tile 512 texels,
-displayed at 0.9 px per texel)."""
+"""Leftover of the first backdrop (tile 512 texels): src/scene.c now draws NumDash's own
+backdrop (slanted bands, Calcade, 19 octobre 2026) and no longer uses this table."""
 import random
 
 TILE = 512
diff --git a/games/numdash/tools/dev/icon.c b/games/numdash/tools/dev/icon.c
index 214aef1..0452a8b 100644
--- a/games/numdash/tools/dev/icon.c
+++ b/games/numdash/tools/dev/icon.c
@@ -13,8 +13,8 @@ int main(int argc, char **argv) {
     scene_background(bg, 1180, 0);
     scene_ground(g1, 0xffff, 40, y0 + 42, false, false);
     float cx = x0 + 27.5f, cy = y0 + 42 - 14;
-    gfx_sprite_ex(SPR_CUBE1_S, (int)(cx * 16), (int)(cy * 16), 0, 360, 0, rgb(0, 255, 255), 256, BLEND_NORMAL);
-    gfx_sprite_ex(SPR_CUBE1_P, (int)(cx * 16), (int)(cy * 16), 0, 360, 0, rgb(125, 255, 0), 256, BLEND_NORMAL);
+    gfx_sprite_ex(SPR_CUBE1_S, (int)(cx * 16), (int)(cy * 16), 0, 360, 0, rgb(76, 158, 255), 256, BLEND_NORMAL);
+    gfx_sprite_ex(SPR_CUBE1_P, (int)(cx * 16), (int)(cy * 16), 0, 360, 0, rgb(255, 122, 89), 256, BLEND_NORMAL);
     memcpy(fb + s * STRIP_H * GFX_W, gfx_strip, GFX_W * STRIP_H * sizeof(uint16_t));
   }
   FILE *f = fopen(argv[1], "wb");
diff --git a/games/numdash/tools/dev/shot.c b/games/numdash/tools/dev/shot.c
index c526e49..dc10c1f 100644
--- a/games/numdash/tools/dev/shot.c
+++ b/games/numdash/tools/dev/shot.c
@@ -30,11 +30,11 @@ int main(int argc, char **argv) {
   for (int i = 1; i <= tick; i++) {
     while (pos < n && ticks[pos] <= i) held = vals[pos++];
     game_step(&g, held);
-    if (i % 6 == 0) fx_update(&g, 6.0f / 240, rgb(125, 255, 0), rgb(0, 255, 255), false);
+    if (i % 6 == 0) fx_update(&g, 6.0f / 240, rgb(255, 122, 89), rgb(76, 158, 255), false);
     if (g.dead) { printf("dead at %d x=%.1f\n", i, g.p.x); break; }
   }
   SceneOpts o = {0};
-  o.p1 = rgb(125, 255, 0); o.p2 = rgb(0, 255, 255); o.show_percent = true; o.attempt = 1; o.time = tick / 240.f;
+  o.p1 = rgb(255, 122, 89); o.p2 = rgb(76, 158, 255); o.show_percent = true; o.attempt = 1; o.time = tick / 240.f;
   scene_prepare(&g, &o);
   render();
   save(argv[3]);
diff --git a/games/numdash/tools/fonts.py b/games/numdash/tools/fonts.py
index ed8ca63..6b55303 100644
--- a/games/numdash/tools/fonts.py
+++ b/games/numdash/tools/fonts.py
@@ -1,7 +1,8 @@
-"""Bitmap fonts in the style of Geometry Dash's outlined title lettering.
+"""NumDash's bitmap fonts: outlined lettering for titles and labels.
 
-Glyphs are rasterized from two SIL Open Font License typefaces (Rammetto One
-for display text, Nunito Black for small labels; see LICENSES/).
+Glyphs are rasterized from two SIL Open Font License typefaces (Archivo
+Expanded Black for display text, Nunito Black for small labels; see LICENSES/).
+Calcade, 19 octobre 2026 : Archivo remplace Rammetto One, dont le titre imitait celui de Geometry Dash.
 Only the 4-bit fill coverage is stored (A4 sprites); the renderer derives the
 black outline and drop shadow at draw time, which keeps the fonts small.
 """
@@ -12,11 +13,11 @@ import numpy as np
 from PIL import Image, ImageDraw, ImageFont
 
 HERE = Path(__file__).resolve().parent / 'fonts'
+NUMPLAY = Path(__file__).resolve().parents[3] / 'tools'
+LOCAL = {'Archivo-ExpandedBlack.ttf': NUMPLAY / 'calcade' / 'archivo-black-exp.ttf', 'Nunito-Black.ttf': NUMPLAY / '.fonts' / 'Nunito.ttf'}
 UP = 4   # supersampling for rasterization
 
 SOURCES = {
-    'RammettoOne-Regular.ttf': ('https://raw.githubusercontent.com/google/fonts/main/ofl/rammettoone/RammettoOne-Regular.ttf',
-                                '0063c5480f7868be5dd95dd668575643ff953199541dce65fe5a88310bd7733f'),
     'Nunito-Black.ttf': ('https://raw.githubusercontent.com/google/fonts/main/ofl/nunito/Nunito%5Bwght%5D.ttf',
                          'bb55a5ca5c2042335b3991af27c4d0705d0ef41cac6164ac737fd8f2a1e85207'),
 }
@@ -24,13 +25,15 @@ SOURCES = {
 # name, file, cap height px, outline radius px, shadow dx, dy, alpha (0..15), variation
 SPECS = [
     ('small', 'Nunito-Black.ttf', 7, 1, 1, 1, 8, [1000]),
-    ('big', 'RammettoOne-Regular.ttf', 13, 1, 1, 2, 9, None),
-    ('huge', 'RammettoOne-Regular.ttf', 19, 2, 2, 2, 9, None),
+    ('big', 'Archivo-ExpandedBlack.ttf', 12, 1, 1, 1, 7, None),
+    ('huge', 'Archivo-ExpandedBlack.ttf', 17, 2, 2, 2, 7, None),
 ]
 CHARS = " !%'()+,-./0123456789:?ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 
 
 def font_path(fname):
+    if fname in LOCAL and LOCAL[fname].exists():
+        return LOCAL[fname]
     p = HERE / fname
     if not p.exists():
         url, digest = SOURCES[fname]
diff --git a/games/numdash/tools/levels.py b/games/numdash/tools/levels.py
index f441949..830005e 100644
--- a/games/numdash/tools/levels.py
+++ b/games/numdash/tools/levels.py
@@ -1,28 +1,14 @@
 #!/usr/bin/env python3
-"""Compile the checked-in GMD level exports to compressed C data.
+"""Compile NumDash's levels (levels/numdash/NN.json) to compressed C data, and emit the C
+object catalogue (tools/objdefs.py).
 
-Objects are cut into chunks along x; each chunk is one raw DEFLATE stream of
-column-coded records (type, flags, position, then the rarer properties). The
-runtime keeps only the chunks near the camera inflated in RAM, so levels of
-20 000 objects play in a window of a few thousand. Colour, enter-effect and
-trail triggers become a small event list. Also emits the C object catalogue.
-
-Levels 1-9 keep their first-release data exactly (whole-unit positions, file
-order) as 6-byte rows {dx, y, type, xform} so their replays stay valid.
-
-Record columns (after the record count), one entry per record, sorted by type:
-  T  zigzag(type - previous type)
-  P  props: 1 rotation, 2 flips, 4 scale, 8 paint, 16 row run, 32 column run,
-     64 aligned (x and y are multiples of 7.5 units)
-  X  zigzag x delta, Y zigzag y delta (1/32 units, or 7.5 units if aligned);
-     the base is reset to (chunk x, 0) when the type changes
-  R  rotation (1024 steps), F flip bits, S scale index, Q paint index,
-  N  run length - 2 and run step in 7.5 unit steps
+Objects are cut into chunks along x; each chunk is one raw DEFLATE stream of 6-byte rows
+{dx, y, type, xform} (whole-unit positions, x order). The runtime keeps only the chunks near
+the camera inflated in RAM. Colour events become a small event list.
+(Calcade, 19 octobre 2026: the importer of the original game's level files is removed.)
 """
 import os
-import base64
 import collections
-import gzip
 import hashlib
 import json
 import math
@@ -30,628 +16,45 @@ import struct
 import sys
 import zlib
 from pathlib import Path
-import xml.etree.ElementTree as ET
 
 ROOT = Path(__file__).resolve().parents[1]
 sys.path.insert(0, str(Path(__file__).resolve().parent))
 import objdefs as od  # noqa: E402
 
-GD3DS = 'https://github.com/AleFunky/gd3ds/tree/cdea1c2fad3d67fa17d2cfa781013b0ee58bb280/romfs/main_levels'
-GMDKIT = 'https://github.com/UHDanke/gmdkit/tree/ec79468588c6beb46712fbdc142bb06fa9a1d9c5/data/txt/object_string/official/main'
+# Calcade, 19 octobre 2026 : les niveaux officiels de Geometry Dash (données de RobTop Games) sont remplacés
+# par les 12 niveaux de NumDash, générés par tools/conformite/numdash_niveaux.py (levels/numdash/NN.json).
 # file, title, difficulty (1 easy .. 5 insane, 6 demon), stars, pulse bpm, source
-LEVELS = [
-    ('StereoMadness', 'STEREO MADNESS', 1, 1, 160, GD3DS),
-    ('BackOnTrack', 'BACK ON TRACK', 1, 2, 130, GD3DS),
-    ('Polargeist', 'POLARGEIST', 2, 3, 165, GD3DS),
-    ('DryOut', 'DRY OUT', 2, 4, 140, GD3DS),
-    ('BaseAfterBase', 'BASE AFTER BASE', 3, 5, 142, GD3DS),
-    ('CantLetGo', "CAN'T LET GO", 3, 6, 144, GD3DS),
-    ('Jumper', 'JUMPER', 4, 7, 175, GD3DS),
-    ('TimeMachine', 'TIME MACHINE', 4, 8, 143, GD3DS),
-    ('Cycles', 'CYCLES', 4, 9, 128, GD3DS),
-    ('Clubstep', 'CLUBSTEP', 6, 14, 128, GMDKIT + '/14.txt'),
-    ('Deadlocked', 'DEADLOCKED', 6, 15, 130, GMDKIT + '/20.txt'),
-    ('Dash', 'DASH', 5, 12, 128, GMDKIT + '/22.txt'),
-]
-LEGACY = 9          # levels compiled exactly as before (integer positions, x order)
+SOURCE = 'tools/conformite/numdash_niveaux.py'
+LEVELS = []
+for _k in range(12):
+    _j = json.loads((ROOT / 'levels/numdash' / ('%02d.json' % (_k + 1))).read_text())
+    LEVELS.append(('%02d' % (_k + 1), _j['nom'], _j['difficulte'], _j['etoiles'], _j['bpm'], SOURCE))
 CHUNK_OBJS = int(os.environ.get('ND_CHUNK_OBJS', 360))    # objects per chunk at most
 CHUNK_LEGACY = 1000 # objects per legacy chunk
 CHUNK_SPAN = int(os.environ.get('ND_CHUNK_SPAN', 2400))   # and at most this many units wide
-BAND = int(os.environ.get('ND_BAND', 450))     # 2.0+ levels: tall chunks are cut in bands this high
-Q = 32              # position units per GD unit
+Q = 32              # position units per level unit
 
 
-def decode(path):
-    nodes = list(ET.parse(path).getroot()[0])
-    props = {nodes[i].text: nodes[i + 1].text for i in range(0, len(nodes), 2)}
-    enc = props['k4']
-    raw = gzip.decompress(base64.urlsafe_b64decode(enc + '=' * (-len(enc) % 4))).decode('latin-1')
-    parts = raw.split(';')
-    header = dict(zip(parts[0].split(',')[::2], parts[0].split(',')[1::2]))
-    colors = {}
-    for ch in header.get('kS38', '').split('|'):
-        if not ch:
-            continue
-        it = ch.split('_')
-        d = dict(zip(it[::2], it[1::2]))
-        colors[int(d['6'])] = (int(d.get('1', 255)), int(d.get('2', 255)), int(d.get('3', 255)))
-    objs = []
-    for p in parts[1:]:
-        it = p.split(',')
-        d = dict(zip(it[::2], it[1::2]))
-        if '1' in d:
-            objs.append(d)
-    return header, colors, objs
-
-
-def compile_legacy(path):
-    """Levels 1-9: the same objects, positions and order as the first releases."""
-    header, colors, raw = decode(path)
-    objects, events, skipped = [], [], collections.Counter()
-    for order, d in enumerate(raw):
-        gid = int(d['1'])
-        x = int(round(float(d.get('2', 0))))
-        y = int(round(float(d.get('3', 0))))
-        if gid in od.COLOR_TRIGGERS:
-            chan = od.COLOR_TRIGGERS[gid]
-            dur = int(round(float(d.get('10', 0)) * 1000))
-            flags = (1 if d.get('11') == '1' else 0) | (2 if d.get('14') == '1' else 0) | (4 if d.get('17') == '1' else 0)
-            events.append((x, y, od.EV_COLOR, chan, int(d.get('7', 255)), int(d.get('8', 255)), int(d.get('9', 255)), flags, dur, order))
-            continue
-        if gid in od.FADE_TRIGGERS:
-            events.append((x, y, od.EV_FADE, od.FADE_TRIGGERS[gid], 0, 0, 0, 0, 0, order))
-            continue
-        if gid in od.TRAIL_TRIGGERS:
-            events.append((x, y, od.EV_TRAIL, od.TRAIL_TRIGGERS[gid], 0, 0, 0, 0, 0, order))
-            continue
-        t = od.BY_ID.get(gid)
-        if not t:
-            skipped[gid] += 1
-            continue
-        rot = int(round(float(d.get('6', 0)) / 90)) % 4
-        flips = (1 if d.get('4') == '1' else 0) | (2 if d.get('5') == '1' else 0)
-        objects.append(dict(x=x * Q, y=y * Q, t=t, rot=rot * 256, flips=flips, scale=0, paint=0, order=order))
+def compile_level(path):
+    """A NumDash level (levels/numdash/NN.json): objects by NumDash type name, colour events.
+    Integer positions, objects in x order."""
+    j = json.loads(Path(path).read_text())
+    c = j['couleurs']
+    colors = {'bg': tuple(c['fond']), 'g1': tuple(c['sol']), 'line': tuple(c['ligne']), 'obj': tuple(c['objets'])}
+    events = []
+    for order, e in enumerate(j['evenements']):
+        kind, x, y, chan, r, g, b, flags, dur = e
+        assert kind == 'COLOR' and 0 <= chan < 4
+        events.append((int(x), int(y), od.EV_COLOR, chan, r, g, b, flags, int(dur), order))
+    objects = []
+    for order, (t, x, y, rot, flips) in enumerate(j['objets']):
+        assert t in od.INDEX, 'unknown object %s' % t
+        objects.append(dict(x=int(x) * Q, y=int(y) * Q, t=od.INDEX[t], rot=(int(rot) // 90 % 4) * 256, flips=flips & 3,
+                            scale=0, paint=0, order=order))
     objects.sort(key=lambda o: (o['x'], o['order']))
-    # GD triggers fire in x order, ties broken by higher y first
     events.sort(key=lambda e: (e[0], -e[1], e[9]))
-    return header, colors, objects, events, skipped
-
-
-# Channels of 2.0+ levels are renumbered densely; the special ones first.
-NOCOPY = 0xffff      # LChan.copy: not a copy
-SPECIAL_CH = [1000, 1001, 1002, 1004, 1003, 1005, 1006, 1007, 1009, 1010, 1011, 1012, 1, 2, 3, 4]
-CT_DEFAULT_CH = {'OBJ': 1004, 'P1ADD': 1005, 'P2ADD': 1006, 'LBG': 1007, 'BLACK': 1010, 'WHITE': 1011, 'GLOW': 1004}
-LEGACY_CH = {29: 1000, 30: 1001, 104: 1002, 105: 1004, 221: 1, 717: 2, 718: 3, 743: 4, 744: 1003, 900: 1009, 915: 1002}
-TRIG_IDS = {899, 901, 1006, 1007, 1049, 1268, 1616, 1346, 1347, 1611, 1817, 3620, 1815, 1595, 2900, 3600, 1935, 1520,
-            1914, 1913, 1916} | set(LEGACY_CH)
-# trigger stream kinds (level.h)
-(TR_COLOR, TR_MOVE, TR_ALPHA, TR_TOGGLE, TR_PULSE, TR_FADE, TR_TRAIL, TR_SPAWN, TR_STOP, TR_ROTATE, TR_FOLLOW, TR_COUNT,
- TR_PICKUP, TR_COMPARE, TR_COLLISION, TR_TAP, TR_GROT, TR_END, TR_TIMEWARP, TR_SHAKE, TR_CAMERA) = range(1, 22)
-CAM_STATIC, CAM_ZOOM, CAM_OFFSET = range(3)
-NCHANNELS = 16
-# Levels whose travel turns: how far the player goes (forward, in units) from
-# the start to the end trigger, measured on the replay (tests/replays), so the
-# progress bar can count distance instead of x.
-END_DIST = {'DASH': 32832}
-# GD 2.2 directions (gameplay rotation): 1 up, 2 down, 3 left, 4 right -> frame (travel)
-DIR_FRAME = {4: 0, 2: 1, 3: 2, 1: 3}
-# GD z-layer values (key 24) -> NumDash's z buckets (0 = the part's own layer)
-ZLAYERS = {-5: 1, -3: 1, -1: 2, 1: 3, 3: 4, 5: 5, 7: 6, 9: 7, 11: 8}
-
-
-def parse_hsv(v):
-    """'h a s a v a sAdd a vAdd' -> (h deg, s, v, flags) or None when neutral."""
-    if not v:
-        return None
-    p = v.split('a')
-    try:
-        h, sv, vv = float(p[0]), float(p[1]), float(p[2])
-        sadd, vadd = p[3] == '1', p[4] == '1'
-    except (ValueError, IndexError):
-        return None
-    if h == 0 and (sv == 0 if sadd else sv == 1) and (vv == 0 if vadd else vv == 1):
-        return None
-    return (int(round(h)), int(round(sv * 64)), int(round(vv * 64)), (8 if sadd else 0) | (16 if vadd else 0))
-
-
-def svarint(v, out):
-    varint(zz(int(v)), out)
-
-
-class Level2:
-    """Tables of a 2.0+ level: dense channels, styles, groups, triggers."""
-
-    def __init__(self, header_raw):
-        self.ch_ids = list(SPECIAL_CH)          # dense index -> GD channel id (or ('hsv', base, hsv))
-        self.ch_init = {}                       # GD id -> dict from the header
-        for ch in header_raw.get('kS38', '').split('|'):
-            if not ch:
-                continue
-            it = ch.split('_')
-            d = dict(zip(it[::2], it[1::2]))
-            self.ch_init[int(d['6'])] = d
-        self.styles = {(-1, -1, 0, 0, 0, 0): 0}
-        self.gsets = {(): 0}
-        self.gset_data = [0]
-        self.groups = {}                        # GD group id -> dense
-        self.scales = {(1000, 1000): 0}
-
-    def preseed(self, raw):
-        """Channels that colour triggers change come first (after the fixed
-        ones): only those need state at run time."""
-        for d in raw:
-            gid = int(d['1'])
-            if gid in LEGACY_CH or gid == 899:
-                self.chan(LEGACY_CH.get(gid) or int(float(d.get('23', 1) or 1)) or 1)
-        self.ndyn = len(self.ch_ids)
-
-    def finalize(self):
-        """Merges static channels that are the same colour (and styles that
-        become the same). Returns (channel map, style map), old -> new."""
-        rows = self.chan_rows()
-        n = len(rows)
-        rep = list(range(n))
-        for _ in range(8):
-            seen, new = {}, list(range(n))
-            for c in range(n):
-                if c < self.ndyn:
-                    continue
-                r = list(rows[c])
-                if r[5] != NOCOPY:
-                    r[5] = rep[r[5]]
-                new[c] = seen.setdefault(tuple(r), c)
-            if new == rep:
-                break
-            rep = new
-        keep = sorted(set(rep))
-        idx = {c: k for k, c in enumerate(keep)}
-        cmap = [idx[rep[c]] for c in range(n)]
-        self.rows = []
-        for c in keep:
-            r = list(rows[c])
-            if r[5] != NOCOPY:
-                r[5] = cmap[r[5]]
-            self.rows.append(tuple(r))
-        m = lambda c: c if c < 0 else cmap[c]
-        smap, styles = {}, {}
-        for key, old in sorted(self.styles.items(), key=lambda kv: kv[1]):
-            main, detail, zl, flags, gs, arg = key
-            smap[old] = styles.setdefault((m(main), m(detail), zl, flags, gs, arg), len(styles))
-        self.final_styles = styles
-        self.cmap = cmap
-        assert len(self.rows) < 1023, "LStyle holds channels in 10 bits"
-        assert self.ndyn <= 64, 'Game.ch holds 64 changing channels (MAX_CHANNELS)'
-        return cmap, smap
-
-    def chan(self, gid):
-        if gid is None or gid == 0:
-            return -1
-        if gid not in self.ch_ids:
-            self.ch_ids.append(gid)
-        return self.ch_ids.index(gid)
-
-    def chan_hsv(self, base_dense, hsv):
-        key = ('hsv', base_dense, hsv)
-        if key not in self.ch_ids:
-            self.ch_ids.append(key)
-        return self.ch_ids.index(key)
-
-    def group(self, g):
-        return self.groups.setdefault(g, len(self.groups))
-
-    def gset(self, gs):
-        gs = tuple(sorted(set(gs)))
-        if gs not in self.gsets:
-            self.gsets[gs] = len(self.gset_data)
-            self.gset_data.append(len(gs))
-            self.gset_data += gs
-        return self.gsets[gs]
+    return int(j.get('depart', 0)), colors, objects, events
 
-    def style(self, main, detail, zl, flags, gs, arg):
-        key = (main, detail, zl, flags, gs, arg)
-        return self.styles.setdefault(key, len(self.styles))
-
-    def scale(self, sx, sy):
-        key = (int(round(sx * 1000)), int(round(sy * 1000)))
-        return self.scales.setdefault(key, len(self.scales))
-
-    def chan_rows(self):
-        """LChan rows {r,g,b, flags, opacity, copy, h, s, v} for every dense channel."""
-        rows = []
-        for cid in self.ch_ids:
-            if isinstance(cid, tuple):
-                _, base, (h, sv, vv, fl) = cid
-                rows.append((255, 255, 255, 64 | fl, 255, base, h, sv, vv))
-                continue
-            d = self.ch_init.get(cid, {})
-            r, g, b = int(d.get('1', 255)), int(d.get('2', 255)), int(d.get('3', 255))
-            if cid == 1000 and not d: r, g, b = 40, 125, 255
-            if cid == 1001 and not d: r, g, b = 0, 102, 255
-            if cid == 1010: r, g, b = 0, 0, 0
-            pl = int(d.get('4', -1) or -1)
-            fl = (1 if d.get('5') == '1' else 0) | (2 if pl == 1 else 4 if pl == 2 else 0)
-            if cid in (1005, 1006):
-                fl |= 1 | (2 if cid == 1005 else 4)
-            op = int(round(float(d.get('7', 1) or 1) * 255))
-            copy, h, sv, vv = NOCOPY, 0, 64, 64
-            if d.get('9') and int(d['9']):
-                copy = self.chan(int(d['9']))
-                hsv = parse_hsv(d.get('10', ''))
-                if hsv:
-                    h, sv, vv, f2 = hsv
-                    fl |= f2
-                fl |= 64
-            rows.append((r, g, b, fl, op, copy, h, sv, vv))
-        return rows
-
-
-def compile_new(path, od_extra=None):
-    """Levels 10-12: exact positions (1/32 unit), any rotation, 2.0 features:
-    colour channels, groups and group triggers."""
-    header, colors, raw = decode(path)
-    L2 = Level2(decode_header_raw(path))
-    L2.preseed(raw)
-    objects, skipped = [], collections.Counter()
-    ptrig, otrig, strig = [], [], []   # position, touch and spawned triggers
-    anchors = {}                       # dense group -> where its first object is
-    # groups the triggers need at run time: the ones they change, the ones
-    # that anchor something (centres, targets), and those whose triggers are
-    # spawned or stopped
-    used_groups = set()
-    I = lambda d, k: int(float(d.get(k, 0) or 0))
-    for d in raw:
-        gid = int(d['1'])
-        if gid in (901, 1007, 1049, 1346, 1347, 1268, 1616, 1611, 1815, 1595, 3620, 2067) or (gid == 1006 and d.get('52') == '1'):
-            used_groups.add(I(d, '51'))
-        if gid in (901, 1346, 1347, 1914, 2067) and I(d, '71'):
-            used_groups.add(I(d, '71'))
-        if gid in (1594, 2902) and I(d, '51'):
-            used_groups.add(I(d, '51'))
-        if gid in (1268, 3620) and I(d, '71'):
-            used_groups.add(I(d, '71'))
-        if gid == 1268:
-            rm = [int(v) for v in (d.get('442', '') or '').split('.') if v]
-            used_groups.update(rm[1::2])
-        if d.get('62') == '1' or gid == 1595:
-            used_groups.update(int(v) for v in d.get('57', '').split('.') if v)
-    used_groups.discard(0)
-    # the frame each trigger channel is travelled in (set by the gameplay
-    # rotations that switch to it); channel 0 starts the level going right
-    chan_frame = [0] * NCHANNELS
-    for d in raw:
-        if int(d['1']) == 2900 and d.get('171') == '1':
-            c = I(d, '173')
-            if 0 <= c < NCHANNELS:
-                chan_frame[c] = DIR_FRAME.get(I(d, '167'), 0)
-    # x and y reach of groups that move (for streaming)
-    reach = collections.defaultdict(float)
-    yreach = collections.defaultdict(float)
-    for d in raw:
-        gid = int(d['1'])
-        g = int(d.get('51', 0) or 0)
-        if gid == 901:
-            reach[g] += abs(float(d.get('28', 0) or 0))
-            yreach[g] += abs(float(d.get('29', 0) or 0))
-            if d.get('58') == '1':
-                reach[g] += float(d.get('10', 0) or 0) * 470 + 60
-            if d.get('59') == '1' or (d.get('100') == '1' and I(d, '71')):
-                yreach[g] += 3000
-            if d.get('100') == '1' and I(d, '71'):
-                reach[g] += 600
-        elif gid in (1346, 1347):
-            reach[g] += 150
-            yreach[g] += 150
-    for order, d in enumerate(raw):
-        gid = int(d['1'])
-        x, y = float(d.get('2', 0)), float(d.get('3', 0))
-        groups = [int(v) for v in d.get('57', '').split('.') if v]
-        groups = [g for g in groups if g in used_groups]
-        gs = L2.gset([L2.group(g) for g in groups]) if groups else 0
-        touch = d.get('11') == '1'
-        if gid in TRIG_IDS or gid in od.FADE_TRIGGERS or gid in od.TRAIL_TRIGGERS:
-            t = compile_trigger(L2, gid, d)
-            if t is None:
-                skipped[gid] += 1
-                continue
-            rec = (x, y, order, gs, t)
-            if d.get('62') == '1':
-                strig.append(rec + ([L2.group(g) for g in groups],))
-                continue
-            if not touch:
-                t['channel'] = I(d, '170') if 0 <= I(d, '170') < NCHANNELS else 0
-            (otrig if touch else ptrig).append(rec)
-            if touch:
-                # the trigger fires when the player touches its 30 x 30 box
-                st = L2.style(-1, -1, 0, 0, gs, len(otrig) - 1)
-                objects.append(dict(x=int(round(x * Q)), y=int(round(y * Q)), t=od.INDEX['TOUCH'], rot=0, flips=0,
-                                    scale=0, paint=st, order=order, ext=0))
-            continue
-        t = od.BY_ID.get(gid)
-        if not t:
-            skipped[gid] += 1
-            continue
-        info = od.OBJECTS[t - 1]
-        extra = info[8] if len(info) > 8 else {}
-        rot = int(round(float(d.get('6', 0)) % 360 / 360 * 1024)) % 1024
-        flips = (1 if d.get('4') == '1' else 0) | (2 if d.get('5') == '1' else 0)
-        main = L2.chan(int(d.get('21', 0) or 0)) if d.get('21') else -1
-        detail = L2.chan(int(d.get('22', 0) or 0)) if d.get('22') else -1
-        if d.get('41') == '1':
-            hsv = parse_hsv(d.get('43', ''))
-            if hsv:
-                main = L2.chan_hsv(main if main >= 0 else L2.chan(extra.get('base', 1004)), hsv)
-        if d.get('42') == '1':
-            hsv = parse_hsv(d.get('44', ''))
-            if hsv:
-                detail = L2.chan_hsv(detail if detail >= 0 else L2.chan(extra.get('detail', 1)), hsv)
-        zl = ZLAYERS.get(int(float(d.get('24', 0) or 0)), 0)
-        flags = (1 if d.get('64') == '1' else 0) | (2 if d.get('67') == '1' else 0) | (4 if d.get('135') == '1' else 0)
-        arg = 0
-        # teleports (2.2): a static force on exit (345/346, GD units, 5 bits
-        # above the offset or the exit group) and a gravity mode (354: 1
-        # normal, 2 flipped, 3 toggle; style flag bits 5-6)
-        tp_force = min(31, int(round(float(d.get('346', 0) or 0)))) if d.get('345') == '1' else 0
-        if gid == 747:
-            off = int(round(float(d.get('54', 0) or 0)))
-            assert -1024 <= off < 1024, 'teleport offset out of range'
-            arg = (off & 0x7ff) | (tp_force << 11)
-            if arg >= 0x8000:
-                arg -= 0x10000
-        elif gid in (1594, 2902) and I(d, '51') in used_groups:
-            # toggle ring: the group, bit 14 = switch it on; teleport: its exit
-            arg = L2.group(I(d, '51')) | (0x4000 if d.get('56') == '1' and gid == 1594 else 0)
-            if gid == 2902:
-                assert arg < 512
-                arg |= tp_force << 9
-        elif gid in (2069, 3645):
-            arg = min(4095, int(round(float(d.get('149', 1) or 1) * 100))) | (min(7, I(d, '530')) << 12)
-        elif gid == 1816:
-            arg = I(d, '80')
-        if d.get('121') == '1':
-            flags |= 8   # no touch
-        if gid in (747, 2902):
-            flags |= (I(d, '354') & 3) << 5
-        if d.get('111') == '1':
-            flags |= 16  # a portal in free mode (no band)
-        st = L2.style(main, detail, zl, flags, gs, arg)
-        sc = float(d.get('32', 1) or 1)
-        sx, sy = sc * float(d.get('128', 1) or 1), sc * float(d.get('129', 1) or 1)
-        scale = L2.scale(sx, sy)
-        ext = max([reach.get(g, 0) for g in groups] or [0])
-        yext = max([yreach.get(g, 0) for g in groups] or [0])
-        for g in groups:
-            anchors.setdefault(L2.group(g), (x, y))
-        objects.append(dict(x=int(round(x * Q)), y=int(round(y * Q)), t=t, rot=rot, flips=flips, scale=scale,
-                            paint=st, order=order, ext=ext, yext=yext, sx=max(abs(sx), abs(sy))))
-    cmap, smap = L2.finalize()
-    for o in objects:
-        o['paint'] = smap[o['paint']]
-    for (_, _, _, _, t, *_) in ptrig + otrig + strig:
-        if t['kind'] == TR_COLOR or (t['kind'] == TR_PULSE and not t['flags'] & 1):
-            t['target'] = cmap[t['target']]
-        if t['kind'] in (TR_COLOR, TR_PULSE) and t['flags'] & 64:
-            t['copy'] = cmap[t['copy']]
-    objects.sort(key=lambda o: (o['x'], o['order']))
-    # position triggers: one list per channel, in the order its frame
-    # travels (the forward coordinate, 1/8 unit)
-    def fwd(frame, x, y):
-        return (x, -y, -x, y)[frame]
-    stream, touch_offs = bytearray(), []
-    chan_off = [0xffffffff] * NCHANNELS
-    npos = 0
-    for c in range(NCHANNELS):
-        recs = [r for r in ptrig if r[4].get('channel', 0) == c]
-        if not recs:
-            continue
-        fr = chan_frame[c]
-        recs.sort(key=lambda e: (fwd(fr, e[0], e[1]), -e[1] if fr == 0 else e[0], e[2]))
-        chan_off[c] = len(stream)
-        first = int(round(fwd(fr, recs[0][0], recs[0][1]) * 8))
-        svarint(first, stream)
-        prev = first
-        for k, (x, y, order, gs, t) in enumerate(recs):
-            if k:
-                fi = max(int(round(fwd(fr, x, y) * 8)), prev)
-                varint(fi - prev, stream)
-                prev = fi
-            stream += encode_trigger(t, gs)
-            npos += 1
-        stream.append(0)   # the channel's end: a zero kind after a zero step
-        stream.append(0)
-    for (x, y, order, gs, t) in otrig:
-        touch_offs.append(len(stream))
-        stream += encode_trigger(t, gs)
-    # spawned triggers, listed by each of their groups (x order)
-    spawn = collections.defaultdict(list)
-    for (x, y, order, gs, t, own) in sorted(strig, key=lambda e: (e[0], e[2])):
-        off = len(stream)
-        stream += encode_trigger(t, gs)
-        for g in own:
-            spawn[g].append(off)
-    ng = len(L2.groups)
-    spawn_first, spawn_list = [], []
-    for g in range(ng + 1):
-        spawn_first.append(len(spawn_list))
-        if g < ng:
-            spawn_list += spawn.get(g, [])
-    anch = [anchors.get(g, (32767, 32767)) for g in range(ng)]
-    trig_info = dict(chan_off=chan_off, chan_frame=chan_frame, spawn_first=spawn_first, spawn_list=spawn_list,
-                     anchors=[(max(-32767, min(32767, int(round(ax)))), max(-32767, min(32767, int(round(ay))))) for ax, ay in anch])
-    events = []
-    return header, colors, objects, events, skipped, L2, bytes(stream), touch_offs, npos + len(strig), trig_info
-
-
-def compile_trigger(L2, gid, d):
-    """-> dict describing one trigger, or None when NumDash drops it."""
-    f = lambda k, dv=0.0: float(d.get(k, dv) or dv)
-    i = lambda k, dv=0: int(float(d.get(k, dv) or dv))
-    ms = lambda k: max(0, int(round(f(k) * 1000)))
-    if gid in od.FADE_TRIGGERS:
-        return dict(kind=TR_FADE, arg=od.FADE_TRIGGERS[gid])
-    if gid in od.TRAIL_TRIGGERS:
-        return dict(kind=TR_TRAIL, arg=od.TRAIL_TRIGGERS[gid])
-    if gid in LEGACY_CH or gid == 899:
-        ch = LEGACY_CH.get(gid) or i('23', 1) or 1
-        t = dict(kind=TR_COLOR, target=L2.chan(ch), rgb=(i('7', 255), i('8', 255), i('9', 255)), dur=ms('10'),
-                 opacity=int(round(f('35', 1) * 255)), flags=0, copy=255, hsv=None)
-        if d.get('17') == '1': t['flags'] |= 1
-        if d.get('15') == '1': t['flags'] |= 2
-        if d.get('16') == '1': t['flags'] |= 4
-        if d.get('14') == '1': t['flags'] |= 8          # tint ground (legacy BG)
-        if i('50'):
-            t['copy'] = L2.chan(i('50'))
-            t['hsv'] = parse_hsv(d.get('49', ''))
-            t['flags'] |= 64
-        return t
-    if gid == 901:
-        tm = d.get('100') == '1' and i('71')
-        fl = (1 if d.get('58') == '1' else 0) | (2 if d.get('59') == '1' else 0) | (4 if tm else 0)
-        t = dict(kind=TR_MOVE, target=L2.group(i('51')), dx=f('28'), dy=f('29'), dur=ms('10'), easing=i('30'),
-                 rate=int(round(f('85', 2) * 10)), flags=fl)
-        if fl & 3:
-            t['xmod'], t['ymod'] = int(round(f('143', 1) * 100)), int(round(f('144', 1) * 100))
-        if tm:
-            t['to'], t['centre'], t['axis'] = L2.group(i('71')) + 1, (L2.group(i('395')) + 1) if i('395') else 0, i('101')
-        return t
-    if gid == 1007:
-        return dict(kind=TR_ALPHA, target=L2.group(i('51')), opacity=int(round(f('35', 1) * 255)), dur=ms('10'))
-    if gid == 1049:
-        return dict(kind=TR_TOGGLE, target=L2.group(i('51')), on=1 if d.get('56') == '1' else 0)
-    G = lambda k: (L2.group(i(k)) + 1) if i(k) else 0     # dense group + 1, 0 = none
-    if gid == 1268:
-        rm = [int(v) for v in (d.get('442', '') or '').split('.') if v]
-        pairs = [(L2.group(a) + 1, L2.group(b) + 1) for a, b in zip(rm[::2], rm[1::2])]
-        return dict(kind=TR_SPAWN, target=G('51'), delay=ms('63'), remap=pairs[:8])
-    if gid == 1616:
-        return dict(kind=TR_STOP, target=G('51'))
-    if gid == 1346:
-        return dict(kind=TR_ROTATE, target=G('51'), centre=G('71'), deg=f('68') + 360 * f('69'), dur=ms('10'), easing=i('30'),
-                    rate=int(round(f('85', 2) * 10)), flags=1 if d.get('70') == '1' else 0)
-    if gid == 1347:
-        return dict(kind=TR_FOLLOW, target=G('51'), follow=G('71'), xmod=int(round(f('72', 1) * 100)), ymod=int(round(f('73', 1) * 100)),
-                    dur=ms('10'))
-    if gid == 1611:
-        return dict(kind=TR_COUNT, item=i('80'), count=i('77'), target=G('51'), on=1 if d.get('56') == '1' else 0)
-    if gid == 1817:
-        return dict(kind=TR_PICKUP, item=i('80'), count=i('77'), flags=1 if d.get('449') == '1' else 0)
-    if gid == 3620:
-        return dict(kind=TR_COMPARE, item=i('80'), op=i('482'), value=int(round(f('483') * 100)), target=G('51'), other=G('71'))
-    if gid == 1815:
-        return dict(kind=TR_COLLISION, a=i('80'), b=i('95'), target=G('51'), on=1 if d.get('56') == '1' else 0)
-    if gid == 1595:
-        return dict(kind=TR_TAP, target=G('51'), mode=i('82'))
-    if gid == 2900:
-        fl = (1 if d.get('171') == '1' else 0) | (2 if d.get('169') == '1' else 0) | (4 if d.get('584') == '1' else 0)
-        return dict(kind=TR_GROT, travel=i('167'), gravity=i('166'), flags=fl, chan=i('173'), vmod=int(round(f('583') * 100)))
-    if gid == 3600:
-        return dict(kind=TR_END)
-    if gid == 1935:
-        return dict(kind=TR_TIMEWARP, mod=max(1, min(255, int(round(f('120', 1) * 100)))))
-    if gid == 1520:
-        return dict(kind=TR_SHAKE, strength=min(255, i('75')), dur=ms('10'))
-    if gid == 1914:
-        return dict(kind=TR_CAMERA, cam=CAM_STATIC, a=G('71'), b=i('101'), c=1 if d.get('110') == '1' else 0, dur=ms('10'))
-    if gid == 1913:
-        return dict(kind=TR_CAMERA, cam=CAM_ZOOM, a=int(round(f('371', 1) * 100)), b=i('30'), c=min(255, int(round(f('85', 2) * 10))), dur=ms('10'))
-    if gid == 1916:
-        return dict(kind=TR_CAMERA, cam=CAM_OFFSET, a=i('28'), b=i('29'), c=0, dur=ms('10'))
-    if gid == 1006:
-        grp = d.get('52') == '1'
-        tgt = L2.group(i('51')) if grp else L2.chan(i('51'))
-        if tgt < 0 or not i('51'):
-            return None
-        t = dict(kind=TR_PULSE, target=tgt, rgb=(i('7', 255), i('8', 255), i('9', 255)), t_in=ms('45'), hold=ms('46'),
-                 t_out=ms('47'), flags=(1 if grp else 0) | (2 if d.get('65') == '1' else 0) | (4 if d.get('66') == '1' else 0),
-                 copy=255, hsv=None)
-        if d.get('48') == '1':
-            t['copy'] = L2.chan(i('50') or 1)
-            t['hsv'] = parse_hsv(d.get('49', ''))
-            t['flags'] |= 64
-        return t
-    return None
-
-
-def encode_trigger(t, gs):
-    """kind (bit 7: guarded by a group set), [group set], then the fields."""
-    out = bytearray([t['kind'] | (0x80 if gs else 0)])
-    if gs:
-        varint(gs, out)
-    k = t['kind']
-    if k in (TR_FADE, TR_TRAIL):
-        out.append(t['arg'])
-    elif k == TR_COLOR:
-        varint(t['target'], out)
-        out += bytes([*t['rgb'], t['opacity'], t['flags']])
-        varint(t['dur'], out)
-        if t['flags'] & 64:
-            varint(t['copy'], out)
-            h = t['hsv'] or (0, 64, 64, 0)
-            svarint(h[0], out); svarint(h[1], out); svarint(h[2], out); out.append(h[3])
-    elif k == TR_MOVE:
-        varint(t['target'], out)
-        svarint(round(t['dx'] * 4), out); svarint(round(t['dy'] * 4), out)
-        varint(t['dur'], out)
-        out += bytes([t['easing'], min(255, t['rate']), t['flags']])
-        if t['flags'] & 3:
-            svarint(t['xmod'], out); svarint(t['ymod'], out)
-        if t['flags'] & 4:
-            varint(t['to'], out); varint(t['centre'], out); out.append(t['axis'] & 255)
-    elif k == TR_ALPHA:
-        varint(t['target'], out); out.append(t['opacity']); varint(t['dur'], out)
-    elif k == TR_TOGGLE:
-        varint(t['target'], out); out.append(t['on'])
-    elif k == TR_SPAWN:
-        varint(t['target'], out); varint(t['delay'], out); out.append(len(t['remap']))
-        for a, b in t['remap']:
-            varint(a, out); varint(b, out)
-    elif k == TR_STOP:
-        varint(t['target'], out)
-    elif k == TR_ROTATE:
-        varint(t['target'], out); varint(t['centre'], out); svarint(round(t['deg'] * 4), out); varint(t['dur'], out)
-        out += bytes([t['easing'], min(255, t['rate']), t['flags']])
-    elif k == TR_FOLLOW:
-        varint(t['target'], out); varint(t['follow'], out); svarint(t['xmod'], out); svarint(t['ymod'], out); varint(t['dur'], out)
-    elif k == TR_COUNT:
-        out.append(t['item'] & 255); svarint(t['count'], out); varint(t['target'], out); out.append(t['on'])
-    elif k == TR_PICKUP:
-        out.append(t['item'] & 255); svarint(t['count'], out); out.append(t['flags'])
-    elif k == TR_COMPARE:
-        out.append(t['item'] & 255); out.append(t['op']); svarint(t['value'], out); varint(t['target'], out); varint(t['other'], out)
-    elif k == TR_COLLISION:
-        out += bytes([t['a'] & 255, t['b'] & 255]); varint(t['target'], out); out.append(t['on'])
-    elif k == TR_TAP:
-        varint(t['target'], out); out.append(t['mode'] & 255)
-    elif k == TR_GROT:
-        out += bytes([t['travel'] & 255, t['gravity'] & 255, t['flags'], t['chan'] & 255]); svarint(t['vmod'], out)
-    elif k == TR_END:
-        pass
-    elif k == TR_TIMEWARP:
-        out.append(t['mod'])
-    elif k == TR_SHAKE:
-        out.append(t['strength']); varint(t['dur'], out)
-    elif k == TR_CAMERA:
-        out.append(t['cam']); svarint(t['a'], out); svarint(t['b'], out); out.append(t['c']); varint(t['dur'], out)
-    elif k == TR_PULSE:
-        varint(t['target'], out)
-        out += bytes([*t['rgb'], t['flags']])
-        varint(t['t_in'], out); varint(t['hold'], out); varint(t['t_out'], out)
-        if t['flags'] & 64:
-            varint(t['copy'], out)
-            h = t['hsv'] or (0, 64, 64, 0)
-            svarint(h[0], out); svarint(h[1], out); svarint(h[2], out); out.append(h[3])
-    return bytes(out)
-
-
-def decode_header_raw(path):
-    nodes = list(ET.parse(path).getroot()[0])
-    props = {nodes[i].text: nodes[i + 1].text for i in range(0, len(nodes), 2)}
-    enc = props['k4']
-    raw = gzip.decompress(base64.urlsafe_b64decode(enc + '=' * (-len(enc) % 4))).decode('latin-1')
-    parts = raw.split(';')
-    return dict(zip(parts[0].split(',')[::2], parts[0].split(',')[1::2]))
-
-
-# ------------------------------------------------------------ record coding
 
 def varint(v, out):
     assert v >= 0
@@ -854,6 +257,11 @@ def c_ident(spr):
     return 'SPR_' + ''.join(ch.upper() if ch.isalnum() else '_' for ch in spr)
 
 
+# Colour channels in the order of level.h (CH_*), and the default one of each colour type.
+CH_NAMES = ['BG', 'G1', 'LINE', 'OBJ', '3DL', 'P1', 'P2', 'LBG', 'G2', 'BLACK', 'WHITE', 'LIGHTER', 'LEVEL1']
+DEFAULT_CH = {'OBJ': 'OBJ', 'P1ADD': 'P1', 'P2ADD': 'P2', 'LBG': 'LBG', 'BLACK': 'BLACK', 'WHITE': 'WHITE', 'GLOW': 'OBJ'}
+
+
 def emit_objdefs():
     h = ['/* Generated by tools/levels.py. Do not edit. */', '#ifndef NUMDASH_OBJDEFS_H', '#define NUMDASH_OBJDEFS_H',
          '#include <stdint.h>', 'enum {', '  OT_NONE = 0,']
@@ -877,9 +285,9 @@ def emit_objdefs():
     h.append('extern const uint16_t tile_prog_off[];')
     h.append('enum { EV_COLOR = 1, EV_FADE = 2, EV_TRAIL = 3 };')
     h.append('typedef struct { int16_t sprite; int8_t dx4, dy4; uint8_t layer, ctype, flags; uint16_t prog; } ObjPart;')
-    h.append('/* dbase, ddetail: default colour channels (dense index, see level.h); hx2: hitbox x offset in half units */')
-    h.append('typedef struct { uint16_t gd_id; uint8_t hit, special; uint16_t w10, h10; int8_t editor_dy; uint8_t nparts;'
-             ' uint16_t part0; uint8_t shape, anim, dbase, ddetail; int8_t hx2; } ObjDef;')
+    h.append('/* nd_id: NumDash\'s number of the object (its OT_ value); dbase, ddetail: default colour channels (see level.h) */')
+    h.append('typedef struct { uint16_t nd_id; uint8_t hit, special; uint16_t w10, h10; int8_t editor_dy; uint8_t nparts;'
+             ' uint16_t part0; uint8_t shape, anim, dbase, ddetail; } ObjDef;')
     h.append('extern const ObjDef objdefs[OT_COUNT];')
     h.append('extern const ObjPart objparts[];')
     h.append('#define OBJ_PART(d, k) (&objparts[(d)->part0 + (k)])')
@@ -891,13 +299,17 @@ def emit_objdefs():
     c = ['/* Generated by tools/levels.py. Do not edit. */', '#include "objdefs.h"', '#include "assets_lv.h"']
     # tile programs (index 0 = none)
     prog_index, prog_bytes, prog_off = {}, bytearray(), [0]
+    # only the programs an object of the catalogue draws (Calcade, 19 octobre 2026)
+    used_progs = set(p[0][5:] for o in od.OBJECTS for p in o[7] if isinstance(p[0], str) and p[0].startswith('prog:'))
     for pname, ops in od.TILE_PROGS.items():
+        if pname not in used_progs:
+            continue
         prog_index[pname] = len(prog_off)
         prog_off.append(len(prog_bytes))
         prog_bytes += od.encode_prog(ops)
     c.append('const uint8_t tile_prog_data[%d] = {%s};' % (max(1, len(prog_bytes)), ','.join(str(b) for b in prog_bytes) or '0'))
     c.append('const uint16_t tile_prog_off[%d] = {%s};' % (len(prog_off), ','.join(str(v) for v in prog_off)))
-    c += ['const ObjDef objdefs[OT_COUNT] = {', '  {0,0,0,0,0,0,0,0,0,0,0,0,0},']
+    c += ['const ObjDef objdefs[OT_COUNT] = {', '  {0,0,0,0,0,0,0,0,0,0,0,0},']
     parts_out = []
     for o in od.OBJECTS:
         name, ids, hit, w, hh, sp, edy, parts = o[:8]
@@ -910,12 +322,12 @@ def emit_objdefs():
                 parts_out.append('{-1,%d,%d,LAYER_%s,CT_%s,%d,%d}' % (dx4, dy4, layer, ct, fl, prog_index[spr[5:]]))
             else:
                 parts_out.append('{%s,%d,%d,LAYER_%s,CT_%s,%d,0}' % (c_ident(spr), dx4, dy4, layer, ct, fl))
-        ct0 = next((p[4] for p in parts if p[4] in CT_DEFAULT_CH), 'OBJ')
-        dbase = SPECIAL_CH.index(extra.get('base', CT_DEFAULT_CH[ct0]))
-        ddetail = SPECIAL_CH.index(extra.get('detail', 1))
-        c.append('  {%d,%d,SP_%s,%d,%d,%d,%d,%d,SHAPE_%s,%d,%d,%d,%d},' % (
-            ids[0] if ids else 0, hit, sp, int(round(w * 10)), int(round(hh * 10)), edy, len(parts), first,
-            extra.get('shape', 'BOX'), od.ANIM[extra.get('anim', 'NONE')], dbase, ddetail, int(round(extra.get('hx', 0) * 2))))
+        ct0 = next((p[4] for p in parts if p[4] in DEFAULT_CH), 'OBJ')
+        dbase = CH_NAMES.index(extra.get('base', DEFAULT_CH[ct0]))
+        ddetail = CH_NAMES.index(extra.get('detail', 'LEVEL1'))
+        c.append('  {%d,%d,SP_%s,%d,%d,%d,%d,%d,SHAPE_%s,%d,%d,%d},' % (
+            ids, hit, sp, int(round(w * 10)), int(round(hh * 10)), edy, len(parts), first,
+            extra.get('shape', 'BOX'), od.ANIM[extra.get('anim', 'NONE')], dbase, ddetail))
     c.append('};')
     c.append('const ObjPart objparts[] = {')
     for i in range(0, len(parts_out), 4):
@@ -927,20 +339,15 @@ def emit_objdefs():
 
 def main():
     emit_objdefs()
-    out = ['/* Generated by tools/levels.py from levels/reference. Do not edit. */', '#include "level.h"']
+    out = ['/* Generated by tools/levels.py from levels/numdash. Do not edit. */', '#include "level.h"']
     table, manifest = [], []
     total_z = 0
     max_window = 0
     all_chunks = 0
     for i, (fname, title, diff, stars, bpm, source) in enumerate(LEVELS):
-        path = ROOT / 'levels/reference' / (fname + '.gmd')
-        legacy = i < LEGACY
-        if legacy:
-            header, colors, objects, events, skipped = compile_legacy(path)
-            L2 = None
-        else:
-            header, colors, objects, events, skipped, L2, trig, touch, npos, tinfo = compile_new(path)
-            hdr_raw = decode_header_raw(path)
+        path = ROOT / 'levels/numdash' / (fname + '.json')
+        legacy = True
+        start_mode, colors, objects, events = compile_level(path)
         chunks = cut_chunks(objects, legacy)
         blob = bytearray()
         rows = []
@@ -990,51 +397,12 @@ def main():
         assert max(o['x'] for o in objects) * 32 // Q + 2048 * 32 < 1 << 21, 'level too long for RObj x'
         end_x = last_x + 330
         wall_x = int(round(end_x / 30.0)) * 30
-        bg = colors.get(1000, (40, 125, 255))
-        g1 = colors.get(1001, (0, 102, 255))
-        line = colors.get(1002, (255, 255, 255))
-        obj = colors.get(1004, (255, 255, 255))
+        bg, g1, line, obj = colors['bg'], colors['g1'], colors['line'], colors['obj']
         out += c_bytes('level%d_data' % i, bytes(blob))
         out.append('static const LChunk level%d_chunks[%d] = {' % (i, len(rows)))
         out += ['  ' + r + ',' for r in rows]
         out.append('};')
-        if L2:
-            rows_ch = L2.rows
-            out.append('static const LChan level%d_chans[%d] = {' % (i, len(rows_ch)))
-            for r in rows_ch:
-                out.append('  {{%d,%d,%d},%d,%d,%d,%d,%d,%d},' % r)
-            out.append('};')
-            st = sorted(L2.final_styles.items(), key=lambda kv: kv[1])
-            out.append('static const LStyle level%d_styles[%d] = {' % (i, len(st)))
-            for (main, detail, zl, fl, gs, arg), _ in st:
-                cz = (1023 if main < 0 else main) | (1023 if detail < 0 else detail) << 10 | zl << 20 | fl << 24
-                out.append('  {%du,%d,%d},' % (cz, gs, arg))
-            out.append('};')
-            out.append('static const uint16_t level%d_gsets[%d] = {%s};' % (i, len(L2.gset_data), ','.join(map(str, L2.gset_data))))
-            sc = sorted(L2.scales.items(), key=lambda kv: kv[1])
-            assert len(sc) <= 2048, 'too many scales'
-            out.append('static const int32_t level%d_scales[%d][2] = {%s};' % (i, len(sc), ','.join('{%d,%d}' % k for k, _ in sc)))
-            out += c_bytes('level%d_trig' % i, trig)
-            out.append('static const uint16_t level%d_touch[%d] = {%s};' % (i, max(1, len(touch)), ','.join(map(str, touch)) or '0'))
-            out.append('static const uint32_t level%d_chan_off[%d] = {%s};' % (i, NCHANNELS, ','.join('%du' % v for v in tinfo['chan_off'])))
-            out.append('static const uint8_t level%d_chan_frame[%d] = {%s};' % (i, NCHANNELS, ','.join(map(str, tinfo['chan_frame']))))
-            out.append('static const uint16_t level%d_spawn_first[%d] = {%s};' % (i, len(tinfo['spawn_first']), ','.join(map(str, tinfo['spawn_first']))))
-            sl = tinfo['spawn_list'] or [0]
-            assert max(sl) < 65536
-            out.append('static const uint16_t level%d_spawn_list[%d] = {%s};' % (i, len(sl), ','.join(map(str, sl))))
-            an = tinfo['anchors'] or [(0, 0)]
-            out.append('static const int16_t level%d_anchors[%d][2] = {%s};' % (i, len(an), ','.join('{%d,%d}' % a for a in an)))
-            ext2 = ('&(const LevelExt){level%d_chans,level%d_styles,level%d_gsets,level%d_scales,level%d_trig,level%d_touch,'
-                    'level%d_chan_off,level%d_chan_frame,level%d_spawn_first,level%d_spawn_list,level%d_anchors,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%du}') % (
-                i, i, i, i, i, i, i, i, i, i, i, len(rows_ch), L2.ndyn, len(st), len(L2.groups), len(sc), len(trig), len(touch),
-                int(header.get('kA6', 0) or 0), int(header.get('kA7', 0) or 0), 1 if str(hdr_raw.get('kA39', '0')) == '1' else 0,
-                END_DIST.get(title, 0))
-            print('  %d channels (%d dynamic), %d styles, %d groups, %d scales, %d triggers (%d bytes), %d touch' % (
-                len(rows_ch), L2.ndyn, len(st), len(L2.groups), len(sc), npos + len(touch), len(trig), len(touch)))
-            total_z += len(trig) + len(rows_ch) * 14 + len(st) * 8 + len(L2.gset_data) * 2 + len(sc) * 8 + 80 + \
-                len(tinfo['spawn_first']) * 2 + len(sl) * 2 + len(an) * 4
-        else:
-            ext2 = 'NULL'
+        ext2 = 'NULL'
         out.append('static const LevelEvent level%d_events[%d] = {' % (i, max(1, len(events))))
         for (x, y, kind, arg, r, g, b, flags, dur, _) in events:
             out.append('  {%d,%d,%d,%d,%d,%d,%d,%d,%d},' % (x, y, kind, arg, r, g, b, flags, dur))
@@ -1042,17 +410,13 @@ def main():
             out.append('  {0,0,0,0,0,0,0,0,0},')
         out.append('};')
         coins = coins[:3]
-        start_mode = int(header.get('kA2', 0))
         table.append('  {"%s",level%d_data,level%d_chunks,level%d_events,%s,%d,%d,%d,%d,%d,{%s},{%d,%d,%d},{%d,%d,%d},{%d,%d,%d},{%d,%d,%d},%d,%d,%d,%d,%d},' % (
             title.replace('"', '\\"'), i, i, i, ext2, base, len(rows), len(events), end_x, wall_x,
             ','.join(str(c) for c in coins + [0] * (3 - len(coins))),
             *bg, *g1, *line, *obj, diff, stars, bpm, start_mode, len(coins)))
-        manifest.append({'name': title, 'file': 'levels/reference/%s.gmd' % fname, 'source': source,
+        manifest.append({'name': title, 'file': 'levels/numdash/%s.json' % fname, 'source': source,
                          'sha256': hashlib.sha256(path.read_bytes()).hexdigest(),
-                         'objects': base, 'events': len(events), 'compressed_bytes': len(blob),
-                         'skipped_ids': {str(k): v for k, v in sorted(skipped.items())}})
-        if skipped:
-            print('%s: skipped ids %s' % (title, dict(skipped)))
+                         'objects': base, 'events': len(events), 'compressed_bytes': len(blob)})
         print('%-16s %6d objects in %3d chunks, %6d bytes, window %d (%d chunks)' % (title, base, len(rows), len(blob), need, max_chunks))
         all_chunks = max(all_chunks, max_chunks)
     out.append('const LevelDef level_defs[LEVEL_COUNT] = {')
diff --git a/games/numdash/tools/objdefs.py b/games/numdash/tools/objdefs.py
index 4f86c81..4938641 100644
--- a/games/numdash/tools/objdefs.py
+++ b/games/numdash/tools/objdefs.py
@@ -1,9 +1,10 @@
-"""Object catalogue shared by the level compiler and the C runtime.
+"""NumDash's object catalogue, shared by the level compiler and the C runtime.
 
-Hitboxes and draw layers follow Geometry Dash 2.x: hitbox sizes are in GD
-units before rotation; layer ranks encode GD's z-layer / blending / z-order
-sort so that decorations, glows, the player, portals and blocks overlap in
-the same order as the original game.
+Each object has NumDash's own number: its place in this table (OT_<NAME> in
+src/objdefs.h, 1 = BLOCK); custom levels store these numbers. Hitboxes are in
+level units (a block is 30) before rotation; layer ranks set the drawing order.
+(Calcade, 19 octobre 2026: the original game's object ids are no longer used, and
+the hitboxes of the hazards and special objects are NumDash's own, see HITBOX.)
 """
 
 # Collision kinds
@@ -26,161 +27,190 @@ ANIM = {'NONE': 0, 'SAW': 1, 'SPIN': 2, 'INVIS': 3, 'FLAME': 4, 'CHOMP': 5}
 # Part flags
 F_PULSE, F_RANDOM3, F_COIN, F_ANIM, F_QUAD, F_HALF = 1, 2, 4, 8, 16, 32
 
-# name, gd ids, collision, hitbox w, h, special, editor y offset, parts
+# name, collision, hitbox w, h, special, editor y offset, parts
 # part: (sprite, dx, dy, layer, colour type, flags)
 OBJECTS = [
-    ('BLOCK', [1], SOLID, 30, 30, 'NONE', 0, [('block', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_all', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('GRID_T', [2], SOLID, 30, 30, 'NONE', 0, [('grid_t', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_t', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('GRID_TL', [3], SOLID, 30, 30, 'NONE', 0, [('grid_tl', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_tl', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('GRID_C', [4], SOLID, 30, 30, 'NONE', 0, [('grid_c', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_c', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('GRID_LTR', [6], SOLID, 30, 30, 'NONE', 0, [('grid_ltr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_ltr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('GRID_LR', [7], SOLID, 30, 30, 'NONE', 0, [('grid_lr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_lr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('GRID_DECO', [5], NONE, 0, 0, 'NONE', 0, [('grid_none', 0, 0, 'DECO_BACK', 'OBJ', 0)]),
-    ('DIAG_DECO', [73], NONE, 0, 0, 'NONE', 0, [('diag_block', 0, 0, 'DECO_BACK', 'OBJ', 0)]),
-    ('PLANK', [40], SOLID, 30, 14, 'NONE', 8, [('plank', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_plank', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('SLAB0', [62], SOLID, 30, 16, 'NONE', 7, [('slab0', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('SLAB1', [65], SOLID, 30, 16, 'NONE', 7, [('slab1', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('SLAB2', [66], SOLID, 30, 16, 'NONE', 7, [('slab2', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('SLAB3', [68], SOLID, 30, 16, 'NONE', 7, [('slab3', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('SPIKE', [8], HAZARD, 6, 12, 'NONE', 0, [('spike', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_spike', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('SPIKE_SMALL', [39], HAZARD, 6, 5.6, 'NONE', -9, [('spike_small', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_spike_small', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('SPIKE_MED', [103], HAZARD, 4, 7.6, 'NONE', -6, [('spike_med', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_spike_med', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('PIT', [9], HAZARD, 9, 10.8, 'NONE', -13, [('pit0', 0, 0, 'BLOCK', 'BLACK', F_RANDOM3)]),
-    ('ROD1', [15], NONE, 0, 0, 'NONE', 6, [('rod1', 0, 0, 'RODS', 'BLACK', 0), ('rod_ball', 0, 28, 'ROD_BALLS', 'P1ADD', F_PULSE)]),
-    ('ROD2', [16], NONE, 0, 0, 'NONE', -1, [('rod2', 0, 0, 'RODS', 'BLACK', 0), ('rod_ball', 0, 20.5, 'ROD_BALLS', 'P1ADD', F_PULSE)]),
-    ('ROD3', [17], NONE, 0, 0, 'NONE', -8, [('rod3', 0, 0, 'RODS', 'BLACK', 0), ('rod_ball', 0, 13.5, 'ROD_BALLS', 'P1ADD', F_PULSE)]),
-    ('DSPIKES1', [18], NONE, 0, 0, 'NONE', 4, [('dspikes1', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('DSPIKES2', [19], NONE, 0, 0, 'NONE', 4, [('dspikes2', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('DSPIKES3', [20], NONE, 0, 0, 'NONE', -2, [('dspikes3', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('DSPIKES4', [21], NONE, 0, 0, 'NONE', -8, [('dspikes4', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('CHAIN', [41], NONE, 0, 0, 'NONE', -12, [('chain', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('CHAIN_SHORT', [110], NONE, 0, 0, 'NONE', -13, [('chain_short', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('STAR', [54], NONE, 0, 0, 'NONE', 0, [('star', 0, 0, 'DETAIL', 'P2ADD', 0)]),
-    ('PAD_Y', [35], SPECIAL, 25, 4, 'PAD_Y', -13, [('pad_yellow', 0, 0, 'SPECIAL', 'WHITE', 0), ('glow_pad_yellow', 0, 2, 'SPECIAL_GLOW', 'GLOW_Y', 0)]),
-    ('PAD_B', [67], SPECIAL, 25, 6, 'PAD_B', -12, [('pad_blue', 0, 0, 'SPECIAL', 'WHITE', 0), ('glow_pad_blue', 0, 2, 'SPECIAL_GLOW', 'GLOW_B', 0)]),
-    ('PAD_P', [140], SPECIAL, 25, 5, 'PAD_P', -13, [('pad_pink', 0, 0, 'SPECIAL', 'WHITE', 0), ('glow_pad_pink', 0, 2, 'SPECIAL_GLOW', 'GLOW_P', 0)]),
-    ('ORB_Y', [36], SPECIAL, 36, 36, 'ORB_Y', 0, [('orb_yellow', 0, 0, 'SPECIAL', 'WHITE', F_PULSE), ('glow_orb_yellow', 0, 0, 'SPECIAL_GLOW', 'GLOW_Y', 0)]),
-    ('ORB_P', [141], SPECIAL, 36, 36, 'ORB_P', 0, [('orb_pink', 0, 0, 'SPECIAL', 'WHITE', F_PULSE), ('glow_orb_pink', 0, 0, 'SPECIAL_GLOW', 'GLOW_P', 0)]),
-    ('ORB_B', [84], SPECIAL, 36, 36, 'ORB_B', 0, [('orb_blue', 0, 0, 'SPECIAL', 'WHITE', F_PULSE), ('glow_orb_blue', 0, 0, 'SPECIAL_GLOW', 'GLOW_B', 0)]),
-    ('GRAV_N', [10], SPECIAL, 25, 75, 'GRAV_N', 0, [('portal_grav_blue_front', 4, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_grav_blue_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
-    ('GRAV_F', [11], SPECIAL, 25, 75, 'GRAV_F', 0, [('portal_grav_yellow_front', 4, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_grav_yellow_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
-    ('PORTAL_CUBE', [12], SPECIAL, 34, 86, 'PORTAL_CUBE', 0, [('portal_cube_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_cube_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
-    ('PORTAL_SHIP', [13], SPECIAL, 34, 86, 'PORTAL_SHIP', 0, [('portal_ship_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_ship_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
-    ('COIN', [1329, 142], SPECIAL, 40, 40, 'COIN', 0, [('coin0', 0, 0, 'COIN', 'WHITE', F_COIN)]),
+    ('BLOCK', SOLID, 30, 30, 'NONE', 0, [('block', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_all', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('GRID_T', SOLID, 30, 30, 'NONE', 0, [('grid_t', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_t', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('GRID_TL', SOLID, 30, 30, 'NONE', 0, [('grid_tl', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_tl', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('GRID_C', SOLID, 30, 30, 'NONE', 0, [('grid_c', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_c', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('GRID_LTR', SOLID, 30, 30, 'NONE', 0, [('grid_ltr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_ltr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('GRID_LR', SOLID, 30, 30, 'NONE', 0, [('grid_lr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_lr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('GRID_DECO', NONE, 0, 0, 'NONE', 0, [('grid_none', 0, 0, 'DECO_BACK', 'OBJ', 0)]),
+    ('DIAG_DECO', NONE, 0, 0, 'NONE', 0, [('diag_block', 0, 0, 'DECO_BACK', 'OBJ', 0)]),
+    ('PLANK', SOLID, 30, 14, 'NONE', 8, [('plank', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_plank', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('SLAB0', SOLID, 30, 16, 'NONE', 7, [('slab0', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('SLAB1', SOLID, 30, 16, 'NONE', 7, [('slab1', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('SLAB2', SOLID, 30, 16, 'NONE', 7, [('slab2', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('SLAB3', SOLID, 30, 16, 'NONE', 7, [('slab3', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('SPIKE', HAZARD, 6, 12, 'NONE', 0, [('spike', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_spike', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('SPIKE_SMALL', HAZARD, 6, 5.6, 'NONE', -9, [('spike_small', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_spike_small', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('SPIKE_MED', HAZARD, 4, 7.6, 'NONE', -6, [('spike_med', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_spike_med', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('PIT', HAZARD, 9, 10.8, 'NONE', -13, [('pit0', 0, 0, 'BLOCK', 'BLACK', F_RANDOM3)]),
+    ('ROD1', NONE, 0, 0, 'NONE', 6, [('rod1', 0, 0, 'RODS', 'BLACK', 0), ('rod_ball', 0, 28, 'ROD_BALLS', 'P1ADD', F_PULSE)]),
+    ('ROD2', NONE, 0, 0, 'NONE', -1, [('rod2', 0, 0, 'RODS', 'BLACK', 0), ('rod_ball', 0, 20.5, 'ROD_BALLS', 'P1ADD', F_PULSE)]),
+    ('ROD3', NONE, 0, 0, 'NONE', -8, [('rod3', 0, 0, 'RODS', 'BLACK', 0), ('rod_ball', 0, 13.5, 'ROD_BALLS', 'P1ADD', F_PULSE)]),
+    ('DSPIKES1', NONE, 0, 0, 'NONE', 4, [('dspikes1', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('DSPIKES2', NONE, 0, 0, 'NONE', 4, [('dspikes2', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('DSPIKES3', NONE, 0, 0, 'NONE', -2, [('dspikes3', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('DSPIKES4', NONE, 0, 0, 'NONE', -8, [('dspikes4', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('CHAIN', NONE, 0, 0, 'NONE', -12, [('chain', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('CHAIN_SHORT', NONE, 0, 0, 'NONE', -13, [('chain_short', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('STAR', NONE, 0, 0, 'NONE', 0, [('star', 0, 0, 'DETAIL', 'P2ADD', 0)]),
+    ('PAD_Y', SPECIAL, 25, 4, 'PAD_Y', -13, [('pad_yellow', 0, 0, 'SPECIAL', 'WHITE', 0), ('glow_pad_yellow', 0, 2, 'SPECIAL_GLOW', 'GLOW_Y', 0)]),
+    ('PAD_B', SPECIAL, 25, 6, 'PAD_B', -12, [('pad_blue', 0, 0, 'SPECIAL', 'WHITE', 0), ('glow_pad_blue', 0, 2, 'SPECIAL_GLOW', 'GLOW_B', 0)]),
+    ('PAD_P', SPECIAL, 25, 5, 'PAD_P', -13, [('pad_pink', 0, 0, 'SPECIAL', 'WHITE', 0), ('glow_pad_pink', 0, 2, 'SPECIAL_GLOW', 'GLOW_P', 0)]),
+    ('ORB_Y', SPECIAL, 36, 36, 'ORB_Y', 0, [('orb_yellow', 0, 0, 'SPECIAL', 'WHITE', F_PULSE), ('glow_orb_yellow', 0, 0, 'SPECIAL_GLOW', 'GLOW_Y', 0)]),
+    ('ORB_P', SPECIAL, 36, 36, 'ORB_P', 0, [('orb_pink', 0, 0, 'SPECIAL', 'WHITE', F_PULSE), ('glow_orb_pink', 0, 0, 'SPECIAL_GLOW', 'GLOW_P', 0)]),
+    ('ORB_B', SPECIAL, 36, 36, 'ORB_B', 0, [('orb_blue', 0, 0, 'SPECIAL', 'WHITE', F_PULSE), ('glow_orb_blue', 0, 0, 'SPECIAL_GLOW', 'GLOW_B', 0)]),
+    ('GRAV_N', SPECIAL, 25, 75, 'GRAV_N', 0, [('portal_grav_blue_front', 4, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_grav_blue_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
+    ('GRAV_F', SPECIAL, 25, 75, 'GRAV_F', 0, [('portal_grav_yellow_front', 4, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_grav_yellow_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
+    ('PORTAL_CUBE', SPECIAL, 34, 86, 'PORTAL_CUBE', 0, [('portal_cube_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_cube_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
+    ('PORTAL_SHIP', SPECIAL, 34, 86, 'PORTAL_SHIP', 0, [('portal_ship_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_ship_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
+    ('COIN', SPECIAL, 40, 40, 'COIN', 0, [('coin0', 0, 0, 'COIN', 'WHITE', F_COIN)]),
     # added after the first release: new objects go last, custom levels store these indices
-    ('PORTAL_BALL', [47], SPECIAL, 34, 86, 'PORTAL_BALL', 0, [('portal_ball_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_ball_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
+    ('PORTAL_BALL', SPECIAL, 34, 86, 'PORTAL_BALL', 0, [('portal_ball_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_ball_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
     # ---- Clubstep (level 14): 1.x blocks, saws, monsters' parts and deco
-    ('UFO_PORTAL', [111], SPECIAL, 34, 86, 'PORTAL_UFO', 0, [('portal_ufo_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_ufo_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
-    ('SIZE_MINI', [101], SPECIAL, 31, 90, 'SIZE_MINI', 0, [('portal_mini_front', 4, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_mini_back', -5, 0, 'PORTAL_BACK', 'WHITE', 0)]),
-    ('SIZE_NORMAL', [99], SPECIAL, 31, 90, 'SIZE_NORMAL', 0, [('portal_big_front', 4, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_big_back', -5, 0, 'PORTAL_BACK', 'WHITE', 0)]),
-    ('BLACK_T', [91], SOLID, 30, 30, 'NONE', 0, [('prog:blk_t', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_t', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BLACK_TL', [92], SOLID, 30, 30, 'NONE', 0, [('prog:blk_tl', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_tl', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BLACK_C', [93], SOLID, 30, 30, 'NONE', 0, [('prog:blk_c', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('BLACK_IN', [94], SOLID, 30, 30, 'NONE', 0, [('prog:blk_in', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('BLACK_LTR', [95], SOLID, 30, 30, 'NONE', 0, [('prog:blk_ltr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_ltr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BLACK_LR', [96], SOLID, 30, 30, 'NONE', 0, [('prog:blk_lr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_lr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BEVEL_ALL', [69], SOLID, 30, 30, 'NONE', 0, [('bev_body', 0, 0, 'BLOCK', 'BLACK', 0), ('prog:edge_ltrb', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_all', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BEVEL_T', [70], SOLID, 30, 30, 'NONE', 0, [('bev_body', 0, 0, 'BLOCK', 'BLACK', 0), ('prog:edge_t', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_t', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BEVEL_C', [72], SOLID, 30, 30, 'NONE', 0, [('bev_body', 0, 0, 'BLOCK', 'BLACK', 0), ('prog:edge_c', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_c', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BEVEL_LR', [75], SOLID, 30, 30, 'NONE', 0, [('bev_body', 0, 0, 'BLOCK', 'BLACK', 0), ('prog:edge_lr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_lr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BRICK_ALL', [116], SOLID, 30, 30, 'NONE', 0, [('prog:brick_all', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_all', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BRICK_T', [117], SOLID, 30, 30, 'NONE', 0, [('prog:brick_t', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_t', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BRICK_TL', [118], SOLID, 30, 30, 'NONE', 0, [('prog:brick_tl', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_tl', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BRICK_C', [119], SOLID, 30, 30, 'NONE', 0, [('prog:brick_c', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_c', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BRICK_IN', [120], NONE, 0, 0, 'NONE', 0, [('prog:brick_in', 0, 0, 'DECO_BACK', 'OBJ', 0)]),
-    ('BRICK_LTR', [121], SOLID, 30, 30, 'NONE', 0, [('prog:brick_ltr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_ltr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('BRICK_LR', [122], SOLID, 30, 30, 'NONE', 0, [('prog:brick_lr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_lr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('STONE_T', [161], SOLID, 30, 30, 'NONE', 0, [('prog:stone_t', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_t', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('STONE_TL', [162], SOLID, 30, 30, 'NONE', 0, [('prog:stone_tl', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_tl', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('STONE_C', [163], SOLID, 30, 30, 'NONE', 0, [('prog:stone_c', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_c', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('STONE_IN', [164], NONE, 0, 0, 'NONE', 0, [('prog:stone_in', 0, 0, 'DECO_BACK', 'OBJ', 0)]),
-    ('STONE_LTR', [165], SOLID, 30, 30, 'NONE', 0, [('prog:stone_ltr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_ltr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('STONE_LR', [166], SOLID, 30, 30, 'NONE', 0, [('prog:stone_lr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_lr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('STONE_CREN', [167], SOLID, 30, 30, 'NONE', 0, [('prog:stone_cren', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_c', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('STONE_CHECK', [169], SOLID, 30, 30, 'NONE', 0, [('prog:stone_check', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_all', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('METAL_SLAB', [170], SOLID, 30, 21, 'NONE', 5, [('prog:metal_slab', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('METAL_SLAB2', [171], SOLID, 30, 21, 'NONE', 5, [('prog:metal_slab2', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('FAKE_SPIKE', [191], NONE, 0, 0, 'NONE', 0, [('fake_spike', 0, 0, 'DECO_BACK', 'BLACK', 0)]),
-    ('FAKE_SQUARE', [193], NONE, 0, 0, 'NONE', 0, [('prog:fake_square', 0, 0, 'DECO_BACK', 'OBJ', 0)]),
-    ('FAKE_SPIKE_H', [198], NONE, 0, 0, 'NONE', 0, [('fake_spike_h', 0, 0, 'DECO_BACK', 'BLACK', 0)]),
-    ('FAKE_SPIKE_S', [199], NONE, 0, 0, 'NONE', 0, [('fake_spike_s', 0, 0, 'DECO_BACK', 'BLACK', 0)]),
-    ('GROUND_SPIKES', [61], HAZARD, 9, 7.2, 'NONE', -8, [('ground_spikes', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('ICE_SPIKE', [177], HAZARD, 6, 12, 'NONE', 0, [('ice_spike', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_spike', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
-    ('ICE_SPIKE_HALF', [178], HAZARD, 6, 6.4, 'NONE', -8, [('ice_spike_half', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('ICE_SPIKE_SMALL', [179], HAZARD, 4, 8, 'NONE', -5, [('ice_spike_small', 0, 0, 'BLOCK', 'OBJ', 0)]),
-    ('INVIS_SPIKE', [144], HAZARD, 6, 12, 'NONE', 0, [('invis_spike', 0, 0, 'BLOCK', 'OBJ', 0)], {'anim': 'INVIS'}),
-    ('INVIS_SPIKE_S', [145], HAZARD, 4, 7.6, 'NONE', -6, [('invis_spike_s', 0, 0, 'BLOCK', 'OBJ', 0)], {'anim': 'INVIS'}),
-    ('INVIS_SQUARE', [146], SOLID, 30, 30, 'NONE', 0, [('invis_square', 0, 0, 'BLOCK', 'OBJ', 0)], {'anim': 'INVIS'}),
-    ('SAW_BIG', [88], HAZARD, 32.3, 32.3, 'NONE', 0, [('saw_big', 0, 0, 'BLOCK', 'BLACK', F_QUAD)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
-    ('SAW_MED', [89], HAZARD, 21.6, 21.6, 'NONE', 0, [('saw_med', 0, 0, 'BLOCK', 'BLACK', F_QUAD)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
-    ('SAW_SMALL', [98], HAZARD, 12, 12, 'NONE', 0, [('saw_small', 0, 0, 'BLOCK', 'BLACK', 0)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
-    ('BLADE_BIG', [183], HAZARD, 15.66, 15.66, 'NONE', 0, [('blade_big', 0, 0, 'BLOCK', 'OBJ', F_QUAD)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
-    ('BLADE_MED', [184], HAZARD, 20.4, 20.4, 'NONE', 0, [('blade_med', 0, 0, 'BLOCK', 'OBJ', 0)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
-    ('BLADE_SMALL', [185], HAZARD, 2.85, 2.85, 'NONE', 0, [('blade_small', 0, 0, 'BLOCK', 'OBJ', 0)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
-    ('OBLADE_BIG', [186], HAZARD, 32.3, 32.3, 'NONE', 0, [('oblade_big', 0, 0, 'BLOCK', 'OBJ', F_QUAD)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
-    ('OBLADE_MED', [187], HAZARD, 21.96, 21.96, 'NONE', 0, [('oblade_med', 0, 0, 'BLOCK', 'OBJ', F_QUAD)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
-    ('GEAR_L', [85], NONE, 0, 0, 'NONE', 0, [('gear_l', 0, 0, 'DETAIL', 'P1ADD', F_QUAD)], {'anim': 'SPIN'}),
-    ('GEAR_M', [86], NONE, 0, 0, 'NONE', 0, [('gear_m', 0, 0, 'DETAIL', 'P1ADD', F_QUAD)], {'anim': 'SPIN'}),
-    ('GEAR_S', [87], NONE, 0, 0, 'NONE', 0, [('gear_s', 0, 0, 'DETAIL', 'P1ADD', 0)], {'anim': 'SPIN'}),
-    ('WHEEL_L', [137], NONE, 0, 0, 'NONE', 0, [('wheel_l', 0, 0, 'DETAIL', 'P2ADD', F_QUAD)], {'anim': 'SPIN'}),
-    ('WHEEL_M', [138], NONE, 0, 0, 'NONE', 0, [('wheel_m', 0, 0, 'DETAIL', 'P2ADD', F_QUAD)], {'anim': 'SPIN'}),
-    ('WHEEL_S', [139], NONE, 0, 0, 'NONE', 0, [('wheel_s', 0, 0, 'DETAIL', 'P2ADD', 0)], {'anim': 'SPIN'}),
-    ('SPIKEWHEEL', [154], NONE, 0, 0, 'NONE', 0, [('spikewheel', 0, 0, 'DETAIL', 'P1ADD', F_QUAD)], {'anim': 'SPIN'}),
-    ('CARTWHEEL_L', [180], NONE, 0, 0, 'NONE', 0, [('cartwheel_l', 0, 0, 'DETAIL', 'P2ADD', F_QUAD)], {'anim': 'SPIN'}),
-    ('CARTWHEEL_M', [181], NONE, 0, 0, 'NONE', 0, [('cartwheel_m', 0, 0, 'DETAIL', 'P2ADD', F_QUAD)], {'anim': 'SPIN'}),
-    ('CARTWHEEL_S', [182], NONE, 0, 0, 'NONE', 0, [('cartwheel_s', 0, 0, 'DETAIL', 'P2ADD', 0)], {'anim': 'SPIN'}),
-    ('WIDE_CHAIN', [106], NONE, 0, 0, 'NONE', 0, [('wide_chain', 0, 0, 'DETAIL', 'P2ADD', 0)]),
-    ('WIDE_CHAIN_S', [107], NONE, 0, 0, 'NONE', 0, [('wide_chain_s', 0, 0, 'DETAIL', 'P2ADD', 0)]),
-    ('CLOUD_FADE_L', [48], NONE, 0, 0, 'NONE', 0, [('cloud_fade_l', 0, 0, 'DETAIL', 'P2ADD', F_HALF)]),
-    ('CLOUD_FADE_S', [49], NONE, 0, 0, 'NONE', 0, [('cloud_fade_s', 0, 0, 'DETAIL', 'P2ADD', F_HALF)]),
-    ('CLOUD_M', [129], NONE, 0, 0, 'NONE', 0, [('cloud_m', 0, 0, 'DETAIL', 'P1ADD', F_HALF)]),
-    ('CLOUD_L', [130], NONE, 0, 0, 'NONE', 0, [('cloud_l', 0, 0, 'DETAIL', 'P1ADD', F_HALF)]),
-    ('CLOUD_S', [131], NONE, 0, 0, 'NONE', 0, [('cloud_s', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('PULSE_DISC', [50], NONE, 0, 0, 'NONE', 0, [('pulse_disc', 0, 0, 'DETAIL', 'P2ADD', F_PULSE)]),
-    ('PULSE_RING', [51], NONE, 0, 0, 'NONE', 0, [('pulse_ring', 0, 0, 'DETAIL', 'P2ADD', F_PULSE)]),
-    ('PULSE_DIAMOND', [53], NONE, 0, 0, 'NONE', 0, [('pulse_diamond', 0, 0, 'DETAIL', 'P2ADD', F_PULSE)]),
-    ('PULSE_ARROW', [132], NONE, 0, 0, 'NONE', 0, [('pulse_arrow', 0, 0, 'DETAIL', 'P2ADD', F_PULSE)]),
-    ('PULSE_CROSS', [150], NONE, 0, 0, 'NONE', 0, [('pulse_cross', 0, 0, 'DETAIL', 'P2ADD', F_PULSE)]),
-    ('SPIKEROD_L', [151], NONE, 0, 0, 'NONE', 0, [('spikerod_l', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('SPIKEROD_M', [152], NONE, 0, 0, 'NONE', 0, [('spikerod_m', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('SPIKEROD_S', [153], NONE, 0, 0, 'NONE', 0, [('spikerod_s', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('DIAMOND_ROD', [190], NONE, 0, 0, 'NONE', 0, [('diamond_rod', 0, 0, 'DETAIL', 'P2ADD', 0)]),
-    ('WAVY', [157], NONE, 0, 0, 'NONE', 0, [('wavy', 0, 0, 'DETAIL', 'LBG', 0)]),
-    ('WAVY_L', [158], NONE, 0, 0, 'NONE', 0, [('wavy_l', 0, 0, 'DETAIL', 'LBG', 0)]),
-    ('WAVY_R', [159], NONE, 0, 0, 'NONE', 0, [('wavy_r', 0, 0, 'DETAIL', 'LBG', 0)]),
-    ('DECO_BRICKS_L', [113], NONE, 0, 0, 'NONE', 0, [('prog:deco_bricks_l', 0, 0, 'DETAIL', 'P1ADD', 0)]),
-    ('DECO_BRICKS_M', [114], NONE, 0, 0, 'NONE', 0, [('prog:deco_bricks_m', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('UFO_PORTAL', SPECIAL, 34, 86, 'PORTAL_UFO', 0, [('portal_ufo_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_ufo_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)]),
+    ('SIZE_MINI', SPECIAL, 31, 90, 'SIZE_MINI', 0, [('portal_mini_front', 4, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_mini_back', -5, 0, 'PORTAL_BACK', 'WHITE', 0)]),
+    ('SIZE_NORMAL', SPECIAL, 31, 90, 'SIZE_NORMAL', 0, [('portal_big_front', 4, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_big_back', -5, 0, 'PORTAL_BACK', 'WHITE', 0)]),
+    ('BLACK_T', SOLID, 30, 30, 'NONE', 0, [('prog:blk_t', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_t', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BLACK_TL', SOLID, 30, 30, 'NONE', 0, [('prog:blk_tl', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_tl', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BLACK_C', SOLID, 30, 30, 'NONE', 0, [('prog:blk_c', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('BLACK_IN', SOLID, 30, 30, 'NONE', 0, [('prog:blk_in', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('BLACK_LTR', SOLID, 30, 30, 'NONE', 0, [('prog:blk_ltr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_ltr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BLACK_LR', SOLID, 30, 30, 'NONE', 0, [('prog:blk_lr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_lr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BEVEL_ALL', SOLID, 30, 30, 'NONE', 0, [('bev_body', 0, 0, 'BLOCK', 'BLACK', 0), ('prog:edge_ltrb', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_all', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BEVEL_T', SOLID, 30, 30, 'NONE', 0, [('bev_body', 0, 0, 'BLOCK', 'BLACK', 0), ('prog:edge_t', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_t', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BEVEL_C', SOLID, 30, 30, 'NONE', 0, [('bev_body', 0, 0, 'BLOCK', 'BLACK', 0), ('prog:edge_c', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_c', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BEVEL_LR', SOLID, 30, 30, 'NONE', 0, [('bev_body', 0, 0, 'BLOCK', 'BLACK', 0), ('prog:edge_lr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_lr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BRICK_ALL', SOLID, 30, 30, 'NONE', 0, [('prog:brick_all', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_all', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BRICK_T', SOLID, 30, 30, 'NONE', 0, [('prog:brick_t', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_t', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BRICK_TL', SOLID, 30, 30, 'NONE', 0, [('prog:brick_tl', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_tl', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BRICK_C', SOLID, 30, 30, 'NONE', 0, [('prog:brick_c', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_c', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BRICK_IN', NONE, 0, 0, 'NONE', 0, [('prog:brick_in', 0, 0, 'DECO_BACK', 'OBJ', 0)]),
+    ('BRICK_LTR', SOLID, 30, 30, 'NONE', 0, [('prog:brick_ltr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_ltr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('BRICK_LR', SOLID, 30, 30, 'NONE', 0, [('prog:brick_lr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_lr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('STONE_T', SOLID, 30, 30, 'NONE', 0, [('prog:stone_t', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_t', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('STONE_TL', SOLID, 30, 30, 'NONE', 0, [('prog:stone_tl', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_tl', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('STONE_C', SOLID, 30, 30, 'NONE', 0, [('prog:stone_c', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_c', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('STONE_IN', NONE, 0, 0, 'NONE', 0, [('prog:stone_in', 0, 0, 'DECO_BACK', 'OBJ', 0)]),
+    ('STONE_LTR', SOLID, 30, 30, 'NONE', 0, [('prog:stone_ltr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_ltr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('STONE_LR', SOLID, 30, 30, 'NONE', 0, [('prog:stone_lr', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_lr', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('STONE_CREN', SOLID, 30, 30, 'NONE', 0, [('prog:stone_cren', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_c', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('STONE_CHECK', SOLID, 30, 30, 'NONE', 0, [('prog:stone_check', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_all', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('METAL_SLAB', SOLID, 30, 21, 'NONE', 5, [('prog:metal_slab', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('METAL_SLAB2', SOLID, 30, 21, 'NONE', 5, [('prog:metal_slab2', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('FAKE_SPIKE', NONE, 0, 0, 'NONE', 0, [('fake_spike', 0, 0, 'DECO_BACK', 'BLACK', 0)]),
+    ('FAKE_SQUARE', NONE, 0, 0, 'NONE', 0, [('prog:fake_square', 0, 0, 'DECO_BACK', 'OBJ', 0)]),
+    ('FAKE_SPIKE_H', NONE, 0, 0, 'NONE', 0, [('fake_spike_h', 0, 0, 'DECO_BACK', 'BLACK', 0)]),
+    ('FAKE_SPIKE_S', NONE, 0, 0, 'NONE', 0, [('fake_spike_s', 0, 0, 'DECO_BACK', 'BLACK', 0)]),
+    ('GROUND_SPIKES', HAZARD, 9, 7.2, 'NONE', -8, [('ground_spikes', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('ICE_SPIKE', HAZARD, 6, 12, 'NONE', 0, [('ice_spike', 0, 0, 'BLOCK', 'OBJ', 0), ('glow_spike', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)]),
+    ('ICE_SPIKE_HALF', HAZARD, 6, 6.4, 'NONE', -8, [('ice_spike_half', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('ICE_SPIKE_SMALL', HAZARD, 4, 8, 'NONE', -5, [('ice_spike_small', 0, 0, 'BLOCK', 'OBJ', 0)]),
+    ('INVIS_SPIKE', HAZARD, 6, 12, 'NONE', 0, [('invis_spike', 0, 0, 'BLOCK', 'OBJ', 0)], {'anim': 'INVIS'}),
+    ('INVIS_SPIKE_S', HAZARD, 4, 7.6, 'NONE', -6, [('invis_spike_s', 0, 0, 'BLOCK', 'OBJ', 0)], {'anim': 'INVIS'}),
+    ('INVIS_SQUARE', SOLID, 30, 30, 'NONE', 0, [('invis_square', 0, 0, 'BLOCK', 'OBJ', 0)], {'anim': 'INVIS'}),
+    ('SAW_BIG', HAZARD, 32.3, 32.3, 'NONE', 0, [('saw_big', 0, 0, 'BLOCK', 'BLACK', F_QUAD)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
+    ('SAW_MED', HAZARD, 21.6, 21.6, 'NONE', 0, [('saw_med', 0, 0, 'BLOCK', 'BLACK', F_QUAD)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
+    ('SAW_SMALL', HAZARD, 12, 12, 'NONE', 0, [('saw_small', 0, 0, 'BLOCK', 'BLACK', 0)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
+    ('BLADE_BIG', HAZARD, 15.66, 15.66, 'NONE', 0, [('blade_big', 0, 0, 'BLOCK', 'OBJ', F_QUAD)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
+    ('BLADE_MED', HAZARD, 20.4, 20.4, 'NONE', 0, [('blade_med', 0, 0, 'BLOCK', 'OBJ', 0)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
+    ('BLADE_SMALL', HAZARD, 2.85, 2.85, 'NONE', 0, [('blade_small', 0, 0, 'BLOCK', 'OBJ', 0)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
+    ('OBLADE_BIG', HAZARD, 32.3, 32.3, 'NONE', 0, [('oblade_big', 0, 0, 'BLOCK', 'OBJ', F_QUAD)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
+    ('OBLADE_MED', HAZARD, 21.96, 21.96, 'NONE', 0, [('oblade_med', 0, 0, 'BLOCK', 'OBJ', F_QUAD)], {'shape': 'CIRCLE', 'anim': 'SAW'}),
+    ('GEAR_L', NONE, 0, 0, 'NONE', 0, [('gear_l', 0, 0, 'DETAIL', 'P1ADD', F_QUAD)], {'anim': 'SPIN'}),
+    ('GEAR_M', NONE, 0, 0, 'NONE', 0, [('gear_m', 0, 0, 'DETAIL', 'P1ADD', F_QUAD)], {'anim': 'SPIN'}),
+    ('GEAR_S', NONE, 0, 0, 'NONE', 0, [('gear_s', 0, 0, 'DETAIL', 'P1ADD', 0)], {'anim': 'SPIN'}),
+    ('WHEEL_L', NONE, 0, 0, 'NONE', 0, [('wheel_l', 0, 0, 'DETAIL', 'P2ADD', F_QUAD)], {'anim': 'SPIN'}),
+    ('WHEEL_M', NONE, 0, 0, 'NONE', 0, [('wheel_m', 0, 0, 'DETAIL', 'P2ADD', F_QUAD)], {'anim': 'SPIN'}),
+    ('WHEEL_S', NONE, 0, 0, 'NONE', 0, [('wheel_s', 0, 0, 'DETAIL', 'P2ADD', 0)], {'anim': 'SPIN'}),
+    ('SPIKEWHEEL', NONE, 0, 0, 'NONE', 0, [('spikewheel', 0, 0, 'DETAIL', 'P1ADD', F_QUAD)], {'anim': 'SPIN'}),
+    ('CARTWHEEL_L', NONE, 0, 0, 'NONE', 0, [('cartwheel_l', 0, 0, 'DETAIL', 'P2ADD', F_QUAD)], {'anim': 'SPIN'}),
+    ('CARTWHEEL_M', NONE, 0, 0, 'NONE', 0, [('cartwheel_m', 0, 0, 'DETAIL', 'P2ADD', F_QUAD)], {'anim': 'SPIN'}),
+    ('CARTWHEEL_S', NONE, 0, 0, 'NONE', 0, [('cartwheel_s', 0, 0, 'DETAIL', 'P2ADD', 0)], {'anim': 'SPIN'}),
+    ('WIDE_CHAIN', NONE, 0, 0, 'NONE', 0, [('wide_chain', 0, 0, 'DETAIL', 'P2ADD', 0)]),
+    ('WIDE_CHAIN_S', NONE, 0, 0, 'NONE', 0, [('wide_chain_s', 0, 0, 'DETAIL', 'P2ADD', 0)]),
+    ('CLOUD_FADE_L', NONE, 0, 0, 'NONE', 0, [('cloud_fade_l', 0, 0, 'DETAIL', 'P2ADD', F_HALF)]),
+    ('CLOUD_FADE_S', NONE, 0, 0, 'NONE', 0, [('cloud_fade_s', 0, 0, 'DETAIL', 'P2ADD', F_HALF)]),
+    ('CLOUD_M', NONE, 0, 0, 'NONE', 0, [('cloud_m', 0, 0, 'DETAIL', 'P1ADD', F_HALF)]),
+    ('CLOUD_L', NONE, 0, 0, 'NONE', 0, [('cloud_l', 0, 0, 'DETAIL', 'P1ADD', F_HALF)]),
+    ('CLOUD_S', NONE, 0, 0, 'NONE', 0, [('cloud_s', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('PULSE_DISC', NONE, 0, 0, 'NONE', 0, [('pulse_disc', 0, 0, 'DETAIL', 'P2ADD', F_PULSE)]),
+    ('PULSE_RING', NONE, 0, 0, 'NONE', 0, [('pulse_ring', 0, 0, 'DETAIL', 'P2ADD', F_PULSE)]),
+    ('PULSE_DIAMOND', NONE, 0, 0, 'NONE', 0, [('pulse_diamond', 0, 0, 'DETAIL', 'P2ADD', F_PULSE)]),
+    ('PULSE_ARROW', NONE, 0, 0, 'NONE', 0, [('pulse_arrow', 0, 0, 'DETAIL', 'P2ADD', F_PULSE)]),
+    ('PULSE_CROSS', NONE, 0, 0, 'NONE', 0, [('pulse_cross', 0, 0, 'DETAIL', 'P2ADD', F_PULSE)]),
+    ('SPIKEROD_L', NONE, 0, 0, 'NONE', 0, [('spikerod_l', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('SPIKEROD_M', NONE, 0, 0, 'NONE', 0, [('spikerod_m', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('SPIKEROD_S', NONE, 0, 0, 'NONE', 0, [('spikerod_s', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('DIAMOND_ROD', NONE, 0, 0, 'NONE', 0, [('diamond_rod', 0, 0, 'DETAIL', 'P2ADD', 0)]),
+    ('WAVY', NONE, 0, 0, 'NONE', 0, [('wavy', 0, 0, 'DETAIL', 'LBG', 0)]),
+    ('WAVY_L', NONE, 0, 0, 'NONE', 0, [('wavy_l', 0, 0, 'DETAIL', 'LBG', 0)]),
+    ('WAVY_R', NONE, 0, 0, 'NONE', 0, [('wavy_r', 0, 0, 'DETAIL', 'LBG', 0)]),
+    ('DECO_BRICKS_L', NONE, 0, 0, 'NONE', 0, [('prog:deco_bricks_l', 0, 0, 'DETAIL', 'P1ADD', 0)]),
+    ('DECO_BRICKS_M', NONE, 0, 0, 'NONE', 0, [('prog:deco_bricks_m', 0, 0, 'DETAIL', 'P1ADD', 0)]),
     # ---- 2.0 levels. A touch-triggered trigger: fires when the player's box
     # overlaps its 30 x 30 box (style.arg = its index among the touch triggers)
-    ('TOUCH', [], SPECIAL, 30, 30, 'TOUCH', 0, []),
+    ('TOUCH', SPECIAL, 30, 30, 'TOUCH', 0, []),
 ]
 
-# Level trigger objects become events rather than objects.
+# Level events (colour changes, the enter effect, the trail)
 EV_COLOR, EV_FADE, EV_TRAIL = 1, 2, 3
-COLOR_TRIGGERS = {29: 0, 30: 1, 104: 2, 105: 3}     # BG, G1, LINE, OBJ
-FADE_TRIGGERS = {22: 0, 23: 1, 24: 2, 25: 3, 26: 4, 27: 5, 28: 6, 55: 7, 56: 8, 57: 9, 58: 10, 59: 11}
-TRAIL_TRIGGERS = {32: 1, 33: 0}
 
-# Palette offered by the level editor, in GD's build-tab order.
-EDITOR = ['BLOCK', 'GRID_T', 'GRID_TL', 'GRID_LTR', 'GRID_LR', 'GRID_C', 'PLANK',
-          'SPIKE', 'SPIKE_SMALL', 'SPIKE_MED', 'PIT', 'PAD_Y', 'PAD_P', 'PAD_B', 'ORB_Y',
-          'PORTAL_SHIP', 'PORTAL_CUBE', 'PORTAL_BALL', 'GRAV_F', 'GRAV_N', 'COIN', 'GRID_DECO', 'ROD1', 'ROD2',
-          'ROD3', 'DSPIKES3', 'DSPIKES4', 'CHAIN', 'STAR']
+# Palette offered by the level editor.
+EDITOR = ['BLOCK', 'GRID_T', 'GRID_TL', 'GRID_C', 'GRID_LTR', 'GRID_LR', 'PLANK', 'GRID_DECO',     # page 1: blocks
+          'SPIKE', 'SPIKE_MED', 'SPIKE_SMALL', 'PIT', 'PAD_Y', 'PAD_P', 'PAD_B', 'ORB_Y',            # 2: hazards, pads
+          'PORTAL_CUBE', 'PORTAL_SHIP', 'PORTAL_BALL', 'GRAV_N', 'GRAV_F', 'COIN', 'STAR', 'CHAIN',  # 3: gates
+          'ROD1', 'ROD2', 'ROD3', 'DSPIKES3', 'DSPIKES4']                                          # 4: decoration
 
 import math  # noqa: E402
-import objdefs_dl  # noqa: E402  (Deadlocked's objects, after the ones above)
+OBJECTS = [o for o in OBJECTS if o[0] != 'TOUCH']
 LOBJ_TYPES = len(OBJECTS) + 1       # types a custom level (LObj) may hold
 assert LOBJ_TYPES <= 256
-OBJECTS += objdefs_dl.OBJS
-import objdefs_dash  # noqa: E402  (Dash's)
-OBJECTS += objdefs_dash.OBJS
-
+# Calcade, 19 octobre 2026 : the catalogues of the original game's later levels (their decorations and
+# creatures, drawn after the originals) are removed; the gameplay objects they had are in objdefs_jeu.py.
+import objdefs_jeu  # noqa: E402
+OBJECTS += objdefs_jeu.OBJS_A
+OBJECTS += objdefs_jeu.OBJS_B
+
+# Objects NumDash's engine (src/game.c) does not play: slopes, the dual mode, teleports,
+# keys and items, force fields, gameplay modifiers, toggle and dash rings, collision blocks.
+UNPLAYED = {'TOUCH', 'DUAL_PORTAL', 'DUAL_EXIT', 'TELEPORT', 'TELEPORT2', 'KEY', 'COLLECT_ITEM', 'FORCE_BLOCK',
+            'FORCE_CIRCLE', 'STOP_DASH', 'HEAD_COLLIDE', 'WAVE_DRAG', 'GRAV_MODIFIER', 'STOP_BUFFER', 'COLLISION_BLOCK',
+            'TOGGLE_ORB', 'DASH_ORB', 'DASH_ORB_G'}
+OBJECTS = [o for o in OBJECTS if o[0] not in UNPLAYED and not (len(o) > 7 and o[7].get('shape') == 'SLOPE')]
+
+# NumDash's own hitboxes (w, h) for hazards and special objects.
+HITBOX = {
+    'SPIKE': (9, 14), 'SPIKE_SMALL': (9, 6), 'SPIKE_MED': (6, 9), 'PIT': (12, 9), 'GROUND_SPIKES': (12, 8),
+    'ICE_SPIKE': (9, 14), 'ICE_SPIKE_HALF': (9, 7), 'ICE_SPIKE_SMALL': (6, 9), 'INVIS_SPIKE': (9, 14), 'INVIS_SPIKE_S': (6, 9),
+    'PAD_Y': (26, 6), 'PAD_B': (26, 6), 'PAD_P': (26, 6), 'RED_PAD': (26, 6),
+    'ORB_Y': (34, 34), 'ORB_P': (34, 34), 'ORB_B': (34, 34), 'ORB_GREEN': (34, 34), 'RED_ORB': (34, 34), 'SPIDER_ORB': (34, 34),
+    'GRAV_N': (28, 80), 'GRAV_F': (28, 80), 'COIN': (36, 36),
+}
+GATES = {'PORTAL_CUBE', 'PORTAL_SHIP', 'PORTAL_BALL', 'UFO_PORTAL', 'WAVE_PORTAL', 'ROBOT_PORTAL', 'SPIDER_PORTAL',
+         'SWING_PORTAL', 'SIZE_MINI', 'SIZE_NORMAL', 'SPEED_SLOW', 'SPEED_NORMAL', 'SPEED_FAST', 'SPEED_FASTER'}
+
+
+def _own(o):
+    name, hit, w, h = o[0], o[1], o[2], o[3]
+    if name in HITBOX:
+        w, h = HITBOX[name]
+    elif name in GATES:
+        w, h = 36, 92
+    elif hit == HAZARD:
+        w, h = round(w * 0.9, 1), round(h * 0.9, 1)      # saws and blades: a little inside their drawing
+    extra = dict(o[7]) if len(o) > 7 else {}
+    extra.pop('hx', None)
+    # (name, NumDash number, collision, w, h, special, editor y offset, parts, extra)
+    return (name, None, hit, w, h, o[4], o[5], o[6], extra)
+
+
+OBJECTS = [_own(o) for o in OBJECTS]
+OBJECTS = [(o[0], k + 1) + o[2:] for k, o in enumerate(OBJECTS)]
 INDEX = {o[0]: i + 1 for i, o in enumerate(OBJECTS)}     # type 0 = none
-BY_ID = {}
-for i, o in enumerate(OBJECTS):
-    for gid in o[1]:
-        assert gid not in BY_ID, 'GD id %d listed twice' % gid
-        BY_ID[gid] = i + 1
 
 # Largest inflated chunk the runtime accepts (bytes); see level.c.
 CHUNK_BYTES = 6000
@@ -305,20 +335,17 @@ TILE_PROGS = {
 }
 
 
-TILE_PROGS.update(objdefs_dl.PROGS)
-RADIUS.update({INDEX[n]: r for n, r in objdefs_dl.RADIUS.items()})
-RADIUS.update({INDEX[n]: r for n, r in objdefs_dash.RADIUS.items()})
+TILE_PROGS.update(objdefs_jeu.PROGS)
+RADIUS.update({INDEX[n]: r for n, r in objdefs_jeu.RADIUS.items() if n in INDEX})
 
 
 def _auto_radius():
-    """Dash's objects drawn only by tile programs reach as far as their
-    corners (scaled pixel squares must not look bigger than they are)."""
-    first = len(OBJECTS) - len(objdefs_dash.OBJS)
-    for k, o in enumerate(OBJECTS[first:], first + 1):
+    """Objects drawn only by tile programs reach as far as their corners."""
+    for k, o in enumerate(OBJECTS, 1):
         if k in RADIUS:
             continue
         parts, r = o[7], math.hypot(o[3], o[4]) / 2
-        if parts and not all(isinstance(p[0], str) and p[0].startswith('prog:') for p in parts):
+        if not parts or not all(isinstance(p[0], str) and p[0].startswith('prog:') for p in parts):
             continue
         for p in parts:
             for op in TILE_PROGS[p[0][5:]]:
diff --git a/games/numdash/tools/objdefs_jeu.py b/games/numdash/tools/objdefs_jeu.py
new file mode 100644
index 0000000..da6154d
--- /dev/null
+++ b/games/numdash/tools/objdefs_jeu.py
@@ -0,0 +1,474 @@
+"""Gameplay objects added after the first levels: outline blocks, more spikes and saws, speed
+plates, the wave, robot, spider and swing gates, more rings and pads (Calcade, 19 octobre 2026).
+
+This table keeps only the objects that play a part in the game. The catalogues of the original
+game's later levels that NumDash 1.10.0 had (objdefs_dl.py, objdefs_dash.py: their decorations and
+creatures) are removed. Same tuple layout as objdefs.OBJECTS (without numbers: NumDash numbers objects by their place).
+"""
+from objdefs import NONE, SOLID, HAZARD, SPECIAL  # noqa: F401
+
+OBJS_A = [('OUT_SQUARE',
+  1,
+  30,
+  30,
+  'NONE',
+  0,
+  [('prog:o_out_square', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_out_square', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_TOP',
+  1,
+  30,
+  1.5,
+  'NONE',
+  0,
+  [('prog:o_top', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_top', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_CORNER',
+  1,
+  30,
+  30,
+  'NONE',
+  0,
+  [('prog:o_out_corner', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_out_corner', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_TOP_PILLAR',
+  1,
+  30,
+  30,
+  'NONE',
+  0,
+  [('prog:o_out_top_pillar', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_out_top_pillar', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_PILLAR',
+  1,
+  30,
+  30,
+  'NONE',
+  0,
+  [('prog:o_out_pillar', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_out_pillar', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_SLOPE_SIDE',
+  1,
+  30,
+  1.5,
+  'NONE',
+  0,
+  [('prog:o_ss', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_ss', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_SLAB',
+  1,
+  30,
+  15,
+  'NONE',
+  0,
+  [('prog:o_out_slab', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_out_slab', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_SLAB_MID',
+  1,
+  30,
+  15,
+  'NONE',
+  0,
+  [('prog:o_out_slab_mid', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_out_slab_mid', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_SLAB_SIDE',
+  1,
+  30,
+  15,
+  'NONE',
+  0,
+  [('prog:o_out_slab_side', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_out_slab_side', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_THICK_TOP',
+  1,
+  30,
+  3,
+  'NONE',
+  0,
+  [('prog:o_thtop', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_thtop', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_THICK_SMALL',
+  1,
+  15,
+  15,
+  'NONE',
+  0,
+  [('prog:o_thsm', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_thsm', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('OUT_THICK_SQUARE',
+  1,
+  30,
+  30,
+  'NONE',
+  0,
+  [('prog:o_thsq', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_thsq', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('PIT_CROWN', 2, 9, 5.2, 'NONE', -8, [('prog:pt_crown', 0, 0, 'BLOCK', 'BASE', 0)], {}),
+ ('PIT_BOWL', 2, 9, 7.2, 'NONE', 0, [('prog:pt_bowl', 0, 0, 'BLOCK', 'BASE', 0)], {}),
+ ('PIT_BOWL2', 2, 5.2, 7.2, 'NONE', 0, [('prog:pt_bowl2', 0, 0, 'BLOCK', 'BASE', 0)], {'hx': -5}),
+ ('PIT_SQUARE', 2, 9, 6, 'NONE', 0, [('prog:pt_square', 0, 0, 'BLOCK', 'BASE', 0)], {}),
+ ('PIT_STAIR', 2, 9, 12, 'NONE', 0, [('prog:pt_stair', 0, 0, 'BLOCK', 'BASE', 0)], {}),
+ ('PIT_TRI', 2, 2.4, 3.2, 'NONE', 0, [('prog:pt_tri', 0, 0, 'BLOCK', 'BASE', 0)], {}),
+ ('PIT_DOT', 2, 2.4, 3.2, 'NONE', 0, [('prog:pt_dot', 0, 0, 'BLOCK', 'BASE', 0)], {}),
+ ('PIT_WAVE_LOW', 2, 9, 4, 'NONE', -8, [('prog:pt_wlow', 0, 0, 'BLOCK', 'BASE', 0)], {}),
+ ('PIT_TRI_LOW', 2, 6, 4.4, 'NONE', -8, [('prog:pt_tlow', 0, 0, 'BLOCK', 'BASE', 0)], {'hx': -5}),
+ ('PIT_NOTCH', 2, 4.5, 5.2, 'NONE', 0, [('prog:pt_notch', 0, 0, 'BLOCK', 'BASE', 0)], {}),
+ ('CSPIKE',
+  2,
+  6,
+  12,
+  'NONE',
+  0,
+  [('prog:cs_cspike', 0, 0, 'BLOCK', 'BASE', 0), ('glow_spike', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {'detail': 'LEVEL1'}),
+ ('CSPIKE_SMALL',
+  2,
+  4,
+  7.6,
+  'NONE',
+  -6,
+  [('prog:cs_cspike_small', 0, 0, 'BLOCK', 'BASE', 0), ('glow_spike', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {'detail': 'LEVEL1'}),
+ ('CSPIKE_TINY',
+  2,
+  2.6,
+  4.8,
+  'NONE',
+  -9,
+  [('prog:cs_cspike_tiny', 0, 0, 'BLOCK', 'BASE', 0), ('glow_spike', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {'detail': 'LEVEL1'}),
+ ('ISPIKE_TINY', 2, 2.6, 4.8, 'NONE', -9, [('prog:is_tiny', 0, 0, 'BLOCK', 'BASE', 0)], {'anim': 'INVIS'}),
+ ('ISPIKE_HALF', 2, 6, 5.6, 'NONE', -9, [('prog:is_half', 0, 0, 'BLOCK', 'BASE', 0)], {'anim': 'INVIS'}),
+ ('INVIS_SLAB', 1, 30, 14, 'NONE', 8, [('prog:is_slab', 0, 0, 'BLOCK', 'BASE', 0)], {'anim': 'INVIS'}),
+ ('COGSAW_L',
+  2,
+  32,
+  32,
+  'NONE',
+  0,
+  [('cogsaw_l', 0, 0, 'BLOCK', 'BLACK', 16), ('cogsaw_l_ring', 0, 0, 'BLOCK', 'BASE', 16)],
+  {'anim': 'SAW', 'shape': 'CIRCLE'}),
+ ('COGSAW_M',
+  2,
+  17.68,
+  17.68,
+  'NONE',
+  0,
+  [('cogsaw_m', 0, 0, 'BLOCK', 'BLACK', 0), ('cogsaw_m_ring', 0, 0, 'BLOCK', 'BASE', 0)],
+  {'anim': 'SAW', 'shape': 'CIRCLE'}),
+ ('COGSAW_S',
+  2,
+  12.48,
+  12.48,
+  'NONE',
+  0,
+  [('cogsaw_s', 0, 0, 'BLOCK', 'BLACK', 0), ('cogsaw_s_ring', 0, 0, 'BLOCK', 'BASE', 0)],
+  {'anim': 'SAW', 'shape': 'CIRCLE'}),
+ ('DARKBLADE_L',
+  2,
+  28.9,
+  28.9,
+  'NONE',
+  0,
+  [('darkblade_l', 0, 0, 'BLOCK', 'BLACK', 16), ('darkblade_l_core', 0, 0, 'BLOCK', 'BASE', 0)],
+  {'anim': 'SAW', 'detail': 'LEVEL1', 'shape': 'CIRCLE'}),
+ ('DARKBLADE_M',
+  2,
+  17.6,
+  17.6,
+  'NONE',
+  0,
+  [('darkblade_m', 0, 0, 'BLOCK', 'BLACK', 0), ('darkblade_m_core', 0, 0, 'BLOCK', 'BASE', 0)],
+  {'anim': 'SAW', 'detail': 'LEVEL1', 'shape': 'CIRCLE'}),
+ ('SPEED_SLOW', 3, 35, 44, 'SPEED_0', 0, [('speed0', 0, 0, 'PORTAL_FRONT', 'WHITE', 0)], {}),
+ ('SPEED_NORMAL', 3, 33, 56, 'SPEED_1', 0, [('speed1', 0, 0, 'PORTAL_FRONT', 'WHITE', 0)], {}),
+ ('SPEED_FAST', 3, 51, 56, 'SPEED_2', 0, [('speed2', 0, 0, 'PORTAL_FRONT', 'WHITE', 0)], {}),
+ ('SPEED_FASTER', 3, 65, 56, 'SPEED_3', 0, [('speed3', 0, 0, 'PORTAL_FRONT', 'WHITE', 0)], {}),
+ ('WAVE_PORTAL',
+  3,
+  34,
+  86,
+  'PORTAL_WAVE',
+  0,
+  [('portal_wave_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_wave_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)],
+  {}),
+ ('ROBOT_PORTAL',
+  3,
+  34,
+  86,
+  'PORTAL_ROBOT',
+  0,
+  [('portal_robot_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_robot_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)],
+  {}),
+ ('ORB_GREEN',
+  3,
+  36,
+  36,
+  'ORB_G',
+  0,
+  [('orb_green', 0, 0, 'SPECIAL', 'WHITE', 1), ('glow_orb_green', 0, 0, 'SPECIAL_GLOW', 'GLOW_Y', 0)],
+  {})]
+
+OBJS_B = [('OUT_SMALL_SQUARE',
+  1,
+  15,
+  15,
+  'NONE',
+  0,
+  [('prog:o_sq_s', 0, 0, 'BLOCK', 'BASE', 0), ('prog:og_sq_s', 0, 0, 'BLOCK_GLOW', 'GLOW', 0)],
+  {}),
+ ('GRAD_SLAB', 1, 30, 14, 'NONE', 0, [('prog:gr_slab', 0, 0, 'BLOCK', 'BASE', 0)], {'detail': 'LEVEL1'}),
+ ('GRAD_SMALL', 1, 15, 15, 'NONE', 0, [('prog:gr_small', 0, 0, 'BLOCK', 'BASE', 0)], {'detail': 'LEVEL1'}),
+ ('BSPIKE_TINY', 2, 2.6, 4.8, 'NONE', -9, [('prog:bs_tiny', 0, 0, 'BLOCK', 'BASE', 0)], {}),
+ ('SPIDER_PORTAL',
+  3,
+  34,
+  86,
+  'PORTAL_SPIDER',
+  0,
+  [('portal_spider_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_spider_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)],
+  {}),
+ ('SWING_PORTAL',
+  3,
+  34,
+  86,
+  'PORTAL_SWING',
+  0,
+  [('portal_swing_front', 5, 0, 'PORTAL_FRONT', 'WHITE', 0), ('portal_swing_back', -6, 0, 'PORTAL_BACK', 'WHITE', 0)],
+  {}),
+ ('SPIDER_ORB',
+  3,
+  36,
+  36,
+  'ORB_SPIDER',
+  0,
+  [('orb_spider', 0, 0, 'SPECIAL', 'WHITE', 1), ('glow_orb_red', 0, 0, 'SPECIAL_GLOW', 'GLOW_P', 0)],
+  {}),
+ ('RED_ORB',
+  3,
+  36,
+  36,
+  'ORB_R',
+  0,
+  [('orb_red', 0, 0, 'SPECIAL', 'WHITE', 1), ('glow_orb_red', 0, 0, 'SPECIAL_GLOW', 'GLOW_P', 0)],
+  {}),
+ ('RED_PAD', 3, 25, 4, 'PAD_R', -12, [('pad_red', 0, -1, 'SPECIAL', 'WHITE', 0)], {})]
+
+PROGS = {'bs_tiny': [('poly', [(-6.0, -6.0), (0.0, 6.0), (6.0, -6.0)], 'BLACK', 1.0),
+             ('poly', [(-6.5, -6.0), (-0.5, 6.0), (0.5, 6.0), (-5.5, -6.0)], 'BASE', 1.0),
+             ('poly', [(0.5, 6.0), (6.5, -6.0), (5.5, -6.0), (-0.5, 6.0)], 'BASE', 1.0)],
+ 'cs_cspike': [('poly', [(-15.0, -15.0), (0.0, 15.0), (15.0, -15.0)], 'BASE', 1.0),
+               ('poly', [(-12.0, -13.0), (0.0, 10.5), (12.0, -13.0)], 'DETAIL', 1.0)],
+ 'cs_cspike_small': [('poly', [(-10.0, -9.5), (0.0, 9.5), (10.0, -9.5)], 'BASE', 1.0),
+                     ('poly', [(-7.0, -7.5), (0.0, 5.0), (7.0, -7.5)], 'DETAIL', 1.0)],
+ 'cs_cspike_tiny': [('poly', [(-6.0, -6.0), (0.0, 6.0), (6.0, -6.0)], 'BASE', 1.0),
+                    ('poly', [(-3.0, -4.0), (0.0, 1.5), (3.0, -4.0)], 'DETAIL', 1.0)],
+ 'gr_slab': [('vgrad', -15, -7, 15, 7, 'DETAIL', 0.9, 0.2),
+             ('rect', -15, 5.5, 15, 7, 'BASE', 1.0),
+             ('rect', -15, -7, 15, -5.5, 'BASE', 1.0),
+             ('rect', -15, -7, -13.5, 7, 'BASE', 1.0),
+             ('rect', 13.5, -7, 15, 7, 'BASE', 1.0)],
+ 'gr_small': [('vgrad', -7.5, -7.5, 7.5, 7.5, 'DETAIL', 0.9, 0.2),
+              ('rect', -7.5, 6.0, 7.5, 7.5, 'BASE', 1.0),
+              ('rect', -7.5, -7.5, 7.5, -6.0, 'BASE', 1.0),
+              ('rect', -7.5, -7.5, -6.0, 7.5, 'BASE', 1.0),
+              ('rect', 6.0, -7.5, 7.5, 7.5, 'BASE', 1.0)],
+ 'is_half': [('poly', [(-15.5, -6.0), (-0.5, 7.5), (0.5, 6.0), (-14.5, -7.5)], 'BASE', 1.0),
+             ('poly', [(0.5, 7.5), (15.5, -6.0), (14.5, -7.5), (-0.5, 6.0)], 'BASE', 1.0),
+             ('rect', -15, -7.5, 15, -6, 'BASE', 1.0)],
+ 'is_slab': [('rect', -15, 5.5, 15, 7, 'BASE', 1.0),
+             ('rect', -15, -7, 15, -5.5, 'BASE', 1.0),
+             ('rect', -15, -7, -13.5, 7, 'BASE', 1.0),
+             ('rect', 13.5, -7, 15, 7, 'BASE', 1.0)],
+ 'is_tiny': [('poly', [(-6.5, -5.5), (-0.5, 6.5), (0.5, 5.5), (-5.5, -6.5)], 'BASE', 1.0),
+             ('poly', [(0.5, 6.5), (6.5, -5.5), (5.5, -6.5), (-0.5, 5.5)], 'BASE', 1.0),
+             ('rect', -6, -6.6, 6, -5.4, 'BASE', 1.0)],
+ 'o_out_corner': [('rect', -15, 13.5, 15, 15, 'BASE', 1.0), ('rect', -15, -15, -13.5, 15, 'BASE', 1.0)],
+ 'o_out_pillar': [('rect', -15, -15, -13.5, 15, 'BASE', 1.0), ('rect', 13.5, -15, 15, 15, 'BASE', 1.0)],
+ 'o_out_slab': [('rect', -15, 6.0, 15, 7.5, 'BASE', 1.0),
+                ('rect', -15, -7.5, 15, -6.0, 'BASE', 1.0),
+                ('rect', -15, -7.5, -13.5, 7.5, 'BASE', 1.0),
+                ('rect', 13.5, -7.5, 15, 7.5, 'BASE', 1.0)],
+ 'o_out_slab_mid': [('rect', -15, 6.0, 15, 7.5, 'BASE', 1.0), ('rect', -15, -7.5, 15, -6.0, 'BASE', 1.0)],
+ 'o_out_slab_side': [('rect', -15, 6.0, 15, 7.5, 'BASE', 1.0),
+                     ('rect', -15, -7.5, 15, -6.0, 'BASE', 1.0),
+                     ('rect', -15, -7.5, -13.5, 7.5, 'BASE', 1.0)],
+ 'o_out_square': [('rect', -15, 13.5, 15, 15, 'BASE', 1.0),
+                  ('rect', -15, -15, 15, -13.5, 'BASE', 1.0),
+                  ('rect', -15, -15, -13.5, 15, 'BASE', 1.0),
+                  ('rect', 13.5, -15, 15, 15, 'BASE', 1.0)],
+ 'o_out_top_pillar': [('rect', -15, 13.5, 15, 15, 'BASE', 1.0),
+                      ('rect', -15, -15, -13.5, 15, 'BASE', 1.0),
+                      ('rect', 13.5, -15, 15, 15, 'BASE', 1.0)],
+ 'o_sq_s': [('rect', -7.5, 6.0, 7.5, 7.5, 'BASE', 1.0),
+            ('rect', -7.5, -7.5, 7.5, -6.0, 'BASE', 1.0),
+            ('rect', -7.5, -7.5, -6.0, 7.5, 'BASE', 1.0),
+            ('rect', 6.0, -7.5, 7.5, 7.5, 'BASE', 1.0)],
+ 'o_ss': [('poly', [(-15.0, -1.0), (15.0, -1.0), (15.0, 1.0), (-12.0, 1.0)], 'BASE', 1.0)],
+ 'o_thsm': [('rect', -7.5, 4.5, 7.5, 7.5, 'BASE', 1.0),
+            ('rect', -7.5, -7.5, 7.5, -4.5, 'BASE', 1.0),
+            ('rect', -7.5, -7.5, -4.5, 7.5, 'BASE', 1.0),
+            ('rect', 4.5, -7.5, 7.5, 7.5, 'BASE', 1.0)],
+ 'o_thsq': [('rect', -15, 12, 15, 15, 'BASE', 1.0),
+            ('rect', -15, -15, 15, -12, 'BASE', 1.0),
+            ('rect', -15, -15, -12, 15, 'BASE', 1.0),
+            ('rect', 12, -15, 15, 15, 'BASE', 1.0)],
+ 'o_thtop': [('rect', -15, -1.5, 15, 1.5, 'BASE', 1.0)],
+ 'o_top': [('rect', -15, -0.75, 15, 0.75, 'BASE', 1.0)],
+ 'og_out_corner': [('vgrad', -15, 15, 15, 20.0, 'GLOW', 0, 0.4),
+                   ('vgrad', -15, 10.0, 15, 15, 'GLOW', 0.4, 0),
+                   ('poly', [(-14.0, -15.0), (-14.0, 15.0), (-16.0, 15.0), (-16.0, -15.0)], 'GLOW', 0.33333333333333337),
+                   ('poly', [(-14.0, -15.0), (-14.0, 15.0), (-12.5, 15.0), (-12.5, -15.0)], 'GLOW', 0.33333333333333337),
+                   ('poly', [(-16.0, -15.0), (-16.0, 15.0), (-17.5, 15.0), (-17.5, -15.0)], 'GLOW', 0.2),
+                   ('poly', [(-12.5, -15.0), (-12.5, 15.0), (-11.0, 15.0), (-11.0, -15.0)], 'GLOW', 0.2),
+                   ('poly', [(-17.5, -15.0), (-17.5, 15.0), (-19.0, 15.0), (-19.0, -15.0)], 'GLOW', 0.06666666666666665),
+                   ('poly', [(-11.0, -15.0), (-11.0, 15.0), (-9.0, 15.0), (-9.0, -15.0)], 'GLOW', 0.06666666666666665)],
+ 'og_out_pillar': [('poly', [(-14.0, -15.0), (-14.0, 15.0), (-16.0, 15.0), (-16.0, -15.0)], 'GLOW', 0.33333333333333337),
+                   ('poly', [(-14.0, -15.0), (-14.0, 15.0), (-12.5, 15.0), (-12.5, -15.0)], 'GLOW', 0.33333333333333337),
+                   ('poly', [(-16.0, -15.0), (-16.0, 15.0), (-17.5, 15.0), (-17.5, -15.0)], 'GLOW', 0.2),
+                   ('poly', [(-12.5, -15.0), (-12.5, 15.0), (-11.0, 15.0), (-11.0, -15.0)], 'GLOW', 0.2),
+                   ('poly', [(-17.5, -15.0), (-17.5, 15.0), (-19.0, 15.0), (-19.0, -15.0)], 'GLOW', 0.06666666666666665),
+                   ('poly', [(-11.0, -15.0), (-11.0, 15.0), (-9.0, 15.0), (-9.0, -15.0)], 'GLOW', 0.06666666666666665),
+                   ('poly', [(14.0, -15.0), (14.0, 15.0), (12.5, 15.0), (12.5, -15.0)], 'GLOW', 0.33333333333333337),
+                   ('poly', [(14.0, -15.0), (14.0, 15.0), (16.0, 15.0), (16.0, -15.0)], 'GLOW', 0.33333333333333337),
+                   ('poly', [(12.5, -15.0), (12.5, 15.0), (11.0, 15.0), (11.0, -15.0)], 'GLOW', 0.2),
+                   ('poly', [(16.0, -15.0), (16.0, 15.0), (17.5, 15.0), (17.5, -15.0)], 'GLOW', 0.2),
+                   ('poly', [(11.0, -15.0), (11.0, 15.0), (9.0, 15.0), (9.0, -15.0)], 'GLOW', 0.06666666666666665),
+                   ('poly', [(17.5, -15.0), (17.5, 15.0), (19.0, 15.0), (19.0, -15.0)], 'GLOW', 0.06666666666666665)],
+ 'og_out_slab': [('vgrad', -15, 7.5, 15, 12.5, 'GLOW', 0, 0.4),
+                 ('vgrad', -15, 2.5, 15, 7.5, 'GLOW', 0.4, 0),
+                 ('vgrad', -15, -7.5, 15, -2.5, 'GLOW', 0.4, 0),
+                 ('vgrad', -15, -12.5, 15, -7.5, 'GLOW', 0, 0.4),
+                 ('poly', [(-14.0, -7.5), (-14.0, 7.5), (-16.0, 7.5), (-16.0, -7.5)], 'GLOW', 0.33333333333333337),
+                 ('poly', [(-14.0, -7.5), (-14.0, 7.5), (-12.5, 7.5), (-12.5, -7.5)], 'GLOW', 0.33333333333333337),
+                 ('poly', [(-16.0, -7.5), (-16.0, 7.5), (-17.5, 7.5), (-17.5, -7.5)], 'GLOW', 0.2),
+                 ('poly', [(-12.5, -7.5), (-12.5, 7.5), (-11.0, 7.5), (-11.0, -7.5)], 'GLOW', 0.2),
+                 ('poly', [(-17.5, -7.5), (-17.5, 7.5), (-19.0, 7.5), (-19.0, -7.5)], 'GLOW', 0.06666666666666665),
+                 ('poly', [(-11.0, -7.5), (-11.0, 7.5), (-9.0, 7.5), (-9.0, -7.5)], 'GLOW', 0.06666666666666665),
+                 ('poly', [(14.0, -7.5), (14.0, 7.5), (12.5, 7.5), (12.5, -7.5)], 'GLOW', 0.33333333333333337),
+                 ('poly', [(14.0, -7.5), (14.0, 7.5), (16.0, 7.5), (16.0, -7.5)], 'GLOW', 0.33333333333333337),
+                 ('poly', [(12.5, -7.5), (12.5, 7.5), (11.0, 7.5), (11.0, -7.5)], 'GLOW', 0.2),
+                 ('poly', [(16.0, -7.5), (16.0, 7.5), (17.5, 7.5), (17.5, -7.5)], 'GLOW', 0.2),
+                 ('poly', [(11.0, -7.5), (11.0, 7.5), (9.0, 7.5), (9.0, -7.5)], 'GLOW', 0.06666666666666665),
+                 ('poly', [(17.5, -7.5), (17.5, 7.5), (19.0, 7.5), (19.0, -7.5)], 'GLOW', 0.06666666666666665)],
+ 'og_out_slab_mid': [('vgrad', -15, 7.5, 15, 12.5, 'GLOW', 0, 0.4),
+                     ('vgrad', -15, 2.5, 15, 7.5, 'GLOW', 0.4, 0),
+                     ('vgrad', -15, -7.5, 15, -2.5, 'GLOW', 0.4, 0),
+                     ('vgrad', -15, -12.5, 15, -7.5, 'GLOW', 0, 0.4)],
+ 'og_out_slab_side': [('vgrad', -15, 7.5, 15, 12.5, 'GLOW', 0, 0.4),
+                      ('vgrad', -15, 2.5, 15, 7.5, 'GLOW', 0.4, 0),
+                      ('vgrad', -15, -7.5, 15, -2.5, 'GLOW', 0.4, 0),
+                      ('vgrad', -15, -12.5, 15, -7.5, 'GLOW', 0, 0.4),
+                      ('poly', [(-14.0, -7.5), (-14.0, 7.5), (-16.0, 7.5), (-16.0, -7.5)], 'GLOW', 0.33333333333333337),
+                      ('poly', [(-14.0, -7.5), (-14.0, 7.5), (-12.5, 7.5), (-12.5, -7.5)], 'GLOW', 0.33333333333333337),
+                      ('poly', [(-16.0, -7.5), (-16.0, 7.5), (-17.5, 7.5), (-17.5, -7.5)], 'GLOW', 0.2),
+                      ('poly', [(-12.5, -7.5), (-12.5, 7.5), (-11.0, 7.5), (-11.0, -7.5)], 'GLOW', 0.2),
+                      ('poly', [(-17.5, -7.5), (-17.5, 7.5), (-19.0, 7.5), (-19.0, -7.5)], 'GLOW', 0.06666666666666665),
+                      ('poly', [(-11.0, -7.5), (-11.0, 7.5), (-9.0, 7.5), (-9.0, -7.5)], 'GLOW', 0.06666666666666665)],
+ 'og_out_square': [('vgrad', -15, 15, 15, 20.0, 'GLOW', 0, 0.4),
+                   ('vgrad', -15, 10.0, 15, 15, 'GLOW', 0.4, 0),
+                   ('vgrad', -15, -15, 15, -10.0, 'GLOW', 0.4, 0),
+                   ('vgrad', -15, -20.0, 15, -15, 'GLOW', 0, 0.4),
+                   ('poly', [(-14.0, -15.0), (-14.0, 15.0), (-16.0, 15.0), (-16.0, -15.0)], 'GLOW', 0.33333333333333337),
+                   ('poly', [(-14.0, -15.0), (-14.0, 15.0), (-12.5, 15.0), (-12.5, -15.0)], 'GLOW', 0.33333333333333337),
+                   ('poly', [(-16.0, -15.0), (-16.0, 15.0), (-17.5, 15.0), (-17.5, -15.0)], 'GLOW', 0.2),
+                   ('poly', [(-12.5, -15.0), (-12.5, 15.0), (-11.0, 15.0), (-11.0, -15.0)], 'GLOW', 0.2),
+                   ('poly', [(-17.5, -15.0), (-17.5, 15.0), (-19.0, 15.0), (-19.0, -15.0)], 'GLOW', 0.06666666666666665),
+                   ('poly', [(-11.0, -15.0), (-11.0, 15.0), (-9.0, 15.0), (-9.0, -15.0)], 'GLOW', 0.06666666666666665),
+                   ('poly', [(14.0, -15.0), (14.0, 15.0), (12.5, 15.0), (12.5, -15.0)], 'GLOW', 0.33333333333333337),
+                   ('poly', [(14.0, -15.0), (14.0, 15.0), (16.0, 15.0), (16.0, -15.0)], 'GLOW', 0.33333333333333337),
+                   ('poly', [(12.5, -15.0), (12.5, 15.0), (11.0, 15.0), (11.0, -15.0)], 'GLOW', 0.2),
+                   ('poly', [(16.0, -15.0), (16.0, 15.0), (17.5, 15.0), (17.5, -15.0)], 'GLOW', 0.2),
+                   ('poly', [(11.0, -15.0), (11.0, 15.0), (9.0, 15.0), (9.0, -15.0)], 'GLOW', 0.06666666666666665),
+                   ('poly', [(17.5, -15.0), (17.5, 15.0), (19.0, 15.0), (19.0, -15.0)], 'GLOW', 0.06666666666666665)],
+ 'og_out_top_pillar': [('vgrad', -15, 15, 15, 20.0, 'GLOW', 0, 0.4),
+                       ('vgrad', -15, 10.0, 15, 15, 'GLOW', 0.4, 0),
+                       ('poly', [(-14.0, -15.0), (-14.0, 15.0), (-16.0, 15.0), (-16.0, -15.0)], 'GLOW', 0.33333333333333337),
+                       ('poly', [(-14.0, -15.0), (-14.0, 15.0), (-12.5, 15.0), (-12.5, -15.0)], 'GLOW', 0.33333333333333337),
+                       ('poly', [(-16.0, -15.0), (-16.0, 15.0), (-17.5, 15.0), (-17.5, -15.0)], 'GLOW', 0.2),
+                       ('poly', [(-12.5, -15.0), (-12.5, 15.0), (-11.0, 15.0), (-11.0, -15.0)], 'GLOW', 0.2),
+                       ('poly', [(-17.5, -15.0), (-17.5, 15.0), (-19.0, 15.0), (-19.0, -15.0)], 'GLOW', 0.06666666666666665),
+                       ('poly', [(-11.0, -15.0), (-11.0, 15.0), (-9.0, 15.0), (-9.0, -15.0)], 'GLOW', 0.06666666666666665),
+                       ('poly', [(14.0, -15.0), (14.0, 15.0), (12.5, 15.0), (12.5, -15.0)], 'GLOW', 0.33333333333333337),
+                       ('poly', [(14.0, -15.0), (14.0, 15.0), (16.0, 15.0), (16.0, -15.0)], 'GLOW', 0.33333333333333337),
+                       ('poly', [(12.5, -15.0), (12.5, 15.0), (11.0, 15.0), (11.0, -15.0)], 'GLOW', 0.2),
+                       ('poly', [(16.0, -15.0), (16.0, 15.0), (17.5, 15.0), (17.5, -15.0)], 'GLOW', 0.2),
+                       ('poly', [(11.0, -15.0), (11.0, 15.0), (9.0, 15.0), (9.0, -15.0)], 'GLOW', 0.06666666666666665),
+                       ('poly', [(17.5, -15.0), (17.5, 15.0), (19.0, 15.0), (19.0, -15.0)], 'GLOW', 0.06666666666666665)],
+ 'og_sq_s': [('vgrad', -7.5, 7.5, 7.5, 11.5, 'GLOW', 0, 0.4),
+             ('vgrad', -7.5, 3.5, 7.5, 7.5, 'GLOW', 0.4, 0),
+             ('vgrad', -7.5, -7.5, 7.5, -3.5, 'GLOW', 0.4, 0),
+             ('vgrad', -7.5, -11.5, 7.5, -7.5, 'GLOW', 0, 0.4),
+             ('poly', [(-7.0, -7.5), (-7.0, 7.5), (-8.0, 7.5), (-8.0, -7.5)], 'GLOW', 0.33333333333333337),
+             ('poly', [(-7.0, -7.5), (-7.0, 7.5), (-5.5, 7.5), (-5.5, -7.5)], 'GLOW', 0.33333333333333337),
+             ('poly', [(-8.0, -7.5), (-8.0, 7.5), (-9.5, 7.5), (-9.5, -7.5)], 'GLOW', 0.2),
+             ('poly', [(-5.5, -7.5), (-5.5, 7.5), (-4.0, 7.5), (-4.0, -7.5)], 'GLOW', 0.2),
+             ('poly', [(-9.5, -7.5), (-9.5, 7.5), (-11.0, 7.5), (-11.0, -7.5)], 'GLOW', 0.06666666666666665),
+             ('poly', [(-4.0, -7.5), (-4.0, 7.5), (-3.0, 7.5), (-3.0, -7.5)], 'GLOW', 0.06666666666666665),
+             ('poly', [(7.0, -7.5), (7.0, 7.5), (5.5, 7.5), (5.5, -7.5)], 'GLOW', 0.33333333333333337),
+             ('poly', [(7.0, -7.5), (7.0, 7.5), (8.0, 7.5), (8.0, -7.5)], 'GLOW', 0.33333333333333337),
+             ('poly', [(5.5, -7.5), (5.5, 7.5), (4.0, 7.5), (4.0, -7.5)], 'GLOW', 0.2),
+             ('poly', [(8.0, -7.5), (8.0, 7.5), (9.5, 7.5), (9.5, -7.5)], 'GLOW', 0.2),
+             ('poly', [(4.0, -7.5), (4.0, 7.5), (3.0, 7.5), (3.0, -7.5)], 'GLOW', 0.06666666666666665),
+             ('poly', [(9.5, -7.5), (9.5, 7.5), (11.0, 7.5), (11.0, -7.5)], 'GLOW', 0.06666666666666665)],
+ 'og_ss': [('vgrad', -15, 0.75, 15, 5, 'GLOW', 0, 0.35), ('vgrad', -15, -5, 15, -0.75, 'GLOW', 0.35, 0)],
+ 'og_thsm': [('vgrad', -7.5, 7.5, 7.5, 12.5, 'GLOW', 0, 0.4),
+             ('vgrad', -7.5, 2.5, 7.5, 7.5, 'GLOW', 0.4, 0),
+             ('vgrad', -7.5, -7.5, 7.5, -2.5, 'GLOW', 0.4, 0),
+             ('vgrad', -7.5, -12.5, 7.5, -7.5, 'GLOW', 0, 0.4),
+             ('poly', [(-7.0, -7.5), (-7.0, 7.5), (-8.5, 7.5), (-8.5, -7.5)], 'GLOW', 0.33333333333333337),
+             ('poly', [(-7.0, -7.5), (-7.0, 7.5), (-5.0, 7.5), (-5.0, -7.5)], 'GLOW', 0.33333333333333337),
+             ('poly', [(-8.5, -7.5), (-8.5, 7.5), (-10.0, 7.5), (-10.0, -7.5)], 'GLOW', 0.2),
+             ('poly', [(-5.0, -7.5), (-5.0, 7.5), (-3.5, 7.5), (-3.5, -7.5)], 'GLOW', 0.2),
+             ('poly', [(-10.0, -7.5), (-10.0, 7.5), (-12.0, 7.5), (-12.0, -7.5)], 'GLOW', 0.06666666666666665),
+             ('poly', [(-3.5, -7.5), (-3.5, 7.5), (-2.0, 7.5), (-2.0, -7.5)], 'GLOW', 0.06666666666666665),
+             ('poly', [(7.0, -7.5), (7.0, 7.5), (5.0, 7.5), (5.0, -7.5)], 'GLOW', 0.33333333333333337),
+             ('poly', [(7.0, -7.5), (7.0, 7.5), (8.5, 7.5), (8.5, -7.5)], 'GLOW', 0.33333333333333337),
+             ('poly', [(5.0, -7.5), (5.0, 7.5), (3.5, 7.5), (3.5, -7.5)], 'GLOW', 0.2),
+             ('poly', [(8.5, -7.5), (8.5, 7.5), (10.0, 7.5), (10.0, -7.5)], 'GLOW', 0.2),
+             ('poly', [(3.5, -7.5), (3.5, 7.5), (2.0, 7.5), (2.0, -7.5)], 'GLOW', 0.06666666666666665),
+             ('poly', [(10.0, -7.5), (10.0, 7.5), (12.0, 7.5), (12.0, -7.5)], 'GLOW', 0.06666666666666665)],
+ 'og_thsq': [('vgrad', -15, 15, 15, 20.0, 'GLOW', 0, 0.4),
+             ('vgrad', -15, 10.0, 15, 15, 'GLOW', 0.4, 0),
+             ('vgrad', -15, -15, 15, -10.0, 'GLOW', 0.4, 0),
+             ('vgrad', -15, -20.0, 15, -15, 'GLOW', 0, 0.4),
+             ('poly', [(-14.0, -15.0), (-14.0, 15.0), (-16.0, 15.0), (-16.0, -15.0)], 'GLOW', 0.33333333333333337),
+             ('poly', [(-14.0, -15.0), (-14.0, 15.0), (-12.5, 15.0), (-12.5, -15.0)], 'GLOW', 0.33333333333333337),
+             ('poly', [(-16.0, -15.0), (-16.0, 15.0), (-17.5, 15.0), (-17.5, -15.0)], 'GLOW', 0.2),
+             ('poly', [(-12.5, -15.0), (-12.5, 15.0), (-11.0, 15.0), (-11.0, -15.0)], 'GLOW', 0.2),
+             ('poly', [(-17.5, -15.0), (-17.5, 15.0), (-19.0, 15.0), (-19.0, -15.0)], 'GLOW', 0.06666666666666665),
+             ('poly', [(-11.0, -15.0), (-11.0, 15.0), (-9.0, 15.0), (-9.0, -15.0)], 'GLOW', 0.06666666666666665),
+             ('poly', [(14.0, -15.0), (14.0, 15.0), (12.5, 15.0), (12.5, -15.0)], 'GLOW', 0.33333333333333337),
+             ('poly', [(14.0, -15.0), (14.0, 15.0), (16.0, 15.0), (16.0, -15.0)], 'GLOW', 0.33333333333333337),
+             ('poly', [(12.5, -15.0), (12.5, 15.0), (11.0, 15.0), (11.0, -15.0)], 'GLOW', 0.2),
+             ('poly', [(16.0, -15.0), (16.0, 15.0), (17.5, 15.0), (17.5, -15.0)], 'GLOW', 0.2),
+             ('poly', [(11.0, -15.0), (11.0, 15.0), (9.0, 15.0), (9.0, -15.0)], 'GLOW', 0.06666666666666665),
+             ('poly', [(17.5, -15.0), (17.5, 15.0), (19.0, 15.0), (19.0, -15.0)], 'GLOW', 0.06666666666666665)],
+ 'og_thtop': [('vgrad', -15, 1.5, 15, 7, 'GLOW', 0, 0.4), ('vgrad', -15, -7, 15, -1.5, 'GLOW', 0.4, 0)],
+ 'og_top': [('vgrad', -15, 0.75, 15, 5.5, 'GLOW', 0, 0.4), ('vgrad', -15, -5.5, 15, -0.75, 'GLOW', 0.4, 0)],
+ 'pt_bowl': [('poly',
+              [(-15.0, -9.0), (-15.0, 9.0), (-9.0, 1.0), (0.0, -2.0), (9.0, 1.0), (15.0, 9.0), (15.0, -9.0)],
+              'BLACK',
+              1.0)],
+ 'pt_bowl2': [('poly', [(-15.0, -9.0), (-15.0, 9.0), (-5.0, -2.0), (15.0, -9.0)], 'BLACK', 1.0)],
+ 'pt_crown': [('poly',
+               [(-15.0, -6.5), (-15.0, 1.0), (-10.0, -2.0), (-5.0, 5.0), (0.0, -1.0), (5.0, 5.0), (10.0, -2.0), (15.0, 1.0)],
+               'BLACK',
+               1.0),
+              ('rect', -15, -6.5, 15, -1, 'BLACK', 1.0)],
+ 'pt_dot': [('rect', -4, -3.75, 4, 3.75, 'BLACK', 1.0)],
+ 'pt_notch': [('poly', [(-7.5, -4.0), (-7.5, 4.0), (0.0, 0.0), (7.5, 4.0), (7.5, -4.0)], 'BLACK', 1.0)],
+ 'pt_square': [('rect', -15, -7.5, 15, 0, 'BLACK', 1.0),
+               ('rect', -12, 0, -4, 7.5, 'BLACK', 1.0),
+               ('rect', 4, 0, 12, 7.5, 'BLACK', 1.0)],
+ 'pt_stair': [('poly', [(-15.0, -15.0), (15.0, 15.0), (15.0, -15.0)], 'BLACK', 1.0),
+              ('rect', -7.5, -15, 0, 7.5, 'BLACK', 1.0),
+              ('rect', 0, -15, 7.5, 15, 'BLACK', 1.0)],
+ 'pt_tlow': [('poly', [(-15.0, -5.0), (-15.0, -1.0), (-8.0, 4.0), (15.0, -5.0)], 'BLACK', 1.0)],
+ 'pt_tri': [('poly', [(-4.0, -4.0), (4.0, 4.0), (4.0, -4.0)], 'BLACK', 1.0)],
+ 'pt_wlow': [('poly',
+              [(-15.0, -5.0), (-15.0, 1.0), (-9.0, 4.0), (-3.0, 1.0), (3.0, 4.0), (9.0, 1.0), (15.0, 4.0), (15.0, -5.0)],
+              'BLACK',
+              1.0)]}
+
+RADIUS = {'COGSAW_L': 50, 'DARKBLADE_L': 50, 'SPEED_FASTER': 45, 'SPIDER_PORTAL': 50, 'SWING_PORTAL': 50}
diff --git a/games/numdash/tools/solve.c b/games/numdash/tools/solve.c
index 811d41a..aac709d 100644
--- a/games/numdash/tools/solve.c
+++ b/games/numdash/tools/solve.c
@@ -25,7 +25,7 @@ static uint64_t key(const Game *g) {
   uint64_t k = (y & 0xffff) | ((v & 0xffff) << 16) | ((uint64_t)p->mode << 32) | ((uint64_t)p->upside << 34) |
                ((uint64_t)p->on_ground << 35) | ((uint64_t)g->hold_prev << 36) | ((uint64_t)p->buffer << 37) |
                ((uint64_t)p->on_ceiling << 40) | ((uint64_t)p->mini << 41) | ((uint64_t)g->frame << 42) |
-               ((uint64_t)p->dash << 44) | ((uint64_t)(p->hover != 0) << 45) | ((uint64_t)g->dual << 46);
+               ((uint64_t)(p->hover != 0) << 45) | ((uint64_t)g->dual << 46);
   if (g->dual) k ^= (uint64_t)(int64_t)(g->p2.y * 4) * 0x9E3779B97F4A7C15ull;
   /* the used bits of the objects around the player */
   LIter it;
diff --git a/games/numdash/tools/sprites_game.py b/games/numdash/tools/sprites_game.py
index cd810fa..ede0e72 100644
--- a/games/numdash/tools/sprites_game.py
+++ b/games/numdash/tools/sprites_game.py
@@ -2,8 +2,7 @@
 
 Each function returns (Art, format) where format is 'A4' (tinted coverage),
 'LA44' (tinted luminance + alpha) or 'PAL4' (full colour). Shapes follow the
-Geometry Dash 2.x look (black gradient blocks with bright outlines, glowing
-decorations) and are redrawn from geometric primitives at calculator scale.
+NumDash's own look (sprites_nd.py) and are drawn from geometric primitives at calculator scale.
 """
 import math
 import random
@@ -18,213 +17,6 @@ def px(u):
     return int(math.ceil(u * S))
 
 
-def block_art(edges='ltrb', size=30, grid=False, glowpad=0):
-    """30x30 block. edges: which outline sides are drawn (l, t, r, b).
-    grid: 3x3 tile pattern (IDs 2-7) instead of a vertical gradient."""
-    half = size / 2
-    w = px(size + 2 * glowpad)
-    a = Art(w, w)
-    u, v = a.grid()
-    inside = (np.abs(u) < half) & (np.abs(v) < half)
-    if grid:
-        # three rows of cells: 80%, 60%, 40% black; thin transparent seams
-        cell = size / 3
-        row = np.clip(((half - v) // cell), 0, 2)
-        alpha = np.choose(row.astype(int), [0.80, 0.60, 0.40])
-        fu = (u + half) % cell
-        fv = (half - v) % cell
-        seam = (np.minimum(fu, cell - fu) < 0.6) | (np.minimum(fv, cell - fv) < 0.6)
-        mask = inside & ~seam
-        a.paint(mask.astype(np.float32), BLACK, 1.0)
-        a.a = np.where(mask, alpha, a.a).astype(np.float32)
-    else:
-        t = np.clip((half - 3 - v) / (size - 6), 0, 1)       # 0 at top, 1 at bottom
-        alpha = 1.0 - 0.87 * t
-        m = inside.astype(np.float32)
-        a.paint(m, BLACK, 1.0)
-        a.a = np.where(inside, alpha, a.a).astype(np.float32)
-    bw = 2.0   # outline width in units
-    E = np.zeros_like(u, dtype=bool)
-    if 'l' in edges: E |= inside & (u < -half + bw)
-    if 'r' in edges: E |= inside & (u > half - bw)
-    if 't' in edges: E |= inside & (v > half - bw)
-    if 'b' in edges: E |= inside & (v < -half + bw)
-    if 'c' in edges:   # inside-corner nub (ID 4)
-        E |= inside & (u < -half + bw) & (v > half - bw)
-    a.paint(E.astype(np.float32), WHITE, 1.0)
-    return a
-
-
-def glow_art(edges='ltrb', size=30, reach=6.0, peak=0.55, height=None):
-    """Soft additive light along the outlined edges of a block. Each edge
-    glows only across its own span, and outlined corners get a round join,
-    so neighbouring blocks tile without doubled-up bright spots."""
-    half = size / 2
-    hh = (height if height else size) / 2
-    a = Art(px(size + 2 * reach) + 1, px(2 * hh + 2 * reach) + 1)
-    u, v = a.grid()
-    d = np.full_like(u, 1e9)
-    inl = np.abs(v) <= hh
-    inb = np.abs(u) <= half
-    L, T, R, B = ('l' in edges), ('t' in edges), ('r' in edges), ('b' in edges)
-    if L: d = np.minimum(d, np.where(inl, np.abs(u + half), 1e9))
-    if R: d = np.minimum(d, np.where(inl, np.abs(u - half), 1e9))
-    if T: d = np.minimum(d, np.where(inb, np.abs(v - hh), 1e9))
-    if B: d = np.minimum(d, np.where(inb, np.abs(v + hh), 1e9))
-    corners = [((-half, hh), L and T), ((half, hh), R and T), ((-half, -hh), L and B), ((half, -hh), R and B)]
-    for (cx, cy), on in corners:
-        if on:
-            outside = (np.sign(u - cx) == np.sign(cx)) & (np.sign(v - cy) == np.sign(cy))
-            d = np.minimum(d, np.where(outside, np.hypot(u - cx, v - cy), 1e9))
-    if 'c' in edges:
-        d = np.minimum(d, np.hypot(u + half, v - hh))
-    g = np.clip(1 - d / reach, 0, 1) ** 1.6 * peak
-    a.rgb[:] = 1.0
-    a.a = g.astype(np.float32)
-    return a
-
-
-def spike_art(w_u=30.0, h_u=30.0, bottom=-15.0):
-    """Triangle spike, apex up, with a bright outline and gradient body."""
-    top = bottom + h_u
-    W = px(30)
-    H = px(30)
-    a = Art(W, H)
-    tri = [(-w_u / 2, bottom), (w_u / 2, bottom), (0, top)]
-    outer = a.poly_mask(tri)
-    inner_pts = inset_polygon(tri, 1.6)
-    inner = a.poly_mask(inner_pts)
-    u, v = a.grid()
-    t = np.clip((top - 0.45 * h_u - v) / (0.55 * h_u), 0, 1)
-    body_alpha = 1.0 - 0.70 * t
-    a.paint(outer, WHITE, 1.0)
-    a.rgb = np.where(inner[..., None] > 0.5, 0.0, a.rgb).astype(np.float32)
-    a.a = (outer * (1 - inner) + inner * body_alpha).astype(np.float32)
-    return a
-
-
-def spike_glow_art(w_u=30.0, h_u=30.0, bottom=-15.0, reach=6.0, peak=0.5):
-    top = bottom + h_u
-    a = Art(px(30 + 2 * reach) + 1, px(30 + 2 * reach) + 1)
-    u, v = a.grid()
-    P = [(-w_u / 2, bottom), (w_u / 2, bottom), (0, top)]
-
-    def seg(p, q):
-        (x0, y0), (x1, y1) = p, q
-        dx, dy = x1 - x0, y1 - y0
-        t = np.clip(((u - x0) * dx + (v - y0) * dy) / (dx * dx + dy * dy), 0, 1)
-        return np.hypot(u - (x0 + t * dx), v - (y0 + t * dy))
-    d = np.minimum(np.minimum(seg(P[0], P[2]), seg(P[1], P[2])), seg(P[0], P[1]) + 2.5)
-    a.rgb[:] = 1.0
-    a.a = (np.clip(1 - d / reach, 0, 1) ** 1.6 * peak).astype(np.float32)
-    return a
-
-
-def pit_art(seed):
-    """Row of jagged ground spikes (ID 9), drawn black by the level."""
-    rnd = random.Random(seed)
-    a = Art(px(30), px(27))
-    # anchor centre of the 30x27 sprite; the object sits at y=2 so its body
-    # reaches ~15 units above the ground and continues below it.
-    base_top = 2.0          # units above the anchor where the solid band ends
-    pts = [(-15, -13.5)]
-    x = -15.0
-    pts.append((x, base_top + rnd.uniform(1, 4)))
-    while x < 15:
-        step = rnd.uniform(2.6, 4.6)
-        tall = rnd.random() < 0.35
-        peak = base_top + (rnd.uniform(8.0, 12.0) if tall else rnd.uniform(3.0, 6.5))
-        valley = base_top + rnd.uniform(-1.0, 1.5)
-        pts.append((min(15, x + step * 0.5), peak))
-        x += step
-        pts.append((min(15, x), valley))
-    pts.append((15, -13.5))
-    m = a.poly_mask(pts)
-    u, v = a.grid()
-    fade = np.clip((v + 13.5) / 7.0, 0, 1)      # fade out towards the bottom
-    a.paint(m, WHITE, 1.0)
-    a.a = (m * fade).astype(np.float32)
-    return a
-
-
-def plank_art():
-    """Half-height slab (ID 40): outline plus black gradient fill."""
-    a = Art(px(30), px(14) + 1)
-    u, v = a.grid()
-    inside = (np.abs(u) < 15) & (np.abs(v) < 7)
-    t = np.clip((6 - v) / 12, 0, 1)
-    a.paint(inside.astype(np.float32), BLACK, 1.0)
-    a.a = np.where(inside, 1.0 - 0.8 * t, 0).astype(np.float32)
-    edge = inside & ((np.abs(u) > 13) | (np.abs(v) > 5))
-    a.paint(edge.astype(np.float32), WHITE, 1.0)
-    return a
-
-
-def slab_wave_art(variant):
-    """Wavy 1.0-era slabs (IDs 62/65/66/68): black body, bright top line."""
-    a = Art(px(30), px(16) + 2)
-    u, v = a.grid()
-    # bottom profile: rounded bumps whose shape depends on the variant
-    shapes = {
-        0: lambda x: -2 + 3.2 * np.cos((x + 15) / 30 * 2 * math.pi) ** 2,
-        1: lambda x: -3 + 4.0 * np.abs(np.sin((x + 15) / 30 * math.pi * 1.5)),
-        2: lambda x: -1.5 + 3.5 * np.cos((x + 5) / 30 * 2 * math.pi) ** 2,
-        3: lambda x: -4 + 5.5 * np.abs(np.cos((x + 15) / 30 * math.pi)),
-    }
-    prof = shapes[variant](u)
-    body = (np.abs(u) < 15) & (v < 8) & (v > prof - 4)
-    a.paint(body.astype(np.float32), BLACK, 1.0)
-    lip = (np.abs(u) < 15) & (v > prof - 4) & (v < prof - 1.5)
-    a.a = np.where(lip, 0.55, a.a).astype(np.float32)
-    top = (np.abs(u) < 15) & (v >= 6) & (v < 8)
-    a.paint(top.astype(np.float32), WHITE, 1.0)
-    return a
-
-
-def rod_art(length):
-    """Pulse rod pole, drawn black by the level (IDs 15-17)."""
-    w_u = 6.5
-    a = Art(px(w_u) + 2, px(length) + 1)
-    u, v = a.grid()
-    pole = (np.abs(u) < 1.6) & (np.abs(v) < length / 2 - 2)
-    # segmented pole (small gaps every 5 units), fading upwards
-    seg = ((v + length / 2) % 5.5) > 1.0
-    alpha = np.clip(0.35 + 0.65 * (length / 2 - v) / length, 0, 1)
-    a.paint((pole & seg).astype(np.float32), WHITE, 1.0)
-    a.a = np.where(pole & seg, alpha, a.a).astype(np.float32)
-    foot = (np.abs(u) < 3.2) & (v < -length / 2 + 2.2) & (v > -length / 2)
-    a.paint(foot.astype(np.float32), WHITE, 1.0)
-    return a
-
-
-def ball_art(r=15.0):
-    a = Art(px(2 * r) + 1, px(2 * r) + 1)
-    m = a.ellipse_mask(0, 0, r - 0.5, r - 0.5)
-    a.paint(m, WHITE, 1.0)
-    return a
-
-
-def mountains_art(w_u, h_u, peaks, seed):
-    """Decorative spiky silhouettes (IDs 18-21), white with vertical fade."""
-    rnd = random.Random(seed)
-    a = Art(px(w_u) + 1, px(h_u) + 1)
-    pts = [(-w_u / 2, -h_u / 2)]
-    xs = sorted(rnd.uniform(-w_u / 2 + 3, w_u / 2 - 3) for _ in range(peaks))
-    prev = -w_u / 2
-    for x in xs:
-        mid = (prev + x) / 2
-        pts.append((mid, -h_u / 2 + rnd.uniform(0, h_u * 0.18)))
-        pts.append((x, -h_u / 2 + rnd.uniform(0.35, 1.0) * h_u))
-        prev = x
-    pts.append((w_u / 2, -h_u / 2))
-    m = a.poly_mask(pts)
-    u, v = a.grid()
-    fade = np.clip((v + h_u / 2) / (h_u * 0.9), 0, 1) ** 0.8
-    a.paint(m, WHITE, 1.0)
-    a.a = (m * (0.25 + 0.75 * fade)).astype(np.float32)
-    return a
-
-
 def chain_art(length, links):
     a = Art(px(20) + 1, px(length) + 1)
     top = length / 2
@@ -270,261 +62,15 @@ def diag_block_art():
 
 # ---------------------------------------------------------------- pads / orbs
 
-PAD_COLORS = {
-    'yellow': (hexc('ffe600'), hexc('ffb000')),
-    'blue': (hexc('4cf7ff'), hexc('00a8ff')),
-    'pink': (hexc('ff7cff'), hexc('e03cff')),
-}
-
-
-def pad_art(kind):
-    """Jump pad dome (IDs 35, 67, 140). Anchor = object centre."""
-    top_c, bot_c = PAD_COLORS[kind]
-    h_u = 6.0 if kind == 'blue' else 5.0
-    a = Art(px(30) + 1, px(12) + 1)
-    u, v = a.grid()
-    base = -h_u / 2
-    dome = ((u / 12.5) ** 2 + ((v - base) / h_u) ** 2 < 1) & (v >= base)
-    t = np.clip((v - base) / h_u, 0, 1)
-    col = np.stack([lerp(bot_c[i], top_c[i], t) for i in range(3)], -1)
-    a.paint(dome.astype(np.float32), col, 1.0)
-    rim = dome & ((u / 12.5) ** 2 + ((v - base) / h_u) ** 2 > 0.55)
-    a.paint(rim.astype(np.float32), tuple(min(1, c * 0.5 + 0.5) for c in top_c), 0.7)
-    return a
-
-
-def pad_glow_art(kind):
-    top_c, _ = PAD_COLORS[kind]
-    a = Art(px(36) + 1, px(18) + 1)
-    u, v = a.grid()
-    d = np.sqrt((u / 15.0) ** 2 + ((v + 3) / 8.0) ** 2)
-    g = np.clip(1 - d, 0, 1) ** 1.4 * 0.75 * (v > -3.5)
-    a.rgb[:] = top_c
-    a.a = g.astype(np.float32)
-    return a
-
-
-def orb_art(kind='yellow'):
-    """Jump orb (ID 36): filled core inside a thin bright ring."""
-    core = {'yellow': (hexc('fff34a'), hexc('ffc800')), 'pink': (hexc('ff9cff'), hexc('f040ff')),
-            'blue': (hexc('8ff9ff'), hexc('14c8ff'))}[kind]
-    a = Art(px(30) + 1, px(30) + 1)
-    u, v = a.grid()
-    r = np.hypot(u, v)
-    ring = (r > 12.3) & (r < 14.4)
-    body = r < 9.6
-    t = np.clip((v + 9) / 18, 0, 1)
-    col = np.stack([lerp(core[1][i], core[0][i], t) for i in range(3)], -1)
-    a.paint(ring.astype(np.float32), WHITE, 1.0)
-    a.paint(body.astype(np.float32), col, 1.0)
-    rim = (r > 8.2) & (r < 9.6)
-    a.paint(rim.astype(np.float32), tuple(min(1, c * 0.6 + 0.4) for c in core[0]), 0.9)
-    return a
-
-
-def orb_glow_art(kind='yellow'):
-    c = {'yellow': hexc('ffff00'), 'pink': hexc('ff00ff'), 'blue': hexc('00ffff')}[kind]
-    a = Art(px(40) + 1, px(40) + 1)
-    u, v = a.grid()
-    r = np.hypot(u, v)
-    g = np.clip(1 - np.abs(r - 13.5) / 6.5, 0, 1) ** 1.5 * 0.6
-    a.rgb[:] = c
-    a.a = g.astype(np.float32)
-    return a
-
 
 # ---------------------------------------------------------------- portals
 
-PORTAL_STYLE = {
-    # light, mid, dark rim colours
-    'grav_blue': (hexc('b8ffff'), hexc('3ad4ff'), hexc('0078ff')),
-    'grav_yellow': (hexc('fffbb0'), hexc('ffdc30'), hexc('ff9c00')),
-    'cube': (hexc('c8ffc0'), hexc('3cff3c'), hexc('00b400')),
-    'ship': (hexc('ffc8ff'), hexc('ff5cff'), hexc('d000d0')),
-    'ball': (hexc('ffd4c4'), hexc('ff6a3c'), hexc('d82800')),
-}
-
-
-def portal_arc(a, cx, rx, ry, thick, colors, alpha=1.0):
-    """Bright crescent: outer ellipse minus a shifted inner ellipse."""
-    light, mid, dark = colors
-    u, v = a.grid()
-    e_out = ((u - cx) / rx) ** 2 + (v / ry) ** 2
-    e_in = ((u - cx - thick) / (rx - thick * 0.4)) ** 2 + (v / (ry - 2.5)) ** 2
-    cres = (e_out < 1) & (e_in > 1) & (u < cx + rx * 0.2)
-    # colour: bright core line near the outer edge, darker towards the tips
-    t = np.clip(np.abs(v) / ry, 0, 1)
-    col = np.stack([lerp(lerp(light[i], mid[i], 0.35), dark[i], t ** 1.6) for i in range(3)], -1)
-    a.paint(cres.astype(np.float32), col, alpha)
-    edge = cres & (e_out > 0.80)
-    a.paint(edge.astype(np.float32), WHITE, 0.85 * alpha)
-
-
-def gravity_portal_art(style, part):
-    """Gravity portals (IDs 10/11): crescent with black teeth on the right."""
-    colors = PORTAL_STYLE[style]
-    a = Art(px(34) + 1, px(80) + 1)
-    u, v = a.grid()
-    if part == 'back':
-        portal_arc(a, -2.0, 10.0, 37.0, 6.0, colors, 0.95)
-        return a
-    # front: crescent plus the stepped black shell with teeth
-    for i in range(7):
-        y0 = -30 + i * 9
-        tooth = a.rect_mask(2.5, y0, 6.5 + 2.5 * math.cos((y0 + 4) / 38 * math.pi / 2) , y0 + 6.5)
-        a.paint(tooth, BLACK, 0.95)
-    shell = ((u - 1.5) / 5.5) ** 2 + (v / 34.0) ** 2 < 1
-    a.paint(shell.astype(np.float32), BLACK, 0.9)
-    portal_arc(a, -4.0, 9.5, 37.0, 6.0, colors, 1.0)
-    return a
-
-
-def mode_portal_art(style, part):
-    """Cube / ship / ball portals (IDs 12/13/47): crescent, black cage with windows, dots."""
-    colors = PORTAL_STYLE[style]
-    light, mid, dark = colors
-    a = Art(px(40) + 1, px(92) + 1)
-    u, v = a.grid()
-    if part == 'back':
-        portal_arc(a, -4.0, 11.0, 38.0, 6.5, colors, 0.95)
-        cage = ((u - 1.0) / 8.0) ** 2 + (v / 34.0) ** 2 < 1
-        a.paint(cage.astype(np.float32), BLACK, 0.85)
-        return a
-    cage = ((u - 3.5) / 10.5) ** 2 + (v / 38.0) ** 2 < 1
-    a.paint(cage.astype(np.float32), BLACK, 0.95)
-    # window slots
-    for row in range(-3, 4):
-        for col in range(2):
-            x0 = 1.5 + col * 5.0
-            y0 = row * 9.5 - 1.8
-            slot = a.rect_mask(x0, y0, x0 + 3.2, y0 + 3.6)
-            a.paint(slot, mid, 0.55)
-    portal_arc(a, -5.5, 10.5, 39.0, 6.5, colors, 1.0)
-    for (dx, dy) in ((1.5, 43.0), (1.5, -43.0), (9.5, 14.0), (9.5, -14.0)):
-        dot = a.ellipse_mask(dx, dy, 2.6, 2.6)
-        a.paint(dot, mid, 1.0)
-        a.paint(a.ellipse_mask(dx - 0.6, dy + 0.6, 1.0, 1.0), light, 0.9)
-    return a
-
 
 # ---------------------------------------------------------------- coins
 
-GOLD = (hexc('ffe25a'), hexc('ffb000'), hexc('c86400'), hexc('3a1e00'))
-
-
-def coin_art(frame):
-    """Secret coin, four spin frames (0 face, 1 3/4, 2 edge, 3 back 3/4)."""
-    light, mid, dark, rim = GOLD
-    a = Art(px(40) + 1, px(40) + 1)
-    u, v = a.grid()
-    sx = [1.0, 0.75, 0.2, 0.75][frame]
-    r = 19.0
-    e = (u / (r * sx)) ** 2 + (v / r) ** 2
-    disc = e < 1
-    a.paint(disc.astype(np.float32), rim, 1.0)
-    inner = (u / (r * sx - 2.2 * max(sx, 0.4))) ** 2 + (v / (r - 2.2)) ** 2 < 1
-    t = np.clip((v + r) / (2 * r), 0, 1)
-    col = np.stack([lerp(dark[i], light[i], t) for i in range(3)], -1)
-    a.paint(inner.astype(np.float32), col, 1.0)
-    if frame != 2:
-        face = (u / (r * sx - 5.5 * sx)) ** 2 + (v / (r - 5.5)) ** 2 < 1
-        a.paint(face.astype(np.float32), mid, 0.9)
-        pts = []
-        for i in range(10):
-            ang = math.pi / 2 + i * math.pi / 5
-            rr = 10.0 if i % 2 == 0 else 4.2
-            pts.append((rr * math.cos(ang) * sx, rr * math.sin(ang) - 0.8))
-        star = a.poly_mask(pts)
-        a.paint(star, dark if frame == 3 else hexc('ffd23c'), 1.0)
-        a.paint(np.clip(star - a.poly_mask([(x * 0.7, y * 0.7 + 0.8) for x, y in pts]), 0, 1), dark, 0.6)
-    else:
-        a.paint(a.rect_mask(-2.0, -r + 2, 2.0, r - 2), light, 0.8)
-    shine = a.ellipse_mask(-6 * sx, 9, 3.5 * sx + 0.5, 2.2)
-    a.paint(shine, WHITE, 0.55)
-    return a
-
 
 # ---------------------------------------------------------------- player icons
 
-def cube_layers():
-    """Default cube: primary (green) frame and secondary (cyan) centre.
-    Returns (primary LA44 art, secondary LA44 art) drawn at 1x."""
-    p = Art(px(30), px(30))
-    u, v = p.grid()
-    au, av = np.abs(u), np.abs(v)
-    m = np.maximum(au, av)
-    body = m < 15
-    p.paint(body.astype(np.float32), WHITE, 1.0)
-    # outer black outline and a slightly darker bevel just inside it
-    p.paint((body & (m > 13.6)).astype(np.float32), BLACK, 1.0)
-    p.paint((body & (m > 12.4) & (m <= 13.6)).astype(np.float32), (0.72, 0.72, 0.72), 1.0)
-    # inner square: black border, transparent ring, black border around centre
-    p.paint(((m > 5.4) & (m < 8.0)).astype(np.float32), BLACK, 1.0)
-    p.erase(((m <= 5.4) & (m > 4.2)).astype(np.float32))
-    p.paint(((m <= 4.2) & (m > 2.9)).astype(np.float32), BLACK, 1.0)
-    p.erase((m <= 2.9).astype(np.float32))
-    s = Art(px(30), px(30))
-    s.paint((m <= 4.0).astype(np.float32), WHITE, 1.0)
-    return p, s
-
-
-def ball_layers():
-    """Default ball: a black-rimmed disc in the primary colour, with a
-    secondary centre and four spokes, so it is seen rolling."""
-    p = Art(px(30), px(30))
-    u, v = p.grid()
-    r = np.hypot(u, v)
-    ang = np.arctan2(v, u)
-    body = r < 15
-    p.paint(body.astype(np.float32), WHITE, 1.0)
-    p.paint((body & (r > 13.4)).astype(np.float32), BLACK, 1.0)
-    p.paint(((r > 12.2) & (r <= 13.4)).astype(np.float32), (0.72, 0.72, 0.72), 1.0)
-    spoke = (np.abs(np.sin(2 * (ang - math.pi / 4))) * r < 1.3) & (r > 6.5) & (r < 12.5)
-    p.paint(spoke.astype(np.float32), BLACK, 1.0)
-    p.paint(((r > 5.2) & (r < 7.0)).astype(np.float32), BLACK, 1.0)
-    p.erase((r <= 5.2).astype(np.float32))
-    s = Art(px(30), px(30))
-    s.paint((r <= 5.4).astype(np.float32), WHITE, 1.0)
-    return p, s
-
-
-def ship_layers():
-    """Default ship in the layout of Geometry Dash's first ship: a long hull
-    with panel lines and a rounded nose, an exhaust block at the back, and a
-    sloped deck with a tail fin in the secondary colour. Drawn in a 37 x 23
-    unit box (x right, y down) centred on the anchor."""
-    p = Art(px(38) + 2, px(24) + 2)
-    s = Art(px(38) + 2, px(24) + 2)
-
-    def poly(pts):
-        return [(x - 18.5, 11.5 - y) for x, y in pts]
-
-    hull = poly([(4, 10.5), (30, 10.5), (34.5, 11.5), (36.8, 13.2), (36.8, 16.8), (34.5, 19), (4, 19)])
-    exhaust = poly([(0.2, 9.8), (5, 9.8), (5, 18.6), (0.2, 18.6)])
-    thruster = poly([(3.6, 18), (9.6, 18), (8.6, 21.4), (4.6, 21.4)])
-    deck = poly([(5, 4.6), (18, 4.4), (27, 6.2), (32, 8.4), (35, 11.5), (5, 11.5)])
-    fin = poly([(6.2, 0.1), (11.2, 0.1), (11.2, 5.5), (6.2, 5.5)])
-    w = 1.6
-    for shape in (fin, deck, exhaust, thruster, hull):
-        p.paint(p.poly_mask(shape), BLACK, 1.0)
-    fin_in, deck_in = inset_polygon(fin[::-1], w)[::-1], inset_polygon(deck[::-1], w)[::-1]
-    p.erase(p.poly_mask(fin_in))
-    p.erase(p.poly_mask(deck_in))
-    p.paint(p.poly_mask(inset_polygon(exhaust[::-1], w)[::-1]), (0.62, 0.62, 0.62), 1.0)
-    p.paint(p.poly_mask(inset_polygon(thruster[::-1], w)[::-1]), (0.5, 0.5, 0.5), 1.0)
-    hull_in = inset_polygon(hull[::-1], w)[::-1]
-    p.paint(p.poly_mask(hull_in), WHITE, 1.0)
-    # soft shade along the bottom of the hull, then the panel lines
-    u, v = p.grid()
-    shade = np.clip((-(v) - 3.2) / 4.0, 0, 1) * p.poly_mask(hull_in)
-    p.paint(shade, (0.72, 0.72, 0.72), 0.8)
-    for x in (12.2, 25.2):
-        p.paint(p.poly_mask(poly([(x - 0.8, 11), (x + 0.8, 11), (x + 0.8, 18.5), (x - 0.8, 18.5)])), BLACK, 1.0)
-    s.paint(np.maximum(s.poly_mask(fin_in), s.poly_mask(deck_in)), WHITE, 1.0)
-    # a lighter band on the deck like the original's highlight
-    s.paint(s.poly_mask(poly([(7, 8.2), (18, 8.0), (27, 9.0), (30, 10.0), (7, 10.0)])), (0.8, 0.8, 0.8), 0.45)
-    return p, s
-
 
 # ---------------------------------------------------------------- registry
 
@@ -593,3 +139,10 @@ def game_sprites():
     add('ball1_p', bp, 'LA44')
     add('ball1_s', bs, 'LA44')
     return out
+
+
+# Calcade, 19 octobre 2026 : the blocks, spikes, pads, rings, gates, shards and icons are NumDash's own designs.
+from sprites_nd import (block_art, glow_art, spike_art, spike_glow_art, plank_art, PAD_COLORS, pad_art,  # noqa: E402,F401
+                        pad_glow_art, orb_art, orb_glow_art, gravity_portal_art, mode_portal_art, coin_art,
+                        cube_layers, ball_layers, ship_layers)
+from sprites_nd import rod_art, ball_art, mountains_art, pit_art, slab_wave_art  # noqa: E402,F401
diff --git a/games/numdash/tools/sprites_lv.py b/games/numdash/tools/sprites_lv.py
index 6a5af42..f3477e6 100644
--- a/games/numdash/tools/sprites_lv.py
+++ b/games/numdash/tools/sprites_lv.py
@@ -1,14 +1,12 @@
-"""Artwork for the objects of the later levels (Clubstep, Deadlocked, Dash).
-
-Like sprites_game.py, every sprite is drawn from geometric primitives in the
-style of the Geometry Dash object it stands for; nothing is taken from the
-game's textures. Returns (name, Art, format) triples; see assets_lv.py.
+"""Artwork for the objects added after the first levels (gates, rings, pads, plates, saws, slopes)
+and the later vehicles. Every sprite is drawn from geometric primitives; NumDash's own designs are
+in sprites_nd.py. Returns (name, Art, format) triples; see assets_lv.py.
 """
 import math
 import random
 import numpy as np
 from art import Art, S, SS, stroke_mask, inset_polygon, lerp, smooth, hexc
-from sprites_game import px, mode_portal_art, portal_arc, PORTAL_STYLE
+from sprites_game import px
 
 WHITE = (1.0, 1.0, 1.0)
 BLACK = (0.0, 0.0, 0.0)
@@ -355,26 +353,6 @@ def pulse_shape(kind):
     return a
 
 
-def size_portal(style, part):
-    """Size portals (99 green, 101 pink): crescent with a stepped shell."""
-    colors = PORTAL_STYLE[style]
-    light, mid, dark = colors
-    a = Art(px(34) + 1, px(92) + 1)
-    u, v = a.grid()
-    if part == 'back':
-        portal_arc(a, -3.0, 10.0, 40.0, 6.0, colors, 0.95)
-        return a
-    for i in range(9):
-        y0 = -36 + i * 8
-        w = 5 + 3 * math.cos((y0 + 4) / 40 * math.pi / 2)
-        a.paint(a.rect_mask(1.5, y0, 1.5 + w, y0 + 5.5), BLACK, 0.95)
-        a.paint(a.rect_mask(0.5, y0 + 1, 2.5, y0 + 4.5), mid, 0.9)
-    portal_arc(a, -4.5, 9.5, 40.0, 5.5, colors, 1.0)
-    for dy in (44.0, -44.0):
-        a.paint(a.ellipse_mask(0.5, dy, 2.6, 2.6), mid, 1.0)
-    return a
-
-
 class Quarter:
     """The top right quarter of a round sprite, anchored at the centre; the
     renderer mirrors it into the other three (ObjPart flag PF_QUAD)."""
@@ -420,75 +398,6 @@ def bevel_body():
     return a
 
 
-PORTAL_STYLE.update({
-    'ufo': (hexc('fff0b0'), hexc('ffb000'), hexc('e86a00')),
-    'mini': (hexc('ffc8ff'), hexc('ff4cff'), hexc('c800c8')),
-    'big': (hexc('c8ffc8'), hexc('20ff40'), hexc('00a020')),
-})
-
-
-def ufo_layers():
-    """Default UFO in the layout of Geometry Dash's first one: a saucer whose
-    upper band is the primary colour and lower bowl the secondary one, under
-    a glass dome (drawn behind the half-size cube). The anchor is the
-    player's centre; returns (primary, secondary, dome)."""
-    W, H = px(39) + 2, px(32) + 2
-    p, s, d = Art(W, H), Art(W, H), Art(W, H)
-    u, v = p.grid()
-    top = -0.5
-    bowl = (((u / 18.2) ** 2 + ((v - top) / 13.8) ** 2) < 1) & (v <= top)
-    rim = (np.abs(u) < 18.8) & (v > top - 1.2) & (v < top + 2.4)
-    body = bowl | rim
-    p.paint(body.astype(np.float32), BLACK, 1.0)
-    inner_bowl = (((u / 16.6) ** 2 + ((v - top) / 12.2) ** 2) < 1) & (v <= top - 1.2)
-    inner_rim = (np.abs(u) < 17.4) & (v > top - 0.2) & (v < top + 1.2)
-    band = inner_bowl & (v > top - 6.0)
-    p.paint((band | inner_rim).astype(np.float32), WHITE, 1.0)
-    p.paint((inner_rim & (v > top + 0.6)).astype(np.float32), (0.8, 0.8, 0.8), 1.0)
-    # the lower bowl is the secondary colour (a hole in the primary layer)
-    low = inner_bowl & (v <= top - 7.4)
-    p.erase(low.astype(np.float32))
-    s.paint(low.astype(np.float32), WHITE, 1.0)
-    s.paint((low & (v < top - 10.5)).astype(np.float32), (0.75, 0.75, 0.75), 1.0)
-    # dome: a pale glass half disc with a dark outline and a highlight
-    r = np.hypot(u / 12.5, (v - top - 1.2) / 13.2)
-    above = v > top + 1.2
-    d.paint(((r < 1) & above).astype(np.float32), WHITE, 0.3)
-    d.paint(((r < 1) & (r > 0.9) & above).astype(np.float32), BLACK, 0.85)
-    shine = (r < 0.8) & (r > 0.66) & above & (u < -2) & (v > top + 5)
-    d.paint(shine.astype(np.float32), WHITE, 0.7)
-    return p, s, d
-
-
-def demon_face():
-    """The Demon difficulty face: an angry red head with two horns, slanted
-    brows and a grin full of teeth (sized like the other faces)."""
-    from sprites_ui import Px, grow
-    d = 26
-    c = Px(d + 9, d + 9)
-    cx, cy, r = (d + 9) / 2, (d + 9) / 2 + 2.5, d / 2 - 1
-    horns = np.maximum(c.poly([(cx - r * 0.95, cy - r * 0.2), (cx - r * 1.12, cy - r * 1.38), (cx - r * 0.35, cy - r * 0.78)]),
-                       c.poly([(cx + r * 0.95, cy - r * 0.2), (cx + r * 1.12, cy - r * 1.38), (cx + r * 0.35, cy - r * 0.78)]))
-    head = c.ellipse(cx, cy, r * 1.02, r * 0.92)
-    c.paint(grow(np.maximum(horns, head), 1.2), BLACK)
-    c.paint(horns, c.vgrad(hexc('ffd2c8'), hexc('b43c28'), cy - r * 1.4, cy - r * 0.2))
-    c.paint(head, c.vgrad(hexc('ff5a46'), hexc('a00a0a'), cy - r, cy + r))
-    c.paint(c.ellipse(cx - r * 0.35, cy - r * 0.55, r * 0.3, r * 0.14), WHITE, 0.35)
-    for sx in (-1, 1):
-        ex = cx + sx * r * 0.4
-        brow = c.poly([(ex - sx * r * 0.36, cy - r * 0.52), (ex + sx * r * 0.34, cy - r * 0.2),
-                       (ex + sx * r * 0.3, cy - r * 0.04), (ex - sx * r * 0.36, cy - r * 0.34)])
-        eye = c.poly([(ex - sx * r * 0.3, cy - r * 0.26), (ex + sx * r * 0.26, cy - r * 0.02), (ex - sx * r * 0.22, cy + r * 0.1)])
-        c.paint(eye, hexc('fff05a'))
-        c.paint(c.ellipse(ex - sx * r * 0.06, cy - r * 0.07, r * 0.07), BLACK)
-        c.paint(brow, BLACK)
-    mouth = c.ellipse(cx, cy + r * 0.3, r * 0.62, r * 0.42) * c.rect(0, cy + r * 0.3, 999, 999)
-    c.paint(mouth, BLACK)
-    for tx in (-0.42, -0.14, 0.14, 0.42):
-        c.paint(c.poly([(cx + (tx - 0.12) * r, cy + r * 0.3), (cx + (tx + 0.12) * r, cy + r * 0.3), (cx + tx * r, cy + r * 0.52)]), WHITE)
-    return c
-
-
 def clubstep_sprites():
     out = []
     add = lambda n, a, f: out.append((n, a, f))
@@ -664,45 +573,6 @@ def dark_blade(R, arms, core=False):
     return a
 
 
-def beast_jaw(top):
-    """The beast's jaw: a black shape with a row of teeth and a pale rim."""
-    w, h = 72, 44
-    a = Art(px(w) + 2, px(h) + 2)
-    if top:
-        pts = [(-36, -6), (-30, 14), (-8, 20), (20, 18), (36, 8), (30, -6)]
-        teeth = [(-26 + 11 * k, -6) for k in range(6)]
-        tip = -16
-    else:
-        pts = [(-34, 6), (-24, -16), (4, -20), (30, -12), (36, 6)]
-        teeth = [(-24 + 11 * k, 6) for k in range(6)]
-        tip = 16
-    body = a.poly_mask(pts)
-    for (x, y) in teeth:
-        body = np.maximum(body, a.poly_mask([(x - 4.5, y), (x + 4.5, y), (x, y + tip * 0.6)]))
-    a.paint(body, BLACK, 1.0)
-    a.paint(np.clip(stroke_mask(a, pts, 1.6) - body * 0.0, 0, 1), WHITE, 0.7)
-    return a
-
-
-def speed_portal(n, col, flip=False):
-    """Speed portals: n chevrons (the slow one points back)."""
-    light, dark = col
-    w = 22 + 13 * (n - 1)
-    a = Art(px(w + 4) + 2, px(48) + 2)
-    for k in range(n):
-        x0 = -w / 2 + 13 * k
-        if flip:
-            pts = [(x0 + 18, 22), (x0 + 8, 0), (x0 + 18, -22), (x0 + 8, -22), (x0 - 2, 0), (x0 + 8, 22)]
-        else:
-            pts = [(x0, 22), (x0 + 10, 0), (x0, -22), (x0 + 10, -22), (x0 + 20, 0), (x0 + 10, 22)]
-        m = a.poly_mask(pts)
-        a.paint(np.clip(stroke_mask(a, pts, 3.0), 0, 1), BLACK, 1.0)
-        a.paint(m, dark, 1.0)
-        inner = a.poly_mask([(p[0] + (1.6 if not flip else -1.6), p[1] * 0.8) for p in pts])
-        a.paint(inner, light, 0.9)
-    return a
-
-
 def key_art(detail=False):
     a = Art(px(28) + 2, px(22) + 2)
     u, v = a.grid()
@@ -730,150 +600,6 @@ def keyhole_art(detail=False):
     return a
 
 
-PORTAL_STYLE.update({
-    'wave': (hexc('d0f4ff'), hexc('30c8ff'), hexc('0060ff')),
-    'robot': (hexc('ffffff'), hexc('d8d8d8'), hexc('808080')),
-    'dual': (hexc('ffe0a0'), hexc('ff9a20'), hexc('e05000')),
-    'single': (hexc('b8ffff'), hexc('30b0ff'), hexc('0050e0')),
-    'tele': (hexc('c8f8ff'), hexc('20b8ff'), hexc('0050c0')),
-    'tele_exit': (hexc('ffe8c0'), hexc('ffaa30'), hexc('e06000')),
-})
-
-
-def orb_green():
-    a = Art(px(30) + 1, px(30) + 1)
-    u, v = a.grid()
-    r = np.hypot(u, v)
-    ang = np.degrees(np.arctan2(v, u)) % 90
-    ring = (r > 12.3) & (r < 14.6) & ((ang > 12) & (ang < 78))
-    body = r < 9.6
-    t = np.clip((v + 9) / 18, 0, 1)
-    col = np.stack([lerp(hexc('20c020')[i], hexc('90ff70')[i], t) for i in range(3)], -1)
-    a.paint(ring.astype(np.float32), WHITE, 1.0)
-    a.paint(body.astype(np.float32), col, 1.0)
-    return a
-
-
-def orb_green_glow():
-    a = Art(px(40) + 1, px(40) + 1)
-    u, v = a.grid()
-    r = np.hypot(u, v)
-    a.rgb[:] = hexc('40ff40')
-    a.a = (np.clip(1 - np.abs(r - 13.5) / 6.5, 0, 1) ** 1.5 * 0.6).astype(np.float32)
-    return a
-
-
-def icon_layers(outline_pts_list, prim_pts_list, sec_pts_list, w, h, ow=2.2):
-    """An icon in two tintable layers over a black outline: primary shapes
-    (with the outline) and secondary shapes painted on a separate layer."""
-    W, H = px(w) + 2, px(h) + 2
-    p, s = Art(W, H), Art(W, H)
-    for pts in outline_pts_list:
-        m = np.maximum(p.poly_mask(pts), stroke_mask(p, pts, ow))
-        p.paint(m, BLACK, 1.0)
-    for pts, shade in prim_pts_list:
-        p.paint(p.poly_mask(pts), (shade, shade, shade), 1.0)
-    for pts, shade in sec_pts_list:
-        m = s.poly_mask(pts)
-        p.erase(m)
-        s.paint(m, (shade, shade, shade), 1.0)
-    return p, s
-
-
-def wave_icon():
-    """The wave's dart: an arrowhead pointing along the travel."""
-    body = [(12, 0), (-9, 10.5), (-4, 0), (-9, -10.5)]
-    inner = [(6.5, 0), (-5.5, 6.2), (-2.4, 0), (-5.5, -6.2)]
-    return icon_layers([body], [(body, 1.0)], [(inner, 1.0)], 30, 26)
-
-
-def robot_icon():
-    """Robot head and body (the legs are drawn at run time)."""
-    head = [(-13, -3), (-13, 11), (-10, 14), (11, 14), (14, 11), (14, -3)]
-    visor = [(-2, 2), (-2, 10), (11, 10), (11, 2)]
-    chin = [(-11, -1), (12, -1), (12, 1), (-11, 1)]
-    p, s = icon_layers([head], [(head, 1.0)], [(visor, 1.0), (chin, 0.8)], 34, 34)
-    eye = p.rect_mask(4, 4, 8, 8)
-    s.paint(eye, BLACK, 1.0)
-    return p, s
-
-
-def spider_icon():
-    """Spider body: a wide dome with two eyes (legs drawn at run time)."""
-    body = [(-14, -4), (-12, 5), (-6, 11), (6, 11), (12, 5), (14, -4), (8, -7), (-8, -7)]
-    band = [(-12, -3), (12, -3), (9, -6), (-9, -6)]
-    p, s = icon_layers([body], [(body, 1.0)], [(band, 1.0)], 34, 30)
-    for ex in (-4.5, 4.5):
-        p.paint(p.ellipse_mask(ex, 3, 3.2, 3.6), WHITE, 1.0)
-        p.paint(p.ellipse_mask(ex + 0.8, 3, 1.6, 2.2), BLACK, 1.0)
-    return p, s
-
-
-def swing_icon():
-    """Swing copter: a round body between two flame vents."""
-    W, H = px(36) + 2, px(32) + 2
-    p, s = Art(W, H), Art(W, H)
-    u, v = p.grid()
-    ring = p.ellipse_mask(0, 0, 11.5, 11.5)
-    vents = np.maximum(p.poly_mask([(-16, 4), (-9, 7), (-9, -7), (-16, -4)]), p.poly_mask([(16, 4), (9, 7), (9, -7), (16, -4)]))
-    p.paint(np.maximum(np.maximum(ring, vents), stroke_mask(p, [(-16, 4), (-9, 7), (-9, -7), (-16, -4)], 2.2)), BLACK, 1.0)
-    p.paint(stroke_mask(p, [(16, 4), (9, 7), (9, -7), (16, -4)], 2.2), BLACK, 1.0)
-    p.paint(p.ellipse_mask(0, 0, 9.8, 9.8), WHITE, 1.0)
-    p.paint(p.poly_mask([(-14.8, 3.2), (-10, 5.4), (-10, -5.4), (-14.8, -3.2)]), (0.8, 0.8, 0.8), 1.0)
-    p.paint(p.poly_mask([(14.8, 3.2), (10, 5.4), (10, -5.4), (14.8, -3.2)]), (0.8, 0.8, 0.8), 1.0)
-    core = p.ellipse_mask(0, 0, 5.5, 5.5)
-    p.erase(core)
-    s.paint(core, WHITE, 1.0)
-    s.paint(s.ellipse_mask(-1.5, 1.5, 2, 2), (0.6, 0.6, 0.6), 1.0)
-    return p, s
-
-
-PORTAL_STYLE.update({
-    'spider': (hexc('f0c8ff'), hexc('b45cff'), hexc('7010d0')),
-    'swing': (hexc('fff4b8'), hexc('ffd020'), hexc('e89000')),
-})
-
-
-def ring_orb(core_hi, core_lo, arrow=None, dots=0):
-    """A ring with a coloured core; optionally an arrow (dash rings) or dots."""
-    a = Art(px(32) + 1, px(32) + 1)
-    u, v = a.grid()
-    r = np.hypot(u, v)
-    ring = (r > 12.3) & (r < 14.6)
-    body = r < 9.6
-    t = np.clip((v + 9) / 18, 0, 1)
-    col = np.stack([lerp(core_lo[i], core_hi[i], t) for i in range(3)], -1)
-    a.paint(ring.astype(np.float32), WHITE, 1.0)
-    a.paint(body.astype(np.float32), col, 1.0)
-    if arrow:
-        a.paint(a.poly_mask([(-5, -4.5), (1, 0), (-5, 4.5), (-3, 0)]), WHITE, 0.95)
-        a.paint(a.poly_mask([(0, -4.5), (6, 0), (0, 4.5), (2, 0)]), WHITE, 0.95)
-    for k in range(dots):
-        t2 = math.radians(90 + k * 360 / dots)
-        a.paint(a.ellipse_mask(11.4 * math.cos(t2), 11.4 * math.sin(t2), 1.8, 1.8), BLACK, 1.0)
-    return a
-
-
-def glow_ring(c):
-    a = Art(px(40) + 1, px(40) + 1)
-    u, v = a.grid()
-    r = np.hypot(u, v)
-    a.rgb[:] = c
-    a.a = (np.clip(1 - np.abs(r - 13.5) / 6.5, 0, 1) ** 1.5 * 0.6).astype(np.float32)
-    return a
-
-
-def red_pad():
-    a = Art(px(30) + 1, px(12) + 1)
-    u, v = a.grid()
-    base = -2.5
-    dome = ((u / 12.5) ** 2 + ((v - base) / 5.5) ** 2 < 1) & (v >= base)
-    t = np.clip((v - base) / 5.5, 0, 1)
-    col = np.stack([lerp(hexc('c00000')[i], hexc('ff7060')[i], t) for i in range(3)], -1)
-    a.paint(dome.astype(np.float32), col, 1.0)
-    return a
-
-
 def toggle_orb(detail):
     a = Art(px(32) + 1, px(32) + 1)
     u, v = a.grid()
@@ -952,11 +678,6 @@ def deadlocked_sprites():
     add('darkblade_l_core', dark_blade(42, 4, True), 'A4')
     add('darkblade_m', dark_blade(31, 6), 'A4')
     add('darkblade_m_core', dark_blade(31, 6, True), 'A4')
-    add('beast_top', beast_jaw(True), 'LA44')
-    add('beast_bot', beast_jaw(False), 'LA44')
-    eye = Art(px(12) + 2, px(12) + 2)
-    eye.paint(eye.ellipse_mask(0, 0, 5.5, 5.5), WHITE, 1.0)
-    add('beast_eye', eye, 'A4')
     add('speed0', speed_portal(1, (hexc('ffe060'), hexc('ff9c00')), True), 'PAL4')
     add('speed1', speed_portal(1, (hexc('a0f4ff'), hexc('10b0ff'))), 'PAL4')
     add('speed2', speed_portal(2, (hexc('b0ff90'), hexc('20c020'))), 'PAL4')
@@ -979,3 +700,9 @@ def deadlocked_sprites():
 
 def lv_sprites():
     return clubstep_sprites() + deadlocked_sprites() + dash_sprites()
+
+
+# Calcade, 19 octobre 2026 : the gates, rings, pads, badges and vehicles are NumDash's own designs.
+from sprites_nd import (size_portal, ufo_layers, demon_face, speed_portal, orb_green, orb_green_glow,  # noqa: E402,F401
+                        icon_layers, wave_icon, robot_icon, spider_icon, swing_icon, ring_orb, glow_ring, red_pad,
+                        mode_portal_art)
diff --git a/games/numdash/tools/sprites_nd.py b/games/numdash/tools/sprites_nd.py
new file mode 100644
index 0000000..53355b2
--- /dev/null
+++ b/games/numdash/tools/sprites_nd.py
@@ -0,0 +1,740 @@
+"""NumDash's own artwork (Calcade, 19 octobre 2026).
+
+Replaces the drawings that imitated Geometry Dash's look: blocks, spikes,
+pads, orbs, portals, the collectable, the player icons and the menu buttons
+and badges. Everything is drawn here from geometric primitives in NumDash's
+own style: rounded panels with hatching, faceted spikes, spring pads, gem
+rings, gates with chevrons, hexagonal star shards, and a palette of coral,
+teal, amber and violet.
+
+sprites_game.py, sprites_lv.py and sprites_ui.py import these at their end, so
+their sprite lists (and the sprite names the C code uses) stay the same.
+"""
+import math
+import numpy as np
+from art import Art, S, stroke_mask, inset_polygon, lerp, hexc
+
+WHITE = (1.0, 1.0, 1.0)
+BLACK = (0.0, 0.0, 0.0)
+
+
+def px(u):
+    return int(math.ceil(u * S))
+
+
+def gray(l):
+    return (l, l, l)
+
+
+def rounded_box(u, v, hx, hy, r):
+    """Mask of a rounded rectangle centred on the origin (units)."""
+    qx = np.maximum(np.abs(u) - (hx - r), 0)
+    qy = np.maximum(np.abs(v) - (hy - r), 0)
+    return (np.hypot(qx, qy) <= r) & (np.abs(u) <= hx) & (np.abs(v) <= hy)
+
+
+# ---------------------------------------------------------------- palette
+ND = {
+    'coral': (hexc('ffb59c'), hexc('ff7a59'), hexc('c4402a')),
+    'teal': (hexc('a6fff2'), hexc('2ec4b6'), hexc('117a72')),
+    'amber': (hexc('ffe3a3'), hexc('ffb347'), hexc('c76f0e')),
+    'violet': (hexc('dccbff'), hexc('9b7bff'), hexc('5a36c9')),
+    'rose': (hexc('ffc2dd'), hexc('ff6fa8'), hexc('b8306a')),
+    'lime': (hexc('e2ffb0'), hexc('9be564'), hexc('4f8f22')),
+    'sky': (hexc('c7f0ff'), hexc('4cc9f0'), hexc('1a78a8')),
+    'silver': (hexc('ffffff'), hexc('c8ccd8'), hexc('6e7488')),
+    'crimson': (hexc('ffb0a8'), hexc('f0484a'), hexc('a01a24')),
+    'mint': (hexc('d2fff0'), hexc('5ff5c2'), hexc('1d9e76')),
+    'indigo': (hexc('c8d0ff'), hexc('5b6cff'), hexc('2a33a8')),
+}
+# portal style -> colour (each mode its own colour; not the original game's code)
+GATE = {'cube': 'coral', 'ship': 'teal', 'ball': 'amber', 'ufo': 'violet', 'wave': 'sky', 'robot': 'lime',
+        'spider': 'rose', 'swing': 'mint', 'grav_blue': 'silver', 'grav_yellow': 'indigo', 'mini': 'mint',
+        'big': 'indigo', 'dual': 'amber', 'single': 'teal', 'tele': 'rose', 'tele_exit': 'violet'}
+
+
+# ---------------------------------------------------------------- blocks
+
+def block_art(edges='ltrb', size=30, grid=False, glowpad=0):
+    """A panel: dark body, an inner rounded plate with diagonal hatching, and
+    a bright cap on the outlined sides (thick on top, thin on the others).
+    grid: two staggered courses of bricks that fade downwards."""
+    half = size / 2
+    w = px(size + 2 * glowpad)
+    a = Art(w, w)
+    u, v = a.grid()
+    inside = (np.abs(u) < half) & (np.abs(v) < half)
+    if grid:
+        lum = np.zeros_like(u)
+        row = (half - v) // (size / 2)
+        off = np.where(row % 2 == 0, 0.0, size / 4)
+        fu = (u + half + off) % (size / 2)
+        fv = (half - v) % (size / 2)
+        seam = (np.minimum(fu, size / 2 - fu) < 0.7) | (np.minimum(fv, size / 2 - fv) < 0.7)
+        alpha = np.where(row < 1, 0.82, 0.55)
+        body = inside & ~seam
+        a.paint(body.astype(np.float32), gray(0.14), 1.0)
+        a.a = np.where(body, alpha, np.where(inside, 0.25, a.a)).astype(np.float32)
+    else:
+        a.paint(inside.astype(np.float32), gray(0.06), 1.0)
+        a.a = np.where(inside, 0.92, a.a).astype(np.float32)
+        plate = rounded_box(u, v, half - 4, half - 4, 3)
+        hatch = ((u + v) % 7.0) < 2.2
+        a.paint(plate.astype(np.float32), gray(0.16), 1.0)
+        a.paint((plate & hatch).astype(np.float32), gray(0.26), 1.0)
+    E = np.zeros_like(u, dtype=bool)
+    if 't' in edges: E |= inside & (v > half - 3.0)
+    if 'b' in edges: E |= inside & (v < -half + 1.2)
+    if 'l' in edges: E |= inside & (u < -half + 1.2)
+    if 'r' in edges: E |= inside & (u > half - 1.2)
+    if 'c' in edges: E |= inside & (u < -half + 3.0) & (v > half - 3.0)
+    a.paint(E.astype(np.float32), WHITE, 1.0)
+    if 't' in edges:     # a darker groove under the cap
+        a.paint((inside & (v > half - 4.0) & (v <= half - 3.0)).astype(np.float32), gray(0.02), 1.0)
+    return a
+
+
+def glow_art(edges='ltrb', size=30, reach=6.0, peak=0.55, height=None):
+    """A faint light just above the capped side of a panel (only where a top is
+    outlined; the other sides do not glow)."""
+    half = size / 2
+    hh = (height if height else size) / 2
+    a = Art(px(size + 2 * reach) + 1, px(2 * hh + 2 * reach) + 1)
+    u, v = a.grid()
+    g = np.zeros_like(u)
+    if 't' in edges or 'c' in edges:
+        d = np.where(np.abs(u) <= half, np.maximum(v - hh, 0), 1e9)
+        g = np.clip(1 - d / (reach * 0.8), 0, 1) ** 2 * 0.3 * (v > hh - 0.5)
+    a.rgb[:] = 1.0
+    a.a = g.astype(np.float32)
+    return a
+
+
+def plank_art():
+    a = Art(px(30), px(14) + 1)
+    u, v = a.grid()
+    inside = (np.abs(u) < 15) & (np.abs(v) < 7)
+    a.paint(inside.astype(np.float32), gray(0.08), 1.0)
+    a.a = np.where(inside, 0.92, 0).astype(np.float32)
+    a.paint((inside & (v > 4.2)).astype(np.float32), WHITE, 1.0)
+    for x in (-8, 8):
+        a.paint(a.ellipse_mask(x, -1, 1.6, 1.6), gray(0.5), 1.0)
+    return a
+
+
+# ---------------------------------------------------------------- spikes
+
+def spike_art(w_u=30.0, h_u=30.0, bottom=-15.0):
+    """A faceted crystal: bright left face, dimmer right face, a dark keel."""
+    top = bottom + h_u
+    a = Art(px(30), px(30))
+    tri = [(-w_u / 2, bottom), (w_u / 2, bottom), (0, top)]
+    whole = a.poly_mask(tri)
+    left = a.poly_mask([(-w_u / 2, bottom), (0, bottom + h_u * 0.18), (0, top)])
+    right = a.poly_mask([(0, bottom + h_u * 0.18), (w_u / 2, bottom), (0, top)])
+    base = a.poly_mask([(-w_u / 2, bottom), (w_u / 2, bottom), (0, bottom + h_u * 0.18)])
+    a.paint(whole, gray(0.1), 1.0)
+    a.paint(left, gray(0.95), 1.0)
+    a.paint(right, gray(0.55), 1.0)
+    a.paint(base, gray(0.25), 1.0)
+    return a
+
+
+def spike_glow_art(w_u=30.0, h_u=30.0, bottom=-15.0, reach=6.0, peak=0.5):
+    """A small spark at the tip."""
+    top = bottom + h_u
+    a = Art(px(30 + 2 * reach) + 1, px(30 + 2 * reach) + 1)
+    u, v = a.grid()
+    d = np.hypot(u, v - top)
+    a.rgb[:] = 1.0
+    a.a = (np.clip(1 - d / (reach * 0.9), 0, 1) ** 2 * 0.35).astype(np.float32)
+    return a
+
+
+# ---------------------------------------------------------------- pads and orbs
+PAD_COLORS = {'yellow': ND['amber'], 'blue': ND['teal'], 'pink': ND['rose'], 'red': ND['crimson']}
+
+
+def pad_art(kind):
+    """A spring pad: a coloured plate on a zig-zag spring and a dark foot."""
+    light, mid, dark = PAD_COLORS[kind]
+    a = Art(px(30) + 1, px(12) + 1)
+    u, v = a.grid()
+    foot = a.rect_mask(-12, -3, 12, -1.6)
+    a.paint(foot, BLACK, 0.9)
+    zz = [(-8, -1.6), (-5, 1.0), (-2, -1.6), (1, 1.0), (4, -1.6), (7, 1.0), (9, -1.0)]
+    a.paint(stroke_mask(a, zz, 1.1, closed=False), dark, 1.0)
+    plate = a.poly_mask([(-12.5, 1.0), (12.5, 1.0), (10.5, 3.4), (-10.5, 3.4)])
+    t = np.clip((v - 1) / 2.4, 0, 1)
+    col = np.stack([lerp(mid[i], light[i], t) for i in range(3)], -1)
+    a.paint(plate, col, 1.0)
+    return a
+
+
+def pad_glow_art(kind):
+    light, mid, _ = PAD_COLORS[kind]
+    a = Art(px(36) + 1, px(18) + 1)
+    u, v = a.grid()
+    g = np.clip(1 - np.abs(u) / 15, 0, 1) * np.clip(1 - (v - 3) / 7, 0, 1) * (v > 2.5) * 0.45
+    a.rgb[:] = mid
+    a.a = g.astype(np.float32)
+    return a
+
+
+def gem(a, colors, R=11.0, outline=14.0, notch=None):
+    """A diamond gem: four facets around a lighter table, inside a thin
+    diamond frame."""
+    light, mid, dark = colors
+    u, v = a.grid()
+    d1 = np.abs(u) + np.abs(v)
+    frame = (d1 < outline + 1.2) & (d1 > outline - 0.6)
+    if notch:
+        frame &= ~((np.abs(u) < 2.5) | (np.abs(v) < 2.5))
+    a.paint(frame.astype(np.float32), WHITE, 1.0)
+    body = d1 < R
+    tl = body & (v > 0) & (u < 0)
+    tr = body & (v > 0) & (u >= 0)
+    bl = body & (v <= 0) & (u < 0)
+    br = body & (v <= 0) & (u >= 0)
+    a.paint(tl.astype(np.float32), light, 1.0)
+    a.paint(tr.astype(np.float32), mid, 1.0)
+    a.paint(bl.astype(np.float32), mid, 1.0)
+    a.paint(br.astype(np.float32), dark, 1.0)
+    table = d1 < R * 0.42
+    a.paint(table.astype(np.float32), tuple(min(1, c * 0.5 + 0.5) for c in light), 1.0)
+    return a
+
+
+def orb_art(kind='yellow'):
+    a = Art(px(30) + 1, px(30) + 1)
+    return gem(a, {'yellow': ND['amber'], 'pink': ND['rose'], 'blue': ND['teal']}[kind])
+
+
+def orb_glow_art(kind='yellow', c=None):
+    if c is None:
+        c = {'yellow': ND['amber'], 'pink': ND['rose'], 'blue': ND['teal']}[kind][1]
+    a = Art(px(40) + 1, px(40) + 1)
+    u, v = a.grid()
+    d1 = np.abs(u) + np.abs(v)
+    a.rgb[:] = c
+    a.a = (np.clip(1 - np.abs(d1 - 14) / 6, 0, 1) ** 1.6 * 0.5).astype(np.float32)
+    return a
+
+
+# ---------------------------------------------------------------- portals
+
+def gate(style, part, w_u, h_u, box_w, box_h, chevrons=3):
+    """A tall gate: a rounded frame in the mode's colour with chevrons inside.
+    The back part is the left half (behind the player), the front part the
+    right half."""
+    light, mid, dark = ND[GATE[style]]
+    a = Art(px(box_w) + 1, px(box_h) + 1)
+    u, v = a.grid()
+    hx, hy = w_u / 2, h_u / 2
+    outer = rounded_box(u, v, hx, hy, hx * 0.9)
+    inner = rounded_box(u, v, hx - 3.2, hy - 3.2, max(1.0, hx * 0.9 - 3.2))
+    frame = outer & ~inner
+    side = (u < 0.0) if part == 'back' else (u >= 0.0)
+    t = np.clip((v + hy) / (2 * hy), 0, 1)
+    col = np.stack([lerp(dark[i], light[i], t) for i in range(3)], -1)
+    if part == 'back':
+        a.paint((inner & side).astype(np.float32), dark, 0.45)
+    a.paint((frame & side).astype(np.float32), col, 1.0)
+    edge = side & outer & ~rounded_box(u, v, hx - 1.0, hy - 1.0, max(1.0, hx * 0.9 - 1.0))
+    a.paint(edge.astype(np.float32), WHITE, 0.7)
+    if part == 'front':
+        for k in range(chevrons):
+            cy = (k - (chevrons - 1) / 2) * (h_u * 0.22)
+            pts = [(-3.5, cy + 4), (1.5, cy), (-3.5, cy - 4)]
+            a.paint(stroke_mask(a, pts, 1.8, closed=False), light, 1.0)
+        for sy in (1, -1):
+            a.paint(a.ellipse_mask(0, sy * (hy + 2.5), 2.2, 2.2), mid, 1.0)
+    return a
+
+
+def gravity_portal_art(style, part):
+    return gate(style, part, 14, 72, 34, 80, chevrons=2)
+
+
+def mode_portal_art(style, part):
+    return gate(style, part, 16, 80, 40, 92, chevrons=3)
+
+
+def size_portal(style, part):
+    return gate(style, part, 13 if style == 'mini' else 18, 82, 36, 96, chevrons=1 if style == 'mini' else 4)
+
+
+def speed_portal(n, col, flip=False):
+    """Speed plates: n bars in a rounded plate, slanted the way they go."""
+    names = {1: 'amber', 2: 'teal', 3: 'lime', 4: 'rose'}
+    light, mid, dark = ND[names.get(n, 'teal') if not flip else 'amber']
+    w = 16 + 8 * n
+    a = Art(px(w + 4) + 2, px(48) + 2)
+    u, v = a.grid()
+    plate = rounded_box(u, v, w / 2, 21, 5)
+    a.paint(plate.astype(np.float32), BLACK, 0.75)
+    a.paint((plate & ~rounded_box(u, v, w / 2 - 1.4, 19.6, 4)).astype(np.float32), mid, 1.0)
+    slant = -0.35 if flip else 0.35
+    for k in range(n):
+        x0 = -w / 2 + 8 + 8 * k
+        bar = np.abs((u - x0) - slant * v) < 2.2
+        a.paint((bar & (np.abs(v) < 15)).astype(np.float32), light, 1.0)
+    return a
+
+
+# ---------------------------------------------------------------- the collectable
+
+def coin_art(frame):
+    """A star shard: a hexagonal gem with a five-point star cut in it, four
+    spin frames (0 face, 1 3/4, 2 edge, 3 back 3/4)."""
+    light, mid, dark = ND['mint']
+    a = Art(px(40) + 1, px(40) + 1)
+    sx = [1.0, 0.72, 0.18, 0.72][frame]
+    hexa = [(17 * math.cos(math.radians(90 + 60 * k)) * sx, 17 * math.sin(math.radians(90 + 60 * k))) for k in range(6)]
+    a.paint(np.maximum(a.poly_mask(hexa), stroke_mask(a, hexa, 2.0)), gray(0.08), 1.0)
+    inner = [(x * 0.82, y * 0.82) for x, y in hexa]
+    u, v = a.grid()
+    t = np.clip((v + 14) / 28, 0, 1)
+    col = np.stack([lerp(dark[i], light[i], t) for i in range(3)], -1)
+    a.paint(a.poly_mask(inner), col, 1.0)
+    if frame != 2:
+        pts = []
+        for i in range(10):
+            ang = math.pi / 2 + i * math.pi / 5
+            rr = 9.0 if i % 2 == 0 else 3.8
+            pts.append((rr * math.cos(ang) * sx, rr * math.sin(ang) - 0.5))
+        a.paint(a.poly_mask(pts), WHITE if frame == 0 else mid, 0.95)
+    a.paint(a.poly_mask([(x * 0.82, y * 0.82) for x, y in hexa[:2]] + [(0, 0)]), WHITE, 0.25)
+    return a
+
+
+# ---------------------------------------------------------------- player icons
+
+def cube_layers():
+    """NumDash's cube: a rounded block in the primary colour with a dark rim,
+    a wide visor and a chin notch in the secondary colour."""
+    p = Art(px(30), px(30))
+    s = Art(px(30), px(30))
+    u, v = p.grid()
+    body = rounded_box(u, v, 15, 15, 4)
+    p.paint(body.astype(np.float32), BLACK, 1.0)
+    p.paint(rounded_box(u, v, 13.3, 13.3, 3).astype(np.float32), WHITE, 1.0)
+    p.paint((rounded_box(u, v, 13.3, 13.3, 3) & (v < -7)).astype(np.float32), gray(0.78), 1.0)
+    visor = rounded_box(u - 1.5, v - 3.5, 9.5, 3.6, 2.4)
+    p.paint(rounded_box(u - 1.5, v - 3.5, 10.9, 5.0, 3.2).astype(np.float32), BLACK, 1.0)
+    p.erase(visor.astype(np.float32))
+    s.paint(visor.astype(np.float32), WHITE, 1.0)
+    s.paint((visor & (u > 4) & (v > 3.5)).astype(np.float32), gray(0.55), 1.0)
+    chin = (np.abs(u) < 4.5) & (v < -7.5) & (v > -10)
+    p.paint(np.clip(chin.astype(np.float32) * 1.0, 0, 1), BLACK, 1.0)
+    return p, s
+
+
+def ball_layers():
+    """NumDash's ball: a disc with a dark rim, two crescent bands in the
+    secondary colour and a hub, so it is seen rolling."""
+    p = Art(px(30), px(30))
+    s = Art(px(30), px(30))
+    u, v = p.grid()
+    r = np.hypot(u, v)
+    p.paint((r < 15).astype(np.float32), BLACK, 1.0)
+    p.paint((r < 13.4).astype(np.float32), WHITE, 1.0)
+    band = (r < 11.5) & (r > 6.5) & (np.abs(np.sin(np.arctan2(v, u))) > 0.55)
+    p.paint(np.clip(band.astype(np.float32), 0, 1), BLACK, 1.0)
+    inner_band = (r < 10.3) & (r > 7.7) & (np.abs(np.sin(np.arctan2(v, u))) > 0.62)
+    p.erase(inner_band.astype(np.float32))
+    s.paint(inner_band.astype(np.float32), WHITE, 1.0)
+    p.paint((r < 3.6).astype(np.float32), BLACK, 1.0)
+    return p, s
+
+
+def ship_layers():
+    """NumDash's ship: a dart with a swept wing and a canopy in the secondary
+    colour. 37 x 23 unit box like before."""
+    p = Art(px(38) + 2, px(24) + 2)
+    s = Art(px(38) + 2, px(24) + 2)
+    hull = [(-17, -3), (6, -6), (17.5, 0.5), (6, 4.5), (-12, 4.5), (-17, 1.5)]
+    wing = [(-12, -3.5), (2, -4.5), (-6, -10.5), (-14, -10.5)]
+    canopy = [(-2, 4.2), (8, 4.2), (4, 9.5), (-3, 9.5)]
+    fin = [(-16.5, 1.0), (-11, 1.5), (-13, 9), (-17, 9)]
+    for shape in (fin, wing, hull):
+        p.paint(np.maximum(p.poly_mask(shape), stroke_mask(p, shape, 2.0)), BLACK, 1.0)
+    p.paint(p.poly_mask(inset_polygon(hull, 1.4)), WHITE, 1.0)
+    p.paint(p.poly_mask(inset_polygon(wing[::-1], 1.2)[::-1]), gray(0.75), 1.0)
+    p.paint(p.poly_mask(inset_polygon(fin[::-1], 1.2)[::-1]), gray(0.85), 1.0)
+    p.paint(np.maximum(p.poly_mask(canopy), stroke_mask(p, canopy, 2.0)), BLACK, 1.0)
+    cin = p.poly_mask(inset_polygon(canopy[::-1], 1.2)[::-1])
+    p.erase(cin)
+    s.paint(cin, WHITE, 1.0)
+    stripe = p.poly_mask([(-14, -0.5), (10, -2.5), (12, -1.2), (-14, 1.0)])
+    p.erase(stripe)
+    s.paint(stripe, gray(0.8), 1.0)
+    return p, s
+
+
+def ufo_layers():
+    """NumDash's saucer: a flat lens (primary) with a row of lights, a
+    keel (secondary) and a small glass dome over the cube."""
+    W, H = px(39) + 2, px(32) + 2
+    p, s, d = Art(W, H), Art(W, H), Art(W, H)
+    u, v = p.grid()
+    lens = ((u / 18.5) ** 2 + ((v + 1.5) / 5.6) ** 2) < 1
+    p.paint(lens.astype(np.float32), BLACK, 1.0)
+    lens_in = ((u / 17.0) ** 2 + ((v + 1.5) / 4.3) ** 2) < 1
+    p.paint(lens_in.astype(np.float32), WHITE, 1.0)
+    for x in (-10, -3.5, 3.5, 10):
+        p.paint(p.ellipse_mask(x, -1.8, 1.5, 1.5), gray(0.3), 1.0)
+    keel = (np.abs(u) < 7.5 - (-(v + 6)) * 0.6) & (v < -5) & (v > -10.5)
+    p.paint(np.clip(keel.astype(np.float32), 0, 1), BLACK, 1.0)
+    keel_in = (np.abs(u) < 6.0 - (-(v + 6)) * 0.6) & (v < -5.8) & (v > -9.4)
+    p.erase(keel_in.astype(np.float32))
+    s.paint(keel_in.astype(np.float32), WHITE, 1.0)
+    r = np.hypot(u / 10.0, (v - 2.5) / 11.0)
+    above = v > 2.5
+    d.paint(((r < 1) & above).astype(np.float32), WHITE, 0.28)
+    d.paint(((r < 1) & (r > 0.88) & above).astype(np.float32), BLACK, 0.85)
+    d.paint(((r < 0.75) & (r > 0.6) & above & (u > 2)).astype(np.float32), WHITE, 0.6)
+    return p, s, d
+
+
+def icon_layers(outline_pts_list, prim_pts_list, sec_pts_list, w, h, ow=2.2):
+    W, H = px(w) + 2, px(h) + 2
+    p, s = Art(W, H), Art(W, H)
+    for pts in outline_pts_list:
+        p.paint(np.maximum(p.poly_mask(pts), stroke_mask(p, pts, ow)), BLACK, 1.0)
+    for pts, shade in prim_pts_list:
+        p.paint(p.poly_mask(pts), gray(shade), 1.0)
+    for pts, shade in sec_pts_list:
+        m = s.poly_mask(pts)
+        p.erase(m)
+        s.paint(m, gray(shade), 1.0)
+    return p, s
+
+
+def wave_icon():
+    """The wave: a split arrowhead with a notch at the back."""
+    body = [(13, 0), (-9, 9), (-5, 0), (-9, -9)]
+    inner = [(7, 0), (-3.5, 4.2), (-1.5, 0), (-3.5, -4.2)]
+    return icon_layers([body], [(body, 1.0)], [(inner, 1.0)], 30, 26)
+
+
+def robot_icon():
+    """The robot: a round-topped helmet with a slot eye and a chest light."""
+    head = [(-12, -4), (-12, 8), (-7, 14), (7, 14), (12, 8), (12, -4)]
+    slot = [(-8, 5), (8, 5), (8, 9), (-8, 9)]
+    chest = [(-4, -2.5), (4, -2.5), (4, 1.5), (-4, 1.5)]
+    p, s = icon_layers([head], [(head, 1.0)], [(slot, 1.0), (chest, 0.75)], 34, 34)
+    s.paint(s.rect_mask(2, 6, 5, 8), BLACK, 1.0)
+    return p, s
+
+
+def spider_icon():
+    """The spider: a low shell with three eyes in a row."""
+    body = [(-14, -5), (-13, 3), (-7, 9), (7, 9), (13, 3), (14, -5)]
+    band = [(-11, -4), (11, -4), (11, -1), (-11, -1)]
+    p, s = icon_layers([body], [(body, 1.0)], [(band, 1.0)], 34, 30)
+    for ex in (-6, 0, 6):
+        p.paint(p.ellipse_mask(ex, 3.5, 2.3, 2.3), WHITE, 1.0)
+        p.paint(p.ellipse_mask(ex + 0.6, 3.5, 1.1, 1.1), BLACK, 1.0)
+    return p, s
+
+
+def swing_icon():
+    """The swing: a hexagonal pod between two fins."""
+    W, H = px(36) + 2, px(32) + 2
+    p, s = Art(W, H), Art(W, H)
+    hexa = [(11 * math.cos(math.radians(60 * k)), 11 * math.sin(math.radians(60 * k))) for k in range(6)]
+    finl = [(-16, 6), (-9, 3), (-9, -3), (-16, -6)]
+    finr = [(16, -6), (9, -3), (9, 3), (16, 6)]
+    for shape in (finl, finr, hexa):
+        p.paint(np.maximum(p.poly_mask(shape), stroke_mask(p, shape, 2.2)), BLACK, 1.0)
+    p.paint(p.poly_mask(inset_polygon(hexa, 1.6)), WHITE, 1.0)
+    for shape in (finl, finr):
+        p.paint(p.poly_mask(inset_polygon(shape[::-1], 1.2)[::-1]), gray(0.8), 1.0)
+    core = p.poly_mask([(x * 0.5, y * 0.5) for x, y in hexa])
+    p.erase(core)
+    s.paint(core, WHITE, 1.0)
+    return p, s
+
+
+def ring_orb(core_hi, core_lo, arrow=None, dots=0):
+    """Gem rings of the later modes: the gem in the given colours, with a
+    double chevron (dash) or dots around it."""
+    a = Art(px(32) + 1, px(32) + 1)
+    mid = tuple((core_hi[i] + core_lo[i]) / 2 for i in range(3))
+    gem(a, (core_hi, mid, core_lo))
+    if arrow:
+        for x0 in (-4.5, 0.5):
+            a.paint(stroke_mask(a, [(x0, 4), (x0 + 4, 0), (x0, -4)], 1.6, closed=False), WHITE, 0.95)
+    for k in range(dots):
+        t2 = math.radians(45 + k * 360 / max(dots, 1))
+        a.paint(a.ellipse_mask(12.5 * math.cos(t2), 12.5 * math.sin(t2), 1.7, 1.7), WHITE, 1.0)
+    return a
+
+
+def glow_ring(c):
+    return orb_glow_art(c=c)
+
+
+def orb_green():
+    a = Art(px(30) + 1, px(30) + 1)
+    return gem(a, ND['lime'], notch=True)
+
+
+def orb_green_glow():
+    return orb_glow_art(c=ND['lime'][1])
+
+
+def red_pad():
+    return pad_art('red')
+
+
+# ---------------------------------------------------------------- menus (pixel canvases, y down)
+
+def _ui():
+    import sprites_ui
+    return sprites_ui
+
+
+UI_A = (hexc('ffb59c'), hexc('ff7a59'), hexc('b8392a'))      # coral
+UI_B = (hexc('a6fff2'), hexc('2ec4b6'), hexc('0e6b64'))      # teal
+UI_GOLD = (hexc('fff1c2'), hexc('ffc857'), hexc('c98a12'))
+
+
+def hexagon_pts(cx, cy, r, flat=False):
+    a0 = 0 if flat else 30
+    return [(cx + r * math.cos(math.radians(a0 + 60 * k)), cy + r * math.sin(math.radians(a0 + 60 * k))) for k in range(6)]
+
+
+def cross_button(d, icon):
+    """The main menu's big buttons: a coral hexagon in a teal frame."""
+    U = _ui()
+    c = U.Px(d + 4, d + 4)
+    cx = cy = d / 2 + 2
+    r = d / 2 - 1
+    outer = c.poly(hexagon_pts(cx, cy, r))
+    inner = c.poly(hexagon_pts(cx, cy, r * 0.8))
+    c.paint(np.roll(np.roll(U.grow(outer, 1.6), int(2 * U.SS), 0), int(1.5 * U.SS), 1), BLACK, 0.45)
+    c.paint(U.grow(outer, 1.6), BLACK)
+    c.paint(outer, c.vgrad(UI_B[0], UI_B[2], cy - r, cy + r))
+    c.paint(U.grow(inner, 1.0), BLACK, 0.8)
+    c.paint(inner, c.vgrad(UI_A[0], UI_A[2], cy - r, cy + r))
+    c.paint(c.ellipse(cx - r * 0.25, cy - r * 0.42, r * 0.32, r * 0.14), WHITE, 0.35)
+    if icon:
+        icon(c, cx, cy, r * 0.42)
+    return c
+
+
+def round_button(d, icon, color='green', ring=False):
+    """Round buttons: a teal (or violet) disc with a light rim."""
+    U = _ui()
+    pad = 3 if ring else 0
+    c = U.Px(d + 3 + 2 * pad, d + 3 + 2 * pad)
+    r = d / 2 - 1
+    cx = cy = d / 2 + 0.5 + pad
+    disc = c.ellipse(cx, cy, r)
+    outer = U.grow(disc, 1.2 + (2.2 if ring else 0))
+    c.paint(np.roll(np.roll(outer, int(1.5 * U.SS), 0), int(U.SS), 1), BLACK, 0.45)
+    if ring:
+        c.paint(outer, hexc('fff4e8'))
+    c.paint(U.grow(disc, 1.2), BLACK)
+    cols = UI_B if color == 'green' else (hexc('dccbff'), hexc('9b7bff'), hexc('4a2ab0'))
+    c.paint(disc, c.vgrad(cols[0], cols[2], cy - r, cy + r))
+    rim = np.clip(c.ellipse(cx, cy, r) - c.ellipse(cx, cy, r - max(1.6, r * 0.12)), 0, 1)
+    c.paint(rim, cols[0], 0.6)
+    if icon:
+        icon(c, cx, cy, r * 0.55)
+    return c
+
+
+def arrow_back(w, h):
+    U = _ui()
+    c = U.Px(w + 4, h + 4)
+    pts = [(w + 1, 4), (2, h / 2 + 2), (w + 1, h)]
+    m = c.line(pts, 5.0)
+    c.paint(np.roll(np.roll(U.grow(m, 1.4), int(1.5 * U.SS), 0), int(U.SS), 1), BLACK, 0.45)
+    c.paint(U.grow(m, 1.4), BLACK)
+    c.paint(m, c.vgrad(UI_A[0], UI_A[2], 2, h + 2))
+    return c
+
+
+def diff_face(kind):
+    """Difficulty badges: a shield with 1 to 5 pips, each level its colour."""
+    U = _ui()
+    cols = {1: ND['sky'], 2: ND['lime'], 3: ND['amber'], 4: ND['coral'], 5: ND['violet']}[kind]
+    d = 26
+    c = U.Px(d + 3, d + 3)
+    cx = d / 2 + 1.5
+    shield = [(cx - 11, 3), (cx + 11, 3), (cx + 11, 14), (cx, 25), (cx - 11, 14)]
+    m = c.poly(shield)
+    c.paint(U.grow(m, 1.2), BLACK)
+    c.paint(m, c.vgrad(cols[0], cols[2], 3, 25))
+    c.paint(c.poly([(cx - 9, 5), (cx, 5), (cx, 22), (cx - 9, 13.5)]), WHITE, 0.18)
+    n = kind
+    for k in range(n):
+        x = cx + (k - (n - 1) / 2) * 4.2
+        c.paint(c.ellipse(x, 12, 1.6), BLACK, 0.85)
+    return c
+
+
+def demon_face():
+    """The hardest badge: a dark shield with a flame."""
+    U = _ui()
+    d = 26
+    c = U.Px(d + 9, d + 9)
+    cx = (d + 9) / 2
+    shield = [(cx - 13, 4), (cx + 13, 4), (cx + 13, 17), (cx, 31), (cx - 13, 17)]
+    m = c.poly(shield)
+    c.paint(U.grow(m, 1.4), BLACK)
+    c.paint(m, c.vgrad(hexc('5a1a3a'), hexc('1a0610'), 4, 31))
+    flame = c.poly([(cx, 7), (cx + 6, 16), (cx + 4, 23), (cx, 26), (cx - 4, 23), (cx - 6, 16)])
+    c.paint(flame, c.vgrad(hexc('ffe08a'), hexc('ff4a2a'), 7, 26))
+    c.paint(c.poly([(cx, 14), (cx + 3, 20), (cx, 24), (cx - 3, 20)]), hexc('fff6d0'), 0.9)
+    return c
+
+
+def coin_icon(d, filled=True):
+    """The star shard as a menu icon."""
+    U = _ui()
+    c = U.Px(d + 2, d + 2)
+    cx = cy = d / 2 + 1
+    r = d / 2 - 0.5
+    hexa = hexagon_pts(cx, cy, r, flat=False)
+    m = c.poly(hexa)
+    c.paint(U.grow(m, 0.8), hexc('10302a') if filled else hexc('202020'))
+    if filled:
+        c.paint(m, c.vgrad(ND['mint'][0], ND['mint'][2], cy - r, cy + r))
+    else:
+        c.paint(m, c.vgrad(hexc('9a9a9a'), hexc('505050'), cy - r, cy + r))
+    pts = []
+    for i in range(10):
+        ang = -math.pi / 2 + i * math.pi / 5
+        rr = r * 0.55 if i % 2 == 0 else r * 0.23
+        pts.append((cx + rr * math.cos(ang), cy + rr * math.sin(ang) + 0.3))
+    c.paint(c.poly(pts), WHITE if filled else hexc('3a3a3a'), 0.85)
+    return c
+
+
+def side_art(n):
+    """Corner decoration: stacked diagonal stripes in coral and teal."""
+    U = _ui()
+    s = 10
+    W = n * s + 3
+    c = U.Px(W, W, 0, W)
+    for k in range(n):
+        t = k * s
+        band = c.poly([(0, W - 1 - t - s * 0.75), (t + s * 0.75, W - 1), (t, W - 1), (0, W - 1 - t)])
+        col = UI_A if k % 2 == 0 else UI_B
+        c.paint(U.grow(band, 0.8), BLACK, 0.8)
+        c.paint(band, c.vgrad(col[0], col[2], W - 1 - t - s, W))
+    return c
+
+
+def checkbox(on):
+    U = _ui()
+    d = 18
+    c = U.Px(d + 2, d + 2)
+    m = c.poly([(4, 1.5), (d - 2, 1.5), (d - 0.5, 4), (d - 0.5, d - 2), (d - 2, d - 0.5), (4, d - 0.5), (1.5, d - 2), (1.5, 4)])
+    c.paint(U.grow(m, 1.0), BLACK)
+    c.paint(m, c.vgrad(hexc('d8d4e8'), hexc('7a7690'), 0, d))
+    if on:
+        tick = c.line([(4.5, 10), (8, 14), (15.5, 4.5)], 3.2)
+        U.outlined(c, tick, c.vgrad(UI_B[0], UI_B[2], 0, d), outline=1.0)
+    return c
+
+
+def draw_face_icon(c, cx, cy, s):
+    """The garage glyph: NumDash's cube (rounded block and visor)."""
+    U = _ui()
+    m = c.poly([(cx - s, cy - s * 0.7), (cx - s * 0.7, cy - s), (cx + s * 0.7, cy - s), (cx + s, cy - s * 0.7),
+                (cx + s, cy + s * 0.7), (cx + s * 0.7, cy + s), (cx - s * 0.7, cy + s), (cx - s, cy + s * 0.7)])
+    U.outlined(c, m, c.vgrad(hexc('fff8ee'), hexc('d9cdb8'), cy - s, cy + s), outline=1.4)
+    c.paint(c.rect(cx - s * 0.55, cy - s * 0.45, cx + s * 0.7, cy - s * 0.02), BLACK)
+    c.paint(c.rect(cx - s * 0.3, cy + s * 0.45, cx + s * 0.3, cy + s * 0.62), BLACK)
+
+
+def draw_diamond(c, cx, cy, s, cross=False):
+    """Practice: a checkpoint flag; normal mode: the flag crossed out."""
+    U = _ui()
+    pole = c.rect(cx - s * 0.55, cy - s * 0.95, cx - s * 0.35, cy + s * 0.95)
+    flag = c.poly([(cx - s * 0.35, cy - s * 0.95), (cx + s * 0.75, cy - s * 0.6), (cx - s * 0.35, cy - s * 0.2)])
+    U.outlined(c, np.clip(pole + flag, 0, 1), c.vgrad(ND['mint'][0], ND['mint'][2], cy - s, cy + s), outline=1.3)
+    if cross:
+        bar = c.poly([(cx - s * 0.8, cy - s * 0.65), (cx - s * 0.65, cy - s * 0.8), (cx + s * 0.8, cy + s * 0.65), (cx + s * 0.65, cy + s * 0.8)])
+        U.outlined(c, bar, ND['crimson'][1], outline=1.0)
+
+
+# icon colours of the menu glyphs (they were gold on green)
+ICON_L, ICON, ICON_D = hexc('fff8ee'), hexc('f2e8d8'), hexc('cdbfa8')
+
+
+# ---------------------------------------------------------------- decorations of the first levels
+
+def rod_art(length):
+    """A thin mast with rungs (the light at its top is rod_ball)."""
+    a = Art(px(6.5) + 2, px(length) + 1)
+    u, v = a.grid()
+    mast = (np.abs(u) < 1.0) & (np.abs(v) < length / 2 - 1)
+    rungs = (np.abs(u) < 2.6) & ((((v + length / 2) % 8.0) < 1.2)) & (np.abs(v) < length / 2 - 3)
+    a.paint((mast | rungs).astype(np.float32), WHITE, 0.9)
+    base = a.poly_mask([(-3.2, -length / 2), (3.2, -length / 2), (1, -length / 2 + 4), (-1, -length / 2 + 4)])
+    a.paint(base, WHITE, 1.0)
+    return a
+
+
+def ball_art(r=15.0):
+    """The light on a mast: a small diamond."""
+    a = Art(px(2 * r) + 1, px(2 * r) + 1)
+    u, v = a.grid()
+    a.paint(((np.abs(u) + np.abs(v)) < r - 0.5).astype(np.float32), WHITE, 1.0)
+    return a
+
+
+def mountains_art(w_u, h_u, peaks, seed):
+    """Background hills: soft rounded humps that fade downwards."""
+    import random
+    rnd = random.Random(seed + 100)
+    a = Art(px(w_u) + 1, px(h_u) + 1)
+    u, v = a.grid()
+    top = np.full_like(u, -h_u / 2)
+    for _ in range(max(2, peaks // 2)):
+        cx = rnd.uniform(-w_u / 2 + 6, w_u / 2 - 6)
+        rx = rnd.uniform(w_u * 0.12, w_u * 0.3)
+        hh = rnd.uniform(0.45, 1.0) * h_u
+        hump = -h_u / 2 + hh * np.sqrt(np.clip(1 - ((u - cx) / rx) ** 2, 0, 1))
+        top = np.maximum(top, hump)
+    m = (v < top) & (np.abs(u) < w_u / 2)
+    fade = np.clip((v + h_u / 2) / (h_u * 0.9), 0, 1) ** 0.8
+    a.paint(m.astype(np.float32), WHITE, 1.0)
+    a.a = (m * (0.2 + 0.6 * fade)).astype(np.float32)
+    return a
+
+
+def pit_art(seed):
+    """Ground hazard: a cluster of small crystals."""
+    import random
+    rnd = random.Random(seed + 50)
+    a = Art(px(30), px(27))
+    x = -15.0
+    m = np.zeros_like(a.a)
+    while x < 14:
+        w = rnd.uniform(4.5, 7.5)
+        h = rnd.uniform(6.0, 13.0)
+        m = np.maximum(m, a.poly_mask([(x, -13.5), (x + w, -13.5), (x + w * 0.5, 2.0 + h - 4)]))
+        x += w * 0.7
+    u, v = a.grid()
+    fade = np.clip((v + 13.5) / 7.0, 0, 1)
+    a.paint(m, WHITE, 1.0)
+    a.a = (m * fade).astype(np.float32)
+    return a
+
+
+def slab_wave_art(variant):
+    """Thin ledges with a bright top and a notched underside."""
+    a = Art(px(30), px(16) + 2)
+    u, v = a.grid()
+    body = (np.abs(u) < 15) & (v < 8) & (v > 0.5)
+    notch = (np.abs(((u + 15 + variant * 3.75) % 10.0) - 5.0) < 2.0) & (v < 3)
+    a.paint((body & ~notch).astype(np.float32), gray(0.08), 1.0)
+    a.paint(((np.abs(u) < 15) & (v >= 5.6) & (v < 8)).astype(np.float32), WHITE, 1.0)
+    return a
diff --git a/games/numdash/tools/sprites_ui.py b/games/numdash/tools/sprites_ui.py
index d8cd47e..01be76b 100644
--- a/games/numdash/tools/sprites_ui.py
+++ b/games/numdash/tools/sprites_ui.py
@@ -1,7 +1,6 @@
-"""User-interface artwork in the style of Geometry Dash's menus: cross-shaped
-play/garage/creator buttons, round green buttons with gold icons, difficulty
-faces, coins, stars, arrows and the stepped side art. Drawn from primitives
-in pixel coordinates (y down) at 8x supersampling."""
+"""User-interface artwork: the menu buttons and glyphs, arrows, badges, the star shard and
+star icons, check boxes and the corner art (NumDash's own designs, see sprites_nd.py). Drawn from
+primitives in pixel coordinates (y down) at 8x supersampling."""
 import math
 import numpy as np
 from PIL import Image, ImageDraw
@@ -162,26 +161,6 @@ def draw_list(c, cx, cy, s):
     outlined(c, m, c.vgrad(CYAN_L, CYAN_D, cy - s, cy + s), outline=1.3)
 
 
-def draw_diamond(c, cx, cy, s, cross=False):
-    pts = [(cx, cy - s), (cx + s * 0.6, cy), (cx, cy + s), (cx - s * 0.6, cy)]
-    m = c.poly(pts)
-    outlined(c, m, hexc('46ff5a'), outline=1.3)
-    c.paint(c.poly([(cx, cy - s), (cx + s * 0.6, cy), (cx, cy)]), hexc('c8ffc8'), 0.9)
-    c.paint(c.poly([(cx, cy + s), (cx - s * 0.6, cy), (cx, cy)]), hexc('00b432'), 0.9)
-    if cross:
-        ring = np.clip(c.ellipse(cx, cy, s * 0.95) - c.ellipse(cx, cy, s * 0.72), 0, 1)
-        bar = c.poly([(cx - s * 0.62, cy - s * 0.78), (cx - s * 0.78, cy - s * 0.62), (cx + s * 0.62, cy + s * 0.78), (cx + s * 0.78, cy + s * 0.62)])
-        outlined(c, np.clip(ring + bar, 0, 1), hexc('ff2828'), outline=1.0)
-
-
-def draw_face_icon(c, cx, cy, s):
-    m = c.rect(cx - s, cy - s, cx + s, cy + s)
-    outlined(c, m, c.vgrad(GOLD_L, GOLD_D, cy - s, cy + s), outline=1.4)
-    for dx in (-0.45, 0.45):
-        c.paint(c.rect(cx + dx * s - s * 0.2, cy - s * 0.45, cx + dx * s + s * 0.2, cy - s * 0.05), BLACK)
-    c.paint(c.rect(cx - s * 0.55, cy + s * 0.3, cx + s * 0.55, cy + s * 0.52), BLACK)
-
-
 def draw_tools(c, cx, cy, s):
     ham = c.poly([(cx - s * 0.9, cy - s * 0.55), (cx - s * 0.2, cy - s * 0.95), (cx + s * 0.05, cy - s * 0.55), (cx - s * 0.55, cy - s * 0.15)])
     handle = c.line([(cx - s * 0.35, cy - s * 0.45), (cx + s * 0.75, cy + s * 0.8)], s * 0.3)
@@ -193,67 +172,6 @@ def draw_tools(c, cx, cy, s):
 
 # ------------------------------------------------------------ buttons
 
-def round_button(d, icon, color='green', ring=False):
-    pad = 3 if ring else 0
-    c = Px(d + 3 + 2 * pad, d + 3 + 2 * pad)
-    r = d / 2 - 1
-    cx = cy = d / 2 + 0.5 + pad
-    disc = c.ellipse(cx, cy, r)
-    outer = grow(disc, 1.2 + (2.2 if ring else 0))
-    c.paint(np.roll(np.roll(outer, int(1.5 * SS), 0), int(SS), 1), BLACK, 0.45)
-    if ring:
-        c.paint(outer, hexc('f0f0f0'))
-    c.paint(grow(disc, 1.2), BLACK)
-    body = c.vgrad(G_LIGHT, G_DARK, cy - r, cy + r) if color == 'green' else c.vgrad(CYAN_L, CYAN_D, cy - r, cy + r)
-    c.paint(disc, body)
-    rim = np.clip(c.ellipse(cx, cy, r) - c.ellipse(cx, cy, r - max(2.0, r * 0.14)), 0, 1)
-    c.paint(rim, hexc('d8ff9c') if color == 'green' else CYAN_L, 0.55)
-    c.paint(c.ellipse(cx - r * 0.3, cy - r * 0.45, r * 0.35, r * 0.2), WHITE, 0.35)
-    if icon:
-        icon(c, cx, cy, r * 0.55)
-    return c
-
-
-def cross_button(d, icon):
-    """GD's plus-shaped main menu buttons: green arms, cyan inner corners."""
-    c = Px(d + 4, d + 4)
-    cx = cy = d / 2 + 1
-    a = d / 2 - 1          # half size
-    b = a * 0.42           # half arm width
-    arms = np.clip(c.rect(cx - b, cy - a, cx + b, cy + a) + c.rect(cx - a, cy - b, cx + a, cy + b), 0, 1)
-    corners = np.zeros_like(arms)
-    k = a * 0.52
-    for sx in (-1, 1):
-        for sy in (-1, 1):
-            x0, y0 = cx + sx * b, cy + sy * b
-            corners = np.maximum(corners, c.rect(min(x0, x0 + sx * (k - b) * 1.9), min(y0, y0 + sy * (k - b) * 1.9),
-                                                 max(x0, x0 + sx * (k - b) * 1.9), max(y0, y0 + sy * (k - b) * 1.9)))
-    shape = np.clip(arms + corners, 0, 1)
-    c.paint(np.roll(np.roll(grow(shape, 1.8), int(2 * SS), 0), int(1.5 * SS), 1), BLACK, 0.45)
-    c.paint(grow(shape, 1.8), BLACK)
-    c.paint(corners, c.vgrad(CYAN_L, CYAN_D, cy - a, cy + a))
-    c.paint(grow(corners, 0.9) * (1 - grow(corners, 0.0)), BLACK, 0.8)
-    c.paint(arms, c.vgrad(G_LIGHT, G_DARK, cy - a, cy + a))
-    # bevel: light top-left inner edge, darker lower right
-    inner = grow(arms, 0) - np.clip(np.roll(np.roll(arms, int(2 * SS), 0), int(2 * SS), 1), 0, 1)
-    c.paint(np.clip(inner, 0, 1), hexc('e6ffb4'), 0.55)
-    if icon:
-        icon(c, cx, cy, a * 0.5)
-    return c
-
-
-def arrow_back(w, h):
-    """GD's green triangle back arrow (points left)."""
-    c = Px(w + 4, h + 4)
-    pts = [(w + 1, 2), (2, h / 2 + 2), (w + 1, h + 2)]
-    m = c.poly(pts)
-    c.paint(np.roll(np.roll(grow(m, 1.6), int(1.5 * SS), 0), int(SS), 1), BLACK, 0.45)
-    c.paint(grow(m, 1.6), BLACK)
-    c.paint(m, c.vgrad(hexc('c8ff5a'), hexc('3ca000'), 2, h + 2))
-    inner = c.poly(inset_polygon(pts[::-1], 2.4)[::-1])
-    c.paint(np.clip(m - inner, 0, 1), hexc('e6ffaa'), 0.5)
-    return c
-
 
 def pause_icon(c, cx, cy, s):
     m = np.maximum(c.rect(cx - s * 0.62, cy - s * 0.7, cx - s * 0.16, cy + s * 0.7), c.rect(cx + s * 0.16, cy - s * 0.7, cx + s * 0.62, cy + s * 0.7))
@@ -270,44 +188,6 @@ def nav_arrow(w, h):
     return c
 
 
-def diff_face(kind):
-    """Difficulty faces: easy, normal, hard, harder, insane."""
-    cols = {1: (hexc('7cf2ff'), hexc('00a8ff')), 2: (hexc('8cff64'), hexc('20c800')), 3: (hexc('ffd264'), hexc('ff9600')),
-            4: (hexc('ff8c64'), hexc('e61e1e')), 5: (hexc('ff9cff'), hexc('dc28dc'))}[kind]
-    d = 26
-    c = Px(d + 3, d + 3)
-    cx = cy = d / 2 + 0.5
-    r = d / 2 - 1
-    head = c.ellipse(cx, cy, r)
-    c.paint(grow(head, 1.2), BLACK)
-    c.paint(head, c.vgrad(cols[0], cols[1], cy - r, cy + r))
-    c.paint(c.ellipse(cx - r * 0.35, cy - r * 0.5, r * 0.3, r * 0.16), WHITE, 0.4)
-    # eyes
-    for sx in (-1, 1):
-        ex = cx + sx * r * 0.38
-        if kind >= 4:
-            brow = c.poly([(ex - r * 0.3, cy - r * 0.45 - (0.1 if sx < 0 else -0.1) * r * 3), (ex + r * 0.3, cy - r * 0.45 + (0.1 if sx < 0 else -0.1) * r * 3),
-                           (ex + r * 0.3, cy - r * 0.25 + (0.1 if sx < 0 else -0.1) * r * 3), (ex - r * 0.3, cy - r * 0.25 - (0.1 if sx < 0 else -0.1) * r * 3)])
-            c.paint(brow, BLACK)
-        c.paint(c.ellipse(ex, cy - r * 0.1, r * 0.2, r * 0.24), WHITE)
-        c.paint(c.ellipse(ex + sx * r * 0.04, cy - r * 0.08, r * 0.11), BLACK)
-    # mouth
-    if kind <= 2:
-        smile = c.ellipse(cx, cy + r * 0.22, r * 0.45, r * 0.38) * c.rect(0, cy + r * 0.22, 999, 999)
-        c.paint(smile, BLACK)
-        if kind == 1:
-            c.paint(c.ellipse(cx, cy + r * 0.48, r * 0.22, r * 0.1), hexc('ff5a78'))
-    elif kind == 3:
-        c.paint(c.rect(cx - r * 0.4, cy + r * 0.38, cx + r * 0.4, cy + r * 0.52), BLACK)
-    else:
-        frown = c.ellipse(cx, cy + r * 0.62, r * 0.45, r * 0.32) * c.rect(0, 0, 999, cy + r * 0.62)
-        c.paint(frown, BLACK)
-        if kind == 5:
-            for tx in (-0.25, 0.0, 0.25):
-                c.paint(c.poly([(cx + (tx - 0.09) * r, cy + r * 0.34), (cx + (tx + 0.09) * r, cy + r * 0.34), (cx + tx * r, cy + r * 0.5)]), WHITE)
-    return c
-
-
 def star(d, color=GOLD):
     c = Px(d + 2, d + 2)
     cx = cy = d / 2 + 1
@@ -321,51 +201,6 @@ def star(d, color=GOLD):
     return c
 
 
-def coin_icon(d, filled=True):
-    c = Px(d + 2, d + 2)
-    cx = cy = d / 2 + 1
-    r = d / 2 - 0.5
-    disc = c.ellipse(cx, cy, r)
-    c.paint(grow(disc, 0.8), hexc('3a1e00') if filled else hexc('202020'))
-    if filled:
-        c.paint(disc, c.vgrad(hexc('ffe25a'), hexc('d27800'), cy - r, cy + r))
-    else:
-        c.paint(disc, c.vgrad(hexc('9a9a9a'), hexc('505050'), cy - r, cy + r))
-    pts = []
-    for i in range(10):
-        ang = -math.pi / 2 + i * math.pi / 5
-        rr = r * 0.62 if i % 2 == 0 else r * 0.26
-        pts.append((cx + rr * math.cos(ang), cy + rr * math.sin(ang) + 0.3))
-    c.paint(c.poly(pts), hexc('c86400') if filled else hexc('3a3a3a'), 0.9)
-    return c
-
-
-def side_art(n):
-    """Stepped corner decoration (lime and cyan blocks)."""
-    s = 10
-    c = Px(n * s + 3, n * s + 3, 0, n * s + 3)
-    for col in range(n):
-        for row in range(n - col):
-            x0, y0 = col * s + 1, (n - 1 - row) * s + 1
-            m = c.rect(x0, y0, x0 + s - 1, y0 + s - 1)
-            colr = CYAN if (col + row) % 2 == 0 else G_LIGHT
-            c.paint(grow(m, 0.9), BLACK)
-            c.paint(m, c.vgrad(colr, tuple(v * 0.7 for v in colr), y0, y0 + s))
-    return c
-
-
-def checkbox(on):
-    d = 18
-    c = Px(d + 2, d + 2)
-    m = c.rect(1.5, 1.5, d - 0.5, d - 0.5)
-    c.paint(grow(m, 1.0), BLACK)
-    c.paint(m, c.vgrad(hexc('c8c8c8'), hexc('787878'), 0, d))
-    if on:
-        tick = c.line([(4.5, 10), (8, 14), (15.5, 4.5)], 3.2)
-        outlined(c, tick, c.vgrad(hexc('a0ff50'), hexc('28b400'), 0, d), outline=1.0)
-    return c
-
-
 def ui_sprites():
     out = []
     add = lambda n, c, f='PAL4': out.append((n, c, f))
@@ -397,3 +232,10 @@ def ui_sprites():
     add('check_on', checkbox(True))
     add('check_off', checkbox(False))
     return out
+
+
+# Calcade, 19 octobre 2026 : NumDash's own buttons, badges and icons.
+from sprites_nd import (cross_button, round_button, arrow_back, diff_face, coin_icon, side_art, checkbox,  # noqa: E402,F401
+                        draw_face_icon, draw_diamond)
+from sprites_nd import ICON_L as GOLD_L, ICON as GOLD, ICON_D as GOLD_D  # noqa: E402,F401
+CYAN_L, CYAN, CYAN_D = hexc('fff8ee'), hexc('f2e8d8'), hexc('cdbfa8')
diff --git a/games/numdrive/.gitignore b/games/numdrive/.gitignore
index 5721931..ea1472e 100644
--- a/games/numdrive/.gitignore
+++ b/games/numdrive/.gitignore
@@ -1,6 +1 @@
 output/
-host/nd
-host/nd_*
-host/out*/
-host/test_inflate
-src/pack.c
diff --git a/LICENSES/OFL-1.1-RammettoOne.txt b/games/numdrive/LICENSES/OFL-1.1-Poppins.txt
similarity index 96%
rename from LICENSES/OFL-1.1-RammettoOne.txt
rename to games/numdrive/LICENSES/OFL-1.1-Poppins.txt
index 035fdde..76df3b5 100644
--- a/LICENSES/OFL-1.1-RammettoOne.txt
+++ b/games/numdrive/LICENSES/OFL-1.1-Poppins.txt
@@ -1,8 +1,8 @@
-Copyright 2011 The Rammetto Project Authors (https://github.com/googlefonts/RammettoFont), with Reserved Font Name Rammetto.
+Copyright 2020 The Poppins Project Authors (https://github.com/itfoundry/Poppins)
 
 This Font Software is licensed under the SIL Open Font License, Version 1.1.
 This license is copied below, and is also available with a FAQ at:
-https://openfontlicense.org
+http://scripts.sil.org/OFL
 
 
 -----------------------------------------------------------
diff --git a/games/numdrive/Makefile b/games/numdrive/Makefile
index aea66d4..0c4211c 100644
--- a/games/numdrive/Makefile
+++ b/games/numdrive/Makefile
@@ -1,4 +1,4 @@
-# NumDrive: a Drive Mad inspired game for the NumWorks calculator
+# NumDrive: a physics driving game for the NumWorks calculator (rewritten by Calcade, October 2026)
 #   make                      -> output/device/numdrive.nwa
 #   make PLATFORM=simulator   -> output/simulator/numdrive.nwb (for the Epsilon simulator)
 Q ?= @
@@ -6,8 +6,8 @@ PLATFORM ?= device
 NWLINK ?= npx --yes -- nwlink
 BUILD_DIR = output/$(PLATFORM)
 
-SOURCES = main.c world.c vm.c physics.c render.c inflate.c gfx.c ui.c save.c font.c platform_eadk.c
-OBJECTS = $(addprefix $(BUILD_DIR)/,$(SOURCES:.c=.o)) $(BUILD_DIR)/pack_data.o
+SOURCES = main.c phys.c level.c levels_data.c draw.c gfx.c ui.c save.c font.c platform_eadk.c
+OBJECTS = $(addprefix $(BUILD_DIR)/,$(SOURCES:.c=.o))
 
 CFLAGS = -std=gnu11 -Wall -Wno-unused-function -fsingle-precision-constant
 
@@ -42,10 +42,6 @@ $(BUILD_DIR)/%.o: src/%.c src/*.h ../common/np_text.h | $(BUILD_DIR)
 	@echo "CC      $<"
 	$(Q) $(CC) $(CFLAGS) -c $< -o $@
 
-$(BUILD_DIR)/pack_data.o: src/pack_data.S src/pack.bin | $(BUILD_DIR)
-	@echo "AS      $<"
-	$(Q) $(CC) $(CFLAGS) -Wa,-Isrc -c $< -o $@
-
 $(BUILD_DIR)/icon.o: src/icon.png | $(BUILD_DIR)
 	@echo "ICON    $<"
 	$(Q) $(NWLINK) png-icon-o $< $@
@@ -60,16 +56,14 @@ clean:
 # calculator, and as a relocatable object for the simulator build.
 .PHONY: module sim-module
 module: output/device/module.o
-output/device/module.o: $(addprefix output/device/,$(SOURCES:.c=.o)) output/device/pack_data.o
+output/device/module.o: $(addprefix output/device/,$(SOURCES:.c=.o))
 	@echo "LD      $@"
 	$(Q) arm-none-eabi-gcc $(CFLAGS) -Wl,--relocatable -nostartfiles -nostdlib -Wl,-e,main -flinker-output=nolto-rel $^ -o $@
 
 sim-module: output/sim-module.o
-output/sim-module.o: $(addprefix src/,$(SOURCES)) src/pack.bin src/*.h
+output/sim-module.o: $(addprefix src/,$(SOURCES)) src/*.h
 	@mkdir -p output/npsim
-	$(Q) cd src && xxd -i -n pack_bin pack.bin > ../output/npsim/pack_bin.c
 	$(Q) for f in $(SOURCES); do cc -std=gnu11 -O2 -fPIC -fsingle-precision-constant -Wno-unused-function \
-	  $(shell $(NWLINK) eadk-cflags-simulator) -DNO_STORAGE -Dpack_data=pack_bin -Dmain=np_numdrive_main \
+	  $(shell $(NWLINK) eadk-cflags-simulator) -DNO_STORAGE -Dmain=np_numdrive_main \
 	  -c src/$$f -o output/npsim/$${f%.c}.o || exit 1; done
-	$(Q) cc -fPIC -c output/npsim/pack_bin.c -o output/npsim/pack_bin.o
 	$(Q) ld -r output/npsim/*.o -exported_symbol _np_numdrive_main -o $@
diff --git a/games/numdrive/README.md b/games/numdrive/README.md
index 4505529..ac43e73 100644
--- a/games/numdrive/README.md
+++ b/games/numdrive/README.md
@@ -1,50 +1,70 @@
-> **NumDrive is part of [NumPlay](../../README.md)**, every NumWorks game in one app. Get it with all the others, or on its own as `NumDrive.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest).
+> **Calcade, October 2026.** This NumDrive is a new game: the earlier one played levels, models and
+> scripts taken from another game's files. Everything here (physics, levels, cars, pictures, font
+> choice, texts) is NumDrive's own. See "What changed" below.
 
-# NumDrive: Drive Mad for NumWorks
+> **NumDrive is part of [NumPlay](../../README.md)**, every NumWorks game in one app. Get it with all the others, or on its own as `NumDrive.nwa`.
 
-NumDrive is a Drive Mad style driving game for the NumWorks N0120 calculator.
+# NumDrive
 
-157 levels of cars, physics puzzles, bridges and water, in a 240 KB app.
+A side-view physics driving game for the NumWorks calculator: 157 levels of hills, jumps, plank
+bridges, seesaws, crumbling slabs, crates, lifts and turning bars, with seven cars. There is no
+steering, only the gas and the brake, and the driver's head must not touch anything.
 
-<p align="center">
-  <img src="docs/shot1.png" width="320"> <img src="docs/shot2.png" width="320">
-  <img src="docs/shot3.png" width="320"> <img src="docs/shot4.png" width="320">
-  <img src="docs/shot5.png" width="320"> <img src="docs/shot6.png" width="320">
-</p>
-
-## Install
-
-1. Download [`NumDrive.nwa`](https://github.com/Mason363/NumPlay/releases/latest/download/NumDrive.nwa) from the [latest NumPlay release](https://github.com/Mason363/NumPlay/releases/latest).
-2. Plug your calculator into a computer and open [my.numworks.com/apps](https://my.numworks.com/apps) in Chrome or Edge.
-3. Upload `NumDrive.nwa` and send it to the calculator.
-4. Open NumDrive from the home screen.
+<p align="center"><img src="docs/calcade.png" width="320"></p>
 
 ## Controls
 
 | Key | Action |
 | --- | --- |
-| Right arrow | Drive forward |
-| Left arrow | Brake and reverse |
+| Right arrow | Gas |
+| Left arrow | Brake, then reverse |
 | OK or Back | Pause |
 | Arrows, then OK | Pick a button or a level |
-| Back on a card | Level list |
-| Back on the level list | Quit |
+| Back on a panel | Level list |
 | Home | Quit |
 
-Your progress is saved on the calculator.
+Your progress is saved on the calculator (`numdrive.sav`).
 
 ## Build
 
-You need `arm-none-eabi-gcc` and Node.js.
+You need `arm-none-eabi-gcc` and `nwlink`.
 
 ```
-make
+make                      # output/device/numdrive.nwa
+make -C host2             # on the computer: check (every level winnable?) and shots (pictures)
 ```
 
-The app is written to `output/device/numdrive.nwa`.
+## How it is made
+
+| Part | Files |
+| --- | --- |
+| 2D physics: circles and convex polygons, friction, pin joints and springs, wheel motors | `src/phys.c` |
+| Levels: pieces (road, slopes, hills, gaps, bridges, seesaws, slabs, crates, walls, roofs, lifts, bars, balls) built at load time, the cars, the rules | `src/level.c`, `src/level.h` |
+| The 157 levels, from seeds | `src/levels_data.c`, made by `tools/conformite/numdrive_levels.py` (seeds in `tools/levels.txt`) |
+| Pictures: sky, hills, ground, bodies, cars, flag, water and lava | `src/draw.c` |
+| Menus and in-game overlay | `src/ui.c` |
+| Font (Poppins Bold) and icons | `src/font.c`, made by `tools/conformite/numdrive_font.py` |
+| App icon | `src/icon.png`, made by `tools/conformite/numdrive_icon.py` |
+
+`numdrive_levels.py` makes each level from its seed, then drives it with `host2/check` (gas only,
+then a search over gas, coast and brake): a level that cannot be finished gets another seed. The
+first eight levels are finished with the gas alone.
+
+## What changed (Calcade, October 2026)
+
+The NumDrive of NumPlay 1.10.0 replayed another game's levels: its level pack was extracted from
+that game's data file (levels and their names, voxel models of the cars and scenery, the colour
+palette, the level scripts compiled for a small virtual machine), its menus copied that game's
+look, its font was the one that game uses, and its description was that game's.
+
+All of that is gone: the extraction tools, the pack, the virtual machine and the 3D voxel renderer
+are removed. NumDrive is now a 2D game written from scratch: its own physics, its own levels,
+cars, scenery, menus and texts, the Poppins font and a new icon. The progress file is now
+`numdrive.sav` (the old levels no longer exist).
 
 ## Credits
 
-Made by Mason Chen. Inspired by Drive Mad.
+Made by Mason Chen. Rewritten for NumPlay by Calcade (October 2026).
 
-This is an unofficial fan game and is not affiliated with the makers of Drive Mad.
+Font: Poppins Bold, © 2020 The Poppins Project Authors, SIL Open Font License 1.1
+(`LICENSES/OFL-1.1-Poppins.txt`).
diff --git a/games/numdrive/docs/calcade.png b/games/numdrive/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..fb900ec10c8716e2d3f756f8f9e563bff63d1935
GIT binary patch
literal 8871
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

literal 0
HcmV?d00001

diff --git a/games/numdrive/docs/shot1.png b/games/numdrive/docs/shot1.png
index 2f62178a9777364b207027a65598da46d6e780af..8b5388a80d3b113417edd659e6f80d21b3fc686b 100644
GIT binary patch
literal 8027
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
KmaGyt4gEi-A!_dc

literal 6198
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
IFW`y)2d$Gf=Kufz

diff --git a/games/numdrive/docs/shot2.png b/games/numdrive/docs/shot2.png
index 9e5e80e08835928550dad658264d527e590bf138..c89076613e167dd87b75e3de8cb367cc29626b4f 100644
GIT binary patch
literal 7728
zcmZ8`byOR`^Jj1i?ruQ}6!&5Y5Zqd<SP2e6Tcl_SZUu@v#akdP?(XgqplESvi%Ti|
z_<rBry}SEo-@KVOyEF6Io!Om@*40)a#HYgt004w)s!A^b05pXs`VTJp)A*pnBLe_1
zUaKjA_21{5<eED$4Ci(|n(ThYshh$O{?d)D^QR}?SP|MsOjZ_YFom#R3VtqLMMea|
z_l*i5t_~z<%p47M6UUJ<Mf6W71}rPYIS;YXPZ$RYz6kmwgij+%Y*9+h*FY#<*A?Pu
z43;=n_*G!%=hxzYS9Dk5wEL(SHT|WvrKKgveExEt{D^)XJ%lCT%y5BJfh3HHf(9&!
zjRhr%2O~(staU9hH);M4Yxvf+pd(34YdS%6e?O0P=RCQPo2rDo1Z5S;62)bKP9IU)
z=CGed$6Xx%4c_wYYgQ@6dL}idP}&VE?iRv`QaY@i%2Uh0LX=Gj51jZJNNF6%@d~9e
zC1w!FF$?`)tl1RqP3R9sa3af-Tz;l7jNZcs6C5JgMmmZdZ}xL+KAW@!WXQkqdN^o(
z5yEnsL|<ODa;;<p$jHxjlz}fj0Lh;G5emVOBKiOA|9@TL<kG!dSoRAvmqwuNL!cxe
zNkxv)y|Wf;(fNCwigWurYjNif%iak>X}BRx!upo5mvdt2n~C5NiyHsBC{|oqH24Q7
z*XDcB<P<q&S&Yl_L70utVIXN(d`Dw9CY2xajhOF#v^tmiasgz|9h~A0V+3hAAMS?Y
z{XoLJTUyV*R2%VnR*SwNDXC(mQu=C~l|aIQiKnu-#-KoSCN;Fzk{|d1TYR^6X`Xi^
zge7f+@-nrOk!Rr3uJde7(&SFKnqE$i@=2mT>D$l}R{<4*UhjR_g*fLp($7txV+8i-
zAMaThrp*RqGmab2F8Oln)>--dLP^Yz?uaqiOajwFbO6DCo1SrXRncAAE)~px+uU}!
zcc!AeBC&yjvv6yd&*mtRgLAg;=65?<01$p+z|mf*OZG}fv+pAS0Gui?qNA4zCfa`Y
z83S<6@n<=b>~j}x0<M&gf8^IA{H4n89ynp($jm?{&O<Uzlkc7YRDi<zPArR~@RXDC
z@d;%c+Pv4>^9KZY+2MsHKmo_I&^1yj5_uK!Ob|^BN;7!359js&dcxt!$m!*{FQxfl
zGXTqOw<OO9rehzQ`7V=vqT_+m5M&e|T9=KaB}F+3G&Mk4T_agCt>LusixvQ5c?m6(
zGMB(1zDCtOv%js2@+soXFsZmI<;G>_lilHd=XBaEfF%G|N>IA8PPMgM`V?7&?-D}9
zt_h=-#DVa4UcqGgzYp(*S|~3E0K`}7YJP?`ha6o?CSq)2RJ1=iV%yJTf&M+WKN1$E
zoWvW1W_i-PmMo|-Blp9lHRw0FN=2`65tL*B*CScT7Me^NM(U7<Se#HdZiObMcp#OD
zKfEYlhNI@gilc3J|8?z!#rK1V^Xug$MWz@Szf#hT!a#}(69elZsh&gAzBkUF873GR
z=w2&hfeWi{_gPqH#hDpFq|Rm}k!pHlPUdJ}5}l}lC+q(2Gt5ahxf<z!)xE$H!7>b^
zCs<|HqV;*Puv>%}25w|bk~ExiOs^T<K`Z@g$B%K{K=`~GV3GaY!6hIj30WSBWxLD0
zGFo}n(dk!)(%b2ju1ij;wj!vzW8|lZvCwyTt;{SFkoV`)Xu+;P{wS{?)`?T1Q_eZl
z0_RGJ6^GwZ)iogHMu`FUw(5y#tu&kCaLHe(hMZ0x{w>^|STzHzb!ViLg)5|CoS;3^
zkm3CfHWit0_s*LW06>2?shzn$N&Odk0!_di@hebxAsLyvXl(nbVR3Hi9%|HrYdYB>
z1xuSPJ3e^$0HvWi1XD2;y^URiSqWV5>>Z#8xT|;>s0D_TOWVUd86qsCfUIR~7ZI{P
zqiZ8MDQ9Hfq_g&gS4R9Ig}l5PRwF8H=f)bhQF^NKfw<AdGrEzjH%`vE)s~*0g}Kme
zY5}$>7qp~^+L0{G0kH{j4;CQ=8aAVMfTQinaorI^QAbNx-&r+mHpU+zGMUR+={Tl6
zlF^r=)XNwFsHna^9J9K1!#)<n%hL@Y7&BqA?Sm~O^{1j{oZM9nA8UV0B8l{=l+F-Z
zAt2JhWLlcBQa+{Va7j#<ty&ycIin!<;PY&A@S1!o7HNj>5xQ7gS{I-FEN~Q-mTXIN
z3NqTrsvW*}9BfrbB{#2KycUeiKEP$L9Z%&DB9D|(XX6De>%EF=N<X6NEZCE(DsxrH
zpvstKz)Q;zIn$Tn&!9X=Tsa?AIw6WR*iXIguPjQ$^~rO<3vV;_4)kTzxiO@+j{K+e
z^E<w5`61a@t;U26Nb<6@yQ6olY93#9`O4(A@0+-5n^}PlC`Q`sbJZU-Jcz+T3-Y%k
z#&q@sryyrNhN*xSGPxU<@KpN^p}IwNGoo`-R+}==g{tDADt0G7jJP|j%i2`{HpXbD
zvQg~Ot}s`YfG*O9l9rLX8qkjax|o<C<zXH>@D9UFg$`>);wD~?$c7M2gjI}u@gdCv
zk74I5fd(WosGUd=AGBY!C{&QlDDh`ukmS5998}{aU2dEptZA1b?p;GIsh>-@iB2IV
zhN2r1+O_OZ=?Ot+#~l=86-<-Ch2W5*V@St63)bz9=@ML%dY?1N7>%xoj-l|gSt#PQ
zFHnaznxFxbGfpRhX_B6bjD6`Eqt(jpNbiIV>PCt`qTEUphwlt=d7Fp;dlo1I$>)_r
zeu^$YudEA1`kt}ony(2LRjVolczN~s;pK39d<~Cbo6}W=W0jG!sg|c`_bpY1-m$6H
z^ua3$pNj7m7pvpP_<t}$ENCK)>bNmIw_u1aS!-QKi}X`P197WS)KbitJdu3_R57oK
zpK3O3u!ptFwk{0wnVO6m9P3hffHdf1Jp!HG8hkte@t!fEWk)18g>lwo{i|2fBx_mV
zqk&s1VQTA7fY^e222~4<^1+TscTV@+!U5$ja`2=}aUvRx!~%9JdO}=<9&QpY`!nAW
zqkI8Jq@ZYS)qCK_5>|Z+qcy=#uS7Z*?&;v{8i696G1fz<(%T^#IJ*I&c3d{v0>Ua$
zYE?D-<?s;XftdXyeojCoj?NtrXA^WO0wP5uCwtrQ8~k^<I8E%RSQKWwxk;No2_Gr+
z<=eJ9v}llf+su|&5xahikkt!|qo&WKlKgI`Jf*~?w^5{!jr}#NU*N>|r=&C`$|PwX
z)RKjb+|NUbdxN|5+LRqhK_1dq0&hvWO;f1AN&T?Oj|}1M`_Dr_A^G35A$5?VMqD!a
z&64^pc0u)679sMdIR8Tb50k!{4sNYrc|ir<VpVfQZUfqt6Zea4pY)ewSyF63NJ=}y
zJ_yMbtn0tXyzj}YGyD$*VJ_A#pS$E}S~@z;tYa9BKKxthFCn%{AWp)~Q9W}04nYL!
zUfBYM9y?g0X1lMQ)>}|NR>6p+aMS<lala++b2Rc_d1F{$z1?5v?!9{T{XT&QX-ZxH
zdwFXmT)!~-raQEnf)Vl)BskBJa&4-cgB5Jj{C9lfB%Am#U=^r^GsSF{|JvB>vG+02
ztz3&_gi;pAU*{+`b!X@l+S42QEi9_Nsff+pidys2&i%{I;MKc-sRN<@hbl2HA_t>)
zskOC7^x6F{buP|sch`?%ABB}R^wi#SZm1YVIahvcv?6@&E3Fum1U4}Er^?PD2$=ir
zD$exd)x6tk!@c2R9dg}h-0e)>%vsjWX}x|ml*yazYYz3GdxrYJhEAIxpCCs1;YJA%
z(DT)`pyhlq+uUFNaj=UR08lO4oeOLZdL;VlOt6E$ZTZ_#_9bw@@a=?-xRkX^6-dxO
zz5KEei%Vnse9hH-QS|ym?s4$Ahv$}C-WT=Q5zujZ?SPKMY6+XrEJy!CKG_8_8S_j0
z+BNn@#P&^u6)nKYRuYvS>0-Cco168@;zD9H|10;~SMUn8K@rRXXPsa6prJlv`UCv2
z6$5<>(Q__)#S;h>_u)d}x+x~uL8(%ieJs&H=m>m<{?4|NQrQuVqlyOvY}JW6kG7YY
zZilvX^5!P07w&wp=kagl796aytNdt#xoc>`8^hOI%&kc|oL_R*HaJk)+t2(QJ@~-=
z!BcrDeW_fTJx|bh%x`0s@oO913;{$#Z_CamsYW21Q5B$@k(Kx8pqv!6vHTGeaQNUF
z^fKe`LDr?lX1lUE37yVSYJMdry*UW|ICgo*|1WhQ!rEt^QrSxiKihCr;OcA#0i&r%
zcN$sLGK%ClzyY{FB%6RKYzfuboI8m}bpW4DW1)!5kT*}6W9D>$zHB~|7a6$d%FM9s
zuQkOvFTms)<o9VGA5ebx{5FTW|2)0?Tw`zex(^2FXseVlH!v_rijY%gSL=<e4r-Ck
zY&vZ;L??|-Zn7bIk4I?Uc`uT68w$>NQ(pP6JWF>Y3Xi#ktVaVLj)6b|lcnyklJkGB
zHu(w7@f)S}jS{fp&yU+XT_T`zZywJZjJwdKnBLD&7Sh3cRW?xRZLz0>r!N^e&L`T(
zBYh->_j*8;0#W0O5zE*`)=?q4Nny)Nl47k7`m6pfb33l(>SgNlkINS*xrRPEO38Pr
zBo)=-cj)#_GPX(;U$qQV7V33^nk84)Os4pM#jJe)yGc>ncU7?PFK2d9WBIQ2;-J=_
z#Vk2|U~}sIH;cQIdxo9k$4@Ca8hS|3GbANvTB_FoYsyS{31J*$_ttuV_?OO6ZU9Uj
z6L666gcSY!o&8C(nbFG1Z#WDCC-~@1?BX^$AQ6C!WckoQT#x)X*|1T2Tf1lU!Gpv3
zrr;YhdxL%co)y<~YZpzk*4p&(PZ)|uayUYnDP7yOj_De@gP_Zg%W`veoR{Axn8IS9
z_0L>?QQN6=RM8v(nE@s>K!8N2a~MAJa8g`xeNT7WTlg)5nO&{%mEh~Z)!cOXS3H^C
zE~{$|uC;!!%=-#Kjs_yw<=3YA&scH2yB$@{Z@4w14ZV<?-z|)>0hb?n7?V{?+8;Vi
zV^P*)d_Wp_ug(T)5CUzr)*U*Ay$#%B0%U}c)_-#`Yjmyk^3QgFHdHcq<)#mes69$=
zAkgMZ9iF4c|G<qZ0J{IoKL%L0t2nQByq2zwk{tkcKc!1Pxe^iArAuyo!))Q%%(g}6
zFMn&Ep%zYD^u}IXw={UHdKyb}))Uv$*EGGIX=e-E%YN8%F~Ho%Y4Y-4@rDPljraH^
z0D|v|p2u*(K;kIz1!#QqE%t<Dn4YwAwWj7;U>mt$z$|R0ri1}<nJIYQpu@@s54qhx
za{4Y3aF79FOwQ8r*4?PvR5#(}Lk_{hz2%apg@zJ-r;WtQve5vk5{iT1FI!EJ=ExYU
zwY%eThT9*U`i#rDGC;Scx9dkA@c}I`ZsDWnu|LlLZ4fuQPeqAsxNqF}8C4PXPKgnM
zqU!{c1u8l#&=gLbyc&Km{tI}>@n1hitp5XxVOF8wyg|QLKRB$c{RloTWct#dG|8Ii
z{>S+%jvPc#f{eFq>>DRNls<wY!LT)ICX6?oKRe%4C46);)LU}paB_DQ)?l^<7e{7i
z>hwg&g)o+U6)tR%KF~;<h$31n(lv1zVOX<a-J7vcM#06k26Ga<E0>!4>pvg~SFize
zkJs);I{BX_E2z^(+xr1dMimS6VM`1yE9OHY!W$vv15hKbB0(}<=W1t9AW7K$_LO3d
z{59eg5ARmWq<>PeBc30-0$^jLWYmtlv3`!j;9_~cy!2opVn2l2OJqm>HfIziH1MsZ
z$ALX<iHh>>fvo8OewSM#wY(IKe0KDtxBHm@z?~Lg*utBaHBNwj0ezi``bE$nuf{71
zpwPL@3+^QTBa#$1KMW1lLm+iWj_uFJT5G4?*<JS3+(yA)QDf%^p|Qw6n|PRl2l7D<
z#;i2bqW?VkBc|o^eEuoynf>4Ipf1B_$3F^LfXK~O5~a5bm>V2<V<LC#)e*8h=@We7
zdCra7zl`JO2}T>hDVSCQ2gMxhg?sX5dc^+LkkSZo+vj<*o!52i^O`+ASJ>IMtzLr)
zd&)R1LMEDX9s3{iCf$`(L@N{<5tl?|L;fp`a_{23>#X9t(Sy_YGzMeg`9IvT51h`f
zR_QNseDGft-U`a_1wj7lX1|f{ynDyckHEAoyt3yk>zv|Y)ZS$fWpa~XS{1S<@{4Qz
z^WIYYwM=8f{d8A(ip1mJw-wFw?&33J2WNMk>p;>EHpegnOJ03p9Es*ro7U5PA^=LX
zc4FCu*=Z)l{e*fa^Ct#}%k7MIS5|C&PUARETD;ox*Llw-k&i1=n`yXP_{8X@cmnT8
zl2fVuKdSf)9Yc=l{DoDh0lPYQ^Z68L3evBEj2OX4u902q=0HqPz^e_Gk~=~EAitsu
zi>Ad6mZHe~E=Jj13?gPQsoWR$Y#brqz0vH$3PaP`&(_;m;2a+H{+YF8|3!KJv|_~S
zyu`m<(Sr=5q0)0xozww|^0N_LF$@5HvMx`|`ET_Kf(ME4g`=xOX750W^OBb8=Y$_r
zfDo{4x4o`Hp)qFs>imXMoitkVc;Y;U?Gdq&s|7dJDj(suY8UHu^Zgh<`pdn;9aF8x
zll!KJexpslhJk2jtO?r#WV8rTK}so2G!_7?`77AN1`sT0qiDq<lze~nw&q%3*5*9)
zoxo+u7P-WtBG9Sxy@^v0Q%l?Gnt_uK&RU7zEp-9)$OJ)8y}%!&Yjp3SGpJ(5Qy52l
zNyXY62k=uhvN3QB_@&y#KO}Ov;Lp_B>xb;fTE|WqBeOgL^9MJ%G&h-jW^;+SOUlPh
zesTQS+4_(EuxmQ|r|0k;&yi#pqOgYXhH1yC=DzLp&(-BP!7A|Nd4^U}uy{*3B~O@c
zSov`4ubpyP#(IJ4hWrRqt|_%@{f;x{Os`G@s?wcwY(R=OK7gfDRGka!EZf;KNb#XA
zkdr>6;B{xUtK-9H80L#pgV}%P{^m6F(Wykfqb`LH`<n~-a;;a>3U*o$>%DmGt;@`w
z?fuF7YKITE0{)kF`X_;9DOkntA#qH&V&r$%k3)a{9M}57&vysxO*;=K_;K?>zlwRU
zu7>U#Mt*eS{+PRo^8;@ASF-NS-?r+;@5;bFDgAE`mb_LOdJ2fZriZ~J3GooaNjdJ=
zqu<1$bjoumc5dSR_@s^jG@oL{K<lx*XxQuIk@*(C{p2%|o#vU=rHkRBu205hH`S1N
zGiO^bZL{2>gKWYtp4@5>N13F_dzi-GejT5flKuzalxHT&zaVty7Ik%T9B|X{Fxt}Y
z<>M~nzEUN-MNB}*FnPVe=z`V)?Y$~NW_Ht6iV%H667@Ft<Xw)pwi6i-T0hq77<J>C
z<PiPbn(^GJ8wKLKRU9x4oo23E{~U>sX{|Dr$@|)+dOYW2o9^bg@(0-4bm|Cnb8fon
zFqX3bl+Tdm-{#WOGyc5a8@Y!lOEdMplExxG>TFKyfnDVh0#P}#<SmhjFJg9-zke89
zr29RcfMhI}`1T-t$69V*7W-;7?N&+b3U?$Fn14I}JFebz<bKB2ktZ9iT;}314x|s?
zY1yjQjh5svkZ%-#9mSr#TwA7ba6rly9@I7mxh~&pZf1<`*RiV4u8KMLI-(O5*AgzW
z>OdggbOl{NlKe68eM7#Kc<S%YO?=v0AOEx01Tbb<1=h=^gZ5^oBGrsqa||P$m>NI2
z5f)a@`(Ene1P26sM-mg@=TN}jtj_g|zm3R0dL=FUW*PUNP2II;S<r{sJ1yH@<Vja@
z2*9+{``}CC1MSo{3!Q1B=+I@1N4&Y}%`nRk$hF@b|BpL{#HH|&V@SU}`=EQ*z)$4B
z&xgc=25?cJ2fpjWn8kABeA8_WA)u#fm_H~A>yxWW@~2T!XT{fi*?rfpgJV(F?!WG5
z4)0&?i{Iu7xHaTma;ZLx6kVQVqIQz67nLM{pe_>lk*O&r1+!e|-fjn;Q|!>d)i|7I
zP2)W)&y(44RvMjRj>XEP1#nZ}!I|j0KG&I;p5M3`-?aEAaDF;Ot%2;)J?31+Fto0p
zr|lBZdR6x+;G}(!YtnA&rP*1U@{DS%^6F>GWr_4$gKUL|OZF)Y8A*^jpA6tpO?a^6
za{E=z!8|<;qNOKNr0z{PUM6~P+)xb0vKgC|?ExdrOV}^SPIulxlmY^cYN8ifo1Xc@
zlk_R2|DB%(jag!qTP=Ymd|uco-3iPRyjME38B;g!agf7^#rjldvXoUr!<PEVn6Jr2
z;YMQ47OhNTaGC-YmH=Li``CvcG7*|Q9eua8vQ6uO&>Hj8_N#}#GnYH06o&<TBbKOI
z;1Tks1x>5iUJtT9G0_6CgNJfqYMds!IygTw*;|y-r93gP&8vT`ubyahe1qL#$fGlT
z`fhXFZC^>wa?;Sp-Cra7W%JQ$^USZqE|>MDO-h&<Y*OR$gIFa_cttT@q$&kshrj0t
z73W;bk*Yzrk6&xOy47`b_8-;sKA$7;p@F9k-Q8FRyEboc+F)PM0@yme1*VloTR20|
z%kXWhowu@5Z)>Fgr5|9)u+b0iPiGvOTtgAHtS_sbd)Y&45}&=mCU@();JD1TM#U2^
zp6G2HN58V8$IB9-Vy`ajxbaQ|VUreg4a4kCNkY9Yy6wv|0-=TE9R_UE-5)Z*FS|^P
z!|8n^<wDs>dy<?B3BUg=7IA3&@b(FyMit(3++uXC|7}F!$6-dHG#kwiOmO}YR*`&f
zcr3t3ZkBpfTt=9iz?D81SX{y~GA^V@O4HPH3e!?~lleMHUOdwUWFO!C1cV3Y=T`^L
zvDKf*P%)X6nVD+MHxWp$bmUSQE*wernpxhLMwpg+hCVQ2$lMU`zaSI|RH<EYD$a>j
zN7&eQRBCr(NNtebst@p6gR1a^GWpUee`dY7iab=C>`(k@1|4J%6;68AOmo@2Gw#8F
z)nN6_Peqf+SaR@(>nBu}v07Gd_>&oVoTlopcGHXBm~EM9312BTVQ2Ub(!guyNpK2G
zImlA6L~vI=Pj+2o8D}mk4Tz|?6XcI}0E6LH{rLIS&`QA$PAVJuBUzGwHHORt7BVa|
za$YvP%IF<@^TpDIg+gfAO?+{iE<5&CSb_u(i?!;FA)dXRxL2+e2buyre}<)+1xnU*
z6A#jQ_xI2UGg^BiE2=i`Ns0_GLkoW4<MV|vDArY?3RS__@D&4`I1S~C+8(sdPEFt~
z<}M9>X*p|gdt}%u%NclwOP0d2)^Iidq%>sj6#0(i0nH?fN8uYTV1&2+y;B1&3sql=
zh1M4Isz`t&j7Nk#Qcc-!=O@0hxwHz*4NS4D5^<(37Jp~!79oOp^S)j}xKL^ARy?xe
zv6<HCddlGG&I(X~z2t5)$9<`zN-LtS*^eI$Igv=sOb)NK{=|X|tiP?-Y;@Z<bl9mk
zl;KBLIBojUhP`U(GrSI5!;1s;jx<XF9D<4f!F<eh7V-M62WQQ<XZ{=jLFVXCaudtd
zsno@;*j`LgUs3K(Q_&9+oqEt-n~HXdTs6^uT{6;|Q4TeJpPf_?-V~T<L|e@3Jw(vK
zsroBKDPHfp#A(EuIHGK0M}eZms(QPfav2VhO6)zXl6>}utqM=MHQnzszjj5%3<B3N
zrxN>iU^|Cxtkj*42iQA>)ouU!d`%pTB@R>!D&USeKKwKEUL(p?0Fwfh+20?c%0R`1
zm3od~nAqhvDye6GF6NJ>fEoDUkPbtTgGs_>Ui9DnV(JR+8h1-MQArt>8LJ8GL<5|?
z3tzT~k`y(S@ccEh#?sVaNf45l)xPRb>@Nu=!R(fj(@P_+iPG32i7Zl(Pk9TRW|>d_
zR}vrz6$E1J4PoJ65yf!FthmK|Ra4GG%t}$cNVK=q>!TG0cl(>`#&E@48oB?r{ewNf
zUy)A>(5o=U1Dh0_TXi>5N()d~xrIYDbvH;TbSO5JHjwS<sXGk4Q~D(wPbpYbiJsBi
zAf+do*5jq7kW&t+hch~UT$T1^Lct(cwPssU^i!8kEoVCdP}qf=MDYx`>P3q3)jt}U
zJE%0=3EY*O#f4>xM*fHl>h?)A!uKVh`gdWb67kf|1s5jH%Va7T>{pez-f@v1&adH;
zv3E2xzCn@^rO>L87m>SaHC3(ni-e$?!nSgsW~X82ufofUivv9p_xq(mN{q1Xo_>M>
NYRcM5-yoJD{{!9sxIzE`

literal 7099
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
P?-{_-%+~aYF$w%1J!H*V

diff --git a/games/numdrive/docs/shot3.png b/games/numdrive/docs/shot3.png
index f9a8c5826dc964f8b099db04f326132eff765c0d..1ecbfa6f190f3977a8e169d04670e4537c443ff8 100644
GIT binary patch
literal 6464
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

literal 7469
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
HHjeN=JK6+#

diff --git a/games/numdrive/host2/.gitignore b/games/numdrive/host2/.gitignore
new file mode 100644
index 0000000..d66f035
--- /dev/null
+++ b/games/numdrive/host2/.gitignore
@@ -0,0 +1,3 @@
+check
+shots
+out/
diff --git a/games/numdrive/host2/Makefile b/games/numdrive/host2/Makefile
new file mode 100644
index 0000000..37fa41b
--- /dev/null
+++ b/games/numdrive/host2/Makefile
@@ -0,0 +1,10 @@
+# NumDrive on the computer: check (are the levels winnable?) and shots (pictures of a run)
+SRC = ../src/phys.c ../src/level.c ../src/levels_data.c
+CFLAGS = -O2 -g -Wall -Wno-unused-function -DHOST -I../src -I../../common
+all: check shots
+check: check.c $(SRC) ../src/*.h
+	gcc $(CFLAGS) -o $@ check.c $(SRC) -lm
+shots: plat_host.c $(SRC) ../src/main.c ../src/draw.c ../src/ui.c ../src/gfx.c ../src/font.c ../src/save.c ../src/*.h
+	gcc $(CFLAGS) -DNO_STORAGE -o $@ plat_host.c $(SRC) ../src/main.c ../src/draw.c ../src/ui.c ../src/gfx.c ../src/font.c ../src/save.c -lm
+clean:
+	rm -f check shots
diff --git a/games/numdrive/host2/check.c b/games/numdrive/host2/check.c
new file mode 100644
index 0000000..a18d7c6
--- /dev/null
+++ b/games/numdrive/host2/check.c
@@ -0,0 +1,124 @@
+/* NumDrive host checker: is every level winnable? Tries gas only, then a beam search over
+   gas / coast / brake held 12 frames at a time. Usage: check [first last] [-v level policy] */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "../src/nd.h"
+extern int level_overflow;
+
+#define CH 12
+#define BEAM 28
+#define MAXD 500
+typedef struct {
+  World w;
+  float score;
+  int alive;
+  unsigned char path[MAXD];
+} Node;
+static Node beam[BEAM], next[BEAM * 3];
+
+static int sim(int frames, uint8_t b) {
+  for (int f = 0; f < frames; f++) {
+    phys_step(b);
+    rules_update();
+    if (W.state != ST_RUN) return W.state;
+  }
+  return 0;
+}
+
+static float score(void) {
+  Body *C = &W.body[W.chassis];
+  float up = cosf(C->a);
+  return W.best_x * 0.3f + C->p.x + 0.7f * C->p.y + (up < 0.3f ? -6 : 0);
+}
+
+static int cmp(const void *a, const void *b) {
+  float d = ((const Node *)b)->score - ((const Node *)a)->score;
+  return d > 0 ? 1 : d < 0 ? -1 : 0;
+}
+
+/* returns depth of a win (chunks) or -1 */
+static int search(int lvl, int maxd, unsigned char *out) {
+  level_load(lvl);
+  int nb = 1;
+  beam[0].w = W;
+  beam[0].score = 0;
+  for (int d = 0; d < maxd; d++) {
+    int nn = 0;
+    for (int i = 0; i < nb; i++)
+      for (int a = 0; a < 3; a++) {
+        static const uint8_t act[3] = {2, 0, 1};
+        W = beam[i].w;
+        int r = sim(CH, act[a]);
+        if (r == ST_WON) {
+          memcpy(out, beam[i].path, d);
+          out[d] = act[a];
+          return d + 1;
+        }
+        if (r == ST_LOST) continue;
+        Node *n = &next[nn++];
+        n->w = W;
+        n->score = score() - a * 0.01f;
+        memcpy(n->path, beam[i].path, d);
+        n->path[d] = act[a];
+      }
+    if (!nn) return -1;
+    qsort(next, nn, sizeof(Node), cmp);
+    /* keep diversity: skip states too close to a kept one */
+    nb = 0;
+    for (int i = 0; i < nn && nb < BEAM; i++) {
+      int dup = 0;
+      for (int k = 0; k < nb && !dup; k++) {
+        Body *A = &next[i].w.body[next[i].w.chassis], *B = &beam[k].w.body[beam[k].w.chassis];
+        if (fabsf(A->p.x - B->p.x) < 0.05f && fabsf(A->v.x - B->v.x) < 0.1f && fabsf(A->a - B->a) < 0.02f) dup = 1;
+      }
+      if (!dup) beam[nb++] = next[i];
+    }
+  }
+  return -1;
+}
+
+int main(int argc, char **argv) {
+  if (argc > 1 && !strcmp(argv[1], "-v")) {
+    int lvl = atoi(argv[2]);
+    const char *pol = argv[3];
+    level_load(lvl);
+    for (int f = 0; f < 60 * 120; f++) {
+      uint8_t b = pol[(f / CH) % strlen(pol)] - '0';
+      if (sim(1, b)) break;
+      Body *C = &W.body[W.chassis];
+      if (f % 30 == 0) printf("f%d x=%.2f y=%.2f a=%.2f vx=%.2f\n", f, C->p.x, C->p.y, C->a, C->v.x);
+    }
+    printf("state %d best %.1f finish %.1f\n", W.state, W.best_x, L.finish_x);
+    return 0;
+  }
+  int a = argc > 2 ? atoi(argv[1]) : 0, b = argc > 2 ? atoi(argv[2]) : level_count - 1;
+  for (int lvl = a; lvl <= b; lvl++) {
+    level_load(lvl);
+    if (level_overflow) {
+      printf("%d OVERFLOW %d statics %d bodies\n", lvl, nstatic, W.nbody);
+      fflush(stdout);
+      continue;
+    }
+    int r = sim(60 * 120, 2);
+    float gbest = W.best_x;
+    if (r == ST_WON) {
+      printf("%d GAS %d\n", lvl, W.frame);
+      fflush(stdout);
+      continue;
+    }
+    static unsigned char path[MAXD];
+    int d = search(lvl, MAXD, path);
+    if (d > 0) {
+      int changes = 0;
+      for (int i = 0; i < d; i++) changes += path[i] != 2;
+      printf("%d WIN %d %d ", lvl, d * CH, changes);
+      for (int i = 0; i < d; i++) putchar('0' + path[i]);
+      printf("\n");
+    } else {
+      level_load(lvl);
+      printf("%d FAIL gas_best %.1f finish %.1f\n", lvl, gbest, L.finish_x);
+    }
+    fflush(stdout);
+  }
+}
diff --git a/games/numdrive/host2/plat_host.c b/games/numdrive/host2/plat_host.c
new file mode 100644
index 0000000..ba9d7c3
--- /dev/null
+++ b/games/numdrive/host2/plat_host.c
@@ -0,0 +1,71 @@
+/* host platform for screenshots: ND_FRAMES, ND_SHOTS="10,50", ND_KEYS="RIGHT:0:300,OK:310:311", ND_OUT */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "../src/platform.h"
+static uint16_t fb[SCREEN_W * SCREEN_H];
+static int frame, maxf = 600, inited;
+static char shots[2048], keys[65536];
+static const char *out = ".";
+static void init(void) {
+  if (inited) return;
+  inited = 1;
+  if (getenv("ND_FRAMES")) maxf = atoi(getenv("ND_FRAMES"));
+  if (getenv("ND_SHOTS")) snprintf(shots, sizeof shots, ",%s,", getenv("ND_SHOTS"));
+  if (getenv("ND_KEYS")) snprintf(keys, sizeof keys, "%s", getenv("ND_KEYS"));
+  if (getenv("ND_OUT")) out = getenv("ND_OUT");
+}
+void plat_push(int x, int y, int w, int h, const uint16_t *px) {
+  for (int j = 0; j < h; j++)
+    for (int i = 0; i < w; i++) fb[(y + j) * SCREEN_W + x + i] = px[j * w + i];
+}
+void plat_fill(int x, int y, int w, int h, uint16_t c) {
+  for (int j = 0; j < h; j++)
+    for (int i = 0; i < w; i++) fb[(y + j) * SCREEN_W + x + i] = c;
+}
+void plat_pull(int x, int y, int w, int h, uint16_t *px) {
+  for (int j = 0; j < h; j++)
+    for (int i = 0; i < w; i++) px[j * w + i] = fb[(y + j) * SCREEN_W + x + i];
+}
+static const struct { const char *n; int k; } names[] = {{"LEFT", K_LEFT}, {"RIGHT", K_RIGHT}, {"UP", K_UP},
+  {"DOWN", K_DOWN}, {"OK", K_OK}, {"BACK", K_BACK}, {"HOME", K_HOME}};
+uint64_t plat_keys(void) {
+  init();
+  uint64_t k = 0;
+  static char tmp[65536];
+  strcpy(tmp, keys);
+  for (char *t = strtok(tmp, ","); t; t = strtok(0, ",")) {
+    char n[16];
+    int a, b;
+    if (sscanf(t, "%15[A-Z]:%d:%d", n, &a, &b) == 3 && frame >= a && frame < b)
+      for (unsigned i = 0; i < sizeof names / sizeof *names; i++)
+        if (!strcmp(n, names[i].n)) k |= KEY(names[i].k);
+  }
+  if (frame >= maxf) k |= KEY(K_HOME);
+  return k;
+}
+uint32_t plat_millis(void) { return (uint32_t)(frame * 16); }
+void plat_vblank(void) {}
+void plat_sleep(int ms) { (void)ms; }
+uint32_t plat_random(void) { return (uint32_t)rand(); }
+void plat_begin(void) { init(); }
+int plat_end(int c) { return c; }
+bool plat_slow(void) { return false; }
+void plat_frame_done(void) {
+  init();
+  char tag[16];
+  snprintf(tag, sizeof tag, ",%d,", frame);
+  if (strstr(shots, tag)) {
+    char path[512];
+    snprintf(path, sizeof path, "%s/f%04d.ppm", out, frame);
+    FILE *f = fopen(path, "wb");
+    fprintf(f, "P6 %d %d 255\n", SCREEN_W, SCREEN_H);
+    for (int i = 0; i < SCREEN_W * SCREEN_H; i++) {
+      uint16_t c = fb[i];
+      unsigned char p[3] = {(unsigned char)((c >> 11) << 3 | (c >> 13)), (unsigned char)(((c >> 5) & 63) << 2 | ((c >> 9) & 3)), (unsigned char)((c & 31) << 3 | ((c >> 2) & 7))};
+      fwrite(p, 1, 3, f);
+    }
+    fclose(f);
+  }
+  frame++;
+}
diff --git a/games/numdrive/lang/fr.txt b/games/numdrive/lang/fr.txt
index 0706b87..748a555 100644
--- a/games/numdrive/lang/fr.txt
+++ b/games/numdrive/lang/fr.txt
@@ -1,21 +1,21 @@
 # NumDrive in French: the English text as in the source, a tab, the translation (see tools/lang.py).
-# The levels' names (in the level pack) stay as they are.
+# The levels' names (src/levels_data.c) stay as they are.
 Level 	Niveau 
-Drive silly cars at high	Des voitures folles à
-speeds in dangerous	toute allure en terrain
-terrain. Oh, and you	dangereux. Ah, et pas de
-can't steer. Good luck!	volant. Bonne chance !
-Inspired by Drive Mad	Inspiré de Drive Mad
-Made by Mason Chen	Créé par Mason Chen
-Good game	Bien joué !
-Terminated	Éliminé
-Retry	Réessayer
+Finished!	Arrivé !
+Crashed!	Accident !
+Paused	Pause
+Right arrow: gas. Left: brake.	Droite : gaz. Gauche : frein.
+Keep the driver's head safe!	Protège la tête du pilote !
+Nice driving!	Belle conduite !
+Try another line.	Essaie autrement.
 Restart	Rejouer
 Resume	Reprendre
-Next Level	Niveau suivant
 Levels	Niveaux
+Next	Suivant
+Retry	Réessayer
 Quit game	Quitter
 Quit game?	Quitter ?
 You can come back anytime.	Tu peux revenir quand tu veux.
-Yes	Oui
 No	Non
+Yes	Oui
+NumDrive - Made by Mason Chen	NumDrive - créé par Mason Chen
diff --git a/games/numdrive/lang/zh.txt b/games/numdrive/lang/zh.txt
index b66f450..df48015 100644
--- a/games/numdrive/lang/zh.txt
+++ b/games/numdrive/lang/zh.txt
@@ -1,21 +1,21 @@
 # NumDrive in Chinese: the English text as in the source, a tab, the translation (see tools/lang.py).
-# The levels' names (in the level pack) stay as they are.
+# The levels' names (src/levels_data.c) stay as they are.
 Level 	关卡 
-Drive silly cars at high	驾驶滑稽的汽车
-speeds in dangerous	在危险地形上飞驰。
-terrain. Oh, and you	哦对了，你没法转向。
-can't steer. Good luck!	祝你好运！
-Inspired by Drive Mad	灵感来自 Drive Mad
-Made by Mason Chen	由 Mason Chen 制作
-Good game	干得漂亮
-Terminated	失败了
-Retry	重试
+Finished!	到达终点！
+Crashed!	撞车了！
+Paused	暂停
+Right arrow: gas. Left: brake.	右键加速，左键刹车。
+Keep the driver's head safe!	保护好司机的头！
+Nice driving!	开得漂亮！
+Try another line.	换个方法试试。
 Restart	重来
 Resume	继续
-Next Level	下一关
 Levels	关卡
+Next	下一关
+Retry	重试
 Quit game	退出游戏
 Quit game?	退出游戏？
 You can come back anytime.	随时欢迎回来。
-Yes	是
 No	否
+Yes	是
+NumDrive - Made by Mason Chen	NumDrive - 由 Mason Chen 制作
diff --git a/games/numdrive/src/draw.c b/games/numdrive/src/draw.c
new file mode 100644
index 0000000..6b6c15f
--- /dev/null
+++ b/games/numdrive/src/draw.c
@@ -0,0 +1,578 @@
+/* NumDrive's renderer: the world seen from the side, drawn strip by strip (16 rows at a time)
+ * into a buffer on main's stack. Sky, two layers of hills, clouds, the ground (by columns), stone
+ * blocks, the bodies (planks, crates, slabs, balls, lifts, bars), the car and the water on top. */
+#include <string.h>
+#include "draw.h"
+#include "level.h"
+#include "platform.h"
+#include "gfx.h"
+
+Cam cam;
+static uint16_t *buf;
+void draw_set_buffer(uint16_t *b) { buf = b; }
+uint16_t *draw_buffer(void) { return buf; }
+
+/* -------------------------------------------------------------- themes */
+#define C(r, g, b) RGB(r, g, b)
+const Theme themes[THEME_COUNT] = {
+  /* meadow */
+  {C(0x4f, 0xa8, 0xf0), C(0xc8, 0xec, 0xff), C(0x9c, 0xc9, 0xd9), C(0x6f, 0xb3, 0x8a), C(0x7e, 0xd9, 0x57),
+   C(0x4f, 0xa8, 0x3c), C(0xb0, 0x78, 0x4c), C(0x9a, 0x66, 0x40), C(0x5a, 0x3a, 0x2a), C(0xa8, 0xa4, 0x9c),
+   C(0x6c, 0x68, 0x64), C(0x2a, 0x8c, 0xe8), C(0xff, 0xf2, 0xa0), 0, 0},
+  /* desert */
+  {C(0xf0, 0x9a, 0x5a), C(0xff, 0xe2, 0xb0), C(0xe8, 0xb8, 0x8a), C(0xd8, 0x96, 0x60), C(0xf2, 0xc8, 0x6a),
+   C(0xd8, 0xa4, 0x4c), C(0xd4, 0x8c, 0x52), C(0xc0, 0x78, 0x44), C(0x7a, 0x44, 0x2a), C(0xc8, 0x9a, 0x70),
+   C(0x8a, 0x60, 0x40), C(0x30, 0xb0, 0xc8), C(0xff, 0xfa, 0xe0), 0, 0},
+  /* snow */
+  {C(0x6a, 0x8c, 0xd8), C(0xd8, 0xe8, 0xff), C(0xb8, 0xc8, 0xe8), C(0x90, 0xa8, 0xd0), C(0xf4, 0xf8, 0xff),
+   C(0xc8, 0xd8, 0xf0), C(0x78, 0x80, 0x98), C(0x68, 0x70, 0x88), C(0x38, 0x3c, 0x50), C(0x9c, 0xa8, 0xc0),
+   C(0x5c, 0x64, 0x7c), C(0x4a, 0x9c, 0xe0), C(0xff, 0xff, 0xff), 0, 0},
+  /* dusk */
+  {C(0x5a, 0x3c, 0x9a), C(0xff, 0x9a, 0x7a), C(0x9a, 0x5c, 0x8c), C(0x5c, 0x3c, 0x6c), C(0x8c, 0xc8, 0x5a),
+   C(0x5c, 0x94, 0x44), C(0x8a, 0x5a, 0x4c), C(0x74, 0x4a, 0x40), C(0x3a, 0x24, 0x2a), C(0x9c, 0x8a, 0x9c),
+   C(0x5c, 0x4c, 0x60), C(0x3c, 0x7c, 0xd8), C(0xff, 0xd0, 0x80), 0, 0},
+  /* night */
+  {C(0x0c, 0x14, 0x3a), C(0x2a, 0x40, 0x7a), C(0x24, 0x34, 0x64), C(0x18, 0x26, 0x4a), C(0x5a, 0xc8, 0x9a),
+   C(0x34, 0x8c, 0x70), C(0x4a, 0x50, 0x74), C(0x3c, 0x42, 0x64), C(0x1a, 0x1c, 0x34), C(0x6c, 0x74, 0x9c),
+   C(0x3c, 0x42, 0x64), C(0x2a, 0x6c, 0xd8), C(0xf0, 0xf4, 0xff), 1, 0},
+  /* volcano */
+  {C(0x3a, 0x10, 0x18), C(0xd8, 0x5a, 0x30), C(0x6a, 0x24, 0x24), C(0x40, 0x18, 0x1c), C(0x8a, 0x80, 0x78),
+   C(0x5c, 0x54, 0x50), C(0x40, 0x38, 0x38), C(0x34, 0x2c, 0x2e), C(0x18, 0x10, 0x12), C(0x6c, 0x5c, 0x58),
+   C(0x34, 0x2a, 0x28), C(0xff, 0x7a, 0x1a), C(0xff, 0xc0, 0x60), 0, 1},
+};
+static const Theme *th;
+static uint16_t sky_row[SCREEN_H];
+uint16_t theme_sky(void) { return th ? sky_row[120] : 0; }
+
+static inline uint16_t lerp565(uint16_t a, uint16_t b, int t32) { return mix565(a, b, t32); }
+
+/* --------------------------------------------------------------- camera */
+static inline float sx_of(float x) { return (x - cam.x) * cam.s + SCREEN_W * 0.5f; }
+static inline float sy_of(float y) { return SCREEN_H * 0.5f - (y - cam.y) * cam.s; }
+static inline float wx_of(float sx) { return cam.x + (sx + 0.5f - SCREEN_W * 0.5f) / cam.s; }
+static inline float wy_of(float sy) { return cam.y - (sy + 0.5f - SCREEN_H * 0.5f) / cam.s; }
+
+void draw_level_start(void) {
+  th = &themes[L.theme % THEME_COUNT];
+  for (int y = 0; y < SCREEN_H; y++) sky_row[y] = lerp565(th->sky_top, th->sky_bottom, y * 32 / SCREEN_H);
+  Body *C = &W.body[W.chassis];
+  cam.s = 22;
+  cam.x = C->p.x + 3;
+  cam.y = C->p.y + 1.5f;
+  cam.vx = 0;
+}
+
+void cam_follow(void) {
+  Body *C = &W.body[W.chassis];
+  cam.vx += (C->v.x - cam.vx) * 0.04f;
+  float la = cam.vx * 0.32f;
+  if (la > 4.5f) la = 4.5f;
+  if (la < -3) la = -3;
+  float tx = C->p.x + 1.5f + la, ty = C->p.y + 1.4f;
+  cam.x += (tx - cam.x) * 0.12f;
+  cam.y += (ty - cam.y) * 0.08f;
+  /* zoom out a little at speed */
+  float sp = fabsf(cam.vx), ts = 22 - (sp > 6 ? (sp - 6) * 0.45f : 0);
+  if (ts < 17) ts = 17;
+  cam.s += (ts - cam.s) * 0.03f;
+}
+
+/* ----------------------------------------------------------- per frame */
+static float gtop[SCREEN_W];   /* the ground's top, in world y (or -1e9: none) */
+static int16_t far_y[SCREEN_W], near_y[SCREEN_W];
+static float wob[SCREEN_W];
+static int vis_first, vis_last;
+static float floor_sy;
+
+static inline uint32_t hash2(int x, int y) {
+  uint32_t h = (uint32_t)x * 374761393u + (uint32_t)y * 668265263u;
+  h = (h ^ (h >> 13)) * 1274126177u;
+  return h ^ (h >> 16);
+}
+
+/* bodies: screen polygons, outlines */
+typedef struct {
+  v2 p[MAX_VERT + 1];
+  v2 o[MAX_VERT + 1];
+  int n;
+  float miny, maxy;
+} SPoly;
+
+#define MAX_DRAW 64
+static struct {
+  int kind; /* body kind, or 100 + static kind, 200 cabin, 201 head, 202 flag */
+  int idx;
+  SPoly sp;
+  float cx, cy, r; /* circles: screen centre, radius */
+} items[MAX_DRAW];
+static int nitems;
+
+static void to_screen(SPoly *s, const v2 *w, int n) {
+  s->n = n;
+  s->miny = 1e9f, s->maxy = -1e9f;
+  for (int i = 0; i < n; i++) {
+    s->p[i] = V(sx_of(w[i].x), sy_of(w[i].y));
+    if (s->p[i].y < s->miny) s->miny = s->p[i].y;
+    if (s->p[i].y > s->maxy) s->maxy = s->p[i].y;
+  }
+  /* outline: each corner pushed out by a pixel and a bit (screen y is down: the order flips) */
+  for (int i = 0; i < n; i++) {
+    v2 a = s->p[(i + n - 1) % n], b = s->p[i], c = s->p[(i + 1) % n];
+    v2 e1 = vsub(b, a), e2 = vsub(c, b);
+    v2 n1 = V(-e1.y, e1.x), n2 = V(-e2.y, e2.x);
+    float l1 = vlen(n1), l2 = vlen(n2);
+    if (l1 > 0) n1 = vmul(n1, 1 / l1);
+    if (l2 > 0) n2 = vmul(n2, 1 / l2);
+    v2 m = vadd(n1, n2);
+    float d = 1 + vdot(n1, n2);
+    if (d < 0.3f) d = 0.3f;
+    s->o[i] = vadd(b, vmul(m, 1.3f / d));
+  }
+  s->miny -= 2, s->maxy += 2;
+}
+
+static void add_poly_item(int kind, int idx, const v2 *w, int n) {
+  if (nitems >= MAX_DRAW) return;
+  to_screen(&items[nitems].sp, w, n);
+  items[nitems].kind = kind;
+  items[nitems].idx = idx;
+  nitems++;
+}
+
+static void add_circle_item(int kind, int idx, v2 c, float r) {
+  if (nitems >= MAX_DRAW) return;
+  items[nitems].kind = kind;
+  items[nitems].idx = idx;
+  items[nitems].cx = sx_of(c.x);
+  items[nitems].cy = sy_of(c.y);
+  items[nitems].r = r * cam.s;
+  items[nitems].sp.miny = items[nitems].cy - items[nitems].r - 2;
+  items[nitems].sp.maxy = items[nitems].cy + items[nitems].r + 2;
+  nitems++;
+}
+
+/* the car's cabin (drawn, it does not collide) around the driver */
+static void cabin_poly(v2 *out) {
+  Body *C = &W.body[W.chassis];
+  float hx = W.head.x, hy = W.head.y, r = W.head_r;
+  float top = hy + r + 0.12f, bottom = 0.05f;
+  v2 l[4] = {{hx - r - 0.32f, bottom}, {hx + r + 0.42f, bottom}, {hx + r + 0.12f, top}, {hx - r - 0.12f, top}};
+  for (int i = 0; i < 4; i++) out[i] = vadd(C->p, vrot(l[i], C->c, C->s));
+}
+
+void draw_prepare(void) {
+  float x0 = wx_of(-2), x1 = wx_of(SCREEN_W + 2);
+  /* ground columns */
+  int k = static_first(x0);
+  vis_first = k;
+  for (int col = 0; col < SCREEN_W; col++) {
+    float wx = wx_of((float)col);
+    gtop[col] = -1e9f;
+    int kk = k;
+    while (kk < nstatic && statics[kk].minx <= wx) {
+      Static *s = &statics[kk];
+      if (s->kind == SK_GROUND && s->maxx > wx) {
+        float t = (wx - s->v[3].x) / (s->v[2].x - s->v[3].x);
+        float y = s->v[3].y + (s->v[2].y - s->v[3].y) * t;
+        if (y > gtop[col]) gtop[col] = y;
+      }
+      kk++;
+    }
+    wob[col] = 0.22f * sinf(wx * 0.9f) + 0.1f * sinf(wx * 2.3f);
+  }
+  vis_last = static_first(x1 + static_maxw);
+  while (vis_last < nstatic && statics[vis_last].minx <= x1) vis_last++;
+  floor_sy = sy_of(L.floor_y);
+  /* hills */
+  for (int col = 0; col < SCREEN_W; col++) {
+    float u = cam.x * 0.18f + (col - 160) / cam.s;
+    float h = 3.2f + 1.5f * sinf(u * 0.16f) + 0.8f * sinf(u * 0.43f + 2.0f);
+    far_y[col] = (int16_t)(150 + cam.y * cam.s * 0.08f - h * 14);
+    u = cam.x * 0.42f + (col - 160) / cam.s;
+    h = 2.0f + 1.2f * sinf(u * 0.21f + 1) + 0.6f * sinf(u * 0.57f);
+    near_y[col] = (int16_t)(185 + cam.y * cam.s * 0.18f - h * 16);
+  }
+  /* things to draw, back to front */
+  nitems = 0;
+  for (int i = vis_first; i < vis_last; i++) {
+    Static *s = &statics[i];
+    if (s->kind == SK_DECO && s->maxx >= x0 && s->minx <= x1) add_poly_item(100 + SK_DECO, i, s->v, s->n);
+  }
+  for (int i = vis_first; i < vis_last; i++) {
+    Static *s = &statics[i];
+    if (s->kind == SK_BLOCK && s->maxx >= x0 && s->minx <= x1) add_poly_item(100 + SK_BLOCK, i, s->v, s->n);
+  }
+  for (int i = 0; i < W.nbody; i++) {
+    Body *b = &W.body[i];
+    if (b->group == 1 || b->p.x + b->r < x0 || b->p.x - b->r > x1) continue;
+    if (b->shape == SH_CIRCLE) add_circle_item(b->kind, i, b->p, b->r);
+    else {
+      v2 w[MAX_VERT];
+      float jx = 0, jy = 0;
+      if (b->kind == BK_FALL && b->frozen && b->timer > 0) /* shaking */
+        jx = ((b->timer * 7) % 5 - 2) * 0.012f, jy = ((b->timer * 3) % 3 - 1) * 0.01f;
+      for (int k2 = 0; k2 < b->nv; k2++) w[k2] = V(b->wv[k2].x + jx, b->wv[k2].y + jy);
+      add_poly_item(b->kind, i, w, b->nv);
+    }
+  }
+  /* the flag */
+  add_circle_item(202, 0, V(L.finish_x, 0), 0);
+  /* the car: cabin, driver, chassis, wheels */
+  if (W.chassis >= 0) {
+    v2 cab[4];
+    cabin_poly(cab);
+    add_poly_item(200, W.chassis, cab, 4);
+    Body *C = &W.body[W.chassis];
+    add_circle_item(201, W.chassis, vadd(C->p, vrot(W.head, C->c, C->s)), W.head_r);
+    add_poly_item(BK_CHASSIS, W.chassis, C->wv, C->nv);
+    for (int k2 = 0; k2 < W.nwheel; k2++) {
+      Body *w = &W.body[W.wheel[k2]];
+      add_circle_item(BK_WHEEL, W.wheel[k2], w->p, w->r);
+    }
+  }
+  /* the flag item's place: find the ground under it */
+  for (int i = 0; i < nitems; i++)
+    if (items[i].kind == 202) {
+      items[i].cx = sx_of(L.finish_x);
+      float gy = 0;
+      for (int k2 = 0; k2 < nstatic; k2++)
+        if (statics[k2].kind == SK_GROUND && statics[k2].minx <= L.finish_x && statics[k2].maxx > L.finish_x)
+          gy = statics[k2].v[2].y;
+      items[i].cy = sy_of(gy);
+      items[i].r = cam.s;
+      items[i].sp.miny = items[i].cy - 4.2f * cam.s;
+      items[i].sp.maxy = items[i].cy + 2;
+    }
+}
+
+/* ---------------------------------------------------------------- strip */
+static int sy0, sy1;
+static inline uint16_t *px(int x, int y) { return buf + (y - sy0) * SCREEN_W + x; }
+
+static void background(void) {
+  int night = th->stars;
+  for (int y = sy0; y < sy1; y++) {
+    uint16_t sky = sky_row[y];
+    uint16_t *row = px(0, y);
+    for (int x = 0; x < SCREEN_W; x++) {
+      uint16_t c = sky;
+      if (y >= near_y[x]) c = lerp565(th->near, th->deep, (y - near_y[x]) > 40 ? 8 : (y - near_y[x]) / 5);
+      else if (y >= far_y[x]) c = lerp565(th->far, th->near, (y - far_y[x]) > 60 ? 10 : (y - far_y[x]) / 6);
+      else if (night && (hash2(x + (int)(cam.x * 2), y) & 1023) < 3) c = 0xFFFF;
+      row[x] = c;
+    }
+  }
+  /* sun or moon */
+  const int scx = 248, scy = 46, sr = 15;
+  for (int y = sy0; y < sy1; y++) {
+    int dy = y - scy;
+    if (dy < -sr - 8 || dy > sr + 8) continue;
+    for (int x = scx - sr - 8; x <= scx + sr + 8; x++) {
+      int dx = x - scx, d2 = dx * dx + dy * dy;
+      uint16_t *p = px(x, y);
+      if (y >= far_y[x]) continue;
+      if (d2 <= sr * sr) *p = th->sun;
+      else if (d2 <= (sr + 8) * (sr + 8)) *p = mix565(*p, th->sun, 8 - (int)(sqrtf((float)d2) - sr));
+    }
+  }
+  /* clouds: three puffs each, sliding slowly */
+  for (int i = 0; i < 6; i++) {
+    float u = i * 97.0f - cam.x * cam.s * 0.08f;
+    float m = SCREEN_W + 140;
+    u = u - m * floorf(u / m) - 70;
+    int cy = 28 + (int)(hash2(i, 7) % 50), w = 16 + (int)(hash2(i, 3) % 14);
+    if (cy + w < sy0 || cy - w > sy1) continue;
+    for (int y = sy0; y < sy1; y++)
+      for (int x = (int)u - 2 * w; x < (int)u + 2 * w; x++) {
+        if (x < 0 || x >= SCREEN_W || y >= far_y[x]) continue;
+        float dx = x - u, dy = (y - cy) * 1.8f;
+        float d1 = dx * dx + dy * dy, d2 = (dx + w * 0.8f) * (dx + w * 0.8f) + (dy - 8) * (dy - 8),
+              d3 = (dx - w * 0.9f) * (dx - w * 0.9f) + (dy - 10) * (dy - 10);
+        if (d1 < w * w || d2 < w * w * 0.5f || d3 < w * w * 0.45f) {
+          uint16_t *p = px(x, y);
+          *p = mix565(*p, th->stars ? RGB(0x50, 0x60, 0x90) : 0xFFFF, dy > 6 ? 18 : 24);
+        }
+      }
+  }
+}
+
+static void ground(void) {
+  for (int y = sy0; y < sy1; y++) {
+    float wy = wy_of((float)y);
+    uint16_t *row = px(0, y);
+    for (int x = 0; x < SCREEN_W; x++) {
+      float top = gtop[x];
+      if (top < -1e8f) continue;
+      float dm = top - wy, dp = dm * cam.s;
+      if (dp < -1) continue;
+      uint16_t c;
+      if (dp < 3.2f + (hash2(x + (int)(cam.x * cam.s), 1) & 1)) c = th->grass;
+      else if (dp < 5.5f) c = th->grass_dark;
+      else {
+        int band = (int)floorf(dm * 1.3f + wob[x]) & 1;
+        c = band ? th->dirt : th->dirt2;
+        int ix = (int)floorf(wx_of((float)x) * 4), iy = (int)floorf(wy * 4);
+        if ((hash2(ix, iy) & 31) == 0) c = th->dirt2 == c ? th->deep : th->dirt2;
+        if (dm > 3) c = mix565(c, th->deep, dm > 9 ? 22 : (int)((dm - 3) * 3.6f));
+      }
+      if (dp < 0) c = mix565(row[x], c, (int)((dp + 1) * 32));
+      row[x] = c;
+    }
+  }
+}
+
+/* convex polygon spans for row y: [xl, xr] in screen x, false if none */
+static bool span(const v2 *p, int n, float yc, float *xl, float *xr) {
+  float l = 1e9f, r = -1e9f;
+  for (int i = 0; i < n; i++) {
+    v2 a = p[i], b = p[(i + 1) % n];
+    if ((a.y <= yc && b.y > yc) || (b.y <= yc && a.y > yc)) {
+      float x = a.x + (yc - a.y) * (b.x - a.x) / (b.y - a.y);
+      if (x < l) l = x;
+      if (x > r) r = x;
+    }
+  }
+  if (l > r) return false;
+  *xl = l, *xr = r;
+  return true;
+}
+
+typedef uint16_t (*Shade)(int x, int y, void *ctx);
+
+static void fill(const v2 *p, int n, float miny, float maxy, Shade sh, void *ctx, uint16_t flat) {
+  int ya = (int)floorf(miny), yb = (int)ceilf(maxy);
+  if (ya < sy0) ya = sy0;
+  if (yb > sy1) yb = sy1;
+  for (int y = ya; y < yb; y++) {
+    float xl, xr;
+    if (!span(p, n, y + 0.5f, &xl, &xr)) continue;
+    int a = (int)floorf(xl), b = (int)floorf(xr);
+    if (b < 0 || a >= SCREEN_W) continue;
+    for (int x = a < 0 ? 0 : a; x <= b && x < SCREEN_W; x++) {
+      float cov = 1;
+      if (x == a) cov = a + 1 - xl;
+      if (x == b) cov = (x == a ? xr - xl : xr - b);
+      if (cov <= 0) continue;
+      uint16_t c = sh ? sh(x, y, ctx) : flat;
+      uint16_t *q = px(x, y);
+      *q = cov >= 1 ? c : mix565(*q, c, (int)(cov * 32));
+    }
+  }
+}
+
+static void fill_item(const SPoly *s, Shade sh, void *ctx, uint16_t outline) {
+  fill(s->o, s->n, s->miny, s->maxy, 0, 0, outline);
+  fill(s->p, s->n, s->miny, s->maxy, sh, ctx, 0);
+}
+
+/* local coordinates of a screen pixel in a body */
+static inline v2 local(const Body *b, int x, int y) {
+  v2 d = V(wx_of((float)x) - b->p.x, wy_of((float)y) - b->p.y);
+  return vrot(d, b->c, -b->s);
+}
+
+static uint16_t sh_stone(int x, int y, void *ctx) {
+  (void)ctx;
+  float wx = wx_of((float)x), wy = wy_of((float)y);
+  int row = (int)floorf(wy * 2);
+  float bx = wx + (row & 1) * 0.5f;
+  float fx = bx - floorf(bx), fy = wy * 2 - floorf(wy * 2);
+  if (fx < 0.05f || fy < 0.1f) return th->stone_dark;
+  uint16_t c = th->stone;
+  if (hash2((int)floorf(bx), row) & 1) c = mix565(c, th->stone_dark, 6);
+  if (fy > 0.82f) c = mix565(c, 0xFFFF, 8);
+  return c;
+}
+
+static uint16_t sh_body(int x, int y, void *ctx) {
+  const Body *b = (const Body *)ctx;
+  v2 l = local(b, x, y);
+  float hw = 0, hh = 0;
+  for (int i = 0; i < b->nv; i++) {
+    if (b->lv[i].x > hw) hw = b->lv[i].x;
+    if (b->lv[i].y > hh) hh = b->lv[i].y;
+  }
+  switch (b->kind) {
+  case BK_PLANK: {
+    uint16_t c = RGB(0xc8, 0x8a, 0x4e);
+    float g = sinf(l.x * 5 + sinf(l.x * 1.7f) * 2 + l.y * 18);
+    if (g > 0.6f) c = RGB(0xb4, 0x76, 0x40);
+    if (l.y > hh - 0.06f) c = RGB(0xe0, 0xa8, 0x6c);
+    return c;
+  }
+  case BK_CRATE: {
+    float bw = hw * 0.18f;
+    if (fabsf(l.x) > hw - bw || fabsf(l.y) > hh - bw) return RGB(0xa8, 0x6a, 0x30);
+    if (fabsf(l.x - l.y) < bw * 0.9f) return RGB(0xb8, 0x7a, 0x3c);
+    return RGB(0xe4, 0xb0, 0x6a);
+  }
+  case BK_FALL: {
+    uint16_t c = b->timer > 0 ? RGB(0xc8, 0x84, 0x78) : th->stone;
+    float cr = fabsf(l.x - 0.4f * sinf(l.y * 9));
+    if (cr < 0.04f && l.y < hh * 0.6f) c = th->stone_dark;
+    if (l.y > hh - 0.07f) c = mix565(c, 0xFFFF, 10);
+    return c;
+  }
+  case BK_LIFT: {
+    if (l.y > hh - 0.09f) return RGB(0xd8, 0xdc, 0xe4);
+    int s = (int)floorf((l.x + l.y) * 3);
+    return s & 1 ? RGB(0xff, 0xc8, 0x20) : RGB(0x30, 0x30, 0x38);
+  }
+  case BK_SPIN: {
+    int s = (int)floorf(l.x * 2.5f);
+    return s & 1 ? RGB(0xee, 0x40, 0x40) : RGB(0xf4, 0xf4, 0xf4);
+  }
+  case BK_CHASSIS: {
+    const CarDefView *v = &car_views[L.car];
+    if (l.y < -hh * 0.35f) return v->dark;
+    if (l.y > hh - 0.06f) return mix565(v->body, 0xFFFF, 10);
+    if (fabsf(l.x - hw * 0.62f) < 0.09f && l.y > -hh * 0.2f && l.y < hh * 0.5f) return RGB(0xff, 0xf0, 0xa0); /* lamp */
+    return v->body;
+  }
+  }
+  return th->stone;
+}
+
+static uint16_t sh_cabin(int x, int y, void *ctx) {
+  const Body *b = (const Body *)ctx;
+  v2 l = local(b, x, y);
+  const CarDefView *v = &car_views[L.car];
+  float hx = W.head.x, hy = W.head.y, r = W.head_r;
+  float top = hy + r + 0.12f;
+  /* the frame around the window */
+  float fx0 = hx - r - 0.2f, fx1 = hx + r + 0.26f;
+  if (l.y > 0.14f && l.y < top - 0.07f && l.x > fx0 + (l.y - 0.14f) * 0.2f && l.x < fx1 - (l.y - 0.14f) * 0.3f) {
+    uint16_t g = v->window;
+    if (fabsf((l.x - hx) + (l.y - hy) * 0.8f - 0.25f) < 0.05f) g = mix565(g, 0xFFFF, 18);
+    return g;
+  }
+  return v->cabin;
+}
+
+static void circle(float cx, float cy, float r, int kind, const Body *b) {
+  int ya = (int)floorf(cy - r - 2), yb = (int)ceilf(cy + r + 2);
+  if (ya < sy0) ya = sy0;
+  if (yb > sy1) yb = sy1;
+  float ro = r + 1.3f;
+  for (int y = ya; y < yb; y++) {
+    float dy = y + 0.5f - cy;
+    if (fabsf(dy) > ro) continue;
+    float hx = sqrtf(ro * ro - dy * dy);
+    int xa = (int)floorf(cx - hx), xb = (int)ceilf(cx + hx);
+    if (xa < 0) xa = 0;
+    if (xb > SCREEN_W) xb = SCREEN_W;
+    for (int x = xa; x < xb; x++) {
+      float dx = x + 0.5f - cx, d = sqrtf(dx * dx + dy * dy);
+      if (d > ro + 0.5f) continue;
+      uint16_t c;
+      float t = d / r;
+      if (d > r) c = RGB(0x1a, 0x1a, 0x24);
+      else if (kind == BK_WHEEL) {
+        float ang = atan2f(-dy, dx) - b->a;
+        if (t > 0.72f) {
+          c = RGB(0x2c, 0x2c, 0x34);
+          if (t > 0.86f && sinf(ang * 10) > 0.4f) c = RGB(0x40, 0x40, 0x4a);
+        } else if (t > 0.62f) c = RGB(0xc8, 0xcc, 0xd8);
+        else if (t < 0.2f) c = RGB(0x88, 0x8c, 0x98);
+        else {
+          float s = sinf(ang * 1.5f);
+          c = fabsf(s) > 0.92f ? RGB(0xd8, 0xdc, 0xe4) : RGB(0x5a, 0x5e, 0x6c);
+        }
+      } else if (kind == BK_BALL) {
+        float ang = atan2f(-dy, dx) - b->a;
+        int s = (int)floorf(ang * 3 / 3.14159265f + 6) % 3;
+        c = s == 0 ? RGB(0xff, 0x5a, 0x5a) : s == 1 ? RGB(0xff, 0xff, 0xff) : RGB(0x40, 0xa0, 0xff);
+        if (dx < -r * 0.2f && dy < -r * 0.2f && t < 0.6f) c = mix565(c, 0xFFFF, 10);
+      } else { /* the driver's helmet */
+        const CarDefView *v = &car_views[L.car];
+        float ang = atan2f(-dy, dx) - b->a;
+        c = RGB(0xff, 0xff, 0xff);
+        if (cosf(ang) > 0.3f && sinf(ang) > -0.5f && sinf(ang) < 0.55f && t > 0.35f) c = RGB(0x30, 0x3c, 0x5a);
+        if (sinf(ang) > 0.75f && t > 0.6f) c = v->body;
+      }
+      uint16_t *q = px(x, y);
+      float cov = ro + 0.5f - d;
+      *q = cov >= 1 ? c : mix565(*q, c, (int)(cov * 32));
+    }
+  }
+}
+
+static void flag(float cx, float cy, float s) {
+  /* pole from the ground up 3.6 m, a checked flag waving at the top */
+  int ya = (int)(cy - 3.6f * s), yb = (int)cy;
+  for (int y = ya < sy0 ? sy0 : ya; y < yb && y < sy1; y++)
+    for (int x = (int)cx - 1; x <= (int)cx + 1; x++)
+      if (x >= 0 && x < SCREEN_W) *px(x, y) = x == (int)cx + 1 ? RGB(0x90, 0x90, 0x9c) : RGB(0xf0, 0xf0, 0xf4);
+  float fw = 1.5f * s, fh = 1.0f * s, t = W.frame * 0.12f;
+  for (int y = ya; y < ya + (int)fh + 4; y++) {
+    if (y < sy0 || y >= sy1) continue;
+    for (int x = (int)cx + 2; x < (int)(cx + fw) + 2; x++) {
+      if (x < 0 || x >= SCREEN_W) continue;
+      float u = (x - cx) / fw, wave = sinf(u * 5 - t) * u * 0.12f * s;
+      float v = (y - ya - wave) / fh;
+      if (v < 0 || v >= 1) continue;
+      int ch = ((int)(u * 5) + (int)(v * 3.4f)) & 1;
+      uint16_t c = ch ? RGB(0x1c, 0x1c, 0x28) : RGB(0xff, 0xff, 0xff);
+      if (sinf(u * 5 - t) > 0.6f) c = mix565(c, RGB(0x80, 0x80, 0x90), 8);
+      *px(x, y) = c;
+    }
+  }
+}
+
+static void pools(void) {
+  for (int i = vis_first; i < vis_last; i++) {
+    Static *s = &statics[i];
+    if (s->kind != SK_WATER && s->kind != SK_LAVA) continue;
+    float xa = sx_of(s->minx), xb = sx_of(s->maxx), ytop = s->maxy;
+    int ia = (int)xa < 0 ? 0 : (int)xa, ib = (int)xb > SCREEN_W ? SCREEN_W : (int)xb;
+    for (int y = sy0; y < sy1; y++) {
+      float wy = wy_of((float)y);
+      for (int x = ia; x < ib; x++) {
+        float wx = wx_of((float)x);
+        float surf = ytop + 0.08f * sinf(wx * 2.2f + W.frame * 0.08f);
+        float d = (surf - wy) * cam.s;
+        if (d < 0) continue;
+        uint16_t *q = px(x, y);
+        if (s->kind == SK_LAVA) {
+          uint16_t c = d < 2 ? RGB(0xff, 0xe0, 0x60) : (hash2((int)(wx * 3 + W.frame * 0.05f), (int)(wy * 3)) & 3) == 0 ? RGB(0xff, 0xa0, 0x30) : th->pool;
+          *q = c;
+        } else {
+          *q = d < 1.5f ? mix565(*q, 0xFFFF, 22) : mix565(*q, th->pool, d > 30 ? 26 : 16 + (int)(d / 3));
+        }
+      }
+    }
+  }
+}
+
+uint16_t *draw_strip(int y, int n) {
+  sy0 = y;
+  sy1 = y + n;
+  background();
+  ground();
+  for (int i = 0; i < nitems; i++) {
+    if (items[i].sp.maxy < sy0 || items[i].sp.miny >= sy1) continue;
+    int k = items[i].kind;
+    if (k == 100 + SK_BLOCK) fill_item(&items[i].sp, sh_stone, 0, th->stone_dark);
+    else if (k == 100 + SK_DECO) {
+      fill(items[i].sp.o, items[i].sp.n, items[i].sp.miny, items[i].sp.maxy, 0, 0, th->stone_dark);
+      fill(items[i].sp.p, items[i].sp.n, items[i].sp.miny, items[i].sp.maxy, 0, 0, mix565(th->stone, th->stone_dark, 14));
+    }
+    else if (k == 200) fill_item(&items[i].sp, sh_cabin, &W.body[items[i].idx], RGB(0x1a, 0x1a, 0x24));
+    else if (k == 201) circle(items[i].cx, items[i].cy, items[i].r, 201, &W.body[items[i].idx]);
+    else if (k == 202) flag(items[i].cx, items[i].cy, items[i].r);
+    else if (k == BK_WHEEL || k == BK_BALL) circle(items[i].cx, items[i].cy, items[i].r, k, &W.body[items[i].idx]);
+    else fill_item(&items[i].sp, sh_body, &W.body[items[i].idx], RGB(0x1a, 0x1a, 0x24));
+  }
+  pools();
+  return buf;
+}
+
+void draw_frame(void (*post)(uint16_t *px, int y, int n)) {
+  draw_prepare();
+  for (int y = 0; y < SCREEN_H; y += STRIP_H) {
+    int n = SCREEN_H - y < STRIP_H ? SCREEN_H - y : STRIP_H;
+    draw_strip(y, n);
+    if (post) post(buf, y, n);
+    plat_push(0, y, SCREEN_W, n, buf);
+  }
+}
diff --git a/games/numdrive/src/draw.h b/games/numdrive/src/draw.h
new file mode 100644
index 0000000..02c3d80
--- /dev/null
+++ b/games/numdrive/src/draw.h
@@ -0,0 +1,28 @@
+#ifndef DRAW_H
+#define DRAW_H
+#include <stdint.h>
+#include "nd.h"
+
+#define STRIP_H 16
+
+typedef struct {
+  float x, y, s; /* world point at the screen centre, pixels a metre */
+  float vx;      /* smoothed look-ahead */
+} Cam;
+extern Cam cam;
+
+typedef struct {
+  uint16_t sky_top, sky_bottom, far, near, grass, grass_dark, dirt, dirt2, deep, stone, stone_dark, pool, sun;
+  uint8_t stars, lava;
+} Theme;
+extern const Theme themes[];
+
+void draw_level_start(void);                 /* after level_load: theme, camera on the car */
+void cam_follow(void);                       /* once a frame */
+void draw_frame(void (*post)(uint16_t *px, int y, int n)); /* the whole screen, strip by strip */
+void draw_prepare(void);                     /* per frame tables (ground columns, hills) */
+uint16_t *draw_strip(int y, int n);          /* the world into the strip buffer */
+uint16_t *draw_buffer(void);
+void draw_set_buffer(uint16_t *b);           /* SCREEN_W * STRIP_H, on main's stack */
+uint16_t theme_sky(void);
+#endif
diff --git a/games/numdrive/src/font.c b/games/numdrive/src/font.c
index 0839bff..1bf93e1 100644
--- a/games/numdrive/src/font.c
+++ b/games/numdrive/src/font.c
@@ -1,257 +1,320 @@
-/* generated by tools/font.py from Baloo 2 ExtraBold (SIL Open Font License) */
+/* made by tools/conformite/numdrive_font.py: Poppins Bold (SIL Open Font License 1.1) and
+   NumDrive's own icons */
 #include "font.h"
 
-static const uint8_t font_s_data[] = {93,219,117,88,215,1,218,184,167,13,144,24,244,45,253,127,180,30,254,127,189,27,40,7,160,64,47,189,215,2,248,2,185,153,219,47,224,0,40,20,168,178,160,234,0,218,5,192,250,128,115,71,135,15,224,2,110,64,75,225,231,173,127,219,139,191,3,234,14,16,120,60,45,29,29,45,45,120,16,79,203,242,60,219,122,5,40,126,61,160,0,14,253,155,111,224,0,5,157,247,4,85,126,158,7,144,240,180,116,56,44,45,30,14,4,228,2,239,211,226,117,120,29,30,223,67,127,0,104,190,181,180,180,180,180,184,193,126,128,7,61,184,208,91,253,7,185,145,62,208,131,47,208,83,125,253,2,128,2,126,184,215,118,238,159,190,64,7,168,210,42,93,208,63,148,151,121,253,2,224,198,107,109,209,191,29,223,182,244,7,169,146,126,208,2,30,244,128,11,56,0,232,226,186,94,203,63,94,235,186,253,7,184,225,122,94,235,191,164,75,121,253,1,132,231,1,158,7,68,219,1,88,235,21,128,226,235,134,31,228,3,5,254,87,21,169,162,42,25,248,6,62,253,126,20,0,185,165,15,61,190,100,144,128,3,0,20,0,144,255,7,244,86,47,124,105,60,109,239,121,157,215,121,157,235,62,45,174,31,184,0,0,224,63,0,0,21,0,160,2,253,129,123,240,44,189,143,235,231,209,2,232,70,239,211,230,244,47,109,94,155,199,191,0,224,138,235,45,208,1,45,192,155,228,15,248,70,239,215,210,182,240,45,108,155,199,191,0,168,214,107,109,209,127,109,209,87,252,11,168,214,107,45,208,43,189,210,2,45,0,160,27,174,218,2,116,189,45,61,111,79,254,2,25,88,11,219,210,246,191,125,110,11,219,194,2,89,219,182,109,219,2,160,240,240,240,240,245,126,25,73,219,215,190,244,11,253,71,219,211,226,1,25,208,2,45,208,2,45,208,22,252,7,104,100,188,188,253,253,237,238,173,235,109,230,45,224,40,88,31,219,223,182,187,173,111,203,219,226,2,224,10,188,46,45,120,29,120,45,120,124,61,244,27,248,210,251,45,222,250,253,214,2,45,0,224,10,188,46,45,120,29,120,45,120,124,61,244,31,0,190,0,100,248,70,239,211,226,244,46,253,71,219,210,226,1,228,210,107,109,128,127,144,155,185,253,2,170,170,175,240,0,15,240,0,15,240,0,25,89,75,219,210,182,180,45,45,159,71,191,0,9,152,71,219,226,241,60,184,11,253,1,62,0,9,64,226,17,120,109,207,211,246,61,188,239,130,175,47,244,245,1,9,233,246,248,71,47,248,211,182,30,14,10,234,241,189,139,63,240,1,14,224,0,169,150,126,208,67,31,124,224,86,254,11,20,125,30,30,30,30,30,30,125,20,14,30,29,44,56,116,176,96,132,143,227,56,142,227,126,6,80,224,195,110,231,68,1,85,245,127,78,11,84,208,63,148,215,127,174,215,127,4,224,1,110,224,127,110,239,241,173,139,111,80,240,235,130,7,110,225,11,0,1,176,80,203,191,94,235,177,110,139,127,80,208,63,158,231,107,110,130,63,80,244,215,130,127,110,120,224,65,7,80,208,127,94,235,181,253,75,186,153,139,47,4,224,1,110,225,127,110,235,181,30,219,177,89,71,116,109,219,182,93,71,116,109,219,182,222,3,4,224,1,30,225,121,254,226,31,238,215,181,68,219,182,109,219,182,80,20,244,255,231,186,173,215,182,94,219,118,109,11,80,208,127,110,235,181,30,219,177,80,192,127,94,239,241,110,139,47,80,208,127,110,239,241,174,235,127,30,208,1,80,193,191,94,235,177,110,139,191,64,11,176,80,244,231,130,7,30,116,0,80,244,219,22,190,217,247,11,25,110,254,46,30,109,188,4,225,177,30,235,181,109,139,127,5,229,181,109,199,58,248,66,31,4,64,120,93,215,185,93,187,59,252,253,224,226,2,0,225,117,252,130,31,253,226,120,5,225,177,93,203,122,248,3,31,184,128,3,84,248,75,31,46,125,249,15,16,120,44,44,46,46,44,44,124,20,68,215,182,109,219,182,109,7,4,46,44,44,124,120,44,44,46,5,105,231,127,68,1};
+static const uint8_t font_s_data[] = {187,187,90,95,153,170,85,192,177,160,235,198,255,47,56,14,249,190,248,255,67,199,1,9,2,64,64,46,253,219,90,252,1,190,153,223,191,160,1,41,40,232,117,160,167,0,213,1,128,186,64,115,7,203,14,8,20,160,1,188,7,60,0,184,16,222,46,94,31,253,63,84,100,169,5,208,209,130,3,11,44,180,208,2,11,60,208,1,15,100,29,224,65,11,60,224,128,7,30,56,240,208,193,67,2,25,126,127,24,160,0,14,249,150,111,224,0,5,68,151,24,169,166,10,68,71,0,208,129,3,14,44,116,224,128,3,11,29,116,224,64,1,244,6,239,210,225,116,120,29,94,139,131,191,64,5,170,143,227,56,142,83,248,210,122,73,7,120,224,129,7,253,155,106,80,128,63,173,7,120,224,2,120,93,199,127,80,0,128,7,244,2,187,224,45,109,139,255,75,181,0,24,255,178,26,91,240,47,134,167,120,254,66,5,64,128,63,173,215,21,253,215,181,93,203,127,80,1,254,167,15,44,56,176,208,129,3,6,80,128,127,109,203,178,248,215,182,29,207,191,80,1,248,210,122,29,219,191,164,155,177,252,7,21,68,71,0,68,71,0,68,139,1,0,203,37,16,255,125,60,4,84,69,255,71,85,164,106,169,26,5,30,120,120,30,5,16,244,231,61,240,248,161,64,1,15,20,0,0,20,0,248,47,160,65,139,230,218,156,183,221,44,151,205,191,199,81,21,180,26,0,169,1,144,2,248,0,123,208,45,56,30,255,219,213,23,144,169,226,250,30,238,122,174,235,241,254,155,22,160,6,239,231,129,58,0,14,64,75,143,255,65,5,169,130,235,227,209,122,176,30,172,135,231,191,164,5,169,186,234,129,107,174,121,224,111,106,169,186,234,129,107,174,121,224,65,2,160,6,188,47,30,40,78,42,78,126,45,56,248,31,80,1,25,153,71,235,209,250,191,174,174,71,235,209,38,96,153,231,121,158,231,37,128,2,14,56,224,128,59,222,47,21,25,154,215,226,45,248,3,238,129,247,225,245,36,100,25,120,224,129,7,30,120,224,90,106,41,160,249,192,231,71,159,47,126,238,237,121,127,231,185,93,130,96,25,168,15,235,203,186,183,158,175,215,235,225,38,96,144,6,184,47,29,120,14,116,14,116,45,56,248,31,80,1,169,225,126,30,235,186,254,226,1,30,144,0,144,6,184,47,29,120,14,116,14,116,45,56,248,31,80,46,0,100,169,226,186,30,238,186,254,226,61,94,151,80,164,209,191,29,197,27,144,151,177,252,7,21,170,170,175,176,0,11,176,0,11,176,0,5,25,153,71,231,209,121,116,29,93,139,135,191,64,5,10,104,7,203,210,225,56,116,11,252,1,62,64,6,9,26,217,241,226,109,47,203,182,119,184,182,71,47,63,244,241,2,9,25,25,25,143,67,127,128,11,240,3,237,194,226,101,96,10,89,139,131,183,208,15,224,2,120,0,30,64,2,169,150,126,192,3,30,180,192,2,253,155,106,126,46,14,14,14,14,14,14,14,14,126,41,11,10,14,29,44,44,56,116,116,176,224,144,191,143,227,56,142,227,56,254,107,144,1,248,64,123,224,44,44,93,2,6,84,85,255,143,170,2,70,11,1,16,4,255,231,246,57,120,30,94,255,7,149,0,30,128,87,224,190,184,121,30,157,139,231,255,100,5,80,128,63,94,235,0,94,214,127,80,0,0,30,132,199,239,185,125,14,158,135,215,255,65,37,64,128,127,109,235,255,30,198,127,80,1,80,188,45,190,45,45,45,45,24,16,4,255,231,246,57,120,30,94,255,7,229,181,61,248,7,16,0,30,224,5,238,231,246,30,238,225,30,158,144,89,71,116,93,215,117,24,100,116,16,116,116,116,116,116,116,116,125,4,30,224,81,158,231,46,254,224,30,158,151,96,158,231,121,158,231,37,68,64,224,191,127,110,95,235,225,176,30,14,235,225,176,9,9,5,68,224,127,110,239,225,30,238,225,9,9,80,128,127,110,235,224,30,207,127,80,1,68,129,251,226,230,121,116,46,158,255,227,21,120,0,30,0,1,0,16,4,254,231,246,57,120,30,94,255,7,229,1,120,0,30,0,1,4,238,174,30,30,30,9,16,192,47,93,194,31,149,215,63,84,0,40,109,190,109,44,44,184,80,4,229,225,30,238,225,29,207,255,84,9,5,229,240,93,203,118,184,67,47,144,0,5,65,56,30,231,188,93,183,59,252,189,224,242,65,70,2,5,213,117,248,66,15,248,209,122,5,6,5,228,225,45,203,123,244,2,31,240,64,11,56,64,1,85,248,91,30,29,45,248,155,26,100,124,45,44,44,31,31,44,44,45,124,100,153,231,121,158,231,121,94,6,25,61,116,116,116,244,244,116,116,116,61,25,104,217,191,69,1};
 static const Glyph font_s_glyphs[] = {
   {32, 2, -1, 0, 0, 0, 0},
-  {33, 3, 0, 5, 3, 7, 0},
-  {34, 5, 0, 5, 5, 3, 6},
-  {35, 8, 0, 5, 8, 7, 10},
-  {36, 6, 0, 4, 6, 9, 24},
-  {37, 9, 0, 5, 9, 7, 38},
-  {38, 7, 0, 5, 7, 7, 54},
-  {39, 2, 0, 5, 2, 3, 67},
-  {40, 3, 0, 4, 4, 10, 69},
-  {41, 3, 0, 5, 3, 9, 79},
-  {42, 4, 0, 5, 4, 3, 86},
-  {43, 6, 0, 6, 6, 6, 89},
-  {44, 3, 0, 10, 3, 4, 98},
-  {45, 4, 0, 8, 4, 2, 101},
-  {46, 3, 0, 10, 3, 2, 103},
-  {47, 4, 0, 4, 4, 10, 105},
-  {48, 7, 0, 5, 7, 7, 115},
-  {49, 4, 0, 5, 4, 7, 128},
-  {50, 6, 0, 5, 6, 7, 135},
-  {51, 6, 0, 5, 6, 7, 146},
-  {52, 7, 0, 5, 6, 7, 157},
-  {53, 6, 0, 5, 6, 7, 168},
-  {54, 6, 0, 5, 6, 7, 179},
-  {55, 5, 0, 5, 6, 7, 190},
-  {56, 6, 0, 5, 6, 7, 201},
-  {57, 6, 0, 5, 6, 7, 212},
-  {58, 3, 0, 6, 3, 6, 223},
-  {59, 3, 0, 6, 3, 8, 228},
-  {60, 5, 0, 6, 5, 6, 234},
-  {61, 6, 0, 7, 6, 4, 242},
-  {62, 5, 0, 6, 5, 6, 248},
-  {63, 5, 0, 5, 5, 7, 256},
-  {64, 12, 0, 4, 12, 11, 265},
-  {65, 7, 0, 5, 7, 7, 298},
-  {66, 7, 0, 5, 7, 7, 311},
-  {67, 6, 0, 5, 6, 7, 324},
-  {68, 7, 0, 5, 7, 7, 335},
-  {69, 6, 0, 5, 6, 7, 348},
-  {70, 6, 0, 5, 6, 7, 359},
-  {71, 7, 0, 5, 7, 7, 370},
-  {72, 7, 0, 5, 7, 7, 383},
-  {73, 3, 0, 5, 3, 7, 396},
-  {74, 5, 0, 5, 4, 7, 402},
-  {75, 7, 0, 5, 7, 7, 409},
-  {76, 6, 0, 5, 6, 7, 422},
-  {77, 9, 0, 5, 8, 7, 433},
-  {78, 7, 0, 5, 7, 7, 447},
-  {79, 8, 0, 5, 8, 7, 460},
-  {80, 6, 0, 5, 6, 7, 474},
-  {81, 8, 0, 5, 8, 9, 485},
-  {82, 7, 0, 5, 7, 7, 503},
-  {83, 6, 0, 5, 6, 7, 516},
-  {84, 6, 0, 5, 6, 7, 527},
-  {85, 7, 0, 5, 7, 7, 538},
-  {86, 7, 0, 5, 7, 7, 551},
-  {87, 9, 0, 5, 10, 7, 564},
-  {88, 7, 0, 5, 6, 7, 582},
-  {89, 6, 0, 5, 6, 7, 593},
-  {90, 6, 0, 5, 6, 7, 604},
-  {91, 3, 0, 4, 4, 10, 615},
-  {92, 4, 0, 5, 4, 8, 625},
-  {93, 3, 0, 4, 3, 10, 633},
-  {94, 5, 0, 4, 5, 5, 641},
-  {95, 6, 0, 12, 6, 2, 648},
-  {96, 3, 0, 4, 3, 2, 651},
-  {97, 6, 0, 6, 6, 6, 653},
-  {98, 6, 0, 4, 6, 8, 662},
-  {99, 5, 0, 6, 5, 6, 674},
-  {100, 6, 0, 4, 6, 8, 682},
-  {101, 6, 0, 6, 6, 6, 694},
-  {102, 5, 0, 4, 5, 8, 703},
-  {103, 6, 0, 6, 6, 8, 713},
-  {104, 6, 0, 4, 6, 8, 725},
-  {105, 3, 0, 4, 3, 8, 737},
-  {106, 3, 0, 4, 3, 10, 743},
-  {107, 6, 0, 4, 6, 8, 751},
-  {108, 3, 0, 4, 3, 8, 763},
-  {109, 9, 0, 6, 9, 6, 769},
-  {110, 6, 0, 6, 6, 6, 783},
-  {111, 6, 0, 6, 6, 6, 792},
-  {112, 6, 0, 6, 6, 8, 801},
-  {113, 6, 0, 6, 6, 8, 813},
-  {114, 5, 0, 6, 5, 6, 825},
-  {115, 5, 0, 6, 5, 6, 833},
-  {116, 4, 0, 5, 4, 7, 841},
-  {117, 6, 0, 6, 6, 6, 848},
-  {118, 6, 0, 6, 6, 6, 857},
-  {119, 9, 0, 6, 9, 6, 866},
-  {120, 6, 0, 6, 6, 6, 880},
-  {121, 6, 0, 6, 6, 8, 889},
-  {122, 5, 0, 6, 5, 6, 901},
-  {123, 4, 0, 4, 4, 10, 909},
-  {124, 3, 0, 4, 3, 10, 919},
-  {125, 4, 0, 4, 4, 10, 927},
-  {126, 6, 0, 8, 6, 3, 937},
+  {33, 4, 1, 3, 2, 8, 0},
+  {34, 4, 0, 2, 4, 3, 4},
+  {35, 9, 0, 3, 9, 8, 7},
+  {36, 7, 0, 2, 6, 9, 25},
+  {37, 9, 0, 3, 9, 8, 39},
+  {38, 8, 0, 3, 8, 8, 57},
+  {39, 2, 0, 2, 2, 3, 73},
+  {40, 5, 0, 1, 5, 12, 75},
+  {41, 5, 0, 1, 5, 12, 90},
+  {42, 5, 1, 3, 4, 4, 105},
+  {43, 6, 0, 4, 6, 6, 109},
+  {44, 3, 0, 8, 3, 4, 118},
+  {45, 6, 0, 6, 5, 2, 121},
+  {46, 3, 0, 8, 3, 3, 124},
+  {47, 5, 0, 1, 5, 12, 127},
+  {48, 7, 0, 3, 7, 8, 142},
+  {49, 4, 0, 3, 3, 8, 156},
+  {50, 6, 0, 3, 6, 8, 162},
+  {51, 6, 0, 2, 6, 9, 174},
+  {52, 7, 0, 3, 7, 8, 188},
+  {53, 6, 1, 3, 6, 8, 202},
+  {54, 6, 0, 2, 6, 9, 214},
+  {55, 5, 0, 3, 5, 8, 228},
+  {56, 6, 0, 2, 6, 9, 238},
+  {57, 6, 0, 3, 6, 8, 252},
+  {58, 3, 0, 4, 3, 7, 264},
+  {59, 3, 0, 4, 3, 8, 270},
+  {60, 6, 1, 4, 3, 6, 276},
+  {61, 7, 0, 4, 7, 5, 281},
+  {62, 5, 1, 4, 4, 6, 290},
+  {63, 5, 0, 2, 5, 9, 296},
+  {64, 11, 0, 3, 10, 10, 308},
+  {65, 7, 0, 3, 7, 8, 333},
+  {66, 7, 0, 3, 6, 8, 347},
+  {67, 8, 0, 3, 7, 8, 359},
+  {68, 7, 0, 3, 7, 8, 373},
+  {69, 5, 0, 3, 5, 8, 387},
+  {70, 5, 0, 3, 5, 8, 397},
+  {71, 8, 0, 3, 8, 8, 407},
+  {72, 7, 0, 3, 7, 8, 423},
+  {73, 3, 0, 3, 3, 8, 437},
+  {74, 6, 0, 3, 5, 8, 443},
+  {75, 7, 0, 3, 7, 8, 453},
+  {76, 5, 0, 3, 5, 8, 467},
+  {77, 9, 0, 3, 9, 8, 477},
+  {78, 8, 0, 3, 7, 8, 495},
+  {79, 8, 0, 3, 8, 8, 509},
+  {80, 6, 0, 3, 6, 8, 525},
+  {81, 8, 0, 3, 8, 9, 537},
+  {82, 7, 0, 3, 6, 8, 555},
+  {83, 6, 0, 3, 6, 8, 567},
+  {84, 6, 0, 3, 6, 8, 579},
+  {85, 7, 0, 3, 7, 8, 591},
+  {86, 7, 0, 3, 7, 8, 605},
+  {87, 11, 0, 3, 10, 8, 619},
+  {88, 7, 0, 3, 7, 8, 639},
+  {89, 7, 0, 3, 7, 8, 653},
+  {90, 6, 0, 3, 6, 8, 667},
+  {91, 5, 1, 1, 4, 12, 679},
+  {92, 8, 2, 1, 4, 12, 691},
+  {93, 5, 1, 1, 3, 12, 703},
+  {94, 7, 0, 3, 7, 6, 712},
+  {95, 8, 0, 10, 7, 3, 723},
+  {96, 3, 0, 2, 3, 3, 729},
+  {97, 7, 0, 4, 7, 7, 732},
+  {98, 7, 0, 3, 7, 8, 745},
+  {99, 6, 0, 4, 6, 7, 759},
+  {100, 7, 0, 3, 7, 8, 770},
+  {101, 6, 0, 4, 6, 7, 784},
+  {102, 4, 0, 2, 4, 9, 795},
+  {103, 7, 0, 4, 7, 10, 804},
+  {104, 7, 0, 3, 6, 8, 822},
+  {105, 3, 0, 2, 3, 9, 834},
+  {106, 3, -1, 2, 4, 12, 841},
+  {107, 6, 0, 3, 6, 8, 853},
+  {108, 3, 0, 3, 3, 8, 865},
+  {109, 11, 0, 4, 10, 7, 871},
+  {110, 7, 0, 4, 6, 7, 889},
+  {111, 6, 0, 4, 6, 7, 900},
+  {112, 7, 0, 4, 7, 10, 911},
+  {113, 7, 0, 4, 7, 10, 929},
+  {114, 4, 0, 4, 4, 7, 947},
+  {115, 6, 0, 4, 6, 7, 954},
+  {116, 4, 0, 3, 4, 8, 965},
+  {117, 7, 0, 4, 6, 7, 973},
+  {118, 6, 0, 4, 6, 7, 984},
+  {119, 9, 0, 4, 9, 7, 995},
+  {120, 6, 0, 4, 6, 7, 1011},
+  {121, 6, 0, 4, 6, 10, 1022},
+  {122, 5, 0, 4, 5, 7, 1037},
+  {123, 5, 1, 1, 4, 12, 1046},
+  {124, 3, 0, 2, 3, 10, 1058},
+  {125, 5, 0, 1, 4, 12, 1066},
+  {126, 6, 0, 6, 6, 3, 1078},
 };
-const Font font_s = {19, 12, 5, 95, font_s_glyphs, font_s_data};
+const Font font_s = {15, 10, 3, 95, font_s_glyphs, font_s_data};
 
-static const uint8_t font_m_data[] = {20,125,125,125,124,60,20,124,125,20,89,226,121,158,211,57,64,65,0,56,30,228,251,198,255,191,228,246,65,174,31,253,255,135,239,27,180,60,0,69,1,128,1,244,129,255,246,170,125,0,255,2,254,2,244,173,126,255,7,62,0,5,84,64,65,191,240,208,57,30,180,223,2,248,61,1,128,247,7,180,222,3,139,247,208,209,31,0,64,0,64,5,128,63,64,95,0,124,16,244,231,245,190,215,226,95,95,127,248,255,67,21,5,153,235,118,240,184,124,61,45,45,45,61,60,184,244,30,61,124,184,184,184,184,184,124,61,46,4,32,228,230,95,63,68,0,208,3,208,3,233,43,254,127,212,23,208,3,128,2,84,239,126,10,253,165,6,132,235,83,128,65,15,46,120,240,209,131,11,31,61,184,224,66,6,64,1,244,47,188,126,61,184,61,244,61,244,61,248,188,189,244,47,64,5,64,228,235,111,185,224,130,11,46,184,224,66,5,80,1,255,135,245,2,184,128,31,248,130,31,244,106,253,47,85,1,80,65,255,146,250,1,124,244,11,253,7,224,106,189,254,15,85,0,0,21,0,254,0,253,3,188,15,184,61,244,249,209,255,31,169,31,0,61,0,80,0,84,225,127,175,246,5,255,167,190,64,191,253,255,71,5,64,5,240,47,252,42,125,5,253,47,189,126,61,124,188,126,244,47,80,5,254,95,234,7,244,0,47,208,7,188,64,31,224,3,80,0,80,5,248,47,189,126,124,124,248,47,188,63,61,124,189,126,248,47,80,5,64,1,248,31,189,62,61,124,189,126,248,127,80,125,88,62,252,31,80,1,40,125,45,0,4,61,125,20,40,125,45,0,20,125,61,46,10,64,30,249,215,111,244,1,253,6,244,7,144,1,84,69,255,155,170,81,85,253,111,170,5,109,64,191,1,254,1,125,248,79,127,128,1,0,84,129,255,146,245,1,125,244,15,190,0,1,208,3,244,1,20,0,0,249,111,0,224,255,191,0,127,0,190,224,131,42,61,124,252,47,95,143,79,139,215,227,226,242,245,248,190,62,124,252,255,7,126,20,84,0,190,21,0,0,254,15,0,0,84,1,0,64,5,128,127,0,255,2,189,15,184,124,240,246,209,255,139,175,62,46,240,81,64,1,84,1,255,31,175,63,31,61,191,31,255,47,111,125,111,62,255,47,84,1,0,5,224,127,248,106,125,0,61,0,61,0,125,0,252,101,244,191,64,21,84,1,255,31,175,126,31,188,31,248,31,248,31,184,111,126,255,31,84,1,84,197,255,243,170,188,0,255,203,255,242,2,188,42,255,31,85,1,4,128,255,247,171,124,0,175,198,255,242,22,124,0,31,64,1,0,0,21,128,255,131,175,94,31,0,61,253,245,244,219,7,46,127,189,224,255,1,85,0,5,20,31,124,31,188,47,188,255,191,255,191,31,188,31,188,31,188,5,20,197,247,189,239,251,125,31,1,64,129,15,62,248,224,131,15,126,253,254,81,1,5,4,31,61,95,63,239,31,255,7,255,3,239,11,95,47,31,126,21,20,5,240,1,31,240,2,47,240,2,31,240,106,255,75,21,84,64,5,127,244,195,47,254,240,207,63,188,187,95,223,223,215,227,243,245,80,124,61,0,31,5,0,1,21,84,127,184,191,184,255,185,239,186,159,187,95,191,31,190,31,189,4,16,0,5,0,254,11,248,250,210,7,62,61,208,215,3,125,125,208,195,95,47,244,191,0,84,1,84,193,255,247,246,126,248,111,239,255,247,22,124,0,31,0,1,0,64,5,0,254,11,248,250,210,7,62,61,208,215,3,125,125,208,195,95,47,244,191,0,212,111,0,224,11,0,20,84,193,255,242,250,126,248,111,239,255,243,250,124,189,31,126,1,5,64,5,254,219,171,246,1,253,11,249,11,224,183,249,253,31,84,0,64,1,254,191,233,107,208,7,208,7,208,7,208,7,208,7,208,7,64,1,20,80,244,208,215,71,95,31,125,125,244,245,209,215,71,31,111,62,244,127,0,21,0,46,240,249,208,215,135,15,47,62,248,124,192,251,0,254,2,244,7,64,5,0,20,0,16,61,0,184,125,20,184,125,189,188,188,253,124,184,254,125,184,239,62,244,219,47,240,199,31,64,1,1,20,80,125,248,252,189,244,63,224,15,240,31,248,63,189,188,61,244,4,16,4,16,46,184,125,188,184,61,244,47,224,15,192,7,192,7,192,7,0,1,84,21,253,63,169,63,64,47,208,11,240,3,248,0,189,106,253,127,84,21,252,245,210,67,15,61,244,208,67,15,61,244,194,31,30,184,208,3,31,120,208,66,15,124,224,66,11,190,190,184,184,184,184,184,184,184,189,190,224,2,253,193,187,180,60,29,30,255,127,170,42,4,30,125,100,164,6,255,75,225,227,255,189,126,159,207,255,66,21,61,0,125,0,189,10,253,63,125,189,125,184,125,184,189,126,248,47,80,5,144,10,254,215,75,244,0,61,64,111,134,255,1,21,0,124,0,188,144,190,248,191,125,188,61,188,61,188,189,125,248,127,80,5,144,6,248,47,125,61,253,127,189,5,188,37,244,63,64,5,64,65,191,188,218,3,253,215,107,125,208,7,125,208,7,16,0,144,26,248,63,125,124,61,124,61,124,252,127,228,127,4,125,252,63,248,11,61,0,125,0,189,26,253,127,125,125,125,188,125,188,125,188,125,188,20,20,40,125,40,40,125,125,125,125,125,124,16,40,125,40,40,125,125,125,125,125,125,125,62,30,61,0,125,0,125,24,125,62,189,31,253,7,253,15,125,63,125,125,16,0,61,125,125,125,125,125,125,125,125,20,144,150,6,252,255,47,125,126,62,125,125,125,125,125,125,125,125,125,125,125,125,20,20,20,144,6,252,63,125,125,125,188,125,188,125,188,125,188,20,84,144,10,248,63,125,189,61,184,61,184,189,125,248,47,80,5,144,6,252,63,125,189,125,184,125,184,125,125,253,47,189,6,125,0,124,0,144,22,248,127,189,189,61,188,61,188,189,189,248,191,144,190,0,188,0,120,160,198,191,125,208,7,125,208,7,125,0,1,164,70,255,211,87,244,27,160,95,214,215,255,80,5,4,244,208,87,255,189,245,209,71,111,252,67,5,40,40,125,124,125,188,125,188,125,188,188,189,248,127,80,5,25,40,46,125,61,61,124,46,184,31,244,15,240,11,64,1,25,0,153,139,143,219,243,231,242,253,121,188,187,15,254,252,67,47,190,64,5,5,24,88,159,143,255,193,47,244,75,239,219,210,19,16,25,36,61,124,125,124,188,61,248,46,240,31,224,15,208,7,244,2,180,0,164,70,255,71,253,128,31,244,65,191,214,255,81,21,244,248,184,184,125,62,125,184,184,184,244,241,255,255,255,255,255,10,45,244,129,11,46,184,208,135,31,46,184,244,209,7,1,105,153,255,219,250,1};
+static const uint8_t font_m_data[] = {174,235,186,174,75,101,126,6,222,122,235,45,64,11,15,128,75,11,252,255,127,252,255,127,208,195,7,229,214,7,254,255,47,250,250,27,240,224,1,164,160,0,64,1,144,6,248,47,125,126,125,2,252,7,224,63,64,126,125,126,252,63,144,11,64,2,100,64,66,187,180,208,40,31,244,215,2,84,60,0,128,155,2,240,237,2,94,231,208,195,46,100,144,2,64,6,0,255,2,244,121,0,15,0,240,3,192,251,125,45,253,210,151,31,252,255,7,106,164,158,231,1,64,129,75,15,46,61,244,224,130,11,46,184,224,66,15,124,208,3,46,96,5,208,3,184,0,31,224,2,61,192,3,124,192,7,124,208,3,46,240,65,15,124,144,1,116,232,218,159,174,116,0,64,1,192,7,192,7,233,107,253,191,212,23,192,7,128,2,20,223,54,5,253,95,255,11,40,125,40,64,11,120,192,7,60,208,2,46,240,1,15,180,128,11,120,192,3,61,208,2,30,80,0,224,27,248,63,125,124,61,184,45,184,45,184,61,184,124,125,248,47,144,10,170,190,185,184,184,184,184,184,184,164,64,1,253,215,251,246,244,0,61,192,7,184,192,11,253,149,255,159,170,2,64,1,244,31,188,47,41,61,64,46,192,15,128,47,21,124,125,125,252,47,160,6,0,105,0,252,1,248,7,180,30,240,120,224,225,209,255,95,255,191,0,124,0,160,1,254,159,255,231,1,120,26,254,159,155,15,208,187,249,253,31,169,1,64,1,240,31,248,62,60,40,109,5,253,47,125,125,60,120,124,125,244,63,144,10,254,159,255,7,240,1,45,128,7,244,0,46,192,7,180,0,26,0,64,1,244,47,188,126,124,120,184,61,244,47,188,125,61,184,188,189,248,127,144,10,64,1,244,31,252,63,61,124,61,124,252,191,228,122,20,120,124,125,244,47,144,10,45,125,20,0,0,40,125,40,217,155,1,0,229,61,139,0,160,226,227,199,11,188,192,11,170,106,255,127,85,21,85,21,255,127,170,42,42,240,66,47,248,248,248,0,64,0,254,226,251,101,120,80,31,254,130,11,64,0,100,0,62,64,6,0,0,80,0,0,249,111,0,126,229,7,46,0,61,45,190,231,120,174,143,247,60,60,206,182,180,60,203,251,127,56,105,105,208,2,0,0,190,46,0,144,106,0,0,64,10,0,252,1,208,47,0,238,3,240,185,64,79,15,248,250,193,255,47,61,208,147,1,104,168,5,253,127,125,189,61,184,189,126,253,127,61,244,125,249,253,191,169,26,64,26,0,255,31,248,245,211,3,104,45,0,208,2,0,61,64,193,91,62,244,255,1,164,2,168,5,244,255,209,167,95,15,184,61,208,247,64,223,3,110,95,126,253,191,164,106,0,168,90,255,215,87,245,0,189,74,255,211,3,244,21,253,95,170,6,168,90,255,219,87,245,0,189,74,255,210,3,244,0,61,64,10,0,64,26,0,255,31,248,229,211,3,20,45,168,214,210,191,61,148,199,95,62,244,255,1,164,2,40,144,245,128,219,3,110,15,184,253,255,246,255,219,3,110,15,184,61,224,166,64,10,104,223,247,125,223,247,125,10,0,25,128,11,224,2,184,0,46,128,91,225,185,125,253,15,169,0,40,144,245,224,211,211,67,223,7,253,11,244,31,208,247,65,143,15,61,184,164,128,6,40,208,3,61,208,3,61,208,3,61,208,3,253,159,170,104,0,105,47,192,223,31,244,247,11,254,253,211,127,239,185,223,183,223,247,248,246,61,125,125,10,74,10,40,128,246,66,223,31,125,255,244,189,219,247,188,223,211,127,15,254,61,240,167,64,10,64,26,0,254,31,248,229,211,3,188,45,128,219,2,184,61,128,139,91,62,240,255,1,164,2,168,5,253,63,125,190,61,184,125,189,253,63,189,5,61,0,61,0,41,0,64,26,0,254,31,248,229,211,3,188,45,128,219,2,184,61,128,139,91,62,240,255,1,164,47,0,208,7,0,84,168,5,253,63,125,189,61,184,125,185,253,47,125,15,61,46,61,61,41,104,144,6,252,47,125,62,61,20,252,6,144,47,4,125,125,125,252,47,160,6,169,42,254,127,229,23,208,3,208,3,208,3,208,3,208,3,208,3,144,2,40,144,245,128,219,3,110,15,184,61,224,246,128,219,3,30,111,125,244,191,64,106,0,25,128,186,64,223,3,46,31,124,180,244,192,227,2,222,7,244,15,192,47,0,106,0,25,164,128,246,224,71,223,195,47,61,31,191,184,120,237,227,209,122,222,67,239,180,11,252,211,47,224,11,127,64,26,168,0,25,144,241,210,71,159,11,248,15,192,31,0,127,0,254,2,125,47,184,244,165,128,10,25,144,245,208,199,139,11,125,15,240,47,64,63,0,188,0,224,2,128,11,0,26,0,168,42,253,127,84,62,0,31,128,11,224,3,244,1,188,21,253,127,169,106,85,249,231,154,11,46,184,224,130,11,46,184,224,130,11,46,184,229,95,106,45,208,3,60,192,7,184,64,11,240,0,31,224,1,45,208,3,60,128,7,184,64,15,80,85,255,249,240,240,240,240,240,240,240,240,240,240,245,255,169,64,10,0,127,0,253,2,188,15,244,184,224,210,211,3,95,6,100,170,170,255,255,170,170,26,126,80,160,166,252,255,126,253,46,244,46,244,126,253,252,255,160,166,61,0,244,0,208,167,65,255,47,189,249,245,192,215,3,95,111,126,253,191,164,105,0,144,6,252,47,125,125,46,0,46,0,125,125,252,47,160,6,0,244,0,244,160,246,252,255,126,253,46,244,46,244,126,253,252,255,160,166,144,6,252,47,125,125,190,126,174,106,125,125,252,47,144,6,144,225,203,139,111,254,242,193,7,31,124,240,129,6,160,166,252,255,126,253,46,244,46,244,126,253,252,255,160,246,41,244,252,190,244,47,64,1,61,0,61,0,125,26,253,191,189,249,61,244,61,244,61,244,61,244,41,164,45,125,20,41,61,61,61,61,61,61,41,224,209,7,5,104,240,193,7,31,124,240,193,7,31,124,249,244,66,0,61,0,61,0,61,104,61,62,125,31,253,7,253,7,125,31,61,62,41,168,125,223,247,125,223,247,125,10,105,26,105,244,255,254,215,155,111,126,15,61,244,61,244,208,247,208,67,223,67,15,125,10,41,164,105,26,253,191,189,249,61,244,61,244,61,244,61,244,41,164,144,6,248,47,125,125,46,184,46,184,125,125,248,47,144,6,105,26,244,255,210,155,95,15,124,61,240,245,230,215,255,75,159,6,61,0,244,0,208,3,0,5,0,160,166,252,255,125,253,46,244,46,244,125,253,252,255,160,246,0,244,0,244,0,244,0,80,41,214,127,253,214,7,61,208,3,61,144,2,160,6,255,215,147,242,27,144,95,74,203,255,129,26,40,240,225,171,191,125,240,193,7,31,248,130,10,41,164,61,244,61,244,61,244,61,244,188,249,248,255,160,166,26,164,61,184,124,124,120,61,180,46,240,31,224,15,144,6,26,41,168,139,31,223,242,215,242,237,118,184,247,14,254,248,67,47,189,128,70,26,42,104,124,46,244,15,224,7,224,7,244,15,124,46,41,104,26,164,62,184,124,124,184,61,244,30,240,15,208,11,208,7,224,2,240,1,244,0,84,0,169,138,255,67,189,128,11,244,64,95,225,255,165,106,80,209,139,31,46,184,224,130,135,15,62,224,129,11,46,184,224,70,47,84,125,223,247,125,223,247,125,223,247,40,5,252,224,7,30,124,240,192,7,126,244,241,193,3,31,120,244,241,131,1,244,177,253,127,94,46};
 static const Glyph font_m_glyphs[] = {
   {32, 3, -1, 0, 0, 0, 0},
-  {33, 4, 0, 6, 4, 10, 0},
-  {34, 6, 0, 6, 6, 4, 10},
-  {35, 10, 0, 6, 10, 10, 16},
-  {36, 8, 0, 5, 7, 12, 41},
-  {37, 11, 0, 6, 11, 10, 62},
-  {38, 9, 0, 6, 9, 10, 90},
-  {39, 3, 0, 6, 3, 4, 113},
-  {40, 4, 0, 6, 4, 11, 116},
-  {41, 4, 0, 6, 4, 12, 127},
-  {42, 5, 0, 6, 5, 5, 139},
-  {43, 8, 0, 8, 8, 7, 146},
-  {44, 3, 0, 12, 3, 5, 160},
-  {45, 5, 0, 11, 5, 2, 164},
-  {46, 3, 0, 12, 3, 4, 167},
-  {47, 5, 0, 5, 5, 12, 170},
-  {48, 8, 0, 6, 8, 10, 185},
-  {49, 6, 0, 6, 5, 10, 205},
-  {50, 7, 0, 6, 7, 10, 218},
-  {51, 7, 0, 6, 7, 10, 236},
-  {52, 8, 0, 6, 9, 10, 254},
-  {53, 7, 1, 6, 6, 10, 277},
-  {54, 8, 0, 6, 8, 10, 292},
-  {55, 7, 0, 7, 7, 9, 312},
-  {56, 8, 0, 6, 8, 10, 328},
-  {57, 8, 0, 6, 8, 10, 348},
-  {58, 4, 0, 8, 4, 8, 368},
-  {59, 4, 0, 8, 4, 9, 376},
-  {60, 7, 0, 8, 7, 7, 385},
-  {61, 7, 0, 8, 7, 6, 398},
-  {62, 7, 0, 8, 7, 7, 409},
-  {63, 7, 0, 6, 7, 10, 422},
-  {64, 15, 0, 6, 15, 13, 440},
-  {65, 9, 0, 6, 9, 10, 489},
-  {66, 9, 1, 6, 8, 10, 512},
-  {67, 8, 0, 6, 8, 10, 532},
-  {68, 9, 1, 6, 8, 10, 552},
-  {69, 8, 1, 6, 7, 10, 572},
-  {70, 7, 1, 6, 7, 10, 590},
-  {71, 9, 0, 6, 9, 10, 608},
-  {72, 9, 1, 6, 8, 10, 631},
-  {73, 4, 1, 6, 3, 10, 651},
-  {74, 6, 0, 6, 5, 10, 659},
-  {75, 9, 1, 6, 8, 10, 672},
-  {76, 7, 1, 6, 6, 10, 692},
-  {77, 11, 0, 6, 11, 10, 707},
-  {78, 10, 1, 6, 8, 10, 735},
-  {79, 10, 0, 6, 10, 10, 755},
-  {80, 8, 1, 6, 7, 10, 780},
-  {81, 10, 0, 6, 10, 12, 798},
-  {82, 9, 1, 6, 7, 10, 828},
-  {83, 8, 0, 6, 7, 10, 846},
-  {84, 8, 0, 6, 8, 10, 864},
-  {85, 9, 0, 6, 9, 10, 884},
-  {86, 9, 0, 7, 9, 9, 907},
-  {87, 12, 0, 6, 12, 10, 928},
-  {88, 8, 0, 6, 8, 10, 958},
-  {89, 8, 0, 6, 8, 10, 978},
-  {90, 8, 0, 6, 8, 10, 998},
-  {91, 4, 0, 6, 5, 11, 1018},
-  {92, 5, 0, 6, 5, 10, 1032},
-  {93, 4, 0, 6, 4, 11, 1045},
-  {94, 7, 0, 6, 7, 5, 1056},
-  {95, 7, 0, 16, 8, 2, 1065},
-  {96, 4, 0, 4, 4, 4, 1069},
-  {97, 8, 0, 8, 7, 8, 1073},
-  {98, 8, 0, 6, 8, 10, 1087},
-  {99, 7, 0, 8, 7, 8, 1107},
-  {100, 8, 0, 6, 8, 10, 1121},
-  {101, 8, 0, 8, 8, 8, 1141},
-  {102, 6, 0, 5, 6, 11, 1157},
-  {103, 8, 0, 8, 8, 10, 1174},
-  {104, 8, 0, 6, 8, 10, 1194},
-  {105, 4, 0, 5, 4, 11, 1214},
-  {106, 4, 0, 5, 4, 13, 1225},
-  {107, 8, 0, 6, 8, 10, 1238},
-  {108, 4, 0, 6, 4, 10, 1258},
-  {109, 12, 0, 8, 12, 8, 1268},
-  {110, 8, 0, 8, 8, 8, 1292},
-  {111, 8, 0, 8, 8, 8, 1308},
-  {112, 8, 0, 8, 8, 10, 1324},
-  {113, 8, 0, 8, 8, 10, 1344},
-  {114, 6, 0, 8, 6, 8, 1364},
-  {115, 7, 0, 8, 7, 8, 1376},
-  {116, 6, 0, 6, 5, 10, 1390},
-  {117, 8, 0, 8, 8, 8, 1403},
-  {118, 8, 0, 8, 8, 8, 1419},
-  {119, 11, 0, 8, 11, 8, 1435},
-  {120, 7, 0, 8, 7, 8, 1457},
-  {121, 8, 0, 8, 8, 10, 1471},
-  {122, 7, 0, 8, 7, 8, 1491},
-  {123, 5, 0, 6, 4, 11, 1505},
-  {124, 4, 1, 5, 2, 13, 1516},
-  {125, 5, 0, 6, 5, 12, 1523},
-  {126, 7, 0, 10, 7, 3, 1538},
+  {33, 5, 1, 4, 3, 10, 0},
+  {34, 5, 0, 3, 5, 3, 8},
+  {35, 12, 0, 4, 12, 10, 12},
+  {36, 9, 0, 3, 8, 12, 42},
+  {37, 11, 0, 4, 11, 10, 66},
+  {38, 10, 0, 4, 10, 10, 94},
+  {39, 3, 0, 3, 3, 3, 119},
+  {40, 6, 1, 1, 5, 16, 122},
+  {41, 6, 0, 1, 6, 16, 142},
+  {42, 7, 1, 4, 5, 5, 166},
+  {43, 8, 0, 5, 8, 8, 173},
+  {44, 4, 0, 11, 3, 5, 189},
+  {45, 8, 0, 8, 7, 2, 193},
+  {46, 4, 0, 11, 4, 3, 197},
+  {47, 6, 0, 1, 6, 16, 200},
+  {48, 8, 0, 4, 8, 10, 224},
+  {49, 5, 0, 4, 4, 10, 244},
+  {50, 7, 0, 3, 7, 11, 254},
+  {51, 8, 0, 3, 8, 11, 274},
+  {52, 9, 0, 4, 9, 10, 296},
+  {53, 8, 1, 4, 7, 10, 319},
+  {54, 8, 0, 3, 8, 11, 337},
+  {55, 7, 0, 4, 7, 10, 359},
+  {56, 8, 0, 3, 8, 11, 377},
+  {57, 8, 0, 3, 8, 11, 399},
+  {58, 4, 0, 6, 4, 8, 421},
+  {59, 5, 1, 6, 3, 10, 429},
+  {60, 7, 1, 6, 5, 6, 437},
+  {61, 9, 1, 6, 8, 6, 445},
+  {62, 7, 1, 6, 5, 6, 457},
+  {63, 7, 0, 3, 7, 11, 465},
+  {64, 14, 1, 4, 13, 13, 485},
+  {65, 10, 0, 4, 10, 10, 528},
+  {66, 9, 0, 4, 8, 10, 553},
+  {67, 10, 0, 4, 10, 10, 573},
+  {68, 9, 0, 4, 9, 10, 598},
+  {69, 7, 0, 4, 7, 10, 621},
+  {70, 7, 0, 4, 7, 10, 639},
+  {71, 10, 0, 4, 10, 10, 657},
+  {72, 10, 0, 4, 9, 10, 682},
+  {73, 4, 0, 4, 3, 10, 705},
+  {74, 8, 0, 4, 7, 10, 713},
+  {75, 9, 0, 4, 9, 10, 731},
+  {76, 6, 0, 4, 6, 10, 754},
+  {77, 12, 0, 4, 11, 10, 769},
+  {78, 10, 0, 4, 9, 10, 797},
+  {79, 10, 0, 4, 10, 10, 820},
+  {80, 8, 0, 4, 8, 10, 845},
+  {81, 10, 0, 4, 10, 12, 865},
+  {82, 8, 0, 4, 8, 10, 895},
+  {83, 8, 0, 4, 8, 10, 915},
+  {84, 8, 0, 4, 8, 10, 935},
+  {85, 9, 0, 4, 9, 10, 955},
+  {86, 9, 0, 4, 9, 10, 978},
+  {87, 14, 0, 4, 13, 10, 1001},
+  {88, 9, 0, 4, 9, 10, 1034},
+  {89, 9, 0, 4, 9, 10, 1057},
+  {90, 8, 0, 4, 8, 10, 1080},
+  {91, 7, 1, 1, 5, 16, 1100},
+  {92, 10, 2, 1, 6, 16, 1120},
+  {93, 7, 1, 1, 4, 16, 1144},
+  {94, 9, 0, 4, 9, 8, 1160},
+  {95, 10, 1, 14, 8, 3, 1178},
+  {96, 4, 0, 3, 4, 3, 1184},
+  {97, 9, 0, 6, 8, 8, 1187},
+  {98, 9, 0, 4, 9, 10, 1203},
+  {99, 8, 0, 6, 8, 8, 1226},
+  {100, 9, 0, 4, 8, 10, 1242},
+  {101, 8, 0, 6, 8, 8, 1262},
+  {102, 5, 0, 3, 5, 11, 1278},
+  {103, 9, 0, 6, 8, 12, 1292},
+  {104, 9, 0, 4, 8, 10, 1316},
+  {105, 4, 0, 3, 4, 11, 1336},
+  {106, 4, -1, 3, 5, 15, 1347},
+  {107, 8, 0, 4, 8, 10, 1366},
+  {108, 4, 0, 4, 3, 10, 1386},
+  {109, 14, 0, 6, 13, 8, 1394},
+  {110, 9, 0, 6, 8, 8, 1420},
+  {111, 8, 0, 6, 8, 8, 1436},
+  {112, 9, 0, 6, 9, 12, 1452},
+  {113, 9, 0, 6, 8, 12, 1479},
+  {114, 6, 0, 6, 6, 8, 1503},
+  {115, 7, 0, 6, 7, 8, 1515},
+  {116, 5, 0, 4, 5, 10, 1529},
+  {117, 9, 0, 6, 8, 8, 1542},
+  {118, 8, 0, 6, 8, 8, 1558},
+  {119, 11, 0, 6, 11, 8, 1574},
+  {120, 8, 0, 6, 8, 8, 1596},
+  {121, 8, 0, 6, 8, 12, 1612},
+  {122, 6, 0, 6, 7, 8, 1636},
+  {123, 6, 1, 1, 5, 16, 1650},
+  {124, 4, 0, 3, 3, 13, 1670},
+  {125, 6, 1, 1, 5, 16, 1680},
+  {126, 8, 0, 8, 8, 3, 1700},
 };
-const Font font_m = {23, 15, 6, 95, font_m_glyphs, font_m_data};
+const Font font_m = {19, 13, 4, 95, font_m_glyphs, font_m_data};
 
-static const uint8_t font_l_data[] = {184,244,215,31,46,0,170,1,208,255,11,244,255,31,248,131,63,252,65,127,253,1,127,253,1,127,253,1,127,252,65,127,248,130,63,244,235,47,224,255,11,64,190,1,64,5,254,231,255,249,127,197,31,240,7,252,1,127,192,47,240,11,252,1,127,128,31,144,90,64,255,47,248,255,71,66,191,0,224,11,64,127,0,253,2,248,11,224,47,128,127,0,253,255,203,255,191,168,170,6,160,42,192,255,31,253,255,67,128,127,0,244,3,234,47,240,255,0,254,63,0,244,71,0,127,190,254,215,255,47,228,111,0,0,80,1,0,252,11,0,254,11,64,255,11,208,239,11,240,231,11,248,227,11,253,229,27,253,255,127,253,255,127,84,229,31,0,208,11,0,208,11,84,85,244,255,231,255,159,95,21,126,0,252,255,241,255,95,171,191,0,248,23,224,255,235,239,255,63,248,47,0,0,169,1,244,255,1,255,191,224,31,4,252,85,0,255,255,209,255,255,244,155,127,252,193,31,127,240,71,191,255,128,255,31,64,191,1,84,85,209,255,127,253,255,71,149,127,0,252,2,208,31,0,255,0,244,7,128,63,0,253,2,224,15,0,191,0,144,6,0,144,191,1,253,255,193,191,255,244,71,127,252,209,15,254,255,1,255,127,240,171,127,253,192,111,63,240,219,191,255,226,255,47,144,191,1,64,106,0,252,191,128,255,191,240,71,63,253,193,31,191,245,135,255,255,193,255,127,64,213,31,0,248,67,235,191,208,255,11,224,111,0,16,224,215,47,191,164,0,0,0,126,253,246,139,31,164,106,0,254,255,7,254,255,31,190,208,63,190,64,127,190,0,127,190,0,127,190,0,127,190,64,127,190,208,63,254,250,31,254,255,11,232,191,1,0,164,26,0,254,255,2,254,255,15,254,6,25,252,2,0,240,7,170,210,31,254,95,127,244,127,252,2,252,225,31,240,71,255,235,31,244,255,127,0,249,107,0,41,0,248,2,224,11,128,47,0,190,0,248,2,224,11,128,47,0,190,0,248,2,224,255,175,255,191,168,170,1,80,0,80,208,63,208,47,253,7,254,227,191,240,127,254,79,255,231,251,249,126,190,238,235,235,219,127,190,191,252,227,251,139,47,190,191,80,224,255,11,0,254,126,0,208,11,64,85,64,255,255,235,255,255,166,254,26,64,127,0,208,31,0,244,7,0,253,1,64,127,0,208,31,0,244,7,0,253,1,0,126,0,64,21,128,255,31,252,255,71,86,191,64,229,75,255,191,253,251,219,11,190,253,250,203,255,191,224,191,1,0,64,5,0,240,7,0,252,2,16,191,208,255,47,253,255,203,127,253,246,7,191,253,192,111,63,240,219,31,252,242,175,127,244,255,31,224,191,0,0,4,0,244,127,64,255,127,240,155,63,253,229,95,255,255,211,191,26,244,7,0,248,171,11,253,255,2,232,47,0,0,20,0,244,191,129,255,255,240,95,127,253,193,95,63,240,215,15,252,245,91,127,252,255,31,252,255,7,84,253,81,64,63,248,255,11,254,255,0,169,6,0,20,190,191,125,0,127,127,191,191,191,191,191,191,191,125,21,190,190,190,190,190,190,190,190,190,190,190,190,185,64,5,84,0,254,239,255,226,255,255,255,254,230,111,254,127,244,135,255,31,253,225,255,71,127,248,255,209,31,254,127,244,135,255,31,253,209,223,7,46,224,2,64,21,128,255,31,255,255,243,91,127,127,240,247,7,191,127,240,251,7,191,127,240,251,7,191,125,208,7,0,20,0,244,191,64,255,191,240,159,127,253,129,111,63,224,223,15,248,247,7,191,252,251,31,253,255,2,248,27,0,244,175,255,255,175,253,1,127,192,31,240,7,252,1,127,128,31,0,64,21,64,255,31,252,255,210,95,25,252,6,128,255,11,144,255,67,64,127,188,254,195,255,47,228,111,0,21,192,31,240,7,252,43,255,223,255,243,7,252,1,127,192,47,240,175,248,127,248,11,189,128,95,63,240,199,31,253,225,75,63,244,227,11,252,253,1,190,63,64,255,11,192,255,0,208,31,0};
+static const uint8_t font_l_data[] = {168,241,199,31,63,252,240,195,15,62,248,80,1,5,127,253,225,3,20,85,159,219,231,246,185,125,46,0,244,66,63,0,224,7,189,0,213,95,249,22,253,255,255,191,244,255,255,255,130,250,170,191,6,224,7,189,0,192,31,248,1,169,191,250,107,248,255,255,255,226,255,255,255,11,224,7,190,0,192,15,248,1,64,63,240,3,0,0,40,0,64,27,0,254,127,224,255,127,252,233,111,63,90,197,239,2,224,255,6,224,255,11,64,255,11,128,250,243,167,253,252,239,47,253,255,7,249,111,0,160,0,0,24,0,160,6,144,2,252,31,244,2,125,46,252,1,45,46,189,0,125,46,63,0,252,95,47,0,160,198,15,0,0,224,11,1,0,240,211,47,0,248,245,126,0,253,180,184,0,126,244,184,64,47,244,127,128,31,208,47,0,169,1,0,224,255,2,0,253,254,1,64,47,169,0,208,11,0,0,240,11,0,0,253,11,0,208,255,75,63,252,246,251,71,63,244,191,208,15,244,31,240,95,254,11,244,255,255,11,228,191,241,11,20,125,125,125,125,0,84,0,191,128,47,208,15,240,7,244,3,248,2,248,1,252,0,252,0,189,0,189,0,189,0,252,0,252,0,248,1,248,2,244,3,224,11,208,15,128,47,0,191,21,0,253,0,248,2,240,7,208,15,192,31,128,47,64,47,0,63,0,63,0,126,0,126,0,126,0,63,0,63,64,47,128,47,192,31,208,11,240,7,248,2,253,0,192,3,152,39,253,191,228,31,253,127,172,119,196,19,64,1,64,10,0,248,1,128,31,0,248,1,255,255,251,255,191,234,191,10,248,1,128,31,0,248,1,64,5,0,248,225,195,11,31,61,100,0,255,255,253,255,167,170,26,80,240,215,31,62,0,252,1,240,3,208,11,128,47,0,126,0,252,0,244,3,224,11,128,31,0,63,0,253,0,244,2,224,7,192,31,0,63,0,189,0,248,2,240,7,192,15,64,47,0,190,0,164,1,0,64,254,2,224,255,15,244,255,47,248,130,63,252,1,127,253,0,127,253,0,126,253,0,126,253,0,127,252,1,127,248,130,63,244,255,47,224,255,15,64,254,2,169,218,191,253,75,190,224,11,190,224,11,190,224,11,190,224,11,190,224,11,190,0,20,0,244,127,64,255,127,240,235,63,252,208,15,26,244,3,0,190,0,208,31,0,252,2,192,47,0,253,2,208,47,0,253,255,95,255,255,151,170,170,1,0,20,0,244,191,64,255,191,240,239,63,252,192,31,0,240,7,144,191,0,252,11,0,255,7,64,249,67,5,248,245,3,127,252,251,31,253,255,2,249,47,0,0,160,6,0,248,11,0,253,11,64,255,11,128,239,11,224,219,11,244,211,11,252,209,11,190,213,27,255,255,127,255,255,127,170,234,47,0,224,11,0,224,11,169,170,74,255,255,210,255,191,244,2,0,189,16,64,255,191,208,255,191,244,155,127,84,192,31,0,224,215,31,252,241,255,63,244,255,7,228,111,0,144,191,0,253,255,192,175,191,244,66,47,62,0,128,159,111,224,255,127,248,171,63,126,192,159,31,224,215,11,252,240,235,63,244,255,7,244,111,0,169,170,234,255,191,254,255,11,0,126,0,244,3,128,47,0,252,0,224,11,0,127,0,244,3,192,31,0,253,0,224,11,64,63,0,0,5,0,249,127,208,255,127,248,215,63,190,208,143,47,244,194,175,127,208,255,11,253,251,139,47,244,243,7,252,253,66,127,254,250,15,255,255,1,254,27,0,0,5,64,254,11,252,255,226,175,127,127,208,251,3,253,127,224,239,239,255,248,255,15,169,252,0,192,235,11,189,253,250,135,255,47,144,111,0,184,244,199,31,21,0,0,0,0,20,252,245,135,15,125,254,190,20,0,0,0,0,188,125,62,46,31,6,128,191,208,47,244,11,253,2,254,1,248,7,224,31,192,127,0,106,169,170,170,255,255,239,255,255,87,85,85,0,0,128,170,170,234,255,255,251,255,255,253,2,244,11,224,47,128,127,64,255,192,63,240,31,248,7,169,1,0,5,0,254,11,248,255,210,175,127,189,240,7,0,127,80,249,7,254,47,224,111,0,126,0,80,1,0,20,0,224,7,0,191,0,224,7,0,0,64,170,6,0,0,253,255,31,0,224,175,234,47,0,190,0,128,31,224,7,5,192,11,189,244,239,227,131,15,255,191,244,241,225,135,47,125,125,188,208,71,79,79,47,244,225,211,211,91,127,124,244,240,255,255,11,125,244,139,191,0,127,0,0,0,64,127,1,5,0,64,255,255,2,0,64,254,191,0,0,0,80,0,0,0,0,84,1,0,208,127,0,0,254,11,0,240,255,0,64,255,31,0,248,250,2,192,95,63,0,253,240,7,224,11,190,0,255,250,15,244,255,255,129,191,234,47,252,1,244,231,15,0,191,85,21,128,255,255,225,255,255,248,86,127,190,128,175,47,244,231,255,127,248,255,31,190,213,159,47,224,235,11,248,250,170,191,254,255,143,255,191,0,0,80,1,0,228,255,2,208,255,255,1,255,234,63,248,3,244,203,31,0,85,253,0,0,208,15,0,0,252,1,0,192,47,0,85,248,7,244,7,255,250,63,208,255,255,0,224,255,1,85,21,0,248,255,11,224,255,255,129,175,250,31,190,64,191,248,2,244,227,11,192,159,47,0,127,190,0,253,248,2,248,227,11,244,139,191,255,15,254,255,11,248,255,6,0,85,85,248,255,231,255,159,111,21,190,0,248,2,224,255,143,255,63,190,106,248,2,224,11,128,175,106,254,255,249,255,7,85,85,249,255,239,255,191,111,85,190,0,248,2,224,255,139,255,47,190,106,248,2,224,11,128,47,0,190,0,248,2,0,0,84,5,0,244,255,7,208,255,255,66,255,234,127,248,7,240,203,31,0,0,253,128,170,218,15,252,255,252,193,255,207,47,0,252,248,7,224,11,255,235,63,192,255,255,1,208,255,2,21,0,84,190,0,190,190,0,190,190,0,190,190,0,190,190,0,190,254,255,191,254,255,191,190,170,190,190,0,190,190,0,190,190,0,190,190,0,190,190,0,190,21,190,190,190,190,190,190,190,190,190,190,190,190,190,0,80,5,0,190,0,224,11,0,190,0,224,11,0,190,0,224,11,0,190,0,224,155,6,190,253,240,199,191,127,248,255,2,253,11,21,0,85,190,128,127,190,208,31,190,240,11,190,248,2,190,254,0,254,127,0,254,63,0,190,191,0,190,253,1,190,248,7,190,240,15,190,192,47,190,64,191,85,0,190,0,190,0,190,0,190,0,190,0,190,0,190,0,190,0,190,0,190,0,190,106,254,191,254,191,85,0,0,21,254,1,192,127,254,2,208,127,254,7,224,127,254,11,240,127,254,15,244,127,190,31,252,127,190,63,125,127,190,126,62,127,190,188,47,127,190,248,31,127,190,244,15,127,190,240,11,127,190,224,7,127,21,0,84,248,3,240,231,47,192,159,255,1,127,254,15,252,249,191,240,231,251,199,159,111,63,127,190,248,254,249,194,255,231,11,253,159,47,224,127,190,0,255,249,2,244,7,0,84,5,0,144,255,31,0,253,255,47,192,127,229,31,248,3,224,15,127,0,240,215,15,0,252,245,3,0,126,252,1,192,31,191,0,244,67,127,64,191,128,255,250,15,128,255,255,1,64,254,11,0,85,21,128,255,191,224,255,191,248,150,127,190,192,159,47,240,231,91,254,249,255,47,254,255,130,111,5,224,11,0,248,2,0,190,0,128,47,0,0,0,84,5,0,144,255,31,0,253,255,47,192,127,229,31,248,3,224,15,127,0,240,215,15,0,252,245,3,0,126,252,1,192,31,191,0,244,71,127,64,191,128,255,250,31,128,255,255,1,64,254,127,0,0,64,127,0,0,128,127,0,0,64,21,85,21,128,255,191,224,255,191,248,170,127,190,192,175,47,224,231,91,253,249,255,47,254,255,129,111,63,224,203,47,248,210,31,190,224,139,47,244,7,64,85,0,248,255,129,255,255,240,71,127,253,64,21,255,1,128,255,27,128,255,47,0,249,31,0,240,219,15,248,242,91,127,244,255,11,228,191,0,84,85,149,255,255,235,255,255,82,253,85,0,127,0,192,31,0,240,7,0,252,1,0,127,0,192,31,0,240,7,0,252,1,0,127,0,192,31,0,21,0,21,127,0,127,127,0,127,127,0,127,127,0,127,127,0,127,127,0,127,127,0,127,127,0,127,127,64,127,254,128,63,253,255,47,248,255,11,144,255,1,85,0,80,229,15,0,127,253,1,244,131,47,128,47,244,3,252,1,127,208,15,224,11,190,0,253,240,7,192,95,63,0,248,250,2,64,255,31,0,240,255,0,0,254,11,0,208,63,0,84,0,85,0,21,253,0,255,0,127,252,65,255,65,63,248,66,255,129,47,248,130,255,130,47,244,195,255,195,31,240,211,235,199,15,224,215,215,215,11,224,231,215,235,7,208,251,195,239,7,192,255,130,255,3,128,255,65,255,2,128,255,65,255,1,64,255,0,255,1,21,0,85,191,64,127,253,129,47,248,211,31,240,251,11,208,255,3,128,255,1,64,255,0,192,255,1,224,255,3,244,247,11,252,210,31,253,128,63,191,0,191,85,0,84,245,7,244,199,47,240,11,253,208,31,240,139,47,64,127,127,0,248,191,0,208,255,0,0,254,2,0,244,3,0,208,15,0,64,63,0,0,253,0,0,244,3,0,170,170,246,255,191,255,255,91,149,127,0,253,1,224,11,128,63,0,253,1,240,11,128,63,0,253,1,240,175,106,255,255,251,255,191,85,229,255,254,239,87,126,224,7,126,224,7,126,224,7,126,224,7,126,224,7,126,224,7,126,224,7,126,224,171,254,239,255,189,0,240,3,192,31,0,126,0,244,2,208,15,0,127,0,248,1,208,11,64,63,0,252,0,224,7,128,47,0,189,0,240,3,192,31,0,190,0,244,2,192,15,0,127,0,248,1,144,6,84,69,255,215,255,81,126,128,31,224,7,248,1,126,128,31,224,7,248,1,126,128,31,224,7,248,1,126,128,31,224,7,248,165,127,253,95,255,7,0,164,1,0,244,11,0,224,127,0,208,255,2,128,239,15,0,127,190,0,190,244,3,252,129,31,244,3,253,240,7,240,151,10,64,42,254,255,255,249,255,255,231,255,255,31,1,184,225,47,185,0,1,64,26,105,224,255,190,248,255,191,252,150,191,253,0,190,189,0,190,253,0,190,253,65,191,252,235,191,244,255,191,144,127,190,190,0,0,190,0,0,190,0,0,190,164,1,190,255,11,254,255,47,254,150,63,190,0,127,190,0,126,190,0,127,254,65,127,254,235,63,254,255,31,190,253,6,64,105,0,248,255,129,255,255,240,91,191,253,64,85,47,0,208,15,0,244,7,190,252,251,31,253,255,2,248,31,0,0,0,190,0,0,190,0,0,190,64,26,190,224,255,190,248,255,191,252,150,191,253,0,190,189,0,190,253,0,190,253,65,191,252,235,191,244,255,191,144,127,190,0,105,0,208,255,7,244,255,31,252,130,63,253,85,127,253,255,127,253,170,42,252,65,42,248,235,47,240,255,15,128,255,2,128,31,248,71,255,225,15,249,155,255,235,255,230,27,248,2,190,128,47,224,11,248,2,190,128,47,0,64,26,105,224,255,190,248,255,191,252,150,191,253,0,190,189,0,190,253,0,190,253,65,191,252,235,191,244,255,191,144,127,190,0,0,190,252,1,191,248,235,127,240,255,47,128,255,7,0,20,0,190,0,128,47,0,224,11,0,248,146,6,190,255,139,255,255,231,95,253,250,2,190,190,128,175,47,224,235,11,248,250,2,190,190,128,175,47,224,11,16,240,215,31,127,16,160,194,31,127,252,241,199,31,127,252,241,199,31,127,64,0,126,240,11,126,64,0,105,224,11,190,224,11,190,224,11,190,224,11,190,224,11,190,224,11,190,253,231,63,190,1,190,0,128,47,0,224,11,0,248,66,106,190,240,143,47,254,224,219,31,248,254,1,254,47,128,255,15,224,235,11,248,242,11,190,244,139,47,248,7,190,190,190,190,190,190,190,190,190,190,190,190,190,190,105,164,1,105,224,251,191,252,47,254,255,255,255,235,95,253,91,255,190,128,63,208,239,11,248,2,253,190,128,47,208,239,11,248,2,253,190,128,47,208,239,11,248,2,253,190,128,47,208,15,105,164,129,239,255,226,255,255,249,87,191,190,128,175,47,224,235,11,248,250,2,190,190,128,175,47,224,235,11,248,2,0,105,0,224,255,11,244,255,31,252,150,63,253,0,127,189,0,126,253,0,127,253,65,127,248,235,47,244,255,15,128,255,2,105,164,1,190,255,11,254,255,47,254,150,63,190,0,127,190,0,126,190,0,127,254,65,127,254,235,63,254,255,31,190,253,6,190,0,0,190,0,0,190,0,0,190,0,0,190,0,0,64,26,105,224,255,190,248,255,191,252,150,191,253,0,190,189,0,190,253,0,190,253,65,191,252,235,191,244,255,191,144,127,190,0,0,190,0,0,190,0,0,190,0,0,190,0,0,190,105,164,175,239,255,251,191,254,129,47,224,11,248,2,190,128,47,224,11,0,144,22,244,255,225,255,223,15,190,191,1,244,191,1,249,159,6,189,191,249,246,255,71,254,6,244,3,244,3,249,43,254,127,254,127,244,23,244,3,244,3,244,3,244,3,240,111,224,127,128,127,42,64,218,31,224,251,7,248,254,1,190,127,128,239,31,224,251,7,248,254,66,191,254,251,111,255,255,75,255,249,2,105,0,105,253,0,127,252,65,63,248,130,47,244,195,31,240,215,15,224,231,11,208,251,7,192,255,3,128,255,1,64,255,0,105,144,10,164,190,224,31,252,189,240,47,252,252,240,47,189,248,244,63,125,248,249,125,62,244,186,189,47,240,126,188,31,224,127,248,31,208,63,244,15,208,47,244,11,105,64,90,127,240,135,127,190,128,255,15,192,255,1,208,47,0,252,15,128,255,11,244,247,7,190,248,211,15,252,2,105,0,105,254,0,191,253,65,63,248,130,47,244,195,31,240,215,15,208,239,7,192,255,3,128,255,2,64,255,0,0,190,0,0,127,0,128,63,0,192,31,0,208,15,0,240,11,0,169,170,249,255,235,255,47,149,127,0,191,0,191,0,190,0,190,0,253,171,250,255,235,255,47,0,41,244,15,254,195,95,240,3,252,0,126,128,31,224,7,248,209,47,244,7,249,7,248,1,126,128,31,224,7,252,0,63,192,191,208,63,208,15,105,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,190,105,25,128,127,224,63,212,31,224,7,252,0,63,192,15,244,2,252,1,254,2,190,240,27,253,64,47,192,15,240,3,248,1,127,248,15,254,130,47,0,224,27,124,248,255,63,252,254,47,61,228,11};
 static const Glyph font_l_glyphs[] = {
   {32, 4, -1, 0, 0, 0, 0},
-  {46, 5, 0, 18, 5, 4, 0},
-  {48, 12, 0, 9, 12, 13, 5},
-  {49, 8, 0, 9, 7, 13, 44},
-  {50, 10, 0, 9, 10, 13, 67},
-  {51, 10, 0, 9, 10, 13, 100},
-  {52, 12, 0, 9, 12, 13, 133},
-  {53, 10, 1, 9, 9, 13, 172},
-  {54, 11, 0, 9, 11, 13, 202},
-  {55, 10, 0, 9, 10, 13, 238},
-  {56, 11, 0, 9, 11, 13, 271},
-  {57, 11, 0, 9, 11, 13, 307},
-  {58, 5, 0, 11, 5, 11, 343},
-  {68, 13, 1, 9, 12, 13, 357},
-  {71, 13, 0, 9, 13, 13, 396},
-  {76, 10, 1, 9, 9, 13, 439},
-  {77, 16, 1, 9, 14, 13, 469},
-  {84, 11, 0, 9, 11, 13, 515},
-  {97, 11, 0, 11, 10, 11, 551},
-  {100, 12, 0, 8, 11, 14, 579},
-  {101, 11, 0, 11, 11, 11, 618},
-  {103, 11, 0, 11, 11, 15, 649},
-  {105, 6, 1, 7, 4, 15, 691},
-  {108, 6, 1, 8, 4, 14, 706},
-  {109, 17, 1, 11, 15, 11, 720},
-  {110, 12, 1, 11, 10, 11, 762},
-  {111, 12, 0, 11, 11, 11, 790},
-  {114, 8, 1, 12, 7, 10, 821},
-  {115, 10, 0, 11, 10, 11, 839},
-  {116, 8, 1, 9, 7, 13, 867},
-  {118, 11, 0, 12, 11, 10, 890},
+  {33, 7, 1, 6, 5, 14, 0},
+  {34, 8, 0, 4, 7, 5, 18},
+  {35, 17, 0, 6, 17, 14, 27},
+  {36, 13, 0, 5, 11, 17, 87},
+  {37, 17, 0, 6, 16, 14, 134},
+  {38, 15, 0, 6, 15, 14, 190},
+  {39, 4, 0, 4, 4, 5, 243},
+  {40, 9, 1, 2, 8, 22, 248},
+  {41, 9, 0, 2, 8, 22, 292},
+  {42, 10, 1, 6, 8, 8, 336},
+  {43, 12, 1, 8, 10, 11, 352},
+  {44, 5, 0, 17, 5, 6, 380},
+  {45, 11, 1, 12, 9, 3, 388},
+  {46, 5, 0, 16, 5, 4, 395},
+  {47, 9, 0, 2, 9, 22, 400},
+  {48, 12, 0, 6, 12, 14, 450},
+  {49, 7, 0, 6, 6, 14, 492},
+  {50, 11, 0, 5, 11, 15, 513},
+  {51, 11, 0, 5, 11, 15, 555},
+  {52, 13, 1, 6, 12, 14, 597},
+  {53, 12, 1, 6, 11, 14, 639},
+  {54, 12, 1, 6, 11, 14, 678},
+  {55, 10, 0, 6, 10, 14, 717},
+  {56, 12, 1, 5, 11, 15, 752},
+  {57, 12, 1, 5, 10, 15, 794},
+  {58, 5, 0, 9, 5, 11, 832},
+  {59, 7, 1, 9, 4, 14, 846},
+  {60, 10, 1, 9, 8, 9, 860},
+  {61, 13, 1, 9, 11, 8, 878},
+  {62, 10, 1, 9, 8, 9, 900},
+  {63, 10, 0, 5, 10, 15, 918},
+  {64, 21, 1, 7, 19, 18, 956},
+  {65, 14, 0, 6, 14, 14, 1042},
+  {66, 13, 1, 6, 11, 14, 1091},
+  {67, 14, 0, 6, 14, 14, 1130},
+  {68, 14, 1, 6, 13, 14, 1179},
+  {69, 10, 1, 6, 9, 14, 1225},
+  {70, 10, 1, 6, 9, 14, 1257},
+  {71, 14, 0, 6, 14, 14, 1289},
+  {72, 14, 1, 6, 12, 14, 1338},
+  {73, 6, 1, 6, 4, 14, 1380},
+  {74, 11, 0, 6, 10, 14, 1394},
+  {75, 13, 1, 6, 12, 14, 1429},
+  {76, 9, 1, 6, 8, 14, 1471},
+  {77, 17, 1, 6, 16, 14, 1499},
+  {78, 14, 1, 6, 13, 14, 1555},
+  {79, 15, 0, 6, 15, 14, 1601},
+  {80, 12, 1, 6, 11, 14, 1654},
+  {81, 15, 0, 6, 15, 17, 1693},
+  {82, 12, 1, 6, 11, 14, 1757},
+  {83, 12, 0, 6, 11, 14, 1796},
+  {84, 11, 0, 6, 11, 14, 1835},
+  {85, 13, 1, 6, 12, 14, 1874},
+  {86, 14, 0, 6, 14, 14, 1916},
+  {87, 20, 0, 6, 20, 14, 1965},
+  {88, 14, 1, 6, 12, 14, 2035},
+  {89, 13, 0, 6, 13, 14, 2077},
+  {90, 11, 1, 6, 10, 14, 2123},
+  {91, 10, 2, 2, 6, 22, 2158},
+  {92, 15, 3, 2, 9, 22, 2191},
+  {93, 10, 1, 2, 7, 22, 2241},
+  {94, 13, 0, 6, 13, 11, 2280},
+  {95, 15, 1, 21, 13, 3, 2316},
+  {96, 6, 0, 4, 5, 5, 2326},
+  {97, 13, 0, 9, 12, 11, 2333},
+  {98, 13, 1, 6, 12, 14, 2366},
+  {99, 11, 0, 9, 11, 11, 2408},
+  {100, 13, 0, 6, 12, 14, 2439},
+  {101, 12, 0, 9, 12, 11, 2481},
+  {102, 7, 0, 5, 7, 15, 2514},
+  {103, 13, 0, 9, 12, 17, 2541},
+  {104, 13, 1, 6, 11, 14, 2592},
+  {105, 6, 0, 4, 5, 16, 2631},
+  {106, 6, -1, 4, 6, 21, 2651},
+  {107, 12, 1, 6, 11, 14, 2683},
+  {108, 6, 1, 6, 4, 14, 2722},
+  {109, 20, 1, 9, 18, 11, 2736},
+  {110, 13, 1, 9, 11, 11, 2786},
+  {111, 12, 0, 9, 12, 11, 2817},
+  {112, 13, 1, 9, 12, 16, 2850},
+  {113, 13, 0, 9, 12, 16, 2898},
+  {114, 8, 1, 9, 7, 11, 2946},
+  {115, 11, 1, 9, 9, 11, 2966},
+  {116, 8, 0, 7, 8, 13, 2991},
+  {117, 13, 1, 9, 11, 11, 3017},
+  {118, 12, 0, 9, 12, 11, 3048},
+  {119, 16, 0, 9, 16, 11, 3081},
+  {120, 11, 0, 9, 11, 11, 3125},
+  {121, 12, 0, 9, 12, 16, 3156},
+  {122, 9, 0, 9, 9, 11, 3204},
+  {123, 9, 1, 2, 7, 22, 3229},
+  {124, 6, 1, 4, 4, 19, 3268},
+  {125, 9, 1, 2, 7, 22, 3287},
+  {126, 12, 0, 12, 12, 4, 3326},
 };
-const Font font_l = {33, 21, 9, 31, font_l_glyphs, font_l_data};
+const Font font_l = {27, 20, 6, 95, font_l_glyphs, font_l_data};
 
-static const uint8_t ic_pause_o_data[] = {228,7,249,65,255,219,255,226,255,251,255,252,255,255,127,255,255,255,223,255,255,255,247,255,255,255,253,255,255,127,255,255,255,223,255,255,255,247,255,255,255,253,255,255,127,255,255,255,223,255,255,255,211,255,246,191,224,47,248,11,64,0,16,0};
-const Icon ic_pause_o = {15, 17, 0, 0, 15, 17, ic_pause_o_data};
-static const uint8_t ic_pause_f_data[] = {164,0,41,253,66,191,254,131,255,254,131,255,254,131,255,254,131,255,254,131,255,254,131,255,254,131,255,254,131,255,254,131,255,254,131,255,254,130,191,184,1,110};
-const Icon ic_pause_f = {15, 17, 1, 1, 12, 14, ic_pause_f_data};
-static const uint8_t ic_play_data[] = {2,0,0,47,0,0,255,1,0,255,27,0,255,191,0,255,255,11,255,255,127,255,255,191,255,255,11,255,255,1,255,47,0,255,2,0,111,0,0,7,0,0};
-const Icon ic_play = {14, 15, 1, 0, 12, 14, ic_play_data};
-static const uint8_t ic_restart_data[] = {0,27,0,0,253,7,0,254,255,1,254,239,15,125,47,188,184,28,208,243,1,0,223,7,0,124,46,0,244,248,0,224,194,31,228,7,253,255,7,128,255,6,0,80,0,0};
-const Icon ic_restart = {14, 14, 1, 0, 13, 14, ic_restart_data};
-static const uint8_t ic_back_data[] = {0,32,0,184,0,190,64,47,208,15,244,7,252,1,126,0,127,0,253,1,244,2,224,11,128,47,0,190,0,248,0,36};
-const Icon ic_back = {10, 17, 1, 0, 8, 16, ic_back_data};
-static const uint8_t ic_next_data[] = {20,0,244,1,208,31,0,189,0,224,11,0,190,0,224,11,0,62,0,248,1,248,2,244,2,244,3,244,7,240,7,224,7,0,9,0};
-const Icon ic_next = {10, 17, 1, 0, 9, 16, ic_next_data};
-static const uint8_t ic_left_data[] = {64,130,235,175,191,244,2,10};
-const Icon ic_left = {6, 6, 1, 0, 5, 6, ic_left_data};
-static const uint8_t ic_right_data[] = {5,224,6,254,226,127,190,160,0};
-const Icon ic_right = {6, 6, 0, 0, 6, 6, ic_right_data};
-static const uint8_t ic_lock_data[] = {64,47,0,173,11,224,224,0,11,29,248,255,231,255,191,254,255,235,255,191,254,255,235,255,191,253,255,7};
-const Icon ic_lock = {10, 11, 0, 0, 10, 11, ic_lock_data};
+static const uint8_t ic_pause_data[] = {62,248,252,241,247,199,223,31,127,127,252,253,241,247,199,223,31,127,127,252,253,240,67,0,1};
+const Icon ic_pause = {12, 12, 2, 1, 9, 11, ic_pause_data};
+static const uint8_t ic_play_data[] = {6,0,188,0,240,47,192,255,7,255,255,253,255,251,255,194,191,1,127,0,28,0,0};
+const Icon ic_play = {12, 12, 2, 1, 9, 10, ic_play_data};
+static const uint8_t ic_restart_data[] = {0,144,0,144,250,1,254,255,226,235,127,125,192,135,11,32,224,2,0,244,0,0,184,165,1,248,127,0,164,2,0};
+const Icon ic_restart = {12, 12, 1, 0, 11, 11, ic_restart_data};
+static const uint8_t ic_grid_data[] = {254,224,207,127,252,247,31,255,253,195,63,20,64,1,0,0,224,15,254,252,199,127,255,241,223,63,252,67,1,20,0};
+const Icon ic_grid = {12, 12, 1, 1, 11, 11, ic_grid_data};
+static const uint8_t ic_back_data[] = {0,8,128,11,248,129,31,248,129,31,240,7,244,7,244,7,244,7,244,2,36};
+const Icon ic_back = {11, 12, 2, 0, 7, 12, ic_back_data};
+static const uint8_t ic_next_data[] = {20,64,31,208,31,208,31,208,31,208,15,224,3,126,224,7,126,224,7,96,0};
+const Icon ic_next = {11, 12, 2, 0, 7, 12, ic_next_data};
+static const uint8_t ic_check_data[] = {0,16,0,176,0,184,4,46,94,31,253,7,244,1,80,0};
+const Icon ic_check = {10, 9, 1, 1, 8, 8, ic_check_data};
+static const uint8_t ic_flag_data[] = {7,0,252,26,240,255,219,255,27,191,1,44,0,112,0,192,1,0,7,0,28,0,112,0,0};
+const Icon ic_flag = {11, 11, 1, 0, 9, 11, ic_flag_data};
diff --git a/games/numdrive/src/font.h b/games/numdrive/src/font.h
index 5b6e97b..d16d34c 100644
--- a/games/numdrive/src/font.h
+++ b/games/numdrive/src/font.h
@@ -23,6 +23,6 @@ typedef struct {
 } Icon;
 
 extern const Font font_s, font_m, font_l;
-extern const Icon ic_pause_o, ic_pause_f, ic_play, ic_restart, ic_back, ic_next, ic_left, ic_right, ic_lock;
+extern const Icon ic_pause, ic_play, ic_restart, ic_grid, ic_back, ic_next, ic_check, ic_flag;
 
 #endif
diff --git a/games/numdrive/src/icon.png b/games/numdrive/src/icon.png
index 0411e61fe3bda75b9dc67165c55f14e0b300b675..94cf8e1fe185422598f39be6ffd5181c676dc28b 100644
GIT binary patch
literal 4336
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

literal 5854
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

diff --git a/games/numdrive/src/level.c b/games/numdrive/src/level.c
new file mode 100644
index 0000000..d0922ff
--- /dev/null
+++ b/games/numdrive/src/level.c
@@ -0,0 +1,470 @@
+/* NumDrive's levels: a short list of pieces (flat road, slopes, hills, gaps, bridges, seesaws...)
+ * built at load time into static polygons and bodies, the car, and the rules (finish line, the
+ * driver's head, water and lava). The lists are in levels_data.c. */
+#include <string.h>
+#include "nd.h"
+#include "level.h"
+
+LevelInfo L;
+
+bool circle_hits_static(v2 c, float r, int kind_lo, int kind_hi);
+bool body_hits_static(const Body *b, int kind_lo, int kind_hi);
+bool circle_hits_body(v2 c, float r, const Body *b);
+int contacts_of(int body, int *others, int max);
+void phys_reset_time(void);
+
+const char *level_name(int i) { return i >= 0 && i < level_count ? level_defs[i].name : ""; }
+
+/* --------------------------------------------------------------- statics */
+static float cx, cy; /* the road's end so far */
+static bool emit;
+static float ymin, ymax;
+static int next_group;
+
+static void track(float y) {
+  if (y < ymin) ymin = y;
+  if (y > ymax) ymax = y;
+}
+
+int level_overflow; /* the level did not fit (the checker reports it) */
+static Static *add_static(int kind) {
+  if (!emit) return 0;
+  if (nstatic >= MAX_STATIC) {
+    level_overflow = 1;
+    return 0;
+  }
+  Static *s = &statics[nstatic++];
+  memset(s, 0, sizeof *s);
+  s->kind = (uint8_t)kind;
+  return s;
+}
+
+static void finish_static(Static *s) {
+  s->minx = s->maxx = s->v[0].x;
+  s->miny = s->maxy = s->v[0].y;
+  for (int i = 1; i < s->n; i++) {
+    if (s->v[i].x < s->minx) s->minx = s->v[i].x;
+    if (s->v[i].x > s->maxx) s->maxx = s->v[i].x;
+    if (s->v[i].y < s->miny) s->miny = s->v[i].y;
+    if (s->v[i].y > s->maxy) s->maxy = s->v[i].y;
+  }
+}
+
+/* road from (cx, cy) to (x1, y1), solid down to the level's floor */
+static void ground_to(float x1, float y1) {
+  track(y1);
+  Static *s = add_static(SK_GROUND);
+  if (s) {
+    s->n = 4;
+    s->v[0] = V(cx, L.floor_y);
+    s->v[1] = V(x1, L.floor_y);
+    s->v[2] = V(x1, y1);
+    s->v[3] = V(cx, cy);
+    finish_static(s);
+  }
+  cx = x1;
+  cy = y1;
+}
+
+static void block(int kind, float x0, float y0, float x1, float y1) {
+  Static *s = add_static(kind);
+  if (!s) return;
+  s->n = 4;
+  s->v[0] = V(x0, y0);
+  s->v[1] = V(x1, y0);
+  s->v[2] = V(x1, y1);
+  s->v[3] = V(x0, y1);
+  finish_static(s);
+}
+
+/* --------------------------------------------------------------- bodies */
+static int dyn_box(int kind, float x, float y, float hw, float hh, float density, float a) {
+  if (!emit) return -1;
+  int i = body_add(kind, SH_POLY, V(x, y), a, density);
+  if (i < 0) {
+    level_overflow = 1;
+    return -1;
+  }
+  body_box(&W.body[i], hw, hh);
+  return i;
+}
+
+static void freeze(Body *b) {
+  b->frozen = 1;
+  b->im = b->iI = 0;
+}
+static void unfreeze(Body *b) {
+  b->frozen = 0;
+  b->im = b->m > 0 ? 1 / b->m : 0;
+  b->iI = b->I > 0 ? 1 / b->I : 0;
+}
+
+/* -------------------------------------------------------------- the cars */
+typedef struct {
+  float hw, hh;          /* chassis half size */
+  int8_t shape;          /* chassis outline: 0 wedge, 1 box, 2 tall */
+  uint8_t nwheel;
+  float wx[4], wy, wr;   /* wheels: x positions, height under the chassis centre, radius */
+  float bigr;            /* the first wheel's radius when different (tractor) */
+  float head_x, head_y, head_r;
+  float speed, torque, density, susp;
+} CarDef;
+
+const CarDefView car_views[CAR_COUNT] = {
+  /* body, dark, cabin, window */
+  {0xFB60, 0xA220, 0x2D7F, 0xAEFF}, {0x2E8B, 0x1445, 0xFFE0, 0xBF7F}, {0xF8B2, 0x9008, 0xFFFF, 0xAEFF},
+  {0xFE40, 0x9B80, 0xFFFF, 0x8E3F}, {0x3D8F, 0x1A87, 0xEF5D, 0x9EFF}, {0x7B5F, 0x3A2E, 0xFFFF, 0xAEFF},
+  {0xD8C3, 0x7041, 0xE71C, 0x9EFF},
+};
+
+static const CarDef cars[CAR_COUNT] = {
+  /* 0 buggy */
+  {1.05f, 0.24f, 0, 2, {-0.72f, 0.74f}, -0.28f, 0.42f, 0, -0.12f, 0.58f, 0.25f, 26, 7, 1.6f, 7},
+  /* 1 big wheels */
+  {1.15f, 0.30f, 1, 2, {-0.86f, 0.86f}, -0.55f, 0.72f, 0, -0.05f, 0.74f, 0.27f, 17, 15, 1.5f, 5},
+  /* 2 mini */
+  {0.72f, 0.22f, 2, 2, {-0.48f, 0.50f}, -0.22f, 0.32f, 0, -0.05f, 0.52f, 0.22f, 34, 3.6f, 1.6f, 9},
+  /* 3 bus, three wheels */
+  {1.75f, 0.42f, 1, 3, {-1.25f, 0.0f, 1.25f}, -0.45f, 0.44f, 0, 1.25f, 0.68f, 0.24f, 22, 12, 1.0f, 8},
+  /* 4 tractor: a big wheel behind */
+  {0.90f, 0.30f, 2, 2, {-0.48f, 0.78f}, -0.30f, 0.38f, 0.66f, -0.30f, 0.72f, 0.24f, 15, 16, 1.5f, 6},
+  /* 5 long plank car */
+  {1.55f, 0.15f, 0, 2, {-1.35f, 1.35f}, -0.20f, 0.40f, 0, 0.0f, 0.46f, 0.24f, 26, 7, 1.8f, 8},
+  /* 6 six wheels */
+  {1.50f, 0.32f, 1, 3, {-1.0f, 0.0f, 1.0f}, -0.40f, 0.48f, 0, 0.55f, 0.70f, 0.25f, 20, 14, 1.3f, 7},
+};
+
+static void make_car(int type, float x, float ground_y) {
+  if (!emit) return;
+  const CarDef *d = &cars[type];
+  float y = ground_y - d->wy + d->wr + 0.05f;
+  int c = body_add(BK_CHASSIS, SH_POLY, V(x, y), 0, d->density);
+  Body *C = &W.body[c];
+  float hw = d->hw, hh = d->hh;
+  if (d->shape == 0) { /* wedge: low nose */
+    v2 v[6] = {{-hw, -hh}, {hw, -hh}, {hw, hh * 0.2f}, {hw * 0.55f, hh}, {-hw * 0.7f, hh}, {-hw, hh * 0.6f}};
+    body_poly(C, v, 6);
+  } else if (d->shape == 1) {
+    v2 v[6] = {{-hw, -hh}, {hw, -hh}, {hw, hh * 0.5f}, {hw * 0.85f, hh}, {-hw * 0.9f, hh}, {-hw, hh * 0.7f}};
+    body_poly(C, v, 6);
+  } else {
+    v2 v[5] = {{-hw, -hh}, {hw, -hh}, {hw, hh * 0.3f}, {hw * 0.4f, hh}, {-hw, hh}};
+    body_poly(C, v, 5);
+  }
+  C->group = 1;
+  C->fr = 0.5f;
+  W.chassis = (int8_t)c;
+  W.nwheel = d->nwheel;
+  for (int k = 0; k < d->nwheel; k++) {
+    float r = k == 0 && d->bigr > 0 ? d->bigr : d->wr;
+    float wy = ground_y + r + 0.05f;
+    int w = body_add(BK_WHEEL, SH_CIRCLE, V(x + d->wx[k], wy), 0, d->density * 0.9f);
+    Body *B = &W.body[w];
+    body_circle(B, r);
+    B->group = 1;
+    B->fr = 1.25f;
+    W.wheel[k] = (int8_t)w;
+    joint_add(c, w, B->p, d->susp);
+  }
+  W.head = V(d->head_x, d->head_y);
+  W.head_r = d->head_r;
+  W.motor_speed = d->speed;
+  W.motor_torque = d->torque;
+}
+
+/* --------------------------------------------------------------- pieces */
+#define U(b) ((int8_t)(b) * 0.5f)   /* lengths: signed half metres */
+#define Q(b) ((int8_t)(b) * 0.25f)  /* heights and sizes: signed quarter metres */
+
+static int build(const uint8_t *op) {
+  cx = -10;
+  cy = 0;
+  ymin = ymax = 0;
+  next_group = 2;
+  ground_to(2, 0); /* the start */
+  for (;;) {
+    int o = *op++;
+    if (o == P_END) break;
+    if (o == P_FLAT) {
+      ground_to(cx + U(op[0]), cy);
+      op += 1;
+    } else if (o == P_SLOPE) {
+      ground_to(cx + U(op[0]), cy + Q(op[1]));
+      op += 2;
+    } else if (o == P_HILL || o == P_BUMPS) {
+      /* smooth cosine bumps: n of them over the length, height h (negative: hollows) */
+      float len = U(op[0]), h = Q(op[1]);
+      int n = o == P_BUMPS ? op[2] : 1;
+      op += o == P_BUMPS ? 3 : 2;
+      float x0 = cx, y0 = cy;
+      int seg = (int)(len / 0.8f);
+      if (seg < 4 * n) seg = 4 * n;
+      for (int i = 1; i <= seg; i++) {
+        float t = (float)i / seg;
+        ground_to(x0 + len * t, y0 + h * 0.5f * (1 - cosf(t * n * 2 * 3.14159265f)));
+      }
+    } else if (o == P_CURVE) {
+      /* a smooth change of height (a slope with rounded ends) */
+      float len = U(op[0]), dy = Q(op[1]);
+      op += 2;
+      float x0 = cx, y0 = cy;
+      int seg = (int)(len / 0.8f);
+      if (seg < 4) seg = 4;
+      for (int i = 1; i <= seg; i++) {
+        float t = (float)i / seg;
+        ground_to(x0 + len * t, y0 + dy * 0.5f * (1 - cosf(t * 3.14159265f)));
+      }
+    } else if (o == P_GAP) {
+      /* nothing between here and the other side; water or lava below if asked */
+      float len = U(op[0]), dy = Q(op[1]);
+      int pool = op[2];
+      op += 3;
+      float x0 = cx, y0 = cy, y1 = cy + dy;
+      track(y1);
+      if (pool) {
+        float top = (y0 < y1 ? y0 : y1) - 2.5f;
+        block(pool == 2 ? SK_LAVA : SK_WATER, x0, L.floor_y, x0 + len, top);
+      }
+      cx = x0 + len;
+      cy = y1;
+      ground_to(cx + 0.01f, cy);
+    } else if (o == P_STEPS) {
+      int n = op[0];
+      float w = Q(op[1]), h = Q(op[2]);
+      op += 3;
+      for (int i = 0; i < n; i++) {
+        cy += h;
+        track(cy);
+        float x1 = cx + w;
+        Static *s = add_static(SK_GROUND);
+        if (s) {
+          s->n = 4;
+          s->v[0] = V(cx, L.floor_y);
+          s->v[1] = V(x1, L.floor_y);
+          s->v[2] = V(x1, cy);
+          s->v[3] = V(cx, cy);
+          finish_static(s);
+        }
+        cx = x1;
+      }
+    } else if (o == P_BRIDGE) {
+      /* planks pinned end to end across a gap */
+      float len = U(op[0]);
+      int n = op[1];
+      op += 2;
+      float x0 = cx, y = cy, pw = len / n;
+      int g = next_group++, prev = -1;
+      for (int i = 0; i < n; i++) {
+        int b = dyn_box(BK_PLANK, x0 + pw * (i + 0.5f), y - 0.15f, pw * 0.5f, 0.15f, 0.9f, 0);
+        if (b < 0) continue;
+        W.body[b].group = (uint8_t)g;
+        joint_add(b, prev, V(x0 + pw * i, y - 0.08f), 0);
+        prev = b;
+      }
+      if (prev >= 0) joint_add(prev, -1, V(x0 + len, y - 0.08f), 0);
+      cx = x0 + len;
+      track(y - 3);
+      ground_to(cx + 0.01f, cy);
+    } else if (o == P_SEESAW) {
+      /* a plank on a pin over a gap: the far side lower by dy */
+      float len = U(op[0]), dy = Q(op[1]);
+      op += 2;
+      float x0 = cx, y = cy, mid = x0 + len * 0.5f;
+      int b = dyn_box(BK_PLANK, mid, y - 0.2f, len * 0.5f + 0.4f, 0.2f, 0.8f, 0);
+      if (b >= 0) {
+        W.body[b].group = (uint8_t)next_group++;
+        joint_add(b, -1, V(mid, y - 0.2f), 0);
+        block(SK_DECO, mid - 0.25f, y - 4, mid + 0.25f, y - 0.6f); /* its post (drawn only) */
+      }
+      cx = x0 + len;
+      cy = y + dy;
+      track(cy);
+      track(y - 4);
+      ground_to(cx + 0.01f, cy);
+    } else if (o == P_FALL) {
+      /* a slab that drops a moment after the car touches it */
+      float len = U(op[0]);
+      op += 1;
+      int b = dyn_box(BK_FALL, cx + len * 0.5f, cy - 0.3f, len * 0.5f, 0.3f, 1.2f, 0);
+      if (b >= 0) freeze(&W.body[b]);
+      cx += len;
+      track(cy - 3);
+      ground_to(cx + 0.01f, cy);
+    } else if (o == P_CRATES) {
+      int n = op[0];
+      float s = Q(op[1]);
+      op += 2;
+      float x = cx + 1 + s * 0.5f;
+      for (int i = 0; i < n; i++) {
+        int col = i % 3, row = i / 3;
+        int b = dyn_box(BK_CRATE, x + col * (s + 0.02f), cy + s * 0.5f + row * (s + 0.01f), s * 0.5f, s * 0.5f,
+                        0.18f, 0);
+        if (b >= 0) W.body[b].fr = 0.6f;
+      }
+      ground_to(cx + 2 + 3 * s, cy);
+    } else if (o == P_WALL) {
+      float h = Q(op[0]), w = Q(op[1]);
+      op += 2;
+      block(SK_BLOCK, cx + 0.5f, cy - 1, cx + 0.5f + w, cy + h);
+      track(cy + h);
+      ground_to(cx + w + 1, cy);
+    } else if (o == P_ROOF) {
+      /* a ceiling over the road, h above it, for len */
+      float len = U(op[0]), h = Q(op[1]);
+      op += 2;
+      block(SK_BLOCK, cx, cy + h, cx + len, cy + h + 1.5f);
+      track(cy + h + 1.5f);
+      ground_to(cx + len, cy);
+    } else if (o == P_LIFT) {
+      /* a platform going up and down in a gap, from the near side's height to dy above it */
+      float len = U(op[0]), dy = Q(op[1]);
+      op += 2;
+      int b = dyn_box(BK_LIFT, cx + len * 0.5f, cy - 0.25f, len * 0.5f - 0.1f, 0.25f, 1, 0);
+      if (b >= 0) {
+        Body *B = &W.body[b];
+        B->kin = 1;
+        B->im = B->iI = 0;
+        B->kx = B->p.x, B->ky = B->p.y, B->kamp = dy, B->kspeed = 1.1f, B->kaxis = 1;
+      }
+      cx += len;
+      cy += dy;
+      track(cy);
+      track(cy - dy - 3);
+      ground_to(cx + 0.01f, cy);
+    } else if (o == P_SPIN) {
+      /* a turning bar over the road */
+      float h = Q(op[0]), len = Q(op[1]);
+      int speed = (int8_t)op[2];
+      op += 3;
+      float x = cx + len * 0.5f + 1;
+      block(SK_DECO, x - 0.15f, cy - 1, x + 0.15f, cy + h); /* its post (drawn only) */
+      int b = dyn_box(BK_SPIN, x, cy + h, len * 0.5f, 0.15f, 1, 0);
+      if (b >= 0) {
+        Body *B = &W.body[b];
+        B->kin = 1;
+        B->im = B->iI = 0;
+        B->kspeed = speed * 0.25f;
+      }
+      track(cy + h + len * 0.5f);
+      ground_to(cx + len + 2, cy);
+    } else if (o == P_BALL) {
+      float r = Q(op[0]);
+      op += 1;
+      if (emit) {
+        int b = body_add(BK_BALL, SH_CIRCLE, V(cx + 1.5f + r, cy + r), 0, 0.25f);
+        if (b >= 0) body_circle(&W.body[b], r), W.body[b].fr = 0.9f;
+      }
+      ground_to(cx + 3 + 2 * r, cy);
+    } else {
+      break; /* unknown piece: stop there */
+    }
+  }
+  /* the finish: a flat stretch with the flag */
+  L.finish_x = cx + 3;
+  ground_to(cx + 14, cy);
+  block(SK_BLOCK, cx, cy - 1, cx + 1, cy + 6); /* the end wall */
+  track(cy + 6);
+  return 0;
+}
+
+static void sort_statics(void) {
+  /* insertion sort by left edge (they come almost in order) */
+  for (int i = 1; i < nstatic; i++) {
+    Static t = statics[i];
+    int j = i - 1;
+    while (j >= 0 && statics[j].minx > t.minx) {
+      statics[j + 1] = statics[j];
+      j--;
+    }
+    statics[j + 1] = t;
+  }
+  static_maxw = 0;
+  for (int i = 0; i < nstatic; i++) {
+    float w = statics[i].maxx - statics[i].minx;
+    if (w > static_maxw) static_maxw = w;
+  }
+}
+
+bool level_load(int index) {
+  if (index < 0) index = 0;
+  if (index >= level_count) index = level_count - 1;
+  const LevelDef *d = &level_defs[index];
+  memset(&W, 0, sizeof W);
+  W.chassis = -1;
+  level_overflow = 0;
+  nstatic = 0;
+  L.index = index;
+  L.theme = d->theme;
+  L.car = d->car;
+  /* first pass: how low the road goes */
+  emit = false;
+  L.floor_y = -100;
+  build(d->ops);
+  L.floor_y = ymin - 14;
+  L.kill_y = ymin - 9;
+  L.min_x = -10;
+  /* second pass: the real thing */
+  emit = true;
+  L.start_x = -4;
+  make_car(d->car, L.start_x, 0); /* first, so it always has room */
+  build(d->ops);
+  L.max_x = cx;
+  sort_statics();
+  W.state = ST_RUN;
+  W.best_x = L.start_x;
+  phys_reset_time();
+  return true;
+}
+
+/* ---------------------------------------------------------------- rules */
+static bool lose_check(void) {
+  Body *C = &W.body[W.chassis];
+  v2 h = vadd(C->p, vrot(W.head, C->c, C->s));
+  if (circle_hits_static(h, W.head_r, SK_GROUND, SK_BLOCK)) return true;
+  for (int i = 0; i < W.nbody; i++) {
+    Body *b = &W.body[i];
+    if (b->group == 1) continue;
+    v2 d = vsub(b->p, h);
+    float rr = b->r + W.head_r;
+    if (vdot(d, d) < rr * rr && circle_hits_body(h, W.head_r, b)) return true;
+  }
+  /* water, lava, falling off */
+  if (body_hits_static(C, SK_WATER, SK_LAVA)) return true;
+  for (int k = 0; k < W.nwheel; k++)
+    if (body_hits_static(&W.body[W.wheel[k]], SK_WATER, SK_LAVA)) return true;
+  if (C->p.y < L.kill_y) return true;
+  return false;
+}
+
+void rules_update(void) {
+  /* falling slabs: once the car is on them, they shake and go */
+  for (int i = 0; i < W.nbody; i++) {
+    Body *b = &W.body[i];
+    if (b->kind != BK_FALL) continue;
+    if (b->frozen) {
+      if (b->timer == 0) {
+        int others[8], n = contacts_of(i, others, 8);
+        for (int k = 0; k < n; k++)
+          if (others[k] >= 0 && W.body[others[k]].group == 1) b->timer = 1;
+      } else if (++b->timer > 40) {
+        unfreeze(b);
+      }
+    }
+  }
+  /* kinematic bodies still follow their path after the end */
+  if (W.state != ST_RUN) {
+    W.state_t++;
+    return;
+  }
+  Body *C = &W.body[W.chassis];
+  if (C->p.x > W.best_x) W.best_x = C->p.x;
+  if (lose_check()) {
+    W.state = ST_LOST;
+    W.state_t = 0;
+    return;
+  }
+  if (C->p.x >= L.finish_x) {
+    W.state = ST_WON;
+    W.state_t = 0;
+  }
+}
diff --git a/games/numdrive/src/level.h b/games/numdrive/src/level.h
new file mode 100644
index 0000000..d915fde
--- /dev/null
+++ b/games/numdrive/src/level.h
@@ -0,0 +1,34 @@
+/* NumDrive's level pieces (see level.c; the lists are made by tools/conformite/numdrive_levels.py) */
+#ifndef LEVEL_H
+#define LEVEL_H
+#include <stdint.h>
+
+/* each piece: its code, then signed half metres (counts are plain numbers) */
+enum {
+  P_END,
+  P_FLAT,   /* len */
+  P_SLOPE,  /* len, dy */
+  P_HILL,   /* len, h */
+  P_BUMPS,  /* len, h, n */
+  P_CURVE,  /* len, dy */
+  P_GAP,    /* len, dy, pool (0 none, 1 water, 2 lava) */
+  P_STEPS,  /* n, w, h */
+  P_BRIDGE, /* len, planks */
+  P_SEESAW, /* len, dy */
+  P_FALL,   /* len */
+  P_CRATES, /* n, size */
+  P_WALL,   /* h, w */
+  P_ROOF,   /* len, h */
+  P_LIFT,   /* len, dy */
+  P_SPIN,   /* h, len, speed (quarter radians a second) */
+  P_BALL,   /* r */
+};
+
+#define CAR_COUNT 7
+typedef struct {
+  uint16_t body, dark, cabin, window;
+} CarDefView;
+extern const CarDefView car_views[CAR_COUNT];
+
+#define THEME_COUNT 6
+#endif
diff --git a/games/numdrive/src/levels_data.c b/games/numdrive/src/levels_data.c
new file mode 100644
index 0000000..775e8f8
--- /dev/null
+++ b/games/numdrive/src/levels_data.c
@@ -0,0 +1,322 @@
+/* NumDrive's levels, made by tools/conformite/numdrive_levels.py (seeds in tools/levels.txt) */
+#include "nd.h"
+#include "level.h"
+
+static const uint8_t l0[] = {1,10,2,30,13,1,11,2,23,11,1,9,3,28,5,1,8,0};
+static const uint8_t l1[] = {1,12,4,72,3,3,1,16,5,26,242,1,13,4,69,3,3,1,14,0};
+static const uint8_t l2[] = {1,9,3,24,250,1,13,2,30,238,1,9,2,24,244,1,13,5,31,244,1,12,0};
+static const uint8_t l3[] = {1,12,6,4,251,0,1,8,2,16,3,6,3,248,0,1,12,5,19,246,1,14,2,15,4,6,4,248,0,1,11,0};
+static const uint8_t l4[] = {1,10,4,38,2,2,1,16,2,11,4,6,5,252,1,1,11,2,15,5,6,5,248,0,1,12,0};
+static const uint8_t l5[] = {1,7,2,20,9,1,11,2,9,3,6,4,0,1,1,12,6,4,255,1,1,9,0};
+static const uint8_t l6[] = {1,9,7,3,6,1,1,14,7,2,11,253,1,10,5,19,9,1,8,0};
+static const uint8_t l7[] = {1,8,7,4,10,1,1,9,7,4,8,1,1,14,7,3,7,1,1,15,0};
+static const uint8_t l8[] = {1,10,4,55,4,2,1,9,7,2,8,1,1,8,3,44,4,1,13,7,3,9,1,1,15,0};
+static const uint8_t l9[] = {1,11,8,14,5,1,12,8,19,6,1,12,2,10,4,6,4,252,0,1,16,0};
+static const uint8_t l10[] = {1,8,8,13,4,1,8,8,15,5,1,12,2,11,5,6,5,248,1,1,8,0};
+static const uint8_t l11[] = {1,8,2,9,4,6,3,1,1,1,15,8,16,5,1,8,6,6,249,0,1,8,0};
+static const uint8_t l12[] = {1,9,5,21,8,1,10,12,1,5,1,7,12,1,5,1,9,12,1,5,1,7,1,15,4,86,3,3,1,12,12,1,3,1,10,1,13,12,1,4,1,10,1,8,0};
+static const uint8_t l13[] = {1,8,2,12,4,6,4,251,0,1,11,12,1,2,1,12,12,1,2,1,9,12,1,2,1,10,1,14,12,1,4,1,6,1,9,12,1,6,1,11,1,9,0};
+static const uint8_t l14[] = {1,7,8,17,6,1,8,12,1,4,1,6,1,11,12,1,4,1,11,12,1,4,1,9,12,1,4,1,9,1,8,12,1,5,1,9,12,1,5,1,6,12,1,5,1,11,1,13,7,3,7,254,1,8,0};
+static const uint8_t l15[] = {1,11,7,4,10,254,1,9,12,1,5,1,8,1,14,12,1,4,1,10,12,1,4,1,6,1,12,12,1,5,1,12,1,11,12,1,2,1,11,12,1,2,1,12,1,10,0};
+static const uint8_t l16[] = {1,10,2,13,7,1,12,9,15,1,1,10,2,17,6,1,10,9,13,251,1,12,2,12,6,1,12,0};
+static const uint8_t l17[] = {1,9,8,17,6,1,11,9,13,253,1,15,3,29,6,1,11,9,14,255,1,11,0};
+static const uint8_t l18[] = {1,9,9,12,254,1,9,9,13,252,1,12,8,13,4,1,10,9,16,253,1,14,0};
+static const uint8_t l19[] = {1,7,4,80,253,3,1,12,9,14,1,1,10,12,1,4,1,9,12,1,4,1,7,1,13,9,13,0,1,11,4,41,5,3,1,12,0};
+static const uint8_t l20[] = {1,9,2,12,4,6,7,249,0,1,14,11,1,3,1,12,11,2,2,1,13,11,1,2,1,11,0};
+static const uint8_t l21[] = {1,7,5,16,247,1,14,11,2,3,1,15,4,67,252,3,1,12,11,1,3,1,11,0};
+static const uint8_t l22[] = {1,6,11,1,2,1,10,11,1,2,1,9,11,1,3,1,9,11,1,3,1,10,0};
+static const uint8_t l23[] = {1,10,2,28,15,1,11,11,2,2,1,9,5,15,246,1,12,11,2,2,1,10,11,2,3,1,12,0};
+static const uint8_t l24[] = {1,10,12,1,5,1,10,1,12,12,1,3,1,6,12,1,3,1,10,12,1,3,1,9,1,12,2,21,9,1,8,12,1,2,1,9,12,1,2,1,8,12,1,2,1,9,1,12,12,1,5,1,6,12,1,5,1,11,1,14,0};
+static const uint8_t l25[] = {1,12,10,7,1,10,10,10,1,8,2,29,237,1,10,10,8,1,15,10,9,1,10,0};
+static const uint8_t l26[] = {1,12,10,7,1,14,10,8,1,9,10,7,1,15,10,9,1,12,2,11,4,6,4,1,0,1,9,0};
+static const uint8_t l27[] = {1,9,11,2,3,1,12,10,6,1,13,2,14,2,6,5,249,1,1,15,10,6,1,11,0};
+static const uint8_t l28[] = {1,6,7,3,5,1,1,8,10,9,1,15,11,1,3,1,11,10,7,1,9,0};
+static const uint8_t l29[] = {1,11,4,37,3,2,1,8,3,47,5,1,13,4,71,4,3,1,9,4,25,4,2,1,12,0};
+static const uint8_t l30[] = {1,10,16,2,1,8,16,2,1,10,7,4,6,253,1,12,16,3,1,10,0};
+static const uint8_t l31[] = {1,10,6,6,248,1,1,9,16,3,1,10,5,14,250,1,14,16,2,1,15,0};
+static const uint8_t l32[] = {1,11,12,1,3,1,7,1,8,16,3,1,11,7,2,11,1,1,12,16,3,1,12,16,3,1,10,0};
+static const uint8_t l33[] = {1,7,10,9,1,12,16,3,1,9,8,17,5,1,10,16,2,1,13,0};
+static const uint8_t l34[] = {1,11,12,1,4,1,10,12,1,4,1,8,12,1,4,1,9,1,10,8,20,7,1,7,8,15,5,1,13,8,15,5,1,10,2,23,10,1,10,0};
+static const uint8_t l35[] = {1,11,12,1,5,1,7,12,1,5,1,11,1,13,16,2,1,12,6,5,249,1,1,9,16,3,1,14,16,2,1,10,16,3,1,13,0};
+static const uint8_t l36[] = {1,7,13,16,14,1,11,13,13,14,1,14,4,43,5,3,1,14,13,18,15,1,8,10,7,1,14,0};
+static const uint8_t l37[] = {1,6,11,1,3,1,14,13,19,14,1,12,5,16,247,1,8,13,15,16,1,11,5,16,8,1,14,13,15,16,1,14,0};
+static const uint8_t l38[] = {1,7,2,9,4,6,8,254,1,1,13,13,24,14,1,13,13,16,15,1,12,13,22,15,1,10,13,13,12,1,8,13,15,13,1,14,0};
+static const uint8_t l39[] = {1,11,8,16,5,1,9,13,16,13,1,7,10,8,1,7,13,23,16,1,8,13,24,16,1,8,13,14,15,1,10,0};
+static const uint8_t l40[] = {1,8,11,2,2,1,11,13,17,13,1,14,16,3,1,11,13,21,14,1,8,11,1,3,1,7,0};
+static const uint8_t l41[] = {1,12,2,10,3,6,8,0,2,1,11,8,14,4,1,9,10,9,1,9,8,14,4,1,7,4,39,5,2,1,11,8,22,7,1,8,0};
+static const uint8_t l42[] = {1,10,12,1,5,1,11,12,1,5,1,11,1,11,12,1,4,1,12,12,1,4,1,9,12,1,4,1,10,1,13,8,17,5,1,8,12,1,5,1,10,12,1,5,1,9,12,1,5,1,9,1,11,12,1,4,1,10,12,1,4,1,12,1,10,0};
+static const uint8_t l43[] = {1,12,2,10,3,6,8,252,2,1,9,3,44,7,1,8,9,18,0,1,10,3,46,5,1,8,13,19,13,1,9,0};
+static const uint8_t l44[] = {1,11,10,9,1,12,7,2,11,1,1,11,10,9,1,7,7,3,12,252,1,14,7,3,5,1,1,13,7,3,7,252,1,9,0};
+static const uint8_t l45[] = {1,9,5,28,21,1,13,14,11,6,1,14,14,9,9,1,9,14,10,6,1,14,16,2,1,10,0};
+static const uint8_t l46[] = {1,11,11,1,3,1,14,14,9,7,1,7,14,12,4,1,10,14,9,6,1,7,14,11,6,1,9,14,9,4,1,13,0};
+static const uint8_t l47[] = {1,10,4,68,4,3,1,11,14,11,6,1,12,8,22,7,1,10,14,9,9,1,12,14,11,8,1,12,14,11,5,1,10,0};
+static const uint8_t l48[] = {1,8,5,26,10,1,12,14,12,7,1,14,10,8,1,9,14,9,5,1,10,11,1,2,1,10,0};
+static const uint8_t l49[] = {1,11,9,12,254,1,8,3,35,4,1,8,4,46,253,2,1,9,3,44,248,1,8,7,4,6,254,1,10,0};
+static const uint8_t l50[] = {1,7,13,23,15,1,8,13,22,14,1,8,7,2,6,252,1,11,13,13,16,1,13,16,3,1,8,0};
+static const uint8_t l51[] = {1,9,12,1,3,1,12,12,1,3,1,7,1,8,12,1,3,1,12,12,1,3,1,9,12,1,3,1,7,1,10,2,16,4,6,9,254,1,1,13,12,1,4,1,7,1,12,12,1,5,1,8,12,1,5,1,11,1,9,0};
+static const uint8_t l52[] = {1,8,4,27,254,2,1,12,10,6,1,8,16,3,1,13,10,10,1,8,13,18,14,1,9,10,7,1,11,0};
+static const uint8_t l53[] = {1,8,3,44,6,1,11,5,22,249,1,8,2,24,20,1,12,5,24,18,1,11,11,1,3,1,12,0};
+static const uint8_t l54[] = {1,11,9,16,255,1,13,13,23,15,1,10,7,3,6,1,1,10,13,18,13,1,12,8,22,7,1,8,0};
+static const uint8_t l55[] = {1,8,13,13,14,1,8,16,3,1,10,13,16,12,1,9,16,2,1,10,16,2,1,7,16,3,1,14,0};
+static const uint8_t l56[] = {1,8,7,2,7,1,1,7,12,1,3,1,11,12,1,3,1,9,12,1,3,1,6,1,8,13,12,15,1,10,12,1,4,1,9,1,9,13,20,13,1,11,12,1,3,1,9,12,1,3,1,11,12,1,3,1,9,1,8,12,1,5,1,9,12,1,5,1,10,1,14,0};
+static const uint8_t l57[] = {1,8,8,15,5,1,14,8,24,8,1,13,2,18,12,1,11,8,15,5,1,10,8,21,7,1,13,8,19,6,1,11,4,49,250,2,1,8,0};
+static const uint8_t l58[] = {1,10,11,1,2,1,10,12,1,6,1,9,12,1,6,1,8,1,13,16,2,1,9,12,1,5,1,10,12,1,5,1,10,1,10,12,1,4,1,11,1,12,12,1,3,1,9,12,1,3,1,9,1,8,0};
+static const uint8_t l59[] = {1,7,14,9,5,1,9,10,11,1,9,10,10,1,14,10,11,1,8,14,12,9,1,9,10,7,1,8,0};
+static const uint8_t l60[] = {1,8,10,10,1,7,15,16,14,252,1,9,15,16,14,250,1,8,15,14,11,253,1,9,14,10,5,1,12,15,14,11,250,1,11,15,15,14,250,1,8,0};
+static const uint8_t l61[] = {1,7,12,1,6,1,11,12,1,6,1,7,12,1,6,1,8,1,10,15,16,15,250,1,12,15,16,15,3,1,12,15,16,11,6,1,13,3,31,9,1,7,15,15,13,6,1,7,12,1,4,1,6,12,1,4,1,9,1,9,0};
+static const uint8_t l62[] = {1,9,7,3,11,252,1,12,15,16,11,251,1,8,13,19,15,1,8,15,16,14,5,1,11,15,15,11,6,1,7,15,16,12,250,1,10,0};
+static const uint8_t l63[] = {1,6,15,15,13,3,1,13,15,15,14,252,1,10,15,16,10,252,1,9,15,15,11,6,1,10,8,17,6,1,13,15,15,11,6,1,7,0};
+static const uint8_t l64[] = {1,9,7,5,11,254,1,13,2,17,246,1,12,12,1,4,1,11,12,1,4,1,11,12,1,4,1,12,1,10,2,30,22,1,12,5,15,244,1,11,2,16,246,1,7,13,12,14,1,9,0};
+static const uint8_t l65[] = {1,11,5,29,21,1,10,10,8,1,7,16,3,1,9,10,9,1,9,2,13,3,6,6,253,1,1,11,10,6,1,7,0};
+static const uint8_t l66[] = {1,12,15,16,12,250,1,8,10,8,1,10,13,26,16,1,13,10,9,1,11,9,13,253,1,9,10,8,1,11,0};
+static const uint8_t l67[] = {1,12,15,14,14,252,1,10,15,14,13,4,1,13,15,16,11,5,1,12,15,14,12,250,1,12,5,21,11,1,13,15,15,12,253,1,10,0};
+static const uint8_t l68[] = {1,10,4,88,252,4,1,7,10,11,1,11,8,24,8,1,13,10,6,1,12,11,1,3,1,8,10,9,1,8,0};
+static const uint8_t l69[] = {1,8,10,7,1,7,11,1,3,1,10,11,1,3,1,12,11,1,2,1,10,10,10,1,12,11,2,3,1,10,0};
+static const uint8_t l70[] = {1,7,16,3,1,9,16,2,1,11,13,21,15,1,6,16,2,1,9,14,11,4,1,9,16,3,1,7,0};
+static const uint8_t l71[] = {1,7,15,15,15,250,1,7,14,9,5,1,13,15,16,10,4,1,8,14,9,6,1,7,15,15,15,251,1,8,14,9,9,1,10,14,8,6,1,7,0};
+static const uint8_t l72[] = {1,8,8,19,6,1,7,8,16,5,1,8,8,18,6,1,7,8,23,8,1,7,10,10,1,11,8,18,6,1,9,4,32,4,2,1,11,0};
+static const uint8_t l73[] = {1,6,15,14,11,3,1,11,15,16,14,4,1,12,15,16,12,251,1,8,15,14,11,250,1,7,15,14,15,4,1,9,15,15,12,253,1,10,8,20,7,1,13,0};
+static const uint8_t l74[] = {1,10,11,1,2,1,7,9,15,254,1,9,6,6,249,0,1,8,9,14,254,1,8,9,12,252,1,12,9,15,254,1,6,0};
+static const uint8_t l75[] = {1,12,11,2,2,1,9,11,1,2,1,11,11,1,3,1,8,11,2,3,1,8,14,9,7,1,13,11,1,2,1,7,0};
+static const uint8_t l76[] = {1,8,9,14,1,1,10,9,13,0,1,6,7,2,9,255,1,8,9,16,0,1,13,15,17,12,250,1,8,9,14,255,1,11,0};
+static const uint8_t l77[] = {1,10,12,2,3,1,9,12,2,3,1,12,12,2,3,1,9,1,10,8,20,7,1,9,13,26,13,1,11,8,17,5,1,7,4,29,249,2,1,9,8,14,5,1,12,8,15,5,1,12,0};
+static const uint8_t l78[] = {1,7,11,2,2,1,9,5,26,238,1,12,12,1,5,1,11,1,12,2,18,249,1,8,16,3,1,8,2,13,10,1,10,2,23,235,1,9,0};
+static const uint8_t l79[] = {1,7,6,5,252,0,1,12,7,3,11,1,1,11,10,7,1,7,7,4,7,1,1,9,8,18,6,1,9,7,5,7,1,1,8,3,28,6,1,9,7,3,8,1,1,12,0};
+static const uint8_t l80[] = {1,9,12,1,5,1,10,12,1,5,1,7,1,12,11,2,3,1,8,15,15,15,253,1,11,11,1,2,1,8,8,17,6,1,11,11,3,3,1,7,11,1,2,1,11,0};
+static const uint8_t l81[] = {1,9,7,4,12,1,1,12,7,5,11,1,1,10,6,5,253,1,1,7,7,2,5,253,1,12,7,4,8,1,1,11,7,5,8,1,1,12,15,15,11,5,1,7,7,3,10,254,1,7,0};
+static const uint8_t l82[] = {1,11,9,17,254,1,9,9,13,0,1,8,9,15,0,1,9,9,12,252,1,13,7,3,7,1,1,9,9,14,254,1,6,9,17,253,1,6,9,16,253,1,12,0};
+static const uint8_t l83[] = {1,10,2,13,6,6,3,252,0,1,12,12,1,4,1,8,1,11,9,15,1,1,9,12,1,4,1,12,12,1,4,1,7,1,11,12,1,6,1,12,1,10,12,1,5,1,11,12,1,5,1,8,12,1,5,1,11,1,12,12,1,4,1,9,12,1,4,1,7,12,1,4,1,8,1,10,0};
+static const uint8_t l84[] = {1,9,2,9,5,6,5,255,0,1,10,12,1,3,1,11,1,10,7,4,10,252,1,6,12,1,3,1,9,12,1,3,1,10,12,1,3,1,7,1,13,12,1,5,1,9,12,1,5,1,11,1,13,12,1,4,1,11,12,1,4,1,7,12,1,4,1,12,1,7,12,1,3,1,10,12,1,3,1,7,12,1,3,1,8,1,8,0};
+static const uint8_t l85[] = {1,7,2,10,4,6,3,246,0,1,7,12,1,4,1,12,1,7,12,1,4,1,9,12,1,4,1,12,12,1,4,1,7,1,9,12,1,6,1,10,1,7,14,9,7,1,11,12,1,6,1,7,12,1,6,1,10,12,1,6,1,11,1,7,15,14,12,251,1,8,12,1,5,1,9,1,10,0};
+static const uint8_t l86[] = {1,8,3,44,4,1,9,12,1,5,1,11,12,1,5,1,7,12,1,5,1,9,1,7,10,11,1,10,12,1,6,1,9,1,11,3,43,6,1,12,12,1,3,1,8,12,1,3,1,11,1,11,12,1,5,1,11,12,1,5,1,12,1,7,0};
+static const uint8_t l87[] = {1,8,12,1,3,1,8,1,10,12,1,4,1,9,1,12,15,16,11,253,1,8,12,1,3,1,11,12,1,3,1,7,12,1,3,1,12,1,7,15,15,15,252,1,10,12,1,4,1,11,12,1,4,1,10,1,12,2,13,6,1,9,12,1,3,1,8,1,9,0};
+static const uint8_t l88[] = {1,6,5,20,247,1,7,13,27,14,1,11,8,16,5,1,9,13,23,15,1,7,13,22,14,1,11,13,19,15,1,8,15,16,14,250,1,12,13,22,15,1,7,0};
+static const uint8_t l89[] = {1,9,10,10,1,8,2,13,3,6,10,247,2,1,8,10,10,1,10,2,14,6,6,3,251,2,1,6,16,3,1,9,2,13,6,6,6,248,2,1,11,16,3,1,11,0};
+static const uint8_t l90[] = {1,11,8,13,4,1,12,2,29,233,1,12,13,27,15,1,7,2,19,247,1,11,5,14,10,1,11,2,22,234,1,8,9,14,254,1,11,0};
+static const uint8_t l91[] = {1,8,2,15,15,1,12,16,4,1,6,8,25,9,1,8,16,3,1,6,8,26,9,1,12,16,4,1,11,3,28,8,1,7,0};
+static const uint8_t l92[] = {1,12,15,14,15,3,1,8,15,16,14,253,1,8,14,8,4,1,8,15,14,15,6,1,10,10,10,1,6,15,16,11,4,1,11,7,4,7,1,1,12,15,15,14,252,1,10,0};
+static const uint8_t l93[] = {1,7,11,2,2,1,10,12,1,3,1,9,12,1,3,1,10,1,8,15,14,14,251,1,11,12,1,3,1,9,12,1,3,1,8,1,9,12,1,3,1,9,12,1,3,1,10,12,1,3,1,10,1,9,12,1,2,1,7,12,1,2,1,9,12,1,2,1,12,1,6,12,1,5,1,9,1,11,12,1,3,1,8,1,6,0};
+static const uint8_t l94[] = {1,11,4,61,7,3,1,8,13,21,15,1,10,13,29,15,1,7,13,18,13,1,10,16,3,1,7,13,23,13,1,12,2,13,5,6,8,247,2,1,11,13,28,14,1,8,0};
+static const uint8_t l95[] = {1,8,10,8,1,11,10,6,1,9,6,7,254,2,1,11,10,12,1,8,9,17,254,1,9,10,12,1,8,2,18,245,1,9,0};
+static const uint8_t l96[] = {1,9,13,19,13,1,7,13,19,13,1,8,13,16,15,1,8,13,20,13,1,6,13,21,14,1,6,13,20,14,1,11,7,5,6,252,1,7,0};
+static const uint8_t l97[] = {1,7,2,14,3,6,6,253,1,1,8,2,11,4,6,4,250,0,1,8,2,9,7,6,5,253,1,1,7,2,10,7,6,5,250,0,1,10,10,12,1,12,2,15,3,6,5,254,0,1,11,13,17,14,1,11,0};
+static const uint8_t l98[] = {1,11,12,1,5,1,8,1,6,13,24,15,1,9,13,15,15,1,11,13,19,14,1,8,13,14,12,1,10,13,27,12,1,10,13,17,15,1,10,13,28,12,1,8,0};
+static const uint8_t l99[] = {1,7,13,13,14,1,10,5,19,240,1,7,2,26,8,1,9,2,14,12,1,6,2,16,242,1,11,2,21,9,1,7,12,1,4,1,8,12,1,4,1,7,12,1,4,1,7,1,6,0};
+static const uint8_t l100[] = {1,10,12,1,5,1,11,12,1,5,1,8,1,9,15,15,14,252,1,10,8,22,7,1,11,15,14,11,253,1,9,15,15,13,6,1,12,15,16,13,4,1,7,15,14,14,251,1,7,15,15,13,250,1,11,0};
+static const uint8_t l101[] = {1,8,15,14,13,251,1,9,12,1,2,1,9,12,1,2,1,8,1,6,8,17,6,1,11,12,1,4,1,6,1,9,12,1,2,1,11,12,1,2,1,9,1,12,12,1,5,1,9,12,1,5,1,7,1,6,16,3,1,11,12,1,3,1,9,12,1,3,1,8,12,1,3,1,6,1,9,0};
+static const uint8_t l102[] = {1,7,5,19,10,1,8,15,15,11,250,1,6,15,15,12,4,1,7,15,15,11,6,1,10,14,11,10,1,6,15,14,14,252,1,8,8,27,9,1,11,15,14,12,3,1,6,15,14,14,4,1,11,0};
+static const uint8_t l103[] = {1,7,8,20,7,1,6,5,28,236,1,10,5,28,10,1,8,2,12,13,1,11,16,4,1,6,5,15,248,1,8,3,28,10,1,6,2,29,10,1,12,0};
+static const uint8_t l104[] = {1,9,11,2,3,1,10,10,12,1,8,16,3,1,8,10,11,1,9,10,9,1,7,10,8,1,10,13,24,14,1,11,10,11,1,8,10,9,1,6,0};
+static const uint8_t l105[] = {1,11,10,7,1,8,10,8,1,12,10,12,1,5,10,11,1,8,14,8,9,1,6,10,9,1,7,8,28,9,1,12,10,10,1,11,0};
+static const uint8_t l106[] = {1,8,3,22,3,1,8,7,5,11,252,1,10,3,29,6,1,11,7,3,11,254,1,9,9,14,254,1,7,7,4,6,1,1,10,2,26,22,1,8,7,6,8,253,1,9,0};
+static const uint8_t l107[] = {1,8,12,1,4,1,11,12,1,4,1,12,12,1,4,1,7,1,8,7,6,5,1,1,8,9,13,0,1,8,7,3,7,1,1,10,12,1,3,1,9,12,1,3,1,10,12,1,3,1,10,1,7,7,5,11,254,1,6,8,18,6,1,7,7,6,6,253,1,8,0};
+static const uint8_t l108[] = {1,6,15,15,12,5,1,10,13,18,13,1,7,14,10,4,1,6,13,27,13,1,6,16,3,1,8,13,22,13,1,9,14,9,8,1,7,13,30,15,1,7,0};
+static const uint8_t l109[] = {1,9,15,16,14,252,1,9,9,14,1,1,11,9,13,252,1,9,9,17,252,1,9,8,27,9,1,10,9,17,1,1,10,15,16,13,3,1,11,9,14,0,1,6,9,13,253,1,6,0};
+static const uint8_t l110[] = {1,11,7,6,7,252,1,11,7,2,8,1,1,10,10,8,1,9,7,6,11,1,1,9,5,21,6,1,6,7,6,9,252,1,9,7,5,8,252,1,11,7,2,9,1,1,7,13,28,15,1,6,0};
+static const uint8_t l111[] = {1,11,8,21,7,1,7,8,28,10,1,7,8,25,9,1,11,3,39,7,1,9,8,16,5,1,9,3,47,8,1,10,13,30,12,1,7,4,55,6,3,1,5,12,1,4,1,6,12,1,4,1,11,1,8,0};
+static const uint8_t l112[] = {1,6,4,28,7,2,1,6,9,14,252,1,5,5,25,245,1,7,9,12,252,1,9,9,17,255,1,7,9,15,253,1,9,2,16,9,1,10,9,12,255,1,9,0};
+static const uint8_t l113[] = {1,10,7,4,9,253,1,10,12,1,5,1,9,12,1,5,1,7,12,1,5,1,9,1,5,13,24,12,1,6,12,1,2,1,11,1,10,9,18,255,1,11,12,1,5,1,11,1,8,13,15,14,1,9,12,1,2,1,11,1,9,12,1,4,1,7,12,1,4,1,7,12,1,4,1,11,1,7,0};
+static const uint8_t l114[] = {1,8,9,14,253,1,10,9,15,253,1,10,3,47,5,1,10,9,13,253,1,11,10,9,1,6,9,14,0,1,11,5,18,6,1,10,9,13,0,1,8,12,1,5,1,7,12,1,5,1,10,1,10,0};
+static const uint8_t l115[] = {1,7,8,26,9,1,10,9,17,252,1,8,3,45,10,1,8,9,13,1,1,11,9,18,0,1,8,9,16,0,1,10,11,2,2,1,10,9,12,255,1,8,14,10,7,1,8,0};
+static const uint8_t l116[] = {1,9,3,43,248,1,8,8,21,7,1,9,2,12,7,6,6,255,1,1,6,8,26,9,1,11,9,12,0,1,7,8,17,6,1,10,11,2,2,1,9,8,12,4,1,8,0};
+static const uint8_t l117[] = {1,11,5,18,243,1,5,2,32,9,1,10,2,9,7,6,6,247,1,1,10,2,20,249,1,10,13,15,13,1,7,5,20,234,1,7,9,15,1,1,8,2,16,14,1,8,0};
+static const uint8_t l118[] = {1,12,9,15,255,1,5,9,15,255,1,5,2,15,8,6,10,251,0,1,8,9,14,254,1,7,7,5,11,253,1,10,9,17,255,1,7,8,21,7,1,9,9,13,253,1,10,0};
+static const uint8_t l119[] = {1,6,9,14,254,1,8,9,14,253,1,10,7,3,10,251,1,8,9,18,252,1,5,9,13,255,1,6,9,16,254,1,9,9,14,0,1,7,9,16,254,1,9,0};
+static const uint8_t l120[] = {1,10,2,25,247,1,8,5,22,234,1,9,9,14,252,1,11,2,17,15,1,6,13,29,14,1,9,2,20,243,1,7,7,6,5,254,1,7,5,18,19,1,10,4,120,7,5,1,5,0};
+static const uint8_t l121[] = {1,10,2,12,8,6,9,251,0,1,6,13,18,13,1,10,13,26,13,1,11,13,15,15,1,11,13,17,14,1,6,13,30,13,1,6,13,27,14,1,10,13,16,15,1,10,8,16,5,1,8,0};
+static const uint8_t l122[] = {1,12,12,1,4,1,9,1,11,12,1,4,1,9,12,1,4,1,7,1,5,9,13,255,1,6,12,1,2,1,8,12,1,2,1,10,12,1,2,1,9,1,10,10,7,1,9,12,1,3,1,8,12,1,3,1,12,12,1,3,1,7,1,11,12,1,6,1,7,12,1,6,1,8,12,1,6,1,7,1,11,12,1,3,1,10,1,9,0};
+static const uint8_t l123[] = {1,12,16,4,1,6,15,16,15,3,1,5,13,29,14,1,6,15,14,14,6,1,11,15,14,14,250,1,8,15,14,14,250,1,6,10,11,1,10,15,14,12,250,1,10,9,17,255,1,6,0};
+static const uint8_t l124[] = {1,11,9,15,0,1,7,9,17,0,1,7,9,14,1,1,6,9,17,0,1,11,9,12,255,1,9,9,14,255,1,9,14,10,6,1,8,9,17,255,1,9,9,17,254,1,11,9,15,253,1,7,0};
+static const uint8_t l125[] = {1,7,7,2,11,255,1,11,7,2,9,252,1,9,7,4,5,251,1,7,7,5,7,255,1,9,8,15,5,1,9,7,4,7,255,1,5,9,14,254,1,5,7,4,6,251,1,8,14,9,5,1,8,0};
+static const uint8_t l126[] = {1,6,8,25,9,1,10,8,21,7,1,8,9,17,0,1,10,8,23,8,1,5,8,19,6,1,7,4,45,3,2,1,7,10,13,1,8,4,52,249,3,1,9,4,56,252,2,1,5,0};
+static const uint8_t l127[] = {1,6,5,21,20,1,5,5,23,244,1,5,14,11,12,1,6,2,19,15,1,7,15,16,11,5,1,7,5,27,236,1,11,11,2,2,1,5,2,19,250,1,10,16,3,1,9,0};
+static const uint8_t l128[] = {1,9,10,9,1,5,10,8,1,6,7,2,9,1,1,10,10,10,1,7,13,29,14,1,9,10,6,1,7,10,12,1,10,10,6,1,6,4,36,5,3,1,5,0};
+static const uint8_t l129[] = {1,7,15,15,15,253,1,9,15,15,15,3,1,8,16,3,1,8,15,16,15,251,1,6,12,1,5,1,7,12,1,5,1,7,12,1,5,1,8,1,10,15,16,11,4,1,8,15,16,12,250,1,7,15,17,12,253,1,8,15,17,14,3,1,11,15,15,13,4,1,8,0};
+static const uint8_t l130[] = {1,8,9,16,0,1,6,7,6,9,1,1,11,14,10,5,1,9,7,2,8,1,1,5,9,16,1,1,6,7,6,12,1,1,5,12,1,3,1,7,1,6,7,4,7,253,1,8,7,2,12,1,1,11,7,4,8,1,1,9,0};
+static const uint8_t l131[] = {1,8,9,12,0,1,6,13,26,14,1,8,13,30,15,1,10,13,25,15,1,7,2,15,8,6,8,253,0,1,5,13,15,14,1,6,16,2,1,9,13,12,13,1,8,10,10,1,5,0};
+static const uint8_t l132[] = {1,6,13,13,14,1,10,5,14,8,1,9,2,19,237,1,11,2,17,237,1,6,5,15,10,1,10,5,13,245,1,11,12,1,4,1,7,12,1,4,1,10,12,1,4,1,11,1,6,5,13,245,1,7,10,13,1,10,5,24,14,1,9,0};
+static const uint8_t l133[] = {1,10,16,3,1,9,10,6,1,8,13,31,13,1,10,10,9,1,6,5,17,17,1,8,10,10,1,9,10,13,1,7,10,9,1,10,15,15,12,3,1,8,0};
+static const uint8_t l134[] = {1,9,16,3,1,8,15,14,11,253,1,6,8,31,11,1,9,15,16,11,252,1,5,15,16,13,4,1,10,15,16,11,251,1,10,15,15,13,251,1,11,15,14,11,6,1,7,13,15,15,1,10,0};
+static const uint8_t l135[] = {1,10,13,17,13,1,5,10,8,1,8,15,14,12,253,1,10,10,11,1,8,10,12,1,6,10,10,1,7,12,1,3,1,6,12,1,3,1,10,12,1,3,1,11,1,10,10,11,1,6,16,4,1,8,0};
+static const uint8_t l136[] = {1,11,13,30,14,1,5,13,23,13,1,7,13,25,13,1,8,13,27,12,1,10,13,31,12,1,8,13,22,13,1,10,16,4,1,7,13,34,13,1,8,15,15,11,4,1,8,0};
+static const uint8_t l137[] = {1,7,13,19,15,1,8,13,33,14,1,5,9,12,253,1,7,13,17,12,1,7,13,18,12,1,10,13,17,14,1,7,13,33,13,1,10,13,14,13,1,9,4,73,9,3,1,9,0};
+static const uint8_t l138[] = {1,7,7,2,12,1,1,9,5,32,231,1,7,12,1,2,1,9,12,1,2,1,9,12,1,2,1,10,1,5,5,21,234,1,9,15,16,12,250,1,10,2,15,5,1,7,5,24,13,1,7,2,16,12,1,10,5,25,9,1,6,0};
+static const uint8_t l139[] = {1,8,8,14,4,1,6,15,14,11,250,1,10,15,15,11,5,1,10,15,16,13,3,1,7,11,1,2,1,5,15,14,13,6,1,7,4,68,5,5,1,6,15,15,11,3,1,8,10,13,1,7,15,14,14,251,1,10,0};
+static const uint8_t l140[] = {1,7,5,26,231,1,5,5,26,237,1,10,2,13,11,1,8,2,13,246,1,10,2,18,19,1,7,2,29,11,1,5,2,17,20,1,7,2,17,16,1,9,14,12,5,1,5,5,27,21,1,5,0};
+static const uint8_t l141[] = {1,9,3,38,242,1,7,14,10,9,1,6,5,22,240,1,10,14,9,5,1,7,11,1,2,1,8,14,11,12,1,10,15,14,11,252,1,7,14,12,6,1,6,11,3,2,1,10,14,10,8,1,5,0};
+static const uint8_t l142[] = {1,9,13,13,13,1,9,15,15,12,252,1,6,15,15,11,250,1,6,15,15,12,3,1,9,16,2,1,5,15,15,15,6,1,8,16,3,1,8,15,15,12,4,1,5,9,12,1,1,7,0};
+static const uint8_t l143[] = {1,7,13,28,12,1,6,13,19,13,1,7,13,22,14,1,6,13,31,14,1,7,5,23,11,1,9,13,13,15,1,5,14,10,12,1,5,13,31,15,1,5,7,2,7,1,1,10,13,34,12,1,7,0};
+static const uint8_t l144[] = {1,11,3,38,7,1,8,10,10,1,10,5,22,247,1,9,10,10,1,6,10,11,1,8,10,9,1,9,10,6,1,9,10,9,1,9,10,9,1,9,10,6,1,7,0};
+static const uint8_t l145[] = {1,10,9,13,253,1,8,12,1,5,1,7,12,1,5,1,9,1,5,12,1,2,1,11,1,5,12,1,5,1,7,1,8,10,8,1,7,12,1,3,1,10,1,8,5,28,25,1,8,12,1,5,1,7,12,1,5,1,8,1,7,4,37,10,2,1,10,12,1,4,1,10,12,1,4,1,11,1,5,0};
+static const uint8_t l146[] = {1,11,10,13,1,9,2,27,237,1,5,15,14,15,253,1,7,5,28,11,1,6,2,21,232,1,7,5,20,19,1,9,3,45,250,1,8,5,22,244,1,9,5,22,25,1,7,2,19,244,1,9,0};
+static const uint8_t l147[] = {1,7,15,15,13,252,1,10,15,16,13,252,1,5,12,1,3,1,6,1,10,15,16,11,4,1,7,9,17,254,1,6,15,15,13,5,1,10,12,2,4,1,8,12,2,4,1,11,1,7,15,16,12,6,1,8,15,16,15,3,1,7,15,17,14,251,1,10,15,16,13,4,1,9,0};
+static const uint8_t l148[] = {1,11,7,5,9,1,1,10,7,3,8,1,1,6,7,6,5,1,1,8,7,5,8,1,1,8,12,1,5,1,12,1,5,7,6,7,252,1,5,7,2,6,1,1,6,7,2,6,1,1,10,6,6,251,0,1,5,7,4,11,252,1,8,7,2,5,1,1,6,0};
+static const uint8_t l149[] = {1,8,10,13,1,5,10,7,1,5,2,17,238,1,5,10,6,1,4,11,1,2,1,10,10,7,1,9,12,1,3,1,8,12,1,3,1,8,12,1,3,1,12,1,5,10,10,1,8,16,3,1,7,10,13,1,5,0};
+static const uint8_t l150[] = {1,10,12,1,4,1,7,1,10,15,15,15,3,1,9,15,17,14,3,1,5,15,15,14,252,1,6,15,16,12,6,1,5,15,16,15,3,1,9,11,3,3,1,7,15,16,13,251,1,10,8,30,10,1,6,15,16,12,250,1,6,0};
+static const uint8_t l151[] = {1,11,6,6,255,1,1,7,15,15,13,250,1,5,15,14,11,250,1,6,15,16,13,6,1,6,10,8,1,9,15,15,11,5,1,10,15,15,11,5,1,9,15,15,11,251,1,6,15,14,13,6,1,9,15,16,11,3,1,9,8,24,8,1,5,0};
+static const uint8_t l152[] = {1,8,13,30,13,1,7,13,25,15,1,9,13,17,15,1,9,13,35,14,1,5,15,16,14,251,1,8,13,31,14,1,6,3,32,9,1,6,13,30,16,1,4,15,15,15,252,1,10,13,33,15,1,7,0};
+static const uint8_t l153[] = {1,11,10,12,1,9,10,6,1,7,7,6,9,253,1,7,10,7,1,10,12,1,3,1,8,12,1,3,1,9,12,1,3,1,9,1,9,10,7,1,10,12,1,5,1,7,1,4,10,13,1,6,10,13,1,6,10,9,1,10,0};
+static const uint8_t l154[] = {1,9,7,5,10,254,1,8,10,14,1,8,2,16,7,6,4,252,0,1,5,10,9,1,8,15,17,11,251,1,10,10,8,1,6,8,28,10,1,6,10,13,1,6,10,7,1,10,10,9,1,10,9,18,255,1,7,0};
+static const uint8_t l155[] = {1,10,5,14,13,1,4,7,5,12,1,1,4,7,4,7,1,1,9,7,2,12,251,1,6,12,1,4,1,7,12,1,4,1,8,1,5,7,4,7,1,1,6,14,11,9,1,9,7,3,7,1,1,9,7,6,9,1,1,9,7,4,11,254,1,8,0};
+static const uint8_t l156[] = {1,8,8,33,11,1,8,11,3,3,1,6,12,1,4,1,9,12,1,4,1,8,1,7,11,2,3,1,8,8,30,10,1,4,11,3,3,1,6,3,40,10,1,5,11,3,2,1,9,3,37,10,1,5,4,53,8,2,1,6,0};
+
+const LevelDef level_defs[] = {
+  {"Meadow Ride", 0, 0, l0},
+  {"Green Climb", 0, 0, l1},
+  {"Meadow Climb", 0, 0, l2},
+  {"Spring Chasm", 0, 0, l3},
+  {"Meadow Leap", 0, 0, l4},
+  {"Spring Hop", 0, 0, l5},
+  {"Happy Stairs", 0, 0, l6},
+  {"Green Staircase", 0, 0, l7},
+  {"Canyon Ledges", 0, 1, l8},
+  {"Cactus Bridge", 0, 1, l9},
+  {"Golden Span", 0, 1, l10},
+  {"Dune Crossing", 0, 1, l11},
+  {"Dune Blocks", 1, 1, l12},
+  {"Canyon Hurdles", 1, 1, l13},
+  {"Dusty Blocks", 1, 1, l14},
+  {"Sandy Hurdles", 1, 1, l15},
+  {"Chilly Lever", 0, 2, l16},
+  {"Pine Lever", 0, 2, l17},
+  {"Blizzard Lever", 0, 2, l18},
+  {"Frosty Teeter", 1, 2, l19},
+  {"Icy Crates", 0, 2, l20},
+  {"Polar Stack", 0, 2, l21},
+  {"Polar Parcels", 2, 2, l22},
+  {"Pine Warehouse", 2, 2, l23},
+  {"Twilight Barriers", 2, 3, l24},
+  {"Sunset Crumble", 0, 3, l25},
+  {"Twilight Rubble", 2, 3, l26},
+  {"Twilight Crumble", 0, 3, l27},
+  {"Velvet Quake", 1, 3, l28},
+  {"Evening Bumps", 0, 3, l29},
+  {"Twilight Bowling", 1, 3, l30},
+  {"Twilight Boulder", 1, 3, l31},
+  {"Shadow Pushover", 0, 4, l32},
+  {"Comet Pushover", 2, 4, l33},
+  {"Moonlit Rope Walk", 4, 4, l34},
+  {"Dream Big Ball", 4, 4, l35},
+  {"Shadow Crawl", 4, 4, l36},
+  {"Starry Underpass", 1, 4, l37},
+  {"Starry Tunnel", 0, 4, l38},
+  {"Midnight Low Roof", 1, 4, l39},
+  {"Cinder Low Roof", 4, 5, l40},
+  {"Blaze Planks", 0, 5, l41},
+  {"Magma Blocks", 0, 5, l42},
+  {"Scorch Waves", 0, 5, l43},
+  {"Magma Ledges", 1, 5, l44},
+  {"Molten Platform", 0, 5, l45},
+  {"Blaze Hoist", 3, 5, l46},
+  {"Ashen Rise", 3, 5, l47},
+  {"Breezy Rise", 3, 0, l48},
+  {"Spring Hills", 1, 0, l49},
+  {"Happy Burrow", 1, 0, l50},
+  {"Green Obstacles", 0, 0, l51},
+  {"Clover Cave-in", 0, 0, l52},
+  {"Happy Incline", 4, 0, l53},
+  {"Sunny Burrow", 3, 0, l54},
+  {"Sunny Boulder", 4, 0, l55},
+  {"Sandy Blocks", 4, 1, l56},
+  {"Cactus Boardwalk", 3, 1, l57},
+  {"Mirage Kerbs", 1, 1, l58},
+  {"Dusty Crumble", 3, 1, l59},
+  {"Golden Spinner", 3, 1, l60},
+  {"Dune Sweeper", 1, 1, l61},
+  {"Sandy Spinner", 5, 1, l62},
+  {"Scorching Propeller", 5, 1, l63},
+  {"Snowy Slide", 5, 2, l64},
+  {"Icy Collapse", 2, 2, l65},
+  {"Pine Quake", 1, 2, l66},
+  {"Frosty Sweeper", 5, 2, l67},
+  {"Blizzard Rubble", 3, 2, l68},
+  {"Chilly Warehouse", 1, 2, l69},
+  {"Chilly Pushover", 1, 2, l70},
+  {"Icy Updraft", 5, 2, l71},
+  {"Velvet Boardwalk", 3, 3, l72},
+  {"Coral Turnstile", 0, 3, l73},
+  {"Peach Teeter", 0, 3, l74},
+  {"Peach Crates", 3, 3, l75},
+  {"Coral Tilt", 1, 3, l76},
+  {"Twilight Planks", 1, 3, l77},
+  {"Amber Climb", 2, 3, l78},
+  {"Velvet Stairs", 5, 3, l79},
+  {"Dream Stack", 6, 4, l80},
+  {"Dream Ledges", 6, 4, l81},
+  {"Comet Rocker", 6, 4, l82},
+  {"Comet Hurdles", 0, 4, l83},
+  {"Moonlit Obstacles", 2, 4, l84},
+  {"Owl Kerbs", 2, 4, l85},
+  {"Shadow Hurdles", 4, 4, l86},
+  {"Comet Curbs", 3, 4, l87},
+  {"Blaze Cave", 6, 5, l88},
+  {"Scorch Hop", 3, 5, l89},
+  {"Blaze Climb", 0, 5, l90},
+  {"Scorch Boulder", 3, 5, l91},
+  {"Blaze Sweeper", 4, 5, l92},
+  {"Scorch Obstacles", 0, 5, l93},
+  {"Scorch Crawl", 0, 5, l94},
+  {"Magma Shaky Slabs", 2, 5, l95},
+  {"Meadow Tunnel", 0, 0, l96},
+  {"Sunny Leap", 3, 0, l97},
+  {"Clover Cave", 2, 0, l98},
+  {"Daisy Descent", 3, 0, l99},
+  {"Green Turnstile", 0, 0, l100},
+  {"Happy Barriers", 3, 0, l101},
+  {"Happy Spinner", 5, 0, l102},
+  {"Meadow Descent", 2, 0, l103},
+  {"Mirage Collapse", 6, 1, l104},
+  {"Mirage Quake", 1, 1, l105},
+  {"Canyon Terraces", 5, 1, l106},
+  {"Cactus Terraces", 5, 1, l107},
+  {"Golden Crawl", 5, 1, l108},
+  {"Scorching Seesaw", 0, 1, l109},
+  {"Canyon Steps", 4, 1, l110},
+  {"Golden Planks", 0, 1, l111},
+  {"Glacier Seesaw", 1, 2, l112},
+  {"Frosty Curbs", 5, 2, l113},
+  {"Glacier Balance", 1, 2, l114},
+  {"Glacier Teeter", 3, 2, l115},
+  {"Blizzard Crossing", 3, 2, l116},
+  {"Pine Slide", 0, 2, l117},
+  {"Snowy Lever", 5, 2, l118},
+  {"Frosty Rocker", 0, 2, l119},
+  {"Amber Ascent", 6, 3, l120},
+  {"Sunset Burrow", 6, 3, l121},
+  {"Velvet Kerbs", 0, 3, l122},
+  {"Evening Sweeper", 3, 3, l123},
+  {"Twilight Teeter", 1, 3, l124},
+  {"Violet Ledges", 2, 3, l125},
+  {"Evening Bridge", 3, 3, l126},
+  {"Velvet Climb", 5, 3, l127},
+  {"Starry Quake", 2, 4, l128},
+  {"Dream Sweeper", 1, 4, l129},
+  {"Neon Shelves", 0, 4, l130},
+  {"Moonlit Burrow", 3, 4, l131},
+  {"Midnight Ramps", 3, 4, l132},
+  {"Shadow Rubble", 3, 4, l133},
+  {"Moonlit Propeller", 5, 4, l134},
+  {"Dream Shaky Slabs", 5, 4, l135},
+  {"Molten Tunnel", 2, 5, l136},
+  {"Smoky Burrow", 5, 5, l137},
+  {"Cinder Slide", 5, 5, l138},
+  {"Ashen Rotor", 5, 5, l139},
+  {"Scorch Descent", 6, 5, l140},
+  {"Smoky Lift", 3, 5, l141},
+  {"Ashen Spinner", 6, 5, l142},
+  {"Magma Cave", 3, 5, l143},
+  {"Spring Rubble", 2, 0, l144},
+  {"Daisy Kerbs", 0, 0, l145},
+  {"Spring Descent", 2, 0, l146},
+  {"Clover Rotor", 1, 0, l147},
+  {"Spring Ledges", 6, 0, l148},
+  {"Daisy Cave-in", 5, 0, l149},
+  {"Sunny Spinner", 1, 0, l150},
+  {"Clover Propeller", 0, 0, l151},
+  {"Sandy Cave", 6, 1, l152},
+  {"Sandy Rubble", 4, 1, l153},
+  {"Scorching Quake", 1, 1, l154},
+  {"Golden Shelves", 3, 1, l155},
+  {"Sandy Parcels", 3, 1, l156},
+};
+const int level_count = 157;
diff --git a/games/numdrive/src/main.c b/games/numdrive/src/main.c
index 57f4972..09263b7 100644
--- a/games/numdrive/src/main.c
+++ b/games/numdrive/src/main.c
@@ -1,13 +1,10 @@
+/* NumDrive: drive across each level to the flag, with only gas (right) and brake (left).
+ * The driver's head must not touch anything. */
 #include <stdlib.h>
 #include <string.h>
-#ifdef HOST
-#include <stdio.h>
-#endif
 #include "platform.h"
-#include "world.h"
-#include "vm.h"
-#include "physics.h"
-#include "render.h"
+#include "nd.h"
+#include "draw.h"
 #include "ui.h"
 #include "save.h"
 
@@ -19,118 +16,58 @@ const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level")))
 #endif
 #endif
 
-enum { ST_PLAY, ST_CARD, ST_LEVELS, ST_QUIT };
-#define SHOT_FRAMES 10 /* viewfinder shown before the photo */
-
-static int win_timer = -1, lose_timer = -1;
-#ifdef HOST
-void host_outcome(int won);
-#endif
-void game_win(int delay) {
-#ifdef HOST
-  if (win_timer < 0 && lose_timer < 0) host_outcome(1);
-#endif
-  if (win_timer < 0 && lose_timer < 0) win_timer = delay > SHOT_FRAMES ? delay : SHOT_FRAMES;
-}
-void game_lose(int delay) {
-#ifdef HOST
-  if (getenv("ND_WDBG") && win_timer < 0 && lose_timer < 0) fprintf(stderr, "lose at frame %d\n", vm_frame_count);
-  if (win_timer < 0 && lose_timer < 0) host_outcome(2);
-#endif
-  if (win_timer < 0 && lose_timer < 0) lose_timer = delay > SHOT_FRAMES ? delay : SHOT_FRAMES;
-}
+enum { S_PLAY, S_CARD, S_LEVELS, S_QUIT };
+#define WIN_FRAMES 80  /* the car rolls on, under confetti, before the panel */
+#define LOSE_FRAMES 45
 
 static int cur;
-static bool start_level(int i) {
+static void start_level(int i) {
   if (i < 0) i = 0;
-  if (i >= nlevels) i = nlevels - 1;
+  if (i >= level_count) i = level_count - 1;
   cur = i;
-  win_timer = lose_timer = -1;
-  phys_reset();
-  cam_default();
-  if (!world_load_level(i)) return false;
-  phys_start();
-  if (!render_init_level()) return false;
+  level_load(i);
+  draw_level_start();
   hud_reset();
   if (progress.last != i) {
     progress.last = (uint8_t)i;
     save_store();
   }
-  return true;
 }
 
-static void sim_step(uint8_t buttons) {
-  vm_buttons = buttons;
-  vm_frame();
-#ifdef HOST
-  if (getenv("ND_ODBG") && vm_frame_count <= 1) {
-    const char *l = getenv("ND_ODBG");
-    while (*l) {
-      int o = atoi(l);
-      if (o >= 0 && o < nobj) fprintf(stderr, "f%d obj%d pos=(%.2f %.2f %.2f) rot=(%.3f %.3f %.3f %.3f) flags=%x\n", vm_frame_count, o, objs[o].pos.x, objs[o].pos.y, objs[o].pos.z, objs[o].rot.x, objs[o].rot.y, objs[o].rot.z, objs[o].rot.w, objs[o].flags);
-      while (*l && *l != ',') l++;
-      if (*l) l++;
-    }
-  }
-#endif
-  phys_step();
-#ifdef HOST
-  if (getenv("ND_OBJHIST") && vm_frame_count == atoi(getenv("ND_OBJHIST"))) {
-    for (int i = 0; i < nobj; i++)
-      fprintf(stderr, "OBJ %d src %d np %d flags %x pos %.1f %.1f %.1f\n", i, objs[i].src, objs[i].shape->np, objs[i].flags, objs[i].pos.x, objs[i].pos.y, objs[i].pos.z);
-  }
-#endif
-#ifdef HOST
-  {
-    extern void phys_debug(int);
-    phys_debug(vm_frame_count);
-  }
-#endif
-  vm_late();
-}
-
-static int shot_t;
-static void hud_post(uint16_t *px, int y, int n) {
-  if (shot_t > 0) viewfinder_draw(px, y, n, SHOT_FRAMES - shot_t);
-  else hud_draw(px, y, n);
+static void step(uint8_t b) {
+  phys_step(W.state == ST_RUN ? b : 0);
+  rules_update();
 }
 
-
-#ifdef ARMTEST
-extern char **environ;
+#ifdef HOST
+int host_main(void);
 #endif
 
 int main(int argc, char **argv) {
   (void)argc;
   (void)argv;
-#ifdef ARMTEST
-  environ = argv + 1; /* semihosting has no environment: pass KEY=VALUE arguments */
-#endif
   uint16_t strip[SCREEN_W * STRIP_H] __attribute__((aligned(4)));
-  render_set_buffer(strip);
+  draw_set_buffer(strip);
   plat_begin();
-  if (!world_init()) return plat_end(1);
   save_load();
-  int lvl = progress.last < nlevels ? progress.last : 0;
+  start_level(progress.last < level_count ? progress.last : 0);
 #ifdef HOST
-  if (getenv("ND_LEVEL")) lvl = atoi(getenv("ND_LEVEL"));
+  if (getenv("ND_LEVEL")) start_level(atoi(getenv("ND_LEVEL")));
 #endif
-  if (!start_level(lvl)) {
-    plat_fill(0, 0, SCREEN_W, SCREEN_H, 0xF800);
-    plat_sleep(2000);
-    return plat_end(1);
-  }
-  int state = ST_PLAY, kind = CARD_PAUSE, anim = 0, sel = 1, lsel = 0, lscroll = 0;
+  int state = S_PLAY, kind = CARD_PAUSE, anim = 0, sel = 1, lsel = 0, lscroll = 0;
   bool dirty = true, qyes = false;
   uint64_t prev = 0;
   uint32_t last = plat_millis();
-  int acc = 0, max_steps = plat_slow() ? 6 : 3;
+  int acc = 0;
+#ifndef HOST
+  int max_steps = plat_slow() ? 5 : 3;
+#endif
   for (;;) {
     uint64_t k = plat_keys();
     uint64_t hit = k & ~prev;
     prev = k;
     if (k & (KEY(K_HOME) | KEY(K_ONOFF))) break;
-    /* frame pacing: fixed 60 Hz simulation, catching up when rendering is slow */
+    /* fixed 60 Hz simulation, catching up when drawing is slow */
     int steps = 1;
 #ifndef HOST
     uint32_t now = plat_millis();
@@ -142,7 +79,6 @@ int main(int argc, char **argv) {
     last = now;
     steps = acc / 50;
     if (steps < 1) steps = 1;
-    /* (an N0110 or N0115 draws fewer frames: more steps each, so the game keeps its speed) */
     if (steps > max_steps) steps = max_steps, acc = 0;
     acc -= steps * 50;
     if (acc < 0) acc = 0;
@@ -150,57 +86,40 @@ int main(int argc, char **argv) {
     (void)last;
     (void)acc;
 #endif
-    if (state == ST_PLAY) {
+    if (state == S_PLAY) {
       if (hit & (KEY(K_BACK) | KEY(K_OK))) {
-        shot_t = 0;
         ui_capture_background();
         card_setup(CARD_PAUSE, cur);
-        kind = CARD_PAUSE;
-        state = ST_CARD;
-        anim = 0;
-        sel = 1;
+        kind = CARD_PAUSE, state = S_CARD, anim = 0, sel = 1;
         continue;
       }
       uint8_t b = ((k & KEY(K_LEFT)) ? 1 : 0) | ((k & KEY(K_RIGHT)) ? 2 : 0);
       bool ending = false;
       for (int s = 0; s < steps && !ending; s++) {
-        sim_step(win_timer >= 0 || lose_timer >= 0 ? 0 : b);
-        hud_tick(b);
-        if (win_timer > 0) win_timer--;
-        if (lose_timer > 0) lose_timer--;
-        ending = win_timer == 0 || lose_timer == 0;
+        step(b);
+        hud_tick(W.state == ST_RUN ? b : 0);
+        ending = (W.state == ST_WON && W.state_t >= WIN_FRAMES) || (W.state == ST_LOST && W.state_t >= LOSE_FRAMES);
       }
-      int t = win_timer >= 0 ? win_timer : lose_timer;
-      shot_t = t > 0 && t <= SHOT_FRAMES ? t : 0;
       if (ending) {
-        kind = win_timer == 0 ? CARD_WIN : CARD_LOSE;
+        kind = W.state == ST_WON ? CARD_WIN : CARD_LOSE;
         if (kind == CARD_WIN && !lvl_done(cur)) {
           lvl_set_done(cur);
           save_store();
         }
         ui_capture_background();
         card_setup(kind, cur);
-        state = ST_CARD;
-        anim = 0;
-        sel = 1;
-        win_timer = lose_timer = -1;
+        state = S_CARD, anim = 0, sel = 1;
         continue;
       }
-#ifdef HOST
-      static int norender = -1;
-      if (norender < 0) norender = getenv("ND_NORENDER") != 0;
-      if (!norender)
-#endif
-        render_frame(hud_post);
-    } else if (state == ST_CARD) {
+      cam_follow();
+      draw_frame(hud_draw);
+    } else if (state == S_CARD) {
       int nb = card_buttons();
       bool ok = (hit & (KEY(K_OK) | KEY(K_EXE))) != 0;
-      if (sel == CARD_SEL_QUIT) { /* Quit game, under the other buttons */
-        if (hit & KEY(K_UP)) sel = 1, dirty = true;
+      if (sel == CARD_SEL_QUIT) {
+        if (hit & KEY(K_UP)) sel = nb > 1 ? 1 : 0, dirty = true;
         if (ok) {
-          state = ST_QUIT;
-          qyes = false;
-          dirty = true;
+          state = S_QUIT, qyes = false, dirty = true;
           continue;
         }
       } else {
@@ -208,46 +127,38 @@ int main(int argc, char **argv) {
           if ((hit & KEY(K_LEFT)) && sel > 0) sel--, dirty = true;
           if ((hit & KEY(K_RIGHT)) && sel < nb - 1) sel++, dirty = true;
         } else {
-          sel = 1;
+          sel = 0;
         }
         if (hit & KEY(K_DOWN)) sel = CARD_SEL_QUIT, dirty = true;
       }
       if ((hit & KEY(K_BACK)) && kind == CARD_PAUSE) { /* Back resumes, as it paused */
-        state = ST_PLAY;
+        state = S_PLAY;
         continue;
       }
-      if ((hit & KEY(K_BACK)) || (ok && kind == CARD_PAUSE && sel == 2)) { /* the "<" arrow or Levels */
-        state = ST_LEVELS;
-        lsel = cur;
+      if ((hit & KEY(K_BACK)) || (ok && kind == CARD_PAUSE && sel == 2)) {
+        state = S_LEVELS, lsel = cur, dirty = true;
         lscroll = lsel / 5 - 2 < 0 ? 0 : lsel / 5 - 2;
-        dirty = true;
         continue;
       }
       if (ok && sel != CARD_SEL_QUIT) {
         if (kind == CARD_PAUSE && sel == 1) {
-          state = ST_PLAY;
+          state = S_PLAY;
         } else {
           int next = kind == CARD_WIN && sel == 1 ? cur + 1 : cur;
-          start_level(next < nlevels ? next : cur);
-          state = ST_PLAY;
+          start_level(next < level_count ? next : cur);
+          state = S_PLAY;
         }
         continue;
       }
-      if (kind != CARD_PAUSE)
-        for (int s = 0; s < steps; s++) sim_step(0);
-      bool full = dirty || anim <= 13;
-      if (kind != CARD_PAUSE || full) card_draw(anim, sel, full);
+      if (dirty || anim <= 13) card_draw(anim, sel);
       dirty = false;
       anim++;
-    } else if (state == ST_QUIT) {
-      /* asks first: Back sits right next to OK */
+    } else if (state == S_QUIT) {
       if (hit & (KEY(K_LEFT) | KEY(K_RIGHT))) qyes = !qyes, dirty = true;
       bool ok = (hit & (KEY(K_OK) | KEY(K_EXE))) != 0;
       if (ok && qyes) break;
       if (ok || (hit & KEY(K_BACK))) {
-        state = ST_CARD;
-        anim = 14;
-        dirty = true;
+        state = S_CARD, anim = 14, dirty = true;
         continue;
       }
       if (dirty) quit_draw(qyes);
@@ -258,19 +169,17 @@ int main(int argc, char **argv) {
       if (hit & KEY(K_RIGHT)) lsel++;
       if (hit & KEY(K_UP)) lsel -= 5;
       if (hit & KEY(K_DOWN)) lsel += 5;
-      if (lsel < 0 || lsel >= nlevels) lsel = old;
+      if (lsel < 0 || lsel >= level_count) lsel = old;
       if (lsel != old) dirty = true;
       if (lsel / 5 < lscroll) lscroll = lsel / 5, dirty = true;
-      if (lsel / 5 > lscroll + 3) lscroll = lsel / 5 - 3, dirty = true;
+      if (lsel / 5 > lscroll + 4) lscroll = lsel / 5 - 4, dirty = true;
       if (hit & (KEY(K_OK) | KEY(K_EXE))) {
         start_level(lsel);
-        state = ST_PLAY;
+        state = S_PLAY;
         continue;
       }
-      if (hit & KEY(K_BACK)) { /* back to the card */
-        state = ST_CARD;
-        anim = 14;
-        dirty = true;
+      if (hit & KEY(K_BACK)) {
+        state = S_CARD, anim = 14, dirty = true;
         continue;
       }
       if (dirty) levels_draw(lsel, lscroll);
diff --git a/games/numdrive/src/nd.h b/games/numdrive/src/nd.h
new file mode 100644
index 0000000..dfebac5
--- /dev/null
+++ b/games/numdrive/src/nd.h
@@ -0,0 +1,119 @@
+/* NumDrive: a side-view physics driving game (Calcade, October 2026).
+ * Everything here is NumDrive's own: a small 2D rigid body engine (phys.c), levels built from short
+ * descriptions (level.c, levels_data.c made by tools/conformite/numdrive_levels.py), a strip renderer
+ * (draw.c) and the menus (ui.c). Units: metres, seconds, y up. */
+#ifndef ND_H
+#define ND_H
+#include <stdint.h>
+#include <stdbool.h>
+#include <math.h>
+
+typedef struct { float x, y; } v2;
+static inline v2 V(float x, float y) { v2 r = {x, y}; return r; }
+static inline v2 vadd(v2 a, v2 b) { return V(a.x + b.x, a.y + b.y); }
+static inline v2 vsub(v2 a, v2 b) { return V(a.x - b.x, a.y - b.y); }
+static inline v2 vmul(v2 a, float s) { return V(a.x * s, a.y * s); }
+static inline float vdot(v2 a, v2 b) { return a.x * b.x + a.y * b.y; }
+static inline float vcross(v2 a, v2 b) { return a.x * b.y - a.y * b.x; }
+static inline v2 vperp(v2 a) { return V(-a.y, a.x); }
+static inline float vlen(v2 a) { return sqrtf(a.x * a.x + a.y * a.y); }
+static inline v2 vrot(v2 a, float c, float s) { return V(a.x * c - a.y * s, a.x * s + a.y * c); }
+
+/* ------------------------------------------------------------- the world */
+#define MAX_STATIC 520
+#define MAX_BODY 44
+#define MAX_JOINT 40
+#define MAX_VERT 6
+
+enum { SK_GROUND, SK_BLOCK, SK_WATER, SK_LAVA, SK_DECO }; /* SK_WATER and after: no collision */
+/* a static convex polygon, counter-clockwise; ground quads are v0 bottom-left, v1 bottom-right,
+   v2 top-right, v3 top-left */
+typedef struct {
+  v2 v[4];
+  float minx, maxx, miny, maxy;
+  uint8_t n, kind;
+} Static;
+
+enum { SH_CIRCLE, SH_POLY };
+enum { BK_CHASSIS, BK_WHEEL, BK_PLANK, BK_CRATE, BK_FALL, BK_BALL, BK_LIFT, BK_SPIN };
+typedef struct {
+  v2 p, v;
+  float a, w;
+  float im, iI;  /* inverse mass and inertia, 0 while static, kinematic or frozen */
+  float m, I;
+  float fr;
+  float r;       /* circle radius, or bounding radius of the polygon */
+  float c, s;    /* cos, sin of a */
+  v2 lv[MAX_VERT], wv[MAX_VERT];
+  uint8_t nv, shape, group, kind;
+  uint8_t frozen, kin;
+  int16_t timer;
+  /* kinematic motion: base, amplitude along the axis (or spin speed), speed, phase */
+  float kx, ky, kamp, kspeed, kphase;
+  uint8_t kaxis;
+} Body;
+
+typedef struct {
+  int8_t a, b;    /* b < 0: fixed to the world at lb */
+  v2 la, lb;
+  float hz;       /* 0: rigid, else a spring (suspension) */
+  v2 acc;
+} Joint;
+
+typedef struct {
+  Body body[MAX_BODY];
+  Joint joint[MAX_JOINT];
+  int nbody, njoint;
+  /* the car */
+  int8_t chassis, wheel[4], nwheel;
+  v2 head;          /* driver's head, in chassis coordinates */
+  float head_r, motor_speed, motor_torque;
+  /* the run */
+  int frame, state, state_t; /* state: PLAYING, WON, LOST */
+  float best_x, t;
+  uint8_t touched_ground;
+} World;
+enum { ST_RUN, ST_WON, ST_LOST };
+
+extern World W;
+extern Static statics[MAX_STATIC];
+extern int nstatic;
+extern float static_maxw;
+
+/* ---------------------------------------------------------------- level */
+typedef struct {
+  const char *name;
+  uint8_t car, theme;
+  const uint8_t *ops;
+} LevelDef;
+extern const LevelDef level_defs[];
+extern const int level_count;
+
+typedef struct {
+  int index;
+  float start_x, finish_x, kill_y, floor_y, min_x, max_x;
+  uint8_t theme, car;
+} LevelInfo;
+extern LevelInfo L;
+
+bool level_load(int index);  /* builds the statics and the bodies into W */
+const char *level_name(int index);
+
+/* ------------------------------------------------------------- physics */
+#define PHYS_SUB 2
+#define GRAVITY (-14.0f)
+void phys_step(uint8_t buttons); /* one 60 Hz frame: bit0 brake/reverse, bit1 gas */
+int body_add(int kind, int shape, v2 p, float a, float density);
+void body_box(Body *b, float hw, float hh);
+void body_poly(Body *b, const v2 *v, int n);
+void body_circle(Body *b, float r);
+void body_mass(Body *b, float m);
+void body_update(Body *b);
+int joint_add(int a, int b, v2 world_anchor, float hz);
+bool car_on_ground(void);
+int static_first(float x0); /* first static that can reach x0 */
+
+/* game rules, after each frame */
+void rules_update(void);
+
+#endif
diff --git a/games/numdrive/src/phys.c b/games/numdrive/src/phys.c
new file mode 100644
index 0000000..6747aa3
--- /dev/null
+++ b/games/numdrive/src/phys.c
@@ -0,0 +1,592 @@
+/* NumDrive's 2D rigid body engine: circles and convex polygons, sequential impulses with
+ * friction, soft pin joints (bridges, seesaws, the car's suspension) and the wheel motors. */
+#include <string.h>
+#include "nd.h"
+
+World W;
+Static statics[MAX_STATIC];
+int nstatic;
+float static_maxw;
+
+#define ITER 8
+#define SLOP 0.008f
+#define BETA 0.25f
+
+/* ------------------------------------------------------------- bodies */
+void body_update(Body *b) {
+  b->c = cosf(b->a);
+  b->s = sinf(b->a);
+  if (b->shape == SH_POLY)
+    for (int i = 0; i < b->nv; i++) b->wv[i] = vadd(b->p, vrot(b->lv[i], b->c, b->s));
+}
+
+int body_add(int kind, int shape, v2 p, float a, float density) {
+  if (W.nbody >= MAX_BODY) return -1;
+  Body *b = &W.body[W.nbody];
+  memset(b, 0, sizeof *b);
+  b->kind = (uint8_t)kind;
+  b->shape = (uint8_t)shape;
+  b->p = p;
+  b->a = a;
+  b->fr = 0.7f;
+  b->m = density; /* finished by body_box / body_poly / body_circle */
+  return W.nbody++;
+}
+
+void body_mass(Body *b, float m) {
+  /* keeps the shape's inertia per unit of mass */
+  float k = b->m > 0 ? b->I / b->m : 0;
+  b->m = m;
+  b->I = k * m;
+  if (!b->frozen && !b->kin) {
+    b->im = m > 0 ? 1 / m : 0;
+    b->iI = b->I > 0 ? 1 / b->I : 0;
+  }
+}
+
+static void poly_mass(Body *b, float density) {
+  /* area, centroid at the origin is assumed (shapes are given around their centre of mass) */
+  float area = 0, I = 0;
+  for (int i = 0; i < b->nv; i++) {
+    v2 p = b->lv[i], q = b->lv[(i + 1) % b->nv];
+    float cr = vcross(p, q);
+    area += cr * 0.5f;
+    I += cr * (vdot(p, p) + vdot(p, q) + vdot(q, q)) / 12;
+  }
+  float r = 0;
+  for (int i = 0; i < b->nv; i++) {
+    float l = vlen(b->lv[i]);
+    if (l > r) r = l;
+  }
+  b->r = r;
+  b->m = density * area;
+  b->I = density * I;
+  b->im = b->m > 0 ? 1 / b->m : 0;
+  b->iI = b->I > 0 ? 1 / b->I : 0;
+}
+
+void body_poly(Body *b, const v2 *v, int n) {
+  b->shape = SH_POLY;
+  b->nv = (uint8_t)n;
+  for (int i = 0; i < n; i++) b->lv[i] = v[i];
+  poly_mass(b, b->m);
+  body_update(b);
+}
+
+void body_box(Body *b, float hw, float hh) {
+  v2 v[4] = {{-hw, -hh}, {hw, -hh}, {hw, hh}, {-hw, hh}};
+  body_poly(b, v, 4);
+}
+
+void body_circle(Body *b, float r) {
+  b->shape = SH_CIRCLE;
+  b->r = r;
+  float d = b->m;
+  b->m = d * 3.14159265f * r * r;
+  b->I = b->m * r * r * 0.5f;
+  b->im = 1 / b->m;
+  b->iI = 1 / b->I;
+  body_update(b);
+}
+
+int joint_add(int a, int b, v2 wa, float hz) {
+  if (W.njoint >= MAX_JOINT) return -1;
+  Joint *j = &W.joint[W.njoint];
+  memset(j, 0, sizeof *j);
+  Body *A = &W.body[a];
+  j->a = (int8_t)a;
+  j->b = (int8_t)b;
+  v2 d = vsub(wa, A->p);
+  j->la = vrot(d, A->c, -A->s);
+  if (b >= 0) {
+    Body *B = &W.body[b];
+    j->lb = vrot(vsub(wa, B->p), B->c, -B->s);
+  } else {
+    j->lb = wa;
+  }
+  j->hz = hz;
+  return W.njoint++;
+}
+
+/* ------------------------------------------------------------ contacts */
+typedef struct {
+  int8_t a, b; /* b < 0: a static polygon */
+  v2 p, n;     /* n pushes a away from b */
+  float depth, fr, mn, mt, bias, jn, jt;
+  v2 ra, rb;
+} Contact;
+#define MAX_CONTACT 160
+static Contact con[MAX_CONTACT];
+int ncon;
+
+static Contact *add_contact(int a, int b, v2 p, v2 n, float depth, float fr) {
+  if (ncon >= MAX_CONTACT) return 0;
+  Contact *c = &con[ncon++];
+  c->a = (int8_t)a;
+  c->b = (int8_t)b;
+  c->p = p;
+  c->n = n;
+  c->depth = depth;
+  c->fr = fr;
+  return c;
+}
+
+/* closest approach of a circle to a convex polygon (counter-clockwise); returns depth > 0 on overlap */
+static float circle_poly(v2 c, float r, const v2 *v, int n, v2 *normal, v2 *point) {
+  float best = -1e30f;
+  int bi = 0;
+  for (int i = 0; i < n; i++) {
+    v2 e = vsub(v[(i + 1) % n], v[i]);
+    v2 nn = V(e.y, -e.x);
+    float l = vlen(nn);
+    if (l < 1e-6f) continue;
+    nn = vmul(nn, 1 / l);
+    float s = vdot(vsub(c, v[i]), nn);
+    if (s > r) return -1; /* separated by this edge */
+    if (s > best) best = s, bi = i;
+  }
+  v2 a = v[bi], b = v[(bi + 1) % n], e = vsub(b, a);
+  float t = vdot(vsub(c, a), e) / vdot(e, e);
+  if (best <= 0 || (t >= 0 && t <= 1)) {
+    /* centre inside, or nearest to the face itself */
+    v2 nn = V(e.y, -e.x);
+    nn = vmul(nn, 1 / vlen(nn));
+    *normal = nn;
+    *point = vsub(c, vmul(nn, r));
+    return r - best;
+  }
+  /* nearest to a corner */
+  v2 q = t < 0 ? a : b;
+  v2 d = vsub(c, q);
+  float dl = vlen(d);
+  if (dl >= r) return -1;
+  if (dl < 1e-6f) return -1;
+  *normal = vmul(d, 1 / dl);
+  *point = q;
+  return r - dl;
+}
+
+/* a vertex inside a convex polygon: depth and the outward normal of the nearest edge */
+static float point_in_poly(v2 p, const v2 *v, int n, v2 *normal) {
+  float best = -1e30f;
+  v2 bn = {0, 1};
+  for (int i = 0; i < n; i++) {
+    v2 e = vsub(v[(i + 1) % n], v[i]);
+    v2 nn = V(e.y, -e.x);
+    float l = vlen(nn);
+    if (l < 1e-6f) continue;
+    nn = vmul(nn, 1 / l);
+    float s = vdot(vsub(p, v[i]), nn);
+    if (s > 0) return -1;
+    if (s > best) best = s, bn = nn;
+  }
+  *normal = bn;
+  return -best;
+}
+
+static float mixf(float a, float b) { return sqrtf(a * b); }
+
+static v2 edge_normal(const v2 *v, int n, int i) {
+  v2 e = vsub(v[(i + 1) % n], v[i]);
+  v2 nn = V(e.y, -e.x);
+  float l = vlen(nn);
+  return l > 1e-9f ? vmul(nn, 1 / l) : V(0, 1);
+}
+
+/* the deepest separation of B's vertices along A's edge normals: the best edge of A */
+static float max_separation(const v2 *A, int na, const v2 *B, int nb, int *edge) {
+  float best = -1e30f;
+  int bi = 0;
+  for (int i = 0; i < na; i++) {
+    v2 nn = edge_normal(A, na, i);
+    float mn = 1e30f;
+    for (int k = 0; k < nb; k++) {
+      float d = vdot(vsub(B[k], A[i]), nn);
+      if (d < mn) mn = d;
+    }
+    if (mn > best) best = mn, bi = i;
+  }
+  *edge = bi;
+  return best;
+}
+
+/* two convex polygons (separating axes, then the incident edge clipped against the reference
+   face): up to two contacts, the normal pushing A away from B */
+static int poly_poly(const v2 *A, int na, const v2 *B, int nb, v2 *normal, v2 pts[2], float dep[2]) {
+  int ea, eb;
+  float sa = max_separation(A, na, B, nb, &ea);
+  if (sa > 0) return 0;
+  float sb = max_separation(B, nb, A, na, &eb);
+  if (sb > 0) return 0;
+  const v2 *R, *I;
+  int nr, ni, er;
+  bool flip;
+  if (sb > sa + 0.002f) R = B, nr = nb, er = eb, I = A, ni = na, flip = false;
+  else R = A, nr = na, er = ea, I = B, ni = nb, flip = true;
+  v2 rn = edge_normal(R, nr, er);
+  /* incident edge: the most opposed to the reference normal */
+  int ie = 0;
+  float mn = 1e30f;
+  for (int i = 0; i < ni; i++) {
+    float d = vdot(edge_normal(I, ni, i), rn);
+    if (d < mn) mn = d, ie = i;
+  }
+  v2 p[2] = {I[ie], I[(ie + 1) % ni]};
+  v2 r1 = R[er], r2 = R[(er + 1) % nr], t = vsub(r2, r1);
+  float tl = vlen(t);
+  if (tl < 1e-9f) return 0;
+  t = vmul(t, 1 / tl);
+  /* clip against the reference face's two sides */
+  for (int side = 0; side < 2; side++) {
+    v2 dir = side ? vmul(t, -1) : t;
+    float off = side ? -vdot(r2, t) : vdot(r1, t);
+    float d0 = vdot(p[0], dir) - off, d1 = vdot(p[1], dir) - off;
+    if (d0 < 0 && d1 < 0) return 0;
+    if (d0 < 0) p[0] = vadd(p[0], vmul(vsub(p[1], p[0]), d0 / (d0 - d1)));
+    else if (d1 < 0) p[1] = vadd(p[1], vmul(vsub(p[0], p[1]), d1 / (d1 - d0)));
+  }
+  int n = 0;
+  for (int k = 0; k < 2; k++) {
+    float sep = vdot(vsub(p[k], r1), rn);
+    if (sep <= 0) {
+      /* the contact point halfway between the two surfaces */
+      pts[n] = vsub(p[k], vmul(rn, sep * 0.5f));
+      dep[n] = -sep;
+      n++;
+    }
+  }
+  *normal = flip ? vmul(rn, -1) : rn;
+  return n;
+}
+
+/* body a against a static polygon or body b's polygon (vertices v, n) */
+static void collide_poly(int a, int b, const v2 *v, int n, float fr) {
+  Body *A = &W.body[a];
+  v2 nn, pt;
+  if (A->shape == SH_CIRCLE) {
+    float d = circle_poly(A->p, A->r, v, n, &nn, &pt);
+    if (d > 0) add_contact(a, b, pt, nn, d, fr);
+    return;
+  }
+  v2 pts[2];
+  float dep[2];
+  int k = poly_poly(A->wv, A->nv, v, n, &nn, pts, dep);
+  for (int i = 0; i < k; i++)
+    if (dep[i] < 1.5f) add_contact(a, b, pts[i], nn, dep[i], fr);
+}
+
+int static_first(float x0) {
+  int lo = 0, hi = nstatic;
+  x0 -= static_maxw;
+  while (lo < hi) {
+    int m = (lo + hi) >> 1;
+    if (statics[m].minx < x0) lo = m + 1;
+    else hi = m;
+  }
+  return lo;
+}
+
+static void find_contacts(void) {
+  ncon = 0;
+  for (int i = 0; i < W.nbody; i++) {
+    Body *A = &W.body[i];
+    if (A->im <= 0) continue;
+    float x0 = A->p.x - A->r, x1 = A->p.x + A->r, y0 = A->p.y - A->r, y1 = A->p.y + A->r;
+    for (int k = static_first(x0); k < nstatic && statics[k].minx <= x1; k++) {
+      Static *s = &statics[k];
+      if (s->kind >= SK_WATER || s->maxx < x0 || s->miny > y1 || s->maxy < y0) continue;
+      collide_poly(i, -1 - k, s->v, s->n, mixf(A->fr, s->kind == SK_GROUND ? 0.9f : 0.7f));
+    }
+  }
+  for (int i = 0; i < W.nbody; i++)
+    for (int j = i + 1; j < W.nbody; j++) {
+      Body *A = &W.body[i], *B = &W.body[j];
+      if (A->im <= 0 && B->im <= 0) continue;
+      if (A->group && A->group == B->group) continue;
+      v2 d = vsub(B->p, A->p);
+      float rr = A->r + B->r;
+      if (vdot(d, d) > rr * rr) continue;
+      float fr = mixf(A->fr, B->fr);
+      int a = i, b = j;
+      if (A->im <= 0) a = j, b = i; /* the movable one first */
+      Body *P = &W.body[a], *Q = &W.body[b];
+      if (P->shape == SH_CIRCLE && Q->shape == SH_CIRCLE) {
+        v2 dd = vsub(P->p, Q->p);
+        float l = vlen(dd);
+        if (l < P->r + Q->r && l > 1e-6f) {
+          v2 nn = vmul(dd, 1 / l);
+          add_contact(a, b, vsub(P->p, vmul(nn, P->r)), nn, P->r + Q->r - l, fr);
+        }
+      } else if (Q->shape == SH_POLY) {
+        collide_poly(a, b, Q->wv, Q->nv, fr);
+      } else { /* P a polygon, Q a circle: the other way round */
+        v2 nn, pt;
+        float dd = circle_poly(Q->p, Q->r, P->wv, P->nv, &nn, &pt);
+        if (dd > 0) add_contact(b, a, pt, nn, dd, fr);
+      }
+    }
+}
+
+/* ------------------------------------------------------------- solver */
+static inline v2 vel_at(const Body *b, v2 r) { return vadd(b->v, V(-b->w * r.y, b->w * r.x)); }
+static inline void impulse(Body *b, v2 r, v2 P) {
+  b->v = vadd(b->v, vmul(P, b->im));
+  b->w += b->iI * vcross(r, P);
+}
+
+static void prepare_contacts(float dt) {
+  for (int i = 0; i < ncon; i++) {
+    Contact *c = &con[i];
+    Body *A = &W.body[c->a], *B = c->b >= 0 ? &W.body[c->b] : 0;
+    c->ra = vsub(c->p, A->p);
+    c->rb = B ? vsub(c->p, B->p) : V(0, 0);
+    v2 t = V(c->n.y, -c->n.x);
+    float rna = vcross(c->ra, c->n), rta = vcross(c->ra, t);
+    float kn = A->im + A->iI * rna * rna, kt = A->im + A->iI * rta * rta;
+    if (B) {
+      float rnb = vcross(c->rb, c->n), rtb = vcross(c->rb, t);
+      kn += B->im + B->iI * rnb * rnb;
+      kt += B->im + B->iI * rtb * rtb;
+    }
+    c->mn = kn > 0 ? 1 / kn : 0;
+    c->mt = kt > 0 ? 1 / kt : 0;
+    float pen = c->depth - SLOP;
+    c->bias = pen > 0 ? BETA / dt * pen : 0;
+    if (c->bias > 4) c->bias = 4;
+    c->jn = c->jt = 0;
+  }
+}
+
+static void solve_contacts(void) {
+  for (int i = 0; i < ncon; i++) {
+    Contact *c = &con[i];
+    Body *A = &W.body[c->a], *B = c->b >= 0 ? &W.body[c->b] : 0;
+    v2 dv = vel_at(A, c->ra);
+    if (B) dv = vsub(dv, vel_at(B, c->rb));
+    float vn = vdot(dv, c->n);
+    float l = c->mn * (-vn + c->bias);
+    float old = c->jn;
+    c->jn = old + l > 0 ? old + l : 0;
+    l = c->jn - old;
+    v2 P = vmul(c->n, l);
+    impulse(A, c->ra, P);
+    if (B) impulse(B, c->rb, vmul(P, -1));
+    /* friction */
+    v2 t = V(c->n.y, -c->n.x);
+    dv = vel_at(A, c->ra);
+    if (B) dv = vsub(dv, vel_at(B, c->rb));
+    float vt = vdot(dv, t);
+    float lt = -c->mt * vt, mx = c->fr * c->jn;
+    old = c->jt;
+    float nt = old + lt;
+    if (nt > mx) nt = mx;
+    if (nt < -mx) nt = -mx;
+    lt = nt - old;
+    c->jt = nt;
+    P = vmul(t, lt);
+    impulse(A, c->ra, P);
+    if (B) impulse(B, c->rb, vmul(P, -1));
+  }
+}
+
+typedef struct {
+  v2 ra, rb, bias;
+  float k11, k12, k22, gamma;
+} JointRun;
+static JointRun jr[MAX_JOINT];
+
+static void prepare_joints(float dt) {
+  for (int i = 0; i < W.njoint; i++) {
+    Joint *j = &W.joint[i];
+    JointRun *r = &jr[i];
+    Body *A = &W.body[j->a], *B = j->b >= 0 ? &W.body[j->b] : 0;
+    r->ra = vrot(j->la, A->c, A->s);
+    r->rb = B ? vrot(j->lb, B->c, B->s) : V(0, 0);
+    v2 pa = vadd(A->p, r->ra), pb = B ? vadd(B->p, r->rb) : j->lb;
+    v2 C = vsub(pa, pb);
+    float ima = A->im, iia = A->iI, imb = B ? B->im : 0, iib = B ? B->iI : 0;
+    float k11 = ima + imb + iia * r->ra.y * r->ra.y + iib * r->rb.y * r->rb.y;
+    float k12 = -iia * r->ra.x * r->ra.y - iib * r->rb.x * r->rb.y;
+    float k22 = ima + imb + iia * r->ra.x * r->ra.x + iib * r->rb.x * r->rb.x;
+    float gamma = 0, beta = 0.2f;
+    if (j->hz > 0 && ima + imb > 0) {
+      float m = 1 / (ima + imb), om = 2 * 3.14159265f * j->hz, zeta = 0.7f;
+      float kk = m * om * om, cc = 2 * m * zeta * om;
+      gamma = 1 / (dt * (cc + dt * kk));
+      beta = dt * kk * gamma;
+      r->bias = vmul(C, beta);
+    } else {
+      r->bias = vmul(C, beta / dt);
+    }
+    r->gamma = gamma;
+    k11 += gamma;
+    k22 += gamma;
+    r->k11 = k11, r->k12 = k12, r->k22 = k22;
+    j->acc = V(0, 0);
+  }
+}
+
+static void solve_joints(void) {
+  for (int i = 0; i < W.njoint; i++) {
+    Joint *j = &W.joint[i];
+    JointRun *r = &jr[i];
+    Body *A = &W.body[j->a], *B = j->b >= 0 ? &W.body[j->b] : 0;
+    v2 dv = vel_at(A, r->ra);
+    if (B) dv = vsub(dv, vel_at(B, r->rb));
+    v2 rhs = vadd(vadd(dv, r->bias), vmul(j->acc, r->gamma));
+    float det = r->k11 * r->k22 - r->k12 * r->k12;
+    if (det == 0) continue;
+    det = 1 / det;
+    v2 P = V(-(r->k22 * rhs.x - r->k12 * rhs.y) * det, -(-r->k12 * rhs.x + r->k11 * rhs.y) * det);
+    j->acc = vadd(j->acc, P);
+    impulse(A, r->ra, P);
+    if (B) impulse(B, r->rb, vmul(P, -1));
+  }
+}
+
+/* the wheels' motors: drive toward a target spin, against the chassis (that gives wheelies and
+   lets the car turn in the air) */
+static float motor_acc[4];
+static void solve_motors(uint8_t buttons, float dt) {
+  if (W.chassis < 0) return;
+  Body *C = &W.body[W.chassis];
+  float fwd = C->v.x * C->c + C->v.y * C->s; /* speed along the car */
+  for (int k = 0; k < W.nwheel; k++) {
+    Body *wh = &W.body[W.wheel[k]];
+    float target, maxt;
+    if (buttons & 2) {
+      target = -W.motor_speed;
+      maxt = W.motor_torque;
+    } else if (buttons & 1) {
+      if (fwd > 1.0f) target = 0, maxt = W.motor_torque * 1.6f; /* brake */
+      else target = W.motor_speed * 0.55f, maxt = W.motor_torque * 0.8f; /* reverse */
+    } else {
+      target = 0;
+      maxt = 0.06f; /* rolling resistance */
+    }
+    float rel = wh->w - C->w - target;
+    float mass = 1 / (wh->iI + C->iI);
+    float l = -mass * rel, old = motor_acc[k], mx = maxt * dt / W.nwheel;
+    float nv = old + l;
+    if (nv > mx) nv = mx;
+    if (nv < -mx) nv = -mx;
+    l = nv - old;
+    motor_acc[k] = nv;
+    wh->w += wh->iI * l;
+    C->w -= C->iI * l;
+  }
+}
+
+#define t_now W.t
+static void kinematics(float dt) {
+  for (int i = 0; i < W.nbody; i++) {
+    Body *b = &W.body[i];
+    if (!b->kin) continue;
+    if (b->kind == BK_SPIN) {
+      b->w = b->kspeed;
+      b->v = V(0, 0);
+    } else {
+      /* back and forth along an axis: position base + amp * (1 - cos) / 2 */
+      float ph = b->kphase + b->kspeed * t_now;
+      float d = b->kamp * 0.5f * (1 - cosf(ph)), vel = b->kamp * 0.5f * sinf(ph) * b->kspeed;
+      v2 target = b->kaxis ? V(b->kx, b->ky + d) : V(b->kx + d, b->ky);
+      v2 vv = b->kaxis ? V(0, vel) : V(vel, 0);
+      /* velocity that reaches the exact place at the end of this step */
+      b->v = vadd(vv, vmul(vsub(target, b->p), 0.5f / dt));
+      b->w = 0;
+    }
+  }
+  (void)dt;
+}
+
+void phys_step(uint8_t buttons) {
+  const float dt = 1.0f / (60 * PHYS_SUB);
+  for (int sub = 0; sub < PHYS_SUB; sub++) {
+    t_now += dt;
+    kinematics(dt);
+    for (int i = 0; i < W.nbody; i++) {
+      Body *b = &W.body[i];
+      if (b->im <= 0) continue;
+      b->v.y += GRAVITY * dt;
+      b->v = vmul(b->v, 0.9995f);
+      b->w *= b->kind == BK_WHEEL ? 0.9998f : 0.998f;
+    }
+    find_contacts();
+    prepare_contacts(dt);
+    prepare_joints(dt);
+    memset(motor_acc, 0, sizeof motor_acc);
+    for (int it = 0; it < ITER; it++) {
+      solve_motors(buttons, dt);
+      solve_joints();
+      solve_contacts();
+    }
+    for (int i = 0; i < W.nbody; i++) {
+      Body *b = &W.body[i];
+      if (b->im <= 0 && !b->kin) continue;
+      /* a body never moves more than a third of a metre in one step */
+      float sp = vlen(b->v);
+      if (sp > 40) b->v = vmul(b->v, 40 / sp);
+      b->p = vadd(b->p, vmul(b->v, dt));
+      b->a += b->w * dt;
+      body_update(b);
+    }
+  }
+  W.frame++;
+}
+
+void phys_reset_time(void) { W.t = 0; }
+
+/* overlap tests (no response): the rules use them for the head, water and lava */
+bool circle_hits_static(v2 c, float r, int kind_lo, int kind_hi) {
+  for (int k = static_first(c.x - r); k < nstatic && statics[k].minx <= c.x + r; k++) {
+    Static *s = &statics[k];
+    if (s->kind < kind_lo || s->kind > kind_hi || s->maxx < c.x - r || s->miny > c.y + r || s->maxy < c.y - r)
+      continue;
+    v2 nn, pt;
+    if (circle_poly(c, r, s->v, s->n, &nn, &pt) > 0) return true;
+  }
+  return false;
+}
+
+bool body_hits_static(const Body *b, int kind_lo, int kind_hi) {
+  if (b->shape == SH_CIRCLE) return circle_hits_static(b->p, b->r, kind_lo, kind_hi);
+  for (int k = static_first(b->p.x - b->r); k < nstatic && statics[k].minx <= b->p.x + b->r; k++) {
+    Static *s = &statics[k];
+    if (s->kind < kind_lo || s->kind > kind_hi || s->maxx < b->p.x - b->r || s->miny > b->p.y + b->r ||
+        s->maxy < b->p.y - b->r)
+      continue;
+    v2 nn;
+    for (int i = 0; i < b->nv; i++)
+      if (point_in_poly(b->wv[i], s->v, s->n, &nn) > 0) return true;
+  }
+  return false;
+}
+
+bool circle_hits_body(v2 c, float r, const Body *b) {
+  v2 nn, pt;
+  if (b->shape == SH_CIRCLE) {
+    v2 d = vsub(c, b->p);
+    float rr = r + b->r;
+    return vdot(d, d) < rr * rr;
+  }
+  return circle_poly(c, r, b->wv, b->nv, &nn, &pt) > 0;
+}
+
+/* a car part touching the ground (or anything solid): for the rules and the sounds of landing */
+bool car_on_ground(void) {
+  for (int i = 0; i < ncon; i++) {
+    Body *A = &W.body[con[i].a];
+    if (A->kind == BK_WHEEL) return true;
+  }
+  return false;
+}
+
+/* contacts of one body this frame (touching platforms that fall) */
+int contacts_of(int body, int *others, int max) {
+  int n = 0;
+  for (int i = 0; i < ncon && n < max; i++) {
+    if (con[i].a == body) others[n++] = con[i].b;
+    else if (con[i].b == body) others[n++] = con[i].a;
+  }
+  return n;
+}
diff --git a/games/numdrive/src/save.c b/games/numdrive/src/save.c
index 46dc8a3..3b058bf 100644
--- a/games/numdrive/src/save.c
+++ b/games/numdrive/src/save.c
@@ -1,5 +1,5 @@
 /* Progress persistence. On the calculator the progress lives in a small record
- * ("drivemad.sav") of the Epsilon file storage, located through the userland header. */
+ * ("numdrive.sav") of the Epsilon file storage, located through the userland header. */
 #include <string.h>
 #include "save.h"
 
@@ -36,7 +36,7 @@ void save_store(void) {
 
 #include "../../common/epsilon_app.h"
 
-static const char rec_name[] = "drivemad.sav";
+static const char rec_name[] = "numdrive.sav";
 #define SAVE_MAGIC 0x444Du
 
 static uint8_t *storage_buf;
diff --git a/games/numdrive/src/ui.c b/games/numdrive/src/ui.c
index 796eb32..a2b26c6 100644
--- a/games/numdrive/src/ui.c
+++ b/games/numdrive/src/ui.c
@@ -1,201 +1,112 @@
-/* In-game HUD, photo cards (pause / win / lose) and the level list, drawn like Fancade's UI. */
+/* NumDrive's screens: the in-game overlay, the pause / finish / crash panels, the level list and
+ * the "Quit game?" question, over a blurred picture of the game. */
 #include <math.h>
 #include <string.h>
 #include "ui.h"
 #include "gfx.h"
-#include "render.h"
-#include "world.h"
+#include "draw.h"
+#include "nd.h"
 #include "save.h"
 #include "platform.h"
 
-/* palette sampled from the original */
-#define C_OUTLINE RGB(0x39, 0x39, 0x4c)
-#define C_PILL_TXT RGB(0xb1, 0xc0, 0xd3)
-#define C_CAPTION RGB(0xa4, 0xb2, 0xc4)
-#define C_BLUE RGB(0x00, 0x8c, 0xff)
-#define C_BLUE_D RGB(0x00, 0x6a, 0xd8)
-#define C_GRAY RGB(0xb2, 0xb7, 0xcb)
-#define C_GRAY_D RGB(0x7a, 0x81, 0x99)
-#define C_PANEL RGB(0x00, 0xb9, 0xff)
-#define C_PANEL_D RGB(0x00, 0x8b, 0xbf)
-#define C_PANEL_TXT RGB(0xb4, 0xe4, 0xff)
-#define C_GREEN RGB(0x39, 0xc7, 0x46)
-#define C_GREEN_D RGB(0x26, 0x8f, 0x34)
-#define C_TILE_B RGB(0x00, 0x7a, 0xee)
-#define C_TILE_BD RGB(0x00, 0x58, 0xc0)
-#define C_SHADOW RGB(0x10, 0x1c, 0x58)
-#define C_TITLE_O RGB(0x19, 0x1a, 0x1b)
+#define C_INK RGB(0x1e, 0x2a, 0x3a)
+#define C_SOFT RGB(0x6a, 0x78, 0x8c)
+#define C_LIGHT RGB(0xe6, 0xec, 0xf2)
+#define C_TEAL RGB(0x18, 0xb4, 0xa8)
+#define C_TEAL_D RGB(0x10, 0x84, 0x7c)
+#define C_ORANGE RGB(0xff, 0x8a, 0x3d)
+#define C_GREEN RGB(0x3c, 0xc4, 0x6a)
+#define C_GREEN_D RGB(0x28, 0x92, 0x4c)
+#define C_CORAL RGB(0xf0, 0x56, 0x6a)
+#define C_SLATE RGB(0x4a, 0x5b, 0x78)
+#define C_SLATE_D RGB(0x34, 0x42, 0x5a)
 
 /* ------------------------------------------------------------------- HUD */
 static int hud_t;
 static uint8_t hud_btn;
-float hud_score, hud_coins;
+void hud_reset(void) { hud_t = 0, hud_btn = 0; }
+void hud_tick(uint8_t b) { hud_t++, hud_btn = b; }
 
-void hud_reset(void) {
-  hud_t = 0;
-  hud_score = hud_coins = -1;
-  hud_btn = 0;
-}
-
-void hud_tick(uint8_t buttons) {
-  hud_t++;
-  hud_btn = buttons;
-}
-
-/* Set Score counter text: white halo, dark outline and a face with a darker extruded bottom */
-static void counter_text(const Font *f, int xr, int y, const char *s, uint16_t face, uint16_t side, uint16_t outl,
-                         int depth) {
-  int x = xr - g_text_w(f, s);
-  for (int dy = -2; dy <= depth + 2; dy++)
-    for (int dx = -2; dx <= 2; dx++)
-      if ((dx != -2 && dx != 2) || (dy != -2 && dy != depth + 2)) g_text(f, x + dx, y + dy, s, C_WHITE, 32);
-  for (int dy = -1; dy <= depth + 1; dy++)
-    for (int dx = -1; dx <= 1; dx++) g_text(f, x + dx, y + dy, s, outl, 32);
-  for (int dy = depth; dy > 0; dy--) g_text(f, x, y + dy, s, side, 32);
-  g_text(f, x, y, s, face, 32);
-}
-
-/* the gold coin next to the coin count: a diamond with a raised rim and a thick lower edge */
-static void coin_icon(int cx, int cy) {
-  enum { R = 5, E = 2 };
-  for (int y = cy - R - 2; y <= cy + R + E + 2; y++) {
-    if (y < gc.y0 || y >= gc.y1) continue;
-    for (int x = cx - R - 2; x <= cx + R + 2; x++) {
-      int dx = x - cx, dy = y - cy, ax = dx < 0 ? -dx : dx;
-      int d = ax + (dy < 0 ? -dy : dy);
-      int de = ax + (dy < 0 ? -dy : dy > E ? dy - E : 0);
-      uint16_t c;
-      int a = 32;
-      if (de > R + 2) continue;
-      if (de == R + 2) c = C_WHITE, a = 24;
-      else if (de == R + 1) c = C_OUTLINE;
-      else if (d > R) c = RGB(0xca, 0x84, 0x00);
-      else if (d == R) c = dx + dy < 0 ? RGB(0xff, 0xff, 0x80) : RGB(0xff, 0xd8, 0x00);
-      else if (d > 2) c = RGB(0xff, 0xd8, 0x00);
-      else if (d == 2) c = dx + dy < 0 ? RGB(0xca, 0x84, 0x00) : RGB(0xff, 0xe0, 0x00);
-      else c = RGB(0xed, 0xaf, 0x00);
-      g_rect(x, y, 1, 1, c, a);
-    }
-  }
-}
-
-static char *fmt_uint(char *p, unsigned v) {
-  char t[10];
+static char *put_num(char *p, int v) {
+  char t[8];
   int n = 0;
   do t[n++] = (char)('0' + v % 10), v /= 10;
-  while (v && n < 10);
+  while (v && n < 8);
   while (n) *p++ = t[--n];
+  *p = 0;
   return p;
 }
 
-static void draw_counters(void) {
-  char buf[16];
-  if (hud_score >= 0 && gc.y0 < 38) {
-    unsigned t = hud_score < 9e7f ? (unsigned)(hud_score * 10 + 0.5f) : 999999999u;
-    char *p = fmt_uint(buf, t / 10);
-    *p++ = '.';
-    *p++ = (char)('0' + t % 10);
+static void level_label(char *buf, int lvl, bool with_name) {
+  const char *pre = T("Level ");
+  char *p = buf;
+  while (*pre) *p++ = *pre++;
+  p = put_num(p, lvl + 1);
+  if (with_name) {
+    const char *nm = level_name(lvl);
+    *p++ = ' ';
+    *p++ = '-';
+    *p++ = ' ';
+    while (*nm && p < buf + 46) *p++ = *nm++;
     *p = 0;
-    counter_text(&font_l, 312, 18 - font_l.cap_top, buf, C_WHITE, RGB(0xb8, 0xbe, 0xcc), C_OUTLINE, 2);
-  }
-  if (hud_coins >= 0 && gc.y1 > 28 && gc.y0 < 48) {
-    *fmt_uint(buf, hud_coins < 4e9f ? (unsigned)(hud_coins + 0.5f) : 0) = 0;
-    counter_text(&font_s, 300, 34 - font_s.cap_top, buf, RGB(0xff, 0xd8, 0x00), RGB(0xc0, 0x99, 0x00),
-                 RGB(0x3f, 0x30, 0x00), 1);
-    coin_icon(306, 38);
   }
 }
 
-static void draw_pill(const char *txt, int y) {
-  int w = g_text_w(&font_s, txt) + 22;
-  int x = 160 - w / 2;
-  g_rrect(x - 1, y - 1, w + 2, 14, 7, C_BLACK, 32);
-  g_rrect(x, y, w, 12, 6, C_WHITE, 32);
-  g_text_c(&font_s, 160, y + 6 - (font_s.cap_top + font_s.base) / 2, txt, C_PILL_TXT, 32);
+static void confetti(void) {
+  int t = W.state_t;
+  for (int i = 0; i < 46; i++) {
+    uint32_t h = (uint32_t)i * 2654435761u;
+    float x = (float)(h % 320) + sinf(t * 0.07f + i) * 10;
+    float y = -10 + t * (1.6f + (h >> 8) % 7 * 0.25f) - (h >> 12) % 120;
+    if (y < gc.y0 - 4 || y > gc.y1 + 4) continue;
+    static const uint16_t cols[5] = {0xFD20, 0x07FF, 0xF81F, 0xFFE0, 0x07E0};
+    int w = 2 + (int)(fabsf(sinf(t * 0.2f + i)) * 3);
+    g_rect((int)x, (int)y, w, 3, cols[i % 5], 32);
+  }
 }
 
 void hud_draw(uint16_t *px, int y, int n) {
   g_begin(px, y, n);
-  if (y < 30) {
-    g_icon(&ic_pause_o, 7, 6, C_OUTLINE, 32);
-    g_icon(&ic_pause_f, 7, 6, C_WHITE, 32);
-    if (hud_t < 150 + 12) {
-      int py = 7 - (hud_t > 150 ? (hud_t - 150) * 2 : 0);
-      static char buf[40];
-      const char *nm = level.name;
-      int i = 0;
-      const char *pre = T("Level ");
-      while (*pre) buf[i++] = *pre++;
-      int num = level_index + 1;
-      if (num >= 100) buf[i++] = (char)('0' + num / 100);
-      if (num >= 10) buf[i++] = (char)('0' + num / 10 % 10);
-      buf[i++] = (char)('0' + num % 10);
-      buf[i++] = ':';
-      buf[i++] = ' ';
-      while (*nm && i < 38) buf[i++] = *nm++;
-      buf[i] = 0;
-      draw_pill(buf, py);
+  if (y < 34) {
+    g_rrect(8, 8, 22, 22, 6, C_INK, 18);
+    g_icon(&ic_pause, 13, 13, C_WHITE, 32);
+    /* the level, for a few seconds */
+    if (hud_t < 170) {
+      char buf[56];
+      level_label(buf, L.index, true);
+      int w = g_text_w(&font_s, buf) + 20, py = 10 - (hud_t > 150 ? (hud_t - 150) * 2 : 0);
+      g_rrect(160 - w / 2, py, w, 18, 9, C_INK, 22);
+      g_text_c(&font_s, 160, py + 13 - font_s.base, buf, C_WHITE, 32);
     }
   }
-  draw_counters();
-  if (y + n > 180 && y < 216) {
-    /* the driving arrows: faint, and white while their key is held */
-    int al = hud_btn & 1 ? 32 : 14, ar = hud_btn & 2 ? 32 : 14;
-    g_icon(&ic_back, 36, 184, C_WHITE, al);
-    g_icon(&ic_back, 37, 184, C_WHITE, al);
-    g_icon(&ic_next, 274, 184, C_WHITE, ar);
-    g_icon(&ic_next, 275, 184, C_WHITE, ar);
-  }
-}
-
-/* viewfinder brackets shown just before the photo is taken */
-void viewfinder_draw(uint16_t *px, int y, int n, int t) {
-  g_begin(px, y, n);
-  int m = 6 - t / 2; /* brackets tighten slightly */
-  if (m < 0) m = 0;
-  int x0 = 40 + m, x1 = 280 - m, y0 = m, y1 = 240 - m, L = 34, T = 3;
-  g_rect(x0, y0, L, T, C_WHITE, 32);
-  g_rect(x0, y0, T, L, C_WHITE, 32);
-  g_rect(x1 - L, y0, L, T, C_WHITE, 32);
-  g_rect(x1 - T, y0, T, L, C_WHITE, 32);
-  g_rect(x0, y1 - T, L, T, C_WHITE, 32);
-  g_rect(x0, y1 - L, T, L, C_WHITE, 32);
-  g_rect(x1 - L, y1 - T, L, T, C_WHITE, 32);
-  g_rect(x1 - T, y1 - L, T, L, C_WHITE, 32);
-  /* focus arc */
-  const float R = 28;
-  for (int yy = y; yy < y + n; yy++) {
-    float dy = yy + 0.5f - 120;
-    if (fabsf(dy) > R + 2) continue;
-    for (int xx = 130; xx < 190; xx++) {
-      float dx = xx + 0.5f - 160, d = sqrtf(dx * dx + dy * dy), e = fabsf(d - R);
-      if (e > 1.2f || dy > 0 || dx < -6) continue;
-      int a = (int)((1.2f - e) * 14);
-      uint16_t *p = px + (yy - y) * SCREEN_W + xx;
-      *p = mix565(*p, C_WHITE, a);
-    }
+  if (y + n > 200) {
+    /* progress to the flag */
+    float span = L.finish_x - L.start_x, t = span > 0 ? (W.best_x - L.start_x) / span : 0;
+    if (t < 0) t = 0;
+    if (t > 1) t = 1;
+    const int bw = 120, bx = 160 - bw / 2, byy = 224;
+    g_rrect(bx - 1, byy - 1, bw + 2, 7, 3, C_INK, 16);
+    g_rrect(bx, byy, bw, 5, 2, C_WHITE, 14);
+    g_rrect(bx, byy, 4 + (int)((bw - 4) * t), 5, 2, C_ORANGE, 32);
+    g_icon(&ic_flag, bx + bw + 4, byy - 4, C_WHITE, 32);
+    int al = hud_btn & 1 ? 32 : 10, ar = hud_btn & 2 ? 32 : 10;
+    g_icon(&ic_back, 14, 214, C_WHITE, al);
+    g_icon(&ic_next, 295, 214, C_WHITE, ar);
   }
+  if (W.state == ST_WON) confetti();
 }
 
 /* ------------------------------------------------------------ background */
 #define BW 40
 #define BH 30
-static uint8_t (*blur)[BW][3]; /* allocated from the level arena when a menu first opens */
+static uint8_t blur[BH][BW][3];
 
 void ui_capture_background(void) {
   static uint16_t acc[BW][3];
-  static int blur_level = -1;
-  if (!blur || blur_level != level_serial) {
-    blur = arena_keep_alloc(sizeof(uint8_t) * BH * BW * 3);
-    blur_level = level_serial;
-  }
-  if (!blur) return;
-  cam_view(SCREEN_W * 0.5f, SCREEN_H * 0.5f, 1, 0);
-  render_prepare(0, SCREEN_W);
+  draw_prepare();
   for (int sy = 0; sy < SCREEN_H; sy += STRIP_H) {
-    int n = SCREEN_H - sy < STRIP_H ? SCREEN_H - sy : STRIP_H;
-    uint16_t *b = render_strip(sy, n, 0, SCREEN_W);
-    for (int by = 0; by < n / 8; by++) { /* STRIP_H is a multiple of 8 */
+    uint16_t *b = draw_strip(sy, STRIP_H);
+    for (int by = 0; by < STRIP_H / 8; by++) {
       memset(acc, 0, sizeof acc);
       for (int r = 0; r < 8; r++) {
         const uint16_t *row = b + (by * 8 + r) * SCREEN_W;
@@ -208,14 +119,14 @@ void ui_capture_background(void) {
       }
       uint8_t(*o)[3] = blur[sy / 8 + by];
       for (int i = 0; i < BW; i++) {
-        o[i][0] = (uint8_t)(acc[i][0] * 255 / (64 * 31));
-        o[i][1] = (uint8_t)(acc[i][1] * 255 / (64 * 63));
-        o[i][2] = (uint8_t)(acc[i][2] * 255 / (64 * 31));
+        /* darkened a little, so the panels stand out */
+        o[i][0] = (uint8_t)(acc[i][0] * 255 / (64 * 31) * 3 / 4);
+        o[i][1] = (uint8_t)(acc[i][1] * 255 / (64 * 63) * 3 / 4);
+        o[i][2] = (uint8_t)(acc[i][2] * 255 / (64 * 31) * 3 / 4 + 12);
       }
     }
   }
-  /* soften: two separable box passes */
-  uint8_t t[BH][BW][3];
+  static uint8_t t[BH][BW][3];
   for (int pass = 0; pass < 2; pass++) {
     for (int y = 0; y < BH; y++)
       for (int x = 0; x < BW; x++)
@@ -232,391 +143,173 @@ void ui_capture_background(void) {
   }
 }
 
-/* one screen row of the blurred background, columns [x0, x1) */
-static void bg_row(uint16_t *dst, int y, int x0, int x1) {
-  static uint16_t row[BW][3];
-  if (!blur) {
-    for (int x = x0; x < x1; x++) dst[x] = sky565;
-    return;
-  }
+static void bg_row(uint16_t *dst, int y) {
   int ty = 2 * y + 1 - 8, iy = ty >> 4, wy = ty & 15;
   if (iy < 0) iy = 0, wy = 0;
   if (iy >= BH - 1) iy = BH - 2, wy = 16;
-  for (int i = 0; i < BW; i++)
-    for (int k = 0; k < 3; k++) row[i][k] = (uint16_t)(blur[iy][i][k] * (16 - wy) + blur[iy + 1][i][k] * wy);
-  for (int x = x0; x < x1; x++) {
+  for (int x = 0; x < SCREEN_W; x++) {
     int tx = 2 * x + 1 - 8, ix = tx >> 4, wx = tx & 15;
     if (ix < 0) ix = 0, wx = 0;
     if (ix >= BW - 1) ix = BW - 2, wx = 16;
-    int r = (row[ix][0] * (16 - wx) + row[ix + 1][0] * wx) >> 8;
-    int g = (row[ix][1] * (16 - wx) + row[ix + 1][1] * wx) >> 8;
-    int b = (row[ix][2] * (16 - wx) + row[ix + 1][2] * wx) >> 8;
-    dst[x] = RGB(r, g, b);
+    int c[3];
+    for (int k = 0; k < 3; k++) {
+      int a = blur[iy][ix][k] * (16 - wx) + blur[iy][ix + 1][k] * wx;
+      int b = blur[iy + 1][ix][k] * (16 - wx) + blur[iy + 1][ix + 1][k] * wx;
+      c[k] = (a * (16 - wy) + b * wy) >> 8;
+      if (c[k] > 255) c[k] = 255;
+    }
+    dst[x] = RGB(c[0], c[1], c[2]);
   }
 }
 
 /* ------------------------------------------------------------------ cards */
-typedef struct {
-  int16_t x0, y0, x1, y1;
-  uint16_t c;
-} Box;
-typedef struct {
-  const Font *f;
-  int16_t x, y, w;
-  uint16_t c;
-  const char *s;
-} Run;
-
-static struct {
-  int kind, level;
-  float w, h, ang;
-  float cx, cy;
-  Box photo;
-  Box box[3];
-  int nbox;
-  Run run[12];
-  int nrun;
-  char txt[4][24];
-} cd;
+static int card_kind, card_level;
 
-static void add_run(const Font *f, int x, int baseline, const char *s, uint16_t c, bool center) {
-  Run *r = &cd.run[cd.nrun++];
-  r->f = f;
-  r->w = (int16_t)g_text_w(f, s);
-  r->x = (int16_t)(center ? x - r->w / 2 : x);
-  r->y = (int16_t)(baseline - f->base);
-  r->c = c;
-  r->s = s;
+void card_setup(int kind, int level) {
+  card_kind = kind;
+  card_level = level;
 }
 
-static const char *const desc[] = {T("Drive silly cars at high"), T("speeds in dangerous"), T("terrain. Oh, and you"),
-                                   T("can't steer. Good luck!")};
+int card_buttons(void) { return card_kind == CARD_LOSE ? 1 : card_kind == CARD_PAUSE ? 3 : 2; }
 
-void card_setup(int kind, int lvl) {
-  memset(&cd, 0, sizeof cd);
-  cd.kind = kind;
-  cd.level = lvl;
-  if (kind == CARD_PAUSE) {
-    cd.w = 206;
-    cd.h = 166;
-    cd.ang = -5.4f * 3.14159265f / 180;
-    cd.cx = 160;
-    cd.cy = 92;
-    /* content: x in [-91, 91], y in [-71, 47] */
-    cd.box[0] = (Box){-91, -71, 44, 12, C_PANEL};
-    cd.box[1] = (Box){-91, 12, 44, 47, C_PANEL_D};
-    cd.nbox = 2;
-    cd.photo = (Box){44, -71, 91, 47, 0};
-    /* (in other languages, lines a little further apart: room for accents and Chinese letters) */
-    for (int i = 0; i < 4; i++) add_run(&font_s, -86, -58 + i * (NP_TEXT_EXTRA ? 12 : 10), desc[i], C_WHITE, false);
-    add_run(&font_s, -86, 4, T("Inspired by Drive Mad"), C_WHITE, false);
-    add_run(&font_s, -86, NP_TEXT_EXTRA ? 22 : 24, T("Made by Mason Chen"), C_WHITE, false);
-    char *t = cd.txt[0];
-    int n = lvl + 1, i = 0;
-    const char *pre = T("Level ");
-    while (*pre) t[i++] = *pre++;
-    if (n >= 100) t[i++] = (char)('0' + n / 100);
-    if (n >= 10) t[i++] = (char)('0' + n / 10 % 10);
-    t[i++] = (char)('0' + n % 10);
-    t[i] = 0;
-    add_run(&font_s, -86, 34, t, C_PANEL_TXT, false);
-    strcpy(cd.txt[1], level_name(lvl));
-    add_run(&font_s, -86, 43, cd.txt[1], C_PANEL_TXT, false);
-    add_run(&font_m, 0, 66, "NumDrive", C_CAPTION, true);
-  } else {
-    cd.w = 143;
-    cd.h = 156;
-    cd.ang = -10.5f * 3.14159265f / 180;
-    cd.cx = 160;
-    cd.cy = 91;
-    cd.photo = (Box){-59, -66, 59, 52, 0};
-    add_run(&font_m, 0, 69, kind == CARD_WIN ? T("Good game") : T("Terminated"), C_CAPTION, true);
-  }
+/* text centred in a box (its capitals in the middle) */
+static void text_mid(const Font *f, int cx, int y, int h, const char *str, uint16_t c) {
+  int base = y + (h + (f->base - f->cap_top)) / 2;
+  g_text_c(f, cx, base - f->base, str, c, 32);
 }
 
-int card_buttons(void) { return cd.kind == CARD_LOSE ? 1 : cd.kind == CARD_PAUSE ? 3 : 2; }
-
-/* 2x2 bilinear sample of a text run, returns alpha 0..32 */
-static int run_texel(const Run *r, int x, int y) {
-  if (y < 0 || y >= r->f->h) return 0;
-  int pos = 0;
-#if NP_TEXT_EXTRA
-  for (const char *s = r->s; *s && pos <= x + 4;) {
-    Letter l = g_letter(r->f, &s);
-    int a = x >= pos - 3 && x < pos + l.adv + 3 ? g_letter_alpha(r->f, &l, x - pos, y) : 0;
-    if (a) return a;
-    pos += l.adv;
-  }
-#else
-  for (const char *s = r->s; *s; s++) {
-    const Glyph *g = font_glyph(r->f, (unsigned char)*s);
-    if (!g) continue;
-    if (x >= pos + g->xoff && x < pos + g->xoff + g->w) {
-      int a = glyph_alpha(r->f, g, x - pos, y);
-      if (a) return a;
-    }
-    pos += g->adv;
-    if (pos + 4 < x) continue;
-    if (pos > x + 4) break;
-  }
-#endif
-  return 0;
+static void button(int x, int y, int w, int h, const Icon *ic, const char *label, bool on, uint16_t accent,
+                   uint16_t accent_d) {
+  if (on) g_rrect(x - 2, y - 2, w + 4, h + 4, 9, C_WHITE, 32);
+  g_rrect(x, y, w, h, 7, on ? accent_d : RGB(0xb8, 0xc2, 0xd0), 32);
+  g_rrect(x, y, w, h - 3, 7, on ? accent : C_LIGHT, 32);
+  uint16_t fg = on ? C_WHITE : C_INK;
+  int tw = g_text_w(&font_s, label), iw = ic ? ic->w + 3 : 0;
+  int x0 = x + (w - tw - iw) / 2;
+  if (ic) g_icon(ic, x0, y + (h - 3 - ic->h) / 2, fg, 32);
+  text_mid(&font_s, x0 + iw + tw / 2, y, h - 3, label, fg);
 }
 
-static int run_alpha(const Run *r, float u, float v) {
-  float tx = u - r->x - 0.5f, ty = v - r->y - 0.5f;
-  if (tx < -2 || tx > r->w + 2 || ty < -1 || ty > r->f->h) return 0;
-  int ix = (int)floorf(tx), iy = (int)floorf(ty);
-  float fx = tx - ix, fy = ty - iy;
-  float a = run_texel(r, ix, iy) * (1 - fx) * (1 - fy) + run_texel(r, ix + 1, iy) * fx * (1 - fy) +
-            run_texel(r, ix, iy + 1) * (1 - fx) * fy + run_texel(r, ix + 1, iy + 1) * fx * fy;
-  return (int)(a * 32 / 3 + 0.5f);
-}
-
-static float ease_back(float t) {
+static float ease_out(float t) {
   if (t >= 1) return 1;
-  float s = 1.9f;
+  float s = 1.6f;
   t -= 1;
   return t * t * ((s + 1) * t + s) + 1;
 }
 
-/* buttons below the card */
-static void card_btns(int sel, int yb) {
-  const int x0 = 89, w = 142, h = 30, r = 6;
-  const int iy = yb + 3 - 2 * NP_TEXT_EXTRA; /* the icons (in other languages a little higher, over Chinese letters) */
-  if (cd.kind == CARD_LOSE) {
-    g_button(x0, yb, w, h, r, C_BLUE, C_BLUE_D, 0);
-    g_icon(&ic_play, 160 - 6, iy, C_WHITE, 32);
-    g_text_c(&font_s, 160, yb + 25 - font_s.base, T("Retry"), C_WHITE, 32);
-  } else {
-    /* Restart (grey) | Resume or Next Level (blue), and Levels (grey) on the pause card */
-    const bool paused = cd.kind == CARD_PAUSE;
-    const int ws = 46, wl = paused ? 50 : 0, wb = paused ? 192 : w, xb = 160 - wb / 2;
-    g_rrect(xb - 1, yb - 1, wb + 2, h + 2, r + 1, C_BLACK, 32);
-    g_rrect(xb, yb, wb, h, r, C_BLUE_D, 32);
-    g_rrect(xb, yb, wb, h - 3, r, C_BLUE, 32);
-    for (int yy = yb; yy < yb + h; yy++) {
-      if (yy < gc.y0 || yy >= gc.y1) continue;
-      uint16_t *p = gc.px + (yy - gc.y0) * SCREEN_W;
-      for (int x = xb; x < xb + wb; x++) {
-        if (x >= xb + ws && x < xb + wb - wl) continue;
-        uint16_t c = p[x];
-        if (c == C_BLUE) p[x] = C_GRAY;
-        else if (c == C_BLUE_D) p[x] = C_GRAY_D;
-        else if (c != C_BLACK) p[x] = mix565(c, C_GRAY, 20);
-      }
-    }
-    g_icon(&ic_restart, xb + ws / 2 - 7, iy, C_WHITE, 32);
-    g_text_c(&font_s, xb + ws / 2, yb + 25 - font_s.base, T("Restart"), C_WHITE, 32);
-    int cx = xb + ws + (wb - ws - wl) / 2;
-    g_icon(&ic_play, cx - 7, iy, C_WHITE, 32);
-    g_text_c(&font_s, cx, yb + 25 - font_s.base, paused ? T("Resume") : T("Next Level"), C_WHITE, 32);
-    if (paused) {
-      int lx = xb + wb - wl / 2;
-      for (int k = 0; k < 4; k++) g_rect(lx - 6 + (k & 1) * 7, iy + 1 + (k >> 1) * 7, 5, 5, C_WHITE, 32);
-      g_text_c(&font_s, lx, yb + 25 - font_s.base, T("Levels"), C_WHITE, 32);
-    }
-    /* focus ring */
-    if (sel != CARD_SEL_QUIT) {
-      int fx = sel == 0 ? xb : sel == 1 ? xb + ws : xb + wb - wl;
-      int fw = sel == 0 ? ws : sel == 1 ? wb - ws - wl : wl;
-      g_rect(fx + 1, yb + 1, fw - 2, 1, C_WHITE, 26);
-      g_rect(fx + 1, yb + h - 5, fw - 2, 1, C_WHITE, 26);
-      g_rect(fx + 1, yb + 1, 1, h - 5, C_WHITE, 26);
-      g_rect(fx + fw - 2, yb + 1, 1, h - 5, C_WHITE, 26);
-    }
-  }
-  /* Quit game, small, under the others (Down to reach it) */
-  int qw = g_text_w(&font_s, T("Quit game")) + 16, qy = yb + h + 5;
-  bool q = sel == CARD_SEL_QUIT;
-  g_button(160 - qw / 2, qy, qw, 15, 5, q ? C_BLUE : C_GRAY, q ? C_BLUE_D : C_GRAY_D, q);
-  g_text_c(&font_s, 160, qy + 12 - font_s.base, T("Quit game"), C_WHITE, 32);
-}
-
-void card_draw(int anim, int sel, bool full) {
-  float t = anim / 12.0f;
-  float s = 0.55f + 0.45f * ease_back(t);
-  float ang = cd.ang * (t >= 1 ? 1 : 0.3f + 0.7f * ease_back(t));
-  float cs = cosf(ang), sn = sinf(ang);
-  float cx = cd.cx, cy = cd.cy;
-  float hw = cd.w * 0.5f, hh = cd.h * 0.5f;
-  /* screen bbox of card and shadow */
-  float ex = (fabsf(cs) * hw + fabsf(sn) * hh) * s, ey = (fabsf(sn) * hw + fabsf(cs) * hh) * s;
-  int bx0 = (int)(cx - ex) - 1, bx1 = (int)(cx + ex) + 6, by0 = (int)(cy - ey) - 1, by1 = (int)(cy + ey) + 7;
-  if (bx0 < 0) bx0 = 0;
-  if (bx1 > SCREEN_W) bx1 = SCREEN_W;
-  if (by0 < 0) by0 = 0;
-  if (by1 > SCREEN_H) by1 = SCREEN_H;
-  /* photo camera: the photo shows the centre square of the game view */
-  float pu = (cd.photo.x0 + cd.photo.x1) * 0.5f, pv = (cd.photo.y0 + cd.photo.y1) * 0.5f;
-  float ph = (float)(cd.photo.y1 - cd.photo.y0);
-  float pcx = cx + s * (pu * cs - pv * sn), pcy = cy + s * (pu * sn + pv * cs);
-  float pex = (fabsf(cs) * (cd.photo.x1 - cd.photo.x0) + fabsf(sn) * ph) * 0.5f * s;
-  float pey = (fabsf(sn) * (cd.photo.x1 - cd.photo.x0) + fabsf(cs) * ph) * 0.5f * s;
-  int px0 = (int)(pcx - pex), px1 = (int)(pcx + pex) + 2, py0 = (int)(pcy - pey), py1 = (int)(pcy + pey) + 2;
-  if (px0 < 0) px0 = 0;
-  if (px1 > SCREEN_W) px1 = SCREEN_W;
-  Camera saved = cam;
-  cam_view(pcx, pcy, s * ph / 240.0f, -ang);
-  render_prepare(px0, px1);
-  int ybtn = 190;
-  int y_lo = full ? 0 : by0, y_hi = full ? SCREEN_H : by1;
-  int cx0 = full ? 0 : bx0, cx1 = full ? SCREEN_W : bx1;
-  for (int sy = y_lo - y_lo % STRIP_H; sy < y_hi; sy += STRIP_H) {
-    int n = SCREEN_H - sy < STRIP_H ? SCREEN_H - sy : STRIP_H;
-    uint16_t *buf = render_buffer();
-    bool photo_here = sy < py1 && sy + n > py0;
-    if (photo_here) render_strip(sy, n, px0, px1);
-    for (int r = 0; r < n; r++) {
-      int y = sy + r;
-      uint16_t *row = buf + r * SCREEN_W;
-      static uint16_t world[SCREEN_W];
-      bool in_rows = y >= by0 && y < by1;
-      if (photo_here && y >= py0 && y < py1) memcpy(world + px0, row + px0, (size_t)(px1 - px0) * 2);
-      bg_row(row, y, cx0, cx1);
-      if (!in_rows) continue;
-      float dy = y + 0.5f - cy;
-      for (int x = bx0; x < bx1; x++) {
-        float dx = x + 0.5f - cx;
-        float u = (dx * cs + dy * sn) / s, v = (-dx * sn + dy * cs) / s;
-        float e = fminf(hw - fabsf(u), hh - fabsf(v)) * s;
-        uint16_t bgc = row[x];
-        if (e < 0.5f) {
-          /* shadow */
-          float dx2 = dx - 3, dy2 = dy - 4;
-          float u2 = (dx2 * cs + dy2 * sn) / s, v2 = (-dx2 * sn + dy2 * cs) / s;
-          float e2 = fminf(hw - fabsf(u2), hh - fabsf(v2)) * s;
-          if (e2 > -0.5f) bgc = mix565(bgc, C_SHADOW, (int)(13 * fminf(1, e2 + 0.5f)));
-          if (e <= -0.5f) {
-            row[x] = bgc;
-            continue;
-          }
-        }
-        uint16_t c = C_WHITE;
-        if (u >= cd.photo.x0 && u < cd.photo.x1 && v >= cd.photo.y0 && v < cd.photo.y1 && photo_here && x >= px0 &&
-            x < px1) {
-          c = world[x];
-        } else {
-          for (int i = 0; i < cd.nbox; i++)
-            if (u >= cd.box[i].x0 && u < cd.box[i].x1 && v >= cd.box[i].y0 && v < cd.box[i].y1) c = cd.box[i].c;
-          for (int i = 0; i < cd.nrun; i++) {
-            const Run *rn = &cd.run[i];
-            if (v < rn->y - 1 || v > rn->y + rn->f->h + 1 || u < rn->x - 2 || u > rn->x + rn->w + 2) continue;
-            int a = run_alpha(rn, u, v);
-            if (a) c = mix565(c, rn->c, a > 32 ? 32 : a);
-          }
-        }
-        if (e < 0.5f) c = mix565(bgc, c, (int)((e + 0.5f) * 32));
-        row[x] = c;
-      }
+void card_draw(int anim, int sel) {
+  const int PW = 228, PH = 138, PX = (SCREEN_W - PW) / 2;
+  float e = ease_out(anim / 12.0f);
+  int py = 34 + (int)((1 - e) * 200);
+  uint16_t accent = card_kind == CARD_WIN ? C_GREEN : card_kind == CARD_LOSE ? C_CORAL : C_TEAL;
+  uint16_t accent_d = card_kind == CARD_WIN ? C_GREEN_D : card_kind == CARD_LOSE ? RGB(0xb8, 0x3c, 0x4c) : C_TEAL_D;
+  const char *title = card_kind == CARD_WIN ? T("Finished!") : card_kind == CARD_LOSE ? T("Crashed!") : T("Paused");
+  char lv[56];
+  level_label(lv, card_level, true);
+  for (int sy = 0; sy < SCREEN_H; sy += STRIP_H) {
+    uint16_t *b = draw_buffer();
+    for (int r = 0; r < STRIP_H; r++) bg_row(b + r * SCREEN_W, sy + r);
+    g_begin(b, sy, STRIP_H);
+    /* the panel */
+    g_rrect(PX + 3, py + 5, PW, PH, 14, RGB(0x08, 0x0c, 0x18), 12);
+    g_rrect(PX, py, PW, PH, 14, C_WHITE, 32);
+    g_rrect(PX, py, PW, 36, 14, accent, 32);
+    g_rect(PX, py + 22, PW, 14, accent, 32);
+    g_text_c(&font_l, 160, py + 26 - font_l.base, title, C_WHITE, 32);
+    g_text_c(&font_s, 160, py + 52 - font_s.base, lv, C_SOFT, 32);
+    if (card_kind == CARD_PAUSE) {
+      g_text_c(&font_s, 160, py + 68 - font_s.base, T("Right arrow: gas. Left: brake."), C_INK, 32);
+      g_text_c(&font_s, 160, py + 81 - font_s.base, T("Keep the driver's head safe!"), C_INK, 32);
+    } else if (card_kind == CARD_WIN) {
+      g_text_c(&font_m, 160, py + 76 - font_m.base, T("Nice driving!"), C_INK, 32);
+    } else {
+      g_text_c(&font_m, 160, py + 76 - font_m.base, T("Try another line."), C_INK, 32);
     }
-    g_begin(buf, sy, n);
-    if (full || (ybtn - 3 < sy + n && ybtn + 54 > sy)) card_btns(sel, ybtn);
-    if (full && cd.kind != CARD_PAUSE) { /* Back: the level list (on the pause card, Back resumes) */
-      g_icon(&ic_back, 34, 84, C_WHITE, 32);
-      g_icon(&ic_back, 35, 84, C_WHITE, 32);
+    /* buttons */
+    int by = py + PH - 40;
+    if (card_kind == CARD_PAUSE) {
+      button(PX + 10, by, 64, 30, &ic_restart, T("Restart"), sel == 0, accent, accent_d);
+      button(PX + 82, by, 66, 30, &ic_play, T("Resume"), sel == 1, accent, accent_d);
+      button(PX + 156, by, 62, 30, &ic_grid, T("Levels"), sel == 2, accent, accent_d);
+    } else if (card_kind == CARD_WIN) {
+      button(PX + 14, by, 92, 30, &ic_restart, T("Restart"), sel == 0, accent, accent_d);
+      button(PX + 122, by, 92, 30, &ic_play, T("Next"), sel == 1, accent, accent_d);
+    } else {
+      button(PX + 54, by, 120, 30, &ic_restart, T("Retry"), sel != CARD_SEL_QUIT, accent, accent_d);
     }
-    if (full)
-      plat_push(0, sy, SCREEN_W, n, buf);
-    else {
-      int r0 = sy < by0 ? by0 - sy : 0, r1 = sy + n > by1 ? by1 - sy : n;
-      for (int r = r0; r < r1; r++) plat_push(bx0, sy + r, bx1 - bx0, 1, buf + r * SCREEN_W + bx0);
+    int qw = g_text_w(&font_s, T("Quit game")) + 20;
+    bool q = sel == CARD_SEL_QUIT;
+    g_rrect(160 - qw / 2, py + PH + 8, qw, 18, 9, q ? C_WHITE : C_INK, q ? 32 : 20);
+    g_text_c(&font_s, 160, py + PH + 21 - font_s.base, T("Quit game"), q ? C_INK : C_WHITE, 32);
+    if (card_kind == CARD_PAUSE && sy + STRIP_H > 222)
+      g_text_c(&font_s, 160, 234 - font_s.base, T("NumDrive - Made by Mason Chen"), C_WHITE, 20);
+    if (card_kind != CARD_PAUSE && sy < 140 && sy + STRIP_H > 100) { /* Back: the level list */
+      g_icon(&ic_back, 12, 114, C_WHITE, 20);
     }
+    plat_push(0, sy, SCREEN_W, STRIP_H, b);
   }
-  cam = saved;
-  cam_update();
 }
 
 /* ---------------------------------------------------------------- levels */
-#define TILE 28
-#define PITCH 34
-#define GX (160 - (5 * PITCH - (PITCH - TILE)) / 2)
-#define GY 46
+#define TW 48
+#define TH 32
+#define PX_ 54
+#define PY_ 38
+#define GX ((SCREEN_W - (5 * PX_ - (PX_ - TW))) / 2)
+#define GY 50
 
 void levels_draw(int sel, int scroll) {
+  int done = 0;
+  for (int i = 0; i < level_count; i++) done += lvl_done(i);
+  char cnt[16];
+  char *p = put_num(cnt, done);
+  *p++ = '/';
+  put_num(p, level_count);
   for (int sy = 0; sy < SCREEN_H; sy += STRIP_H) {
-    int n = SCREEN_H - sy < STRIP_H ? SCREEN_H - sy : STRIP_H;
-    uint16_t *buf = render_buffer();
-    for (int r = 0; r < n; r++) bg_row(buf + r * SCREEN_W, sy + r, 0, SCREEN_W);
-    g_begin(buf, sy, n);
-    if (sy < 40) {
-#if NP_TEXT_EXTRA /* a translation with letters the big font lacks: in the medium one (Chinese in the big one) */
-      const char *tl = T("Levels");
-      const Font *ft = &font_l;
-      for (const char *s = tl; *s;) {
-        Letter l = g_letter(ft, &s);
-        if (!l.g && (!l.x || l.cp < 0x2E80)) ft = &font_m;
-      }
-      int ty = 22 - ft->base;
-      for (int d = 0; d < 8; d++) {
-        static const int8_t o[8][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}, {-1, -1}, {1, 1}, {-1, 1}, {1, -1}};
-        g_text_c(ft, 160 + o[d][0], ty + o[d][1] + 1, tl, C_TITLE_O, 32);
-      }
-      g_text_c(ft, 160, ty, tl, C_WHITE, 32);
-#else
-      int ty = 22 - font_l.base;
-      for (int d = 0; d < 8; d++) {
-        static const int8_t o[8][2] = {{-1, 0}, {1, 0}, {0, -1}, {0, 1}, {-1, -1}, {1, 1}, {-1, 1}, {1, -1}};
-        g_text_c(&font_l, 160 + o[d][0], ty + o[d][1] + 1, "Levels", C_TITLE_O, 32);
-      }
-      g_text_c(&font_l, 160, ty, "Levels", C_WHITE, 32);
-#endif
+    uint16_t *b = draw_buffer();
+    for (int r = 0; r < STRIP_H; r++) bg_row(b + r * SCREEN_W, sy + r);
+    g_begin(b, sy, STRIP_H);
+    if (sy < 44) {
+      g_text(&font_l, 26, 30 - font_l.base + 1, T("Levels"), C_INK, 20);
+      g_text(&font_l, 25, 29 - font_l.base, T("Levels"), C_WHITE, 32);
+      int w = g_text_w(&font_s, cnt) + 22;
+      g_rrect(SCREEN_W - 24 - w, 14, w, 18, 9, C_INK, 22);
+      g_icon(&ic_check, SCREEN_W - 20 - w + 4, 18, C_GREEN, 32);
+      g_text(&font_s, SCREEN_W - 20 - w + 16, 27 - font_s.base, cnt, C_WHITE, 32);
     }
-    for (int row = 0; row < 7; row++) {
-      int ly = GY + row * PITCH;
-      if (ly >= sy + n || ly + TILE + 3 <= sy) continue;
-      int fade = ly > 190 ? 32 - (ly - 190) * 32 / 40 : 32;
-      if (fade <= 0) continue;
+    for (int row = 0; row < 5; row++) {
+      int ly = GY + row * PY_;
+      if (ly >= sy + STRIP_H || ly + TH + 3 <= sy) continue;
       for (int col = 0; col < 5; col++) {
         int i = (scroll + row) * 5 + col;
-        if (i >= nlevels) break;
-        int lx = GX + col * PITCH;
-        /* every level can be played; the ones already finished are green */
-        uint16_t top = lvl_done(i) ? C_GREEN : C_TILE_B, bot = lvl_done(i) ? C_GREEN_D : C_TILE_BD;
-        if (fade < 32) {
-          /* translucent tiles over the background */
-          g_rrect(lx - 1, ly - 1, TILE + 2, TILE + 2, 6, C_BLACK, fade);
-          g_rrect(lx, ly, TILE, TILE, 5, bot, fade);
-          g_rrect(lx, ly, TILE, TILE - 3, 5, top, fade);
-        } else {
-          g_button(lx, ly, TILE, TILE, 5, top, bot, i == sel);
-        }
-        char num[4];
-        int k = 0, v = i + 1;
-        if (v >= 100) num[k++] = (char)('0' + v / 100);
-        if (v >= 10) num[k++] = (char)('0' + v / 10 % 10);
-        num[k++] = (char)('0' + v % 10);
-        num[k] = 0;
-        g_text_c(&font_m, lx + TILE / 2, ly + (TILE - 3) / 2 - (font_m.cap_top + font_m.base) / 2 + 1, num, C_WHITE,
-                 fade);
+        if (i >= level_count) break;
+        int lx = GX + col * PX_;
+        bool d = lvl_done(i), on = i == sel;
+        if (on) g_rrect(lx - 3, ly - 3, TW + 6, TH + 6, 10, C_WHITE, 32);
+        g_rrect(lx, ly, TW, TH, 8, d ? C_GREEN_D : C_SLATE_D, 32);
+        g_rrect(lx, ly, TW, TH - 3, 8, d ? C_GREEN : on ? RGB(0x5c, 0x70, 0x94) : C_SLATE, 32);
+        char num[6];
+        put_num(num, i + 1);
+        text_mid(&font_m, lx + TW / 2, ly, TH - 3, num, C_WHITE);
+        if (d) g_icon(&ic_check, lx + TW - 12, ly + 4, C_WHITE, 26);
       }
     }
-    if (sy < 110 && sy + n > 84) {
-      g_icon(&ic_back, 34, 84, C_WHITE, 32);
-      g_icon(&ic_back, 35, 84, C_WHITE, 32);
-    }
-    plat_push(0, sy, SCREEN_W, n, buf);
+    plat_push(0, sy, SCREEN_W, STRIP_H, b);
   }
 }
 
 /* ------------------------------------------------------------------ quit */
 void quit_draw(bool yes) {
   for (int sy = 0; sy < SCREEN_H; sy += STRIP_H) {
-    int n = SCREEN_H - sy < STRIP_H ? SCREEN_H - sy : STRIP_H;
-    uint16_t *buf = render_buffer();
-    for (int r = 0; r < n; r++) bg_row(buf + r * SCREEN_W, sy + r, 0, SCREEN_W);
-    g_begin(buf, sy, n);
-    g_rrect(63, 75, 200, 94, 12, C_SHADOW, 13);
-    g_rrect(59, 71, 202, 94, 13, C_BLACK, 32);
-    g_rrect(60, 72, 200, 92, 12, C_WHITE, 32);
-    g_text_c(&font_m, 160, 100 - font_m.base, T("Quit game?"), C_OUTLINE, 32);
-    g_text_c(&font_s, 160, 116 - font_s.base, T("You can come back anytime."), C_CAPTION, 32);
-    for (int k = 0; k < 2; k++) {
-      bool on = k == yes;
-      int x = k ? 170 : 80;
-      g_button(x, 126, 70, 26, 6, on ? C_BLUE : C_GRAY, on ? C_BLUE_D : C_GRAY_D, on);
-      g_text_c(&font_s, x + 35, 126 + 17 - font_s.base, k ? T("Yes") : T("No"), C_WHITE, 32);
-    }
-    plat_push(0, sy, SCREEN_W, n, buf);
+    uint16_t *b = draw_buffer();
+    for (int r = 0; r < STRIP_H; r++) bg_row(b + r * SCREEN_W, sy + r);
+    g_begin(b, sy, STRIP_H);
+    g_rrect(63, 77, 200, 92, 14, RGB(0x08, 0x0c, 0x18), 12);
+    g_rrect(60, 72, 200, 92, 14, C_WHITE, 32);
+    g_text_c(&font_m, 160, 98 - font_m.base, T("Quit game?"), C_INK, 32);
+    g_text_c(&font_s, 160, 114 - font_s.base, T("You can come back anytime."), C_SOFT, 32);
+    button(78, 124, 76, 28, 0, T("No"), !yes, C_TEAL, C_TEAL_D);
+    button(166, 124, 76, 28, 0, T("Yes"), yes, C_CORAL, RGB(0xb8, 0x3c, 0x4c));
+    plat_push(0, sy, SCREEN_W, STRIP_H, b);
   }
 }
diff --git a/games/numdrive/src/ui.h b/games/numdrive/src/ui.h
index 7baa07e..0846337 100644
--- a/games/numdrive/src/ui.h
+++ b/games/numdrive/src/ui.h
@@ -5,23 +5,15 @@
 
 enum { CARD_PAUSE, CARD_WIN, CARD_LOSE };
 
-/* in-game overlay */
 void hud_reset(void);
-extern float hud_score, hud_coins; /* Set Score values, hidden when negative */
 void hud_tick(uint8_t buttons);
 void hud_draw(uint16_t *px, int y, int n);
-void viewfinder_draw(uint16_t *px, int y, int n, int t);
 
-/* menus: capture the blurred background from the current view */
-void ui_capture_background(void);
-/* card screen; anim counts frames since the card appeared; sel is the focused button */
+void ui_capture_background(void);      /* the blurred game view behind the menus */
 void card_setup(int kind, int level);
-void card_draw(int anim, int sel, bool full);
-#define CARD_SEL_QUIT 9 /* sel: the Quit game button under the others */
-int card_buttons(void); /* number of buttons (1 to 3) */
-/* level select */
+void card_draw(int anim, int sel);     /* anim: frames since the card appeared */
+#define CARD_SEL_QUIT 9                /* sel: the Quit button under the others */
+int card_buttons(void);                /* 1 to 3 */
 void levels_draw(int sel, int scroll);
-/* "Quit game?" over the blurred background, Yes focused or not */
 void quit_draw(bool yes);
-
 #endif
diff --git a/games/numdrive/tools/levels.txt b/games/numdrive/tools/levels.txt
new file mode 100644
index 0000000..c30f7e0
--- /dev/null
+++ b/games/numdrive/tools/levels.txt
@@ -0,0 +1,158 @@
+# level seed result (tools/conformite/numdrive_levels.py)
+0 1 0 GAS 477
+1 1 1 GAS 759
+2 1 2 GAS 600
+3 1 3 GAS 466
+4 1 4 GAS 482
+5 1 5 GAS 353
+6 2 6 GAS 487
+7 2 7 GAS 836
+8 2 8 GAS 767
+9 1 9 GAS 424
+10 1 10 GAS 373
+11 1 11 GAS 367
+12 1 12 GAS 1038
+13 2 13 GAS 759
+14 1 14 GAS 927
+15 1 15 GAS 864
+16 1 16 WIN 888 4 2222222222222220221222222222202222222222222222222022222222222222222
+17 1 17 GAS 555
+18 1 18 WIN 684 5 222222222222222222222222220202020221222222222222222222222
+19 1 19 GAS 1158
+20 1 20 GAS 427
+21 2 21 GAS 928
+22 1 22 WIN 456 3 22222222222222222202202022222222222222
+23 2 23 WIN 684 7 222222222222222222102222212022002222202222222222222222222
+24 2 24 GAS 1368
+25 1 25 GAS 483
+26 1 26 GAS 461
+27 2 27 WIN 480 4 2222222222222222222222222201200222222222
+28 2 28 GAS 545
+29 3 29 GAS 848
+30 1 30 WIN 876 27 222222222222222220022000000000000000020012222221022222222202022222
+31 1 31 WIN 624 9 2222222222222222220222200202202200020222222222222222
+32 2 32 WIN 864 4 2222222222222022222222221022222222222222222122222222222222222222222
+33 2 33 WIN 504 7 222222222222002222222222222222211121222022
+34 5 34 GAS 1117
+35 2 35 WIN 2016 63 22222222202022222222222202220200020222222022222222022000022220022
+36 2 36 GAS 1069
+37 2 37 GAS 814
+38 2 38 GAS 654
+39 1 39 GAS 618
+40 2 40 WIN 2400 22 22222222202022020220202020222002220220022220222202022022222221120
+41 1 41 GAS 770
+42 3 42 GAS 1188
+43 2 43 GAS 776
+44 2 44 GAS 697
+45 3 45 GAS 1426
+46 3 46 GAS 1972
+47 2 47 GAS 1624
+48 2 48 GAS 1007
+49 3 49 GAS 792
+50 1 50 GAS 566
+51 4 51 GAS 1018
+52 1 52 GAS 608
+53 1 53 GAS 1511
+54 4 54 GAS 693
+55 2 55 WIN 840 12 222222222020202020200222222222002020202222222222222222222222222222
+56 2 56 GAS 1561
+57 2 57 GAS 960
+58 1 58 GAS 1081
+59 2 59 WIN 1332 37 22022222222222121212102122222221200002222222222202002222200202122
+60 2 60 GAS 724
+61 2 61 WIN 984 10 222222222222222222222222222222022222222222222222222220221100002222
+62 3 62 GAS 541
+63 2 63 GAS 519
+64 2 64 GAS 978
+65 2 65 GAS 633
+66 2 66 GAS 631
+67 2 67 GAS 580
+68 1 68 GAS 815
+69 2 69 GAS 759
+70 4 70 WIN 4392 113 2222222222222222202220222222022222222022220202222002222220022222
+71 2 71 GAS 1645
+72 3 72 GAS 822
+73 2 73 GAS 574
+74 2 74 WIN 756 6 222222222222222222002120022222222202222222222222222222222222222
+75 3 75 WIN 648 14 222222222222002200220022222220010122102222222220222222
+76 2 76 GAS 856
+77 1 77 GAS 1367
+78 5 78 GAS 1088
+79 2 79 GAS 1236
+80 2 80 GAS 1016
+81 2 81 GAS 1371
+82 2 82 GAS 1189
+83 3 83 WIN 1452 11 22222222222222222220022220202122222222202222222222222222222222222
+84 5 84 GAS 1635
+85 2 85 GAS 1479
+86 3 86 GAS 1790
+87 2 87 GAS 1064
+88 4 88 GAS 876
+89 1 89 WIN 732 13 2222222222222202222122220222022222222222222222220010200020212
+90 5 90 GAS 827
+91 3 91 WIN 1296 22 22222222222222222222222220222220222112222100021120222221002022102
+92 4 92 GAS 1229
+93 3 93 GAS 1407
+94 1 94 GAS 1122
+95 6 95 WIN 708 8 22222222222202202222222020222222222222222222222222222200002
+96 1 96 GAS 660
+97 1 97 GAS 793
+98 2 98 GAS 846
+99 4 99 GAS 879
+100 2 100 GAS 772
+101 2 101 GAS 1259
+102 5 102 GAS 931
+103 3 103 GAS 968
+104 5 104 GAS 710
+105 3 105 WIN 996 4 222222222222222222222222222220200022222222222222222222222222222222
+106 4 106 GAS 1152
+107 2 107 GAS 1581
+108 2 108 WIN 1404 22 2222222222222200220020222222202120000222222222222220002222222222
+109 5 109 WIN 1344 6 22222222222222222222222222202222222222222212222222200222222222222
+110 2 110 WIN 1608 37 2222222220202200222220002222222202020200222222222222222222222222
+111 2 111 GAS 1355
+112 2 112 GAS 1092
+113 4 113 GAS 1344
+114 2 114 GAS 1219
+115 3 115 WIN 1620 28 2222222222222222222222222202222222000002222222200022222222202222
+116 2 116 GAS 972
+117 2 117 GAS 1017
+118 3 118 GAS 1091
+119 1 119 WIN 1140 9 22222222222222222222222202222222000222222220222222222222222200222
+120 3 120 GAS 1522
+121 1 121 GAS 1004
+122 2 122 GAS 1484
+123 2 123 GAS 1108
+124 5 124 GAS 1683
+125 6 125 WIN 924 18 22222222222022222202222200222220222220200222222200222022102212001
+126 2 126 GAS 1503
+127 2 127 WIN 1116 20 2222222222222222222222200222022022112102222222222222222222222222
+128 3 128 GAS 906
+129 2 129 WIN 2328 49 2222222222222222222222222202200011222222222222222222222222222002
+130 2 130 WIN 2232 10 2222222222022222222222222222222222222222222222222222222202212001
+131 8 131 GAS 914
+132 2 132 GAS 1116
+133 3 133 WIN 864 2 222222222222222222222222222222221222222222222222222222222022222222
+134 2 134 GAS 806
+135 2 135 GAS 912
+136 4 136 GAS 949
+137 4 137 GAS 1209
+138 6 138 GAS 1144
+139 3 139 GAS 992
+140 1 140 GAS 1507
+141 6 141 GAS 1957
+142 6 142 WIN 744 7 22222222222222222222222222222200222220222200120222222222222222
+143 3 143 GAS 1256
+144 4 144 GAS 750
+145 2 145 WIN 1596 10 2222222222202222222222222222222222222222220222222222222222202222
+146 3 146 WIN 1032 29 2222222222222222222000000000022222222220002222222220000022222220
+147 10 147 WIN 1116 3 22222222222222222222222222022222222220222222122222222222222222222
+148 2 148 GAS 1553
+149 7 149 WIN 912 12 22222222222202022221200002222020022222222222222202222222222202222
+150 3 150 GAS 1064
+151 13 151 WIN 828 6 222222222222212222222222222222222222222222222222222222222002200202
+152 4 152 GAS 1183
+153 3 153 WIN 1416 37 2222222220202202222202200202222022002200000000022222222222022222
+154 2 154 GAS 916
+155 5 155 WIN 2196 19 2222222222002222220222222222222222222222222222222222222222222222
+156 5 156 WIN 1596 19 2222222222220020222122222202022222221220222222222222022220222022
diff --git a/games/numvisuals/docs/calcade.png b/games/numvisuals/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..caeb6bc9ccddc6a2f913ffd212972f88cadb8130
GIT binary patch
literal 21633
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
OXui;WUZ(Os^uGYsD2!GB

literal 0
HcmV?d00001

diff --git a/games/pacman/README.md b/games/pacman/README.md
index a8b69d4..148436d 100644
--- a/games/pacman/README.md
+++ b/games/pacman/README.md
@@ -1,8 +1,11 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Munchy Maze**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de Pac-Man (Bandai Namco) : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Munchy Maze">
+
 # Pac-Man
 
 The 1980 arcade game for the NumWorks calculator: the maze, the four ghosts, the fruit, and the rules of the original.
 
-<img src="docs/shot.png" width="320" alt="Pac-Man in the maze, chased by Blinky and Pinky">
 
 - **The arcade's maze**, all 28 x 31 tiles with its blue double walls, the pink ghost house door, dots and flashing energizers. The scores sit at the sides: 1UP, HIGH SCORE, your spare lives and the fruit of the last levels.
 - **Four ghosts, four personalities**, as in the arcade: Blinky goes straight for you, Pinky aims four tiles ahead, Inky works from Blinky's position, and Clyde gets shy up close. They scatter to their corners and chase in waves, turn blue and flee after an energizer, and race home as eyes once eaten (200, 400, 800, 1600).
diff --git a/games/pacman/docs/calcade.png b/games/pacman/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..7f0d6b77ed7cc4dd3b7ba8e39ef2e9deb58b2696
GIT binary patch
literal 3606
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
K%Bar3J>lPSE8YSC

literal 0
HcmV?d00001

diff --git a/games/pacman/lang/fr.txt b/games/pacman/lang/fr.txt
index 48c7d13..0eaf9e3 100644
--- a/games/pacman/lang/fr.txt
+++ b/games/pacman/lang/fr.txt
@@ -26,11 +26,11 @@ QUIT GAME?	QUITTER ?
 PLAY	JOUER
 CONTINUE	CONTINUER
 OPTIONS	OPTIONS
--SHADOW    \"BLINKY\"	-OMBRE     \"BLINKY\"
--SPEEDY    \"PINKY\"	-RAPIDE    \"PINKY\"
--BASHFUL   \"INKY\"	-TIMIDE    \"INKY\"
--POKEY     \"CLYDE\"	-LENT      \"CLYDE\"
-CHARACTER / NICKNAME	PERSONNAGE / SURNOM
+-CHASER    \"ROCKO\"	-CHASSEUR  \"ROCKO\"
+-SNEAKY    \"MIMI\"	-RUSÉ      \"MIMI\"
+-DRIFTER   \"ZIGZAG\"	-ERRANT    \"ZIGZAG\"
+-LAZY      \"BOUBOU\"	-PARESSEUX \"BOUBOU\"
+MONSTER / NAME	MONSTRE / NOM
 HIGH SCORE	MEILLEUR SCORE
 BASED ON TATONE26'S VERSION	D'APRÈS LA VERSION DE TATONE26
 GAME SPEED	VITESSE
@@ -43,9 +43,9 @@ NONE	AUCUNE
 ON	OUI
 OFF	NON
 HOW FAST EVERYTHING MOVES	LA VITESSE DE TOUT LE JEU
-PAC-MEN TO START WITH	LES PAC-MAN AU DÉPART
+LIVES TO START WITH	VIES AU DÉPART
 HOW LONG A TURN WAITS FOR A GAP	COMBIEN DE TEMPS UN VIRAGE ATTEND
 LATER LEVELS ARE FASTER	LES NIVEAUX SUIVANTS VONT PLUS VITE
-THE SCORE FOR AN EXTRA PAC-MAN	LE SCORE POUR UN PAC-MAN DE PLUS
+THE SCORE FOR AN EXTRA LIFE	LE SCORE POUR UNE VIE DE PLUS
 GHOSTS CANNOT CATCH YOU: NO HIGH SCORE	FANTÔMES INOFFENSIFS : PAS DE RECORD
 LEFT/RIGHT: CHANGE    BACK: DONE	GAUCHE/DROITE : CHANGER   RETOUR : FINI
diff --git a/games/pacman/lang/zh.txt b/games/pacman/lang/zh.txt
index 4ac936a..9674379 100644
--- a/games/pacman/lang/zh.txt
+++ b/games/pacman/lang/zh.txt
@@ -24,11 +24,11 @@ QUIT GAME?	退出游戏？
 PLAY	开始
 CONTINUE	继续
 OPTIONS	选项
--SHADOW    \"BLINKY\"	-追踪     \"BLINKY\"
--SPEEDY    \"PINKY\"	-伏击     \"PINKY\"
--BASHFUL   \"INKY\"	-害羞     \"INKY\"
--POKEY     \"CLYDE\"	-迟钝     \"CLYDE\"
-CHARACTER / NICKNAME	角色 / 绰号
+-CHASER    \"ROCKO\"	-追踪     \"ROCKO\"
+-SNEAKY    \"MIMI\"	-伏击     \"MIMI\"
+-DRIFTER   \"ZIGZAG\"	-害羞     \"ZIGZAG\"
+-LAZY      \"BOUBOU\"	-迟钝     \"BOUBOU\"
+MONSTER / NAME	角色 / 绰号
 HIGH SCORE	最高分
 BASED ON TATONE26'S VERSION	基于 TATONE26 的版本
 GAME SPEED	游戏速度
@@ -41,9 +41,9 @@ NONE	无
 ON	开
 OFF	关
 HOW FAST EVERYTHING MOVES	所有角色移动的速度
-PAC-MEN TO START WITH	开局时的生命数
+LIVES TO START WITH	开局时的生命数
 HOW LONG A TURN WAITS FOR A GAP	提前按下的转向能等待多久
 LATER LEVELS ARE FASTER	后面的关卡更快
-THE SCORE FOR AN EXTRA PAC-MAN	奖励一条命所需的分数
+THE SCORE FOR AN EXTRA LIFE	奖励一条命所需的分数
 GHOSTS CANNOT CATCH YOU: NO HIGH SCORE	幽灵抓不到你：不记录最高分
 LEFT/RIGHT: CHANGE    BACK: DONE	左/右：调整    返回：完成
diff --git a/games/pacman/src/icon.png b/games/pacman/src/icon.png
index cbfe34e511ae1310bd24adfd8f07d5e6504b454d..b58a28d7f114630b6dfbcc75b8caaf0afa7405dd 100644
GIT binary patch
delta 2786
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

delta 2982
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

diff --git a/games/pacman/src/main.c b/games/pacman/src/main.c
index c604b0c..9ce7e75 100644
--- a/games/pacman/src/main.c
+++ b/games/pacman/src/main.c
@@ -1,4 +1,5 @@
-/* Pac-Man for the NumWorks calculator: Namco's 1980 arcade game.
+/* Munchy Maze for the NumWorks calculator (modifié par Calcade le 19 octobre 2026 : ses propres héros, monstres,
+ * noms, logo et couleurs ; avant : une reprise du Pac-Man de Namco). A maze game in the style of the 1980 arcade games.
  *
  * The rules follow the arcade: four ghosts that hunt each in their own way,
  * scatter and chase waves, the speed and fright tables of every level,
@@ -18,7 +19,7 @@
 #include "../../common/np_text.h"
 
 #ifdef __ELF__ /* app name and API level, for the calculator's installer */
-const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Pac-Man";
+const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Munchy Maze";
 const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
 #endif
 
@@ -28,9 +29,11 @@ typedef uint16_t color;
 
 /* the arcade's colours */
 #define BLACK 0
-#define WALL RGB(0x2121DE)
+#define WALL RGB(0x8A3FD9)  /* Calcade : ses propres couleurs */
 #define PEACH RGB(0xFFB8AE)
-#define YELLOW RGB(0xFFFF00)
+#define YELLOW RGB(0xFFD23F)
+#define MINT RGB(0x3EE6A8)   /* le héros, Munchy */
+#define INK RGB(0x123A2E)
 #define WHITE RGB(0xDEDEFF)
 #define BLUE RGB(0x2121FF)
 #define RED RGB(0xFF0000)
@@ -204,7 +207,7 @@ static void pac_r(int x, int y, int d, int open, int die, int r) {
   if (!hits(x - r, y - r, 2 * r + 1, 2 * r + 1)) return;
   for (int j = -r; j <= r; j++)
     for (int i = -r; i <= r; i++) {
-      if (i * i + j * j > r * r + r) continue;
+      if (i * i * i * i + j * j * j * j > r * r * r * r + 2 * r * r * r) continue; /* (Calcade : un carré aux coins ronds) */
       if (die) {
         int p = i < 0 ? -i : i, s = p + (j < 0 ? -j : j);
         if ((j <= 0 ? p : s + j) * 16 < die * s) continue;
@@ -212,16 +215,27 @@ static void pac_r(int x, int y, int d, int open, int die, int r) {
         int a = i * DX[d] + j * DY[d], p = i * DY[d] - j * DX[d];
         if (a > 0 && 4 * (p < 0 ? -p : p) < open * a) continue;
       }
-      pset(x + i, y + j, YELLOW);
+      pset(x + i, y + j, MINT);
     }
+  if (!die && r >= 5) { /* Calcade : Munchy a un œil, au-dessus de sa bouche, et une mèche */
+    int ex = d == UP || d == DOWN ? x - r / 2 - 1 : x - DX[d], ey = d == UP || d == DOWN ? y - DY[d] : y - r / 2 - 1;
+    pset(ex, ey, INK), pset(ex + 1, ey, INK), pset(ex, ey + 1, INK), pset(ex + 1, ey + 1, INK);
+    pset(ex, ey, WHITE);
+    for (int k = 0; k < r / 3; k++) pset(x - k / 2, y - r - 1 + k, MINT); /* la mèche */
+  }
 }
 static void pac_draw(int x, int y, int d, int open, int die) { pac_r(x, y, d, open, die, 6); }
 
 /* the ghost, 13x13: the body's rows (bit i is column i), then two frames of the skirt */
-static const uint16_t ghost_body[11] = {0x01F0, 0x07FC, 0x0FFE, 0x0FFE, 0x0FFE, 0x1FFF,
-                                        0x1FFF, 0x1FFF, 0x1FFF, 0x1FFF, 0x1FFF};
-static const uint16_t ghost_skirt[4] = {0x1BBB, 0x11B1, 0x1FFF, 0x0CE6};
-static const color ghost_col[4] = {RED, PINK, CYAN, ORANGE};
+/* (Calcade : les monstres de Munchy Maze, une tête ronde à antennes et trois tentacules, un seul œil) */
+static const uint16_t ghost_body[11] = {0x0802, 0x0404, 0x03F8, 0x07FC, 0x0FFE, 0x0FFE,
+                                        0x1FFF, 0x1FFF, 0x1FFF, 0x0FFE, 0x0FFE};
+static const uint16_t ghost_skirt[4] = {0x0E4E, 0x0404, 0x04E4, 0x0E0E};
+#define M_PURPLE RGB(0xC04CFF)
+#define M_LIME RGB(0x9BEA3B)
+#define M_ROSE RGB(0xFF6FAE)
+#define M_SUN RGB(0xFFA62B)
+static const color ghost_col[4] = {M_PURPLE, M_ROSE, M_LIME, M_SUN};
 enum { LOOK_NORMAL, LOOK_BLUE, LOOK_FLASH, LOOK_EYES };
 
 /* a ghost centred on (x, y), looking towards d */
@@ -241,22 +255,22 @@ static void ghost_draw(int x, int y, color body, int d, int look, int fr) {
     for (int c = 1; c < 12; c++) pset(x + c, y + 8 + (c >> 1 & 1), f);
     return;
   }
-  for (int e = 2; e < 9; e += 5) { /* the eyes look where the ghost goes */
-    int ox = x + e + DX[d], oy = y + 2 + DY[d];
-    fill(ox + 1, oy, 2, 5, WHITE);
-    fill(ox, oy + 1, 4, 3, WHITE);
-    fill(ox + 1 + DX[d], oy + 2 + 2 * DY[d] - (DY[d] > 0), 2, 2, BLUE);
+  { /* one big eye, looking where the monster goes */
+    int ox = x + 4 + DX[d], oy = y + 3 + DY[d];
+    fill(ox + 1, oy, 3, 5, WHITE);
+    fill(ox, oy + 1, 5, 3, WHITE);
+    fill(ox + 2 + DX[d], oy + 2 + DY[d], 2, 2, INK);
   }
 }
 
-/* cherry, strawberry, orange, apple, melon, Galaxian, bell, key: 12x12, 2 bits a pixel */
+/* cherry, strawberry, orange, apple, melon, star, bell, key: 12x12, 2 bits a pixel */
 static const uint8_t fruit_bits[8][36] = {
   {0x00,0x00,0xA0,0x00,0x00,0x2A,0x00,0x80,0x20,0x00,0x20,0x20,0x00,0x08,0x08,0x50,0x09,0x02,0x54,0x45,0x16,0x55,0x55,0x55,0x5D,0x55,0x55,0x75,0xD5,0x55,0x54,0x51,0x5D,0x50,0x40,0x15},
   {0x00,0x28,0x00,0xA0,0xAA,0x0A,0x94,0x96,0x16,0x75,0x55,0x5D,0x55,0x5D,0x55,0x5D,0x55,0x75,0x55,0x57,0x55,0x54,0xD5,0x55,0x74,0x55,0x15,0x50,0x75,0x01,0x40,0x55,0x01,0x00,0x55,0x00},
   {0x00,0x8C,0x02,0x00,0xAC,0x0A,0x40,0x5D,0x01,0x50,0x55,0x05,0x54,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x55,0x15,0x50,0x55,0x05,0x40,0x55,0x01},
   {0x00,0x08,0x00,0x40,0x59,0x00,0x54,0x59,0x15,0x55,0x55,0x55,0x7D,0x55,0x55,0x5D,0x55,0x55,0x5D,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x55,0x54,0x55,0x15,0x50,0x55,0x05,0x40,0x41,0x01},
   {0x00,0x28,0x00,0x00,0x20,0x00,0x40,0x55,0x01,0xD0,0xD5,0x05,0x54,0x77,0x15,0x74,0x5D,0x1D,0xD5,0xD5,0x55,0x5D,0x5D,0x5D,0xD4,0xD5,0x15,0x74,0x5D,0x1D,0x50,0x75,0x05,0x40,0x55,0x01},
-  {0x00,0x14,0x00,0x00,0x55,0x00,0x02,0xFF,0x80,0xCA,0xFF,0xA3,0x2A,0xFF,0xA8,0xAA,0x14,0xAA,0x8A,0x55,0xA2,0x02,0x96,0x80,0x00,0x14,0x00,0x00,0x14,0x00,0x00,0x00,0x00,0x00,0x00,0x00},
+  {0x00,0x00,0x00,0x00,0x28,0x00,0x00,0x14,0x00,0x00,0x14,0x00,0x28,0x9E,0x28,0x58,0x57,0x25,0x80,0x55,0x02,0x80,0x55,0x02,0x80,0x69,0x02,0x40,0x82,0x01,0x80,0x00,0x02,0x00,0x00,0x00}, /* (Calcade : une étoile, à la place du vaisseau d'un autre jeu) */
   {0x00,0x14,0x00,0x00,0x55,0x00,0x40,0x55,0x01,0xD0,0x55,0x05,0xD0,0x55,0x05,0xD0,0x55,0x05,0x74,0x55,0x15,0x74,0x55,0x15,0x55,0x55,0x55,0x55,0x55,0x55,0x00,0xAA,0x00,0x00,0x28,0x00},
   {0x40,0x55,0x01,0x50,0xFF,0x05,0x50,0x55,0x05,0x00,0x28,0x00,0x00,0xA8,0x00,0x00,0x28,0x00,0x00,0xA8,0x00,0x00,0x28,0x00,0x00,0xA8,0x00,0x00,0x28,0x00,0x00,0x28,0x00,0x00,0x20,0x00},
 };
@@ -264,7 +278,7 @@ static const uint8_t fruit_bits[8][36] = {
 #define GREEN RGB(0x00DE00)
 static const color fruit_pal[8][3] = {
   {RED, BROWN, WHITE}, {RED, GREEN, WHITE}, {ORANGE, GREEN, BROWN}, {RED, BROWN, WHITE},
-  {GREEN, BROWN, WHITE}, {YELLOW, BLUE, RED}, {YELLOW, CYAN, WHITE}, {CYAN, WHITE, BLACK},
+  {GREEN, BROWN, WHITE}, {YELLOW, ORANGE, WHITE}, {YELLOW, CYAN, WHITE}, {CYAN, WHITE, BLACK},
 };
 static const uint16_t fruit_pts[8] = {100, 300, 500, 700, 1000, 2000, 3000, 5000};
 
@@ -937,7 +951,7 @@ static bool step(void) {
         int l = level; /* intermissions after levels 2, 5, 9, 13 and 17, like the arcade */
         if (level < 255) level++;
         new_level();
-        phase = l == 2 || l == 5 || l == 9 || l == 13 || l == 17 ? PH_CUT : PH_READY;
+        phase = PH_READY; /* (Calcade : pas les intermèdes d'un autre jeu) */ (void)l;
         cut = l == 2 ? 0 : l == 5 ? 1 : 2;
         phase_t = 0, redraw_all = true;
       }
@@ -1115,7 +1129,7 @@ static void lane_draw(void) {
 }
 
 /* The logo: fat letters from the font (5-pixel blocks, rounded where two
-   sides are open), Pac-Man as the C, chomping, all ringed in orange. */
+   sides are open), ringed in purple (Calcade: the game's own name, MUNCHY). */
 #define LOGO_X 45
 #define LOGO_Y 10
 static bool logo_blk(const uint8_t *g, int w, int bx, int by) {
@@ -1123,15 +1137,13 @@ static bool logo_blk(const uint8_t *g, int w, int bx, int by) {
   return ((bx < 5 ? g[bx] : 0) | (bx ? g[bx - 1] : 0)) >> by & 1;
 }
 static bool logo_in(int x, int y) {
-  static const uint8_t at[6] = {0, 35, 110, 130, 165, 200};
+  static const uint8_t at[6] = {0, 39, 78, 117, 156, 195};
   x -= LOGO_X, y -= LOGO_Y;
   if (y < 0 || y >= 35) return false;
-  int dx = x - 87, dy = y - 17, f = tt >> 3 & 3, open = f == 3 ? 2 : f * 2;
-  if (dx * dx + dy * dy <= 17 * 18) return !(dx > 0 && 4 * (dy < 0 ? -dy : dy) < open * dx);
-  for (int i = 0; i < 6; i++) {
-    int u = x - at[i], w = i == 2 ? 3 : 6; /* the hyphen is short */
+  for (int i = 0; i < 6; i++) { /* (Calcade : le nom du jeu, MUNCHY) */
+    int u = x - at[i], w = 6;
     if (u < 0 || u >= w * 5) continue;
-    const uint8_t *g = font["PA-MAN"[i] - 32];
+    const uint8_t *g = font["MUNCHY"[i] - 32];
     int bx = u / 5, by = y / 5, px = u % 5 - 2, py = y % 5 - 2;
     if (!logo_blk(g, w, bx, by)) return false;
     /* round the outer corners: a quarter circle as big as the block, around its far corner */
@@ -1152,23 +1164,23 @@ static void logo_draw(void) {
   for (int y = LOGO_Y - 2; y < LOGO_Y + 37; y++)
     for (int x = LOGO_X - 2; x < LOGO_X + 234; x++) {
       if (x < cx0 || x >= cx1 || y < cy0 || y >= cy1) continue;
-      color c = YELLOW;
+      color c = MINT;
       if (!logo_in(x, y)) {
         int k = 0;
         while (k < 12 && !logo_in(x + ring[k][0], y + ring[k][1])) k++;
         if (k == 12) continue;
-        c = RGB(0xDE5A00);
+        c = RGB(0x8A3FD9);
       }
       buf[(y - by) * bw + x - bx] = c;
     }
 }
 
 static void title_scene(void) {
-  static const char *const names[4] = {T("-SHADOW    \"BLINKY\""), T("-SPEEDY    \"PINKY\""), T("-BASHFUL   \"INKY\""),
-                                       T("-POKEY     \"CLYDE\"")};
+  static const char *const names[4] = {T("-CHASER    \"ROCKO\""), T("-SNEAKY    \"MIMI\""), T("-DRIFTER   \"ZIGZAG\""),
+                                       T("-LAZY      \"BOUBOU\"")};
   fill(cx0, cy0, cx1 - cx0, cy1 - cy0, BLACK);
   logo_draw();
-  ctext(T("CHARACTER / NICKNAME"), 160, 58, 1, WHITE);
+  ctext(T("MONSTER / NAME"), 160, 58, 1, WHITE);
   for (int i = 0; i < 4; i++) {
     ghost_draw(88, 76 + i * 14, ghost_col[i], RIGHT, LOOK_NORMAL, 0);
     text(names[i], 102, 73 + i * 14, 1, ghost_col[i]);
@@ -1218,9 +1230,9 @@ static void options_scene(void) {
     rtext(v, 292, y, 2, c);
     if (i == 3) fruit_draw(292 - tw(v, 2) - (on ? 34 : 16), y + 1, fruit_of(S.start));
   }
-  static const char *const help[6] = {T("HOW FAST EVERYTHING MOVES"), T("PAC-MEN TO START WITH"),
+  static const char *const help[6] = {T("HOW FAST EVERYTHING MOVES"), T("LIVES TO START WITH"),
                                       T("HOW LONG A TURN WAITS FOR A GAP"), T("LATER LEVELS ARE FASTER"),
-                                      T("THE SCORE FOR AN EXTRA PAC-MAN"), T("GHOSTS CANNOT CATCH YOU: NO HIGH SCORE")};
+                                      T("THE SCORE FOR AN EXTRA LIFE"), T("GHOSTS CANNOT CATCH YOU: NO HIGH SCORE")};
   ctext(help[osel], 160, 200, 1, osel == 5 ? RED : WHITE);
   ctext(T("LEFT/RIGHT: CHANGE    BACK: DONE"), 160, 222, 1, GREY);
 }
diff --git a/games/portal/Makefile b/games/portal/Makefile
index 9f12c9e..3e9648b 100644
--- a/games/portal/Makefile
+++ b/games/portal/Makefile
@@ -1,15 +1,16 @@
-# Portal Returns for the NumWorks calculator.
+# Warp Lab for the NumWorks calculator (Calcade, 2026; folder and module id: portal).
 #   make          build output/portal.nwa
 #   make run      install on a connected calculator
 #   make check    link the app like the calculator does (output/portal.bin)
 #   make sim      output/portal.nwb for the Epsilon simulator
-#   make assets   regenerate src/assets.h from assets/
+#   make assets   regenerate src/art.h and src/rooms.h (tools/conformite/warplab_*.py)
+#   make test     replay every room's solution (test/host.c)
 Q ?= @
 CC = arm-none-eabi-gcc
 NWLINK = npx --yes -- nwlink@1.0.0
 BUILD_DIR = output
-SRC = src/main.c src/game.c src/gfx.c src/inflate.c src/libc.c
-HDR = src/portal.h src/assets.h src/inflate.h ../common/np_text.h
+SRC = src/main.c src/sim.c src/view.c src/libc.c
+HDR = src/warplab.h src/view.h src/art.h src/rooms.h ../common/np_text.h
 
 CFLAGS = -std=c99 $(shell $(NWLINK) eadk-cflags-device)
 CFLAGS += -Os -Wall -fno-math-errno -fno-tree-loop-distribute-patterns -fno-reorder-functions -flto-partition=one
@@ -43,12 +44,13 @@ $(BUILD_DIR):
 	$(Q) mkdir -p $@
 
 assets:
-	$(Q) python3 tools/gen_assets.py
+	$(Q) python3 ../../tools/conformite/warplab_art.py
+	$(Q) python3 ../../tools/conformite/warplab_rooms.py
 
 sim: $(BUILD_DIR)/portal.nwb
 $(BUILD_DIR)/portal.nwb: $(SRC) $(HDR) ../../launcher/sim/sim.c | $(BUILD_DIR)
 	$(Q) cc -std=c99 -O2 -fPIC $(shell $(NWLINK) eadk-cflags-simulator) -shared -undefined dynamic_lookup \
-	  src/main.c src/game.c src/gfx.c src/inflate.c ../../launcher/sim/sim.c -o $@
+	  src/main.c src/sim.c src/view.c ../../launcher/sim/sim.c -o $@
 
 clean:
 	$(Q) rm -rf $(BUILD_DIR)
@@ -63,12 +65,14 @@ $(BUILD_DIR)/module.o: $(SRC) $(HDR) | $(BUILD_DIR)
 sim-module: $(BUILD_DIR)/sim-module.o
 $(BUILD_DIR)/sim-module.o: $(SRC) $(HDR) | $(BUILD_DIR)
 	$(Q) mkdir -p $(BUILD_DIR)/sim
-	$(Q) for f in main game gfx inflate; do cc -std=c99 -O2 -fPIC $(shell $(NWLINK) eadk-cflags-simulator) \
+	$(Q) for f in main sim view; do cc -std=c99 -O2 -fPIC $(shell $(NWLINK) eadk-cflags-simulator) \
 	  -Dmain=np_portal_main -c src/$$f.c -o $(BUILD_DIR)/sim/$$f.o || exit 1; done
 	$(Q) ld -r $(BUILD_DIR)/sim/*.o -exported_symbol _np_portal_main -o $@
 
-# test/host: the chambers on the computer, frame by frame (tools/compare.py)
+# test/host: the rooms on the computer: replays their solutions, draws them
+.PHONY: host test
 host: $(BUILD_DIR)/host
-$(BUILD_DIR)/host: $(SRC) $(HDR) test/host.c | $(BUILD_DIR)
-	$(Q) cc -std=gnu99 -O2 -w -DPORTAL_TEST $(shell $(NWLINK) eadk-cflags-simulator) -Dmain=portal_main -c src/main.c -o $(BUILD_DIR)/host_main.o
-	$(Q) cc -std=gnu99 -O2 -w -DPORTAL_TEST $(shell $(NWLINK) eadk-cflags-simulator) test/host.c src/game.c src/gfx.c src/inflate.c $(BUILD_DIR)/host_main.o -o $@
+$(BUILD_DIR)/host: src/sim.c src/view.c src/warplab.h src/rooms.h src/art.h test/host.c test/solutions.h | $(BUILD_DIR)
+	$(Q) cc -std=gnu99 -O2 -Wall $(shell $(NWLINK) eadk-cflags-simulator) test/host.c src/sim.c src/view.c -o $@
+test: $(BUILD_DIR)/host
+	$(Q) $(BUILD_DIR)/host check
diff --git a/games/portal/README.md b/games/portal/README.md
index 7a0ea30..46f245e 100644
--- a/games/portal/README.md
+++ b/games/portal/README.md
@@ -1,93 +1,68 @@
-> **Portal Returns is part of [NumPlay](../../README.md)**, every NumWorks game in one app. Get it with all the others, or on its own as `PortalReturns.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest).
+> **Calcade (19 October 2026).** This folder held Portal Returns, a port of a TI-84 Plus CE game whose
+> chambers, art, font, texts and code were not free to use. It now holds **Warp Lab**, a new game written for
+> Calcade's version of NumPlay: its rooms, art, font, texts and code are all new. The folder, the module and
+> the save file keep the name `portal` so NumPlay's slots and saves stay where they were.
 
-<p align="center">
-  <img src="docs/icon.png" width="84" alt="Portal Returns icon">
-</p>
-
-<h1 align="center">Portal Returns</h1>
+> **Warp Lab is part of [NumPlay](../../README.md)**, every NumWorks game in one app.
 
 <p align="center">
-  <b>The TI-84 Plus CE classic, on the NumWorks N0120.</b><br>
-  78 test chambers, the original art and the original physics, in about 35 KB.
+  <img src="src/icon.png" width="84" alt="Warp Lab icon">
 </p>
 
-<p align="center">
-  <a href="https://github.com/Mason363/NumPlay/releases/latest"><img src="https://img.shields.io/github/v/release/Mason363/NumPlay?label=release&color=1c83e0" alt="Latest release"></a>
-  <img src="https://img.shields.io/badge/installed%20size-35%20KB-4a4952" alt="Installed size: 35 KB">
-</p>
+<h1 align="center">Warp Lab</h1>
 
 <p align="center">
-  <a href="https://github.com/Mason363/NumPlay/releases/latest/download/PortalReturns.nwa"><b>Download PortalReturns.nwa</b></a>
-  &nbsp;·&nbsp; <a href="#controls">Controls</a>
-  &nbsp;·&nbsp; <a href="#install">Install</a>
-  &nbsp;·&nbsp; <a href="#credits">Credits</a>
+  <b>Two linked gates, one small robot, 32 rooms.</b><br>
+  A puzzle platformer for the NumWorks calculator.
 </p>
 
 <p align="center">
-  <img src="docs/hero.gif" width="640" alt="Falling through a floor portal and flying across chamber 7">
+  <img src="docs/calcade.png" width="320" alt="An orb leaving a floor gate toward its receiver">
+  <img src="docs/title.png" width="320" alt="Title screen">
 </p>
 
-## Highlights
+Pip, a lab robot, crosses each room of the lab with a warp tool: it opens two linked gates, **rose** and
+**mint**, on the white panels. Whatever goes into one gate comes out of the other, as fast as it went in:
+Pip, its crate, and the lab's orbs.
 
-* **All 78 chambers:** the 40 test chambers of Portal Returns, plus the 38 Portal Prelude chambers under Custom.
-* **Just like on the TI:** same tiles, sprites, menus, GLaDOS messages and colors. The player, cubes and energy pellets move exactly as in the original, frame for frame.
-* **Speedy thing goes in, speedy thing comes out:** momentum carries through portals, for you and for cubes.
-* **Everything is here:** cubes, buttons and doors, fizzlers, electric fields, spikes, glass, energy pellets and receivers, the four color schemes and the ending.
-* **New to Portal?** A short How to play guide sits in the menu, and small signs explain each new thing the first time you meet it.
-* **Your progress is saved:** finished chambers get a check mark, and you pick up where you left off.
+* **22 lab rooms, then 10 expert rooms** (they open once the lab is done).
+* **Gates keep the speed:** fall into a floor gate and fly out of a wall gate across the room.
+* **The lab:** white panels (they take gates), metal and glass (they do not; shots go through glass),
+  crates and droppers, buttons and doors in two colors, violet fields that erase gates and crates, yellow
+  fields and spikes, orbs to send into their receivers.
+* **Hints** appear in the status bar the first time something new shows up; finished rooms get a star.
 
-<table>
-  <tr>
-    <td align="center"><img src="docs/shot.png" width="390" alt="Title screen"><br><sub>Title screen and chamber select</sub></td>
-    <td align="center"><img src="docs/text.png" width="390" alt="A message before a chamber"><br><sub>A word from the facility before each chamber</sub></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/portals.png" width="390" alt="Blue and orange portals"><br><sub>Blue and orange portals</sub></td>
-    <td align="center"><img src="docs/chamber.png" width="390" alt="A chamber with fields and glass"><br><sub>Fizzlers, electric fields, glass and a cube</sub></td>
-  </tr>
-  <tr>
-    <td align="center"><img src="docs/help.png" width="390" alt="How to play"><br><sub>How to play</sub></td>
-    <td align="center"><img src="docs/momentum.gif" width="390" alt="Chamber 2"><br><sub>Chamber 2: portals keep your speed</sub></td>
-  </tr>
-</table>
+<p align="center">
+  <img src="docs/longjump.png" width="320" alt="Lab 6, Long jump">
+  <img src="docs/periscope.png" width="320" alt="Lab 19, Periscope">
+</p>
 
 ## Controls
 
-The number pad works like on the TI: each key fires a portal in its direction.
-
 | Key | Action |
 |---|---|
 | Left, Right | Run |
 | Up | Jump |
-| 1 to 9 (not 5) | Fire a portal that way (7 is up left, 3 is down right...) |
-| 5 | Switch the color of the next portal (shown in the lower right corner) |
-| OK or EXE | Pick up or drop a cube, continue |
-| Alpha | Show a message faster |
-| Back | Pause (return, restart the chamber or quit) |
+| 1 to 9 (not 5) | Open a gate that way (7 up left, 8 up, 9 up right, 4 left, 6 right, 1, 2, 3 down) |
+| 5 | Swap which gate the next shot opens (shown in the top right corner); shots also take turns |
+| OK or EXE | Pick up or drop the crate |
+| Back | Pause (resume, restart the room or back to the menu) |
 | Home | Save and quit |
 
-## Install
-
-1. Download **[PortalReturns.nwa](https://github.com/Mason363/NumPlay/releases/latest/download/PortalReturns.nwa)** from the [latest NumPlay release](https://github.com/Mason363/NumPlay/releases/latest).
-2. Plug the calculator into your computer and open **[my.numworks.com/apps](https://my.numworks.com/apps)** in Chrome or Edge.
-3. Upload `PortalReturns.nwa`. **Portal** appears at the end of the calculator's home screen.
-
 ## Credits
 
-Inspired by [Portal Returns](https://www.cemetech.net/downloads/files/1313/x1313) by MateoConLechuga for the TI-84 Plus CE, and by Portal by Valve. Not affiliated with MateoConLechuga or Valve.
-
-* Test chambers and messages: MateoConLechuga
-* Sprites and tiles: CKH4
-* Portal Prelude chambers: ported by Unicorn from BuilderBoy's Portal Prelude
-
-Made by Mason Chen as part of NumPlay.
+Warp Lab: rooms, art, font, texts and code by Calcade (2026), for its version of NumPlay by Mason Chen
+(GNU GPL v3). Not affiliated with any other game.
 
 ## Build
 
-Requirements: the ARM embedded toolchain (`arm-none-eabi-gcc`) and Node.js, which `make` uses to fetch NumWorks' `nwlink` SDK.
-
 ```sh
-make          # output/portal.nwa
-make check    # link it the way the calculator does and print the installed size
-make run      # install on a connected calculator
+make          # output/portal.nwa (the game on its own)
+make module   # output/module.o, the game as a NumPlay module
+make assets   # src/art.h and src/rooms.h, from ../../tools/conformite/warplab_art.py and warplab_rooms.py
+make test     # replays the solution of every room on the computer (test/host.c)
 ```
+
+The rooms are text files (`rooms/series1.txt`, `rooms/series2.txt`), with the inputs that solve each one.
+`../../tools/conformite/warplab_probe.py` shows where the 8 shots land from a cell, and
+`warplab_search.py` tries input timings until one solves a room.
diff --git a/games/portal/docs/calcade.png b/games/portal/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..b8209deb61528922c78d910976e0e445a10cdb03
GIT binary patch
literal 2877
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
R1&qZY*Mpu;_i>@W{~O9*uaN)%

literal 0
HcmV?d00001

diff --git a/games/portal/docs/freefall.png b/games/portal/docs/freefall.png
new file mode 100644
index 0000000000000000000000000000000000000000..f6322f361ceca9814523fed3b0e86406770c6512
GIT binary patch
literal 2672
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
E4bm2mb^rhX

literal 0
HcmV?d00001

diff --git a/games/portal/docs/longjump.png b/games/portal/docs/longjump.png
new file mode 100644
index 0000000000000000000000000000000000000000..dd67bff2f9e9d5e07bc6fa3423beefde9bc8b600
GIT binary patch
literal 2757
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

literal 0
HcmV?d00001

diff --git a/games/portal/docs/periscope.png b/games/portal/docs/periscope.png
new file mode 100644
index 0000000000000000000000000000000000000000..1a4f569f6c3ad2c5254e945fdbcfd24028889b53
GIT binary patch
literal 3058
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

literal 0
HcmV?d00001

diff --git a/games/portal/docs/title.png b/games/portal/docs/title.png
new file mode 100644
index 0000000000000000000000000000000000000000..30696435b4e62c33219325ba335d763157318f76
GIT binary patch
literal 2455
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
VdKS=RhVa7$us!C0thDq^{sTgyO-=v+

literal 0
HcmV?d00001

diff --git a/games/portal/lang/fr.txt b/games/portal/lang/fr.txt
index 527ee54..8ab70cc 100644
--- a/games/portal/lang/fr.txt
+++ b/games/portal/lang/fr.txt
@@ -1,72 +1,86 @@
-# Portal Returns in French: the English text as in the source, a tab, the translation (see tools/lang.py).
-# The font has capitals only. The chambers' own texts (in assets/main.bin and prelude.bin) stay English.
-HELLO?	ALLÔ ?
-ARE YOU STILL THERE?	TU ES TOUJOURS LÀ ?
-WHERE DID YOU GO?	OÙ ES-TU PASSÉ ?
-I GUESS YOU MADE IT THROUGH.	J'IMAGINE QUE TU AS RÉUSSI.
-FINE, IF YOU WANT TO LEAVE,	BON, SI TU VEUX PARTIR,
-I GUESS I GET ALL THIS	J'AURAI TOUT CE GÂTEAU
-CAKE TO MYSELF.	POUR MOI TOUTE SEULE.
-GOODBYE.	ADIEU.
-PRESS SHIFT TO FLY	APPUIE SUR SHIFT POUR VOLER
- COMPLETE	 TERMINÉES
-PRELUDE	PRÉLUDE
-PRESS 5 AGAIN TO RESET	ENCORE 5 POUR EFFACER
-PRESS 5 TO RESET	APPUIE SUR 5 POUR EFFACER
-LEVEL 	NIVEAU 
-CUSTOM	PERSO
-COLOR	COULEUR
+# Warp Lab in French (Calcade, 2026): the English text as in the source, a tab, the translation (see tools/lang.py).
+# The font has capitals only; accents are drawn over them. Gates are "passages" here, doors are "portes".
+ARROWS RUN, UP JUMPS. REACH THE EXIT	FLÈCHES : COURS, HAUT : SAUTE. VA À LA SORTIE
+1-9 OPEN A GATE THAT WAY. 5 SWAPS	1-9 : UN PASSAGE DANS CE SENS. 5 : CHANGE
+OK PICKS UP OR DROPS THE CRATE	OK : PRENDS OU POSE LA CAISSE
+BUTTONS OPEN THE DOORS OF THEIR COLOR	LES BOUTONS OUVRENT LES PORTES DE LEUR COULEUR
+VIOLET FIELDS ERASE GATES AND CRATES	LE VIOLET EFFACE PASSAGES ET CAISSES
+YELLOW FIELDS AND SPIKES ARE DEADLY	LE JAUNE ET LES PICS SONT MORTELS
+SEND THE ORB INTO ITS RECEIVER	ENVOIE L'ORBE DANS SON RÉCEPTEUR
+SHOTS GO THROUGH GLASS, PIP DOES NOT	LES TIRS TRAVERSENT LE VERRE, PAS PIP
+GATES ONLY HOLD ON WHITE PANELS	LES PASSAGES TIENNENT SUR LE BLANC
+LAB	LABO
+EXPERT	EXPERT
 HELP	AIDE
-RETURN	REPRENDRE
-RESTART	RECOMMENCER
-QUIT	QUITTER
+CREDITS	CRÉDITS
+LOCKED	FERMÉ
+ROOMS CLEAR	SALLES RÉUSSIES
+FINISH ALL THE LAB ROOMS FIRST	RÉUSSIS D'ABORD TOUT LE LABO
+HOW TO PLAY	COMMENT JOUER
 LEFT RIGHT	GAUCHE DROITE
 RUN	COURIR
 UP	HAUT
 JUMP	SAUTER
 OK	OK
-PICK UP / DROP	PRENDRE / POSER
+PICK UP / DROP A CRATE	PRENDRE / POSER LA CAISSE
 BACK	RETOUR
 PAUSE	PAUSE
-HOW TO PLAY	COMMENT JOUER
-1-9 SHOOT A	1-9 TIRE UN PORTAIL
-PORTAL THAT WAY	DANS CE SENS
-5 SWITCHES THE	5 CHANGE LA COULEUR
-NEXT COLOR:	SUIVANTE :
-REACH THE RIGHT SIDE	ATTEINS LE BORD DROIT DE
-OF EACH TEST CHAMBER.	CHAQUE CHAMBRE DE TEST.
-TEST ELEMENTS	ÉLÉMENTS DE TEST
-BUTTON: STAND OR PUT A	BOUTON : MONTE DESSUS OU
-CUBE ON IT TO OPEN DOORS	POSE UN CUBE POUR OUVRIR
-CUBE: OK PICKS IT UP	CUBE : OK LE PREND
-AND DROPS IT	ET LE POSE
-FIZZLER: NO PORTALS	GRILLE : NI LES PORTAILS
-OR CUBES GET THROUGH	NI LES CUBES NE PASSENT
-ELECTRIC FIELDS AND	CHAMPS ÉLECTRIQUES ET
-SPIKES ARE DEADLY	PICS SONT MORTELS
-GLASS: BEAMS GO THROUGH,	VERRE : LES RAYONS PASSENT,
-YOU DO NOT	PAS TOI
-PELLET: DEADLY. GUIDE IT	BOULE : MORTELLE. GUIDE-LA
-INTO A RECEIVER	VERS UN RÉCEPTEUR
+1-9: OPEN A GATE	1-9 : OUVRE UN PASSAGE
+THAT WAY	DANS CE SENS
+5: SWAP ROSE / MINT	5 : ROSE OU MENTHE
+WHAT GOES IN ONE GATE	CE QUI ENTRE DANS L'UN
+COMES OUT OF THE OTHER,	RESSORT DE L'AUTRE,
+AS FAST AS IT WENT IN.	AUSSI VITE QU'IL EST ENTRÉ.
+THE LAB	LE LABO
+WHITE PANELS TAKE GATES	LE BLANC PREND LES PASSAGES
+METAL AND GLASS DO NOT	LE MÉTAL ET LE VERRE, NON
+BUTTONS OPEN THEIR DOORS	LES BOUTONS OUVRENT LEURS PORTES
+VIOLET: ERASES GATES, CRATES	VIOLET : EFFACE PASSAGES, CAISSES
+YELLOW, SPIKES, ORBS: DEADLY	JAUNE, PICS, ORBES : MORTELS
+ORB IN A RECEIVER: DOORS OPEN	ORBE DANS UN RÉCEPTEUR : PORTES OUVERTES
+THE EXIT ENDS THE ROOM	LA SORTIE TERMINE LA SALLE
 OK >	OK >
-CREDITS	CRÉDITS
- INSPIRED BY PORTAL RETURNS	 INSPIRÉ DE PORTAL RETURNS
- BY MATEOCONLECHUGA. PORTAL	 DE MATEOCONLECHUGA. PORTAL
- IS BY VALVE. NOT AFFILIATED	 EST DE VALVE. SANS LIEN
- WITH EITHER OF THEM.	 AVEC L'UN OU L'AUTRE.
- CHAMBERS: MATEOCONLECHUGA	 CHAMBRES : MATEOCONLECHUGA
- SPRITES AND TILES: CKH4	 SPRITES ET TUILES : CKH4
- PRELUDE: UNICORN, AFTER	 PRÉLUDE : UNICORN, D'APRÈS
- BUILDERBOY'S PORTAL PRELUDE	 PORTAL PRELUDE DE BUILDERBOY
- ORIGINAL TESTERS: UNICORN,	 TESTEURS D'ORIGINE : UNICORN,
- MADE BY MASON CHEN	 FAIT PAR MASON CHEN
- AS PART OF NUMPLAY.	 POUR NUMPLAY.
-ARROWS: RUN, JUMP. EXIT RIGHT	FLÈCHES : BOUGE, SORS À DROITE
-1-9: SHOOT A PORTAL THAT WAY	1-9 : UN PORTAIL DANS CE SENS
-5: SWITCH THE NEXT COLOR	5 : CHANGE LA COULEUR SUIVANTE
-OK: GRAB / DROP A CUBE	OK : PRENDS / POSE UN CUBE
-BUTTONS OPEN DOORS WHILE HELD	BOUTON ENFONCÉ : PORTE OUVERTE
-BLUE FIELDS ERASE PORTALS	CHAMP BLEU : PORTAILS EFFACÉS
-RED FIELDS KILL: STAY CLEAR	CHAMP ROUGE : MORTEL, ÉVITE-LE
-GUIDE PELLETS INTO RECEIVERS	BOULES : VISE LES RÉCEPTEURS
-SPIKES KILL: STAY CLEAR	PICS MORTELS : ÉVITE-LES
+ROOMS, ART AND CODE: CALCADE (2026)	SALLES, DESSINS ET CODE : CALCADE (2026)
+ORIGINAL GAME BY MASON CHEN	JEU D'ORIGINE DE MASON CHEN
+FREE SOFTWARE: GNU GPL V3	LOGICIEL LIBRE : GNU GPL V3
+PIP SAYS HI.	PIP TE DIT BONJOUR.
+RESUME	REPRENDRE
+RESTART ROOM	RECOMMENCER
+BACK TO THE MENU	RETOUR AU MENU
+EVERY LAB ROOM IS CLEAR!	TOUT LE LABO EST RÉUSSI !
+THE EXPERT ROOMS ARE OPEN.	LES SALLES EXPERT SONT OUVERTES.
+ROOM CLEAR	SALLE RÉUSSIE
+EXPERT 	EXPERT 
+LAB 	LABO 
+FIRST STEPS	PREMIERS PAS
+WARP TOOL	L'OUTIL
+WINDOW	LA FENÊTRE
+STEP IN	UN PAS DEDANS
+SPRING	LE RESSORT
+LONG JUMP	SAUT EN LONGUEUR
+THE CRATE	LA CAISSE
+DELIVERY	LIVRAISON
+SCRUBBER	L'EFFACEUR
+NO CRATES BEYOND	PAS DE CAISSE AU-DELÀ
+LIVE WIRE	SOUS TENSION
+THE ORB	L'ORBE
+ORB CHANNEL	LE CANAL
+TWO KEYS	DEUX CLÉS
+LOOKING UP	LE NEZ EN L'AIR
+RELAY	LE RELAIS
+THROW	LE LANCER
+TWO COLORS	DEUX COULEURS
+PERISCOPE	PÉRISCOPE
+HIGH WIRE	SUR LE FIL
+TWIN RECEIVERS	RÉCEPTEURS JUMEAUX
+DOOR DASH	LA PORTE FILE
+FREE FALL	CHUTE LIBRE
+CANNON	LE CANON
+ORBIT	ORBITE
+HEAVY DOOR	LA PORTE LOURDE
+SHIELD	LE BOUCLIER
+SKYLIGHT	LA LUCARNE
+UP AND OVER	PAR-DESSUS
+TRIO	TRIO
+ZAP MAZE	LABYRINTHE ÉLECTRIQUE
+FINAL EXAM	L'EXAMEN FINAL
diff --git a/games/portal/lang/zh.txt b/games/portal/lang/zh.txt
index c82e16b..ebd6ba8 100644
--- a/games/portal/lang/zh.txt
+++ b/games/portal/lang/zh.txt
@@ -1,72 +1,85 @@
-# Portal Returns in Chinese: the English text as in the source, a tab, the translation (see tools/lang.py).
-# The chambers' own texts (in assets/main.bin and prelude.bin) stay English.
-HELLO?	你好？
-ARE YOU STILL THERE?	你还在吗？
-WHERE DID YOU GO?	你去哪儿了？
-I GUESS YOU MADE IT THROUGH.	看来你成功通过了。
-FINE, IF YOU WANT TO LEAVE,	好吧，既然你想走，
-I GUESS I GET ALL THIS	那这些蛋糕
-CAKE TO MYSELF.	就都归我一个人了。
-GOODBYE.	再见。
-PRESS SHIFT TO FLY	按 SHIFT 键飞行
- COMPLETE	 已完成
-PRELUDE	序章
-PRESS 5 AGAIN TO RESET	再按 5 确认重置
-PRESS 5 TO RESET	按 5 重置进度
-LEVEL 	关卡 
-CUSTOM	自定义
-COLOR	颜色
+# Warp Lab in Chinese (Calcade, 2026): the English text as in the source, a tab, the translation (see tools/lang.py).
+ARROWS RUN, UP JUMPS. REACH THE EXIT	方向键跑，上键跳，走到出口
+1-9 OPEN A GATE THAT WAY. 5 SWAPS	1-9 朝该方向开跃迁门，5 切换
+OK PICKS UP OR DROPS THE CRATE	OK 拿起或放下箱子
+BUTTONS OPEN THE DOORS OF THEIR COLOR	按钮打开同色的门
+VIOLET FIELDS ERASE GATES AND CRATES	紫色场会抹掉跃迁门和箱子
+YELLOW FIELDS AND SPIKES ARE DEADLY	黄色场和尖刺会致命
+SEND THE ORB INTO ITS RECEIVER	把光球送进接收器
+SHOTS GO THROUGH GLASS, PIP DOES NOT	射击能穿过玻璃，皮普不能
+GATES ONLY HOLD ON WHITE PANELS	跃迁门只能开在白色面板上
+LAB	实验室
+EXPERT	专家
 HELP	帮助
-RETURN	继续
-RESTART	重新开始
-QUIT	退出
-LEFT RIGHT	左右键
-RUN	奔跑
-UP	上键
-JUMP	跳跃
+CREDITS	制作
+LOCKED	未解锁
+ROOMS CLEAR	间完成
+FINISH ALL THE LAB ROOMS FIRST	先完成实验室的所有房间
+HOW TO PLAY	玩法
+LEFT RIGHT	左右
+RUN	跑
+UP	上
+JUMP	跳
 OK	OK
-PICK UP / DROP	拿起 / 放下
-BACK	返回键
+PICK UP / DROP A CRATE	拿起/放下箱子
+BACK	返回
 PAUSE	暂停
-HOW TO PLAY	玩法
-1-9 SHOOT A	1-9：朝对应方向
-PORTAL THAT WAY	发射传送门
-5 SWITCHES THE	5：切换下一个
-NEXT COLOR:	传送门的颜色：
-REACH THE RIGHT SIDE	到达每个测试室的
-OF EACH TEST CHAMBER.	右侧出口。
-TEST ELEMENTS	测试元素
-BUTTON: STAND OR PUT A	按钮：站在上面或放上
-CUBE ON IT TO OPEN DOORS	方块，门就会打开
-CUBE: OK PICKS IT UP	方块：按 OK 拿起
-AND DROPS IT	再按一次放下
-FIZZLER: NO PORTALS	消散力场：传送门和
-OR CUBES GET THROUGH	方块都无法通过
-ELECTRIC FIELDS AND	电场和尖刺
-SPIKES ARE DEADLY	都是致命的
-GLASS: BEAMS GO THROUGH,	玻璃：光束能穿过，
-YOU DO NOT	你不能
-PELLET: DEADLY. GUIDE IT	能量球：致命。把它
-INTO A RECEIVER	引入接收器
+1-9: OPEN A GATE	1-9：开跃迁门
+THAT WAY	朝那个方向
+5: SWAP ROSE / MINT	5：切换玫红/薄荷
+WHAT GOES IN ONE GATE	从一扇门进去的东西
+COMES OUT OF THE OTHER,	会从另一扇出来，
+AS FAST AS IT WENT IN.	速度不变。
+THE LAB	实验室
+WHITE PANELS TAKE GATES	白色面板能开门
+METAL AND GLASS DO NOT	金属和玻璃不行
+BUTTONS OPEN THEIR DOORS	按钮打开它们的门
+VIOLET: ERASES GATES, CRATES	紫色：抹掉门和箱子
+YELLOW, SPIKES, ORBS: DEADLY	黄色、尖刺、光球：致命
+ORB IN A RECEIVER: DOORS OPEN	光球进接收器：门打开
+THE EXIT ENDS THE ROOM	到出口就过关
 OK >	OK >
-CREDITS	制作名单
- INSPIRED BY PORTAL RETURNS	 灵感来自 MATEOCONLECHUGA
- BY MATEOCONLECHUGA. PORTAL	 的 PORTAL RETURNS。PORTAL
- IS BY VALVE. NOT AFFILIATED	 是 VALVE 的作品。本作与二者
- WITH EITHER OF THEM.	 均无关联。
- CHAMBERS: MATEOCONLECHUGA	 测试室：MATEOCONLECHUGA
- SPRITES AND TILES: CKH4	 精灵和图块：CKH4
- PRELUDE: UNICORN, AFTER	 序章：UNICORN，改编自
- BUILDERBOY'S PORTAL PRELUDE	 BUILDERBOY 的 PORTAL PRELUDE
- ORIGINAL TESTERS: UNICORN,	 原版测试：UNICORN，
- MADE BY MASON CHEN	 由 MASON CHEN 制作，
- AS PART OF NUMPLAY.	 收录于 NUMPLAY。
-ARROWS: RUN, JUMP. EXIT RIGHT	方向键：跑、跳。从右侧离开
-1-9: SHOOT A PORTAL THAT WAY	1-9：朝该方向发射传送门
-5: SWITCH THE NEXT COLOR	5：切换下一个传送门的颜色
-OK: GRAB / DROP A CUBE	OK：拿起 / 放下方块
-BUTTONS OPEN DOORS WHILE HELD	按钮被压住时，门会打开
-BLUE FIELDS ERASE PORTALS	蓝色力场会清除传送门
-RED FIELDS KILL: STAY CLEAR	红色力场致命：别碰
-GUIDE PELLETS INTO RECEIVERS	把能量球引入接收器
-SPIKES KILL: STAY CLEAR	尖刺致命：别碰
+ROOMS, ART AND CODE: CALCADE (2026)	房间、美术与代码：CALCADE (2026)
+ORIGINAL GAME BY MASON CHEN	原作：MASON CHEN
+FREE SOFTWARE: GNU GPL V3	自由软件：GNU GPL V3
+PIP SAYS HI.	皮普向你问好。
+RESUME	继续
+RESTART ROOM	重新开始
+BACK TO THE MENU	回到菜单
+EVERY LAB ROOM IS CLEAR!	实验室全部完成！
+THE EXPERT ROOMS ARE OPEN.	专家房间已开放。
+ROOM CLEAR	过关
+EXPERT 	专家 
+LAB 	实验室 
+FIRST STEPS	第一步
+WARP TOOL	跃迁工具
+WINDOW	窗户
+STEP IN	踏进去
+SPRING	弹簧
+LONG JUMP	跳远
+THE CRATE	箱子
+DELIVERY	送货
+SCRUBBER	擦除场
+NO CRATES BEYOND	箱子过不去
+LIVE WIRE	带电
+THE ORB	光球
+ORB CHANNEL	光球通道
+TWO KEYS	两把钥匙
+LOOKING UP	抬头看
+RELAY	接力
+THROW	投掷
+TWO COLORS	两种颜色
+PERISCOPE	潜望镜
+HIGH WIRE	走钢丝
+TWIN RECEIVERS	双接收器
+DOOR DASH	冲门
+FREE FALL	自由落体
+CANNON	大炮
+ORBIT	轨道
+HEAVY DOOR	重门
+SHIELD	盾牌
+SKYLIGHT	天窗
+UP AND OVER	翻越
+TRIO	三重奏
+ZAP MAZE	电场迷宫
+FINAL EXAM	期末考试
diff --git a/games/portal/rooms/series1.txt b/games/portal/rooms/series1.txt
new file mode 100644
index 0000000..f7be338
--- /dev/null
+++ b/games/portal/rooms/series1.txt
@@ -0,0 +1,353 @@
+; Warp Lab, the lab: 30 rooms (Calcade, 2026). Legend: tools/conformite/warplab_rooms.py
+== FIRST STEPS
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..........XX.....EX
+X.P....XX..XX.....EX
+XXXXXXXXX^^XXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R40 RU10 R17 RU15 R60
+== WARP TOOL
+XXXXXXXXXX#######XXX
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X.........#........X
+X.........#.......EX
+X.P.......#.......EX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: F6 F9 R60 R80
+== WINDOW
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X........X.........X
+X........X.........X
+X........X.........X
+X........X.........X
+X........G........EX
+#.P......G....#...EX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: F6 F4 L20 R6 RU12 R60
+== STEP IN
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X.......G..........X
+X.......G..........X
+X.......G.........EX
+X..P....G....#....EX
+XX######XXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: F6 F2 W25 RU14 R60
+== SPRING
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+XE.................X
+XE.................X
+XXXX...............X
+X.......P..........X
+X.......XXX........X
+X..................X
+X..................X
+X...##.............X
+X...##.............X
+X...##.............X
+XXXXXXXXXXXXXXXXX#XX
+XXXXXXXXXXXXXXXXXXXX
+solve: L4 F1 R23F3 R2 RU44 L80
+== LONG JUMP
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X....P.............X
+X..GGGG............X
+X..................X
+#..................X
+#..................X
+#..................X
+#..................X
+X..................X
+X.................EX
+X.................EX
+X######^^^^^XXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: L10 F1 R16F2 R10 L18 W50 R90
+== THE CRATE
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X...C..............X
+X..................X
+X..............D...X
+X..............D..EX
+X.P......B.....D..EX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: W30 R12 K R30 K W5 RU10 R80
+== DELIVERY
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X..........######..X
+X.........G......G.X
+X.........G......G.X
+X.........G.B....G.X
+X.........XXXXXXXX.X
+X..................X
+X..................X
+X..............D...X
+X...C..........D..EX
+#.P............D..EX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R10 F9 F4 K L40 W20 R8 K U24 W30 R140
+== SCRUBBER
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X..................X
+X..................X
+X..................X
+X......S.....X.....X
+X......S.....G.....X
+X......S.....G.....X
+X......S.....G.....X
+X......S.....G.....#
+X......S.....G....E#
+X.P....S.#...G....E#
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R36 RU12 R10 W10 F6 F4 L60
+== NO CRATES BEYOND
+XXXXXXXXXXXX#######X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X........S.........X
+X...C....S.........X
+X........S.....D...X
+X........S.....D..EX
+#.P......S..B..D..EX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: W20 R12 K F9 F4 L22 W30 L6 K W5 RU12 R120
+== LIVE WIRE
+XXXXXXXXXXXXXXXXXXXX
+X........Z.........X
+X........Z.........X
+X........Z.........X
+X........Z.........X
+X........Z.........X
+X........Z.........X
+X........Z.........X
+X........Z.........X
+X........Z.........X
+X........Z........EX
+#.P......Z........#X
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: F6 F4 L30 W20 RU10 R30
+== THE ORB
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X..................X
+X.......R..........X
+X..................X
+X..................X
+O..................#
+X..................X
+X..................X
+X..D...............X
+XE.D...............X
+XE.D............P..X
+XXXXXXXX#XXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: L57 F2 R40 F9 W150 L24 LU12 L120
+== ORB CHANNEL
+XXXXXXXXXXXXRXXXXXXX
+X..................X
+X..................X
+X..................X
+X................D.X
+X................D.X
+X................DEX
+X..P.............DEX
+XXXXXXGGGGGG.GGGGGGX
+X..................X
+X..................X
+O..................#
+XXXXXXXXXXXX#XXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R38F3 R16 RU14 R18F3 W200 R100
+== TWO KEYS
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X..R...............X
+X..................X
+#..................O
+X..................X
+X..................X
+X..................X
+X.....C............X
+X...............D..X
+X...............D.EX
+X.P.....B.......D.EX
+XXX#XXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R7 F2 W10 R24 K R15F7 K W40 RU12 R140
+== LOOKING UP
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X.....#####........X
+X..................X
+X.................EX
+X.................EX
+XGGGGGGGGGGGGGGGGGGX
+X..................X
+X..................X
+X..................X
+X..................X
+X.P................X
+X##################X
+XXXXXXXXXXXXXXXXXXXX
+solve: R30 F8 F2 W40 R140
+== RELAY
+XXXXXXXXXXXXXXXXXXXX
+X.....G......G.....#
+X.....G......G.....#
+X.....G......G.....#
+X.....G......G.....X
+X.....G......G.....X
+X.....G......G.....X
+X.....G......G.....X
+X.....G......G.....X
+X.....G......G.....X
+X.....G......G....EX
+#.P...G....#.G....EX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: F6 F4 L14 W5 T F9 R40 W40 R60
+== THROW
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X..................X
+X..C.......XXXXXXXXX
+#..........G.......#
+#.P........G......B#
+XXXXXXXXX..XXXXXXXXX
+X..................X
+X..................X
+X................D.X
+X................DEX
+X................DEX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: F6 F4 W20 R6 K L9K W30 R140
+== TWO COLORS
+XXXXXXXXXXXXXXXXXXXX
+X..................X
+X.....r............X
+X..................X
+#..................O
+X..................X
+X..................X
+X..................X
+X..........d.......X
+X..........d....D..X
+X..........d.C..D.EX
+X.P........d..B.D.EX
+XXXXXX#XXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R33 F2 R8F7 W150 R50 K R6 K RU12 R100
+== PERISCOPE
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXX#......X
+XXXXXXXXXXXX#....E.X
+XXXXXXXXXXXX#....E.X
+X...........XGGGGGGX
+X..................X
+X..................#
+X..................#
+X..............GGGGX
+X..................X
+X..................X
+#.P................X
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R91F9 F4 L100 W30 L6 T F7 R60 W10 R40
+== HIGH WIRE
+XXXXXXXXXXXX#######X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X................E.X
+X.P..............E.X
+X######.......XXXXXX
+XZZZZZZZZZZZZZZZZZZX
+XZZZZZZZZZZZZZZZZZZX
+XZZZZZZZZZZZZZZZZZZX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R28F9 W8 F2 R60
+== TWIN RECEIVERS
+XXXXXRXXXXXXXXRXXXXX
+X..................X
+X..................X
+O..................#
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X................D.X
+X................DEX
+X.P..............DEX
+XXXXX#XXXXXXXX#XXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R24 F2 R40F9 W100 R17F3 W300 RU14 R60
+== DOOR DASH
+XXXXXXXXXXXXXXXXXXXX
+X.........X........X
+X.........X........X
+X.........X........X
+X.........X........X
+X.........X........X
+X.........X........X
+X.........X........X
+X.........X........X
+X.........X........X
+X.........D.......E#
+#.P...B...D.......E#
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R25 W10 F6 F4 L40
diff --git a/games/portal/rooms/series2.txt b/games/portal/rooms/series2.txt
new file mode 100644
index 0000000..f5e9809
--- /dev/null
+++ b/games/portal/rooms/series2.txt
@@ -0,0 +1,161 @@
+; Warp Lab, the expert rooms (Calcade, 2026). Legend: tools/conformite/warplab_rooms.py
+== FREE FALL
+X#XXXXXXXXXXXXXXXXXX
+#..................X
+#..................X
+#..................X
+#..................X
+#..................X
+#..................X
+#..................X
+#..................X
+#................E.X
+#................E.X
+X.P...........XXXXXX
+X#X^^^^^^^^^^^XXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: L12 F8 F2 W31 F4 W20 R100
+== CANNON
+X#XXXXXXXXXXXXXXXXXX
+#..................X
+#..................X
+#..................X
+#..................X
+#..................X
+#..................X
+#..C.............D.X
+#..............B.DEX
+#...........XXXXXXEX
+#...........XXXXXXXX
+X.P.........XXXXXXXX
+X#XX^^^^^^^^XXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: W30 R4 K L18 F8 F2 W32 F4 W40 L1 K W10 R80
+== ORBIT
+XXXXXXXXXXOXXXXXXXXX
+X..................X
+X..................X
+X..................X
+R..................#
+X..................X
+X..................X
+X..................X
+X..................X
+X..............D...X
+X..............D..EX
+X.P............D..EX
+XXXXXXXXXX#XXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R54F3 W60 RU14 R12F9 W200 R100
+== HEAVY DOOR
+XXXXXXXXXXXXXXXXXXXX
+X..........X.......X
+X..........X.......X
+X..........X.......X
+X..........X.......X
+X..........X.......X
+X..........X.......X
+X..........X.......X
+X..C.......X.......X
+X..........X.......X
+X..........D......E#
+#.P...B..B.D......E#
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: W30 K R24 K RU14 R6 W10 F6 F4 L10 LU12 L60
+== SHIELD
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+X..C...............X
+X.................EX
+X.P.....^^........EO
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: W30 K R32 RU14 R80
+== SKYLIGHT
+XXXXXXXXXXXXXXX####X
+XXXXXXXXXXXXXX.....X
+XXXXXXXXXXXXXX...E.X
+XXXXXXXXXXXXXX...E.X
+X..............GGGGX
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+X.P....ZZZ.........X
+X######XXX#########X
+XXXXXXXXXXXXXXXXXXXX
+solve: R30 RU20F9 W30 F2 W40 R40
+== UP AND OVER
+X#XXXXXXXXXXXXXXXXXX
+X..................X
+X..................X
+X..................X
+X..................X
+X..............E...X
+X..............E...X
+X.........XXXXXXXXXX
+X.........XXXXXXXXXX
+X.........XXXXXXXXXX
+X.........XXXXXXXXXX
+X.P.......XXXXXXXXXX
+X#XXXXX#XXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: L12 F8 F2 W40 F3 W10 R60
+== TRIO
+XXXXXRXXXXRXXXXRXXXX
+X..................X
+X..................X
+X..................X
+X..................X
+X..................X
+#..................O
+X..................X
+X..................X
+X................D.X
+X................DEX
+X.P..............DEX
+XXXXX#XXXX#XXXX#XXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: R19F3 R8F7 W200 R25F3 W300 RU14 R22 T F3 W300 RU14 R60
+== ZAP MAZE
+XXXXXXXXXXXXXXXXXXXX
+X....Z.....Z.......X
+X....Z.....Z.......X
+X....Z.....Z.......X
+X....Z.....Z.......X
+X....Z.....Z.......X
+X....Z.....Z.......X
+X....Z.....Z.......X
+X....Z.....Z.......X
+X....Z.....Z.......X
+X....Z.....Z.......#
+#.P..Z..#..Z......EX
+XXXXXXXXXXXXXXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: F6 F4 L12 W20 U4 RU3 U4 W20 T F6 L4 W20 R20 W40 R40
+== FINAL EXAM
+X#XXXXXXXXXXXXXXXXXX
+#..................X
+#..................X
+#..................X
+#..................X
+#..................X
+#..................X
+#..................X
+#..C...........B...#
+#...DXX.....XXXXXXXX
+#...D.E.....XXXXXXXX
+X.P.D.E.....XXXXXXXX
+X#XXXXX^^^^^XXXXXXXX
+XXXXXXXXXXXXXXXXXXXX
+solve: W30 R4 K L18 F8 F2 W32 F4 W40 L1 K W10 F6 R60 W60 R60
diff --git a/games/portal/src/art.h b/games/portal/src/art.h
new file mode 100644
index 0000000..7d13204
--- /dev/null
+++ b/games/portal/src/art.h
@@ -0,0 +1,201 @@
+/* Generated by tools/conformite/warplab_art.py: do not edit. */
+#ifndef WARPLAB_ART_H
+#define WARPLAB_ART_H
+#include <stdint.h>
+static const uint16_t PAL[16] = {
+  6406,10666,57117,42327,19116,12745,40669,65535,4259,64241,16152,63049,36555,46335,52331,35526,
+};
+enum {
+  ART_EMPTY,
+  ART_PANEL,
+  ART_METAL,
+  ART_GLASS,
+  ART_DOOR1,
+  ART_DOOR1_OPEN,
+  ART_DOOR2,
+  ART_DOOR2_OPEN,
+  ART_BUTTON1,
+  ART_BUTTON1_DOWN,
+  ART_BUTTON2,
+  ART_BUTTON2_DOWN,
+  ART_SCRUB0,
+  ART_SCRUB1,
+  ART_ZAP0,
+  ART_ZAP1,
+  ART_SPIKES,
+  ART_EXIT,
+  ART_RECV_OFF,
+  ART_RECV_ON,
+  ART_EMITTER,
+  ART_DROPPER,
+  ART_TILES
+};
+static const uint8_t TILE_ART[2816] = {
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,34,34,34,34,34,34,34,50,34,34,34,34,34,34,34,50,
+  34,34,34,34,34,34,34,50,34,50,34,34,34,34,35,50,34,34,34,34,34,34,34,50,
+  34,34,34,34,34,34,34,50,34,34,34,34,34,34,34,50,50,51,51,51,51,51,51,51,
+  34,34,34,34,34,34,34,50,34,34,34,34,34,34,34,50,34,34,34,34,34,34,34,50,
+  34,50,34,34,34,34,35,50,34,34,34,34,34,34,34,50,34,34,34,34,34,34,34,50,
+  34,34,34,34,34,34,34,50,51,51,51,51,51,51,51,51,85,85,85,85,85,85,85,85,
+  68,68,84,68,68,84,68,132,68,67,69,68,68,69,52,132,68,84,68,68,84,68,68,132,
+  68,69,68,68,69,68,68,133,84,68,68,84,68,68,84,132,69,68,68,69,68,68,69,132,
+  68,68,84,68,68,84,68,132,68,68,69,68,68,69,68,132,68,84,68,68,84,68,68,132,
+  68,69,68,68,69,68,68,133,84,68,68,84,68,68,84,132,69,68,68,69,68,68,69,132,
+  68,67,84,68,68,84,52,132,68,68,69,68,68,69,68,132,136,136,136,136,136,136,136,136,
+  102,102,102,102,102,102,102,102,6,0,0,0,0,0,0,96,6,0,0,0,0,0,0,96,
+  6,0,0,0,0,0,0,96,6,0,0,0,0,0,7,96,6,0,0,0,0,96,0,96,
+  6,0,0,0,0,6,0,96,6,0,0,0,96,0,0,96,6,0,0,0,7,0,0,96,
+  6,0,0,96,0,0,0,96,6,0,0,6,0,0,0,96,6,0,96,0,0,0,0,96,
+  6,0,7,0,0,0,0,96,6,96,7,0,0,0,0,96,6,0,0,0,0,0,0,96,
+  102,102,102,102,102,102,102,102,85,85,85,85,85,85,85,85,69,68,68,68,68,68,68,84,
+  69,180,187,187,187,187,75,84,69,68,68,180,75,68,68,84,85,85,85,181,91,85,85,85,
+  69,68,68,180,75,68,68,84,69,68,68,180,75,68,68,84,69,68,68,180,75,68,68,84,
+  85,85,85,181,91,85,85,85,69,68,68,180,75,68,68,84,69,68,68,180,75,68,68,84,
+  69,68,68,180,75,68,68,84,85,85,85,181,91,85,85,85,69,180,187,187,187,187,75,84,
+  69,68,68,68,68,68,68,84,69,68,68,68,68,68,68,84,181,0,0,0,0,0,0,91,
+  5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,
+  181,0,0,0,0,0,0,91,5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,
+  5,0,0,0,0,0,0,80,181,0,0,0,0,0,0,91,5,0,0,0,0,0,0,80,
+  5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,181,0,0,0,0,0,0,91,
+  5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,
+  85,85,85,85,85,85,85,85,69,68,68,68,68,68,68,84,69,196,204,204,204,204,76,84,
+  69,68,68,196,76,68,68,84,85,85,85,197,92,85,85,85,69,68,68,196,76,68,68,84,
+  69,68,68,196,76,68,68,84,69,68,68,196,76,68,68,84,85,85,85,197,92,85,85,85,
+  69,68,68,196,76,68,68,84,69,68,68,196,76,68,68,84,69,68,68,196,76,68,68,84,
+  85,85,85,197,92,85,85,85,69,196,204,204,204,204,76,84,69,68,68,68,68,68,68,84,
+  69,68,68,68,68,68,68,84,197,0,0,0,0,0,0,92,5,0,0,0,0,0,0,80,
+  5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,197,0,0,0,0,0,0,92,
+  5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,
+  197,0,0,0,0,0,0,92,5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,
+  5,0,0,0,0,0,0,80,197,0,0,0,0,0,0,92,5,0,0,0,0,0,0,80,
+  5,0,0,0,0,0,0,80,5,0,0,0,0,0,0,80,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,187,187,187,187,187,187,0,0,85,85,85,85,85,85,0,
+  0,85,85,85,85,85,85,0,0,85,85,85,85,85,85,0,64,68,68,68,68,68,68,4,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,187,187,187,187,187,187,0,0,85,85,85,85,85,85,0,
+  64,68,68,68,68,68,68,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,204,204,204,204,204,204,0,0,85,85,85,85,85,85,0,0,85,85,85,85,85,85,0,
+  0,85,85,85,85,85,85,0,64,68,68,68,68,68,68,4,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,204,204,204,204,204,204,0,0,85,85,85,85,85,85,0,64,68,68,68,68,68,68,4,
+  208,221,208,221,208,208,208,0,0,0,0,13,0,0,208,0,0,0,0,13,0,0,0,0,
+  0,0,0,0,208,0,0,0,0,13,0,0,208,0,0,0,0,13,0,0,208,0,208,0,
+  0,13,0,13,0,0,208,0,0,0,0,13,0,0,208,0,208,208,208,221,208,208,208,0,
+  0,0,0,0,208,0,0,0,0,13,0,0,208,0,0,0,0,13,0,0,208,0,208,0,
+  0,13,0,13,0,0,208,0,0,0,0,13,0,0,208,0,0,0,0,13,0,0,0,0,
+  0,0,0,0,208,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0,208,0,0,0,
+  0,13,0,0,208,0,0,0,0,13,0,0,208,0,208,0,0,13,0,13,0,0,208,0,
+  0,0,0,13,0,0,208,0,0,0,0,13,0,0,0,0,208,208,208,208,208,208,208,0,
+  0,13,0,0,208,0,0,0,0,13,0,0,208,0,208,0,0,13,0,13,0,0,208,0,
+  0,0,0,13,0,0,208,0,0,0,0,13,0,0,0,0,0,0,0,0,208,0,0,0,
+  0,13,0,0,208,0,0,0,208,221,208,208,208,208,208,0,0,0,0,0,123,0,0,0,
+  0,0,0,0,176,11,0,0,0,0,0,0,0,176,11,0,0,0,0,0,176,11,0,0,
+  0,0,0,0,187,0,0,0,0,0,112,11,0,0,0,0,0,0,176,11,0,0,0,0,
+  0,0,176,11,0,0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,176,11,0,0,
+  0,0,0,0,0,176,7,0,0,0,0,0,176,11,0,0,0,0,0,0,187,0,0,0,
+  0,0,176,11,0,0,0,0,0,0,176,11,0,0,0,0,0,0,112,11,0,0,0,0,
+  0,0,0,112,11,0,0,0,0,0,0,187,0,0,0,0,0,0,187,0,0,0,0,0,
+  0,0,0,187,0,0,0,0,0,0,0,176,11,0,0,0,0,0,0,0,0,123,0,0,
+  0,0,0,0,0,187,0,0,0,0,0,0,0,187,0,0,0,0,0,176,11,0,0,0,
+  0,0,0,187,0,0,0,0,0,0,183,0,0,0,0,0,0,0,0,187,0,0,0,0,
+  0,0,0,176,11,0,0,0,0,0,0,0,0,187,0,0,0,0,0,0,0,187,0,0,
+  0,0,0,0,0,123,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,55,0,55,0,55,0,55,0,55,0,55,0,55,0,55,
+  0,55,0,55,0,55,0,55,48,55,51,55,51,55,51,55,48,55,51,55,51,55,51,55,
+  48,55,51,55,51,55,51,55,51,55,51,55,51,55,51,55,204,204,204,204,204,204,204,204,
+  204,204,204,204,204,204,204,204,140,136,136,136,136,136,136,200,140,136,136,136,136,136,136,200,
+  140,136,136,136,136,136,136,200,140,136,135,136,120,136,136,200,140,136,120,136,136,135,136,200,
+  140,136,136,135,136,120,136,200,140,136,136,120,136,136,135,200,140,136,136,135,136,120,136,200,
+  140,136,120,136,136,135,136,200,140,136,135,136,120,136,136,200,140,136,136,136,136,136,136,200,
+  140,136,136,136,136,136,136,200,140,136,136,136,136,136,136,200,140,136,136,136,136,136,136,200,
+  85,85,85,85,85,85,85,85,68,68,84,68,68,84,68,132,68,67,69,68,68,69,52,132,
+  68,84,68,51,51,68,68,132,68,69,51,51,51,51,68,133,84,68,51,136,136,51,84,132,
+  69,52,131,136,136,56,67,132,68,52,131,136,136,56,67,132,68,52,131,136,136,56,67,132,
+  68,52,131,136,136,56,67,132,68,69,51,136,136,51,68,133,84,68,51,51,51,51,84,132,
+  69,68,68,51,51,68,69,132,68,67,84,68,68,84,52,132,68,68,69,68,68,69,68,132,
+  136,136,136,136,136,136,136,136,85,85,85,85,85,85,85,85,68,68,84,68,68,84,68,132,
+  68,67,69,68,68,69,52,132,68,84,68,204,204,68,68,132,68,69,204,204,204,204,68,133,
+  84,68,204,187,187,204,84,132,69,196,188,187,187,203,76,132,68,196,188,187,187,203,76,132,
+  68,196,188,187,187,203,76,132,68,196,188,187,187,203,76,132,68,69,204,187,187,204,68,133,
+  84,68,204,204,204,204,84,132,69,68,68,204,204,68,69,132,68,67,84,68,68,84,52,132,
+  68,68,69,68,68,69,68,132,136,136,136,136,136,136,136,136,85,85,85,85,85,85,85,85,
+  68,68,84,68,68,84,68,132,68,67,69,68,68,69,52,132,68,84,68,68,84,68,68,132,
+  68,69,85,85,85,85,68,133,84,68,85,85,85,85,84,132,69,68,85,187,187,85,69,132,
+  68,68,85,187,187,85,68,132,68,68,85,187,187,85,68,132,68,84,85,187,187,85,68,132,
+  68,69,85,85,85,85,68,133,84,68,85,85,85,85,84,132,69,68,68,69,68,68,69,132,
+  68,67,84,68,68,84,52,132,68,68,69,68,68,69,68,132,136,136,136,136,136,136,136,136,
+  85,85,85,85,85,85,85,85,68,68,68,68,68,68,68,68,0,80,85,181,91,85,5,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
+  0,0,0,0,0,0,0,0,
+};
+static const uint8_t SPRITES[380] = {
+  10,14,0,0,187,0,0,0,0,128,0,0,0,119,119,119,0,112,119,119,119,7,112,136,
+  136,168,7,112,136,136,136,7,112,119,119,119,7,0,115,119,55,0,0,55,51,7,0,0,
+  119,119,55,0,0,115,119,7,0,0,128,0,8,0,0,128,0,8,0,0,136,0,136,0,
+  10,14,0,0,187,0,0,0,0,128,0,0,0,119,119,119,0,112,119,119,119,7,112,136,
+  136,168,7,112,136,136,136,7,112,119,119,119,7,0,115,119,55,0,0,55,51,7,0,0,
+  119,119,55,0,0,115,119,7,0,0,8,0,128,0,128,0,0,0,8,136,0,0,0,128,
+  10,14,0,0,187,0,0,0,0,128,0,0,0,119,119,119,0,112,119,119,119,7,112,136,
+  136,168,7,112,136,136,136,7,112,119,119,119,7,0,115,119,55,0,0,55,51,7,0,0,
+  119,119,55,0,0,115,119,7,0,0,0,136,0,0,0,128,0,8,0,0,128,8,136,0,
+  10,14,0,0,187,0,0,0,0,128,0,0,0,119,119,119,0,112,119,119,119,7,112,136,
+  136,168,7,112,136,136,136,7,112,119,119,119,7,3,115,119,55,48,48,55,51,7,3,0,
+  119,119,55,0,0,115,119,7,0,0,8,0,8,0,128,0,0,128,0,0,0,0,0,0,
+  10,10,255,255,255,255,255,239,238,238,238,254,239,239,238,254,254,239,254,238,239,254,239,238,
+  255,238,254,239,238,255,238,254,239,254,238,239,254,239,239,238,254,254,239,238,238,238,254,255,
+  255,255,255,255,6,6,0,187,0,176,119,11,123,119,183,123,119,183,176,119,11,0,187,0,
+  6,6,0,187,0,176,187,11,187,119,187,187,119,187,176,187,11,0,187,0,
+};
+#define SPR_PIP_STAND (SPRITES + 0) /* 10x14 */
+#define SPR_PIP_RUN1 (SPRITES + 72) /* 10x14 */
+#define SPR_PIP_RUN2 (SPRITES + 144) /* 10x14 */
+#define SPR_PIP_JUMP (SPRITES + 216) /* 10x14 */
+#define SPR_CRATE (SPRITES + 288) /* 10x10 */
+#define SPR_ORB0 (SPRITES + 340) /* 6x6 */
+#define SPR_ORB1 (SPRITES + 360) /* 6x6 */
+#define FONT_FIRST 32
+#define FONT_LAST 95
+static const uint8_t FONT[448] = {
+  0,0,0,0,0,0,0,4,4,4,4,4,0,4,10,10,0,0,0,0,0,10,10,31,
+  10,31,10,10,14,17,16,12,4,0,4,19,11,8,4,2,26,25,6,9,6,2,21,9,
+  22,4,4,2,0,0,0,0,8,4,2,2,2,4,8,2,4,8,8,8,4,2,0,21,
+  14,31,14,21,0,0,4,4,31,4,4,0,0,0,0,0,6,4,2,0,0,0,14,0,
+  0,0,0,0,0,0,0,6,6,16,16,8,4,2,1,1,14,25,21,21,19,17,14,4,
+  6,4,4,4,4,14,14,17,16,12,2,1,31,15,16,12,16,16,16,15,8,12,10,9,
+  31,8,8,31,1,15,16,16,17,14,14,1,15,17,17,17,14,31,16,8,4,4,4,4,
+  14,17,14,17,17,17,14,14,17,17,30,16,16,14,0,6,6,0,6,6,0,0,6,6,
+  0,6,4,2,8,4,2,1,2,4,8,0,0,31,0,31,0,0,2,4,8,16,8,4,
+  2,14,17,16,12,4,0,4,14,17,29,21,29,1,30,14,17,17,31,17,17,17,15,17,
+  15,17,17,17,15,30,1,1,1,1,1,30,15,17,17,17,17,17,15,31,1,15,1,1,
+  1,31,31,1,15,1,1,1,1,30,1,1,25,17,17,14,17,17,31,17,17,17,17,31,
+  4,4,4,4,4,31,28,16,16,16,17,17,14,17,9,7,9,17,17,17,1,1,1,1,
+  1,1,31,17,27,21,21,17,17,17,17,19,21,25,17,17,17,14,17,17,17,17,17,14,
+  15,17,17,15,1,1,1,14,17,17,17,21,9,22,15,17,17,15,9,17,17,30,1,14,
+  16,16,16,15,31,4,4,4,4,4,4,17,17,17,17,17,17,14,17,17,17,17,10,10,
+  4,17,17,17,21,21,27,17,17,10,4,10,17,17,17,17,17,10,4,4,4,4,31,8,
+  4,2,1,1,31,14,2,2,2,2,2,14,14,17,16,12,4,0,4,14,8,8,8,8,
+  8,14,14,17,16,12,4,0,4,0,0,0,0,0,0,31,
+};
+#endif
diff --git a/games/portal/src/icon.png b/games/portal/src/icon.png
index c9d98b42c465d0a6b1ef87c20b6a075eaa2e0d54..8ba07e7267694ddba2dde45d8b5d51bc9f52b272 100644
GIT binary patch
delta 2785
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

delta 1870
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
IM6N<$g2lL(0RR91

diff --git a/games/portal/src/main.c b/games/portal/src/main.c
index d14bd4d..3b0d320 100644
--- a/games/portal/src/main.c
+++ b/games/portal/src/main.c
@@ -1,75 +1,33 @@
-/* Portal Returns for NumWorks: title screen, menus, help, saving. */
+/* Warp Lab for NumWorks: the title screen, the menus, the help, the hints
+ * and the saved progress, and the loop that plays a room. */
+#include <eadk.h>
 #include <string.h>
 #include "../../common/epsilon_app.h"
 #include "../../common/epsilon_files.h"
 #include "../../common/jump.h"
-#include "portal.h"
-#include "assets.h"
+#include "warplab.h"
+#include "view.h"
+#include "art.h"
 
 #ifdef __ELF__ /* app name and API level, for the calculator's installer */
-const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Portal";
+const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "Warp Lab";
 const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
 #endif
 
-#define SPT(a) (S_E1C7 + ((a) - 0xE1C7))
-
-save_t save;
-static np_jump_t leave;
-
-/* ------------------------------------------------------------ input */
-static uint64_t keys;
-bool key_down(int k) { return keys >> k & 1; }
-
-void scan_keys(void) {
-  keys = eadk_keyboard_scan();
-  if (key_down(eadk_key_home) || key_down(eadk_key_on_off)) np_jump(leave);
-}
-
-/* Menus read the keyboard too (rather than the event queue), so a key
- * that is still down from before never counts as a new press. Arrows
- * repeat when held. */
-static uint64_t prev_keys = ~(uint64_t)0;
-static int rep = -1;
-static uint64_t rep_at;
-
-void flush_keys(void) {
-  scan_keys();
-  prev_keys = keys;
-  rep = -1;
-}
-
-/* back in a chamber: wait until OK, EXE and Back are up, so the key that
- * closed a menu does not also grab a cube or open the menu again */
-static void release_keys(void) {
-  for (;;) {
-    scan_keys();
-    if (!key_down(eadk_key_ok) && !key_down(eadk_key_exe) && !key_down(eadk_key_back)) return;
-    eadk_timing_msleep(5);
-  }
-}
-
-int wait_key(void) {
-  for (;;) {
-    scan_keys();
-    uint64_t now = eadk_timing_millis(), fresh = keys & ~prev_keys;
-    prev_keys = keys;
-    if (fresh) {
-      uint32_t lo = (uint32_t)fresh; /* 32-bit ctz: no libgcc helper in the module */
-      int k = lo ? __builtin_ctz(lo) : 32 + __builtin_ctz((uint32_t)(fresh >> 32));
-      rep = k <= eadk_key_right ? k : -1;
-      rep_at = now + 350;
-      return k;
-    }
-    if (rep >= 0 && key_down(rep) && now >= rep_at) {
-      rep_at = now + 70;
-      return rep;
-    }
-    if (rep >= 0 && !key_down(rep)) rep = -1;
-    eadk_timing_msleep(10);
-  }
-}
-
 /* ------------------------------------------------------------ saving */
+typedef struct {
+  u8 magic, version;
+  u8 unlocked[2]; /* highest room reachable in each series */
+  u8 level[2];    /* room shown in the selector */
+  u8 done[2][6];  /* finished rooms, 1 bit each */
+  u8 scheme;      /* (unused) */
+  u8 hints;       /* hints already shown, 1 bit each */
+  u8 pack;        /* last series played */
+  u8 flags;       /* bit 0: the lab finished (expert rooms open), bit 1: hint 8 seen */
+  u8 sum;
+} save_t;
+static save_t save;
+static np_jump_t leave;
 static const char SAVE_NAME[] = "portal.sav";
 
 static u8 checksum(const save_t *s) {
@@ -79,8 +37,8 @@ static u8 checksum(const save_t *s) {
   return c;
 }
 
-void save_write(void) {
-  save.magic = 'P', save.version = 1;
+static void save_write(void) {
+  save.magic = 'W', save.version = 1;
   save.sum = checksum(&save);
   ef_write(SAVE_NAME, &save, sizeof save);
 }
@@ -89,426 +47,445 @@ static void save_load(void) {
   memset(&save, 0, sizeof save);
   save.unlocked[0] = save.unlocked[1] = 1;
   save.level[0] = save.level[1] = 1;
-  save.scheme = 1;
   uint32_t n;
   const u8 *p = ef_read(SAVE_NAME, &n);
   if (!p || n != sizeof save) return;
   save_t s;
   memcpy(&s, p, sizeof s);
-  if (s.magic != 'P' || s.version != 1 || s.sum != checksum(&s)) return;
-  for (int k = 0; k < 2; k++) {
-    int max = pack_levels(k);
+  if (s.magic != 'W' || s.version != 1 || s.sum != checksum(&s)) return; /* (saves of the game this folder held before start over) */
+  for (int k = 0; k < SERIES; k++) {
+    int max = series_rooms(k);
     if (s.unlocked[k] < 1 || s.unlocked[k] > max) s.unlocked[k] = 1;
     if (s.level[k] < 1 || s.level[k] > s.unlocked[k]) s.level[k] = s.unlocked[k];
   }
-  if (s.scheme > 3) s.scheme = 1;
-  if (s.pack > 1) s.pack = 0;
+  if (s.pack >= SERIES) s.pack = 0;
   save = s;
 }
 
-void quit_now(void) { np_jump(leave); }
-
-static int quit(void) {
-  save_write();
-  return np_app_end();
+static bool is_done(int k, int n) { return save.done[k][(n - 1) >> 3] >> ((n - 1) & 7) & 1; }
+static int done_count(int k) {
+  int c = 0;
+  for (int i = 1; i <= series_rooms(k); i++) c += is_done(k, i);
+  return c;
 }
 
-static bool is_done(int pack, int n) { return save.done[pack][(n - 1) >> 3] >> ((n - 1) & 7) & 1; }
+/* ------------------------------------------------------------ keys */
+static uint64_t keys, prev_keys = ~(uint64_t)0;
+static int rep = -1;
+static uint64_t rep_at;
 
-void level_started(int pack, int n) {
-  save.pack = pack;
-  save.level[pack] = n;
-  if (n > save.unlocked[pack]) save.unlocked[pack] = n;
-  save_write();
-}
+static bool down(int k) { return keys >> k & 1; }
 
-void level_done(int pack, int n) {
-  save.done[pack][(n - 1) >> 3] |= 1 << ((n - 1) & 7);
-  if (n < pack_levels(pack)) {
-    if (n + 1 > save.unlocked[pack]) save.unlocked[pack] = n + 1;
-    save.level[pack] = n + 1;
-  } else if (pack == 0) save.flags |= 1;
-  save_write();
+static void scan(void) {
+  keys = eadk_keyboard_scan();
+  if (down(eadk_key_home) || down(eadk_key_on_off)) np_jump(leave);
 }
 
-/* ------------------------------------------------------------ colors */
-/* The four color schemes of the original (COLOR on the title screen). */
-void apply_scheme(void) {
-  memcpy(pal, PAL_DEFAULT, sizeof pal);
-  pal[0] = pal[1] = 0; /* scheme 0 keeps the table's black */
-  static const u8 bg[4] = {0xFF, 0x4A, 0x6B, 0x00};
-  u8 b = bg[save.scheme], f = save.scheme ? 0xFF : 0x00;
-  if (save.scheme) pal[0] = pal[1] = 0xFFFF;
-  pal[2] = b << 8 | b;
-  text_fg = f << 8 | f;
-  text_bg = screen_bg = pal[2];
+static void flush_keys(void) {
+  scan();
+  prev_keys = keys;
+  rep = -1;
 }
 
-/* ------------------------------------------------------------ title */
-static void title_art(void) { /* EC34 */
-  cls();
-  text("P", 0x1D, 0x29);
-  spr(S_DD13, 0x22, 0x25);
-  text("RTAL", 0x2B, 0x29);
-  text("RETURNS", 0x47, 0x29);
-  spr1(TITLE_PIC0, 0x70, 0x1F);
-  spr1(TITLE_PIC1, 0x1D, 0xA1);
-  spr1(TITLE_PIC2, 0x48, 0xA1);
-  spr1(TITLE_PIC3, 0x73, 0xA1);
+/* the next key pressed (arrows repeat when held) */
+static int wait_key(void) {
+  for (;;) {
+    scan();
+    uint64_t now = eadk_timing_millis(), fresh = keys & ~prev_keys;
+    prev_keys = keys;
+    if (fresh) {
+      uint32_t lo = (uint32_t)fresh;
+      int k = lo ? __builtin_ctz(lo) : 32 + __builtin_ctz((uint32_t)(fresh >> 32));
+      rep = k <= eadk_key_right ? k : -1;
+      rep_at = now + 350;
+      return k;
+    }
+    if (rep >= 0 && down(rep) && now >= rep_at) {
+      rep_at = now + 70;
+      return rep;
+    }
+    if (rep >= 0 && !down(rep)) rep = -1;
+    eadk_timing_msleep(10);
+  }
 }
 
-static void item(const char *s, int row, bool on) {
-  u16 f = text_fg;
-  if (on) text_fg = pal[C_BLUE];
-  text(s, 0x1D, 0x42 + 0x18 * row);
-  text_fg = f;
-}
+static bool is_ok(int k) { return k == eadk_key_ok || k == eadk_key_exe; }
 
-/* "<12>": the selector (the number lights up), a star once that chamber is done */
-static void selector(int x2, int y, int n, bool on, bool done) {
-  u16 f = text_fg;
-  fill(x2 * 2, y, 70, 8, screen_bg);
-  x2 = text("<", x2, y);
-  if (on) text_fg = pal[C_BLUE];
-  x2 = number(n, x2, y);
-  text_fg = f;
-  x2 = text(">", x2, y);
-  if (done) { /* a check mark in the font's style */
-    static const u8 check[8] = {0x00, 0x03, 0x03, 0x06, 0xC6, 0x6C, 0x38, 0x10};
-    static u16 px[64];
-    for (int i = 0; i < 64; i++) px[i] = check[i >> 3] >> (7 - (i & 7)) & 1 ? pal[C_ORANGE] : screen_bg;
-    eadk_display_push_rect((eadk_rect_t){x2 * 2 + 2, y, 8, 8}, px);
-  }
+/* ------------------------------------------------------------ hints */
+enum { H_MOVE, H_FIRE, H_CRATE, H_BUTTON, H_SCRUB, H_DANGER, H_ORB, H_GLASS, H_METAL, H_COUNT };
+static const char *const HINTS[H_COUNT] = {
+  T("ARROWS RUN, UP JUMPS. REACH THE EXIT"),
+  T("1-9 OPEN A GATE THAT WAY. 5 SWAPS"),
+  T("OK PICKS UP OR DROPS THE CRATE"),
+  T("BUTTONS OPEN THE DOORS OF THEIR COLOR"),
+  T("VIOLET FIELDS ERASE GATES AND CRATES"),
+  T("YELLOW FIELDS AND SPIKES ARE DEADLY"),
+  T("SEND THE ORB INTO ITS RECEIVER"),
+  T("SHOTS GO THROUGH GLASS, PIP DOES NOT"),
+  T("GATES ONLY HOLD ON WHITE PANELS"),
+};
+static int queue[H_COUNT], queued;
+
+static bool hint_seen(int h) { return h < 8 ? save.hints >> h & 1 : save.flags >> 1 & 1; }
+static void hint_mark(int h) {
+  if (h < 8) save.hints |= 1 << h;
+  else save.flags |= 2;
 }
 
-static void menu_redraw(const char *const *items, int n, int sel) {
-  for (int i = 0; i < n; i++) item(items[i], i, i == sel);
+static void hints_for_room(void) {
+  bool has[16] = {0};
+  for (int cy = 0; cy < RH; cy++)
+    for (int cx = 0; cx < RW; cx++) has[S.map[cy][cx]] = true;
+  static const u8 kinds[][2] = {{T_EMPTY, H_MOVE}, {T_PANEL, H_FIRE}, {T_DROPPER, H_CRATE}, {T_BUTTON1, H_BUTTON},
+                                 {T_BUTTON2, H_BUTTON}, {T_SCRUB, H_SCRUB}, {T_ZAP, H_DANGER}, {T_SPIKES, H_DANGER},
+                                 {T_EMITTER, H_ORB}, {T_GLASS, H_GLASS}, {T_METAL, H_METAL}};
+  queued = 0;
+  for (unsigned i = 0; i < sizeof kinds / sizeof *kinds; i++) {
+    int h = kinds[i][1];
+    if (!has[kinds[i][0]] || hint_seen(h)) continue;
+    bool dup = false;
+    for (int j = 0; j < queued; j++) dup |= queue[j] == h;
+    if (!dup) queue[queued++] = h;
+  }
 }
 
-static void progress_line(int pack) {
-  int done = 0, total = pack_levels(pack);
-  for (int i = 1; i <= total; i++) done += is_done(pack, i);
-  char s[24], *o = s;
-  if (done >= 10) *o++ = '0' + done / 10;
-  *o++ = '0' + done % 10;
-  *o++ = '/';
-  *o++ = '0' + total / 10, *o++ = '0' + total % 10;
-  strcpy(o, T(" COMPLETE"));
-  fill(0, 212 - 3 * NP_TEXT_EXTRA, 320, 8 + 6 * NP_TEXT_EXTRA, screen_bg); /* (and accents, Chinese) */
-#if NP_TEXT_EXTRA
-  text(s, (160 - text_w(s)) / 2, 212);
-#else
-  int len = (int)strlen(s);
-  text(s, (160 - len * 5) / 2, 212);
-#endif
+static void hint_tick(void) {
+  if (!queued || view_message_up()) return;
+  int h = queue[0];
+  for (int i = 1; i < queued; i++) queue[i - 1] = queue[i];
+  queued--;
+  hint_mark(h);
+  save_write();
+  view_message(HINTS[h], 150);
+}
+
+/* ------------------------------------------------------------ screens */
+static void screen(void) { fill(0, 0, 320, 240, color(0)); }
+
+static void logo(int y) {
+  static const char word[] = "WARP";
+  text_size(5);
+  paper_clear = true;
+  int x = (320 - 8 * 30 - 20) / 2;
+  for (int i = 0; i < 4; i++) {
+    char c[2] = {word[i], 0};
+    ink = color(8);
+    text(c, x + 3, y + 3);
+    ink = color(i & 1 ? 10 : 9);
+    x = text(c, x, y);
+  }
+  x += 20;
+  ink = color(8);
+  text("LAB", x + 3, y + 3);
+  ink = color(7);
+  text("LAB", x, y);
+  paper_clear = false;
+  text_size(1);
+}
+
+/* a strip of lab under the logo: panels, the two gates, Pip and an orb */
+static void scene(int y) {
+  for (int i = 0; i < 10; i++) tile_art(ART_PANEL, 80 + i * 16, y + 32, 1);
+  tile_art(ART_PANEL, 64, y, 1), tile_art(ART_PANEL, 64, y + 16, 1), tile_art(ART_PANEL, 64, y + 32, 1);
+  tile_art(ART_PANEL, 240, y, 1), tile_art(ART_PANEL, 240, y + 16, 1), tile_art(ART_PANEL, 240, y + 32, 1);
+  fill(80, y + 17, 3, 14, color(9));
+  fill(237, y + 17, 3, 14, color(10));
+  sprite(SPR_PIP_RUN1, 150, y + 4, 2, false);
+  sprite(SPR_ORB0, 200, y + 12, 1, false);
+  sprite(SPR_CRATE, 110, y + 22, 1, false);
+}
+
+static void selector(int x, int y, int n, bool on, bool done) {
+  fill(x, y - 3, 90, 12, color(0));
+  ink = on ? color(10) : color(3), paper = color(0);
+  x = text("<", x, y);
+  ink = on ? color(7) : color(3);
+  x = number(n, x + 2, y);
+  ink = on ? color(10) : color(3);
+  x = text(">", x + 2, y);
+  if (done) {
+    ink = color(12);
+    text("*", x + 6, y);
+  }
 }
 
 static void help(void);
 static void credits(void);
-
-/* The Prelude chambers (the original's CUSTOM level packs) */
-static void custom_menu(void) {
-  title_art();
-  int redraw = 1;
-  bool armed = false; /* 5 pressed once: the next 5 resets */
-  for (;;) {
-    if (redraw) {
-      item(T("PRELUDE"), 0, true);
-      selector(0x47, 0x42, save.level[1], true, is_done(1, save.level[1]));
-      fill(0x1D * 2, 0x8A - 3 * NP_TEXT_EXTRA, 320 - 0x1D * 2, 8 + 6 * NP_TEXT_EXTRA, screen_bg);
-      text(armed ? T("PRESS 5 AGAIN TO RESET") : T("PRESS 5 TO RESET"), 0x1D, 0x8A);
-      progress_line(1);
-    }
-    redraw = 1;
-    int k = wait_key();
-    bool was = armed;
-    armed = false;
-    if (k == eadk_key_left && save.level[1] > 1) save.level[1]--;
-    else if (k == eadk_key_right && save.level[1] < save.unlocked[1]) save.level[1]++;
-    else if (k == eadk_key_five) {
-      if (!was) armed = true;
-      else {
-        save.unlocked[1] = save.level[1] = 1;
-        memset(save.done[1], 0, sizeof save.done[1]);
-        save_write();
-      }
-    } else if (k == eadk_key_ok || k == eadk_key_exe) {
-      play(1, save.level[1]);
-      return;
-    } else if (k == eadk_key_back) return;
-    else redraw = was;
-  }
-}
+static void play(int series, int n);
 
 static void title(void) {
-  static const char *const items[] = {T("LEVEL "), T("CUSTOM"), T("COLOR"), T("HELP")};
-  int sel = 0;
+  static const char *const items[] = {T("LAB"), T("EXPERT"), T("HELP"), T("CREDITS")};
+  int sel = save.pack;
   for (;;) {
-    flush_keys(); /* keys still down from a chamber or a page are not presses */
-    apply_scheme();
-    title_art();
-    int redraw = 1;
+    flush_keys();
+    screen();
+    logo(22);
+    scene(80);
+    bool redraw = true;
+    const char *note = 0;
     for (;;) {
       if (redraw) {
-        menu_redraw(items, 4, sel);
-        selector(0x47, 0x42, save.level[0], sel == 0, is_done(0, save.level[0]));
-        progress_line(0);
+        for (int i = 0; i < 4; i++) {
+          int y = 148 + i * 18;
+          fill(0, y - 3, 320, 14, color(0));
+          ink = i == sel ? color(7) : color(3), paper = color(0);
+          if (i == sel) fill(92, y + 1, 4, 4, color(9 + (i & 1)));
+          text(items[i], 104, y);
+          if (i < 2) {
+            bool open = i == 0 || (save.flags & 1);
+            if (open) selector(190, y, save.level[i], i == sel, is_done(i, save.level[i]));
+            else {
+              ink = color(4);
+              text(T("LOCKED"), 190, y);
+            }
+          }
+        }
+        fill(0, 222, 320, 14, color(0));
+        ink = note ? color(11) : color(3);
+        if (note) text_mid(note, 226);
+        else {
+          char s[24];
+          int d = done_count(sel == 1 && (save.flags & 1) ? 1 : 0), t = series_rooms(sel == 1 && (save.flags & 1) ? 1 : 0);
+          int k = 0;
+          if (d >= 10) s[k++] = '0' + d / 10;
+          s[k++] = '0' + d % 10, s[k++] = '/';
+          s[k++] = '0' + t / 10, s[k++] = '0' + t % 10, s[k] = 0;
+          int w = text_w(s) + 6 + text_w(T("ROOMS CLEAR"));
+          int x = text(s, (320 - w) / 2, 226);
+          text(T("ROOMS CLEAR"), x + 6, 226);
+        }
       }
-      redraw = 1;
+      redraw = true;
+      note = 0;
       int k = wait_key();
       if (k == eadk_key_up && sel > 0) sel--;
       else if (k == eadk_key_down && sel < 3) sel++;
-      else if (k == eadk_key_left && sel == 0 && save.level[0] > 1) save.level[0]--;
-      else if (k == eadk_key_right && sel == 0 && save.level[0] < save.unlocked[0]) save.level[0]++;
-      else if (k == eadk_key_ok || k == eadk_key_exe) {
-        if (sel == 0) play(0, save.level[0]);
-        else if (sel == 1) custom_menu();
-        else if (sel == 2) {
-          save.scheme = (save.scheme + 1) & 3;
-          save_write();
-          sel = 0; /* like the original: back on LEVEL */
-        } else help();
-        break;
-      } else if (k == eadk_key_two) {
-        credits();
+      else if (k == eadk_key_left && sel < 2 && save.level[sel] > 1) save.level[sel]--;
+      else if (k == eadk_key_right && sel < 2 && save.level[sel] < save.unlocked[sel]) save.level[sel]++;
+      else if (is_ok(k)) {
+        if (sel == 1 && !(save.flags & 1)) {
+          note = T("FINISH ALL THE LAB ROOMS FIRST");
+          continue;
+        }
+        if (sel < 2) play(sel, save.level[sel]);
+        else if (sel == 2) help();
+        else credits();
         break;
       } else if (k == eadk_key_back) np_jump(leave);
-      else redraw = 0;
+      else redraw = false;
     }
   }
 }
 
-/* ------------------------------------------------------------ pause */
-/* EB1D: the title art with RETURN / RESTART / QUIT.
- * Returns 0 to go on, 1 to quit to the title, 2 to restart the level. */
-int pause_menu(void) {
-  static const char *const items[] = {T("RETURN"), T("RESTART"), T("QUIT")};
-  save_write();
-  flush_keys(); /* the Back that opened the menu is not a press in it */
-  title_art();
-  int sel = 0, r;
+static bool page_wait(void) {
   for (;;) {
-    menu_redraw(items, 3, sel);
     int k = wait_key();
-    if (k == eadk_key_up && sel > 0) sel--;
-    else if (k == eadk_key_down && sel < 2) sel++;
-    else if (k == eadk_key_ok || k == eadk_key_exe) {
-      r = sel == 0 ? 0 : sel == 1 ? 2 : 1;
-      break;
-    } else if (k == eadk_key_back) {
-      r = 0;
-      break;
-    }
-  }
-  if (r != 1) release_keys();
-  return r;
-}
-
-/* ------------------------------------------------------------ help and credits */
-static void page_wait(void) {
-  for (;;) {
-    int k = wait_key();
-    if (k == eadk_key_ok || k == eadk_key_exe || k == eadk_key_back || k == eadk_key_right || k == eadk_key_left) return;
+    if (k == eadk_key_back) return false;
+    if (is_ok(k) || k == eadk_key_right) return true;
   }
 }
 
-static void key_box(int x, int y, char c, u16 col) {
-  fill(x, y, 22, 22, pal[C_EDGE]);
-  fill(x + 2, y + 2, 18, 18, col);
-  u16 f = text_fg, b = text_bg;
-  text_bg = col;
-  glyph(c, (x + 7) / 2, y + 7);
-  text_fg = f, text_bg = b;
-}
-
-static void icon_field(int x2, int y, u16 c) {
-  u16 k = pal[C_FIELD];
-  pal[C_FIELD] = c;
-  spr(SPT(0xE71D), x2, y);
-  pal[C_FIELD] = k;
-}
-
-/* a sprite at twice the size (the 4x4 cube reads better as an icon) */
-static void spr_x2(const u8 *s, int x, int y) {
-  for (int j = 0; j < s[0]; j++)
-    for (int i = 0; i < s[1] * 2; i++) {
-      u8 v = s[2 + j * s[1] + i / 2];
-      fill(x + 2 * i, y + 2 * j, 2, 2, pal[i & 1 ? v & 15 : v >> 4]);
-    }
+static void key_cap(int x, int y, const char *c, u16 col) {
+  fill(x, y, 20, 20, color(5));
+  fill(x + 1, y + 1, 18, 18, col);
+  ink = color(8), paper = col;
+  text(c, x + 7, y + 6);
 }
 
 static bool help_page(int page) {
-  cls();
+  screen();
+  ink = color(7), paper = color(0);
   if (page == 0) {
-    static const char *const keys[][2] = {{T("LEFT RIGHT"), T("RUN")}, {T("UP"), T("JUMP")},
-                                               {T("OK"), T("PICK UP / DROP")}, {T("BACK"), T("PAUSE")}};
-    text(T("HOW TO PLAY"), 5, 10);
+    text(T("HOW TO PLAY"), 12, 12);
+    static const char *const rows[][2] = {{T("LEFT RIGHT"), T("RUN")}, {T("UP"), T("JUMP")},
+                                           {T("OK"), T("PICK UP / DROP A CRATE")}, {T("BACK"), T("PAUSE")}};
     for (int i = 0; i < 4; i++) {
-      text(keys[i][0], 10, 30 + 16 * i);
-      text(keys[i][1], NP_TEXT_EXTRA ? 80 : 75, 30 + 16 * i); /* (room for longer keys' names) */
+      ink = color(10);
+      text(rows[i][0], 20, 36 + 16 * i);
+      ink = color(7);
+      text(rows[i][1], 110, 36 + 16 * i);
     }
     static const char pad[] = "789456123";
-    for (int i = 0; i < 9; i++) key_box(20 + (i % 3) * 26, 104 + (i / 3) * 26, pad[i], i == 4 ? pal[C_ORANGE] : pal[C_BLUE]);
-    text(T("1-9 SHOOT A"), 55, 108);
-    text(T("PORTAL THAT WAY"), 55, 124);
-    text(T("5 SWITCHES THE"), 55, 148);
-    text(T("NEXT COLOR:"), 55, 164);
-    spr(SPT(0xE1FF), 0x71, 164);
-    text(T("REACH THE RIGHT SIDE"), 5, 196);
-    text(T("OF EACH TEST CHAMBER."), 5, 212);
+    for (int i = 0; i < 9; i++) {
+      char c[2] = {pad[i], 0};
+      key_cap(24 + (i % 3) * 24, 112 + (i / 3) * 24, c, i == 4 ? color(11) : color(i & 1 ? 10 : 9));
+    }
+    ink = color(7), paper = color(0);
+    text(T("1-9: OPEN A GATE"), 110, 118);
+    text(T("THAT WAY"), 110, 132);
+    text(T("5: SWAP ROSE / MINT"), 110, 156);
+    text(T("WHAT GOES IN ONE GATE"), 110, 174);
+    text(T("COMES OUT OF THE OTHER,"), 110, 188);
+    text(T("AS FAST AS IT WENT IN."), 110, 202);
   } else {
-    text(T("TEST ELEMENTS"), 5, 10);
-    static const char *const lines[][2] = {
-      {T("BUTTON: STAND OR PUT A"), T("CUBE ON IT TO OPEN DOORS")},
-      {T("CUBE: OK PICKS IT UP"), T("AND DROPS IT")},
-      {T("FIZZLER: NO PORTALS"), T("OR CUBES GET THROUGH")},
-      {T("ELECTRIC FIELDS AND"), T("SPIKES ARE DEADLY")},
-      {T("GLASS: BEAMS GO THROUGH,"), T("YOU DO NOT")},
-      {T("PELLET: DEADLY. GUIDE IT"), T("INTO A RECEIVER")},
+    text(T("THE LAB"), 12, 12);
+    static const u8 arts[] = {ART_PANEL, ART_METAL, ART_BUTTON1, ART_SCRUB0, ART_ZAP0, ART_RECV_ON, ART_EXIT};
+    static const char *const lines[] = {
+      T("WHITE PANELS TAKE GATES"), T("METAL AND GLASS DO NOT"), T("BUTTONS OPEN THEIR DOORS"),
+      T("VIOLET: ERASES GATES, CRATES"), T("YELLOW, SPIKES, ORBS: DEADLY"), T("ORB IN A RECEIVER: DOORS OPEN"),
+      T("THE EXIT ENDS THE ROOM"),
     };
-    for (int i = 0; i < 6; i++) {
-      int y = 32 + i * 32;
-      switch (i) {
-      case 0: spr(SPT(0xE6D9), 2, y + 6); break;
-      case 1: spr_x2(SPT(0xE74B), 8, y + 2); break;
-      case 2: icon_field(2, y + 5, pal[C_FIZZ]); break;
-      case 3: spr(tile_sprite(0x0F), 2, y + 6), icon_field(2, y, pal[C_ELEC]); break;
-      case 4: spr(tile_sprite(0x17), 2, y); break;
-      default: spr(SPT(0xE741), 2, y + 4), spr(tile_sprite(0x15), 6, y);
-      }
-      text(lines[i][0], 17, y);
-      text(lines[i][1], 17, y + 12);
+    for (int i = 0; i < 7; i++) {
+      int y = 34 + i * 26;
+      tile_art(arts[i], 16, y, 1);
+      if (i == 2) sprite(SPR_CRATE, 36, y + 6, 1, false);
+      ink = color(7);
+      text(lines[i], 60, y + 5);
     }
   }
-  text(T("OK >"), 0x8A, 226);
-  for (;;) {
-    int k = wait_key();
-    if (k == eadk_key_back) return false;
-    if (k == eadk_key_ok || k == eadk_key_exe || k == eadk_key_right) return true;
-  }
+  ink = color(3);
+  text(T("OK >"), 276, 226);
+  return page_wait();
 }
 
 static void help(void) {
   for (int p = 0; p < 2; p++)
     if (!help_page(p)) return;
-  credits();
 }
 
 static void credits(void) {
+  screen();
+  logo(20);
+  ink = color(7), paper = color(0);
   static const char *const lines[] = {
-    T("CREDITS"),
-    T(" INSPIRED BY PORTAL RETURNS"),
-    T(" BY MATEOCONLECHUGA. PORTAL"),
-    T(" IS BY VALVE. NOT AFFILIATED"),
-    T(" WITH EITHER OF THEM."),
-    T(" CHAMBERS: MATEOCONLECHUGA"),
-    T(" SPRITES AND TILES: CKH4"),
-    T(" PRELUDE: UNICORN, AFTER"),
-    T(" BUILDERBOY'S PORTAL PRELUDE"),
-    T(" ORIGINAL TESTERS: UNICORN,"),
-    " JAMESV, RALPHW74, 123OUTERME",
-    "",
-    T(" MADE BY MASON CHEN"),
-    T(" AS PART OF NUMPLAY."),
+    T("ROOMS, ART AND CODE: CALCADE (2026)"),
+    T("ORIGINAL GAME BY MASON CHEN"),
+    T("FREE SOFTWARE: GNU GPL V3"),
   };
-  cls();
-  for (unsigned i = 0; i < sizeof lines / sizeof *lines; i++) text(lines[i], 5, 8 + 16 * i);
+  for (int i = 0; i < 3; i++) text_mid(lines[i], 120 + 20 * i);
+  ink = color(3);
+  text_mid(T("PIP SAYS HI."), 200);
   page_wait();
 }
 
-/* ------------------------------------------------------------ hints */
-/* A small sign over the top row of the chamber, shown once per save.
- * While it is up, the game draws around it (sign_clip). */
-static int hint_pending[8], nhints;
-static const char *const HINTS[] = {
-  T("ARROWS: RUN, JUMP. EXIT RIGHT"), T("1-9: SHOOT A PORTAL THAT WAY"), T("5: SWITCH THE NEXT COLOR"),
-  T("OK: GRAB / DROP A CUBE"), T("BUTTONS OPEN DOORS WHILE HELD"), T("BLUE FIELDS ERASE PORTALS"),
-  T("RED FIELDS KILL: STAY CLEAR"), T("GUIDE PELLETS INTO RECEIVERS"), T("SPIKES KILL: STAY CLEAR"),
-};
+/* ------------------------------------------------------------ pause */
+static int pause_menu(void) { /* 0 go on, 1 restart, 2 quit */
+  static const char *const items[] = {T("RESUME"), T("RESTART ROOM"), T("BACK TO THE MENU")};
+  save_write();
+  flush_keys();
+  int sel = 0;
+  for (;;) {
+    fill(70, 80, 180, 80, color(8));
+    fill(72, 82, 176, 76, color(5));
+    for (int i = 0; i < 3; i++) {
+      ink = i == sel ? color(7) : color(3), paper = color(5);
+      if (i == sel) fill(82, 98 + i * 20, 4, 4, color(9));
+      text(items[i], 94, 96 + i * 20);
+    }
+    int k = wait_key();
+    if (k == eadk_key_up && sel > 0) sel--;
+    else if (k == eadk_key_down && sel < 2) sel++;
+    else if (is_ok(k)) return sel;
+    else if (k == eadk_key_back) return 0;
+  }
+}
 
-/* hints 0-7 in save.hints, hint 8 in bit 1 of save.flags */
-static bool hint_seen(int h) { return h < 8 ? save.hints >> h & 1 : save.flags >> 1 & 1; }
-static void hint_mark(int h) {
-  if (h < 8) save.hints |= 1 << h;
-  else save.flags |= 2;
+/* ------------------------------------------------------------ playing */
+static void card(const char *top, const char *mid) {
+  fill(40, 92, 240, 56, color(8));
+  fill(42, 94, 236, 52, color(5));
+  ink = color(10), paper = color(5);
+  text_mid(top, 104);
+  ink = color(7);
+  text_mid(mid, 126);
+}
+
+static void ending(void) {
+  screen();
+  logo(30);
+  scene(90);
+  ink = color(7), paper = color(0);
+  text_mid(T("EVERY LAB ROOM IS CLEAR!"), 160);
+  ink = color(10);
+  text_mid(T("THE EXPERT ROOMS ARE OPEN."), 184);
+  page_wait();
 }
 
-void hint(int h) {
-  if (hint_seen(h)) return;
-  for (int i = 0; i < nhints; i++)
-    if (hint_pending[i] == h) return;
-  if (nhints < 8) hint_pending[nhints++] = h;
+static u32 read_inputs(void) {
+  u32 in = 0;
+  if (down(eadk_key_left)) in |= IN_LEFT;
+  if (down(eadk_key_right)) in |= IN_RIGHT;
+  if (down(eadk_key_up)) in |= IN_UP;
+  if (down(eadk_key_ok) || down(eadk_key_exe)) in |= IN_GRAB;
+  if (down(eadk_key_five)) in |= IN_TOGGLE;
+  static const u8 pad[10] = {0, eadk_key_one, eadk_key_two, eadk_key_three, eadk_key_four, 0,
+                             eadk_key_six, eadk_key_seven, eadk_key_eight, eadk_key_nine};
+  for (int d = 1; d <= 9; d++)
+    if (d != 5 && down(pad[d])) in |= IN_FIRE(d);
+  return in;
 }
 
-static int hint_t, hint_now = -1, hint_gap, sign_x, sign_w;
-
-static void sign_draw(void) {
-  sign_clip(0, 0);
-  u16 ink = save.scheme ? pal[C_BG] : 0xFFFF, paper = save.scheme ? 0xFFFF : 0x0000;
-  fill(sign_x, 1, sign_w, 14, paper);
-  u16 f = text_fg, b = text_bg;
-  text_fg = ink, text_bg = paper;
-  text(HINTS[hint_now], sign_x / 2 + 3, 4);
-  text_fg = f, text_bg = b;
-  sign_clip(sign_x, sign_x + sign_w);
+static void wait_release(void) {
+  for (;;) {
+    scan();
+    if (!down(eadk_key_ok) && !down(eadk_key_exe) && !down(eadk_key_back)) return;
+    eadk_timing_msleep(5);
+  }
 }
 
-/* Where the sign hides the least: over plain wall rather than open air,
- * doors, droppers or fields, as near the middle as possible. */
-static int sign_place(int w) {
-  int best = 0, best_cost = 1 << 30;
-  for (int x = 0; x + w <= 320; x += 2) {
-    int cost = 0;
-    for (int c = x / 16; c <= (x + w - 1) / 16; c++) {
-      int t = top_tile(c);
-      cost += t >= 2 && t < 0x0F ? 0 : t == 1 ? 40 : 60; /* wall, air, the rest */
+static void play(int series, int n) {
+  for (;;) {
+    save.pack = series, save.level[series] = n;
+    if (n > save.unlocked[series]) save.unlocked[series] = n;
+    save_write();
+    sim_load(series, n);
+    view_room(series, n);
+    hints_for_room();
+    wait_release();
+    uint64_t next = eadk_timing_millis();
+    for (;;) {
+      scan();
+      if (down(eadk_key_back)) {
+        int r = pause_menu();
+        if (r == 2) return;
+        if (r == 1) sim_load(series, n);
+        view_room(series, n);
+        wait_release();
+        next = eadk_timing_millis();
+        continue;
+      }
+      int was_dead = S.dead;
+      sim_step(read_inputs());
+      if (was_dead == 1) view_room(series, n); /* the room started again */
+      else view_frame();
+      hint_tick();
+      if (S.won) break;
+      next += 25;
+      uint64_t now = eadk_timing_millis();
+      if (next > now) eadk_timing_msleep((uint32_t)(next - now));
+      else next = now;
     }
-    cost = cost * 64 + (x + w / 2 > 160 ? x + w / 2 - 160 : 160 - x - w / 2);
-    if (cost < best_cost) best_cost = cost, best = x;
+    /* the room is done */
+    save.done[series][(n - 1) >> 3] |= 1 << ((n - 1) & 7);
+    bool last = n >= series_rooms(series);
+    if (!last && n + 1 > save.unlocked[series]) save.unlocked[series] = n + 1;
+    bool was_open = save.flags & 1;
+    if (series == 0 && done_count(0) == series_rooms(0)) save.flags |= 1;
+    bool finished_lab = !was_open && (save.flags & 1);
+    save_write();
+    card(T("ROOM CLEAR"), room_name(series, n));
+    eadk_timing_msleep(1100);
+    if (finished_lab) {
+      ending();
+      return;
+    }
+    if (last) return;
+    n++;
   }
-  return best;
 }
 
-/* called by the game every frame: draws / removes the sign */
-bool hint_tick(void (*restore)(void)) {
-  if (hint_now >= 0) {
-    if (--hint_t > 0) return true;
-    hint_now = -1;
-    hint_gap = 24; /* half a second between two signs */
-    sign_clip(0, 0);
-    restore();
-    return false;
-  }
-  if (hint_gap > 0) hint_gap--;
-  if (!nhints || hint_gap) return false;
-  hint_now = hint_pending[0];
-  for (int i = 1; i < nhints; i++) hint_pending[i - 1] = hint_pending[i];
-  nhints--;
-  hint_mark(hint_now);
+/* ------------------------------------------------------------ main */
+static int quit(void) {
   save_write();
-  hint_t = 47 * 4;
-#if NP_TEXT_EXTRA
-  sign_w = text_w(HINTS[hint_now]) * 2 + 8;
-#else
-  sign_w = (int)strlen(HINTS[hint_now]) * 10 + 8;
-#endif
-  sign_x = sign_place(sign_w);
-  sign_draw();
-  return true;
+  return np_app_end();
 }
 
-void hint_hide(void) { sign_clip(0, 0); }             /* before the pause menu */
-void hint_show(void) { if (hint_now >= 0) sign_draw(); } /* after the chamber is redrawn */
-void hints_clear(void) { nhints = 0, hint_now = -1, hint_gap = 0, sign_clip(0, 0); }
-
-/* ------------------------------------------------------------ main */
 int main(void) {
   np_app_begin();
   if (np_save_jump(leave)) return quit();
-  assets_init();
   save_load();
 #ifdef CHEAT
-  save.unlocked[0] = save.level[0] = 40, save.unlocked[1] = 38;
+  save.unlocked[0] = series_rooms(0), save.unlocked[1] = series_rooms(1), save.flags |= 1;
 #endif
   title();
   return quit();
diff --git a/games/portal/src/rooms.h b/games/portal/src/rooms.h
new file mode 100644
index 0000000..64d32c0
--- /dev/null
+++ b/games/portal/src/rooms.h
@@ -0,0 +1,231 @@
+/* Generated by tools/conformite/warplab_rooms.py from games/portal/rooms: do not edit. */
+#define ROOM_BYTES 141
+static const u8 ROOM_DATA[4512] = {
+  34,34,34,34,34,34,34,34,34,34,2,0,0,0,0,0,0,0,0,32,2,0,0,0,
+  0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,
+  0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,
+  0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,
+  0,0,0,32,2,0,0,0,0,32,2,0,0,43,2,0,0,32,2,32,2,0,0,43,
+  34,34,34,34,162,42,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,
+  34,34,17,17,17,33,34,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,
+  0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,
+  0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,
+  0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,1,0,0,0,
+  32,2,0,0,0,0,1,0,0,0,43,2,0,0,0,0,1,0,0,0,43,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,34,34,34,
+  34,34,34,34,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,
+  2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,
+  0,0,0,0,0,32,2,0,0,0,32,0,0,0,0,32,2,0,0,0,32,0,0,0,
+  0,32,2,0,0,0,32,0,0,0,0,32,2,0,0,0,32,0,0,0,0,32,2,0,
+  0,0,48,0,0,0,0,43,1,0,0,0,48,0,0,1,0,43,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,34,34,34,34,34,34,
+  34,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,
+  0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,
+  0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,
+  0,0,0,3,0,0,0,0,32,2,0,0,0,3,0,0,0,0,32,2,0,0,0,3,
+  0,0,0,0,43,2,0,0,0,3,0,16,0,0,43,34,17,17,17,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,223,34,34,34,34,34,34,34,34,34,34,2,0,
+  0,0,0,0,0,0,0,32,178,0,0,0,0,0,0,0,0,32,178,0,0,0,0,0,
+  0,0,0,32,34,34,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,
+  2,0,0,0,34,2,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,
+  0,0,0,0,0,32,2,0,17,0,0,0,0,0,0,32,2,0,17,0,0,0,0,0,
+  0,32,2,0,17,0,0,0,0,0,0,32,34,34,34,34,34,34,34,34,18,34,34,34,
+  34,34,34,34,34,34,34,34,108,34,34,34,34,34,34,34,34,34,34,2,0,0,0,0,
+  0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,48,51,3,0,0,0,0,0,
+  32,2,0,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,32,1,0,0,
+  0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,
+  0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,43,2,
+  0,0,0,0,0,0,0,0,43,18,17,17,161,170,170,34,34,34,34,34,34,34,34,34,
+  34,34,34,34,34,45,34,34,34,34,34,34,34,34,34,34,2,0,0,0,0,0,0,0,
+  0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,
+  0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,
+  0,0,0,32,2,0,15,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,
+  2,0,0,0,0,0,0,64,0,32,2,0,0,0,0,0,0,64,0,43,2,0,0,0,
+  96,0,0,64,0,43,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,
+  34,34,222,34,34,34,34,34,34,34,34,34,34,2,0,0,0,0,0,0,0,0,32,2,
+  0,0,0,0,16,17,17,1,32,2,0,0,0,0,3,0,0,48,32,2,0,0,0,0,
+  3,0,0,48,32,2,0,0,0,0,3,6,0,48,32,2,0,0,0,0,34,34,34,34,
+  32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,
+  0,0,0,0,64,0,32,2,0,15,0,0,0,0,64,0,43,1,0,0,0,0,0,0,
+  64,0,43,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,
+  34,34,34,34,34,34,34,34,34,34,2,0,0,0,0,0,0,0,0,32,2,0,0,0,
+  0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,
+  0,32,2,0,0,128,0,0,32,0,0,32,2,0,0,128,0,0,48,0,0,32,2,0,
+  0,128,0,0,48,0,0,32,2,0,0,128,0,0,48,0,0,32,2,0,0,128,0,0,
+  48,0,0,16,2,0,0,128,0,0,48,0,0,27,2,0,0,128,16,0,48,0,0,27,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,
+  34,34,34,17,17,17,33,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,
+  0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,
+  0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,128,
+  0,0,0,0,32,2,0,15,0,128,0,0,0,0,32,2,0,0,0,128,0,0,64,0,
+  32,2,0,0,0,128,0,0,64,0,43,1,0,0,0,128,0,6,64,0,43,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,34,34,34,
+  34,34,34,34,2,0,0,0,144,0,0,0,0,32,2,0,0,0,144,0,0,0,0,32,
+  2,0,0,0,144,0,0,0,0,32,2,0,0,0,144,0,0,0,0,32,2,0,0,0,
+  144,0,0,0,0,32,2,0,0,0,144,0,0,0,0,32,2,0,0,0,144,0,0,0,
+  0,32,2,0,0,0,144,0,0,0,0,32,2,0,0,0,144,0,0,0,0,32,2,0,
+  0,0,144,0,0,0,0,43,1,0,0,0,144,0,0,0,0,33,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,34,34,34,34,34,34,
+  34,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,
+  0,12,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,
+  0,0,32,14,0,0,0,0,0,0,0,0,16,2,0,0,0,0,0,0,0,0,32,2,
+  0,0,0,0,0,0,0,0,32,2,64,0,0,0,0,0,0,0,32,178,64,0,0,0,
+  0,0,0,0,32,178,64,0,0,0,0,0,0,0,32,34,34,34,34,33,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,236,34,34,34,34,34,34,44,34,34,34,2,0,
+  0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,
+  0,0,0,32,2,0,0,0,0,0,0,0,64,32,2,0,0,0,0,0,0,0,64,32,
+  2,0,0,0,0,0,0,0,64,43,2,0,0,0,0,0,0,0,64,43,34,34,34,51,
+  51,51,48,51,51,35,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,
+  0,32,14,0,0,0,0,0,0,0,0,16,34,34,34,34,34,34,33,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,143,34,34,34,34,34,34,34,34,34,34,2,0,0,0,0,
+  0,0,0,0,32,2,192,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,
+  32,1,0,0,0,0,0,0,0,0,224,2,0,0,0,0,0,0,0,0,32,2,0,0,
+  0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,15,0,0,0,
+  0,0,32,2,0,0,0,0,0,0,0,4,32,2,0,0,0,0,0,0,0,4,43,2,
+  0,0,0,6,0,0,0,4,43,34,18,34,34,34,34,34,34,34,34,34,34,34,34,34,
+  34,34,34,34,34,222,34,34,34,34,34,34,34,34,34,34,2,0,0,0,0,0,0,0,
+  0,32,2,0,0,17,17,1,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,
+  0,0,0,0,0,0,0,43,2,0,0,0,0,0,0,0,0,43,50,51,51,51,51,51,
+  51,51,51,35,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,
+  2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,
+  0,0,0,0,0,32,18,17,17,17,17,17,17,17,17,33,34,34,34,34,34,34,34,34,
+  34,34,222,34,34,34,34,34,34,34,34,34,34,2,0,0,3,0,0,48,0,0,16,2,
+  0,0,3,0,0,48,0,0,16,2,0,0,3,0,0,48,0,0,16,2,0,0,3,0,
+  0,48,0,0,32,2,0,0,3,0,0,48,0,0,32,2,0,0,3,0,0,48,0,0,
+  32,2,0,0,3,0,0,48,0,0,32,2,0,0,3,0,0,48,0,0,32,2,0,0,
+  3,0,0,48,0,0,32,2,0,0,3,0,0,48,0,0,43,1,0,0,3,0,16,48,
+  0,0,43,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,
+  34,34,34,34,34,34,34,34,34,34,2,0,0,0,0,0,0,0,0,32,2,0,0,0,
+  0,0,0,0,0,32,2,240,0,0,0,32,34,34,34,34,1,0,0,0,0,48,0,0,
+  0,16,1,0,0,0,0,48,0,0,0,22,34,34,34,34,2,32,34,34,34,34,2,0,
+  0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,
+  0,0,64,32,2,0,0,0,0,0,0,0,64,43,2,0,0,0,0,0,0,0,64,43,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,102,34,34,34,
+  34,34,34,34,34,34,34,2,0,0,0,0,0,0,0,0,32,2,0,0,13,0,0,0,
+  0,0,32,2,0,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,224,2,
+  0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,
+  0,0,0,0,32,2,0,0,0,0,80,0,0,0,32,2,0,0,0,0,80,0,0,4,
+  32,2,0,0,0,0,80,240,0,4,43,2,0,0,0,0,80,0,6,4,43,34,34,34,
+  33,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,1,0,0,32,34,34,34,34,34,34,1,0,176,32,
+  34,34,34,34,34,34,1,0,176,32,2,0,0,0,0,0,50,51,51,35,2,0,0,0,
+  0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,16,2,0,0,0,0,0,0,0,
+  0,16,2,0,0,0,0,0,0,48,51,35,2,0,0,0,0,0,0,0,0,32,2,0,
+  0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,32,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,34,34,34,17,17,17,
+  33,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,
+  0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,
+  0,0,32,2,0,0,0,0,0,0,0,176,32,2,0,0,0,0,0,0,0,176,32,18,
+  17,17,1,0,0,0,34,34,34,146,153,153,153,153,153,153,153,153,41,146,153,153,153,153,
+  153,153,153,153,41,146,153,153,153,153,153,153,153,153,41,34,34,34,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,142,34,34,194,34,34,34,34,44,34,34,2,0,
+  0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,14,0,0,0,0,0,
+  0,0,0,16,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,
+  2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,
+  0,0,0,0,0,32,2,0,0,0,0,0,0,0,64,32,2,0,0,0,0,0,0,0,
+  64,43,2,0,0,0,0,0,0,0,64,43,34,34,18,34,34,34,34,33,34,34,34,34,
+  34,34,34,34,34,34,34,34,222,34,34,34,34,34,34,34,34,34,34,2,0,0,0,0,
+  2,0,0,0,32,2,0,0,0,0,2,0,0,0,32,2,0,0,0,0,2,0,0,0,
+  32,2,0,0,0,0,2,0,0,0,32,2,0,0,0,0,2,0,0,0,32,2,0,0,
+  0,0,2,0,0,0,32,2,0,0,0,0,2,0,0,0,32,2,0,0,0,0,2,0,
+  0,0,32,2,0,0,0,0,2,0,0,0,32,2,0,0,0,0,4,0,0,0,27,1,
+  0,0,6,0,4,0,0,0,27,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,
+  34,34,34,34,34,222,18,34,34,34,34,34,34,34,34,34,1,0,0,0,0,0,0,0,
+  0,32,1,0,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,32,1,0,
+  0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,32,1,0,0,0,0,0,
+  0,0,0,32,1,0,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,32,
+  1,0,0,0,0,0,0,0,176,32,1,0,0,0,0,0,0,0,176,32,2,0,0,0,
+  0,0,0,34,34,34,18,162,170,170,170,170,170,34,34,34,34,34,34,34,34,34,34,34,
+  34,34,222,18,34,34,34,34,34,34,34,34,34,1,0,0,0,0,0,0,0,0,32,1,
+  0,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,32,1,0,0,0,0,
+  0,0,0,0,32,1,0,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,
+  32,1,240,0,0,0,0,0,0,64,32,1,0,0,0,0,0,0,96,64,43,1,0,0,
+  0,0,0,34,34,34,43,1,0,0,0,0,0,34,34,34,34,2,0,0,0,0,0,34,
+  34,34,34,18,34,170,170,170,170,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,
+  34,34,34,34,34,46,34,34,34,34,2,0,0,0,0,0,0,0,0,32,2,0,0,0,
+  0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,12,0,0,0,0,0,0,0,
+  0,16,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,
+  0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,
+  0,64,0,32,2,0,0,0,0,0,0,64,0,43,2,0,0,0,0,0,0,64,0,43,
+  34,34,34,34,34,33,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,
+  34,34,34,34,34,34,34,2,0,0,0,0,32,0,0,0,32,2,0,0,0,0,32,0,
+  0,0,32,2,0,0,0,0,32,0,0,0,32,2,0,0,0,0,32,0,0,0,32,2,
+  0,0,0,0,32,0,0,0,32,2,0,0,0,0,32,0,0,0,32,2,0,0,0,0,
+  32,0,0,0,32,2,240,0,0,0,32,0,0,0,32,2,0,0,0,0,32,0,0,0,
+  32,2,0,0,0,0,64,0,0,0,27,1,0,0,6,96,64,0,0,0,27,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,2,240,0,0,0,0,0,0,0,32,2,0,
+  0,0,0,0,0,0,0,43,2,0,0,0,170,0,0,0,0,235,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,34,34,34,34,34,34,34,18,17,
+  33,34,34,34,34,34,34,34,0,0,32,34,34,34,34,34,34,34,0,176,32,34,34,34,
+  34,34,34,34,0,176,32,2,0,0,0,0,0,0,48,51,35,2,0,0,0,0,0,0,
+  0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,
+  0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,
+  0,0,0,0,32,2,0,0,144,153,0,0,0,0,32,18,17,17,33,34,17,17,17,17,
+  33,34,34,34,34,34,34,34,34,34,34,222,18,34,34,34,34,34,34,34,34,34,2,0,
+  0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,
+  0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,176,0,32,
+  2,0,0,0,0,0,0,176,0,32,2,0,0,0,0,34,34,34,34,34,2,0,0,0,
+  0,34,34,34,34,34,2,0,0,0,0,34,34,34,34,34,2,0,0,0,0,34,34,34,
+  34,34,2,0,0,0,0,34,34,34,34,34,18,34,34,18,34,34,34,34,34,34,34,34,
+  34,34,34,34,34,34,34,34,222,34,34,194,34,34,44,34,194,34,34,2,0,0,0,0,
+  0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,
+  32,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,0,0,32,1,0,0,
+  0,0,0,0,0,0,224,2,0,0,0,0,0,0,0,0,32,2,0,0,0,0,0,0,
+  0,0,32,2,0,0,0,0,0,0,0,64,32,2,0,0,0,0,0,0,0,64,43,2,
+  0,0,0,0,0,0,0,64,43,34,34,18,34,34,33,34,18,34,34,34,34,34,34,34,
+  34,34,34,34,34,222,34,34,34,34,34,34,34,34,34,34,2,0,144,0,0,144,0,0,
+  0,32,2,0,144,0,0,144,0,0,0,32,2,0,144,0,0,144,0,0,0,32,2,0,
+  144,0,0,144,0,0,0,32,2,0,144,0,0,144,0,0,0,32,2,0,144,0,0,144,
+  0,0,0,32,2,0,144,0,0,144,0,0,0,32,2,0,144,0,0,144,0,0,0,32,
+  2,0,144,0,0,144,0,0,0,32,2,0,144,0,0,144,0,0,0,16,1,0,144,0,
+  1,144,0,0,0,43,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,
+  34,34,222,18,34,34,34,34,34,34,34,34,34,1,0,0,0,0,0,0,0,0,32,1,
+  0,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,32,1,0,0,0,0,
+  0,0,0,0,32,1,0,0,0,0,0,0,0,0,32,1,0,0,0,0,0,0,0,0,
+  32,1,0,0,0,0,0,0,0,0,32,1,240,0,0,0,0,0,96,0,16,1,0,36,
+  2,0,0,34,34,34,34,1,0,4,11,0,0,34,34,34,34,2,0,4,11,0,0,34,
+  34,34,34,18,34,34,162,170,170,34,34,34,34,34,34,34,34,34,34,34,34,34,34,222,
+};
+static const u16 ROOM_START[2] = {0, 3102};
+static const u8 ROOM_COUNT[2] = {22, 10};
+static const char *const ROOM_NAMES_0[] = {
+  T("FIRST STEPS"),
+  T("WARP TOOL"),
+  T("WINDOW"),
+  T("STEP IN"),
+  T("SPRING"),
+  T("LONG JUMP"),
+  T("THE CRATE"),
+  T("DELIVERY"),
+  T("SCRUBBER"),
+  T("NO CRATES BEYOND"),
+  T("LIVE WIRE"),
+  T("THE ORB"),
+  T("ORB CHANNEL"),
+  T("TWO KEYS"),
+  T("LOOKING UP"),
+  T("RELAY"),
+  T("THROW"),
+  T("TWO COLORS"),
+  T("PERISCOPE"),
+  T("HIGH WIRE"),
+  T("TWIN RECEIVERS"),
+  T("DOOR DASH"),
+};
+static const char *const ROOM_NAMES_1[] = {
+  T("FREE FALL"),
+  T("CANNON"),
+  T("ORBIT"),
+  T("HEAVY DOOR"),
+  T("SHIELD"),
+  T("SKYLIGHT"),
+  T("UP AND OVER"),
+  T("TRIO"),
+  T("ZAP MAZE"),
+  T("FINAL EXAM"),
+};
+static const char *const *const ROOM_NAMES[2] = {ROOM_NAMES_0, ROOM_NAMES_1};
diff --git a/games/portal/src/sim.c b/games/portal/src/sim.c
new file mode 100644
index 0000000..2d20a36
--- /dev/null
+++ b/games/portal/src/sim.c
@@ -0,0 +1,480 @@
+/* Warp Lab: the simulation of a room, one frame at a time (40 a second).
+ * No drawing here: view.c draws from the state, test/host.c replays the
+ * rooms' solutions on a computer. */
+#include "warplab.h"
+#include "rooms.h"
+
+sim_t S;
+
+/* ------------------------------------------------------------ tuning (FX a frame) */
+enum {
+  GRAV = 77,       /* 0.30 px a frame, each frame */
+  MAXV = 1920,     /* 7.5 px a frame, at most, on each axis */
+  JUMP = 1220,     /* 35 px high: 2 cells, not 3 */
+  RUN = 563,       /* 2.2 px a frame */
+  ACC_GROUND = 128,
+  ACC_AIR = 56,
+  FRICTION = 128,
+  SLIDE = 40,      /* faster than running, on the ground: slows down gently */
+  OUT_UP = 940,    /* the least speed out of a gate: up, sideways, down */
+  OUT_SIDE = 400,
+  OUT_DOWN = 256,
+  ORB_V = 512,
+  PIP_W = 10, PIP_H = 14, CRATE_S = 10, ORB_S = 6,
+};
+
+/* ------------------------------------------------------------ rooms */
+int series_rooms(int series) { return ROOM_COUNT[series]; }
+const char *room_name(int series, int n) { return ROOM_NAMES[series][n - 1]; }
+
+/* ------------------------------------------------------------ cells */
+static int at(int cx, int cy) {
+  if (cx < 0 || cx >= RW || cy < 0 || cy >= RH) return T_METAL;
+  return S.map[cy][cx];
+}
+
+bool door_open_at(int cx, int cy) {
+  int t = at(cx, cy);
+  return (t == T_DOOR1 && S.open[0]) || (t == T_DOOR2 && S.open[1]);
+}
+
+bool recv_lit(int cx, int cy) { return S.recv_on[cy][cx >> 3] >> (cx & 7) & 1; }
+
+/* walls for Pip, the crate and the orb */
+bool cell_solid(int cx, int cy) {
+  switch (at(cx, cy)) {
+  case T_PANEL: case T_METAL: case T_GLASS: case T_EMITTER: case T_RECV1: case T_RECV2: return true;
+  case T_DOOR1: case T_DOOR2: return !door_open_at(cx, cy);
+  default: return false;
+  }
+}
+
+static int px(s32 v) { return v >> 8; } /* FX to pixels (rounding down) */
+
+static bool boxes(int ax, int ay, int aw, int ah, int bx, int by, int bw, int bh) {
+  return ax < bx + bw && bx < ax + aw && ay < by + bh && by < ay + ah;
+}
+
+static bool box_hits_cells(int x, int y, int w, int h) {
+  if (x < 0 || y < 0 || x + w > RW * CELL || y + h > RH * CELL) return true;
+  for (int cy = y >> 4; cy <= (y + h - 1) >> 4; cy++)
+    for (int cx = x >> 4; cx <= (x + w - 1) >> 4; cx++)
+      if (cell_solid(cx, cy)) return true;
+  return false;
+}
+
+/* does a box touch a kind of cell (in that cell's part given by inset) */
+static bool box_touches(int x, int y, int w, int h, int kind, int ix, int iy, int iw, int ih) {
+  for (int cy = (y >> 4) - 0; cy <= (y + h - 1) >> 4; cy++)
+    for (int cx = x >> 4; cx <= (x + w - 1) >> 4; cx++)
+      if (at(cx, cy) == kind && boxes(x, y, w, h, cx * 16 + ix, cy * 16 + iy, iw, ih)) return true;
+  return false;
+}
+
+/* ------------------------------------------------------------ bodies */
+enum { WHO_PIP, WHO_CRATE, WHO_ORB };
+
+static bool crate_free(void) { return S.crate_state == 1; }
+
+/* would body b, at pixel (x, y), be in a wall or in the other body? */
+static bool blocked(int who, int x, int y, int w, int h) {
+  if (box_hits_cells(x, y, w, h)) return true;
+  if (who == WHO_PIP && crate_free() &&
+      boxes(x, y, w, h, px(S.crate.x), px(S.crate.y), CRATE_S, CRATE_S))
+    return true;
+  if (who == WHO_CRATE && boxes(x, y, w, h, px(S.pip.x), px(S.pip.y), PIP_W, PIP_H)) return true;
+  if (who == WHO_ORB && (crate_free() || S.crate_state == 2) && /* a held crate shields Pip */
+      boxes(x, y, w, h, px(S.crate.x), px(S.crate.y), CRATE_S, CRATE_S))
+    return true;
+  return false;
+}
+
+static int gate_on(int cx, int cy, int face) {
+  for (int g = 0; g < 2; g++)
+    if (S.gate[g].face == face && S.gate[g].cx == cx && S.gate[g].cy == cy) return g;
+  return -1;
+}
+
+static s32 clampv(s32 v) { return v > MAXV ? MAXV : v < -MAXV ? -MAXV : v; }
+static s32 at_least(s32 v, s32 m) { return v < m ? m : v; }
+
+/* Through gate g (entered moving into its face): b comes out of the other
+ * gate, its speed into the first gate turned out of the second. */
+static bool warp(int who, body_t *b, int g) {
+  gate_t *in = &S.gate[g], *out = &S.gate[g ^ 1];
+  if (out->face < 0) return false;
+  s32 speed, along;
+  bool in_flat = in->face <= F_DOWN; /* a floor or ceiling gate */
+  switch (in->face) {
+  case F_UP: speed = b->vy, along = b->vx; break;
+  case F_DOWN: speed = -b->vy, along = b->vx; break;
+  case F_LEFT: speed = b->vx, along = b->vy; break;
+  default: speed = -b->vx, along = b->vy; break;
+  }
+  if (speed < 0) speed = -speed;
+  bool out_flat = out->face <= F_DOWN;
+  if (in_flat != out_flat) along = 0;
+  int x, y, w = b->w, h = b->h, ox = out->cx * 16, oy = out->cy * 16;
+  s32 vx, vy;
+  switch (out->face) {
+  case F_UP: x = ox + (16 - w) / 2, y = oy - h, vx = along, vy = -at_least(speed, OUT_UP); break;
+  case F_DOWN: x = ox + (16 - w) / 2, y = oy + 16, vx = along, vy = at_least(speed, OUT_DOWN); break;
+  case F_LEFT: x = ox - w, y = oy + 16 - h - (who == WHO_ORB ? 5 : 0), vx = -at_least(speed, OUT_SIDE), vy = along; break;
+  default: x = ox + 16, y = oy + 16 - h - (who == WHO_ORB ? 5 : 0), vx = at_least(speed, OUT_SIDE), vy = along; break;
+  }
+  if (blocked(who, x, y, w, h)) return false;
+  b->x = (s32)x << 8, b->y = (s32)y << 8;
+  b->vx = clampv(vx), b->vy = clampv(vy);
+  if (who == WHO_ORB) S.orb_dir = out->face;
+  S.events |= EV_WARP;
+  return true;
+}
+
+/* the gate a body moving one pixel (dx, dy) runs into, or -1 */
+static int gate_ahead(int x, int y, int w, int h, int dx, int dy) {
+  int cx, cy, face;
+  if (dy) {
+    cy = dy > 0 ? (y + h) >> 4 : (y - 1) >> 4;
+    cx = (x + w / 2) >> 4;
+    face = dy > 0 ? F_UP : F_DOWN;
+    if (x < cx * 16 - 3 || x + w > cx * 16 + 19) return -1;
+  } else {
+    cx = dx > 0 ? (x + w) >> 4 : (x - 1) >> 4;
+    cy = (y + h / 2) >> 4;
+    face = dx > 0 ? F_LEFT : F_RIGHT;
+    if (y < cy * 16 - 3 || y + h > cy * 16 + 19) return -1;
+  }
+  if (at(cx, cy) != T_PANEL) return -1;
+  return gate_on(cx, cy, face);
+}
+
+/* moves b by its speed, a pixel at a time; returns bits 1 (stopped
+ * sideways), 2 (stopped going up or down), 4 (went through a gate) */
+static int move(int who, body_t *b) {
+  int r = 0;
+  for (int axis = 0; axis < 2; axis++) {
+    s32 *p = axis ? &b->y : &b->x, v = axis ? b->vy : b->vx;
+    s32 target = *p + v;
+    int d = v > 0 ? 1 : -1;
+    while (px(*p) != px(target)) {
+      int x = px(b->x), y = px(b->y), nx = x + (axis ? 0 : d), ny = y + (axis ? d : 0);
+      if (!blocked(who, nx, ny, b->w, b->h)) {
+        *p += (s32)d << 8;
+        continue;
+      }
+      int g = gate_ahead(x, y, b->w, b->h, axis ? 0 : d, axis ? d : 0);
+      if (g >= 0 && warp(who, b, g)) return r | 4; /* the rest of this frame's move is lost */
+      r |= axis ? 2 : 1;
+      if (who == WHO_ORB) return r;
+      if (axis) b->vy = 0;
+      else b->vx = 0;
+      target = *p = ((s32)px(*p) << 8) | (d > 0 ? 255 : 0); /* against the wall */
+      break;
+    }
+    if (px(*p) == px(target)) *p = target;
+  }
+  return r;
+}
+
+static bool on_floor(int who, body_t *b) { return blocked(who, px(b->x), px(b->y) + 1, b->w, b->h); }
+
+/* ------------------------------------------------------------ the warp tool */
+static bool beam_stops(int t) {
+  return t == T_PANEL || t == T_METAL || t == T_EMITTER || t == T_RECV1 || t == T_RECV2 || t == T_SCRUB;
+}
+
+static void fire(int d) {
+  static const s8 dx[10] = {0, -1, 0, 1, -1, 0, 1, -1, 0, 1}, dy[10] = {0, 1, 1, 1, 0, 0, 0, -1, -1, -1};
+  int x = px(S.pip.x) + PIP_W / 2, y = px(S.pip.y) + 5, ok = 0, face = -1, cx = 0, cy = 0;
+  S.beam_x0 = x, S.beam_y0 = y;
+  for (int n = 0; n < 600; n++) {
+    for (int axis = 0; axis < 2; axis++) {
+      int s = axis ? dy[d] : dx[d];
+      if (!s) continue;
+      if (axis) y += s;
+      else x += s;
+      cx = x >> 4, cy = y >> 4;
+      int t = at(cx, cy);
+      if (cx < 0 || cy < 0 || cx >= RW || cy >= RH) goto done;
+      bool closed_door = (t == T_DOOR1 || t == T_DOOR2) && !door_open_at(cx, cy);
+      if (beam_stops(t) || closed_door) {
+        if (t == T_PANEL) {
+          face = axis ? (s > 0 ? F_UP : F_DOWN) : (s > 0 ? F_LEFT : F_RIGHT);
+          int ax = cx + (face == F_LEFT ? -1 : face == F_RIGHT ? 1 : 0);
+          int ay = cy + (face == F_UP ? -1 : face == F_DOWN ? 1 : 0);
+          int other = gate_on(cx, cy, face);
+          ok = !cell_solid(ax, ay) && (other < 0 || other == S.sel);
+        }
+        goto done;
+      }
+    }
+  }
+done:
+  S.beam_x1 = x, S.beam_y1 = y;
+  S.beam_t = 6, S.beam_gate = S.sel, S.beam_ok = ok;
+  if (ok) {
+    S.gate[S.sel] = (gate_t){(s8)cx, (s8)cy, (s8)face};
+    S.sel ^= 1;
+    S.events |= EV_GATE;
+  } else S.events |= EV_FIZZLE;
+}
+
+/* ------------------------------------------------------------ the crate */
+static void crate_spawn(void) {
+  S.crate = (body_t){(s32)(S.drop_cx * 16 + 3) << 8, (s32)(S.drop_cy * 16 + 3) << 8, 0, 0, CRATE_S, CRATE_S};
+  if (blocked(WHO_CRATE, px(S.crate.x), px(S.crate.y), CRATE_S, CRATE_S)) {
+    S.crate_state = 3, S.crate_timer = 10; /* Pip is in the way: try again soon */
+    return;
+  }
+  S.crate_state = 1;
+}
+
+static void crate_lost(void) {
+  S.crate_state = 3, S.crate_timer = 40;
+  S.events |= EV_CRATE_LOST;
+}
+
+static void crate_hold_place(void) { /* in front of Pip, a little above the middle */
+  S.crate.x = S.pip.x + ((s32)(S.face_left ? -7 : 7) << 8);
+  S.crate.y = S.pip.y + (2 << 8);
+  S.crate.vx = S.pip.vx, S.crate.vy = S.pip.vy;
+}
+
+static void grab(void) {
+  if (S.crate_state == 2) { /* drop it in front, if there is room */
+    int x = px(S.crate.x), y = px(S.crate.y);
+    if (box_hits_cells(x, y, CRATE_S, CRATE_S) || boxes(x, y, CRATE_S, CRATE_S, px(S.pip.x), px(S.pip.y), PIP_W, PIP_H)) {
+      /* right in front is a wall or Pip itself: try just in front of Pip's edge */
+      x = S.face_left ? px(S.pip.x) - CRATE_S : px(S.pip.x) + PIP_W;
+      y = px(S.pip.y) + PIP_H - CRATE_S;
+      if (box_hits_cells(x, y, CRATE_S, CRATE_S)) return;
+      S.crate.x = (s32)x << 8, S.crate.y = (s32)y << 8;
+    }
+    S.crate_state = 1;
+    S.events |= EV_GRAB;
+    return;
+  }
+  if (S.crate_state == 1 &&
+      boxes(px(S.pip.x) - 8, px(S.pip.y) - 4, PIP_W + 16, PIP_H + 8, px(S.crate.x), px(S.crate.y), CRATE_S, CRATE_S)) {
+    S.crate_state = 2;
+    S.events |= EV_GRAB;
+  }
+}
+
+static void crate_step(void) {
+  if (S.crate_state == 3) {
+    if (--S.crate_timer <= 0) crate_spawn();
+    return;
+  }
+  if (S.crate_state == 2) {
+    crate_hold_place();
+  } else if (S.crate_state == 1) {
+    body_t *c = &S.crate;
+    c->vy = clampv(c->vy + GRAV);
+    bool fl = on_floor(WHO_CRATE, c);
+    if (fl) c->vx = c->vx > FRICTION ? c->vx - FRICTION : c->vx < -FRICTION ? c->vx + FRICTION : 0;
+    move(WHO_CRATE, c);
+  } else return;
+  int x = px(S.crate.x), y = px(S.crate.y);
+  if (box_touches(x, y, CRATE_S, CRATE_S, T_SCRUB, 0, 0, 16, 16)) crate_lost();
+}
+
+/* ------------------------------------------------------------ the orb */
+static const s8 DX[4] = {0, 0, -1, 1}, DY[4] = {-1, 1, 0, 0}; /* by direction (F_UP = moving up) */
+
+/* the emitter keeps sending orbs while a receiver is dark (or always, in a room without any) */
+static bool receivers_left(void) {
+  bool any = false;
+  for (int cy = 0; cy < RH; cy++)
+    for (int cx = 0; cx < RW; cx++)
+      if (at(cx, cy) == T_RECV1 || at(cx, cy) == T_RECV2) {
+        if (!recv_lit(cx, cy)) return true;
+        any = true;
+      }
+  return !any;
+}
+
+static void orb_step(void) {
+  if (S.em_dir < 0) return;
+  if (!S.orb_on) {
+    if (S.orb_timer > 0) {
+      S.orb_timer--;
+      return;
+    }
+    if (!receivers_left()) return;
+    int cx = S.em_cx + DX[S.em_dir], cy = S.em_cy + DY[S.em_dir];
+    S.orb = (body_t){(s32)(cx * 16 + 5) << 8, (s32)(cy * 16 + 5) << 8, 0, 0, ORB_S, ORB_S};
+    S.orb_dir = S.em_dir, S.orb_on = true;
+    return;
+  }
+  body_t *o = &S.orb;
+  for (int step = 0; step < ORB_V / FX; step++) {
+    int d = S.orb_dir, x = px(o->x), y = px(o->y), nx = x + DX[d], ny = y + DY[d];
+    if (!blocked(WHO_ORB, nx, ny, ORB_S, ORB_S)) {
+      o->x = (s32)nx << 8, o->y = (s32)ny << 8;
+      continue;
+    }
+    int g = gate_ahead(x, y, ORB_S, ORB_S, DX[d], DY[d]);
+    o->vx = DX[d] * ORB_V, o->vy = DY[d] * ORB_V;
+    if (g >= 0 && warp(WHO_ORB, o, g)) continue;
+    /* a receiver ahead? */
+    int cx = (DX[d] > 0 ? x + ORB_S : DX[d] < 0 ? x - 1 : x + ORB_S / 2) >> 4;
+    int cy = (DY[d] > 0 ? y + ORB_S : DY[d] < 0 ? y - 1 : y + ORB_S / 2) >> 4;
+    int t = at(cx, cy);
+    if ((t == T_RECV1 || t == T_RECV2) && !recv_lit(cx, cy)) {
+      S.recv_on[cy][cx >> 3] |= 1 << (cx & 7);
+      S.orb_on = false, S.orb_timer = 60;
+      S.events |= EV_RECEIVER;
+      return;
+    }
+    S.orb_dir = d ^ 1; /* bounce straight back */
+  }
+}
+
+/* ------------------------------------------------------------ doors */
+static void doors(void) {
+  int need[2] = {0, 0}, have[2] = {0, 0};
+  int pxx = px(S.pip.x), pyy = px(S.pip.y), cxx = px(S.crate.x), cyy = px(S.crate.y);
+  S.pressed[0] = S.pressed[1] = 0;
+  for (int cy = 0; cy < RH; cy++)
+    for (int cx = 0; cx < RW; cx++) {
+      int t = S.map[cy][cx], g;
+      if (t == T_BUTTON1 || t == T_BUTTON2) {
+        g = t == T_BUTTON2;
+        need[g]++;
+        int bx = cx * 16 + 2, by = cy * 16 + 11;
+        bool down = boxes(pxx, pyy, PIP_W, PIP_H, bx, by, 12, 5) ||
+                    (S.crate_state == 1 && boxes(cxx, cyy, CRATE_S, CRATE_S, bx, by, 12, 5));
+        if (down) have[g]++, S.pressed[g]++;
+      } else if (t == T_RECV1 || t == T_RECV2) {
+        g = t == T_RECV2;
+        need[g]++;
+        if (recv_lit(cx, cy)) have[g]++;
+      }
+    }
+  for (int g = 0; g < 2; g++) {
+    bool want = need[g] && have[g] == need[g];
+    if (want == S.open[g]) continue;
+    if (!want) { /* do not close on anything */
+      int kind = g ? T_DOOR2 : T_DOOR1;
+      if (box_touches(pxx, pyy, PIP_W, PIP_H, kind, 0, 0, 16, 16) ||
+          (S.crate_state == 1 && box_touches(cxx, cyy, CRATE_S, CRATE_S, kind, 0, 0, 16, 16)) ||
+          (S.orb_on && box_touches(px(S.orb.x), px(S.orb.y), ORB_S, ORB_S, kind, 0, 0, 16, 16)))
+        continue;
+    }
+    S.open[g] = want;
+    S.events |= EV_DOORS;
+  }
+}
+
+bool button_down(int cx, int cy) {
+  int pxx = px(S.pip.x), pyy = px(S.pip.y), bx = cx * 16 + 2, by = cy * 16 + 11;
+  return boxes(pxx, pyy, PIP_W, PIP_H, bx, by, 12, 5) ||
+         (S.crate_state == 1 && boxes(px(S.crate.x), px(S.crate.y), CRATE_S, CRATE_S, bx, by, 12, 5));
+}
+
+/* ------------------------------------------------------------ loading */
+static int cur_series, cur_room;
+
+void sim_load(int series, int n) {
+  cur_series = series, cur_room = n;
+  const u8 *r = ROOM_DATA + ROOM_START[series] + (n - 1) * ROOM_BYTES;
+  u8 keep_sel = 0;
+  for (unsigned i = 0; i < sizeof S; i++) ((u8 *)&S)[i] = 0;
+  S.sel = keep_sel;
+  S.drop_cx = S.drop_cy = -1, S.em_dir = -1;
+  for (int i = 0; i < RW * RH; i++) {
+    int t = r[i >> 1] >> (i & 1 ? 4 : 0) & 15, cx = i % RW, cy = i / RW;
+    S.map[cy][cx] = t;
+    if (t == T_DROPPER) S.drop_cx = cx, S.drop_cy = cy;
+    if (t == T_EMITTER) S.em_cx = cx, S.em_cy = cy;
+  }
+  int start = r[RW * RH / 2];
+  S.pip = (body_t){(s32)((start % RW) * 16 + 3) << 8, (s32)((start / RW) * 16 + 2) << 8, 0, 0, PIP_W, PIP_H};
+  S.gate[0].face = S.gate[1].face = -1;
+  if (S.em_cx || S.em_cy || S.map[0][0] == T_EMITTER) /* the orb leaves on the emitter's open side */
+    for (int d = 3; d >= 0; d--)
+      if (!cell_solid(S.em_cx + DX[d], S.em_cy + DY[d])) S.em_dir = d;
+  if (S.map[S.em_cy][S.em_cx] != T_EMITTER) S.em_dir = -1;
+  if (S.drop_cx >= 0) crate_spawn();
+  doors();
+  S.events = 0;
+}
+
+/* ------------------------------------------------------------ one frame */
+static void die(void) {
+  if (S.dead) return;
+  S.dead = 40;
+  S.events |= EV_DEATH;
+  if (S.crate_state == 2) S.crate_state = 1;
+}
+
+void sim_step(u32 in) {
+  u32 fresh = in & ~S.prev_in;
+  S.prev_in = in;
+  S.events = 0;
+  S.frame++;
+  if (S.beam_t) S.beam_t--;
+  if (S.won) return;
+  if (S.dead) {
+    if (--S.dead == 0) sim_load(cur_series, cur_room);
+    return;
+  }
+  /* the warp tool */
+  if (fresh & IN_TOGGLE) S.sel ^= 1;
+  for (int d = 1; d <= 9; d++)
+    if (d != 5 && fresh & IN_FIRE(d)) {
+      fire(d);
+      break;
+    }
+  if (fresh & IN_GRAB) grab();
+
+  /* Pip */
+  body_t *p = &S.pip;
+  int dir = (in & IN_RIGHT ? 1 : 0) - (in & IN_LEFT ? 1 : 0);
+  if (dir) S.face_left = dir < 0;
+  S.ground = on_floor(WHO_PIP, p);
+  s32 acc = S.ground ? ACC_GROUND : ACC_AIR;
+  if (dir && p->vx * dir < RUN) {
+    p->vx += dir * acc;
+    if (p->vx * dir > RUN) p->vx = dir * RUN;
+  } else if (dir && p->vx * dir == RUN) {
+    /* running */
+  } else if (S.ground) {
+    s32 f = dir && p->vx * dir > RUN ? SLIDE : FRICTION, a = p->vx < 0 ? -p->vx : p->vx;
+    a = a > f ? a - f : 0;
+    if (dir && p->vx * dir > RUN && a < RUN) a = RUN;
+    p->vx = p->vx < 0 ? -a : a;
+  }
+  if (in & IN_UP) {
+    if (S.ground && !S.jump_held) p->vy = -JUMP, S.jumping = true;
+    S.jump_held = true;
+  } else {
+    S.jump_held = false;
+    if (S.jumping && p->vy < -JUMP / 2) p->vy = -JUMP / 2; /* a short hop */
+  }
+  if (p->vy >= 0) S.jumping = false;
+  p->vy = clampv(p->vy + GRAV);
+  if (move(WHO_PIP, p) & 4) S.jumping = false;
+  S.ground = on_floor(WHO_PIP, p);
+
+  crate_step();
+  orb_step();
+  doors();
+
+  int x = px(p->x), y = px(p->y);
+  if (box_touches(x, y, PIP_W, PIP_H, T_SCRUB, 0, 0, 16, 16) && (S.gate[0].face >= 0 || S.gate[1].face >= 0)) {
+    S.gate[0].face = S.gate[1].face = -1;
+    S.events |= EV_ERASED;
+  }
+  if (box_touches(x, y, PIP_W, PIP_H, T_ZAP, 4, 0, 8, 16) || box_touches(x, y, PIP_W, PIP_H, T_SPIKES, 1, 10, 14, 6) ||
+      (S.orb_on && boxes(x, y, PIP_W, PIP_H, px(S.orb.x) + 1, px(S.orb.y) + 1, ORB_S - 2, ORB_S - 2))) {
+    die();
+    return;
+  }
+  int cx = (x + PIP_W / 2) >> 4, cy = (y + PIP_H / 2) >> 4;
+  if (at(cx, cy) == T_EXIT) {
+    S.won = true;
+    S.events |= EV_WIN;
+  }
+}
diff --git a/games/portal/src/view.c b/games/portal/src/view.c
new file mode 100644
index 0000000..bb62c72
--- /dev/null
+++ b/games/portal/src/view.c
@@ -0,0 +1,379 @@
+/* Warp Lab: drawing. A room is drawn once, then each frame only the cells
+ * something moved over, each cell composed in a 16x16 buffer (its art, the
+ * gates on its sides, the shot, then the orb, the crate and Pip) and sent in
+ * one transfer, so nothing flickers. */
+#include <eadk.h>
+#include "warplab.h"
+#include "view.h"
+#include "art.h"
+
+static u16 cellbuf[CELL * CELL];
+static u16 linebuf[320];
+
+/* ------------------------------------------------------------ screen */
+void fill(int x, int y, int w, int h, u16 c) {
+  if (x < 0) w += x, x = 0;
+  if (y < 0) h += y, y = 0;
+  if (x + w > 320) w = 320 - x;
+  if (y + h > 240) h = 240 - y;
+  if (w > 0 && h > 0) eadk_display_push_rect_uniform((eadk_rect_t){x, y, w, h}, c);
+}
+
+u16 color(int i) { return PAL[i & 15]; }
+
+/* ------------------------------------------------------------ text */
+static int text_scale = 1;
+u16 ink = 0xFFFF, paper = 0;
+bool paper_clear; /* text over a picture: only the letters' pixels */
+
+void text_size(int s) { text_scale = s; }
+
+static void glyph_at(int c, int x, int y) {
+  if (c >= 'a' && c <= 'z') c -= 32;
+  if (c < FONT_FIRST || c > FONT_LAST) c = '?';
+  const u8 *g = FONT + (c - FONT_FIRST) * 7;
+  int s = text_scale, w = 6 * s, h = 8 * s;
+  if (paper_clear) {
+    for (int j = 0; j < 7; j++)
+      for (int i = 0; i < 5; i++)
+        if (g[j] >> i & 1) fill(x + i * s, y + j * s, s, s, ink);
+    return;
+  }
+  for (int j = 0; j < h; j++) {
+    int gy = j / s;
+    for (int i = 0; i < w; i++) {
+      int gx = i / s;
+      linebuf[i] = gy < 7 && gx < 5 && (g[gy] >> gx & 1) ? ink : paper;
+    }
+    eadk_display_push_rect((eadk_rect_t){x, y + j, w, 1}, linebuf);
+  }
+}
+
+#if NP_TEXT_EXTRA
+static void plot_ink(int x, int y, void *ctx) {
+  (void)ctx;
+  fill(x, y, text_scale, text_scale, ink);
+}
+static void plot_one(int x, int y, void *ctx) {
+  (void)ctx;
+  fill(x, y, 1, 1, ink);
+}
+/* one letter of *s at x; returns the x after it */
+static int letter(const char **s, int x, int y, bool draw) {
+  uint32_t cp = np_utf8(s);
+  char b = (char)cp, b2 = 0;
+  int acc = cp >= 0x80 ? np_latin(cp, &b, &b2) : 0, sc = text_scale;
+  if (b >= 'a' && b <= 'z') b -= 32;
+  if (b2 >= 'a' && b2 <= 'z') b2 -= 32;
+  if (cp >= 0x80 && !b) { /* Chinese, or a letter the font lacks: the 12-pixel font */
+    int w = np_xadvance(cp, sc);
+    if (draw && w) {
+      if (!paper_clear) fill(x, y - 2 * sc, w, 12 * sc, paper);
+      np_xdraw(cp, x, y - 2 * sc, sc, plot_ink, 0);
+    }
+    return x + w;
+  }
+  if (draw) {
+    glyph_at(b, x, y);
+    if (b2) glyph_at(b2, x + 6 * sc, y);
+    if (acc) {
+      if (acc == NP_ACC_CEDIL) np_accent(acc, x, y + 7 * sc, sc, plot_one, 0);
+      else np_accent(acc, x, y - 3 * sc, sc, plot_one, 0);
+    }
+  }
+  return x + (b2 ? 12 : 6) * sc;
+}
+#endif
+
+int text_w(const char *s) {
+#if NP_TEXT_EXTRA
+  int x = 0;
+  while (*s) x = letter(&s, x, 0, false);
+  return x;
+#else
+  int n = 0;
+  while (*s++) n++;
+  return n * 6 * text_scale;
+#endif
+}
+
+int text(const char *s, int x, int y) {
+#if NP_TEXT_EXTRA
+  while (*s) x = letter(&s, x, y, true);
+#else
+  for (; *s; s++, x += 6 * text_scale) glyph_at((u8)*s, x, y);
+#endif
+  return x;
+}
+
+int text_mid(const char *s, int y) { return text(s, (320 - text_w(s)) / 2, y); }
+
+int number(int v, int x, int y) {
+  char t[8];
+  int n = 0;
+  do t[n++] = '0' + v % 10; while (v /= 10);
+  char o[8];
+  for (int i = 0; i < n; i++) o[i] = t[n - 1 - i];
+  o[n] = 0;
+  return text(o, x, y);
+}
+
+/* ------------------------------------------------------------ pictures */
+/* 4 bit sprite (w, h, then rows), color 0 transparent, into a buffer of width bw */
+static void blit(u16 *buf, int bw, int bh, const u8 *s, int x, int y, bool mirror) {
+  int w = s[0], h = s[1], rb = (w + 1) / 2;
+  const u8 *d = s + 2;
+  for (int j = 0; j < h; j++) {
+    int yy = y + j;
+    if (yy < 0 || yy >= bh) continue;
+    for (int i = 0; i < w; i++) {
+      int xx = x + (mirror ? w - 1 - i : i);
+      if (xx < 0 || xx >= bw) continue;
+      int v = d[j * rb + i / 2] >> (i & 1 ? 4 : 0) & 15;
+      if (v) buf[yy * bw + xx] = PAL[v];
+    }
+  }
+}
+
+/* a sprite straight on the screen, scale s, over color bg */
+void sprite(const u8 *spr, int x, int y, int s, bool mirror) {
+  int w = spr[0], h = spr[1], rb = (w + 1) / 2;
+  for (int j = 0; j < h; j++)
+    for (int i = 0; i < w; i++) {
+      int v = spr[2 + j * rb + i / 2] >> (i & 1 ? 4 : 0) & 15;
+      if (v) fill(x + (mirror ? w - 1 - i : i) * s, y + j * s, s, s, PAL[v]);
+    }
+}
+
+void tile_art(int art, int x, int y, int s) {
+  const u8 *d = TILE_ART + art * 128;
+  for (int j = 0; j < 16; j++)
+    for (int i = 0; i < 16; i++) fill(x + i * s, y + j * s, s, s, PAL[d[j * 8 + i / 2] >> (i & 1 ? 4 : 0) & 15]);
+}
+
+/* ------------------------------------------------------------ cells */
+static int anim; /* animation phase of the fields */
+
+static int art_of(int cx, int cy) {
+  switch (S.map[cy][cx]) {
+  case T_PANEL: return ART_PANEL;
+  case T_METAL: return ART_METAL;
+  case T_GLASS: return ART_GLASS;
+  case T_DOOR1: return door_open_at(cx, cy) ? ART_DOOR1_OPEN : ART_DOOR1;
+  case T_DOOR2: return door_open_at(cx, cy) ? ART_DOOR2_OPEN : ART_DOOR2;
+  case T_BUTTON1: return button_down(cx, cy) ? ART_BUTTON1_DOWN : ART_BUTTON1;
+  case T_BUTTON2: return button_down(cx, cy) ? ART_BUTTON2_DOWN : ART_BUTTON2;
+  case T_SCRUB: return ART_SCRUB0 + (anim & 1);
+  case T_ZAP: return ART_ZAP0 + (anim & 1);
+  case T_SPIKES: return ART_SPIKES;
+  case T_EXIT: return ART_EXIT;
+  case T_RECV1: case T_RECV2: return recv_lit(cx, cy) ? ART_RECV_ON : ART_RECV_OFF;
+  case T_EMITTER: return ART_EMITTER;
+  case T_DROPPER: return ART_DROPPER;
+  default: return ART_EMPTY;
+  }
+}
+
+/* A gate: an oval of light, 14 pixels along its side of the panel, 2 pixels
+ * into the panel and up to 5 into the room. (a, d): along the side, depth
+ * (d < 0 in the panel). Drawn in the panel's cell (inner) or in the cell it
+ * opens to (outer). */
+static const u8 GATE_DEPTH[16] = {0, 2, 3, 4, 4, 5, 5, 5, 5, 5, 5, 4, 4, 3, 2, 0};
+
+static void gate_px(int face, int a, int d, bool inner, u16 c) {
+  int x, y;
+  switch (face) {
+  case F_UP: x = a, y = inner ? -d - 1 : 15 - d; break;
+  case F_DOWN: x = a, y = inner ? 16 + d : d; break;
+  case F_LEFT: y = a, x = inner ? -d - 1 : 15 - d; break;
+  default: y = a, x = inner ? 16 + d : d; break;
+  }
+  if (x >= 0 && x < 16 && y >= 0 && y < 16) cellbuf[y * 16 + x] = c;
+}
+
+static void gate_draw(int face, int g, bool inner) {
+  u16 c = PAL[9 + g], rim = PAL[7], dark = PAL[8];
+  for (int a = 1; a < 15; a++) {
+    int ext = GATE_DEPTH[a];
+    if (inner) {
+      gate_px(face, a, -1, true, c);
+      gate_px(face, a, -2, true, a > 2 && a < 13 ? dark : c);
+    } else
+      for (int d = 0; d < ext; d++) gate_px(face, a, d, false, d == ext - 1 ? rim : d == 0 ? c : (d & 1 ? c : rim));
+  }
+}
+
+static void gates_in_cell(int cx, int cy) {
+  for (int g = 0; g < 2; g++) {
+    gate_t t = S.gate[g];
+    if (t.face < 0) continue;
+    if (t.cx == cx && t.cy == cy) gate_draw(t.face, g, true);
+    int ax = t.cx + (t.face == F_LEFT ? -1 : t.face == F_RIGHT ? 1 : 0);
+    int ay = t.cy + (t.face == F_UP ? -1 : t.face == F_DOWN ? 1 : 0);
+    if (ax == cx && ay == cy) gate_draw(t.face, g, false);
+  }
+}
+
+static void beam_in_cell(int cx, int cy) {
+  if (!S.beam_t) return;
+  int x0 = S.beam_x0, y0 = S.beam_y0, x1 = S.beam_x1, y1 = S.beam_y1;
+  int dx = x1 > x0 ? x1 - x0 : x0 - x1, dy = y1 > y0 ? y1 - y0 : y0 - y1, n = dx > dy ? dx : dy;
+  u16 c = S.beam_ok ? PAL[9 + S.beam_gate] : PAL[7];
+  for (int i = 0; i <= n; i += 3) {
+    int x = n ? x0 + (x1 - x0) * i / n : x0, y = n ? y0 + (y1 - y0) * i / n : y0;
+    x -= cx * 16, y -= cy * 16;
+    if (x >= 0 && x < 16 && y >= 0 && y < 16) cellbuf[y * 16 + x] = c;
+  }
+}
+
+static void sprite_in_cell(int cx, int cy, const u8 *spr, s32 fx, s32 fy, bool mirror) {
+  int x = (fx >> 8) - cx * 16, y = (fy >> 8) - cy * 16;
+  if (x >= 16 || y >= 16 || x + spr[0] <= 0 || y + spr[1] <= 0) return;
+  blit(cellbuf, 16, 16, spr, x, y, mirror);
+}
+
+static const u8 *pip_frame(void) {
+  if (!S.ground) return SPR_PIP_JUMP;
+  s32 v = S.pip.vx < 0 ? -S.pip.vx : S.pip.vx;
+  if (v < 80) return SPR_PIP_STAND;
+  return (S.pip.x >> 11) & 1 ? SPR_PIP_RUN1 : SPR_PIP_RUN2;
+}
+
+static void draw_cell(int cx, int cy) {
+  const u8 *d = TILE_ART + art_of(cx, cy) * 128;
+  for (int i = 0; i < 256; i++) cellbuf[i] = PAL[d[i >> 1] >> (i & 1 ? 4 : 0) & 15];
+  gates_in_cell(cx, cy);
+  if (S.orb_on) sprite_in_cell(cx, cy, anim & 1 ? SPR_ORB1 : SPR_ORB0, S.orb.x, S.orb.y, false);
+  if (S.crate_state == 1 || S.crate_state == 2) sprite_in_cell(cx, cy, SPR_CRATE, S.crate.x, S.crate.y, false);
+  if (!S.dead || (S.dead & 4)) sprite_in_cell(cx, cy, pip_frame(), S.pip.x, S.pip.y, S.face_left);
+  if (S.crate_state == 2) sprite_in_cell(cx, cy, SPR_CRATE, S.crate.x, S.crate.y, false); /* held: in front */
+  beam_in_cell(cx, cy);
+  eadk_display_push_rect((eadk_rect_t){cx * 16, TOP + cy * 16, 16, 16}, cellbuf);
+}
+
+/* ------------------------------------------------------------ dirty cells */
+static u32 dirty[RH]; /* a bit a cell */
+
+static void mark(int cx, int cy) {
+  if (cx >= 0 && cx < RW && cy >= 0 && cy < RH) dirty[cy] |= 1u << cx;
+}
+
+static void mark_box(s32 fx, s32 fy, int w, int h) {
+  int x = fx >> 8, y = fy >> 8;
+  for (int cy = (y - 1) >> 4; cy <= (y + h) >> 4; cy++)
+    for (int cx = (x - 1) >> 4; cx <= (x + w) >> 4; cx++) mark(cx, cy);
+}
+
+static void mark_beam(void) {
+  int x0 = S.beam_x0, y0 = S.beam_y0, x1 = S.beam_x1, y1 = S.beam_y1;
+  int dx = x1 > x0 ? x1 - x0 : x0 - x1, dy = y1 > y0 ? y1 - y0 : y0 - y1, n = dx > dy ? dx : dy;
+  for (int i = 0; i <= n; i += 4) mark((n ? x0 + (x1 - x0) * i / n : x0) >> 4, (n ? y0 + (y1 - y0) * i / n : y0) >> 4);
+  mark(x1 >> 4, y1 >> 4);
+}
+
+static void mark_all_of(int kind1, int kind2) {
+  for (int cy = 0; cy < RH; cy++)
+    for (int cx = 0; cx < RW; cx++)
+      if (S.map[cy][cx] == kind1 || S.map[cy][cx] == kind2) mark(cx, cy);
+}
+
+typedef struct {
+  body_t pip, crate, orb;
+  bool orb_on;
+  u8 crate_state, beam_t;
+  gate_t gate[2];
+  u8 pressed[2];
+  bool dead_shown;
+} seen_t;
+static seen_t seen;
+
+static void remember(void) {
+  seen.pip = S.pip, seen.crate = S.crate, seen.orb = S.orb, seen.orb_on = S.orb_on;
+  seen.crate_state = S.crate_state, seen.beam_t = S.beam_t;
+  seen.gate[0] = S.gate[0], seen.gate[1] = S.gate[1];
+  seen.pressed[0] = S.pressed[0], seen.pressed[1] = S.pressed[1];
+}
+
+static void mark_gate(gate_t g) {
+  if (g.face < 0) return;
+  mark(g.cx, g.cy);
+  mark(g.cx + (g.face == F_LEFT ? -1 : g.face == F_RIGHT ? 1 : 0), g.cy + (g.face == F_UP ? -1 : g.face == F_DOWN ? 1 : 0));
+}
+
+/* ------------------------------------------------------------ the status bar */
+static int bar_series, bar_room;
+static const char *bar_msg;
+static int bar_msg_t;
+
+static void gate_icon(int x, int g, bool on) {
+  fill(x, 3, 12, 10, on ? PAL[7] : PAL[8]);
+  fill(x + 1, 4, 10, 8, PAL[9 + g]);
+  if (!on) fill(x + 3, 6, 6, 4, PAL[8]);
+}
+
+void view_bar(void) {
+  fill(0, 0, 320, TOP, PAL[8]);
+  ink = PAL[7], paper = PAL[8], paper_clear = false;
+  text_size(1);
+  int x = 4;
+  if (bar_msg) {
+    ink = PAL[11];
+    text(bar_msg, x, 5);
+  } else {
+    ink = PAL[3];
+    x = text(bar_series ? T("EXPERT ") : T("LAB "), x, 5);
+    ink = PAL[7];
+    x = number(bar_room, x, 5);
+    ink = PAL[3];
+    text(room_name(bar_series, bar_room), x + 10, 5);
+  }
+  gate_icon(286, 0, S.sel == 0);
+  gate_icon(302, 1, S.sel == 1);
+}
+
+void view_message(const char *msg, int frames) {
+  bar_msg = msg, bar_msg_t = frames;
+  view_bar();
+}
+
+bool view_message_up(void) { return bar_msg != 0; }
+
+/* ------------------------------------------------------------ whole room, frames */
+void view_room(int series, int room) {
+  bar_series = series, bar_room = room;
+  view_bar();
+  for (int cy = 0; cy < RH; cy++)
+    for (int cx = 0; cx < RW; cx++) draw_cell(cx, cy);
+  remember();
+}
+
+void view_frame(void) {
+  u32 ev = S.events;
+  anim = S.frame / 6;
+  if (S.frame % 6 == 0) mark_all_of(T_SCRUB, T_ZAP);
+  mark_box(seen.pip.x, seen.pip.y, seen.pip.w, seen.pip.h);
+  mark_box(S.pip.x, S.pip.y, S.pip.w, S.pip.h);
+  if (seen.crate_state == 1 || seen.crate_state == 2) mark_box(seen.crate.x, seen.crate.y, 10, 10);
+  if (S.crate_state == 1 || S.crate_state == 2) mark_box(S.crate.x, S.crate.y, 10, 10);
+  if (seen.orb_on) mark_box(seen.orb.x, seen.orb.y, 6, 6);
+  if (S.orb_on) mark_box(S.orb.x, S.orb.y, 6, 6);
+  for (int g = 0; g < 2; g++)
+    if (seen.gate[g].face != S.gate[g].face || seen.gate[g].cx != S.gate[g].cx || seen.gate[g].cy != S.gate[g].cy)
+      mark_gate(seen.gate[g]), mark_gate(S.gate[g]);
+  if (S.beam_t || seen.beam_t) mark_beam();
+  if (ev & EV_DOORS) mark_all_of(T_DOOR1, T_DOOR2);
+  if (ev & EV_RECEIVER) mark_all_of(T_RECV1, T_RECV2);
+  if (seen.pressed[0] != S.pressed[0] || seen.pressed[1] != S.pressed[1] || (S.frame & 7) == 0)
+    mark_all_of(T_BUTTON1, T_BUTTON2);
+  if (S.dead) mark_box(S.pip.x, S.pip.y, S.pip.w, S.pip.h);
+  bool bar = (ev & (EV_GATE | EV_ERASED)) != 0;
+  if (bar_msg && --bar_msg_t <= 0) bar_msg = 0, bar = true;
+  if (bar) view_bar();
+  for (int cy = 0; cy < RH; cy++) {
+    u32 m = dirty[cy];
+    dirty[cy] = 0;
+    for (int cx = 0; m; cx++, m >>= 1)
+      if (m & 1) draw_cell(cx, cy);
+  }
+  remember();
+}
diff --git a/games/portal/src/view.h b/games/portal/src/view.h
new file mode 100644
index 0000000..fe446f4
--- /dev/null
+++ b/games/portal/src/view.h
@@ -0,0 +1,24 @@
+/* Warp Lab: drawing (view.c). */
+#ifndef WARPLAB_VIEW_H
+#define WARPLAB_VIEW_H
+#include "warplab.h"
+
+extern u16 ink, paper;  /* text colors */
+extern bool paper_clear; /* letters only, over what is there */
+u16 color(int i);       /* a color of the palette (art.h) */
+void fill(int x, int y, int w, int h, u16 c);
+void text_size(int s);  /* letters 6 x 8 pixels at size 1 */
+int text(const char *s, int x, int y); /* returns the x after it */
+int text_w(const char *s);
+int text_mid(const char *s, int y);
+int number(int v, int x, int y);
+void sprite(const u8 *spr, int x, int y, int s, bool mirror);
+void tile_art(int art, int x, int y, int s);
+
+void view_room(int series, int room); /* the whole room and its status bar */
+void view_frame(void);                /* after sim_step: what changed */
+void view_bar(void);
+void view_message(const char *msg, int frames); /* in the status bar for a while */
+bool view_message_up(void);
+
+#endif
diff --git a/games/portal/src/warplab.h b/games/portal/src/warplab.h
new file mode 100644
index 0000000..9a3d5bf
--- /dev/null
+++ b/games/portal/src/warplab.h
@@ -0,0 +1,101 @@
+/* Warp Lab for the NumWorks calculator (Calcade, 2026).
+ *
+ * A puzzle platformer: Pip, a small lab robot, crosses each room of the lab
+ * with a warp tool that opens two linked gates, rose and mint, on the white
+ * panels. Whatever goes into one gate comes out of the other with its speed.
+ *
+ * The rooms are 20 x 14 cells of 16 pixels under a 16 pixel status bar.
+ * Positions are in 1/256 pixel (FX). sim.c is the whole simulation (no
+ * drawing, so it also runs on a computer for tests: test/host.c), view.c
+ * draws, main.c has the menus, the help and the saved progress. */
+#ifndef WARPLAB_H
+#define WARPLAB_H
+#include <stdbool.h>
+#include <stdint.h>
+#include "../../common/np_text.h"
+
+typedef uint8_t u8;
+typedef int8_t s8;
+typedef int16_t s16;
+typedef uint16_t u16;
+typedef int32_t s32;
+typedef uint32_t u32;
+
+#define FX 256
+#define RW 20 /* room width, cells */
+#define RH 14 /* room height */
+#define CELL 16
+#define TOP 16 /* the status bar above the room */
+
+/* cell codes, as in the room files (tools/conformite/warplab_rooms.py) */
+enum {
+  T_EMPTY, T_PANEL, T_METAL, T_GLASS, T_DOOR1, T_DOOR2, T_BUTTON1, T_BUTTON2,
+  T_SCRUB, T_ZAP, T_SPIKES, T_EXIT, T_RECV1, T_RECV2, T_EMITTER, T_DROPPER
+};
+
+/* gate faces: the side of a panel cell the gate is on, the side it opens to */
+enum { F_UP, F_DOWN, F_LEFT, F_RIGHT };
+
+typedef struct {
+  s32 x, y, vx, vy; /* top-left corner and speed, FX */
+  u8 w, h;          /* pixels */
+} body_t;
+
+typedef struct {
+  s8 cx, cy, face; /* face < 0: no gate */
+} gate_t;
+
+/* inputs, held */
+enum {
+  IN_LEFT = 1, IN_RIGHT = 2, IN_UP = 4, IN_GRAB = 8, IN_TOGGLE = 16,
+};
+#define IN_FIRE(d) (1u << (8 + (d))) /* d = 1..9 on the number pad, not 5 */
+
+/* events of a frame, for drawing and the status bar */
+enum {
+  EV_GATE = 1, EV_FIZZLE = 2, EV_WARP = 4, EV_DEATH = 8, EV_WIN = 16, EV_DOORS = 32,
+  EV_ERASED = 64, EV_CRATE_LOST = 128, EV_RECEIVER = 256, EV_GRAB = 512
+};
+
+typedef struct {
+  u8 map[RH][RW];
+  body_t pip;
+  bool ground, face_left, jump_held, jumping, carrying;
+  u8 crate_state; /* 0 none, 1 free, 2 carried, 3 waiting to drop again */
+  body_t crate;
+  int crate_timer;
+  s8 drop_cx, drop_cy;
+  body_t orb;
+  bool orb_on;
+  s8 orb_dir;     /* F_UP.. direction of travel (as a face: F_UP = moving up) */
+  int orb_timer;
+  s8 em_cx, em_cy, em_dir;
+  u8 recv_on[RH][RW / 8 + 1];
+  bool open[2];   /* doors of groups 1, 2 */
+  u8 pressed[2];  /* buttons of each group pressed this frame */
+  gate_t gate[2];
+  u8 sel;         /* the gate the next shot opens */
+  /* the last shot, for drawing */
+  s16 beam_x0, beam_y0, beam_x1, beam_y1;
+  u8 beam_t, beam_gate;
+  bool beam_ok;
+  int dead;       /* frames left before the room restarts, 0: alive */
+  bool won;
+  u32 frame, prev_in, events;
+} sim_t;
+
+extern sim_t S;
+
+/* rooms (rooms.h, generated) */
+#define SERIES 2
+int series_rooms(int series);
+const char *room_name(int series, int n); /* n from 1 */
+
+void sim_load(int series, int n);
+void sim_step(u32 in);
+bool cell_solid(int cx, int cy);
+bool door_open_at(int cx, int cy);
+bool recv_lit(int cx, int cy);
+bool button_down(int cx, int cy);
+
+#endif
diff --git a/games/portal/test/host.c b/games/portal/test/host.c
index 9e87b2c..b368dde 100644
--- a/games/portal/test/host.c
+++ b/games/portal/test/host.c
@@ -1,11 +1,22 @@
-/* Host build of the game logic for tests: the screen is a memory buffer and
- * the chamber runs one frame per call (see ../src/game.c, PORTAL_TEST).
- *   host PACK LEVEL KEYS...   keys per frame as hex, prints the state and
- *   writes the final screen to out.raw */
+/* Warp Lab on a computer: replays the rooms' solutions (games/portal/rooms) through
+ * the game's own simulation (src/sim.c) and drawing (src/view.c).
+ *
+ *   host check                       every room: its solution must reach the exit, with no death
+ *   host run SERIES ROOM [INPUTS]    one room (the solution, or INPUTS), printing Pip frame by frame
+ *   host shot SERIES ROOM FRAME OUT  the screen at that frame of the solution, as a PPM picture
+ *
+ * Inputs, one after the other:
+ *   R12 L12 U12 W12   hold right / left / up / nothing for 12 frames (40 a second)
+ *   RU12 LU12         right or left and up together
+ *   F6                press 6 on the number pad (a shot that way), then a frame with nothing
+ *   T                 press 5 (swap the gate color)      K  press OK (grab or drop the crate)
+ *   R12F6             (any hold, then a shot, a swap or a grab in its last frame) */
 #include <eadk.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
+#include "../src/warplab.h"
+#include "solutions.h"
 
 static uint16_t fb[240][320];
 void eadk_display_push_rect(eadk_rect_t r, const eadk_color_t *p) {
@@ -18,73 +29,114 @@ void eadk_display_push_rect_uniform(eadk_rect_t r, eadk_color_t c) {
     for (int x = 0; x < r.width; x++)
       if (r.y + y < 240 && r.x + x < 320) fb[r.y + y][r.x + x] = c;
 }
-void eadk_display_pull_rect(eadk_rect_t r, eadk_color_t *p) {
-  for (int y = 0; y < r.height; y++)
-    for (int x = 0; x < r.width; x++) p[y * r.width + x] = fb[r.y + y][r.x + x];
+void eadk_display_pull_rect(eadk_rect_t r, eadk_color_t *p) { (void)r, (void)p; }
+void eadk_display_draw_string(const char *t, eadk_point_t p, bool l, eadk_color_t a, eadk_color_t b) {
+  (void)t, (void)p, (void)l, (void)a, (void)b;
+}
+
+void view_room(int series, int room);
+void view_frame(void);
+
+static void ppm(const char *path) {
+  FILE *f = fopen(path, "wb");
+  fprintf(f, "P6 320 240 255\n");
+  for (int y = 0; y < 240; y++)
+    for (int x = 0; x < 320; x++) {
+      uint16_t c = fb[y][x];
+      fputc((c >> 11) << 3 | (c >> 13), f), fputc((c >> 5 & 63) << 2 | (c >> 9 & 3), f), fputc((c & 31) << 3 | (c >> 2 & 7), f);
+    }
+  fclose(f);
 }
-void eadk_display_draw_string(const char *t, eadk_point_t p, bool l, eadk_color_t a, eadk_color_t b) {}
-static uint32_t ms;
-uint32_t _eadk_timing_millis_low(void) { return ms; }
-uint32_t _eadk_timing_millis_high(void) { return 0; }
-void eadk_timing_msleep(uint32_t m) { ms += m; }
-void eadk_timing_usleep(uint32_t u) { ms += u / 1000; }
-void _eadk_keyboard_scan_do_scan(void) {}
-uint32_t _eadk_keyboard_scan_low(void) { return 0; }
-uint32_t _eadk_keyboard_scan_high(void) { return 0; }
-eadk_event_t eadk_event_get(int32_t *t) { exit(3); }
-uint32_t eadk_random(void) { return 4; }
 
-void test_load(int pack, int n);
-int test_frame(uint32_t keys);
-void test_state(uint8_t *o);
-void apply_scheme(void);
-/* random search for inputs that finish a chamber */
-static uint32_t rng = 1;
-static uint32_t rnd(void) { rng ^= rng << 13, rng ^= rng >> 17, rng ^= rng << 5; return rng; }
-static int search(int pack, int level, long trials, int maxf) {
-  static const uint32_t combos[] = {4, 4, 4, 12, 12, 8, 2, 2, 10, 0, 0, 16};
-  static uint32_t seq[4000];
-  for (long t = 0; t < trials; t++) {
-    test_load(pack, level);
-    int n = 0;
-    while (n < maxf) {
-      uint32_t k = combos[rnd() % 12];
-      if (rnd() % 5 == 0) k |= 1u << (8 + rnd() % 9);
-      int d = 1 + rnd() % 24;
-      for (int i = 0; i < d && n < maxf; i++) {
-        seq[n++] = k;
-        if (test_frame(k)) {
-          printf("%ld %d:", t, n);
-          for (int j = 0; j < n; j++) printf(" %x", seq[j]);
-          printf("\n");
-          return 0;
-        }
-        k &= 0xFF; /* digits are taps */
+/* the inputs of a solution, one u32 a frame */
+static u32 seq[20000];
+static int parse(const char *s) {
+  int n = 0;
+  while (*s) {
+    while (*s == ' ') s++;
+    if (!*s) break;
+    u32 hold = 0;
+    int frames = 1;
+    if (*s == 'R' || *s == 'L' || *s == 'U' || *s == 'W') {
+      while (*s == 'R' || *s == 'L' || *s == 'U' || *s == 'W') {
+        hold |= *s == 'R' ? IN_RIGHT : *s == 'L' ? IN_LEFT : *s == 'U' ? IN_UP : 0;
+        s++;
       }
+      frames = (int)strtol(s, (char **)&s, 10);
+      if (frames < 1) frames = 1;
+    }
+    u32 tap = 0;
+    if (*s == 'F') tap = IN_FIRE(s[1] - '0'), s += 2;
+    else if (*s == 'T') tap = IN_TOGGLE, s++;
+    else if (*s == 'K') tap = IN_GRAB, s++;
+    else if (*s && *s != ' ' && !hold && frames == 1) {
+      fprintf(stderr, "bad input at %s\n", s);
+      exit(2);
+    }
+    for (int i = 0; i < frames; i++) seq[n++] = hold | (tap && i == frames - 1 ? tap : 0);
+    if (tap) seq[n++] = hold;
+  }
+  return n;
+}
+
+/* 0: reached the exit; 1: died; 2: never got there */
+static int replay(int series, int room, const char *inputs, int trace, int shot_at, const char *shot) {
+  int n = parse(inputs);
+  sim_load(series, room);
+  view_room(series, room);
+  for (int f = 0; f < n + 600; f++) {
+    u32 in = f < n ? seq[f] : 0;
+    int was_dead = S.dead;
+    sim_step(in);
+    if (was_dead == 1) view_room(series, room);
+    else view_frame();
+    if (trace)
+      printf("%4d in=%03x pip %6.2f %6.2f v %5.2f %5.2f%s%s%s gates %d,%d,%d %d,%d,%d crate%d %4.1f %4.1f orb%d %5.1f %5.1f d%d open%d%d\n", f + 1, in,
+             S.pip.x / 256.0, S.pip.y / 256.0, S.pip.vx / 256.0, S.pip.vy / 256.0, S.ground ? " G" : "  ",
+             S.events & EV_WARP ? " WARP" : "", S.events & EV_FIZZLE ? " FIZZLE" : "", S.gate[0].cx, S.gate[0].cy,
+             S.gate[0].face, S.gate[1].cx, S.gate[1].cy, S.gate[1].face, S.crate_state, S.crate.x / 256.0,
+             S.crate.y / 256.0, S.orb_on, S.orb.x / 256.0, S.orb.y / 256.0, S.orb_dir, S.open[0], S.open[1]);
+    if (shot && f + 1 == shot_at) {
+      ppm(shot);
+      return 3;
+    }
+    if (S.events & EV_DEATH) {
+      if (trace) printf("died at frame %d\n", f + 1);
+      return 1;
     }
+    if (S.won) {
+      if (trace) printf("exit at frame %d\n", f + 1);
+      return 0;
+    }
+    if (f >= n && f > n + 400) break;
   }
-  return 1;
+  return 2;
 }
 
-void assets_init(void);
 int main(int argc, char **argv) {
-  assets_init();
-  apply_scheme();
-  if (!strcmp(argv[1], "search")) {
-    rng = atoi(argv[6]);
-    return search(atoi(argv[2]), atoi(argv[3]), atol(argv[4]), atoi(argv[5]));
+  if (argc >= 2 && !strcmp(argv[1], "check")) {
+    int bad = 0;
+    for (int s = 0; s < SERIES; s++)
+      for (int r = 1; r <= series_rooms(s); r++) {
+        int res = replay(s, r, SOLUTIONS[s][r - 1], 0, 0, 0);
+        if (res) bad++;
+        printf("%s %d-%02d %s\n", res ? (res == 1 ? "DIED" : "FAIL") : "ok  ", s + 1, r, room_name(s, r));
+      }
+    printf(bad ? "%d rooms not solved\n" : "all rooms solved\n", bad);
+    return bad != 0;
   }
-  test_load(atoi(argv[1]), atoi(argv[2]));
-  FILE *f = fopen(getenv("FRAMES") ? getenv("FRAMES") : "frames.raw", "wb");
-  for (int i = 3; i < argc; i++) {
-    uint8_t s[20];
-    test_state(s);
-    printf("%d", i - 3);
-    for (int k = 0; k < 20; k++) printf(" %d", s[k]);
-    printf("\n");
-    if (test_frame((uint32_t)strtoul(argv[i], 0, 16))) break;
-    fwrite(fb, sizeof fb, 1, f);
+  if (argc >= 4 && !strcmp(argv[1], "run")) {
+    int s = atoi(argv[2]) - 1, r = atoi(argv[3]);
+    int res = replay(s, r, argc > 4 ? argv[4] : SOLUTIONS[s][r - 1], 1, 0, 0);
+    printf("result %d\n", res);
+    return res;
   }
-  fclose(f);
-  return 0;
+  if (argc >= 6 && !strcmp(argv[1], "shot")) {
+    int s = atoi(argv[2]) - 1, r = atoi(argv[3]);
+    replay(s, r, argc > 6 ? argv[6] : SOLUTIONS[s][r - 1], 0, atoi(argv[4]), argv[5]);
+    ppm(argv[5]);
+    return 0;
+  }
+  fprintf(stderr, "usage: host check | run SERIES ROOM [INPUTS] | shot SERIES ROOM FRAME OUT [INPUTS]\n");
+  return 2;
 }
diff --git a/games/portal/test/solutions.h b/games/portal/test/solutions.h
new file mode 100644
index 0000000..35c04fa
--- /dev/null
+++ b/games/portal/test/solutions.h
@@ -0,0 +1,5 @@
+/* Generated by tools/conformite/warplab_rooms.py: the solutions of the rooms. */
+static const char *const SOLUTIONS[2][22] = {
+  {"R40 RU10 R17 RU15 R60", "F6 F9 R60 R80", "F6 F4 L20 R6 RU12 R60", "F6 F2 W25 RU14 R60", "L4 F1 R23F3 R2 RU44 L80", "L10 F1 R16F2 R10 L18 W50 R90", "W30 R12 K R30 K W5 RU10 R80", "R10 F9 F4 K L40 W20 R8 K U24 W30 R140", "R36 RU12 R10 W10 F6 F4 L60", "W20 R12 K F9 F4 L22 W30 L6 K W5 RU12 R120", "F6 F4 L30 W20 RU10 R30", "L57 F2 R40 F9 W150 L24 LU12 L120", "R38F3 R16 RU14 R18F3 W200 R100", "R7 F2 W10 R24 K R15F7 K W40 RU12 R140", "R30 F8 F2 W40 R140", "F6 F4 L14 W5 T F9 R40 W40 R60", "F6 F4 W20 R6 K L9K W30 R140", "R33 F2 R8F7 W150 R50 K R6 K RU12 R100", "R91F9 F4 L100 W30 L6 T F7 R60 W10 R40", "R28F9 W8 F2 R60", "R24 F2 R40F9 W100 R17F3 W300 RU14 R60", "R25 W10 F6 F4 L40"},
+  {"L12 F8 F2 W31 F4 W20 R100", "W30 R4 K L18 F8 F2 W32 F4 W40 L1 K W10 R80", "R54F3 W60 RU14 R12F9 W200 R100", "W30 K R24 K RU14 R6 W10 F6 F4 L10 LU12 L60", "W30 K R32 RU14 R80", "R30 RU20F9 W30 F2 W40 R40", "L12 F8 F2 W40 F3 W10 R60", "R19F3 R8F7 W200 R25F3 W300 RU14 R22 T F3 W300 RU14 R60", "F6 F4 L12 W20 U4 RU3 U4 W20 T F6 L4 W20 R20 W40 R40", "W30 R4 K L18 F8 F2 W32 F4 W40 L1 K W10 F6 R60 W60 R60"},
+};
diff --git a/games/snake/README.md b/games/snake/README.md
index 6d9f5f7..a28906d 100644
--- a/games/snake/README.md
+++ b/games/snake/README.md
@@ -1,8 +1,11 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Snake**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de le Snake de Google : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Snake">
+
 # Snake
 
 Google's Snake, the game you get when you search for "snake", on the NumWorks calculator: the checkered lawn, the blue snake with its big eyes and its shadow, the apple, the sky-blue menu card and the settings with all their little pictures.
 
-<img src="docs/shot.png" width="320" alt="The snake about to eat an apple">
 
 - **Google's boards:** Normal (17 x 15), Small (10 x 9) and Large (24 x 21).
 - **12 modes, like Google's:**
diff --git a/games/snake/docs/calcade.png b/games/snake/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..07ac97989bc7a38d995e65ec34918956c69a3744
GIT binary patch
literal 9375
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

literal 0
HcmV?d00001

diff --git a/games/snake/lang/fr.txt b/games/snake/lang/fr.txt
index 6d6f6d8..cf4b6ae 100644
--- a/games/snake/lang/fr.txt
+++ b/games/snake/lang/fr.txt
@@ -15,12 +15,12 @@ Cherries	Cerises
 Classic	Classique
 Wall	Mur
 Portal	Portail
-Cheese	Fromage
+Holes	Trous
 Borderless	Sans bords
-Twin	Jumeaux
-Winged	Ailé
-Yin Yang	Yin Yang
-Statue	Statue
+Swap	Échange
+Leap	Saut
+Mirror	Miroir
+Stone	Pierre
 Light	Lumière
 Magnet	Aimant
 Peaceful	Paisible
diff --git a/games/snake/lang/zh.txt b/games/snake/lang/zh.txt
index 70be83e..c4b7934 100644
--- a/games/snake/lang/zh.txt
+++ b/games/snake/lang/zh.txt
@@ -15,12 +15,12 @@ Cherries	樱桃
 Classic	经典
 Wall	墙壁
 Portal	传送门
-Cheese	奶酪
+Holes	奶酪
 Borderless	无边界
-Twin	双蛇
-Winged	飞翼
-Yin Yang	阴阳
-Statue	雕像
+Swap	双蛇
+Leap	飞翼
+Mirror	阴阳
+Stone	雕像
 Light	灯光
 Magnet	磁铁
 Peaceful	和平
diff --git a/games/snake/src/icon.png b/games/snake/src/icon.png
index f435fa8880a8062bd63e97d9f99d7295af0c9e5f..06357d2ce5c7cf085e86ac3302e82fa044717a59 100644
GIT binary patch
delta 2168
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

delta 2878
zcmV-E3&He+5yTddBYz7ENkl<Zc-q~XYm8mjRmXp8pMB1qd*{y6o*9qF@z{>jjDf_i
z(!2w0O-kd^y3kaS(|l-os34%N5+Nv}ibRA&kszU>Di9(lh)AYN8<2oHG)*5$+Z3F{
zkJ@$o$i$B%_1K=dGxvEOdoMoRJGSH3JTf+(F6n%^=bp3Ae}ApD*ZQxum#8Y|NB}qh
zuj#sz^;hnDz5K#^$Ev$VrjpnD1tfJTsY?-r*@~isK}Z;cC_3xs1mVnjM!VXs85=CF
z-*-*to!{zjU-uOw;g8S#?$ghn11<oZsvAB$^_|b{9Q&s&)pV?AFc`6j1m`SvrNIfR
z4yPHaj$$-WxqoT!H@B|o+4!d-!QpcOo(;|dSv?!S_qoG=`1nNQwcaQw5=iJ!FCGNE
z{C|T3qXraX)cG_>T$!G>HRGGsKK98%xa6zTH~`Gqz)Fo*AAEZM$DXPrW4(oNNhTQe
zngt$jz|S7ZWfd<TZ@kX}!Du1u%PPt7-mO3S$W!C>Lw^spfZ1uw1%PX06TkAc{r5i|
znGPo)9%p8!$t!KS^TiN&6*SJKf{)$s^snY^@4o?o0aWoTo_+22zZ^=NzZ9^mRXom!
zBB9Cq|2*)iFRS_$fEvIbp8WPBrTB1H5aj)019mn*8{~bdez@z^(l;Lgyz!b{x8wLf
zZi#|Ub$>nySj6Id5=6FBx4-fD7O&ZL=45@}1GVf#KEQfVVNr`pV63kuC-P&}y$_hz
zr(W1-#Ol=(4d1SRdJ(aDWb*lq_IPdQh+xI@(;*(jh?SpIc8-{G@_L^U!%vOn@M6R;
z86WMl3+nNg*s?l(U(KxYoGgH<?OYP-xyf}psegJkh$z;k$VD7nQLOQpz#*4dQvf57
zxu!w_V@aK$8en8@-)fU2nVWS`Y+z}N+Gx^JA&RPaA5bn2k){Q>z()u|<}#emF3oHN
zs&(itg5a5IOtEZfiSA-ZBhDkD7kvMMSZ@0Nf&uY_VU5wzpJ(shUuJw_HCYzT+l@pZ
zPJfk;{(@!mNJwv&u>GL2^}BmmIs6r_UH!krNn!SuoA>@g34(<0fB(1Hwfn;uqgb0<
z)GcQcW1v!ldv3A(#-<4HJo@Nk?BBDUYw!3IwteFfZhq&Jyz5>6LXs4k7Q7tbR1LYP
z%8M`E&yJlRroFv_s-XHdn45x#@{1e5dw=+^ZO`!8&;Ai%C~P?J6Rz9*b$;-}2PhU#
zvTohiiR0poik$n`s38avCQ8?^Yxlk6^9{T=Zx2|@CA|vuL@)+=dX`Y^=p;*1`ubPm
zeLyaXd3nbc>h*4n$!7M3`Gos0Y;g4G&D86~)*`Y1X{1@BeC>G;D0kj|3)}wVDSw{$
zyT9T+_x&X&CLC?KlybSBH{QGfYa25v)XX=ZO_Ww50;(*Cc!hipel+U&%oh{B@nS|e
z@NUL?KgF{<i$vC;O?E|TVkO4-OXk&igPY!WSG!y_UuXpCG5p+W!xw%p;(a$+(&OKu
zcl@updwqo@3z`YuDBV3r@ZQWAF@NpV0!{>+hmYK40O5N-_#Zy>!H-fckF#m>i}c;{
z1SiL#qhpNagS*MHw#yJLFIOd|U_{ABiuW)vaf(WL3LA!;7(0S7jyTEj&JA11=Sz5R
zFJBU0c+)il)i-y*hU?&iA9z2X|NNhwPU6oV$Z`9vPckyHjW}+f6<M%XPk)UG?Rj|i
zrHt+(Y`!DpGY>s<ntt8$zK2iKFPSa3lsV?8IsacANz%@mHP3U?O;1p(w_z@&b%BXG
z{QJH$#QBz6OBC8d>W#wOh;tN0bKDyNP$kRKIpsxbOZ4;{qNCW07&q&Zr`K2-Nr6(u
z5lCZhC6CORUC2D$&X8p}ynoAsce5^5odZY^ap)Y^wpTXXD~O+C<sgeciNBo`axn^M
z7cD5?G-?<KMugP+^FS_Ia6v%`)$rO_m3rzJ?k!-=Te~xh3Y>VI?oBeey+N($d0}#b
zdhB@l=mfW|Uc$=W0-0}yo<#vpv{|XAd5h$P_-MjQ|2odG_ba}`6MrdOKhVKYcOK`@
z#8i9r15=z8yfF;ETw-AF6ydQ3>(Y$Lv37P37RlaGV5B`y;{76WO9dAia;2CJ|2)dF
z9VJu@SQrWg^X-`1UoNxf-sK#+HBVI6CIeU$;0#FS+3>fA=-D$t(pN;27!gCFK*1pO
zjGz7cQ4)b;xAqd&GJmuM(9D~{UxDC}<t;0pd6S+!6L9m5blr6~`8C&ra~KhfSFi?`
z4_NorH^@&Ucx#yUO>-##s-|@Xt;@7}jM=>Vle6~7KnSZD13x^0>&%nC=2|4zMsC$w
zOq6Su5iKQnYsil$^zWJ^%NeAV@NBc+C~u)iA|8>9AaKp@R(}hKdP|xXsMmW))Am`H
z9_M$gb;juEt)XzDPOg;VeMUTbfZVFJ#IGI1CovM(w^9><u44^Erq3`0>vZz8B~%6P
z1JX249Cr~nx~No_QLFY*t@cx?3{tE0QLp!sBn85-(W(+=L1JwP2yq-^jGsA>V2I+l
zncISZ_~0ufhkr-WG)7Et9_Lb3tQvA*L>L*=2=>&ewN$IiD3=E*mzPtoEj<k&P20(`
z-0Am-fH4j+4kK>fZTMLoVP&3rS4dK{<fc+I2+%AAV=ruZh1x(H7<0yQ|NYDtE(l=S
zno(3e>t)i~i<dd52pH#SbcLK8>0s4&PtxcNFe>K*lYi#Ea|O$(8@mY-kGAS1v!ag^
z)>g^4RWz5Y5Jgq2jggjR&J8Hd{V7-A=w1jC&%sRt)Otd~T86hWt>0$P#RzJIXfox<
zFAY*&*-j9vdORJ`&<V4Ct=X44qe`Gx8o*4}3sO&YX~d4-x|X;nB3DW=iAS6wnPO`h
zVL9c<J%7s?-Mj)@cZd;HG94(a-)HXl8S`A`5M$8GTX)Gk&Rhgrca+}I$@V|Kfzb~Q
zQ5h<bwp-%vh*Rr(*!AfV_I-Q};<V+lM!jY-)Op);cHPS0$-XZBpxU5K1XW#FlTEh^
z+H&Rjr49pOJtOVNap3;d*jk3IW~enJogpgC`+q6|BI?LY!S>ac=0~11HsHXoZwj|g
z)l{O;J1&y}2L|@y{rm`#8bLB8tTdZaX=g~553r4_Nw-=W3{2z_HzgYeer>A}d%yr@
z;|BZiaKD)>SK1BaysEU4xjXCfEzRp3PD?Z5xSjs~S6H#)CDOEj7(f4}ZHqHXrifEi
z<bNz48F=UFraL!0Io$Q0hg*lWh%p>{?02J2boah!I*P|M3^Si)5pi53j*BF5ku)uk
zWl@WQHCc=??i>ZUvwru)aR*UU<<2|)1{)-&pIwMxbN1#j1YSW?ZJ4`P{lzB)bF4|W
znn}w7*+gUigHP@Gokv|VKpL;eN>hD7t$(&uD&;|{)d3of?pAUy;G9ME!t)}k&C{6v
z{#Ur`&M&cK$wAVz9p~c(p3@W!Oz2Wqw@za|u;xn-b+@f~Y#Pt`W5DUjd$+y%>BlFN
z{k?5APhdi)ie%18mgS^g?;(l%sn?cMsV=2j>BDPq#v&@@+R6+r+s)9>4uT*hO@H$k
z(FGbpZH)noQKxB;xC%XOtHw7D|M@5Lw)ZV#z!w?d_QQuJp8MSPH~wKuH91}sF$5;S
zh#)2<7aDS5b5!F(Azo0tHaV)QY3|nrny^)Mc+K#5+Qa_J`u>k^9qxShj04;k9K9c_
z{`kJ5Q{Q{<o0Xj-lZ|8js$Ogm5jO@AUiG4GIbB^W?D#O+84Zo~x8JyLsN=S8EzMtl
c$<h1&15A(1qWWZVQ~&?~07*qoM6N<$f_`JT_y7O^

diff --git a/games/snake/src/main.c b/games/snake/src/main.c
index 518fe62..4409695 100644
--- a/games/snake/src/main.c
+++ b/games/snake/src/main.c
@@ -1,4 +1,5 @@
-/* Snake: Google's Snake, the game in Search, for the NumWorks calculator.
+/* Snake for the NumWorks calculator (modifié par Calcade le 19 octobre 2026 : ses couleurs et noms de modes à lui ;
+ * avant : une reprise du Snake de Google). In the style of the Snake in Search.
  * Its lawn, its blue snake with a shadow, its fruit, its menu card and its
  * settings: 6 fruits, 12 modes, 1, 3 or 5 fruits at a time, 3 speeds, 3
  * board sizes (17 x 15, 10 x 9, 24 x 21), 8 snake colors and 4 themes.
@@ -31,23 +32,23 @@ static uint32_t keys(void) {
   return ((uint32_t)s & 0x800001FFu) | ((uint32_t)(s >> 32) & 0x00100850u) << 8;
 }
 
-/* Google Snake's colors */
-#define C_APPLE RGB(0xE7471D)
+/* the colors (Calcade: the game's own, not Google Snake's) */
+#define C_APPLE RGB(0xE84A5F)
 #define C_GOLD RGB(0xFFC53D)
-#define C_CARD RGB(0x4DC1F9)  /* the menu card */
-#define C_CARD2 RGB(0x35A7E3) /* the row in focus */
-#define C_BTN RGB(0x1A5CD7)   /* a button */
-#define C_BTN2 RGB(0x2F4F9A)  /* a button not in focus */
+#define C_CARD RGB(0x9B7BEA)  /* the menu card */
+#define C_CARD2 RGB(0x7E5BD6) /* the row in focus */
+#define C_BTN RGB(0x5A3FC0)   /* a button */
+#define C_BTN2 RGB(0x43308F)  /* a button not in focus */
 #define HDR 24                /* the band on top */
 
 /* the themes: the band on top, around the field (and walls), the lawn */
 static const uint32_t THEME[4][4] = {
-  {0x4A752C, 0x578A34, 0xAAD751, 0xA2D149}, /* day */
+  {0x2E6B57, 0x3B7F68, 0x8FD9B6, 0x84D0AC}, /* day */
   {0x17222E, 0x22354A, 0x31475B, 0x2B4053}, /* night */
   {0x55778F, 0x7FA2BB, 0xEEF5FB, 0xDEEAF4}, /* snow */
   {0x3A1810, 0x5C2414, 0x5C4136, 0x52382E}, /* volcano */
 };
-static const uint32_t SNAKES[8] = {0x4E7CF6, 0x8E5CE6, 0xE8588F, 0xF48C2E, 0xF2C21E, 0x17A5A0, 0xF4F4F4, 0x2E2E2E};
+static const uint32_t SNAKES[8] = {0xFF8A3D, 0x8E5CE6, 0xE8588F, 0x4E7CF6, 0xF2C21E, 0x17A5A0, 0xF4F4F4, 0x2E2E2E};
 static color c_bar, c_edge, c_light, c_dark, c_slight, c_sdark; /* the theme's, and shadows on the lawn */
 
 /* ------------------------------------------------------------------ drawing */
@@ -898,7 +899,7 @@ static void button(const char *s, int x, int y, int w, int h, bool on, int ic) {
 static const char *const ROWS[NOPT] = {T("Fruit"), T("Mode"), T("Count"), T("Speed"), T("Size"), T("Color"), T("Theme")};
 static const char *const NAMES[] = {
   T("Apple"), T("Banana"), T("Pineapple"), T("Grapes"), T("Strawberry"), T("Cherries"),
-  T("Classic"), T("Wall"), T("Portal"), T("Cheese"), T("Borderless"), T("Twin"), T("Winged"), T("Yin Yang"), T("Statue"),
+  T("Classic"), T("Wall"), T("Portal"), T("Holes"), T("Borderless"), T("Swap"), T("Leap"), T("Mirror"), T("Stone"),
   T("Light"), T("Magnet"), T("Peaceful"),
   "1", "3", "5",
   T("Normal"), T("Fast"), T("Slow"),
diff --git a/games/solitaire/README.md b/games/solitaire/README.md
index fe216d0..a66bf07 100644
--- a/games/solitaire/README.md
+++ b/games/solitaire/README.md
@@ -1,8 +1,11 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Solitaire**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de Google Solitaire : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Solitaire">
+
 # Solitaire
 
 Klondike for the NumWorks calculator, the way Google Solitaire (the game you get when you search for "solitaire") looks and plays: the deck and the waste on the left, the four foundations marked with their suits on the right, the dark bar with the time, score and moves, flat cards with two-tone suits and blue sunburst backs, and a red king for Easy or a blue king for Hard.
 
-<img src="docs/shot.png" width="320" alt="A game in progress">
 
 - **Choose your difficulty,** like Google's: **Easy** draws one card, **Hard** draws three.
 - **Undo and New** under the deck, as in Google's game, plus a Hint, OK twice to send a card up, a key that plays everything it can to the foundations, and an automatic finish once every card is face up.
diff --git a/games/solitaire/docs/calcade.png b/games/solitaire/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..3818d3ac106d2d26cdc03fb53b9862ab95970d2f
GIT binary patch
literal 5132
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
U?Fq6*<X1j`t`<bITpjlEAN42a!~g&Q

literal 0
HcmV?d00001

diff --git a/games/solitaire/src/main.c b/games/solitaire/src/main.c
index ef28567..43fe72c 100644
--- a/games/solitaire/src/main.c
+++ b/games/solitaire/src/main.c
@@ -1,7 +1,7 @@
-/* Solitaire: Klondike the way Google Solitaire (the game in Search) plays
- * and looks, for the NumWorks calculator: the deck and the waste on the
+/* Solitaire (modifié par Calcade le 19 octobre 2026 : couleurs et dos des cartes à lui ; avant : l'aspect de
+ * Google Solitaire): Klondike for the NumWorks calculator: the deck and the waste on the
  * left, the foundations on the right, the dark bar with the time, score and
- * moves, flat cards with two-tone suits and blue sunburst backs, and "Choose
+ * moves, flat cards with two-tone suits and lattice backs, and "Choose
  * your difficulty" to start. Rewritten in C for NumPlay from Tatone26's
  * Solitaire in All the Apps, which is in the public domain.
  *
@@ -25,7 +25,7 @@ typedef uint16_t color;
 #define RGB(c) (color)((((c) >> 8) & 0xF800) | (((c) >> 5) & 0x07E0) | (((c) >> 3) & 0x1F))
 #define WHITE 0xFFFF
 #define BLACK 0
-/* Google Solitaire's colors */
+/* the colors (Calcade: the game's own) */
 #define FELT RGB(0x34A249)
 #define SIDE RGB(0x2B7B3B)  /* the columns of the deck and the foundations */
 #define BAR RGB(0x313131)   /* the bar on top */
@@ -35,7 +35,7 @@ typedef uint16_t color;
 #define INK RGB(0x202124)   /* text on white */
 #define GREY RGB(0x5F6368)
 #define PALE RGB(0xE8EAED)
-#define BLUE RGB(0x1A73E8)
+#define BLUE RGB(0x6C4AD9)
 #define GOLD RGB(0xFDD835) /* the cursor */
 #define KEY(k) (1ull << (k))
 
@@ -211,8 +211,8 @@ static struct {
 #define UNDOY 172 /* the buttons */
 #define NEWY 204
 
-/* the backs: Google's blue sunburst, and red, green and purple ones */
-static const uint32_t BACKS[4][2] = {{0x3F9CFB, 0x40B7FE}, {0xE0463C, 0xF77B6E}, {0x2E9D57, 0x55C27D}, {0x7D52D9, 0xA07CF0}};
+/* the backs: a lattice of two tones, navy, red, green or purple (Calcade: the game's own) */
+static const uint32_t BACKS[4][2] = {{0x2B3A67, 0x3E5291}, {0xB8323A, 0xD95C63}, {0x237A47, 0x3FA266}, {0x5E3BB0, 0x8160D6}};
 
 /* a card's shape: round corners, an outline o, filled with f */
 static void cardshape(int x, int y, color o, color f) {
@@ -230,17 +230,15 @@ static void back(int x, int y, int style) {
   for (int j = y0; j < y1; j++)
     for (int i = x0; i < x1; i++) {
       int dx = i - cx, dy = j - cy, a = dx < 0 ? -dx : dx, b = dy < 0 ? -dy : dy, m = min(a, b), M = max(a, b), d = dx * dx + dy * dy;
-      int w = a >= b ? m * 1000 >= M * 414 : 2 + (m * 1000 < M * 414); /* which of 4 rays in a quarter */
-      color c = w & 1 ? c0 : c1;
-      if (d <= 30) {
-        static const uint32_t Q[4] = {0xEA4335, 0x4285F4, 0xFBBC05, 0x34A853};
-        c = d >= 12 && d <= 20 ? RGB(Q[(dx < 0) + 2 * (dy >= 0)]) : WHITE;
-      }
+      (void)m, (void)M;
+      int u = (i - x + j - y) & 7, v = (i - x - j + y + 64) & 7; /* a lattice of diagonal lines */
+      color c = u == 0 || v == 0 ? c1 : c0;
+      if (d <= 30) c = d >= 16 ? c1 : WHITE; /* a small white medallion in the middle */
       buf[(j - ry) * rw + i - rx] = c;
     }
 }
 
-/* A court figure, flat and two-tone like Google's: a bust in a robe of the
+/* A court figure, flat and two-tone: a bust in a robe of the
    suit's colors (a, b), 24 x 28 units of s pixels. r: 10 jack, 11 queen, 12 king. */
 #define SKIN RGB(0xF6C4A0)
 #define SKIN2 RGB(0xE0A47E)
diff --git a/games/tetris/README.md b/games/tetris/README.md
index 2201b89..13d3132 100644
--- a/games/tetris/README.md
+++ b/games/tetris/README.md
@@ -1,3 +1,7 @@
+> **Version Calcade (19 octobre 2026)** : ce jeu s'appelle maintenant **Stackfall**. Son nom, son logo, ses personnages, ses couleurs ou ses images ont été refaits pour ne plus reprendre ceux de Tetris (The Tetris Company) : voir `CALCADE.md` à la racine. Ce n'est pas un jeu officiel et il n'a aucun lien avec les titulaires de ces marques.
+
+<img src="docs/calcade.png" width="320" alt="Stackfall">
+
 > **Tetris is part of [NumPlay](../../README.md)**, every NumWorks game in one app. Get it with all the others, or on its own as `Tetris.nwa` from the [latest release](https://github.com/Mason363/NumPlay/releases/latest).
 
 # Tetris
diff --git a/games/tetris/docs/calcade.png b/games/tetris/docs/calcade.png
new file mode 100644
index 0000000000000000000000000000000000000000..1eaab944158e0cda52d705a6399dc8d3327a3723
GIT binary patch
literal 6193
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

literal 0
HcmV?d00001

diff --git a/games/tetris/lang/fr.txt b/games/tetris/lang/fr.txt
index 4a10ced..77b11a6 100644
--- a/games/tetris/lang/fr.txt
+++ b/games/tetris/lang/fr.txt
@@ -6,7 +6,7 @@ BEST	RECORD
 SCORE	SCORE
 LEVEL	NIVEAU
 LINES	LIGNES
-\n                HOW TO PLAY\n\n    - <LEFT> and <RIGHT> to move\n    - <DOWN> for soft drop\n    - <UP> for hard drop\n    - <OK> & <TOOLBOX> to rotate left and right\n    - <BACKSPACE> (<clear>) to hold the tetri\n    - <BACK> to pause\n\n    Every full line disappears\n    Get more points by clearing\n      multiple lines at once !\n    The level increases every 10 lines.\n    You lose when the stack reaches the top. \n    Hold the tetri to keep it for later !                                 	\n               COMMENT JOUER\n\n    - <GAUCHE> et <DROITE> : déplacer\n    - <BAS> : descente rapide\n    - <HAUT> : chute directe\n    - <OK> et <BOÎTE À OUTILS> : tourner\n    - <EFFACER> (<clear>) : réserver\n    - <RETOUR> : pause\n\n    Une ligne pleine disparaît.\n    Plus de points en effaçant\n      plusieurs lignes d'un coup !\n    Le niveau monte toutes les 10 lignes.\n    Perdu si la pile atteint le haut.\n    Réserve une pièce pour plus tard !
+\n                HOW TO PLAY\n\n    - <LEFT> and <RIGHT> to move\n    - <DOWN> for soft drop\n    - <UP> for hard drop\n    - <OK> & <TOOLBOX> to rotate left and right\n    - <BACKSPACE> (<clear>) to hold the piece\n    - <BACK> to pause\n\n    Every full line disappears\n    Get more points by clearing\n      multiple lines at once !\n    The level increases every 10 lines.\n    You lose when the stack reaches the top. \n    Hold a piece to keep it for later !                                 	\n               COMMENT JOUER\n\n    - <GAUCHE> et <DROITE> : déplacer\n    - <BAS> : descente rapide\n    - <HAUT> : chute directe\n    - <OK> et <BOÎTE À OUTILS> : tourner\n    - <EFFACER> (<clear>) : réserver\n    - <RETOUR> : pause\n\n    Une ligne pleine disparaît.\n    Plus de points en effaçant\n      plusieurs lignes d'un coup !\n    Le niveau monte toutes les 10 lignes.\n    Perdu si la pile atteint le haut.\n    Réserve une pièce pour plus tard !
 Ghost Piece	Pièce fantôme
 Yes	Oui
 No	Non
diff --git a/games/tetris/lang/zh.txt b/games/tetris/lang/zh.txt
index 9982924..cce7e0d 100644
--- a/games/tetris/lang/zh.txt
+++ b/games/tetris/lang/zh.txt
@@ -7,7 +7,7 @@ BEST	最高分
 SCORE	得分
 LEVEL	等级
 LINES	行数
-\n                HOW TO PLAY\n\n    - <LEFT> and <RIGHT> to move\n    - <DOWN> for soft drop\n    - <UP> for hard drop\n    - <OK> & <TOOLBOX> to rotate left and right\n    - <BACKSPACE> (<clear>) to hold the tetri\n    - <BACK> to pause\n\n    Every full line disappears\n    Get more points by clearing\n      multiple lines at once !\n    The level increases every 10 lines.\n    You lose when the stack reaches the top. \n    Hold the tetri to keep it for later !                                 	\n                  玩法说明\n\n    - 左/右方向键：左右移动\n    - 下方向键：加速下落\n    - 上方向键：直接落下\n    - <OK>/<工具箱>：向左/向右旋转\n    - <退格>（<clear>）：暂存方块\n    - <返回>：暂停\n\n    填满一行即可消除，\n    一次消除多行得分更高！\n    每消除 10 行升一级。\n    方块堆到顶部即失败。\n    暂存的方块可留待以后使用！
+\n                HOW TO PLAY\n\n    - <LEFT> and <RIGHT> to move\n    - <DOWN> for soft drop\n    - <UP> for hard drop\n    - <OK> & <TOOLBOX> to rotate left and right\n    - <BACKSPACE> (<clear>) to hold the piece\n    - <BACK> to pause\n\n    Every full line disappears\n    Get more points by clearing\n      multiple lines at once !\n    The level increases every 10 lines.\n    You lose when the stack reaches the top. \n    Hold a piece to keep it for later !                                 	\n                  玩法说明\n\n    - 左/右方向键：左右移动\n    - 下方向键：加速下落\n    - 上方向键：直接落下\n    - <OK>/<工具箱>：向左/向右旋转\n    - <退格>（<clear>）：暂存方块\n    - <返回>：暂停\n\n    填满一行即可消除，\n    一次消除多行得分更高！\n    每消除 10 行升一级。\n    方块堆到顶部即失败。\n    暂存的方块可留待以后使用！
 Ghost Piece	显示落点
 Yes	是
 No	否
diff --git a/games/tetris/numworks_utils/LICENSE-storage.txt b/games/tetris/numworks_utils/LICENSE-storage.txt
new file mode 100644
index 0000000..07ff07d
--- /dev/null
+++ b/games/tetris/numworks_utils/LICENSE-storage.txt
@@ -0,0 +1,24 @@
+numworks_utils (Tatone26, released into the public domain: see ../UNLICENSE) contains storage code
+adapted from numworks-extapp-storage by Yaya.Cout (https://framagit.org/Yaya.Cout/numworks-extapp-storage),
+released under the BSD 3-Clause License:
+
+Copyright (c) 2021-2022 Numworks
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided
+that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the
+   following disclaimer.
+2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
+   the following disclaimer in the documentation and/or other materials provided with the distribution.
+3. Neither the name of the copyright holder nor the names of its contributors may be used to endorse or
+   promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY
+DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
+OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGE.
diff --git a/games/tetris/tetris/src/data/icon.png b/games/tetris/tetris/src/data/icon.png
index 8513c2b283e6c8985bcd026eb753a806dd68f049..a32ef39c7a809271df41e65c8dbc214af6e33a86 100644
GIT binary patch
delta 1300
zcmV+v1?&3f2&W2=B!BKnL_t(|ob8%VY*bYg#((F&J2RarZ4r@3MFB~ykpN*MVMAag
z3k`{hbOC9E1YN*_h@x?$E_4B|NDyO~C^6j#MnW`*E|`RcRW=5c0F7mkGDwT#PzGoE
zX5PInreIUrnfE$>Y-_*GB=5U(bH1E=-*1vRf)6ceUvK@aYk#DYsf1KoQ+B~r3^i8e
zLXK-phfrfRUPv|e!E_7;<JYY!EtpOkTfdsfn64U~<AGy2lcZqgbnTw*<(bi)lbP1F
z(VEen(|#8wQwdhT`w5FTzf3+o1danDXbk5++{@Kthgs6TzK*2^m+x?^-}#s)Ht#@&
z(#(&Ah$z7`hJQgX#PZ!Apd5`obFrSa2A1z*xw!LH)KHrDm$&iSlQHIMVR1~;u015y
z!ebjZ*R#$^$#=MX`cIm}n!IQDe$WMhg0;l7V2wv%C{xEWCnw*>62~DT(A}Re-8BIV
z7z+r9<J7Il$;y8?5j<;|qZI{P3g!q{YZ2vuoq9y^9e++^x#elXIgh9oj0IyY{RIc>
z-kp-2^L^*e?|&ULoFio;^bR}x=4z5&grYl4`sW|%|MrV|);THp?%dTc<0u_w(Q_~1
z-ubI^6tRfXTt9V`YbQRR=A0YBL33D-;+(@ntJa{Sv02VFQnQ=`W;r+2G|M@d<y=|L
zB~uCFZ+|Rg+w*M{Zx_&FL4ikz-G^>+@as%PKPX2V#<?SV7Si=X3nm*T)ci20Cam?)
zZi@Y{EWmMu?G^kJX9Hzx9Ot?=&BbJ+sI{NL%6$--kF-36jVvYFWZANzwW1$X4dYxf
z<D$ZIpqPXHW2J{?7(&fhV@cmJ75$)U80Q?Z;D0nh?}5?-6)JsN0|MHivL8?l<D3Xs
z>mi{wFfL$0G}c;_l)hfcuUoikIcFt=xYx1S2!xu!8mzIXd@p%dp&csvLDewM?fmE_
zIaiQEACf(X-2DaRULfZd=(&)i`}9ynKd5TTx%kF)Y+Ly>#cU2OfPm*{b|-o`_)Uh0
z7JoW7w34}F&<=POA_}?_L&Q(rrlm=h^_R5QDV!h9ZGYUuco3R54?<zAG3ZR1{p+5^
zQNr=F3phRjtB&lsMAxPkOtuLXX}QliaZ{{W9wpYK{#(u&3u@P1*t!E+Taorf*hdx+
zbrf4VmX+P#4+n#)rkqpJ7!2p3=L{fFbblcd#acr;@0Q))4+n#)www!x;pFj=okzB|
z1`xC=KUv|6g8@}j&RNeOv1TY1Mha9ToDwQw$`1$Y7S0dnB$LL5G(@5$PFaf@xIx}C
zrMG7p`Qczt)s%BN&mgx3kZVcg`tPV4{UuJN2I#)nS9X6t91N<Oa_;Tb&(PVijDJkt
zMJxH2Q<wUP|9YAD#z(8-U{KEa{@eJy6^5=A9T+R9X!JhEB$Fm*3`Z|tsm>37HzDV8
zF1!^V<iy!k^$B-nYX`<Ns9kTCUiT-zg4i7F;2+4X0SJey^Iz=2WW%VnpO$dYdjLXh
z*z8rL(8o^~TsrqH4HVAzohxSlE`Q6hs{ML!E}2UB>Yf8-Iaak_W6mX03Gw|x5uq%{
zsD)n-&iUz{)w(RlBGvje<lMdSMBjIA=jk8Ha;$2<o}8=Hy+h|N5^>ao96S8W<tqK!
zaBlQa=>tECrt`Se*lF1Zj-{W$=&7jj>i+)?aF5kg4C&{D{R6jk*Cqc?R}H8D0000<
KMNUMnLSTZIHihH>

delta 1106
zcmV-Y1g-n03g-xrB!4bRL_t(|+U=T6Xd6cy#ox@XEQHpQ9V!P|Zmn3+MusYgCan*p
zh2#+EDK&=F;6p<LzQ?zOG>0T4xAq=LNe>1$5agZ;IV8~1gP{mh9puDyBe#|nM-WL^
zVp&P6>A|~Vt*=@iL0V<sX&H9d{qbgY=D+g@V+>W|04M;E$$w_2qtVzUg3`JD{r!L}
z%VPitdM9SJT3-(j4{sC{^6aC~hmS^_&RF$(Ya&%}8~`Pg$xgm}`S*=PA~9bol?3#u
zc%ILBJf4*kC#LR<j5xQe0rhY^fYR>n?%ewN`u#$oa0~zlA&Pn*>9K1S_Xr^j0Aq}C
z05CK(^d=MvEq{)Wk3ZHp^l&_Y($?12)o3*OoeEV_I}`M;7$HPqjPU>v3<j5cKHv8m
z4^aV>WHR~X+S*!J=M;rOL<lKsPR`8C%(~s~RRA0Xz$8hUh(sa})td|jh65^kz(~rG
zNaUd;NfQ7V1yGK~Vz-LLq7y*bXkb-<<zlhujKyNN0DqKeI+OJ$5{Y^J1U0JE_h*Sj
zVm_V8`sv=Q<bt9oHf>14*dm0GvZ5%qy;sQvno6b417HIHRsjUSQmNE=K9|b{>MZ6)
z9-0II$>nkZD$BA<M?5IbL6&6~ueB`yP{5#Q;hUk#maC%Y@fU^%JLMHC*AxRRzPjPh
z=(kNfoPQ49#*^8*huSWLujBDg_nY>c`)UyvAKYtt&(Bw`Rj#97oCN>`fBB=*_T%ni
z!@ggS*FN7c&NTx&vU8_{w`*L~w^ci)cSe)uqQ0$>Lz<iVwra=z&!I-@sdJ6Mv|*_Y
z&2}B^2=2-3-J1E=D%eq_ckHNuw3m*xs#XCzf`7XZzJ6%lwW50SuG@e;aZUq!+kib^
z3f?9l-{}XX(bCW=paypF!M(a)&vw?izFEZU0kz}eq4FRc4l}JP7?h2(Ru#NE8)tpF
z(5^ahzZ=i53#VDxiMmnncH=$XiF(e2GvQ1)6V8Og5&p~$EF3e3r3q)knQ$hY2?y|2
ztA916p00M~T)f)_XPZkLv0AMuUJ!&0S(e`;gfR6yxi1RM4&n@qF$O^pHfW)Qr&<DF
zfHo&YF0!Ze<1?XUj^iXXfy0a+W?+=#IO&tKp=IiD3~zcoo)tBqq8L13qW~Ztk7vc<
zaBNZlR20RV7K<edfT~F%BZ8FyP>aQq6@NwXCICtS5J3=jrhNX(+R!u_pe~X~r+og)
zf*|YwAQT6&S$;YouDZtDON=p&F-8d?B?HVsriNZAV~lf+xtFE`;;Q<~QmKgnKYy_~
zxAoVi;bOqPlm5k1qQ7no82SKrKA)fb^|#+|{PXY5{BhT@z725irQYN|cz<H$^GnY@
zy<@lAn+CXRqWAfHemWkHU)tV|pG&9H0ZEd29=*5OY_CU0M>i%Xz0bT}?<2e2-Y|Oq
YAM1ehWO5=7MF0Q*07*qoM6N<$f|_p_UjP6A

diff --git a/games/tetris/tetris/src/data/image.ppm b/games/tetris/tetris/src/data/image.ppm
index 639f3d31fa4d398327d91f0f8e5bf7af6fc6ed80..7275f2efa8902246b1fd4e1dc5ee1fc790a3555c 100644
GIT binary patch
literal 4334
zcmeI!v1(L76b9g}_YG1Ab}7=h3!5gA6gCzXf{hTi2(b?c2`Pgpq}RrE!D?SXVqPK1
z3*-$_iIUay*Ps2}f6twN#@xLKHai?9XV0A6z?Wg~dA`~0^&dU#^}GGSpxc?P>U`Z}
za<s-%?oal9cx>#9V$XE<tH*fjF!r2$|LE~zv>$t_gFTPQ)1BD!?CRE|_huY>J`Ha?
zUOoQ6o(B!qc7s(lSon)Btcs{zSQSybuqvW<VO2!!!m5bcg;f!?3#&qEFvow2=V$=)
z%lb;%(9nRn5@~fgti}9>gIc7oPk+Wx9n>PddwUT>bx@1+^Ylv$)j=)N>iuag<~JPF
zB0awT6+?AUi}dW>w-~B}`ad`WnJa3~sO1b{wm7w%A<Q19mNSIe<J1dhAah0S8MT}t
z%oeAXGlbdW)a{&;%Z!i9-Df&SWaK&Lh>V<9I&qH3$a$p`=ZK7)S2}f$$jEcf5g9qJ
zbmAP5k@HHoaCYQ2&IxkPIYG`kC&*dn1Uc`VAm^MD<g9ao+}b&dymIEHb>tS#C1KW=
z{@z&KX9MNDVdYw3IcIzoC(f&Rqtp3^&KM^aqutzA6`UgQn$rm92~H7s&1r=51g8kR
z<}|{2f>Q*>iN$C)pXF4+DFUxKjc}ge6oJ>AMmSG!+Wb9OyT10J;eE#Mm8gl#2bZXc
z%$^c8k=awCCNg_U)I?@aiJHjlDNz#{Jq_n)KCQGjcg7P)>U(@RNqvt!B=tS^kkt3s
dLsH*k4@rHGJtXy=J#fBvf$`q;XVm}ekKdyPxJdv2

literal 4334
zcmeH~u}T9$5QbMcEH2n<AzE5kn1cwh5V5ck!AjIu5Ff)b4`JsMq*sU!At}VhHxQf4
z`olDHGdnk%1G^o*Vw{Z4m!Da3eO!;5qy2GHH<L;I^EPs+wmx0HE=Mjq@0H7IwdWG%
z3zz#abJ@+P(~OE41<CPu%2_P~2MdsVa~L_>q2*u!lH=0>r+wJqU;&b6@r*P52plXx
za=g0Zw3{a!EI{%_jGXYj>M&nG^7HwU^B7(@Sb*lxTUdbR+ir>fz(R)RSUd}F{LlaM
z%#%#L&NELk^*YZy$<*sS^CVNR^URY>z0Pwd$rNmrXP#v0hvk`n3)BzDvzCmB@T?_c
zB0Ou!m<Z2WGA6>amW+w;oRAFFUC&xFCIdWc$(XF`IVo9qPD&P@laht!q-5baDOq?<
zOYVA3N*>@jDS0i=mSLJxo-M;Pr#xGRX-;{z4AY$QY#F9G<=HgM?uKQU=J|QH4AVS6
z&&9K4lHNh<)8d)#bIG%HJ<8oE_u0B0`S%$wT|ao{T=2}fAg(TW=3Lw#-E=qb()EM$
M>lQS+mGgV>4>6=x^#A|>

diff --git a/games/tetris/tetris/src/data/tiles.png b/games/tetris/tetris/src/data/tiles.png
index 0399e1ed0fa720b8fef0143bbd6d9b79a18d540a..c6cb4f6f93037ff9151d2dbdbdc83e97600f9faa 100644
GIT binary patch
delta 810
zcmV+_1J(S31HcB5BYy)2Nkl<Zc%1E*K}b_^9LK-8hZo%r!$Z@=Cc+#T-qh0&Iz*U<
z$S#gTVeAlt4jo1cQil>1Z(Smd@UR3oMunlbJ<w>oNZ7DZOvPkEHEPx+G&}tK|NX!J
z`}f{T^W^t3{@>qsdymh1u<!2_004V0eK0AODg{Ri{CK{<Xn)RZ<>OgB%#YuKv*ygq
zS}L?S#*cTtJTzyP6PZMKk{|bO_ABlumk-YA{CFw-)tuR!k1q{{`0>%TO>-u_nw(gO
z0I098H%}#by<XdluIsiL4S%2vptsWnfLJRj132B-1Atg7DFe8Awi5ucR#FCV?n)Z~
zVy&bMpx4(3fPYvkDFdjx&;x*2D=7nL_g)4-tT#3`lo=8|iQ3v)(VU*17LS2Iz~UFU
zv;)fSHp8Tt0b~96Q<l6|pC(4$<aWSVzdBP#ro-<RGrKEAFxDTRH<8((dBn{6P63Q{
zJo{_kZ8ARo4>>T_Pwze>uf^#QBX75N!C2pTf00a2bAP3nDZKj$#(I8z1jnU{{ZDrr
z+NaPybuf{*1Fb%7Jn9^eIz>myIQ;Ia!H%lI4$+Y^4VtIV)!pan79IJ%ntX^v5s4Zc
zqgtGfVSn|ozgl#pjHkJ>YoMlUphk4$YyFL+*SUOE7*6TywqLk4vTd9BaqqQl=1J*=
zZ3YkQ-+#E<E8lH1v-dySU#krLGi4Y+pHQ~cVJL(C3{PaOLn0<s*hfxu6k?!@8F^xI
zsAE_=)G@3b>KN7zbqs5VI)=4F9mCo=9%->ui8`EuH4sac0Bq&s)ZxrzX$oLwEkzy9
zOqQkqmJ=E3a0;@(av}pDmdjIzQ?LeNxjcZ)`F}WdI5SzA0!XhWslzGBrdN|@^S?@?
zePo}tQA9a7S^&aeeOVGw&gx;>#)!2fq8wTr!y>@?vLvFM2u~&eu)ZwcPc9EySmt!F
zzAT9-FAas30I<F+i6~DjM9SF=k4hTY?xz$ViF>vrJ`(qANqi*k*^>B3+_UBTVIy(R
omLtSRwEHQ=N9C|CbN92>Z#ZZ~l>mwy4gdfE07*qoM6N<$f=nEPPXGV_

delta 360
zcmX@W*2FwPxt`I})5S5QVovg(vX0q}0uMg#^9nd?Yn|Jab!K(FP{`&(ezO)x{q{Z0
zv8wZvm1Dr!#G9NfS2eV>ghGlxJaBBvija_yusHi=LhC<!%f2&zKk|qOJAV3fqN#n|
zALnQL9@d^Ya6lnjwOi-M`<uQg?=G{)@bK`cPBS~vl$|H<@XW5hg1M-F?sCyCOKW+h
z;{HF?rw$x=(6%b=diQ^gdsh6Pns!gN-*jVUZTf_r`H~LLZ0dN5EcFz$xj#*uGDT$5
zgDz3+2|LTm%6MED)RIJcnNBfQIV@I9U&EklnarATQc~N&`&<NLRM9c63zLn_8m7%T
z$(C_)=9vaL-c+epBQJ;k#5SY1PLffQeQbul%@Ry*+Rj#u7aNudOYmku7zvHv|9)Wh
zxX*9j@a6A^X7&gB<m(t-{uX3_G9I!|0E#%I02MGW9Ilyq*f;;;Wd<PdboFyt=akR{
E0N{(CVE_OC

diff --git a/games/tetris/tetris/src/game_tetris.rs b/games/tetris/tetris/src/game_tetris.rs
index 0b38bf1..79fcd77 100644
--- a/games/tetris/tetris/src/game_tetris.rs
+++ b/games/tetris/tetris/src/game_tetris.rs
@@ -42,7 +42,7 @@ fn vis_addon() {
 }
 
 /// The "How to Play" page (one line per line of the screen, 45 small letters wide).
-const CONTROLS: &str = T!("\n                HOW TO PLAY\n\n    - <LEFT> and <RIGHT> to move\n    - <DOWN> for soft drop\n    - <UP> for hard drop\n    - <OK> & <TOOLBOX> to rotate left and right\n    - <BACKSPACE> (<clear>) to hold the tetri\n    - <BACK> to pause\n\n    Every full line disappears\n    Get more points by clearing\n      multiple lines at once !\n    The level increases every 10 lines.\n    You lose when the stack reaches the top. \n    Hold the tetri to keep it for later !                                 ");
+const CONTROLS: &str = T!("\n                HOW TO PLAY\n\n    - <LEFT> and <RIGHT> to move\n    - <DOWN> for soft drop\n    - <UP> for hard drop\n    - <OK> & <TOOLBOX> to rotate left and right\n    - <BACKSPACE> (<clear>) to hold the piece\n    - <BACK> to pause\n\n    Every full line disappears\n    Get more points by clearing\n      multiple lines at once !\n    The level increases every 10 lines.\n    You lose when the stack reaches the top. \n    Hold a piece to keep it for later !                                 ");
 
 pub fn start() {
     let mut opt: [&mut Setting; 3] = [
@@ -74,7 +74,7 @@ pub fn start() {
 
     loop {
         let menu_action: StartMenuAction<TetrisSave> = start_menu_with_save(
-            "TETRIS \0",
+            "STACKFALL \0",
             &mut opt,
             &COLOR_CONFIG,
             vis_addon,
diff --git a/games/tetris/tetris/src/lib.rs b/games/tetris/tetris/src/lib.rs
index 4c731e5..d4c0d15 100644
--- a/games/tetris/tetris/src/lib.rs
+++ b/games/tetris/tetris/src/lib.rs
@@ -79,5 +79,5 @@ pub fn thumbnail(_: Point) {
 }
 
 pub fn get_name() -> String<15> {
-    String::try_from("Tetris\0").unwrap()
+    String::try_from("Stackfall\0").unwrap()
 }
diff --git a/games/tetris/tetris/src/main.rs b/games/tetris/tetris/src/main.rs
index 0e3bc4e..2eee344 100644
--- a/games/tetris/tetris/src/main.rs
+++ b/games/tetris/tetris/src/main.rs
@@ -9,7 +9,7 @@ pub mod tetris_save;
 
 #[used]
 #[link_section = ".rodata.eadk_app_name"]
-pub static EADK_APP_NAME: [u8; 7] = *b"TETRIS\0";
+pub static EADK_APP_NAME: [u8; 10] = *b"STACKFALL\0";
 
 #[used]
 #[link_section = ".rodata.eadk_api_level"]
diff --git a/launcher/assets/icon.png b/launcher/assets/icon.png
index b2a8fbe5cecf383da1dcb64ddd2a71cf530662fd..b80f92aae177fde74a84f3b9bb749bcfff7bd179 100644
GIT binary patch
literal 4225
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
Xn8>35ruK7|00000NkvXXu0mjfMzb--

literal 5591
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

diff --git a/launcher/lang/fr.txt b/launcher/lang/fr.txt
index 28fd6d5..13e9781 100644
--- a/launcher/lang/fr.txt
+++ b/launcher/lang/fr.txt
@@ -33,14 +33,14 @@ Uninstall	Supprimer
 Reset all games	Tout effacer
 Deletes the progress of every game	Efface la progression de tous les jeux
 Start as Matrices	Démarrer en Matrices
-A math app first; NumPlay opens in secret	D'abord une app de maths, NumPlay en secret
+A math app first; Calcade opens in secret	D'abord une app de maths, Calcade en secret
 Show a hint	Afficher un indice
 Matrices names the secret, small and gray	Matrices indique le secret, en petit et gris
 Secret way in	Accès secret
-Opens NumPlay from Matrices	Ouvre NumPlay depuis Matrices
+Opens Calcade from Matrices	Ouvre Calcade depuis Matrices
 Your calculator's software doesn't allow apps to uninstall parts of themselves. Update it to Epsilon 21 or newer at my.numworks.com, then try again.	Le logiciel de ta calculatrice ne permet pas aux apps de supprimer une partie d'elles-mêmes. Mets-le à jour vers Epsilon 21 ou plus récent sur my.numworks.com, puis réessaie.
 The battery is too low to safely erase flash memory. Plug in your calculator, then try again.	La batterie est trop faible pour effacer la mémoire flash sans risque. Branche ta calculatrice, puis réessaie.
-Something went wrong while erasing. To be safe, reinstall NumPlay from my.numworks.com/apps.	Un problème est survenu pendant l'effacement. Par sécurité, réinstalle NumPlay depuis my.numworks.com/apps.
+Something went wrong while erasing. To be safe, reinstall Calcade from jeux.w-production.fr.	Un problème est survenu pendant l'effacement. Par sécurité, réinstalle Calcade depuis jeux.w-production.fr.
 Hold OK	Maintiens OK
 every game	tous les jeux
 Every game	Tous les jeux
@@ -62,38 +62,38 @@ Don't turn off your calculator.	N'éteins pas ta calculatrice.
 Uninstall 	Supprimer 
 This deletes 	Cela supprime 
  and all of its saved progress. You can't undo this.	 et toute sa progression. C'est définitif.
-To play it again, reinstall NumPlay from my.numworks.com/apps. Your other games keep their progress.	Pour y rejouer, réinstalle NumPlay depuis my.numworks.com/apps. Tes autres jeux gardent leur progression.
-Crossy Road	Crossy Road
+To play it again, reinstall Calcade from jeux.w-production.fr. Your other games keep their progress.	Pour y rejouer, réinstalle Calcade depuis jeux.w-production.fr. Tes autres jeux gardent leur progression.
+Piou Road	Piou Road
 Jump to the beat	Saute en rythme
 Hop, dodge, survive	Saute, esquive, survis
-Mine, craft, survive	Mine, fabrique, survis
+Mine, build, survive	Mine, construis, survis
 Drive, flip, finish	Conduis, fais des saltos, arrive
-Balatro	Balatro
-Poker hands, wild jokers	Mains de poker, jokers fous
-Buckshot Roulette	Buckshot Roulette
-You, the Dealer, one shotgun	Toi, le croupier, un fusil
-Block Blast	Block Blast
+Jokeria	Jokeria
+Poker hands, wild Jokers	Mains de poker et Jokers fous
+Chevrotine	Chevrotine
+You, the Automaton, one shotgun	Toi, l'Automate, un fusil
+Block Boom	Block Boom
 Fit the blocks, blast the lines	Place les blocs, fais sauter les lignes
-Portal Returns	Portal Returns
-Think with portals	Pense avec les portails
-Tetris	Tetris
+Warp Lab	Warp Lab
+Two warps, one way out	Deux passages, une sortie
+Stackfall	Stackfall
 Stack and clear lines	Empile et efface les lignes
 Chess	Échecs
 Bots, puzzles, 2 players	Bots, problèmes, 2 joueurs
-Flappy Bird	Flappy Bird
+Flappix	Flappix
 Flap through the pipes	Vole entre les tuyaux
-Pac-Man	Pac-Man
-Eat dots, dodge ghosts	Mange les points, fuis les fantômes
+Munchy Maze	Munchy Maze
+Munch dots, dodge monsters	Croque les points, fuis les monstres
 Snake	Snake
 Eat apples, grow long	Mange des pommes, grandis
-Connect Four	Puissance 4
+Line Up 4	Aligne 4
 Four in a row wins	Quatre alignés pour gagner
 Solitaire	Solitaire
 The classic card game	Le jeu de cartes classique
 Slide, merge, reach 2048	Glisse, fusionne, atteins 2048
 Minesweeper	Démineur
 Clear the field, flag the mines	Déblaie le terrain, pose les drapeaux
-Block Breaker	Casse-briques
+Brick Breaker	Casse-briques
 Break every brick	Casse toutes les briques
 Backgrounds, clocks, timers	Fonds, horloges, minuteurs
 # (names that stay as they are)
@@ -103,11 +103,10 @@ NumDrive	NumDrive
 2048	2048
 NumVisuals	NumVisuals
 # the games' credits
-Inspired by Minecraft, not affiliated with Mojang	Inspiré de Minecraft, sans lien avec Mojang
 By Tatone26, from All the Apps	Par Tatone26, tiré d'All the Apps
 Inspired by Tatone26's All the Apps	Inspiré d'All the Apps de Tatone26
-Based on 2048 by Gabriele Cirulli	D'après 2048 de Gabriele Cirulli
-Based on Block Blast! by Hungry Studio	D'après Block Blast! de Hungry Studio
+Based on 2048 by Gabriele Cirulli (MIT)	D'après 2048 de Gabriele Cirulli (MIT)
+
 # a game the RAM of the calculator's software is too small for
 Needs 	Il manque 
  KB more memory	 Ko de mémoire
diff --git a/launcher/lang/zh.txt b/launcher/lang/zh.txt
index dfc156a..6834469 100644
--- a/launcher/lang/zh.txt
+++ b/launcher/lang/zh.txt
@@ -32,14 +32,14 @@ Uninstall	卸载
 Reset all games	重置所有游戏
 Deletes the progress of every game	删除所有游戏的进度
 Start as Matrices	以“矩阵”启动
-A math app first; NumPlay opens in secret	先显示数学应用，再秘密打开 NumPlay
+A math app first; Calcade opens in secret	先显示数学应用，再秘密打开 Calcade
 Show a hint	显示提示
 Matrices names the secret, small and gray	“矩阵”以灰色小字提示暗号
 Secret way in	秘密入口
-Opens NumPlay from Matrices	从“矩阵”打开 NumPlay
+Opens Calcade from Matrices	从“矩阵”打开 Calcade
 Your calculator's software doesn't allow apps to uninstall parts of themselves. Update it to Epsilon 21 or newer at my.numworks.com, then try again.	你的计算器系统不允许应用卸载自身的一部分。请在 my.numworks.com 将系统更新到 Epsilon 21 或更高版本，然后重试。
 The battery is too low to safely erase flash memory. Plug in your calculator, then try again.	电量过低，无法安全擦除闪存。请给计算器充电，然后重试。
-Something went wrong while erasing. To be safe, reinstall NumPlay from my.numworks.com/apps.	擦除时出错。为安全起见，请在 my.numworks.com/apps 重新安装 NumPlay。
+Something went wrong while erasing. To be safe, reinstall Calcade from jeux.w-production.fr.	擦除时出错。为安全起见，请在 jeux.w-production.fr 重新安装 Calcade。
 Hold OK	按住 OK
 every game	所有游戏
 Every game	所有游戏
@@ -61,38 +61,38 @@ Don't turn off your calculator.	请勿关闭计算器。
 Uninstall 	卸载
 This deletes 	这将删除
  and all of its saved progress. You can't undo this.	及其所有存档。此操作无法撤销。
-To play it again, reinstall NumPlay from my.numworks.com/apps. Your other games keep their progress.	如需再次游玩，请在 my.numworks.com/apps 重新安装 NumPlay。其他游戏的进度会保留。
-Crossy Road	天天过马路
+To play it again, reinstall Calcade from jeux.w-production.fr. Your other games keep their progress.	如需再次游玩，请在 jeux.w-production.fr 重新安装 Calcade。其他游戏的进度会保留。
+Piou Road	小啾过马路
 Jump to the beat	踩着节拍跳跃
 Hop, dodge, survive	跳跃、闪避、活下去
-Mine, craft, survive	挖矿、合成、生存
+Mine, build, survive	挖矿、建造、生存
 Drive, flip, finish	驾驶、翻转、冲线
-Balatro	小丑牌
-Poker hands, wild jokers	扑克牌型，狂野小丑
-Buckshot Roulette	恶魔轮盘
-You, the Dealer, one shotgun	你、庄家、一把霰弹枪
-Block Blast	方块爆破
+Jokeria	小丑乐园
+Poker hands, wild Jokers	扑克牌型，狂野小丑
+Chevrotine	霰弹夜
+You, the Automaton, one shotgun	你、自动人偶、一把霰弹枪
+Block Boom	方块嘭
 Fit the blocks, blast the lines	摆放方块，消除整行
-Portal Returns	传送门归来
-Think with portals	用传送门思考
-Tetris	俄罗斯方块
+Warp Lab	跃迁实验室
+Two warps, one way out	两道跃迁门，一个出口
+Stackfall	叠落方块
 Stack and clear lines	堆叠并消除行
 Chess	国际象棋
 Bots, puzzles, 2 players	电脑对手、谜题、双人对战
-Flappy Bird	笨鸟先飞
+Flappix	扑扑鸟
 Flap through the pipes	拍着翅膀穿过水管
-Pac-Man	吃豆人
-Eat dots, dodge ghosts	吃豆子，躲幽灵
+Munchy Maze	嚼嚼迷宫
+Munch dots, dodge monsters	吃豆子，躲怪物
 Snake	贪吃蛇
 Eat apples, grow long	吃苹果，越长越长
-Connect Four	四子棋
+Line Up 4	连成四
 Four in a row wins	四子连线即获胜
 Solitaire	纸牌接龙
 The classic card game	经典纸牌游戏
 Slide, merge, reach 2048	滑动、合并、达到 2048
 Minesweeper	扫雷
 Clear the field, flag the mines	清理雷区，标出地雷
-Block Breaker	打砖块
+Brick Breaker	打砖块
 Break every brick	打碎每一块砖
 Backgrounds, clocks, timers	背景、时钟、计时器
 # (names that stay as they are)
@@ -102,11 +102,9 @@ NumDrive	NumDrive
 2048	2048
 NumVisuals	NumVisuals
 # the games' credits
-Inspired by Minecraft, not affiliated with Mojang	灵感来自《我的世界》，与 Mojang 无关
 By Tatone26, from All the Apps	作者 Tatone26，出自 All the Apps
 Inspired by Tatone26's All the Apps	灵感来自 Tatone26 的 All the Apps
-Based on 2048 by Gabriele Cirulli	改编自 Gabriele Cirulli 的 2048
-Based on Block Blast! by Hungry Studio	改编自 Hungry Studio 的 Block Blast!
+Based on 2048 by Gabriele Cirulli (MIT)	改编自 Gabriele Cirulli 的 2048（MIT）
 # a game the RAM of the calculator's software is too small for
 Needs 	内存还差 
  KB more memory	 KB
diff --git a/launcher/src/calcade.c b/launcher/src/calcade.c
new file mode 100644
index 0000000..3a5e64f
--- /dev/null
+++ b/launcher/src/calcade.c
@@ -0,0 +1,564 @@
+/* Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3. */
+/* Calcade dressing: start-up intro, "update required" screen and the save
+ * file numplay.sys (CLC2). Ported from the Calcade kit (Voie Libre): the same
+ * timeline and effects, drawn with NumPlay's strip renderer (gfx.c). */
+#include <string.h>
+#include "calcade.h"
+#include "ui.h"
+#include "inflate.h"
+
+#ifndef NP_VERSION
+#define NP_VERSION "?"
+#endif
+#define URL_STUDIO "jeux.w-production.fr"
+#define URL_MAJ "jeux.w-production.fr/#/mise-a-jour"
+
+/* Calcade's colours */
+#define C_PAPER HEX(0x0E1431)
+#define C_SURFACE HEX(0x161E44)
+#define C_INK_LIGHT HEX(0x9DB2FF)
+#define C_FLUO HEX(0xFFE14D)
+#define C_MARGIN HEX(0xE2453C)
+#define C_GREY HEX(0xA3ACCB)
+#define C_CYAN HEX(0x6FD8FF)
+#define C_WHITE 0xFFFF
+
+static const uint8_t *art; /* the unpacked pictures (in the arena, while the intro runs) */
+
+static float clampf(float v, float a, float b) { return v < a ? a : v > b ? b : v; }
+
+/* small maths of our own (libm's would add kilobytes the calculator's app space doesn't have) */
+#define PI_F 3.14159265f
+static float cc_floor(float x) {
+  int i = (int)x;
+  return (float)(x < (float)i ? i - 1 : i);
+}
+static float cc_sin(float x) { /* within about 0.001 */
+  x -= 2 * PI_F * cc_floor(x * (1 / (2 * PI_F)) + 0.5f); /* -pi..pi */
+  float y = x * (4 / PI_F) - x * (x < 0 ? -x : x) * (4 / (PI_F * PI_F));
+  return y + 0.225f * (y * (y < 0 ? -y : y) - y);
+}
+static float cc_cos(float x) { return cc_sin(x + PI_F / 2); }
+static float cc_exp_neg(float x) { /* e^-x for x >= 0 */
+  if (x > 20) return 0;
+  float r = 1;
+  while (x > 1) r *= 0.36787944f, x -= 1;
+  return r * (1 - x + x * x * (0.5f - x * (1.0f / 6) + x * x * (1.0f / 24)));
+}
+static float cc_fmod(float a, float b) { return a - b * cc_floor(a / b); } /* (always positive here) */
+static float cc_ceil(float x) { return -cc_floor(-x); }
+#define ceilf cc_ceil
+#define sinf cc_sin
+#define cosf cc_cos
+#define floorf cc_floor
+#define fmodf cc_fmod
+#define fabsf __builtin_fabsf
+#define sqrtf __builtin_sqrtf
+static inline color_t *px(int x, int y) { return gfx_buf + (y - gfx_y0) * SCREEN_W + x; }
+
+/* ================================================================ text (UTF-8, accents) */
+static const np_glyph_t *cc_glyph(const cc_font_t *f, uint32_t cp) {
+  if (cp >= 32 && cp < 127) return &f->base->glyphs[cp - f->base->first];
+  for (int i = 0; i < f->count; i++)
+    if (f->cps[i] == cp) return &f->glyphs[i];
+  return &f->base->glyphs['?' - f->base->first];
+}
+
+static uint32_t utf8(const char **s) {
+  const uint8_t *p = (const uint8_t *)*s;
+  uint32_t c = *p++;
+  if (c >= 0xC0 && c < 0xE0 && (*p & 0xC0) == 0x80) c = (c & 0x1F) << 6 | (*p++ & 0x3F);
+  else if (c >= 0xE0 && c < 0xF0 && (p[0] & 0xC0) == 0x80 && (p[1] & 0xC0) == 0x80)
+    c = (c & 0x0F) << 12 | (uint32_t)(p[0] & 0x3F) << 6 | (p[1] & 0x3F), p += 2;
+  *s = (const char *)p;
+  return c;
+}
+
+static int cc_text_width(const cc_font_t *f, const char *s) {
+  int w = 0;
+  while (*s) {
+    w += cc_glyph(f, utf8(&s))->advance;
+  }
+  return w;
+}
+
+static void cc_text(const cc_font_t *f, int x, int baseline, const char *s, color_t c, int a) {
+  if (baseline + f->base->descent <= gfx_y0 || baseline - f->base->ascent - 5 >= gfx_y1) return;
+  while (*s) {
+    uint32_t cp = utf8(&s);
+    const np_glyph_t *g = cc_glyph(f, cp);
+    const uint8_t *data = cp >= 32 && cp < 127 ? f->base->data : f->data;
+    if (g->w) gfx_mask(data + g->offset, g->w, g->h, x + g->x, baseline + g->y, c, a);
+    x += g->advance;
+  }
+}
+
+static void cc_text_c(const cc_font_t *f, int cx, int baseline, const char *s, color_t c, int a) {
+  cc_text(f, cx - cc_text_width(f, s) / 2, baseline, s, c, a);
+}
+
+/* ================================================================ drawing (in the current strip) */
+static const int8_t bayer4[16] = {0, 8, 2, 10, 12, 4, 14, 6, 3, 11, 1, 9, 15, 7, 13, 5};
+
+static float fast_atan2(float y, float x) {
+  float ax = fabsf(x), ay = fabsf(y);
+  float mx = ax > ay ? ax : ay, mn = ax > ay ? ay : ax;
+  float a = mx > 1e-6f ? mn / mx : 0.0f;
+  float s2 = a * a;
+  float r = ((-0.0464964749f * s2 + 0.15931422f) * s2 - 0.327622764f) * s2 * a + a;
+  if (ay > ax) r = 1.57079637f - r;
+  if (x < 0) r = 3.14159274f - r;
+  if (y < 0) r = -r;
+  return r;
+}
+
+/* Night-blue paper: radial glow, turning rays, scrolling grid (fade 0..32). */
+static void cc_background(float t, float cx, float cy, float rays, int fade) {
+  const float fa = NP_CLAMP(fade, 0, 32) / 32.0f;
+  const float er = 11, eg = 15, eb = 40;
+  const float gr = 46 - er, gg = 66 - eg, gb = 150 - eb;
+  const float ph = t * 0.035f;
+  const int ox = (int)(t * 7.0f), oy = (int)(t * 3.5f);
+  for (int y = gfx_y0; y < gfx_y1; y++) {
+    color_t *row = px(0, y);
+    float dy = y + 0.5f - cy;
+    int gyl = ((y + oy) & 15) == 0, gym = ((y + oy) & 63) == 0;
+    const int8_t *bay = bayer4 + ((y & 3) << 2);
+    for (int x = 0; x < SCREEN_W; x++) {
+      float dx = x + 0.5f - cx;
+      float d2 = (dx * dx + dy * dy) * (1.0f / (150.0f * 150.0f));
+      float f = 1.0f / (1.0f + 3.2f * d2);
+      float r = er + gr * f, g = eg + gg * f, b = eb + gb * f;
+      if (rays > 0.0f) {
+        float a = fast_atan2(dy, dx) * (14.0f / 6.2831853f) + ph * 14.0f;
+        float v = a - floorf(a);
+        float w = v < 0.5f ? v * 2.0f : 2.0f - v * 2.0f;
+        w = w * w * w;
+        float k = rays * w * f * (1.0f - 1.0f / (1.0f + 40.0f * d2)) * 34.0f;
+        r += k * 0.62f, g += k * 0.70f, b += k;
+      }
+      int gxl = ((x + ox) & 15) == 0, gxm = ((x + ox) & 63) == 0;
+      if (gxl | gyl) {
+        float k = (gxm | gym) ? 15.0f : 8.0f;
+        k *= 0.45f + 0.55f * f;
+        r += k * 0.59f, g += k * 0.69f, b += k;
+      }
+      r *= fa, g *= fa, b *= fa;
+      float dth = bay[x & 3] * (1.0f / 16.0f);
+      int R = (int)(r * (31.0f / 255.0f) + dth), G = (int)(g * (63.0f / 255.0f) + dth),
+          B = (int)(b * (31.0f / 255.0f) + dth);
+      if (R > 31) R = 31;
+      if (G > 63) G = 63;
+      if (B > 31) B = 31;
+      row[x] = (color_t)(R << 11 | G << 5 | B);
+    }
+  }
+}
+
+/* A picture scaled around its anchor, tinted towards `tint` (ta 0..32), with an opacity (0..32)
+ * and a diagonal glint at x + y/2 = shine (-9999: none). */
+static void cc_sprite(const cc_sprite_t *s, float cx, float cy, float scale, color_t tint, int ta, int alpha,
+                      int shine) {
+  if (scale <= 0.02f || alpha <= 0) return;
+  float x0 = cx - s->ox * scale, y0 = cy - s->oy * scale, inv = 1.0f / scale;
+  int w = s->w < 256 ? s->w : 256;
+  int ya = (int)ceilf(y0 - 0.5f), yb = (int)ceilf(y0 + s->h * scale - 0.5f);
+  int dx0 = (int)ceilf(x0 - 0.5f), dx1 = (int)ceilf(x0 + w * scale - 0.5f);
+  ya = NP_MAX(ya, gfx_y0), yb = NP_MIN(yb, gfx_y1);
+  dx0 = NP_MAX(dx0, 0), dx1 = NP_MIN(dx1, SCREEN_W);
+  if (ya >= yb || dx0 >= dx1) return;
+  ta = NP_CLAMP(ta, 0, 32), alpha = NP_MIN(alpha, 32);
+  const color_t *pal = (const color_t *)(const void *)(art + s->pal);
+  const uint16_t *rows = (const uint16_t *)(const void *)(art + s->rows);
+  uint8_t row[256];
+  int last = -1;
+  for (int y = ya; y < yb; y++) {
+    int ry = (int)((y + 0.5f - y0) * inv);
+    if (ry < 0 || ry >= s->h) continue;
+    if (ry != last) {
+      memset(row, 0, (size_t)w);
+      const uint8_t *q = art + s->data + rows[ry];
+      int x = 0;
+      for (;;) {
+        int skip = *q++, n = *q++;
+        if (!skip && !n) break;
+        x += skip;
+        for (int i = 0; i < n; i++, x++) {
+          uint8_t ci = *q++;
+          if (x < w) row[x] = ci;
+        }
+      }
+      last = ry;
+    }
+    color_t *p = px(0, y);
+    for (int x = dx0; x < dx1; x++) {
+      int rx = (int)((x + 0.5f - x0) * inv);
+      if (rx < 0 || rx >= w) continue;
+      uint8_t ci = row[rx];
+      if (!ci) continue;
+      color_t c = pal[ci];
+      if (ta) c = gfx_mix(c, tint, ta);
+      if (shine > -1000) {
+        int d = x + (y >> 1) - shine;
+        if (d < 0) d = -d;
+        if (d < 9) c = gfx_mix(c, 0xFFFF, (9 - d) * 3);
+      }
+      p[x] = alpha >= 32 ? c : gfx_mix(p[x], c, alpha);
+    }
+  }
+}
+
+/* An antialiased ring of radius r and half thickness th (alpha 0..32). */
+static void cc_ring(float cx, float cy, float r, float th, color_t c, int alpha) {
+  if (alpha <= 0 || r <= 0) return;
+  float ro = r + th, ri = r - th;
+  int ya = NP_MAX((int)(cy - ro - 1), gfx_y0), yb = NP_MIN((int)(cy + ro + 2), gfx_y1);
+  alpha = NP_MIN(alpha, 32);
+  for (int y = ya; y < yb; y++) {
+    float dy = y + 0.5f - cy, dy2 = dy * dy;
+    if (dy2 > ro * ro) continue;
+    float xo = sqrtf(ro * ro - dy2);
+    float xi = ri > 0 && dy2 < ri * ri ? sqrtf(ri * ri - dy2) : -1.0f;
+    int xa = NP_MAX((int)(cx - xo), 0), xb = NP_MIN((int)(cx + xo) + 1, SCREEN_W);
+    color_t *p = px(0, y);
+    for (int x = xa; x < xb; x++) {
+      float dx = x + 0.5f - cx;
+      if (xi > 0 && fabsf(dx) < xi - 1.5f) {
+        x = (int)(cx + xi - 2.0f);
+        continue;
+      }
+      float cov = 1.0f - fabsf(sqrtf(dx * dx + dy2) - r) / th;
+      if (cov <= 0) continue;
+      p[x] = gfx_mix(p[x], c, (int)(alpha * cov + 0.5f));
+    }
+  }
+}
+
+/* rounded box / box with an opacity 0..32 (the kit's scale) */
+static void cc_round(int x, int y, int w, int h, int r, color_t c, int a32) {
+  if (a32 > 0) gfx_rrect(x, y, w, h, r, c, NP_MIN(a32, 32) * 8);
+}
+static void cc_fill_a(int x, int y, int w, int h, color_t c, int a32) {
+  if (a32 > 0) gfx_fill_alpha(x, y, w, h, c, NP_MIN(a32, 32) * 8);
+}
+
+/* ================================================================ the intro
+ * Timeline (s): 0.00 fade in   0.30 the logo bursts in (ring, shards)
+ * 1.00 C-A-L-C-A-D-E drop one by one   1.55 / 1.95 glints on the logo, the word
+ * 2.05 "présente"   2.40 the studio's address   3.95 fade out */
+#define IN_END 4.35f
+#define IN_OUT 3.95f
+#define IN_LX 160.0f
+#define IN_LY 79.0f
+#define IN_WY 161.0f
+
+static float ease_out_back(float u, float k) {
+  u = clampf(u, 0, 1) - 1.0f;
+  return 1.0f + (k + 1.0f) * u * u * u + k * u * u;
+}
+static float ease_out(float u) {
+  u = 1.0f - clampf(u, 0, 1);
+  return 1.0f - u * u * u;
+}
+static uint32_t ihash(uint32_t x) {
+  x ^= x >> 16, x *= 0x7FEB352Du, x ^= x >> 15, x *= 0x846CA68Bu, x ^= x >> 16;
+  return x;
+}
+static float hrand(uint32_t i, uint32_t k) { return (ihash(i * 0x9E3779B9u + k * 0x85EBCA6Bu) & 0xFFFF) / 65535.0f; }
+
+static void sparkle(float x, float y, float t, float t0, float size) {
+  float u = (t - t0) / 0.5f;
+  if (u <= 0 || u >= 1) return;
+  cc_sprite(&cc_spark, x, y, size * sinf(u * 3.14159f), 0, 0, 32, -9999);
+}
+
+/* floating dust and little "+" signs, as on the website */
+static void dust(float t, float fade) {
+  for (int i = 0; i < 22; i++) {
+    float sp = 6 + 10 * hrand(i, 1);
+    float x = fmodf(hrand(i, 2) * 340 + sinf(t * 0.7f + i) * 6, 340) - 10;
+    float y = fmodf(hrand(i, 3) * 260 - t * sp + 520, 260) - 10;
+    if (y < gfx_y0 - 4 || y > gfx_y1 + 4) continue;
+    int a = (int)((6 + 8 * hrand(i, 4)) * (0.6f + 0.4f * sinf(t * 2.0f + i * 1.7f)) * fade);
+    color_t c = i % 3 ? C_INK_LIGHT : C_FLUO;
+    if (i % 4 == 0) {
+      cc_fill_a((int)x - 2, (int)y, 5, 1, c, a);
+      cc_fill_a((int)x, (int)y - 2, 1, 5, c, a);
+    } else {
+      int d = 1 + (int)(hrand(i, 5) * 2.5f);
+      cc_round((int)x, (int)y, d, d, d / 2, c, a);
+    }
+  }
+}
+
+static const color_t shard_colours[5] = {C_WHITE, C_FLUO, C_MARGIN, C_INK_LIGHT, C_FLUO};
+
+static void intro_scene(void *ctx) {
+  const float t = *(const float *)ctx;
+  float rays = clampf((t - 0.35f) / 0.9f, 0, 1);
+  cc_background(t, IN_LX, IN_LY + 6, rays * 0.9f, (int)(32 * ease_out(t / 0.45f)));
+  dust(t, clampf(t / 0.8f, 0, 1));
+  /* ---- the logo */
+  float lu = (t - 0.30f) / 0.62f;
+  if (lu > 0) {
+    float sc = ease_out_back(lu, 2.4f);
+    float bob = sinf((t - 0.92f) * 2.3f) * 2.6f * clampf((t - 0.92f) / 0.6f, 0, 1);
+    float ly = IN_LY + bob;
+    float sw = 64 * sc - bob * 2;
+    if (sw > 6) { /* soft shadow under the logo */
+      int sy = (int)(IN_LY + 58 * sc);
+      for (int k = 0; k < 3; k++) {
+        int w = (int)(sw * (1.0f - 0.25f * k)), h = 8 - 2 * k;
+        cc_round(160 - w / 2, sy - h / 2, w, h, h / 2, RGB(8, 8, 32), 7);
+      }
+    }
+    float ru = (t - 0.42f) / 0.7f; /* shock wave and yellow ring */
+    if (ru > 0 && ru < 1) {
+      float e = ease_out(ru);
+      cc_ring(IN_LX, IN_LY, 30 + 120 * e, 2.5f + 4.0f * (1 - ru), C_WHITE, (int)(26 * (1 - ru)));
+      cc_ring(IN_LX, IN_LY, 22 + 80 * ease_out(ru * 1.3f), 1.6f, C_FLUO, (int)(20 * clampf(1 - ru * 1.3f, 0, 1)));
+    }
+    float bt = t - 0.42f; /* 30 coloured shards */
+    if (bt > 0 && bt < 1.5f) {
+      for (int i = 0; i < 30; i++) {
+        float life = 0.8f + 0.7f * hrand(i, 11);
+        if (bt > life) continue;
+        float ang = 6.2831853f * (i + hrand(i, 12) * 0.8f) / 30.0f;
+        float v = 70 + 120 * hrand(i, 13);
+        float k = 1.0f - cc_exp_neg(bt * 3.2f);
+        float x = IN_LX + cosf(ang) * v * k / 3.2f + cosf(ang) * 40;
+        float y = IN_LY + sinf(ang) * v * k / 3.2f + sinf(ang) * 40 + 45 * bt * bt;
+        if (y < gfx_y0 - 6 || y > gfx_y1 + 6) continue;
+        float q = 1.0f - bt / life;
+        int d = (int)(1 + 3.5f * q * (0.5f + hrand(i, 14)));
+        cc_round((int)x - d / 2, (int)y - d / 2, d, d, d / 2, shard_colours[i % 5], (int)(32 * q));
+      }
+    }
+    int ta = (int)(32 * clampf(1.0f - lu * 2.2f, 0, 1)); /* white flash as it appears */
+    float shl = -9999;
+    float su = (t - 1.55f) / 0.45f;
+    if (su > 0 && su < 1) shl = 160 - 70 + 160 * su + ly * 0.5f;
+    cc_sprite(&cc_logo, IN_LX, ly, sc, C_WHITE, ta, 32, (int)shl);
+    sparkle(IN_LX + 31, ly - 30, t, 1.35f, 1.0f);
+    sparkle(IN_LX - 36, ly + 18, t, 2.75f, 0.8f);
+  }
+  /* ---- the word CALCADE */
+  static const cc_sprite_t *const word[7] = {&cc_C, &cc_A, &cc_L, &cc_C, &cc_A, &cc_D, &cc_E};
+  float sh = -9999;
+  float wu = (t - 1.95f) / 0.6f;
+  if (wu > 0 && wu < 1) sh = 160 - 140 + 290 * wu + IN_WY * 0.5f;
+  if (IN_WY + 40 > gfx_y0 && IN_WY - 40 < gfx_y1)
+    for (int i = 0; i < 7; i++) {
+      float u = (t - 1.00f - i * 0.075f) / 0.42f;
+      if (u <= 0) continue;
+      float sc = 0.35f + 0.65f * ease_out_back(u, 2.0f);
+      float y = IN_WY - 16.0f * (1.0f - ease_out(u));
+      int al = (int)(32 * clampf(u * 4.0f, 0, 1));
+      int ta = (int)(28 * clampf(1.0f - u * 1.8f, 0, 1));
+      cc_sprite(word[i], 160 + cc_word_x[i], y, sc, C_WHITE, ta, al, (int)sh);
+    }
+  sparkle(160 + cc_word_x[6] + 14, IN_WY - 15, t, 2.5f, 0.9f);
+  /* ---- "présente" */
+  float pu = (t - 2.05f) / 0.45f;
+  if (pu > 0)
+    cc_sprite(&cc_presente, 160, 196 - 7 * (1 - ease_out(pu)), 1.0f, 0, 0, (int)(32 * clampf(pu, 0, 1)), -9999);
+  /* ---- the studio's address */
+  float uu = (t - 2.40f) / 0.5f;
+  if (uu > 0) cc_text_c(&cc_font_small, 160, 224, URL_STUDIO, C_GREY, (int)(256 * clampf(uu, 0, 1)));
+  /* ---- fade out */
+  if (t > IN_OUT) cc_fill_a(0, gfx_y0, SCREEN_W, gfx_y1 - gfx_y0, 0, (int)(32 * clampf((t - IN_OUT) / (IN_END - IN_OUT), 0, 1)));
+}
+
+bool cc_intro(void) {
+  /* (pas ui_init : il remplit l'arena de captures du menu, et selon la RAM que la calculatrice donne
+   * aux applis il ne restait plus de place pour les images de l'intro, qui sautait alors) */
+  np_alloc_reset();
+  gfx_init();
+  /* the pictures, unpacked into the arena (no intro if that fails: never in the way of the games) */
+  np_inflate_tables_t *tables = np_alloc(np_inflate_tables_size());
+  uint8_t *buf = np_alloc(cc_art_size);
+  if (!tables || !buf || np_inflate(buf, cc_art_size, cc_art_packed, cc_art_packed_size, tables) != (int)cc_art_size)
+    return true;
+  art = buf;
+  uint32_t held = np_keys(), start = np_millis();
+  float skip = 0;
+  for (;;) {
+    float t = (np_millis() - start) / 1000.0f + skip;
+    uint32_t keys = np_keys(), pressed = keys & ~held;
+    held = keys;
+    if (keys & K_HOME) return false;
+    if (t > 0.5f && t < IN_OUT && (pressed & (K_OK | K_BACK))) skip += IN_OUT - t, t = IN_OUT;
+    if (t >= IN_END) break;
+    ui_frame(intro_scene, &t);
+  }
+  np_fill_screen(0, 0, SCREEN_W, SCREEN_H, 0);
+  art = NULL;
+  return true;
+}
+
+/* ================================================================ "update required" */
+static void update_scene(void *ctx) {
+  const float t = *(const float *)ctx;
+  cc_background(t, 160, 120, 0, (int)(32 * ease_out(t / 0.4f)));
+  dust(t, 1);
+  /* panel */
+  gfx_shadow(12, 12, 296, 216, 12, 8, 120);
+  gfx_rrect(12, 12, 296, 216, 12, C_PAPER, 236);
+  gfx_rrect_outline(12, 12, 296, 216, 12, 1, HEX(0x3B4A8A), 256);
+  if (gfx_y0 > 228 || gfx_y1 < 12) return;
+  cc_text_c(&cc_font_title, 160, 42, "Mise à jour", C_FLUO, 256);
+  cc_text_c(&cc_font_body, 160, 66, "Une nouvelle version de Calcade", C_WHITE, 256);
+  cc_text_c(&cc_font_body, 160, 80, "est disponible.", C_WHITE, 256);
+  /* the required part, pulsing gently */
+  int pulse = 200 + (int)(56 * (0.5f + 0.5f * sinf(t * 3.2f)));
+  cc_text_c(&cc_font_body, 160, 106, "Mise à jour obligatoire — va sur", C_FLUO, pulse);
+  gfx_rrect(18, 113, 284, 24, 9, HEX(0x1E2860), 256);
+  cc_text_c(&cc_font_body, 160, 129, URL_MAJ, C_CYAN, 256);
+  cc_text_c(&cc_font_body, 160, 154, "pour continuer à jouer.", C_FLUO, pulse);
+  cc_text_c(&cc_font_small, 160, 180, "Branche ta calculatrice à l'ordinateur :", C_GREY, 256);
+  cc_text_c(&cc_font_small, 160, 193, "Calcade se ferme, mets à jour sur le site.", C_GREY, 256);
+  cc_text_c(&cc_font_small, 160, 216, "Home : quitter", HEX(0x6E79A8), 256);
+}
+
+void cc_update_required(void) {
+  np_alloc_reset();
+  gfx_init();
+  uint32_t start = np_millis();
+  /* (no key leaves this screen; Home, held back for the session, is read here and ends NumPlay) */
+  /* (the USB cable plugged in also leaves: the calculator can then be updated from the website) */
+  while (!(np_keys() & K_HOME) && !np_usb_plugged()) {
+    float t = (np_millis() - start) / 1000.0f;
+    ui_frame(update_scene, &t);
+    np_sleep(20);
+  }
+}
+
+/* ================================================================ numplay.sys (CLC2) */
+#define CLC2_MAGIC 0x32434C43u /* "CLC2" */
+_Static_assert(sizeof(cc_save_t) == 116, "numplay.sys is 116 bytes");
+_Static_assert(offsetof(cc_save_t, launches) == 28, "CLC2 header");
+_Static_assert(offsetof(cc_save_t, plays_total) == 32, "CLC2 header is 32 bytes");
+_Static_assert(offsetof(cc_save_t, check) == 112, "checksum last");
+
+static cc_save_t S;
+
+/* The install number: the website writes, in the app it builds for each installation, a number of
+ * its own after this mark (calculatrice.js, « jeton d'installation »). The first opening after an
+ * installation sees a number it has not seen: NumPlay was just updated, so the "update required"
+ * flag goes, even if the website could not clear it in the saves. Kept in numplay.sys (reserved1). */
+typedef struct { char mark[16]; uint32_t number; } cc_token_t;
+__attribute__((used, aligned(4))) const volatile cc_token_t cc_install_token = {
+    {'C', 'A', 'L', 'C', 'A', 'D', 'E', '-', 'J', 'E', 'T', 'O', 'N', '-', 'v', '1'}, 0};
+
+/* the kit's checksum (save.c, hash_bytes): FNV-1a from 0x811C9DC5 ^ 0x5A17C0DE, then mixed */
+static uint32_t cc_hash(const uint8_t *b, uint32_t n) {
+  uint32_t h = 2166136261u ^ 0x5A17C0DEu;
+  for (uint32_t i = 0; i < n; i++) h ^= b[i], h *= 16777619u;
+  h ^= h >> 15, h *= 0x2C1B3C6Du, h ^= h >> 12;
+  return h;
+}
+
+static void cc_stamp(void) {
+  S.magic = CLC2_MAGIC;
+  S.fmt = 2;
+  S.size = (uint16_t)sizeof S;
+  memset(S.game, 0, sizeof S.game);
+  memset(S.ver, 0, sizeof S.ver);
+  memcpy(S.game, "numplay", 7);
+  static const char ver[] = NP_VERSION;
+  memcpy(S.ver, ver, sizeof ver - 1 < sizeof S.ver - 1 ? sizeof ver - 1 : sizeof S.ver - 1);
+  S.ngames = (uint8_t)NP_MIN(np_game_count, 255); /* (games in this build of NumPlay) */
+}
+
+/* a valid CLC2 file of NumPlay: its size, magic, name and checksum all agree */
+static bool cc_valid(const uint8_t *d, uint32_t len) {
+  if (!d || len < 36 || len > 4096 || len & 3) return false;
+  uint32_t magic, check;
+  uint16_t size;
+  memcpy(&magic, d, 4);
+  memcpy(&size, d + 6, 2);
+  memcpy(&check, d + len - 4, 4);
+  if (magic != CLC2_MAGIC || size != len || memcmp(d + 8, "numplay", 8)) return false;
+  return check == cc_hash(d, len - 4);
+}
+
+static void cc_write(void) {
+  cc_stamp();
+  S.check = cc_hash((const uint8_t *)&S, offsetof(cc_save_t, check));
+  np_file_write(CC_SAVE_NAME, &S, sizeof S);
+}
+
+bool cc_launch(void) {
+  memset(&S, 0, sizeof S);
+  S.last_index = 0xFF;
+  uint32_t len = 0;
+  const uint8_t *d = np_file_read(CC_SAVE_NAME, &len);
+  if (cc_valid(d, len)) {
+    /* (a longer file from a later version: its first fields; a shorter one: the rest stays 0) */
+    uint32_t n = NP_MIN(len - 4, (uint32_t)offsetof(cc_save_t, check));
+    memcpy(&S, d, n);
+  } else {
+    memset(&S, 0, sizeof S); /* missing or damaged: start again from zero, never crash */
+    S.last_index = 0xFF;
+  }
+  uint32_t flag = S.launches & CC_UPDATE_FLAG, count = S.launches & ~CC_UPDATE_FLAG;
+  uint32_t token = cc_install_token.number;
+  if (token && S.reserved1 != token) { /* first opening after an installation by the website */
+    S.reserved1 = token;
+    flag = 0;
+    count = (count + 19) / 20 * 20; /* the next request comes 20 openings later */
+  }
+  if (count < ~CC_UPDATE_FLAG) count++;
+  if (count % 20 == 0) flag = CC_UPDATE_FLAG; /* 20th, 40th... opening: the update is now required */
+  S.launches = flag | count;                  /* (the game never clears the flag: the website does) */
+  cc_write();
+  return flag != 0;
+}
+
+void cc_game_started(int game) {
+  if (game < 0 || game >= np_game_count) return;
+  const char *id = np_games[game].id;
+  int slot = -1;
+  for (int i = 0; i < cc_game_id_count && i < CC_MAX_GAMES; i++)
+    if (!strcmp(cc_game_ids[i], id)) slot = i;
+  if (slot >= 0 && S.plays[slot] < 0xFFFF) S.plays[slot]++;
+  if (S.plays_total < 0xFFFFFFFFu) S.plays_total++;
+  memset(S.last_game, 0, sizeof S.last_game);
+  for (int i = 0; id[i] && i < (int)sizeof S.last_game - 1; i++) S.last_game[i] = id[i];
+  S.last_index = slot >= 0 ? (uint8_t)slot : 0xFF;
+  cc_write();
+}
+
+#if NP_COEUR
+/* ================================================================ pack Calcade (NP_COEUR) */
+uint32_t np_coeur_lancements(void) { return S.launches & ~CC_UPDATE_FLAG; }
+
+static void vide_scene(void *ctx) {
+  const float t = *(const float *)ctx;
+  cc_background(t, 160, 120, 0, (int)(32 * ease_out(t / 0.4f)));
+  dust(t, 1);
+  gfx_shadow(12, 30, 296, 180, 12, 8, 120);
+  gfx_rrect(12, 30, 296, 180, 12, C_PAPER, 236);
+  gfx_rrect_outline(12, 30, 296, 180, 12, 1, HEX(0x3B4A8A), 256);
+  if (gfx_y0 > 210 || gfx_y1 < 30) return;
+  cc_text_c(&cc_font_title, 160, 66, "Aucun jeu dans Calcade", C_FLUO, 256);
+  cc_text_c(&cc_font_body, 160, 96, "Choisis tes jeux sur :", C_WHITE, 256);
+  gfx_rrect(40, 106, 240, 24, 9, HEX(0x1E2860), 256);
+  cc_text_c(&cc_font_body, 160, 122, URL_STUDIO, C_CYAN, 256);
+  cc_text_c(&cc_font_small, 160, 152, "Branche ta calculatrice, coche les jeux", C_GREY, 256);
+  cc_text_c(&cc_font_small, 160, 165, "et ils arrivent tous ici, dans Calcade.", C_GREY, 256);
+  cc_text_c(&cc_font_small, 160, 196, "Home : quitter", HEX(0x6E79A8), 256);
+}
+
+bool np_coeur_aucun_jeu(void) {
+  np_alloc_reset();
+  gfx_init();
+  uint32_t start = np_millis();
+  while (!(np_keys() & (K_HOME | K_BACK))) {
+    float t = (np_millis() - start) / 1000.0f;
+    ui_frame(vide_scene, &t);
+    np_sleep(20);
+  }
+  return false;
+}
+#endif
diff --git a/launcher/src/calcade.h b/launcher/src/calcade.h
new file mode 100644
index 0000000..b1ead3e
--- /dev/null
+++ b/launcher/src/calcade.h
@@ -0,0 +1,68 @@
+/* Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3. */
+/* Calcade dressing: the studio's start-up intro, the "update required"
+ * screen, and the save file numplay.sys in the CLC2 format of the Calcade
+ * website (jeux.w-production.fr). See CALCADE.md. */
+#ifndef NP_CALCADE_H
+#define NP_CALCADE_H
+#include "gfx.h"
+
+/* ---- pictures and fonts (calcade_art.c, made by tools/calcade_art.py) */
+typedef struct {
+  uint16_t w, h;
+  int16_t ox, oy;          /* anchor (centre) */
+  uint16_t pal, rows, data; /* offsets in the unpacked pictures: palette (index 0 transparent), the
+                              offset of each row in data, rows of (skip, n, n indices)... (0, 0) */
+} cc_sprite_t;
+extern const cc_sprite_t cc_logo, cc_C, cc_A, cc_L, cc_D, cc_E, cc_presente, cc_spark;
+extern const int16_t cc_word_x[7];
+extern const uint8_t *const cc_art_packed;   /* raw DEFLATE */
+extern const uint32_t cc_art_packed_size, cc_art_size;
+
+/* NumPlay's own font for ASCII, and the accented letters the Calcade screens use */
+typedef struct {
+  const np_font_t *base;
+  uint8_t count;
+  const uint16_t *cps;     /* the extra letters (Unicode), sorted */
+  const np_glyph_t *glyphs;
+  const uint8_t *data;
+} cc_font_t;
+extern const cc_font_t cc_font_title, cc_font_body, cc_font_small;
+
+/* the games of games.json in its order (numplay.sys counts plays by this place) */
+extern const char *const cc_game_ids[];
+extern const int cc_game_id_count;
+
+/* ---- the save file numplay.sys (CLC2) */
+#define CC_SAVE_NAME "numplay.sys"
+#define CC_UPDATE_FLAG 0x80000000u   /* bit 31 of launches: update required (only the website clears it) */
+#define CC_MAX_GAMES 28
+
+typedef struct {
+  /* common header of every Calcade game (32 bytes) */
+  uint32_t magic;          /* "CLC2" */
+  uint16_t fmt;            /* 2 */
+  uint16_t size;           /* sizeof(cc_save_t) = 116 */
+  char game[12];           /* "numplay" */
+  char ver[8];             /* NumPlay's version, "1.10.0" */
+  uint32_t launches;       /* NumPlay openings (bits 0-30), bit 31 = update required */
+  /* NumPlay's own fields */
+  uint32_t plays_total;    /* games started from NumPlay */
+  char last_game[12];      /* id of the game started last ("numdash"...), "" if none */
+  uint8_t ngames;          /* games in this NumPlay (np_game_count) */
+  uint8_t last_index;      /* its place in games.json, 0xFF if none */
+  uint16_t reserved0;
+  uint16_t plays[CC_MAX_GAMES]; /* times each game was started, by its place in games.json */
+  uint32_t reserved1;
+  uint32_t check;          /* checksum of the 112 bytes before */
+} cc_save_t;
+
+/* Reads numplay.sys (or starts it), counts this opening and writes it back:
+ * true when the update is required (bit 31 set, now or before). */
+bool cc_launch(void);
+void cc_game_started(int game);   /* counts a game started from the home screen */
+
+/* The intro (about 4.3 s, OK or Back skips it after 0.5 s); false if Home was pressed. */
+bool cc_intro(void);
+/* The "update required" screen: never returns, only Home leaves NumPlay (the caller quits). */
+void cc_update_required(void);
+#endif
diff --git a/launcher/src/calcade_art.c b/launcher/src/calcade_art.c
new file mode 100644
index 0000000..4679a69
--- /dev/null
+++ b/launcher/src/calcade_art.c
@@ -0,0 +1,274 @@
+/* Generated by tools/calcade_art.py from the Calcade kit (tools/calcade/). */
+#include "calcade.h"
+
+static const uint8_t cc_art_z[6165] = {
+  84,134,3,144,24,49,0,69,179,182,145,77,109,219,182,109,219,131,218,182,109,219,182,173,65,109,158,109,219,214,231,3,
+  32,61,95,238,241,207,227,143,135,47,15,111,229,206,165,103,121,74,122,151,244,170,217,20,152,150,101,183,79,55,252,98,
+  222,30,62,219,98,47,60,122,127,75,227,57,31,110,237,29,223,164,251,175,118,3,235,53,46,103,87,115,202,193,76,199,
+  151,117,138,193,76,231,108,60,42,234,4,237,183,246,71,187,159,233,7,220,254,76,31,224,0,192,1,9,116,80,13,116,
+  7,115,192,57,224,6,16,54,8,219,139,253,196,32,62,12,63,134,123,227,85,136,105,196,29,34,137,104,67,174,39,63,
+  145,22,53,130,58,77,5,81,117,233,133,244,75,154,99,250,50,7,25,15,166,50,59,157,189,207,166,179,157,185,237,220,
+  47,174,36,63,145,191,202,199,242,45,133,181,194,7,193,16,135,137,167,196,32,177,158,180,72,122,41,177,114,111,121,191,
+  236,46,87,86,166,43,247,149,52,165,163,186,85,253,169,150,212,38,106,87,181,24,173,185,190,90,127,175,27,198,112,227,
+  180,17,100,212,53,23,152,207,77,218,234,105,237,177,254,89,101,236,73,246,21,59,210,110,4,23,193,167,48,29,182,118,
+  150,57,143,157,56,167,22,26,131,54,162,75,232,21,250,130,190,33,144,193,104,25,55,39,107,4,97,92,71,84,228,13,
+  8,144,3,81,232,137,8,188,74,64,102,32,20,194,141,182,77,190,255,103,234,222,170,241,12,58,237,254,23,178,207,227,
+  238,254,110,15,32,62,148,13,189,198,96,80,190,194,95,158,107,43,178,52,60,199,88,113,225,249,155,127,125,62,226,15,
+  37,89,177,221,229,114,233,218,242,72,146,20,72,136,162,13,245,87,63,18,252,245,58,44,186,238,216,125,132,235,165,50,
+  153,74,240,139,127,228,151,196,233,8,237,103,246,37,177,236,142,199,174,169,139,93,28,197,187,170,59,134,75,89,30,43,
+  155,193,192,173,40,207,159,12,197,252,32,172,48,255,189,216,69,144,159,21,24,217,46,170,143,107,123,42,203,80,146,243,
+  231,74,25,131,100,242,45,169,123,18,49,178,168,11,237,137,60,131,159,36,173,63,147,198,19,197,229,170,230,172,202,64,
+  181,75,127,170,14,249,62,73,210,2,34,106,222,221,233,212,30,12,94,59,119,36,79,108,63,236,64,86,101,49,200,178,
+  71,50,208,149,117,203,88,155,166,92,94,199,48,76,111,48,176,152,45,205,228,101,116,124,143,31,8,51,65,200,218,100,
+  19,80,26,180,109,194,13,62,130,153,12,71,212,60,186,210,108,182,62,150,209,189,54,75,185,50,175,106,118,85,122,11,
+  135,16,99,62,87,157,128,161,195,209,159,72,80,129,113,242,71,220,1,13,46,218,56,73,226,172,106,184,182,14,3,122,
+  213,106,218,92,55,94,44,235,69,35,1,139,161,175,50,178,37,27,44,254,154,201,242,250,24,98,175,123,208,22,85,123,
+  175,213,207,90,213,34,150,101,154,47,16,68,39,219,58,199,50,36,14,65,255,123,37,77,150,199,136,123,36,37,87,87,
+  55,181,134,106,243,162,22,130,104,30,111,38,109,130,153,68,185,137,50,177,211,146,119,178,103,137,160,214,5,117,47,44,
+  221,169,177,249,210,30,250,131,193,252,31,42,77,124,172,36,101,244,94,174,190,60,13,83,39,97,5,54,113,231,14,87,
+  220,101,53,178,195,234,0,221,48,95,211,173,199,242,190,139,65,130,22,199,178,28,186,220,197,30,226,80,246,109,0,211,
+  123,42,235,23,67,89,140,195,29,218,232,50,242,187,136,151,178,208,200,203,255,14,75,163,44,225,29,173,199,10,184,124,
+  42,211,117,179,43,14,69,233,232,166,152,246,218,159,106,159,209,27,48,146,55,104,51,11,155,12,14,79,66,238,108,96,
+  204,47,175,196,122,94,204,130,183,148,189,135,246,136,94,108,56,182,188,118,244,155,72,53,22,52,88,192,113,1,94,230,
+  67,155,185,3,199,14,226,221,30,138,54,49,140,198,18,178,232,233,68,23,190,7,244,1,189,245,144,118,9,178,29,208,
+  246,208,70,14,154,55,62,97,79,152,240,171,230,179,176,102,167,196,113,60,7,142,176,105,154,106,15,119,125,197,141,54,
+  227,117,183,227,54,84,168,134,104,43,150,228,176,87,85,123,242,136,227,24,6,172,161,105,62,231,253,105,15,241,0,199,
+  140,234,166,216,58,219,23,60,226,52,12,89,160,18,135,168,134,241,16,184,196,129,127,185,231,195,151,182,1,49,76,97,
+  93,138,107,84,85,17,6,91,230,104,132,252,234,17,223,53,107,25,137,127,173,134,110,199,217,85,161,128,220,52,240,6,
+  192,56,100,69,217,86,117,64,183,116,110,221,33,79,16,185,130,200,191,160,187,38,227,233,34,115,112,10,218,180,248,142,
+  52,203,219,134,193,186,136,141,183,249,101,193,209,135,242,213,236,67,199,33,138,81,50,182,197,206,31,67,255,218,76,103,
+  65,147,9,212,133,41,222,34,41,182,252,34,250,37,82,223,8,212,245,79,101,242,144,186,39,216,28,42,118,218,26,154,
+  14,46,130,79,208,238,175,212,193,6,182,252,24,247,168,195,16,247,223,165,228,91,127,229,16,203,186,95,9,145,186,46,
+  80,183,12,245,214,187,83,222,198,114,10,13,109,110,60,220,243,244,66,93,23,169,27,34,117,28,61,214,2,23,180,88,
+  203,61,245,58,84,240,78,7,234,110,131,138,74,184,119,212,95,22,82,199,98,94,196,98,68,234,144,0,55,48,82,215,
+  191,169,239,145,250,253,234,36,121,72,253,94,49,87,234,73,121,184,82,7,159,205,88,9,159,80,47,219,83,104,106,90,
+  191,152,62,117,227,115,54,125,70,61,164,212,35,22,122,247,67,53,176,113,164,206,109,46,119,59,167,126,183,58,39,22,
+  146,135,165,136,167,29,169,115,27,129,186,41,246,238,4,189,82,122,213,236,97,56,31,107,252,150,50,128,250,146,83,207,
+  107,113,115,32,140,121,191,22,177,26,146,151,135,27,117,3,169,191,225,105,19,118,29,66,237,49,18,255,135,20,80,149,
+  218,67,244,161,67,59,226,206,123,230,204,123,202,30,35,147,191,168,77,67,215,60,188,49,120,99,72,221,16,168,175,4,
+  234,79,13,230,252,179,129,56,148,161,11,82,231,159,5,166,72,253,245,63,245,196,89,120,148,110,106,150,126,219,192,92,
+  192,6,168,175,249,152,211,58,32,170,249,83,175,162,126,110,156,245,193,38,172,25,68,157,37,5,6,82,31,217,220,198,
+  197,23,197,229,44,91,166,10,122,190,4,63,245,45,234,171,60,73,146,56,191,154,92,168,131,13,66,143,240,154,106,61,
+  208,25,87,189,115,214,39,92,223,214,37,215,239,243,12,210,14,135,155,11,66,31,111,184,143,7,208,83,244,41,24,117,
+  8,225,6,62,13,182,233,197,32,69,131,171,246,240,187,172,202,223,55,167,172,140,16,186,121,134,158,97,206,158,53,155,
+  96,91,176,111,131,56,222,255,75,152,153,110,55,142,2,81,248,184,181,235,103,22,102,164,68,49,54,193,99,69,33,210,
+  52,90,72,52,71,189,189,255,59,13,5,200,101,178,222,94,147,80,23,168,15,44,40,249,159,242,173,156,142,247,199,73,
+  162,81,163,0,186,246,1,232,163,112,57,123,26,159,199,14,142,183,205,83,215,112,222,72,165,124,155,238,14,212,161,17,
+  159,13,244,203,63,89,74,95,234,206,233,73,199,91,9,181,204,138,51,90,203,14,213,223,89,245,93,231,67,191,116,208,
+  95,235,81,209,18,238,98,41,172,79,167,227,180,115,54,187,233,232,67,191,116,208,81,216,203,102,19,68,17,125,174,209,
+  230,110,213,201,166,158,105,146,105,27,128,126,110,131,189,68,137,214,6,62,149,156,154,51,155,230,52,119,11,253,18,160,
+  99,114,206,24,208,36,142,227,4,58,169,15,156,139,15,134,211,58,232,151,0,189,145,157,47,123,122,8,193,167,88,228,
+  203,188,44,128,179,29,239,157,205,253,216,98,26,117,94,140,79,136,208,157,224,58,200,37,217,36,218,135,40,70,171,178,
+  48,64,143,211,222,216,236,167,35,38,0,160,131,207,30,169,175,50,183,203,165,208,62,113,148,230,25,92,88,109,14,155,
+  233,184,219,238,142,54,59,86,238,57,113,245,135,132,175,168,139,29,12,128,100,81,172,21,5,81,156,164,161,67,209,200,
+  105,154,58,112,193,53,88,5,196,216,0,117,63,47,27,16,184,104,217,100,23,179,29,240,191,255,176,99,95,67,175,62,
+  245,171,245,57,129,234,73,0,188,99,84,18,144,53,106,92,56,123,1,79,143,58,248,220,186,190,176,3,72,11,10,44,
+  191,165,22,68,173,88,153,231,132,206,205,201,167,183,215,128,43,160,174,129,122,105,3,159,117,64,80,217,72,114,98,142,
+  105,141,210,83,14,194,205,183,10,243,41,44,245,171,55,212,225,98,154,68,186,108,17,26,155,220,148,45,6,185,14,53,
+  213,75,33,76,49,194,92,251,192,103,159,166,84,53,222,126,176,5,18,98,86,33,177,69,9,92,153,90,9,144,241,169,
+  95,255,201,125,234,98,100,166,14,242,195,204,46,204,216,119,222,136,245,39,89,100,211,142,54,135,197,80,191,246,168,219,
+  78,161,78,193,231,202,38,219,14,21,65,154,209,208,185,70,234,113,174,109,222,82,23,80,174,224,122,110,137,137,192,161,
+  130,53,192,131,163,58,38,121,151,37,80,105,241,168,123,207,17,8,73,113,2,90,143,207,37,84,129,8,3,31,159,250,
+  53,80,151,29,10,147,148,110,64,222,96,219,153,150,37,237,213,89,191,66,233,188,24,159,32,103,3,248,251,146,141,173,
+  34,193,121,17,117,80,26,30,110,46,164,126,109,169,99,7,40,110,11,74,157,167,7,206,17,237,25,117,114,70,221,151,
+  180,149,165,238,115,185,51,33,65,234,190,112,159,124,250,179,26,46,252,96,227,81,255,82,162,169,245,8,123,41,86,128,
+  106,151,26,27,132,254,181,68,59,42,45,201,184,66,168,153,177,209,204,135,47,250,111,132,206,148,128,219,210,192,40,165,
+  85,169,193,43,241,202,38,32,62,114,223,68,42,245,172,148,96,227,160,189,56,56,24,21,206,71,40,103,179,79,51,184,
+  241,163,132,233,95,118,141,105,197,119,186,123,29,93,177,225,160,104,81,174,170,236,195,181,86,52,209,54,127,253,206,35,
+  127,155,15,208,253,200,91,213,106,19,122,234,189,146,143,74,187,225,96,30,240,179,93,187,248,188,165,98,182,119,152,188,
+  100,37,138,13,110,44,240,87,117,182,248,140,139,135,251,187,56,159,251,184,43,81,92,182,61,5,3,74,41,27,165,93,
+  61,176,53,111,192,197,94,251,172,30,188,169,43,193,75,215,187,227,162,24,147,74,107,180,60,108,81,18,170,185,191,170,
+  179,13,222,248,83,63,40,6,110,21,133,114,173,48,204,250,78,212,181,16,43,194,154,196,57,152,108,67,205,168,89,77,
+  112,40,21,151,157,128,53,54,40,45,220,227,254,142,140,67,152,207,207,125,22,158,37,183,167,107,223,18,138,123,162,27,
+  100,219,212,15,162,237,222,138,45,52,133,243,241,223,63,72,104,47,33,54,179,138,177,218,172,114,29,14,250,120,49,242,
+  133,102,89,80,105,139,229,214,21,37,173,68,63,72,187,222,63,149,224,18,28,160,20,95,252,151,233,21,251,130,14,159,
+  135,66,131,154,31,134,133,151,105,22,64,252,124,27,164,228,48,130,193,215,129,28,234,199,243,50,179,138,196,41,132,151,
+  207,36,73,138,65,241,207,182,239,26,182,204,176,130,171,34,143,163,48,171,116,240,180,207,210,152,176,153,139,119,163,234,
+  118,192,168,178,40,72,22,155,151,25,154,223,77,191,77,211,132,208,69,113,124,111,0,159,165,157,13,25,109,8,33,112,
+  24,51,65,164,184,209,43,240,246,105,159,71,105,90,178,101,238,205,75,138,110,52,237,37,163,94,251,4,218,87,91,253,
+  112,187,227,69,152,196,121,73,217,139,158,248,220,185,134,185,109,24,96,195,109,181,37,97,168,147,9,235,241,244,246,37,
+  128,51,194,173,105,176,187,218,22,57,68,129,66,243,253,45,124,255,62,223,58,193,87,86,230,237,216,255,2,206,143,1,
+  103,200,128,112,62,120,150,172,254,121,252,115,251,231,242,247,255,95,251,127,237,254,181,251,231,246,159,155,127,172,30,8,
+  227,247,217,239,179,223,38,191,237,255,218,127,91,255,175,189,191,246,254,82,16,172,155,43,61,181,178,102,71,180,112,240,
+  100,39,67,35,113,165,45,146,147,36,139,4,215,104,78,17,156,34,88,44,24,40,232,47,232,39,40,192,201,45,200,33,
+  121,66,224,184,192,50,129,229,28,203,57,150,1,97,27,128,113,179,128,82,156,87,195,112,146,22,40,82,92,102,160,204,
+  14,181,133,129,2,29,104,83,160,114,221,221,142,92,119,119,119,119,119,119,119,119,119,119,119,119,59,118,93,246,70,90,
+  22,248,151,255,220,103,52,223,247,22,77,158,166,43,210,101,1,255,59,178,52,144,64,14,20,64,23,76,192,165,192,245,
+  192,237,193,67,193,115,192,91,192,103,193,207,193,127,65,27,186,240,58,240,110,240,105,240,109,240,27,240,175,176,141,66,
+  116,11,244,56,244,54,244,61,36,8,35,225,170,194,29,133,199,11,79,20,158,44,60,85,120,186,240,76,1,108,80,149,
+  67,215,74,8,48,0,149,98,104,101,33,7,9,86,72,42,165,72,135,34,98,136,80,137,72,168,92,14,173,140,32,10,
+  28,17,209,88,185,66,98,233,84,76,26,106,145,11,64,169,234,91,241,222,41,205,72,209,104,169,70,162,57,137,64,54,
+  214,132,44,15,23,235,190,43,75,57,130,84,228,63,115,18,141,23,27,145,46,228,201,40,143,116,141,255,34,178,3,228,
+  230,202,45,230,11,121,250,57,48,210,228,123,190,80,200,211,67,228,86,164,103,100,74,78,153,158,84,10,50,69,210,233,
+  65,133,131,149,91,149,139,148,156,49,157,107,185,34,199,10,105,47,50,242,37,138,220,28,12,157,190,92,98,228,245,8,
+  128,124,123,229,54,75,101,66,165,160,79,71,120,169,200,21,58,42,85,172,144,118,35,83,174,86,40,181,193,116,22,70,
+  102,145,141,170,69,122,108,78,89,186,205,74,141,82,86,7,103,45,203,237,55,200,144,97,133,180,31,153,229,122,12,47,
+  215,107,124,84,166,199,103,143,150,174,82,107,212,47,64,163,222,116,125,154,136,204,90,171,177,166,69,88,255,94,51,34,
+  0,200,246,9,171,173,131,61,180,20,215,167,153,200,108,180,15,25,27,205,67,78,187,65,111,39,163,98,79,61,236,112,
+  142,207,115,166,205,75,237,99,119,69,83,145,121,120,230,136,114,168,15,54,80,59,172,120,124,104,70,0,164,117,188,208,
+  186,61,198,153,193,116,188,102,106,116,226,170,234,174,104,46,52,227,66,87,159,12,71,231,57,81,143,120,189,195,110,207,
+  8,250,131,132,177,61,219,96,176,38,192,52,184,192,147,152,241,112,22,248,107,194,217,36,1,47,72,176,136,131,211,245,
+  29,226,32,39,251,120,20,143,135,78,8,64,70,14,29,251,148,97,207,2,156,147,113,64,198,156,89,64,250,5,207,95,
+  198,248,65,161,224,243,17,37,0,219,108,175,245,99,176,0,215,5,119,7,79,7,239,0,223,6,255,4,71,240,210,240,
+  54,240,73,240,29,240,91,100,141,55,145,139,174,135,30,128,94,138,62,133,126,143,74,194,76,184,158,112,31,225,57,194,
+  187,132,175,9,191,23,206,9,80,20,196,148,152,17,179,34,216,160,92,94,134,81,184,112,201,146,119,221,32,138,124,12,
+  128,220,112,195,200,53,117,69,206,138,8,138,217,170,166,91,97,132,217,66,137,44,45,139,16,36,36,223,155,102,24,186,
+  116,186,135,174,142,32,34,43,93,140,37,144,74,9,16,41,86,228,178,233,108,85,97,42,157,18,41,41,26,34,16,13,
+  192,172,73,251,217,110,232,86,97,54,185,12,77,145,86,124,53,41,137,66,159,206,213,51,56,212,96,54,67,145,36,4,
+  165,124,62,67,252,205,199,41,217,245,105,36,50,81,78,162,16,191,43,198,128,160,55,5,94,201,67,61,98,179,89,73,
+  229,115,12,73,167,239,244,120,50,157,104,105,94,146,170,238,18,128,76,111,105,201,121,70,33,173,79,79,134,244,189,29,
+  14,167,170,36,23,8,114,174,31,209,80,104,198,227,124,117,48,30,141,236,83,50,163,108,219,64,252,254,33,95,23,161,
+  65,188,69,40,230,212,233,200,118,240,42,8,124,236,12,117,131,161,159,13,49,73,85,66,61,87,42,18,74,57,125,106,
+  59,65,128,81,9,123,33,158,110,206,186,76,41,212,243,149,18,161,156,215,109,39,196,105,25,135,206,201,144,49,118,2,
+  146,40,134,186,92,97,200,58,57,163,75,5,111,53,231,216,179,5,235,27,197,26,211,81,81,155,7,88,42,4,86,140,
+  187,244,216,180,53,75,177,106,14,102,161,36,187,161,86,102,163,34,123,139,50,69,223,138,13,212,172,24,145,155,41,68,
+  86,157,83,49,35,210,47,227,165,90,107,112,234,102,20,98,84,198,97,100,37,181,214,0,123,0,72,189,200,168,29,180,
+  24,141,186,110,185,116,35,106,40,117,86,56,168,107,19,39,160,161,192,233,181,18,223,212,155,10,161,89,79,10,45,98,
+  211,5,13,225,112,112,112,24,187,169,221,38,93,250,157,15,26,198,100,232,144,16,251,107,250,206,97,183,179,75,183,125,
+  96,76,198,54,246,104,198,199,211,1,17,216,209,25,170,39,14,57,223,119,14,85,99,114,66,84,128,73,134,76,63,103,
+  114,98,168,71,157,46,233,49,15,29,117,59,93,149,236,131,78,70,54,14,0,200,29,121,193,108,60,61,25,24,186,170,
+  246,40,170,170,233,164,63,38,1,135,222,72,94,9,252,25,153,73,147,201,32,225,100,66,218,67,218,247,0,40,180,125,
+  98,138,17,121,63,9,108,114,210,222,200,158,97,218,149,15,188,112,233,156,218,163,243,216,246,204,89,209,91,46,54,176,
+  23,250,216,113,102,51,102,153,153,227,224,128,30,84,41,99,47,32,248,43,162,26,130,135,47,214,48,103,193,101,193,45,
+  192,35,192,43,193,167,193,239,128,12,109,120,93,120,95,248,66,248,49,248,115,40,32,13,93,6,221,10,61,30,189,5,
+  125,19,253,19,157,17,46,45,220,90,120,156,240,70,225,203,194,159,132,130,120,86,28,136,67,209,18,39,162,189,101,24,
+  169,133,61,119,7,34,154,112,73,90,109,223,204,238,80,85,116,211,141,168,81,164,142,111,10,112,23,132,178,154,21,173,
+  72,91,241,77,148,18,182,160,102,33,17,221,11,73,191,75,250,105,145,145,226,240,95,211,41,88,117,105,224,136,4,164,
+  52,39,195,72,70,89,146,96,70,33,137,216,57,41,68,161,123,67,30,165,59,20,204,35,92,58,57,65,49,24,90,137,
+  23,72,9,245,153,116,124,83,100,134,201,35,45,94,212,3,238,156,120,223,194,51,169,2,115,78,74,179,135,28,34,38,
+  82,162,200,150,207,51,25,238,156,140,54,183,25,163,209,160,148,47,176,154,100,70,60,147,227,202,145,180,57,230,204,108,
+  53,169,49,9,246,124,51,31,11,135,138,128,224,5,193,106,45,33,45,196,36,36,251,102,129,249,166,146,215,230,139,116,
+  17,71,122,158,143,11,154,179,224,129,68,55,36,144,145,35,93,174,198,67,39,224,253,68,55,188,175,37,67,125,30,247,
+  203,76,55,245,146,78,239,192,119,155,241,62,167,108,204,249,29,156,173,52,217,134,166,66,2,169,210,42,210,249,152,84,
+  6,167,76,19,254,217,106,139,185,133,36,34,207,91,133,145,167,39,10,170,169,147,56,212,143,133,83,215,250,22,161,111,
+  40,181,86,76,221,152,206,226,80,51,209,75,131,208,60,175,155,67,34,165,161,19,135,90,109,198,97,155,147,252,214,105,
+  169,228,36,128,23,60,116,208,237,92,148,110,231,64,29,76,134,51,31,179,119,169,223,62,62,218,134,24,167,219,238,234,
+  36,51,114,194,56,211,59,179,9,55,14,73,140,135,163,89,224,177,201,215,239,169,59,104,244,218,108,66,196,113,186,12,
+  104,196,115,6,187,76,184,117,70,179,101,128,233,58,192,193,104,188,11,59,239,217,92,47,217,78,224,144,209,46,246,41,
+  177,12,149,108,219,195,167,91,112,3,173,66,159,30,220,194,129,191,205,255,97,162,49,184,6,184,27,120,38,120,15,248,
+  62,185,158,233,193,203,192,91,195,199,193,55,194,47,195,63,195,18,154,160,171,163,59,163,167,160,183,161,111,160,191,161,
+  182,16,8,55,17,30,46,188,74,248,44,217,233,200,226,88,156,138,167,226,92,116,69,111,219,68,71,120,225,238,101,129,
+  105,194,179,178,123,233,135,60,129,224,62,204,136,189,226,22,76,9,23,36,5,205,16,39,17,145,147,218,38,13,13,236,
+  197,145,76,34,167,109,36,100,56,113,4,73,177,183,208,54,2,92,71,68,110,39,177,105,236,50,112,22,60,194,93,148,
+  23,149,233,100,135,113,18,145,184,156,210,202,220,222,130,104,42,137,228,226,253,80,77,223,194,56,181,237,228,177,228,139,
+  50,163,32,109,144,67,202,138,58,136,191,184,133,82,145,83,218,160,44,171,56,192,152,74,223,179,228,114,92,221,78,28,
+  207,2,222,47,86,46,68,81,181,227,126,169,22,151,118,238,193,94,240,126,165,198,168,40,59,175,86,114,124,149,43,168,
+  162,238,188,90,35,234,232,174,103,197,2,170,105,246,54,243,104,201,159,98,61,118,143,122,118,7,203,245,121,162,145,236,
+  125,26,156,205,235,54,254,74,110,139,136,195,77,100,36,51,140,239,122,46,74,247,192,192,11,30,233,236,74,40,230,248,
+  208,112,2,30,233,198,14,218,165,215,54,102,241,173,168,251,232,197,17,140,7,251,153,5,44,18,218,227,189,208,72,246,
+  136,58,104,15,67,158,32,26,218,11,77,228,186,129,191,159,213,197,249,72,1,35,16,128,171,129,27,131,187,128,135,130,
+  167,129,151,131,119,128,79,130,111,129,95,131,191,131,44,108,195,33,244,225,13,224,3,200,94,233,67,240,199,16,160,30,
+  186,20,186,57,122,4,122,5,250,4,250,5,250,21,250,13,250,29,250,3,250,19,218,242,81,1,251,139,4,143,142,201,
+  228,138,209,35,126,138,20,32,71,137,92,94,224,91,154,52,84,240,98,167,144,156,117,249,158,70,130,234,156,39,226,45,
+  204,102,129,43,1,173,11,41,46,0,97,93,72,199,123,145,164,208,143,47,118,36,45,41,196,59,138,220,186,16,111,41,
+  242,235,130,204,47,87,10,27,5,134,188,46,108,236,15,120,161,28,111,0,214,133,74,188,214,120,65,33,167,242,38,95,
+  7,218,60,10,55,241,49,239,199,107,171,209,213,182,97,102,238,110,157,229,155,231,105,145,215,219,229,129,11,47,172,78,
+  75,95,121,60,112,208,189,240,162,210,157,128,7,248,153,125,151,227,54,217,196,196,129,222,133,23,212,58,208,219,183,156,
+  120,0,59,131,125,156,6,44,16,236,93,76,52,144,85,246,46,165,33,239,239,95,72,51,214,199,129,191,23,176,195,239,
+  206,125,238,220,235,206,221,238,220,21,233,255,28,248,235,107,255,116,219,95,101,127,244,217,47,62,246,147,87,252,224,111,
+  223,240,216,23,100,159,240,216,251,255,230,102,143,185,86,255,82,175,182,51,135,191,41,127,154,124,188,90,122,148,116,43,
+  233,86,224,114,192,220,88,133,69,208,0,93,112,2,60,112,85,112,91,240,56,240,78,240,39,48,135,15,134,95,130,10,
+  186,53,122,55,58,135,46,47,60,86,248,176,240,91,65,16,243,98,93,84,68,93,28,137,51,113,41,94,66,4,49,87,
+  66,185,18,0,87,252,31,135,102,129,134,41,11,6,192,135,55,40,41,137,15,19,254,184,255,29,23,215,162,103,236,198,
+  36,244,10,200,96,122,214,43,94,40,237,63,46,44,219,122,7,253,63,102,112,255,113,4,119,173,239,51,255,81,97,222,
+  255,81,117,215,172,141,36,168,117,101,178,225,60,175,215,90,137,32,165,217,98,19,92,237,178,126,101,46,205,163,35,214,
+  61,255,253,103,52,160,59,222,49,154,134,24,196,254,241,231,213,145,3,9,8,200,213,41,21,8,92,54,105,76,135,121,
+  158,199,237,33,205,252,85,221,68,169,156,54,183,95,40,173,176,187,86,160,138,132,205,138,132,32,45,96,148,129,100,175,
+  108,142,27,76,101,251,188,142,218,181,26,130,220,180,40,136,105,43,40,55,161,37,236,160,45,248,179,160,61,132,50,180,
+  143,130,1,76,161,173,109,66,98,38,78,34,205,14,38,18,123,39,226,232,235,100,137,133,172,66,47,172,32,39,200,128,
+  242,194,255,234,202,200,65,248,229,82,101,38,17,222,102,169,94,194,68,180,70,56,135,137,200,112,123,209,24,229,153,227,
+  117,127,40,149,192,121,169,19,246,53,221,120,195,208,51,108,227,13,144,127,90,181,231,18,174,141,195,178,212,132,105,156,
+  194,110,172,40,60,1,246,11,184,210,118,159,168,165,125,90,27,239,185,112,218,50,43,39,169,96,243,140,233,200,199,235,
+  200,132,229,127,155,52,247,3,238,126,170,212,209,251,252,94,93,88,45,41,188,151,229,122,3,239,34,206,14,186,242,210,
+  207,228,215,222,108,170,98,219,70,16,9,155,37,247,60,227,109,74,89,109,226,239,238,30,66,35,83,208,207,119,190,199,
+  9,214,64,120,158,159,214,191,14,20,68,158,132,202,52,129,94,184,133,178,59,154,54,95,135,165,11,89,152,203,88,246,
+  94,217,61,199,49,199,33,184,89,161,51,234,74,219,115,55,27,145,83,26,247,45,72,154,143,103,217,20,210,65,40,6,
+  255,187,63,94,16,251,124,18,218,115,181,77,224,158,235,111,219,57,222,152,144,159,93,81,94,122,10,81,99,38,156,215,
+  9,24,177,33,105,201,149,85,178,46,223,247,245,113,12,183,234,64,182,183,11,222,48,207,78,74,203,61,59,145,132,170,
+  123,201,22,60,234,172,0,116,30,39,66,63,9,234,129,108,68,120,59,201,231,122,231,181,86,188,182,85,74,131,232,234,
+  123,8,174,168,127,55,167,29,17,32,94,103,149,0,164,75,71,213,114,254,141,179,27,124,238,14,92,226,239,233,76,231,
+  117,246,143,176,147,54,46,63,239,213,129,124,28,93,170,28,98,121,174,83,124,237,202,239,61,81,246,57,239,171,111,162,
+  19,206,251,243,154,40,210,243,204,133,32,184,111,37,239,57,199,90,88,181,42,206,231,234,12,189,103,232,95,77,181,113,
+  155,231,209,37,92,167,166,126,28,157,177,247,207,76,74,255,214,186,80,92,216,30,43,67,81,6,255,126,225,14,251,252,
+  194,36,242,88,21,49,30,231,23,220,87,255,35,32,5,52,22,54,235,243,239,255,175,255,127,254,223,0,66,153,231,51,
+  175,85,156,147,56,54,99,173,249,210,173,83,66,90,46,21,131,202,41,118,96,59,65,144,65,130,65,30,88,110,25,50,
+  184,48,4,50,68,0,219,11,105,192,185,153,2,64,141,214,141,0,64,16,68,216,156,189,246,254,127,27,155,137,232,116,
+  240,1,72,172,171,196,85,8,44,111,105,181,194,182,90,178,9,240,113,100,31,124,238,0,53,18,73,23,252,73,212,204,
+  147,203,234,251,221,244,24,179,53,150,213,196,190,149,87,49,171,148,85,4,252,
+};
+const uint8_t *const cc_art_packed = cc_art_z;
+const uint32_t cc_art_packed_size = 6165, cc_art_size = 13782;
+const cc_sprite_t cc_logo = {104, 104, 52, 52, 0, 128, 336};
+const cc_sprite_t cc_A = {52, 42, 24, 19, 6948, 7076, 7160};
+const cc_sprite_t cc_C = {51, 43, 24, 20, 6948, 8080, 8166};
+const cc_sprite_t cc_D = {51, 43, 24, 20, 6948, 9202, 9288};
+const cc_sprite_t cc_E = {49, 43, 22, 20, 6948, 10364, 10450};
+const cc_sprite_t cc_L = {46, 43, 21, 20, 6948, 11532, 11618};
+const cc_sprite_t cc_presente = {91, 35, 45, 17, 12370, 12434, 12504};
+const cc_sprite_t cc_spark = {17, 17, 8, 8, 13594, 13626, 13660};
+
+const int16_t cc_word_x[7] = {-102, -67, -34, -1, 34, 70, 104};
+static const uint16_t cc_font_title_cps[4] = {
+  224,232,233,8212,
+};
+static const uint8_t cc_font_title_data[332] = {
+  0,48,4,0,0,0,64,255,5,0,0,0,244,207,0,0,0,0,248,95,0,0,0,0,
+  252,11,0,0,0,32,73,0,0,0,48,118,87,2,0,211,255,255,255,8,128,255,255,255,
+  255,6,195,106,84,253,207,0,0,0,128,255,14,129,236,255,255,255,208,255,207,219,255,63,
+  255,111,0,249,255,243,255,74,247,255,15,252,255,255,254,255,16,251,255,75,255,10,0,65,
+  3,32,3,0,48,4,0,0,0,48,255,5,0,0,0,243,223,0,0,0,0,248,111,0,
+  0,0,0,251,11,0,0,0,32,73,0,0,0,16,117,71,0,0,96,254,255,223,3,96,
+  255,255,255,239,18,254,191,18,249,159,245,255,2,16,255,125,255,255,255,255,255,247,255,188,
+  187,187,73,255,111,0,0,0,208,255,175,136,252,7,227,255,255,255,175,0,162,254,255,191,
+  2,0,0,67,19,0,0,0,0,48,4,0,0,0,48,255,6,0,0,0,250,111,0,0,
+  0,243,191,0,0,0,128,223,1,0,0,0,146,3,0,0,16,117,71,0,0,96,254,255,
+  223,3,96,255,255,255,239,18,254,191,18,249,159,245,255,2,16,255,125,255,255,255,255,255,
+  247,255,188,187,187,73,255,111,0,0,0,208,255,175,136,252,7,227,255,255,255,175,0,162,
+  254,255,191,2,0,0,67,19,0,96,136,136,136,136,136,136,136,136,136,104,48,255,255,255,
+  255,255,255,255,255,255,255,63,96,136,136,136,136,136,136,136,136,136,104,0,
+};
+static const np_glyph_t cc_font_title_glyphs[4] = {
+  {11, 18, 0, -17, 12, 0},
+  {11, 18, 0, -17, 12, 99},
+  {11, 18, 0, -17, 12, 198},
+  {23, 3, -1, -7, 21, 297},
+};
+const cc_font_t cc_font_title = {&np_font_title, 4, cc_font_title_cps, cc_font_title_glyphs, cc_font_title_data};
+
+static const uint16_t cc_font_body_cps[4] = {
+  224,232,233,8212,
+};
+static const uint8_t cc_font_body_data[130] = {
+  16,3,0,0,230,1,0,0,140,0,0,32,4,0,144,254,77,16,122,230,14,48,118,253,
+  81,207,216,31,247,89,254,17,252,189,14,0,1,16,0,16,3,0,0,245,2,0,0,155,
+  0,0,32,5,0,64,252,60,32,223,182,13,247,139,250,115,191,136,23,242,77,132,2,213,
+  255,44,0,16,1,0,0,0,4,0,0,243,4,0,176,10,0,0,21,0,64,252,60,32,
+  223,182,13,247,139,250,115,191,136,23,242,77,132,2,213,255,44,0,16,1,0,186,187,187,
+  187,187,187,50,68,68,68,68,68,4,
+};
+static const np_glyph_t cc_font_body_glyphs[4] = {
+  {7, 11, 0, -10, 7, 0},
+  {7, 11, 0, -10, 7, 39},
+  {7, 11, 0, -10, 7, 78},
+  {13, 2, 0, -4, 12, 117},
+};
+const cc_font_t cc_font_body = {&np_font_body, 4, cc_font_body_cps, cc_font_body_glyphs, cc_font_body_data};
+
+static const uint16_t cc_font_small_cps[4] = {
+  224,232,233,8212,
+};
+static const uint8_t cc_font_small_data[71] = {
+  112,4,0,213,0,0,22,48,252,110,82,162,94,205,253,219,179,79,237,217,112,5,0,213,
+  0,0,22,16,250,77,232,132,189,190,187,232,52,22,233,191,0,128,4,32,46,0,67,16,
+  250,77,232,132,189,190,187,232,52,22,233,191,67,68,68,68,68,160,187,187,187,187,43,
+};
+static const np_glyph_t cc_font_small_glyphs[4] = {
+  {5, 8, 0, -8, 6, 0},
+  {5, 8, 0, -8, 6, 20},
+  {5, 8, 0, -8, 6, 40},
+  {11, 2, 0, -4, 10, 60},
+};
+const cc_font_t cc_font_small = {&np_font_small, 4, cc_font_small_cps, cc_font_small_glyphs, cc_font_small_data};
+
+const char *const cc_game_ids[19] = {"numdash", "crossyroad", "numblocks", "numdrive", "balatro", "buckshot", "blockblast", "portal", "tetris", "chess", "flappybird", "pacman", "snake", "connectfour", "solitaire", "g2048", "minesweeper", "breakout", "numvisuals"};
+const int cc_game_id_count = 19;
diff --git a/launcher/src/calcade_module.h b/launcher/src/calcade_module.h
new file mode 100644
index 0000000..65a1b8e
--- /dev/null
+++ b/launcher/src/calcade_module.h
@@ -0,0 +1,108 @@
+/* ============================================================================
+   calcade_module.h — le contrat entre NumPlay (le « cœur ») et chaque jeu
+   (un « module »). Version de l'ABI : 1.
+
+   Un pack NumPlay = le cœur + les modules choisis par le joueur sur
+   jeux.w-production.fr. Le site lie tout ensemble, dans le navigateur, en
+   UNE seule application (une icône sur la calculatrice).
+
+   Côté jeu : on remplace main() par une fonction « lancer », et on déclare
+   sa fiche avec CALCADE_DECLARER_MODULE (une seule par module) :
+
+       static int lancer(const CalcadeContexte *ctx) {
+           ... boucle du jeu ...
+           return 0;                       // le joueur a quitté : retour au menu
+       }
+       CALCADE_DECLARER_MODULE(voielibre,
+           "voielibre", "Voie Libre", "3.1", "Calcade",
+           vignette_voielibre,             // image 80x60 RGB565, ou NULL
+           96 * 1024,                      // RAM de travail demandée
+           lancer,
+           0x1D3F);                        // couleur RGB565 de la cartouche
+
+   Côté cœur : la liste des modules présents est le tableau
+   [__start_calcade_modules, __stop_calcade_modules[ (fourni par l'éditeur
+   de liens). Voir calcade_modules_debut() / calcade_modules_fin().
+   ========================================================================== */
+#ifndef CALCADE_MODULE_H
+#define CALCADE_MODULE_H
+
+#include <stddef.h>
+#include <stdint.h>
+
+#define CALCADE_ABI 1
+#define CALCADE_MAGIE 0x444F4D43u          /* « CMOD » en petit-boutiste */
+#define CALCADE_VIGNETTE_L 80
+#define CALCADE_VIGNETTE_H 60
+/* RAM de travail que NumPlay garantit à chaque jeu (ctx->ram) : ram_requise
+   ne doit pas dépasser ça. */
+#define CALCADE_RAM_GARANTIE (96u * 1024u)
+/* RAM statique (.data + .bss) maximale d'un module (vérifiée par l'outil). */
+#define CALCADE_RAM_STATIQUE_MAXI 4096u
+
+/* Ce que le cœur donne au jeu à chaque lancement. */
+typedef struct {
+    uint32_t abi;            /* = CALCADE_ABI */
+    uint8_t *ram;            /* zone de travail du jeu (alignée sur 8 octets),
+                                remise à zéro avant chaque lancement */
+    uint32_t taille_ram;     /* sa taille, >= ram_requise */
+    uint32_t lancements;     /* nombre d'ouvertures de NumPlay (information) */
+    void *reserve[4];        /* pour les versions suivantes : ne pas toucher */
+} CalcadeContexte;
+
+/* Ce que rend lancer() : */
+#define CALCADE_RETOUR_MENU 0   /* le joueur a quitté le jeu (BACK) : retour au menu de NumPlay */
+#define CALCADE_QUITTER     1   /* le joueur a appuyé sur HOME : NumPlay se ferme aussi */
+/* toute autre valeur (négative) = le jeu n'a pas pu démarrer (RAM, etc.) : retour au menu */
+
+typedef int (*CalcadeLancer)(const CalcadeContexte *ctx);
+
+/* La fiche d'un module. Lue par le cœur, jamais modifiée. */
+typedef struct {
+    uint32_t magie;          /* CALCADE_MAGIE */
+    uint16_t abi;            /* CALCADE_ABI */
+    uint16_t taille;         /* sizeof(CalcadeModule) */
+    const char *id;          /* identifiant court, minuscules, sans espace.
+                                Même nom que le fichier de sauvegarde <id>.sys */
+    const char *nom;         /* nom affiché dans le menu */
+    const char *version;     /* "3.1" */
+    const char *auteur;      /* "Calcade" */
+    const uint16_t *vignette;/* 80x60 pixels RGB565, ligne par ligne, ou NULL */
+    uint32_t ram_requise;    /* octets de ctx->ram nécessaires */
+    CalcadeLancer lancer;    /* le jeu ; rend la main quand le joueur quitte */
+    uint32_t couleur;        /* couleur principale (RGB565) de sa cartouche */
+} CalcadeModule;
+
+#define CALCADE_DECLARER_MODULE(ident, ...)                                   \
+    __attribute__((used, section("calcade_modules"), aligned(4)))            \
+    const CalcadeModule calcade_module_##ident = {                           \
+        CALCADE_MAGIE, CALCADE_ABI, (uint16_t)sizeof(CalcadeModule), __VA_ARGS__ }
+
+/* Petit distributeur de mémoire dans ctx->ram (pas de malloc dans un module). */
+typedef struct { uint8_t *base; uint32_t taille, pos; } CalcadeTas;
+
+static inline CalcadeTas calcade_tas(const CalcadeContexte *ctx) {
+    CalcadeTas t = { ctx->ram, ctx->taille_ram, 0 };
+    return t;
+}
+static inline void *calcade_prendre(CalcadeTas *t, uint32_t octets) {
+    uint32_t debut = (t->pos + 7u) & ~7u;
+    if (debut + octets > t->taille) return NULL;
+    t->pos = debut + octets;
+    return t->base + debut;
+}
+
+/* --- pour le cœur uniquement --- */
+#ifdef CALCADE_COEUR
+extern const CalcadeModule __start_calcade_modules[] __attribute__((weak));
+extern const CalcadeModule __stop_calcade_modules[] __attribute__((weak));
+static inline const CalcadeModule *calcade_modules_debut(void) { return __start_calcade_modules; }
+static inline const CalcadeModule *calcade_modules_fin(void) { return __stop_calcade_modules; }
+/* une fiche est utilisable si sa magie, son ABI et sa taille sont bonnes */
+static inline int calcade_module_valide(const CalcadeModule *m) {
+    return m && m->magie == CALCADE_MAGIE && m->abi == CALCADE_ABI &&
+           m->taille == sizeof(CalcadeModule) && m->lancer && m->nom && m->id;
+}
+#endif
+
+#endif
diff --git a/launcher/src/coeur.c b/launcher/src/coeur.c
new file mode 100644
index 0000000..08ba9b4
--- /dev/null
+++ b/launcher/src/coeur.c
@@ -0,0 +1,108 @@
+/* Calcade, 19 octobre 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+ *
+ * NumPlay « cœur » d'un pack Calcade (compilé avec NP_COEUR=1) : la table des jeux n'est plus
+ * générée à la compilation, elle est construite au démarrage à partir des fiches que le site a
+ * liées avec le cœur ([__start_calcade_modules, __stop_calcade_modules[), dans l'ordre du site.
+ *   - fiche « np_… » qui répond à la question NumPlay : un mini-jeu de NumPlay (numplay_pack.h) ;
+ *   - toute autre fiche valide : un grand jeu Calcade (ABI 1), lancé par sa fiche (games.c).
+ *   - fiche « carte:<id> » : les captures du carrousel d'un grand jeu Calcade (même question
+ *     NumPlay ; seules ses captures servent), accrochées à la fiche <id>. Le site l'ajoute avec
+ *     le jeu ; sans elle, la carte montre la vignette 80x60 du module.
+ * Le cœur ne connaît aucun jeu à l'avance. */
+#include <string.h>
+#include "np.h"
+#include "numplay_pack.h"
+#define CALCADE_COEUR
+#include "calcade_module.h"
+
+#if NP_COEUR
+np_game_t np_games[NP_MAX_GAMES];
+int np_game_count;
+/* l'arène est la RAM libre (_heap_start à _heap_end) : sa taille est celle qu'il y a */
+const uint32_t np_arena_size = 0;
+
+static char sous_titres[NP_MAX_GAMES][40];
+
+static uint32_t rgb888(uint32_t c) {
+  uint32_t r = (c >> 11) & 31, g = (c >> 5) & 63, b = c & 31;
+  return ((r * 255 / 31) << 16) | ((g * 255 / 63) << 8) | (b * 255 / 31);
+}
+static uint32_t melange(uint32_t a, uint32_t b, uint32_t t256) {
+  uint32_t o = 0;
+  for (int s = 0; s < 24; s += 8) {
+    uint32_t x = (a >> s) & 255, y = (b >> s) & 255;
+    o |= ((x * (256 - t256) + y * t256) >> 8) << s;
+  }
+  return o;
+}
+static void ajouter(char *d, int n, const char *s) {
+  int l = (int)strlen(d);
+  while (s && *s && l < n - 1) d[l++] = *s++;
+  d[l] = 0;
+}
+
+void np_coeur_init(void) {
+  np_game_count = 0;
+  const CalcadeModule *debut = calcade_modules_debut(), *fin = calcade_modules_fin();
+  if (!debut || !fin || fin <= debut) return;
+  for (const CalcadeModule *m = debut; m < fin && np_game_count < NP_MAX_GAMES; m++) {
+    if (!calcade_module_valide(m)) continue;
+    if (!strncmp(m->id, "carte:", 6)) continue; /* (deuxième passage) */
+    bool doublon = false;
+    for (int i = 0; i < np_game_count; i++)
+      if (!strcmp(((const CalcadeModule *)np_games[i].fiche)->id, m->id)) doublon = true;
+    if (doublon) continue;
+    np_game_t *g = &np_games[np_game_count];
+    const np_fiche_numplay_t *mini = NULL;
+    if (!strncmp(m->id, "np_", 3)) {
+      CalcadeContexte question = {NUMPLAY_QUESTION, NULL, 0, 0, {(void *)&mini, NULL, NULL, NULL}};
+      if (m->lancer(&question) != 0) mini = NULL;
+    }
+    if (mini && mini->magie == NUMPLAY_FICHE_MAGIE && mini->taille == sizeof *mini && mini->jeu.main) {
+      *g = mini->jeu;   /* un mini-jeu de NumPlay */
+    } else {            /* un grand jeu Calcade */
+      memset(g, 0, sizeof *g);
+      char *s = sous_titres[np_game_count];
+      s[0] = 0;
+      ajouter(s, sizeof sous_titres[0], m->auteur && m->auteur[0] ? m->auteur : "Calcade");
+      if (m->version && m->version[0]) {
+        ajouter(s, sizeof sous_titres[0], " - version ");
+        ajouter(s, sizeof sous_titres[0], m->version);
+      }
+      uint32_t c = rgb888(m->couleur & 0xFFFF);
+      g->id = m->id;
+      g->title = m->nom;
+      g->tagline = s;
+      g->accent = melange(c, 0xFFFFFF, 70);
+      g->top = melange(c, 0x000000, 40);
+      g->bottom = melange(c, 0x000000, 170);
+    }
+    g->fiche = m;
+    np_game_count++;
+  }
+  /* les cartes des grands jeux : leurs captures, nettes, à la place de la vignette */
+  for (const CalcadeModule *m = debut; m < fin; m++) {
+    if (!calcade_module_valide(m) || strncmp(m->id, "carte:", 6)) continue;
+    const np_fiche_numplay_t *carte = NULL;
+    CalcadeContexte question = {NUMPLAY_QUESTION, NULL, 0, 0, {(void *)&carte, NULL, NULL, NULL}};
+    if (m->lancer(&question) != 0 || !carte || carte->magie != NUMPLAY_FICHE_MAGIE ||
+        carte->taille != sizeof *carte || !carte->jeu.shots || !carte->jeu.nshots)
+      continue;
+    for (int i = 0; i < np_game_count; i++) {
+      np_game_t *g = &np_games[i];
+      const CalcadeModule *f = g->fiche;
+      bool meme = f && (!strcmp(f->id, m->id + 6) || (carte->jeu.title && !strcmp(f->nom, carte->jeu.title)));
+      if (!meme || (g->main && g->nshots)) continue; /* (un mini-jeu garde ses propres captures) */
+      g->shots = carte->jeu.shots;
+      g->nshots = carte->jeu.nshots;
+      if (carte->jeu.tagline) g->tagline = carte->jeu.tagline;
+      if (carte->jeu.credit) g->credit = carte->jeu.credit;
+      if (carte->jeu.top || carte->jeu.bottom) {
+        g->top = carte->jeu.top;
+        g->bottom = carte->jeu.bottom;
+        g->accent = carte->jeu.accent;
+      }
+    }
+  }
+}
+#endif
diff --git a/launcher/src/flash.c b/launcher/src/flash.c
index 9575532..626a588 100644
--- a/launcher/src/flash.c
+++ b/launcher/src/flash.c
@@ -1,3 +1,4 @@
+/* Modifié par Calcade le 19 octobre 2026 : pas de désinstallation dans un pack (NP_COEUR). */
 /* Uninstalling a game for real: its block of flash is wiped, which frees the
  * space it used, and its save files are deleted.
  *
@@ -20,7 +21,11 @@ extern bool np_sim_removed[];
 #endif
 
 bool np_uninstall_supported(void) {
-#if NP_SIMULATOR
+#if NP_COEUR
+  /* Calcade : dans un pack, les jeux ne sont pas calés sur les secteurs de la flash ; on
+     désinstalle en refaisant son pack sur le site */
+  return false;
+#elif NP_SIMULATOR
   return true;
 #else
   /* The flash system calls have kept their numbers and arguments since
diff --git a/launcher/src/games.c b/launcher/src/games.c
index 6c9603b..134d881 100644
--- a/launcher/src/games.c
+++ b/launcher/src/games.c
@@ -1,9 +1,18 @@
+/* Modifié par Calcade le 19 octobre 2026 : NP_COEUR, les grands jeux Calcade (modules ABI 1)
+ * se lancent par leur fiche, avec la RAM libre comme ctx->ram. */
 /* Installed games: each one is a block of flash between its head and tail
  * markers (see tools/gen_games.py). Uninstalling wipes the block, so a game
  * counts as installed only while both markers are intact. */
 #include <string.h>
 #include "np.h"
 #include "sys.h"
+#if NP_COEUR
+#define CALCADE_COEUR
+#include "calcade_module.h"
+/* un grand jeu Calcade : une fiche, pas de main NumPlay */
+static bool grand_jeu(const np_game_t *g) { return g->fiche && !g->main; }
+static uint8_t *ram_jeu(void) { return (uint8_t *)(((uintptr_t)np_arena + 7) & ~(uintptr_t)7); }
+#endif
 
 #define HEAD_MAGIC 0x3147504Eu /* "NPG1" */
 #define TAIL_MAGIC 0x444E4550u /* "PEND" */
@@ -14,6 +23,9 @@ bool np_sim_removed[NP_MAX_GAMES];
 
 bool np_game_installed(int i) {
   const np_game_t *g = &np_games[i];
+#if NP_COEUR
+  if (!g->begin) return true;
+#endif
 #if NP_SIMULATOR
   (void)g;
   return !np_sim_removed[i];
@@ -31,6 +43,9 @@ uint32_t np_game_size(int i) {
   for (int k = 0; k < g->nshots; k++) shots += g->shots[k].zsize + 2 * g->shots[k].ncolors;
   return g->est_size + shots;
 #else
+#if NP_COEUR
+  if (!g->begin) return g->est_size;
+#endif
   return (uint32_t)((const uint8_t *)g->end - (const uint8_t *)g->begin);
 #endif
 }
@@ -41,17 +56,37 @@ uint32_t np_game_ram_missing(int i) {
   return 0;
 #else
   const np_game_t *g = &np_games[i];
+#if NP_COEUR
+  if (grand_jeu(g)) {
+    extern char _heap_end[];
+    uint32_t room = (uint32_t)((uint8_t *)_heap_end - ram_jeu());
+    uint32_t need = ((const CalcadeModule *)g->fiche)->ram_requise;
+    return need > room ? need - room : 0;
+  }
+#endif
   uint32_t data = (uint32_t)(g->data + g->data_size - np_arena), bss = (uint32_t)(g->bss + g->bss_size - np_arena);
   uint32_t need = data > bss ? data : bss, room = np_arena_room();
   return need > room ? need - room : 0;
 #endif
 }
 
-void np_game_run(int i) {
+int np_game_run(int i) {
   const np_game_t *g = &np_games[i];
-  if (np_game_ram_missing(i)) return; /* (the home screen says so and doesn't start it) */
+  if (np_game_ram_missing(i)) return 0; /* (the home screen says so and doesn't start it) */
+#if NP_COEUR
+  if (grand_jeu(g)) {
+    extern char _heap_end[];
+    const CalcadeModule *m = g->fiche;
+    uint8_t *ram = ram_jeu();
+    uint32_t taille = (uint32_t)((uint8_t *)_heap_end - ram);
+    memset(ram, 0, taille);
+    CalcadeContexte ctx = {CALCADE_ABI, ram, taille, np_coeur_lancements(), {0, 0, 0, 0}};
+    return m->lancer(&ctx) == CALCADE_QUITTER;
+  }
+#endif
   /* fresh RAM, as if the game had just been launched from the home screen */
   if (g->data_size) memcpy(g->data, g->data_init, g->data_size);
   if (g->bss_size) memset(g->bss, 0, g->bss_size);
   g->main();
+  return 0;
 }
diff --git a/launcher/src/gfx.c b/launcher/src/gfx.c
index aabbfe2..3a12e0a 100644
--- a/launcher/src/gfx.c
+++ b/launcher/src/gfx.c
@@ -237,6 +237,27 @@ void gfx_image(const uint8_t *idx, const color_t *pal, int ncolors, int sw, int
   }
 }
 
+#if NP_COEUR
+/* Calcade (19 octobre 2026) : la vignette RGB565 d'un grand jeu Calcade, agrandie (sans coins). */
+void gfx_image565(const uint16_t *src565, int sw, int sh, int dx, int dy, int dw, int dh, int dim) {
+  if (dw <= 0 || dh <= 0) return;
+  int ya = NP_MAX(dy, gfx_y0), yb = NP_MIN(dy + dh, gfx_y1);
+  if (ya >= yb || dx >= SCREEN_W || dx + dw <= 0) return;
+  int t = (dim + 4) >> 3;
+  uint32_t step = ((uint32_t)sw << 16) / (uint32_t)dw;
+  int x0 = NP_MAX(dx, gfx_clip_x0), x1 = NP_MIN(dx + dw, gfx_clip_x1);
+  for (int row = ya; row < yb; row++) {
+    const uint16_t *line = src565 + (uint32_t)((row - dy) * sh / dh) * sw;
+    color_t *p = px_at(0, row);
+    uint32_t fx = (uint32_t)(x0 - dx) * step;
+    for (int x = x0; x < x1; x++, fx += step) {
+      color_t c = line[fx >> 16];
+      p[x] = t > 0 ? gfx_mix(c, 0, t) : c;
+    }
+  }
+}
+#endif
+
 void gfx_mask(const uint8_t *mask, int w, int h, int x, int y, color_t c, int a) {
   int ya = NP_MAX(y, gfx_y0), yb = NP_MIN(y + h, gfx_y1);
   for (int row = ya; row < yb; row++) {
diff --git a/launcher/src/gfx.h b/launcher/src/gfx.h
index 96644c8..748e4b3 100644
--- a/launcher/src/gfx.h
+++ b/launcher/src/gfx.h
@@ -29,6 +29,9 @@ void gfx_circle(int cx, int cy, int r, color_t c, int a256);
  * darkens it (0..256). */
 void gfx_image(const uint8_t *idx, const color_t *pal, int ncolors, int sw, int sh, int dx, int dy, int dw, int dh,
                int radius, int dim);
+#if NP_COEUR
+void gfx_image565(const uint16_t *src565, int sw, int sh, int dx, int dy, int dw, int dh, int dim);
+#endif
 void gfx_mask(const uint8_t *mask, int w, int h, int x, int y, color_t c, int a256);
 /* Paints the outside of the rounded corners of (x, y, w, h) with c. */
 void gfx_corners(int x, int y, int w, int h, int r, color_t c);
diff --git a/launcher/src/home.c b/launcher/src/home.c
index 18408fa..915b04d 100644
--- a/launcher/src/home.c
+++ b/launcher/src/home.c
@@ -1,3 +1,5 @@
+/* Modifié par Calcade le 19 octobre 2026 : NP_COEUR, la carte d'un grand jeu Calcade montre sa
+ * vignette (ou une cartouche à sa couleur avec son initiale). */
 /* The home screen: a carousel of game cards. The selected card is large,
  * its neighbours peek in from the sides, and the card cycles through the
  * game's screenshots. The last card opens the settings. */
@@ -68,6 +70,25 @@ static void draw_settings_art(int x, int y, int w, int h, int dim) {
   if (w > gear->w + 8) gfx_icon(gear, x + (w - gear->w) / 2, y + (h - gear->h) / 2 - 2, 0xFFFF, 200 - dim / 2);
 }
 
+#if NP_COEUR
+#include "calcade_module.h"
+/* un grand jeu Calcade : sa vignette 80x60, sinon sa couleur et son initiale */
+static void carte_calcade(const np_game_t *g, int x, int y, int w, int h, int dim, float s) {
+  const CalcadeModule *m = g->fiche;
+  if (m->vignette) {
+    gfx_image565(m->vignette, CALCADE_VIGNETTE_L, CALCADE_VIGNETTE_H, x, y, w, h, dim);
+    return;
+  }
+  gfx_vgrad(x, y, w, h, gfx_lerp888(g->top, 0, dim), gfx_lerp888(g->bottom, 0, dim));
+  char initiale[2] = {g->title && g->title[0] ? g->title[0] : '?', 0};
+  if (s > 0.7f) {
+    gfx_circle(x + w / 2, y + h / 2 - 4, (int)(34 * s), 0xFFFF, 60);
+    gfx_text_center(&np_font_title, x + w / 2, y + h / 2 + 4, initiale, 0xFFFF, 256 - dim);
+    gfx_text_center(&np_font_small, x + w / 2, y + h - 12, "Calcade", 0xFFFF, (256 - dim) * 3 / 4);
+  }
+}
+#endif
+
 static void draw_card(home_t *h, int k, float d) {
   int game = h->item[k];
   float ad = absf(d);
@@ -103,6 +124,9 @@ static void draw_card(home_t *h, int k, float d) {
     const uint8_t *px = ui_shot(game, shot);
     const np_shot_t *sh = &g->shots[shot];
     if (px) gfx_image(px, sh->palette, sh->ncolors, SHOT_W, SHOT_H, ix - off, iy, iiw, iih, 0, dim);
+#if NP_COEUR
+    else if (g->fiche && !g->main) carte_calcade(g, ix, iy, iiw, iih, dim, (float)iiw / (CARD_W - 2 * FRAME));
+#endif
     else gfx_fill(ix, iy, iiw, iih, gfx_rgb(gfx_lerp888(g->bottom, 0, dim)));
     if (off) {
       int next = (shot + 1) % g->nshots;
@@ -152,8 +176,8 @@ static void scene(void *ctx) {
   int ui_alpha = (int)(256 * (1 - z));
   /* header */
   if (gfx_y0 < 26 && ui_alpha > 0) {
-    gfx_icon(&np_icon_logo, 12, 6, 0xFFFF, ui_alpha);
-    gfx_text(&np_font_body, 40, 18, "NumPlay", 0xFFFF, ui_alpha);
+    gfx_icon(&np_icon_logo, 14, 4, 0xFFFF, ui_alpha);
+    gfx_text(&np_font_body, 40, 18, "Calcade", 0xFFFF, ui_alpha);
     /* where we are in the carousel; with many cards the dots get closer */
     int pitch = NP_MIN(10, 190 / (h->n + 1));
     int dx = SCREEN_W - 10 - (h->n + 1) * pitch;
diff --git a/launcher/src/icons.c b/launcher/src/icons.c
index fb4fff6..404a044 100644
--- a/launcher/src/icons.c
+++ b/launcher/src/icons.c
@@ -146,16 +146,16 @@ static const uint8_t right_data[56] = {
 };
 const np_icon_t np_icon_right = {8, 14, right_data};
 
-static const uint8_t logo_data[165] = {
-  0,0,0,0,0,0,0,0,0,0,0,0,0,49,68,68,68,68,68,20,0,0,0,162,
-  255,255,255,255,255,255,255,59,0,64,254,79,196,255,255,255,255,255,255,5,225,255,15,176,
-  255,255,255,221,255,255,46,248,255,15,176,255,255,175,0,251,255,175,252,239,13,160,253,255,
-  111,0,248,255,239,255,79,0,0,208,255,223,67,140,252,255,254,127,4,48,228,255,255,255,
-  2,225,255,251,255,15,176,255,255,255,255,1,224,223,245,255,15,176,255,255,255,255,108,251,
-  127,176,255,15,176,255,255,255,255,255,255,12,16,250,159,233,255,255,255,255,255,191,1,0,
-  64,218,221,221,221,221,221,173,5,0,0,0,0,0,0,0,0,0,0,0,0,
+static const uint8_t logo_data[162] = {
+  0,0,0,0,0,34,0,0,0,0,0,115,185,253,255,10,0,0,0,112,207,138,54,17,
+  109,0,0,0,224,4,0,0,0,154,0,0,0,240,3,180,22,0,183,0,0,0,208,5,
+  243,207,1,229,0,0,0,176,8,240,8,0,243,1,0,0,144,10,48,0,0,244,3,0,
+  0,112,29,49,117,185,254,5,0,0,80,255,223,251,79,251,7,0,0,48,255,142,130,127,
+  253,9,0,0,16,255,26,96,143,249,11,0,0,0,254,239,242,159,250,13,0,0,0,251,
+  255,255,255,255,15,0,0,0,249,255,255,255,255,14,0,0,0,246,255,255,255,255,7,0,
+  0,0,160,255,223,155,55,0,0,0,0,0,34,0,0,0,0,0,
 };
-const np_icon_t np_icon_logo = {22, 15, logo_data};
+const np_icon_t np_icon_logo = {18, 18, logo_data};
 
 static const uint8_t heart_data[45] = {
   16,69,0,84,1,228,255,187,255,78,253,255,255,255,223,255,255,255,255,255,251,255,255,255,
diff --git a/launcher/src/main.c b/launcher/src/main.c
index 9a3804c..2959d17 100644
--- a/launcher/src/main.c
+++ b/launcher/src/main.c
@@ -1,7 +1,12 @@
+/* Modifié par Calcade (jeux.w-production.fr) le 16 octobre 2026 : intro Calcade, compte des
+ * ouvertures et écran de mise à jour obligatoire (voir calcade.c et CALCADE.md). */
+/* Modifié par Calcade le 19 octobre 2026 : NP_COEUR (pack Calcade : table des jeux construite au
+ * démarrage, écran « aucun jeu », Home dans un grand jeu Calcade ferme NumPlay). */
 /* NumPlay: one app for all the games. */
 #include <eadk.h>
 #include "np.h"
 #include "sys.h"
+#include "calcade.h"
 
 #if PLATFORM_DEVICE && !NP_SIMULATOR
 const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
@@ -27,6 +32,9 @@ static bool home_pressed;
 #endif
 
 int main(void) {
+#if NP_COEUR
+  np_coeur_init();
+#endif
   np_session_begin();
   np_finish_pending_uninstalls();
   /* just updated? the saves come back from their copy, then the copy is refreshed */
@@ -37,6 +45,19 @@ int main(void) {
   np_config_load(&cfg);
   if (cfg.disguise && !np_matrices(&cfg)) return np_session_end();
   np_wait_release();
+  /* Calcade: this opening is counted in numplay.sys (every 20th sets the "update required" flag),
+   * then the studio's intro; with the flag set, NumPlay stays on the update screen (Home quits) */
+  bool update_required = cc_launch();
+  np_progress_backup();
+  if (!cc_intro()) return np_session_end();
+  if (update_required) {
+    cc_update_required();
+    return np_session_end();
+  }
+  np_wait_release();
+#if NP_COEUR
+  if (!np_game_count && !np_coeur_aucun_jeu()) return np_session_end();
+#endif
   int selected = np_game_count ? 0 : -1;
   bool returning = false;
   for (;;) {
@@ -49,7 +70,8 @@ int main(void) {
       continue;
     }
     home_pressed = false;
-    np_game_run(r);
+    cc_game_started(r);
+    if (np_game_run(r)) home_pressed = true;
     np_progress_backup();
     /* Home in a game goes all the way home, like everywhere on the calculator */
     if (home_pressed) break;
diff --git a/launcher/src/np.h b/launcher/src/np.h
index 2d20be6..10c5c33 100644
--- a/launcher/src/np.h
+++ b/launcher/src/np.h
@@ -1,3 +1,5 @@
+/* Modifié par Calcade le 19 octobre 2026 : NP_COEUR, NumPlay « cœur » d'un pack Calcade (la table
+ * des jeux est construite au démarrage à partir des modules liés par le site ; voir CALCADE.md). */
 /* NumPlay launcher: shared definitions. */
 #ifndef NP_H
 #define NP_H
@@ -23,6 +25,8 @@ enum {
 /* ---- platform (platform.c) */
 uint32_t np_keys(void);           /* keys held right now */
 uint32_t np_millis(void);
+/* true when the USB cable is plugged in (Calcade: the update screen then lets the calculator go) */
+bool np_usb_plugged(void);
 void np_sleep(unsigned ms);
 void np_vblank(void);
 void np_push(int x, int y, int w, int h, const color_t *px);
@@ -32,7 +36,14 @@ void np_wait_release(void);
 
 /* ---- one arena for everything big: the running game's RAM, or the
  * launcher's buffers while no game runs */
+#if NP_COEUR
+/* pack Calcade : l'arène est toute la RAM libre de l'appli, après les .data/.bss du cœur et des
+   modules (symbole du script de liaison du site) */
+extern uint8_t _heap_start[];
+#define np_arena _heap_start
+#else
 extern uint8_t np_arena[];
+#endif
 extern const uint32_t np_arena_size;
 uint32_t np_arena_room(void);     /* the arena and the RAM after it, up to the end of the app's */
 void *np_alloc(uint32_t size);    /* bump allocator in the arena */
@@ -61,16 +72,28 @@ typedef struct {
   const char *const *records;            /* save files, deleted on uninstall (name*: all starting so) */
   const char *const *progress;           /* the ones Reset deletes (not levels made in an editor) */
   uint32_t est_size;                     /* code and data, for the simulator */
+  const void *fiche;                     /* NP_COEUR : la fiche CalcadeModule du jeu (NULL sinon) */
 } np_game_t;
 
+#if NP_COEUR
+#define NP_MAX_GAMES 40
+/* NP_COEUR : remplie au démarrage (coeur.c) */
+extern np_game_t np_games[];
+extern int np_game_count;
+void np_coeur_init(void);
+uint32_t np_coeur_lancements(void);       /* ouvertures de NumPlay (calcade.c) */
+bool np_coeur_aucun_jeu(void);            /* écran « aucun jeu » (calcade.c) ; false : quitter */
+#else
 #define NP_MAX_GAMES 32                  /* tools/gen_games.py checks games.json against it */
 extern const np_game_t np_games[];
 extern const int np_game_count;
+#endif
 
 bool np_game_installed(int i);
 uint32_t np_game_size(int i);            /* bytes of flash */
 uint32_t np_game_ram_missing(int i);  /* the bytes of RAM a game needs more than there is, or 0 */
-void np_game_run(int i);
+/* 1 when the game ended with Home (NumPlay closes too) */
+int np_game_run(int i);
 
 /* ---- storage (storage.c): Epsilon's record file system */
 bool np_storage_delete(const char *name);   /* true if gone (or never there) */
diff --git a/launcher/src/numplay_pack.h b/launcher/src/numplay_pack.h
new file mode 100644
index 0000000..d38cee7
--- /dev/null
+++ b/launcher/src/numplay_pack.h
@@ -0,0 +1,28 @@
+/* Calcade, 19 octobre 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+ *
+ * Les mini-jeux de NumPlay dans un pack Calcade (voir CALCADE.md, « Pack NumPlay »).
+ *
+ * Chaque mini-jeu est un module Calcade ordinaire (fiche CALCADE_DECLARER_MODULE, ABI 1, id
+ * « np_<jeu> »), mais NumPlay le lance à sa façon : sa RAM (.data + .bss) est placée au début de
+ * la RAM libre de l'appli (_heap_start), et le cœur la remet à neuf avant chaque partie.
+ *
+ * Pour obtenir la description complète du jeu (captures, couleurs, fichiers de sauvegarde…),
+ * le cœur appelle la fonction lancer() de la fiche avec une QUESTION au lieu d'un vrai contexte :
+ *     ctx->abi == NUMPLAY_QUESTION, ctx->reserve[0] == adresse d'un « const np_fiche_numplay_t * »
+ * Le module y écrit l'adresse de sa description et rend 0, sans rien lancer. Appelé avec un vrai
+ * contexte (ABI 1), un mini-jeu rend -1 : il ne peut tourner que dans NumPlay.
+ * Le cœur ne pose cette question qu'aux fiches dont l'id commence par « np_ ». */
+#ifndef NUMPLAY_PACK_H
+#define NUMPLAY_PACK_H
+#include "np.h"
+
+#define NUMPLAY_QUESTION 0x3F51504Eu      /* « NPQ? » */
+#define NUMPLAY_FICHE_MAGIE 0x4A504E43u   /* « CNPJ » */
+
+typedef struct {
+  uint32_t magie;                         /* NUMPLAY_FICHE_MAGIE */
+  uint32_t taille;                        /* sizeof(np_fiche_numplay_t) */
+  np_game_t jeu;                          /* comme une ligne de la table de NumPlay */
+} np_fiche_numplay_t;
+
+#endif
diff --git a/launcher/src/platform.c b/launcher/src/platform.c
index 9a7189d..04df873 100644
--- a/launcher/src/platform.c
+++ b/launcher/src/platform.c
@@ -18,6 +18,17 @@ uint32_t np_keys(void) {
 }
 
 uint32_t np_millis(void) { return (uint32_t)eadk_timing_millis(); }
+/* Calcade: Ion::USB::isPlugged, SVC_USB_IS_PLUGGED = 52 in Epsilon's svcall.h (eadk.o of the
+ * website does not have eadk_usb_is_plugged) */
+bool np_usb_plugged(void) {
+#if PLATFORM_DEVICE && !NP_SIMULATOR
+  uint32_t r;
+  __asm__ volatile("svc 52 ; mov %0, r0" : "=r"(r) : : "r0", "r1", "r2", "r3", "memory");
+  return (r & 0xFF) != 0;
+#else
+  return false;
+#endif
+}
 void np_sleep(unsigned ms) { eadk_timing_msleep(ms); }
 void np_vblank(void) { eadk_display_wait_for_vblank(); }
 
diff --git a/launcher/src/settings.c b/launcher/src/settings.c
index 62501f0..ac23d91 100644
--- a/launcher/src/settings.c
+++ b/launcher/src/settings.c
@@ -114,7 +114,7 @@ static void list_scene(void *ctx) {
       gfx_icon(&np_icon_heart, x + 1, y + 12, gfx_rgb(DANGER), 256);
       gfx_text(&np_font_body, x + 12, y + 20, T(" by Mason Chen"), 0xFFFF, 230);
       gfx_text_center(&np_font_small, 160, y + 36, "github.com/Mason363/NumPlay", 0xFFFF, 170);
-      gfx_text_center(&np_font_small, 160, y + 50, "NumPlay " NP_VERSION, 0xFFFF, 120);
+      gfx_text_center(&np_font_small, 160, y + 50, "Calcade " NP_VERSION, 0xFFFF, 120);
       continue;
     }
     bool on = i == l->sel;
@@ -138,7 +138,7 @@ static void list_scene(void *ctx) {
         if (on) pill(SCREEN_W - 76, y + 7, 58, T("Reset"), true, ACCENT);
         break;
       case ROW_DISGUISE:
-        row_text(y, T("Start as Matrices"), T("A math app first; NumPlay opens in secret"), 256);
+        row_text(y, T("Start as Matrices"), T("A math app first; Calcade opens in secret"), 256);
         toggle(y, l->cfg.disguise, 256);
         break;
       case ROW_HINT: {
@@ -149,7 +149,7 @@ static void list_scene(void *ctx) {
       }
       case ROW_SECRET: {
         int a = l->cfg.disguise ? 256 : 130;
-        row_text(y, T("Secret way in"), T("Opens NumPlay from Matrices"), a);
+        row_text(y, T("Secret way in"), T("Opens Calcade from Matrices"), a);
         const char *v = secret_names[l->cfg.secret];
         int w = gfx_text_width(&np_font_small, v);
         gfx_text_right(&np_font_small, SCREEN_W - 32, y + 21, v, 0xFFFF, a);
@@ -184,7 +184,7 @@ static const char *error_text(int e) {
     case NP_UNINSTALL_BATTERY:
       return T("The battery is too low to safely erase flash memory. Plug in your calculator, then try again.");
     default:
-      return T("Something went wrong while erasing. To be safe, reinstall NumPlay from my.numworks.com/apps.");
+      return T("Something went wrong while erasing. To be safe, reinstall Calcade from jeux.w-production.fr.");
   }
 }
 
@@ -286,7 +286,7 @@ static void dialog_scene(void *ctx) {
   strcat(body, T(" and all of its saved progress. You can't undo this."));
   int y = gfx_paragraph(&np_font_body, 160, 102, 280, 16, body, 0xFFFF, 240);
   gfx_paragraph(&np_font_small, 160, y + 4, 290, 13,
-                T("To play it again, reinstall NumPlay from my.numworks.com/apps. Your other games keep their progress."),
+                T("To play it again, reinstall Calcade from jeux.w-production.fr. Your other games keep their progress."),
                 0xFFFF, 170);
   ui_button(38, 198, 110, 28, T("Cancel"), d->choice == 0, 0x555D70, 256);
   hold_button(d, T("Uninstall"));
diff --git a/launcher/src/storage.c b/launcher/src/storage.c
index 8ca7f8b..53dbd53 100644
--- a/launcher/src/storage.c
+++ b/launcher/src/storage.c
@@ -1,3 +1,4 @@
+/* Modifié par Calcade le 16 octobre 2026 : numplay.sys ajouté à la copie des sauvegardes. */
 /* Save files in Epsilon's file system, with the careful record handling shared
  * with the games (games/common/epsilon_files.h): deleting a game's saves,
  * NumPlay's own settings, and a copy of every save kept in a Python script. */
@@ -106,9 +107,9 @@ bool np_file_write(const char *name, const void *data, uint32_t len) { return ef
  *                            42 KB, and a copy that takes less of it leaves more to the saves. */
 #define COPY_NAME "numplay_saves.py"
 static const char copy_head[] =
-    "# NumPlay keeps a copy of your game progress here, so that\n"
-    "# updating NumPlay doesn't erase it. If you delete this file,\n"
-    "# NumPlay writes it again: your progress stays either way.\n";
+    "# Calcade keeps a copy of your game progress here, so that\n"
+    "# updating Calcade doesn't erase it. If you delete this file,\n"
+    "# Calcade writes it again: your progress stays either way.\n";
 static const char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
 
 static uint32_t b64_len(uint32_t n) { return (n + 2) / 3 * 4; }
@@ -163,6 +164,7 @@ static bool lz_scratch(uint32_t largest) {
 static bool save_name(int i, char out[64]) {
   if (i-- == 0) return strcpy(out, CONFIG_NAME), true;
   if (i-- == 0) return strcpy(out, BG_NAME), true; /* the home screen's background */
+  if (i-- == 0) return strcpy(out, "numplay.sys"), true; /* Calcade: openings and the update flag */
   for (int g = 0; g < np_game_count; g++)
     for (const char *const *r = np_games[g].records; r && *r; r++) {
       bool seen = false;
diff --git a/pack/LISEZMOI-PACK.md b/pack/LISEZMOI-PACK.md
new file mode 100644
index 0000000..a13b50e
--- /dev/null
+++ b/pack/LISEZMOI-PACK.md
@@ -0,0 +1,140 @@
+# NumPlay en pack : le cœur et les modules (ABI Calcade 1)
+
+Calcade, 2026. Fait partie de NumPlay modifié, sous licence GNU GPL v3.
+
+Le site jeux.w-production.fr fabrique une seule application « NumPlay » au moment de l'installation. Il lie dans le navigateur (`lieur.js`, script de `kit-numplay/outils/liaison-test.ld`) :
+
+```
+eadk.o  +  NumPlay-coeur.nwa  +  np_snake.cmod  +  voielibre.cmod  + …
+```
+
+Ce dossier fabrique le cœur et un module par mini-jeu de NumPlay. Il ne touche ni aux jeux ni aux versions classiques (`NumPlay.nwa`, `NumPlay-leger.nwa`, voir `CALCADE.md`).
+
+## Fabriquer
+
+Il faut le kit Calcade à côté du dépôt (`../kit-numplay`, ou `KIT=...`), et NumPlay déjà construit une fois (`make`, ou `tools/calcade_build.sh`) : les modules partent des objets de chaque jeu.
+
+```sh
+pack/fabriquer.sh            # dist/pack/modules/np_<jeu>.cmod, .json, .png (les 19 mini-jeux)
+pack/fabriquer.sh snake      # un seul
+pack/coeur.sh                # dist/pack/NumPlay-coeur.nwa
+python3 pack/lier.py p.elf dist/pack/NumPlay-coeur.nwa dist/pack/modules/np_snake.cmod   # un pack, comme le site
+python3 tests/test_pack.py dist/pack/NumPlay-coeur.nwa dist/pack/modules --out captures
+python3 pack/rapport.py dist/pack/modules     # le tableau des modules
+```
+
+## Le cœur (`pack/coeur/`)
+
+Il reprend le lanceur de NumPlay (`launcher/src`), sans la table des jeux :
+
+- l'intro Calcade, `numplay.sys` (CLC2, inchangé) et l'écran « Mise à jour obligatoire » toutes les 20 ouvertures ;
+- le carrousel, fait uniquement des fiches : nom, version, auteur, vignette 80×60 (sinon une cartouche de la couleur du jeu avec l'initiale de son nom), couleur. Seules les cartes proches sont dessinées, avec 1 jeu comme avec 64. Haut et Bas sautent de 5 cartes ;
+- les réglages qui ne dépendent d'aucun jeu : démarrer en Matrices, l'accès secret, l'indice, les crédits et la licence ;
+- « Aucun jeu dans NumPlay. Choisis tes jeux sur jeux.w-production.fr » s'il n'y a aucun module ; « Pas assez de mémoire pour ce jeu » si `ram_requise` dépasse ce qu'il y a ;
+- la copie des sauvegardes `numplay_saves.py`, pour les jeux du pack : les fichiers des mini-jeux (d'après `games/games.json`), et `<id>.sys` pour un jeu Calcade.
+
+Le cœur n'appelle aucun jeu par son nom. Le seul endroit où il traite un module à part est la place de sa RAM, d'après le préfixe `np_` de son id (voir plus bas).
+
+Le cœur n'a pas de `malloc` : tout le tas est à lui. Sa RAM statique (2,5 Ko) est rangée en une section `.data.numplay` (`pack/coeur.ld`).
+
+## Les modules (`pack/fabriquer.sh`, `pack/colle.c`, `pack/cmod.py`)
+
+Les jeux restent tels quels. Leurs sources ne sont pas modifiées, et chaque module reprend l'objet du jeu construit pour NumPlay. Seul Block Blast est recompilé, dans sa version « appli seule » qui emporte ses fonctions de dessin.
+
+1. Le jeu appelle le clavier par `np_keyboard_scan` (renommage, comme dans NumPlay). La colle sait ainsi si le jeu s'est fini par Home (`CALCADE_QUITTER`) ou par Back (`CALCADE_RETOUR_MENU`).
+2. La colle contient la fiche (`CALCADE_DECLARER_MODULE`), `lancer()` et la vignette.
+3. Le jeu, la colle et la libc (newlib-nano, libm, libgcc) sont liés ensemble (`ld -r --gc-sections`).
+4. `cmod.py` sort toute la RAM du jeu (sa `.data` et sa `.bss`, libc comprise) de l'objet :
+   - chaque référence à cette RAM devient `_eadk_numplay_ram + position` ;
+   - la `.data` devient une copie en flash, que `lancer()` recopie dans `ctx->ram` à chaque lancement (le reste est remis à zéro). Le jeu repart donc toujours de zéro ;
+   - tout devient local sauf la fiche.
+
+   Résultat : 0 octet de RAM statique, pas de `malloc`, aucune référence non résolue en dehors de `eadk_*` et `_eadk_numplay_ram`. Le vérificateur du kit dit `OK` pour les 19 modules.
+5. Les sauvegardes ne changent pas : mêmes fichiers, même format que dans NumPlay et dans les applis seules.
+
+### Pourquoi `_eadk_numplay_ram` (écart à l'ABI 1, à valider avec le site)
+
+Le code des mini-jeux contient l'adresse de sa RAM en dur, et des centaines de milliers de lignes de jeux en dépendent. L'ABI 1 prévoit au contraire que chaque jeu reçoive sa RAM à l'exécution (`ctx->ram`). Réécrire les jeux pour ça n'était pas raisonnable. Les modules `np_` attendent donc leur RAM à une adresse connue au moment de la liaison : le repère `_eadk_numplay_ram`.
+
+- Le repère est défini par le cœur, juste après sa RAM statique.
+- Dans le script du site, la RAM statique du cœur vient juste après celle de `eadk.o` (avant celle des autres modules), puisque `eadk.o` et le cœur sont les deux premiers fichiers liés.
+- Le nom commence par `_eadk_` pour passer la règle du vérificateur (« références non résolues : `eadk_*`, `_eadk_*` »). Ce n'est pourtant pas un appel système : c'est un symbole du cœur. Un module `np_` ne se lie donc qu'avec ce cœur. Avec un autre cœur, la liaison échoue (référence non résolue), et le site affiche son message « fichier incomplet ».
+- Au lancement d'un module `np_`, le cœur met de côté, en haut de la RAM, la RAM statique des autres modules du pack (elle commence au repère). Il la remet intacte au retour du jeu (vérifié par le test 4). Pour ces modules, `ctx->ram` = le repère, et sa taille va jusqu'à cette copie.
+- `lancer()` vérifie que `ctx->ram` est bien au repère. Sinon le module rend -1, et le jeu ne démarre pas, au lieu d'écrire ailleurs.
+- Les autres modules (les jeux Calcade) reçoivent le tas, aligné sur 8 octets, comme prévu par l'ABI.
+
+## Idées pour l'ABI 2
+
+- **Une zone de RAM placée par le script du site**, par exemple `__calcade_ram = ALIGN(_bss_section_end_ram, 8)` ou une section `.calcade_ram (NOLOAD)` après la `.bss`. Les jeux faits pour une adresse fixe y auraient leur RAM sans passer par un symbole du cœur. Il suffirait ensuite d'ajouter ce nom aux références autorisées du vérificateur.
+- **Une liste des fichiers de sauvegarde dans la fiche** (`const char *const *sauvegardes`). Le cœur pourrait alors en garder une copie (`numplay_saves.py`) pour n'importe quel jeu, sans table propre aux mini-jeux.
+- **Un champ `ram_maxi` à côté de `ram_requise`** : il dirait au cœur qu'un jeu sait profiter de plus de RAM s'il y en a.
+- **Une table de fonctions du cœur dans `ctx->reserve`** (dessin en bandes, polices, inflate, libc) : ces fonctions ne seraient plus recopiées dans chaque module. Ce serait l'ABI 2 du prompt, compatible ABI 1 (le champ `abi` du contexte dirait si la table est là).
+
+## Compte rendu (19 octobre 2026)
+
+### Les modules
+
+| id | nom | catégorie | flash | RAM statique | ram_requise |
+|---|---|---|---:|---:|---:|
+| np_numdash | NumDash | Rythme | 203.2 Ko | 0 o | 107.6 Ko (> 96 Ko) |
+| np_crossyroad | Piou Road | Arcade | 26.8 Ko | 0 o | 94.1 Ko |
+| np_numblocks | NumBlocks | Bac à sable | 365.6 Ko | 0 o | 115.9 Ko (> 96 Ko) |
+| np_numdrive | NumDrive | Course | 67.1 Ko | 0 o | 67.9 Ko |
+| np_balatro | Jokeria | Cartes | 52.6 Ko | 0 o | 48.0 Ko |
+| np_buckshot | Chevrotine | Stratégie | 131.5 Ko | 0 o | 109.5 Ko (> 96 Ko) |
+| np_blockblast | Block Boom | Réflexion | 33.3 Ko | 0 o | 10.3 Ko |
+| np_portal | Warp Lab | Réflexion | 31.8 Ko | 0 o | 1.9 Ko |
+| np_tetris | Stackfall | Arcade | 48.9 Ko | 0 o | 0.4 Ko |
+| np_chess | Échecs | Plateau | 30.5 Ko | 0 o | 74.0 Ko |
+| np_flappybird | Flappix | Arcade | 26.0 Ko | 0 o | 21.3 Ko |
+| np_pacman | Munchy Maze | Arcade | 25.1 Ko | 0 o | 18.1 Ko |
+| np_snake | Snake | Arcade | 29.7 Ko | 0 o | 20.9 Ko |
+| np_connectfour | Aligne 4 | Plateau | 23.4 Ko | 0 o | 53.5 Ko |
+| np_solitaire | Solitaire | Cartes | 26.4 Ko | 0 o | 18.1 Ko |
+| np_g2048 | 2048 | Réflexion | 22.6 Ko | 0 o | 27.3 Ko |
+| np_minesweeper | Démineur | Réflexion | 24.2 Ko | 0 o | 7.1 Ko |
+| np_breakout | Casse-briques | Arcade | 21.6 Ko | 0 o | 11.6 Ko |
+| np_numvisuals | NumVisuals | Outils | 21.6 Ko | 0 o | 40.6 Ko |
+
+Total des 19 modules : 1212 Ko de flash.
+
+Chaque module contient sa vignette 80×60 (9,4 Ko), sa libc et, pour Block Boom, les fonctions de dessin et les polices du lanceur.
+
+Trois jeux demandent plus que les 96 Ko garantis (NumDash, NumBlocks, Chevrotine). Ils marchent parce que le cœur leur donne toute la RAM qui reste : 149 Ko avec la RAM d'Epsilon 25 (153 676 octets), 144 Ko avec la plus petite d'Epsilon 23 (148 928). Si la RAM manque (beaucoup d'autres modules à RAM statique dans le pack), le carrousel affiche « Il manque N Ko de mémoire » sous le nom et ne lance pas le jeu.
+
+### Le cœur
+
+- `NumPlay-coeur.nwa` : 114 Ko en fichier, 70,1 Ko une fois lié seul (71 824 octets).
+- RAM statique : 2 536 octets (maximum 8 Ko).
+
+### Mis en commun ou recopié
+
+- **Recopié dans chaque module** : la libc (newlib-nano, libm, libgcc) et la colle (lancer, fiche, vignette).
+- **Recopié pour Block Boom seulement** : les bandes, les formes et les polices du lanceur.
+- **Rien n'est fourni par le cœur aux modules** : ABI 1, sans table de fonctions.
+- **Gardé tel quel** : chaque jeu (sources et objets de NumPlay 1.10.0) et ses sauvegardes, avec les mêmes fichiers et le même format.
+
+### Tests passés (`tests/test_pack.py`, émulateur ARM, liaison identique au site)
+
+1. **Cœur seul** :
+   - intro, puis « Aucun jeu dans NumPlay » ;
+   - Home ferme NumPlay ;
+   - `numplay.sys` compte l'ouverture ;
+   - `numplay_saves.py` est écrit.
+2. **Mise à jour** :
+   - la 20e ouverture lève le bit 31 ;
+   - l'écran reste, quelle que soit la touche ; Home ferme ;
+   - drapeau effacé par le site : le carrousel revient.
+3. **Pack complet** (les 19 mini-jeux, 1 282 Ko de flash) :
+   - RAM statique du pack : 2 536 octets (≤ 48 Ko) ;
+   - le carrousel va jusqu'à la carte Réglages (20 cartes) ;
+   - **les 19 jeux** : chacun démarre, Back revient au carrousel, il se relance proprement, Home ferme NumPlay.
+4. **Pack mélangé** (Échecs, voietest, Stackfall, un module d'essai à RAM statique, Aligne 4) :
+   - fiches dans l'ordre du site ;
+   - chaque jeu démarre et revient au carrousel ;
+   - la RAM statique de l'autre module ressort intacte d'un mini-jeu (compteur à 2) ;
+   - `ctx->lancements` = 1 ;
+   - `ctx->taille_ram` = 149 616 octets.
+5. **Avec le vrai `VoieLibre.cmod` du site** : il démarre après Snake, et Home ferme.
+6. **RAM de travail d'un jeu Calcade** : 149 616 octets (RAM 153 676) et 144 872 octets (RAM 148 928), soit ≥ 96 Ko.
+7. **Versions classiques reconstruites** (`NumPlay.nwa`, `NumPlay-leger.nwa`) : `tests/test_calcade.py` passe toujours.
diff --git a/pack/cmod.py b/pack/cmod.py
new file mode 100755
index 0000000..50ddee9
--- /dev/null
+++ b/pack/cmod.py
@@ -0,0 +1,259 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Fait un module NumPlay (.cmod, ABI Calcade 1) d'un jeu de NumPlay.
+
+L'entrée est le jeu lié avec `ld -r -T tools/module.ld`, avec sa libc et la colle du module
+(pack/colle.c) : une section `.text` (code et données constantes), une `.data`, une `.bss` et la
+fiche dans `calcade_modules`. La sortie est un objet relogeable où :
+
+- le code et ses relocations restent tels quels, dans `.text.<id>` ;
+- la RAM du jeu (sa `.data` et sa `.bss`, libc comprise) n'est plus réservée nulle part : chaque
+  référence à cette RAM devient `_eadk_numplay_ram + position`, c'est-à-dire une place dans la RAM
+  de travail que le cœur NumPlay donne au jeu (ctx->ram, toujours à cette adresse pour un module
+  np_ : voir pack/LISEZMOI-PACK.md). Le module n'a donc aucune RAM statique ;
+- la `.data` devient une copie en lecture seule (`.rodata.<id>.init`), que la colle recopie dans
+  ctx->ram au début de chaque lancement (la `.bss` y est remise à zéro) : le jeu repart de zéro ;
+- seule la fiche `calcade_module_<id>` reste globale ; les seules références non résolues sont
+  les appels système eadk_*.
+
+La colle demande trois symboles que cet outil fournit : np_cmod_init (début de la copie de la
+.data), np_cmod_init_size et np_cmod_ram_size (des symboles absolus : leur adresse est la taille).
+
+Usage : cmod.py entree.o sortie.cmod --id np_snake [--json tailles.json]
+"""
+import argparse
+import json
+import os
+import struct
+import sys
+
+sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "tools"))
+from npmodule import (Elf, SHT_PROGBITS, SHT_REL, SHT_SYMTAB, SHT_STRTAB, SHF_ALLOC,  # noqa: E402
+                      SHF_EXECINSTR, SHF_INFO_LINK, STB_LOCAL, STB_GLOBAL, STB_WEAK, STT_NOTYPE, STT_OBJECT,
+                      STT_SECTION, SHN_UNDEF, SHN_ABS, R_ARM_ABS32)
+
+DECALAGE = 0               # ctx->ram d'un module np_ = _eadk_numplay_ram + DECALAGE
+BASE = "_eadk_numplay_ram" # défini par le cœur NumPlay : la fin de sa RAM statique (pack/coeur.ld)
+FOURNIS = {"np_cmod_init", "np_cmod_init_size", "np_cmod_ram_size"}
+STT_FILE = 4
+
+
+def fail(msg):
+    sys.exit("cmod: " + msg)
+
+
+def main():
+    ap = argparse.ArgumentParser()
+    ap.add_argument("inp")
+    ap.add_argument("out")
+    ap.add_argument("--id", required=True)
+    ap.add_argument("--json")
+    a = ap.parse_args()
+    ident = a.id
+    e = Elf(open(a.inp, "rb").read())
+
+    by_name = {}
+    for i, s in enumerate(e.secs):
+        if s["flags"] & SHF_ALLOC:
+            if s["sname"] not in (".text", ".data", ".bss", "calcade_modules"):
+                fail(f"section inattendue {s['sname']} (voir tools/module.ld)")
+            by_name[s["sname"]] = i
+    for n in (".text", "calcade_modules"):
+        if n not in by_name:
+            fail(f"pas de section {n}")
+    text_i, fiche_i = by_name[".text"], by_name["calcade_modules"]
+    data_i, bss_i = by_name.get(".data"), by_name.get(".bss")
+    text, fiche = e.secs[text_i], e.secs[fiche_i]
+    data = e.secs[data_i] if data_i is not None else None
+    bss = e.secs[bss_i] if bss_i is not None else None
+    data_size = data["size"] if data else 0
+    bss_align = max(4, bss["align"]) if bss else 4
+    bss_off = (data_size + bss_align - 1) // bss_align * bss_align
+    ram_size = (bss_off + (bss["size"] if bss else 0) + 7) // 8 * 8
+    offset = {"data": 0, "bss": bss_off}
+
+    CODE, INIT, FICHE = 1, 3, 5          # sections de sortie (2, 4 et 6 : leurs relocations)
+    out_syms = [dict(name="", value=0, size=0, bind=0, type=0, other=0, shndx=0)]
+    for sh in (CODE, INIT, FICHE):
+        out_syms.append(dict(name="", value=0, size=0, bind=STB_LOCAL, type=STT_SECTION, other=0, shndx=sh))
+    sec_sym = {text_i: 1, fiche_i: 3}
+    where = {text_i: CODE, fiche_i: FICHE}
+    remap, ram_sym, undefined, glob = {}, {}, {}, []
+    provided = {}
+    for k, s in enumerate(e.syms):
+        if k == 0 or s["type"] == STT_FILE:
+            continue
+        sh = s["shndx"]
+        if s["type"] == STT_SECTION:
+            if sh in sec_sym:
+                remap[k] = sec_sym[sh]
+            elif sh == data_i and data_i is not None:
+                ram_sym[k] = ("data", 0)
+            elif sh == bss_i and bss_i is not None:
+                ram_sym[k] = ("bss", 0)
+            continue
+        if data_i is not None and sh == data_i:
+            ram_sym[k] = ("data", s["value"])
+            continue
+        if bss_i is not None and sh == bss_i:
+            ram_sym[k] = ("bss", s["value"])
+            continue
+        if sh == SHN_UNDEF:
+            if s["bind"] == STB_LOCAL:
+                continue
+            if s["name"] in FOURNIS:
+                provided[k] = s["name"]
+                continue
+            if not (s["name"].startswith("eadk_") or s["name"] == BASE):
+                if s["bind"] == STB_WEAK:      # faible et absent : vaut 0, ici comme dans une appli seule
+                    remap[k] = len(out_syms)
+                    out_syms.append(dict(name=s["name"], value=0, size=0, bind=STB_LOCAL, type=STT_NOTYPE,
+                                         other=0, shndx=SHN_ABS))
+                    continue
+                undefined.setdefault("?", []).append(s["name"])
+                continue
+            undefined.setdefault(s["name"], None)
+            continue
+        if sh in where:
+            n = dict(s, shndx=where[sh], other=0)
+            if s["name"] == "calcade_module_" + ident and s["bind"] != STB_LOCAL:
+                n["bind"] = STB_GLOBAL
+                glob.append((k, n))
+            else:
+                if s["bind"] != STB_LOCAL and s["name"].startswith("calcade_module_"):
+                    fail(f"fiche en trop : {s['name']}")
+                n["bind"] = STB_LOCAL
+                remap[k] = len(out_syms)
+                out_syms.append(n)
+            continue
+        if sh == SHN_ABS:
+            remap[k] = len(out_syms)
+            out_syms.append(dict(s, bind=STB_LOCAL))
+            continue
+        fail(f"symbole {s['name']} dans une section inattendue ({sh})")
+    if "?" in undefined:
+        fail("références non résolues (à mettre dans le module) : " + ", ".join(sorted(set(undefined.pop("?")))))
+    if len(glob) != 1:
+        fail(f"il faut une fiche calcade_module_{ident} (trouvé : {len(glob)})")
+
+    # ce que l'outil fournit à la colle, en symboles locaux
+    prov_index = {}
+    for name, value, shndx, typ in (("np_cmod_init", 0, INIT, STT_OBJECT),
+                                    ("np_cmod_init_size", data_size, SHN_ABS, STT_NOTYPE),
+                                    ("np_cmod_ram_size", ram_size, SHN_ABS, STT_NOTYPE)):
+        prov_index[name] = len(out_syms)
+        out_syms.append(dict(name=name, value=value, size=0, bind=STB_LOCAL, type=typ, other=0, shndx=shndx))
+    for k, name in provided.items():
+        remap[k] = prov_index[name]
+
+    first_global = len(out_syms)
+    for k, n in glob:
+        remap[k] = len(out_syms)
+        out_syms.append(n)
+    base_index = len(out_syms)
+    out_syms.append(dict(name=BASE, value=0, size=0, bind=STB_GLOBAL, type=STT_NOTYPE, other=0, shndx=SHN_UNDEF))
+    und_index = {BASE: base_index}
+    for name in sorted(undefined):
+        if name not in und_index:
+            und_index[name] = len(out_syms)
+            out_syms.append(dict(name=name, value=0, size=0, bind=STB_GLOBAL, type=STT_NOTYPE, other=0,
+                                 shndx=SHN_UNDEF))
+    for k, s in enumerate(e.syms):
+        if k and s["shndx"] == SHN_UNDEF and s["bind"] != STB_LOCAL and s["type"] != STT_SECTION \
+                and s["name"] in und_index:
+            remap[k] = und_index[s["name"]]
+
+    vers_ram = 0
+
+    def convert(target_i, blob):
+        nonlocal vers_ram
+        blob = bytearray(blob)
+        out = []
+        for off, typ, si in e.rels_for(target_i):
+            if si in ram_sym:
+                region, value = ram_sym[si]
+                if typ != R_ARM_ABS32:
+                    fail(f"relocation de type {typ} à {off:#x} vers la RAM : seule ABS32 est prise en charge")
+                addend, = struct.unpack_from("<I", blob, off)
+                struct.pack_into("<I", blob, off, (addend + DECALAGE + offset[region] + value) & 0xFFFFFFFF)
+                out.append((off, typ, base_index))
+                vers_ram += 1
+            elif si in remap:
+                out.append((off, typ, remap[si]))
+            else:
+                fail(f"relocation à {off:#x} vers un symbole non pris en charge : {e.syms[si]}")
+        return bytes(blob), out
+
+    code_bytes, code_rels = convert(text_i, text["data"])
+    init_bytes, init_rels = convert(data_i, data["data"]) if data else (b"", [])
+    fiche_bytes, fiche_rels = convert(fiche_i, fiche["data"])
+    for s in e.secs:
+        if s["type"] == SHT_REL and s["info"] not in (text_i, data_i, fiche_i) and e.secs[s["info"]]["flags"] & SHF_ALLOC:
+            fail(f"relocations d'une section inattendue : {e.secs[s['info']]['sname']}")
+
+    names = ["", f".text.{ident}", f".rel.text.{ident}", f".rodata.{ident}.init", f".rel.rodata.{ident}.init",
+             "calcade_modules", ".relcalcade_modules", ".symtab", ".strtab", ".shstrtab"]
+    shstr, name_off = bytearray(b"\0"), []
+    for n in names:
+        name_off.append(len(shstr) if n else 0)
+        if n:
+            shstr += n.encode() + b"\0"
+    strtab, str_off = bytearray(b"\0"), {}
+
+    def add_str(s):
+        if not s:
+            return 0
+        if s not in str_off:
+            str_off[s] = len(strtab)
+            strtab.extend(s.encode() + b"\0")
+        return str_off[s]
+
+    symtab = b"".join(struct.pack("<IIIBBH", add_str(s["name"]), s["value"], s["size"],
+                                  (s["bind"] << 4) | s["type"], s["other"], s["shndx"]) for s in out_syms)
+
+    def rel_bytes(rels):
+        return b"".join(struct.pack("<II", off, (si << 8) | typ) for off, typ, si in rels)
+
+    SYMTAB = 7
+    bodies = [
+        None,
+        (SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR, code_bytes, 0, 0, max(4, text["align"]), 0),
+        (SHT_REL, SHF_INFO_LINK, rel_bytes(code_rels), SYMTAB, CODE, 4, 8),
+        (SHT_PROGBITS, SHF_ALLOC, init_bytes, 0, 0, max(4, data["align"]) if data else 4, 0),
+        (SHT_REL, SHF_INFO_LINK, rel_bytes(init_rels), SYMTAB, INIT, 4, 8),
+        (SHT_PROGBITS, SHF_ALLOC, fiche_bytes, 0, 0, max(4, fiche["align"]), 0),
+        (SHT_REL, SHF_INFO_LINK, rel_bytes(fiche_rels), SYMTAB, FICHE, 4, 8),
+        (SHT_SYMTAB, 0, symtab, 8, first_global, 4, 16),
+        (SHT_STRTAB, 0, bytes(strtab), 0, 0, 1, 0),
+        (SHT_STRTAB, 0, bytes(shstr), 0, 0, 1, 0),
+    ]
+    out = bytearray(52)
+    headers = [bytes(40)]
+    for i, b in enumerate(bodies):
+        if b is None:
+            continue
+        typ, flags, blob, link, info, align, entsize = b
+        while len(out) % max(align, 4):
+            out.append(0)
+        off = len(out)
+        out += blob
+        headers.append(struct.pack("<10I", name_off[i], typ, flags, 0, off, len(blob), link, info, align, entsize))
+    while len(out) % 4:
+        out.append(0)
+    shoff = len(out)
+    for h in headers:
+        out += h
+    ident_bytes = b"\x7fELF\x01\x01\x01" + bytes(9)
+    struct.pack_into("<16sHHIIIIIHHHHHH", out, 0, ident_bytes, 1, 40, 1, 0, 0, shoff, e.flags, 52, 0, 0, 40,
+                     len(headers), len(headers) - 1)
+    open(a.out, "wb").write(out)
+    info = dict(id=ident, flash=len(code_bytes) + len(init_bytes) + len(fiche_bytes), code=len(code_bytes),
+                data=data_size, bss=bss["size"] if bss else 0, ram_requise=ram_size, refs_ram=vers_ram,
+                eadk=sorted(n for n in und_index if n != BASE))
+    if a.json:
+        json.dump(info, open(a.json, "w"), indent=1)
+    print(f"cmod {ident}: flash {info['flash']} o, RAM du jeu {ram_size} o (dans ctx->ram), RAM statique 0")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/pack/coeur.ld b/pack/coeur.ld
new file mode 100644
index 0000000..7060101
--- /dev/null
+++ b/pack/coeur.ld
@@ -0,0 +1,13 @@
+/* Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+   Dernière étape du cœur NumPlay (ld -r) : toute sa RAM statique (.data, .bss, libc comprise) en UNE
+   section .data.numplay, suivie du repère _eadk_numplay_ram. Dans un pack lié par le site, cette
+   section vient juste après les données de eadk.o, avant celles des autres modules : le repère
+   marque la fin de la RAM du cœur, et la RAM de travail des modules np_ commence là
+   (voir pack/LISEZMOI-PACK.md). */
+SECTIONS {
+  .data.numplay : ALIGN(8) {
+    *(.data .data.* .bss .bss.* COMMON)
+    . = ALIGN(8);
+    _eadk_numplay_ram = .;
+  }
+}
diff --git a/pack/coeur.sh b/pack/coeur.sh
new file mode 100755
index 0000000..09e5ce4
--- /dev/null
+++ b/pack/coeur.sh
@@ -0,0 +1,41 @@
+#!/bin/sh
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+# Fabrique le cœur NumPlay d'un pack : dist/pack/NumPlay-coeur.nwa (voir pack/LISEZMOI-PACK.md).
+set -e
+cd "$(dirname "$0")/.."
+KIT=${KIT:-../kit-numplay}
+B=build-coeur
+mkdir -p $B
+NWLINK=${NWLINK:-nwlink}
+EADK=$($NWLINK eadk-cflags-device | tr -d '"')
+VERSION=$(cat VERSION)
+CFLAGS="-std=gnu11 $EADK -DNP_VERSION=\"$VERSION\" -DNP_COEUR=1 -Os -Wall -Wextra -Wno-unused-parameter -fno-math-errno \
+  -fno-tree-loop-distribute-patterns -ffunction-sections -fdata-sections -fno-common -Ilauncher/src -I$KIT/include"
+python3 tools/calcade_art.py $B/coeur_art.c --coeur pack/coeur/coeur.c pack/coeur/menu.c pack/coeur/reglages.c >/dev/null
+python3 pack/sauvegardes.py $B/sauvegardes.c
+OBJS=""
+for f in pack/coeur/coeur.c pack/coeur/menu.c pack/coeur/reglages.c $B/coeur_art.c $B/sauvegardes.c \
+  launcher/src/gfx.c launcher/src/font_data.c launcher/src/xfont.c launcher/src/inflate.c launcher/src/icons.c \
+  launcher/src/live.c launcher/src/matrices.c launcher/src/compat.c launcher/src/sys.c launcher/src/platform.c \
+  launcher/src/ui.c launcher/src/storage.c launcher/src/calcade.c; do
+  o=$B/$(basename $f .c).o
+  arm-none-eabi-gcc $CFLAGS -flto -c $f -o $o
+  OBJS="$OBJS $o"
+done
+arm-none-eabi-gcc $CFLAGS '-DNP_APP_NAME="NumPlay"' -c launcher/app_name.c -o $B/nom.o
+$NWLINK png-icon-o launcher/assets/icon.png $B/icone.o
+arm-none-eabi-gcc $CFLAGS -flto -nostartfiles --specs=nano.specs -Wl,--relocatable -Wl,--gc-sections -Wl,-e,main \
+  -Wl,-u,eadk_app_name -Wl,-u,eadk_app_icon -Wl,-u,eadk_api_level -flinker-output=nolto-rel \
+  $OBJS $B/nom.o $B/icone.o -lm -lgcc -o $B/coeur.1.o
+# toute la RAM statique du cœur en une section, suivie du repère _eadk_numplay_ram (pack/coeur.ld)
+arm-none-eabi-ld -r -T pack/coeur.ld $B/coeur.1.o -o $B/coeur.2.o
+arm-none-eabi-strip --strip-unneeded $B/coeur.2.o -o dist/pack/NumPlay-coeur.nwa
+arm-none-eabi-size -A dist/pack/NumPlay-coeur.nwa | awk '$1==".data.numplay"{print "cœur : RAM statique " $2 " octets"}'
+python3 - dist/pack/NumPlay-coeur.nwa <<'PY'
+import sys, subprocess
+out = subprocess.run(["arm-none-eabi-size", "-A", sys.argv[1]], capture_output=True, text=True).stdout
+flash = sum(int(l.split()[1]) for l in out.splitlines()[2:] if l.split() and l.split()[0].startswith((".text", ".rodata")))
+ram = sum(int(l.split()[1]) for l in out.splitlines()[2:] if l.split() and l.split()[0].startswith((".data", ".bss")))
+print(f"cœur : flash {flash} octets, RAM statique {ram} octets")
+assert ram <= 8192, "la RAM statique du cœur dépasse 8 Ko"
+PY
diff --git a/pack/coeur/coeur.c b/pack/coeur/coeur.c
new file mode 100644
index 0000000..c7f118c
--- /dev/null
+++ b/pack/coeur/coeur.c
@@ -0,0 +1,231 @@
+/* Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+ * Le cœur de NumPlay dans un pack : l'intro Calcade, le compte des ouvertures (numplay.sys, rappel
+ * de mise à jour toutes les 20), puis le carrousel des jeux que le site a liés avec lui.
+ *
+ * La RAM. Le site lie le cœur et les modules avec son script (outils/liaison-test.ld du kit) : la
+ * RAM statique de chacun à la suite, puis le tas, de _heap_start à _heap_end.
+ * - Les jeux Calcade (Voie Libre...) ont leur RAM de travail dans le tas : ctx->ram = le début du
+ *   tas (aligné sur 8), jusqu'au bout de la RAM de l'application.
+ * - Les mini-jeux de NumPlay (modules np_) ont été faits pour une RAM à une adresse fixe : celle du
+ *   repère _eadk_numplay_ram, juste après la RAM statique du cœur (pack/coeur.ld). Comme c'est là
+ *   que commence la RAM statique des autres modules, le cœur la met de côté en haut de la RAM le
+ *   temps du jeu, puis la remet : pour ces modules, ctx->ram va du repère à cette copie.
+ * Le cœur n'a pas de malloc : tout le tas est à lui (son menu y dessine quand aucun jeu ne tourne). */
+#define CALCADE_COEUR
+#include <string.h>
+#include "coeur.h"
+#include "sys.h"
+
+#if PLATFORM_DEVICE && !NP_SIMULATOR
+const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
+#endif
+
+extern uint8_t _eadk_numplay_ram[], _heap_start[], _heap_end[];
+
+const CalcadeModule *coeur_jeux[COEUR_MAX_JEUX];
+int coeur_njeux;
+
+/* ---------------------------------------------------------------- les jeux du pack */
+static void decouvrir(void) {
+  const CalcadeModule *debut = calcade_modules_debut(), *fin = calcade_modules_fin();
+  coeur_njeux = 0;
+  if (!debut || !fin || fin <= debut) return; /* aucun module : symboles faibles nuls ou égaux */
+  /* dans l'ordre où le site les a liés, c'est-à-dire celui choisi sur le site */
+  for (const CalcadeModule *m = debut; m < fin && coeur_njeux < COEUR_MAX_JEUX; m++)
+    if (calcade_module_valide(m)) coeur_jeux[coeur_njeux++] = m;
+}
+
+static bool est_np(const CalcadeModule *m) { return m->id[0] == 'n' && m->id[1] == 'p' && m->id[2] == '_'; }
+
+/* où va la RAM de travail du jeu i : *ram, sa taille, et la RAM statique des autres à mettre de côté */
+static uint32_t placer(int i, uint8_t **ram, uint32_t *cache, uint8_t **copie) {
+  const CalcadeModule *m = coeur_jeux[i];
+  *cache = 0, *copie = 0;
+  if (!est_np(m)) {
+    *ram = np_arena_base();
+    return np_arena_room();
+  }
+  *ram = _eadk_numplay_ram;
+  if ((uintptr_t)_heap_start < (uintptr_t)_eadk_numplay_ram) return 0; /* (jamais : le repère est dans la RAM statique) */
+  *cache = (uint32_t)(_heap_start - _eadk_numplay_ram);
+  uint8_t *haut = (uint8_t *)((uintptr_t)(_heap_end - *cache) & ~(uintptr_t)7);
+  if (haut <= *ram) return 0;
+  *copie = haut;
+  return (uint32_t)(haut - *ram);
+}
+
+uint32_t coeur_ram_libre(int i) {
+  uint8_t *ram, *copie;
+  uint32_t cache;
+  return placer(i, &ram, &cache, &copie);
+}
+
+uint32_t coeur_ram_manque(int i) {
+  uint32_t libre = coeur_ram_libre(i), besoin = coeur_jeux[i]->ram_requise;
+  return besoin > libre ? besoin - libre : 0;
+}
+
+uint32_t coeur_couleur(int jeu, int laquelle) {
+  uint32_t c = coeur_jeux[jeu]->couleur & 0xFFFF;
+  uint32_t r = (c >> 11) & 31, g = (c >> 5) & 63, b = c & 31;
+  uint32_t rgb = (r << 19 | (r >> 2) << 16) | (g << 10 | (g >> 4) << 8) | (b << 3 | b >> 2);
+  if (laquelle == 0) return gfx_lerp888(rgb, 0xFFFFFF, 24);
+  if (laquelle == 1) return gfx_lerp888(rgb, 0x05060A, 190);
+  return gfx_lerp888(rgb, 0xFFFFFF, 40);
+}
+
+#define PAS_ASSEZ (-1000)
+/* lance le jeu i ; rend ce que rend son lancer(), ou PAS_ASSEZ */
+static int lancer(int i) {
+  const CalcadeModule *m = coeur_jeux[i];
+  uint8_t *ram, *copie;
+  uint32_t cache, taille = placer(i, &ram, &cache, &copie);
+  if (!taille || m->ram_requise > taille) return PAS_ASSEZ;
+  cc_module_started(m->id);
+  if (cache) memmove(copie, ram, cache); /* la RAM statique des autres modules, mise de côté */
+  memset(ram, 0, taille);
+  CalcadeContexte ctx = {CALCADE_ABI, ram, taille, cc_launches(), {0, 0, 0, 0}};
+  int r = m->lancer(&ctx);
+  if (cache) memmove(ram, copie, cache);
+  np_wait_release(); /* un Back qui a fini le jeu ne fait pas aussi « retour » dans le menu */
+  return r;
+}
+
+/* ---------------------------------------------------------------- les sauvegardes des jeux du pack */
+/* (pour la copie numplay_saves.py, launcher/src/storage.c) : celles des mini-jeux de NumPlay
+ * (pack/coeur/sauvegardes.py, depuis games/games.json), et <id>.sys pour un jeu Calcade */
+typedef struct {
+  const char *id;
+  const char *const *noms;
+} np_sauvegardes_t;
+extern const np_sauvegardes_t np_sauvegardes[];
+extern const int np_nsauvegardes;
+static struct {
+  const char *noms[2];
+  char nom[20];
+} sys_noms[COEUR_MAX_JEUX];
+
+int np_pack_count(void) { return coeur_njeux; }
+const char *const *np_pack_records(int g) {
+  if (g < 0 || g >= coeur_njeux) return 0;
+  const char *id = coeur_jeux[g]->id;
+  for (int k = 0; k < np_nsauvegardes; k++)
+    if (!strcmp(np_sauvegardes[k].id, id)) return np_sauvegardes[k].noms;
+  if (strlen(id) + 5 > sizeof sys_noms[g].nom) return 0;
+  strcpy(sys_noms[g].nom, id);
+  strcat(sys_noms[g].nom, ".sys");
+  sys_noms[g].noms[0] = sys_noms[g].nom;
+  sys_noms[g].noms[1] = 0;
+  return sys_noms[g].noms;
+}
+
+/* ---------------------------------------------------------------- textes */
+void coeur_paragraphe(const cc_font_t *f, int cx, int y, int largeur, int interligne, const char *s, color_t c,
+                      int a) {
+  char ligne[96];
+  while (*s) {
+    /* autant de mots que la ligne en tient */
+    int n = 0, coupe = 0;
+    const char *p = s;
+    for (;;) {
+      while (*p && *p != ' ' && *p != '\n' && n < (int)sizeof ligne - 1) ligne[n++] = *p++;
+      ligne[n] = 0;
+      if (coupe && cc_text_width(f, ligne) > largeur) {
+        n = coupe;
+        p = s + coupe + 1;
+        break;
+      }
+      if (!*p || *p == '\n' || n >= (int)sizeof ligne - 1) {
+        if (*p) p++;
+        break;
+      }
+      coupe = n;
+      ligne[n++] = *p++;
+    }
+    ligne[n] = 0;
+    cc_text_c(f, cx, y, ligne, c, a);
+    y += interligne;
+    s = p;
+  }
+}
+
+typedef struct {
+  const char *titre, *texte, *bas;
+} message_t;
+
+static void message_scene(void *ctx) {
+  message_t *m = ctx;
+  gfx_vgrad(0, 0, SCREEN_W, SCREEN_H, 0x2B2F6B, 0x0B0C1E);
+  gfx_shadow(28, 52, 264, 140, 16, 14, 120);
+  gfx_rrect(28, 48, 264, 144, 16, 0xFFFF, 34);
+  gfx_icon(&np_icon_logo, 149, 24, 0xFFFF, 230);
+  cc_text_c(&cc_font_title, 160, 84, m->titre, 0xFFFF, 256);
+  coeur_paragraphe(&cc_font_body, 160, 112, 236, 17, m->texte, 0xFFFF, 220);
+  cc_text_c(&cc_font_small, 160, 222, m->bas, 0xFFFF, 150);
+}
+
+bool coeur_message(const char *titre, const char *texte, bool fermer_par_ok) {
+  ui_init();
+  message_t m = {titre, texte, fermer_par_ok ? "OK : continuer" : "Home : quitter NumPlay"};
+  ui_frame(message_scene, &m);
+  np_wait_release();
+  for (;;) {
+    uint32_t k = np_keys();
+    if (k & K_HOME) return false;
+    if (fermer_par_ok && (k & (K_OK | K_BACK))) {
+      np_wait_release();
+      return true;
+    }
+    if (!fermer_par_ok && (k & K_BACK)) return false;
+    np_sleep(20);
+  }
+}
+
+/* ---------------------------------------------------------------- l'application */
+int main(void) {
+  np_session_begin();
+  decouvrir();
+  cc_module_count = coeur_njeux;
+  /* juste mis à jour ? les sauvegardes reviennent de leur copie, puis la copie est refaite */
+  np_progress_restore();
+  np_progress_backup();
+  /* démarré en Matrices (Réglages) : NumPlay ne s'ouvre que par son secret */
+  np_config_t cfg;
+  np_config_load(&cfg);
+  if (cfg.disguise && !np_matrices(&cfg)) return np_session_end();
+  np_wait_release();
+  /* cette ouverture est comptée dans numplay.sys (la 20e, 40e... demande la mise à jour), puis l'intro ;
+   * avec le drapeau, NumPlay reste sur l'écran de mise à jour (Home quitte) */
+  bool maj = cc_launch();
+  np_progress_backup();
+  if (!cc_intro()) return np_session_end();
+  if (maj) {
+    cc_update_required();
+    return np_session_end();
+  }
+  np_wait_release();
+  if (!coeur_njeux) {
+    coeur_message("Aucun jeu dans NumPlay", "Choisis tes jeux sur jeux.w-production.fr", false);
+    return np_session_end();
+  }
+  int choix = 0;
+  bool retour = false;
+  for (;;) {
+    int r = coeur_menu(&choix, retour);
+    retour = false;
+    if (r == -2) break;
+    if (r == -1) {
+      coeur_reglages();
+      continue;
+    }
+    int fin = lancer(r);
+    if (fin == PAS_ASSEZ) {
+      if (!coeur_message("Pas assez de mémoire", "Pas assez de mémoire pour ce jeu.", true)) break;
+      continue;
+    }
+    if (fin == CALCADE_QUITTER) break; /* Home dans le jeu : NumPlay se ferme aussi */
+    retour = true;                     /* retour au carrousel, sur le même jeu */
+  }
+  np_wait_release();
+  return np_session_end();
+}
diff --git a/pack/coeur/coeur.h b/pack/coeur/coeur.h
new file mode 100644
index 0000000..da57cd5
--- /dev/null
+++ b/pack/coeur/coeur.h
@@ -0,0 +1,29 @@
+/* Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+ * Le cœur de NumPlay dans un pack (jeux.w-production.fr) : il ne connaît aucun jeu à l'avance, il
+ * trouve ceux que le site a liés avec lui (calcade_module.h, ABI 1). Voir pack/LISEZMOI-PACK.md. */
+#ifndef NP_COEUR_H
+#define NP_COEUR_H
+#include "calcade_module.h"
+#include "calcade.h"
+#include "ui.h"
+
+#define COEUR_MAX_JEUX 64              /* fiches lues ; le menu reste fluide avec toutes */
+
+extern const CalcadeModule *coeur_jeux[COEUR_MAX_JEUX];
+extern int coeur_njeux;
+
+/* La RAM que le jeu i aurait (ctx->ram, sa taille) ; 0 quand il en faut plus qu'il n'y a. */
+uint32_t coeur_ram_libre(int i);
+uint32_t coeur_ram_manque(int i);      /* les octets qui lui manquent, ou 0 */
+
+/* Couleurs d'un jeu, tirées de la couleur de sa fiche (0xRRGGBB) : 0 haut, 1 bas, 2 accent */
+uint32_t coeur_couleur(int jeu, int laquelle);
+
+/* L'accueil : le carrousel des jeux ; rend l'indice d'un jeu, -1 pour les réglages, -2 pour quitter. */
+int coeur_menu(int *choix, bool retour);
+void coeur_reglages(void);
+/* Un écran de message (titre, texte) ; OK ou Back le ferme ; false si Home a été pressé. */
+bool coeur_message(const char *titre, const char *texte, bool fermer_par_ok);
+/* un paragraphe centré (en UTF-8, avec les lettres accentuées), coupé aux espaces */
+void coeur_paragraphe(const cc_font_t *f, int cx, int y, int largeur, int interligne, const char *s, color_t c, int a);
+#endif
diff --git a/pack/coeur/menu.c b/pack/coeur/menu.c
new file mode 100644
index 0000000..8213e81
--- /dev/null
+++ b/pack/coeur/menu.c
@@ -0,0 +1,316 @@
+/* Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+ * L'accueil du cœur : le carrousel de NumPlay (launcher/src/home.c), fait uniquement des fiches des
+ * jeux du pack : nom, version, auteur, vignette 80x60 (ou une cartouche de sa couleur avec
+ * l'initiale de son nom) et couleur. La carte choisie est grande, ses voisines dépassent sur les
+ * côtés ; seules les cartes proches sont dessinées, avec 1 jeu comme avec 64. La dernière carte
+ * ouvre les réglages. */
+#define CALCADE_COEUR
+#include <string.h>
+#include "coeur.h"
+#include "live.h"
+
+#define CARD_W 200
+#define CARD_H 152
+#define CARD_CX 160
+#define CARD_CY 103
+#define SPACING 184
+#define FRAME 4
+
+#define REGLAGES_HAUT 0x4A5163
+#define REGLAGES_BAS 0x1C1F27
+#define REGLAGES_ACCENT 0x6C7A96
+
+typedef struct {
+  int n;
+  int16_t item[COEUR_MAX_JEUX + 1]; /* indice du jeu, ou -1 pour la carte des réglages */
+  int sel;
+  float pos;   /* défilement, en cartes */
+  float badge; /* pastille « jouer », 0..1 */
+  float zoom;  /* animation de lancement, 0..1 */
+} menu_t;
+
+static bool premiere_fois = true;
+
+static uint32_t couleur(int jeu, int laquelle) {
+  if (jeu < 0) return laquelle == 0 ? REGLAGES_HAUT : laquelle == 1 ? REGLAGES_BAS : REGLAGES_ACCENT;
+  return coeur_couleur(jeu, laquelle);
+}
+
+static float absf(float v) { return v < 0 ? -v : v; }
+
+/* ---- dessin */
+/* la vignette 80x60 agrandie (bilinéaire) dans x, y, w, h, assombrie de dim/256 */
+static void vignette(const uint16_t *v, int x, int y, int w, int h, int dim) {
+  int y0 = NP_MAX(y, gfx_y0), y1 = NP_MIN(y + h, gfx_y1);
+  int x0 = NP_MAX(x, gfx_clip_x0), x1 = NP_MIN(x + w, gfx_clip_x1);
+  if (y0 >= y1 || x0 >= x1 || w <= 0 || h <= 0) return;
+  int32_t sx = (CALCADE_VIGNETTE_L << 16) / w, sy = (CALCADE_VIGNETTE_H << 16) / h;
+  int keep = 32 - (dim >> 3);
+  for (int yy = y0; yy < y1; yy++) {
+    int32_t fy = (yy - y) * sy + sy / 2 - 0x8000;
+    if (fy < 0) fy = 0;
+    int iy = fy >> 16, ty = (fy >> 11) & 31, iy2 = NP_MIN(iy + 1, CALCADE_VIGNETTE_H - 1);
+    const uint16_t *r1 = v + iy * CALCADE_VIGNETTE_L, *r2 = v + iy2 * CALCADE_VIGNETTE_L;
+    color_t *o = gfx_buf + (yy - gfx_y0) * SCREEN_W + x0;
+    for (int xx = x0; xx < x1; xx++) {
+      int32_t fx = (xx - x) * sx + sx / 2 - 0x8000;
+      if (fx < 0) fx = 0;
+      int ix = fx >> 16, tx = (fx >> 11) & 31, ix2 = NP_MIN(ix + 1, CALCADE_VIGNETTE_L - 1);
+      uint32_t a = (r1[ix] | (uint32_t)r1[ix] << 16) & 0x07E0F81F, b = (r1[ix2] | (uint32_t)r1[ix2] << 16) & 0x07E0F81F;
+      uint32_t c = (r2[ix] | (uint32_t)r2[ix] << 16) & 0x07E0F81F, d = (r2[ix2] | (uint32_t)r2[ix2] << 16) & 0x07E0F81F;
+      uint32_t top = ((a * (uint32_t)(32 - tx) + b * (uint32_t)tx) >> 5) & 0x07E0F81F;
+      uint32_t bot = ((c * (uint32_t)(32 - tx) + d * (uint32_t)tx) >> 5) & 0x07E0F81F;
+      uint32_t m = ((top * (uint32_t)(32 - ty) + bot * (uint32_t)ty) >> 5) & 0x07E0F81F;
+      if (keep < 32) m = ((m * (uint32_t)keep) >> 5) & 0x07E0F81F;
+      *o++ = (color_t)(m | m >> 16);
+    }
+  }
+}
+
+/* le premier caractère d'un nom (UTF-8), en majuscule pour les lettres simples */
+static void initiale(const char *nom, char out[5]) {
+  const uint8_t *p = (const uint8_t *)nom;
+  int n = *p < 0x80 ? 1 : *p < 0xE0 ? 2 : *p < 0xF0 ? 3 : 4;
+  for (int i = 0; i < n && p[i]; i++) out[i] = (char)p[i];
+  out[n] = 0;
+  if (out[0] >= 'a' && out[0] <= 'z') out[0] = (char)(out[0] - 32);
+}
+
+/* sans vignette : une cartouche de la couleur du jeu, avec l'initiale de son nom */
+static void cartouche(int jeu, int x, int y, int w, int h, int dim) {
+  uint32_t haut = gfx_lerp888(couleur(jeu, 2), 0, dim), bas = gfx_lerp888(couleur(jeu, 1), 0, dim);
+  gfx_vgrad(x, y, w, h, haut, bas);
+  int r = NP_MIN(w, h) / 4;
+  if (r < 6) return;
+  int cx = x + w / 2, cy = y + h / 2 - 4;
+  gfx_circle(cx, cy + 3, r, 0, 50);
+  gfx_circle(cx, cy, r, 0xFFFF, 230 - dim);
+  char ini[5];
+  initiale(coeur_jeux[jeu]->nom, ini);
+  cc_text_c(&cc_font_title, cx, cy + 6, ini, gfx_rgb(gfx_lerp888(couleur(jeu, 1), 0, dim)), 256);
+  cc_text_c(&cc_font_small, cx, y + h - 12, coeur_jeux[jeu]->nom, 0xFFFF, 200 - dim);
+}
+
+static void dessin_reglages(int x, int y, int w, int h, int dim) {
+  uint32_t top = gfx_lerp888(0x59627A, 0, dim), bottom = gfx_lerp888(0x2A2F3B, 0, dim);
+  gfx_vgrad(x, y, w, h, top, bottom);
+  const np_icon_t *gear = &np_icon_gear;
+  if (w > gear->w + 8) gfx_icon(gear, x + (w - gear->w) / 2, y + (h - gear->h) / 2 - 2, 0xFFFF, 200 - dim / 2);
+}
+
+static void carte(menu_t *m, int k, float d) {
+  int jeu = m->item[k];
+  float ad = absf(d);
+  float s = 1 - 0.26f * NP_MIN(ad, 1.5f);
+  float z = m->zoom;
+  float cx = CARD_CX + d * SPACING, cy = CARD_CY;
+  float w = CARD_W * s, hh = CARD_H * s;
+  float frame = FRAME * s, radius = 12 * s;
+  int dim = (int)(130 * NP_MIN(ad, 1.f));
+  if (k == m->sel && z > 0) { /* lancement : la carte prend tout l'écran */
+    float e = ui_ease_in_out(z);
+    cx += (160 - cx) * e;
+    cy += (120 - cy) * e;
+    w += (SCREEN_W + 2 * frame - w) * e;
+    hh += (SCREEN_H + 2 * frame - hh) * e;
+    radius *= 1 - e;
+  }
+  int x = (int)(cx - w / 2), y = (int)(cy - hh / 2), iw = (int)w, ih = (int)hh;
+  if (x >= SCREEN_W || x + iw <= 0 || y >= gfx_y1 || y + ih + 8 <= gfx_y0) return;
+  if (ad < 0.6f && z == 0) gfx_shadow(x, y + 5, iw, ih, (int)radius, 12, 120);
+  color_t cadre = gfx_mix(0xFFFF, 0, dim >> 3);
+  gfx_rrect(x, y, iw, ih, (int)radius, cadre, 256);
+  int fx = (int)frame, ir = NP_MAX((int)(radius - frame + 1), 0);
+  int ix = x + fx, iy = y + fx, iiw = iw - 2 * fx, iih = ih - 2 * fx;
+  if (jeu < 0) {
+    dessin_reglages(ix, iy, iiw, iih, dim);
+  } else if (coeur_jeux[jeu]->vignette) {
+    vignette(coeur_jeux[jeu]->vignette, ix, iy, iiw, iih, dim);
+  } else {
+    cartouche(jeu, ix, iy, iiw, iih, dim);
+  }
+  gfx_corners(ix, iy, iiw, iih, ir, cadre);
+  /* la pastille « jouer » sur le jeu choisi (pas sur un jeu sans la RAM qu'il faut) */
+  if (k == m->sel && jeu >= 0 && m->badge > 0 && z == 0 && !coeur_ram_manque(jeu)) {
+    float b = ui_ease_out(m->badge);
+    int r = (int)(15 * b);
+    int bx = x + iw - 14, by = y + ih - 14;
+    gfx_circle(bx, by + 2, r + 2, 0, 60);
+    gfx_circle(bx, by, r + 2, 0xFFFF, 256);
+    gfx_circle(bx, by, r, gfx_rgb(couleur(jeu, 2)), 256);
+    if (b > 0.8f) gfx_icon(&np_icon_play, bx - 4, by - 6, 0xFFFF, (int)(256 * (b - 0.8f) * 5));
+  }
+}
+
+/* sous le nom : la version et l'auteur ; ou ce qu'il manque de RAM pour le jeu */
+static const char *sous_titre(int jeu, char *buf) {
+  if (jeu < 0) return "Démarrage secret, à propos";
+  uint32_t manque = coeur_ram_manque(jeu);
+  const CalcadeModule *f = coeur_jeux[jeu];
+  char *o = buf;
+  if (manque) {
+    for (const char *s = "Il manque "; *s;) *o++ = *s++;
+    char chiffres[8];
+    int n = 0;
+    for (uint32_t ko = (manque + 1023) / 1024; ko || !n; ko /= 10) chiffres[n++] = (char)('0' + ko % 10);
+    while (n) *o++ = chiffres[--n];
+    for (const char *s = " Ko de mémoire"; *s;) *o++ = *s++;
+  } else {
+    for (const char *s = f->version; s && *s && o < buf + 30;) *o++ = *s++;
+    if (f->auteur && *f->auteur) {
+      if (o > buf) *o++ = ' ', *o++ = (char)0xC2, *o++ = (char)0xB7, *o++ = ' '; /* « · » */
+      for (const char *s = f->auteur; *s && o < buf + 90;) *o++ = *s++;
+    }
+  }
+  *o = 0;
+  return buf;
+}
+
+static void scene(void *ctx) {
+  menu_t *m = ctx;
+  /* le fond : les couleurs de la carte de devant, mêlées pendant le défilement */
+  int a = (int)m->pos;
+  a = NP_CLAMP(a, 0, m->n - 1);
+  int b = NP_MIN(a + 1, m->n - 1);
+  int t = (int)((m->pos - a) * 256);
+  t = NP_CLAMP(t, 0, 256);
+  uint32_t top = gfx_lerp888(couleur(m->item[a], 0), couleur(m->item[b], 0), t);
+  uint32_t bottom = gfx_lerp888(couleur(m->item[a], 1), couleur(m->item[b], 1), t);
+  if (live_active()) { /* un fond animé (touche Effacer), celui de NumPlay */
+    live_strip();
+  } else {
+    gfx_vgrad(0, 0, SCREEN_W, SCREEN_H, top, bottom);
+    for (int y = (gfx_y0 + 15) / 16 * 16 + 8 - 16; y < gfx_y1; y += 16) {
+      if (y < gfx_y0) continue;
+      for (int x = 8; x < SCREEN_W; x += 16) gfx_fill_alpha(x, y, 2, 1, 0xFFFF, 22);
+    }
+  }
+  float z = ui_ease_in_out(m->zoom);
+  int ui_alpha = (int)(256 * (1 - z));
+  /* en-tête : NumPlay, et où l'on est dans le carrousel (avec beaucoup de jeux, une jauge) */
+  if (gfx_y0 < 26 && ui_alpha > 0) {
+    gfx_icon(&np_icon_logo, 12, 6, 0xFFFF, ui_alpha);
+    cc_text(&cc_font_body, 40, 18, "NumPlay", 0xFFFF, ui_alpha);
+    if (m->n <= 18) {
+      int pitch = 10;
+      int dx = SCREEN_W - 10 - (m->n + 1) * pitch;
+      for (int i = 0; i < m->n; i++) {
+        float pres = 1 - NP_MIN(absf(i - m->pos), 1.f);
+        int w = pitch - 4 + (int)(pitch * pres);
+        gfx_rrect(dx, 11, w, 6, NP_MIN(3, w / 2), 0xFFFF, (int)((90 + 166 * pres) * ui_alpha / 256));
+        dx += w + 4;
+      }
+    } else {
+      int x0 = SCREEN_W - 140, w = 128;
+      gfx_rrect(x0, 12, w, 4, 2, 0xFFFF, 70 * ui_alpha / 256);
+      int k = (int)(m->pos * (w - 14) / (m->n - 1));
+      gfx_rrect(x0 + NP_CLAMP(k, 0, w - 14), 11, 14, 6, 3, 0xFFFF, ui_alpha);
+    }
+  }
+  /* les cartes, les plus loin d'abord */
+  int lo = NP_MAX((int)m->pos - 2, 0), hi = NP_MIN((int)m->pos + 2, m->n - 1);
+  for (int pass = 3; pass >= 0; pass--)
+    for (int k = lo; k <= hi; k++) {
+      float d = k - m->pos;
+      int ring = absf(d) < 0.5f ? 0 : absf(d) < 1.5f ? 1 : absf(d) < 2.5f ? 2 : 3;
+      if (ring == pass && (k == m->sel || z < 1)) carte(m, k, d);
+    }
+  if (ui_alpha <= 0) return;
+  int devant = (int)(m->pos + 0.5f);
+  devant = NP_CLAMP(devant, 0, m->n - 1);
+  float loin = absf(m->pos - devant);
+  int ta = (int)(ui_alpha * NP_CLAMP(1 - loin * 2.2f, 0.f, 1.f));
+  int jeu = m->item[devant];
+  if (gfx_y1 > 190 && ta > 0) {
+    char buf[100];
+    cc_text_c(&cc_font_title, CARD_CX, 211, jeu < 0 ? "Réglages" : coeur_jeux[jeu]->nom, 0xFFFF, ta);
+    cc_text_c(&cc_font_body, CARD_CX, 230, sous_titre(jeu, buf), 0xFFFF, ta * 190 / 256);
+  }
+}
+
+static bool fond_charge;
+
+int coeur_menu(int *choix, bool retour) {
+  ui_init();
+  if (!fond_charge) { /* une fois : le fond choisi la dernière fois */
+    fond_charge = true;
+    int mode;
+    if (np_bg_load(&mode)) live_set(mode);
+  }
+  static menu_t m; /* (dans la RAM statique : la pile reste petite) */
+  memset(&m, 0, sizeof m);
+  for (int i = 0; i < coeur_njeux; i++) m.item[m.n++] = (int16_t)i;
+  m.item[m.n++] = -1;
+  m.sel = NP_CLAMP(*choix, 0, m.n - 1);
+  if (*choix == -1) m.sel = m.n - 1;
+  m.pos = m.sel;
+  if (premiere_fois) {
+    m.pos = m.sel + 1.2f;
+    premiere_fois = false;
+  }
+  bool dezoom = retour && *choix >= 0;
+  if (dezoom) m.zoom = 1;
+  ui_keys_t touches = {np_keys(), 0, 0}; /* les touches encore tenues ne comptent pas */
+  uint32_t avant = np_millis();
+  bool sale = true;
+  int res = -3;
+  for (;;) {
+    uint32_t now = np_millis();
+    float dt = NP_MIN((now - avant) / 1000.f, 0.05f);
+    avant = now;
+    uint32_t p = ui_poll(&touches);
+    if (res == -3) {
+      int was = m.sel;
+      if (p & K_LEFT) m.sel = NP_MAX(m.sel - 1, 0);
+      if (p & K_RIGHT) m.sel = NP_MIN(m.sel + 1, m.n - 1);
+      if (p & K_UP) m.sel = NP_MAX(m.sel - 5, 0);      /* (beaucoup de jeux : 5 d'un coup) */
+      if (p & K_DOWN) m.sel = NP_MIN(m.sel + 5, m.n - 1);
+      if (m.sel != was) m.badge = 0;
+      if ((p & K_OK) && (m.item[m.sel] < 0 || !coeur_ram_manque(m.item[m.sel]))) res = m.item[m.sel];
+      if (p & K_BACKSPACE) { /* le fond animé suivant, puis aucun */
+        live_next();
+        np_bg_save(live_mode());
+        sale = true;
+      }
+      if (p & (K_HOME | K_BACK)) return -2;
+    }
+    /* mouvement : même pour 40 cartes d'écart, l'approche est la même */
+    float pos = ui_approach(m.pos, (float)m.sel, dt, 0.075f);
+    if (absf(pos - m.sel) > 3) pos = m.sel + (pos > m.sel ? 3 : -3); /* un grand saut : pas 40 cartes à dessiner */
+    bool bouge = pos != m.pos;
+    if (bouge) sale = true;
+    m.pos = pos;
+    if (!bouge && m.item[m.sel] >= 0 && res == -3 && m.badge < 1) {
+      m.badge = NP_MIN(m.badge + dt / 0.22f, 1.f);
+      sale = true;
+    }
+    if (dezoom) {
+      m.zoom = NP_MAX(m.zoom - dt / 0.26f, 0.f);
+      dezoom = m.zoom > 0;
+      sale = true;
+    }
+    if (res != -3) {
+      if (res == -1) {
+        *choix = -1;
+        return -1;
+      }
+      if (!bouge) {
+        m.zoom = NP_MIN(m.zoom + dt / 0.24f, 1.f);
+        sale = true;
+        if (m.zoom >= 1) {
+          ui_frame(scene, &m);
+          *choix = res;
+          return res;
+        }
+      }
+    }
+    if (live_active()) sale = true;
+    if (sale) {
+      live_frame(now);
+      ui_frame(scene, &m);
+      sale = false;
+    } else {
+      np_sleep(16);
+    }
+  }
+}
diff --git a/pack/coeur/reglages.c b/pack/coeur/reglages.c
new file mode 100644
index 0000000..6ed0b8b
--- /dev/null
+++ b/pack/coeur/reglages.c
@@ -0,0 +1,134 @@
+/* Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+ * Les réglages du cœur (ceux de NumPlay, launcher/src/settings.c, qui ne dépendent d'aucun jeu) :
+ * démarrer en Matrices, l'accès secret, l'indice ; puis les crédits et la licence. Les jeux
+ * s'ajoutent et s'enlèvent sur jeux.w-production.fr. */
+#define CALCADE_COEUR
+#include <string.h>
+#include "coeur.h"
+
+#define FOND_HAUT 0x3B4252
+#define FOND_BAS 0x171A21
+#define VERT 0x2FB36B
+#define ROUGE 0xE5484D
+#define LIGNE_H 34
+#define LIGNES_Y 50
+
+enum { L_DEGUISEMENT, L_SECRET, L_INDICE, L_NOMBRE };
+
+typedef struct {
+  int sel;
+  np_config_t cfg;
+  float curseur;
+} reglages_t;
+
+static const char *const secrets[NP_SECRET_COUNT] = {"touche x,n,t", "touche var", "touche Boîte à outils", "touche Pi",
+                                                     "touche racine carrée", "Menu : Exemples", "Code Konami"};
+
+static void texte_ligne(int y, const char *titre, const char *sous, int a) {
+  cc_text(&cc_font_body, 18, y + 15, titre, 0xFFFF, a);
+  cc_text(&cc_font_small, 18, y + 28, sous, 0xFFFF, a * 150 / 256);
+}
+
+static void interrupteur(int y, bool on, int a) {
+  int tx = SCREEN_W - 58, ty = y + 8;
+  gfx_rrect(tx, ty, 38, 18, 9, on ? gfx_rgb(VERT) : 0xFFFF, (on ? 256 : 70) * a / 256);
+  gfx_circle(on ? tx + 29 : tx + 9, ty + 9, 7, 0xFFFF, a);
+}
+
+static void scene(void *ctx) {
+  reglages_t *r = ctx;
+  gfx_vgrad(0, 0, SCREEN_W, SCREEN_H, FOND_HAUT, FOND_BAS);
+  if (gfx_y0 < 44) {
+    gfx_icon(&np_icon_back, 14, 17, 0xFFFF, 200);
+    cc_text(&cc_font_title, 36, 30, "Réglages", 0xFFFF, 256);
+    char n[24], *o = n;
+    int k = coeur_njeux, d[4], nd = 0;
+    do d[nd++] = k % 10;
+    while ((k /= 10) && nd < 4);
+    while (nd) *o++ = (char)('0' + d[--nd]);
+    for (const char *s = coeur_njeux > 1 ? " jeux" : " jeu"; *s;) *o++ = *s++;
+    *o = 0;
+    cc_text(&cc_font_small, SCREEN_W - 14 - cc_text_width(&cc_font_small, "DANS CE NUMPLAY"), 20, "DANS CE NUMPLAY",
+            0xFFFF, 150);
+    cc_text(&cc_font_body, SCREEN_W - 14 - cc_text_width(&cc_font_body, n), 34, n, 0xFFFF, 230);
+  }
+  float cy = LIGNES_Y + r->curseur * (LIGNE_H + 4);
+  gfx_rrect(10, (int)cy, SCREEN_W - 20, LIGNE_H, 10, 0xFFFF, 46);
+  for (int i = 0; i < L_NOMBRE; i++) {
+    int y = LIGNES_Y + i * (LIGNE_H + 4);
+    if (y >= gfx_y1 || y + LIGNE_H + 4 <= gfx_y0) continue;
+    int a = i == L_DEGUISEMENT || r->cfg.disguise ? 256 : 130;
+    switch (i) {
+      case L_DEGUISEMENT:
+        texte_ligne(y, "Démarrer en Matrices", "D'abord une app de maths, NumPlay en secret", a);
+        interrupteur(y, r->cfg.disguise, a);
+        break;
+      case L_SECRET: {
+        texte_ligne(y, "Accès secret", "Ouvre NumPlay depuis Matrices", a);
+        const char *v = secrets[r->cfg.secret];
+        int w = cc_text_width(&cc_font_small, v);
+        cc_text(&cc_font_small, SCREEN_W - 32 - w, y + 21, v, 0xFFFF, a);
+        if (r->sel == i) {
+          gfx_icon(&np_icon_left, SCREEN_W - 44 - w, y + 10, 0xFFFF, a);
+          gfx_icon(&np_icon_right, SCREEN_W - 26, y + 10, 0xFFFF, a);
+        }
+        break;
+      }
+      case L_INDICE:
+        texte_ligne(y, "Afficher un indice", "Matrices indique le secret, en petit et gris", a);
+        interrupteur(y, r->cfg.hint, a);
+        break;
+    }
+  }
+  /* crédits et licence */
+  int y = LIGNES_Y + L_NOMBRE * (LIGNE_H + 4) + 6;
+  if (y < gfx_y1) {
+    int w = cc_text_width(&cc_font_body, "Fait avec ") + 12 + cc_text_width(&cc_font_body, " par Mason Chen");
+    int x = 160 - w / 2;
+    cc_text(&cc_font_body, x, y + 14, "Fait avec ", 0xFFFF, 230);
+    x += cc_text_width(&cc_font_body, "Fait avec ");
+    gfx_icon(&np_icon_heart, x + 1, y + 6, gfx_rgb(ROUGE), 256);
+    cc_text(&cc_font_body, x + 12, y + 14, " par Mason Chen", 0xFFFF, 230);
+    cc_text_c(&cc_font_small, 160, y + 30, "github.com/Mason363/NumPlay", 0xFFFF, 170);
+    cc_text_c(&cc_font_small, 160, y + 44, "Version modifiée par Calcade — jeux.w-production.fr", 0xFFFF, 170);
+    cc_text_c(&cc_font_small, 160, y + 58, "NumPlay " NP_VERSION " · licence GNU GPL v3", 0xFFFF, 120);
+  }
+}
+
+void coeur_reglages(void) {
+  ui_init();
+  static reglages_t r;
+  memset(&r, 0, sizeof r);
+  np_config_load(&r.cfg);
+  ui_keys_t k = {np_keys(), 0, 0};
+  uint32_t avant = np_millis();
+  bool sale = true;
+  for (;;) {
+    uint32_t now = np_millis();
+    float dt = NP_MIN((now - avant) / 1000.f, 0.05f);
+    avant = now;
+    uint32_t p = ui_poll(&k);
+    if (p & (K_BACK | K_HOME)) return;
+    if (p & K_UP) r.sel = NP_MAX(r.sel - 1, 0);
+    if (p & K_DOWN) r.sel = NP_MIN(r.sel + 1, L_NOMBRE - 1);
+    if (r.sel == L_SECRET && (p & (K_LEFT | K_RIGHT | K_OK))) {
+      r.cfg.secret = (uint8_t)((r.cfg.secret + ((p & K_LEFT) ? NP_SECRET_COUNT - 1 : 1)) % NP_SECRET_COUNT);
+      np_config_save(&r.cfg);
+    }
+    if ((r.sel == L_DEGUISEMENT || r.sel == L_INDICE) && (p & (K_OK | K_LEFT | K_RIGHT))) {
+      if (r.sel == L_DEGUISEMENT) r.cfg.disguise = !r.cfg.disguise;
+      else r.cfg.hint = !r.cfg.hint;
+      np_config_save(&r.cfg);
+    }
+    if (p) sale = true;
+    float c = ui_approach(r.curseur, (float)r.sel, dt, 0.05f);
+    if (c != r.curseur) sale = true;
+    r.curseur = c;
+    if (sale) {
+      ui_frame(scene, &r);
+      sale = false;
+    } else {
+      np_sleep(16);
+    }
+  }
+}
diff --git a/pack/colle.c b/pack/colle.c
new file mode 100644
index 0000000..63477d6
--- /dev/null
+++ b/pack/colle.c
@@ -0,0 +1,64 @@
+/* Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+ * La colle d'un module NumPlay (.cmod, ABI Calcade 1) : sa fiche, sa fonction lancer(), et ce que
+ * le lanceur NumPlay donnait au jeu (savoir si Home a été pressé, numplay_launcher).
+ *
+ * Compilée une fois par jeu avec :
+ *   -DNP_IDENT=np_snake -DNP_ID='"np_snake"' -DNP_NOM='"Snake"' -DNP_VERSION='"1.10.0"'
+ *   -DNP_AUTEUR='"Mason Chen"' -DNP_COULEUR=0x07E0 -DNP_ENTREE=main -DNP_VIGNETTE='"vignette.h"'
+ *
+ * La RAM du jeu (y compris celle-ci) est placée par pack/cmod.py dans ctx->ram, à l'adresse
+ * _eadk_numplay_ram que définit le cœur NumPlay (la fin de sa RAM statique, pack/coeur.ld) : le cœur
+ * y met toujours la RAM des modules np_. */
+#include <stdbool.h>
+#include <string.h>
+#include "eadk.h"
+#include "calcade_module.h"
+#include NP_VIGNETTE
+
+/* la RAM des modules np_, donnée par le cœur NumPlay */
+extern uint8_t np_repere[] __asm__("_eadk_numplay_ram");
+
+/* fournis par pack/cmod.py */
+extern const uint8_t np_cmod_init[];
+extern const char np_cmod_init_size[], np_cmod_ram_size[];
+#define TAILLE_INIT ((uint32_t)(uintptr_t)np_cmod_init_size)
+#define TAILLE_RAM ((uint32_t)(uintptr_t)np_cmod_ram_size)
+
+/* Dans NumPlay, les jeux laissent Home et la RAM au lanceur (games/common/epsilon_app.h) :
+ * c'est encore vrai ici, le cœur s'en occupe. */
+const uint8_t numplay_launcher[1] = {1};
+/* (bornes de la RAM d'une application seule : jamais utilisées quand numplay_launcher est là) */
+const char _data_section_start_ram[4] = {0}, _heap_end[4] = {0};
+
+/* Les jeux lisent le clavier par ici (la fabrication renomme leurs appels) : on sait ainsi si le
+ * jeu s'est fini par Home (NumPlay se ferme) ou par Back (retour au menu). */
+static bool np_home;
+eadk_keyboard_state_t np_keyboard_scan(void) {
+  eadk_keyboard_state_t s = eadk_keyboard_scan();
+  if (eadk_keyboard_key_down(s, eadk_key_home) || eadk_keyboard_key_down(s, eadk_key_on_off)) np_home = true;
+  return s;
+}
+eadk_event_t np_event_get(int32_t *timeout) {
+  eadk_event_t e = eadk_event_get(timeout);
+  if (e == 6 || e == 8) np_home = true; /* Home, On/Off */
+  return e;
+}
+void np_display_draw_string(const char *text, eadk_point_t point, bool large_font, eadk_color_t text_color,
+                            eadk_color_t background_color) {
+  eadk_display_draw_string(text, point, large_font, text_color, background_color);
+}
+
+extern int NP_ENTREE(void);
+
+static int lancer(const CalcadeContexte *ctx) {
+  uint8_t *ram = np_repere;
+  /* rien de la RAM du jeu n'est utilisable avant la copie ci-dessous */
+  if (!ctx || ctx->abi < 1 || ctx->ram != ram || ctx->taille_ram < TAILLE_RAM) return -1;
+  memcpy(ram, np_cmod_init, TAILLE_INIT);
+  memset(ram + TAILLE_INIT, 0, TAILLE_RAM - TAILLE_INIT);
+  NP_ENTREE();
+  return np_home ? CALCADE_QUITTER : CALCADE_RETOUR_MENU;
+}
+
+#define NP_DECLARER(ident, ...) CALCADE_DECLARER_MODULE(ident, __VA_ARGS__)
+NP_DECLARER(NP_IDENT, NP_ID, NP_NOM, NP_VERSION, NP_AUTEUR, vignette, TAILLE_RAM, lancer, NP_COULEUR);
diff --git a/pack/essai/coeur_essai.c b/pack/essai/coeur_essai.c
new file mode 100644
index 0000000..ecd5754
--- /dev/null
+++ b/pack/essai/coeur_essai.c
@@ -0,0 +1,33 @@
+/* cœur d'essai (pas livré) : le menu du kit, avec la RAM des modules np_ à &eadk_external_data + 0x2000 */
+#define CALCADE_COEUR
+#include <string.h>
+#include "eadk.h"
+#include "calcade_module.h"
+const char eadk_app_name[] __attribute__((section(".rodata.eadk_app_name"))) = "NumPlay";
+const uint32_t eadk_api_level __attribute__((section(".rodata.eadk_api_level"))) = 0;
+extern uint8_t repere[] __asm__("_eadk_numplay_ram");
+extern uint8_t _heap_end[];
+int main(void) {
+  const CalcadeModule *debut = calcade_modules_debut(), *fin = calcade_modules_fin();
+  int n = (debut && fin) ? (int)(fin - debut) : 0;
+  uint8_t *ram = repere; uint32_t taille = (uint32_t)(_heap_end - ram);
+  int choix = 0;
+  for (;;) {
+    eadk_display_push_rect_uniform(eadk_screen_rect, 0xFFFF);
+    for (int i = 0; i < n; i++)
+      eadk_display_draw_string(debut[i].nom, (eadk_point_t){30, (uint16_t)(10 + 18 * i)}, false, i == choix ? 0xF800 : 0, 0xFFFF);
+    eadk_display_wait_for_vblank();
+    eadk_keyboard_state_t k = eadk_keyboard_scan();
+    if (eadk_keyboard_key_down(k, eadk_key_home)) return 0;
+    if (eadk_keyboard_key_down(k, eadk_key_down) && choix < n - 1) { choix++; eadk_timing_msleep(150); }
+    if (eadk_keyboard_key_down(k, eadk_key_up) && choix > 0) { choix--; eadk_timing_msleep(150); }
+    if (eadk_keyboard_key_down(k, eadk_key_ok) && n) {
+      memset(ram, 0, taille);
+      CalcadeContexte ctx = { CALCADE_ABI, ram, taille, 1, {0} };
+      int r = debut[choix].lancer(&ctx);
+      if (r == CALCADE_QUITTER) return 0;
+      while (eadk_keyboard_scan()) eadk_timing_msleep(10);
+    }
+    eadk_timing_msleep(16);
+  }
+}
diff --git a/pack/essai/run1.py b/pack/essai/run1.py
new file mode 100644
index 0000000..66ea2a9
--- /dev/null
+++ b/pack/essai/run1.py
@@ -0,0 +1,11 @@
+import os, sys
+sys.path.insert(0, "tools")
+import emu
+K = emu.KEYS
+out = sys.argv[2]
+c = emu.Calculator(sys.argv[1])
+h = lambda t, k, d=150: (t, t + d, K[k])
+c.keys = [h(500, "ok"), h(4000, "back"), h(4500, "right"), h(5000, "ok"), h(5800, "down"), h(6400, "ok"), h(10000, "home")]
+c.pending_shots = [(t, os.path.join(out, f"{t}.png")) for t in (2500, 4400, 5600, 6200, 9000)]
+c.run(12000)
+print("exited", c.exited, "t", c.now_ms)
diff --git a/pack/essai/run2.py b/pack/essai/run2.py
new file mode 100644
index 0000000..6abd76b
--- /dev/null
+++ b/pack/essai/run2.py
@@ -0,0 +1,19 @@
+import os, sys, tempfile
+sys.path.insert(0, "tools"); sys.path.insert(0, "tests")
+import emu
+from test_progress import write_storage
+K = emu.KEYS
+elf, out = sys.argv[1], sys.argv[2]
+keys = eval(sys.argv[3]); shots = eval(sys.argv[4]); until = int(sys.argv[5])
+with tempfile.TemporaryDirectory() as d:
+    st = os.path.join(d, "s.bin"); write_storage(st, [])
+    c = emu.Calculator(elf, storage_file=st)
+    c.keys = [(t, t + 150, K[k]) for t, k in keys]
+    c.pending_shots = [(t, os.path.join(out, f"{t}.png")) for t in shots]
+    c.run(until)
+    print("exited", c.exited, "t", round(c.now_ms))
+from PIL import Image
+W = Image.new("RGB", (330 * len(shots), 240), "white")
+for i, t in enumerate(shots):
+    W.paste(Image.open(os.path.join(out, f"{t}.png")), (i * 330, 0))
+W.save(os.path.join(out, "planche.png"))
diff --git a/pack/essai/sonde.py b/pack/essai/sonde.py
new file mode 100644
index 0000000..e1c742d
--- /dev/null
+++ b/pack/essai/sonde.py
@@ -0,0 +1,25 @@
+# trouve la touche qui ramène au menu du cœur depuis l'écran titre de chaque mini-jeu
+import os, sys
+sys.path.insert(0, "tests")
+from pack_emu import Session, link
+CANDIDATS = [["back"], ["back", "ok"], ["back", "right", "ok"], ["back", "down", "ok"], ["back", "left", "ok"],
+             ["back", "up", "ok"], ["back", "back"]]
+jeux = sys.argv[1:]
+os.makedirs("build-coeur/sonde", exist_ok=True)
+for g in jeux:
+    elf = f"build-coeur/sonde/{g}.elf"
+    link(elf, "dist/pack/NumPlay-coeur.nwa", [f"dist/pack/modules/np_{g}.cmod"])
+    trouve = None
+    for cand in CANDIDATS:
+        keys = [(700, "ok"), (1800, "ok")]   # passe l'intro, lance le jeu (seule carte)
+        t = 5000
+        for k in cand:
+            keys.append((t, k)); t += 700
+        s = Session(elf, keys=keys).run(t + 2500)
+        back = len(s.menus) >= 2 and len(s.starts) == 1 and not s.c.exited
+        if back:
+            trouve = cand
+            break
+        if s.c.exited:
+            pass
+    print(g, "->", trouve, flush=True)
diff --git a/pack/essai/sonde_un.py b/pack/essai/sonde_un.py
new file mode 100644
index 0000000..926f393
--- /dev/null
+++ b/pack/essai/sonde_un.py
@@ -0,0 +1,12 @@
+import sys
+sys.path.insert(0, "tests")
+from pack_emu import Session, link
+g, seq = sys.argv[1], sys.argv[2].split(",")
+elf = f"build-coeur/sonde/{g}.elf"
+link(elf, "dist/pack/NumPlay-coeur.nwa", [f"dist/pack/modules/np_{g}.cmod"])
+keys = [(700, "ok"), (1800, "ok")]
+t = 6000
+for k in seq:
+    keys.append((t, k)); t += 700
+s = Session(elf, keys=keys, shots=[(5800, f"{g}-a"), (t + 2000, f"{g}-b")], out="build-coeur/sonde").run(t + 2500)
+print(g, seq, "menus", len(s.menus), "starts", len(s.starts), "exited", s.c.exited)
diff --git a/pack/fabriquer.sh b/pack/fabriquer.sh
new file mode 100755
index 0000000..a3c6c0d
--- /dev/null
+++ b/pack/fabriquer.sh
@@ -0,0 +1,76 @@
+#!/bin/sh
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+# Fabrique les modules NumPlay (.cmod, ABI Calcade 1) des mini-jeux, à partir des objets que
+# `make` de NumPlay a déjà construits (games/*/output/module.o...) :
+#   pack/fabriquer.sh [jeu ...]       -> dist/pack/modules/np_<jeu>.cmod, .json, .png
+# Il faut le kit Calcade (KIT, par défaut ../kit-numplay) pour calcade_module.h, eadk.h et le
+# vérificateur.
+set -e
+cd "$(dirname "$0")/.."
+KIT=${KIT:-../kit-numplay}
+B=build-pack
+OUT=dist/pack/modules
+CIBLE="-mthumb -mfloat-abi=hard -mcpu=cortex-m7 -mfpu=fpv5-sp-d16"
+CFLAGS="$CIBLE -DPLATFORM_DEVICE=1 -std=c11 -Os -Wall -ffunction-sections -fdata-sections -fno-common -I$KIT/include"
+VERSION=$(cat VERSION)
+mkdir -p $B $OUT
+JEUX=${*:-$(python3 -c "import json;print(' '.join(x['id'] for x in json.load(open('games/games.json'))))")}
+for g in $JEUX; do
+  case $g in
+    numdash) obj=games/numdash/build/module.o ;;
+    numdrive) obj=games/numdrive/output/device/module.o ;;
+    tetris) obj=build/tetris/raw.o ;;
+    *) obj=games/$g/output/module.o ;;
+  esac
+  entree=main; [ $g = tetris ] && entree=np_tetris_main
+  id=np_$g
+  d=$B/$g
+  mkdir -p $d
+  # 1. le jeu : ses appels au clavier et au texte passent par la colle, main devient np_jeu_main
+  if [ $g = blockblast ]; then
+    # Block Blast dessine avec les bandes, formes et polices du lanceur : comme son appli seule, le module
+    # les emporte (et ses propres fonctions de fichiers, games/common/epsilon_files.h)
+    obj=$d/bb.o
+    EADK=$(npx --yes -- nwlink@1.0.0 eadk-cflags-device | tr -d '"')
+    for f in games/blockblast/src/main.c launcher/src/gfx.c launcher/src/font_data.c launcher/src/xfont.c; do
+      arm-none-eabi-gcc -std=c11 $EADK -Os -Wall -Wno-unused-parameter -fno-math-errno -fsingle-precision-constant \
+        -fno-tree-loop-distribute-patterns -ffunction-sections -fdata-sections -fno-common -Ilauncher/src \
+        -c $f -o $d/$(basename $f .c).bb.o
+    done
+    arm-none-eabi-ld -r $d/*.bb.o -o $obj
+  fi
+  arm-none-eabi-objcopy --redefine-sym eadk_keyboard_scan=np_keyboard_scan --redefine-sym eadk_event_get=np_event_get \
+    --redefine-sym eadk_display_draw_string=np_display_draw_string --redefine-sym $entree=np_jeu_main $obj $d/jeu.o
+  # 2. la colle : fiche, lancer(), vignette
+  python3 pack/vignettes.py $g $d/vignette.h $OUT/$id.png
+  eval "$(python3 - "$g" <<'EOF'
+import json, sys
+g = sys.argv[1]
+m = json.load(open("pack/modules.json"))[g]
+j = next(x for x in json.load(open("games/games.json")) if x["id"] == g)
+c = int(j["top"], 16)
+rgb = ((c >> 8) & 0xF800) | ((c >> 5) & 0x07E0) | ((c & 0xFF) >> 3)
+q = lambda s: "'\"" + s.replace("'", "'\\''") + "\"'"
+print(f"NOM={q(m['nom'])}; AUTEUR={q(m['auteur'])}; COULEUR=0x{rgb:04X}")
+EOF
+)"
+  arm-none-eabi-gcc $CFLAGS -DCALCADE_MODULE=1 -DNP_IDENT=$id "-DNP_ID=\"$id\"" "-DNP_NOM=$NOM" "-DNP_VERSION=\"$VERSION\"" \
+    "-DNP_AUTEUR=$AUTEUR" -DNP_COULEUR=$COULEUR -DNP_ENTREE=np_jeu_main "-DNP_VIGNETTE=\"vignette.h\"" -I$d \
+    -c pack/colle.c -o $d/colle.o
+  # 3. jeu + colle + libc, sans ce qui ne sert pas, puis en trois sections (code, .data, .bss)
+  arm-none-eabi-gcc $CIBLE -nostartfiles -nodefaultlibs --specs=nano.specs -Wl,--relocatable -Wl,--gc-sections \
+    -Wl,-e,calcade_module_$id $d/jeu.o $d/colle.o -Wl,--start-group -lm -lc -lgcc -Wl,--end-group -o $d/lie.o
+  arm-none-eabi-ld -r -d -T tools/module.ld $d/lie.o -o $d/fusion.o
+  # 4. la RAM du jeu va dans ctx->ram, tout devient local sauf la fiche
+  python3 pack/cmod.py $d/fusion.o $OUT/$id.cmod --id $id --json $d/tailles.json
+  python3 $KIT/outils/verifier_module.py $OUT/$id.cmod
+  # 5. la présentation sur le site
+  python3 - "$g" "$OUT/$id.json" <<'EOF'
+import json, sys
+g, out = sys.argv[1], sys.argv[2]
+ordre = 10 * (1 + [x["id"] for x in json.load(open("games/games.json"))].index(g))
+m = json.load(open("pack/modules.json"))[g]
+json.dump({"nom": m["nom"], "description": m["description"], "categorie": m["categorie"], "ordre": ordre},
+          open(out, "w"), ensure_ascii=False, indent=1)
+EOF
+done
diff --git a/pack/liaison.ld.in b/pack/liaison.ld.in
new file mode 100644
index 0000000..15ee9f4
--- /dev/null
+++ b/pack/liaison.ld.in
@@ -0,0 +1,74 @@
+/* le script de liaison du site (Calcade - MISE A JOUR/lieur.js), recopié par pack/lier.py */
+MEMORY {{
+  FLASH (rx) : ORIGIN = {flashStart}, LENGTH = {flashLength}
+  RAM (rwx) : ORIGIN = {ramStart}, LENGTH = {ramLength}
+}}
+
+ENTRY(_start);
+
+_userland_trampoline_address = {trampolineStart};
+
+SECTIONS {{
+  .eadk_app_info ORIGIN(FLASH) : {{
+    LONG(0xDEC0BEBA);
+    KEEP(*(.rodata.eadk_api_level))
+    LONG(ADDR(.rodata.eadk_app_name) - ORIGIN(FLASH));
+    LONG(SIZEOF(.rodata.eadk_app_icon));
+    LONG(ADDR(.rodata.eadk_app_icon) - ORIGIN(FLASH));
+    LONG(_start - ORIGIN(FLASH));
+    LONG(_eadk_app_end - ORIGIN(FLASH));
+    LONG(0xDEC0BEBA);
+  }} >FLASH
+
+  .rodata.eadk_app_name : {{
+    KEEP(*(.rodata.eadk_app_name))
+  }} >FLASH
+
+  .rodata.eadk_app_icon : {{
+    KEEP(*(.rodata.eadk_app_icon))
+  }} >FLASH
+
+  .text : {{
+    . = ALIGN(4);
+    *(.text)
+    *(.text.*)
+  }} >FLASH
+
+  .rodata : {{
+    *(.rodata)
+    *(.rodata.*)
+    /* les jeux d'un pack NumPlay : chaque module y depose sa fiche */
+    . = ALIGN(4);
+    __start_calcade_modules = .;
+    KEEP(*(calcade_modules))
+    __stop_calcade_modules = .;
+    _eadk_app_end = .;
+  }} >FLASH
+
+  .data : {{
+    . = ALIGN(4);
+    _data_section_start_flash = LOADADDR(.data);
+    _data_section_start_ram = .;
+    *(.data)
+    *(.data.*)
+    _data_section_end_ram = .;
+  }} >RAM AT >FLASH
+
+  .bss : {{
+    . = ALIGN(4);
+    _bss_section_start_ram = .;
+    *(.bss)
+    *(.bss.*)
+    _bss_section_end_ram = .;
+  }} >RAM
+
+  .heap : {{
+    _heap_start = .;
+    . = (ORIGIN(RAM) + LENGTH(RAM));
+    _heap_end = .;
+  }} >RAM
+}}
+
+ASSERT(SIZEOF(.eadk_app_info) == 32, "Missing api level. Please define a .rodata.eadk_api_level section.");
+ASSERT(SIZEOF(.rodata.eadk_app_name) > 0, "Missing app name. Please define a .rodata.eadk_app_name section.");
+ASSERT(SIZEOF(.rodata.eadk_app_icon) > 0, "Missing app icon. Please define a .rodata.eadk_app_icon section.");
diff --git a/pack/lier.py b/pack/lier.py
new file mode 100755
index 0000000..877ba92
--- /dev/null
+++ b/pack/lier.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Lie un pack NumPlay exactement comme le site (lieur.js) : eadk.o + le cœur + les modules,
+avec le même script de liaison, aux adresses de l'émulateur (tools/emu.py) ou à celles données.
+
+Usage : lier.py sortie.elf coeur.nwa [module.cmod ...] [--ram-length N] [--flash-start A] [--binaire f.bin]
+"""
+import argparse
+import os
+import subprocess
+import sys
+import tempfile
+
+ICI = os.path.dirname(os.path.abspath(__file__))
+sys.path.insert(0, os.path.join(ICI, "..", "tools"))
+import emu  # noqa: E402
+
+SCRIPT = open(os.path.join(ICI, "liaison.ld.in")).read()
+
+
+def lier(sortie, coeur, modules, ram_length=None, flash_start=emu.EXT_FLASH_START, kit=None, binaire=None,
+         flash_length=None):
+    kit = kit or os.environ.get("KIT", os.path.join(ICI, "..", "..", "kit-numplay"))
+    ram_len = ram_length or emu.EXT_RAM_LEN
+    ram_start = emu.EXT_RAM_END - ram_len
+    with tempfile.TemporaryDirectory() as d:
+        ld = os.path.join(d, "linker.ld")
+        open(ld, "w").write(SCRIPT.format(flashStart=hex(flash_start), flashLength=hex(flash_length or emu.EXT_FLASH_END - flash_start),
+                                          ramStart=hex(ram_start), ramLength=hex(ram_len),
+                                          trampolineStart=hex(emu.TRAMPOLINE)))
+        cmd = ["arm-none-eabi-ld", "--script", ld, "--gc-sections", "--allow-multiple-definition",
+               os.path.join(kit, "outils", "eadk.o"), coeur] + list(modules) + ["--output", sortie, "--no-warn-rwx-segments"]
+        r = subprocess.run(cmd, capture_output=True, text=True)
+        if r.returncode:
+            raise RuntimeError(r.stderr)
+        if binaire:
+            subprocess.run(["arm-none-eabi-objcopy", "--output-target", "binary", sortie, binaire], check=True)
+    return sortie
+
+
+def main():
+    ap = argparse.ArgumentParser()
+    ap.add_argument("sortie")
+    ap.add_argument("coeur")
+    ap.add_argument("modules", nargs="*")
+    ap.add_argument("--ram-length", type=int)
+    ap.add_argument("--flash-start", type=lambda s: int(s, 0), default=emu.EXT_FLASH_START)
+    ap.add_argument("--flash-length", type=lambda s: int(s, 0))
+    ap.add_argument("--binaire")
+    a = ap.parse_args()
+    lier(a.sortie, a.coeur, a.modules, a.ram_length, a.flash_start, binaire=a.binaire, flash_length=a.flash_length)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/pack/modules.json b/pack/modules.json
new file mode 100644
index 0000000..f6ded71
--- /dev/null
+++ b/pack/modules.json
@@ -0,0 +1,117 @@
+{
+ "_": "Les mini-jeux de NumPlay en modules (pack/fabriquer.sh). nom/description/categorie : la présentation sur le site. Le 19 octobre 2026, Calcade a mis en règle les 19 jeux : refaits ou renommés quand ils reprenaient le contenu ou le nom d'un autre jeu (voir CALCADE.md).",
+ "numdash": {
+  "nom": "NumDash",
+  "categorie": "Rythme",
+  "auteur": "Mason Chen",
+  "description": "Saute en rythme à travers 12 niveaux, en cube, vaisseau, boule…"
+ },
+ "crossyroad": {
+  "nom": "Piou Road",
+  "categorie": "Arcade",
+  "auteur": "Mason Chen",
+  "description": "Fais traverser routes et rivières à Piou sans te faire écraser."
+ },
+ "numblocks": {
+  "nom": "NumBlocks",
+  "categorie": "Bac à sable",
+  "auteur": "Mason Chen",
+  "description": "Un monde en blocs : creuse, construis et survis."
+ },
+ "numdrive": {
+  "nom": "NumDrive",
+  "categorie": "Course",
+  "auteur": "Mason Chen",
+  "description": "157 circuits fous à finir sans se renverser."
+ },
+ "balatro": {
+  "nom": "Jokeria",
+  "categorie": "Cartes",
+  "auteur": "Mason Chen",
+  "description": "Jouez des mains de poker et collectionnez des Jokers."
+ },
+ "buckshot": {
+  "nom": "Chevrotine",
+  "categorie": "Stratégie",
+  "auteur": "Mason Chen",
+  "description": "Toi contre l'Automate, un fusil et des cartouches cachées."
+ },
+ "blockblast": {
+  "nom": "Block Boom",
+  "categorie": "Réflexion",
+  "auteur": "Mason Chen",
+  "description": "Place les pièces sur la grille et fais sauter les lignes."
+ },
+ "portal": {
+  "nom": "Warp Lab",
+  "categorie": "Réflexion",
+  "auteur": "Mason Chen",
+  "description": "Deux passages reliés pour sortir de 32 salles."
+ },
+ "tetris": {
+  "nom": "Stackfall",
+  "categorie": "Arcade",
+  "auteur": "Tatone26",
+  "description": "Empile les pièces qui tombent et complète des lignes."
+ },
+ "chess": {
+  "nom": "Échecs",
+  "categorie": "Plateau",
+  "auteur": "Mason Chen",
+  "description": "Contre des robots, en problèmes ou à deux joueurs."
+ },
+ "flappybird": {
+  "nom": "Flappix",
+  "categorie": "Arcade",
+  "auteur": "Mason Chen",
+  "description": "Bats des ailes entre les colonnes."
+ },
+ "pacman": {
+  "nom": "Munchy Maze",
+  "categorie": "Arcade",
+  "auteur": "Mason Chen",
+  "description": "Croque tous les points du labyrinthe en évitant les monstres."
+ },
+ "snake": {
+  "nom": "Snake",
+  "categorie": "Arcade",
+  "auteur": "Mason Chen",
+  "description": "Mange les pommes et grandis sans te mordre."
+ },
+ "connectfour": {
+  "nom": "Aligne 4",
+  "categorie": "Plateau",
+  "auteur": "Mason Chen",
+  "description": "Aligne quatre jetons pour gagner."
+ },
+ "solitaire": {
+  "nom": "Solitaire",
+  "categorie": "Cartes",
+  "auteur": "Mason Chen",
+  "description": "Le jeu de cartes classique."
+ },
+ "g2048": {
+  "nom": "2048",
+  "categorie": "Réflexion",
+  "auteur": "Mason Chen",
+  "description": "Fais glisser et fusionne les tuiles jusqu'à 2048."
+ },
+ "minesweeper": {
+  "nom": "Démineur",
+  "categorie": "Réflexion",
+  "auteur": "Mason Chen",
+  "description": "Dégage le terrain et repère les mines."
+ },
+ "breakout": {
+  "nom": "Casse-briques",
+  "categorie": "Arcade",
+  "auteur": "Mason Chen",
+  "description": "Casse toutes les briques avec ta balle."
+ },
+ "numvisuals": {
+  "nom": "NumVisuals",
+  "categorie": "Outils",
+  "auteur": "Mason Chen",
+  "description": "Fonds animés, horloges et minuteurs."
+ }
+}
diff --git a/pack/rapport.py b/pack/rapport.py
new file mode 100644
index 0000000..c388cd1
--- /dev/null
+++ b/pack/rapport.py
@@ -0,0 +1,33 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Le tableau des modules (id, nom, catégorie, flash, RAM statique, ram_requise) en Markdown,
+d'après les .cmod (comme le vérificateur du kit) et leurs .json.
+
+Usage : rapport.py dist/pack/modules
+"""
+import json
+import os
+import sys
+
+sys.path.insert(0, os.path.join(os.environ.get("KIT", os.path.join(os.path.dirname(__file__), "..", "..", "kit-numplay")),
+                                "outils"))
+import verifier_module as v  # noqa: E402
+
+d = sys.argv[1]
+jeux = [g["id"] for g in json.load(open(os.path.join(os.path.dirname(__file__), "..", "games", "games.json")))]
+print("| id | nom | catégorie | flash | RAM statique | ram_requise |")
+print("|---|---|---|---:|---:|---:|")
+total = 0
+for g in jeux:
+    p = os.path.join(d, f"np_{g}.cmod")
+    erreurs, _ = v.verifier(p)
+    e_type, e_machine, sections, symboles = v.lire_elf(p)
+    flash = sum(s["taille"] for s in sections if s["flags"] & 2 and s["type"] != 8)
+    ram = sum(s["taille"] for s in sections if s["flags"] & 2 and (s["flags"] & 1 or s["type"] == 8))
+    info = json.load(open(os.path.join(os.path.dirname(__file__), "..", "build-pack", g, "tailles.json")))
+    meta = json.load(open(os.path.join(d, f"np_{g}.json")))
+    total += flash
+    ok = "" if not erreurs else " **REFUS**"
+    print(f"| np_{g} | {meta['nom']} | {meta['categorie']} | {flash / 1024:.1f} Ko | {ram} o | "
+          f"{info['ram_requise'] / 1024:.1f} Ko{' (> 96 Ko)' if info['ram_requise'] > 96 * 1024 else ''} |{ok}")
+print(f"\nTotal des {len(jeux)} modules : {total / 1024:.0f} Ko de flash.")
diff --git a/pack/sauvegardes.py b/pack/sauvegardes.py
new file mode 100755
index 0000000..6ace848
--- /dev/null
+++ b/pack/sauvegardes.py
@@ -0,0 +1,20 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Les fichiers de sauvegarde des mini-jeux de NumPlay (games/games.json), par id de module (np_<id>) :
+le cœur d'un pack en garde une copie dans numplay_saves.py, comme NumPlay (launcher/src/storage.c).
+
+Usage : sauvegardes.py sortie.c
+"""
+import json
+import os
+import sys
+
+RACINE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")
+jeux = json.load(open(os.path.join(RACINE, "games", "games.json")))
+L = ["/* fait par pack/sauvegardes.py depuis games/games.json */", "#include <stddef.h>",
+     "typedef struct { const char *id; const char *const *noms; } np_sauvegardes_t;"]
+for i, g in enumerate(jeux):
+    L.append(f"static const char *const s{i}[] = {{" + ", ".join(json.dumps(r) for r in g["records"]) + ", NULL};")
+L.append("const np_sauvegardes_t np_sauvegardes[] = {" + ", ".join(f'{{"np_{g["id"]}", s{i}}}' for i, g in enumerate(jeux)) + "};")
+L.append(f"const int np_nsauvegardes = {len(jeux)};")
+open(sys.argv[1], "w").write("\n".join(L) + "\n")
diff --git a/pack/vignettes.py b/pack/vignettes.py
new file mode 100755
index 0000000..5208647
--- /dev/null
+++ b/pack/vignettes.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Vignettes des modules : l'image 80x60 RGB565 de la fiche (un en-tête C) et l'image du site
+(160x120 PNG), tirées de la première capture du jeu dans games/games.json.
+
+Usage : vignettes.py ID_JEU entete.h image.png
+"""
+import json
+import os
+import sys
+
+from PIL import Image
+
+RACINE = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..")
+
+
+def main():
+    jeu, entete, png = sys.argv[1:4]
+    g = next(x for x in json.load(open(os.path.join(RACINE, "games", "games.json"))) if x["id"] == jeu)
+    img = Image.open(os.path.join(RACINE, "games", jeu, g["shots"][0])).convert("RGB")
+    # capture 320x240 (ou autre) : recadrée en 4:3 puis réduite
+    w, h = img.size
+    if w * 3 != h * 4:
+        if w * 3 > h * 4:
+            nw = h * 4 // 3
+            img = img.crop(((w - nw) // 2, 0, (w - nw) // 2 + nw, h))
+        else:
+            nh = w * 3 // 4
+            img = img.crop((0, (h - nh) // 2, w, (h - nh) // 2 + nh))
+    img.resize((160, 120), Image.LANCZOS).save(png, optimize=True)
+    v = img.resize((80, 60), Image.LANCZOS)
+    px = []
+    raw = v.tobytes()
+    for i in range(0, 80 * 60 * 3, 3):
+        r, gg, b = raw[i], raw[i + 1], raw[i + 2]
+        px.append(((r & 0xF8) << 8) | ((gg & 0xFC) << 3) | (b >> 3))
+    with open(entete, "w") as f:
+        f.write(f"/* vignette 80x60 RGB565 de {jeu} (pack/vignettes.py) */\n")
+        f.write("static const uint16_t vignette[4800] = {\n")
+        for i in range(0, 4800, 16):
+            f.write("  " + ", ".join(f"0x{p:04X}" for p in px[i:i + 16]) + ",\n")
+        f.write("};\n")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/tests/modules/essai_statique.c b/tests/modules/essai_statique.c
new file mode 100644
index 0000000..5af4c9b
--- /dev/null
+++ b/tests/modules/essai_statique.c
@@ -0,0 +1,25 @@
+/* Calcade, 2026 — module d'essai (pas livré) : un « grand jeu » avec de la RAM statique, pour vérifier
+ * que le cœur la remet intacte après un mini-jeu np_ (qui travaille par-dessus pendant qu'il tourne).
+ * lancer() rend tout de suite la main : 0 si sa .data et sa .bss sont intactes, -7 sinon. */
+#include "eadk.h"
+#include "calcade_module.h"
+
+uint32_t essai_marque = 0x5A17C0DE;   /* .data : jamais modifiée */
+uint32_t essai_compte;                /* .bss : un de plus à chaque lancement */
+uint32_t essai_lancements;            /* ctx->lancements vu par le jeu */
+uint32_t essai_taille_ram;
+uint8_t essai_tampon[1500] = {1};     /* de la .data en plus, pour que la copie à mettre de côté compte */
+
+static int lancer(const CalcadeContexte *ctx) {
+  essai_lancements = ctx->lancements;
+  essai_taille_ram = ctx->taille_ram;
+  if (essai_marque != 0x5A17C0DE || essai_tampon[0] != 1) return -7;
+  essai_compte++;
+  for (uint32_t i = 0; i < ctx->taille_ram; i += 4096)  /* la RAM de travail est à lui : on y écrit */
+    ctx->ram[i] = 0xAA;
+  eadk_display_push_rect_uniform(eadk_screen_rect, 0x07E0);
+  eadk_timing_msleep(300);
+  return CALCADE_RETOUR_MENU;
+}
+
+CALCADE_DECLARER_MODULE(essaistat, "essaistat", "Essai statique", "1.0", "Calcade", NULL, 64 * 1024, lancer, 0xF81F);
diff --git a/tests/pack_emu.py b/tests/pack_emu.py
new file mode 100644
index 0000000..bcfb1ba
--- /dev/null
+++ b/tests/pack_emu.py
@@ -0,0 +1,58 @@
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Un pack NumPlay (cœur + modules, lié comme le site par pack/lier.py) dans l'émulateur ARM, avec ce
+qu'il faut pour le vérifier : les entrées dans le carrousel du cœur (coeur_menu), les jeux lancés
+(cc_module_started, avec l'id du module), et la fin de l'application."""
+import os
+import sys
+import tempfile
+
+ICI = os.path.dirname(os.path.abspath(__file__))
+sys.path.insert(0, os.path.join(ICI, "..", "tools"))
+sys.path.insert(0, os.path.join(ICI, "..", "pack"))
+import emu  # noqa: E402
+from unicorn import UC_HOOK_CODE  # noqa: E402
+from test_progress import records, write_storage  # noqa: E402
+
+K = emu.KEYS
+emu.EVENT_EDGES = True
+
+
+class Session:
+    def __init__(self, elf, storage=(), keys=(), shots=(), out=None, watch=()):
+        self.dir = tempfile.TemporaryDirectory()
+        self.path = os.path.join(self.dir.name, "storage.bin")
+        write_storage(self.path, list(storage))
+        c = self.c = emu.Calculator(elf, storage_file=self.path)
+        c.keys = [(t, t + 150, K[k]) for t, k in keys]
+        c.pending_shots = sorted((t, os.path.join(out, f"{n}.png")) for t, n in shots) if out else []
+        self.menus, self.starts = [], []
+        self.watch, self.seen = list(watch), []   # valeurs (u32) de ces symboles à chaque entrée dans le carrousel
+        for name, hook in (("coeur_menu", self._menu), ("cc_module_started", self._start)):
+            a = c.symbols[name] & ~1
+            c.uc.hook_add(UC_HOOK_CODE, hook, begin=a, end=a + 1)
+
+    def _menu(self, uc, addr, size, data):
+        self.menus.append(self.c.now_ms)
+        import struct
+        self.seen.append({n: struct.unpack("<I", bytes(uc.mem_read(self.c.symbols[n], 4)))[0] for n in self.watch})
+
+    def _start(self, uc, addr, size, data):
+        r0 = self.c.reg(emu.UC_ARM_REG_R0)
+        s = bytes(uc.mem_read(r0, 24)).split(b"\0")[0].decode()
+        self.starts.append((self.c.now_ms, s))
+
+    def run(self, ms):
+        self.c.run(ms)
+        return self
+
+    @property
+    def files(self):
+        return dict(records(bytearray(open(self.path, "rb").read())))
+
+    def screen_png(self, path):
+        self.c.save_png(path)
+
+
+def link(elf, coeur, modules, flash_length=None, ram_length=None):
+    import lier
+    return lier.lier(elf, coeur, modules, ram_length=ram_length, flash_length=flash_length)
diff --git a/tests/pack_retour.json b/tests/pack_retour.json
new file mode 100644
index 0000000..1599891
--- /dev/null
+++ b/tests/pack_retour.json
@@ -0,0 +1,92 @@
+{
+ "numdash": [
+  "back",
+  "right",
+  "ok"
+ ],
+ "crossyroad": [
+  "back",
+  "right",
+  "ok"
+ ],
+ "numvisuals": [
+  "back"
+ ],
+ "breakout": [
+  "back",
+  "right",
+  "ok"
+ ],
+ "minesweeper": [
+  "back",
+  "right",
+  "ok"
+ ],
+ "solitaire": [
+  "back",
+  "ok"
+ ],
+ "connectfour": [
+  "back",
+  "right",
+  "ok"
+ ],
+ "pacman": [
+  "back",
+  "down",
+  "ok"
+ ],
+ "flappybird": [
+  "back",
+  "right",
+  "ok"
+ ],
+ "chess": [
+  "back",
+  "right",
+  "ok"
+ ],
+ "snake": [
+  "back",
+  "right",
+  "ok"
+ ],
+ "g2048": [
+  "back"
+ ],
+ "numblocks": [
+  "back",
+  "left",
+  "ok"
+ ],
+ "tetris": [
+  "back",
+  "right",
+  "ok"
+ ],
+ "portal": [
+  "back"
+ ],
+ "buckshot": [
+  "back"
+ ],
+ "blockblast": [
+  "back",
+  "back",
+  "up",
+  "ok"
+ ],
+ "numdrive": [
+  "back",
+  "pause",
+  "down",
+  "pause",
+  "ok",
+  "pause",
+  "right",
+  "ok"
+ ],
+ "balatro": [
+  "back"
+ ]
+}
\ No newline at end of file
diff --git a/tests/test_calcade.py b/tests/test_calcade.py
new file mode 100644
index 0000000..63c8fa7
--- /dev/null
+++ b/tests/test_calcade.py
@@ -0,0 +1,183 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Checks the Calcade dressing of NumPlay in the ARM emulator (tools/emu.py):
+
+- the intro plays at start-up, then the home screen; OK skips it after 0.5 s;
+- numplay.sys: CLC2 header, size 116, checksum, launches counted at each opening;
+- the 20th opening sets bit 31 of launches ("update required") and writes it at once;
+- with bit 31 set: after the intro, the update screen stays; no key leaves it (OK, EXE, Back,
+  arrows, numbers, Backspace...), only Home quits NumPlay; the opening is still counted;
+- the website clears bit 31 (and the checksum): NumPlay opens normally again;
+- a damaged or foreign numplay.sys never crashes NumPlay: it starts again from zero;
+- a game started from the home screen is counted.
+
+Usage: test_calcade.py build/NumPlay.nwa [--out DIR] [--shots]
+"""
+import argparse
+import os
+import struct
+import sys
+import tempfile
+
+sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "tools"))
+import emu  # noqa: E402
+from test_progress import records, write_storage  # noqa: E402
+
+K = emu.KEYS
+NAME = "numplay.sys"
+FLAG = 0x80000000
+
+
+def clc2_hash(b):
+    h = (2166136261 ^ 0x5A17C0DE) & 0xFFFFFFFF
+    for x in b:
+        h = ((h ^ x) * 16777619) & 0xFFFFFFFF
+    h ^= h >> 15
+    h = (h * 0x2C1B3C6D) & 0xFFFFFFFF
+    h ^= h >> 12
+    return h
+
+
+def make_save(launches, plays=None):
+    b = bytearray(116)
+    struct.pack_into("<IHH", b, 0, 0x32434C43, 2, 116)
+    b[8:15] = b"numplay"
+    b[20:26] = b"1.10.0"
+    struct.pack_into("<I", b, 28, launches)
+    b[49] = 0xFF
+    for i, n in (plays or {}).items():
+        struct.pack_into("<H", b, 52 + 2 * i, n)
+    struct.pack_into("<I", b, 112, clc2_hash(b[:112]))
+    return bytes(b)
+
+
+def parse(b):
+    assert len(b) == 116, f"numplay.sys is {len(b)} bytes"
+    magic, fmt, size = struct.unpack_from("<IHH", b, 0)
+    assert magic == 0x32434C43 and fmt == 2 and size == 116, "CLC2 header"
+    assert b[8:20].rstrip(b"\0") == b"numplay", b[8:20]
+    assert struct.unpack_from("<I", b, 112)[0] == clc2_hash(b[:112]), "checksum"
+    launches, = struct.unpack_from("<I", b, 28)
+    total, = struct.unpack_from("<I", b, 32)
+    plays = struct.unpack_from("<28H", b, 52)
+    return {"launches": launches, "count": launches & ~FLAG, "flag": bool(launches & FLAG), "ver": b[20:28].rstrip(b"\0"),
+            "total": total, "last": b[36:48].rstrip(b"\0"), "last_index": b[49], "plays": plays}
+
+
+def update_screen_shown(calc):
+    """the update screen: its fluo yellow title "Mise à jour" in the panel's top"""
+    s = calc.screen
+    n = 0
+    for y in range(24, 46):
+        for x in range(100, 220):
+            c = s[y * 320 + x] if not isinstance(s, (bytes, bytearray)) else struct.unpack_from("<H", s, 2 * (y * 320 + x))[0]
+            r, g, b = (c >> 11) << 3, ((c >> 5) & 63) << 2, (c & 31) << 3
+            if r > 220 and g > 200 and b < 120:
+                n += 1
+    return n > 150
+
+
+def run(nwa, storage_recs, ms, keys=(), shots=(), out=None):
+    with tempfile.TemporaryDirectory() as d:
+        path = os.path.join(d, "storage.bin")
+        write_storage(path, storage_recs)
+        c = emu.Calculator(nwa, storage_file=path)
+        c.keys = list(keys)
+        c.pending_shots = sorted((t, os.path.join(out, f"{name}.png")) for t, name in shots) if out else []
+        c.run(ms)
+        recs = dict(records(bytearray(open(path, "rb").read())))
+        return c, recs
+
+
+def held(t, key, d=150):
+    return (t, t + d, K[key])
+
+
+def main():
+    ap = argparse.ArgumentParser()
+    ap.add_argument("nwa")
+    ap.add_argument("--out", default=None)
+    a = ap.parse_args()
+    if a.out:
+        os.makedirs(a.out, exist_ok=True)
+    ok = True
+
+    def check(cond, what):
+        nonlocal ok
+        print(("ok    " if cond else "FAIL  ") + what)
+        ok &= bool(cond)
+
+    # 1. first opening: intro, then the home screen; numplay.sys starts at 1
+    c, r = run(a.nwa, [], 6500, shots=[(450, "intro-01-logo-surgit"), (700, "intro-02-onde-de-choc"),
+                                        (1250, "intro-03-lettres-tombent"), (2150, "intro-04-reflet"),
+                                        (2500, "intro-05-presente"), (3600, "intro-06-ecran-final"),
+                                        (6400, "menu-numplay")], out=a.out)
+    s = parse(r[NAME])
+    check(not c.exited and s["count"] == 1 and not s["flag"], f"1st opening: launches={s['launches']:#x}, NumPlay runs")
+    check(s["ver"] == b"1.10.0", f"version {s['ver']}")
+    check(not update_screen_shown(c), "1st opening: home screen, no update screen")
+    check("numplay_saves.py" in r and b"numplay.sys" in r["numplay_saves.py"], "numplay.sys is in NumPlay's copy of the saves")
+
+    # 2. the 19th opening: still free
+    c, r = run(a.nwa, [(NAME, make_save(18))], 6000)
+    s = parse(r[NAME])
+    check(s["count"] == 19 and not s["flag"] and not update_screen_shown(c), "19th opening: no flag, home screen")
+
+    # 3. the 20th opening sets the flag at once and stays on the update screen whatever is pressed
+    keys = []
+    t = 5000
+    for k in ["ok", "exe", "back", "left", "right", "up", "down", "5", "0", "backspace", "shift", "alpha",
+              "toolbox", "var", "xnt", "ok", "back", "8", "2", "4", "6"]:
+        keys.append(held(t, k))
+        t += 300
+    c, r = run(a.nwa, [(NAME, make_save(19))], t + 1500, keys=keys, shots=[(t + 1000, "07-mise-a-jour-obligatoire")],
+               out=a.out)
+    s = parse(r[NAME])
+    check(s["count"] == 20 and s["flag"], f"20th opening: launches={s['launches']:#x} (bit 31 set)")
+    check(not c.exited and update_screen_shown(c), "20th opening: blocked on the update screen after 21 keys")
+
+    # 4. the flag stays (the game never clears it): blocked at every opening, still counted; Home quits
+    c, r = run(a.nwa, [(NAME, make_save(FLAG | 25))], 9000, keys=[held(5000, "ok"), held(5500, "back"),
+                                                                    held(6000, "exe"), held(7000, "home")])
+    s = parse(r[NAME])
+    check(s["flag"] and s["count"] == 26, f"flag kept, opening counted: launches={s['launches']:#x}")
+    check(c.exited, "Home quits NumPlay from the update screen")
+
+    # 5. 40th opening with the flag already set: still set (not toggled)
+    c, r = run(a.nwa, [(NAME, make_save(FLAG | 39))], 6000)
+    s = parse(r[NAME])
+    check(s["flag"] and s["count"] == 40 and update_screen_shown(c), "40th opening with the flag: still blocked")
+
+    # 6. the website cleared the flag (and the checksum): NumPlay opens normally
+    c, r = run(a.nwa, [(NAME, make_save(26))], 6000)
+    s = parse(r[NAME])
+    check(not s["flag"] and s["count"] == 27 and not update_screen_shown(c) and not c.exited,
+          "flag cleared by the website: home screen again")
+
+    # 7. damaged files: never a crash, start again from zero
+    bad = bytearray(make_save(FLAG | 50))
+    bad[40] ^= 0x55
+    for what, content in [("bad checksum", bytes(bad)), ("too short", b"CLC2"), ("empty", b""),
+                          ("random", os.urandom(116)), ("another game", make_save(5).replace(b"numplay", b"voielib"))]:
+        c, r = run(a.nwa, [(NAME, content)], 5500)
+        s = parse(r[NAME])
+        check(not c.exited and s["count"] == 1 and not s["flag"], f"damaged numplay.sys ({what}): starts from zero")
+
+    # 8. OK skips the intro after half a second; Home during the intro quits
+    c, r = run(a.nwa, [], 1800, keys=[held(800, "ok")], shots=[(1700, "skip")], out=None)
+    check(not c.exited, "OK at 0.8 s skips the intro (NumPlay runs)")
+    c, r = run(a.nwa, [], 3000, keys=[held(1000, "home")])
+    check(c.exited, "Home during the intro quits")
+
+    # 9. a game started from the home screen is counted (place 0 of games.json: numdash)
+    c, r = run(a.nwa, [(NAME, make_save(3))], 9000, keys=[held(6000, "ok")])
+    s = parse(r[NAME])
+    check(s["total"] == 1 and s["last"] == b"numdash" and s["plays"][0] == 1 and s["last_index"] == 0,
+          f"game counted: total={s['total']} last={s['last']} plays[0]={s['plays'][0]}")
+
+    print("all good" if ok else "SOME CHECKS FAILED")
+    sys.exit(0 if ok else 1)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/tests/test_pack.py b/tests/test_pack.py
new file mode 100644
index 0000000..396ac73
--- /dev/null
+++ b/tests/test_pack.py
@@ -0,0 +1,215 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Vérifie le cœur NumPlay et ses modules, liés comme le site (pack/lier.py, même script de liaison),
+dans l'émulateur ARM (tools/emu.py) :
+
+1. le cœur seul : l'intro, puis « Aucun jeu dans NumPlay » ; Home ferme ; numplay.sys compte l'ouverture ;
+2. le rappel de mise à jour : la 20e ouverture lève le drapeau, l'écran reste, Home ferme ;
+3. le pack complet (tous les mini-jeux) : la RAM statique (.data + .bss) du pack, le carrousel jusqu'au bout ;
+   puis pour chaque jeu : il démarre, Back revient au carrousel, il se relance proprement, Home ferme ;
+4. un pack mélangé : 3 mini-jeux, le module de test « grand jeu » du kit (voietest) et un module à
+   RAM statique (tests/modules/essai_statique.c), dans un ordre quelconque : l'ordre du site est
+   gardé, chacun démarre, et la RAM statique de l'autre module ressort intacte d'un mini-jeu ;
+5. la RAM de travail : au moins 96 Ko pour un jeu Calcade, avec la RAM des calculatrices.
+
+Usage : test_pack.py dist/pack/NumPlay-coeur.nwa dist/pack/modules [--out DIR] [--jeux id,id]
+"""
+import argparse
+import json
+import os
+import struct
+import subprocess
+import sys
+
+ICI = os.path.dirname(os.path.abspath(__file__))
+sys.path.insert(0, ICI)
+from pack_emu import Session, link, emu  # noqa: E402
+from test_calcade import make_save, parse, update_screen_shown  # noqa: E402
+
+JEUX = [g["id"] for g in json.load(open(os.path.join(ICI, "..", "games", "games.json")))]
+# Back depuis l'écran titre de chaque jeu jusqu'au carrousel du cœur (pack/essai/sonde.py)
+RETOUR = json.load(open(os.path.join(ICI, "pack_retour.json")))
+INTRO = [(700, "ok")]       # OK passe l'intro après 0,5 s
+MENU = 1800                 # le carrousel est là
+
+
+def aller(i, t):
+    """les touches pour aller à la carte i depuis la première (Bas : 5 cartes d'un coup)"""
+    keys = []
+    for _ in range(i // 5):
+        keys.append((t, "down"))
+        t += 450
+    for _ in range(i % 5):
+        keys.append((t, "right"))
+        t += 450
+    return keys, t + 900
+
+
+def main():
+    ap = argparse.ArgumentParser()
+    ap.add_argument("coeur")
+    ap.add_argument("modules")
+    ap.add_argument("--out", default=None)
+    ap.add_argument("--jeux", default=",".join(JEUX))
+    ap.add_argument("--parties", default="1,2,3,4,5", help="les parties à faire (3 : le pack complet, jeu par jeu)")
+    a = ap.parse_args()
+    out = a.out
+    if out:
+        os.makedirs(out, exist_ok=True)
+    b = os.path.join(ICI, "..", "build-coeur", "tests")
+    os.makedirs(b, exist_ok=True)
+    ok = True
+
+    def check(cond, what):
+        nonlocal ok
+        print(("ok    " if cond else "FAIL  ") + what, flush=True)
+        ok &= bool(cond)
+
+    mod = lambda g: os.path.join(a.modules, f"np_{g}.cmod")  # noqa: E731
+    parties = set(a.parties.split(","))
+    tm = os.path.join(ICI, "modules")
+    ordre = [mod("chess"), os.path.join(tm, "voietest.cmod"), mod("tetris"), os.path.join(tm, "essaistat.cmod"),
+             mod("connectfour")]
+
+    # 1. le cœur seul
+    if "1" in parties:
+        elf = link(os.path.join(b, "seul.elf"), a.coeur, [])
+        s = Session(elf, shots=[(6200, "coeur-seul-aucun-jeu")], out=out).run(6400)
+        check(not s.c.exited and not s.menus, "cœur seul : pas de carrousel, l'écran « Aucun jeu » reste")
+        s2 = Session(elf, keys=[(6500, "home")]).run(7500)
+        check(s2.c.exited and not s2.menus, "cœur seul : Home ferme NumPlay")
+        sv = parse(s.files["numplay.sys"])
+        check(sv["count"] == 1 and not sv["flag"] and sv["ver"], f"cœur seul : numplay.sys compte l'ouverture ({sv['launches']:#x})")
+        check("numplay_saves.py" in s.files, "cœur seul : la copie des sauvegardes numplay_saves.py est faite")
+
+    # 2. la mise à jour obligatoire (avec un jeu dans le pack)
+    if "2" in parties:
+        elf = link(os.path.join(b, "maj.elf"), a.coeur, [mod("snake")])
+        keys = [(5000 + 300 * i, k) for i, k in enumerate(["ok", "back", "exe", "right", "left", "5", "back", "ok"])]
+        s = Session(elf, storage=[("numplay.sys", make_save(19))], keys=keys + [(9000, "home")],
+                    shots=[(8500, "mise-a-jour-obligatoire")], out=out).run(8600)
+        sv = parse(s.files["numplay.sys"]) if "numplay.sys" in s.files else None
+        shown = update_screen_shown(s.c)
+        s.run(10000)
+        sv = parse(s.files["numplay.sys"])
+        check(sv["count"] == 20 and sv["flag"] and shown and not s.menus, "20e ouverture : drapeau levé, écran de mise à jour, aucune touche n'en sort")
+        check(s.c.exited, "écran de mise à jour : Home ferme NumPlay")
+        s = Session(elf, storage=[("numplay.sys", make_save(26))]).run(6000)
+        check(s.menus and not update_screen_shown(s.c), "drapeau effacé par le site : le carrousel revient")
+
+    # 3. le pack complet : tous les mini-jeux (plus que la place d'une calculatrice : flash agrandie ici)
+    if "3" in parties:
+        jeux = [g for g in a.jeux.split(",") if g]
+        emu.EXT_FLASH_END = 0x90800000
+        elf = link(os.path.join(b, "complet.elf"), a.coeur, [mod(g) for g in JEUX], flash_length=0x600000)
+        size = subprocess.run(["arm-none-eabi-size", "-A", elf], capture_output=True, text=True).stdout
+        sec = {l.split()[0]: int(l.split()[1]) for l in size.splitlines()[2:] if len(l.split()) >= 2 and l.split()[1].isdigit()}
+        ram = sec.get(".data", 0) + sec.get(".bss", 0)
+        check(ram <= 48 * 1024, f"pack complet : RAM statique .data + .bss = {ram} octets (≤ 48 Ko)")
+        flash = sum(v for k, v in sec.items() if k in (".eadk_app_info", ".rodata.eadk_app_name", ".rodata.eadk_app_icon",
+                                                        ".text", ".rodata", ".data"))
+        print(f"      pack complet : {flash} octets de flash ({flash / 1024:.0f} Ko)")
+        keys, t = aller(len(JEUX), MENU)
+        s = Session(elf, keys=INTRO + keys, shots=[(t, "pack-complet-reglages"), (MENU + 400, "pack-complet-carrousel")],
+                    out=out).run(t + 200)
+        check(not s.c.exited and len(s.menus) == 1, f"pack complet : le carrousel va jusqu'aux réglages ({len(JEUX) + 1} cartes)")
+        for g in jeux:
+            i = JEUX.index(g)
+            keys, t = aller(i, MENU)
+            keys.append((t, "ok"))
+            t += 4500
+            shots = [(t - 200, f"jeu-{g}")]
+            for k in RETOUR[g]:
+                if k != "pause":   # (« pause » : une seconde de plus, le temps d'une animation du jeu)
+                    keys.append((t, k))
+                t += 700 if k != "pause" else 1000
+            t += 2000
+            keys.append((t, "ok"))           # le relancer
+            t += 4500
+            shots.append((t - 200, f"jeu-{g}-relance"))
+            keys.append((t, "home"))         # Home dans le jeu : NumPlay se ferme
+            s = Session(elf, keys=INTRO + keys, shots=shots, out=out).run(t + 2500)
+            ids = [x[1] for x in s.starts]
+            check(ids == [f"np_{g}"] * 2 and len(s.menus) == 2 and s.c.exited,
+                  f"{g} : démarre, Back revient au carrousel, se relance, Home ferme (lancements {len(ids)}, menus {len(s.menus)})")
+        emu.EXT_FLASH_END = 0x903F0000
+
+    # 4. un pack mélangé, dans un ordre quelconque
+    if "4" in parties:
+        attendu = ["np_chess", "voietest", "np_tetris", "essaistat", "np_connectfour"]
+        elf = link(os.path.join(b, "melange.elf"), a.coeur, ordre)
+        # essaistat, puis Puissance 4 (un mini-jeu np_ : il travaille par-dessus la RAM statique d'essaistat), puis
+        # essaistat encore : sa .data et sa .bss doivent être intactes et son compteur à 2 ; voietest : Back
+        keys = [(MENU, "right"), (MENU + 450, "right"), (MENU + 900, "right"), (MENU + 1800, "ok"),   # essaistat
+                (MENU + 4500, "right"), (MENU + 5400, "ok")]                                         # Puissance 4
+        t = MENU + 9500
+        for k in RETOUR["connectfour"]:
+            keys.append((t, k))
+            t += 700
+        t += 2000
+        keys += [(t, "left"), (t + 900, "ok")]                                                      # essaistat encore
+        t += 3500
+        keys += [(t, "left"), (t + 450, "left"), (t + 1400, "ok")]                                   # voietest
+        t += 3800
+        keys += [(t, "back")]
+        t += 1500
+        keys += [(t, "home")]
+        s = Session(elf, keys=INTRO + keys, shots=[(MENU + 400, "pack-melange-carrousel")], out=out,
+                    watch=["essai_compte", "essai_marque", "essai_lancements", "essai_taille_ram"]).run(t + 1500)
+        ids = [x[1] for x in s.starts]
+        check(ids == ["essaistat", "np_connectfour", "essaistat", "voietest"], f"pack mélangé : jeux lancés {ids}")
+        sym = s.c.symbols
+        vu = s.seen[4] if len(s.seen) > 4 else {}   # au retour du dernier jeu, avant que Home vide la RAM
+        rd = lambda n: vu.get(n, 0)  # noqa: E731
+        check(rd("essai_compte") == 2 and rd("essai_marque") == 0x5A17C0DE,
+              f"pack mélangé : RAM statique d'essaistat intacte après Puissance 4 (compteur {rd('essai_compte')})")
+        check(rd("essai_lancements") == 1, f"pack mélangé : ctx->lancements = {rd('essai_lancements')}")
+        check(rd("essai_taille_ram") >= 96 * 1024, f"pack mélangé : ctx->taille_ram = {rd('essai_taille_ram')} (≥ 96 Ko)")
+        check(len(s.menus) == 5 and s.c.exited, f"pack mélangé : retour au carrousel après chaque jeu, Home ferme ({len(s.menus)} menus)")
+        names = []
+        base = sym["__start_calcade_modules"]
+        for k in range((sym["__stop_calcade_modules"] - base) // 40):
+            p = struct.unpack("<I", bytes(s.c.uc.mem_read(base + 40 * k + 8, 4)))[0]
+            names.append(bytes(s.c.uc.mem_read(p, 20)).split(b"\0")[0].decode())
+        check(names == attendu, f"pack mélangé : les fiches dans l'ordre du site {names}")
+
+    # 4 bis. avec un vrai jeu Calcade (Voie Libre, s'il est là) : il démarre après un mini-jeu np_, Home ferme
+    if "4" in parties:
+        vl = os.path.join(tm, "VoieLibre.cmod")
+        if os.path.exists(vl):
+            elf = link(os.path.join(b, "voielibre.elf"), a.coeur, [mod("snake"), vl])
+            keys = [(MENU, "ok")]
+            t = MENU + 4500
+            for k in RETOUR["snake"]:
+                keys.append((t, k))
+                t += 700
+            t += 2000
+            keys += [(t, "right"), (t + 900, "ok")]
+            t += 6000
+            keys += [(t, "home")]
+            s = Session(elf, keys=INTRO + keys, shots=[(t - 300, "voie-libre-apres-snake")], out=out).run(t + 1500)
+            ids = [x[1] for x in s.starts]
+            check(ids == ["np_snake", "voielibre"] and s.c.exited and len(s.menus) == 2,
+                  f"Voie Libre (.cmod du site) : démarre après Snake, Home ferme ({ids})")
+
+    # 5. la RAM de travail des jeux Calcade, selon la RAM que donne la calculatrice
+    if "5" in parties:
+        for ram_len in (153676, 148928, 0x28000):
+            emu.configure("n0120", "epsilon", ram_len)
+            elf = link(os.path.join(b, "ram.elf"), a.coeur, ordre, ram_length=ram_len)
+            s = Session(elf, keys=INTRO + [(MENU, "right"), (MENU + 450, "right"), (MENU + 900, "right"), (MENU + 1800, "ok")],
+                        watch=["essai_taille_ram"]).run(MENU + 3500)
+            v = s.seen[1]["essai_taille_ram"] if len(s.seen) > 1 else 0
+            check(v >= 96 * 1024, f"RAM {ram_len} : ctx->ram d'un jeu Calcade = {v} octets")
+        emu.configure("n0120", "epsilon", None)
+
+    print("all good" if ok else "SOME CHECKS FAILED")
+    sys.exit(0 if ok else 1)
+
+
+def rd2(s, n):
+    return struct.unpack("<I", bytes(s.c.uc.mem_read(s.c.symbols[n], 4)))[0]
+
+
+if __name__ == "__main__":
+    main()
diff --git a/tests/test_small_ram.py b/tests/test_small_ram.py
index 40cebea..b1d71ac 100644
--- a/tests/test_small_ram.py
+++ b/tests/test_small_ram.py
@@ -3,10 +3,14 @@
 with less, and its games use the RAM after it up to the end of what there is (tools/gen_games.py):
 
 1. custom builds of Epsilon 25.2 give apps 133652 bytes: NumBlocks, the hungriest game, starts there;
-2. with 120000 bytes, NumBlocks doesn't fit: OK on its card doesn't start it (the card says how much it lacks),
-   while NumDash, which fits, starts and makes no access outside the app's RAM.
+2. with 105000 bytes, NumBlocks doesn't fit: OK on its card doesn't start it (the card says how much it lacks),
+   while NumDash, which fits in 120000 bytes, starts and makes no access outside the app's RAM.
 
 Usage: test_small_ram.py build/NumPlay.nwa [--out DIR]
+
+(Calcade, 20 octobre 2026 : les touches tiennent compte de l'intro Calcade ; NumBlocks refait demande moins de RAM,
+d'où 105000 octets au lieu de 120000 ; et la surveillance des lectures du stockage est coupée, car avec elle
+l'émulateur exécute mal ef_write du lanceur, sans rapport avec la RAM.)
 """
 import argparse
 import os
@@ -30,7 +34,7 @@ def run(nwa, out, ram, name, keys, shots, ms):
     st = os.path.join(out, f"{name}.bin")
     write_storage(st, [("pi.py", b"\x01print(3.14159)\n\x00")])
     c = emu.Calculator(nwa, storage_file=st)
-    c.enable_checks(reads=True)
+    c.enable_checks(reads=False)
     c.keys = presses(*keys)
     paths = [os.path.join(out, f"{name}_{t}.png") for t in shots]
     c.pending_shots = list(zip(shots, paths))
@@ -46,17 +50,17 @@ def main():
     os.makedirs(a.out, exist_ok=True)
     problems = []
     # NumBlocks, third on the home screen: Right twice, then OK
-    blocks = ((2500, "right"), (2800, "right"), (4000, "ok"))
-    c, (before, after) = run(a.nwa, a.out, 133652, "numblocks_133652", blocks, (3900, 6800), 7000)
+    blocks = ((800, "ok"), (6000, "right"), (6400, "right"), (7600, "ok"))
+    c, (before, after) = run(a.nwa, a.out, 133652, "numblocks_133652", blocks, (7500, 10400), 10600)
     problems += sorted(set(c.violations))
     if changed(before, after) < 0.3:
         problems.append("NumBlocks didn't start with 133652 bytes of RAM")
-    c, (before, after) = run(a.nwa, a.out, 120000, "numblocks_120000", blocks, (3900, 6800), 7000)
+    c, (before, after) = run(a.nwa, a.out, 105000, "numblocks_105000", blocks, (7500, 10400), 10600)
     problems += sorted(set(c.violations))
     if changed(before, after) > 0.02:
-        problems.append("NumBlocks started with 120000 bytes of RAM, too little")
+        problems.append("NumBlocks started with 105000 bytes of RAM, too little")
     # NumDash, the first: OK
-    c, (home, game) = run(a.nwa, a.out, 120000, "numdash_120000", ((2600, "ok"), (6000, "ok")), (2500, 8800), 9000)
+    c, (home, game) = run(a.nwa, a.out, 120000, "numdash_120000", ((800, "ok"), (6200, "ok"), (9600, "ok")), (6100, 12400), 12600)
     problems += sorted(set(c.violations))
     if changed(home, game) < 0.3:
         problems.append("NumDash didn't start with 120000 bytes of RAM")
diff --git a/tools/calcade/OFL-1.1-Archivo-Caveat.txt b/tools/calcade/OFL-1.1-Archivo-Caveat.txt
new file mode 100644
index 0000000..692faab
--- /dev/null
+++ b/tools/calcade/OFL-1.1-Archivo-Caveat.txt
@@ -0,0 +1,96 @@
+Copyright 2020 The Archivo Project Authors (https://github.com/Omnibus-Type/Archivo)
+Copyright 2014 The Caveat Project Authors (https://github.com/googlefonts/caveat)
+
+Archivo (Expanded Black) et Caveat, utilisées par tools/calcade_art.py pour dessiner l'intro Calcade.
+
+This Font Software is licensed under the SIL Open Font License, Version 1.1.
+This license is copied below, and is also available with a FAQ at:
+http://scripts.sil.org/OFL
+
+
+-----------------------------------------------------------
+SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
+-----------------------------------------------------------
+
+PREAMBLE
+The goals of the Open Font License (OFL) are to stimulate worldwide
+development of collaborative font projects, to support the font creation
+efforts of academic and linguistic communities, and to provide a free and
+open framework in which fonts may be shared and improved in partnership
+with others.
+
+The OFL allows the licensed fonts to be used, studied, modified and
+redistributed freely as long as they are not sold by themselves. The
+fonts, including any derivative works, can be bundled, embedded, 
+redistributed and/or sold with any software provided that any reserved
+names are not used by derivative works. The fonts and derivatives,
+however, cannot be released under any other type of license. The
+requirement for fonts to remain under this license does not apply
+to any document created using the fonts or their derivatives.
+
+DEFINITIONS
+"Font Software" refers to the set of files released by the Copyright
+Holder(s) under this license and clearly marked as such. This may
+include source files, build scripts and documentation.
+
+"Reserved Font Name" refers to any names specified as such after the
+copyright statement(s).
+
+"Original Version" refers to the collection of Font Software components as
+distributed by the Copyright Holder(s).
+
+"Modified Version" refers to any derivative made by adding to, deleting,
+or substituting -- in part or in whole -- any of the components of the
+Original Version, by changing formats or by porting the Font Software to a
+new environment.
+
+"Author" refers to any designer, engineer, programmer, technical
+writer or other person who contributed to the Font Software.
+
+PERMISSION & CONDITIONS
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of the Font Software, to use, study, copy, merge, embed, modify,
+redistribute, and sell modified and unmodified copies of the Font
+Software, subject to the following conditions:
+
+1) Neither the Font Software nor any of its individual components,
+in Original or Modified Versions, may be sold by itself.
+
+2) Original or Modified Versions of the Font Software may be bundled,
+redistributed and/or sold with any software, provided that each copy
+contains the above copyright notice and this license. These can be
+included either as stand-alone text files, human-readable headers or
+in the appropriate machine-readable metadata fields within text or
+binary files as long as those fields can be easily viewed by the user.
+
+3) No Modified Version of the Font Software may use the Reserved Font
+Name(s) unless explicit written permission is granted by the corresponding
+Copyright Holder. This restriction only applies to the primary font name as
+presented to the users.
+
+4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
+Software shall not be used to promote, endorse or advertise any
+Modified Version, except to acknowledge the contribution(s) of the
+Copyright Holder(s) and the Author(s) or with their explicit written
+permission.
+
+5) The Font Software, modified or unmodified, in part or in whole,
+must be distributed entirely under this license, and must not be
+distributed under any other license. The requirement for fonts to
+remain under this license does not apply to any document created
+using the Font Software.
+
+TERMINATION
+This license becomes null and void if any of the above conditions are
+not met.
+
+DISCLAIMER
+THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
+OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
+COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
+DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
+OTHER DEALINGS IN THE FONT SOFTWARE.
diff --git a/tools/calcade/archivo-black-exp.ttf b/tools/calcade/archivo-black-exp.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..b86ac17e80380edbf0c9e15ff7cce71c7d4259fb
GIT binary patch
literal 40776
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
F{{w9qNDTl0

literal 0
HcmV?d00001

diff --git a/tools/calcade/calcade-logo.svg b/tools/calcade/calcade-logo.svg
new file mode 100644
index 0000000..40e8134
--- /dev/null
+++ b/tools/calcade/calcade-logo.svg
@@ -0,0 +1,14 @@
+<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 64 64" width="64" height="64" xmlns:c2pa="http://c2pa.org/manifest"><metadata><c2pa:manifest>AAAWgmp1bWIAAAAeanVtZGMycGEAEQAQgAAAqgA4m3EDYzJwYQAAABZcanVtYgAAAEdqdW1kYzJtYQARABCAAACqADibcQN1cm46YzJwYTplOTMyZjFmOS0zODlkLTQ4YWItODljNC0yYzhkOTk2OGRmOTQAAAADl2p1bWIAAAApanVtZGMyYXMAEQAQgAAAqgA4m3EDYzJwYS5hc3NlcnRpb25zAAAAALxqdW1iAAAARGp1bWRjYm9yABEAEIAAAKoAOJtxE2MycGEuaW5ncmVkaWVudC52MwAAAAAYYzJzaIIUBQMz/EW1FIewHaJgnEMAAABwY2JvcqNpZGM6Zm9ybWF0bWltYWdlL3N2Zyt4bWxqaW5zdGFuY2VJRHgseG1wOmlpZDoxMGY3MDY0YS0yZmI5LTRmYWUtOTRlMi1jNGU3NWUxOTdjM2NscmVsYXRpb25zaGlwaHBhcmVudE9mAAAB4mp1bWIAAABBanVtZGNib3IAEQAQgAAAqgA4m3ETYzJwYS5hY3Rpb25zLnYyAAAAABhjMnNoBgLxcq1M3tfpC5WW/tO5qwAAAZljYm9yomdhY3Rpb25zgqJmYWN0aW9ua2MycGEub3BlbmVkanBhcmFtZXRlcnOha2luZ3JlZGllbnRzgaJjdXJseC1zZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmluZ3JlZGllbnQudjNkaGFzaFgg9P6Gb3OmJmJ1XrlKsDxdOzA6AGmPr53KNmSj+yIrvwekZmFjdGlvbngdY29tLmFudGhyb3BpYy5jbGF1ZGUucHJvdmlkZWRqcGFyYW1ldGVyc6F4H2NvbS5hbnRocm9waWMub3JpZ2luLWNvbmZpZGVuY2VndW5rbm93bmtkZXNjcmlwdGlvbnhmQ2xhdWRlIHByb3ZpZGVkIHRoaXMgZmlsZSBhdCB0aGUgcmVxdWVzdCBvZiBhIHVzZXIgYW5kIG1heSBoYXZlIGNyZWF0ZWQgb3IgbW9kaWZpZWQgdGhlIGZpbGUgY29udGVudHMubXNvZnR3YXJlQWdlbnShZG5hbWVmQ2xhdWRlcmFsbEFjdGlvbnNJbmNsdWRlZPUAAADIanVtYgAAAEBqdW1kY2JvcgARABCAAACqADibcRNjMnBhLmhhc2guZGF0YQAAAAAYYzJzaC2Qx+xUD1Rxrq8QvxqffIYAAACAY2JvcqVjYWxnZnNoYTI1NmNwYWRNAAAAAAAAAAAAAAAAAGRoYXNoWCCxh5cdeRZG8LY2xGLxUBbCoReGMjbDA2y3/LccgyfQhmRuYW1lbmp1bWJmIG1hbmlmZXN0amV4Y2x1c2lvbnOBomVzdGFydBiSZmxlbmd0aBkeBAAAAj5qdW1iAAAAJ2p1bWRjMmNsABEAEIAAAKoAOJtxA2MycGEuY2xhaW0udjIAAAACD2Nib3KlY2FsZ2ZzaGEyNTZpc2lnbmF0dXJleE1zZWxmI2p1bWJmPS9jMnBhL3VybjpjMnBhOmU5MzJmMWY5LTM4OWQtNDhhYi04OWM0LTJjOGQ5OTY4ZGY5NC9jMnBhLnNpZ25hdHVyZWppbnN0YW5jZUlEeCx4bXA6aWlkOjYxOWI4ZjJlLTljZWEtNGM5YS04OWU4LWVmZWEyZmQ5ZGExYnJjcmVhdGVkX2Fzc2VydGlvbnODomN1cmx4LXNlbGYjanVtYmY9YzJwYS5hc3NlcnRpb25zL2MycGEuaW5ncmVkaWVudC52M2RoYXNoWCD0/oZvc6YmYnVeuUqwPF07MDoAaY+vnco2ZKP7Iiu/B6JjdXJseCpzZWxmI2p1bWJmPWMycGEuYXNzZXJ0aW9ucy9jMnBhLmFjdGlvbnMudjJkaGFzaFggObRI8VEWcfivxwMiKKbYw3i1rOVp+JLyAwxOPrNvummiY3VybHgpc2VsZiNqdW1iZj1jMnBhLmFzc2VydGlvbnMvYzJwYS5oYXNoLmRhdGFkaGFzaFggdYIS1QqcM66UUvQNJHD3Rw6RR+aCRq2noza2aCGHkHt0Y2xhaW1fZ2VuZXJhdG9yX2luZm+jZG5hbWVvQW50aHJvcGljIEZpbGVzZ3ZlcnNpb25lMS4wLjBrc3BlY1ZlcnNpb25lMi40LjAAABA4anVtYgAAAChqdW1kYzJjcwARABCAAACqADibcQNjMnBhLnNpZ25hdHVyZQAAABAIY2JvctKEWQISogEmGCFZAgowggIGMIIBjaADAgECAhRA5aAK7sI50L64g/oGQgU9Z1UTADAKBggqhkjOPQQDAzBJMRcwFQYDVQQKEw5BbnRocm9waWMsIFBCQzEuMCwGA1UEAxMlQW50aHJvcGljIENvbnRlbnQgQ3JlZGVudGlhbHMgUm9vdCBDQTAeFw0yNjA4MDcxODQzNTZaFw0yODA4MDYxOTQzNTZaMEQxFzAVBgNVBAoTDkFudGhyb3BpYywgUEJDMSkwJwYDVQQDEyBBbnRocm9waWMgQ2xhdWRlIENvbnRlbnQgU2lnbmluZzBZMBMGByqGSM49AgEGCCqGSM49AwEHA0IABJh6CmvLUBgFFNU0vUKlOVtE6djd17L5SuwX0LemFisBM3dkd/3cyjxFA3Qo5S46fX0/ihY0VZ7mfb9KF703t5OjWDBWMA4GA1UdDwEB/wQEAwIHgDAVBgNVHSUEDjAMBgorBgEEAYPoXgIBMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUzlHiBIFOZFsj+OPEz5o+nMHXXMIwCgYIKoZIzj0EAwMDZwAwZAIwMXMdFJ4BetLLVY7ORuE9noqbbAZOZn/aArXyTwFAZfKrPzxF2vPoJNf1+UCdg1XGAjBwX1zd9WGqYkqmL5SFqw1QySjr1zJfpJM9+1rdDwSPLMOPOjKuiXjoU/pUUeG9RwmhY3BhZFkNngAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPZYQJAP7pAkDsqxdub11QXrXo/EXFge4uHyAcSqhi+szI6i2UFsagcpf/4MwwS/qFREjurrdytG9owIPKSfnQ5DGb0=</c2pa:manifest></metadata>
+  <title>Calcade</title>
+  <g transform="rotate(-8 32 32)">
+    <rect x="13" y="4" width="38" height="56" rx="9" fill="#1D3FBF"/>
+    <rect x="17.5" y="8.5" width="29" height="22" rx="3.5" fill="#FFE14D"/>
+    <path fill="#1D3FBF" d="M26 13.5h2v1h2v1h2v1h2v1h2v1h2v2h-2v1h-2v1h-2v1h-2v1h-2v1h-2z"/>
+    <path d="M22.5 37.5h4v-4h4v4h4v4h-4v4h-4v-4h-4z" fill="#F7F9FC"/>
+    <circle cx="41" cy="36.5" r="2.6" fill="#E2453C"/>
+    <circle cx="41" cy="44" r="2.6" fill="#F7F9FC"/>
+    <rect x="20" y="51" width="7" height="3.2" rx="1.6" fill="#F7F9FC" opacity=".55"/>
+    <rect x="29" y="51" width="7" height="3.2" rx="1.6" fill="#F7F9FC" opacity=".55"/>
+    <rect x="38" y="51" width="7" height="3.2" rx="1.6" fill="#F7F9FC" opacity=".55"/>
+  </g>
+</svg>
diff --git a/tools/calcade/caveat.ttf b/tools/calcade/caveat.ttf
new file mode 100644
index 0000000000000000000000000000000000000000..2617f595cc4ba29a188ef92d908101d67c6ed976
GIT binary patch
literal 113016
zcmb@u2bd&TbtW43hW9=qBhq_YRheZntGcSIx~jeJ>G9q>#xer~3<$(v1`RU|0|*2R
z0^w!`frRh_0>L05gp-7{tPDb+ec!^9v`@&eNGs@i|Bb9}Mq2HA`@QdVM`UG2MrLH3
zd+ss+`OoDD$8ioG1dcnnZ~p=Pgi+zhZ3>RQ>)@%A=l|+~;z#iMNsin6$-(n4+#)|T
zpW(=d-pg_Nr%s+fH-E#2|Ne50Bd@{v*PMUB<^?aj`<90}^7IvWUAX>^YwxZ;aBY?2
z<Xbq7K78}F_ukE}hVR24PPzH^7v1!}@7)@6obh>%T=0`yZoKw}_D4T}?;-}?AK!ul
zvdMiIulM0~<CZ&~_rmex5AVk7A8?%b(%bL4{@TB|?-h8i{siCu%pKRh@NRM^`8&Li
z>v5Gkuf5~O{+;Lj14pj?O}t;Z`>uPR_lZCGZJi_6e;dE4e)l~$-hGSo@T>6of5Q1P
z$7De{?(2L1{MW9w*M6k%JieRbzIEx^Kd`_5^`Cp;_QPks!+(zdJYGud-0UAd$AA9J
zALFsI{qRq(;6Imr)6Sdh54oBhA=i+LaFw?}*6d0@`$zFwARnTaa3X%dL-@;aN2h<u
zRop!H!=IhXaX-&-H{<n@v&Z&cdU`+id5)`vJHO!@WEJndg}qN+Pp`wD3dhsSx4%Gs
z!u832=Q{tZop-n~)wrYN&$-*kUvan4L)<Fe!X9wPX@fiR?45jrJ4XJNyN&L`-#2pu
z@_MeD?Ps4aZ-0aQ3*P$xcNN>|x3~tqfjdFR`2PQn@Bblp%fH(%WUuiXZX$og9VdT+
z^Zt%|4lQNZc{%wC_dfil7yM8AUvs}n|A2cnHMk-9XYP;Lj(Zs5UYDqZ&;EeB6Zdfs
z?Qsv|J0HaR_v1I8#BZ*X<?Y`k|HSRV@4Fqp?>JrK&ckneKF+&?{55{}KX4b}9{1wf
zZ^d;Vz_Cx@T5ra+Zo>EcDXw!G*V%>ZoWyl5!F7(|I*;M=m*V{sJF@X`osZ%=CvlxS
zaGecY=Xto!MeH7Fp1T6qIgIPP64!Y<uJa09=WDpmGq_G^=YA^WGmy#0xg-D4PS?2u
z<Y~y}R_<DIJ-1FC<t`ytau<`M+%;rBcjdp?yZDY<xef9y?sD!6*gwNv`akX8+<uDO
z3k~~q?lkwW+)0et#pKJ7$1~jJ<Yw+NaxGr}+kKwBrbX@qxu1)%m&l87{w>%q=dLEN
z<BIq#w~~7xw|~DMg`SDrJ>+6;LN46?{JDLV%aOO>dQao?H{x@TLLZLe+Fjhwt+>ap
zaX*LOe+T!??T7JOFTroU68d!$e&@sZjo08ebnqLl#c#L|zu^QvdpoXu1OEOzu6HM{
zw}5N?Gv>-^@-B?m(>U+NIOow!ZU=Fl%W<9ExXz8Z&M92y30&uVT;~|%@myTzHeBZx
zTt~unj^R2t;yTaWxy}pl_l3C5L%7Z&xe)KI;`jd(cLjYN=E5&y%)g2;`x>{09)SK`
z#l3^%xsO4<ufqNW_UB=LJ@)sKPeL#LfO{$VE$$O|{ao^C?sv!@?mO5&iv8={7q*|~
zE8IJF_M3M8KJ=`=FTwNAz~p|C9O2%Dv3?cyhqy0sC$JajY3?ZZO>Q0c_dn<y{(cGf
zavx-PAE$Buje9rueC{1MR>o&@<a3xaNAMeuKwpn=v*gJ3*YNjY>>*@wCEmZ19LV<T
z$hBmJzM8v_{x<g%j^Bs<*NDy;*x!r&L-=0y-5<j)bIiK#?6}7!_K#y{G8kgdVLzCC
zH~aq2aj)BXehvOUi2bhY^&fIC#NX>N#wFO#Ynfc=E4cIMBDY4K<bIL7oO?0s%bVCv
z-vrs^A;%-o&m$O%&v7s0?%^IK3il{}$@j2t!*((Y`)Tao!E;zsj21_}j{WUBufK@D
zcjG>fK=+H-zlr^O*tfBN2gl3!%RbL>=Vgx+k39AOkIeoDoIqcQziY710$0E@lbhpK
zxR>G^C>fFS>2K06(LbZ#<_RzG3SX}Tm9$c-)GDpYLS<KFU*&_<TFtA4+xWHFrz_l$
z+r_;r`}FB^pXPWz`?O!lRSMas=PN7E{xrFYu&Y1KzGRzhU&wK1t~v9DGY_13`I)0<
zj-1&#vj(BSBY*dM-~I0QqVN9K?|$UFFa2)yFUx<~-tlA0_}~Q`d@3aJX7>2(e=Ii0
z;)7=&%$}1rk%>uEGDB9$I<ZJZV#1Lj5lKok;t+w@WK0&x64A+STubA0$jFA|LN4NB
z$gIefAiXMA=la|XHw*a<xe+(!CfqV4xk>^;NJtJ6mt4l(jZuCP_hQ(M2e?;ouf#lf
zE%z|@2*&*N+#9&JagRgOe;G66SGf0cPjF9iPjMe49@$TPvO+pUA$>AS24s#LAbZHA
zWRv?oDUxN9CtKulvX4x-f8u^bE+V_g2IPM+_mA8UNQwI&+>g0`MKr@=1%XrG-(^na
z49-Us<Z>RD=W<-arJTjpxHi||np~G_k$JAeEy3?EaElnv0ryVsdE9fMq4#n3V!ph9
zyPtbGwB%(71s>ua<X*%50{0T`G49RW8@V@ezXV-hfcJkN=GS|;_i`WL-p>6h*MkR3
zNRHG<om4+XwqNyO;Sn|lGl(3%%6$tu|F_(a@w-jhq~GPQ<L?l*#NFce#eWcgDk+jL
zeO*4Fn94hq4=5j3KCgULy-e$9U(|kIf5KQd4jZ2_zGVEN@onS#<}>Ekt-r8e>#RC|
z<lf*J-sAqjpZHt;asLwk2f>r!z2OhTe~n%e&&7X}yEk!?Po?k9m-F8*yrftvexr10
z`Ba6gJYBuAR<HeY{XLC?jsMhqf9tyTu>GUX+q#$Z_V>Qhe`wGee0}Dnvs-iK-0O!o
z48Jq4&3|p-eT%1-+T;58OOs>E>hhf{2Uq^jUDvD{t1n)C_3C4*kFP$l`jOSouDyJB
zarbL?zj<9*f8U0-5pGmA`Wxeozuj}srnGt0=36)4yZP&zpWghPt%a>;_SW~#?)}=n
z6Z<aR_mO>{-S_2vf3)vA`)}R<yaRIwzI5=;gMWT#>ChJsfBwjkBOgEV`6FLF@~tD^
zJ34#xQ^#hGeeBq89sA1ht>d3Ov325iP98q_`=^ea`r&!^pZ8m*_n-d9^G{#Uzu;Fd
z%w70}i>|)t>5B^&KX&m?E;)TEx%7d{(#w9~a{Kb9uCT9o^vdAMk6v~CReyPP<LY-@
zbJsQh?b_#E`zO~eT=yH-@4NopH`H$U>W$uwFTSaA)0=NjZod7Ndv5*R+xFkS?~c3g
ze8HXn*IifK^)Gi{clY*lUvZCd&!hJqy!RiT_u1#KJ^$<X-FM%a7u@wC`Tn1KiTiW!
zdRg!1|M`JuUisjw?|d+P@WBV4dhp8+{^&Km*WCJ=Z~wxnho1k?>t36C?Ym#Q{qX4F
z`yc-PBjF?Of8EyWzW3+{U!T7Ik=K9r^?&nN@YwFhZhP#^8y<bbx8K-#<HK+K`!`+m
zrib73%$t5Z{r`)9{N`VJ%WHq>v9}(0Tky8$yzQ6X_D^rW^6ejd`@cMX;PEd${?m6H
ze#d|Q<sZEB(s!NzEAg-V;N7oz&;9Rx)BFDP{l)jc`u+dqiOLffJaNqvw>)w86EA$?
z=bw1Z6TkPw-#%$Sx$)$kPrmKRKYQ}0PmQ0t>8bZU^?OhK;|B^KxB~xQ3Jn&wzkrDR
zQAFfCW*M7XHtbE6RGU5_zDjvg<;iQPd}igR|3W@toq2|AS!bT2e|Y8-7CCk14=n!k
z|5{onUq7=zSIB?*$qD|~&(zNJ1nbNqW^8}^_vny*nA?vSfQwtL@noGY;c?8Ku*dOu
zVLpoDNRniW$DdGYwc6~wiCnX&T$5x8$D~n!6J&pg)7NPnMWc0LGH#7(I4VhXi{In%
zrAp2hsiKNyP0h6`!BSq2RKH!3L@Eiqp-ViWQlp03p+q#*;qsiSCb|&Hil4WVFGnS#
zSo0)7CZeK<1n1UgLd_Ma7noHox3)2}5b>%mh^ZG2_Kxf4H!LSC+sfjRUia?%pW9O%
zQ6h%QOO3(fM37}Z=UZh_w4}L}ut9DXL|G!dNNIc5#>Do^gM(c^p@n*ZgYW4;O1JX2
z(iTU4imZs7C!Ia|2L6h3N6#0}9(@jf`MIN~zjOBJTluTb9X%<WJ$i`0_uSD_=f2@)
z{)Tf$FF1GfN&ez<M=umuCO6*xeg0SJqp*O_Kv8O~_G~t4b*a^c;HO(1hqECat@D#H
zo{r=3c!@pF#`)|cMh(Yta6X=o@Io3{w2lF+W5ZB~0sFdmoi2>CcV$bcx1bbMmhd|J
zrup&0R9$48Yf&=9h34bw_Ybo(rq5d~xy3%mPNFlNg)|6=%xi)X9G-WjSl6mv7>K&5
zctRqne3-^!<jFMf6oXhnsMv-iCAyPnQfNjM+nO)r_C!)|5=W`&P=!YQy4$VEMwzFM
zZ@IcAs7|kE$92h2Bu(nC?w(Z?&C)GJ67@<j?t2wk3<Xh>sppc7`J_@k^W$2<uN(L>
zULcYnNmMX|s34o=fR73}Q7E~EL>TFTJ-1p3n>rQvP_BjkQdD+DS!)$#OR9G&H1zm5
zpn|{)xpF}*_^McQtctGZtWe>prfN131ZqlVpix{%5@=E@@><?86M>fmfe6(11krL#
zMGa?@db8~JZGq~#E6AdpOL?sn=mt*?ikLOBAqgS1HQg4(K=00Z5~aLfEGgn3*X{*O
zUyg47Dm_f!!(GjiY|QsbHkgxaT%aW_j0k2chK9XhhuJ(Hw-;NJMX1gEcxiqN)nKD;
z(a|u%^UO5t7=Ub0Tg(dJLsJ8SuaWR|Q|*D3!1J&5gS=ExgK@LBPzW8OB`4S9LPTUm
zkD{;;T8gEKk|-8CgRW&sn6{OcDq4KS-+P*nLN79lp`*@DbU`*`S#cswt9JatzO~tU
zR}+2Bs@L^cFx5uKH7#8vT55Ur-ok<_=&Gk`X0Mi?%<1*KLtuJnxVC%ug6LZnPqlsf
z=#95uQ!N*Ws0xB*P&PQy=9arW3G~>Ocz1Eu9`tS5rumAY<P+IYW%4dr6?jcE+x@6f
zHFb@Mf{rVRvLVd1`h7%ow{8C>Jw%`85O>D2lu35+tbNU<A%w_8m&rUcyX{P9kQKI3
z#2#_VRH~R^<7g^QjKQDV&8nu!#C9k~U8(xTc4JVB_N>}E4QioTw^SlXK_DoSD%ftk
zx7-<9R3(b23$|_c#-&_GQxetEnmHx4!u5>}2~l)$xw&|}!xw9+yOQrOHEXdW6>8!7
z{@uP|nyy6TTHENARDr76p5D^wz7PpzefF}wwkk!YmQy8D^c<^YDYod89A@ioIrA@c
zKV;D2^vs4{eEd_8%<A@A=)35b5Y=&UcK;9#lm~YkP4#DVR*{yNU|KM6JRA}398L#f
zX%8hBn-)GbVUpZ&T9Y;oNjSOHg3V(}TB6u+evD5+)HNv%@CsXfSPL_S$KgNmXUmRh
z>yly1zV6TDtWHy3TBf=p<#Rk0lzc(5v`$5Db<3F0)s`z-x*jO1B2Ydo7(7)(H}D17
zR9uG_9Y@v;lS+Y2DIulNN|J8nD~H!KULqn?ix?t}QcaKrU2vhM$bg!&bAc9VVt;fK
zFDRnr+x3JHT`>cm7c`~O6GUE4Q>yBcvape^U2!n4hMq>q+7-{4^Lu5{-Q2A8h{;RT
zu=PgK-?hGEx^wAbS2EXHRZ)O*)m=$2B}0eq`<k(OYG4eylAu$*ZKZowT%KU6#R7EN
zXtb(|tcrrla6>jy@1VZ}bRZikrp99?+5eY;TF5L!8?vs|;7N8y?b%~Co-hY>)<;do
zi~rFeQuaOn!633B{CA`H-Egs^`4)_(X~vS@h=NW{UD}n6VsdsA&3?sfH48i+7Hh7W
zM!Koz<f=_&UN-eG8_`@r;x$?DLQg=7rSg_)+oF=IX`w=h;=snb7+}>BBs>==>F;gT
z59DiyR$#o&jxT%{8($R?pAK+iXMmgi8wFk$g49efz`mmC2xwHqCKzBTKONx3jdbr7
zd-Gag<AU?2uAZfeVize4ebn9=XgCZ}(o1Qydvk0esU*Cv*rotif-N`Smd)L*ipU}=
z#gt@QfmH}KW7n~cKRP$&>l2K*q$#}jZw6hF5oB`5x4%Olrf)-T#=HgQ6AK@*0cwq4
z!{8d&Yq*ABYMo%DMq?;NHp?=1fYFJE5dwqkQ+O*oI%%<J60ahB7~6ux9`QOG&c7|M
zq^>Ut3Os(ZsmlaDUl3`~jB_(WTsFjJVwNH~r^wZAsoAL~)x?$~y-*QSK`W~38%513
zO0qd~!RF*3m0jGnpj2u>E4R8NDx%2in%5~1DV(b=y`)Clp4+bYYwKQNbJat9*>#*i
zg2Og_Ugvq4N-~dlle(T4i-;2yQ4M0T7q$oRQUb*^Cwl0(fgN~`6bQNAu&2jmjR=|+
z34$cT$?HVaI<tNuW|r^>Wcm<)D=eWsjV7}glO27Mzx>?M)8~%<I)Bx<qbJj!eZ#%y
zj-JZ1u{yT>SM>GtmykDeh$LXoTCk3xC1i7sja_CU$CE4;#Pg+0^7ZKyYE55FrUBbJ
zjpQg|LlTdp2^%MA)WT!til)v9u{|@y(R_9m-l3w{8knQySyh#TTxhBov7+MZGH?5#
zrb~!WWYN}m)6fuB2^ig+p$nQreH$a>r;;cWK8zhg<WkL>IBs4HeFQ|9KQc3*UZa0(
z5|xEO6@t*A*4mMZU6C{xzj;x^mt$gRiZNVS>0y%cI#IP^WG<|)`hMBeF=%0=)tf01
zV%hT8BqBsoogzVi2kR{hmPJg9$ME8(@$mb+h|3B*@7TPG`N1nh&8PD0QkT7tppYgh
zWPaQBZ_!KWuW=`{`N2ecHf@5iu)$GF*{osG+6j3PFh}gPb@(9+%Oa%AY#S!Z^pyAH
zi-g3!S*lp&EjM?xnT~ADh>NP3SbDSPDrrH>cWucwsHirY$<l)F<%riA8oFceS`Pxi
zN=iAgmzLwsMP2`3W&MF&jidXb#ZAqy6**_?fnlba9{7?BPnXucxvQ6h_4T;D=;>m4
zu2kLCKn5mN3`kzr+B0E!Pc58lX`Yp7*^~5p^lLz3xOmuV)w3{>DGwsW;o?#j=VveJ
zXmOEwZ{!+d$Rfu5g~M!mhl}I+@pyw~Z|<a*?C!IyfrU2EtAM$Rkhyt?Xc~#~6MSK-
zg%jaQYPFFi;KavlPjV~)|1em#@7X{C1xc`F$<~E(9zk3ZiCV*rG*i-p-k!Zn+G0sb
zHK%0o2$~GyIH3Y9Gc-I{UZ5Zi5p~&*bzjy+TaheFqqMWSx2QK2-6n?Zz?dLNxI`3%
zyd$KFB0KKx1A7M0A>YtbL2Ua@BSqwXc$ZQVOgYq@Lxou(-}cH~fhjT-uPU4>%vKab
z(hG5ZBQOxrrz!4PkcOMP136TTh8QpRc)=0$Qmky0?crRF3KDW-;H34@LQnC=D?N<H
zVEb$I2Kri{!OT9(h<PCIOtJ`vGF5D|G@S|Y*{V68g;-LX4Tp>eX0KV)&mOZ8gzif1
zEa`h%Zr81%3%IsF3tuJ+j%QK9GHL1vLb*}k#T@*LDEG#(ThmlmRoc;VUlw&&ZKnHR
zF9pOeg5$Eeh3w5XlxjNHQ2C&<ytv?2S~`*x#a4}&kU%fT)@XS~Rr@pA$vtdpQrXc|
zi-)fBaNwABA~e(Tb9j$P3PL2I6Pd$>uB?XQXzysYz*CXRYQBsU-~h7BxeFOxn`Q6u
z)ZTuQ+0f}xmZwjTp3aVD^33vd)NGOIpZxgG&SiP}^xRXQfQjAy#`chWnSPAB9<qnv
znS=qBAWmm?cAD>=H3k?87O6@SQ(>IDl=)5!0^~e(c{|nt%AcKwQ!!cU%zpEihx2pr
zF@mV*R$)?>(qazUMHB%6y(HSA;AjTY$9m`jJkgYya<E_uNkN3o3jL^N@wO!>*hEWH
zd^{o{pg}(UZG#V8rDl455)JL;JrhiKA?N6Wp%acwWmIhMZXpGg5txb;Knt>Q;3GT&
z3B{|dF09{J)q8!*ADBuY)^owgG(tE#QOXq}Rs}e={bl+a^sU@p?gs94=d2?#$n4g4
z9y1F7;Vi&%WXDHLZcO<AFN91R83xg6O0z6$!nQPlz^2<miH1|zWk|*(`>q%wW!el?
zp31S7r3f&>_^w+_8<81eGec5rgaM+2;4L;)&*B|fQ)D5kC<>Jo2-xoNRuJjBrOSdw
zu29SMvg(Ws*(RG}WE({<Zm5>85+3PkaON;y>AgIewcM(p1QtT<C@#`Yv9qMWc{#}M
zHL1}qkbx2gW+WKA(h9w%pty=rRLqj&Zq@u=Q5M9aW9JRgAW;Bdd9tz65pR<E8;5Gu
zwu=zNFO>B7c)!xJHtG0aK0og!IZO<R_dH$}$*abEv2v?fXH!WC@&GtY&6mnS+BYPk
zi=s<}q?AL6hHzJHf02BReu{feHZE{M5PF9CEw-8bTca#Q7%f75m+(4MXoLdH{X>jM
zNtxYX+o;7JVW#mOwgu>ZeLAMu=~Ja{eWiool*fz}d69uB@Vq=GsiE`GE@YzBR^4<<
zwyY3IPAWyijNqQ_K!atVP&wIvcMn|Mm6aqSX3;bvDN009<!N=`2OGPVwDpcTXai3X
zkkQzJDM*H3LF{~5P6evzVyx$O?;aUG++7k7p*g=47W=R+<%NQ55sa~`cnfo;n^O?G
zGpobQh=lpzsbW4asR|E^!KC(I=%-)>O0W$wp&4s|aE<M+@T>Iw%p;0ZZ<RUs4E#Jh
znWy4{JOHZUdAkL-4=XWlF%iL$Wy+n2dMdtih68fU(75S&%(&nL_DMWpGRH7v--yH(
z4zt~&zs%<q<O@<-b>Z?LZlVH=aGkcLm=qpLatsod?E0W!TB>Y2CeMqC)SQjFle()=
zGgOc)Xl9H^h=`%C<V(iPvLWkKOEfjoH3!K*z`DS}=!qJV3e~L79~{O#$LdrmF#?OX
z99h-~k{(Y~ha#M1y;8sDk)w@CNm8ie8r`&XG&UkpFWYMDiutNpHgisWb-s3Z??{b#
zQ`@|B?%0iMB>*sytp@oZZ3?oZNUg}68OJAYFvV0(nz%8uS+{#_vwzWvjW!fTQ)AN~
zpMK#*_5F^mcZ$}&3w!Q(C9VxaXRXq%5ELf~cVhe9^vCo&jAH_ynYqPvI?BcjV$IUb
zD8L_nVSYLcfW#Na?H$v_MuUYaO!3>($ILh(jKgHerU%}^_8eD-WPM+D5{o#o?&b@g
z(P<*gl~}IFD=H#nJ8tAeV0o5KfNQIwQicb!ZNo&mFQzL|ZhytkIWkZtq9INWFx4bS
zY}6IaKdvWbztW#;Hn)00ZIlf6PV%9OX_H?ZuH0~8)mxaa25T?4&OO#n)@FHG6Z4uI
zijHUM$2ax)<sh9Q&wc0oq|i<0_bv8LUo;%&I^AG#p(z^e=&F}R1)KT4qmb5*_=}Ni
zR5R~+;omSE@wV-+Any1TR3(q?*bt_Wnc+CAx^ZR_APOssM6!6KwUjA3GwzrfOjr<f
z6n(N;r&Ls69f%_b&4$<AEC)4x`JgHDR<qi^>gtOIakW`YYq{7`WW-R0qO~KV(W!?-
zFpCMo6NtQC%J(8~ea#kKv0qy|Zx>QA%dkY_(1F3h{ii3#Z(EU0@IcH;z5ecDsgkrC
zZdcWTHdgzCIs|0xz3_r+5ZZ?3;LdMh_n5^E^=aHdm^|3gM>2eWdi3<Uqi@RMhUw9h
z+h@<cHpBO)M^C|S@Z5#l??X=gIY{nq?yWmI$R@Qoi6FzX8v|Y$e9l1DojJ}DIg4kH
zEmm-mEvS+-VG{lSCj1~1{?7%0Rc5xKJTn@UkhM}Cz?6zKj38$n6shO{4`L8FB8^JP
zP7&-$xtxapix*u>?=Ft#%DgQ1|F;J*iOvmTD>9nx=^&;qEUr|$oD|pQ5PVC+y@xmZ
z6vkO`3D8Oe_1b84S5LGhikYwFbki$U+yrmvQlT6pGNDu#64%*%{Pdv(H8NNKf7gch
zWc8QnSY8N90_AQ({pEA?&8Sp=Cab?-EL!bsn2;FZ`P91XgyNZLiKp0aoLTP(o)k3}
z8J?7d=@`?0S7K?m*rESriG|18%z-eUf`lDYDN~<m@Hthb9gRA72$x5Zh#u+8mOYt)
zSfX0%w5;aA)X_y*mL<V(-N?;tY^HV<0Y|TD@~Uq}8%LX!25K_`8CIJ|V=LrcBm#h7
zP+XZzY&#TDl~JVGjrAG0U(<CIk_)4yrdN~2KoD@AZ<E1%(r7&DP3lsRGxD80d<5ka
z8}3}P3xTf)0Nh-SR}rkL5@1sNg|SqqD~i-9jAX|W3o^BENx%x##9v;^IdML4@{M70
zaAG5{paXnVi=;sIMa9uz77SJK4N-$r4@+fK3LG^Q5H9f|PhD4#-~bVW#DnVET)vE2
zs;UD96D2Rvv@p;encgXuhjyHg`d6Gt3I!9WATl@@Yf+<eDk8qJb9|gM5QR|$h6u_H
zsVWupd@slJ<2bCv)%4w9RXq<gz1GgqZ59Kgkb;q!Cdzn{B@dYG(L4)lF)y>CYm|*W
ziYL<nwrHE_0?P^T=ugLbI?C)DTG()WXN#ogvTB!#h)6^@gqzY0B?tjY1J3gFLM!KW
zMKujoQ7)Ec1qg~PNSd9?8z>s2TWfw1LRYEj0^AH=CJf6#*VhUGZ%Zg`h_xgtx{hVY
zsp^%Gjf_nxw`-+UM~W;*z8eZkEmzuHamtAx)@@S<+^wSa%9C8xbxQ@iBqGfgijBJN
z6cDf?Cy_0)APTMd5ljj>02Pu0e0w4mO>5$%Ee5fRUeQ`iwvM8@GOcBOh_2JGAiuaD
zvYlla0;Zb~Ln81&2woSU^qJnbTN7lwI10hD5+&vd17>7^m056=fs$h!n1*YMOo$L;
zz0G84Q6}juJiry0)qRl|x(q&&i0OGI@Oi{orleU0;WeNSR8SKHI@HYBi2_}AkhfZ{
z<y$jmqlYxshs?b^?$<z&ZU{3yG1O|F?8v<1-n+0_kW;{y7LoM+oF~SGLSmleQE1||
zG{+Bi?`rX4MNo@*5mqlU%m6?KO^GXz+SV*e<EVMco?$rUIx9Q6Yq2rEJdjB)p$Q7~
z2EuKc$8Qwp%JU^JHNfGj=K;7`!NNfGBwa%Rd~2=G{M2){UrsLvlW!K>z?;rW7_sL9
z^!IFFG(o%sy8{JfxoYO9vO3NpM1@if1kVCkhTLb?39hW2Npfl2f@x#I#T$QZ_iAzi
zOXLO)<=uSI3>FfpP}S$xe3%a1i;xN!cIC>O9(URdm4p80OEHDgrhe=bptYhQ^8ui}
zZ}*PxF9FYoeW@JUU+m7{hLZF6xMD5bd)nQ#tHWDjwb$0uSrhdX!q?i-Ofi4>;2aU<
zQSq{uZnTLHpa@{EZY{0!dBrenaVWN$qFzw-)M_Lz7EitU!esa1?x3L?<qHm6{K}hW
z%H?Us`y2F)nCr7(Q(OsoWnump0yrD5XJ8qV7{I=43d7wo6`N)aOk(XUy=BsZa%CSx
z=@pWK+A)2#=v#%RYsi)>1fq~sOS0Q23#zM8{lwh$gJECLm6_Fze6m(_2D+<_$Q?>K
z9$YdBbB<N(IWvfk4ir%AIddl7RW7d1m#CYXo!Ll4d|E6>YZ@^Pv)s;&G;8zJL9cVk
zUM<pdQeIc%!k*1SI6vRjjTp7jX5)1?B2Z0_Y$S87anz{qNy62!C8ja?c^a5jy+2IN
zat=YP9q`prVRa=y<o)vPF9H+z46}tIN^{TwHfx!PAQC)gFQ*6DRAyPuXgog!5f?_I
zsa#|!E1xop2Y_lA0N{c-gcz|gEz5L`y=Z3=Ba#<US+`3ez)V)HGj|<n6jT=}jBh8F
z(`~?+VEUF@4PEhI*K5Jv%k#->g_o1rq);JxQi1TRtpY&0dL7797?cColEt}pZC3|&
z3R!H~&~;g!UtJSrQ6XBjrrLPIyK#}Xjb^H7j)z*cQffH%(pt_M%r+6#h`i-j5)wCa
zxvdq;FnuK|%*`P4R8<Po5=S1<Rb!?WFF8&#_Pb5f?Y2y(PQY~(G{(1k-}cvm_`eKn
zz-ySk0pQ=^>`cq{5Fhh23=o`32Z?6(gxNHl4FzL5#y$f(7%|~t219Td6{!}=IPEX&
z2r+p89E0$vE1AA;p$bJLD#L_`CxP6FCV`W1O{xTe5<}2BX%+-N%IkHf+Mlf#yL_Xk
z#f;9N#Hl5k<!Yg~I?@`oc~UhTR9zgza5YDnS=%*`4OC1_)U*VMp+Jm!F{p^NvAEb4
zo%JPWPui|Z^duiTn3YuG5fj4S<57%V1K=d!Cj}4{gBf_nKz+gXZ_~Ha4{_IJ)@!Oz
zxXVmgSlGme?3S4nMtICr4g$+;J)=EfsxpaWrw@ZL`+E-j$XxPY%`X9_O6zSuE?ZH|
zyL#OVN~j2<WT0q@+d{rYk=0139p{0)iRGrvJ3y&{c@mX<H`TRpwPt|Kfx;g#z)0Yu
z^*wnnUa^n;!Y%d7uD-O^MZ{gK>E`~*u1in!d&7KSnE_RJL&F!su?u{uRRKCEiIXE`
zeY9tD0pXV*E5Mm@quJ9B9fxhRR77!>2*Ym()vXbjE-XLE<dbDMqYUjtBgwg=3>lps
zJ^iesjKMTLdh&-qJC`A&)1#;Uo@Lm-x%~`%KUif~W%C>+jA<06b8FmYQk`N=V~hl#
zx*e&;0pO!^>YJT~6G3&rS<LXARa_SN;3bh!c{5zygdPHiK)wR_T?S~Q`@lhfd$5F1
zQBn4TBJr3}l9|`Mh9i|Nw;UE*j*jWbducH0BI#DNn&XA0p#mh6%cWJS7zlLr!sed(
zus3YPV<%dP+>#b_0gmues_Wy;a`(dS>DzNW;1oMC6C@jJO=owS4m-mhU|2ovH%q4u
zx_VC2wko~3QXzB;k{;<yKCj;XZT<oJ09d*^h*2B3{W{NRR_s=@yM@Rmt!D{@2_n09
z)J>TT*@m~LaKzbJy^|>5_;h0tCD=MlXb2)1no53ThJxU-N&@d8)E0EhmaS&XQga16
zn(<{EgMm>6wQMQ~jnlHM*;dfB!2$rkA=0}?n{M54%dr%v2y#GRM$`yRLqvoa+m#(Z
zu#%+_P~|`q3y6M*nAX5}3W9Q@q9^0-Dls*&WK`D1gCpZoP^y^a{d;m+vtuGSrA}g4
zs|UBDJ+IyupyqGLn%1j~9=Rd6d!<E4F1PQshl~4*rE!DCftXX}K|a6a_HVkeQ;0yr
z(4tx^KYQ05z42BZb58IK=io&r;;^I$-CgU8R=F3l$Z-fh-#d`C9RjbIBbh;9LVC8A
zWu~$%p@iCE9_rjcWKQX<Lm%^*bH?c59Olm0$=IfKFBW9R65J7UOKfD$g+a`)FzlM%
zk9tTh=H+5F5v+P1geK4gD2?(V(Px(z5yH8O5K)kjVBM@5EGi+EELS^iQ*t$u)XGX{
z)6}$A`Ll6zSr-AAi5LY8E9?k$c)OZIx`MI^W0E1G=TpTBEFHj_OLY|lkRp8zX|96a
zqgKI&Fe-Tw+$I5}sUQicHd<ThGK-3;m8NSjL0-A)6cNp8V!7Qi6xX0hy{gV#R0xHi
zUQV0cg~u+aFR-eqEY8*%OA1vao7eSPl1enK7DPi-@}iiSmsLh{#atIi4zw_*!8~D9
z{&@Ri^rQ3>;DiGwA(<ev*nmkZOKzFQvs8M-%yP675y?~CpN>Q}E5KCSpz+zML^kR{
zPLvskBM{siV)WS4{YtU0ywEiS*9PEEHSniIbFwQK>{m!4UMEDF%qud1Q?VtlGeBa5
z(upG(j!mRNX|a{-O}edtf<j60wtFpJua}FPYXcb-Dex-<OXOWg)F&Is!V#IO%9*Dz
zXo_3N$6FD&L-t~=CONH6etqoDEV!_^*`4#xffZeu+Tp)LlK`~z>-2H@F7zEtxfeTk
zpUr)yWfCHxr7<Gy?5-Ja6T0?nV<|;by+w%?@{+)MlBRgV3&Mts!kXJ2pWM|Mw&MD{
zD5;J5`V9lw$E?BsZfvja_8Lbfz*u!-<#22H(m`RNpqbq`E#()F7ZhDnc~tuAUB^7!
zYhE%>0d@8@uQxunP@8Gx8oPqPg+bPV_yXpXG*>_=kcYe0!YFQ(qQfWai|4g+v#Dvr
zRx|D`!g?P;2izqpGpJKgZfX02GzFvKYL?+Kb}Or#EyAC`lPtCCQmf5IKby9w65(CQ
zCaYSoY<L{A@aNpbom$MSEHPD{SYk;a&@?s`dB#<ZCee5aW_J-d=2=@negJNkj48kf
z0Tb`MMU(dwfT*eyi9n$ODG(Jm4n;4NsS|+EiAYa31kuy1SOpo;?+0;>%?D;38R>wA
z-|H2sEK-LJCK3sgP!uAo>0W>!Hc<7JUmUAeRn4Q)8w&Z*Y&1-uTe8YHrL-|<fCtM*
z0Z4`djmyQeoYJa}>?90TZQP4jEN?OPL7#40t@)V}Dyg@zfQXX7iS{2#{05(^*A%gr
zTV0suE#IOC={vd2DJxWzAXlbeY|AX)I?a@fi4qz%jHbj-nW2Z0oW<E0O37%U?TE>l
zeUgm}azgy!7uac$KXq7$+W`Wz&rLT51S6;#M&zo>p%Z;#t1v%|fFb&c)#!q?ji7Tl
zbgh1`j1W@Mp-xncYKAXrC=DAvBJZUmZ>;ZKiweZGOZC_vwk5*=;|BF3WV^~}sI;8+
z)=-DRmFG5Vpp*)h1V$9#E<S<r33U+ZJ<)LTiMg~{zU-#?NcT%JY8)7L&4iazlz}aH
zdVZ^Er9=&BU=>d`lD%sq(V3~&hiR-U$lj4V2{gzBq@?8%H2c73_E#$U46_}gDd*#)
zf)c-6aNX3y{JwMh59!U2`{gVOn9UL)X5LuVlg(uOjo>@Rkkl|^fwFj2YG+!GN5~f&
zbUBW2CWt#o!!x0>Y@F<Nc5TcnhUJQdcF!~0y@p~YV7%whEhHmnmRJtKJUY*-ibTsU
zD|W(i)pUDtIhq~GE)As0O26ytiBH`SbtICud$Xts&32YwxyM`C+KBB|BV{NsaRU|M
zmP}ZoB5mlJh?;S+QA7zzQqtD!KnKbs&FwDldBy#U;Ap{6Rtiq!iRA*AIDnO11GD`e
zc;&~yr8&Ue1&fFIjQ9^l7Z%A(>s{l?q&+R2&oh&j=_24Vhyb$~dIltwL1WOu3|z~k
z0u#`Juo%b+^EZ_lP6fpFe{{A003dfDDv--C2}E$ffx<Yc)lRg;D6IH;wG5Lkl}hL@
z!~EqL^#SN}RBPImi?4{)IWyT`sLUs>J!n{EO9dnmII?1aTJ9UXgyOL~$<O3WUUp_X
zO0e(fx?#>b{;W}oEX$4<WrbQURHr@k?V1($lXyHT1L*F}b+y_scM0;gZn1K3cjtoY
z+7Xk{m8+w;RBzPs%RO+N#&d?sI;|hx{wDJ3H)MJBSvv@vYbt;Y0%JhqbeqPM8OJ~4
z96>VmDg4ZsH~#_r%q(HF6LT_#KO^j9BppijbT-m*;ENzPA{`VMNs0<KHHA`35LKBb
z-C-zo$BdUR0&k(K)#j>hRj3y_j;?`zwY+S*5wII*$8gW)90QI)`^PX<f|Wi)jsYYZ
z)N@wnlX77ew7c^UCN0r7Jy)VJnC=OfCFas0Ur!a$ut2#(QXq-03r}MpU1wDKoMWcQ
zJ>gOq;LA%6sPx1t4w6c}obT*#=@s2gbfBBMA+q@VLCnne(hs7yjGMrPE`XCdk>PtX
z2{Hf+o`r2KOiUIdGA3*$U%a(A56Q=wpIJif1~QfzXBj*MfIU(TpQyKjb9oQqnh8ES
zKOgUSaTc&=IAjZh!Oq7Aq1FLv?hKurPIzV)*jTk6Q~)C~wx?|%z*B(@5Hm872my+>
zJ>4+`IB5hwLJ8!zGRh-D%q!!G6QxeBjG|dyX%5;dFdi!r5bEH40JVlGflZDw5D57K
z!hYiEdKFApQ$`6WKqQai9pH5y9v#<VbxRwVoCCBN0lID$13EWzVhGYhLaAhHK0)D8
zX^avxFDrqdGa>-OS{03p@L?uWISnZ?j=}L0cv+$rim{6K5Gx>P1sFg~+p_Xix2%^O
z4cq}_cd$mteG#>kU`;TOpmU7ejNc3G$yw=254<BHSh`TK$_BHx_iulOUO<0?#g@Q|
z5kO31BRoRl*~X$Hj3op=b^e*+?}Sh-xrKMx7_)QbsU?x5&)Ve>_=sl|%SLf6*1Pjb
zI#diC^HW`k1GC<+jZ#rhS|%JmFWSR?uHSb3h!2{u%5ccz-ErzkVkxrcmP?(BhFX8E
zGI#Ip-igh4VXq0wt|X#@4409Y4BrP+O*Pe8HymC&c4p?2(Sab6Dzo|8N)5u3)G7*V
zqOPyky#2LkVHW&x-1*7v_tJ0DPosa5G4|xle=t?f2zwdfgK0Aa@hrj~%<I1)?5*=Z
zqw7t*K2#WT${=5`KpC+fA@_gC*2|Q5%GP^Js5mUJ0S%j)j%&iIg7yNEoM`HNF@fjL
zC87^7S~W$@?QiZIYYV9yt5yl{m|zmy@&P`f|3ziQ1{A6Qwh=*x&Z>N(`?dx*i?9G5
zySK5ws8<<dPcu#MbPQ9y0$Mg@>?vUE9o)<qduGPi3!FwCs&-@*3aaS3bGR_a2z!+t
z&;^h^seD!ORB^5mDq10z-vh#)m=X3scp7c4XN0|`7%z2@b_sedR`!(b(L9nj_zDW%
zD>AV9aG|GplV#QoQs4drJq28y@y6iBrEEa{4QDR{0y4X@qomB7K>471un7`VKWuCO
zvdkWenw2@29%srMNUe`3pzRfW(9%KM<8=wNJ+vBGupb~xmK&(*f<%U@%gh9{J#~k+
z*O5UJQs>fInelTeigAp$hfanxQ2PKs@jNUpFRtW>8SFv7LPp%nq4z=W#MXHCNL7am
z+NmudgWzIlY6#vQ0}W9W!$gK548T)`Gz9?2VD5Eeb76UgG50nvJJ4h)D>|^!2u~yo
zA~K-u-`!pypQInp;(<&`5CQVOEIP`_MhFaW=Pby_vqdJ$Oq`2Taj{3_iZHO?q-U}@
zC%Y`@WKjd2WXO6}R<~#g)fi&vDl%ZmSkrlc?UtqF%Q0FibQBD&S|ucMthGEl)`SXr
ziUcKQT>!u$JfyljT$#kOc*#dz17r$<1YBxZ!~$QplMCmUek;9p*$xSsI8fH{%7D{B
zRgJB+eaosWOSRcquYdEk2UL@>kOUG`Y^Fy7YfePE0JR75=SWVc;&e=>qwiW26qTUq
zL=`ak-D*W{bV^h`u`)NCalQ6zf0n)y80bq_1~toyWNgEebF!F9A+vsrz6(jhw`Gr`
z#jIG(Gf<RCFbfbyne5_B<Di~Xh>kTWF~|f`jz)m;@CO^s32D8g$R)iwV;jDs027x1
zOJe*{Y($$|Dm!rge&9h!)QLi*>F8JDJ>SB+r4nqpYy@tQ2n&^Tr7}AQ_o5iUqH}R_
z@aX0Y5PjcrqOvJ8oMC<z4TO$bF`L840MQM)YYz;sZkmpeH%4*<PE$SSPBvB%RLIiI
z%7U&KDs)azW+y$68U(}zrof`}T{GQHp<7Nzak-oo#q(OuaE6m{R|k3A4QZ}qYV~A(
z6|?#F?LQ<Rg^mJa7NsosLVh}`F-iuo_eInoGwDHq*p{+(Iu^4|L-o-Ra~G316D*t4
zQZN|@cmiNL3*eX(5z`WyOG4KwF?E7x1a(oNB1#ONfC*ixrIMQmcIgl+)_D{qQ9KNh
zyg-t+DWg)v)R3oMR9o_@Bcw%qZ*_Tqm`KfIt^wi%FCWM!FNLZ)@S}m5Gvt}|JtH;e
zQrDMgv1WiLiE5MFA2m>(K&dP(&7!6bU|G>}7ASQ{+9XrOrCfyakjnAxKjTB#xF;Z$
z3>4eJGMCP2oi$a(3=z&S_n#?b=6<22&@Lvs%<WENuS|%{Rk0^bSMg*DrA>V{W_uX3
z_n5+t+nKZ>K?rmjFd^K+^C%uq(IX^;Pv{_c10&X%!x7Wa%nPa?H-<I07yzwcZ3Vz4
zkRkC%{O8(y(U8JWHr$-;Y6?h+Itg5K5C9=CkWev}iV&rs%b_kLdI&e6h^WJ&?U@&V
zx8dXvR#h^I2GT`Y_UFLA0|`G1ei-%-u*5_;8HNNFv|^~<p<%fH#G!b3zby5d;XpKd
zg9)0n<aQ<BRMc1!Qp;cLgLW#$*Pn{^rQX7fmRDSue!bHM0BQ@1H4*GjOH)zBV|*&X
zs1IV4h=Fk>2vqDyRa-qL+%*Z%US`T>F0KQ-QUq|x=2w?H_^mF&@!nyiHwfAUId5F|
zq6rTQj^f+Amf4u|w!cb$hdzjvC$g$1jLX>qF`xAuk0J1A8a5!VVB-Uvh8gW_!#GZ|
zaT(2L-fLQ=%9H?xibvSh2Bfz%u3_ldWXa~s8&z2mpyN)G*JR+GtZ~Fc6lPhnTMEGb
zM&FJqyB?~bim!si0CS5@HrDxA3nhcVv`{oJ3e-!IfDuB(d`UBlWlzx1pThd&z%sI|
z9LNtz43?v<Qmv+H;9CRV*?sbO>g5%^H&c<j%gbTN3hKzFTkgWeHypaD8O;T8-x&0D
zxl}QndQnh;l~(db7;AF9WvYY8az~at(do4{OO6WK_`p_(UN8scH9Jl^nm)g}WZ8==
zeK56=89#sf$MjNkc^|^69xP^H5(JHhY5yYdE)W$nvpve(91{|w5{2lr0ssTCGamU)
z-xWky+nGMhV`3l{7boxsBi2}fH<1b=*Jx+LpH3+p%xw907MDy4E(oCrBE+cPK#>p8
zQK{Xr2U{)XpNN4eK#<n6=-feqz?1TDWW&zLmD+_tzXmZ2N`guOA~<x^Db({}c_id8
zs$=M8A&1f`2oosT02JV*q2S+stT-D}RgkJ>3SxF|VOUWJ47<ZS<%{=4Z8ci%B8cI|
z#-M@})Uh#x(pmvO1Kq?o$oYy1kE{%q=5$&DQ3>c-9lser6+M?=vV-#iU)2L9TZ!G4
zBo^yMDb6y$JGQ@1&!>-LH4=tIw3cAQAgt*ItHdNfp7y%5GLA!rI_}E46d|o(N-xP=
zDtMt08!v45;12BpXvA5QKkbQzl;bFX#NQzX9?N=Aq(>Jq(pZ+>SvqnBpjCoY=ypxs
zN2~6{H&R<HEq8jCfnUQbl{y+2gFyr=L#elnP8}*K7z%ny*w+Xqa5Fj1YmS3nU(|J!
zP}lRaUI)d?R+Qch>r$L8Ee!(=6*Zk2tfeLj^kz*+jMCx5)ml!L67;|l<S~NTty@4P
z(>k&>)EpFf#*db4rzE7dKlGc2b&_uaG-3$uRp@*^PT$BK##%HPiapDgm)Ma8lgTKP
z4W>Uj%$Svqn7%?9(=BERG;)kO3x-=$nbi=_u`j@Z$vlhf&RUf0o7j1of=_i?X3mst
zELDlV8q~o}kcfvE-9xiO#dby^HLL#USQGg!^n$4#Z&)yTQZWa?kwO7IfADhcb}5o_
zR&AyMzD2cYiPQvdS7qH0a0Ns`jEhVJMPFW4VU`rj*NTE&J8zJd5i=;Hw8C<{LOox-
z`ntAVQT3Ujo13$VY!YE|&5CTYpt$S?#d2yERBg6mp)6!uaRhP#YL_L|6e9E=pU;DO
zspxX054EttYH)MtfQOL+*-g`3)1H|zXO@tcqYk89a{lbGMg+=6dC11%qV2z+7owhU
zQ<ez^nWQpFW(14Y6xU!?tf_$+kK=6OPZ74AfCZu)1tmTnL+sGtsS}?CLc~7B3<lyr
zruH>In<8wOn32f>PL}JicNzOPh~U2C_?6(MgWZ{W;G4n(L-@IdFC)1_SCz)QTHN$1
zK&o}covHIa=C$RNuH4Ju-v;nmS0@fH>yFdg-!ak6u7GJ}fCLKqDi~)#6@*WgRu^o=
z0v3e;NH!8B1P{Ba0;UwuRqDjCjiz}%D2b|~CVqVB$S+U@xI6D1x?-qBFil257aiGT
zrUIEN4MM@$)rxDCXm~{n!=EpgBj}9gT7c+HqML^X2=h_=R{&Fpm5QP+)sV{yBs6-9
zsg&n+@Dah|j!a2ak!cV>t2X!#!@XN`z^)(w4bjtH%$i&2lNo2Q1;Ik05x+!n#Poi;
zp-zD}cDA!MN=A5_wtq1gDV6~qNmJAUL%<}T1(xhB#7US~89oJj&ju3j)mkr65km7y
zQfB>gsb31?qE_gkE{>*fn-t-zz`X>&!i=k070qp$9=mX%L14H0JfBGU20%?2NfTPH
zYa0oczTo9X6YU$k1tEZ<VECrFu$E62<{Arv;mqYhn$W{agi0X5dQmO;R^+&Gxg^&d
zr>jZ{(d6RAEvK0vuL7MDs1MZ|y=n}i9a4X4sUG6ow3PH+Ikgr>DuWi%RM6pQJC;$c
z8Ah!rin0o+zIFRQ(+>jyx`##TEr^aGAWS=VwxuPQnK~0HRDYbs-|SroD~NFp!#*?E
zl+`_$S(zfIka3tXc&DmAEoUID%*4vVOi=a-&^6tUG{JNn1MUo^SC~;jZQ3*O96Xz~
zIPNVWN(6^lX<}Imp@tAtR*QD*vr32{fC^bN;$huR(Yi00@WN=!!s-j~r=T&Q&qE5_
zCYs~KVkFP4ug@vUuoTYgPQ!C*q65*|k>Mcz#G(R%X!2N;K?SD=)mIVJS{%dD1L$gn
ze)D24PFvsr+m-|BScEZF)NX^)L<<Cep~GVP2O!6ngXhM24uPa)6CDc0v}>wI0Zi>w
zSN|VqHPiDMt%e01_$+gT5M-u_KU`W8T)ET<qMC+gKS!^)R$zh?tbn7H3q+fFcog_c
z<q$wZRM0`C0-8k8vf_cKgHXYq$pgA)ak*px%HZ>BYk4o%vW`D=Yxl0Zy4@-j%XPy%
zSREbPYAmnTJkv*w&D2z+N*Dm4KGOt*EeX9zPM_b}yJVOiqIhUsx;T5_MSF?pfMp_q
z=A}?e?CqZey2oVmiS6$JIer{#u4OtlRkO?pB7kL~)?#}M4P%pc%5H%zjUwE66u>4j
zt;!?^nNIB|f;4PrHIx;3FmIWl|Mxah5lcGgj9SDh7(4#}z_J&t|4c4gtRxF*V*atW
z*$WlcP$a14@L<-P79hwt$tmD9qn!+G+OlOpePl85l~9u+m|Tf{#8gph1NjZ?Yza7#
z4(JzA2Dsm-gqRfdkj2^RdQ%0X*X;Fl9m}owq3$}GBq4CdQY&tfH|6@=tZ(&AIm)|w
zT1^bWFc8AiFh(mZR*fnon%<l1s9GpHWh0jd1B}wRphz8rDyCJ^0S}<)5{9Pis8~Zv
zh;5a1JStMzHhQ|1!w9{3`!oD*`im?cK}8w)<@j7T8%zSW%o?<^)G^8wnW;5a@rhUf
z$NCeq0b#HQ5K>I^XgX9`=OVHifxToL?re;vfgUoJ>`U-SKAtwAVg<*mg6d*8H32P$
zpjg107i#sgrssSFZn#~iFoX3dl*mU%p{Z&}@)60&Zj2Om1k!@-<m&}9)PV;pxnhc#
zQP$C3h)@HZOIZgNBqgO7(7a%@XWE9D-@jB-YDH}+@DtslXa;hE!{;~bhNdi^y5!U@
z#ekEPRY~*ejrkWpaNmsSD3Ml9)4<+3vEM_lBl@t`9(e_pYSPN1rd`e<sgj3V`*&I8
znY>5}-Jo;;YnNDwBK2*pKkO)4pa+9q1#4TdnQ_zhr{L3Gi**P&l9ejiOqZejQ#6nH
zqKu<ZLj=;2S@jPgH`_*80T1~J#s-h5=hflw+DxL@kTOo6z>F|slmUX%xs%PBrNvof
zkSqvioO*VxcsiX}#7@`sf}s0JtzMYN5*?`Z8k%keI$Fw6#zP#)z)FVc0w!UpJ!;Pe
zLz_`F)UfhUd5Gemg3k$RAQu!3-4sHc$I?Rzz6a<)7MV#_oQou^DUw2oZTLo83@dgO
z^gKVG(Ax?gmPiOn&C1A;>q?ZC$_T3$O5K?lgl~{g7^<hns3{@}Q9?D})pM9tET+do
zGm$d8g&<#y6}^DwGQQX_<<?AH@MO>PTqS`@=psPO#==rx3HmaRZiv)V%5`&L;MPTS
z)%X#s5d7)(=ja>gN4QsGPGoXsB0A?87s07ux}RAsHVW8q0%io#9OewOsC_zD*z+kp
zU^LB1$CxKmQ-5}t+Hi?%axnDu+?H8=yu?Ak4Orp<sks8!n#VdiXdN*@LIH}JG?31~
zm|?accVTyi9G(Da0Z4;EK%9ZTPo0lk18s2<Xy9<Ot^j@!NE%3JECd3A3NDUWRM5l#
zN`&CRIcq#dTipWn8JR9%5dq6AB#Ml+Cv?8*=R!@S!=vck6@n!v9boAl<iCg~eGgO?
zy@<5}fM)Xu!V!4t&0M$OZ*0xuHgwZ(IKXi9B7hczvzVbc5kU~2x6GN?O+-QCjV_ot
zC8K~f2(npn8f$pG6^z~&z_&_MIseQ7WNOXyKWpi4V+n*Th|dfb25iKd8RmhDL*i^?
zc4{-27{lSYER)q?q<M@c&SY6CuEBinuaq1I-Jj?U$)mem_jzTsh*o^`%?{T<K+XAU
zaH1+g7a*T`T^SZi>$Cd2S1BoIy7h2B3nSO8P%Myx#M8xMNX3ws{c^Z<s=KfN6K)^8
zau{svL4slz6h5^~m~kEJl_`4`lhui<LB^<(V0{}D0YJQnO@Ofy+C_LCE7M@1B;Jv*
zx`$fr_C4Pbf<R3I#i99Tt0Wo*R{f(|=sE$Yuz)(_lw~`+wjZGdbmw24u`Dy*1XJQA
z^d8}+&nn(DI!57(36UlA=d^zMvNoQ=k9c=#;PC`o%*@HTxS5BlN9@blr`LJdEJin&
z8ht4ue?rP21_6&k89FgnYWX~B)2`K6s-rnk_YDV)pBfTM{CE(DBtW}pkq(hRz#d^`
zG5BFL|0h;&vxQPA0Cc1x+NVLHvx-LSXVoPXW@%0}5g|qB%M%?%({4i1hxf6<!eC$z
z5G<jEPFK2x3$`MmfmL<|vr@7`0RT+J5<LZ6C3K?LaO-LfEIlIv$5_Ky=%Q*6wY=V`
z-Tva0Xl2R2_!@E*q6GvHpxB5-J3W4ESx~Kh!5;6Plf{PXrI7tetW10XqM(<s3VIf6
z!vHfGL3S-@TzeWYBjY&tjPbW>h{&hKhfI=Z&(26(neNBqsk4{{iL7>$d5sJ*0N4dh
z#@J@%36Q8+2sMRhrjINI%FIm6U`Bx?D-$1$W~JWz)rXysk3ci>Bg;$-xmps@JuiA#
z+DAhT2vj#E2Rs8ArQ<7}hORjSWCp<lFesKQl3mx+oLU6Xi=4zpX{HccQCW$B&+;xB
z3ks|hA$uZH`I%)>?sW|-bv50zG+71N6IJ3;$wV)e0vnZ9Oa8j5qZNP`vE)U5kTgaS
zU?AkfCPOfTlGiudSU9Jg1Y7$@1c8&-=_z8_v3qF6)=_bxIw%3u#2YB4V2y_a&fl>{
zJt<yDkUxm_OwQ=e_+~wia81EtaG(f~JyZ{Jx|W1|h}4Y_OrwTod*I@#i~@ckrwljN
zy6_a2Y=0g-K_A6x<k`5+Vz?GrC_5cE*d1(a6sCYcHf1p2(<2CSqk47*a;crpEH;-g
zU}w!g5!;(J0fv}CU_rm+ZyY(01J+)cb1X!ZvIc62jvovwA4hvDGy9S#VUz`GIS3GK
zbO-o`TC$4+V7+3H!+bCcd)84rk;{!dFIs|q;+}oot1sTbl6h!&jdN=&0doNeeXN`@
z7%61jp4_p%=c?3n4OBf42BS?4DU)KNr2&y8<{Q9>9CZBH_7~_oGqw`LWT&AA?g~nm
zLEf!)CIlv#tVD*uV@EjCdxdqFs;kUQ2bx^wGYx0cggH*&i<zHo<8hX<1Zi5OglKod
zRrxt=nMVpW!Z1rZ7WvSMCD3fuqBDfvYKdpf&KL*o-ep$`A`G(*vV^_+7zk`S-&vZ~
zb(^=!asQw-0E=FLR+>5}VpvebhmD3Og*6C^mYGta)<C6)!YQL!s9;Dg-oxT9Mj5M)
z1lHVm&Qyw8P3zQyt;4%?B&7sY5FbnLz~9ldq1EfEkh;132a7W|oEM<{CjcIW4MWw0
z(2IzRrI&(0GHR&((w3hV^I;cjO%-x7)nVu`j+WT&DnftbXv_3vOYZM$)}V=xZT~6#
zBz*|$<8va?DHav7HAFIHMBxpF<g6*50$Y&mXpG$HoE#&d=2O6AGKS7(V0mV@8Lf`#
zF@^;jo-y?$rC_PcBQF9D0TaMGQG}wel4v1N3A3D5_AWXeEi@9+T8w7adW|r4B{Yah
zy+S3{Yj!TtKve-!yBOE8&VtH#$M){MITVkvo{d{uUfkUj!vwW8tcI)d_TJ+~geYor
zrVISZ0)f%ZE4GWW5<?l;0z|508N8?kty;Z}CLHhz37^(9M(UGU7i$ph-aR9`ifscg
zPy{R2%=rf7cIoyH>0R^@thAkJEz(j<MTSgIZx@eCaC#8dS@C637^5?lDJDcVtui2K
z#TraZUf_>SRa(yaHyGpr-^YycGzEh0LfI|)bCPFZ89cO&D=1@Qg-uK@MA8OZ8;mDN
z(n0%lc&YCzZeT26F&lwT^H_J4=Zk?qGR%sZPmqrW3MwjtTF~tS#&uUWhFA{)Ux!sy
zP#4A`m?p4`K$oz9lkRvZ5#=KgHU%*>EsKYR7<pyX%i+1KqH5)|0-}A8BS1Js^H3qd
zpn%k1mFMz(iZPd>RKSc!z6O_!mOCl2Ok2caFCD$pMGq>$S`y!&FT*M~jGrtq#|DxZ
z7PDdU%ceIp2OFEk$XqfyZPp78`<H>PnMs(UNz6*_gbZ21CG%fXv&t}8l<uM3&}qbN
z$VxMn{3O<fMJTMOsN{+T%dVmaRj(XOtP<L+AX`yFyjqotC9K5Zwl8Q0XdknE%sa`^
zyXP<4?Ow}h&tuV80N;9ZFzajGwhS&M?o}dKRkV!m0crPKt1A)P?@#7H=THqFeXB-_
zwbHaAf^Wr735_)cONp!;NQ-kzhZfxymZ5aJoq+Wss5#_RAb1L~**2PkuDyC!+ibTA
z)FolnRuc5ogy>^(u_h(3CzOoPonX_TX!@PG7d^-%d<^SP{2Bc+R<qA?lPo~U%7Rjs
zC9+5k>c=#Y$@r`iXQyEl5HCRfI~%fim|+&WMGSt%+nJ$-{<9<5_po#E0x@$o94sCA
zEA#)R?#+W_%d`5vx;HcLy?OV2%YDzv+V{8j>-S#oGu^XxPtV4Tfnh)hF~h#^+b~Fg
zEwI6ZL0}=UWP?DqA^-`aK*%;=M}V;)WP=RGfh0?oWNnt9{5ii{^}1&O%YQ(G6`ftL
zUS?Lk{QZ9Cch>Luo|57&J*Xs2+Q$Cv3*YS%9OIjUV1g4C1Rh|-ZU9plncYt0S(D||
zrb*6%F1UoFfku_0LyfBCIiyGC`$1=Mm<{3EC$_WQ7!*hk*b<P&qzzrL<wsh#>*^#*
zot6Vtg6X}h17`W`xi<`B5cRMMc426tLT0o!XQ%hqL2)vb*ut4SxVwJZi0F=a`CTs-
zW^D%4K}*V`$H(^Ack+%|^)nqn5(fjk!f5ANaA%aA9EHQVw9WPIoOwq_Zne8?1>J5A
z*I7}$_?8D=X2?0jm%pvQNc{d$iA-d#rP&3uC(f|i%3PcPiaVl7ls-9A;7Hzi{j$;@
z`~bO=*K`9KL?ugkMxE339Vm`@JNd5su?psLO*s}h8Qz*2zeVL{_GaQk8?=a4y79ud
z6H9vUVkq!TYUoDfQLKsb-AUV|<!wDZ+6ESGTF24wxSf?+K1rswbZUxmB;}&JDW@7p
z*w2o(jKRp74Q-Mrbm4$7%j|pv9b3r#@kugTV5xB(05-Lf9IXqcO$f5IUeP_eu|q^+
zv=_C%vur0*allRbifzfPp}v7>O2Z#1da4a1)af^d$sDz9tdG;dMbKUzEKu?te@c~_
znkMEqw#c-Lw=X?cD5-YHsa*cpWv%@k{fD+*fsja)%#|#&$?~|@K5O8<lI9Zsmpem>
zyE(P%jct@Sp|@aBnlosQB1>wso%T`Lw5A5_>VhI&uLvM<OAM>)LJwfa_JD38N>W-^
z-`+VrUeXjqVYeRA5oS0+Sk=flQBSKHJL|Xof-|X6tb~AYp0?W2OHYR9_iik-*5Umd
zj!%ATvEv06n<L4{Z0JIi+ky;wK=IPOcxvL+;nAeMzW1Q+j_uLiuCaZT?#B}Ay+pP4
zJ7KkcN~W7EL=WQ;0Q#2ikWVV)vK!5fS39HH{vTg>kwC*#p@m$1Nr9+$UG3uI@0Evk
zZ5Jt7UW=;i8cwV-cUOTn#O9_poVm%)$|n^B%n221jSkKZ;9+eAWSRlsp^Uo&Dn*u6
z_jqTT&r7FYrTvSOGyuaG{@$l%C57-dEn(<*w6aYx7y||1I`+X*Nhzt7jXfF}bJ$Yp
zd$cK=iyDO`7?TxRZiHiO#h$l+UPS|~oVv6)x28uY+bF0Oy*9*nG07#@acN-*VcsGM
zy-AF+-dR3<*y+TrLA|3*eXD9&^E8-w-P{;#lYI@^t7^I)XJD)A(1*S~8aT%G$)4jK
zl*w+F_zJC_(K^Ul?Tf+QejqyJPhS4A_Or~)c^Mrd(yD+A*BMm|PpTq0vK1<ZYraxY
z5h}dv1V$sFM-6Wfu5%$;A{QUc*MDt9V=Gb<c>J+{eiC&@xUXF)T7lBD>DQrG1fT(n
z7MdFq1}n`<NAB3`F2UiM0Bn~p-rwnrd-3jM`pjY)E&sjuKj&FCXc5vA{Rsm?XaRGb
zs6$4&)0u_+b76QJ*BN)9kD;T6CCT-!71kZ_)UxI$F8>-u$v?mKKVZKUJWMX)l}@BE
zK$?M_ki;@V^!NfAyhEIb(`FB3(XSJ>tBpf0k;rQ|jbGU`%8S%CDwmf;WZ9iubnKxt
z=t$~~-Bk`mUdXRdcSHOYCFhbNonZpi2{fDCxNqvW7>54c7C#FHQI!k?AVrvo=f$67
z!iLf4U<U1)YxkmQL3WPX7TgT2PU5&^iAa&c<6^}?Q`#YUF{=nda69DmsF|YMhzY1r
zq3_s70q}IFkV4-y=BGjL1MNoFQn(Nx6?lG#tb(|R!vVX~%I0xiLcoFtNm+|Skm8Rz
z4%|(iLE-RUw|K(IlNaB$@@kR&F1}|$qn0$N`G>2~VRd}xaBMF;deS=g?iP2`aMi2a
zVA{6N2dje#1+k6QhO7({waKVFNvqqN)e~#!FE+`w6Q=_npkIl?94*)6a&*L>94nk5
ziIbzaQ@?jOkt`s2$YC(Ly=?+Hi^^(RS8KS}+EYA{2p}E(pRE?;^?Q7PuG90gb8;`<
zW`Ea*>(5h}!q2_@SNczZtiUh2!m~H>pp+CcP;l;ooyg50ZjU--Ub=pjH^@W9LszHV
z$XFw0@)Z$OdX$Dc<gyV>_02~?w{ZY%GwS+z9+2#YP#LaCydB$gOz5ISyGxXUPfcPe
zl3GmAwP@|fMv_Y}!KmXmQMjaM1coQ0OS-&EIv4VvA+*^1!l3rziW(<@XcvkexV$M%
zpa^lovO?42KJ@-Ud1JKu)PqI7Sj1j#_+)5Y3Lt4ReP)`RUTnH%T@oZsSM_Fp5Y3iJ
zjADZP$EFU8Ao)Q^Z%7}?8x)LF&U%A59~H5+ykl5V;A&==mTx)pN2{uPHjC!NZgITh
zmB)@VpV>?<X%H2^t-oLYC>@&Ltxlo2n53JUo5)vgWfNIRB~<Od0(#@tkUm#%t;X+^
zjfHx(sT%vzz$E8$bY-*}tQ@~cek194`MnqC`?`W{HF<>VtID3|-1py%kJd)ygychU
zW?I}^xuN73@w2&YzOi`zVGam8xBW>?rnRh17|5YYgsqiw;b1!QTBAibJKFCoPWJ0g
zDA+CDLazpy1`%wzwfO(sSNNK+8pi{UR%+WGxZZvx^C=vwpCfx-@6jqKfqP+^Xwz{p
zQKWXIw9@JH=i$TmT)2ED0Ab{HbgjRR!~4VNaAUUygHG?x`3ynQdjk_T*Ee?u1G@q~
z$tO3;3>@nz$x{$F)EMD|?X*Fz)2L#!CQ~0K8JmMNf{O=Fp8GZ4goCH>0$m{Q1DE<<
zrcBAb;lyO4&vMl8b@EqyC60>v&?gWGsUsoB&f(=8*f}?*QIn^9ryjFab5R8SqOO`;
zB6N4>OJJzLcQYs%li3F9Lh=Q}kNf!hh=V%N_D_W?=&*%6=da@m^4i5BgDhyCxmoJA
z%Wt3VEmEsLazfxrwD{2w-yf9z6R_66wUm|Vkj}*j4$Ia!Ja{$)ZrA$#yg^VSkZEp3
zHw*Xl)*jI6@-?C$+Gp@NZ?A9OSoaF;b9BE>tl>1skGAauV+vK!!@E1|>boz$L;nu^
zub0IC68DKpo!S}sP9FQZ>|JvKnvLPF%|;3!7xeg*@sqtBip`Rz7kP7O&YPsMIw`gJ
ziYY?&SAM&}JLNH5EvK^kJV2fw%#MKxxYogEelkfB$$z72XyK(nm++(BJ3^Pkhg(qB
zPXn5F@yAIc!nN<kWg(W_(7Nl5Yh{6^o&DZ7`!S4nS;SBU?x`byeiA=zfdl}~C`>zt
zN(}7;2UI(ubVRBcTeCRZtHW{8(z5pigWRR#cN$GM1|Uj|-QsAMx^;E)vtP-ElMro6
zkECGzXt=KZ!JB7E**blGzC75Uk(`DsD<bi!`-C9=*W%wH>z3t8rmhkeV2WU*nrW4r
zpX3#pw&}h7t`C;jC1;9zY5NDyp3Po)V|jeUX+3xOxAg-uXaAva)`4z3J0<ykaV*I*
zL9DBjQeWw{J~|eyqde#9Ec)5u6vtW=n_LvKL030I;EOGCLPxZp3XlUd-%xK_&jkZU
zVG84>A`2xG&09dG@<yDJ8Kb3?11)b!a*-DP;pPqr*6Bz9svLgfWq&g68)b8}5G=5m
zdO$1`Vo~bdRy~MffgyAQn0W?E*IjLUlSd(le{-^$n2h+TDtc9=i41;uxTMT<poNg-
zA|qkpO`m@N7>RZ|I8+H0sd>@chz9CvQTYSrWZJX4(315?AyHAu@?d8`8L!*-qGTDh
zJ41pzB0A{SLbFra`Y;YAy0qHTnFd1SnTNe2IJjsFw-T)--H4b$nE&>V)8zPYgtH@K
zAZ&8ai=ove+sUW2U5j>6t-br!vmz#aX?cYYg$Dp_+@V11CdmWstwrTVbWv%=G!E&O
zi^~XH0s3$1ckj(s+v16S?d7lOU#fo$*2yMUwOpPY<7Tqa;vW*+sSBwrk2;|vtju*J
zq>fp=t`a4<2UD=DM=DduyQUmsV|awSuK7j0aW+j)q#5}GJMVr<8uS!pfK3OI1vZ;J
zb4AsI3dOn)9jXxh;T;S<=}Bh^9oUpYhN$$xV&QSbEw7Wr5p;Wt@c02|N&5q*5+>w`
zCDw-(BhN-=e7bgG>bEsed?F)1NF3$^7*UkG?L+rKR)n2JkeA`+K30s<@+P9whejRn
zn&iZ=n<<A$&&1I*7}OPIn;<czl;f{oJVBbPRCe*Z$vgkoOvLyk?hf(gl>^;e8?K0m
z?b+#6sU%5{Ai?BJuO755%Wg}wqJ*9cLuey~aITE{5n*Zh`$0c66HvZ|w8Ox|YYPYZ
z=GG}~Mtr7@6HnJwfloR}pz-f46aO&SziG7}y}C07L`r}{!MwxTp)Upt0_NA90>OUr
zw0rT01U*%a2&W9VL{OCIL~&Zl6AcU|!ia$eK;qSTkDcfm-Htw5Po;Oaw%3O}+q;MF
zW@+QyT_}*Xt*^QKCH)Ka{}J}ft9TAkXxyC(q8Gk<0)oB^X&7!+_xLM_dbM2n+AO{4
z8Is*okBjWOqEv`9U2l)nKAP`MvK4`D{Ijqhgd-^)TUN}-4=`|6H?#|g?b4DQ4Y@~<
zpJX`65R-2f-YP+#!xt12a^S>3P*U|nf8iAiqvdwHy<XaCgB6E{8|6;&ToaNK;+;;_
zcgPiy5UGtxx!%+4Zn#@BHfr?D@U0(+Dc`lbab8WbBj!&GyT*VZ7#JEy0gMW-h=!10
z&^0nEe)vquwJdh~#3^nZ>?ApJ7Xn}pPrdDpc}~PCVPxm@;VsuBElSnJkIqgb<_MT+
zzh@1Lik<)Y%YO*Y?9Y<%km|>Uq~hq(5_KuaPvlCP<Wz@@BC=BIT;z^@S3?!pM$q~G
zEH$Ocj0YhU1O0*+{4%>ma<QF+<>}#e#YHoFUa}Yfa86y@#2~)qtuqW;)UJodvX1UQ
z_e8k*l=nWte3blR6Fq#(i?^Nr;Xo_O#k=48(lHScJU|f9>oI+Yo*n5$*)qT9>u)|7
zsSNthT>eh$KD{H~rL+<PMDLWqvW^ay0<%99qa;=W<G=&gSUGKYXC2X7D)4U=vTy{4
zzc%i)x?Mm~<k_p&8lO(RY1l;DYzEj(*^;ZTglss|@)y11c|OIb5Q)Hfz;D2FK!hMy
zK3UoV<pB=djgm|V0cwWS>9q^_a=X~Qy;IgOVw34bh9cZ)@=4f(Zd7<#WEefmrEdb-
zD#{d`KkCQBvBmR{`h`xZs}1~iFqzh-j#KAm09!hGHE5Y}PF<GrS7`BWd~37p&+p72
zLQd>_Q`k?u`hib*>nVxEZr6VCZ6}}d>ciN2^o4I;-3vWXx<PNSd;iX&cWSl=Oqa4+
zqgA+>b;`3<@hIyo*9L5^d`cq@hD*0!Q#^3!N+ciJbIox(x^e%;lIR(YV9Bi?GEd=q
znJ|nUN#qE~sTXRO^O@ZA#wGU2E=kyVPY6TQWuG$mV5SU<9J1Q>>y#OOgR$gUb%-1h
zbae9d;zAwv`T4IWtC=g!mEJS;?Nc``G!rseIQIt7XWqG;6lt-$9Fhj30gcjk$B3wt
zwYQ_iVe02b6m)ASDU2W+Pv{n}tWfietmEva<%q(CF>vVa83WTdL;a)H;;D@@tc=lf
z#ooep^%TY=_-|YK?DQ<j_AcJ{)TrAEt?tyXGtv``=j-ji<<?-o1?Uh?`Va@R)mzL<
zu31b^S-;ykEQ%d?T}IttZ}8j$->(Yx@Ru)tMgMaBTeseV)Js-K<dmB#o3K)-x2Ew)
zM0zL)QPttY8*;uEF;!PV940JCDqW#PlR1g<oOU$m{^^;)J;gV~WZ3O`!QMsKUC2|A
z>*f9qTq=$W%}IH2w!<i5Ly8l0i$rd=1amT6c-HQ%8<0QwsSEitsKQm>Jvd#r+^X%R
zslGltbdL^_(7(8UXM+i`;HViq_r`~ZVBWwK<Ih%U$XpI9l-Xh9%iq$!U;py0uT(LY
zI^X72s;@_<f@h+PXowJ;Vm6eSlw#xA(b1uBeaN!8mJRU9FdO0FrXp*S(o%IvRX~?F
z0&$`)NdPhvw}fwTR%o!0u}^x+42AB{KY9NL?^J`?*~P{(d+oF1j1D;*svWPsJBf$q
zo7tuZt7faPwEl7e+qHG_nH#SsWws7AHyT6guCsG?nk<Ks2RnS`*>k{Ruy8JYXjwDA
z=ce6~nhz{8bRdnw+aG-Yemo-NMYB7k&aD9@TG|N+1ElZN&EsT}4SL*pYv+@XynYLW
zCblZ3hl&zf8#7E<NwDx9R)(>Hd=73R?7~}Z?RT|rg8%Uum?{)DQi&4M1kvr41(oaB
z_-3++h>W^wE47CTd%!&-SKhcRpWn`@h6ck#svLwg>2PRgdm+w<y@)*GBB;A*n4H`$
z$)U7E<CzZxZ~;$G8Lkvt-u6)+Y>R^0Q7L;cv&iYA>A<HNOjl~b5;Hko-^r=)!6zoQ
z%l^JG0W4rVyZ63Um=2DHb2w$5I>^?-E%^MFK+fI@E7oT#{`HqPSI=tyxBlegXWw!C
zEaAZR<7Z#peeJ#PdHn1<U-#^DkDq<_-u1s$>(j^2zGrufdDc(!8NOco2%N6>=^OZJ
zwaYY`U+wY<cD32%Mhl8ynk%j_fBL#?E&~4A=3X%?H5Q4(;34pLeo95L{Qb&Wsi=u(
zDWlQUjw;Rb;}4mI6r$ZxNn)8iiJsIwyBG+@rMAZrJcL8(iQxQ>p1;x4hk16m<Aic5
zd&jvQX@6>X?=(m;G`sf(=`5)xblq8Ji+rcfAp!wCPdS3<mQh+JVQn_;b^Cc$xOEw5
zt#U-y7|ho6pg!1i$3!KqZc*iwgMlifMYn%eEUJ5X2aQ-8hx_I`K*}cDyG30Do2Pfu
z)k~2^S>x_{`z=r6?^Eou(VlkieqaJ!35MgbWN!@Wb;!95sQ;Ili)gqJjW__3ItCi#
z3$|?SAL`#J6HC}nwix9g#qeAdCs`cXM7EqNL1SXXA7}4rzQ!Gw>(J;MF;}<<@>bKl
zP(RDpX1n<fau~|J{Pi>@YQvYriYGT7PC$}&+KbW7X%6RI0pyp~QOfJmct^@BbeT$P
zx`cdL0g|9w=KTrehn3s&tX^%jAXj1p8OGh#rcr!)5?e!Chn0f7gs^gH{o~<unszNM
z?d_A_iU`|DVo`vv^7_WM4x2NhcQ(`3WbY`6COD%W^ytO${++kq!%?>jo5BydrCy%h
z1$^8#cM{w+5Eks)`!D~E_8(~9B2yYJh*qw9?^rXs04A@-HRtkYDP~CAMC6TFgl*#c
zs|OumsOKZR@YxgvV*KjheA<fVMY<0CxfL#<=wc9Ij%p%1O(gE5)nX9fQTj_K90na~
zO_@t`mN=H#cwpFrh1N-S$HO<jbx_g>i?8XD33QSP5>ACQNkB#W+fUyv215S=>10b%
z8M**oI`x=QbD_*<xOe%a_HEj?aAUtn>4#S)q7&b7`S-ZRUyn|F_S&O7JLBJ=>bYu)
zp|4*WXo|*#WYzMWab5XaUda^r%@2E&&fDwhU8-|AnU`dcOy0G~=s{sX^@3??ps$HW
z4R1!VSfwGDko2Q|5ez59QjR;%%cUd9x5!Br>2Nl#8NX!vN4IZg$DoU)r>*~nm&X)B
zLfV;}@}>8_dzL?X<^n=p^Yh?_C}u-u+;Y+KC(dnK7~5XC{9Wz8(Z6Qv7U%k@Dh`!U
z^J;ES<4iOTF~Puzx-J~8l-={<Tr`!sEr!u3qSsb>4k<7{E$5EghNGe4RQB%2nRkYM
z5T;dH3-L)ITFH8Dv7hHuO7vE}4020YxFaIzBpHwOUN1iY$aOo&V|tx*!=1&WS?VN*
z3l}HW&ccIL((eIKu(eUrJ*qlAGB#cMuZeM`;^}mT>(HLg?4oCOeEs0n6Jd)9sqRp;
ztE%lk^~IlexZFvD?2FU>q;e($WH#wPdpsI@+GhcPqBcP+L&&EaMcasJfWmu4I^MUX
zb05BG>kxfTrC8Q0-E}OP_40U49ZMeLS{=(vpP-JlQSXTxz?nOpy(i~ET@+)BO*z~o
zhvOXPw-{^%%!wwZyGs&2nm|gP_Dj41%3al{V$5|J-aOoS^(l|aRx7Z>fj@XUA>U-A
zlX55xS%5>)_gZXr`lDY2tw1rCZgAKFJ8G)gdsxYTudL&jHP%t_@yfG5uB>D8>^mMm
z`-{ptHqXAQ7=7iv->!>wY@U7RKN0W#`O9zA{yAA9Y#sRx*&az~AQGY+<Z&j2$*YIj
zIi)_Owuoney;8Lgw1}iOkR238ljJk`JAV_;UYII*Nq$5$kGxkYUqI{f6a4=XW8w>%
zn>KE21C;}2pD~Cmt$l+LhO@PsGi<voVDkigU_iJ;U~fXelI9?5DN@j~i`(0^>lrB~
z!Wq=^CW{Ye!pMT|Ho=vlcqIYwx$T^aWCg30v3o=ZXRF)GtD`O?kC}P%VHMBeyj*gN
z{hS%y!QPDC)PN#0eBSUw(CiLY*2d8`6Tl~Jtsr~{<_{rt4#^-PGasYno5o^iVKCPZ
z7%BW!450wvgfu?E1i9};J3myDq1kQ0)2bU<2=0ZQQV)_(Y)KOfy<S*FbE%h1{%EPQ
z;JnmRXz*X^-_4oRM~_s&a1=1|eqlxlt>oZ++eSXBjf30=;0&nN-9OE&NgTzgHv->i
zL*&t^t+2Y-Pe+4@5JK~4W&o66Yd`A@M#f-L;%$*pjiC&*I^JS;algP``vg(c^`M;!
z9!;xT2V^fms7Bu055}HX7sD6E_ul@J_7oIfb-7zHpQF|1S`1~9;k&jr+V4`&{1j!W
zSch6Vi)tSDv&f7x&MfdMe7xQvC313EuS5|i*F@XF2GVR1zm2WDiXJ`!#~<)t(7;`~
zacQ#7!E&OX0l~x5J{bk%+$d<{V_`zsp`i;sB=stiu~}skGl3Tb+-2KL7=fM6DVH(8
zMyZ?ao}bZ`zoXe5C!ihSV(3j7HMw_d|IS@za(UWtJD$Jio%419?79P*7|Ni+qhSiE
zp!kj74Y6qCuX@(Xn~<NR0|I^=#vLw4yX$guTn9a5=3QGY?Lc2KdFfpFLUJ)hY2O3z
zdV%abmI<|2iP(ikj;>z%4CW`Pe-0ff4b(2=Y*g+TYDxJ{rq#|~>C#v${V_x)a~oQt
zV3k_~fGX@u$`rigMcdWdS!e+ZpApM=owByJeeKViS*%%*M1hwG!(^7H(slbP_Ud=E
zhkRb~-2UG`?Fav@pY8w42N7?ce^vWjr5)*MVvgg>fA;#>4=C-}Jo}D6cm3=aEA7}k
z`|9^xKN~CU*gX5r@4>sc{GrRCcBVhKbz35?Mn8)CNL<DCUYQFvT-;A#-bVnX#NLSQ
z_18p+c7c60j3@G^NJ~>7B-7+MWEiU&M-uLF;z9=OfNdicN7Wm00nMdEfpr{={)}UV
z-Wr}5r`r4ZT&w!$bJMi~#{LDdcjIod{qj+7)oxdIFhPY9E5@re6W(_GU~WoK+#ZhH
zou&Q*-dPp^<sOnlZ8ZNs*8Uo`QTlpM_OAiKk1wG5(Bd^p(t)JT<HahuVr^Hg82Mu%
z<km?pLv`(~h{6^4<V#=*??eQ_ZH7~#DH5m$VJRaRj@ouP8cdhMis$re%go5k!!py)
z&o<zgtwLs@Mhs@wyy`GZ)&toU!ek3xS6crGQXJ=EPD&^`JdOu@yS?F^Ly%WO=`eM}
zS8l!V@)86P9AqT-I&RnXs*Em1qvwVjD+8iHYq7^{7SG;ZGR<B_l0rZb%;vGD^8RnR
z{J*sKpr4*r=dP?GSFRZfr^;q<J8|r=Hc6dJ?UTU)tL>5;jd;+?x~0ZPl0IIpkb+V0
zBWF!pTG3-HF9Rc}>am`fHWRFf9{~1-Q6=mVmkn+$Tnde=&4iK_G<789!I5}3pMG=z
z5{x341*eZ!tk>y`8h}faUj<@@ti;a6yZdF%op^~Ae1H`!x4uPr3_9c{8py%E{?*#o
zOJucB$^yq%&T1t}6Hz{85qx&}DlImgr_wd&lA}FmouY8$XmivI!qPlJB-WHdWFtsG
z$g?8u`jOES-bc%rolKm%LYJC)4Q$OIQ$WiqZP+lag(Oj2D5sd$VQ8VEt7ZN=Y+W#+
z<aV;R<3$C*1X5!LMR)&p3g4Qb9H`<^{g@8*bTb?FA)`E)Iu-3AMr1xub_I@KRKGQg
zsjg{B=-s&!B<X+wQU(JHu|y#TpqKPRnwM!VgOOb?To;lzFt~|1O9#$$>`f>wksTg`
z!Da8>yEW2&L;D;-UoK>4<c^$z=VCutY?IRz&zo($dhm`TEK{SUGub2d43R;FQ1}F`
z1Ee6A9!iA)H?+T=L!nRoff*ZqdU~Uedjr!4<h&qgfO;^ulz^Jrwq{PdX=`9oy|y~j
zZ3ps^E_^xy7bPRgAEd8a$p{{Ra5lE}fV`Y(Pj}0*kBb5_$L$Z{GqJs8Sj}Ovh5XJ=
zFAl=8;{o&R^*Q?hk|PEp?`~l9qg)2NsHdixziVrxk5%5}Ta{G3=UAe!cM`9EO#3oq
z?E<~8aBo-f2_?tJszb3<TpO%rhuB3WYes(l7l=BN6dz3m9eNxX<-o1B^L!B$JRPm8
z{Xw?-#v*s=5isl`93Dgdv`0xa-J$P+Fv79UN_#S~vy#lLJ?;(Pc5}XreCxyc!NeT)
z$pN_4Q-`odaXVh&6aO#DVtjk!Ppb)j^6cMG7NdFg9gm;=pOwXEo_$r#0F?KBm$Dem
zv+vX-Ry)4@$J(!H->@~>I>stdCsU$;>JTYt1Vs|ML}N-w)cQqy^86fsS}x&haa|)U
z>L>Z(W}l3w605rLCmwdUcc*$Mp}5fMX8Gd5!rL6}F_*9N^9g<Qv`Dy<9BF5ea&>Uw
z1#SjAE3GCV)u?tGY3&sAJe`E)80y$rw(2FPL1()<|C|G6mJC~f(ZNmv#j4Ih@*eC>
zs1bZyww^e%0Z8A3O#8gIcFXrj8E(JXe2vcX(wWWevTvH2Zw>0<i+7g0X_#K^_CHcm
z)9lrI*sJ!|i-^u=Xdm5LZQa=V^sO(#4qZ#mOt$THlEd=lakT{(vUOr=u0`h$$h0+E
zEpKT|wc2g<TV5C0@%Qr|hNv+G+6}CcdMNX{(8r~l&dOd9mt;xxAggzxVsjAz6u>x-
z<BT54Xjhw6_ii#Xm{iT(NzfluQ+%jat6mq`$uRY_EKbq!T;6~mf+GQVRh5ntw@18a
z^kGSiH?hEiNmH9QYkz`%q;r_==3yQ0+}S(ZWyao@m#EDVH90FS-*`G0N4IDnPwSfp
ztCyelWIzX_4JJ{rS)!i+x0JJCi&3K(Q5r<0o4P;w?}#L+B9W@9A-rho+|}Z;(*Bb6
zBivb;2Rt>D%!vylxievaY{($RrxBSI2!;sjm5Eb^ebpe>X493jcoOjmf)uMq^ru3*
zq(QW?|LBs|U3#(6CL~kP^nf=<L)YaJ*t8Z?FtzoaM+cQ3%LET=L2trv6=nc2y3&hB
z?}9{FkiLA_B47jVVJ&xaH}&-2*1Da#j!3$I#q2u(kju9J%sXEm_8DA`CuLY(ng^w?
zl^yDn?sAOVU{?%`r@aGg4v>(331HE(n9N>iMW>o-ufh#q9QBww2oL{M&9xqaxc_l-
zFE4=rkS^`%^yBwSIeye~E{Z>7i<YuSs@v=j+alT0RzqIMJ~!@!h_CrTwyjG+mTjX1
zsK+Hq*!IJNrw<CBc6BPyOoo-r3B9?*&XoGE_KQkYtN4%vxWis(jraPpUyjKr2T*CW
zxx4Myk`@qu*qi=#w=>M5VHZk4YanHCt7^M9o_+pq*v;$C=&0u`CTi!XAa^>ztvm2n
z7(IGnp`sdF3~%mr%8~XC$SJCm!mBItV#R+OJb23+&qxiLGH%$ZD0IAZ|D9qf-g}v8
z{{<QL8_Kg%{>3?~W|KfAiIZ`y^dx^(aO)L>NOn-&=oCHJ%H>U0xBs6r7@%WS^v-Gf
z2az|*#;LWTM=_N4+Hm8#Bk7P0vrZC1z7G4G)gHWee0LNLNa*d3=R59iT5;NY+ozo&
zK1JSNh2j0a&tyY#fQTMG)lO<h{b9M^_BJ!aKDpc5eSq|8UuCR^;m*>slCpo)SKfiI
z{haovi4`RBVNI%3z#2GS!rBIRElVN`dkt?_3Jh;brB1$p)Da{Qv|ZM=y?~dvpcZKu
z<N4Ttji5M#V}Lg1&`bU0{V`P0;FS#1&4y-@_ILX3tw(nQ_zt^!2T_mH9stHfX0YM3
z9GFZzungw5S&`S7j#^1K?1(q`N%)9AqWz#m;RU;o2p0_?2q9O_AG6m^snCn_rw-=0
zKoQ89aOKJ5pi4PIO7|4-RrR9j4V;~dNmKN0;tk3wm;do#taT@I2f_>~uagW97~jK~
z8wmL0gVQ>MmN-v^4*)F77}yEh?*#bi)@)9RvQ5=iLUb*NW{XgdNQ57rbzJxupb{es
zO-Ml+#$je85yL8sR|`K{Fl3$Nap|~|3Un9stS-6)1|hRcODZ}t%F#d2$npt8xTF1=
z<m70ZsWmc>WpFvtL;X*0{Z+L$@RP7Tg5RfmQVy3#1ED|455-bZ#lEUKs19HbT9)19
z!lc^9?LV5bcg;igXUX32V;QV=hvFI?%kMZoTLMGnm8<;E<6nCw@4XUwewyD-=?9+p
z>9i?}@{gHxRH&%yrEt^|Og(uFP=ku?$#yi_cOck@>k@*6d^GN+$Enw6vPf^x@%^z|
zYEj1~vf$3bJs5B@FcWC4;a*+WMZczjf`CPeMjQ(sW=t~8w}gLyjcga=x)qH(2~K@@
zRGFpjuNKhx(C-eQ!617A>o>_TK2+QNjrK6o`|a)+?cA9j?tA{k@W%sdz6nNqoFWsC
z0)0r+WwO8?1Jh&j^E)@dw)}1sCV-a*U5!FW8N=#N`ptA!An^G_5TZ+emT&ucRIDn^
zKukN@a0MaikcQZzN9Jx|^|koni*s{G{s)qde%c=lhwJmAofzhD0%<WP|LNr0|D1j(
zlR7RaBglN1#*Mq+ToCn>yum9pQlP$aeChylWi!PH&fr0pBWWI-`#I+)C(IqgP#VU6
z?o_D=E{UMj?5)ji-0t*<H^91CpiOLo*6x(P;VwKdVY)x4iFlUflxh&MpTvAV!7-F1
zyFNq5@I45q$9r$r^{j7`Ks~rcMk>Drw_}?nQ$J*%NR7q}+$L8FM#PT>5kk~Sqf!8~
z0`6{4)6GlEECvC^RWbl{V_8OV-(gQaaQQE_AJ)EL>%mp*BN|&RZn<idoh*)3in3#^
zYO!k5imRu2yTS_cLrd+=6g4@rmS;fNKRHaon0s1fc`KOf2Hj32*}Bz<Oty#Fpe@i=
zSOGgl;%VIg%46Vbx;-l_aAiP13NzD6Z_%GUys^E@2lwr>+4RYMNO12ynT`?{3>)xG
z4XnnU^X*L<Lp;@IZ(I1KvZ|keoqf6WeNEoz@BHr7v%jFCfackEbR|P1@BQCZ6wo~T
zs&oD94>R-k`Zv7upGu_o!L42G`?XKoI%p(FnK{nBP?w*ukMHFnnncNsQkU$^k3$S5
z{ortNbP5y`4iT;ld~jJ6nt5)O@VJpmnT`!OuFKU8<Mx}UX}=rKu(MkG$+OXvJPQs{
z*q>)Mi23%i??PdCv`xJ(DuiqB!&@``CGCr3Rv&Si8m)P)&vHJV93R0*^U?T>@*Gc*
z?^2KyKxgWs%hO_#8yO&bz_kF$B|rTagMNUgsQ^T98o??7UWFJM-`E}XQmE|!t8_;M
z{N%83Rb6Hh*Hy$o8Tx{Sw~-d0b_yGXm7VVSBbgS^-R#UZ_s8QEjfkMKbKs7UKF$_a
zXS46eUbP&~hDn%0(_y*GGTh&X8YarS^VJ9s1n918VeLB0iP6s7VQkT6XNODDux>OH
zbk4=)zao1544J$o=o}vVEEL))`65!TToY1Ya{oo#fyYW?HpwxzsDUjj_gFU1WNXL*
zs?;=4oo^7nsFaC=(}Fl)Ado&%V%z--M|eeupP*PsBL<cEt>L(16_J<5>~0-G9%YP%
zpm|^;C4~#&Q3c-vUI}wc`W5BI{qkZN&RnP&PzjS2FsBfb2het~PdTp4OHY%mM+b~m
z)0%1xVX?UU=}VEz@1&B5Ge$m>)hMZyL%kLQ`M!Aw3YgW%4#=Z9Z+sc@M#?LY`whpP
zLWLv7BHX_Iw(%1v@ucopi@I1rWw7lNG6GrGh(c1^rPmmCCt7|i95=7SOh%{JDec+(
z!@(re1=1<~vThq5N6L6~K)c~Dm|gIPRBSqoqFyBKy%)w-j^_gaI|y#YOkFh%x0v)x
z20;zn_3@^^csS_x%HPtbD}2=n6AYqlH;h`ry=T`iTsZB#jJUgMH~xys0sK&N`+w#7
z*&kQ;ym|K3zb&3px#eizrG5I=o4GfJA^Uc<XKWi8AY?{_q#3Uv*;17SW7ir1dc1>@
zCo9gmR;tF%(;r=~66!3YWX&j|#VU#6*WILjhlB=n-AHt|y<gtC=)r0aQ)G*&=?mas
zKqcI69!|~&2Nwh3gw)&Tv;CJNFt3(59~av+AJ=t27Zp*h3~Ut?k)+TxG)stO?$RVm
z$x6v4=}@X<WSy91g+&6JsOk=p_DfVw&m>B}KvL9&5aCyzET3PNAhBMKmJl7G*1u|2
zdd0!PhA5rDt7wq?C#^c^#AseupPXFe{$6ZTfhBSgM-}g^gqxt6(7FzCa_LpAPQM+E
zhJFO$ZD2+lzz%?TJ@~uGAOn@67&YG+KK0bOrwH!ATtswjY!VXe5M+jK6{M56nEOSi
z8@ynTR%tPgoJ!jscXC(}#v{Y<rAGWoTcP$lFl0O{cS2Um**1tY9KNetA!|muKTcOS
zLpWsdSUq(?uD{AWs>cC}Jo!`JY;5AJ10<oNk!HD&_HXbZQ%2`nV^E=xF>&{6lF*E(
zZ)d^k5gCC#erOUqBL^Zz2!pccZF3PG-0AE3=|Mi_NP$JRXn}*qrGVV2#l+K_7lAXi
z`)_*F4e%_EQ~A&Wl>0X~cvAVWOoPpV>UxMzFN$Plbt5_%JAwa%;g<KFD2ntTU8Rn1
z3E#>Gwmj|YwJ%makO;Qg7Lj=xqU8@BSJgMen69LIRWN0Zj$k4LqcD{}%iE{{Qv&9o
z#qA+eyp+AdL81oyGkH!migGHa+BT{Y<gd&gf~&)U%A->a5KsE$y$mkvoP0gR*l8XP
zLeSOHlaFi3)VNSwdXfpIy-S~%N!<V*`x02<a?=&oXU7fVJ#sNV0hM1tlQ){jf(r%S
zgvF_0ljk3SzL$<`urx)CKL+)$=v`#vh09BQsekd-BbD<tWE)U<XDk7mr_$$*4Zm7!
zvoD1r_GFRGqX~)N`!tkXU|G-?yhxe#i`<L>tSG!993O8daYgy3tlafM(%UfUf|R(K
zJA*hI;)j_&0U?YkidCIjCQkQn<vUd{8ARmF%So@EpgSQdO@n}m?<ENg=Hd)@^W~F^
zXf;M!=nb%X?vuR-6sKc%+IRX{|71j4MA)<TjzV{PN$KkOW$v%n1EnpX5}DjvtNiZe
zKh?gDOx;t;ZV(SDCC~^!6X>ua6u?UEzbcL?e*rPMPzW1t3F}uIa$?Lle8F=`II|Rq
zF_ERA{&Od{w0idpfRp3Goj;IXWAAWiMcr%)y$NH}I_-c??@mkx80-vXO}CB;CjNoJ
z!g<{txC!(+@N1aRBSIZTQJ3bLC-2VR{-!%F*ouxh8GD&Gy-A_obBO^bwoCe)Midwn
zX`SPLy%l?%Di@$HX#BrN`RELqS%RHD6I^gt#S?zd<zLkP59(%bZ7irX60#flb?QQL
z`+{*mIV$f;@@mA=vMnjHul4|OX8F17+)@OAO_RTThgSt{yu2Z02Ll%B)g}yrWZgFz
z-P<Ypd{PD)F!%%J#|5ow5lN1I2zJ~#dP69vUC6Bol#Sx8+UR_;{Y5YJUVOtD2~8cI
z_HBtkX9>S=J}@H$oMdKdLtjLnJOSbCD2)zwDIlO$X#{|Jf*n|$m7}L_hh-%aaPRU7
z?XQsCc&nPu!%YzB7c(X@uUv;yvVyWYd4(ATM9NA_T;#_`)Htvgk}Ocm_k|ybck+;2
zPV=_wuPf0svME2|z%!p?z{aLsl#ES)nwX3SIN6@tzYzeBAsN8+C)u4&=C>=;OBgCZ
zxry8sSPhcUc$cI-sGOvJw!70}EbSPy1G^}QT1*Z-7~W!*FOr|u92W|!F7-I9s@9r}
z^3h`4D@@w4I)clohc-0(1RYSXm(!WR^o{8z&UffU^4e4rx9Pua4`#t&8C9kB3V=PL
zEx{Di!Hh>kKU!s4i(#=dL4v+)tE>H=un4_hFi9$+luc0TQ%Z;Ifb6Jxh*T*}n-^D(
zm>|H_p2-{tdA7NKirPvpSq8^4S55o=YL6J31OO_qRqjlaA?R=NO9W9MKszC`LFf#C
zuNR9HreO`sZ)k_a8u+J!3eq#_nS-JU66VYujGcM}sBdTG%+_%?utEDAu3cJ>obAQI
z^RGNHdt$fKS*>xvJ5=DH<sEDmqX+Zg<ZJ_d04&Z{mt1W|N2=bwdAQhi&4k`@5HxMr
z+C;woB-NB1eYRC>(Y%I7C2Hf^>WZKsJpxywP>sh*ccE;@4`f4p2YRGv-!^7IU%K=N
zz)tXP;6T#2(t)=k4XnU&w1a^)43k@TcAyxJt$ee+KI(0H+IN%FWOjvaucs&rs$KZV
zA0^}ato|na0byBDO1`<%vein~mAE%Te+_OzW{H20>MJd$gqx4eLlc`JC)OO)rk*i#
z!N=OzLE4RbA*N3T4g-D$K}j7LrNyw!(uC25R4df9KBz)w`?L%ucV<Dn6T2&!W=b7g
zE9P!sWYPTZ+DA7Mxb;(`oA{bmP10T!MJMN(JF&yFGb%LXJ-by&Zj22Z?(X>7VritA
zm#otAw4N-a^ZswT!_Z0LB67piGS;M;^^Pr#?DuC-)qA7#e{e3%Qa=7`&S5;Byzsh}
zv-k#JS8$#rQZCrRVN2dDszA0x9?F#Pr0|!%_QTUJ^ka?XgJhDX{VKKtYM5;U?j*qS
z)Xm8VF#oy>$SU?Bl0cf6i<SRMNVaIX^pCx;Q}og@5%6;IV+NdeF!wO7e7&e!2(|0A
z`jmfd6F5xajVX!6SuhD18NYaLJ-@MA+{|g!#+J0F7C#%f9#i0RlSrjFDP(;7u$}LO
z@G<MmGC97PJ{k5q(+#l<<Ih~@$D%c4D`;dQz9AFN_%Du~LC}HeHtBXMV<>iHtJdD4
zf9+MixVh*bzpv=mbJ^L~@5^i7%hvk(m)OGWZbBq2eo~il7kB{?0AkM(M^m<p(u>Y@
zgSd(cvH^P-RQl1_NSt6hj2GeZh4td*ZgsO@!RS)C4~EER;6eTBvgX~YJb}|Lf=Z1w
z^Y2MK^ntBH|1Pj>^l>2-_%yQyZ97xV!)S1Y*;>AK%q#}KNXTf>X9}pTx_-#=X9}8)
zXQ`eQtAa2n10iV#5fYve_d?dr*BN@C5yVqknXfE~2$+b|(dm^z{mK?&mRf$nq%3S8
zcnN8Y32;KWX;3S-opHOKGx7%je5VDDnWJV(X}1_;a{~?}{7*>Ax8dv*eiBr;3IA#U
z#|a~LA=EeVNB|y^SE1-aXJNZ!_COcI2Hh=Phs@>}rVMT@20hSI<gHt)Ge+Y;wCfK@
zg;L@UnVlJtzGqAYmpO~peSDjC2)UHud6v05JKvSjXOfBo>e$WPI1Zq&K#|fP8^QVM
zw)-{z9+e+3YO5+98m*#OFu!-Klk<gzWjLB%w2R1D9*wqTBIZZ8Od`4u3HES-N3R4<
zp*@rwDT^$dcx8H2T7VNXjMt(dc30ds@o(ge8o`va(Z1KKX|Bcn02E#^Lp>&$3e66x
zi1Ds8t<mj90*DJm0*|W;^J))-F4md$Eu&iiK4aPgV`?<wP)3+dv*7+FhAsiTJj@4S
zXmqLyH;;Ly%iP+&=vxK$0B~m-d6NOrV8pCGs3_5H{013QC}Hfd2rqhrMP^!wSeW;1
z`PxrvU%IuUx@VLvxwbF>UKF53(j6jmN)wUHXo<&;0A3d}C7i{@6_LyTW(MCz1tPV#
zIqRo8R*++A=U|NKWFUmF)1=$7qV>g{VVjg5kqo1xQn(9YScR%EV#cSg0rZD0ifJ#i
zx4hvty*|-^;soGLB$h;vuN6K9HaWd<G<^hF26P-nkq=>>M(d<ecy_@AOj+6b@+o|?
zuf;b<M@v>mKC?1XS1y>`p{oZsN513m3OPt4<t{d~BYDA*5}zq?SS?qLE++q_Zdjt!
zwE8vNKJ{AuNnYQF7fqv42`wY#Whp8u6XV-bctTAxXN4mnaBoB13XA!HpE6L&bBmi}
zdsxvCDPv>>GS1*_4*N^n#h?N&M9qR<WV9!1h6fw}WhYyt2HKi&hjtC{w_~BtQrdY<
zXHyOKjdn@m9Lq-CGozJR6RuR4O1$dH8Cm1`VN8^#TeVkll~4tPMd|i#X(uq9#YPvR
zBDyhfC%bjgJEYUOMIS|_{VG+;L$JCZZ0bKaV#*hjEx`Z4#{zSzw6St$X--zgE`7aA
zyKF*YNEg_%>l09W$Qk6a;f+#bi~lDtVOAM@pn%YN_SeAjO75G=3Te~4U%?yTG7kfr
zf;WGz-`vec#O}B{%=7biZ`56P256_1L=KK>VlW9fePQB_`$8T~(xLtExH{YaU*Rx!
z=4E@~)~CJAZSO}dpCLNBC)C5O&BcjtCi7{+0Ec#VqjGBPOY>qUSzsp22slV_`{oDz
z+=&iPvUF?`S(BN<_eEU+PxJHsy@TF<Pb|adZxz~KrBZP7I-Al2NJ45UB{Y_=q5<_?
z<H4HZ4gel(B#z1m@eWxiW|i;(@#GOE1{B-9o`F@>Z0HzwZD+vX1IM1Ew3?-r9W86u
zFClD%bZJ`I>%F-d1)3B4l2Qiu((9WbR~cU;6bW7ma@%N8_{g3;sRWJu;^psY|C#nN
z=@PigiZ(7LXU@r~P8sf#@;c?<<%6mtZL%KnM57YXg+DVm8380Q4c`h^WAHY0s8>mP
zbQpyz6EX)hWUB+ciq5eRs!rxUn`;8!m~J$!V7n#6b2{kv(pf$=3Kn6)%poF{y~u)n
zDUt@eFvzg#ULNr9SGJaU&pu)mpD8sO-2$ti`t$LXRYh{i?lL!yg*^6NMfB8eAE_)&
zAuGeQlBQFaoxgETN*(-`4~EEriyC*LCL2%t0xSx%ncXci^c7G(lC<R4ndsKHiyR-T
z*PShUAc)uk(o35#W(0`4y-Qbw7xoqdckg%wqYvpuA6}GpDo7PKKV8G@frICb$2QeP
zY;M7HZeG*%!8)2gc}V-c7np;DLCdW4Q^?r=SK8+ZhM;4xFa&EUr+|p@w|nAavLJv~
zSFNSZ-8()$l7%-uDJr~qm!ZAQENI<;W~!|Ad^3ai)hWkg*O&RER+pS2x|l4?IPwOJ
z)U{=X9kw}YlR^_d1$Yyp5{_!$tt*sUQBAa{c8llV^z1IKcm(>~-9I}TF-UZ;pB~zE
zNlO=m1NN%B^VS`I0VM$)%(AMl+{(1?&^{Av1bIl3YI0ow6%#x2k=2oKDp!w_9Dsx@
zMgk5|(k+(%D~$F|81&m62x}-M7}zZ!>T(!az#t2T8$#1Wh7m4Da>4mz>e+SQbmC8c
z_x1xRFm%$B)AcD%N8rqbpwU7jRLCeG|8{3Fg;&9x@9#x^#%KMk%YUZ7pnb2*fP|4i
zsz0hyVjBB8(#EF*rY@Co!O9{^d{Sjdh)?CN@HLmE2xfo<HLGfr0k1dci1cd3{4&Y0
zoMW?;aH<t!{a<ECiN^e>rPHYg5S<FGQOir9WkK&V9Zk1w*fpdG&V&vjX6xeeW*u%2
z<1_%@3ci%79&mxCd1n9uRio=_K4^7jdpXTFrRR;|Qk+j?>XO?tln80Z&TMA^0abhV
z&Y2_^Y3IkvM7;`%B!`PB!FJ-n&DchGfhxDFaBllR=b0N!0)Rk#=ue+MVDj6<n)?JO
zU42{;+C<Y=U!4*S>q!Ly9E*N(`Rm&EX<xE6l$sPRU2N17Eq0*bz#Hd8owqV9s|=YZ
zr?^63<chOXl5IJ|MauCP^5TsD@oD6TxfI5mLNDv|ror*vt>L01{iBce>j}Wyj82%d
z-!U0hhQ^1-0k&J{Y-#DR29Tf!9XB9E#o>j9T5PlUS~P}6+M)!56yM&xKc;256*FXd
zKc2T~i2?$+J%JB*p!qvp-I}h?GgKh_im<gXjw#UQ7hsP{VmQXwOVX7yWQ>H5PjmS%
zFSoc0-%9=A)09qb7AK{5x;$B;Jd}&WH%f5i`d>X7hlOmUc(X!?k+XDOL%GqeASwax
z5n)mo7Q=Whhi#skxy^{w2|O61b<W^Zsv?>(mU%@EKmo?vLmW#giL9+{>wBM9IAq)~
zmF*ydr-7X|Xs)232h}dAW60+3PBBP!E2pEi?*AK7x%j;Sjq(UVFkkqKIDPamy77VA
zlmVRNB=K+W=C|keHfq0Uzx!paE=@bG6Yu1SyGOv<JGNgjS00RV+MaF3oBfx~fL22C
z0(6**)qTrWs{Q-;fX}LUOnDnpg20WFunECXPGK&sSRw??RbpH4ZRMWHRvsfGvV|*O
zpMGUb6Vd3_Y<o^cwn$ufbYyxb=uzg-9t<|SDZJi`b#K-4bMlTUne>*`3yiupu*@(O
z#e>XB&d>K#Z&62Qx9eVxYb!VeWQNph%ZbVTbnv}`$+AjD{ZIk|L`p#HqW($$GewO7
zUu}*1@G7hO9qseUKfn9ht5E)^9ISfqxlfb=k|j}dI3)iphFT%3M3t^qjd09_u}bpK
z*TTbV*a^({_qqca*)uu3Ir3nH^h+2L<U;d#B#gGkxdTNZ?RX5jiZ5WbZFiuOkaWD1
zF6hUd^w2ag2sv#6p5dfN&bCFaGQ0QG!&6##F_Lybt35ehrU~U6dMI<C93<?i^^vo7
zoGCqJ4#{bLP51dw_<&-w-Y^i$GN-%yOQ&s!xBvNDvGz~M9zG%l-@-pZm{}gz;jw#q
zy)^cMEx3M|JbjPDXTz?a^7Z8fWE0o#7iKWt4yZ^3L=1}gAIbVNP=i$O$(l2K3hG#4
zbZVI+P?RXs$P8k#ZFb1CgjVmt?I4_WtT2goQySp1J9qZt4r9ZZS5z;PDDUXwNyi<H
zNWYup;KR-dwHql*LMLN%`$6<*RKHa3-#i#v6=_7cR~H-mAf6r9{ad3>w@h2bjG+Zo
z`HyC!n+e&JB+;TX$!b}QpDOd?sOum}q|0evvy;Rt1&{HWWL&=u<o-h?J&l*3gdSbO
zo=DS<>=XMaX}sokuurlvB44s!O#LJJGya7)9Z<}K&$KcJ10#nUHt(c6eT+`KlasQl
zte#Ip2VuKmj+ZMx!NO|9dlj$_y-%OCjzzGFcRms9ubB5F#8z5w=IKIrMawg6^l7}i
zU;-H7F1c%bAR;G-*THle>ZZSf<sH%SO#Oi*G#^+MWBBCqDfzJH7s!GHD136Bl6S~6
z^5B`~8?h2sFeH9R9?}mDT;ZKg1{6bgBg!XMIyfH#4$^}Z9v~Xv@fsH6;W+BUoV#DQ
zmwB}eW7kerkj%8JZru*!a74#p%ZQ-W=AsL_*UhWo=Dm|{$?(gQ<HZprX*59>Y#4)s
z+I4Jt(JMFh?)9ihSVEgt9e*0kD>(AG+r7J4ys#N9{d(J49!|$u+e7}Jfd%6mK-fPL
zUSV=i_~5ccinbU&*3A-MlXP}KSp(j}GFgA#?1gNNywG$5pUSI#3xoL=R((+3PKz>v
zWMWY7ZKf5C#^PgG@r;3UWN4=AzynT9D2dpaz${iFKDnd$t!iKoZ|p?{jaD$Eg19Y_
z?w%h$gm|6xcFa^~T45U>GaNw1CFIwoi@yxT#)zInyvd~RlN9h<Eym)JzN>2!{<={6
zO`7d9b{4)aSQ1hKW~BOE%sleZ1cKvM&Z59EL@&yQhzTgvMjTyNVw8q&RzAZzDyM3>
zDr9F~dt{QKW20VsMqX8$_%SaMay%ft5{fdmhHet@@KNF##AjVP)22@>+I_I*UCXvQ
zb=ig-miQ2N0sa%Zt-uRbo-igdBQQPMw4=kDA@g=+%m%qS;NeUxFF#Am$>w(K-eP^W
zy%|oKXX(2(&{in)vhJ_|$9Ax@djWn77K=mIs#1>@2ph12Eh!)ykM~w>?Idx|ASJ^N
z%a{xWuxDEB@zCvy_dTNb6FItjd8++@_KjEEpmO&m*DnHeeNB|8EU!0bIWy!f;;>$K
zo+3`y;o#M~lz+?j($t(ayLMgTS}GxvG8oVQR(y6MeG?Q{B8Db}Ia-TO;S_@hD#q|K
zi$<R=1l*QB9wc|~6Xu%KXsCbzrDCf(LM9<xg>?H!7$r~UJ8!d}+)nyjR4>^pnE)-X
znSuE?x{QJA4ggeu1A@5{Wc{r6_Fn-h1~?PG8GZ>PbZrK4gmCGuYJPuJgis3>Vv;e+
zJ|p5K!6V&k(qtA=JcLN|l~=XTj_ql%%3!b3;vj$rlbdU2Dbo3=TOIA!$Zx}WL{@C2
zBoY+uY^j6|0mN%<ERRTOOK?OWVNb6;TxEdrMmw|5B90=J+TThh0mOKa09qgvj~~t{
z0S5gTV4w@yjGl48F_<3;J2+wmtpSlESC8DYZDjrPg9x-4r~*M$!PiC{rUzs%l0ADd
z*Vm7>X;LFYJlkJe^$P><=-9Qkk9X{DfZUVU^R~Cc`?<L~y{O8t9-dBtTh?w+?(a_r
zF2jSxKEG*esh#VSt^U>?`e`Zy4e1dRM^p^7k{DS`!UiBq=V#Yhg|BF5ROs6fxl+1n
zcbzIuC-9Sg6%;UGK!cz&i<Y*en*+z$<Bk)}G2&;Mn>Sxv4>Ik`vvJ%h3wpJxX`IL6
zL;v9A4&AG_ww|DRLtX>%6`dgZ5gl=*6jqPFBiK~?+!%g!;fckN)rKZQeRd9D6C55e
zW2SWNiDzX5(+Gr=o#CVRHL5LUyY>lU9H?&T-+-aUla4hkV5jc=iZh|LbHcc*1Ptd-
zQziuJ3Frrg!p-r%@1Zct5K(?ZkJUkZ19zJ4TG95tF{cYKAoDjKg5GYoc82bJq<<5c
z5`R5|YCrN48jkg?w~_(*QT^NLC1P$x2MHq@<sq^sOTnd)Jz&Z5P|8sR3|=0&s%puc
zO!FW=DsSOM7Ja1vn^&&p|H>PO_zol+5O1}m%?-!S<k~}EsX8-gbeH^C1lOQMhosE9
zl=eyW#iUC@n~pbn@C}ENAu{R>R3p(ga7l(9)3T2_(1TUrl)2@_g5(AniVtDI5k;g#
zhdR@=8TLw(Fs_G9T^oAAmpg+gnLv#1FpoA&Id?JY%n0)6cHk1jRo+TT+IY;(!DHz@
zec_*vmJgQ2a8gcyjM9RP10E-SlxAIqDr2%NCSdGBXUOEgis}(oz4p!doGTTeY@w<p
zn}Ju4e=Ea#f|wqLB$vK4>nF+O_Bb-$>e#(8Gtm?S;2SRgH|_2E`>v+~a4DqaNQVJZ
zF&H*y)A+Ji2ZeJ>h$ou%wT!D8C>c;J#d8xeRbM}y+8}-sCdz<?hAd0ir*&Pb2)G;u
zMKMf4r|c3oF*~S9u2v)TrA~o{>Fzv()5U=4R#bGd)H|p}!$u5GjTZyGaE=}XOz(h#
zmD;W2P04MOYOxrZi&sEIOOa#$-Ysg*h*IZnmV?^DLD0fmQ<-m}x{5!vHPK(yzD^;{
zn(NOJh4=7WOs-0Bn9T;TWF!w)Tt&O`no@tFHqXemD0x;|Rkm%ZWLC-VcZ3;f8?ryl
zn(Jhgx!@LxJ#7>X&8SM#T_+#6JClAghmwipEkn6Yd&Z=7XSSWuolQR*fG}8HY<Cd5
zgA(?#r8Ug$!#g!Gy}KB}rD@vk&Nw~av$PPxmQh}W?Zw<*ZdX1(`e3&nFoDiWqkGKy
zHpaK6`1)oQMi*yHE;X&*Ac5{RF(qdG6I%=IU$Glt%F&bDQn9Ua=Eu}wuH92sCG|nc
zf|*&fH^Mut-hOs^by>f&O=iDckCrGS>TedAo7AGJ1c1DKvUhh)<&$m?qEvVUlit|(
zCR{MmTI+QG?t*A0?vG!3^b!n^nm84czP%GO+OO@O?5~W%&W7b}`tzZ0^Jdc`&E0Xi
zp_<%Y<%j#Cbv}6cueI-{r+O)wJEAdGf_`Sg!XMDXc=ds0l~*l{a%}ne&v~JnGh9i?
zOR0Lp9|Z>+^Yf%fb81?hak8kBlY0S3B?!?6aVV|9(V?WUqCJ@Tv34N%Z&uEH;Z#G`
z4amJ7ymW812j9gv<g{*%`>-biA3d7R*1|?&T&Cnue`4!Ng=D%;7Av*LhZC7Zv9b5y
zndCI&p(N}`eO)c5$~th_mH1w(KI5iYC3ciK+!w3vce`kMkhj3943Mea(ZDFlBlvWo
z<s)ctwC$4=j3Pjt+D}T)__EgQV9ih}+d0^c{4UMh|DXl4t8wz&3xm$h?fSvPy57fQ
z!B0xN{WzsY$N)NenJp$?qLjKFdWEH))Yc!K-Fj{nX<q|sxFUIChPp7vq<PNT-*7pm
zS4%LTU~tHyy=D|xI)*?Q4Ngcs?n!8ro7id842y3b%90l6C?#K)iJ-h!{+}+d#-oW&
z`WFB+>D<Q!0}R9z?S6UpEPzLYS#WW@mr%sYo_ugbCe4I(jkc$d>E(e1Pk_U8jm|&_
z%-z+_+sl438aM|XsVla#UKQ8tC@QqyAX%_lIJ@y|UFN&>qM&+6_ea-1oenNyH5C}<
zEO>s~`mo#DySd*94-doD{-TsVDp%Ly41T#n`(PAgqu{<|WFWqF<5`~3e5yP+pH9(l
zQV4~{aB|e@wAIeYB{f+ls;b#2oEw6PYg?(r<eR{sOQHwgo(z~lbqf|j1LhT)P#C-v
zw7oJ+CM44$%}oLH4*PyKf^40PNIzDr+F@De^t@JKxf|Iq1uzMK0UABFEM@W=tpCJX
zo(wC@op3~F^3VtpKKqAIFn>w=cCj)igurrIO)X#r*~Qgyi#oYDKbhvdrohZ5k&_9z
zuDZXECHlIwlOvaB;tN2~^Rs8Asd*%t-P{9;t@Tb9Evqann(>Z7lXQt>p{b~0%c=r;
z@MLF^R5}rNqpX0i*??Lc2Z8d2m2CGkzdr+BKvEjbYnuIOFnLrN#Gq8RcnVLy82Q;+
z`nm9q7<Nu0Abk>4FMaa)PVR%wXv2C18V!nzmdbcs{+#xU`iHh4eIPcJ^Ac)Z{*=Kl
zvL6jc-qKt)!hhV5H(%#gMccAc^_b-%-5j<-om}di7+YRBnr3qRkon8s39NJEfG2)>
zw-TOn#^O-?q72L|s}_9gx;;-v3pyuLh`@U%I74kc#$(ZgD!{!Kf_KseWDNAQpsr0|
zVs=Kw8RZjz0f3_MFbF=l;A~|lpdb@gH(Q76gdUHUR~V6HgWw&EyLvfh>M3yx4QxZn
zTTyocTRy>?rr2b6{ETd$X^x=Yfn)`D!7Rx}YMrS^_d)4LeS_gMr0`5@=*995^Np2a
zzy5-)q4t-xuK+)w@M+iNa_S0*ZDvb(D34J#M2Y_oCl%esMc;Rase^<MnD*-@dmGsD
zNKsXE*z3T*m%B;-Y#l9D@x7;S;Z1bCb<%tDxJSWea)0eFnYTgY78Z-sL3Xi=T|>UV
zkXq4y0-ECypN6}M`c`*SuB4m}S$y+MMNB!~{*}C+ON@2SEtM*t`g|PM&s!@Z7lD@Q
zFc|`gCy0g+0-p|hM{j&Dr%*}Cja_fG0v-NG8cizT>Jh9N7P%iS^_;^yRdx52atQE-
zb=rvlE88_*R?QL#04A_&NTJ0eYrr%aA~hg;LP8bRAPvoYD&D|HwqpGm?W<(MC#c93
zaw#8CzM<iSkA8YJvgm@nM%aivSgLplR77OwuOGb1vUpHHV)0FdNxj^xo}ai@QB;vW
zV$B&Stq*o)VVC{JtYbdJZ9~rT4r*DT2;5w5FW1kgGG+pkSMUKM;Qx}MLDXo99OXo#
z;yr5Y5p;N(s3k_qKwlQk6Sl}dobDb%7YX)u6lLdd+>rK|O`!~<h5`grUuKYubtZTp
z%&2VZ%XvAo%cVs(V>_o9=lkbpz*@X;XAby5wvy}-dr9#)`}nQYwoYMs`yMhIM19yJ
zsa~V!L`2wtr78}wZv`86rtB6FEcQh9OqqEa6lpEx@5^TQSNsOGpRa)X)J6xzJnk^4
z+JsQtf|!W>H||^n#?~LU<5Zi%e+bD6g-AA2YDO}5YesgMtdFEJS2I{i%+CCz+};ls
zqmI*KBTSt^<E_dm;0S7Gei&$jz+Bg1o=kR2y9PiC`~ebf=3d9<$aX;e7QLllX+QNc
z(S8W#5wMz)2X7=?j1)$k4=zXERK8i{<JkLg#`{7p1LalBI?fJjR+1rcB8k)QYXy8_
z2XDsd^rv3E9);eNJPT=WoPIwmJn{!Efe546s%~r;)E<e7;PHW=Q@6d2UB^a2^Ho3#
z3vO)r_jNmQ{q1$Qn|F^NOnS!y`t+mx(Nog}1alQog~03g-AT_}oQISBX++7nB2pod
zLr|huLxxUQLwEAz*gZb-tQi4b(iOhc7r-xkp7zaD%S1P+n{c*N$0x>FJUCgTS|3Zy
zb9N=CRhR;pJh%LC76*54jkXU?7fgN&;h<Ta0zVt(u~Xmcg>#q!R@?g<W;ca)ISF?T
z2VQq@_{LkKQ$ScP$na$#59)zhkh607cLveI7y5l4O6-!RJ(yVxysmd&enkIikn`WO
z^^@0idl5nr&nDjE8^QA_)x>$QfIk3TU#R6>6^n&RT#C=~^GgE!rjwqfUiDp36r$WL
zV*VNlA@TbkNJ5Ag$32n%1+#wz+RwzH;bCfTH>Qs{3ONr@97NZv4V<M8<^r=Axyel6
z`~49;c-Qd#>cEcnyu6nseMUFy5%s%5q2b6e=aJ=59KbUst)szSxCj};e$8IEKPN@S
zh$cc8sgOv6=O?wN2Zcd8UJ9{J+{q#)ExH!J=fmwt(Hg>jDYS-Gt2@m37Xb(%G3#>w
z{Y5$NXipw(f5l6^=bt^g>IzuF{xYvq23%Q`_-vmpyxJU@FmIZ6MDl?&TIAVGP3gvv
zc(#iQqe{1oQK2an+acjFY=@KW$tSQK_O$OKQSEHb;PFW9>DU2=kD?sxq|uGtQn+8<
zd-+lQUn2|OxAoVzes${~e4;$4GnTV>ED!m|2?Ru3SB|I%f_nGsB!YXdFguM%GzSQD
z^i-YXwMeKt(3s1{778(?95oViDAWezaMRx>6H}glO(sOcklIs2eo-az5mmm7r}<3E
z7ZAOoy&3EoX#?^MSXYDxngbD@?Ex?+=mtnLfVs#gS}yaQN;*!cGJD1SUf?wHlhHU^
zGOe3fD1#ybl|W{VzWQ#SKvyp_I;2QRff0P64T+--^O@^tG@Y&~Qv!h|Q7;3J#Eywe
z^gbm>qzWJ)W#T)6q}LOtOG}CNUELmy{n$NP!<f9%fhCO=2x{NXn~hpv7I=0xky(yD
z_CAO92fM7$^}&3VKql?<;%l)R?bVz6yIwYEYtLS6f5CH&+~H6WfS=pfau+ZW*AF3E
z(O{zn#?KUwt_C9-6Zsg5NoL>DGT)9nMM>OC*aGv}$Z2O(pYaqy=XPB9F>L1K;0V(j
z3$I7m*ZxxxzJudLgb!jJstHQ=!kfG0@BLk^uw2q_ljU}{nqcptX04w-9_;tD4{9!x
z3hPRzVO965$g5MZfM~7ObB)&00FpL%BSiDx6}{D5g+H<!+yB4yp!PXFeIFl}0vrI6
zKy0p4fDvBFC#C><$P&<#k52*qJEc;8@5lZa5|*v4r!T)*e;(QY8f^BDyq4R#mVK-w
z7vZA$qP{An{D)~`bZYaMoxe^K%P&B4s<`D!5u-&#6RW(gbTdgcZPCcF%Ck#!sz}rl
ze23;=;}=R4^tDz6KL%7FswWzLWui=!TqmuW%hR%^du29H)5@ibm@y)tvT*9f`$nB4
z3C-rXqB7i+oc5J6ooqZta-lp&{c<xPiGgaCCToGHkc1MCe->7Zlc!M!FgUmd@EW`X
z3kBnxy#gnYNQq_x)9?%TbLm^OQhIdT*50AewE4qux}oZC#N8VYDkuTymdk7(GHJdp
zriB&(6vS=r0`zZ_m1mZvMYN1cPXUY2EK0oxOF*R<CLEzwAPRxGgBo^khC+`!#t`e$
zGM4GU&%RQdmeH(=&(7BrYV=kz&fO@T-UODY{bhSO28p?Q2(JsJJh-p)t^1eXsDB=(
z|J7LN$9c``vsVYtUz$JV>nEQ5AC+Hrb@G2?8tkh+(UE&S*>q<P+4TI{TceQi*jp>0
z2ztG@R?T1UtsTyZ6oDMR&RfHb{!!_oPhhQ9?%nHHt0Q5pUQv_ycrT7w%uKS8V(7<t
zao3#HB@<d-=fy2|e;;S{JN_7y3ek$l)yI&lpZepFs;l~m5=QidD4KsO$a#fsxk`X9
zm*T?xVIjg-8#$blpdUrONDOc#I;C%<*0t!=%F!3mk%lV3BpK8BUMD)}Cx5qEJu`#v
zsvY$hRINd~sUXyqf>47Coztd9?u_oEZucO}`y^4eNr?ApL~FyJp|#S3{rG61A_QWA
z#}UHkQqU24^Wp2_fImo3Lgnty7d_?f18^kI_=)a*jpqj4n;Ygw3piUqX9tsObapRg
zJf);BN88c#i9K>}USbTA7+O(=pM{gnz&$wIrdgLnmjflb3KQ0!7$yuv%Y00`t4Hu`
z-I06+Rq+FzLJ$XX(!{YB7h+|UaycGJQj)w+!G8_%Vkt+b%*s`(4&ko?u^Gm11Tcu;
zSd+Zb+HMsBnE*n?PSHFaZ+nLmN}?ndY^tk7v#0pgU|!q%&jsyX+S^MK+cz9KxVoNp
zHv!YYZ=u9uY~L9P{#$U24%BRb*meiI4i)W15V2h_RO#*Bs>5t3uXDKnf*)0T(m6Z5
zyB#iNwLh*MXn#xpGjx`K)MT}MeyJ4|Bq~faoQ!rubd~g8%#>YJagRzmUoBBwPuU(3
zZ5~;A=?$qea~RU6MvNgAid0)x+UYL2r_hVwjBv;4PC>=a==RbmXRQb@t&iD+W?=0g
zcSE|cnDN820{FlvjzFJ`C*7pP*!cE#Q9pGyT1KA#R9I#^3}3XI2y~{G-QB=XQOnxC
zZmY|XzCKkj$>B}arFv{0Fw=5mtC>1FW$4AeQw$&<*C27Zc#oIJ&q*~<ayN3Ik_u4a
z8^1#G11WBS#9KVhwTU^KJHsI{$}>mx;n10z>HbuQbc~3B`CQm&cp#vhbAaL|_BK@7
zsTnUF$Ahhmpa_r}Id{v9$am0b!|-WRpB>O?bTT_(xA*Yb$^9?i6hnLkIFyJp23F6p
zSG!B9?`>;s$t8peon&on_p`UdGP_p?leIH;oTUe52eMkK&mF%{85tnHWsXNydlmqj
zvcY_V_tv(4@bVwQHFv7!`x)$;G-)v;UR)!2fUTFE;=wBtZZ`F%b45ZVw6dz9UhS#&
zo>r1lUm!xH<OD!D1-w$PvuHQ&MO|<NdOj$nt-Et)wz$!50iQIWgUra%Fu%eiHOtg?
z$iNtI)gPrhL;c3ue=r&>7~W~mK+<%ag{?t%-|`J(123HBhK5;n5ANR1M$=I*JUR&S
z6)XCG$a@bsxvuiy`<^>9cY5!Ac4l{HdzoGBO0tSA$+FzL0b}DTcS{BrY)V4FrW3&F
ze1_PGBOt+8bRrC)ETIGzUX#Gm$)=HHQ+NYPzVLqR`+v^4cXutz#=O}1k@u7K%)N8l
zoco;f)bo_vtQZk4HP(1_4mG^<FpzulqJAxJsX@OYuk5~FS3FYi<6Eni&Aa(#9N>YY
zh0dPFJd%{#PPdJbF35ce-vj<k8ixpyN8xvZ5iSrK$>m#8c$p#^sYr+=x=^7s*&*e#
zKjK81!~1Ha7^&BsRJa^yk9GpVzJW3eV&UZ2cw77~Cdnlba8mW53Uv=-nf@|HdYm++
z=t;%SkXS1~aGw(y$`?C?M*xgai4}7cP29Z8WW=`<PJg;mVznYuOO$qE(4OoM`1(k!
z!2}B<JrZxqDhWZ^!~}u5@RE=(786_En=FSqSi{6#n+#n*1JGf{ghh#vE7ODTLLvle
zdFu0ujS6d?7ra>%w9wN<SlN_|C;Gq-%adfvP8Zsz?#x!}@!_FFI8RAxTO}taMkcB_
zR#nO!)*{<YJQIsP(*D}4Jw+39bFqmzOkSB>xn2p@O37THK82h*)v2B3q)IWd1GDg3
z86mSIo_fI`b=Cs0TDe$ZWi~-nC!`aWiHk+PjFmG3LJ$QzIFP7RSjvtE;uIvnXJaza
z+_Np8O38Y_gZR02>`mhFjVBM2g1=4T<1M_J*BA1zrVW_j6VVz9MGra5EqodcLCA(y
zD+<~qvo}DJh;+ya7n0MPs2d)TO20Tav<6AlQz42ogvHfIIgu7A$`P_7)eHeaBn=CZ
zX*L@!S6QmV5KQioOgvGo6hc`NM^H7`@l~7k-K7lYarLh|4arAM5^a+1P0fx3;WGGw
zV1jW9$<$<TB*rR~c;U&yUZ`2jc9Xp>@xL)AM#7%zwr%r;*-ZtK{Y!k%-FUwK$exzG
z((|y$4wQno<8=x$8+KsMHM2utG%YJa;^yT}27_NgD2T2=+Z79!-03d#C47HK`ay}7
z@#m<nQZ3YG#z;0UYd(SgbZ{h@isIc&YSL<~ao%vfMzCr!mYA;O`!I+za<EbbtDuZ7
zi_kt)oxNwCoR#!bgd^e3Kuu~qE86+QM1LZbY+}cUn-XXa-VF_~JS3LoM2%2jB1W@R
zjK_<N05_Jq;n%@rYTLecp_Fe;*CaOPm#moji9Nu|F0n`MN|6a_<!#NM5Keh{uSkI=
zE#i@3kU}IvV{+CI*r0k&CwyHK5vQq>B>fZ??cE0W_ycOH(l?h+l!!9Mt)GMvRO!j#
zKS}&%s69H8YLV~*(BWA~FaXsS`@7<@7{_^CjTghsNP+mwq#`$6rOZN#s*jAG#ezQ8
zu1b2kCqhah9L;s541&%2eS&f}NE>;y*l3ID<&|pxa5+Efki{^Liw()qDj7Q(!*3}X
z2o*@DEbfiTN{X6(ah76n+XuIB>q=%vDk;L61{?U0;%1mVk(DPZ4n>-$qIoicEU;jx
zg;d(AHPOnGLRs+egR6f>4w)G;2kNLoy`s_)A|!%~sP2^d7Ka@d_6A0RqIxt6)B~N@
z6v&*=X#s>}V_XH0FfXR$gxvwMnt$;X&pVDg&i7+AhdNx;6{-1B6bh5M5F`W@`HNMt
zP%S<bE~dJJ%_da^5LwQeDQ+4;#KS&KP?Il#=uK%BT`Zd1zlk_`1MxgB`pBO`lFdMn
z^=!raGda<g3#}r4+S$ua?8lPtr(8Fhk%*2`86`1T-aII4_izN2!T-1dIy(~1LV4R1
zc3Z5g%v7A=R36?MkCARSQN&J4_CXw@oyh1=gj~JBs+27X1q)Q)@LA8NmU17yndeyt
ztk(e930ba^We}OSgY3@;GHaMNBtQWV6u`yw13>&S07yb0GYpX9909N8a}Y4jYkt8h
z|DgOC(#TzU{U@v0iTuQzoaP=GhUpyMX79%>o$r$UwK>p7(v%$UMY02xNKH4Qb6eA~
z{s!R0KhY`ULP)eSWU*QkM~7Omn9Po0;-(sFxDX%e$DzHOY?mTLkl`~Z?kq$e`dF%n
zz9V08?7<WSPyD%eoI(Y4Qq0(;5mAEDnS87j$<57;M-tg8ak0U~)>{80IE3>U=}X9O
zAMLcmHN+^~&>&WJg6VFzN6*fW&f^_Hc(5Pb@tr~~-AHv4iGo65_$nxbROa*56NB?=
zFY(cYv_$=>NQ@38yIFWVU6-tPpI-eYP6_*nU6x#skWgw7%c$tZhC#@x5M0fA*9a#(
z*%1^FA5vnq^`z$_AkPW@gx<>dsLg>?Lc*DB%1GhhUuxoWqOkL9-d;(K#gcuvt7ll=
z9Ziw{mOxEtai*9XOpf>Rgi62?g4q%=didHR-&B$VED(?%E9ff)bGuHh_v1EOo2w_w
zh31@O&BaPR9P4W*5~p1@F|vmcNY;@GWS)O>DmcUfvyZrFf_i-kW;vb`;Y4j1O#hA=
zRX^}qWG1l`_^W5%V?;KYF797flr-;U1t{JhtH}kKkzlyywrh8o9d)h`nF4ghS}z%U
za1SA~4X&?|P=R=$P&!N10XvLznZn(bQh^Eb;PTSBK`=H)f+{dF!uog+u}hc;9GevU
z?8ApLYMPXIIdaG5igsi;A8MqdWaY@Qpg;oth$D2vrwXj1<4HwU4$?})*6@yX@LQFb
z6ryE=^$taj^5r54XJI{w^l&Cp3R4a<A(d_4r_NRXV*fMV7giSZ(bh+#lKJ_L{236y
zIb=@+wi%<km}xLIDI`&l4QwVRQ)@C>xGhdGrG)6oG@2<C`49Oc+6a)L`*e`+!0JZ>
zl&Qhpmlyzo{vwK`jiGb}Cs&e+IB*vgPsH+Mup-SURW_sT+IAMxLl}9e>I-LSRs+<l
z6o-c7aK{Pt$07Gb=-@{jiufvZhvEfz;X&A9wN!X=T%B(de@1?dB=*y2B!`1>x*^rc
zab}~OEnb#UEQn~t!CWat9&KUgg@_7PLvj4j>;1TH=Za~RQKUYkT^T9R6ERW9swkM`
zEfI)*QB6?abye~Vs<vQPQKOJ{aUJYBgUqw8&_Te9jMFiQB@9{1yROrVxXMzV)Fy=!
zmDmJ)nv#)vX>1(1BVX<f$5H2EcoUJO1P@Bp9)r!+nrSk8saTr$=yE|R@(;68%^F)M
zIy@9sof-6r0tHi&WZxr!S2u@j6X<W`PE-?(G_#ZygJd>ONpC8KVdw~?S(U0H_hmA1
zCjn@PYJ>5LY?md<1%Fb}x&1@cRILcVkl4RqAeN2{#$x$sZBsr@mX_5&UOkNR{ixVN
zg056U<UnB#$hdz}3B5Q6TjiC3f&?!LIHaata8SoiYtwi$mkT3O*#5q;u_hb};|8Vh
z5Y1J1bj!9)Z5*3};TRSgd<^Rir`m4i$a#lzT}GBd0;EP8ni#J8gXweZ#^!Dmx3tOa
z)P7dvSwioRN|a)FX5SfmCP-cBC%6VLiFl^bLZBPOz!;A@m0Dhl5>(VlXSeR!ITb0e
z^6RtSy82JP?e>G#>DD3D)G~#BvnPH_<D75aQmC!>mZCx78YE0}4LD|JP%y{*F@KIr
zr}Qj&A|i#p@n4JE|CGr_$_!SZJwDb_GFa$LEMqWOlRI{A8K6{rFf2({0&&KwIW$P-
z6iOSB*jv2rGpW?vmQjj?kamF-=uA2cUPv(k>~63TP?!8ccnzkYt!X7uM`;Ef&W@uc
zawcWzva*gr1Z4!g7Q%`H6nk(?)IS2632Xc>B|Zd_PPaoz#~GgK5#E8bD1p^@cB3MV
z?>u?ikPj;(>^m&6o|UT880@FIO(Y!ZtMR^4U5pY=yHD8?%cj3`EJKL(JqbgAuu>%%
zZ)!=*{?pjOqlQ2tcRzy!Qsc{)eOI~oV*i5T%hOJ||CLw-GMd?ezKO9WaVF&b#jW2(
zh+SJLD4c|PQTNC1A%s6lAtMk1NsGF)srfA=9?X@VF@$*jD4Zn&XBml;+#xo*###C_
zXKAI5;Vd|kg($23IL-nZ2P^BG<-f(u|M#Db`>EVh<bFPK?0?yJk)G=ds`c~Ebx8kD
zq2hB-uY~sW3ot8&FZlfHe1Y)kpP4Tl6za_i#&Jc*I4RejM0O+tQ@K@HlO2cpkCh!M
z7k8}e`0vk**mZp5K+X0&CAQ#D-qmFbtD1Ia)`Z*ex^UY-JVYIFh1)EVOQa|9sbq0o
zxb4)jo0lFh+!C9)LAd?NU;k`q@|1-{%@aQDyVK<f1ePJMJT)0gWFli`aV15Op~P16
zjL1-)V~DZ&bg-oHOL@_bD1|tWQtgv<y`nZ>ByCgnxY#kWE)IS(vK}U)9ZgKQ=uGrh
z2O#Ko5F1gK<brSt4E&(T_%WPfV&|?cgD$6FLC511iqdGIPF-Xt704vhB0B~1<PLg<
zWT)T9*WZW9A14ul2jhuowu$pMQkp0t%(D`89q0(b52y^RAfQQg65_+;P`^3Fr7Sm-
zu^$iWI5kapAELdH(V1(}Ruu<xN0FH8>BEg@P-Oa1uvwvcPb8Sii-2hpxJ87vBpk&E
zj^QrUo$TVQh{sA8l_i7WxV){7q9rTsU?u)3*pox~_-0IB=yCZ-5OWh&Ie+!cQ*zV&
z(M;Kw06Sj0`f1<Q8av*u@;?K1Xg%s!4TEGM%)h5oD+OEsOE9DO^vF=#Tw*?rq;otS
z+Ld%zVig^_P%x5C*_Cv9t`42hI`q1vvr`@Z?}ZlMdOS5peJ9sRs3IzV_867l2tC9H
zh|1rsrs|^dvpC2-@ze&D|HuCoC}9QBx*zdfV>pKO|Ei42tD4&R^GaCHjP{M~vD@7g
z6tvT(R^t((9nCPAVheBDV&DOs5{ah+!MkvRpv3X%%=^aV-5rEm$TPIfsN2;Sy2}ro
z$QLPEM5fniP@7BOLeoVq&U5vw7~nf%ek;h~obxYF4<?nLF&1+wIdb6#unugYlxHW(
zjMSi%a~sRsr0I%<8zm8Fu&YY-EQ0GW!jjpVJY7LDWR%PJhNDwsjqb+7jW`P(BsGTZ
zu&hVu2{SgdN1Y~1e7kTgNt5e?P&`s`Vt);iai91r)&OC!|1EgXPyT~K+_IpSDu)}v
z!nV0+G)eNFP&QI5*N0dlBFS5!M3g0*HJ_nI4q%fkk7$*O<bKngRJ=G^Wo<YJXh?H&
znw^d%N6W!1l@#E}EZq76nDaVsRO(Iuq^O%0Nr=~|_|4;;A0rEd6U$Vn{*GGf$IJ)6
zdc^k<!>_FWR9RI}bwwu9pHr%P+WFQm9$sSHd3uDu(PxOqz3l%oynKe3;7|VNFC0$3
z1f0BG<K%<ZzpE5jSy9`6UVhnaW0SzQk=0vRjxZNtaCtm8IL=?t_1h3<4o+$XXV8I-
z1z~nNrIhj6KoK%oPsoGxU(76XbM&0PJu$QVx2MNuF;PheusajhM2sYHkLg6Vzd<OH
zxYDJgP8kmg>Uh~yGEa?8=Bd6NiWZ~c4oj$LTh#qTp9tqFsYV616^dl$wyW0>BX?XT
zIqova`jawA0{%TF84F8_NLYhrk}QR2CK*0ioi0prx8ad^zOp6+3t)LXmoFL~>3jNk
z<Ts<N60@vU3y`b@w<IciQQkS)SCI^~xUjLxmc{JT9Zh8FBydb65~VQqQYl?PsyWsO
zSUGUWpAgOO9cEEF*-n+l8$bEcFB~R*L}TJ3tQS3^l4^)G>Yk#8LGh{DJdUr`3BJix
z?sTyMf_jLT-Fb`;vH+_s4x9rY1^GBDXiAa`?MPN+_L~#aprwQk8#z%{`3JeSt8Ek-
zL32Sta;nh&!XfF((<9MlBRNs~2>U1fA4~D5H?etKy+AVr!hn;FP+Ji9%Sx>ll2n$>
ziJ~H8IYu}P5+mjgJrnVhNwQFh^i(BqryN$qo|2ZWz-lyMu`Fg48|n@JcOmb?zDhiE
z?v|!xQnsBe_!-4dSy!uyw#wc9C^p_WbqsxF;)Qbf%f*?BEW;-vgx-?t3sY6LR0t4T
z?-a5bU)1Cf2>aW!;xdQxb_gHLL^1m9Uo3Q1)`!$9@e%)_cu**VE@WKQJPy>^1R7!#
z#B;*+f5Pco@+gtKM4Tf)JYD8W@K*9-=`yUa$s*|Jo*;K6R|(4V*De;sxoM`iX;!??
zgHt(@l{o5wNG(FrcAz~oUZYY;7$VvntV>NH+;fok`IKdGQn3)|CGq@H4hCls;-GC(
z?w9RsB$_0RYmzjVs#7Ts+A*@}V6h{`D+wF@@sxT)kj$pkb}Ffn@d^mRZ!`&%9&8X=
zidQoBKGJg~eQ9bf`-{;O8OE|@YLi6>Eu-{DD3$J;XNPEB@{=?IiaO;9T$xFsNeW_q
z%u#9WBYXeq8`Lk`e=RjS1LCMSKRe;av1=ZR#UDj^CIV!}7k^>kK)O0ys09oH7s*{m
zl8~I%sG(K>Or4EclEMygsX3+HLx2WmIdq~pIjvzTsU}$tFh@q?lt#iN2e*^bRrpen
zz7CIRS!>SS3U^8Rhqs-)Yeq`KP^VKoWs|<{mJ_#)266M5m?K!GQH*Xm{oK99LW2|-
zk{h?u-$$N1GF<mHqpfz9)V~yH#6#pB>#wYTqn0u$4Y4<nx<S&|Fc+l9ze&{qd=+B&
zhxM`kn@JA-bD&hfNsrZzP&Ab#f0oWU_gd>wRV1G}u6F=tj`_3ph+lKSJBNf?vt)3u
zCno<gP^<cKGZfWLwdPwHA6{W+S>xzr*IH4klUXJkB2Umg5ZIdi@8_$jT%wlEW?I3U
zH|#^vuu%_XDf5%-{mq7b@vW?_zRP-u=t^1ZV*JGYPy0=3b9_O50XG-z2ZWkRfOn)o
za(QubL-D~}8na6j9>7yJbpifil(MWh!chtw6Zap?^%W$Tzrs9L*hEja#_e;hH|lpF
zRifmK@p?|)jN|VA4ymfM@k%D0X#^j5g8f;FyJZF>MRj%}^91`qa0f4Yul)@&y)jey
zZ9pcjI~e(SQ_TG0VdulutO$=4#}*fZwTqM#KOpgtDGI=tYcA^o{ZDJvG}#m4c-w>}
zp-Q-3&)MK{9Ct0e%qpo!7Jn$xG2y`tk0QaA9p9d-rnB){Hk0iOJs3D)cdQtUcbYg@
zgmSp7i(gA>=iWI7;7Sx|un@~m)w69WxE`tD2~IK#e?7NpXQ7mMV0|>FiGNxB&()GT
zTm74P%c6G1=AGnS^}x!$WH^;0`VWkhob<e$yeJYqf7*|y>o{2%9UvjIypj~33<5CZ
zW#W=~PQOf=D1%^K0DvDK03cRh1Av@_{`i+#B;u*1<VCaJ$JMA1%T3k1*C3XD!)y2h
z+jhl>g6cFJVrOCKgqj8dE)XCC_KR}8Y)B?CIgBKC!;aM(>_^Blbr!y>AGN*>?Qx(s
zGNk^;4rzcF7qQ6<DMovpX<a)j@xn5u<^T()nAv3#?g(fZ%K-wxcES&`{ag>00ITCZ
zSp902%5ON&q>6Z{>Abc9r`*?WWHJO-!U{rhk`VYZ`MjiICZmgx!4yT4a`D(t{=>;c
zlSzNHI1t_a-2KlxIZ@#|VH|xK|K<xXf6mTewi-U}v(rEI+5H<HeaZey_kw<FkG|mY
zi+8>`P}?%Vj1A52J7t=nI+?R%sb(~{pZ}b5W+~Z$P7(^1V)5MIP-v((*|M3qp=O6b
zVJ?b{7EV6<wE1W$skY%}gny&drbAT-Mw8T16nho_e)93B>sOH9HvS57UUThNg#MjD
zj@(7-H=s(7p-8_A{q#^&C``^JpHLF=y5cweE&QgXf;}Pw3Gh9P64XL05E9B{5=udE
znUE5kpk;Om$uW{cVJ_e6i7~kV`su|)uH8sj{)76mxWh#!QsGdIl2b*TQwfwR&5S2m
zpbGel72IzLQz#9V^X+8DNs?ML)~sO@%+zyEs}pU{5@puS2~VhIv)NYgh+U+jQOK!e
zay<e~{6!M<6}!EGPA(iw4z<$~RU&z?r3h&<nVTMuOX@@xDSaf`Dx9?Mq=HlHi)GK~
zFU8;YSh{0HRvYAd`cDIs;-Iss-6j@@Iyhb+At)#oa~)!@!6L*Izi?M|(d4L0n&LSq
zj`k}wWq=4f+en7qeC%8HM>;dSCAFzZa~q73h7wqnLxlpdGwZMl6b!7K@<0Vxy`?YI
zHH0aXT}D&zQ~$ucUcF^rkCf=ta0O7=839xwAb^@C-(=WH4EL=ADizoOs5|r1B!i4m
z&oTy$vaR1!ht*;G0kSYthiZ*y3z5QU*A03B6a{CE`yJ=pXA?<M2vDy8&q?7f<t%mx
z$7!Zj;x>w;kS$>C6d@SiDfM0mN;ntHQH;BjrJk<OA5TY1Gr7W8P7+f-$w|S9x6<=5
z-Sa2y_op`W4L52sd_Tnw2y~j%FcyiXWsUt*$zu(8Fr%$eD$)m|lt{vToB9M<+@@ia
zWsyP{$=}}~_dK~oqAp&a!##QH((13N|7HIza*AXcU@Tw-8{J+v?Ld+(ZghLq4zFu&
zuQ;4zvUg5z<g0il`-*-2tpZtzWw8S<O7ht?yF;CVogpDS86H>(DOa344)J8A%aU&!
zH%Y&$L<UBOSj<b@q)yyHwNGb!$DR|0Yz3Lk*diK`U}pNHy*ozyWc#(#5mG(Gv+e$H
zUk8s@YT?$J6ip!_EK2m@K8j99ixu9iv-(5z4rU?A!9~V%*^w#U>)_-qjLyDwjqay+
zpM6TMQWUCB+2NQovu8UwjH5v^HcLp6CZW)2{&@C1s|W3d{Uhrto;{e?636`PtPXz?
zQYT*2ZMKBOX^BJAKQ|Q?e&w1J2odlopioOKaTo<EpIZ|_1`m@<f>*=4l03RZy;qA3
z9DC!*ZYLaz`F-hTDbb1M#);1$N-&?y)(AVsFoHHEb@=*<X&=k}u@Y%4q}=Uz8hSzG
z-C*lA2~uT6^C?pN0OsD7RDP6f`2Kn<;cxUBt?kp@`H5mCMYxS!ETWWAMJrEg|3<yh
zZWIURNa-6TS#fG|Q?f;s6q2&}q)ZLDw8%E<145^+z7jg{R}zuTyaM@22C&Ix5<&~Q
zMjg<yhk#6j4`v~Md?l_)RL7$JgG0z4Vw!Ap!K<8{$&vCE<dA~|GD|%38>+)3;mD=y
z6^Y%FKn0xj#ac)%kW{!bh)fX;l`1JjjUoYZL0`2FMj>kjP}<qc6p0H%5tJl<fjAyo
zvU;b}81+rxMdeUj9+(n=Sh*Y{i}MNHvEeLk>XBTZlPwf8!{-wI4|G#09vle~lvY6F
zZN*~gJo%344x!4Ou%B6vQ+hZ-zUbokNPcR-X$&bJDvaRc#Oh7<OYDEw6(x-fHj8F1
zaxD6}0M6vlBih4gDFPahG2ulbYlYGPOJHRH7lb#j#fKpGQi?}U!uBa?3P%%Ao=Fm!
zk{X@pvWS+e*C(dh$qxE1QcWSfd0R1Ch0!FUgyAB{Q{+}Mud(h(f<Yn|&{PTbi3J*&
zE%V6?$)h9;Zgf7M%J&fwUZ}n<)JaQ;xv3L(jQa!a%FGLIc~&M~^yjF%MaWRr7m4E_
zjpI9YvHd=sYp*#x5O#*gVv$Z?*jEY#tGdV+Ap{YBKgCZ%HHkQ)7ucSCJ}S=>$mAD&
zbM*_W_o!w2U#wpfoNsrrAv%MSShfrJFl6ks0U-;`1}it<rk+!xj_G0(a4HZGKyyo8
z#}`SSMu{i#0_K^FYvEl$Sth0dyeJc_kmsg*<Z0D27J;ZxxD#9n_N9}3r0Pn<{GBmk
zg>ux4#GQ!QN3>eb@8H*#P~k==5sh~1JLkwx$vg?E&bIzByv~QZB$KB;XF83GTtE`l
zW9N(HFglTDhcIg&{y2c140Xidp+UtP)e@BRE~YSqk(>!sQzvb`c$imXWeS8ip;k6E
zU(QX&lC5Ozxz|n<hQ-&12~XOAU>HjT55gQnJ{(ZG*)J~M{Bo!cF~}u46Cwl;q~Zfk
zB;y+xiui{r#Sz@CaQE^PrI2v)l4h6RW=_9;^@Vnqy;Jnss-QdoW<KjF&AvOC^<2fW
zy9QYSDKwI#AnX`oP{dkNpV*bi+F6*4kNm{p=;&lOgskE(g^OcSSv}IA(3K<QQCcJt
zz-H%Uf?3HefZRxC#X_>}G+!0kJv#ELz1g8)Wa5Mqise0fdQKpvC>|eaBq$d^HbAPO
zgxjU;<^<)YeT76}AT>J`i4F{pZynBIFv=G(j3_I=`XVer-<G(MBE*YAFcNpE-;kHo
z5;A0u8MkI+V3y&MN0gUX)<9#)m7-NNU$Ccn!oDm);25)V*<`d%@ES4EQK|_zVcbWe
zQKDL4b_7phEh~m4DN34RX$1BXMjez2@+9`Hgp;GgFAvm`;2mb8NIKcUghf96Y`GI4
z7K;}e&i8NGvuS+16l;-tEkfR8f2*Fz7Ki&g=bzoGoO;^USZSb}$ageVy3~5uzS8<3
zb@6n@c$b$_<x!{*XeK)2Lu;%war*xK=cLv(sL6fjo<8@mr;$JhAFK8N#Y?SstADV5
zB)po;sZYSG*MA_r`>ee=66blmdhV2+@7BCJsd;rs)SWe6Ezf=d&&Gzd{%j`QTHhUK
z{mJc}LzSA={6;g;P2NK(Dd=fXetLT)PrUibpZMN2V6-=RPaModr;h(bwS|oEpRx~F
zr1KD+T*y6ogt2vbmMC=w=`64|QP@}ITX;A{?R;KBVEtwFAzv_<lA`C4LSH1AA1eo|
zMMjjc1?rZq{xAD>^%*jsT%j!n5IO!PA%(8d%SAv`5UrWOQycnE)5E89srt>(V5`5A
zY!9UC5~dWcj&%mA5hq2;e19|tca1m3yCuplI<?Ic<xcodj=8=vew^!zRf+?e>oFB3
zu<(%=W29r3RJ1hEsMb)U(b7o5NbS4gKqp@-5Mw=7i4FE)9{pJ^7bv}R^@sKc)F-V;
z>#{W{dE$yd3=div4(5BIX>SnSItEHl<x=%Yheeq@;zgn|HrN^Vg?H>N4MvlpnWn&Q
zFjYdb2&r(*03-R$C%C-#*vqT#<<x#5V{#}(27_+9HJZ)s?#A$#HlWCkHAWgLiQHZ7
zx}f`+u4dLVkJKSOkKA00&&<^L8HZYE@Vk-p|4NUYn=P&TREFaR#{qAbG_V`MD>Z@t
z55X&QDz<vB+DDXm!x9e$nJAhs%+5PzkGT{yOmCw)eB9I1kvztJQF~Q7lZCcc;crBe
zIZhj;_-zql?4R)L&0?>N1#>;|icDr^#cCYs#EV1O!h|TsPkx&Bcu;*%eb0WEc@L$f
zQjkH%DT5D=yaOw)W{*iB=bq@ax+O)88n@d~TnWfkzu~1m@}y_gN26r+8_E_Z5FK^5
zaUYvmdn>rglb+^H9#Rjhzqb#WH(67#=Z_2WpE6*N{v0EMr2!AXV~3<)56QS5k|#Ya
zbN=_JJip2QBjLzIL_ZnGKmFt|edMPAjo*4dzjcZp{|%Or<HGFgPYM*K(Q#(t`fJO3
z1y}F2-lB2lr(w+4&ok*+nHgC9wtc4k8nU{)$oef~OYcsIk|m7S$fh8uXR-o$DYeYR
zW=GF>COu{3g&`pBiTx9UJ2zv;lek%<<6~uTr5T+)YHm*Rk08cRIWym$V3A24Y{-GE
znDRJno1kXFrkNbIt#N*#N@sSok=b$bN%?d=S({7}ks1tAF#u0S5~U|X#lo)6*r}yr
z8Oh3T$0X`>e8kCx!+o*pB&(Z&M%5Q6#%kNo4iLf`3-bU{4;9+o4Ep<2vPk{*c&Qo<
z436FI%<S5haAlX$KziqCyOFb~@h3KsMj%>AI#rUP2jafOsn>5CJpc4LNqp(AXH#=?
zsT7Oj<U|hUqWzm3)fw(xzxjkK%CS_WO8G1ar63nqC>kZEHc2rWR!dU(N5#=75Fm4h
zsZxu1#Ys_KF3d~69_5>t#{!ciSe~U^ErLl^+7GNQ*yHv`&?jD}=_+8C@gn~af)h(x
zD0v&KR=T<qDzfB>;KQtFp)cc$3`uSq=wqSLJVS<Cn;GQrPbo?I)f%N`P~R%eGGZ9+
zy0~HltDXL4)=4<z9U-ZY9Vz4kr3$6;(rI${lU1C2X?ff)Zj^GSx%|d*rbS)O6hq&J
za;9N4z(BCo9n|Ga?etnX(>dqF`8cJDH*KGkB{$+`F$STL&z^khNuz$MKQcqY<kHIa
z4~7Rv8g`%(YP6_-Lj{vcy0&}QEam0@mh5`T+=h~<s0yYeD(OqTlBlDDPgD}sCf8U>
z{hK{u{i^kQ$kq;IXt1EO2MV7fiimLuYB<W!Xx=9lApCm(ElUW3XGL)y*J==k@&YG&
zh4~_va4@)rXL=dSMMN?81lb2w(6b#uo;gSF7_+)VdVTKauged}8UA?Mt0i<EU74f|
zVwjA^sH-Zu1Tn0Mo~xLltVW?-`lxII7Lk(8uZXZGs~M@nvQ(+2%0{d<&}!kFz-*=#
zijS2_RO2Z68_EV#7eBCUJW#-p#1pI7KL~4fsw3%WFrpG^he}8|&>ybNB`8P7`d})V
z&n64eWU!O>Cs<EXPL@SLl7A=g7Q<;LL$b+Kg@kbE<bhZuMKXls80h1VRp=NRy`zfc
zuO++?w>xD|4`&i~HDDuSR)QoQz;ggoO_AIkBxoC)%oY-%a;8*9ZO){oDGw5$(xuoD
zGHEBBVk$TvOiVO0W2o~;sNqVjxj7sTfo)T(FSqCIzh{->!|T}QHwC^i7H=xB`lxkT
z#xaL9fIV2OQQ9B{^hH({3vri`n!tyEu@z@Z86oqBO-oM_xj@nmidtey20>97X+~vm
z5VYkPd48hdlTZHUWNF3y0lWPW<>IK)iZcY+G<?ZIE=4RpR;x^!yl5FxgJp63z^wy=
zASqCAB1uX0Wb$^9(w`NkbR4akY}LVdxZ0@U9YT4MoIl>kt3qEok(x~Alc{QWWQY}7
z<rK^Q66sMK78vr?P+!v*C|5JZNI2WTs2GifOU-P1OTJRTFRO;4X2&o>;*cIr6{GQi
zk$j?mu>U1?tCsBKoKn3;q4Lh;WS=jXj)tpktgC*zZ~jDr?eRsTL*h=vN=>QWNXG{T
zTjc*DS75A3eH+|cqJ>Oh_i1}KMJtKlXGsSi4k<Dps#Ih?a(AQ|PcU&)IZDZqX)#Y0
zmJEPHha@2g-jiVp!)E;|7FYP<w_|?lytWefhoz_?;ZtPZ2$f6W2pK9d!HYy&TK%xy
zBZKVa)=NDt37^{TU|YtBfpj%WcL7X~5krOdk2Y+JoWjL2l45W(Q=}+kDXdQx=_!l?
zVw0e6#Ksio^3FNtiR8NCGN%iMeyDM7i)FuHU$l@-R!<zy*IL94ut4w2HFK5u`D%50
zT9IFoX%EyB6n4h@AQ8>y!--ThTCWrNMv*?dKUz#B`r>#I;n|T2rqfRQW&ZA_EfZ1U
ze+gM;HfsW!{{^SEB!M4!bEFDysFX}+FtOwAv1N1RqANx=J$ozF?9#zplOnC8GnFF5
z(D!r~zt1$qMRJ8R&fA-g%x)`|V}A1NP<<y%Vx9JYI+3BmC@m|(<g{~noZmWS_5Jq!
z_6MyQ>Y5&q)z>WZ9f<?X(aer4l^SlwbcDrUpc?FUH7W_jBu|d(as$row4sX{7ZE)k
zXJ7%^vKTU8WDo4ah%M{T-(mLv{`b=?5Bdt3Shm@yZJrtCHBuC1W)>!?Z#lm;H+FJJ
zl>@A+mWWbeHJfTW1<X{TAi1<7NhdQjMuIRFTTxKci7VIaBk5BvINi17_*-K49oxJ~
zUE*4H0>fLjP3!T{%l_`Q_MudMx_;xW3176+te>=PjHE840*&~IFG*7|cYbGi<}}Gc
z9vW-R4wgpdhX=?0zp^YRrEAsVu0nKhI62EprUr+qJLb~kGwCCq^$0n`n0jQP=MiH@
z;$37N2-^}X34#TeS`qaR>bJ}q=ekX4$1!V5qCiae1S{qWK};&Rd>Ma}b#v2k3|Y6!
z4`CxC9cT+M>J=w`-!mNPQ|tDv-_f)5an>*+!ihZn%vsiK`2Gp%lj@*Vmr8Y#5fCRh
zX5H)@_*`uG<+D%-2tkKK2x7|=)y#k$^<k>AM~9}ThoRA`6%X_$e9e)u0cx@YqV`Yz
zmI^+hzOl(}G*eIIsh`@4`RYTX9b9apk?fhA4Yr@?Y{{mWk32b=$u#2*4{nT(^_vGv
zCY(!G|CRCk7~?nT)xZ=nT=2@JGVbbNQCofJJ0ob++w9|xJn3Lo!=xl-1rK>4)*lH6
zGs*6m&>kNt3pX5kg0UqpT*eOelXx1dj`pbwsdG4{LY)L5P2Mq?k(XP)tiG$BWtA)(
zqSl>nHd;CLD|wiI%!wc13Cpxg6sEe*o@kb%q~3~57lXqyXF1svg;l*1v2?T;nJWed
zr&R)9xL~qGu_0&{6BYJpzwtQ7WDdT{s;IxECg7Bo5@m`Q`;6E)MJNEktoH$7OlvYj
zTx#}7hb+Bu{P>b1JI1Q5xJsONdfx!934P;*zR_}fB-a-Xkvyp~-W}f@4W?=~>w4to
za;U^oP9@^;+(bE=FA#K2^j9v^sE$mq65^yQ`9hoWE7G%rR#!c$eph-nKv#Z>SyX1V
z^leaG)gCQ(Msw{*D5qkTvF`YMlp<6PiTk9#iQ(;I)xMaWIRA{k!I%?ZqK0ERXwUFC
z^_hd2TE5s8sUwL~YA79u6v*G3qPt_oZ~?v%7QewuttfN!h^8@k-9Isv2|k{jyR%o+
zn>G4F-=7-&@w7kTevhLok0nm%H=23<(4&t+w$^FW-yi?*3nPVAa(eToOtFbXopZ)h
z{%&tP9!SBeWlZk0UZ{SoHe3BdQ=Gy1ZdZ8I26kkS6kZ55Ro{t7<!bW1&g?ddYs8OZ
zr0IGwn!`Uhd^dT}lUuuz`&5!|C0Q1uqXFu-rP}#2xv>=M_#apQtWL5f_)Q@N{4o)=
z&<g!F=wA>zAWgo?av$d@8hu@9AeU^WlG$ur#r)|^X1G-yNfw7Pkw&zF?^h@iOW~%Q
z&$pwwk0;|1GA5<7=)gAha2(2;;r5#;Nd5uH0?TDos18tQoE)Md`qfz7tNuvcAwE~o
zqD^kycIkumEW(gLCqNv1#O>Q$5n?66lE8=4d08vRu}HtwTvxvr;+pIrfjQ2uNIIOW
zRzoC#EReJgu{Md%VHzOeDo|`?@v@RikSQC#Jr)r0;Xq!@CRo`fEjPg}gkusx5KN5a
z(v=v_%9&z<CG^k{RVW8yJ1@L+q_}x#6gf!h#l}Y`$I}@yo~hVCf3;hTHj<d~cx^Oh
zyu6*{baP}lH&6_cA21!YeS@_SHDVIMc%Nho52Zt!_Y6>c8d)@8U9tM0{XzR$>olr5
z|BCfyt(`o@*c9W!qRGsl$=oJ@7!WAV8u^s<#yP<(EwV~Q;hs@UG>i?g64>(Rd#ZQI
zh!`fqU9WoLIFQk;JIE5ZG0#$PaIAUUG)wC2R1OnCxD+omQ<3P<Oe7vkp}&dKB=Dw&
zNxl-vx2Y>0%hn|oeZEsnkDW*TDb&nTyhtVB=+Nv_y6F<THbrW%AgRHo`@Pg)xKp4R
zjBPt<>)>NkgVEzYGJ~<^EyZ+M?;|r<Zr3SWquKOJGkq-4kfkr4o^O|$;nPFGRDS{=
z3!8#kW4Tbf9m)_&mLQ6tv~!}~mmuB!caFK|G`WZLf2eX{hkCvpa}Twb%}wn@H1+?3
zoPM@-?&@9kf^A#(;>~U%5oF4WVa1rjL?7eNW3R;m6al1XV)wdwwNF%Xqq(^xL<AsY
zRc%~hp7MvfuC+6Hj`nO4&CI18poyN<g?W^d94v<8`WFcm0Ga586igW8H@QsBw9jaz
z+c7fS;-*N<d@|IY-qg)*-dgmh3(f8Mp+WM6I??{&{%CSKX6F;sS?+|WYEN-g&g9dn
zUOiR{XGqDC6Kx5Cjza@J3o#~41}!&1aLMSVXgygN%f|<XI<e8IAR!J>j7-}HLjk<a
zkXMT36T*dzFG#sP5n8YXH6jVBttzMdszy0Al8+8#)4eH88|$(06K8A5DvGo1E9aW0
zRuZ!_@zU&M%a@46u%qS)Cn0w#E(eiPvN}{Mj*tM5?AzrCDNIQQ7%By@qF}^J#L|Ug
z*2zSA7g50t^Gms}lbE@_*JwC}Cduz?a<8aVlo~@M{`(szlXp}+)*uNe5)DPN0tgYK
z$ygN0VB6}4?BAi1#iiKa?q<{rj*R$VS9pOLPOTscDck|r#k)cel2?gRd{E`uhR;~6
z<)j`?V`eK9285l=>v<#=P?-aab0NFK&*OuG^4<PzRUI8mX18~Tdc(C{^PyTTfVoro
z>f@U#B}&mnT748P#1*L0iuc!J$zpuC9mgjsI@E&2)yT@xcgjGylnlnnE*Br49#58I
zef`B|`6so;)chbpIeCgP`SL}o#NqH6KNuaE9w|zh?O1N8SWe85GBX(toH$Xa;@gYE
zcrJi1moGfNZAYcE>#SaCpf3x{5bH9&+0j}p9G`2X%6<gr{)W%44GxrB+uM~46`N{h
zJ3TT!l&nYF)lj5%LpV^YB<i6ifv>r0B-1ITC|%YU>+246$vB5RKhQU@2j2V}tDmti
zwr?c1Lp(nO-!z7piBD)10F-?WV%pGh<C<h^+>JC`5hFS>erpILXfy48Gd5H?(AL<b
zaf;07W=OnGJyVU<+W9~Xw`RYS&0?U$gAFrbv{0}1F*_TLvGHbTwlcO0@=g37ezg9a
zl;WUNLM(!<Diw_l1W130!Bdzu#WFE|;$H=kr+~erk!2!7?x{r)v<rE$8ih(kXE~_d
zI1^`KMDTu61I<ROF<&-Pm>G*k%E2fp8sI&F$lP>mcY%VOJlGe{QRy-i!1FjbT`zZ&
zq3}epJfDb<XGSopgd+I}tAr$Yq)<A3ilGwuqJ61QxQJ1^m<mwnXFQ#*@_SJ~)kvlj
zNz(rHrNiB+G0J5I0#iFHksw;pi&uY4j@zrPldKzzekxEd6boXF2IO9TQbX~KtmHVH
zVBBUgI0}4`p}-#Pn=LYv`vAs49w1MUA;u{Q1d(#(`a<>W!QDiTP}d_lh(Z(c@9|Td
zp>lFHIvfmQXe52NxDR0^W^{tJ1{r!tDji6rI>p~HcVd6)_K_aW-`D39lj+gyK$?`&
zDj&=wI<*f+C?N~@@ovVeDH}a=mW0!>`Xm-iyNIV;ElpX-sLiiq|0j`sHJwN&qTxzb
zRg+s!`eZm;!9+;4j)*Tqm6B-d)KX?5QE8^OhC9hjCY=}vR-)TUgW<D&-8#!Y*FFaw
z`3CC`TnGvb_+ycU0704CI!0HZDg}MTuN$FMyfMX4FB>hQ0?BSca6zP~IUQ#RYY-3`
zS_B)Rs&vB^mBmP1tmo*pg6W2cX270{Wh;<|sPPoWg>SgiwjFiFo=dV=S;bm{Lvg%_
z4V7q}{)yzC=TE>H$hiuyK)lAEjS{RWsXmkI3}L~ugR>W=_6(<nak)Z}ijw$M`IFh!
zrj9e#D>>j2E&x=HsGmiZd4fU3Uon#>+?!I{@mdKFQ7|N(QdF%(K82t7V);gyQWXK!
zL~-}|`_5K#b2*CrP_(XCV8I|dJwHMOgHytCJhCfUagqadsoCzYcdB%fVdk^c*C0aI
zj-*bHM~lHm3txB@nw*K-c;$tu_JCb2J~daYw~C2)nJCKoEZTT1nBFxQtygoBoK{L=
z;DJY?VceoAfDlU#hrx2n4zN0vQJDtTa)~KgALEx<@321pbC0saNC{5p03<$Tz>PtO
z3Br(RGz*G33?+(Lp(lZaiHJt^l%|M`J%7DTJbSP!6G9eTf37KTLLi5x$Px%BL|FkM
z6C;fR?$wC~fu>~q%@gT}l`|CfQDK1UK}7A4wA)vIN;79)I!-BbmT9n|<02mjQcgSU
z{Cv~m)d^p`5RTSUp+tD3A!}Jum{{h#Lb9ocVu?hYSR{XfxAJEaDWWoiPCSm|m_M`c
zDNd>14HUw5D8{tL)s`hOOjtgruMS;!A5OnB_9v(a@?PtksLz72W>6mUDVnpkr+F)|
zX5?Hhxi%NjQ1u@;&VVvmWG&Z4bp}`dpw(hUm6`OIGx~Bl!IH1srGG$*s~64v$Tg3B
zkk8SRQ(wo`(>;2@e=cix-N_`Pt*u@at&@y9LdgrTF@R@fA<}Av2}Ve=fQYlbR)a(F
z2yuZS7TBZNdNEf_uq>lu)XAW(47Oqvm!_1fgR;a@X=)3kV9O5fzZH0L8h2kj)WLD`
zcUNKrmiuGx3l>-b5HmCR!f{2Fss)&Uql!WTK@!eW(}Eo3h=eke(xE^u%qoYCp{vu1
zR?_K$T`W6oS>Z~TqW)w)lvmXn6QEKh1eRr_QoJ1SF~>`Z=t%B_nJ^(5Vagasf@Sjd
z!m4Md2cw}zIGhQk`+6gN4T>4pvhls0+<Ye4N9M*{1r#NfRwWh)+u1F<_x1ZbwN5(~
zE~Z1>SSggwG{dD-qL~OJ3dLrrI*%dIA10?jHW(Qi#@0g~r?4|H-jB%x!t2W>{lRiF
zSP1$W8M51lvcM%8-O^45)MW}ka^8)lD1;Sp!l%>=3uWk=0#884CmjCM>aFT;?C)YF
z8`1M{P)1Q3Y-Cn2`NRey14?}}As3xN%pqtZXAe$QS;vLIhT`2sG8^vSJ(5HktPM8f
zT_n_6c4!FG-dhXpY;qzJA(L0B$|Pu=Fw!1t=bT#c)Y4RYxX<1>o2ciJ1)sNigIds$
znc}q~bL{^(Ci6G5wc`gd{`3IJr!7bk$X>E~9dD$p0gG&P%E3sx!%sLrK-Fr30ju9w
zm<(3wvPXyjSok@tW_*=K+KG0$?Sh0`5ZReokL>gXAH+m&!azf+SYsJh$9P87RS^}>
z1}hg{^_*?EF&rnRGLZg>3hvo#Vlnp?i9Jh`V0O=$`-rY2B`fwrY}22irrUt_jM8Ld
zhfgm@I8Ye$U6dFtl)MtDHkwY7yk>MH8Ll=PWe~eqB7h{#+I%z;ulMDn9o6qo_0`+0
zc#1c%)xg#hH>YE@tiO=Vb%(1>q}j@*i9Q0!mGwrv%Vt>}t;=ei{$cqnq8fWbkfw2S
zZ^h${bOfX*!zsH?$?;4&UdBHlOmz^{q3`52C2Pejk^6+wq!Y<pvsIX+XqFUw3g=f>
z_3wP1-x<WakUVC5{-$Md{4dqp)wif%<|ryv@qJbOfx6wkl<ybIcXgV2xB9MqKHo3W
z=Z~ld)j!*9zF(@pe@A^*{iPk_J5?bpTm6>(b^AAb&$H5Ei(U8on==$saE*zs|AdS>
z&{}&dt`4ksQ}{1hL!-!KTE9iw1UnP-QHv&*k|KAhs{M~as-rgp<QbxTQm&J&QCy?$
zL<cCqM#(C)l6pEH=O@({?2p>JeYZ*u0<u=f=<##f1;DZEf+mq#GLmJPF-x3($^K*@
zT8Lyvhoe$zrhk0E@iP=kebN4;eU<Ne{S^8vjDr5^F;U;d4zJ3cb|h9|39;Q5ie&B2
z2U+oMkeMP-$%o3-Dgq-<`G4%s*su3J*Q%PnxQ{`QLDJQ92e$F0G%BR8)M`ayMJLv7
zkqa<WiU*s?ShHd;rNfPcpE7_>#2=3IwL*jg`_jQ?JXnB+0PT<1Z}45BeZcj5GH+13
zjaDgh2v*XXEl^6SM8XHV)QFdIPO?OCdS9u3(*7v9`#Yt)ol8e+c~)O5k!mbfjwOdW
zV1<o$IUfAJtF1U|L@vkHCS*+-(Pn}YvTM_2N98+(p<z`VC}&c5U8VX|(tfzxSDS9B
zPQA6MIa^F8NH{tYp;oa{x7c5^AM`!TqR6I}1H?8YGoj09$>adg1;&gWZ8ImjcRtm~
zgln-#oWLD;CrJ%kwaP#WM}%ZEA54T4VCqZSUrQwdwN%O`)vTRNW=0diM2e_0Qd;<;
zL=)yPR|oigZ%)e$Id*KHO`=6r?(an7xW|G;;Ydz>&}qa1&4Gpwa}JpY%kh-h+3Tw(
zS$}J7wfeM&i;O1ItRNN1^vH@W1(8DJR|fn3<m9juqmXqbHPD3Iu{InftK-yExtVBF
zys-TU<!Nm+Q#2ByrV6oeIufmRO0`%ao*T%Oh9o-iQT32ouupo@+2k;rqP}9Y6-h9g
zIt@GGOP3SDRx;MAsE?(IRPh(8C8l~f(rNgjM53lhkR`LpUZVwRi>wpt9-=ZHGCYj9
z9u*lFbL5AzREcmB3dC8pB*L_I&*P4$_lGFO-HEXJ7>Q#YA&GGOaYq=4HOeEwBSLgV
zGy`n~dg`JW>68oka4=LP#}2kVL>={T1h2^c{w7W|L0@xpIN?hsc#cPrh}~GvRp3gM
zPM3*>?l+22jm67wzP~*)RH`92v2vM-j6uwhZ8(E>KsedNf~QzFuvJt2y84)X>N+ME
zF;zGkQi5cOYa=75>j(P$*><rrl^>|5vnrTsC)KZywer)QR;xPKKbz0T^5Y@F0n4MK
z$H4&+OdpQ}>J_<iHjLaJr*38h=M>dw$3|1dMmE`>Cr_9nD?lru9!$mqjTCialhmY&
zglE!$04`%8e?g;wABiiiE5)6=da3ottB*pbwIxb^a(!H{q=vdbiE|=uV<cBdl<L1l
zG*PsLB?niB1o_k}JcLXDuSK#aAq@M!N2HJ0X9ddos=IGn3G1`&zR#LPb2QiZH(V2d
zdcDX!?r{7PcR#`PL+*aciXpF=d()PD)B8k^$N24MS^KT)t!u68ux_5u{>^;b#X9Xx
z*45T-B3SO=*cF_U^S2Qtxs^5iN$XZt@Ls@`w{YxMR`G6S|0cEvIeIPU&$jlG^I+rs
z<Bxm#MLhWh`p$!R+_bD7_fP5n>w72gjOXA9cQPIiPyV#?c-pnr?eyXbp1Sec*5iJ8
zH~qZDx=X)-d2{*oDc165>Bj}U>wdP6ea1OleGt3Me%|~x&Yr|?2~^~bZ{_>Y8ia0j
zVRS7pkt=Q|erbZc4g%Xr`goB4*V51Z)-~)M&=8#D{5q_Mp(py^>Idl8asH{xIoNM~
zPTAIHc=|)!{ch^14!{+zwz}5e)0_RwozGi;W(^~$j}ra<1?!7sp!gDbC?>2)<<oC_
z4Nw2F^*`v%S6I(`*gA~&(?0=&P1c+>Pj%xzxBi0uf0dZ-t-ybq^^ewe^dlVdaOfm%
zhLTcI6{Dy^f_!x;l_p${D$HbDE|7z$q{?KHtdf1Xt{TvQmg-Y&g><I|)S&8;-)>lq
zkmGJljZ+zGQcY3QtfywwtlFgJ)V#F^=-mjEZU90zTlX^q_5!U_tbd@M^er0Z&$mux
zE%J2c+1G&K9o7qh^qJ&pIh(cYbF6b&*FKLiezEluFysOJ=ib9S_-97<LMm#$hI#*N
z^y!zelKIQbu#2h7b&0iN9kDJYHf*apfwUpp)ef~&ov2PyyVPz}!jsirb&A@jPK5`a
zuFg<rs<X&~a}Jf#&Qs^B3)F?`BK0iwZ1o&<v3jn$L|v+$hhBBLx<Xy4u2NU4{puQZ
zt-4NKuWnE`s+-i!>VP_^Zc)!CTJEjZ+pMgWv+`DfxVe&52Cu7DP2H+)Q@2}>SU*&E
zs236ecU0Y}?ouxz!&4kR;Zt~e)XDYqN7$8q-*TWwZD>iria-f6VDa<tQ`upi2(5`(
z@56SGQZG?2wccs{q4hEAPpnT{@3%f+ebD-lwP5+wFR5QvFJpb<qvYwm2l+N({fqUl
ztns$s(M{reAGEGezhZ^d%i(Wf>($mP@dbY^esZrMe(U?zN$M5qZgr1(rFxZmwR(+u
zt$H2)<Zn>Fs@|yHWWB-qj<tmM(r)V;WYPJ$db7IMIqAw5?7w5b|BR~--sYS%aqF#9
z)6Ool*=;s^%;sdX*=shZn9V-3In``VGn>=R<_xnr(`?Q%o3qX49J4vsY|b;A^UdZ0
zv$@c0E;5^Ena#7!<~e3_vDxTe_e`&Qj_!5O(Y@|Dy4O8N_qylkUiTc`>z<=~-E(xW
zdyejP&(Xc^Il9+9NB6qt=wA06-RqvCd);$%uX~Q}b<feg?m4>GJxBMt=jdMd9Np`l
zqkG+Rbgz5<n*`ujm^Zl6Y_2k!tIcM=*<52b*P6|BW^=vS++a30n$1mSbF<kTFq?yB
zbBozL-)vrBHn*D1ZDw=3+1z0^FEpDw&E_t%d6C)ZUiTc`>z<=~-E(xWdyejP&(Xc^
zIl9+9NB6qt=wA06-RqvCd);$%uX~Q}b<feg?m4>GJxBMt=jdMd9Np`lqkG+Rbgz4k
z?sd=6z3w@>*F8t~y65O#_Z;2pp6{B=t_jdCyIz0Z#P{oIvb`;M`+@7Hrgm*{w>@_|
zBir8eCT}|%K6qgN{_C&3?zZb<w_W#w{qFv)(QB^1!`qMD3N{@u7u{-}bJCv36}KF`
z^|luryyd$6?x87r_j&%4Z-2qTu>ADQuH6&U`p5V+=jQ7V+<x1B=hppK9XxQgzJ6wE
zbNJd9TyY0SZoV>n#Z{cvd$(PG)75&<y=pe5pEk95;;Jid-Je*y#e7}6Pk(hU?QQ%r
zxADtK=B~Bh&|m#$U3kVBF{bX7`)@k<Lg|FafeM{F$yOvK^Y3o<vm6Q2qIxe6^-|C<
zsrxwrXH#&tc|Nzm(G;BIg?tK^P;iJ};qw(xH6rMtR#Kt-xA_#>tl&U@z~|ffub`ms
z(wfj&(9O%#Wg<^$j*V~%rKQe29D@9B995iE>_y<nXIb{1y=PotC2qRnwgdDS;aFP%
zeELe;^4+-q1;{}+U-5z)t;)?e-h3ncK%OD8fJF7nC#yvM=fRUhP<uQsc&?l|gZ~Pi
z9fS7wL;Fim{}{i0(Ecc&x9iV)>~FGvkNs7B<YQc^J0P9#{pZ^Ldf(-Q;&+tqJHCCE
z?Rzgz#4pY_N5gy1hyBmjPa_`Ahlcx@hHmIXw)7$A%FF5I?aQ_9F`M5dL#9QYQOo}R
zaoRG+zD4^g?aRk$pSKq{`Z3yvY44@Ii*|^1KkY5FU$=kNezpB__FiJ&Vc%lkU|(%N
zkM?ZZd9*V)v)4Y6&#m?>pZKHML$o%H*myn*HjY@B`G2DRL;X*+f?wtL)Hl?ht3}kE
zMZ9qr)gx-r_oo2sgKE)!HIasYs2=3o+thEXd*Oli!V~XRFQdJPb{l67(5|ChNxKBg
z5HpMzJf)sxPw{ys@1xXn^=O^1k9<jg-f1s!{AK#=tL<g>uaG0woAte~lxwIY&vVF?
zBTsw1{ap56ulMiJGvJka?C;P|_$7IQ^-6vAZuu?iHG2OQ`Z*ug`)`-KtdHpZ_vzy!
zdcUjp$MpV)-hZRs@95`e_4E654=egDGWwc1xyJgGzVe71QFrUl7wWsN)ps4#y?VdC
z=62ny59<Bf^b_8xpYR*2XL9c^>m%>dXJ4+Lv!XvA&~N%K`yaXHJ^INH=qJBZ_vc~V
zpNI6l-_lR}oc{c%{``0Sv_8H6W&QaTeWa&9H|Zk}>CeOZ^GEvgv-<O^`g2J>RY`wV
z^^s4kVl%Nm&c2OwCKSm+#;Zb~>d>VWbg9d+Vg6S%b*e&@PC&vEy40`f(wL@8lbSBg
zYPz&d)1{r7F74BF=`>B3&e3$~TquJj)*;<mYx{~{z%y9)?WG!4FV=8yHb}FV(Mz$;
zNL$k6;o5CCobce*Z*0wN`OVFj&p$f<>vQj&o81(dP0jr3%(mWJrr$K3n7nV|z2hg2
zy>|5Kk;ReL(A&CS=#C7&e{k=>XZv?_?(B?oTJ6R5`}^M8dVlN6)}H1!8Xs?5+z8d5
zSN+%OCo8vA2Fv#qKVRHa*pdH2{zbWk%zM-KrSDC@K7D2CuTxI))yazz-;X~U|8VT$
z$jicW;aF%#@I>cN{Xc{%ecAVJ-~GOOeXsXj>3g<st8dCzvA<<6+8?&xV&4t6Uk-+E
zvq$V0e!btr68n1OY#Yhi(9#H_p^&2EkfS93{ZQK?RIvvA3~Q-3#yE7K)1&-PqBl)5
zUUTq`JR@`|&$*0I+J=^K7nJ?Q{6B}0dMSFx%aNbYLppu~dd3?WtLNY?b}#zHTljy8
zbsya1Qbz3o>vHQ5BX%Xc<Xvcj4);a4Gs3wDXCkZ)M>vyXG;Ucvif_eHo*uE@#8$3&
zfUS2`Z0+9HbLI{1Rc~Q?A6GrF`eXOXBv}`Z^2`WukYAEtFi(H%Z|69Zqi^#25%hsO
zxy!r4`vudx25`FvsF|MRxW2(Rxz@aeJSnN)!pB?u*u6H#HFxvO*KwV^&%HExAD{jv
zd(zK<^*Zh_?-{V(?jDui{J?q}XYS{SKD)ZY*%j_t;hq=s%zNqmA+GZ7@oAVyj|84c
zMl7dc`Es^*b5vmQdiLKyd!xQT0(O~qcz~_Eod>zV8uSGM9*k`L&T?JQdO7`i1$`0N
zzm0Zib(x<0fF~@waF@FxdQ=5cUJnEsUJvd^UeLeFF{OKNVB?Lvc_Z_FKX%9PE`Cd9
z$=$%lgWNm#E<N|r3xSe+TS1prt4m~4JZeSx7N;fI@1u3tpJY2n+sytJwkOcGvA><|
z4(>Z~b&+gi%hqYMvp9Y}$1k8=$k<=R`DbzL*|dw<zk==6v>P~o6Zaip{~-Ifu)ULZ
z7wyHgm(mQ}%xp08cEyFAjP0`Z5ZAn$_Au=*?LD;j@vM)~K1%xp-#^K9pJMxIwx419
zS=#4lpQrs9?TcLZ7qqX@zDfVS#dY82_;=aA4X7*tl@*|}<U(cH%5i0$V+C4~R;RUS
zeY6gDk8*yT{Rx^tZkl8BYz_35fZhVoTL5}1KyT67$yOkE64&fve>ZI}`}?@&RQ6Bf
z+!<`oq@BgFbJ(88c?0ET>q7P~;y0c}AD_+kIh?<E^@#OcwwKT@rCrW7SMr>z*uR=<
zuHo8i*<MHUM&f3!Ily-_8ViiX0wb}+NGvgXm#sH)@0-}(%kj5x>^`<{W&1Xs`vCi9
zR<Bs^;5r$dcd>nlemu;%!(8_s+WR>E$Fw7~k8u1Ej(wEv$JqV}&-n!V-iR%5|ED?r
zr))pN@z2pd&-Xv0eUbaWLi=;tUvT`Z9QzvECAMGZIp1X88_Dl*|983Wdu$tw=rW@z
zBY0Ggo{U_F{q;G%<j(PBMrnx=I?Cv*Ffz+}M9dst)T3}d=P%+7FXq=S;W~k^%<bzq
zegoSZId&8KGRJqibLr?BcA0r})SXAmWW+woTso@flJsblyQbJq)8^PWb4Yr($Q)YI
zy)zhilsP25TwI$!d$?Za&?&Ti?3;OX)H<E-XYnTIusxS{9_QpOF5uXO?91C2Y(2_6
zI;t`DxoqX_F6El%v6Z<bSbQbht7+HJuBBbaF_}x|tq)sfJ}ohyma!rV+`YG(f`)D8
zN<&8seD`twERJ2oQ!ZxzGOm$dxQYE+*m|_=rR=|g=5Yz33vZ<fU44Lig(f`A{$bjC
zXhIMEm}5uSdUWAq?EeYJgg$(leW44VWBYm9pV5RSe1-PsG><kcvHx}2H@OxH%-+T~
zke;6ng_ho5&n&x%?+0k-aiv@z(NaW<cbR5?jw?<8(%blcB3GTvcX|I)**}eTI@ib(
z&tZEm62%3Kkil|+%?i+$xn`h$Bfokx#||+12ie}jbMK-V%sm3Ej)1ufz-tlAJq+e9
zfVqc(*&;Ao*nqhUVD2)Qy9nkAZM_dT9s!Pv!0`xhTm+6sfa77{cnHir>|*W_V7UM+
z7s1>`Xzil4!2O?QYcTgdV0$01T?Dp^z;*%HE&$uZ!1gehy8z}M0dp6D?~;qTi_qXj
z>pOh^F7Na`o_B|VBySz1C21ZFHnU1NmEg=#=&r$L!JEz8X*kx(27D2yFT1#MbOW9U
z2V2oNawhkl#jl^wcf-jdjID68<uy*WPG6T@d@!7CKlfZiyO!qRgv?@t4>Cf+>10MP
zyPR&x<#fw%>J_xLql}o$a2c^>m)0)1w00ROXN6H)hTbm0zn9%nTXMPKQATaqo&77;
zdwGt~-1oEn0PT-~_7R|MXzwB;xCrfC)Y$NGp8E-&X-090QS|8V5*V@!=RC?tF1nm^
z+4=(CzsU8Aocj{{U*Vjg$BP^2@iL>jVts>VxT`m^LX#IXO@0<5x(rp6QC(T1%R&uB
z_K*=3ZaT?!itFZRh7ulSWQCi`$R2gMsc_OIJ+gZ^b~5Kqq3vVeP{3tIcLi>G)a9nj
z*4gX}B{bZ0aShLe3W~h)Tz*fe-(@t9>RrXY(E0srui?C*ehb$1e7})<ZUVvwXg`f^
zy^UuG&3Y&8A?|&c_E?&=vPQGk>6LIp8HsgTwUJH<w7*H8zQy_P(i}big@c^|mARNB
z9!C<HZ$V>|z&=MS(gf~8r;O}pFv`e&f=MgDTlnIl%NLg|183nfA_Fe1VUTc{^J#)T
z7jaHtc_rVkq6yb9Ff+aJFykP{Z{fV5^&$gqr1i_tt>t5A{Sq(}+0TQUNEaThUuJeM
zGrK)nFLZthxGifs|3$7da9f7{EJJ?`ZLezD?m=RTqvq|s*(Ptlvf-^|W*MGpXvOjx
z2NPZ?vqorunHeh@_U3JcS|7!Nwvj>!FEE@WvPO9>;+Pq=WzA8VYa=G~ZjvT_6j~=T
zf{_hGI^T#9B16iPSJwFc1&oN{_aZkQg{H}`7|tT2BXXhi+3@pa`u#aQqvwyo)g`2t
zqr^xai>piYYJpxY(W?dUbxCu}Ezo=6`JywdODs!BydtR>JUxx;Pv^TxyfTN*29M66
zx94*FJicGRGYl_0>h^r)7)eDWUcuF6%_9x2F1fhsQDwo^1>SB6d|lw}4)b=0vA=k{
z#e=QzjvX|?AK?u$8U|L&PzJ++Wqb`z9c4XI^h{5$5;@mM9iQabr`Q*1!;>h!$^N%E
z{%y9x<s#^z5e*+R4_1&UBIr=Ud4v|ps2F)j@p~(1j?$Y0oEJ<s@?(o5M$ZsTH9Svv
z-N_t3g|<!!*XOMH1;Nl2Ep>U)#YRk(_q&C*j+ra26ejwB@F>x4g-5Npl9*_?#<K7b
z#|=*s4Ndsbii@S91FRrP2&OK9sVlBj=4os~={$@TZOuq#i)_EbwSP|g3(kL)?bp~Y
zvHd#dgwF^}?{*~y(cXl=7@bz=oRJ*X>7CKwJPBeMej}K*;zCm7RFSqt-(6-lEW2}8
z_{>qQt$8$1AiU0JWDX0I7hM{-z<f0t+Ql66G&4;l7(;=&fw=G$ksxHeMUU_#>P1(A
z5PA5CbmbLoMG*<&b+p&h-avaJ*T0E&FYPUSzmKgMsTJ2|BGQDhnY@Fo@S}He-9x<V
zvHG=<C|1@aiVt$#hiD(B8QLp6OGZ_6@RhYu{W#x0!Sf6zthmy}3NoURzdy^hpQC-A
zCVKf7I4(3=M*B;&FVp@9?NQqL=&vyPqPwrSqc4(%%mCqkf>|rbkRoY_42c}!&Iltz
z#yOItnHgcULE(N=TrIS8o_&K$%Pua-3=o}N^evGzmR+6wDEt5$3de=Up3U}Ln&Eyz
zGla&9-1vB%N{>Frg-RKYxRF<gbz}*OBAVbFS8S#k9xN0|c&+(G!+F+qC!tKD9~jza
zIM9uJ_o!5Djfcp)_c8lqwr}Jk=G{G>XWrS+K>0;aZxkz!r<ttt58)j*(u{RS^uMF{
z#zgsr$K#+_P>?z3L7lCU_f}l%iNV1senBiKbMS$6K5|5l$ae18!E@I~L-cgRPXs58
z1}xgI=v79t7o0qkeKS&`2`{_6MI`+N%@v=;HS42gDE%cIyOjGbXDf1`v80In=kXNb
zm|{(lw-=sr$i>$M4S_@0-TRn-OPU%zcHS9Fn~Z^svhW;3yN~F%Tel4vY0J=X^G5O(
zGS@Dk8LoJQo(s1S3M0~%=p=@c9N_ywAnjSTj)w)FRm-zPEHNfx(Gr>{7Oi#7N_sla
zF(bcta^YbxM8-rkEYG5~?DBU{MifrEv_TG+8D%UI#;PUbu;RXr&`iOcW!`APmBp9b
zaq#ruC3l_+j~C09CyyKH<tFYsK%Zn5-on1IYAqvMF2KQ-T-vw<Z4|4Pa51rJEyKl@
zT-{jcqNimET@+b;0gfhCtz|gc0vv4#+9%w8$<?fcqlr~(8IHCD-4m;pNC3;OZoGVq
zRcjfVx1hBtW7S%Mvx!wpIGb3tM2qrtW3f*zL)VsFy0(IkkK*k-*+saUVA3RaOmp0f
zlt(>;lX)W~I<V-xOBx%_;kX$AnNLEumVmlwK*s(fvtG0wnemUca2>%PD+iR9WqqAb
z>4``p<IFappu#&nDQX}4r*h31oRisWwCZ)K>Pn8utQC#<e4e(bDTm-oouliTiO~!N
zXXG8%X|>Emk$*))ky*Ip$~{Z^SC6$&i)P~4yTt1BT%ISKS+M*{?!AiUy|bauhKicm
zB=V4_!!I+N#762_rbH$ZPU~qb%UWj_ndq_d(6ZLg&Fm4*xeVuA*`T>ByIk|AD?c79
z6D>1q#1`twL(48lG#bs<Iqu0rtZwn^p6yMjxlj_J=4Uf{M#dBgFsEV9S~0MRa8^b$
z$7l)cMJ_gyz2S|=YJ(yH8BNfmPa?rDYVG<$wg%oZ+Crm@W-VHwz*wYPk;*+Tbx>>2
zhh1BVShNm-wTFT80&qTpL~|IdJ>p{R5wO-+wC?9w53qlTb8qLKcd-9X_6_FV3+CPj
z=HBOG?jbPuJ}~zXus;m!j{y6_V6NCi4zo@xQp+K*_b~830`?w3hCc-MicLf;TlXTd
z9Cj^RM;M3ukV_ANy@wbF(JT*vy+^>_!>$eFFp|k(F!%@<yZ{CtK{8pyBh%oG@JP=#
zZFF&g_$bX_vL}^@6<DMa(MF9-y3y|8=~9O8$ry|N<YBkyP#)eHsYJMi%zR_t5d1r;
z^(Ddbb<I`iD61dZLLjn&$Vf&aSpv_*+G4DiGNa_z#HM@^Tdh~HHRJ2)l%6!QDC@60
zNn`*cc^wa%Mcxtn@J4%$;S(ZV8O%l7<{6@mT~E7_CNt?~ep&jxmtR@Z7XKP&S~T+x
z-mfjV5M2bKORhX87-FOcu?5OIoe!jh*UCH=y7)ZKUq%zE<=Oi-LhNRaiww6;FJyH~
zxR2;h$4ccwD~$eRR`oniBlbMuG_tzo=}tz<HWm&~Z}P0!i>{SJxQeWBtuQaenl1X0
za1@U=7)iOZX7`!m%(~<&_8wzjlhGA<>haR8xB6uCQ;}v3{6%LG_>0c64uPOMUyOVs
z^F*v}GDk$8#n+WR;Z`!YMXnPXB|4T+6;IYRbJytpGP6XwF}jja4^LN;H5c@>W7h8Y
z4X(&@rof#I_JvQ5(#AO^{L;`ifr3~qmfik}wCUMYq-P7R#JN$z@zz^5S{p^mfz$DP
zO=W?Gkv13gx{HxE<^4VVz_VnCq$7N2qr|zW=a_ItS-;!QxphfrkvA7jQLGt9faQI>
z{SgZ<U;TzgW;0yhvt*dD6v&I5>*0^+phj9WxN{4?bQiy9W~^|xWvH&v_zh?CwEZR5
z8odOyHG1Q^#xERBbVHGk7ND}S;<v8tf1KwVtMd{RR`f!#k_eYuW)?54S)0Ge@paiq
zDC^<|oo^W~w+Lkw&3_5XDi)O`Y@af71@;~t5*j44GRGQv#Ben}MFSGPC|94v_mkPz
zBgXbz+W9o|1felG{4}65wCib_#;`Tk7?E1C8lToFq_<{n?9{v69vOSH&|zb*lAhhD
zd*`hb7@2i?jXJhCYq+;3<A{7C7H;9W-s+jmCBa7F<U`u3Aex{&U91LXG>v8TO+aYf
zB4Ae0MB{&$>kiZ2!#(Tt#<SHtR;xFoBwG8it7bAnqLmw~>Xn+WP4aD{q$V`o^j=13
z*_A#G*D!Bk`~`%%8m-cdp3wALXm`?#MG8+C_FqnW1?_Iy<82_GWOme*%+}Wp@8|jl
zXoqNTr^y_CC(YPEj$#8bw)w+s1uDh{a`XvoAV=4%evfeNM`<6U{R!>kv`^4JN&6Jd
z%=M$L4dkf1!m_>&X>1@zpTGvPzCQU?p7k}FKwB(e#s(tR#iQWEQ5PSMY8wc?uN)CN
zSfo9k;>+5ynW-|j)+xT{b0E^gV{OM5^Bkd9LYuB--?JT?l@N~u7%kXX*M%<0To4?Y
zrp+<-o7ozf#!y;g-!QZK9G-kGZ5?O4S?=k28?Dubb_v(5YYgw`Upm&Nv!H3Z%)nDQ
zZ@3GRF#Cqji*(_w1{n$|)KPHhD%$#c%9^)G8=k#m0j!hv6J92sW5QvKb%nKG_T^m#
z2gFjpgRRHoWDVHh!n(cUOwOOpJ?F4Jm-|GbGMK$>gRJIhWF8E>-iW-mh)2~Bo=oDg
zWD(iXAi5_<Jda3RMz%K+XOi!tHyWPk`LK9vsT*}H>A6RL%o>AGO^-VZH4|=PxX7`x
zo@crAuvX+C@hw@>eqYkdH}b6Ybx+Zs7Lkd>$3)gW1xr0krQtN%&xHFf=Z!uG+_CfW
zEy*^=f5YjS=^PXJvbFkcm*dNtqW5+(4}ZY?^Hz#QL-w>s@%a$VQEV167iA90IEc07
z2((-5xiULEEm>BAJ<U;gsn{coSHuC1AB6vz^?C8ES>Wx(1|iyv@YMy^2C?YcAQm>P
z&x;LW(bZ&@pi8no?|IfNxSGrYJa!S<vvGA-Y!D039$BCFY!I?OzX*>N&l>TGIs%^+
z&l*{u7aN4E&o3b@9&v3Do@dPhv}FN4E1orCTb1?sMa^fw$8$y*fxlw}jFnyHlF*kH
z$NJa`7L2kT=euBoV1j2k5)2UQoTfF5lFW9)Z9Tov;MUE|<b%v$P3gH#D82aUy^dot
zcRWwIdpT}A9mRs<%@-^<T%#@9TtA>OAg*VLczMeF$Z=fe2(*dq6yN69YP!VMlK}T|
z-t=@x%LW&6pY+yveJtbsnPY5?XXeX!#@)1gXa*0(qi{%j6dHfNhU-^p{3K6xXR*Lg
z<l%^>A}!v*z|i;v$;_SNtWZv4pZ4s9#;-wS0YlR~m^NHF+eqo6w}=!Yv`p|+Xxa6A
z7a9B(M)WT3_awe`o5sd<9#2p4Y#K5f7u_`;(Njd?^Yj#v8#dZBL{~934dH-BevlPe
z(N#9uGQ_WIqb)<$cFfB5xLzj{=!^r`3AP#<Y}dw%C(C%9%v;H-_t``>8ef`*>ywDw
z%Q@j(0*UJxlN-4IM%qmr6Kj@ON@Xl%3}3<i<HxbVI5zZ56VK4M(eCGWjCW`c|7-E4
zZMgoR5{GMSS@?f(CdseJd=oAqvrooY^J4a8#+li+sJVloKtf|ZJpyjPy`JW4D2~{A
z&3KA7B$jB27BORbh%r6PnBEKS9O8{~;Lc&*D95bKt>X@3_$JQZOM46F?^}H}wD&Mn
z=&<YIddRh@+y^CE0GGs5Nc>I?Gxmp(8O2jbtf4}Q4nv8=Q%Gzo;%9QiwW%z*QqU3C
zrm_GvT7nvhx6p!XQ#s_$2cbrXU7L#MEhPHuy0?&#bT-;l#A9d)NoR=&Rl#o$(gw#H
zz|F|}9Uwi&{yf_)G=ca|z6&=K9bgYl=FeWv3C_z}tU&!dj(Ir$9OjL1yXSH2GR}!!
za3#%y{LLIY$Thcc|D7B+()Zsn3i!5i&nwu<DBMHaNX6d7aiL=Ov3)Dsx6$tBng{rP
z2uNvrG|zh{eCu5tm$~(K>-?NE8|jD8VUa|Hx3_qLXgeMDH63AVq>_!2xmcFI0v8ni
z?yY}|tynNBqNNm%zKDb()X>;OR?t0+tRz?^)+CV$*DV6Z=5sUG9N@S><uTGb_XtfF
zNW6)yq2oEA;Mq_;KX<dXyzXtCV-7x6LKltmgY@+Xzw;6HAK}@?R$?UaPjLLx9RCdM
zb2QOk{*3lT+LyV{*h-EP>74uDt(|FXRYerX?|psmA*~9*Dn?5M+!_}wL=jP&ibzad
z0I3TQQ7lm*)i!F}F$RP2gEfX2J{V%e54Z#fMl`Nbh`}}0Xf%!BhKe7oCML!WHU9qR
z%yjO1LBD8k?ptQ=yUYB~oO9;PnSYVDV!TANiL@gvI?w#q>3owv=bBh8=Pe>HGR7(-
z8?~*VTn^caMwbJw;yK@vgGH%FQvNXeqx^mY@1BD{4b0oJSzxZ5WcTA+c#n2M)@ufy
zj{9jbp5^g5#j}Lh0(Qqt^Ztrsp$XYFPAo>v`uOhi{;~<m1(xKx?M+$gQHS8aQRmos
zw$39Q?~;ohrcRh`WKZ_OGqycC;PG$aq|wqgcE?CL0Ez@C0uV<%p0%@+^S99w%BuC2
zkPX+oLp$FSHj0;eEX&6A)VUuQ<5wO#s(*6pqczyXC)KKeW>yt6x~IXr>wmI8z$)o}
zx9eybuILitzO#_m+6`+<-V^$|LRxpQjykoU&YG-Ao5^2e@TfGFQZzG;FBBt=<0*~i
zV(iorm%eh8J@?*aFy4VyJ@|T&xK_l`ODjvB<a|P~BlvngZWvGNwsIFoqK7<|_9}Pu
zBD&>6Q1F@C)37VLn>a5si{on})k795yMSXHrJ=gn*)8U2MUUI{OSE}$?5T*gVquzv
zRV+-IJ?kt|Fe0~{-~Gmjrev1P2%btgET(NaW<8%bV3Qu_z34l3+4xRY+{YNwuFW9Q
zY+6-vCkyU&#I<F#+-@rxEixm|OVJ|lT|=RFkqOFqH6lvA%g1j6lzYTxFx;tTJBE-B
zt^A4E_i0q*ksM{+M{i8=x4{s9Qx6*smRK2|o^j*x2+d6vbLHYX2}O~Waqn3-ioc~;
zLowT4vA01i@G$vQZhPF`xc~2?F2%9jfBiP-DfeyMUy0T-ta0LQ)GDb(B5utEJK-yv
zTw0l><@gyE<2!(!(~OQ7&wC5+6R0sipVvv$$bXDE*{AY-2H#Jk?sPsohOITefMS8&
zoJVV07IMrI-lOf8y}zEl4?nP<yH?-YmxXg*GTMCa?XETB$faoa!^$q&^Kp8YOQQOq
z)-7q|p*E}U#mTR8o$NY9`ZuoPLRw948bX{!;~seiiiV%WXQAWzQzNycKjjs4A_s9C
z<S`ko^@%ak7zx>3hg#AtvJ#TpqD5d0Cs$GA<ex@m=C{}#`pmNIT=bcXUYzD{+>;x|
zlWPRMR`XkA`{cKDQ|5Q8C=xk2WZ1_MyrVhIdZse#`gv0K+7vVWG4xL5mdR_=*fTzr
zWU-iG<<Uj&ovuCI?iJ&!(e}lNVal44{Y&E`&x%UpA;nZZvX`<!E#5?_dv-qiFJ0u`
z-M7Ie#ML7{w<1qKeu}RGN&bpF0@(<k!%-YberJe{^2BZf7=fAu#aN>IAbY_?S)VaW
zdyxJuE99~2vp9>cI+yq4gLu4pF=fe1k`%>AxX+(iZ{q51H}Mtu>^fl#I8;U~SG{FU
zqqAt8qbDU_q?Nv!b4QXqjTK@$PT;fJ(zTZNiFS_jejythBN(6ZbVKwBk7At1Z`^|U
zT;)Z4_db$*jTj+IxkGWSP|Wf3?BLs2w|57>_jQ03By4XO3lwz%@oJ<|`e3Tr<Yw+9
z_G;bz6n6Izln<f^<REuH7<%=qhE1Gp6F#%q74g!OI97^4N>Vg$rL6848}-=>MI_}v
z%GdX}sOPY)pv+^y9*LAM8U3BwzT-N|eZw|JWGRZI)ln&aXCoL;Pthdd@+lHG7@lk>
z;G!s{o=o0`XX<J6B5y+)K=#=4!0MmS=OC2TCXL{u7?1cmR!Krva1M|9>gha!DILC!
zJ&xJd^LYc96?Jw_9G00T_==qS;h4bv(30h6pVd8)I`Kw2*8&U>_DLlT{7%dd<({Rz
zH)SVWeZ$h8?3mu=*DTE@_V)GkvX)!*2ihwye1?mR*E}27_<QMY*azD7wP#<$3AKfl
z;eJJ}^S+6`)P;Z7hP@P{L^<Q?`Pl47`}|k<EQXD0w%5LWpZ!@l;y3#|%<m?1SL1l1
zU##T2?AK89yS;y({bBDqZv_^o?_gW{0fwP;CtcL&j>>ovFe?{o=8e=mU^QCdUSfTG
zqqS3szA%L&G|QLSGl)e^Em-1?RH~Kl8TOO*;k;_40V~n<O0>zztkf1CROErW96Nsn
z<NKwI?|Wd>5>uCW!j=;^5+~Jl*!@13x8BU&GLEgtttBq458%=gZ`Q}KQn5M_#-p9t
zE?AE~%RbM(C|vb=u6hRlr@RB})rsYr1v}DgEY}=3uFf4{wlY2|#-8(uL@Y4ws!cF`
ziK**p_?(^@VQ_jrdjamMml*lJV%$!zW!tjt@I$>0%hL|7${YZ#)r7SjLyI`eR14lw
zE1v8me1qc|MZpV3Y;7uW5^;ZtAEh5pL)<7U>B;w?eOIHK?x*dvs$KszdYy3)Xf68&
zMnO*y{o06>WLf)uGof3ZGiutX7N`$@sD501x%yc3-s*~KSM|8c`IQ-!$^84=pUS(+
z+sjXs?=Sb4+Z+C9nBFj%|M2>A>9f*~(#FynR`4%^mE$njx2C`*RzhYzfRE}C?&WIG
zts*;N%Xz|l57!mSTF+kvfw1LoQ}=eL6Z2h#bJ&){@RDy1HTpjv70zv2{tz_}g&N6N
znP+E%)iuv=59On+yccQc&99;yHV?c0ev~(WRCi96Pu>+uM_Fk{){%n*yB}Mnv_#MQ
zi!yjr?DrKbYt9=fLpxYmnWLmDn)oip0!jQK9H%%>)eszQECo%V*v=}G>7X|j{N&Z1
ziF_T5e4Py|%sI%_;jA~D%Wvl66&;P#FC-gjF^mK!BJn-^T5N!)Amw8E6Z)OTZ7>TN
zSjjoWZ7>@t7(hlP1?M3LYhYayx50(RZ7>&KZ#~i~Zi8;*VNZ4$Y;VWHASRZaaqMEW
z6H@wKp$~L&#x7($*25lS_3Eh=_Az+#M<SQCm~W+h;Eb^&>oI?qx_3ieE#`MpvnABj
zV!oD|wV|en`MH$e8On>8FQa@}C{LIlN-3N&c2^1W>6F5oW2F)EVag_kvWU4jd-e}y
z!h8b1P)muQBBvF`QzlM|23lh(Qh5ejh4$-23TCs7q8+=?Y4g}dqth-yW)`tEq0g2e
z7t7cVK!>eBoA<MgF@(n&!s86#gA8GfRR)k3A$+(YJi!odHH42ageM!qM;XFxhH%da
zf^)(%NV+Q~ftg8QgGpf3B(TXOaO}u$il`qPbd_tWq^FXWN;;}mDun!SxO%-*yiXl0
zLe`?SQlb97HPqBf#lzIVBV@lRO2w6w-yO<}QgJQiaQoQtNh-v4GcS}TshCOW%upJn
zA}>>RR49v5fmOyH`#B{QlQ_Gi;=eJN^pT0D{vEkXR-xhM8}8kP`=y5XLPLBJh(C&s
zP@i4`;v2Dxo3TMX*r2Uw<L9tF%dtJLVHdY!Z*Da1$y?!^97ML>M;G6PJ^Tb4vI~81
z-@odEO<1;Pv1Hr!DH#={b|pG!4LYV4`OUP_?$Ap0$jd(L2z9l{v(7kwD%8{>{~$FF
zhMFSsL}K%sLwOPTC6x1D1M84S-{rA4B;+Lz?cvy{5B5;zUY-8eo_bDmUZt!WjuY~D
zjsFAk{U9%GK9_b}ji!(WpHF*AYj0v(00K{=yPsvd7$jaok8ESR6p!Z(yrg&77Q!U@
z9-8GNw#9fjJDHXE5^OL3S4|+9$xLP%OlGPkGfgHl|D*}r19AT&c^}F5NS;UXBs*v&
zF{Dkw)17EO;DOv*2^s!|*8w~}@!x#O>#FQ4+IkgbyX}3oweTu?l`ooMLH)0E3;cU3
F_#1sSXKDZd

literal 0
HcmV?d00001

diff --git a/tools/calcade_art.py b/tools/calcade_art.py
new file mode 100644
index 0000000..b1d7989
--- /dev/null
+++ b/tools/calcade_art.py
@@ -0,0 +1,302 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Calcade dressing for NumPlay: the pictures of the start-up intro and the
+fonts (with French accents) of the Calcade screens, into launcher/src/calcade_art.c.
+
+Pictures (from tools/calcade/, the Calcade kit):
+  cc_logo      the Calcade logo, 104 px, with a light outline
+  cc_C ... cc_E  the letters of CALCADE (Archivo Expanded Black, relief and extrusion)
+  cc_presente  "présente" (Caveat, fluo yellow)
+  cc_spark     a small four-pointed sparkle
+They are stored as rows of runs of palette indices (index 0 = transparent), one
+palette per group, like the kit's intro.py.
+
+Fonts (Nunito, as the launcher's, see tools/fontgen.py): cc_font_title,
+cc_font_body, cc_font_small, with only the letters the Calcade screens use.
+
+Usage: calcade_art.py launcher/src/calcade_art.c
+"""
+import io
+import os
+import sys
+from pathlib import Path
+
+import numpy as np
+from PIL import Image, ImageDraw, ImageFilter, ImageFont
+
+ROOT = Path(__file__).resolve().parent
+KIT = ROOT / "calcade"
+sys.path.insert(0, str(ROOT))
+import fontgen  # noqa: E402
+
+SS = 4
+BG = (24, 32, 78)               # average colour of the intro's background (edges)
+ENCRE = (29, 63, 191)           # #1D3FBF
+ENCRE_FONCE = (19, 40, 122)     # #13287A
+ENCRE_CLAIRE = (157, 178, 255)  # #9DB2FF
+FLUO = (255, 225, 77)           # #FFE14D
+NUIT = (14, 20, 49)             # #0E1431
+
+
+def finish(im, bg=BG, thr=40):
+    a = np.asarray(im, np.float32).copy()
+    al = a[..., 3:4] / 255.0
+    a[..., :3] = a[..., :3] * al + np.array(bg, np.float32) * (1 - al)
+    a[..., 3] = np.where(a[..., 3] > thr, 255, 0)
+    return a
+
+
+def logo(size=104):
+    import cairosvg
+    svg = (KIT / "calcade-logo.svg").read_bytes()
+    png = cairosvg.svg2png(bytestring=svg, output_width=size * SS, output_height=size * SS)
+    im = Image.open(io.BytesIO(png)).convert("RGBA")
+    a = im.split()[3]
+    ring = a.filter(ImageFilter.MaxFilter(4 * SS + 1))
+    base = Image.new("RGBA", im.size, (0, 0, 0, 0))
+    base.paste((236, 242, 255, 255), (0, 0), ring)
+    base.alpha_composite(im)
+    base = base.resize((size, size), Image.LANCZOS)
+    return finish(base)
+
+
+def letters(word="CALCADE", size=36):
+    f = ImageFont.truetype(str(KIT / "archivo-black-exp.ttf"), size * SS)
+    out = {}
+    for ch in sorted(set(word)):
+        bb = f.getbbox(ch)
+        w, h = bb[2] - bb[0], bb[3] - bb[1]
+        pad = 7 * SS
+        ext = 4 * SS
+        W, H = w + 2 * pad + ext, h + 2 * pad + ext
+        mask = Image.new("L", (W, H), 0)
+        ImageDraw.Draw(mask).text((pad - bb[0], pad - bb[1]), ch, font=f, fill=255)
+        im = Image.new("RGBA", (W, H), (0, 0, 0, 0))
+        for k in range(ext, 0, -1):
+            t = k / ext
+            c = tuple(int(ENCRE_FONCE[i] * t + ENCRE[i] * (1 - t)) for i in range(3))
+            lay = Image.new("RGBA", (W, H), c + (255,))
+            sh = Image.new("L", (W, H), 0)
+            sh.paste(mask, (k // 3, k))
+            im.paste(lay, (0, 0), sh)
+        full = im.split()[3]
+        full = Image.composite(Image.new("L", (W, H), 255), full, mask)
+        outline = full.filter(ImageFilter.MaxFilter(2 * SS + 1))
+        res = Image.new("RGBA", (W, H), (0, 0, 0, 0))
+        res.paste(NUIT + (255,), (0, 0), outline)
+        res.alpha_composite(im)
+        g = np.zeros((H, W, 4), np.uint8)
+        ys = np.linspace(0, 1, H)[:, None]
+        top, bot = np.array([255, 255, 255]), np.array(ENCRE_CLAIRE)
+        y0, y1 = pad / H, (pad + h) / H
+        t = np.clip((ys - y0) / max(1e-6, y1 - y0), 0, 1) ** 1.3
+        g[..., :3] = (top * (1 - t[..., None]) + bot * t[..., None]).astype(np.uint8)
+        g[..., 3] = 255
+        res.paste(Image.fromarray(g, "RGBA"), (0, 0), mask)
+        small = res.resize((W // SS, H // SS), Image.LANCZOS)
+        out[ch] = (finish(small), round((pad + w / 2) / SS), round((pad + h / 2) / SS))
+    track = 1.5 * SS
+    xs, x = [], 0.0
+    for ch in word:
+        bb = f.getbbox(ch)
+        xs.append(x + (bb[0] + bb[2]) / 2)
+        x += f.getlength(ch) + track
+    l0 = f.getbbox(word[0])[0]
+    l1 = xs[-1] - (f.getbbox(word[-1])[0] + f.getbbox(word[-1])[2]) / 2 + f.getbbox(word[-1])[2]
+    mid = (l0 + l1) / 2
+    return out, [round((v - mid) / SS) for v in xs], round((l1 - l0) / SS)
+
+
+def presente(size=27):
+    f = ImageFont.truetype(str(KIT / "caveat.ttf"), size * SS)
+    txt = "présente"
+    bb = f.getbbox(txt)
+    W, H = bb[2] - bb[0] + 12 * SS, bb[3] - bb[1] + 12 * SS
+    mask = Image.new("L", (W, H), 0)
+    ImageDraw.Draw(mask).text((6 * SS - bb[0], 6 * SS - bb[1]), txt, font=f, fill=255)
+    mask = mask.rotate(4, resample=Image.BICUBIC, expand=False)
+    im = Image.new("RGBA", (W, H), (0, 0, 0, 0))
+    sh = Image.new("L", (W, H), 0)
+    sh.paste(mask, (SS, 2 * SS))
+    im.paste(NUIT + (255,), (0, 0), sh)
+    im.paste(FLUO + (255,), (0, 0), mask)
+    return finish(im.resize((W // SS, H // SS), Image.LANCZOS))
+
+
+def sparkle(size=17):
+    S2 = size * SS
+    im = Image.new("RGBA", (S2, S2), (0, 0, 0, 0))
+    d = ImageDraw.Draw(im)
+    c = S2 / 2
+    r1, r2 = S2 / 2 - 1, S2 * 0.11
+    pts = []
+    for i in range(8):
+        a = np.pi / 2 * (i // 2) + (np.pi / 4 if i % 2 else 0)
+        r = r1 if i % 2 == 0 else r2
+        pts.append((c + r * np.cos(a), c + r * np.sin(a)))
+    d.polygon(pts, fill=(255, 255, 255, 255))
+    d.ellipse([c - S2 * 0.12, c - S2 * 0.12, c + S2 * 0.12, c + S2 * 0.12], fill=(255, 250, 200, 255))
+    return finish(im.resize((size, size), Image.LANCZOS), thr=90)
+
+
+def rgb565(c):
+    r, g, b = (int(round(v)) for v in c[:3])
+    return (r & 0xF8) << 8 | (g & 0xFC) << 3 | b >> 3
+
+
+class Writer:
+    """Pictures go into one blob, packed with raw DEFLATE (unpacked into RAM by the intro); fonts
+    hold only the letters NumPlay's own fonts don't have (accents)."""
+
+    def __init__(self):
+        self.lines = ["/* Generated by tools/calcade_art.py from the Calcade kit (tools/calcade/). */",
+                      '#include "calcade.h"', ""]
+        self.blob = bytearray()
+        self.sprites_c = []
+        self.fonts = 0
+
+    def array(self, ctype, name, values, per=20):
+        self.lines.append(f"static const {ctype} {name}[{len(values)}] = {{")
+        for i in range(0, len(values), per):
+            self.lines.append("  " + ",".join(str(v) for v in values[i:i + per]) + ",")
+        self.lines.append("};")
+
+    def put(self, data, align=2):
+        while len(self.blob) % align:
+            self.blob.append(0)
+        at = len(self.blob)
+        self.blob += data
+        return at
+
+    def sprites(self, group, items, maxcol):
+        """items: (name, HxWx4 float array, ox, oy); one palette (maxcol - 1 colours) for the group"""
+        opaque = np.concatenate([im[im[..., 3] > 0][:, :3] for _, im, _, _ in items])
+        strip = Image.fromarray(np.clip(opaque, 0, 255).astype(np.uint8).reshape(-1, 1, 3), "RGB")
+        q = strip.quantize(colors=maxcol - 1, method=Image.Quantize.MEDIANCUT, dither=Image.Dither.NONE)
+        pal = q.getpalette()[:3 * (maxcol - 1)]
+        qa = np.asarray(q).reshape(-1)
+        palette = [0] + [rgb565(pal[3 * i:3 * i + 3]) for i in range(maxcol - 1)]
+        pal_at = self.put(b"".join(v.to_bytes(2, "little") for v in palette))
+        flat = qa.astype(np.uint8) + 1
+        at = 0
+        for name, im, ox, oy in items:
+            h, w = im.shape[:2]
+            idx = np.zeros((h, w), np.uint8)
+            mask = im[..., 3] > 0
+            n = int(mask.sum())
+            idx[mask] = flat[at:at + n]
+            at += n
+            data, rows = [], []
+            for y in range(h):
+                rows.append(len(data))
+                x = 0
+                while True:
+                    skip = 0
+                    while x < w and idx[y, x] == 0:
+                        x += 1
+                        skip += 1
+                    if x >= w:
+                        break
+                    run = []
+                    while x < w and idx[y, x] and len(run) < 255:
+                        run.append(int(idx[y, x]))
+                        x += 1
+                    while skip > 255:
+                        data += [255, 0]
+                        skip -= 255
+                    data += [skip, len(run)] + run
+                data += [0, 0]
+            assert len(data) < 65536
+            rows_at = self.put(b"".join(v.to_bytes(2, "little") for v in rows))
+            data_at = self.put(bytes(data), 1)
+            self.sprites_c.append(f"const cc_sprite_t cc_{name} = {{{w}, {h}, {ox}, {oy}, {pal_at}, {rows_at}, {data_at}}};")
+        print(f"{group}: {len(items)} pictures, {len(set(qa.tolist()))} colours")
+
+    def finish_blob(self):
+        import zopfli.zlib
+        raw = bytes(self.blob)
+        packed = zopfli.zlib.compress(raw, numiterations=60)[2:-4]
+        self.array("uint8_t", "cc_art_z", list(packed), 32)
+        self.lines.append(f"const uint8_t *const cc_art_packed = cc_art_z;")
+        self.lines.append(f"const uint32_t cc_art_packed_size = {len(packed)}, cc_art_size = {len(raw)};")
+        self.lines += self.sprites_c
+        self.lines.append("")
+        print(f"pictures: {len(raw)} bytes, packed {len(packed)}")
+        return len(packed)
+
+    def font(self, name, base, cap, weight, spacing, chars):
+        f = fontgen.load(cap, weight)
+        cps = sorted(set(ord(c) for c in chars if ord(c) > 126))
+        data, glyphs = bytearray(), []
+        for c in cps:
+            g, adv = fontgen.glyph(f, chr(c), spacing * fontgen.UP / 4)
+            if g is None:
+                glyphs.append((0, 0, 0, 0, adv, len(data)))
+                continue
+            q, ox, oy = g
+            h, w = q.shape
+            flat = q.flatten().tolist()
+            if len(flat) % 2:
+                flat.append(0)
+            off = len(data)
+            for i in range(0, len(flat), 2):
+                data.append(flat[i] | flat[i + 1] << 4)
+            glyphs.append((w, h, ox, oy, adv, off))
+        self.array("uint16_t", f"{name}_cps", cps)
+        self.array("uint8_t", f"{name}_data", list(data), 24)
+        self.lines.append(f"static const np_glyph_t {name}_glyphs[{len(glyphs)}] = {{")
+        for w, h, ox, oy, adv, off in glyphs:
+            self.lines.append(f"  {{{w}, {h}, {ox}, {oy}, {adv}, {off}}},")
+        self.lines.append("};")
+        self.lines.append(f"const cc_font_t {name} = {{&{base}, {len(cps)}, {name}_cps, {name}_glyphs, {name}_data}};")
+        self.lines.append("")
+        self.fonts += len(data) + 7 * len(glyphs) + 2 * len(cps)
+        print(f"{name}: {len(cps)} accented letters, {len(data)} bytes")
+
+
+
+
+TEXTS = Path(ROOT.parent / "launcher" / "src" / "calcade.c")
+
+
+# the core of a pack (pack/coeur) shows the games' names, unknown in advance: every accented letter of French
+FRENCH = "àâäçéèêëîïôöùûüÿœæÀÂÄÇÉÈÊËÎÏÔÖÙÛÜŸŒÆ«»’…–—°·"
+
+
+def main(out, texts=(), extra=""):
+    W = Writer()
+    W.sprites("logo", [("logo", logo(104), 52, 52)], 64)
+    L, xs, width = letters()
+    W.sprites("word", [(ch, im, ox, oy) for ch, (im, ox, oy) in L.items()], 64)
+    p = presente()
+    W.sprites("presente", [("presente", p, p.shape[1] // 2, p.shape[0] // 2)], 32)
+    s = sparkle()
+    W.sprites("spark", [("spark", s, s.shape[1] // 2, s.shape[0] // 2)], 16)
+    packed = W.finish_blob()
+    W.lines.append("const int16_t cc_word_x[7] = {%s};" % ", ".join(map(str, xs)))
+    print("CALCADE: width", width, xs)
+    # the accented letters the screens use (every string of calcade.c)
+    import re
+    used = "".join("".join(re.findall(r'"((?:[^"\\]|\\.)*)"', Path(t).read_text(encoding="utf-8")))
+                   for t in (TEXTS,) + tuple(texts))
+    used += extra
+    W.font("cc_font_title", "np_font_title", 15, 900, 0, used)
+    W.font("cc_font_body", "np_font_body", 9, 800, 1, used)
+    W.font("cc_font_small", "np_font_small", 7, 800, 2, used)
+    # the games of games.json, in its order: numplay.sys counts plays by this place
+    import json
+    # (the places of NumPlay 1.10.0's games.json, kept as they were: Calcade withdrew 6 games on 19 October 2026, and
+    # numplay.sys must count every game at the same place as before)
+    ids = ['numdash', 'crossyroad', 'numblocks', 'numdrive', 'balatro', 'buckshot', 'blockblast', 'portal', 'tetris', 'chess', 'flappybird', 'pacman', 'snake', 'connectfour', 'solitaire', 'g2048', 'minesweeper', 'breakout', 'numvisuals']
+    W.lines.append("const char *const cc_game_ids[%d] = {%s};" % (len(ids), ", ".join(json.dumps(i) for i in ids)))
+    W.lines.append("const int cc_game_id_count = %d;" % len(ids))
+    Path(out).write_text("\n".join(W.lines) + "\n")
+    print(f"flash: pictures {packed} bytes, fonts {W.fonts} bytes")
+
+
+if __name__ == "__main__":
+    # calcade_art.py OUT.c [--coeur SOURCES...]: with --coeur, the letters of these sources too, and all of French
+    if len(sys.argv) > 2 and sys.argv[2] == "--coeur":
+        main(sys.argv[1], sys.argv[3:], FRENCH)
+    else:
+        main(sys.argv[1])
diff --git a/tools/calcade_build.sh b/tools/calcade_build.sh
new file mode 100755
index 0000000..49e45ed
--- /dev/null
+++ b/tools/calcade_build.sh
@@ -0,0 +1,21 @@
+#!/bin/sh
+# NumPlay with the Calcade dressing: the full version (alone on the calculator) and the light one
+# (at most about 1.2 MB). See CALCADE.md. Usage: tools/calcade_build.sh [NWLINK=nwlink]
+set -e
+cd "$(dirname "$0")/.."
+# (19 octobre 2026 : les 19 jeux sont mis en règle, voir CALCADE.md ; la version légère est fixée une fois
+# les tailles connues)
+FULL="numdash crossyroad numblocks numdrive balatro buckshot blockblast portal tetris chess flappybird pacman \
+snake connectfour solitaire g2048 minesweeper breakout numvisuals"
+LITE="$FULL"
+mkdir -p dist
+for v in full lite; do
+  if [ $v = full ]; then games=$FULL; out=NumPlay-complet.nwa; else games=$LITE; out=NumPlay-leger.nwa; fi
+  make -j8 B=build-$v ONLY="$games" build-$v/NumPlay.nwa NWLINK="${NWLINK:-nwlink}" "$@"
+  cp build-$v/NumPlay.nwa dist/$out
+  x=$(cat build-$v/gen/arena_extra)
+  ${NWLINK:-nwlink} nwa-bin --ram-length $((148928 - x)) dist/$out build-$v/NumPlay.bin
+  n=$(wc -c < build-$v/NumPlay.bin)
+  echo "$out: $(wc -c < dist/$out) bytes, installs as $n bytes ($((2031616 - n)) to spare)"
+  [ "$n" -le 2031616 ] || { echo "$out is bigger than the calculator's app space"; exit 1; }
+done
diff --git a/tools/calcade_cartes.py b/tools/calcade_cartes.py
new file mode 100644
index 0000000..769733d
--- /dev/null
+++ b/tools/calcade_cartes.py
@@ -0,0 +1,77 @@
+#!/usr/bin/env python3
+# Calcade, 19 octobre 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Fabrique la « carte » d'un grand jeu Calcade pour le carrousel de NumPlay (pack du site) :
+un petit module Calcade (fiche « carte:<id du module du jeu> ») qui ne contient que ses captures,
+au format du carrousel (192x144, 256 couleurs, DEFLATE), sa phrase et ses couleurs.
+
+Le cœur l'accroche au jeu qui a la fiche <id> (launcher/src/coeur.c) : la carte du jeu montre
+alors de vraies captures, nettes, qui défilent, au lieu de la vignette 80x60 du module.
+Le site ajoute la carte au pack avec le jeu (jeux valides/NumPlay/cartes/<id catalogue>.cmod).
+
+Usage : calcade_cartes.py SORTIE.cmod --fiche voielibre --phrase "Cours sur les rails" \
+            [--couleurs 256] [--haut 0x1D3FBF --bas 0x0E1431 --accent 0xFFE14D] img1.png img2.png ...
+"""
+import argparse
+import json
+import os
+import subprocess
+import sys
+import tempfile
+
+ICI = os.path.dirname(os.path.abspath(__file__))
+sys.path.insert(0, ICI)
+import shots  # noqa: E402
+
+CIBLE = "-mthumb -mfloat-abi=hard -mcpu=cortex-m7 -mfpu=fpv5-sp-d16".split()
+
+
+def main():
+    ap = argparse.ArgumentParser()
+    ap.add_argument("sortie")
+    ap.add_argument("images", nargs="+")
+    ap.add_argument("--fiche", required=True, help="id de la fiche du module du jeu (ex. scrapcmd)")
+    ap.add_argument("--nom", default="", help="nom du jeu (sert aussi à le reconnaître)")
+    ap.add_argument("--phrase", default="")
+    ap.add_argument("--credit", default="")
+    ap.add_argument("--couleurs", type=int, default=256)
+    ap.add_argument("--haut", default="0")
+    ap.add_argument("--bas", default="0")
+    ap.add_argument("--accent", default="0")
+    a = ap.parse_args()
+    ident = "carte_" + "".join(c if c.isalnum() else "_" for c in a.fiche)
+    L = ["#include <stdint.h>", "#include <stddef.h>", '#include "np.h"', '#include "numplay_pack.h"',
+         '#include "calcade_module.h"', ""]
+    entrees = []
+    for k, p in enumerate(a.images):
+        pal, z = shots.pack(p, a.couleurs)
+        L.append(f"static const color_t pal{k}[{len(pal)}] = {{{','.join(map(str, pal))}}};")
+        L.append(f"static const uint8_t z{k}[{len(z)}] = {{{','.join(map(str, z))}}};")
+        entrees.append(f"{{{shots.W}, {shots.H}, {len(pal)}, {len(z)}, pal{k}, z{k}}}")
+    L.append(f"static const np_shot_t captures[{len(entrees)}] = {{{', '.join(entrees)}}};")
+    c = lambda s: json.dumps(s, ensure_ascii=False) if s else "NULL"  # noqa: E731
+    L.append(f"""static const np_fiche_numplay_t description = {{NUMPLAY_FICHE_MAGIE, sizeof(np_fiche_numplay_t), {{
+  {c(a.fiche)}, {c(a.nom)}, {c(a.phrase)}, {c(a.credit)}, {a.haut}, {a.bas}, {a.accent}, NULL, NULL, NULL,
+  NULL, NULL, 0, NULL, 0, captures, {len(entrees)}, NULL, NULL, 0, NULL}}}};
+static int lancer(const CalcadeContexte *ctx) {{
+  if (ctx && ctx->abi == NUMPLAY_QUESTION && ctx->reserve[0]) {{
+    *(const np_fiche_numplay_t **)ctx->reserve[0] = &description;
+    return 0;
+  }}
+  return -1; /* une carte ne se lance pas */
+}}
+CALCADE_DECLARER_MODULE({ident}, "carte:{a.fiche}", "Carte", "1", "Calcade", NULL, 0, lancer, 0);
+""")
+    with tempfile.TemporaryDirectory() as d:
+        src, obj, rel = (os.path.join(d, n) for n in ("carte.c", "carte.o", "r.o"))
+        open(src, "w").write("\n".join(L))
+        racine = os.path.dirname(ICI)
+        subprocess.run(["arm-none-eabi-gcc"] + CIBLE + ["-DPLATFORM_DEVICE=1", "-DNP_COEUR=1", "-std=gnu11", "-Os",
+                        "-I" + os.path.join(racine, "launcher/src"), "-c", src, "-o", obj], check=True)
+        subprocess.run(["arm-none-eabi-ld", "-r", obj, "-o", rel], check=True)
+        subprocess.run(["arm-none-eabi-objcopy", f"--keep-global-symbol=calcade_module_{ident}", "--strip-unneeded",
+                        "--remove-section=.comment", "--remove-section=.ARM.attributes", rel, a.sortie], check=True)
+    print(f"{a.sortie} : {os.path.getsize(a.sortie)} o, {len(entrees)} captures")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/tools/calcade_extraire.py b/tools/calcade_extraire.py
new file mode 100644
index 0000000..9756920
--- /dev/null
+++ b/tools/calcade_extraire.py
@@ -0,0 +1,166 @@
+#!/usr/bin/env python3
+# Calcade, 19 octobre 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Reprend un jeu tout fait dans un NumPlay.nwa déjà fabriqué (sa section .rodata.np.<n>.<id> :
+code, image de .data, captures et marques), pour en faire un module de pack sans le recompiler.
+Sert pour Tetris, écrit en Rust (la cible thumbv7em-none-eabihf n'est pas toujours installable).
+
+Le jeu doit être autonome dans sa section : ses seules références extérieures sont eadk_*, les
+fonctions du lanceur (np_*), numplay_launcher, _heap_end, _data_section_start_ram et sa RAM
+(np_<id>_data / np_<id>_bss), qui devient _heap_start + son décalage dans l'arène.
+
+Sortie : un objet relogeable avec la section telle quelle et, en global, np_<id>_main,
+np_<id>_init et np_<id>_shots ; plus un .json comme celui de tools/npmodule.py
+(code, data, bss, bss_offset, nshots).
+
+Usage : calcade_extraire.py NumPlay.nwa ID sortie.o sortie.json
+"""
+import json
+import struct
+import sys
+
+from elftools.elf.elffile import ELFFile
+from elftools.elf.relocation import RelocationSection
+
+SHT_PROGBITS, SHT_SYMTAB, SHT_STRTAB, SHT_REL = 1, 2, 3, 9
+SHF_ALLOC, SHF_EXECINSTR, SHF_INFO_LINK = 2, 4, 0x40
+EXPORTES = ("main", "init", "shots")
+PERMIS = ("eadk_", "np_", "numplay_launcher", "_heap_end", "_data_section_start_ram")
+
+
+def main():
+    nwa, jid, sortie, sortie_json = sys.argv[1:5]
+    f = ELFFile(open(nwa, "rb"))
+    secs = list(f.iter_sections())
+    cible = [i for i, s in enumerate(secs) if s.name.startswith(".rodata.np.") and s.name.endswith("." + jid)]
+    if len(cible) != 1:
+        sys.exit(f"pas de section pour {jid}")
+    ti = cible[0]
+    sec = secs[ti]
+    data = bytearray(sec.data())
+    syms = list(f.get_section_by_name(".symtab").iter_symbols())
+    par_nom = {s.name: s for s in syms if s.name}
+    arene = par_nom["np_arena"]["st_value"]
+    ram = {f"np_{jid}_data", f"np_{jid}_bss"}
+    rels = [s for s in secs if isinstance(s, RelocationSection) and s["sh_info"] == ti]
+
+    # ---- symboles de sortie : 0 nul, 1 la section, puis les locaux, puis les globaux
+    sortants = [(0, 0, 0, 0, 0), ("", 0, 0, 3, 1)]  # (nom, valeur, taille, info, shndx)
+    index = {}
+    globaux = []
+    for k, s in enumerate(syms):
+        if s["st_shndx"] != ti or s["st_info"]["type"] == "STT_SECTION":
+            continue
+        typ = {"STT_FUNC": 2, "STT_OBJECT": 1}.get(s["st_info"]["type"], 0)
+        nom = s.name
+        if nom in [f"np_{jid}_{x}" for x in EXPORTES]:
+            globaux.append((k, (nom, s["st_value"], s["st_size"], (1 << 4) | typ, 1)))
+            continue
+        index[k] = len(sortants)
+        sortants.append(("", s["st_value"], s["st_size"], typ, 1) if not nom else
+                        (nom + f".{jid}", s["st_value"], s["st_size"], typ, 1))
+    premier_global = len(sortants)
+    for k, e in globaux:
+        index[k] = len(sortants)
+        sortants.append(e)
+    externes = {}
+
+    def externe(nom):
+        if nom not in externes:
+            externes[nom] = len(sortants)
+            sortants.append((nom, 0, 0, 1 << 4, 0))
+        return externes[nom]
+
+    relocs = []
+    for r in (x for rs in rels for x in rs.iter_relocations()):
+        s = syms[r["r_info_sym"]]
+        typ = r["r_info_type"]
+        off = r["r_offset"]
+        if s["st_info"]["type"] == "STT_SECTION" and s["st_shndx"] == ti:
+            relocs.append((off, typ, 1))
+        elif s["st_shndx"] == ti:
+            relocs.append((off, typ, index[r["r_info_sym"]]))
+        elif s.name in ram:
+            if typ != 2:
+                sys.exit(f"relocation {typ} vers la RAM du jeu")
+            decalage = s["st_value"] - arene
+            if decalage:
+                a, = struct.unpack_from("<I", data, off)
+                struct.pack_into("<I", data, off, (a + decalage) & 0xFFFFFFFF)
+            relocs.append((off, typ, externe("_heap_start")))
+        elif s.name.startswith(PERMIS):
+            relocs.append((off, typ, externe(s.name)))
+        else:
+            sys.exit(f"{jid} dépend de {s.name}, qui n'est ni dans le jeu ni fourni par le cœur")
+
+    # ---- tailles : la ligne du jeu dans np_games (np_game_t de NumPlay 1.10, 80 octets)
+    tab = par_nom["np_games"]
+    tsec = secs[tab["st_shndx"]]
+    brut = tsec.data()[tab["st_value"]:tab["st_value"] + tab["st_size"]]
+    trels = [s for s in secs if isinstance(s, RelocationSection) and s["sh_info"] == tab["st_shndx"]]
+    main_de = {}
+    for r in (x for rs in trels for x in rs.iter_relocations()):
+        o = r["r_offset"] - tab["st_value"]
+        if 0 <= o < tab["st_size"] and o % 80 == 36:
+            main_de[o // 80] = syms[r["r_info_sym"]].name
+    ligne = [k for k, n in main_de.items() if n == f"np_{jid}_main"]
+    if len(ligne) != 1:
+        sys.exit("ligne du jeu introuvable dans np_games")
+    e = brut[80 * ligne[0]:80 * ligne[0] + 80]
+    data_size, = struct.unpack_from("<I", e, 48)
+    bss_size, = struct.unpack_from("<I", e, 56)
+    nshots = e[64]
+    bss_offset = par_nom[f"np_{jid}_bss"]["st_value"] - arene
+    data_offset = par_nom[f"np_{jid}_data"]["st_value"] - arene
+    if data_offset != 0:
+        sys.exit("la .data du jeu n'est pas au début de l'arène")
+
+    # ---- écriture
+    noms = ["", sec.name, ".rel" + sec.name, ".symtab", ".strtab", ".shstrtab"]
+    shstr = bytearray(b"\0")
+    noff = [0]
+    for n in noms[1:]:
+        noff.append(len(shstr))
+        shstr += n.encode() + b"\0"
+    strtab = bytearray(b"\0")
+    symtab = bytearray()
+    for e2 in sortants:
+        if e2 == (0, 0, 0, 0, 0):
+            symtab += bytes(16)
+            continue
+        nom, val, taille, info, shndx = e2
+        o = 0
+        if nom:
+            o = len(strtab)
+            strtab += nom.encode() + b"\0"
+        symtab += struct.pack("<IIIBBH", o, val, taille, info, 0, shndx)
+    relb = b"".join(struct.pack("<II", off, (si << 8) | t) for off, t, si in relocs)
+    corps = [None, (SHT_PROGBITS, SHF_ALLOC | SHF_EXECINSTR, bytes(data), 0, 0, max(4, sec["sh_addralign"]), 0),
+             (SHT_REL, SHF_INFO_LINK, relb, 3, 1, 4, 8), (SHT_SYMTAB, 0, bytes(symtab), 4, premier_global, 4, 16),
+             (SHT_STRTAB, 0, bytes(strtab), 0, 0, 1, 0), (SHT_STRTAB, 0, bytes(shstr), 0, 0, 1, 0)]
+    out = bytearray(52)
+    tetes = [bytes(40)]
+    for i, b in enumerate(corps):
+        if b is None:
+            continue
+        typ, flags, blob, link, info, align, entsize = b
+        while len(out) % max(align, 4):
+            out.append(0)
+        o = len(out)
+        out += blob
+        tetes.append(struct.pack("<10I", noff[i], typ, flags, 0, o, len(blob), link, info, align, entsize))
+    while len(out) % 4:
+        out.append(0)
+    shoff = len(out)
+    for t in tetes:
+        out += t
+    struct.pack_into("<16sHHIIIIIHHHHHH", out, 0, b"\x7fELF\x01\x01\x01" + bytes(9), 1, 40, 1, 0, 0, shoff,
+                     f.header["e_flags"], 52, 0, 0, 40, len(tetes), 5)
+    open(sortie, "wb").write(out)
+    json.dump(dict(game=jid, code=len(data), data=data_size, bss=bss_size, bss_offset=bss_offset, nshots=nshots,
+                   undefined=sorted(externes)), open(sortie_json, "w"), indent=1)
+    print(f"{jid} : {len(data)} o de flash, data {data_size} o, bss {bss_size} o (à +{bss_offset}), "
+          f"{nshots} captures ; réclame {sorted(externes)}")
+
+
+if __name__ == "__main__":
+    main()
diff --git a/tools/calcade_pack.py b/tools/calcade_pack.py
new file mode 100644
index 0000000..3157dc7
--- /dev/null
+++ b/tools/calcade_pack.py
@@ -0,0 +1,234 @@
+#!/usr/bin/env python3
+# Calcade, 19 octobre 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Fabrique NumPlay pour les packs du site Calcade (voir CALCADE.md, « Pack NumPlay ») :
+
+  dist-pack/NumPlay-coeur.nwa         le cœur : le lanceur NumPlay sans aucun jeu (NP_COEUR=1)
+  dist-pack/modules/np_<jeu>.cmod     un mini-jeu = un module Calcade (fiche ABI 1)
+  dist-pack/modules/np_<jeu>.json     sa présentation sur le site
+  dist-pack/modules/np_<jeu>.png      sa capture (320x240, la taille de l'écran)
+
+Un module mini-jeu contient le jeu tel que NumPlay le fabrique (tools/npmodule.py, RAM rangée
+au début de la RAM libre, _heap_start), ses captures, sa description (numplay_pack.h) et sa
+libc. Il ne réclame au lien que des appels eadk_* et quelques fonctions du cœur (np_*, gfx_*),
+que le cœur garde visibles : la liste est écrite dans dist-pack/exports-coeur.txt.
+
+Usage : tools/calcade_pack.py [--jeux "id id ..."] [--nwlink "npx --yes -- nwlink@1.0.0"]
+"""
+import argparse
+import json
+import os
+import re
+import shlex
+import subprocess
+import sys
+
+ICI = os.path.dirname(os.path.abspath(__file__))
+RACINE = os.path.dirname(ICI)
+B = "build"
+SORTIE = "dist-pack"
+CIBLE = "-mthumb -mfloat-abi=hard -mcpu=cortex-m7 -mfpu=fpv5-sp-d16".split()
+AUTORISES = re.compile(r"^(eadk_\w+|np_\w+|gfx_\w+|numplay_launcher|_heap_start|_heap_end|_data_section_start_ram)$")
+# ce que le cœur fournit en plus d'eadk : tout le reste doit être dans le module
+CATEGORIES = {
+    "numdash": "Action", "crossyroad": "Arcade", "numblocks": "Aventure", "numdrive": "Course",
+    "balatro": "Cartes", "buckshot": "Stratégie", "blockblast": "Réflexion", "portal": "Réflexion",
+    "tetris": "Réflexion", "chess": "Réflexion", "flappybird": "Arcade", "pacman": "Arcade",
+    "snake": "Arcade", "connectfour": "Réflexion", "solitaire": "Cartes", "g2048": "Réflexion",
+    "minesweeper": "Réflexion", "breakout": "Arcade", "numvisuals": "Création",
+}
+
+
+def run(cmd, **kw):
+    if isinstance(cmd, str):
+        cmd = shlex.split(cmd)
+    r = subprocess.run(cmd, cwd=RACINE, capture_output=True, text=True, **kw)
+    if r.returncode:
+        sys.exit("échec : " + " ".join(cmd) + "\n" + r.stdout[-3000:] + r.stderr[-3000:])
+    return r.stdout
+
+
+def rgb565(hexa):
+    v = int(hexa, 16)
+    r, g, b = (v >> 16) & 255, (v >> 8) & 255, v & 255
+    return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3)
+
+
+def c(s):
+    return "NULL" if s is None else json.dumps(s, ensure_ascii=False)
+
+
+def non_resolus(obj):
+    # (les références faibles, « w », valent 0 si personne ne les définit : pas un manque)
+    out = run(["arm-none-eabi-nm", "-u", obj])
+    return sorted({l.split()[-1] for l in out.splitlines() if l.strip() and l.split()[0] == "U"})
+
+
+def main():
+    ap = argparse.ArgumentParser()
+    ap.add_argument("--jeux")
+    ap.add_argument("--nwlink", default=os.environ.get("NWLINK", "npx --yes -- nwlink@1.0.0"))
+    # un NumPlay.nwa déjà fabriqué, d'où reprendre les jeux qu'on ne peut pas compiler ici
+    # (Tetris, en Rust) : tools/calcade_extraire.py
+    ap.add_argument("--extraire")
+    ap.add_argument("--version", default=open(os.path.join(RACINE, "VERSION")).read().strip())
+    a = ap.parse_args()
+    jeux = json.load(open(os.path.join(RACINE, "games/games.json")))
+    index = {g["id"]: n for n, g in enumerate(jeux, 1)}
+    if a.jeux:
+        garde = a.jeux.split()
+        jeux = [g for g in jeux if g["id"] in garde]
+    os.makedirs(os.path.join(RACINE, SORTIE, "modules"), exist_ok=True)
+    for sous in ("pack", "modules", "gen", "arm", "apps", "sim"):  # (le Makefile ne les crée qu'avec build/)
+        os.makedirs(os.path.join(RACINE, B, sous), exist_ok=True)
+    cflags = shlex.split(run(shlex.split(a.nwlink) + ["eadk-cflags-device"]).strip().splitlines()[-1])
+    cflags += ["-std=gnu11", f'-DNP_VERSION="{a.version}"', "-DNP_COEUR=1", "-Os", "-Wall",
+               "-Wno-unused-parameter", "-fno-math-errno", "-ffunction-sections", "-fdata-sections",
+               "-Ilauncher/src"]
+    exports = set()
+    rapport = []
+    for g in jeux:
+        i, n = g["id"], index[g["id"]]
+        d = os.path.join(B, "pack", i)
+        os.makedirs(os.path.join(RACINE, d), exist_ok=True)
+        entree = "np_tetris_main" if i == "tetris" else "main"
+        repris = i == "tetris" and a.extraire
+        # 1. le jeu, comme NumPlay le fabrique (build/modules/<id>.2.o), RAM sur _heap_start
+        if repris:
+            run(["python3", "tools/calcade_extraire.py", a.extraire, i, f"{d}/jeu.o", f"{d}/jeu.json"])
+        elif not os.path.exists(os.path.join(RACINE, B, "modules", i + ".2.o")):
+            run(["make", "--no-print-directory", f"{B}/modules/{i}.o", f"NWLINK={a.nwlink}"])
+        if not repris:
+          run(["python3", "tools/npmodule.py", f"{B}/modules/{i}.2.o", f"{d}/jeu.o", "--game", i,
+             "--index", str(n), "--entry", entree, "--json", f"{d}/jeu.json", "--arena-symbol", "_heap_start"])
+        t = json.load(open(os.path.join(RACINE, d, "jeu.json")))
+        # 2. ses captures (les mêmes que dans NumPlay ; un jeu repris a déjà les siennes)
+        if not repris:
+            run(["make", "--no-print-directory", f"{B}/gen/shots_{i}.c", f"NWLINK={a.nwlink}"])
+            run(["arm-none-eabi-gcc"] + cflags + ["-c", f"{B}/gen/shots_{i}.c", "-o", f"{d}/captures.o"])
+        # 3. sa description et sa fiche Calcade
+        recs = ", ".join(json.dumps(r) for r in g["records"])
+        prog = ", ".join(json.dumps(r) for r in g.get("reset", g["records"]))
+        besoin = max(t["data"], t["bss_offset"] + t["bss"])
+        glue = f"""/* Fabriqué par tools/calcade_pack.py : {g['title']} dans un pack NumPlay Calcade. */
+#include "np.h"
+#include "numplay_pack.h"
+#include "calcade_module.h"
+extern const uint32_t np_{i}_begin[], np_{i}_end[];
+extern const uint8_t np_{i}_init[];
+extern const np_shot_t np_{i}_shots[];
+int np_{i}_main(void);
+static const char *const enregistrements[] = {{{recs + ', ' if recs else ''}NULL}};
+static const char *const progression[] = {{{prog + ', ' if prog else ''}NULL}};
+static const np_fiche_numplay_t description = {{NUMPLAY_FICHE_MAGIE, sizeof(np_fiche_numplay_t), {{
+  {c(i)}, {c(g['title'])}, {c(g['tagline'])}, {c(g.get('credit'))},
+  {g['top']}, {g['bottom']}, {g['accent']}, np_{i}_begin, np_{i}_end, np_{i}_main,
+  np_arena + 0, np_{i}_init, {t['data']}, np_arena + {t['bss_offset']}, {t['bss']},
+  np_{i}_shots, {len(g['shots'])}, enregistrements, progression, {t['code'] + t['data']}, NULL}}}};
+static int lancer(const CalcadeContexte *ctx) {{
+  if (ctx && ctx->abi == NUMPLAY_QUESTION && ctx->reserve[0]) {{
+    *(const np_fiche_numplay_t **)ctx->reserve[0] = &description;
+    return 0;
+  }}
+  return -1; /* un mini-jeu de NumPlay ne tourne que dans NumPlay */
+}}
+CALCADE_DECLARER_MODULE(np_{i}, "np_{i}", {c(g['title'])}, {c(a.version)}, "NumPlay", NULL,
+                        {besoin}, lancer, {rgb565(g['accent'])});
+"""
+        open(os.path.join(RACINE, d, "fiche.c"), "w").write(glue)
+        run(["arm-none-eabi-gcc"] + cflags + ["-c", f"{d}/fiche.c", "-o", f"{d}/fiche.o"])
+        marques = (f'  .section .rodata.np.{n}.{i}.0head,"a"\n  .balign 4\n  .word 0x3147504E\n'
+                   f'  .section .rodata.np.{n}.{i}.zztail,"a"\n  .balign 4\n  .word 0x444E4550\n')
+        open(os.path.join(RACINE, d, "marques.s"), "w").write(marques)
+        run(["arm-none-eabi-as"] + CIBLE + [f"{d}/marques.s", "-o", f"{d}/marques.o"])
+        p = f".rodata.np.{n}.{i}"
+        script = f"""/* un bloc de flash pour le jeu (code, image de .data, captures, marques) */
+SECTIONS {{
+  .rodata.np.{i} : {{
+    np_{i}_begin = .;
+    KEEP(*({p}.0head))
+    *({p})
+    *({p}.init)
+    KEEP(*({p}.shots))
+    KEEP(*({p}.zztail))
+    np_{i}_end = .;
+  }}
+  calcade_modules : {{ KEEP(*(calcade_modules)) }}
+  .text : {{ *(.text .text.*) }}
+  .rodata : {{ *(.rodata .rodata.*) }}
+  .data : {{ *(.data .data.*) }}
+  .bss : {{ *(.bss .bss.* COMMON) }}
+  /DISCARD/ : {{ *(.comment) *(.note*) *(.ARM.exidx*) *(.ARM.extab*) }}
+}}
+"""
+        open(os.path.join(RACINE, d, "module.ld"), "w").write(script)
+        # 4. tout ensemble, avec la libc qu'il lui faut, puis tout en local sauf la fiche
+        run(["arm-none-eabi-gcc"] + CIBLE + ["-nostartfiles", "-nodefaultlibs", "--specs=nano.specs",
+             "-Wl,--relocatable", f"-Wl,-T,{d}/module.ld", f"{d}/jeu.o"] + ([] if repris else [f"{d}/captures.o"]) + [f"{d}/fiche.o",
+             f"{d}/marques.o", "-Wl,--start-group", "-lm", "-lc", "-lgcc", "-Wl,--end-group", "-o", f"{d}/r.o"])
+        cmod = f"{SORTIE}/modules/np_{i}.cmod"
+        run(["arm-none-eabi-objcopy", f"--keep-global-symbol=calcade_module_np_{i}", "--strip-unneeded",
+             "--remove-section=.comment", "--remove-section=.ARM.attributes", f"{d}/r.o", cmod])
+        manque = non_resolus(os.path.join(RACINE, cmod))
+        interdits = [s for s in manque if not AUTORISES.match(s)]
+        if interdits:
+            sys.exit(f"np_{i}.cmod réclame {interdits} : ni eadk ni le cœur ne les fournissent")
+        exports.update(s for s in manque if not s.startswith("eadk_") and not s.startswith("_"))
+        taille = run(["arm-none-eabi-size", "-A", cmod])
+        flash = sum(int(l.split()[1]) for l in taille.splitlines()[2:]
+                    if l.split() and not l.startswith((".data", ".bss", "Total")) and len(l.split()) >= 2
+                    and l.split()[0] not in (".data", ".bss"))
+        ram = sum(int(l.split()[1]) for l in taille.splitlines() if l.startswith((".data", ".bss")))
+        # 5. sa présentation sur le site
+        info = {"nom": g["title"], "description": g["tagline"] + ("." if not g["tagline"].endswith(".") else ""),
+                "categorie": CATEGORIES.get(i, "Arcade"), "ordre": 10 * n}
+        json.dump(info, open(os.path.join(RACINE, SORTIE, "modules", f"np_{i}.json"), "w"),
+                  ensure_ascii=False, indent=1)
+        try:
+            from PIL import Image
+            im = Image.open(os.path.join(RACINE, "games", i, g["shots"][0])).convert("RGB")
+            (im if im.size == (320, 240) else im.resize((320, 240), Image.NEAREST if im.size == (640, 480) else Image.LANCZOS)).save(os.path.join(RACINE, SORTIE, "modules", f"np_{i}.png"),
+                                                      optimize=True)
+        except Exception as e:  # pas d'image : le site met l'initiale
+            print(f"  (pas de capture pour {i} : {e})")
+        rapport.append((f"np_{i}", g["title"], info["categorie"], flash, ram, besoin))
+        print(f"np_{i:12} {g['title']:20} flash {flash:7d} o  RAM statique {ram:5d} o  RAM du jeu {besoin:6d} o")
+
+    # ---- le cœur : il garde visible ce que réclame CHAQUE module du dossier (pas seulement ceux
+    # fabriqués cette fois)
+    for f in sorted(os.listdir(os.path.join(RACINE, SORTIE, "modules"))):
+        if f.endswith(".cmod"):
+            exports.update(s for s in non_resolus(os.path.join(RACINE, SORTIE, "modules", f))
+                           if not s.startswith("eadk_") and not s.startswith("_"))
+    cœur_obj = []
+    os.makedirs(os.path.join(RACINE, B, "coeur"), exist_ok=True)
+    for f in sorted(os.listdir(os.path.join(RACINE, "launcher/src"))):
+        if f.endswith(".c"):
+            o = f"{B}/coeur/{f[:-2]}.o"
+            run(["arm-none-eabi-gcc"] + cflags + ["-flto", "-fno-tree-loop-distribute-patterns", "-Wextra",
+                 "-c", f"launcher/src/{f}", "-o", o])
+            cœur_obj.append(o)
+    run(["make", "--no-print-directory", f"{B}/variant/NumPlay-name.o", f"{B}/variant/NumPlay-icon.o",
+         f"NWLINK={a.nwlink}"])
+    # les fonctions du cœur que des mini-jeux appellent : gardées et visibles (eadk_* exclus :
+    # ils viennent d'eadk.o, lié par le site)
+    garde = sorted(exports | {"np_keyboard_scan", "np_event_get", "np_display_draw_string", "numplay_launcher"})
+    open(os.path.join(RACINE, SORTIE, "exports-coeur.txt"), "w").write("\n".join(garde) + "\n")
+    coeur = f"{SORTIE}/NumPlay-coeur.nwa"
+    run(["arm-none-eabi-gcc"] + cflags + ["-flto", "-nostartfiles", "--specs=nano.specs", "-Wl,--relocatable",
+         "-Wl,--gc-sections", "-Wl,-e,main", "-Wl,-u,eadk_app_name", "-Wl,-u,eadk_app_icon",
+         "-Wl,-u,eadk_api_level", "-flinker-output=nolto-rel"] + [f"-Wl,-u,{s}" for s in garde] + cœur_obj +
+        [f"{B}/variant/NumPlay-name.o", f"{B}/variant/NumPlay-icon.o", "-lm", "-lgcc", "-o", coeur])
+    run(["arm-none-eabi-strip", "--strip-unneeded", "--remove-section=.ARM.exidx*", "--remove-section=.rel.ARM.exidx*",
+         "--remove-section=.comment", coeur])
+    defini = run(["arm-none-eabi-nm", "-g", "--defined-only", coeur])
+    noms = {l.split()[-1] for l in defini.splitlines() if l.strip()}
+    manque = [s for s in garde if s not in noms]
+    if manque:
+        sys.exit(f"le cœur ne fournit pas {manque}")
+    json.dump([dict(zip(("id", "nom", "categorie", "flash", "ram_statique", "ram_jeu"), r)) for r in rapport],
+              open(os.path.join(RACINE, SORTIE, "rapport.json"), "w"), ensure_ascii=False, indent=1)
+    print(run(["arm-none-eabi-size", coeur]))
+
+
+if __name__ == "__main__":
+    main()
diff --git a/tools/calcade_pack_test.py b/tools/calcade_pack_test.py
new file mode 100644
index 0000000..e34d026
--- /dev/null
+++ b/tools/calcade_pack_test.py
@@ -0,0 +1,76 @@
+#!/usr/bin/env python3
+# Calcade, 19 octobre 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Lie un pack NumPlay EXACTEMENT comme le site (script de liaison tiré de lieur.js, eadk.o du
+site), aux adresses de l'émulateur, puis le fait tourner dans tools/emu.py.
+
+  calcade_pack_test.py --lieur chemin/lieur.js --eadk chemin/eadk.o --out DIR \
+      [--keys "4800-4900:ok,..."] [--ms 9000] [--shots 4500,7000] coeur.nwa a.cmod b.cmod ...
+"""
+import argparse
+import os
+import subprocess
+import sys
+
+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
+import emu  # noqa: E402
+
+NODE = r"""
+global.document = {currentScript: null}; global.window = {};
+const s = require('fs').readFileSync(process.argv[1], 'utf8');
+eval(s.replace('const Lieur', 'global.Lieur'));
+const a = JSON.parse(process.argv[2]);
+process.stdout.write(Lieur.scriptDeLiaison(a));
+"""
+
+
+def lier(lieur, eadk, coeur, modules, sortie):
+    a = dict(flashStart=hex(emu.EXT_FLASH_START), flashLength=hex(emu.EXT_FLASH_END - emu.EXT_FLASH_START),
+             ramStart=hex(emu.EXT_RAM_START), ramLength=hex(emu.EXT_RAM_LEN), trampolineStart=hex(emu.TRAMPOLINE))
+    import json
+    script = subprocess.run(["node", "-e", NODE, lieur, json.dumps(a)], check=True, capture_output=True,
+                            text=True).stdout
+    ld = os.path.join(sortie, "linker.ld")
+    open(ld, "w").write(script)
+    elf = os.path.join(sortie, "pack.elf")
+    # même ordre et mêmes options que Lieur.lier : eadk.o, le cœur, puis les modules
+    subprocess.run(["arm-none-eabi-ld", "--script", ld, "--gc-sections", "--allow-multiple-definition", eadk, coeur]
+                   + modules + ["--output", elf], check=True)
+    return elf
+
+
+def main():
+    ap = argparse.ArgumentParser()
+    ap.add_argument("coeur")
+    ap.add_argument("modules", nargs="*")
+    ap.add_argument("--lieur", required=True)
+    ap.add_argument("--eadk", required=True)
+    ap.add_argument("--out", default="build/test")
+    ap.add_argument("--keys", default="")
+    ap.add_argument("--ms", type=int, default=8000)
+    ap.add_argument("--shots", default="")
+    ap.add_argument("--storage")
+    a = ap.parse_args()
+    os.makedirs(a.out, exist_ok=True)
+    elf = lier(a.lieur, a.eadk, a.coeur, a.modules, a.out)
+    c = emu.Calculator(elf, storage_file=a.storage)
+    c.keys = emu.parse_keys(a.keys) if a.keys else []
+    for t in [int(x) for x in a.shots.split(",") if x]:
+        c.pending_shots.append((t, os.path.join(a.out, f"t{t:05d}.png")))
+    c.pending_shots.sort()
+    err = None
+    try:
+        c.run(a.ms)
+    except RuntimeError as e:
+        err = str(e)
+    c.save_png(os.path.join(a.out, "fin.png"))
+    if a.storage:
+        open(a.storage, "wb").write(c.storage_bytes())
+    print(f"fini a {c.now_ms:.0f} ms ; sorti : {c.exited} ; erreur : {err}")
+    viol = getattr(c, "violations", [])
+    if viol:
+        print("violations :", viol[:10])
+    return 1 if err else 0
+
+
+if __name__ == "__main__":
+    sys.exit(main())
diff --git a/tools/calcade_shots.py b/tools/calcade_shots.py
new file mode 100644
index 0000000..480a70b
--- /dev/null
+++ b/tools/calcade_shots.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Captures of the Calcade intro and update screen of NumPlay, from the ARM emulator (tools/emu.py):
+whole frames only (taken when the last strip of a frame is pushed), the frame rate, and a GIF.
+
+Usage: calcade_shots.py build/NumPlay.nwa OUT_DIR
+"""
+import os
+import struct
+import sys
+import tempfile
+
+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
+sys.path.insert(0, os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "tests"))
+import emu  # noqa: E402
+from test_calcade import make_save  # noqa: E402
+from test_progress import write_storage  # noqa: E402
+from PIL import Image  # noqa: E402
+
+
+def frames_of(nwa, recs, ms, keys=()):
+    with tempfile.TemporaryDirectory() as d:
+        path = os.path.join(d, "s.bin")
+        write_storage(path, recs)
+        c = emu.Calculator(nwa, storage_file=path)
+        c.keys = list(keys)
+        frames = []
+        intr = c._intr
+
+        def hook(uc, intno, data):
+            pc = c.reg(emu.UC_ARM_REG_PC)
+            op, = struct.unpack("<H", uc.mem_read(pc - 2, 2))
+            r0, r1 = c.reg(emu.UC_ARM_REG_R0), c.reg(emu.UC_ARM_REG_R1)
+            intr(uc, intno, data)
+            if intno == 2 and op & 0xFF in (19, 20) and (r0 >> 16) + (r1 >> 16) >= 240 and (r0 & 0xFFFF) == 0:
+                frames.append((c.now_ms, c.frame_image()))
+
+        c._intr = hook
+        c.uc.hook_del(c.intr_hook)
+        c.uc.hook_add(emu.UC_HOOK_INTR, hook)
+        c.run(ms)
+        return frames
+
+
+def nearest(frames, t):
+    return min(frames, key=lambda f: abs(f[0] - t))[1]
+
+
+def main(nwa, out):
+    os.makedirs(out, exist_ok=True)
+    fr = frames_of(nwa, [], 4700)
+    intro = [f for f in fr if f[0] < 4400]
+    span = intro[-1][0] - intro[0][0]
+    print(f"intro: {len(intro)} frames in {span:.0f} ms = {1000 * (len(intro) - 1) / span:.1f} images/s")
+    for t, name in [(450, "intro-01-logo-surgit"), (720, "intro-02-onde-de-choc"), (1250, "intro-03-lettres-tombent"),
+                    (2150, "intro-04-reflet"), (2550, "intro-05-presente"), (3600, "intro-06-ecran-final")]:
+        nearest(intro, t).resize((640, 480), Image.NEAREST).save(os.path.join(out, name + ".png"))
+    # GIF at 25 images/s, from the whole frames
+    gif, t = [], 0.0
+    while t < 4400:
+        gif.append(nearest(intro, t).convert("P", palette=Image.ADAPTIVE, colors=255))
+        t += 40
+    gif[0].save(os.path.join(out, "intro-animee.gif"), save_all=True, append_images=gif[1:], duration=40, loop=0)
+    fr = frames_of(nwa, [("numplay.sys", make_save(19))], 7000)
+    blocked = [f for f in fr if f[0] > 5000]
+    span = blocked[-1][0] - blocked[0][0]
+    print(f"update screen: {1000 * (len(blocked) - 1) / span:.1f} images/s")
+    blocked[-1][1].resize((640, 480), Image.NEAREST).save(os.path.join(out, "07-mise-a-jour-obligatoire.png"))
+
+
+if __name__ == "__main__":
+    main(sys.argv[1], sys.argv[2])
diff --git a/tools/conformite/captures.py b/tools/conformite/captures.py
new file mode 100644
index 0000000..bb27311
--- /dev/null
+++ b/tools/conformite/captures.py
@@ -0,0 +1,39 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Les captures des 13 jeux de NumPlay après leur mise en règle (19 octobre 2026), pour le carrousel de
+NumPlay, les vignettes des modules et le site : docs/calcade.png dans le dossier de chaque jeu.
+Le texte du système est approché par une police libre (EPSILON_FONTS : SmallFont.ttf, LargeFont.ttf).
+
+Usage : EPSILON_FONTS=... captures.py [jeu ...]"""
+import os
+import sys
+
+ICI = os.path.dirname(os.path.abspath(__file__))
+R = os.path.join(ICI, "..", "..")
+sys.path.insert(0, os.path.join(R, "tools"))
+import emu  # noqa: E402
+
+JEUX = {  # app, touches (ms:touche), moment de la capture
+    "crossyroad": ("games/crossyroad/output/crossyroad.nwa", [], 2000),
+    "blockblast": ("games/blockblast/output/blockblast.nwa", [(2000, "ok"), (2600, "right"), (3000, "ok")], 4500),
+    "tetris": ("games/tetris/tetris/target/thumbv7em-none-eabihf/release/tetris", [(2500, "ok"), (4000, "left")], 7000),
+    "chess": ("games/chess/output/chess.nwa", [(2500, "ok")], 4800),
+    "flappybird": ("games/flappybird/output/flappybird.nwa", [], 2200),
+    "pacman": ("games/pacman/output/pacman.nwa", [(2500, "ok")], 6500),
+    "snake": ("games/snake/output/snake.nwa", [], 2000),
+    "connectfour": ("games/connectfour/output/connectfour.nwa", [], 2000),
+    "solitaire": ("games/solitaire/output/solitaire.nwa", [(2500, "ok")], 4800),
+    "g2048": ("games/g2048/output/g2048.nwa", [(2500, "right"), (3000, "down")], 4000),
+    "minesweeper": ("games/minesweeper/output/minesweeper.nwa", [(2500, "ok"), (3200, "ok")], 4200),
+    "breakout": ("games/breakout/output/breakout.nwa", [], 2000),
+    "numvisuals": ("games/numvisuals/output/numvisuals.nwa", [(2500, "ok")], 4500),
+}
+for g in sys.argv[1:] or JEUX:
+    app, keys, t = JEUX[g]
+    c = emu.Calculator(os.path.join(R, app))
+    c.keys = [(a, a + 150, emu.KEYS[k]) for a, k in keys]
+    out = os.path.join(R, "games", g, "docs", "calcade.png")
+    os.makedirs(os.path.dirname(out), exist_ok=True)
+    c.pending_shots = [(t, out)]
+    c.run(t + 50)
+    print(g, "->", out, flush=True)
diff --git a/tools/conformite/chevrotine_art.py b/tools/conformite/chevrotine_art.py
new file mode 100644
index 0000000..2bb6968
--- /dev/null
+++ b/tools/conformite/chevrotine_art.py
@@ -0,0 +1,1375 @@
+#!/usr/bin/env python3
+"""Chevrotine (games/buckshot) : toutes les images du jeu, dessinées par ce script.
+
+Calcade, 19 octobre 2026. Chevrotine remplace les images de Buckshot Roulette (rendues depuis les scènes
+du jeu de Mike Klubnika) par un univers à lui : la baraque d'une fête foraine, la nuit, et l'Automate,
+un joueur mécanique en laiton à chapeau haut de forme et à un seul œil. Tout est dessiné ici avec des
+formes simples (polygones, ellipses), en aplats, sans aucune image d'un autre jeu.
+
+Le script écrit games/buckshot/assets/ (art.json, plates/, sprites/, logo.png), que tools/pack.py du jeu
+range dans src/assets.c, et src/layout.h (les positions des boutons et des zones de texte des décors).
+
+Usage : python3 tools/conformite/chevrotine_art.py [planche.png]
+"""
+import json
+import math
+import random
+import sys
+from pathlib import Path
+
+import numpy as np
+from PIL import Image, ImageDraw, ImageFont
+
+ROOT = Path(__file__).resolve().parents[2]
+GAME = ROOT / "games" / "buckshot"
+OUT = GAME / "assets"
+SS = 3  # dessiné 3 fois plus grand, puis réduit (bords adoucis)
+W, H = 320, 240
+
+# ------------------------------------------------------------------ palette
+# Les 8 couleurs de l'interface (tools/pack.py) d'abord, puis celles des dessins.
+UI = {"black": (0, 0, 0), "white": (255, 255, 255), "grey": (146, 146, 146), "dark": (36, 36, 36),
+      "red": (219, 36, 36), "blue": (36, 73, 219), "dot": (219, 255, 219), "yellow": (255, 219, 109)}
+PAL = dict(UI)
+PAL.update({
+    # toile de la baraque (violets)
+    "tent0": (22, 12, 34), "tent1": (40, 20, 58), "tent2": (62, 30, 84), "tent3": (88, 44, 112), "tent4": (120, 66, 140),
+    # velours et bois rouge
+    "wine0": (48, 10, 22), "wine1": (86, 18, 36), "wine2": (128, 30, 50), "wine3": (172, 52, 66),
+    # laiton
+    "brass0": (70, 46, 16), "brass1": (120, 84, 30), "brass2": (176, 128, 46), "brass3": (222, 176, 80), "brass4": (250, 222, 150),
+    # tapis de jeu (sarcelle)
+    "felt0": (10, 34, 38), "felt1": (16, 54, 58), "felt2": (24, 76, 78), "felt3": (40, 104, 100),
+    # bois
+    "wood0": (40, 22, 14), "wood1": (70, 40, 22), "wood2": (106, 64, 34), "wood3": (146, 96, 52),
+    # acier
+    "steel0": (30, 34, 42), "steel1": (58, 64, 78), "steel2": (98, 106, 124), "steel3": (150, 160, 178),
+    # peau, papier
+    "skin0": (120, 72, 54), "skin1": (176, 116, 86), "skin2": (226, 168, 132),
+    "paper0": (150, 126, 96), "paper1": (206, 184, 146), "paper2": (240, 226, 196),
+    # œil de l'Automate, verre, lueurs
+    "eye0": (20, 80, 90), "eye1": (40, 170, 180), "eye2": (150, 250, 240),
+    "glass": (150, 200, 210), "ember": (240, 110, 40), "flame": (255, 196, 80), "smoke": (80, 76, 92),
+    "poison": (70, 150, 60), "poison1": (130, 200, 90), "violet": (150, 90, 220), "violet1": (200, 160, 250),
+    "ink": (26, 22, 30), "night": (14, 18, 40), "night1": (30, 40, 76), "dawn": (190, 110, 120), "dawn1": (240, 170, 130),
+    "live": (200, 40, 44), "live1": (240, 96, 86), "blank": (60, 96, 170), "blank1": (120, 160, 220),
+})
+NAMES = list(PAL)
+ARR = np.array([PAL[n] for n in NAMES], np.int32)
+
+
+def C(name):
+    return PAL[name] + (255,)
+
+
+# ------------------------------------------------------------------ calques
+class Layer:
+    """Un calque de 320x240 (dessiné SS fois plus grand), en coordonnées d'écran."""
+
+    def __init__(self, bg=None):
+        self.im = Image.new("RGBA", (W * SS, H * SS), C(bg) if bg else (0, 0, 0, 0))
+        self.d = ImageDraw.Draw(self.im)
+
+    @staticmethod
+    def _p(pts):
+        return [(x * SS, y * SS) for x, y in pts]
+
+    def poly(self, pts, col, outline=None, width=1):
+        self.d.polygon(self._p(pts), fill=C(col) if col else None, outline=C(outline) if outline else None,
+                       width=int(width * SS) if outline else 0)
+
+    def line(self, pts, col, width=1.0):
+        self.d.line(self._p(pts), fill=C(col), width=max(1, int(round(width * SS))), joint="curve")
+        r = width * SS / 2
+        for x, y in self._p([pts[0], pts[-1]]):
+            self.d.ellipse((x - r, y - r, x + r, y + r), fill=C(col))
+
+    def ell(self, cx, cy, rx, ry, col, outline=None, width=1):
+        self.d.ellipse(((cx - rx) * SS, (cy - ry) * SS, (cx + rx) * SS, (cy + ry) * SS), fill=C(col) if col else None,
+                       outline=C(outline) if outline else None, width=int(width * SS) if outline else 0)
+
+    def rect(self, x0, y0, x1, y1, col, r=0):
+        if r:
+            self.d.rounded_rectangle((x0 * SS, y0 * SS, x1 * SS, y1 * SS), r * SS, fill=C(col))
+        else:
+            self.d.rectangle((x0 * SS, y0 * SS, x1 * SS - 1, y1 * SS - 1), fill=C(col))
+
+    def text(self, x, y, s, size, col, font="archivo", anchor="la", spacing=0):
+        f = font_file(font, size * SS)
+        if spacing:
+            for ch in s:
+                self.d.text((x * SS, y * SS), ch, font=f, fill=C(col), anchor=anchor)
+                x += f.getlength(ch) / SS + spacing
+        else:
+            self.d.text((x * SS, y * SS), s, font=f, fill=C(col), anchor=anchor)
+
+    def paste(self, other):
+        self.im.alpha_composite(other.im)
+
+    def clip(self, y0=None, y1=None, x0=None, x1=None):
+        """efface ce qui sort de la bande"""
+        a = np.array(self.im)
+        if y1 is not None:
+            a[int(y1 * SS):, :, 3] = 0
+        if y0 is not None:
+            a[:int(y0 * SS), :, 3] = 0
+        if x0 is not None:
+            a[:, :int(x0 * SS), 3] = 0
+        if x1 is not None:
+            a[:, int(x1 * SS):, 3] = 0
+        self.im = Image.fromarray(a)
+        self.d = ImageDraw.Draw(self.im)
+
+    def final(self, opaque=False):
+        """réduit à 320x240 et ramène chaque pixel à la couleur la plus proche de la palette"""
+        a = np.array(self.im).astype(np.float32)
+        al = a[..., 3:4] / 255
+        rgb = a[..., :3] * al
+        sm = rgb.reshape(H, SS, W, SS, 3).mean(axis=(1, 3))
+        alpha = al.reshape(H, SS, W, SS, 1).mean(axis=(1, 3))
+        col = np.where(alpha > 0.01, sm / np.maximum(alpha, 1e-6), 0)
+        flat = col.reshape(-1, 3).astype(np.int32)
+        keep = alpha.reshape(-1) >= (0.0 if opaque else 0.5)
+        out = np.zeros((H * W, 4), np.uint8)
+        if keep.any():
+            q = flat[keep]
+            key = q[:, 0] << 16 | q[:, 1] << 8 | q[:, 2]
+            u, inv = np.unique(key, return_inverse=True)
+            uc = np.stack([u >> 16, u >> 8 & 255, u & 255], -1)
+            d = ((uc[:, None, :] - ARR[None, :, :]) ** 2 * np.array([3, 4, 2])).sum(-1)
+            out[keep, :3] = ARR[d.argmin(1)][inv]
+            out[keep, 3] = 255
+        return out.reshape(H, W, 4)
+
+
+_fonts = {}
+
+
+def font_file(name, size):
+    key = (name, int(size))
+    if key not in _fonts:
+        if name == "archivo":
+            f = ImageFont.truetype(str(ROOT / "tools" / "calcade" / "archivo-black-exp.ttf"), int(size))
+        else:
+            f = ImageFont.truetype(str(ROOT / "tools" / ".fonts" / "Nunito.ttf"), int(size))
+            f.set_variation_by_name("Black")
+        _fonts[key] = f
+    return _fonts[key]
+
+
+class X:
+    """Un repère local : centre (cx, cy), échelle (sx, sy), rotation (degrés)."""
+
+    def __init__(self, L, cx, cy, s=1.0, rot=0.0, sy=None):
+        self.L, self.cx, self.cy, self.sx, self.sy = L, cx, cy, s, s if sy is None else sy * s
+        self.c, self.s = math.cos(math.radians(rot)), math.sin(math.radians(rot))
+
+    def t(self, x, y):
+        x, y = x * self.sx, y * self.sy
+        return self.cx + x * self.c - y * self.s, self.cy + x * self.s + y * self.c
+
+    def poly(self, pts, col):
+        self.L.poly([self.t(*p) for p in pts], col)
+
+    def line(self, pts, col, w):
+        self.L.line([self.t(*p) for p in pts], col, w * abs(self.sx))
+
+    def ell(self, x, y, rx, ry, col, a0=0, a1=360, n=40):
+        pts = [(x + rx * math.cos(math.radians(a0 + (a1 - a0) * k / n)), y + ry * math.sin(math.radians(a0 + (a1 - a0) * k / n)))
+               for k in range(n + 1)]
+        if a1 - a0 < 360:
+            pts.append((x, y))
+        self.poly(pts, col)
+
+    def ring(self, x, y, rx, ry, col, w, a0=0, a1=360, n=40):
+        pts = [(x + rx * math.cos(math.radians(a0 + (a1 - a0) * k / n)), y + ry * math.sin(math.radians(a0 + (a1 - a0) * k / n)))
+               for k in range(n + 1)]
+        self.line(pts, col, w)
+
+    def rect(self, x0, y0, x1, y1, col):
+        self.poly([(x0, y0), (x1, y0), (x1, y1), (x0, y1)], col)
+
+    def rrect(self, x0, y0, x1, y1, r, col, n=6):
+        pts = []
+        for cx, cy, a in ((x1 - r, y0 + r, -90), (x1 - r, y1 - r, 0), (x0 + r, y1 - r, 90), (x0 + r, y0 + r, 180)):
+            for k in range(n + 1):
+                an = math.radians(a + 90 * k / n)
+                pts.append((cx + r * math.cos(an), cy + r * math.sin(an)))
+        self.poly(pts, col)
+
+
+# ------------------------------------------------------------------ les objets
+# Neuf objets, dans l'ordre du jeu (src/game.h) : poudre noire, monocle, burette, tisane, chaîne,
+# élixir, boule de cristal, gant du voleur, miroir. Unités : un objet tient dans ±22.
+
+def item_powder(x):
+    x.ell(0, 6, 15, 15, "ink")
+    x.ell(-4, 2, 9, 9, "steel0")
+    x.ell(-6, -1, 3, 3, "steel1")
+    x.rect(-5, -16, 5, -8, "brass2")
+    x.rect(-6, -19, 6, -15, "brass3")
+    x.poly([(0, 1), (7, 6), (0, 15), (-7, 6)], "wine3")
+    x.poly([(0, 4), (3, 6.5), (0, 11), (-3, 6.5)], "flame")
+    x.line([(5, -18), (10, -22), (14, -20)], "paper1", 1.4)
+
+
+def item_monocle(x):
+    x.line([(10, 10), (14, 15), (13, 20), (8, 22), (2, 21)], "brass2", 1.6)
+    x.ell(-2, -2, 15, 15, "brass1")
+    x.ell(-2, -2, 13, 13, "brass3")
+    x.ell(-2, -2, 11, 11, "glass")
+    x.ell(-6, -6, 4, 3, "white")
+    x.ring(-2, -2, 8, 8, "eye1", 1, 200, 280)
+
+
+def item_oilcan(x):
+    x.line([(-8, -8), (-16, -18), (-21, -21)], "brass2", 2.4)
+    x.ring(12, 2, 7, 9, "brass1", 2.6, -90, 90)
+    x.ell(0, 12, 12, 5, "brass1")
+    x.rect(-12, -4, 12, 12, "brass2")
+    x.rect(-12, -4, -6, 12, "brass1")
+    x.rect(4, -4, 8, 12, "brass3")
+    x.ell(0, -4, 12, 5, "brass3")
+    x.ell(0, -6, 6, 3, "brass2")
+    x.rect(-2, -12, 2, -6, "brass1")
+    x.rect(-10, 2, 10, 6, "wine2")
+
+
+def item_tea(x):
+    x.ell(0, 13, 20, 7, "paper0")
+    x.ell(0, 12, 18, 6, "paper2")
+    x.ring(11, 2, 5, 5, "paper2", 2.2, -80, 90)
+    x.poly([(-12, -4), (12, -4), (9, 12), (-9, 12)], "paper2")
+    x.poly([(-12, -4), (-6, -4), (-5, 12), (-9, 12)], "paper1")
+    x.poly([(-11, 2), (11, 2), (10.4, 5), (-10.4, 5)], "wine2")
+    x.ell(0, -4, 12, 4, "paper1")
+    x.ell(0, -4, 10, 3, "wood2")
+    for k, dx in enumerate((-5, 2)):
+        x.line([(dx, -8), (dx + 3, -13), (dx, -18), (dx + 3, -23)], "steel3", 1.2)
+
+
+def item_chain(x):
+    for k in range(7):
+        a = math.radians(200 - k * 30)
+        px, py = -2 + 13 * math.cos(a), 2 + 10 * math.sin(a)
+        x.ring(px, py, 4, 2.6, "steel2" if k % 2 else "steel3", 1.4)
+    x.ring(8, -2, 6, 7, "steel3", 2.4, 180, 360)
+    x.rrect(0, -2, 16, 14, 3, "brass2")
+    x.rrect(0, -2, 6, 14, 3, "brass1")
+    x.ell(8, 5, 2, 2, "ink")
+    x.rect(7.2, 5, 8.8, 10, "ink")
+
+
+def item_elixir(x):
+    x.ell(0, 7, 14, 13, "poison")
+    x.ell(-4, 3, 6, 6, "poison1")
+    x.rect(-4, -14, 4, -4, "poison")
+    x.rect(-5, -19, 5, -13, "wood2")
+    x.rect(-5, -19, -1, -13, "wood1")
+    x.rrect(-8, 4, 8, 15, 2, "paper2")
+    x.line([(-2, 7), (0, 6), (2, 7), (2, 9), (0, 10), (0, 12)], "ink", 1.3)
+    x.ell(0, 13.6, 0.9, 0.9, "ink")
+
+
+def item_crystal(x):
+    x.poly([(-14, 20), (14, 20), (9, 10), (-9, 10)], "brass1")
+    x.poly([(-14, 20), (-5, 20), (-3, 10), (-9, 10)], "brass0")
+    x.ell(0, 10, 9, 3, "brass3")
+    x.ell(0, -4, 15, 15, "violet")
+    x.ell(2, -2, 11, 11, "tent4")
+    x.ring(0, -4, 8, 6, "violet1", 1.4, 30, 260)
+    x.ell(-6, -10, 4, 3, "white")
+
+
+def item_glove(x):
+    x.rrect(-10, 6, 10, 20, 3, "wine2")
+    x.rect(-10, 9, 10, 12, "brass3")
+    x.rrect(-11, -6, 10, 10, 5, "ink")
+    for k, (dx, l) in enumerate(((-8, 14), (-3, 17), (2, 16), (7, 12))):
+        x.rrect(dx - 2.3, -6 - l, dx + 2.3, -2, 2.3, "ink")
+    x.poly([(10, 2), (18, -8), (20, -5), (12, 8)], "ink")
+    x.line([(-6, 0), (5, 0)], "steel1", 1)
+
+
+def item_mirror(x):
+    x.rrect(-3, 6, 3, 22, 2, "brass1")
+    x.ell(0, 21, 4, 2, "brass2")
+    x.ell(0, -6, 13, 15, "brass2")
+    x.ell(0, -6, 10.5, 12.5, "steel3")
+    x.ell(-3, -9, 5, 6, "glass")
+    x.line([(-6, -14), (-2, -16)], "white", 1.6)
+
+
+ITEMS = [item_powder, item_monocle, item_oilcan, item_tea, item_chain, item_elixir, item_crystal, item_glove, item_mirror]
+
+
+def draw_item(L, i, cx, cy, s, rot=0.0, flat=0.82):
+    """un objet posé : vu un peu de haut (flat écrase la hauteur)"""
+    ITEMS[i](X(L, cx, cy, s, rot, sy=flat))
+
+
+def shadow(L, cx, cy, rx, ry, col="felt0"):
+    L.ell(cx, cy, rx, ry, col)
+
+
+# ------------------------------------------------------------------ le fusil
+def draw_gun(L, cx, cy, s, rot, charged=False, open_lever=0.0):
+    """Le fusil à levier : crosse de bois, boîte de laiton, canon d'acier. Unités : longueur ±62."""
+    x = X(L, cx, cy, s, rot)
+    barrel, barrel_hi = ("ember", "flame") if charged else ("steel1", "steel3")
+    x.poly([(-62, -5), (-30, -8), (-24, -2), (-24, 6), (-34, 7), (-62, 13)], "wood2")
+    x.poly([(-62, -5), (-30, -8), (-30, -5), (-62, -1)], "wood3")
+    x.poly([(-62, 13), (-62, -5), (-58, -5), (-58, 12)], "wood0")
+    x.rrect(-26, -8, 2, 6, 2, "brass2")
+    x.rect(-26, -8, 2, -5, "brass3")
+    x.ell(-12, -1, 3, 3, "brass1")
+    lv = open_lever * 14
+    x.ring(-16 + lv * 0.4, 10 + lv, 7, 5, "brass1", 2.2, 0, 360)
+    x.rect(2, -7, 60, -1, barrel)
+    x.rect(2, -7, 60, -5.6, barrel_hi)
+    x.rect(2, -1, 40, 4, "wood2")
+    x.rect(2, 2.6, 40, 4, "wood1")
+    x.rect(58, -8, 62, 0, "brass2")
+    x.rect(50, -10, 52, -7, "brass3")
+    if charged:
+        for k in range(5):
+            a = k * 1.3
+            x.line([(62, -4), (66 + 5 * math.cos(a), -4 + 6 * math.sin(a))], "flame", 1)
+
+
+def draw_muzzle(L, cx, cy, r, charged=False):
+    """le canon vu de face"""
+    L.ell(cx, cy, r * 1.25, r * 1.25, "brass1")
+    L.ell(cx, cy, r * 1.12, r * 1.12, "brass3" if not charged else "ember")
+    L.ell(cx, cy, r, r, "steel1")
+    L.ell(cx, cy, r * 0.62, r * 0.62, "ink")
+    L.ell(cx - r * 0.5, cy - r * 0.55, r * 0.2, r * 0.12, "steel3")
+    if charged:
+        for k in range(8):
+            a = k * math.pi / 4
+            L.line([(cx + math.cos(a) * r * 1.3, cy + math.sin(a) * r * 1.3),
+                    (cx + math.cos(a) * r * 1.6, cy + math.sin(a) * r * 1.6)], "flame", 1.2)
+
+
+def turned_gun(L, mx, my, r, far, charged=False, wood_far=False):
+    """le fusil tourné vers celui qui regarde : la bouche du canon devant, le reste qui s'éloigne vers far"""
+    fx, fy = far
+    dx, dy = fx - mx, fy - my
+    d = math.hypot(dx, dy)
+    nx, ny = -dy / d, dx / d
+    w0, w1 = r * 0.9, r * 0.35
+    barrel = "ember" if charged else "steel1"
+    L.poly([(mx + nx * w0, my + ny * w0), (fx + nx * w1, fy + ny * w1), (fx - nx * w1, fy - ny * w1),
+            (mx - nx * w0, my - ny * w0)], barrel)
+    t = 0.55
+    bx, by = mx + dx * t, my + dy * t
+    wb = w0 + (w1 - w0) * t
+    L.poly([(bx + nx * wb * 1.3, by + ny * wb * 1.3), (fx + nx * w1 * 1.5, fy + ny * w1 * 1.5),
+            (fx - nx * w1 * 1.5, fy - ny * w1 * 1.5), (bx - nx * wb * 1.3, by - ny * wb * 1.3)], "brass2")
+    if wood_far:
+        L.poly([(fx + nx * w1 * 1.5, fy + ny * w1 * 1.5), (fx + dx * 0.2 + nx * w1, fy + dy * 0.2 + ny * w1),
+                (fx + dx * 0.2 - nx * w1, fy + dy * 0.2 - ny * w1), (fx - nx * w1 * 1.5, fy - ny * w1 * 1.5)], "wood2")
+    draw_muzzle(L, mx, my, r, charged)
+
+
+def draw_shell(L, cx, cy, s, rot, live):
+    x = X(L, cx, cy, s, rot)
+    body, hi = ("live", "live1") if live else ("blank", "blank1")
+    x.rrect(-14, -5, 9, 5, 2, body)
+    x.rect(-12, -4, 7, -2, hi)
+    x.rect(5, -5.5, 14, 5.5, "brass2")
+    x.rect(5, -5.5, 14, -3, "brass4")
+    x.rect(12, -6.5, 14, 6.5, "brass1")
+    for k in range(3):
+        x.line([(-10 + k * 6, -5), (-10 + k * 6, 5)], "wine1" if live else "night1", 0.6)
+
+
+# ------------------------------------------------------------------ l'Automate
+def automaton_body(L, cx, cy, s, eye=2, tilt=0.0, hat=True, mouth_open=0.0):
+    """Le buste et la tête. (cx, cy) : le centre de la tête ; une tête fait 52 de haut à s = 1."""
+    x = X(L, cx, cy, s, tilt)
+    # buste : veste de velours, plastron, nœud
+    x.poly([(-58, 74), (-48, 40), (-24, 30), (24, 30), (48, 40), (58, 74), (58, 140), (-58, 140)], "wine1")
+    x.poly([(-58, 74), (-48, 40), (-36, 35), (-40, 140), (-58, 140)], "wine0")
+    x.poly([(-14, 30), (14, 30), (10, 140), (-10, 140)], "paper1")
+    x.poly([(-24, 30), (-8, 30), (-4, 80), (-20, 60)], "wine2")
+    x.poly([(24, 30), (8, 30), (4, 80), (20, 60)], "wine2")
+    x.poly([(-10, 32), (0, 36), (10, 32), (10, 42), (0, 38), (-10, 42)], "eye1")
+    x.ell(0, 37, 3, 3, "eye0")
+    for k in range(3):
+        x.ell(0, 56 + k * 14, 2.4, 2.4, "brass3")
+    # cou
+    x.rect(-9, 20, 9, 32, "steel1")
+    x.rect(-9, 24, 9, 26, "steel2")
+    # tête
+    x.rrect(-24, -28, 24, 24, 9, "brass2")
+    x.rrect(-24, -28, -12, 24, 6, "brass1")
+    x.rect(-24, -14, 24, -11, "brass1")
+    x.rect(-24, 10, 24, 13, "brass1")
+    x.rect(14, -26, 20, 22, "brass3")
+    for px in (-19, 19):
+        for py in (-20, -4, 4, 18):
+            x.ell(px, py, 1.4, 1.4, "brass4" if px > 0 else "brass3")
+    # la jauge (à gauche) et l'œil (à droite)
+    x.ell(-10, -3, 7, 7, "brass0")
+    x.ell(-10, -3, 5.6, 5.6, "paper2")
+    x.line([(-10, -3), (-7, -7)], "wine2", 1.1)
+    x.ell(8, -3, 11, 11, "brass0")
+    x.ell(8, -3, 9, 9, "ink")
+    glow = {0: ("eye0", "eye0"), 1: ("eye0", "eye1"), 2: ("eye1", "eye2"), 3: ("eye2", "white")}[eye]
+    x.ell(8, -3, 7, 7, glow[0])
+    x.ell(8, -3, 4, 4, glow[1])
+    if eye >= 2:
+        x.ell(5.5, -5.5, 1.6, 1.6, "white")
+    # bouche : une grille
+    for k in range(4):
+        y = 14.5 + k * 2.2 + mouth_open * k
+        x.rect(-9, y, 9, y + 1.1, "brass0")
+    # haut-de-forme
+    if hat:
+        x.ell(0, -28, 33, 6, "ink")
+        x.rect(-20, -64, 20, -28, "ink")
+        x.rect(-20, -64, -12, -28, "tent0")
+        x.rect(-20, -38, 20, -31, "wine2")
+        x.ell(0, -64, 20, 4, "tent1")
+
+
+def automaton_hand(L, hx, hy, s, rot=0.0, closed=False):
+    x = X(L, hx, hy, s, rot)
+    x.ell(0, 0, 8, 7, "brass2")
+    x.ell(-2, -2, 4, 3, "brass3")
+    for k, a in enumerate((-50, -15, 20)):
+        r = math.radians(a)
+        l = 7 if closed else 11
+        x.line([(math.cos(r) * 6, math.sin(r) * 6), (math.cos(r) * (6 + l), math.sin(r) * (6 + l))], "brass1", 3)
+    x.line([(-4, 5), (-10, 10)], "brass1", 3)
+
+
+def automaton_arm(L, sx, sy, hx, hy, s, out=1, hand=True, hand_rot=None, closed=False):
+    """un bras de la veste, de l'épaule à la main, coude vers l'extérieur"""
+    dx, dy = hx - sx, hy - sy
+    d = math.hypot(dx, dy)
+    seg = 34 * s
+    bend = math.sqrt(max(0.0, seg * seg - (d / 2) ** 2)) if d < 2 * seg else 0
+    mx, my = (sx + hx) / 2, (sy + hy) / 2
+    nx, ny = -dy / (d or 1), dx / (d or 1)
+    ex, ey = mx + nx * bend * out, my + ny * bend * out
+    L.line([(sx, sy), (ex, ey)], "wine0", 15 * s)
+    L.line([(sx, sy), (ex, ey)], "wine1", 12 * s)
+    L.line([(ex, ey), (hx, hy)], "wine1", 11 * s)
+    L.line([(ex, ey), (hx, hy)], "wine2", 5 * s)
+    cuffx, cuffy = hx - (hx - ex) * 0.18, hy - (hy - ey) * 0.18
+    L.line([(cuffx, cuffy), (hx - (hx - ex) * 0.05, hy - (hy - ey) * 0.05)], "paper1", 11 * s)
+    if hand:
+        r = math.degrees(math.atan2(hy - ey, hx - ex)) if hand_rot is None else hand_rot
+        automaton_hand(L, hx, hy, s, r, closed)
+
+
+# géométrie de l'Automate dans les deux vues
+DV = dict(cx=158, cy=58, s=1.0, edge=138, sl=(112, 98), sr=(204, 98))  # de près (sa vue)
+TV = dict(cx=160, cy=42, s=0.78, edge=88, sl=(123, 72), sr=(197, 72))  # à la table (ta vue)
+
+
+def dealer_figure(view, eye=2, tilt=0.0, arms=None, items=(), gun=None, dy=0, hat=True, clip=True, mouth=0.0):
+    """L'Automate entier, comme un calque : arms = ((main gauche), (main droite)) en coordonnées d'écran,
+    chaque main (x, y[, rot, fermée]) ; items = [(i, x, y, s, rot)] tenus ; gun = (cx, cy, s, rot, chargé, levier)."""
+    v = view
+    body = Layer()
+    automaton_body(body, v["cx"], v["cy"] + dy, v["s"], eye, tilt, hat, mouth)
+    if clip:
+        body.clip(y1=v["edge"])
+    L = Layer()
+    L.paste(body)
+    s = v["s"]
+    if gun:
+        draw_gun(L, *gun[:4], charged=gun[4] if len(gun) > 4 else False, open_lever=gun[5] if len(gun) > 5 else 0)
+    if arms is None:
+        arms = ((v["cx"] - 34 * s, v["edge"] - 2 * s, 0, True), (v["cx"] + 34 * s, v["edge"] - 2 * s, 180, True))
+    for k, hand in enumerate(arms):
+        if hand is None:
+            continue
+        sh = v["sl"] if k == 0 else v["sr"]
+        sx, sy = sh[0], sh[1] + dy
+        hx, hy = hand[0], hand[1]
+        rot = hand[2] if len(hand) > 2 else None
+        closed = hand[3] if len(hand) > 3 else False
+        automaton_arm(L, sx, sy, hx, hy, s, out=-1 if k == 0 else 1, hand_rot=rot, closed=closed)
+    for it in items:
+        draw_item(L, it[0], it[1], it[2], it[3], it[4] if len(it) > 4 else 0, flat=1.0)
+    return L
+
+
+# ------------------------------------------------------------------ décors
+def tent_back(L, vx=160, vy=-120, top=0, bottom=240, n=22, lamp=(160, 14)):
+    """la toile rayée de la baraque, en éventail depuis le haut"""
+    L.rect(0, top, W, bottom, "tent1")
+    for k in range(n):
+        a0 = math.radians(60 + 60 * k / n)
+        a1 = math.radians(60 + 60 * (k + 0.5) / n)
+        R = 700
+        L.poly([(vx, vy), (vx + R * math.cos(a0), vy + R * math.sin(a0)), (vx + R * math.cos(a1), vy + R * math.sin(a1))],
+               "wine1" if k % 2 else "tent2")
+    if lamp:
+        lx, ly = lamp
+        for r, c in ((90, "tent3"), (60, "tent4"), (34, "wine3")):
+            pass
+        L.line([(lx, -10), (lx, ly - 6)], "ink", 1.4)
+        L.poly([(lx - 7, ly - 6), (lx + 7, ly - 6), (lx + 9, ly + 8), (lx - 9, ly + 8)], "brass1")
+        L.ell(lx, ly + 2, 5, 5, "flame")
+        L.ell(lx, ly + 2, 2.4, 2.4, "white")
+        L.rect(lx - 10, ly + 8, lx + 10, ly + 11, "brass2")
+
+
+def glow(L, cx, cy, rx, ry, cols):
+    for k, c in enumerate(cols):
+        f = 1 - k / len(cols)
+        L.ell(cx, cy, rx * f, ry * f, c)
+
+
+def bunting(L, y, x0=-10, x1=330, n=11, sag=10):
+    """une guirlande de fanions"""
+    pts = [(x0 + (x1 - x0) * k / 40, y + sag * math.sin(math.pi * k / 40)) for k in range(41)]
+    L.line(pts, "ink", 1)
+    cols = ["wine3", "brass3", "eye1", "violet1"]
+    for k in range(n):
+        t = (k + 0.5) / n
+        px = x0 + (x1 - x0) * t
+        py = y + sag * math.sin(math.pi * t)
+        L.poly([(px - 6, py), (px + 6, py), (px, py + 11)], cols[k % 4])
+
+
+def table_view_plate():
+    L = Layer("tent1")
+    tent_back(L, lamp=(160, 6))
+    bunting(L, 2, sag=14)
+    # la table : tapis sarcelle, bord de laiton au fond
+    L.poly([(28, 90), (292, 90), (380, 240), (-60, 240)], "felt1")
+    L.poly([(28, 90), (292, 90), (296, 96), (24, 96)], "brass1")
+    L.poly([(24, 96), (296, 96), (300, 99), (20, 99)], "brass0")
+    L.poly([(20, 99), (300, 99), (380, 240), (-60, 240)], "felt2")
+    L.ell(160, 175, 150, 60, "felt3")
+    L.ell(160, 178, 132, 50, "felt2")
+    # étoile marquetée au centre, en laiton
+    x = X(L, 160, 172, 1.0, 0, sy=0.42)
+    for k in range(8):
+        a = math.radians(k * 45)
+        x.poly([(0, 0), (math.cos(a - 0.12) * 20, math.sin(a - 0.12) * 20), (math.cos(a) * 46, math.sin(a) * 46),
+                (math.cos(a + 0.12) * 20, math.sin(a + 0.12) * 20)], "felt3" if k % 2 else "brass0")
+    return L
+
+
+def dealer_view_plate():
+    L = Layer("tent1")
+    tent_back(L, vy=-200, lamp=None)
+    bunting(L, -4, sag=18)
+    # rideau de velours derrière lui
+    L.poly([(70, 0), (250, 0), (262, 140), (58, 140)], "wine0")
+    for k in range(7):
+        x0 = 76 + k * 25
+        L.poly([(x0, 0), (x0 + 11, 0), (x0 + 13, 140), (x0 + 2, 140)], "wine1")
+    L.rect(66, 0, 254, 8, "brass1")
+    # la table
+    L.poly([(-10, 138), (330, 138), (330, 240), (-10, 240)], "felt2")
+    L.rect(-10, 132, 330, 138, "brass2")
+    L.rect(-10, 136, 330, 140, "brass0")
+    L.ell(160, 250, 210, 80, "felt3")
+    L.ell(160, 252, 190, 66, "felt2")
+    return L
+
+
+def grid_lines(L, rects, col="brass0", w=1.2):
+    for (x0, y0, x1, y1) in rects:
+        L.line([(x0, y0), (x1, y0), (x1, y1), (x0, y1), (x0, y0)], col, w)
+
+
+# ------------------------------------------------------------------ les places des objets
+# centres et tailles : ta vue de la table (toi : P, lui : D) et sa vue de près (DI)
+P_SLOTS = [(43, 178, 0.92), (91, 179, 0.92), (24, 220, 1.0), (75, 220, 1.0),
+           (229, 179, 0.92), (276, 178, 0.92), (247, 220, 1.0), (298, 220, 1.0)]
+D_SLOTS = [(96, 108, 0.45), (122, 108, 0.45), (86, 125, 0.52), (115, 125, 0.52),
+           (201, 108, 0.45), (227, 108, 0.45), (207, 125, 0.52), (236, 125, 0.52)]
+DI_SLOTS = [(66, 160, 0.72), (104, 160, 0.72), (44, 192, 0.88), (92, 192, 0.88),
+            (218, 160, 0.72), (256, 160, 0.72), (232, 192, 0.88), (282, 192, 0.88)]
+
+
+def item_sprite(i, cx, cy, s):
+    L = Layer()
+    shadow(L, cx + 2 * s, cy + 12 * s, 16 * s, 6 * s, "felt0")
+    draw_item(L, i, cx, cy, s)
+    return L
+
+
+# ------------------------------------------------------------------ la main du joueur
+def player_arm(L, hx, hy, side=1, rot=0.0, s=1.0, grip=True):
+    """ton bras (manche sombre) qui monte du bas de l'écran jusqu'à la main en (hx, hy)"""
+    bx = hx + side * 70 * s
+    L.line([(bx, 260), (hx + side * 10 * s, hy + 14 * s)], "night", 30 * s)
+    L.line([(bx, 260), (hx + side * 10 * s, hy + 14 * s)], "night1", 22 * s)
+    x = X(L, hx, hy, s, rot)
+    x.ell(0, 0, 13, 11, "skin1")
+    x.ell(3, 3, 8, 6, "skin0")
+    if grip:
+        for k in range(4):
+            x.rrect(-12 + k * 6, -9, -7 + k * 6, 4, 2.5, "skin2" if k % 2 else "skin1")
+
+
+def fp_layer():
+    return Layer()
+
+
+# ------------------------------------------------------------------ tout le jeu
+def build():
+    plates, sprites = {}, {}
+
+    def sp(name, L):
+        sprites[name] = L.final()
+
+    def pl(name, L):
+        plates[name] = L.final(opaque=True)
+
+    # --- la table, ta vue
+    pl("table", table_view_plate())
+    g = Layer()
+    grid_lines(g, [(4, 150, 116, 238), (204, 150, 318, 238), (70, 98, 136, 140), (182, 98, 252, 140)], "brass2", 1.0)
+    sp("t_grid", g)
+    # l'Automate à la table : la tête respire (l'œil pulse)
+    for k, (eye, dy) in enumerate(((2, 0), (2, 0.6), (3, 1.0), (2, 0.6))):
+        L = Layer()
+        automaton_body(L, TV["cx"], TV["cy"] + dy, TV["s"], eye)
+        L.clip(y1=TV["edge"])
+        sp(f"t_head{k}", L)
+    h = Layer()
+    automaton_arm(h, *TV["sl"], 132, 90, TV["s"], out=-1, hand_rot=10, closed=True)
+    automaton_arm(h, *TV["sr"], 188, 90, TV["s"], out=1, hand_rot=170, closed=True)
+    sp("t_hands", h)
+    h = Layer()
+    automaton_arm(h, *TV["sl"], 150, 90, TV["s"], out=-1, hand_rot=0, closed=True)
+    automaton_arm(h, *TV["sr"], 170, 90, TV["s"], out=1, hand_rot=180, closed=True)
+    x = X(h, 160, 90, 0.78)
+    for k in range(5):
+        x.ring(-14 + k * 7, 0, 4, 3, "steel3", 1.6)
+    sp("t_cuffed", h)
+    gun = Layer()
+    shadow(gun, 152, 186, 30, 10)
+    draw_gun(gun, 146, 176, 0.95, -62)
+    sp("t_gun", gun)
+    gun = Layer()
+    shadow(gun, 152, 186, 30, 10)
+    draw_gun(gun, 146, 176, 0.95, -62, charged=True)
+    sp("t_gunsaw", gun)
+    # la caisse d'objets, ouverte
+    b = Layer()
+    b.poly([(96, 158), (224, 158), (232, 222), (88, 222)], "wood1")
+    b.poly([(96, 158), (224, 158), (220, 150), (100, 150)], "wood3")
+    b.poly([(104, 162), (216, 162), (222, 212), (98, 212)], "wood0")
+    for k in range(9):
+        b.line([(106 + k * 13, 206), (112 + k * 13, 166)], "brass2", 1.2)
+    b.poly([(100, 150), (220, 150), (226, 98), (94, 98)], "wood2")
+    b.poly([(104, 146), (216, 146), (220, 104), (100, 104)], "wood1")
+    b.rect(96, 186, 224, 190, "brass1")
+    b.line([(160, 104), (160, 146)], "wood0", 2)
+    sp("t_box", b)
+    # tes poignets enchaînés
+    pc = Layer()
+    for k in range(9):
+        pc.ell(70 + k * 10, 226 + 4 * math.sin(k), 5, 3.2, None, outline="steel3", width=1.4)
+    pc.ell(58, 228, 14, 8, None, outline="steel2", width=3)
+    pc.ell(166, 228, 14, 8, None, outline="steel2", width=3)
+    sp("t_pcuff", pc)
+    # --- les objets posés : ta vue (toi, lui) et sa vue
+    for i in range(9):
+        for g_, (cx, cy, s) in enumerate(P_SLOTS):
+            sp(f"it{i}p{g_}", item_sprite(i, cx, cy, s))
+        for g_, (cx, cy, s) in enumerate(D_SLOTS):
+            sp(f"it{i}d{g_}", item_sprite(i, cx, cy, s))
+    for i in range(9):
+        for g_, (cx, cy, s) in enumerate(DI_SLOTS):
+            sp(f"di{i}{g_}", item_sprite(i, cx, cy, s))
+    # --- la vue de près
+    pl("dealer", dealer_view_plate())
+    g = Layer()
+    grid_lines(g, [(18, 142, 116, 214), (200, 142, 306, 214)], "brass2", 1.0)
+    sp("d_grid", g)
+    gun = Layer()
+    shadow(gun, 164, 214, 44, 10)
+    draw_gun(gun, 164, 206, 0.9, -8)
+    sp("d_gun", gun)
+    gun = Layer()
+    shadow(gun, 164, 214, 44, 10)
+    draw_gun(gun, 164, 206, 0.9, -8, charged=True)
+    sp("d_gunsaw", gun)
+    L = Layer()
+    automaton_body(L, DV["cx"], DV["cy"], DV["s"], 2)
+    L.clip(y1=DV["edge"])
+    sp("d_head", L)
+    h = Layer()
+    automaton_arm(h, *DV["sl"], 120, 140, 1.0, out=-1, hand_rot=10, closed=True)
+    automaton_arm(h, *DV["sr"], 196, 140, 1.0, out=1, hand_rot=170, closed=True)
+    sp("d_hands", h)
+    e = Layer()
+    e.ell(166, 55, 7, 7, "eye1")
+    e.ell(166, 55, 4, 4, "eye2")
+    sp("d_eyes", e)
+    cx, cy = DV["cx"], DV["cy"]
+    # ses poses : chaque pose est l'Automate entier
+    poses = {
+        "d_cuffed": dict(arms=((150, 132, 0, True), (166, 132, 180, True)), extra="chain"),
+        "d_getcuff": dict(arms=((140, 118, -20, False), (176, 118, 200, False))),
+        "d_adr0": dict(arms=((118, 136, 10, True), (212, 110, 200, False)), items=[(7, 212, 102, 0.9, 10)]),
+        "d_adr1": dict(arms=((118, 136, 10, True), (190, 92, 230, False)), items=[(7, 194, 86, 1.0, -20)], eye=3),
+        "d_beer0": dict(arms=((118, 136, 10, True), (206, 108, 200, False)), items=[(2, 210, 98, 0.9, 0)]),
+        "d_beer1": dict(arms=((150, 150, 0, True), (196, 118, 200, False)), items=[(2, 186, 116, 0.9, -40)],
+                        gun=(164, 160, 0.9, -8)),
+        "d_phone0": dict(arms=((132, 116, -40, False), (184, 116, 220, False)), items=[(6, 158, 104, 1.0, 0)]),
+        "d_phone1": dict(arms=((134, 102, -40, False), (182, 102, 220, False)), items=[(6, 158, 88, 1.1, 0)], eye=3,
+                         tilt=-6),
+        "d_cig0": dict(arms=((118, 136, 10, True), (204, 104, 200, False)), items=[(3, 206, 96, 0.9, 0)]),
+        "d_cig1": dict(arms=((118, 136, 10, True), (176, 80, 220, False)), items=[(3, 176, 70, 0.9, -15)], tilt=-8,
+                       eye=1),
+        "d_med0": dict(arms=((118, 136, 10, True), (204, 104, 200, False)), items=[(5, 206, 94, 0.9, 0)]),
+        "d_med1": dict(arms=((118, 136, 10, True), (178, 78, 230, False)), items=[(5, 178, 66, 0.9, -60)], tilt=-10,
+                       eye=1),
+        "d_cuffs0": dict(arms=((118, 136, 10, True), (204, 108, 200, False)), items=[(4, 206, 100, 0.9, 0)]),
+        "d_cuffs1": dict(arms=((118, 136, 10, True), (190, 156, 160, False)), items=[(4, 186, 168, 1.1, 20)]),
+        "d_saw0": dict(arms=((118, 136, 10, True), (206, 104, 200, False)), items=[(0, 208, 94, 0.9, 0)]),
+        "d_saw1": dict(arms=((126, 150, 0, True), (188, 112, 200, False)), items=[(0, 180, 104, 0.9, 120)],
+                       gun=(150, 150, 0.9, 10)),
+        "d_saw2": dict(arms=((126, 150, 0, True), (196, 140, 180, True)), gun=(150, 150, 0.9, 10, True)),
+        "d_inv0": dict(arms=((118, 136, 10, True), (204, 106, 200, False)), items=[(8, 206, 94, 0.9, 0)]),
+        "d_inv1": dict(arms=((126, 150, 0, True), (196, 118, 200, False)), items=[(8, 196, 104, 1.0, -30)],
+                       gun=(150, 150, 0.9, 10)),
+        "d_mag0": dict(arms=((118, 136, 10, True), (204, 104, 200, False)), items=[(1, 206, 96, 0.8, 0)]),
+        "d_mag1": dict(arms=((118, 136, 10, True), (176, 64, 220, False)), items=[(1, 166, 56, 0.85, 0)], eye=3),
+        "d_gun_lift": dict(arms=((126, 150, 0, True), (198, 144, 180, True)), gun=(164, 160, 0.9, -12)),
+        "d_gun_load": dict(arms=((120, 128, -10, True), (198, 120, 180, True)), gun=(160, 120, 0.95, 0, False, 1.0)),
+        "d_gun_load1": dict(arms=((120, 128, -10, True), (178, 112, 200, False)), gun=(160, 120, 0.95, 0, False, 1.0),
+                            shell=(170, 104, 0.6, -30)),
+        "d_gun_aimp0": dict(arms=((128, 134, -30, True), (182, 128, 180, True)), gun=(158, 126, 0.95, 60)),
+        "d_gun_aimp": dict(arms=((136, 128, -60, True), (178, 118, 180, True)), muzzle=(158, 146, 17)),
+        "d_gun_aims0": dict(arms=((122, 126, -40, True), (196, 118, 180, True)), gun=(162, 100, 0.95, -60)),
+        "d_gun_aims": dict(arms=((126, 128, -60, True), (200, 124, 200, True)), gun=(176, 92, 0.95, -112), eye=3),
+        "d_gun_aims_saw": dict(arms=((126, 128, -60, True), (200, 124, 200, True)), gun=(176, 92, 0.95, -112, True),
+                               eye=3),
+        "d_gun_rack": dict(arms=((120, 128, -10, True), (170, 136, 200, True)), gun=(160, 120, 0.95, 0, False, 0.0)),
+        "d_gun_racks": dict(arms=((120, 128, -10, True), (170, 140, 200, True)), gun=(160, 120, 0.95, 0, False, 0.0),
+                            tilt=6, eye=1),
+    }
+    for name, p in poses.items():
+        gun = p.get("gun")
+        L = dealer_figure(DV, eye=p.get("eye", 2), tilt=p.get("tilt", 0), arms=p["arms"], items=p.get("items", ()),
+                          gun=gun)
+        if p.get("extra") == "chain":
+            x = X(L, 158, 132, 1.0)
+            for k in range(6):
+                x.ring(-15 + k * 6, 0, 4, 3, "steel3", 1.6)
+        if p.get("shell"):
+            draw_shell(L, *p["shell"], live=True)
+        if p.get("muzzle"):
+            m = p["muzzle"]
+            turned_gun(L, m[0], m[1], m[2], (150, 96), False, wood_far=True)
+        sp(name, L)
+    # projeté en arrière, puis effondré
+    for k, (dy, s) in enumerate(((-10, 0.92), (-22, 0.82))):
+        L = Layer()
+        automaton_body(L, cx + 6 * (k + 1), cy + dy, s, 1, 8 + 8 * k)
+        L.clip(y1=DV["edge"])
+        sp(f"d_fly{k}", L)
+    L = Layer()
+    automaton_body(L, cx, cy + 40, 1.0, 0, 18)
+    L.clip(y1=DV["edge"])
+    automaton_arm(L, *DV["sl"], 112, 150, 1.0, out=-1, closed=True)
+    automaton_arm(L, *DV["sr"], 214, 152, 1.0, out=1, closed=True)
+    sp("d_medfall", L)
+    for k, live in (("l", 1), ("b", 0)):
+        L = Layer()
+        draw_shell(L, 214, 96, 0.55, -50, live)
+        sp(f"d_eject_{k}", L)
+        L = Layer()
+        draw_shell(L, 240, 70, 0.9, -40, live)
+        sp(f"p_eject_{k}", L)
+    # --- ta main, ton fusil (vue à la première personne)
+    def hold(rot=-28, cx=196, cy=176, s=1.7, charged=False, lever=0.0):
+        L = Layer()
+        draw_gun(L, cx, cy, s, rot, charged, lever)
+        x = X(L, cx, cy, s, rot)
+        hx, hy = x.t(-14, 10)
+        player_arm(L, hx, hy, 1, rot, 1.0)
+        hx, hy = x.t(22, 3)
+        player_arm(L, hx, hy, -1, rot, 1.0)
+        return L
+
+    sp("p_hold", hold())
+    sp("p_rack", hold(rot=-8, cx=180, cy=196, lever=1.0))
+    L = Layer()
+    draw_gun(L, 168, 190, 1.6, -78)
+    x = X(L, 168, 190, 1.6, -78)
+    player_arm(L, *x.t(-30, 8), 1, -78, 1.0)
+    player_arm(L, *x.t(16, 2), -1, -78, 1.0)
+    sp("p_aimd", L)
+    L = Layer()
+    draw_gun(L, 168, 190, 1.6, -78, charged=True)
+    x = X(L, 168, 190, 1.6, -78)
+    player_arm(L, *x.t(-30, 8), 1, -78, 1.0)
+    player_arm(L, *x.t(16, 2), -1, -78, 1.0)
+    sp("p_aimd_saw", L)
+    for name, ch in (("p_aims", False), ("p_aims_saw", True)):
+        L = Layer()
+        turned_gun(L, 176, 104, 30, (262, 238), ch)
+        player_arm(L, 236, 196, 1, 30, 1.2)
+        player_arm(L, 210, 160, -1, -30, 1.0)
+        sp(name, L)
+    # la cible sur la table, du côté de l'Automate (sans texte : son œil et une flèche)
+    L = Layer()
+    L.poly([(160, 122), (176, 136), (166, 136), (166, 144), (154, 144), (154, 136), (144, 136)], "white")
+    L.ell(160, 112, 9, 9, "white")
+    L.ell(160, 112, 6, 6, "ink")
+    L.ell(160, 112, 3, 3, "white")
+    sp("p_lbl_dealer", L)
+    # objets en main
+    def raise_item(i, cx, cy, s, rot=0, arm_rot=0, side=1):
+        L = Layer()
+        player_arm(L, cx + side * 6 * s / 3, cy + 26 * s / 3, side, arm_rot, s / 2.6)
+        draw_item(L, i, cx, cy, s, rot, flat=1.0)
+        return L
+
+    sp("p_saw0", raise_item(0, 200, 160, 2.6))
+    L = hold(rot=-20, cx=150, cy=196, s=1.5)
+    draw_item(L, 0, 224, 98, 2.0, 140, flat=1.0)
+    for k in range(9):
+        L.ell(206 - k * 4 + random.Random(k).uniform(-2, 2), 112 + k * 5, 1.6, 1.6, "ink")
+    sp("p_saw1", L)
+    sp("p_mag0", raise_item(1, 190, 140, 2.8))
+    # le monocle devant la culasse ouverte
+    def mag(live):
+        L = Layer()
+        draw_gun(L, 150, 150, 3.0, -4, False, 1.0)
+        L.ell(150, 152, 50, 46, "brass1")
+        L.ell(150, 152, 44, 40, "glass")
+        L.ell(150, 152, 40, 36, "steel0")
+        if live is not None:
+            draw_shell(L, 150, 152, 2.6, 0, live)
+        L.ell(132, 132, 9, 6, "white")
+        player_arm(L, 210, 196, 1, 0, 1.4)
+        return L
+
+    sp("p_mag", mag(None))
+    sp("p_mag_l", mag(1))
+    sp("p_mag_b", mag(0))
+    sp("p_beer0", raise_item(2, 196, 150, 2.6))
+    L = hold(rot=-8, cx=150, cy=200, s=1.5, lever=1.0)
+    draw_item(L, 2, 214, 116, 2.2, -50, flat=1.0)
+    for k in range(4):
+        L.ell(150 - k * 2, 150 + k * 8, 2, 3, "brass3")
+    sp("p_beer1", L)
+    sp("p_cig0", raise_item(3, 194, 156, 2.6))
+    L = raise_item(3, 168, 196, 3.4, 0)
+    for k in range(3):
+        x = X(L, 150 + k * 16, 130, 1.6)
+        x.line([(0, 0), (4, -8), (0, -16), (4, -24)], "steel3", 1.4)
+    sp("p_cig1", L)
+    sp("p_phone0", raise_item(6, 200, 140, 2.6))
+    L = raise_item(6, 170, 120, 3.4)
+    glow(L, 170, 106, 30, 30, ["violet", "tent4", "violet1"])
+    sp("p_phone1", L)
+    sp("p_med0", raise_item(5, 190, 150, 2.6))
+    sp("p_med1", raise_item(5, 170, 110, 3.0, -120, -40))
+    sp("p_adr0", raise_item(7, 196, 150, 2.6))
+    L = Layer()
+    player_arm(L, 176, 150, 1, -10, 1.5, grip=False)
+    draw_item(L, 7, 176, 142, 3.0, 0, flat=1.0)
+    sp("p_adr1", L)
+    L = hold(rot=-20, cx=150, cy=200, s=1.5)
+    draw_item(L, 8, 226, 110, 2.6, -20, flat=1.0)
+    sp("p_inv1", L)
+    # --- le panneau des bougies (les charges)
+    pl("health", health_plate())
+    fr = Layer()
+    for x0, x1 in ((16, 152), (168, 304)):
+        fr.line([(x0, 114), (x1, 114)], "brass2", 1.2)
+    fr.line([(160, 92), (160, 168)], "brass2", 1.4)
+    fr.ell(30, 98, 6, 6, "brass1")
+    fr.ell(30, 98, 4, 4, "eye1")
+    fr.ell(30, 98, 2, 2, "eye2")
+    fr.ell(48, 98, 4, 4, "brass1")
+    fr.ell(48, 98, 2.6, 2.6, "paper2")
+    sp("h_frame", fr)
+    CANDLE_D = [(24 + 22 * i, 0) for i in range(6)]
+    CANDLE_P = [(296 - 22 * i, 0) for i in range(6)]
+    for k, (x0, _) in enumerate(CANDLE_D + CANDLE_P):
+        L = Layer()
+        candle(L, x0, 160, lit=True)
+        sp(f"h_sym{k}", L)
+    for k, x0 in enumerate([24, 46, 296, 274]):
+        L = Layer()
+        candle(L, x0, 160, lit=True, blue=True)
+        sp(f"h_skull{k}", L)
+    L = Layer()
+    for k, (x0, num) in enumerate(((108, "I"), (152, "II"), (196, None))):
+        L.ell(x0, 112, 18, 18, "brass1")
+        L.ell(x0, 112, 15, 15, "tent0")
+        if num:
+            L.text(x0, 113, num, 16, "paper2", anchor="mm")
+        else:
+            flame(L, x0, 118, 1.3)
+        L.ell(x0, 146, 6, 6, "brass1")
+        L.ell(x0, 146, 4, 4, "tent0")
+    sp("h_round0", L)
+    for k, x0 in enumerate((108, 152, 196)):
+        L = Layer()
+        L.ell(x0, 146, 4, 4, "flame")
+        sp(f"h_round{k + 1}", L)
+    L = Layer()
+    L.ell(196, 112, 15, 15, "tent0")
+    infinity(L, 196, 112)
+    sp("h_endless0", L)
+    for k, x0 in enumerate((108, 152, 196)):
+        L = Layer()
+        L.ell(x0, 146, 4, 4, "eye2")
+        sp(f"h_endless{k + 1}", L)
+    for name, (x0, x1) in (("h_err_d", (16, 152)), ("h_err_p", (168, 304))):
+        L = Layer()
+        L.rect(x0, 112, x1, 168, "tent0")
+        for k in range(6):
+            cxk = x0 + 12 + k * (x1 - x0 - 24) / 5
+            L.rect(cxk - 3, 146, cxk + 3, 166, "paper0")
+            pts = [(cxk + 3 * math.sin(t / 2), 144 - t * 2.4) for t in range(10)]
+            L.line(pts, "smoke", 1.4)
+        L.line([(x0 + 6, 116), (x1 - 6, 164)], "red", 2)
+        L.line([(x1 - 6, 116), (x0 + 6, 164)], "red", 2)
+        sp(name, L)
+    # le petit panneau de la table (à droite)
+    L = Layer()
+    L.rect(282, 128, 306, 150, "wood1")
+    L.rect(283, 129, 305, 149, "ink")
+    L.rect(282, 138, 306, 140, "brass1")
+    L.rect(292, 150, 296, 156, "wood0")
+    sp("c_frame", L)
+    for k in range(12):
+        L = Layer()
+        row = 0 if k < 6 else 1
+        i = k % 6
+        L.rect(285 + i * 3.4, 131 + row * 10, 287.2 + i * 3.4, 136 + row * 10, "flame")
+        sp(f"c_sym{k}", L)
+    # --- les cartouches, dans leur coffret
+    pl("shells", shells_plate())
+    for i in range(8):
+        cxk = 54 + i * 30
+        for k, live in (("l", 1), ("b", 0)):
+            L = Layer()
+            draw_shell(L, cxk, 120, 1.25, -90, live)
+            sp(f"s_{k}{i}", L)
+    # --- le reste de l'histoire
+    pl("waiver", waiver_plate())
+    pl("don", don_plate())
+    pl("car", ending_plate())
+    pl("zaim", zaim_plate())
+    pl("bath", caravan_plate())
+    pl("revive", revive_plate())
+    pl("hall", alley_plate())
+    pl("heaven", dark_plate())
+    L = Layer()
+    token(L, 98, 150)
+    sp("b_pills", L)
+    # le coffret qui descend sur la table, et s'ouvre
+    for k, (y, open_) in enumerate(((60, False), (150, False), (150, True))):
+        L = Layer()
+        chest(L, 160, y, open_)
+        sp(f"e_brief{k}", L)
+    return plates, sprites
+
+
+def flame(L, x, y, s=1.0, blue=False):
+    c0, c1 = ("blank", "blank1") if blue else ("ember", "flame")
+    L.poly([(x, y - 12 * s), (x + 4 * s, y - 3 * s), (x + 3 * s, y + 1 * s), (x - 3 * s, y + 1 * s), (x - 4 * s, y - 3 * s)], c0)
+    L.poly([(x, y - 8 * s), (x + 2 * s, y - 2 * s), (x, y + 0.5 * s), (x - 2 * s, y - 2 * s)], c1)
+
+
+def candle(L, x, y, lit=True, blue=False):
+    glow(L, x, y - 30, 10, 10, ["tent2", "tent3"]) if lit else None
+    L.rect(x - 4, y - 24, x + 4, y, "paper2")
+    L.rect(x - 4, y - 24, x - 1, y, "paper1")
+    L.rect(x - 0.6, y - 28, x + 0.6, y - 24, "ink")
+    if lit:
+        flame(L, x, y - 28, 1.0, blue)
+
+
+def infinity(L, x, y):
+    pts = [(x + 11 * math.cos(t) / (1 + math.sin(t) ** 2), y + 11 * math.sin(t) * math.cos(t) / (1 + math.sin(t) ** 2))
+           for t in np.linspace(0, 2 * math.pi, 50)]
+    L.line(pts, "eye2", 2.4)
+
+
+def token(L, x, y):
+    L.ell(x, y + 6, 10, 4, "wood0")
+    L.ell(x, y, 10, 10, "brass1")
+    L.ell(x, y, 8, 8, "brass3")
+    L.ell(x, y, 5, 5, "brass2")
+    L.text(x, y + 0.5, "2", 8, "brass4", anchor="mm")
+
+
+def chest(L, x, y, open_):
+    if open_:
+        L.poly([(x - 46, y - 10), (x + 46, y - 10), (x + 40, y - 52), (x - 40, y - 52)], "wood2")
+        L.poly([(x - 40, y - 14), (x + 40, y - 14), (x + 36, y - 48), (x - 36, y - 48)], "wine1")
+        for k in range(16):
+            r = random.Random(k)
+            L.ell(x - 36 + r.uniform(0, 72), y - 6 + r.uniform(-4, 4), 6, 3, "brass3")
+            L.ell(x - 36 + r.uniform(0, 72), y - 6 + r.uniform(-4, 4), 5, 2.4, "brass4")
+    L.rect(x - 46, y - 10, x + 46, y + 26, "wood1")
+    L.rect(x - 46, y - 10, x + 46, y - 4, "wood3")
+    for dx in (-30, 30):
+        L.rect(x + dx - 3, y - 10, x + dx + 3, y + 26, "brass1")
+    if not open_:
+        L.poly([(x - 46, y - 10), (x + 46, y - 10), (x + 40, y - 30), (x - 40, y - 30)], "wood2")
+        L.rect(x - 5, y - 16, x + 5, y - 4, "brass2")
+        L.ell(x, y - 10, 2, 2, "ink")
+
+
+def health_plate():
+    L = Layer("tent0")
+    tent_back(L, lamp=None)
+    L.rect(8, 84, 312, 176, "wood0")
+    L.rect(10, 86, 310, 174, "wood1")
+    for x0, x1 in ((14, 154), (166, 306)):
+        L.rect(x0, 90, x1, 170, "ink")
+        L.rect(x0, 90, x1, 92, "brass1")
+    L.rect(4, 176, 316, 182, "brass1")
+    bunting(L, 40, x0=0, x1=320, sag=12)
+    return L
+
+
+def shells_plate():
+    L = Layer("tent0")
+    tent_back(L, lamp=None)
+    L.poly([(14, 70), (306, 70), (316, 180), (4, 180)], "wood1")
+    L.poly([(22, 78), (298, 78), (306, 170), (14, 170)], "wine0")
+    for i in range(8):
+        cx = 54 + i * 30
+        L.rect(cx - 10, 94, cx + 10, 152, "wine1")
+        L.rect(cx - 8, 96, cx + 8, 150, "ink")
+    L.rect(4, 176, 316, 182, "brass1")
+    return L
+
+
+def caravan_plate():
+    L = Layer("wood1")
+    # murs de planches
+    for k in range(16):
+        L.rect(k * 20, 0, k * 20 + 19, 170, "wood2" if k % 2 else "wood1")
+    L.rect(0, 0, W, 10, "wood0")
+    # la fenêtre ronde, la nuit et une grande roue au loin
+    L.ell(70, 64, 34, 34, "brass1")
+    L.ell(70, 64, 30, 30, "night")
+    wheel(L, 74, 74, 22, "violet1")
+    # la porte
+    L.rect(172, 50, 252, 182, "wood0")
+    L.rect(178, 56, 246, 182, "wood3")
+    L.rect(182, 60, 242, 112, "wood2")
+    L.rect(182, 118, 242, 176, "wood2")
+    L.ell(236, 118, 3, 3, "brass3")
+    # sol, table et lampe
+    L.poly([(0, 170), (320, 170), (320, 240), (0, 240)], "wood0")
+    for k in range(6):
+        L.line([(0, 182 + k * 11), (320, 182 + k * 11)], "wood1", 1)
+    L.poly([(40, 150), (150, 150), (160, 164), (30, 164)], "wine1")
+    L.rect(48, 164, 54, 232, "wood0")
+    L.rect(136, 164, 142, 232, "wood0")
+    glow(L, 130, 128, 18, 18, ["wood3", "brass2", "flame"])
+    L.rect(124, 136, 136, 150, "brass1")
+    return L
+
+
+def wheel(L, x, y, r, col):
+    L.ell(x, y, r, r, None, outline=col, width=1.4)
+    for k in range(10):
+        a = k * math.pi / 5
+        L.line([(x, y), (x + r * math.cos(a), y + r * math.sin(a))], col, 0.8)
+        L.ell(x + r * math.cos(a), y + r * math.sin(a), 2.2, 2.2, "flame")
+    L.line([(x, y), (x - 12, y + 30)], col, 1)
+    L.line([(x, y), (x + 12, y + 30)], col, 1)
+
+
+def alley_plate():
+    L = Layer("night")
+    L.rect(0, 120, W, H, "night1")
+    for k in range(40):
+        r = random.Random(k)
+        L.ell(r.uniform(0, 320), r.uniform(0, 80), 0.8, 0.8, "dot")
+    wheel(L, 60, 70, 40, "violet1")
+    # la baraque au fond, son entrée éclairée (la porte)
+    L.poly([(110, 60), (210, 60), (240, 110), (80, 110)], "wine1")
+    for k in range(8):
+        L.poly([(110 + k * 12.5, 60), (116 + k * 12.5, 60), (100 + k * 18, 110), (92 + k * 18, 110)], "brass2")
+    L.rect(84, 110, 236, 190, "wine0")
+    L.rect(136, 120, 184, 190, "flame")
+    L.rect(140, 124, 180, 190, "brass3")
+    L.poly([(136, 120), (160, 112), (184, 120)], "wine2")
+    bunting(L, 104, x0=80, x1=240, n=8, sag=6)
+    # l'allée
+    L.poly([(130, 190), (190, 190), (320, 240), (0, 240)], "wood1")
+    for k in range(6):
+        L.ell(20 + k * 56, 150, 6, 6, "flame")
+        L.rect(19 + k * 56, 150, 21 + k * 56, 200, "steel1")
+    return L
+
+
+def waiver_plate():
+    L = Layer("felt2")
+    L.ell(160, 120, 200, 140, "felt3")
+    # le contrat, à gauche
+    L.poly([(14, 22), (176, 18), (184, 230), (20, 234)], "paper1")
+    L.poly([(18, 26), (172, 22), (180, 226), (24, 230)], "paper2")
+    L.line([(40, 38), (152, 36)], "wine2", 2)
+    star(L, 96, 37, 7, "wine2")
+    L.line([(56, 46), (136, 45)], "wine1", 1)
+    for k in range(13):
+        y = 56 + k * 7.5
+        L.line([(30, y), (166 - (k % 3) * 14, y - 0.4)], "paper0", 1.2)
+    L.line([(30, 186), (170, 184)], "ink", 1.2)
+    L.ell(150, 210, 14, 14, "wine2")
+    L.ell(150, 210, 10, 10, "wine3")
+    star(L, 150, 210, 7, "wine1")
+    # la machine à poinçonner, à droite
+    L.rect(192, 14, 314, 232, "brass1")
+    L.rect(196, 18, 310, 228, "brass2")
+    L.rect(198, 26, 300, 48, "ink")
+    keys = key_layout()
+    for i, (x, y) in enumerate(keys):
+        L.ell(x, y, 8, 8, "brass0")
+        L.ell(x, y - 1, 7, 7, "paper2")
+        label = chr(65 + i) if i < 26 else ("OK" if i == 26 else "<")
+        L.text(x, y - 0.5, label, 7 if i < 26 else 6, "ink", anchor="mm")
+    return L
+
+
+def key_layout():
+    """26 lettres en grille (5 par ligne), puis Valider et Effacer"""
+    pts = []
+    for i in range(26):
+        pts.append((210 + (i % 5) * 20, 64 + (i // 5) * 22))
+    pts.append((270, 196 + 0))  # OK (valider) : ligne 6, à droite de Z
+    pts.append((290, 196))       # effacer
+    pts[26] = (250, 196)
+    pts[27] = (290, 196)
+    return pts
+
+
+def star(L, x, y, r, col):
+    pts = []
+    for k in range(10):
+        a = math.radians(-90 + k * 36)
+        rr = r if k % 2 == 0 else r * 0.45
+        pts.append((x + rr * math.cos(a), y + rr * math.sin(a)))
+    L.poly(pts, col)
+
+
+DON_BTN = [(58, 14, 104, 46), (168, 14, 104, 46)]
+
+
+def don_plate():
+    L = Layer("tent0")
+    tent_back(L, lamp=None)
+    L.rect(30, 4, 290, 236, "brass1")
+    L.rect(34, 8, 286, 232, "brass2")
+    for (x, y, w, h), kind in zip(DON_BTN, ("double", "leave")):
+        L.rect(x, y, x + w, y + h, "brass0")
+        L.rect(x + 3, y + 3, x + w - 3, y + h - 3, "wine2" if kind == "double" else "felt3")
+        cx, cy = x + w / 2, y + h / 2
+        if kind == "double":
+            L.ell(cx - 8, cy, 9, 9, "brass3")
+            L.ell(cx + 8, cy, 9, 9, "brass4")
+            L.text(cx + 8, cy + 0.5, "2", 10, "brass1", anchor="mm")
+        else:
+            L.rect(cx - 9, cy - 12, cx + 9, cy + 12, "wood1")
+            L.rect(cx - 6, cy - 9, cx + 6, cy + 12, "night")
+            L.poly([(cx + 2, cy - 4), (cx + 12, cy), (cx + 2, cy + 4)], "paper2")
+    L.rect(60, 124, 260, 218, "ink")
+    L.rect(64, 128, 256, 214, "felt0")
+    for k in range(4):
+        L.ell(46, 70 + k * 40, 4, 4, "flame")
+        L.ell(274, 70 + k * 40, 4, 4, "flame")
+    return L
+
+
+def ending_plate():
+    L = Layer("night")
+    for k in range(8):
+        y = 110 + k * 10
+        L.rect(0, y, W, y + 10, ["night", "night1", "tent2", "tent3", "wine2", "dawn", "dawn1", "flame"][k])
+    L.ell(250, 190, 30, 30, "flame")
+    # la fête foraine éteinte, en ombre
+    wheel(L, 220, 140, 46, "tent0")
+    L.poly([(0, 190), (320, 190), (320, 240), (0, 240)], "ink")
+    L.poly([(40, 190), (90, 150), (140, 190)], "tent0")
+    L.poly([(150, 190), (180, 166), (210, 190)], "tent0")
+    # le chemin, et le coffret de pièces au premier plan
+    L.poly([(150, 190), (180, 190), (260, 240), (90, 240)], "wood0")
+    chest(L, 262, 220, True)
+    return L
+
+
+def zaim_plate():
+    L = Layer("tent0")
+    L.ell(160, 120, 160, 120, "tent1")
+    automaton_body(L, 170, 70, 1.6, 2)
+    L.rect(0, 0, W, H, None) if False else None
+    draw_muzzle(L, 150, 130, 54)
+    return L
+
+
+def revive_plate():
+    L = Layer("tent0")
+    glow(L, 160, 120, 170, 130, ["tent1", "tent2", "tent3"])
+    automaton_body(L, 160, 92, 1.7, 3, -8)
+    # la grande clé de remontoir qu'il tend vers toi
+    x = X(L, 236, 186, 1.6, -30)
+    x.ell(0, -20, 14, 10, "brass2")
+    x.ell(0, -20, 8, 5, "tent1")
+    x.rect(-2.5, -12, 2.5, 26, "brass2")
+    x.rect(-2.5, 18, 8, 22, "brass3")
+    automaton_arm(L, 220, 186, 236, 200, 1.6, out=1, closed=True)
+    return L
+
+
+def dark_plate():
+    L = Layer("ink")
+    glow(L, 160, 150, 120, 80, ["tent0", "tent1"])
+    for k in range(30):
+        r = random.Random(100 + k)
+        L.ell(r.uniform(0, 320), r.uniform(0, 240), 0.8, 0.8, "smoke")
+    L.rect(156, 160, 164, 200, "paper1")
+    pts = [(160 + 4 * math.sin(t / 2), 156 - t * 4) for t in range(14)]
+    L.line(pts, "smoke", 2)
+    return L
+
+
+def logo():
+    """le titre : CHEVROTINE, et une cartouche"""
+    L = Layer()
+    L.text(16, 22, "CHEVROTINE", 17, "black", spacing=0.4)
+    L.text(14, 20, "CHEVROTINE", 17, "brass3", spacing=0.4)
+    L.line([(14, 46), (140, 46)], "brass2", 1.2)
+    draw_shell(L, 44, 58, 0.9, 0, 1)
+    draw_shell(L, 78, 58, 0.9, 0, 0)
+    draw_shell(L, 112, 58, 0.9, 0, 1)
+    a = L.final()
+    ys, xs = np.nonzero(a[..., 3])
+    return a[ys.min():ys.max() + 1, xs.min():xs.max() + 1], (int(xs.min()), int(ys.min()))
+
+
+# ------------------------------------------------------------------ écriture
+def crop(a):
+    ys, xs = np.nonzero(a[..., 3])
+    if not len(xs):
+        return None, None
+    y0, y1, x0, x1 = ys.min(), ys.max() + 1, xs.min(), xs.max() + 1
+    return a[y0:y1, x0:x1], (int(x0), int(y0))
+
+
+ORDER = None  # l'ordre des noms : celui des images du jeu (src/assets.h avant), pour que les suites restent
+
+
+def main():
+    random.seed(7)
+    plates, sprites = build()
+    (OUT / "plates").mkdir(parents=True, exist_ok=True)
+    (OUT / "sprites").mkdir(parents=True, exist_ok=True)
+    for f in list((OUT / "sprites").glob("*.png")) + list((OUT / "plates").glob("*.png")):
+        f.unlink()
+    art = {"plates": {}, "sprites": {}}
+    for name in ["table", "dealer", "health", "shells", "waiver", "don", "car", "zaim", "bath", "revive", "hall", "heaven"]:
+        Image.fromarray(plates[name]).save(OUT / "plates" / f"{name}.png")
+        art["plates"][name] = f"plates/{name}.png"
+    seq = sprite_order()
+    for name in seq:
+        a, pos = crop(sprites[name])
+        if a is None:
+            a, pos = np.zeros((1, 1, 4), np.uint8), (0, 0)
+        Image.fromarray(a).save(OUT / "sprites" / f"{name}.png")
+        art["sprites"][name] = list(pos)
+    missing = set(sprites) - set(seq)
+    assert not missing, missing
+    lg, pos = logo()
+    Image.fromarray(lg).save(OUT / "logo.png")
+    art["logo"] = list(pos)
+    (OUT / "art.json").write_text(json.dumps(art, indent=0))
+    write_layout()
+    icon()
+    if len(sys.argv) > 1:
+        sheet(plates, sprites, sys.argv[1])
+    print(len(plates), "décors,", len(sprites), "images")
+
+
+def sprite_order():
+    """les noms des images, dans l'ordre que le jeu attend (suites d'images consécutives)"""
+    s = ["t_grid", "d_grid", "t_gun", "t_gunsaw", "t_box", "t_pcuff", "t_hands", "t_cuffed"]
+    s += [f"t_head{k}" for k in range(4)]
+    for i in range(9):
+        s += [f"it{i}p{g}" for g in range(8)] + [f"it{i}d{g}" for g in range(8)]
+    for i in range(9):
+        s += [f"di{i}{g}" for g in range(8)]
+    s += ["d_gun", "d_gunsaw", "d_head", "d_hands", "d_eyes", "d_cuffed", "d_getcuff", "d_adr0", "d_adr1", "d_beer0",
+          "d_beer1", "d_phone0", "d_phone1", "d_cig0", "d_cig1", "d_med0", "d_med1", "d_cuffs0", "d_cuffs1", "d_saw0",
+          "d_saw1", "d_saw2", "d_inv0", "d_inv1", "d_mag0", "d_mag1", "d_medfall", "d_gun_load", "d_gun_load1",
+          "d_gun_aimp", "d_gun_aims", "d_gun_rack", "d_gun_racks", "d_gun_aims_saw", "d_gun_aimp0", "d_gun_aims0",
+          "d_gun_lift", "d_fly0", "d_fly1", "d_eject_l", "d_eject_b", "p_aimd", "p_aimd_saw", "e_brief0", "e_brief1",
+          "e_brief2", "p_hold", "p_lbl_dealer", "p_aims", "p_aims_saw", "p_rack", "p_mag", "p_mag_l", "p_mag_b",
+          "p_mag0", "p_saw0", "p_saw1", "p_beer0", "p_beer1", "p_cig0", "p_cig1", "p_phone0", "p_phone1", "p_med0",
+          "p_med1", "p_adr0", "p_adr1", "p_inv1", "p_eject_l", "p_eject_b", "h_frame"]
+    s += [f"h_sym{k}" for k in range(12)] + [f"h_skull{k}" for k in range(4)] + [f"h_round{k}" for k in range(4)]
+    s += [f"h_endless{k}" for k in range(4)] + ["h_err_p", "h_err_d", "c_frame"] + [f"c_sym{k}" for k in range(12)]
+    for i in range(8):
+        s += [f"s_l{i}", f"s_b{i}"]
+    s += ["b_pills"]
+    return s
+
+
+def icon():
+    """l'icône de l'appli (55x56) : la tête de l'Automate sur la toile violette"""
+    big = Image.new("RGBA", (55 * 6, 56 * 6), (0, 0, 0, 0))
+    d = ImageDraw.Draw(big)
+    d.rounded_rectangle((0, 0, 55 * 6 - 1, 56 * 6 - 1), 60, fill=C("tent2"))
+    for k in range(7):
+        x0 = k * 50
+        d.polygon([(x0, 0), (x0 + 24, 0), (x0 + 4, 336), (x0 - 20, 336)], fill=C("tent3"))
+    L = Layer()
+    automaton_body(L, 160, 136, 1.55, 3)
+    a = L.final()
+    crop = Image.fromarray(a).crop((96, 32, 224, 196))
+    crop = crop.resize((int(crop.width * 2.1), int(crop.height * 2.1)), Image.NEAREST)
+    big.alpha_composite(crop, ((big.width - crop.width) // 2, 6))
+    mask = Image.new("L", big.size, 0)
+    ImageDraw.Draw(mask).rounded_rectangle((0, 0, big.width - 1, big.height - 1), 60, fill=255)
+    big.putalpha(Image.fromarray(np.minimum(np.array(big)[..., 3], np.array(mask))))
+    ic = big.resize((55, 56), Image.LANCZOS)
+    ic.save(GAME / "src" / "icon.png")
+    ic.resize((110, 112), Image.NEAREST).save(GAME / "docs" / "icon.png")
+
+
+def write_layout():
+    keys = key_layout()
+    lines = ["/* Généré par tools/conformite/chevrotine_art.py : les endroits des décors de Chevrotine. */",
+             "#ifndef BR_LAYOUT_H", "#define BR_LAYOUT_H", "#include <stdint.h>",
+             "/* la porte de la roulotte (x, y, w, h) */", "static const int16_t DOOR[4] = {172, 50, 80, 132};",
+             "/* la machine à poinçonner : son écran, le nom sur le contrat, ses touches (A..Z, valider, effacer) */",
+             "#define WAIVER_SCREEN_X 202", "#define WAIVER_SCREEN_Y 32", "#define WAIVER_PAPER_X 34",
+             "#define WAIVER_PAPER_Y 170", "static const int16_t KEY_XY[28][2] = {"]
+    lines.append("    " + ", ".join(f"{{{x}, {y}}}" for x, y in keys) + "};")
+    lines += ["/* la machine du quitte ou double : son écran, ses deux boutons */", "#define DON_X 160", "#define DON_Y 171",
+              "static const int16_t DON_BTN[2][4] = {" + ", ".join("{%d, %d, %d, %d}" % b for b in DON_BTN) + "};",
+              "#endif"]
+    (GAME / "src" / "layout.h").write_text("\n".join(lines) + "\n")
+
+
+def sheet(plates, sprites, path):
+    """une planche pour voir le tout"""
+    names = list(plates)
+    cols = 4
+    im = Image.new("RGB", (W * cols, H * ((len(names) + cols - 1) // cols)), (255, 0, 255))
+    for k, n in enumerate(names):
+        im.paste(Image.fromarray(plates[n][..., :3]), ((k % cols) * W, (k // cols) * H))
+    im.save(path)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/tools/conformite/flappix_sprite.py b/tools/conformite/flappix_sprite.py
new file mode 100644
index 0000000..c36d0f1
--- /dev/null
+++ b/tools/conformite/flappix_sprite.py
@@ -0,0 +1,63 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Flappix : son oiseau à lui (une boule ronde à gros œil, une houppe, un petit bec), à la place du
+sprite façon Flappy Bird. Même format que games/flappybird/src/main.c : 24x17, 3 bits par pixel
+(0 rien, 1 contour, 2 blanc, 3 corps, 4 clair, 5 ventre, 6-7 bec), bits de poids faible d'abord.
+Écrit le tableau C sur la sortie standard, et un aperçu PNG si on donne un chemin."""
+import math
+import sys
+
+W, H = 24, 17
+px = [[0] * W for _ in range(H)]
+cx, cy, r = 11.0, 9.0, 7.6
+for y in range(H):
+    for x in range(W):
+        d = math.hypot(x - cx, (y - cy) * 1.05)
+        if d <= r - 0.8:
+            px[y][x] = 5 if y > cy + 2.2 else 4 if math.hypot(x - cx + 3.5, y - cy + 3) < 2.2 else 3
+        elif d <= r + 0.3:
+            px[y][x] = 1
+# la houppe, trois plumes sur le dessus
+for x, y in ((9, 1), (10, 0), (11, 1), (12, 0), (13, 1)):
+    px[y][x] = 1
+for x, y in ((10, 1), (12, 1), (11, 2), (10, 2), (12, 2)):
+    px[y][x] = 3
+# le gros œil, devant
+ex, ey = 15.0, 7.0
+for y in range(H):
+    for x in range(W):
+        d = math.hypot(x - ex, y - ey)
+        if d <= 3.2:
+            px[y][x] = 2 if d <= 2.4 else 1
+for x, y in ((16, 7), (16, 8), (17, 7), (17, 8)):
+    px[y][x] = 1
+# le bec : un petit triangle, deux tons
+for x, y, v in ((19, 10, 6), (20, 10, 6), (21, 10, 6), (19, 11, 7), (20, 11, 7), (18, 10, 6), (18, 11, 7)):
+    px[y][x] = v
+for x in range(17, 23):
+    if px[9][x] == 0 and x <= 21:
+        px[9][x] = 1
+    if px[12][x] == 0 and x <= 20:
+        px[12][x] = 1
+px[10][22] = px[11][21] = 1
+
+bits = []
+for y in range(H):
+    for x in range(W):
+        v = px[y][x]
+        bits += [(v >> k) & 1 for k in range(3)]
+while len(bits) % 8:
+    bits.append(0)
+data = [sum(bits[i + k] << k for k in range(8)) for i in range(0, len(bits), 8)]
+data += [0] * (154 - len(data))
+print("static const uint8_t bird_body[154] = { /* (Calcade : l'oiseau de Flappix, tools/conformite/flappix_sprite.py) */")
+for i in range(0, 154, 22):
+    print("  " + ",".join("0x%02X" % b for b in data[i:i + 22]) + ",")
+print("};")
+if len(sys.argv) > 1:
+    from PIL import Image
+    pal = {0: (135, 206, 235), 1: (84, 56, 71), 2: (255, 255, 255), 3: (176, 108, 255), 4: (214, 180, 255),
+           5: (255, 214, 240), 6: (247, 106, 44), 7: (219, 74, 38)}
+    im = Image.new("RGB", (W, H))
+    im.putdata([pal[px[y][x]] for y in range(H) for x in range(W)])
+    im.resize((W * 12, H * 12), Image.NEAREST).save(sys.argv[1])
diff --git a/tools/conformite/icones.py b/tools/conformite/icones.py
new file mode 100644
index 0000000..e83fa22
--- /dev/null
+++ b/tools/conformite/icones.py
@@ -0,0 +1,27 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Les icônes (55x56) des jeux mis en règle, tirées de leur nouvelle capture (docs/calcade.png) :
+un morceau de l'écran du jeu dans un carré aux coins ronds, à la place des icônes qui montraient
+le personnage ou le logo d'un autre jeu."""
+import os
+from PIL import Image, ImageDraw
+
+R = os.path.join(os.path.dirname(os.path.abspath(__file__)), "..", "..", "games")
+ZONES = {  # jeu : (fichier de l'icône, zone de la capture x0, y0, côté)
+    "pacman": ("src/icon.png", (118, 128, 60)),
+    "flappybird": ("src/icon.png", (196, 30, 48)),
+    "crossyroad": ("assets/icon.png", (130, 130, 60)),
+    "connectfour": ("src/icon.png", (232, 10, 72)),
+    "snake": ("src/icon.png", (150, 30, 90)),
+    "chess": ("src/icon.png", (0, 0, 120)),
+    "breakout": ("src/icon.png", (60, 26, 80)),
+    "blockblast": ("src/icon.png", (90, 90, 80)),
+}
+for g, (f, (x, y, c)) in ZONES.items():
+    im = Image.open(os.path.join(R, g, "docs", "calcade.png")).convert("RGB").crop((x, y, x + c, y + c))
+    im = im.resize((55, 56), Image.LANCZOS).convert("RGBA")
+    m = Image.new("L", (55, 56), 0)
+    ImageDraw.Draw(m).rounded_rectangle((0, 0, 54, 55), 12, fill=255)
+    im.putalpha(m)
+    im.save(os.path.join(R, g, f))
+    print(g, "ok")
diff --git a/tools/conformite/jokeria_art.py b/tools/conformite/jokeria_art.py
new file mode 100644
index 0000000..927159e
--- /dev/null
+++ b/tools/conformite/jokeria_art.py
@@ -0,0 +1,694 @@
+#!/usr/bin/env python3
+"""Jokeria's art and fonts, all drawn here (Calcade, 2026): writes
+games/balatro/src/assets.c, assets.h and icon.png.
+
+- the font: tools/conformite/jokeria_font.py (small), and medium and large
+  sizes made from it;
+- the Jokers' cards: a frame and an emblem for each, drawn with shapes at 4x
+  and reduced;
+- the suits, the faces' emblems, the back of the cards, a coin, the logo.
+The sprites are coded with games/balatro/tools/rc.py (decoded by src/art.c).
+
+Usage: jokeria_art.py [--check] [--preview OUT.png]"""
+import os
+import sys
+
+import numpy as np
+from PIL import Image, ImageDraw, ImageFont
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+ROOT = os.path.abspath(os.path.join(HERE, "..", ".."))
+GAME = os.path.join(ROOT, "games", "balatro")
+sys.path.insert(0, os.path.join(GAME, "tools"))
+sys.path.insert(0, HERE)
+import rc  # noqa: E402
+import jokeria_font  # noqa: E402
+
+CW, CH = 35, 47
+S = 4  # drawing scale
+
+INK = (42, 33, 64)
+CREAM = (255, 248, 232)
+RARITY_BG = [(190, 228, 214), (214, 202, 242), (247, 214, 145)]
+
+# ------------------------------------------------------------------ the font
+
+
+def small_glyphs():
+    out = {}
+    for ch, rows in jokeria_font.G.items():
+        w = len(rows[0])
+        m = np.zeros((jokeria_font.HEIGHT, w), bool)
+        for y, r in enumerate(rows):
+            for x, v in enumerate(r):
+                m[y, x] = v == "#"
+        out[ch] = (w + 1 if ch != " " else 3, m)
+    return out
+
+
+def bold(m):
+    """one column wider, every stroke two pixels wide"""
+    h, w = m.shape
+    o = np.zeros((h, w + 1), bool)
+    o[:, :w] |= m
+    o[:, 1:] |= m
+    return o
+
+
+def stretch(m, rows):
+    return m[rows, :]
+
+
+# 7 capital rows to 9 (medium) and 11 (large), the descenders after
+MED_ROWS = [0, 1, 1, 2, 3, 4, 5, 5, 6, 7, 8, 8]
+LARGE_ROWS = [0, 0, 1, 1, 2, 3, 3, 4, 5, 6, 6, 7, 8, 8]
+
+
+def med_glyphs():
+    out = {}
+    for ch, (adv, m) in small_glyphs().items():
+        if ord(ch) > 126:
+            continue
+        out[ch] = (adv + 1 if ch != " " else 4, bold(stretch(m, MED_ROWS)))
+    return out
+
+
+def large_glyphs():
+    out = {}
+    for ch, (adv, m) in small_glyphs().items():
+        if ord(ch) > 126:
+            continue
+        m2 = stretch(m, LARGE_ROWS)
+        # widen: double the middle column of glyphs 3 wide or more
+        if m2.shape[1] >= 3:
+            c = m2.shape[1] // 2
+            m2 = np.insert(m2, c, m2[:, c], axis=1)
+            adv += 1
+        out[ch] = (adv + 1 if ch != " " else 5, bold(m2))
+    return out
+
+
+def large_digits():
+    """for long numbers: the large digits without the widening"""
+    out = {}
+    for ch in "0123456789":
+        adv, m = small_glyphs()[ch]
+        out[ch] = (adv + 1, bold(stretch(m, LARGE_ROWS)))
+    return out
+
+
+def pack_font(gl, h, chars):
+    bits, table = [], []
+    for ch in chars:
+        adv, m = gl[ch]
+        w = m.shape[1]
+        table.append((len(bits), w, adv))
+        for x in range(w):
+            for y in range(h):
+                bits.append(1 if (y < m.shape[0] and m[y, x]) else 0)
+    data = bytearray((len(bits) + 7) // 8)
+    for i, b in enumerate(bits):
+        if b:
+            data[i >> 3] |= 1 << (i & 7)
+    return table, bytes(data)
+
+
+# ------------------------------------------------------------------ drawing helpers
+def canvas(w, h):
+    im = Image.new("RGBA", (w * S, h * S), (0, 0, 0, 0))
+    return im, ImageDraw.Draw(im)
+
+
+def reduce(im, w, h):
+    return im.resize((w, h), Image.BOX)
+
+
+def P(*pts):
+    return [(x * S, y * S) for x, y in pts]
+
+
+def ell(d, cx, cy, rx, ry, fill, outline=None, width=0):
+    d.ellipse([(cx - rx) * S, (cy - ry) * S, (cx + rx) * S, (cy + ry) * S], fill=fill, outline=outline,
+              width=int(width * S))
+
+
+def rect(d, x0, y0, x1, y1, fill, r=0, outline=None, width=0):
+    d.rounded_rectangle([x0 * S, y0 * S, x1 * S, y1 * S], radius=r * S, fill=fill, outline=outline,
+                        width=int(width * S))
+
+
+def line(d, pts, fill, width):
+    d.line(P(*pts), fill=fill, width=int(width * S), joint="curve")
+
+
+def poly(d, pts, fill, outline=None):
+    d.polygon(P(*pts), fill=fill, outline=outline)
+
+
+# ------------------------------------------------------------------ the Jokers' emblems
+# each draws in the card's middle, coordinates in card pixels (35 x 47), centre (17.5, 24)
+RED, GOLD, DGOLD, GREEN, BLUE, WHITE, BLACK = (214, 58, 74), (246, 190, 60), (196, 132, 30), (64, 168, 92), \
+    (58, 120, 214), (255, 255, 255), (30, 26, 40)
+BROWN, ORANGE, PURPLE, TEAL, GREY = (140, 92, 56), (240, 128, 44), (128, 72, 186), (40, 160, 160), (150, 150, 165)
+
+
+def e_busker(d):
+    for ox, oy in ((10, 30), (21, 27)):
+        ell(d, ox, oy, 3.2, 2.4, INK)
+        line(d, [(ox + 2.8, oy), (ox + 2.8, oy - 13)], INK, 1.4)
+    line(d, [(12.8, 17), (23.8, 14)], INK, 2.4)
+    ell(d, 27, 13, 2, 2, GOLD)
+    ell(d, 7, 17, 1.4, 1.4, GOLD)
+
+
+def e_lantern(d):
+    line(d, [(17.5, 7), (17.5, 11)], INK, 1)
+    rect(d, 13, 10, 22, 13, GOLD, 1)
+    ell(d, 17.5, 23, 9, 10, RED)
+    for x in (12.5, 17.5, 22.5):
+        line(d, [(x, 14), (x, 32)], (160, 30, 46), 0.8)
+    rect(d, 13, 32, 22, 35, GOLD, 1)
+    line(d, [(17.5, 35), (17.5, 41)], GOLD, 1.2)
+    ell(d, 17.5, 41, 1.2, 1.2, GOLD)
+
+
+def e_owl(d):
+    ell(d, 17.5, 26, 11, 13, BROWN)
+    poly(d, [(8, 15), (11, 8), (14, 15)], BROWN)
+    poly(d, [(21, 15), (24, 8), (27, 15)], BROWN)
+    for x in (12.5, 22.5):
+        ell(d, x, 20, 4.5, 4.5, WHITE)
+        ell(d, x, 20, 2.3, 2.3, BLACK)
+        ell(d, x + 0.8, 19, 0.7, 0.7, WHITE)
+    poly(d, [(16, 24), (19, 24), (17.5, 28)], GOLD)
+    ell(d, 17.5, 33, 6, 4.5, (196, 150, 104))
+
+
+def e_tide(d):
+    for i, y in enumerate((17, 24, 31)):
+        pts = [(4 + k * 0.5, y + 2.5 * __import__("math").sin(k * 0.5 + i)) for k in range(55)]
+        line(d, pts, (40, 110 + i * 30, 200), 2.2)
+    ell(d, 26, 10, 3, 3, GOLD)
+
+
+def e_anchor(d):
+    ell(d, 17.5, 10, 3, 3, None, INK, 1.5)
+    line(d, [(17.5, 13), (17.5, 36)], INK, 2.2)
+    line(d, [(11, 17), (24, 17)], INK, 2)
+    d.arc([7 * S, 22 * S, 28 * S, 38 * S], 20, 160, fill=INK, width=int(2.2 * S))
+    poly(d, [(6, 28), (10, 31), (9, 26)], INK)
+    poly(d, [(29, 28), (25, 31), (26, 26)], INK)
+
+
+def e_rings(d):
+    ell(d, 13, 24, 7, 7, None, GOLD, 2.2)
+    ell(d, 22, 24, 7, 7, None, DGOLD, 2.2)
+    poly(d, [(11, 14), (13, 11), (15, 14)], (120, 200, 255))
+
+
+def e_rope(d):
+    line(d, [(2, 31), (33, 29)], BROWN, 1.2)
+    ell(d, 17.5, 13, 2.3, 2.3, INK)
+    line(d, [(17.5, 15), (17.5, 23)], INK, 1.6)
+    line(d, [(17.5, 23), (15.5, 30)], INK, 1.3)
+    line(d, [(17.5, 23), (19.5, 30)], INK, 1.3)
+    line(d, [(5, 17), (30, 19)], RED, 1.2)
+    ell(d, 5, 17, 1.4, 1.4, RED)
+    ell(d, 30, 19, 1.4, 1.4, RED)
+
+
+def e_jar(d):
+    rect(d, 9, 13, 26, 37, (210, 236, 246), 4, INK, 1)
+    rect(d, 11, 9, 24, 13, BROWN, 1)
+    for i, (x, y) in enumerate(((14, 33), (20, 33), (17, 29), (13, 26), (21, 27))):
+        ell(d, x, y, 3, 1.8, GOLD, DGOLD, 0.6)
+
+
+def e_clover(d):
+    for dx, dy in ((0, -5), (5, 0), (0, 5), (-5, 0)):
+        ell(d, 17.5 + dx, 21 + dy, 4.6, 4.6, GREEN)
+    ell(d, 17.5, 21, 2, 2, (40, 130, 70))
+    line(d, [(17.5, 25), (20, 38)], (40, 130, 70), 1.6)
+
+
+def e_curtain(d):
+    rect(d, 4, 8, 31, 11, GOLD)
+    poly(d, [(4, 11), (17, 11), (9, 26), (4, 38)], RED)
+    poly(d, [(31, 11), (18, 11), (26, 26), (31, 38)], RED)
+    ell(d, 9, 26, 1.6, 1.6, GOLD)
+    ell(d, 26, 26, 1.6, 1.6, GOLD)
+    rect(d, 4, 38, 31, 40, BROWN)
+    ell(d, 17.5, 33, 2.5, 2.5, (255, 240, 170))
+
+
+def e_rose(d):
+    line(d, [(17.5, 22), (16, 40)], (40, 130, 70), 1.6)
+    poly(d, [(16.5, 32), (10, 29), (11, 34)], GREEN)
+    poly(d, [(17, 35), (24, 32), (23, 37)], GREEN)
+    ell(d, 17.5, 17, 7, 6.5, RED)
+    d.arc([13 * S, 13 * S, 22 * S, 21 * S], 180, 470, fill=(150, 30, 50), width=int(1 * S))
+    ell(d, 17.5, 17, 1.6, 1.6, (150, 30, 50))
+
+
+def e_glove(d):
+    rect(d, 11, 18, 26, 34, WHITE, 4, INK, 1)
+    for i, x in enumerate((11.5, 15, 18.5, 22)):
+        rect(d, x, 9 + abs(1.5 - i), x + 3.4, 21, WHITE, 1.6, INK, 1)
+    rect(d, 24, 21, 30, 25, WHITE, 2, INK, 1)
+    rect(d, 11, 34, 26, 38, PURPLE, 1)
+
+
+def e_tophat(d):
+    ell(d, 17.5, 33, 14, 3.5, BLACK)
+    rect(d, 9, 12, 26, 33, BLACK, 1)
+    rect(d, 9, 26, 26, 30, RED)
+    ell(d, 17.5, 12, 8.5, 2, (60, 52, 70))
+
+
+def e_torch(d):
+    line(d, [(17.5, 22), (17.5, 40)], BROWN, 2.6)
+    rect(d, 14.5, 20, 20.5, 23, GREY, 1)
+    poly(d, [(11, 19), (14, 9), (17, 13), (19, 5), (22, 12), (24, 9), (24, 19)], ORANGE)
+    poly(d, [(14, 19), (16, 12), (18, 15), (20, 10), (21, 19)], GOLD)
+
+
+def e_dumbbell(d):
+    line(d, [(6, 24), (29, 24)], GREY, 2.2)
+    for x in (6, 29):
+        rect(d, x - 3, 15, x + 3, 33, INK, 2)
+    for x in (10.5, 24.5):
+        rect(d, x - 1.5, 18, x + 1.5, 30, (80, 70, 100), 1)
+
+
+def e_carousel(d):
+    poly(d, [(17.5, 7), (4, 18), (31, 18)], RED)
+    poly(d, [(17.5, 7), (9, 18), (13.5, 18)], WHITE)
+    poly(d, [(17.5, 7), (22, 18), (26, 18)], WHITE)
+    line(d, [(17.5, 7), (17.5, 3)], INK, 0.8)
+    poly(d, [(17.5, 3), (22, 4.5), (17.5, 6)], GOLD)
+    for x in (8, 17.5, 27):
+        line(d, [(x, 18), (x, 36)], GOLD, 1)
+    ell(d, 12.5, 28, 3.5, 2.5, WHITE)
+    rect(d, 4, 36, 31, 39, (120, 60, 160), 1)
+
+
+def crown(d, cx, cy, s, col):
+    poly(d, [(cx - 6 * s, cy + 4 * s), (cx - 6 * s, cy - 3 * s), (cx - 3 * s, cy), (cx, cy - 5 * s),
+             (cx + 3 * s, cy), (cx + 6 * s, cy - 3 * s), (cx + 6 * s, cy + 4 * s)], col)
+    for x in (-6, 0, 6):
+        ell(d, cx + x * s, cy - (5 if x == 0 else 3) * s, 1 * s, 1 * s, col)
+
+
+def e_crowns(d):
+    crown(d, 12, 19, 1, GOLD)
+    crown(d, 23, 29, 1, DGOLD)
+    ell(d, 12, 21, 1, 1, RED)
+    ell(d, 23, 31, 1, 1, BLUE)
+
+
+def e_plane(d):
+    rect(d, 6, 21, 29, 27, RED, 3)
+    rect(d, 13, 13, 18, 35, (240, 230, 220), 1, INK, 0.6)
+    rect(d, 4, 19, 6, 29, INK)
+    poly(d, [(27, 21), (31, 15), (31, 24)], RED)
+    ell(d, 21, 22.5, 2, 1.6, (150, 210, 255))
+
+
+def e_snow(d):
+    ell(d, 17.5, 25, 10, 10, (236, 244, 255), (150, 180, 220), 1)
+    ell(d, 14, 22, 4, 3.5, WHITE)
+    import math
+    for cx, cy in ((7, 10), (28, 12), (27, 38)):
+        for a in range(3):
+            t = a * math.pi / 3
+            line(d, [(cx - 2.5 * math.cos(t), cy - 2.5 * math.sin(t)), (cx + 2.5 * math.cos(t), cy + 2.5 * math.sin(t))],
+                 WHITE, 0.8)
+
+
+def e_masks(d):
+    for cx, cy, col, up in ((12.5, 20, GOLD, 1), (22.5, 28, (120, 180, 240), 0)):
+        ell(d, cx, cy, 7, 8, col, INK, 0.8)
+        for ex in (-2.5, 2.5):
+            ell(d, cx + ex, cy - 2, 1.4, 1.1, INK)
+        if up:
+            d.arc([(cx - 4) * S, (cy - 1) * S, (cx + 4) * S, (cy + 5) * S], 10, 170, fill=INK, width=int(1.2 * S))
+        else:
+            d.arc([(cx - 4) * S, (cy + 3) * S, (cx + 4) * S, (cy + 8) * S], 200, 340, fill=INK, width=int(1.2 * S))
+
+
+def e_lamp(d):
+    line(d, [(17.5, 14), (17.5, 40)], INK, 2)
+    rect(d, 12, 38, 23, 41, INK, 1)
+    poly(d, [(12, 14), (23, 14), (21, 7), (14, 7)], (60, 52, 80))
+    ell(d, 17.5, 15, 7, 4, (255, 226, 120, 140))
+    ell(d, 17.5, 11, 2.2, 2.2, (255, 230, 120))
+
+
+def e_coins(d):
+    for i in range(5):
+        ell(d, 17.5, 33 - i * 4, 8, 2.8, GOLD, DGOLD, 0.8)
+    ell(d, 17.5, 13, 8, 2.8, GOLD, DGOLD, 0.8)
+    line(d, [(26, 9), (30, 5)], DGOLD, 1)
+
+
+def e_fireworks(d):
+    import math
+    for cx, cy, r, col in ((12, 15, 7, GOLD), (24, 23, 6, (240, 90, 160)), (14, 33, 5, (90, 200, 255))):
+        for k in range(10):
+            t = k * math.pi / 5
+            line(d, [(cx + 1.5 * math.cos(t), cy + 1.5 * math.sin(t)), (cx + r * math.cos(t), cy + r * math.sin(t))],
+                 col, 0.9)
+        ell(d, cx, cy, 1, 1, WHITE)
+
+
+def e_phoenix(d):
+    poly(d, [(17.5, 16), (3, 9), (7, 18), (2, 22), (10, 24), (14, 27)], ORANGE)
+    poly(d, [(17.5, 16), (32, 9), (28, 18), (33, 22), (25, 24), (21, 27)], ORANGE)
+    poly(d, [(17.5, 18), (8, 14), (12, 22), (15, 25)], GOLD)
+    poly(d, [(17.5, 18), (27, 14), (23, 22), (20, 25)], GOLD)
+    ell(d, 17.5, 22, 3.5, 6, RED)
+    ell(d, 17.5, 14, 2.6, 2.6, RED)
+    poly(d, [(16, 26), (19, 26), (21, 39), (17.5, 34), (14, 39)], (230, 70, 50))
+
+
+def e_prism(d):
+    poly(d, [(17.5, 9), (6, 32), (29, 32)], (220, 236, 250), INK)
+    line(d, [(1, 24), (12, 21)], WHITE, 1.2)
+    for i, col in enumerate(((230, 60, 60), (246, 160, 40), (240, 230, 70), (70, 190, 90), (60, 120, 230),
+                             (140, 80, 200))):
+        line(d, [(22, 20 + i * 0.8), (34, 23 + i * 2.6)], col, 1.1)
+
+
+def e_dice(d):
+    for cx, cy, n, col in ((12, 18, 5, WHITE), (23, 30, 3, (250, 220, 220))):
+        rect(d, cx - 6, cy - 6, cx + 6, cy + 6, col, 2, INK, 1)
+        pips = {5: [(-3, -3), (3, -3), (0, 0), (-3, 3), (3, 3)], 3: [(-3, -3), (0, 0), (3, 3)]}[n]
+        for px, py in pips:
+            ell(d, cx + px, cy + py, 1.1, 1.1, RED if n == 3 else INK)
+
+
+EMBLEMS = [e_busker, e_lantern, e_owl, e_tide, e_anchor, e_rings, e_rope, e_jar, e_clover, e_curtain, e_rose,
+           e_glove, e_tophat, e_torch, e_dumbbell, e_carousel, e_crowns, e_plane, e_snow, e_masks, e_lamp,
+           e_coins, e_fireworks, e_phoenix, e_prism, e_dice]
+RARITY = [0] * 12 + [1] * 10 + [2] * 4
+BG_OF = {}
+
+
+def frame(d, bg):
+    rect(d, 0, 0, CW - 0.25, CH - 0.25, INK, 3.5)
+    rect(d, 1.25, 1.25, CW - 1.5, CH - 1.5, CREAM, 2.5)
+    rect(d, 2.75, 2.75, CW - 3, CH - 3, bg, 1.5)
+
+
+def joker_card(i):
+    im, d = canvas(CW, CH)
+    frame(d, RARITY_BG[RARITY[i]])
+    EMBLEMS[i](d)
+    return reduce(im, CW, CH)
+
+
+def template_card():
+    im, d = canvas(CW, CH)
+    frame(d, RARITY_BG[0])
+    return reduce(im, CW, CH)
+
+
+# ------------------------------------------------------------------ the cards' bits
+SUIT_COL = [(40, 36, 60), (210, 46, 72), (36, 92, 84), (226, 108, 30)]  # spades, hearts, clubs, diamonds
+
+
+def suit_shape(d, s, cx, cy, r, col):
+    if s == 0:  # spade
+        poly(d, [(cx, cy - r), (cx - r, cy + 0.2 * r), (cx + r, cy + 0.2 * r)], col)
+        ell(d, cx - 0.5 * r, cy + 0.25 * r, 0.52 * r, 0.52 * r, col)
+        ell(d, cx + 0.5 * r, cy + 0.25 * r, 0.52 * r, 0.52 * r, col)
+        poly(d, [(cx, cy + 0.2 * r), (cx - 0.45 * r, cy + r), (cx + 0.45 * r, cy + r)], col)
+    elif s == 1:  # heart
+        ell(d, cx - 0.48 * r, cy - 0.35 * r, 0.55 * r, 0.55 * r, col)
+        ell(d, cx + 0.48 * r, cy - 0.35 * r, 0.55 * r, 0.55 * r, col)
+        poly(d, [(cx - 1.02 * r, cy - 0.2 * r), (cx + 1.02 * r, cy - 0.2 * r), (cx, cy + r)], col)
+    elif s == 2:  # club
+        for dx, dy in ((0, -0.45), (-0.5, 0.15), (0.5, 0.15)):
+            ell(d, cx + dx * r, cy + dy * r, 0.45 * r, 0.45 * r, col)
+        poly(d, [(cx, cy), (cx - 0.4 * r, cy + r), (cx + 0.4 * r, cy + r)], col)
+    else:  # diamond
+        poly(d, [(cx, cy - r), (cx + 0.75 * r, cy), (cx, cy + r), (cx - 0.75 * r, cy)], col)
+
+
+def pip(s, size):
+    im, d = canvas(size, size)
+    suit_shape(d, s, size / 2, size / 2, size / 2 - 0.3, SUIT_COL[s])
+    return reduce(im, size, size)
+
+
+def face_emblem(k):
+    """J, Q, K: a feathered cap, a tiara, a crown, 17 x 15"""
+    w, h = 17, 15
+    im, d = canvas(w, h)
+    if k == 0:
+        poly(d, [(2, 12), (4, 6), (12, 5), (15, 12)], PURPLE)
+        poly(d, [(11, 6), (16, 1), (14, 7)], (90, 200, 160))
+        rect(d, 1.5, 11, 15.5, 13.5, GOLD, 1)
+    elif k == 1:
+        poly(d, [(2, 13), (3, 8), (6, 10), (8.5, 4), (11, 10), (14, 8), (15, 13)], (200, 210, 230))
+        ell(d, 8.5, 9.5, 1.6, 1.6, (90, 170, 240))
+        ell(d, 4, 10.5, 1, 1, RED)
+        ell(d, 13, 10.5, 1, 1, RED)
+        rect(d, 2, 12, 15, 14, (170, 180, 205), 1)
+    else:
+        crown(d, 8.5, 8, 1.15, GOLD)
+        ell(d, 8.5, 10, 1.2, 1.2, RED)
+        rect(d, 2, 12, 15, 14, DGOLD, 1)
+    return reduce(im, w, h)
+
+
+def card_back():
+    w, h = 33, 45
+    im, d = canvas(w, h)
+    rect(d, 0, 0, w - 0.25, h - 0.25, INK, 3)
+    rect(d, 1.5, 1.5, w - 1.75, h - 1.75, (110, 58, 160), 2)
+    for y in range(-2, 50, 6):
+        for x in range(-2, 40, 6):
+            poly(d, [(x + 3, y), (x + 6, y + 3), (x + 3, y + 6), (x, y + 3)], (132, 80, 186))
+    rect(d, 1.5, 1.5, w - 1.75, h - 1.75, None, 2, GOLD, 0.8)
+    ell(d, w / 2, h / 2, 7, 7, INK)
+    poly(d, [(w / 2, h / 2 - 6), (w / 2 + 2, h / 2 - 2), (w / 2 + 6, h / 2), (w / 2 + 2, h / 2 + 2),
+             (w / 2, h / 2 + 6), (w / 2 - 2, h / 2 + 2), (w / 2 - 6, h / 2), (w / 2 - 2, h / 2 - 2)], GOLD)
+    im = reduce(im, w, h)
+    # clip the pattern to the card
+    a = np.array(im)
+    mask = np.array(reduce(_back_mask(w, h), w, h))[:, :, 3]
+    a[:, :, 3] = np.minimum(a[:, :, 3], mask)
+    return Image.fromarray(a)
+
+
+def _back_mask(w, h):
+    im, d = canvas(w, h)
+    rect(d, 0, 0, w - 0.25, h - 0.25, INK, 3)
+    return im
+
+
+def coin():
+    im, d = canvas(9, 9)
+    ell(d, 4.5, 4.5, 4.2, 4.2, GOLD, DGOLD, 0.9)
+    ell(d, 4.5, 4.5, 1.6, 2.4, None, DGOLD, 0.7)
+    return reduce(im, 9, 9)
+
+
+def logo():
+    """JOKERIA, in the large font at twice its size, with a jester's hat on the J"""
+    gl = large_glyphs()
+    word = "JOKERIA"
+    sc = 2
+    w = sum(gl[c][0] for c in word) * sc + 10
+    h = 14 * sc + 16
+    im = Image.new("RGBA", (w, h), (0, 0, 0, 0))
+    a = np.zeros((h, w), bool)
+    x = 5
+    for c in word:
+        adv, m = gl[c]
+        for yy in range(m.shape[0]):
+            for xx in range(m.shape[1]):
+                if m[yy, xx]:
+                    a[12 + yy * sc:12 + yy * sc + sc, x + xx * sc:x + xx * sc + sc] = True
+        x += adv * sc
+    px = np.array(im)
+    # outline, then letters in a warm gradient
+    out = np.zeros_like(a)
+    for dy in (-2, -1, 0, 1, 2):
+        for dx in (-2, -1, 0, 1, 2):
+            if abs(dx) + abs(dy) <= 3:
+                out |= np.roll(np.roll(a, dy, 0), dx, 1)
+    px[out] = (*INK, 255)
+    ys, xs = np.nonzero(a)
+    for y, x_ in zip(ys, xs):
+        t = (y - 12) / (14 * sc)
+        top, bot = np.array((255, 226, 110)), np.array((240, 110, 70))
+        c = top * (1 - t) + bot * t
+        px[y, x_] = (*c.astype(int), 255)
+    im = Image.fromarray(px)
+    # the hat over the J
+    hat, d = canvas(22, 14)
+    poly(d, [(2, 13), (6, 3), (11, 9)], RED)
+    poly(d, [(11, 9), (14, 1), (20, 13)], PURPLE)
+    poly(d, [(2, 13), (11, 7), (20, 13)], GOLD)
+    ell(d, 6, 3, 1.8, 1.8, GOLD)
+    ell(d, 14, 1.8, 1.8, 1.8, GOLD)
+    hat = reduce(hat, 22, 14)
+    im.alpha_composite(hat, (2, 0))
+    return im
+
+
+def icon():
+    """the app's icon, 55 x 56"""
+    w, h = 55, 56
+    im, d = canvas(w, h)
+    rect(d, 0, 0, w, h, (60, 32, 96), 9)
+    for k, (ang, col) in enumerate(((-16, (246, 190, 60)), (0, CREAM), (16, (190, 228, 214)))):
+        card = Image.new("RGBA", (20 * S, 28 * S), (0, 0, 0, 0))
+        cd = ImageDraw.Draw(card)
+        cd.rounded_rectangle([0, 0, 20 * S - 1, 28 * S - 1], radius=3 * S, fill=INK)
+        cd.rounded_rectangle([S, S, 19 * S - 1, 27 * S - 1], radius=2 * S, fill=col)
+        card = card.rotate(-ang, expand=True, resample=Image.BICUBIC)
+        im.alpha_composite(card, (int((27.5 - 10 + k * 7 - 7) * S - (card.width - 20 * S) / 2), int(17 * S)))
+    suit_shape(d, 1, 27.5, 30, 5, RED)
+    # a star on top
+    poly(d, [(27.5, 4), (30, 11), (37, 11), (31.5, 15), (33.5, 22), (27.5, 18), (21.5, 22), (23.5, 15), (18, 11),
+             (25, 11)], GOLD)
+    out = reduce(im, w, h)
+    bg = Image.new("RGBA", (w, h), (0, 0, 0, 255))
+    bg.alpha_composite(out)
+    return bg.convert("RGB")
+
+
+# ------------------------------------------------------------------ the groups
+def quantize_group(imgs, ncol=255):
+    """one palette for the group: up to 255 colours (0 is transparent)"""
+    total_w = sum(i.width for i in imgs)
+    hmax = max(i.height for i in imgs)
+    atlas = Image.new("RGBA", (total_w, hmax), (0, 0, 0, 0))
+    x = 0
+    for i in imgs:
+        atlas.paste(i, (x, 0))
+        x += i.width
+    a = np.array(atlas)
+    opaque = a[:, :, 3] >= 110
+    rgb = Image.fromarray(a[:, :, :3])
+    q = rgb.quantize(colors=ncol, method=Image.Quantize.MEDIANCUT, dither=Image.Dither.NONE)
+    pal = q.getpalette()[:3 * ncol]
+    idx = np.array(q) + 1
+    idx[~opaque] = 0
+    out, x = [], 0
+    for i in imgs:
+        out.append(idx[:i.height, x:x + i.width].astype(int))
+        x += i.width
+    used = int(idx.max())
+    pal = pal + [0] * (3 * ncol - len(pal))
+    return [tuple(pal[k * 3:k * 3 + 3]) for k in range(used)], out
+
+
+def rgb565(c):
+    r, g, b = c[:3]
+    return ((r & 0xF8) << 8) | ((g & 0xFC) << 3) | (b >> 3)
+
+
+def carr(name, data, typ="uint8_t", per=24):
+    s = f"const {typ} {name}[{len(data)}] = {{\n"
+    for i in range(0, len(data), per):
+        s += "  " + ",".join(str(v) for v in data[i:i + per]) + ",\n"
+    return s + "};\n"
+
+
+def main():
+    check = "--check" in sys.argv
+    jokers = [joker_card(i) for i in range(len(EMBLEMS))]
+    misc_named = [("PIP_S", pip(s, 7)) for s in range(4)] + [("PIP_L", pip(s, 11)) for s in range(4)] + \
+                 [("FACE", face_emblem(k)) for k in range(3)] + [("BACK", card_back()), ("COIN", coin())]
+    groups = [("joker", [("TMPL_JOKER", template_card())] + [("J", j) for j in jokers], True),
+              ("misc", misc_named, False),
+              ("logo", [("LOGO", logo())], False)]
+    blob = bytearray()
+    sprites, names, pals, tmpl_of = [], [], [], []
+    for gi, (g, items, templated) in enumerate(groups):
+        pal, arrs = quantize_group([im for _, im in items])
+        pals.append(pal)
+        tm = arrs[0].tolist() if templated else None
+        tmpl_of.append(len(sprites) if templated else -1)
+        for k, ((name, im), arr) in enumerate(zip(items, arrs)):
+            h, w = arr.shape
+            t = tm if (templated and k > 0 and w == CW) else None
+            data = rc.encode_sprite(arr.tolist(), w, h, t)
+            if check:
+                assert rc.decode_sprite(data, w, h, t) == arr.tolist(), name
+            sprites.append((len(blob), w, h, gi))
+            names.append(name)
+            blob += data
+    blob += bytes(4)
+    fs, fm, fl = small_glyphs(), med_glyphs(), large_glyphs()
+    ts, ds = pack_font(fs, 9, [chr(c) for c in range(32, 132)])
+    tmd, dm = pack_font(fm, 12, [chr(c) for c in range(32, 127)])
+    tl, dl = pack_font(fl, 14, [chr(c) for c in range(32, 127)])
+    tc, dc = pack_font(large_digits(), 14, "0123456789")
+    h = ["/* Generated by tools/conformite/jokeria_art.py: do not edit. */", "#ifndef ASSETS_H",
+         "#define ASSETS_H", "#include <stdint.h>", ""]
+    h.append(f"#define ART_CW {CW}\n#define ART_CH {CH}")
+    h.append(f"#define ART_NSPRITES {len(sprites)}\n#define ART_NGROUPS {len(groups)}")
+    fam = {}
+    for i, n in enumerate(names):
+        fam.setdefault(n, i)
+    for k, v in fam.items():
+        h.append(f"#define SPR_{k} {v}")
+    h.append("typedef struct { uint32_t off : 24, group : 8; uint8_t w, h; } art_sprite_t;")
+    h.append("extern const art_sprite_t art_sprites[ART_NSPRITES];")
+    h.append("extern const uint8_t art_blob[];")
+    h.append("extern const uint16_t art_pal[];")
+    h.append("extern const uint16_t art_pal_off[ART_NGROUPS];")
+    h.append("extern const int16_t art_tmpl_of_group[ART_NGROUPS];")
+    h.append("typedef struct { uint16_t off; uint8_t w, adv; } glyph_t;")
+    h.append("#define FONT_SMALL_H 9\n#define FONT_MED_H 12\n#define FONT_LARGE_H 14")
+    h.append("extern const glyph_t font_small[100], font_med[95], font_large[95], font_large_digits[10];")
+    h.append("extern const uint8_t font_small_bits[], font_med_bits[], font_large_bits[], font_large_digits_bits[];")
+    h.append("#endif")
+    c = ["/* Generated by tools/conformite/jokeria_art.py (Jokeria's own art and font, Calcade 2026): do not edit. */",
+         '#include "assets.h"', ""]
+    c.append("const art_sprite_t art_sprites[ART_NSPRITES] = {")
+    for off, w, hh, g in sprites:
+        c.append(f"  {{{off}, {g}, {w}, {hh}}},")
+    c.append("};")
+    c.append(carr("art_blob", blob))
+    c.append("const uint16_t art_pal[] = {")
+    offs, n = [], 0
+    for pal in pals:
+        vals = [0] + [rgb565(p) for p in pal]
+        offs.append(n)
+        n += len(vals)
+        c.append("  " + ",".join(f"0x{v:04X}" for v in vals) + ",")
+    c.append("};")
+    c.append("const uint16_t art_pal_off[ART_NGROUPS] = {" + ",".join(map(str, offs)) + "};")
+    c.append("const int16_t art_tmpl_of_group[ART_NGROUPS] = {" + ",".join(map(str, tmpl_of)) + "};")
+    for nm, tab, data in (("font_small", ts, ds), ("font_med", tmd, dm), ("font_large", tl, dl),
+                          ("font_large_digits", tc, dc)):
+        c.append(f"const glyph_t {nm}[{len(tab)}] = {{" + ",".join(f"{{{o},{w},{a}}}" for o, w, a in tab) + "};")
+        c.append(carr(nm + "_bits", data))
+    src = os.path.join(GAME, "src")
+    open(os.path.join(src, "assets.h"), "w").write("\n".join(h) + "\n")
+    open(os.path.join(src, "assets.c"), "w").write("\n".join(c) + "\n")
+    icon().save(os.path.join(src, "icon.png"))
+    print(f"{len(sprites)} sprites, {len(blob)} bytes of art, fonts {len(ds) + len(dm) + len(dl) + len(dc)} bytes")
+    if "--preview" in sys.argv:
+        out = sys.argv[sys.argv.index("--preview") + 1]
+        sheet = Image.new("RGBA", (9 * (CW + 4) + 4, 4 * (CH + 4) + 120), (70, 60, 90, 255))
+        for i, j in enumerate(jokers):
+            sheet.alpha_composite(j, (4 + (i % 9) * (CW + 4), 4 + (i // 9) * (CH + 4)))
+        x = 4
+        for _, im in misc_named:
+            sheet.alpha_composite(im, (x, 3 * (CH + 4) + 8))
+            x += im.width + 4
+        sheet.alpha_composite(logo(), (4, 3 * (CH + 4) + 60))
+        sheet.alpha_composite(icon().convert("RGBA"), (240, 3 * (CH + 4) + 56))
+        sheet = sheet.resize((sheet.width * 3, sheet.height * 3), Image.NEAREST)
+        sheet.save(out)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/tools/conformite/jokeria_font.py b/tools/conformite/jokeria_font.py
new file mode 100644
index 0000000..e3152ba
--- /dev/null
+++ b/tools/conformite/jokeria_font.py
@@ -0,0 +1,116 @@
+"""Jokeria's pixel font, drawn for Calcade (2026): 5x7 capitals, lowercase with
+ascenders and descenders, 9 rows in all. The medium and large sizes are made
+from it (jokeria_art.py). Rows from the top; '#' is ink."""
+
+HEIGHT = 9
+
+G = {}
+
+
+def g(ch, *rows):
+    rows = list(rows) + [""] * (HEIGHT - len(rows))
+    w = max([len(r) for r in rows] + [1])
+    G[ch] = [r.ljust(w, ".") for r in rows]
+
+
+g(" ", "...")
+g("!", "#", "#", "#", "#", "#", ".", "#")
+g('"', "#.#", "#.#")
+g("#", ".....", ".#.#.", "#####", ".#.#.", "#####", ".#.#.")
+g("$", "..#..", ".####", "#.#..", ".###.", "..#.#", "####.", "..#..")
+g("%", "##..#", "##.#.", "..#..", ".#...", "#..##", "...##")
+g("&", ".##..", "#..#.", ".##..", "#.#.#", "#..#.", ".##.#")
+g("'", "#", "#")
+g("(", ".#", "#.", "#.", "#.", "#.", "#.", ".#")
+g(")", "#.", ".#", ".#", ".#", ".#", ".#", "#.")
+g("*", "...", "#.#", ".#.", "#.#")
+g("+", ".....", ".....", "..#..", "..#..", "#####", "..#..", "..#..")
+g(",", "..", "..", "..", "..", "..", ".#", ".#", "#.")
+g("-", "....", "....", "....", "####")
+g(".", ".", ".", ".", ".", ".", ".", "#")
+g("/", "....#", "...#.", "...#.", "..#..", ".#...", ".#...", "#....")
+g("0", ".###.", "#...#", "#..##", "#.#.#", "##..#", "#...#", ".###.")
+g("1", "..#", ".##", "#.#", "..#", "..#", "..#", "..#")
+g("2", ".###.", "#...#", "....#", "...#.", "..#..", ".#...", "#####")
+g("3", "####.", "....#", "....#", ".###.", "....#", "....#", "####.")
+g("4", "...#.", "..##.", ".#.#.", "#..#.", "#####", "...#.", "...#.")
+g("5", "#####", "#....", "####.", "....#", "....#", "#...#", ".###.")
+g("6", "..##.", ".#...", "#....", "####.", "#...#", "#...#", ".###.")
+g("7", "#####", "....#", "...#.", "..#..", ".#...", ".#...", ".#...")
+g("8", ".###.", "#...#", "#...#", ".###.", "#...#", "#...#", ".###.")
+g("9", ".###.", "#...#", "#...#", ".####", "....#", "...#.", ".##..")
+g(":", ".", ".", "#", ".", ".", "#")
+g(";", "..", "..", ".#", "..", "..", ".#", ".#", "#.")
+g("<", "...#", "..#.", ".#..", "#...", ".#..", "..#.", "...#")
+g("=", "....", "....", "####", "....", "####")
+g(">", "#...", ".#..", "..#.", "...#", "..#.", ".#..", "#...")
+g("?", ".###.", "#...#", "....#", "..##.", "..#..", ".....", "..#..")
+g("@", ".###.", "#...#", "#.###", "#.#.#", "#.##.", "#....", ".###.")
+g("A", ".###.", "#...#", "#...#", "#####", "#...#", "#...#", "#...#")
+g("B", "####.", "#...#", "#...#", "####.", "#...#", "#...#", "####.")
+g("C", ".###.", "#...#", "#....", "#....", "#....", "#...#", ".###.")
+g("D", "###..", "#..#.", "#...#", "#...#", "#...#", "#..#.", "###..")
+g("E", "#####", "#....", "#....", "####.", "#....", "#....", "#####")
+g("F", "#####", "#....", "#....", "####.", "#....", "#....", "#....")
+g("G", ".###.", "#...#", "#....", "#.###", "#...#", "#...#", ".####")
+g("H", "#...#", "#...#", "#...#", "#####", "#...#", "#...#", "#...#")
+g("I", "###", ".#.", ".#.", ".#.", ".#.", ".#.", "###")
+g("J", "..###", "...#.", "...#.", "...#.", "...#.", "#..#.", ".##..")
+g("K", "#...#", "#..#.", "#.#..", "##...", "#.#..", "#..#.", "#...#")
+g("L", "#....", "#....", "#....", "#....", "#....", "#....", "#####")
+g("M", "#...#", "##.##", "#.#.#", "#.#.#", "#...#", "#...#", "#...#")
+g("N", "#...#", "##..#", "#.#.#", "#..##", "#...#", "#...#", "#...#")
+g("O", ".###.", "#...#", "#...#", "#...#", "#...#", "#...#", ".###.")
+g("P", "####.", "#...#", "#...#", "####.", "#....", "#....", "#....")
+g("Q", ".###.", "#...#", "#...#", "#...#", "#.#.#", "#..#.", ".##.#")
+g("R", "####.", "#...#", "#...#", "####.", "#.#..", "#..#.", "#...#")
+g("S", ".####", "#....", "#....", ".###.", "....#", "....#", "####.")
+g("T", "#####", "..#..", "..#..", "..#..", "..#..", "..#..", "..#..")
+g("U", "#...#", "#...#", "#...#", "#...#", "#...#", "#...#", ".###.")
+g("V", "#...#", "#...#", "#...#", "#...#", ".#.#.", ".#.#.", "..#..")
+g("W", "#...#", "#...#", "#...#", "#.#.#", "#.#.#", "##.##", "#...#")
+g("X", "#...#", "#...#", ".#.#.", "..#..", ".#.#.", "#...#", "#...#")
+g("Y", "#...#", "#...#", ".#.#.", "..#..", "..#..", "..#..", "..#..")
+g("Z", "#####", "....#", "...#.", "..#..", ".#...", "#....", "#####")
+g("[", "##", "#.", "#.", "#.", "#.", "#.", "##")
+g("\\", "#....", ".#...", ".#...", "..#..", "...#.", "...#.", "....#")
+g("]", "##", ".#", ".#", ".#", ".#", ".#", "##")
+g("^", "..#..", ".#.#.", "#...#")
+g("_", "....", "....", "....", "....", "....", "....", "....", "####")
+g("`", "#.", ".#")
+g("a", "....", "....", ".###", "#..#", "#..#", "#..#", ".###")
+g("b", "#...", "#...", "###.", "#..#", "#..#", "#..#", "###.")
+g("c", "....", "....", ".###", "#...", "#...", "#...", ".###")
+g("d", "...#", "...#", ".###", "#..#", "#..#", "#..#", ".###")
+g("e", "....", "....", ".##.", "#..#", "####", "#...", ".###")
+g("f", "..##", ".#..", "###.", ".#..", ".#..", ".#..", ".#..")
+g("g", "....", "....", ".###", "#..#", "#..#", "#..#", ".###", "...#", ".##.")
+g("h", "#...", "#...", "###.", "#..#", "#..#", "#..#", "#..#")
+g("i", "#", ".", "#", "#", "#", "#", "#")
+g("j", "..#", "...", ".##", "..#", "..#", "..#", "..#", "..#", "##.")
+g("k", "#...", "#...", "#..#", "#.#.", "##..", "#.#.", "#..#")
+g("l", "#.", "#.", "#.", "#.", "#.", "#.", ".#")
+g("m", ".....", ".....", "##.#.", "#.#.#", "#.#.#", "#.#.#", "#.#.#")
+g("n", "....", "....", "###.", "#..#", "#..#", "#..#", "#..#")
+g("o", "....", "....", ".##.", "#..#", "#..#", "#..#", ".##.")
+g("p", "....", "....", "###.", "#..#", "#..#", "#..#", "###.", "#...", "#...")
+g("q", "....", "....", ".###", "#..#", "#..#", "#..#", ".###", "...#", "...#")
+g("r", "...", "...", "#.#", "##.", "#..", "#..", "#..")
+g("s", "....", "....", ".###", "#...", ".##.", "...#", "###.")
+g("t", ".#.", ".#.", "###", ".#.", ".#.", ".#.", "..#")
+g("u", "....", "....", "#..#", "#..#", "#..#", "#..#", ".###")
+g("v", ".....", ".....", "#...#", "#...#", ".#.#.", ".#.#.", "..#..")
+g("w", ".....", ".....", "#...#", "#.#.#", "#.#.#", "#.#.#", ".#.#.")
+g("x", "....", "....", "#..#", "#..#", ".##.", "#..#", "#..#")
+g("y", "....", "....", "#..#", "#..#", "#..#", "#..#", ".###", "...#", ".##.")
+g("z", "....", "....", "####", "...#", ".##.", "#...", "####")
+g("{", "..#", ".#.", ".#.", "#..", ".#.", ".#.", "..#")
+g("|", "#", "#", "#", "#", "#", "#", "#")
+g("}", "#..", ".#.", ".#.", "..#", ".#.", ".#.", "#..")
+g("~", ".....", ".....", ".#..#", "#.##.", "#....")
+# the suits (codes 127 to 130), 7 wide
+g("\x7f", "...#...", "..###..", ".#####.", "#######", "#######", "..#.#..", ".#####.")  # spade
+g("\x80", ".##.##.", "#######", "#######", ".#####.", "..###..", "...#...")             # heart
+g("\x81", "..###..", "..###..", "##.#.##", "#######", "##.#.##", "...#...", "..###..")  # club
+g("\x82", "...#...", "..###..", ".#####.", "#######", ".#####.", "..###..", "...#...")  # diamond
+g("\x83", "..######", ".#.....#", "#..#.#.#", "#...#..#", "#..#.#.#", ".#.....#", "..######")  # the delete key
diff --git a/tools/conformite/numblocks_art.py b/tools/conformite/numblocks_art.py
new file mode 100644
index 0000000..4cb4de6
--- /dev/null
+++ b/tools/conformite/numblocks_art.py
@@ -0,0 +1,2080 @@
+#!/usr/bin/env python3
+"""NumBlocks' own pictures (Calcade, 19 October 2026): every texture, item icon, GUI
+piece, mob skin, the font, the sky and the weather, drawn here by code with our own
+palette and patterns. Nothing is taken from another game.
+
+    python3 tools/conformite/numblocks_art.py OUT.zip [--preview DIR]
+
+OUT.zip holds the pictures under textures/... with the names and sizes
+games/numblocks/tools/pack.py reads (that is only how the files are laid out: what
+each picture shows is drawn below). Then:
+
+    python3 games/numblocks/tools/pack.py OUT.zip      # src/data.c and src/data.h
+"""
+import io
+import math
+import os
+import random
+import sys
+import zipfile
+
+from PIL import Image, ImageDraw
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+ROOT = os.path.dirname(os.path.dirname(HERE))
+NB = os.path.join(ROOT, 'games', 'numblocks')
+sys.path.insert(0, os.path.join(NB, 'tools'))
+sys.path.insert(0, HERE)
+
+import numblocks_models as models  # noqa: E402
+
+OUT = {}   # name -> Image
+
+
+def put(name, im):
+    OUT[name] = im
+
+
+# ---------------------------------------------------------------- helpers
+def rgb(h):
+    h = h.lstrip('#')
+    return tuple(int(h[i:i + 2], 16) for i in (0, 2, 4))
+
+
+def mixc(a, b, t):
+    return tuple(int(round(a[i] + (b[i] - a[i]) * t)) for i in range(3))
+
+
+def shade(c, k):
+    return tuple(max(0, min(255, int(round(v * k)))) for v in c[:3])
+
+
+def new(w=16, h=16, c=(0, 0, 0, 0)):
+    return Image.new('RGBA', (w, h), c)
+
+
+class R:
+    """a random stream per picture: the same picture every run"""
+    def __init__(self, key):
+        self.r = random.Random('numblocks:' + key)
+
+    def __getattr__(self, n):
+        return getattr(self.r, n)
+
+
+def value_noise(w, h, cell, rnd, wrap=True):
+    """smooth noise 0..1 on a w x h picture that tiles"""
+    gw, gh = max(1, w // cell), max(1, h // cell)
+    g = [[rnd.random() for _ in range(gw)] for _ in range(gh)]
+    out = [[0.0] * w for _ in range(h)]
+    for y in range(h):
+        for x in range(w):
+            fx, fy = x / cell, y / cell
+            x0, y0 = int(fx), int(fy)
+            tx, ty = fx - x0, fy - y0
+            tx, ty = tx * tx * (3 - 2 * tx), ty * ty * (3 - 2 * ty)
+            a = g[y0 % gh][x0 % gw]
+            b = g[y0 % gh][(x0 + 1) % gw]
+            c = g[(y0 + 1) % gh][x0 % gw]
+            d = g[(y0 + 1) % gh][(x0 + 1) % gw]
+            out[y][x] = (a + (b - a) * tx) * (1 - ty) + (c + (d - c) * tx) * ty
+    return out
+
+
+def ramp(cols, t):
+    """a colour along a list of colours, t in 0..1"""
+    t = max(0.0, min(0.999, t))
+    k = t * (len(cols) - 1)
+    i = int(k)
+    return mixc(cols[i], cols[i + 1], k - i)
+
+
+def speckle(base, cols, key, cell=4, grain=0.35, w=16, h=16):
+    """a ground: smooth blotches plus a fine grain, coloured along cols"""
+    rnd = R(key)
+    n1 = value_noise(w, h, cell, rnd)
+    im = new(w, h)
+    px = im.load()
+    for y in range(h):
+        for x in range(w):
+            t = n1[y][x] * (1 - grain) + rnd.random() * grain
+            px[x, y] = ramp(cols, t) + (255,)
+    return im
+
+
+def cells(key, n, w=16, h=16):
+    """Voronoi cells that tile: (id grid, distance to the edge grid)"""
+    rnd = R(key)
+    pts = [(rnd.random() * w, rnd.random() * h) for _ in range(n)]
+    ids = [[0] * w for _ in range(h)]
+    edge = [[0.0] * w for _ in range(h)]
+    for y in range(h):
+        for x in range(w):
+            ds = []
+            for i, (px, py) in enumerate(pts):
+                for ox in (-w, 0, w):
+                    for oy in (-h, 0, h):
+                        d = math.hypot(x + 0.5 - px - ox, y + 0.5 - py - oy)
+                        ds.append((d, i))
+            ds.sort()
+            ids[y][x] = ds[0][1]
+            j = 1
+            while ds[j][1] == ds[0][1]:
+                j += 1
+            edge[y][x] = ds[j][0] - ds[0][0]
+    return ids, edge
+
+
+def outline_cells(key, n, fill_cols, line, w=16, h=16, light=None):
+    """cobbles: rounded cells, each its own shade, a dark seam between them and a lit top-left"""
+    ids, edge = cells(key, n, w, h)
+    rnd = R(key + 'c')
+    tone = [rnd.random() for _ in range(n)]
+    im = new(w, h)
+    px = im.load()
+    for y in range(h):
+        for x in range(w):
+            if edge[y][x] < 1.1:
+                px[x, y] = line + (255,)
+                continue
+            t = tone[ids[y][x]] * 0.7 + rnd.random() * 0.3
+            c = ramp(fill_cols, t)
+            if light and edge[y][x] < 2.2 and y > 0 and ids[y - 1][x] != ids[y][x]:
+                c = mixc(c, light, 0.5)
+            px[x, y] = c + (255,)
+    return im
+
+
+def grey(im, lo=0.55, hi=1.0):
+    """a picture as grey levels the game tints (biome colours)"""
+    out = new(*im.size)
+    a, b = im.load(), out.load()
+    for y in range(im.size[1]):
+        for x in range(im.size[0]):
+            r, g, bl, al = a[x, y]
+            l = (r * 0.3 + g * 0.59 + bl * 0.11) / 255
+            v = int(255 * (lo + (hi - lo) * l))
+            b[x, y] = (v, v, v, al)
+    return out
+
+
+def bevel(im, light=1.18, dark=0.72, width=1):
+    px = im.load()
+    w, h = im.size
+    for y in range(h):
+        for x in range(w):
+            r, g, b, a = px[x, y]
+            k = 1.0
+            if x < width or y < width:
+                k = light
+            if x >= w - width or y >= h - width:
+                k = dark
+            px[x, y] = shade((r, g, b), k) + (a,)
+    return im
+
+
+def over(dst, src, at=(0, 0)):
+    dst.alpha_composite(src, at)
+    return dst
+
+
+def draw_bits(im, rows, col, at=(0, 0), chars=None):
+    """rows: strings; '.' empty, any other char -> col (or chars[ch])"""
+    px = im.load()
+    for y, row in enumerate(rows):
+        for x, ch in enumerate(row):
+            if ch in '. ':
+                continue
+            c = chars[ch] if chars and ch in chars else col
+            X, Y = at[0] + x, at[1] + y
+            if 0 <= X < im.size[0] and 0 <= Y < im.size[1]:
+                px[X, Y] = (c if len(c) == 4 else c + (255,))
+    return im
+
+
+# ---------------------------------------------------------------- palette
+STONE = [rgb('4E5A74'), rgb('5E6B86'), rgb('6F7D98'), rgb('8290AA')]   # (our slate: blue, in layers)
+GRANITE = [rgb('8C5A4E'), rgb('A06C5C'), rgb('B57F6C'), rgb('C79482')]
+DIORITE = [rgb('A9ABB0'), rgb('BFC1C6'), rgb('D3D5D9'), rgb('E6E7EA')]
+ANDESITE = [rgb('6F6F6A'), rgb('83837D'), rgb('959590'), rgb('A7A7A1')]
+DIRT = [rgb('7A3A30'), rgb('8E4838'), rgb('A15A40'), rgb('B46C4C')]    # (our earth: a red loam)
+SAND = [rgb('E2C4BC'), rgb('EBD0C6'), rgb('F2DCD2'), rgb('F8E8E0')]    # (our sand: pale coral)
+RED_SAND = [rgb('B0582A'), rgb('C26631'), rgb('D2763C'), rgb('DE8749')]
+GRAVEL = [rgb('54607A'), rgb('6E7A92'), rgb('8C96AA'), rgb('A8B0C0')]
+CLAY = [rgb('8D96A8'), rgb('9AA3B4'), rgb('A7B0C0')]
+SNOWC = [rgb('E4ECF4'), rgb('EDF3F9'), rgb('F7FAFD')]
+WOODS = {   # planks, bark (dark, light), rings (dark, light)
+    'oak': (rgb('C8885E'), rgb('5E3A3A'), rgb('7E4E46'), rgb('DCA070')),      # (our woods: warmer, redder)
+    'spruce': (rgb('7A4E5A'), rgb('3A2430'), rgb('543440'), rgb('94687A')),
+    'birch': (rgb('E4DCC8'), rgb('F2EEE6'), rgb('6A6A7A'), rgb('F0E8D8')),
+    'jungle': (rgb('D8944A'), rgb('6A5A2A'), rgb('8A7438'), rgb('E8AC64')),
+    'acacia': (rgb('C8605A'), rgb('7A6E6A'), rgb('948A84'), rgb('DC7A70')),
+    'big_oak': (rgb('5A4038'), rgb('34262A'), rgb('4A3436'), rgb('765A4E')),
+}
+DYES = {   # our 16 colours
+    'white': rgb('EEF0F2'), 'orange': rgb('F08A2C'), 'magenta': rgb('C455C9'), 'light_blue': rgb('5DB8F0'),
+    'yellow': rgb('F6D23A'), 'lime': rgb('86D23C'), 'pink': rgb('F39CC0'), 'gray': rgb('55595F'),
+    'silver': rgb('A3A7AC'), 'cyan': rgb('1F9EA6'), 'purple': rgb('7E3DBD'), 'blue': rgb('3550B8'),
+    'brown': rgb('7A4E2C'), 'green': rgb('4E7A2A'), 'red': rgb('C93A33'), 'black': rgb('24252B'),
+}
+METAL = {   # tools and armour: (dark, mid, light)
+    'wood': (rgb('6E5032'), rgb('A07A48'), rgb('C79A60')),
+    'stone': (rgb('5B616C'), rgb('858C98'), rgb('A9B0BB')),
+    'iron': (rgb('8A9097'), rgb('C5CBD1'), rgb('F1F4F6')),
+    'gold': (rgb('B07A12'), rgb('EBB52E'), rgb('FFE68A')),
+    'diamond': (rgb('1C8C96'), rgb('4FD6D2'), rgb('C8FFF6')),
+    'chain': (rgb('4D5258'), rgb('8C9198'), rgb('C2C6CB')),
+    'leather': (rgb('6B3E20'), rgb('9A5E34'), rgb('C2804E')),
+}
+GEMS = {   # ores: (dark, mid, light)
+    'coal': (rgb('1E1E22'), rgb('34343A'), rgb('55555E')),
+    'iron': (rgb('A8754E'), rgb('D29A6E'), rgb('F2C9A6')),
+    'gold': (rgb('C2901A'), rgb('F2C53A'), rgb('FFF0A0')),
+    'diamond': (rgb('24A7B0'), rgb('5FE8E0'), rgb('D8FFFA')),
+    'emerald': (rgb('128C43'), rgb('2FD46E'), rgb('B8FFD0')),
+    'lapis': (rgb('1F3A9E'), rgb('3B63D8'), rgb('9DB8FF')),
+    'redstone': (rgb('9E1528'), rgb('E0344A'), rgb('FFA6B0')),   # (our ruby)
+}
+
+
+# ---------------------------------------------------------------- block textures
+def rock_tex(key, cols, n=7):
+    """our stone: a slate laid in wavy layers, each its own shade, a thin dark line between them"""
+    rnd = R(key)
+    im = new()
+    px = im.load()
+    bounds = [0, 4, 7, 11, 14, 16]
+    tones = [rnd.random() for _ in bounds]
+    for x in range(16):
+        wob = int(round(math.sin(x * 0.45 + rnd.random() * 0.3) * 0.8))
+        for y in range(16):
+            yy = (y + wob) % 16
+            layer = max(i for i, b in enumerate(bounds) if b <= yy)
+            t = tones[layer] * 0.6 + 0.2 + rnd.random() * 0.15
+            c = ramp(cols, t)
+            if yy in bounds[1:-1]:
+                c = shade(cols[0], 0.8)
+            elif yy - 1 in bounds[1:-1]:
+                c = shade(c, 1.1)
+            px[x, y] = c + (255,)
+    for _ in range(n // 2):   # a few pale flecks
+        px[rnd.randrange(16), rnd.randrange(16)] = shade(cols[3], 1.1) + (255,)
+    return im
+
+
+def polished(key, cols):
+    """polished stone: a smooth slab with a raised rim"""
+    im = speckle(None, cols[1:], key, cell=8, grain=0.12)
+    px = im.load()
+    for i in range(16):
+        for (x, y, k) in ((i, 0, 1.12), (0, i, 1.12), (i, 15, 0.8), (15, i, 0.8), (i, 1, 1.05), (1, i, 1.05)):
+            px[x, y] = shade(px[x, y], k) + (255,)
+    return im
+
+
+def ore(key, gem):
+    base = rock_tex('stone_for_' + key, STONE, 5)
+    rnd = R(key)
+    px = base.load()
+    d, m, l = gem
+    # our ores: small cut gems (a diamond shape with a lit facet), four to six of them
+    spots = []
+    while len(spots) < rnd.randint(4, 6):
+        x, y = rnd.randrange(1, 14), rnd.randrange(1, 14)
+        if all(abs(x - a) + abs(y - b) > 4 for a, b in spots):
+            spots.append((x, y))
+    for x, y in spots:
+        for dx, dy, c in ((0, -1, l), (-1, 0, m), (0, 0, m), (1, 0, d), (0, 1, d), (1, -1, m)):
+            px[(x + dx) % 16, (y + dy) % 16] = c + (255,)
+    return base
+
+
+def metal_block(key, gem, pattern='plate'):
+    d, m, l = gem
+    im = new()
+    px = im.load()
+    rnd = R(key)
+    for y in range(16):
+        for x in range(16):
+            t = 0.5 + 0.25 * math.sin((x + y) * 0.7) + rnd.random() * 0.12
+            px[x, y] = ramp([d, m, l], t * 0.8 + 0.1) + (255,)
+    # a frame and a hexagon set in the middle
+    for i in range(16):
+        px[i, 0] = px[0, i] = l + (255,)
+        px[i, 15] = px[15, i] = d + (255,)
+    hexa = ['..xxxx..', '.x....x.', 'x......x', 'x......x', 'x......x', 'x......x', '.x....x.', '..xxxx..']
+    draw_bits(im, hexa, d, (4, 4))
+    draw_bits(im, ['xx', 'x.'], l, (6, 6))
+    return im
+
+
+def planks(key, wood):
+    """our boards: a woven lattice of short slats, crossing each other square by square"""
+    base, bark_d, ring_d, ring_l = wood
+    im = new()
+    px = im.load()
+    rnd = R(key)
+    for y in range(16):
+        for x in range(16):
+            cx, cy = x // 8, y // 8
+            across = (cx + cy) % 2 == 0          # this square's slats run across, the next ones down
+            u, v = (x % 8, y % 8) if across else (y % 8, x % 8)
+            slat = v // 4
+            g = 0.5 + 0.5 * math.sin(u * 0.8 + slat * 1.7 + cx * 2 + cy)
+            c = shade(mixc(base, ring_l, g * 0.3), 0.94 + 0.08 * rnd.random())
+            if v % 4 == 0:
+                c = shade(c, 1.1)
+            if v % 4 == 3:
+                c = shade(c, 0.72)
+            px[x, y] = c + (255,)
+    return im
+
+
+def log_side(key, wood):
+    base, bark_d, ring_d, ring_l = wood
+    im = new()
+    px = im.load()
+    rnd = R(key)
+    birch = key.startswith('log_birch')
+    # our bark: overlapping scales in staggered rows (a diamond pattern), lit on their upper edge
+    for y in range(16):
+        for x in range(16):
+            row = y // 4
+            u = (x + (2 if row % 2 else 0)) % 4
+            v = y % 4
+            d = abs(u - 1.5) + v * 0.6
+            if birch:
+                c = mixc(bark_d, (255, 255, 255), 0.2 * rnd.random())
+                if v == 3 and u in (1, 2):
+                    c = ring_d
+            else:
+                c = mixc(bark_d, ring_d, 0.3 + 0.5 * (1 - d / 3.4) + 0.1 * rnd.random())
+                if v == 3:
+                    c = shade(bark_d, 0.7)
+            px[x, y] = c + (255,)
+    return im
+
+
+def log_top(key, wood):
+    base, bark_d, ring_d, ring_l = wood
+    im = new()
+    px = im.load()
+    # our cut end: a square-ish heart with a star of cracks, inside a thick bark rim
+    for y in range(16):
+        for x in range(16):
+            dx, dy = abs(x - 7.5), abs(y - 7.5)
+            d = max(dx, dy) * 0.6 + math.hypot(dx, dy) * 0.4
+            if d > 7.0:
+                c = bark_d
+            elif d > 6.2:
+                c = ring_d
+            else:
+                c = mixc(ring_l, base, d / 7)
+                if dx < 0.6 or dy < 0.6 or abs(dx - dy) < 0.6:
+                    c = shade(c, 0.8)
+            px[x, y] = c + (255,)
+    return im
+
+
+def leaves(key, dense=0.78, style='round'):
+    """leaves as grey levels (the biome colours them), with see-through gaps"""
+    rnd = R(key)
+    im = new()
+    px = im.load()
+    for y in range(16):
+        for x in range(16):
+            if rnd.random() > min(0.95, dense + 0.12):
+                continue
+            v = int(185 + 55 * rnd.random())
+            px[x, y] = (v, v, v, 255)
+    # our leaves: pointed leaf shapes (a lit tip, a dark vein) scattered over the mass
+    for _ in range(8):
+        x, y = rnd.randrange(16), rnd.randrange(16)
+        for dx, dy, v in ((0, -1, 255), (-1, 0, 235), (0, 0, 165), (1, 0, 235), (0, 1, 215), (0, 2, 190)):
+            px[(x + dx) % 16, (y + dy) % 16] = (v, v, v, 255)
+        if style == 'needle':
+            px[(x + 2) % 16, (y + 1) % 16] = (130, 130, 130, 255)
+    return im
+
+
+def cross_plant(key, shapes, size=16):
+    im = new(size, size)
+    for rows, chars in shapes:
+        draw_bits(im, rows, None, (0, 0), chars)
+    return im
+
+
+def wool(key, col):
+    im = new()
+    px = im.load()
+    rnd = R(key)
+    for y in range(16):
+        for x in range(16):
+            # our knit: little V stitches in rows of 4
+            k = ((x // 2) + (y % 4 == 0)) % 2
+            t = 0.92 + (0.1 if k else -0.04) + rnd.random() * 0.05
+            if y % 4 == 3:
+                t -= 0.1
+            px[x, y] = shade(col, t) + (255,)
+    return im
+
+
+def clay_tex(key, col):
+    im = new()
+    px = im.load()
+    rnd = R(key)
+    for y in range(16):
+        for x in range(16):
+            t = 0.95 + 0.06 * math.sin(y * 0.8 + x * 0.15) + rnd.random() * 0.04
+            px[x, y] = shade(col, t) + (255,)
+    return im
+
+
+def bricks(key, brick, mortar, rows=4, w=8):
+    im = new()
+    px = im.load()
+    rnd = R(key)
+    h = 16 // rows
+    for y in range(16):
+        r = y // h
+        off = (w // 2) * (r % 2)
+        for x in range(16):
+            xx = (x + off) % 16
+            if y % h == h - 1 or xx % w == w - 1:
+                px[x, y] = mortar + (255,)
+            else:
+                t = 0.9 + rnd.random() * 0.15
+                if y % h == 0:
+                    t += 0.08
+                px[x, y] = shade(brick, t) + (255,)
+    return im
+
+
+def overlay_moss(im, key, amount=0.3):
+    rnd = R(key)
+    n = value_noise(16, 16, 4, rnd)
+    px = im.load()
+    for y in range(16):
+        for x in range(16):
+            if n[y][x] > 1 - amount - 0.2 and rnd.random() < 0.8:
+                px[x, y] = mixc(rgb('4E8A35'), rgb('6FAE45'), rnd.random()) + (255,)
+    return im
+
+
+def block_textures():
+    T = {}
+    T['stone'] = rock_tex('stone', STONE)
+    T['stone_granite'] = speckle(None, GRANITE, 'granite', cell=3, grain=0.55)
+    T['stone_granite_smooth'] = polished('pgranite', GRANITE)
+    T['stone_diorite'] = speckle(None, DIORITE, 'diorite', cell=3, grain=0.6)
+    T['stone_diorite_smooth'] = polished('pdiorite', DIORITE)
+    T['stone_andesite'] = speckle(None, ANDESITE, 'andesite', cell=3, grain=0.5)
+    T['stone_andesite_smooth'] = polished('pandesite', ANDESITE)
+    dirt = speckle(None, DIRT, 'dirt', cell=4, grain=0.3)
+    rnd = R('dirt pebbles')
+    p = dirt.load()
+    for y in (5, 11):   # our loam: two thin pale strata, and a few round pebbles
+        for x in range(16):
+            if (x * 5 + y) % 7 != 0:
+                p[x, (y + (x // 6)) % 16] = shade(DIRT[3], 1.08) + (255,)
+    for _ in range(4):
+        x, y = rnd.randrange(15), rnd.randrange(15)
+        for dx, dy in ((0, 0), (1, 0), (0, 1), (1, 1)):
+            p[x + dx, y + dy] = (rgb('D8B8A0') if (dx, dy) == (0, 0) else rgb('A88A78')) + (255,)
+    T['dirt'] = dirt
+    T['coarse_dirt'] = outline_cells('coarse', 10, DIRT, shade(DIRT[0], 0.75))
+    # our grass top: a mossy cushion of little round tufts (grey: the biome colours it), dotted with
+    # tiny flowers that keep their own colours
+    grass = new()
+    pg = grass.load()
+    rnd = R('grass')
+    for y in range(16):
+        for x in range(16):
+            cx, cy = (x + (y // 4 % 2) * 2) % 4, y % 4
+            d = math.hypot(cx - 1.5, cy - 1.5)
+            v = int(235 - d * 38 - rnd.random() * 25)
+            pg[x, y] = (v, v, v, 255)
+    for k in range(4):
+        x, y = rnd.randrange(16), rnd.randrange(16)
+        col = [rgb('F2E86A'), rgb('F0F0F8'), rgb('E88AC8'), rgb('F2E86A')][k]
+        pg[x, y] = col + (255,)
+        pg[(x + 1) % 16, y] = shade(col, 0.8) + (255,)
+    T['grass_top'] = grass
+    # the side: the loam, with only a straight lip of moss along the top (no fringe hanging down)
+    side = dirt.copy()
+    over_im = new()
+    rnd = R('fringe')
+    po = over_im.load()
+    depth = [2] * 16
+    for x in range(16):
+        for y in range(2):
+            v = int(200 + 40 * rnd.random()) if y == 0 else int(150 + 30 * rnd.random())
+            po[x, y] = (v, v, v, 255)
+    ps0 = side.load()
+    for x in range(16):   # (a dark line of roots under the lip)
+        ps0[x, 2] = shade(DIRT[0], 0.75) + (255,)
+    T['grass_side_overlay'] = over_im
+    T['grass_side'] = side
+    snowed = dirt.copy()
+    ps = snowed.load()
+    for x in range(16):
+        for y in range(depth[x] + 1):
+            ps[x, y] = ramp(SNOWC, rnd.random()) + (255,)
+    T['grass_side_snowed'] = snowed
+    T['dirt_podzol_top'] = speckle(None, [rgb('4A3018'), rgb('6A4626'), rgb('8A6236'), rgb('9C7A3E')], 'podzol', 2, 0.6)
+    pod = dirt.copy()
+    pp = pod.load()
+    for x in range(16):
+        for y in range(depth[x]):
+            pp[x, y] = ramp([rgb('4A3018'), rgb('7A5530')], rnd.random()) + (255,)
+    T['dirt_podzol_side'] = pod
+    # our cobbles: rounded field stones set in pale mortar
+    T['cobblestone'] = outline_cells('cobble', 7, STONE, rgb('C4BCA8'), light=rgb('A8B4CC'))
+    T['cobblestone_mossy'] = overlay_moss(outline_cells('cobble', 7, STONE, rgb('C4BCA8'), light=rgb('A8B4CC')), 'moss')
+    T['bedrock'] = outline_cells('bedrock', 11, [rgb('2A2B30'), rgb('45464D'), rgb('5E6069')], rgb('15161A'))
+    T['gravel'] = outline_cells('gravel', 18, GRAVEL, rgb('4D4846'))
+    sand = speckle(None, SAND, 'sand', cell=3, grain=0.5)
+    psd = sand.load()
+    rsd = R('shells')
+    for _ in range(5):   # our sand: little shells and pink grains in it
+        x, y = rsd.randrange(15), rsd.randrange(16)
+        psd[x, y] = rgb('FFF8F0') + (255,)
+        psd[x + 1, y] = rgb('D89A9A') + (255,)
+    T['sand'] = sand
+    T['red_sand'] = speckle(None, RED_SAND, 'red_sand', cell=2, grain=0.7)
+    T['clay'] = speckle(None, CLAY, 'clay', cell=6, grain=0.2)
+    T['snow'] = speckle(None, SNOWC, 'snow', cell=4, grain=0.3)
+    ice = speckle(None, [rgb('8EC4F0'), rgb('A6D4F6'), rgb('C2E3FA')], 'ice', cell=6, grain=0.1)
+    pi = ice.load()
+    for k in range(16):   # our ice: two long white scratches
+        pi[k, (k * 3 // 4 + 2) % 16] = (235, 248, 255, 255)
+        pi[(k + 5) % 16, (15 - k // 2)] = (220, 240, 255, 255)
+    for y in range(16):
+        for x in range(16):
+            r, g, b, a = pi[x, y]
+            pi[x, y] = (r, g, b, 190)
+    T['ice'] = ice
+    T['ice_packed'] = outline_cells('packed', 6, [rgb('9CCBF2'), rgb('B4DBF8'), rgb('CCE7FB')], rgb('7FB0DA'))
+    for n, gem in (('coal', 'coal'), ('iron', 'iron'), ('gold', 'gold'), ('diamond', 'diamond'), ('emerald', 'emerald'),
+                   ('lapis', 'lapis'), ('redstone', 'redstone')):
+        T[n + '_ore'] = ore(n, GEMS[gem])
+    T['gold_block'] = metal_block('gold_block', GEMS['gold'])
+    T['iron_block'] = metal_block('iron_block', METAL['iron'])
+    T['diamond_block'] = metal_block('diamond_block', GEMS['diamond'])
+    T['emerald_block'] = metal_block('emerald_block', GEMS['emerald'])
+    T['lapis_block'] = metal_block('lapis_block', GEMS['lapis'])
+    T['coal_block'] = metal_block('coal_block', GEMS['coal'])
+    for w, wood in WOODS.items():
+        T['planks_' + w] = planks('planks_' + w, wood)
+        T['log_' + w] = log_side('log_' + w, wood)
+        T['log_' + w + '_top'] = log_top('log_' + w + '_top', wood)
+    T['leaves_oak'] = leaves('leaves_oak')
+    T['leaves_birch'] = leaves('leaves_birch', 0.72)
+    T['leaves_spruce'] = leaves('leaves_spruce', 0.85, 'needle')
+    T['leaves_jungle'] = leaves('leaves_jungle', 0.86)
+    T['leaves_acacia'] = leaves('leaves_acacia', 0.7)
+    T['leaves_big_oak'] = leaves('leaves_big_oak', 0.88)
+    # sandstone: smooth bands, carved with our own wave
+    def sstone(key, cols, mode):
+        im = speckle(None, cols, key, cell=8, grain=0.15)
+        px = im.load()
+        for x in range(16):
+            if mode in ('normal', 'carved'):
+                for y in (0, 1, 14, 15):
+                    px[x, y] = shade(cols[1], 0.85 if y > 7 else 1.08) + (255,)
+            if mode == 'normal':
+                px[x, 6 + (x % 4 == 0)] = shade(cols[0], 0.9) + (255,)
+            if mode == 'carved':
+                y = 8 + int(round(2 * math.sin(x * 0.785)))
+                px[x, y] = shade(cols[0], 0.7) + (255,)
+                px[x, y - 1] = shade(cols[2], 1.05) + (255,)
+            if mode in ('top', 'bottom'):
+                for y in range(16):
+                    if x in (0, 15) or y in (0, 15):
+                        px[x, y] = shade(cols[1], 0.92) + (255,)
+        return im
+    SST = [rgb('D2BE86'), rgb('DCC992'), rgb('E5D49F'), rgb('EEDFAE')]
+    RST = [rgb('B65A2C'), rgb('C66834'), rgb('D3773F'), rgb('DD874B')]
+    for m in ('top', 'normal', 'bottom', 'carved', 'smooth'):
+        T['sandstone_' + m] = sstone('ss' + m, SST, m)
+    for m in ('top', 'normal', 'bottom'):
+        T['red_sandstone_' + m] = sstone('rs' + m, RST, m)
+    T['sponge'] = sponge()
+    glass = new()
+    pg = glass.load()
+    for i in range(16):   # our glass: a thin frame, two dots in the corners, one short glint
+        for (x, y) in ((i, 0), (0, i), (i, 15), (15, i)):
+            pg[x, y] = (210, 232, 240, 255)
+    for k in range(4):
+        pg[3 + k, 6 - k] = (240, 250, 255, 255)
+    pg[2, 2] = pg[13, 13] = (190, 220, 232, 255)
+    T['glass'] = glass
+    for c, col in DYES.items():
+        T['wool_colored_' + c] = wool('wool_' + c, col)
+        T['hardened_clay_stained_' + c] = clay_tex('clay_' + c, mixc(col, rgb('9A6A50'), 0.35))
+    T['hardened_clay'] = clay_tex('hclay', rgb('A0654A'))
+    T['brick'] = bricks('brick', rgb('A4503C'), rgb('C9BBAA'), rows=4, w=8)
+    T['stonebrick'] = bricks('stonebrick', STONE[2], rgb('5A606A'), rows=2, w=16)
+    T['stonebrick_mossy'] = overlay_moss(bricks('stonebrick', STONE[2], rgb('5A606A'), rows=2, w=16), 'smoss', 0.25)
+    cr = bricks('stonebrick', STONE[2], rgb('5A606A'), rows=2, w=16)
+    pc = cr.load()
+    for k, (x, y) in enumerate([(3, 1), (4, 2), (4, 3), (5, 4), (6, 4), (6, 5), (11, 9), (11, 10), (12, 11), (12, 12)]):
+        pc[x, y] = rgb('3E434B') + (255,)
+    T['stonebrick_cracked'] = cr
+    carved = polished('carved', STONE)
+    draw_bits(carved, ['.xxxx.', 'x....x', 'x.xx.x', 'x.xx.x', 'x....x', '.xxxx.'], rgb('5A606A'), (5, 5))
+    T['stonebrick_carved'] = carved
+    slab_top = polished('slabtop', STONE)
+    T['stone_slab_top'] = slab_top
+    st = polished('slabside', STONE)
+    ps2 = st.load()
+    for x in range(16):
+        ps2[x, 7] = rgb('5A606A') + (255,)
+        ps2[x, 8] = rgb('A9B0BB') + (255,)
+    T['stone_slab_side'] = st
+    T['obsidian'] = outline_cells('obsidian', 7, [rgb('140F22'), rgb('22183A'), rgb('34264F')], rgb('0B0814'),
+                                  light=rgb('6A4C9C'))
+    T['glowstone'] = outline_cells('glow', 8, [rgb('C98F2E'), rgb('F2C24E'), rgb('FFE89A')], rgb('8A5A1C'),
+                                   light=rgb('FFF6CC'))
+    T['mob_spawner'] = cage()
+    T['tnt_side'], T['tnt_top'], T['tnt_bottom'] = tnt()
+    T['bookshelf'] = bookshelf()
+    T['crafting_table_top'], T['crafting_table_side'], T['crafting_table_front'] = crafting_table()
+    T['furnace_top'], T['furnace_side'], T['furnace_front_off'], T['furnace_front_on'] = furnace()
+    for k in range(8):
+        T['wheat_stage_%d' % k] = crop('wheat%d' % k, k, 7, rgb('7CB842'), rgb('D8B84A'))
+    for k in range(4):
+        T['carrots_stage_%d' % k] = crop('carrot%d' % k, k, 3, rgb('5EA83A'), rgb('F08A2C'), roots=True)
+        T['potatoes_stage_%d' % k] = crop('potato%d' % k, k, 3, rgb('4E9A36'), rgb('D8B070'), roots=True)
+    T['farmland_dry'], T['farmland_wet'] = farmland(dirt)
+    T['door_wood_lower'], T['door_wood_upper'] = door()
+    T['ladder'] = ladder()
+    T['rail_normal'] = rail()
+    T['torch_on'] = torch()
+    T['cactus_top'], T['cactus_side'], T['cactus_bottom'] = cactus()
+    T['pumpkin_top'], T['pumpkin_side'], T['pumpkin_face_off'], T['pumpkin_face_on'] = pumpkin()
+    T['melon_top'], T['melon_side'] = melon()
+    T['hay_block_top'], T['hay_block_side'] = hay()
+    T['mushroom_block_skin_brown'] = cap('mb', rgb('8A6448'), rgb('A7805E'))
+    T['mushroom_block_skin_red'] = cap('mr', rgb('C2302E'), rgb('F2E6D2'), spots=True)
+    T['mushroom_block_inside'] = speckle(None, [rgb('D9C7A6'), rgb('E6D7BA')], 'mbin', 4, 0.3)
+    T['mushroom_block_skin_stem'] = stem()
+    T['mycelium_top'] = speckle(None, [rgb('6E5E70'), rgb('84738A'), rgb('9A8AA2')], 'myc', 2, 0.6)
+    myc = dirt.copy()
+    pm = myc.load()
+    for x in range(16):
+        for y in range(depth[x]):
+            pm[x, y] = ramp([rgb('6E5E70'), rgb('9A8AA2')], rnd.random()) + (255,)
+    T['mycelium_side'] = myc
+    T['water_still'] = water('water', [rgb('2C5FBF'), rgb('3A72D0'), rgb('4C86DE')], 170)
+    T['water_flow'] = water('waterf', [rgb('2C5FBF'), rgb('3A72D0'), rgb('5A92E6')], 170, flow=True)
+    T['lava_still'] = water('lava', [rgb('C8320A'), rgb('E8601A'), rgb('FF9A2E'), rgb('FFD266')], 255)
+    T['lava_flow'] = water('lavaf', [rgb('C8320A'), rgb('E8601A'), rgb('FF9A2E'), rgb('FFD266')], 255, flow=True)
+    T['bed_feet_top'], T['bed_feet_side'], T['bed_feet_end'], T['bed_head_top'], T['bed_head_side'], T['bed_head_end'] = bed()
+    T['fire_layer_0'] = fire()
+    T['web'] = web()
+    T['vine'] = vine()
+    T['waterlily'] = lily()
+    T['@chest_top'], T['@chest_side'], T['@chest_front'] = chest_faces()
+    T.update(plants())
+    return T
+
+
+def sponge():
+    im = speckle(None, [rgb('C2B23A'), rgb('D8C850'), rgb('E8DA6A')], 'sponge', 3, 0.3)
+    px = im.load()
+    rnd = R('holes')
+    for _ in range(9):
+        x, y = rnd.randrange(16), rnd.randrange(16)
+        px[x, y] = rgb('8E7E22') + (255,)
+        px[(x + 1) % 16, y] = rgb('A69632') + (255,)
+    return im
+
+
+def cage():
+    im = new()
+    px = im.load()
+    for y in range(16):
+        for x in range(16):
+            if x in (0, 15) or y in (0, 15) or x % 5 == 0 or y % 5 == 0:
+                px[x, y] = (rgb('2E3442') if (x + y) % 2 else rgb('4A5266')) + (255,)
+    for (x, y) in ((7, 7), (8, 8), (7, 8), (8, 7)):
+        px[x, y] = rgb('B03AD0') + (255,)
+    return im
+
+
+def tnt():
+    side = new()
+    px = side.load()
+    for y in range(16):
+        for x in range(16):
+            stick = x // 4
+            c = rgb('D23A2E') if stick % 2 == 0 else rgb('B82E24')
+            if x % 4 == 0:
+                c = rgb('8E2018')
+            px[x, y] = c + (255,)
+    for x in range(16):   # our band: a dark strap with three yellow studs, no letters
+        for y in range(6, 10):
+            px[x, y] = rgb('3A3030') + (255,)
+    for x in (3, 8, 13):
+        px[x, 7] = px[x, 8] = rgb('F2C53A') + (255,)
+    top = new()
+    pt = top.load()
+    for y in range(16):
+        for x in range(16):
+            d = math.hypot((x % 8) - 3.5, (y % 8) - 3.5)
+            pt[x, y] = (rgb('D23A2E') if d < 3.2 else rgb('8E2018')) + (255,)
+    pt[7, 7] = pt[8, 8] = rgb('2A2A2A') + (255,)
+    pt[8, 7] = rgb('E8E0D0') + (255,)
+    bottom = top.copy()
+    pb = bottom.load()
+    pb[8, 7] = rgb('2A2A2A') + (255,)
+    return side, top, bottom
+
+
+def bookshelf():
+    im = planks('shelf', WOODS['oak'])
+    px = im.load()
+    rnd = R('books')
+    for row in (1, 9):
+        x = 1
+        while x < 15:
+            w = rnd.choice([1, 2, 2, 3])
+            col = rnd.choice(list(DYES.values())[1:14])
+            hgt = rnd.choice([5, 6, 6])
+            for xx in range(x, min(15, x + w)):
+                for y in range(row + 6 - hgt, row + 6):
+                    px[xx, y] = shade(col, 0.85 if xx == x else 1.0) + (255,)
+                px[xx, row + 6 - hgt + 1] = rgb('F2E6C8') + (255,)
+            x += w
+        for x in range(16):
+            px[x, row + 6] = shade(WOODS['oak'][1], 0.9) + (255,)
+    return im
+
+
+def crafting_table():
+    top = planks('ctop', WOODS['oak'])
+    px = top.load()
+    for i in range(16):   # our top: a 3 x 3 grid burned in
+        for k in (5, 10):
+            px[k, i] = px[i, k] = shade(WOODS['oak'][0], 0.6) + (255,)
+        px[i, 0] = px[0, i] = px[i, 15] = px[15, i] = shade(WOODS['oak'][1], 1.0) + (255,)
+    side = planks('cside', WOODS['oak'])
+    ps = side.load()
+    for x in range(16):
+        ps[x, 0] = ps[x, 1] = shade(WOODS['oak'][1], 1.0) + (255,)
+    # a saw hanging on one side, a mallet on the front
+    draw_bits(side, ['xxxxxxx', 'x.x.x.x'], rgb('B9C0C8'), (4, 6))
+    draw_bits(side, ['..', 'oo', 'oo'], rgb('6E5032'), (2, 5))
+    front = side.copy()
+    draw_bits(front, ['mmm', 'mmm', '.h.', '.h.', '.h.'], None, (6, 5), {'m': rgb('8A6740'), 'h': rgb('C79A60')})
+    return top, side, front
+
+
+def furnace():
+    top = polished('ftop', STONE)
+    side = rock_tex('fside', STONE, 3)
+    ps = side.load()
+    for x in range(16):
+        ps[x, 0] = ps[x, 15] = shade(STONE[0], 0.8) + (255,)
+    def front(on):
+        im = side.copy()
+        px = im.load()
+        # our mouth: a rounded arch with a grate under it
+        for y in range(7, 13):
+            for x in range(4, 12):
+                if y == 7 and x in (4, 11):
+                    continue
+                px[x, y] = (rgb('1A1A1E') if not on else ramp([rgb('C8320A'), rgb('FFB040')], (y - 7) / 6)) + (255,)
+        for x in range(4, 12, 2):
+            px[x, 13] = rgb('3A3E46') + (255,)
+        for x in range(5, 11):
+            px[x, 4] = rgb('5A606A') + (255,)
+        return im
+    return top, side, front(False), front(True)
+
+
+def crop(key, stage, last, leaf, ripe, roots=False):
+    im = new()
+    px = im.load()
+    rnd = R(key)
+    h = 3 + int(12 * (stage + 1) / (last + 1))
+    for stalk in (2, 6, 10, 13):
+        lean = rnd.choice([-1, 0, 1])
+        for k in range(h):
+            y = 15 - k
+            x = stalk + (lean if k > h // 2 else 0)
+            c = leaf if (k < h - 3 or stage < last or roots) else ripe
+            if 0 <= x < 16:
+                px[x, y] = c + (255,)
+            if k % 3 == 1 and k < h - 2:
+                xx = x + (1 if k % 2 else -1)
+                if 0 <= xx < 16:
+                    px[xx, y] = shade(leaf, 1.15) + (255,)
+        if not roots and stage == last:   # the ripe ears
+            for k in range(3):
+                y = 15 - h + 1 + k
+                for xx in (stalk - 1 + (lean if True else 0), stalk + (lean if True else 0)):
+                    if 0 <= xx < 16 and 0 <= y < 16:
+                        px[xx, y] = shade(ripe, 1.05 - k * 0.08) + (255,)
+        if roots and stage == last:
+            px[stalk, 15] = ripe + (255,)
+            if stalk + 1 < 16:
+                px[stalk + 1, 15] = shade(ripe, 0.85) + (255,)
+    return im
+
+
+def farmland(dirt):
+    dry = dirt.copy()
+    px = dry.load()
+    for y in range(16):
+        for x in range(16):
+            if y % 4 == 3:
+                px[x, y] = shade(px[x, y], 0.7) + (255,)
+            elif y % 4 == 0:
+                px[x, y] = shade(px[x, y], 1.1) + (255,)
+    wet = dry.copy()
+    pw = wet.load()
+    for y in range(16):
+        for x in range(16):
+            pw[x, y] = shade(pw[x, y], 0.62) + (255,)
+    return dry, wet
+
+
+def door():
+    wood = WOODS['oak']
+    lower, upper = new(), new()
+    for im, is_up in ((lower, False), (upper, True)):
+        px = im.load()
+        for y in range(16):
+            for x in range(16):
+                c = shade(wood[0], 0.95 if x in (3, 4, 11, 12) else 1.05)
+                if x in (0, 15) or (is_up and y == 0) or (not is_up and y == 15):
+                    c = shade(wood[1], 1.0)
+                px[x, y] = c + (255,)
+        if is_up:   # our window: a round one
+            for y in range(16):
+                for x in range(16):
+                    if math.hypot(x - 7.5, y - 7.5) < 4.2:
+                        px[x, y] = (0, 0, 0, 0)
+                    elif math.hypot(x - 7.5, y - 7.5) < 5.2:
+                        px[x, y] = shade(wood[1], 1.0) + (255,)
+        else:
+            px[12, 6] = px[12, 7] = rgb('C5CBD1') + (255,)   # the handle
+            for x in range(3, 13):
+                px[x, 10] = shade(wood[1], 1.1) + (255,)
+    return lower, upper
+
+
+def ladder():
+    im = new()
+    px = im.load()
+    c = WOODS['spruce'][0]
+    for y in range(16):
+        for x in (2, 13):
+            px[x, y] = shade(c, 1.0) + (255,)
+            px[x + 1 if x == 2 else x - 1, y] = shade(c, 0.8) + (255,)
+    for y in (2, 7, 12):
+        for x in range(3, 13):
+            px[x, y] = shade(c, 1.15) + (255,)
+            px[x, y + 1] = shade(c, 0.75) + (255,)
+    return im
+
+
+def rail():
+    im = new()
+    px = im.load()
+    for y in range(0, 16, 4):   # sleepers
+        for x in range(1, 15):
+            px[x, y + 1] = WOODS['acacia'][2] + (255,)
+            px[x, y + 2] = shade(WOODS['acacia'][2], 0.8) + (255,)
+    for y in range(16):
+        for x in (3, 12):
+            px[x, y] = rgb('C5CBD1') + (255,)
+            px[x + 1 if x == 3 else x - 1, y] = rgb('7A8088') + (255,)
+    return im
+
+
+def torch():
+    im = new()
+    draw_bits(im, ['..f..', '.fyf.', '.yWy.', '..y..'], None, (6, 4),
+              {'f': rgb('F2602E'), 'y': rgb('FFC23A'), 'W': rgb('FFF4C0')})
+    for y in range(8, 16):
+        im.putpixel((7, y), WOODS['oak'][2] + (255,))
+        im.putpixel((8, y), WOODS['oak'][0] + (255,))
+    return im
+
+
+def cactus():
+    g1, g2, g3 = rgb('2F7A3A'), rgb('3F9446'), rgb('62B45A')
+    side = new()
+    px = side.load()
+    for y in range(16):
+        for x in range(1, 15):
+            c = g2 if x % 4 else g1
+            if x in (2, 6, 10):
+                c = g3
+            px[x, y] = c + (255,)
+    for y in range(1, 16, 4):   # our spines: little pale crosses
+        for x in (4, 12):
+            px[x, y] = rgb('F2EAC0') + (255,)
+        px[8, (y + 2) % 16] = rgb('F2EAC0') + (255,)
+    top = new()
+    pt = top.load()
+    for y in range(1, 15):
+        for x in range(1, 15):
+            d = math.hypot(x - 7.5, y - 7.5)
+            pt[x, y] = (g3 if d < 3 else g2 if d < 5.5 else g1) + (255,)
+    pt[7, 7] = pt[8, 8] = rgb('F2EAC0') + (255,)
+    bottom = top.copy()
+    return top, side, bottom
+
+
+def pumpkin():
+    o1, o2, o3 = rgb('C8641A'), rgb('E07E26'), rgb('F29A3E')
+    side = new()
+    px = side.load()
+    for y in range(16):
+        for x in range(16):
+            c = o1 if x % 5 == 0 else o2 if x % 5 in (1, 4) else o3
+            px[x, y] = c + (255,)
+    top = side.copy()
+    pt = top.load()
+    for (x, y) in ((7, 7), (8, 7), (7, 8), (8, 8), (8, 6)):
+        pt[x, y] = rgb('5E7A2A') + (255,)
+    def face(on):
+        im = side.copy()
+        c = rgb('2A1A0E') if not on else rgb('FFD266')
+        # our face: round eyes and a wavy smile
+        draw_bits(im, ['.xx......xx.', 'xxxx....xxxx', '.xx......xx.'], c, (2, 4))
+        draw_bits(im, ['x..........x', '.x..x..x..x.', '..xx.xx.xx..'], c, (2, 10))
+        return im
+    return top, side, face(False), face(True)
+
+
+def melon():
+    side = new()
+    px = side.load()
+    for y in range(16):
+        for x in range(16):
+            px[x, y] = (rgb('3E8A2E') if (x + (y // 4)) % 4 < 2 else rgb('7CC24A')) + (255,)
+    top = new()
+    pt = top.load()
+    for y in range(16):
+        for x in range(16):
+            d = math.hypot(x - 7.5, y - 7.5)
+            pt[x, y] = (rgb('3E8A2E') if int(d) % 3 else rgb('7CC24A')) + (255,)
+    return top, side
+
+
+def hay():
+    side = new()
+    px = side.load()
+    rnd = R('hay')
+    for y in range(16):
+        for x in range(16):
+            c = ramp([rgb('B08A22'), rgb('D8B43E'), rgb('EED068')], rnd.random())
+            if y in (3, 4, 11, 12):
+                c = rgb('8A4E2A')
+            px[x, y] = c + (255,)
+    top = new()
+    pt = top.load()
+    for y in range(16):
+        for x in range(16):
+            d = math.hypot(x - 7.5, y - 7.5)
+            pt[x, y] = ramp([rgb('B08A22'), rgb('EED068')], (math.sin(d * 2.2) + 1) / 2) + (255,)
+    return top, side
+
+
+def cap(key, col, spot, spots=False):
+    im = speckle(None, [shade(col, 0.9), col, shade(col, 1.1)], key, 4, 0.3)
+    if spots:
+        px = im.load()
+        for (x, y) in ((3, 3), (11, 5), (6, 10), (13, 12), (1, 13)):
+            for dx, dy in ((0, 0), (1, 0), (0, 1), (1, 1)):
+                px[(x + dx) % 16, (y + dy) % 16] = spot + (255,)
+    return im
+
+
+def stem():
+    im = new()
+    px = im.load()
+    rnd = R('stem')
+    for y in range(16):
+        for x in range(16):
+            px[x, y] = ramp([rgb('D2C6AE'), rgb('E8DEC8')], rnd.random() * 0.6 + (x % 3 == 0) * 0.3) + (255,)
+    return im
+
+
+def water(key, cols, alpha, flow=False):
+    im = new()
+    px = im.load()
+    rnd = R(key)
+    for y in range(16):
+        for x in range(16):
+            if flow:
+                t = (math.sin((x + y * 2) * 0.55) + 1) / 2 * 0.7 + rnd.random() * 0.3
+            else:
+                t = (math.sin(x * 0.7 + math.sin(y * 0.5) * 2) + math.sin(y * 0.9)) / 4 + 0.5
+                t = t * 0.75 + rnd.random() * 0.25
+            px[x, y] = ramp(cols, t) + (alpha,)
+    return im
+
+
+def bed():
+    red, white, wood = rgb('3B6FC4'), rgb('EEF0F2'), WOODS['oak']   # our bed: a blue blanket
+    def top(head):
+        im = new()
+        px = im.load()
+        for y in range(16):
+            for x in range(16):
+                c = red if not head or y > 6 else white
+                if x in (0, 15):
+                    c = shade(c, 0.8)
+                if (not head) and y % 5 == 2 and 2 < x < 13:
+                    c = shade(red, 1.15)
+                px[x, y] = c + (255,)
+        return im
+    def side(head):
+        im = new()
+        px = im.load()
+        for y in range(7, 16):
+            for x in range(16):
+                c = (red if not head or x > 6 else white) if y < 11 else wood[0] if y < 13 else (0, 0, 0)
+                a = 255 if y < 13 or x in (0, 1, 14, 15) else 0
+                if y >= 13 and a:
+                    c = wood[1]
+                px[x, y] = c + (a,)
+        return im
+    def end(head):
+        im = new()
+        px = im.load()
+        for y in range(7, 16):
+            for x in range(16):
+                c = (white if head else red) if y < 11 else wood[0]
+                a = 255 if y < 13 or x in (0, 1, 14, 15) else 0
+                px[x, y] = (c if y < 13 else wood[1]) + (a,)
+        return im
+    return top(False), side(False), end(False), top(True), side(True), end(True)
+
+
+def fire():
+    im = new()
+    px = im.load()
+    rnd = R('fire')
+    for x in range(16):
+        h = 7 + int(6 * abs(math.sin(x * 0.9))) + rnd.randrange(3)
+        for k in range(h):
+            y = 15 - k
+            t = k / h
+            px[x, y] = ramp([rgb('FFF4C0'), rgb('FFC23A'), rgb('F2602E'), rgb('B8261A')], t) + (255 if t < 0.9 else 160,)
+    return im
+
+
+def web():
+    im = new()
+    px = im.load()
+    for k in range(16):
+        for (x, y) in ((k, k), (15 - k, k), (7, k), (k, 8)):
+            px[x, y] = (232, 236, 240, 220)
+    for r in (3, 6):
+        for a in range(0, 360, 15):
+            x, y = int(7.5 + r * math.cos(math.radians(a))), int(7.5 + r * math.sin(math.radians(a)))
+            px[x, y] = (232, 236, 240, 200)
+    return im
+
+
+def vine():
+    im = new()
+    px = im.load()
+    rnd = R('vine')
+    for strand in (1, 5, 9, 13):
+        x = strand
+        for y in range(16):
+            x = max(0, min(15, x + rnd.choice([-1, 0, 0, 1])))
+            v = int(150 + 80 * rnd.random())
+            px[x, y] = (v, v, v, 255)
+            if y % 3 == 0 and x + 1 < 16:
+                px[x + 1, y] = (230, 230, 230, 255)
+    return im
+
+
+def lily():
+    im = new()
+    px = im.load()
+    for y in range(16):
+        for x in range(16):
+            d = math.hypot(x - 7.5, y - 7.5)
+            ang = math.degrees(math.atan2(y - 7.5, x - 7.5))
+            if d < 7.3 and not (-25 < ang < 5):
+                v = 200 if int(d) % 3 else 240
+                px[x, y] = (v, v, v, 255)
+    return im
+
+
+def chest_faces():
+    wood = WOODS['acacia']
+    def face(front):
+        im = new()
+        px = im.load()
+        for y in range(1, 15):
+            for x in range(1, 15):
+                c = shade(wood[0], 1.0 if (y // 3) % 2 else 0.9)
+                if y in (1, 14) or x in (1, 14):
+                    c = rgb('5A606A')   # iron edges
+                if y == 6:
+                    c = rgb('3A3E46')
+                px[x, y] = c + (255,)
+        if front:   # our clasp: a little round lock
+            for (x, y, c) in ((7, 5, rgb('F2C53A')), (8, 5, rgb('F2C53A')), (7, 6, rgb('B07A12')), (8, 6, rgb('B07A12')),
+                              (7, 7, rgb('F2C53A')), (8, 7, rgb('F2C53A'))):
+                px[x, y] = c + (255,)
+        return im
+    top = new()
+    pt = top.load()
+    for y in range(1, 15):
+        for x in range(1, 15):
+            c = shade(wood[0], 1.0 if (x // 3) % 2 else 0.9)
+            if y in (1, 14) or x in (1, 14):
+                c = rgb('5A606A')
+            pt[x, y] = c + (255,)
+    return top, face(False), face(True)
+
+
+# plants, drawn as little pixel pictures: '.' see-through; letters are colours
+PLANT_COLS = {'g': rgb('4E9A36'), 'G': rgb('6FBF4A'), 'd': rgb('2F6A2A'), 'b': rgb('7A5534'), 'B': rgb('A07A48'),
+              'y': rgb('F6D23A'), 'Y': rgb('FFF0A0'), 'o': rgb('F08A2C'), 'r': rgb('D23A3A'), 'R': rgb('F26B5E'),
+              'w': rgb('F2F4F6'), 'W': rgb('FFFFFF'), 'p': rgb('F39CC0'), 'P': rgb('C455C9'), 'u': rgb('5DB8F0'),
+              'U': rgb('3550B8'), 'k': rgb('2A2A2A'), 'c': rgb('E8DCC8'), 'n': rgb('8A6448'), 'm': rgb('B07A52'),
+              'v': rgb('9A62D8'), 's': rgb('C8B07A')}
+
+
+def pic(rows, cols=PLANT_COLS):
+    im = new()
+    draw_bits(im, rows, None, (0, 0), cols)
+    return im
+
+
+def plants():
+    T = {}
+    stem_rows = lambda top: top + ['.......g........'] * 0
+    def flower(head, stem_col='g', leaves=True):
+        rows = ['................'] * 16
+        rows = [list(r) for r in rows]
+        for y in range(7, 16):
+            rows[y][7] = stem_col
+        if leaves:
+            for (x, y) in ((6, 11), (5, 10), (8, 13), (9, 12)):
+                rows[y][x] = 'G'
+        for y, line in enumerate(head):
+            for x, ch in enumerate(line):
+                if ch != '.':
+                    rows[y + 2][x + 4] = ch
+        return pic([''.join(r) for r in rows])
+    T['flower_dandelion'] = flower(['..yy..', '.yYYy.', '.yYYy.', '..yy..'])
+    T['flower_rose'] = flower(['.rr.rr.', 'rRRrRRr', '.rRRRr.', '..rrr..'])          # (our poppy: a heart of petals)
+    T['flower_blue_orchid'] = flower(['u.....u', '.uu.uu.', '..uUu..', '.uu.uu.'])
+    T['flower_allium'] = flower(['..PvP..', '.PvPvP.', '.vPvPv.', '..PvP..'])
+    T['flower_houstonia'] = flower(['w.w.w', '.wyw.', 'w.w.w'])
+    T['flower_tulip_red'] = flower(['.r.r.', '.rrr.', '.rRr.', '..r..'])
+    T['flower_tulip_orange'] = flower(['.o.o.', '.ooo.', '.oyo.', '..o..'])
+    T['flower_tulip_white'] = flower(['.w.w.', '.www.', '.wWw.', '..w..'])
+    T['flower_tulip_pink'] = flower(['.p.p.', '.ppp.', '.pRp.', '..p..'])
+    T['flower_oxeye_daisy'] = flower(['.w.w.w.', 'w.www.w', '.wyyyw.', 'w.www.w', '.w.w.w.'])
+    T['mushroom_brown'] = pic(['................'] * 7 + ['.....nnnnn......', '....nmmmmmn.....', '...nmmmmmmmn....',
+                                                        '......cc........', '......cc........', '......cc........',
+                                                        '.....cccc.......', '................', '................'][:9])
+    T['mushroom_red'] = pic(['................'] * 6 + ['.....rrrrr......', '....rrwrrrr.....', '...rrrrrrwrr....',
+                                                       '...rwrrrrrrr....', '......cc........', '......cc........',
+                                                       '......cc........', '.....cccc.......', '................',
+                                                       '................'])
+    def tuft(key, tall=12, fern=False):
+        im = new()
+        px = im.load()
+        rnd = R(key)
+        for blade in range(7):
+            x0 = 2 + blade * 2
+            lean = rnd.choice([-1, 0, 1])
+            h = tall - rnd.randrange(4)
+            for k in range(h):
+                x = x0 + (lean * k) // 5
+                if 0 <= x < 16:
+                    v = int(150 + 90 * (k / h))
+                    px[x, 15 - k] = (v, v, v, 255)
+                    if fern and k % 2 == 0 and 0 <= x + 1 < 16 and k > 2:
+                        px[x + 1, 15 - k] = (v - 20, v - 20, v - 20, 255)
+                        if x - 1 >= 0:
+                            px[x - 1, 15 - k] = (v - 30, v - 30, v - 30, 255)
+        return im
+    T['tallgrass'] = tuft('tall', 11)
+    T['fern'] = tuft('fern', 12, True)
+    T['double_plant_grass_bottom'] = tuft('dgb', 16)
+    T['double_plant_grass_top'] = tuft('dgt', 12)
+    T['double_plant_fern_bottom'] = tuft('dfb', 16, True)
+    T['double_plant_fern_top'] = tuft('dft', 12, True)
+    dead = new()
+    pd = dead.load()
+    for (x, y) in ((7, 15), (7, 14), (7, 13), (6, 12), (5, 11), (4, 10), (8, 12), (9, 11), (10, 10), (11, 9), (7, 11),
+                   (7, 10), (8, 9), (8, 8), (3, 9), (12, 8), (6, 9), (9, 7)):
+        pd[x, y] = rgb('8A6236') + (255,)
+    T['deadbush'] = dead
+    def sapling(key, leaf, trunk='b'):
+        im = new()
+        px = im.load()
+        for y in range(9, 16):
+            px[7, y] = PLANT_COLS[trunk] + (255,)
+        for y in range(2, 10):
+            for x in range(3, 13):
+                if math.hypot(x - 7.5, (y - 6) * 1.3) < 4.3 - ((x * 7 + y * 3) % 5) * 0.25:
+                    px[x, y] = shade(leaf, 0.85 + 0.3 * ((x + y) % 3 == 0)) + (255,)
+        return im
+    T['sapling_oak'] = sapling('so', rgb('5EA83A'))
+    T['sapling_spruce'] = sapling('ss', rgb('3E6E42'))
+    T['sapling_birch'] = sapling('sb', rgb('86C04E'), 'c')
+    T['sapling_jungle'] = sapling('sj', rgb('3E9A2E'))
+    T['sapling_acacia'] = sapling('sa', rgb('8AA83A'))
+    T['sapling_roofed_oak'] = sapling('sd', rgb('2E6A26'))
+    # sugar canes (grey: tinted)
+    reeds = new()
+    pr = reeds.load()
+    for x0 in (3, 8, 12):
+        for y in range(16):
+            v = 200 if y % 5 else 150
+            pr[x0, y] = (v, v, v, 255)
+            pr[x0 + 1, y] = (v - 30, v - 30, v - 30, 255)
+        pr[x0 - 1, (x0 * 3) % 16] = (220, 220, 220, 255)
+    T['reeds'] = reeds
+    def tall_flower(top_rows, key):
+        bottom = tuft(key, 16)
+        # (the lower half of a tall flower: green, not tinted)
+        b2 = new()
+        pb = b2.load()
+        for y in range(16):
+            pb[7, y] = PLANT_COLS['g'] + (255,)
+            if y % 4 == 1:
+                pb[6, y] = pb[8, (y + 1) % 16] = PLANT_COLS['G'] + (255,)
+        t = new()
+        draw_bits(t, top_rows, None, (0, 0), PLANT_COLS)
+        pt = t.load()
+        for y in range(8, 16):
+            pt[7, y] = PLANT_COLS['g'] + (255,)
+        return b2, t
+    sun_top = ['................', '.....yyyyy......', '...yyyyyyyyy....', '..yyyknknkyyy...', '..yyknknknkyy...',
+               '..yyykknkkyyy...', '...yyyyyyyyy....', '.....yyyyy......']
+    T['double_plant_sunflower_bottom'], T['double_plant_sunflower_top'] = tall_flower(sun_top, 'sun')
+    lilac = ['......v.........', '....vPvPv.......', '...PvPvPvP......', '..vPvPvPvPv.....', '...PvPvPvP......',
+             '....vPvPv.......', '......v.........']
+    T['double_plant_syringa_bottom'], T['double_plant_syringa_top'] = tall_flower(lilac, 'lilac')
+    rose = ['....r....r......', '...rRr..rRr.....', '....r..r.r......', '..r..rRr...r....', '.rRr..r...rRr...',
+            '..r.......r.....']
+    T['double_plant_rose_bottom'], T['double_plant_rose_top'] = tall_flower(rose, 'rose')
+    peony = ['................', '....pppppp......', '...pRpRpRpp.....', '..ppRpRpRppp....', '...pppppppp.....',
+             '.....pppp.......']
+    T['double_plant_paeonia_bottom'], T['double_plant_paeonia_top'] = tall_flower(peony, 'peony')
+    return T
+
+
+# ---------------------------------------------------------------- items
+def outline(im, col=(30, 26, 34)):
+    """a dark outline around what is drawn (our icons all have one)"""
+    w, h = im.size
+    src = im.copy().load()
+    px = im.load()
+    for y in range(h):
+        for x in range(w):
+            if src[x, y][3]:
+                continue
+            for dx, dy in ((1, 0), (-1, 0), (0, 1), (0, -1)):
+                X, Y = x + dx, y + dy
+                if 0 <= X < w and 0 <= Y < h and src[X, Y][3] > 128:
+                    px[x, y] = col + (255,)
+                    break
+    return im
+
+
+def line(im, pts, col):
+    px = im.load()
+    for (x0, y0), (x1, y1) in zip(pts, pts[1:]):
+        n = max(abs(x1 - x0), abs(y1 - y0), 1)
+        for k in range(n + 1):
+            x = round(x0 + (x1 - x0) * k / n)
+            y = round(y0 + (y1 - y0) * k / n)
+            if 0 <= x < im.size[0] and 0 <= y < im.size[1]:
+                px[x, y] = col + (255,)
+
+
+def handle(im, length=7):
+    line(im, [(3, 13), (3 + length - 1, 13 - length + 1)], WOODS['oak'][2])
+    line(im, [(4, 13), (3 + length, 13 - length + 1)], WOODS['oak'][1])
+
+
+def tool(kind, mat):
+    d, m, l = METAL[mat] if mat != 'wood' else (WOODS['oak'][1], WOODS['oak'][0], WOODS['oak'][3])
+    im = new()
+    px = im.load()
+    if kind == 'sword':
+        for k in range(9):   # a straight blade, its edge lit
+            x, y = 5 + k, 10 - k
+            px[x, y] = m + (255,)
+            px[x + 1, y] = l + (255,)
+            px[x, y + 1] = d + (255,)
+        line(im, [(3, 9), (7, 13)], rgb('3A3E46'))   # the guard
+        line(im, [(2, 14), (4, 12)], WOODS['oak'][1])
+        px[1, 15] = rgb('F2C53A') + (255,)
+    else:
+        handle(im, 9)
+        if kind == 'pickaxe':   # our pick: one curved head
+            pts = [(4, 3), (6, 2), (9, 2), (11, 3), (12, 4), (13, 6), (14, 9)]
+            line(im, pts, m)
+            line(im, [(4, 4), (6, 3), (9, 3), (11, 4), (12, 5), (13, 7)], d)
+            line(im, [(5, 2), (8, 1), (10, 2)], l)
+        elif kind == 'shovel':
+            for y in range(1, 7):
+                for x in range(9, 15):
+                    if math.hypot(x - 11.5, y - 3.5) < 3.0:
+                        px[x, y] = (l if x + y < 13 else m if x + y < 17 else d) + (255,)
+        elif kind == 'axe':
+            for y in range(1, 8):
+                for x in range(7, 14):
+                    if (x - 7) * 0.6 + (y - 1) * 0.0 < 4 and math.hypot(x - 8, y - 4) < 4.2 and x >= 8:
+                        px[x, y] = (l if x < 10 else m if x < 12 else d) + (255,)
+        elif kind == 'hoe':
+            line(im, [(8, 2), (12, 2), (13, 3)], m)
+            line(im, [(8, 3), (12, 3)], d)
+            px[13, 4] = d + (255,)
+    return outline(im)
+
+
+def armour(kind, mat):
+    d, m, l = METAL[mat]
+    shapes = {
+        'helmet': ['................', '................', '....xxxxxxxx....', '...xllllmmmmx...', '...xlmmmmmmdx...',
+                   '...xmx....xdx...', '...xm......dx...', '...xx......xx...'],
+        'chestplate': ['................', '...xxx....xxx...', '..xlllx..xmmdx..', '..xlmmmxxmmmdx..',
+                       '..xlmmmmmmmmdx..', '...xlmmmmmmdx...', '....xmmmmmmx....', '....xmmlmmdx....',
+                       '....xmmmmmdx....', '....xmmmmmdx....', '....xxxxxxxx....'],
+        'leggings': ['................', '....xxxxxxxx....', '....xllmmmdx....', '....xlmmmmdx....', '....xlmxxmdx....',
+                     '....xlmxxmdx....', '....xlmxxmdx....', '....xlmxxmdx....', '....xlmxxmdx....',
+                     '....xxx..xxx....'],
+        'boots': ['................'] * 6 + ['...xxx....xxx...', '...xlx....xmx...', '...xlx....xmx...',
+                                            '...xlmx...xmdx..', '..xlmmx..xmmdx..', '..xxxxx..xxxxx..'],
+    }
+    im = new()
+    draw_bits(im, shapes[kind], None, (0, 2 if kind != 'boots' else 0),
+              {'x': (34, 30, 38), 'l': l, 'm': m, 'd': d})
+    if mat == 'chain':   # little rings
+        px = im.load()
+        for y in range(16):
+            for x in range(16):
+                if px[x, y][3] and px[x, y][:3] != (34, 30, 38) and (x + y) % 2:
+                    px[x, y] = shade(m, 0.7) + (255,)
+    return im
+
+
+def gem_icon(cols, shape='gem'):
+    d, m, l = cols
+    im = new()
+    if shape == 'gem':
+        rows = ['......xxxx......', '....xxlllmxx....', '...xllllmmmdx...', '..xxxxxxxxxxxx..', '...xlmmmmmmdx....',
+                '....xlmmmmdx....', '.....xlmmdx.....', '......xmdx......', '.......xx.......']
+        draw_bits(im, rows, None, (0, 3), {'x': (34, 30, 38), 'l': l, 'm': m, 'd': d})
+    elif shape == 'ingot':
+        rows = ['....xxxxxxxx....', '...xllllllmmx...', '..xlmmmmmmmmdx..', '.xlmmmmmmmmmmdx.', '.xddddddddddddx.',
+                '.xxxxxxxxxxxxxx.']
+        draw_bits(im, rows, None, (0, 5), {'x': (34, 30, 38), 'l': l, 'm': m, 'd': d})
+    elif shape == 'nugget':
+        rows = ['.xxx.', 'xllmx', 'xlmdx', '.xxx.']
+        draw_bits(im, rows, None, (5, 6), {'x': (34, 30, 38), 'l': l, 'm': m, 'd': d})
+        draw_bits(im, ['.xx.', 'xlmx', 'xmdx', '.xx.'], None, (8, 9), {'x': (34, 30, 38), 'l': l, 'm': m, 'd': d})
+    elif shape == 'lump':
+        rows = ['.....xxxx.......', '...xxllmmxx.....', '..xlllmmmmdx....', '..xlmmmmmmddx...', '.xlmmmmmmmmddx..',
+                '.xmmmmmmmmddx...', '..xmmdddddddx...', '...xxddddxx.....', '.....xxxx.......']
+        draw_bits(im, rows, None, (1, 3), {'x': (20, 18, 24), 'l': l, 'm': m, 'd': d})
+    elif shape == 'dust':
+        rnd = R('dust' + str(cols))
+        px = im.load()
+        for _ in range(26):
+            x, y = int(8 + rnd.gauss(0, 2.4)), int(10 + rnd.gauss(0, 1.6))
+            if 0 <= x < 16 and 0 <= y < 16:
+                px[x, y] = rnd.choice([d, m, m, l]) + (255,)
+    return im
+
+
+def jar(col):
+    """our dyes: a little round pot of colour with a cork"""
+    im = new()
+    rows = ['......nnnn......', '......cccc......', '.....xxxxxx.....', '....xwwwwwwx....', '...xwCCCCCCwx...',
+            '...xCCCCCCCCx...', '...xCCCCCCCdx...', '...xCCCCCCddx...', '....xCCCCddx....', '.....xxxxxx.....']
+    draw_bits(im, rows, None, (0, 3), {'x': (34, 30, 38), 'w': (236, 240, 244), 'C': col, 'd': shade(col, 0.75),
+                                       'n': rgb('8A6448'), 'c': rgb('C8B07A')})
+    return im
+
+
+def item_textures():
+    T = {}
+    mats = {'wood': 'wood', 'stone': 'stone', 'iron': 'iron', 'diamond': 'diamond', 'gold': 'gold'}
+    for k in ('sword', 'shovel', 'pickaxe', 'axe', 'hoe'):
+        for mname, mat in mats.items():
+            T[f'{mname}_{k}'] = tool(k, mat)
+    for part in ('helmet', 'chestplate', 'leggings', 'boots'):
+        for mname, mat in (('leather', 'leather'), ('chainmail', 'chain'), ('iron', 'iron'), ('gold', 'gold'),
+                           ('diamond', 'diamond')):
+            T[f'{mname}_{part}'] = armour(part, mat)
+        T[f'leather_{part}_overlay'] = new()
+        im = armour(part, 'stone')
+        g = grey(im, 0.3, 0.55)
+        T['empty_armor_slot_' + part] = g
+    X = (34, 30, 38)
+    def p(rows, cols, at=(0, 0)):
+        im = new()
+        draw_bits(im, rows, None, at, dict(cols, x=X))
+        return im
+    st = WOODS['oak']
+    T['stick'] = outline(p([], {}))
+    line(T['stick'], [(4, 12), (11, 5)], st[0])
+    line(T['stick'], [(5, 12), (12, 5)], st[1])
+    outline(T['stick'])
+    T['coal'] = gem_icon(GEMS['coal'], 'lump')
+    T['charcoal'] = gem_icon((rgb('2A221C'), rgb('4A3A2E'), rgb('6E5A48')), 'lump')
+    T['diamond'] = gem_icon(GEMS['diamond'])
+    T['emerald'] = gem_icon(GEMS['emerald'])
+    T['iron_ingot'] = gem_icon(METAL['iron'], 'ingot')
+    T['gold_ingot'] = gem_icon(METAL['gold'], 'ingot')
+    T['gold_nugget'] = gem_icon(METAL['gold'], 'nugget')
+    T['redstone_dust'] = gem_icon(GEMS['redstone'], 'dust')
+    T['glowstone_dust'] = gem_icon((rgb('C98F2E'), rgb('F2C24E'), rgb('FFF0B0')), 'dust')
+    T['gunpowder'] = gem_icon((rgb('3A3A40'), rgb('5E5E66'), rgb('8E8E96')), 'dust')
+    T['sugar'] = gem_icon((rgb('C8CCD2'), rgb('E6E9EE'), rgb('FFFFFF')), 'dust')
+    T['flint'] = p(['....xxx.....', '...xllmx....', '..xlmmmdx...', '..xmmmddx...', '...xmddx....', '....xxx.....'],
+                   {'l': rgb('8E8E96'), 'm': rgb('55555E'), 'd': rgb('34343A')}, (3, 4))
+    T['feather'] = p(['.........xx', '........xwx', '.......xwwx', '......xwwx.', '.....xwwgx.', '....xwwgx..',
+                      '...xwwgx...', '..xwgxx....', '..xgx......', '.xgx.......', 'xx.........'],
+                     {'w': rgb('F2F4F6'), 'g': rgb('B8BEC6')}, (2, 2))
+    T['string'] = new()
+    line(T['string'], [(3, 3), (6, 6), (5, 9), (9, 11), (12, 13)], rgb('E8E8EC'))
+    T['bone'] = p(['xx.......', 'xwx......', '.xwx.....', '..xwx....', '...xwx...', '....xwx..', '.....xwxx', '......xwx',
+                   '.......xx'], {'w': rgb('EEE8D8')}, (3, 3))
+    T['leather'] = p(['..xxxxxxx...', '.xlllmmmmx..', 'xlmmmmmmmdx.', 'xmmmmmmmmdx.', '.xmmmmmmddx.', '.xmmmmmddx..',
+                      'xmmmmmmmdx..', '.xxxxxxxx...'], {'l': METAL['leather'][2], 'm': METAL['leather'][1],
+                                                         'd': METAL['leather'][0]}, (2, 4))
+    T['wheat'] = new()
+    for k, x0 in enumerate((5, 7, 9)):
+        line(T['wheat'], [(x0 - 2, 14), (x0 + 2, 4)], rgb('B89A3A'))
+        for y in range(3, 8):
+            T['wheat'].putpixel((x0 + 2 - (7 - y) // 3, y), rgb('E8C858') + (255,))
+    T['seeds_wheat'] = p(['.y...g..', '...g...y', 'g..y.g..', '..g...g.', 'y...y...'],
+                         {'y': rgb('B8D060'), 'g': rgb('6E9A2E')}, (4, 6))
+    T['reeds'] = new()
+    for x0 in (5, 9):
+        line(T['reeds'], [(x0, 2), (x0, 14)], rgb('86C04E'))
+        line(T['reeds'], [(x0 + 1, 2), (x0 + 1, 14)], rgb('5E9A36'))
+    T['paper'] = p(['xxxxxxxxxx', 'xwwwwwwwwx', 'xwgggggwwx', 'xwwwwwwwwx', 'xwggggwwwx', 'xwwwwwwwwx', 'xwgggggwwx',
+                    'xwwwwwwwwx', 'xxxxxxxxxx'], {'w': rgb('F2EEE2'), 'g': rgb('B8B4A8')}, (3, 3))
+    T['book_normal'] = p(['.xxxxxxxxxx', 'xbbbbbbbbbx', 'xbBBBBBBbbx', 'xbBbbbbBbbx', 'xbBBBBBBbbx', 'xbbbbbbbbbx',
+                          'xbbbbbbbbbx', 'xwwwwwwwwwx', '.xxxxxxxxxx'], {'b': rgb('2E7A6E'), 'B': rgb('F2C53A'),
+                                                                         'w': rgb('F2EEE2')}, (2, 3))
+    T['clay_ball'] = p(['..xxxx..', '.xllmmx.', 'xlmmmmdx', 'xmmmmmdx', '.xmmddx.', '..xxxx..'],
+                       {'l': CLAY[2], 'm': CLAY[1], 'd': CLAY[0]}, (4, 5))
+    T['brick'] = gem_icon((rgb('7A3424'), rgb('A4503C'), rgb('C86A52')), 'ingot')
+    T['bowl'] = p(['xxxxxxxxxxxx', 'xlllmmmmmmdx', '.xmmmmmmmdx.', '..xmmmmmdx..', '...xxxxxx...'],
+                  {'l': WOODS['oak'][3], 'm': WOODS['oak'][0], 'd': WOODS['oak'][2]}, (2, 7))
+    T['snowball'] = p(['..xxxx..', '.xwwwwx.', 'xwwwwwbx', 'xwwwwwbx', '.xwwbbx.', '..xxxx..'],
+                      {'w': rgb('F7FAFD'), 'b': rgb('C8D6E6')}, (4, 5))
+    T['egg'] = p(['..xxx..', '.xwwwx.', 'xwwwwwx', 'xwwwwbx', 'xwwwwbx', '.xwbbx.', '..xxx..'],
+                 {'w': rgb('F2E2C8'), 'b': rgb('D6C2A2')}, (5, 4))
+    T['slimeball'] = p(['..xxxx..', '.xllggx.', 'xlggggdx', 'xggggddx', '.xgddddx', '..xxxx..'],
+                       {'l': rgb('B8F0A0'), 'g': rgb('6ED25A'), 'd': rgb('3E9A3A')}, (4, 5))
+    def bucket(fill):
+        rows = ['..xxxxxxxxxx..', '.xffffffffffx.', '.xllmmmmmmmdx.', '..xlmmmmmmdx..', '..xlmmmmmmdx..',
+                '...xlmmmmdx...', '...xxxxxxxx...']
+        cols = {'l': METAL['iron'][2], 'm': METAL['iron'][1], 'd': METAL['iron'][0],
+                'f': fill or METAL['iron'][0]}
+        im = p(rows, cols, (1, 6))
+        line(im, [(2, 6), (4, 2), (11, 2), (13, 6)], rgb('5A606A'))
+        return im
+    T['bucket_empty'] = bucket(None)
+    T['bucket_water'] = bucket(rgb('3A72D0'))
+    T['bucket_lava'] = bucket(rgb('FF7A22'))
+    T['bucket_milk'] = bucket(rgb('F7F7F2'))
+    T['door_wood'] = p(['xxxxxxx', 'xbbbbbx', 'xb.w.bx', 'xbwwwbx', 'xb.w.bx', 'xbbbbbx', 'xbBBBbx', 'xbbbbyx',
+                        'xbBBBbx', 'xbbbbbx', 'xbBBBbx', 'xbbbbbx', 'xxxxxxx'],
+                       {'b': WOODS['oak'][0], 'B': WOODS['oak'][2], 'w': rgb('A8D8F0'), 'y': rgb('C5CBD1')}, (5, 2))
+    T['bed'] = p(['xx..........', 'xwxxxxxxxxxx', 'xwwbbbbbbbbx', 'xxxxxxxxxxxx', 'xo........ox'],
+                 {'w': rgb('EEF0F2'), 'b': rgb('3B6FC4'), 'o': WOODS['oak'][2]}, (2, 6))
+    def dial(face, hand):
+        im = new()
+        px = im.load()
+        for y in range(16):
+            for x in range(16):
+                d = math.hypot(x - 7.5, y - 7.5)
+                if d < 6.5:
+                    px[x, y] = face + (255,)
+                elif d < 7.6:
+                    px[x, y] = rgb('5A606A') + (255,)
+        line(im, [(8, 8), hand], rgb('C93A33'))
+        line(im, [(7, 7), (5, 10)], rgb('3A3E46'))
+        return im
+    T['compass'] = dial(rgb('DDE2E8'), (10, 3))
+    T['clock'] = dial(rgb('F2D278'), (8, 3))
+    rod = new()
+    line(rod, [(2, 14), (12, 3)], WOODS['oak'][2])
+    line(rod, [(12, 3), (13, 6), (13, 12)], rgb('E8E8EC'))
+    rod.putpixel((13, 13), rgb('C93A33') + (255,))
+    T['fishing_rod_uncast'] = rod
+    rc = new()
+    line(rc, [(2, 14), (12, 3)], WOODS['oak'][2])
+    T['fishing_rod_cast'] = rc
+    bow = new()
+    line(bow, [(3, 2), (7, 3), (11, 6), (13, 10), (14, 14)], WOODS['oak'][2])
+    line(bow, [(3, 2), (14, 14)], rgb('E8E8EC'))
+    T['bow_standby'] = outline(bow)
+    arrow = new()
+    line(arrow, [(3, 12), (11, 4)], WOODS['oak'][0])
+    arrow.putpixel((12, 3), METAL['stone'][2] + (255,))
+    arrow.putpixel((11, 3), METAL['stone'][1] + (255,))
+    arrow.putpixel((12, 4), METAL['stone'][1] + (255,))
+    for (x, y) in ((2, 12), (3, 13), (2, 13), (4, 13)):
+        arrow.putpixel((x, y), rgb('F2F4F6') + (255,))
+    T['arrow'] = outline(arrow)
+    sh = new()
+    line(sh, [(3, 3), (9, 9)], METAL['iron'][1])
+    line(sh, [(3, 9), (9, 3)], METAL['iron'][1])
+    for c in ((10, 10), (11, 11), (10, 11), (11, 10)):
+        sh.putpixel(c, rgb('C93A33') + (255,))
+    for c in ((10, 2), (11, 1), (2, 10), (1, 11)):
+        sh.putpixel(c, rgb('C93A33') + (255,))
+    T['shears'] = outline(sh)
+    fs = new()
+    draw_bits(fs, ['.xxx.', 'xlmmx', 'xmmdx', '.xxx.'], None, (2, 3), {'x': X, 'l': METAL['iron'][2],
+                                                                       'm': METAL['iron'][1], 'd': METAL['iron'][0]})
+    draw_bits(fs, ['.xx.', 'xmmx', 'xmdx', '.xx.'], None, (9, 9), {'x': X, 'm': rgb('55555E'), 'd': rgb('34343A')})
+    fs.putpixel((8, 8), rgb('FFC23A') + (255,))
+    T['flint_and_steel'] = fs
+    for c, col in DYES.items():
+        T['dye_powder_' + c] = jar(col)
+    # food: small round shapes, each its own colours
+    def food(rows, cols, at=(2, 4)):
+        return p(rows, cols, at)
+    T['apple'] = food(['....bg...', '..xxbxx..', '.xrrrrrx.', 'xrRrrrrrx', 'xrrrrrrdx', 'xrrrrrddx', '.xrrrddx.',
+                       '..xxxxx..'], {'b': rgb('6E5032'), 'g': rgb('5EA83A'), 'r': rgb('D23A3A'), 'R': rgb('FF8A7A'),
+                                      'd': rgb('9A2424')}, (3, 3))
+    T['apple_golden'] = food(['....bg...', '..xxbxx..', '.xyyyyyx.', 'xyYyyyyyx', 'xyyyyyyox', 'xyyyyyoox',
+                              '.xyyyoox.', '..xxxxx..'], {'b': rgb('6E5032'), 'g': rgb('5EA83A'), 'y': rgb('F2C53A'),
+                                                          'Y': rgb('FFF0A0'), 'o': rgb('C2901A')}, (3, 3))
+    T['bread'] = food(['...xxxxxxx..', '..xlllmmmmx.', '.xlmlmmlmmdx', 'xlmmmmmmmmdx', 'xmmmmmmmmddx', '.xxxxxxxxxx.'],
+                      {'l': rgb('E8B868'), 'm': rgb('C88A3E'), 'd': rgb('9A6228')}, (2, 5))
+    def meat(c1, c2, c3, bone=True, at=(2, 4)):
+        rows = ['...xxxxx....', '..xlmmmmx...', '.xlmmmmmmx..', 'xlmmmmmmmdx.', 'xmmmmmmmddx.', '.xmmmmmddx..',
+                '..xxmmdx....', '....xwx.....', '....xwx.....', '.....x......']
+        cols = {'l': c3, 'm': c1, 'd': c2, 'w': rgb('EEE8D8')}
+        if not bone:
+            rows = rows[:7]
+        return food(rows, cols, at)
+    T['porkchop_raw'] = meat(rgb('F2A0A8'), rgb('D2707A'), rgb('FFD0D4'))
+    T['porkchop_cooked'] = meat(rgb('C2804E'), rgb('8A5230'), rgb('E8B078'))
+    T['beef_raw'] = meat(rgb('D2423A'), rgb('9A2A26'), rgb('F28A7E'), False)
+    T['beef_cooked'] = meat(rgb('8A5230'), rgb('5E3620'), rgb('B07848'), False)
+    T['chicken_raw'] = meat(rgb('F2D2C0'), rgb('D8AE98'), rgb('FFF0E6'))
+    T['chicken_cooked'] = meat(rgb('D8964E'), rgb('A8662E'), rgb('F2C07E'))
+    T['mutton_raw'] = meat(rgb('D25A5A'), rgb('9A3A3A'), rgb('F2EEE2'))
+    T['mutton_cooked'] = meat(rgb('A86A40'), rgb('7A4428'), rgb('E2D2BE'))
+    T['mud_cake'] = food(['...xxxxxx...', '.xxmmMmmmxx.', 'xmmMmmmmMmmx', 'xmmmmdmmmmdx', 'xdmmmmmmmddx',
+                          '.xddmmmdddx.', '...xxxxxx...'], {'m': rgb('7A5A36'), 'M': rgb('9C7A50'), 'd': rgb('54402A')},
+                         (2, 5))
+    T['beetle_eye'] = food(['..xxxx..', '.xrrRRx.', 'xrrkkrRx', 'xrkkkkrx', 'xrrkkrrx', '.xrrrrx.', '..xxxx..'],
+                           {'r': rgb('3E8A5A'), 'R': rgb('8AD6A0'), 'k': rgb('10261A')}, (4, 4))
+    T['mushroom_stew'] = food(['.nnrrnn.....', 'xxxxxxxxxxxx', 'xlllmmmmmmdx', '.xmmmmmmmdx.', '..xmmmmmdx..',
+                               '...xxxxxx...'], {'n': rgb('A7805E'), 'r': rgb('D23A3A'), 'l': WOODS['oak'][3],
+                                                 'm': WOODS['oak'][0], 'd': WOODS['oak'][2]}, (2, 6))
+    T['cookie'] = food(['..xxxx..', '.xmmmmx.', 'xmkmmmmx', 'xmmmmkmx', 'xmkmmmmx', '.xmmmkx.', '..xxxx..'],
+                       {'m': rgb('D8964E'), 'k': rgb('4A2E1A')}, (4, 4))
+    T['melon'] = food(['xxxxxxxxxx', '.xrrrkrrx.', '..xrrrrx..', '...xrrx...', '....gg....'],
+                      {'r': rgb('F2504E'), 'k': rgb('2A1A14'), 'g': rgb('3E8A2E')}, (3, 6))
+    T['carrot'] = food(['.........gg', '........ggx', '.......xox.', '......xoox.', '.....xoox..', '....xoox...',
+                        '...xoox....', '..xoox.....', '.xox.......', '.xx........'],
+                       {'g': rgb('5EA83A'), 'o': rgb('F08A2C')}, (2, 3))
+    T['potato'] = food(['..xxxx...', '.xllmmx..', 'xlmmmkmx.', 'xmkmmmmdx', '.xmmmmddx', '..xxxxxx.'],
+                       {'l': rgb('E8C890'), 'm': rgb('D0A866'), 'd': rgb('A8803E'), 'k': rgb('8A6236')}, (3, 5))
+    T['potato_baked'] = food(['..xxxx...', '.xllmmx..', 'xlmyymmx.', 'xmyyymmdx', '.xmmmmddx', '..xxxxxx.'],
+                             {'l': rgb('D8A866'), 'm': rgb('B07A3E'), 'd': rgb('7A5228'), 'y': rgb('FFE68A')}, (3, 5))
+    T['potato_poisonous'] = food(['..xxxx...', '.xllmmx..', 'xlmmmkmx.', 'xmkmmmmdx', '.xmmmmddx', '..xxxxxx.'],
+                                 {'l': rgb('C8D890'), 'm': rgb('A0B866'), 'd': rgb('6E8A3E'), 'k': rgb('4E6A2E')}, (3, 5))
+    T['pumpkin_pie'] = food(['...xxxxxx...', '.xxooooooxx.', 'xoOooooOooox', 'xbbbbbbbbbbx', '.xxxxxxxxxx.'],
+                            {'o': rgb('E07E26'), 'O': rgb('F2C08A'), 'b': rgb('C88A3E')}, (2, 6))
+    def fish(c1, c2, c3, at=(1, 5)):
+        rows = ['.....xxxxx.....', '...xxlllmmxx.x.', '..xlmmmkmmmdxdx', '.xlmmmmmmmmmddx', '..xmmmmmmmmdxdx',
+                '...xxmmmddxx.x.', '.....xxxxx.....']
+        return food(rows, {'l': c3, 'm': c1, 'd': c2, 'k': rgb('1A1A1E')}, at)
+    T['fish_cod_raw'] = fish(rgb('8EA4B8'), rgb('5E7488'), rgb('C8D6E2'))
+    T['fish_salmon_raw'] = fish(rgb('E07A5E'), rgb('A8503E'), rgb('F2B8A0'))
+    T['fish_clownfish_raw'] = fish(rgb('7E3DBD'), rgb('4E1E8A'), rgb('F2F4F6'))     # (ours: a violet fish)
+    T['fish_pufferfish_raw'] = food(['..x.x.x..', '.xxxxxxx.', 'xyyyyyykx', 'xyyyyyyyx', 'xyywyyyyx', '.xxxxxxx.',
+                                     '..x.x.x..'], {'y': rgb('F2C53A'), 'w': rgb('F2F4F6'), 'k': rgb('1A1A1E')}, (3, 4))
+    T['fish_cod_cooked'] = fish(rgb('C2A07A'), rgb('8A6A48'), rgb('E8D2B0'))
+    T['fish_salmon_cooked'] = fish(rgb('C8704E'), rgb('8A4A30'), rgb('E8A684'))
+    return T
+
+
+# ---------------------------------------------------------------- GUI
+PANEL = rgb('EDE4CF')        # our panels: warm cream with a brown rim
+PANEL_HI = rgb('FBF6EA')
+PANEL_LO = rgb('B8A88A')
+RIM = rgb('5A4632')
+SLOT = rgb('9CB0A8')         # slots: sage
+SLOT_LO = rgb('6E8580')
+SLOT_HI = rgb('C8D6D0')
+
+
+def rrect(im, x, y, w, h, fill, r=3, rim=None):
+    d = ImageDraw.Draw(im)
+    if rim:
+        d.rounded_rectangle([x, y, x + w - 1, y + h - 1], r, fill=rim + (255,))
+        d.rounded_rectangle([x + 1, y + 1, x + w - 2, y + h - 2], max(0, r - 1), fill=fill + (255,))
+    else:
+        d.rounded_rectangle([x, y, x + w - 1, y + h - 1], r, fill=fill + (255,))
+
+
+def panel(w, h):
+    im = new(w, h)
+    rrect(im, 0, 0, w, h, PANEL, 5, RIM)
+    d = ImageDraw.Draw(im)
+    d.line([(4, 2), (w - 5, 2)], fill=PANEL_HI + (255,))
+    d.line([(4, h - 3), (w - 5, h - 3)], fill=PANEL_LO + (255,))
+    return im
+
+
+def slot(im, x, y, big=False):
+    """a slot for the item drawn at (x, y): 16 x 16 inside a rounded sage frame"""
+    s = 26 if big else 18
+    o = 5 if big else 1
+    d = ImageDraw.Draw(im)
+    d.rounded_rectangle([x - o, y - o, x - o + s - 1, y - o + s - 1], 2, fill=SLOT_LO + (255,))
+    d.rounded_rectangle([x - o + 1, y - o + 1, x - o + s - 1, y - o + s - 1], 2, fill=SLOT_HI + (255,))
+    d.rectangle([x - o + 1, y - o + 1, x - o + s - 2, y - o + s - 2], fill=SLOT + (255,))
+
+
+def arrow_right(im, x, y, col=RIM):
+    d = ImageDraw.Draw(im)
+    d.rectangle([x, y + 6, x + 14, y + 9], fill=col + (255,))
+    d.polygon([(x + 14, y + 2), (x + 21, y + 7), (x + 14, y + 13)], fill=col + (255,))
+
+
+# NumBlocks' own screens: slots 20 apart, panels 200 wide (the bag: three rows from y 88, the
+# hotbar on its own from y 154); src/gui.c (gui_open) puts the slots at the same places
+PITCH, BAG_X, BAG_Y, HOT_Y, PANEL_W, PANEL_H = 20, 11, 88, 154, 200, 180
+
+
+def player_slots(im, y_main=BAG_Y, y_hot=HOT_Y, x0=BAG_X):
+    for r in range(3):
+        for c in range(9):
+            slot(im, x0 + c * PITCH, y_main + r * PITCH)
+    d = ImageDraw.Draw(im)
+    d.line([(x0 - 2, y_hot - 5), (x0 + 8 * PITCH + 17, y_hot - 5)], fill=PANEL_LO + (255,))   # (the hotbar apart)
+    for c in range(9):
+        slot(im, x0 + c * PITCH, y_hot)
+
+
+def gui_images():
+    G = {}
+    inv = new(256, 256)
+    over(inv, panel(PANEL_W, PANEL_H))
+    for i in range(4):   # armour, two by two
+        slot(inv, 11 + (i & 1) * PITCH, 12 + (i >> 1) * PITCH)
+    rrect(inv, 56, 6, 40, 64, rgb('2E3A4E'), 4)   # where the player stands
+    for i in range(4):
+        slot(inv, 111 + (i & 1) * PITCH, 22 + (i >> 1) * PITCH)
+    arrow_right(inv, 150, 32)
+    slot(inv, 177, 32, True)
+    player_slots(inv)
+    G['gui/bag'] = inv
+    ct = new(256, 256)
+    over(ct, panel(PANEL_W, PANEL_H))
+    for i in range(9):
+        slot(ct, 31 + (i % 3) * PITCH, 15 + (i // 3) * PITCH)
+    arrow_right(ct, 102, 35)
+    slot(ct, 140, 35, True)
+    player_slots(ct)
+    G['gui/workbench'] = ct
+    fu = new(256, 256)
+    over(fu, panel(PANEL_W, PANEL_H))
+    slot(fu, 21, 36)                        # fuel, then its flame, then what cooks, then what comes out
+    d = ImageDraw.Draw(fu)
+    d.polygon([(41, 49), (47, 37), (53, 49)], fill=PANEL_LO + (255,))
+    slot(fu, 61, 36)
+    arrow_right(fu, 88, 36, PANEL_LO)
+    slot(fu, 130, 36, True)
+    player_slots(fu)
+    # the burning flame and the filled arrow, beside the panel
+    flame = new(14, 14)
+    fd = ImageDraw.Draw(flame)
+    fd.polygon([(1, 13), (7, 0), (13, 13)], fill=rgb('F2602E') + (255,))
+    fd.polygon([(4, 13), (7, 5), (10, 13)], fill=rgb('FFC23A') + (255,))
+    fu.alpha_composite(flame, (220, 0))
+    ar = new(24, 17)
+    arrow_right(ar, 0, 1, rgb('2A8A8C'))
+    fu.alpha_composite(ar, (220, 20))
+    G['gui/oven'] = fu
+    ch = new(256, 256)
+    over(ch, panel(PANEL_W, PANEL_H))
+    for i in range(27):
+        slot(ch, 11 + (i % 9) * PITCH, 15 + (i // 9) * PITCH)
+    player_slots(ch)
+    G['gui/chest'] = ch
+    cr = new(256, 256)
+    over(cr, panel(216, 148))
+    for i in range(45):
+        slot(cr, 11 + (i % 9) * PITCH, 18 + (i // 9) * PITCH)
+    for c in range(9):
+        slot(cr, 11 + c * PITCH, 124)
+    rrect(cr, 196, 17, 14, 99, SLOT_LO, 3)
+    G['gui/creative'] = cr
+    tabs = new(256, 256)
+    for k, (y, sel) in enumerate(((0, False), (32, True), (64, False), (96, True))):
+        t = new(28, 32)
+        top = k < 2
+        rrect(t, 0, 0, 28, 32, PANEL if sel else PANEL_LO, 4, RIM)
+        if sel:   # (the chosen tab joins the panel)
+            ImageDraw.Draw(t).rectangle([1, 26 if top else 0, 26, 31 if top else 5], fill=PANEL + (255,))
+        tabs.alpha_composite(t, (0, y))
+    sc = new(12, 15)
+    rrect(sc, 0, 0, 12, 15, rgb('2A8A8C'), 3, rgb('1E5E60'))
+    tabs.alpha_composite(sc, (232, 0))
+    G['gui/creative_tabs'] = tabs
+    # widgets: the hotbar, its selection, the buttons
+    wd = new(256, 256)
+    hb = new(182, 22)
+    rrect(hb, 0, 0, 182, 22, rgb('1E2633'), 4)
+    for c in range(9):
+        rrect(hb, 2 + c * 20, 2, 18, 18, rgb('3A4658'), 3)
+        ImageDraw.Draw(hb).rectangle([4 + c * 20, 4, 17 + c * 20, 17], fill=rgb('2B3544') + (255,))
+    wd.alpha_composite(hb, (0, 0))
+    sel = new(24, 24)
+    d = ImageDraw.Draw(sel)
+    d.rounded_rectangle([0, 0, 23, 23], 5, outline=rgb('F2C53A') + (255,), width=2)
+    wd.alpha_composite(sel, (0, 22))
+    for k, (y, col, rim) in enumerate(((46, rgb('6E7480'), rgb('4A4E56')), (66, rgb('2A8A8C'), rgb('1A5A5C')),
+                                       (86, rgb('3FB0A8'), rgb('F2C53A')))):
+        b = new(200, 20)
+        rrect(b, 0, 0, 200, 20, col, 6, rim)
+        ImageDraw.Draw(b).line([(6, 2), (193, 2)], fill=shade(col, 1.25) + (255,))
+        wd.alpha_composite(b, (0, y))
+    G['gui/widgets'] = wd
+    G['gui/icons'] = icons()
+    bg = new()
+    pb = bg.load()
+    for y in range(16):
+        for x in range(16):   # the menus' backdrop: our tile of little squares (the game darkens it)
+            c = rgb('3E8A8C') if (x % 8 < 7 and y % 8 < 7) else rgb('2A5E60')
+            if (x // 8 + y // 8) % 2:
+                c = shade(c, 0.85)
+            pb[x, y] = c + (255,)
+    G['gui/options_background'] = bg
+    return G
+
+
+def icons():
+    im = new(256, 256)
+    def at(x, y, rows, cols):
+        draw_bits(im, rows, None, (x, y), cols)
+    # the crosshair: a small open ring
+    at(0, 0, ['................'] * 6 + ['......xxxx......'[:16]][:0], {})
+    for (x, y) in ((7, 5), (8, 5), (7, 10), (8, 10), (5, 7), (5, 8), (10, 7), (10, 8), (6, 6), (9, 6), (6, 9), (9, 9)):
+        im.putpixel((x, y), (255, 255, 255, 255))
+    heart = ['.xx.xx...', 'xRRxrrx..', 'xRrrrrrx.', 'xrrrrrrx.', '.xrrrrx..', '..xrrx...', '...xx....', '.........',
+             '.........']
+    heart_bg = ['.xx.xx...', 'xddxddx..', 'xdddddx..', 'xdddddx..', '.xdddx...', '..xdx....', '...x.....',
+                '.........', '.........']
+    half = [r[:4] + ''.join('d' if ch in 'rR' else ch for ch in r[4:]) for r in heart]
+    K = {'x': (26, 18, 30), 'd': (70, 54, 62)}
+    at(16, 0, heart_bg, K)
+    at(52, 0, heart, dict(K, R=rgb('FFB0A0'), r=rgb('F2504E')))
+    at(61, 0, half, dict(K, R=rgb('FFB0A0'), r=rgb('F2504E')))
+    at(88, 0, heart, dict(K, R=rgb('D8F0A0'), r=rgb('7AA83A')))
+    at(97, 0, half, dict(K, R=rgb('D8F0A0'), r=rgb('7AA83A')))
+    at(25, 0, heart_bg, dict(K, d=(240, 240, 240)))
+    # food: our little loaf of bread
+    loaf = ['.........', '..xxxxx..', '.xlllmmx.', 'xlmlmmmdx', 'xmmmmmddx', '.xxxxxxx.', '.........', '.........',
+            '.........']
+    loaf_bg = [r.replace('l', 'd').replace('m', 'd') for r in loaf]
+    lhalf = [r[:4] + ''.join('d' if ch in 'lm' else ch for ch in r[4:]) for r in loaf]
+    FK = dict(K, l=rgb('F2C878'), m=rgb('D8964E'))
+    at(16, 27, loaf_bg, K)
+    at(52, 27, loaf, FK)
+    at(61, 27, lhalf, FK)
+    at(133, 27, loaf_bg, dict(K, d=rgb('4E5A2E')))
+    at(88, 27, loaf, dict(FK, l=rgb('B8C878'), m=rgb('7A8A3E')))
+    at(97, 27, lhalf, dict(FK, l=rgb('B8C878'), m=rgb('7A8A3E')))
+    # armour: a shield
+    shield = ['.xxxxxxx.', 'xllmmmmdx', 'xlmmmmmdx', 'xlmmmmmdx', '.xmmmmdx.', '.xmmmmdx.', '..xmmdx..', '...xxx...',
+              '.........']
+    SK = dict(K, l=rgb('F1F4F6'), m=rgb('C5CBD1'))
+    at(16, 9, [r.replace('l', 'd').replace('m', 'd') for r in shield], K)
+    at(34, 9, shield, SK)
+    at(25, 9, [r[:4] + ''.join('d' if ch in 'lm' else ch for ch in r[4:]) for r in shield], SK)
+    bubble = ['..xxxx...', '.xwbbbx..', 'xwbbbbbx.', 'xbbbbbbx.', 'xbbbbbbx.', '.xbbbbx..', '..xxxx...', '.........',
+              '.........']
+    at(16, 18, bubble, dict(K, w=(255, 255, 255), b=rgb('8EC4F0')))
+    at(25, 18, ['.x...x...', '..x.x....', '.........', '..x.x....', '.x...x...'], K)
+    # experience: a violet bar
+    d = ImageDraw.Draw(im)
+    d.rounded_rectangle([0, 64, 181, 68], 2, fill=(26, 18, 30, 255))
+    d.rounded_rectangle([0, 69, 181, 73], 2, fill=rgb('B06AF0') + (255,))
+    d.line([(1, 70), (180, 70)], fill=rgb('E0B8FF') + (255,))
+    return im
+
+
+def environment():
+    E = {}
+    sun = new(32, 32)
+    px = sun.load()
+    for y in range(32):
+        for x in range(32):
+            dd = math.hypot(x - 15.5, y - 15.5)
+            if dd < 7:
+                px[x, y] = (255, 246, 210, 255)
+            elif dd < 11:
+                k = (11 - dd) / 4
+                px[x, y] = (int(255 * k), int(214 * k), int(120 * k), 255)
+    E['environment/sun'] = sun
+    moon = new(128, 64)
+    pm = moon.load()
+    for ph in range(8):
+        ox, oy = (ph % 4) * 32 + 8, (ph // 4) * 32 + 8
+        lit = math.cos(ph / 8 * 2 * math.pi)   # 1 full .. -1 new
+        for y in range(16):
+            for x in range(16):
+                dx, dy = x - 7.5, y - 7.5
+                if dx * dx + dy * dy > 6.8 ** 2:
+                    continue
+                edge = math.sqrt(max(0, 6.8 ** 2 - dy * dy))
+                term = edge * lit * (1 if ph < 4 else -1)
+                on = dx > -term if ph < 4 else dx < term
+                v = 230 if on else 40
+                if on and (hsh_(x, y, ph) % 9 == 0):
+                    v = 200
+                pm[ox + x, oy + y] = (v, v, min(255, v + 10), 255)
+    E['environment/moon_phases'] = moon
+    # clouds: round puffs in rows, one bit a cell
+    cl = new(256, 256)
+    rnd = R('clouds')
+    d = ImageDraw.Draw(cl)
+    for _ in range(46):   # (our clouds: round heaps, a big puff ringed by smaller ones)
+        x, y = rnd.randrange(256), rnd.randrange(256)
+        R0 = rnd.randint(4, 7)
+        puffs = [(x, y, R0)] + [(x + int(math.cos(a) * R0 * 1.2), y + int(math.sin(a) * R0 * 1.2), rnd.randint(2, R0 - 1))
+                                for a in [rnd.random() * 6.28 for _ in range(rnd.randint(3, 6))]]
+        for cx, cy, r in puffs:
+            for ox in (-256, 0, 256):
+                for oy in (-256, 0, 256):
+                    d.ellipse([cx + ox - r, cy + oy - r, cx + ox + r, cy + oy + r], fill=(255, 255, 255, 255))
+    E['environment/clouds'] = cl
+    rain = new(64, 256)
+    snow = new(64, 256)
+    rr, rs_ = rain.load(), snow.load()
+    rnd = R('rain')
+    for x in range(64):
+        for _ in range(3):
+            y0 = rnd.randrange(256)
+            n = rnd.randint(5, 11)
+            a = rnd.randint(110, 210)
+            for k in range(n):
+                rr[x, (y0 + k) % 256] = (190, 210, 240, a)
+        for _ in range(4):
+            y0 = rnd.randrange(256)
+            rs_[x, y0] = (250, 252, 255, 230)
+            rs_[x, (y0 + 1) % 256] = (250, 252, 255, 160)
+    E['environment/rain'] = rain
+    E['environment/snow'] = snow
+    par = new(128, 128)
+    draw_bits(par, ['..xx....', '.xrrx...', 'xrrrrx..', 'xwwwwx..', '.xwwx...', '..xx....'], None, (8, 16),
+              {'x': (26, 18, 30), 'r': rgb('E8401E'), 'w': (245, 245, 245)})
+    E['particle/particles'] = par
+    return E
+
+
+def hsh_(*a):
+    h = 2166136261
+    for v in a:
+        h = ((h ^ (v & 0xFFFFFFFF)) * 16777619) & 0xFFFFFFFF
+    return h
+
+
+def destroy_stages():
+    """our cracks: lines that branch out from the middle, a few more at each stage"""
+    rnd = R('cracks')
+    segs = []
+    for k in range(10):
+        for _ in range(2 + k // 2):
+            if segs and rnd.random() < 0.7:
+                x, y = rnd.choice(segs)[2:]
+            else:
+                x, y = 7 + rnd.randint(-1, 1), 7 + rnd.randint(-1, 1)
+            ang = rnd.random() * 2 * math.pi
+            ln = rnd.randint(2, 4)
+            x1, y1 = int(x + math.cos(ang) * ln), int(y + math.sin(ang) * ln)
+            segs.append((x, y, max(0, min(15, x1)), max(0, min(15, y1))))
+        im = new()
+        for (x0, y0, x1, y1) in segs:
+            line(im, [(x0, y0), (x1, y1)], (20, 20, 20))
+        yield im
+
+
+# ---------------------------------------------------------------- the font: our own 5 x 7 letters (8 x 8 cells)
+FONT = {
+    ' ': [], '!': ['x', 'x', 'x', 'x', 'x', '.', 'x'], '"': ['x.x', 'x.x'], '#': ['.x.x.', 'xxxxx', '.x.x.', '.x.x.',
+                                                                                'xxxxx', '.x.x.'],
+    '$': ['..x..', '.xxxx', 'x.x..', '.xxx.', '..x.x', 'xxxx.', '..x..'], '%': ['xx..x', 'xx.x.', '..x..', '.x...',
+                                                                                 'x..xx', '...xx'],
+    '&': ['.xx..', 'x..x.', '.xx..', 'x..xx', 'x..x.', '.xx.x'], "'": ['x', 'x'], '(': ['.x', 'x.', 'x.', 'x.', 'x.',
+                                                                                      'x.', '.x'],
+    ')': ['x.', '.x', '.x', '.x', '.x', '.x', 'x.'], '*': ['', 'x.x', '.x.', 'x.x'], '+': ['', '..x..', '..x..',
+                                                                                          'xxxxx', '..x..', '..x..'],
+    ',': ['', '', '', '', '', '.x', 'x.'], '-': ['', '', '', 'xxxx'], '.': ['', '', '', '', '', '', 'x'],
+    '/': ['....x', '...x.', '..x..', '.x...', 'x....'], '0': ['.xxx.', 'x..xx', 'x.x.x', 'x.x.x', 'xx..x', 'x...x',
+                                                            '.xxx.'],
+    '1': ['.x.', 'xx.', '.x.', '.x.', '.x.', '.x.', 'xxx'], '2': ['.xxx.', 'x...x', '....x', '..xx.', '.x...',
+                                                               'x....', 'xxxxx'],
+    '3': ['xxxx.', '....x', '...x.', '.xxx.', '....x', 'x...x', '.xxx.'], '4': ['...x.', '..xx.', '.x.x.', 'x..x.',
+                                                                             'xxxxx', '...x.', '...x.'],
+    '5': ['xxxxx', 'x....', 'xxxx.', '....x', '....x', 'x...x', '.xxx.'], '6': ['..xx.', '.x...', 'x....', 'xxxx.',
+                                                                             'x...x', 'x...x', '.xxx.'],
+    '7': ['xxxxx', '....x', '...x.', '..x..', '..x..', '.x...', '.x...'], '8': ['.xxx.', 'x...x', 'x...x', '.xxx.',
+                                                                             'x...x', 'x...x', '.xxx.'],
+    '9': ['.xxx.', 'x...x', 'x...x', '.xxxx', '....x', '...x.', '.xx..'], ':': ['', '', 'x', '', '', 'x'],
+    ';': ['', '', '.x', '', '', '.x', 'x.'], '<': ['...x', '..x.', '.x..', 'x...', '.x..', '..x.', '...x'],
+    '=': ['', '', 'xxxx', '', 'xxxx'], '>': ['x...', '.x..', '..x.', '...x', '..x.', '.x..', 'x...'],
+    '?': ['.xxx.', 'x...x', '...x.', '..x..', '..x..', '', '..x..'], '@': ['.xxx.', 'x...x', 'x.xxx', 'x.x.x',
+                                                                          'x.xxx', 'x....', '.xxx.'],
+    'A': ['.xxx.', 'x...x', 'x...x', 'xxxxx', 'x...x', 'x...x', 'x...x'], 'B': ['xxxx.', 'x...x', 'x...x', 'xxxx.',
+                                                                             'x...x', 'x...x', 'xxxx.'],
+    'C': ['.xxx.', 'x...x', 'x....', 'x....', 'x....', 'x...x', '.xxx.'], 'D': ['xxx..', 'x..x.', 'x...x', 'x...x',
+                                                                             'x...x', 'x..x.', 'xxx..'],
+    'E': ['xxxxx', 'x....', 'x....', 'xxxx.', 'x....', 'x....', 'xxxxx'], 'F': ['xxxxx', 'x....', 'x....', 'xxxx.',
+                                                                             'x....', 'x....', 'x....'],
+    'G': ['.xxx.', 'x...x', 'x....', 'x.xxx', 'x...x', 'x...x', '.xxxx'], 'H': ['x...x', 'x...x', 'x...x', 'xxxxx',
+                                                                             'x...x', 'x...x', 'x...x'],
+    'I': ['xxx', '.x.', '.x.', '.x.', '.x.', '.x.', 'xxx'], 'J': ['..xxx', '...x.', '...x.', '...x.', 'x..x.',
+                                                               'x..x.', '.xx..'],
+    'K': ['x...x', 'x..x.', 'x.x..', 'xx...', 'x.x..', 'x..x.', 'x...x'], 'L': ['x....', 'x....', 'x....', 'x....',
+                                                                             'x....', 'x....', 'xxxxx'],
+    'M': ['x...x', 'xx.xx', 'x.x.x', 'x.x.x', 'x...x', 'x...x', 'x...x'], 'N': ['x...x', 'xx..x', 'x.x.x', 'x..xx',
+                                                                             'x...x', 'x...x', 'x...x'],
+    'O': ['.xxx.', 'x...x', 'x...x', 'x...x', 'x...x', 'x...x', '.xxx.'], 'P': ['xxxx.', 'x...x', 'x...x', 'xxxx.',
+                                                                             'x....', 'x....', 'x....'],
+    'Q': ['.xxx.', 'x...x', 'x...x', 'x...x', 'x.x.x', 'x..x.', '.xx.x'], 'R': ['xxxx.', 'x...x', 'x...x', 'xxxx.',
+                                                                             'x.x..', 'x..x.', 'x...x'],
+    'S': ['.xxxx', 'x....', 'x....', '.xxx.', '....x', '....x', 'xxxx.'], 'T': ['xxxxx', '..x..', '..x..', '..x..',
+                                                                             '..x..', '..x..', '..x..'],
+    'U': ['x...x', 'x...x', 'x...x', 'x...x', 'x...x', 'x...x', '.xxx.'], 'V': ['x...x', 'x...x', 'x...x', 'x...x',
+                                                                             '.x.x.', '.x.x.', '..x..'],
+    'W': ['x...x', 'x...x', 'x...x', 'x.x.x', 'x.x.x', 'xx.xx', 'x...x'], 'X': ['x...x', '.x.x.', '..x..', '..x..',
+                                                                             '..x..', '.x.x.', 'x...x'],
+    'Y': ['x...x', 'x...x', '.x.x.', '..x..', '..x..', '..x..', '..x..'], 'Z': ['xxxxx', '....x', '...x.', '..x..',
+                                                                             '.x...', 'x....', 'xxxxx'],
+    '[': ['xx', 'x.', 'x.', 'x.', 'x.', 'x.', 'xx'], '\\': ['x....', '.x...', '..x..', '...x.', '....x'],
+    ']': ['xx', '.x', '.x', '.x', '.x', '.x', 'xx'], '^': ['.x.', 'x.x'], '_': ['', '', '', '', '', '', '', 'xxxxx'],
+    '`': ['x.', '.x'], 'a': ['', '', '.xxx.', '....x', '.xxxx', 'x...x', '.xxxx'], 'b': ['x....', 'x....', 'x.xx.',
+                                                                                      'xx..x', 'x...x', 'x...x',
+                                                                                      'xxxx.'],
+    'c': ['', '', '.xxx.', 'x....', 'x....', 'x...x', '.xxx.'], 'd': ['....x', '....x', '.xx.x', 'x..xx', 'x...x',
+                                                                    'x...x', '.xxxx'],
+    'e': ['', '', '.xxx.', 'x...x', 'xxxxx', 'x....', '.xxx.'], 'f': ['..xx', '.x..', 'xxxx', '.x..', '.x..', '.x..',
+                                                                    '.x..'],
+    'g': ['', '', '.xxxx', 'x...x', 'x...x', '.xxxx', '....x', 'xxxx.'], 'h': ['x....', 'x....', 'x.xx.', 'xx..x',
+                                                                             'x...x', 'x...x', 'x...x'],
+    'i': ['x', '', 'x', 'x', 'x', 'x', 'x'], 'j': ['...x', '', '..xx', '...x', '...x', '...x', 'x..x', '.xx.'],
+    'k': ['x...', 'x...', 'x..x', 'x.x.', 'xx..', 'x.x.', 'x..x'], 'l': ['xx', '.x', '.x', '.x', '.x', '.x', '.xx'],
+    'm': ['', '', 'xx.x.', 'x.x.x', 'x.x.x', 'x...x', 'x...x'], 'n': ['', '', 'x.xx.', 'xx..x', 'x...x', 'x...x',
+                                                                    'x...x'],
+    'o': ['', '', '.xxx.', 'x...x', 'x...x', 'x...x', '.xxx.'], 'p': ['', '', 'xxxx.', 'x...x', 'x...x', 'xxxx.',
+                                                                    'x....', 'x....'],
+    'q': ['', '', '.xxxx', 'x...x', 'x...x', '.xxxx', '....x', '....x'], 'r': ['', '', 'x.xx', 'xx..', 'x...', 'x...',
+                                                                             'x...'],
+    's': ['', '', '.xxxx', 'x....', '.xxx.', '....x', 'xxxx.'], 't': ['.x..', '.x..', 'xxxx', '.x..', '.x..', '.x..',
+                                                                    '..xx'],
+    'u': ['', '', 'x...x', 'x...x', 'x...x', 'x..xx', '.xx.x'], 'v': ['', '', 'x...x', 'x...x', '.x.x.', '.x.x.',
+                                                                    '..x..'],
+    'w': ['', '', 'x...x', 'x...x', 'x.x.x', 'x.x.x', '.x.x.'], 'x': ['', '', 'x...x', '.x.x.', '..x..', '.x.x.',
+                                                                    'x...x'],
+    'y': ['', '', 'x...x', 'x...x', 'x...x', '.xxxx', '....x', 'xxxx.'], 'z': ['', '', 'xxxxx', '...x.', '..x..',
+                                                                             '.x...', 'xxxxx'],
+    '{': ['..x', '.x.', '.x.', 'x..', '.x.', '.x.', '..x'], '|': ['x', 'x', 'x', 'x', 'x', 'x', 'x', 'x'],
+    '}': ['x..', '.x.', '.x.', '..x', '.x.', '.x.', 'x..'], '~': ['', '', '.x..x', 'x.xx.'],
+}
+
+
+def font():
+    im = new(128, 128)
+    px = im.load()
+    for c in range(32, 127):
+        rows = FONT.get(chr(c), ['xxx', 'x.x', 'x.x', 'xxx'])
+        gx, gy = (c % 16) * 8, (c // 16) * 8
+        for y, r in enumerate(rows[:8]):
+            for x, ch in enumerate(r[:8]):
+                if ch == 'x':
+                    px[gx + x, gy + y] = (255, 255, 255, 255)
+    return im
+
+
+# ---------------------------------------------------------------- skins
+def skins():
+    S = {}
+    for skin, (W, H, parts) in models.MODELS.items():
+        im = new(W, H)
+        uv = models.pack_uv(parts, W, H)
+        for name, w, h, d, painter in parts:
+            models.paint(im, uv[name][0], uv[name][1], w, h, d, painter)
+        path = {'mudling': 'mudling', 'thornling': 'thornling', 'fizzler': 'fizzler', 'skitter': 'skitter', 'snuffler': 'snuffler', 'humpox': 'humpox',
+                'woolly': 'woolly', 'woolly_fur': 'woolly_fur', 'strider': 'strider'}[skin]
+        S['entity/' + path] = im
+    pl = new(64, 64)
+    for name, w, h, d, u, v, painter in models.PLAYER:
+        models.paint(pl, u, v, w, h, d, painter)
+    S['entity/player'] = pl   # our builder
+    return S
+
+
+# ---------------------------------------------------------------- everything
+def build():
+    for n, im in block_textures().items():
+        put('blocks/' + n, im)
+    for k, im in enumerate(destroy_stages()):
+        put('blocks/destroy_stage_%d' % k, im)
+    for n, im in item_textures().items():
+        put('items/' + n, im)
+    for n, im in gui_images().items():
+        put(n, im)
+    for n, im in environment().items():
+        put(n, im)
+    put('font/ascii', font())
+    for n, im in skins().items():
+        put(n, im)
+
+
+def main():
+    out = sys.argv[1]
+    build()
+    with zipfile.ZipFile(out, 'w', zipfile.ZIP_DEFLATED) as z:
+        for n, im in sorted(OUT.items()):
+            b = io.BytesIO()
+            im.save(b, 'PNG')
+            z.writestr('textures/' + n + '.png', b.getvalue())
+    print(f'{len(OUT)} pictures in {out}')
+    if '--preview' in sys.argv:
+        d = sys.argv[sys.argv.index('--preview') + 1]
+        os.makedirs(d, exist_ok=True)
+        for prefix in ('blocks/', 'items/'):
+            names = sorted(n for n in OUT if n.startswith(prefix))
+            cols = 16
+            sheet = Image.new('RGBA', (cols * 18, ((len(names) + cols - 1) // cols) * 18), (60, 60, 70, 255))
+            for i, n in enumerate(names):
+                sheet.alpha_composite(OUT[n].resize((16, 16)), ((i % cols) * 18 + 1, (i // cols) * 18 + 1))
+            sheet.resize((sheet.size[0] * 3, sheet.size[1] * 3), Image.NEAREST).save(
+                os.path.join(d, prefix.strip('/') + '.png'))
+        for n in OUT:
+            if not n.startswith(('blocks/', 'items/')):
+                OUT[n].save(os.path.join(d, n.replace('/', '_') + '.png'))
+
+
+if __name__ == '__main__':
+    main()
diff --git a/tools/conformite/numblocks_lang.py b/tools/conformite/numblocks_lang.py
new file mode 100644
index 0000000..bf9275e
--- /dev/null
+++ b/tools/conformite/numblocks_lang.py
@@ -0,0 +1,492 @@
+#!/usr/bin/env python3
+"""NumBlocks' French and Chinese (Calcade, 19 October 2026): our own translations of every
+text of the game, written for NumBlocks (none taken from another game's language files).
+
+    python3 tools/conformite/numblocks_lang.py      # writes games/numblocks/lang/fr.txt and zh.txt
+
+A text of the sources with no line here stays English (tools/lang.py check lists them)."""
+import os
+import re
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+ROOT = os.path.dirname(os.path.dirname(HERE))
+NB = os.path.join(ROOT, 'games', 'numblocks')
+
+COLORS = [('White', 'blanc', 'blanche', '白色'), ('Orange', 'orange', 'orange', '橙色'),
+          ('Magenta', 'magenta', 'magenta', '品红色'), ('Light Blue', 'bleu clair', 'bleu clair', '淡蓝色'),
+          ('Yellow', 'jaune', 'jaune', '黄色'), ('Lime', 'vert clair', 'vert clair', '黄绿色'),
+          ('Pink', 'rose', 'rose', '粉色'), ('Gray', 'gris', 'grise', '灰色'),
+          ('Light Gray', 'gris clair', 'gris clair', '淡灰色'), ('Cyan', 'cyan', 'cyan', '青色'),
+          ('Purple', 'violet', 'violette', '紫色'), ('Blue', 'bleu', 'bleue', '蓝色'),
+          ('Brown', 'marron', 'marron', '棕色'), ('Green', 'vert', 'verte', '绿色'), ('Red', 'rouge', 'rouge', '红色'),
+          ('Black', 'noir', 'noire', '黑色')]
+WOODS = [('Oak', 'chêne', '橡树'), ('Spruce', 'sapin', '云杉'), ('Birch', 'bouleau', '白桦'),
+         ('Jungle', 'jungle', '丛林树'), ('Acacia', 'acacia', '金合欢'), ('Dark Oak', 'chêne noir', '深色橡树')]
+MATS = [('Wooden', 'en bois', '木'), ('Stone', 'en pierre', '石'), ('Iron', 'en fer', '铁'),
+        ('Diamond', 'en diamant', '钻石'), ('Golden', 'en or', '金')]
+TOOLS = [('Sword', 'Épée', '剑'), ('Shovel', 'Pelle', '锹'), ('Pickaxe', 'Pioche', '镐'), ('Axe', 'Hache', '斧'),
+         ('Hoe', 'Houe', '锄')]
+ARMOUR = [('Helmet', 'Casque', '头盔'), ('Chestplate', 'Plastron', '胸甲'), ('Leggings', 'Jambières', '护腿'),
+          ('Boots', 'Bottes', '靴子')]
+
+T = {}   # English: (French, Chinese)
+
+
+def t(en, fr, zh):
+    T[en] = (fr, zh)
+
+
+for en, fr_m, fr_f, zh in COLORS:
+    t(f'{en} Wool' if en != 'White' else 'Wool', f'Laine {fr_f}' if en != 'White' else 'Laine', f'{zh}羊毛')
+    t(f'{en} Baked Clay', f'Argile cuite {fr_f}', f'{zh}陶土')
+    t(f'{en} Dye' if en not in ('White', 'Brown', 'Blue') else '-', f'Teinture {fr_f}', f'{zh}染料')
+t('White Wool', 'Laine blanche', '白色羊毛')
+for en, fr, zh in WOODS:
+    t(f'{en} Wood Planks', f'Planches de {fr}', f'{zh}木板')
+    t(f'{en} Sapling', f'Pousse de {fr}', f'{zh}树苗')
+    t(f'{en} Wood', f'Bûche de {fr}', f'{zh}原木')
+    t(f'{en} Leaves', f'Feuilles de {fr}', f'{zh}树叶')
+    t(f'{en} Wood Slab', f'Dalle de {fr}', f'{zh}木台阶')
+for en, fr, zh in MATS:
+    for ten, tfr, tzh in TOOLS:
+        t(f'{en} {ten}', f'{tfr} {fr}', f'{zh}{tzh}')
+for en, fr, zh in [('Chain', 'en mailles', '锁链'), ('Iron', 'en fer', '铁'), ('Golden', 'en or', '金'),
+                   ('Diamond', 'en diamant', '钻石')]:
+    for aen, afr, azh in ARMOUR:
+        t(f'{en} {aen}', f'{afr} {fr}', f'{zh}{azh}')
+
+LINES = '''
+Try: %s|Essaie : %s|试试：%s
+%s: a number was expected|%s : il faut un nombre|%s：这里要填数字
+%d is too small (at least %d)|%d, c'est trop peu (au moins %d)|%d 太小（至少 %d）
+%d is too big (at most %d)|%d, c'est trop (au plus %d)|%d 太大（最多 %d）
+/clear [item]: empties your bag (or takes that item)|/clear [objet] : vide ton sac (ou enlève cet objet)|/clear [物品]：清空背包（或只拿走该物品）
+/effect <poison|hunger|healing|clear> [seconds] [strength]|/effect <poison|hunger|healing|clear> [secondes] [force]|/effect <poison|hunger|healing|clear> [秒] [强度]
+/give <item> [how many]|/give <objet> [combien]|/give <物品> [数量]
+/help [page|command]|/help [page|commande]|/help [页|命令]
+/home [x y z]: you start again here|/home [x y z] : tu repartiras d'ici|/home [x y z]：以后从这里出发
+/kill: back to your starting point|/kill : retour au point de départ|/kill：回到出发点
+/level <calm|easy|normal|hard>|/level <calm|easy|normal|hard>|/level <calm|easy|normal|hard>
+/me <what you do>|/me <ce que tu fais>|/me <你在做什么>
+/mode <survival|creative>|/mode <survival|creative>|/mode <survival|creative>
+/place <block> [x y z] [keep|break]|/place <bloc> [x y z] [keep|break]|/place <方块> [x y z] [keep|break]
+/rain: starts or stops the rain|/rain : fait tomber ou arrête la pluie|/rain：下雨或停雨
+/rule [name] [on|off]|/rule [nom] [on|off]|/rule [名称] [on|off]
+/say <message>|/say <message>|/say <消息>
+/seed: this world's number|/seed : le numéro de ce monde|/seed：这个世界的编号
+/spawn <creature|lightning> [x y z]|/spawn <créature|lightning> [x y z]|/spawn <生物|lightning> [x y z]
+/time [day|noon|night|midnight|number]|/time [day|noon|night|midnight|nombre]|/time [day|noon|night|midnight|数字]
+/tp <x> <y> <z>  (^ for where you are, ^5 for 5 from it)|/tp <x> <y> <z>  (^ : là où tu es, ^5 : 5 plus loin)|/tp <x> <y> <z>  （^ 表示你的位置，^5 表示再远 5 格）
+/weather <clear|rain|storm> [seconds]|/weather <clear|rain|storm> [secondes]|/weather <clear|rain|storm> [秒]
+/xp <points> or /xp <levels>lv|/xp <points> ou /xp <niveaux>lv|/xp <点数> 或 /xp <等级>lv
+Survival|Survie|生存
+Creative|Création|创造
+Calm|Calme|平静
+Easy|Facile|简单
+Normal|Normal|普通
+Hard|Difficile|困难
+Poison|Poison|中毒
+Hunger|Faim|饥饿
+Healing|Soin|治疗
+%s: not a choice here|%s : pas un choix possible|%s：不是可选项
+Mode: %s|Mode : %s|模式：%s
+The time is %d|Il est %d|现在是 %d
+The time is now %d|Il est maintenant %d|时间改为 %d
+The sky clears|Le ciel se dégage|天放晴了
+Here comes the rain|Voici la pluie|开始下雨了
+A storm is coming|Un orage arrive|暴风雨要来了
+No block or item is called %s|Aucun bloc ni objet ne s'appelle %s|没有叫 %s 的方块或物品
+You get %d %s|Tu reçois %d %s|你得到 %d 个%s
+That is too far|C'est trop loin|太远了
+You are now at |Te voici en |你现在在
+Back to the start|Retour au départ|回到出发点
+Difficulty: %s|Difficulté : %s|难度：%s
+World number: |Numéro du monde : |世界编号：
+Your starting point: |Ton point de départ : |你的出发点：
+Levels: %d|Niveaux : %d|等级：%d
+Points can only be added|On ne peut qu'ajouter des points|只能增加点数
+%d points added|%d points ajoutés|增加了 %d 点
+Nothing to take away|Rien à enlever|没有可拿走的东西
+%d things taken away|%d objets enlevés|拿走了 %d 件东西
+No more effects|Plus aucun effet|效果全部清除
+%s: not an effect|%s : pas un effet|%s：不是效果
+%s for %d seconds|%s pendant %d secondes|%s，持续 %d 秒
+That place is not loaded|Cet endroit n'est pas chargé|那里还没有载入
+Zap!|Zap !|噼啪！
+There is no room for it|Il n'y a pas la place|那里放不下
+Here it is|Le voici|出现了
+%s: not a creature|%s : pas une créature|%s：不是生物
+No block is called %s|Aucun bloc ne s'appelle %s|没有叫 %s 的方块
+Look at a block, or give x y z|Regarde un bloc, ou donne x y z|看着一个方块，或者写出 x y z
+Something is already there|Il y a déjà quelque chose|那里已经有东西了
+That block is already there|Ce bloc y est déjà|那里已经是这个方块
+Placed|Posé|已放置
+No rule is called %s|Aucune règle ne s'appelle %s|没有叫 %s 的规则
+on|oui|开
+off|non|关
+%s: no such command (try /help)|%s : commande inconnue (essaie /help)|%s：没有这个命令（试试 /help）
+Commands, page %d of %d|Commandes, page %d sur %d|命令，第 %d 页，共 %d 页
+toolbox: finishes the word you are typing|boîte à outils : finit le mot que tu tapes|工具箱键：补全正在输入的词
+Commands are off in this world|Les commandes sont coupées dans ce monde|这个世界关闭了命令
+The rain stops|La pluie s'arrête|雨停了
+Stone|Pierre|石头
+Granite|Granit|花岗岩
+Polished Granite|Granit poli|磨制花岗岩
+Diorite|Diorite|闪长岩
+Polished Diorite|Diorite polie|磨制闪长岩
+Andesite|Andésite|安山岩
+Polished Andesite|Andésite polie|磨制安山岩
+Grassy Dirt|Terre herbeuse|草皮
+Dirt|Terre|泥土
+Coarse Dirt|Terre caillouteuse|碎石泥土
+Podzol|Podzol|灰化土
+Cobblestone|Pavé|圆石
+Bedrock|Roche-mère|基岩
+Sand|Sable|沙子
+Red Sand|Sable rouge|红沙
+Gravel|Gravier|沙砾
+Gold Ore|Minerai d'or|金矿石
+Iron Ore|Minerai de fer|铁矿石
+Coal Ore|Minerai de charbon|煤矿石
+Sponge|Éponge|海绵
+Glass|Verre|玻璃
+Lapis Lazuli Ore|Minerai de lapis-lazuli|青金石矿石
+Lapis Lazuli Block|Bloc de lapis-lazuli|青金石块
+Sandstone|Grès|砂岩
+Chiseled Sandstone|Grès sculpté|雕纹砂岩
+Smooth Sandstone|Grès lisse|平滑砂岩
+Cobweb|Toile|蛛网
+Shrub|Arbuste sec|枯灌木
+Grass Tuft|Touffe d'herbe|草丛
+Fern|Fougère|蕨
+Dead Bush|Buisson mort|枯萎的灌木
+Dandelion|Pissenlit|蒲公英
+Poppy|Coquelicot|虞美人
+Blue Orchid|Orchidée bleue|蓝色兰花
+Allium|Ail fleuri|绒球葱
+Azure Bluet|Houstonie|蓝花茜草
+Red Tulip|Tulipe rouge|红色郁金香
+Orange Tulip|Tulipe orange|橙色郁金香
+White Tulip|Tulipe blanche|白色郁金香
+Pink Tulip|Tulipe rose|粉色郁金香
+Oxeye Daisy|Marguerite|滨菊
+Mushroom|Champignon|蘑菇
+Block of Gold|Bloc d'or|金块
+Block of Iron|Bloc de fer|铁块
+Stone Slab|Dalle de pierre|石台阶
+Sandstone Slab|Dalle de grès|砂岩台阶
+Wooden Slab|Dalle de bois|木台阶
+Cobblestone Slab|Dalle de pavé|圆石台阶
+Bricks Slab|Dalle de briques|砖台阶
+Stone Bricks Slab|Dalle de pierres taillées|石砖台阶
+Bricks|Briques|砖块
+TNT|Dynamite|炸药
+Bookshelf|Étagère|书架
+Mossy Cobblestone|Pavé moussu|苔石
+Obsidian|Obsidienne|黑曜石
+Torch|Torche|火把
+Monster Cage|Cage à monstres|怪物笼
+Oak Wood Stairs|Escalier en chêne|橡木楼梯
+Chest|Coffre|箱子
+Diamond Ore|Minerai de diamant|钻石矿石
+Block of Diamond|Bloc de diamant|钻石块
+Crafting Table|Établi|工作台
+Farmland|Terre labourée|耕地
+Furnace|Four|熔炉
+Ladder|Échelle|梯子
+Rail|Rail|铁轨
+Cobblestone Stairs|Escalier en pavé|圆石楼梯
+Ruby Ore|Minerai de rubis|红宝石矿石
+Snow|Neige|雪
+Ice|Glace|冰
+Cactus|Cactus|仙人掌
+Clay|Argile|黏土
+Oak Fence|Barrière en chêne|橡木栅栏
+Pumpkin|Citrouille|南瓜
+Jack o'Lantern|Lanterne-citrouille|南瓜灯
+Stone Bricks|Pierres taillées|石砖
+Mossy Stone Bricks|Pierres taillées moussues|苔石砖
+Cracked Stone Bricks|Pierres taillées fissurées|裂纹石砖
+Chiseled Stone Bricks|Pierres taillées sculptées|雕纹石砖
+Glass Pane|Vitre|玻璃板
+Melon|Pastèque|西瓜
+Vines|Lianes|藤蔓
+Mycelium|Mycélium|菌丝土
+Lily Pad|Nénuphar|睡莲
+Emerald Ore|Minerai d'émeraude|绿宝石矿石
+Block of Emerald|Bloc d'émeraude|绿宝石块
+Cobblestone Wall|Muret de pavé|圆石墙
+Baked Clay|Argile cuite|陶土
+Hay Bale|Botte de foin|干草块
+Block of Coal|Bloc de charbon|煤炭块
+Packed Ice|Glace tassée|浮冰
+Sunflower|Tournesol|向日葵
+Lilac|Lilas|丁香
+Tall Grass|Hautes herbes|高草
+Large Fern|Grande fougère|大型蕨
+Rose Bush|Rosier|玫瑰丛
+Peony|Pivoine|牡丹
+Red Sandstone|Grès rouge|红砂岩
+Glow Crystal|Cristal lumineux|发光水晶
+Shears|Cisailles|剪刀
+Flint and Steel|Briquet à silex|打火石
+Bow|Arc|弓
+Arrow|Flèche|箭
+Leather Cap|Bonnet en cuir|皮革帽子
+Leather Tunic|Tunique en cuir|皮革外套
+Leather Pants|Pantalon en cuir|皮革裤子
+Leather Boots|Bottes en cuir|皮革靴子
+Stick|Bâton|木棍
+Coal|Charbon|煤炭
+Charcoal|Charbon de bois|木炭
+Diamond|Diamant|钻石
+Iron Ingot|Lingot de fer|铁锭
+Gold Ingot|Lingot d'or|金锭
+Gold Nugget|Pépite d'or|金粒
+Emerald|Émeraude|绿宝石
+Ruby Dust|Poudre de rubis|红宝石粉
+Flint|Silex|燧石
+Feather|Plume|羽毛
+String|Ficelle|线
+Bone|Os|骨头
+Gunpowder|Poudre|火药
+Leather|Cuir|皮革
+Wheat|Blé|小麦
+Seeds|Graines|种子
+Sugar Canes|Cannes à sucre|甘蔗
+Sugar|Sucre|糖
+Paper|Papier|纸
+Book|Livre|书
+Brick|Brique|红砖
+Bowl|Bol|碗
+Snowball|Boule de neige|雪球
+Egg|Œuf|鸡蛋
+Slime Ball|Boule de gelée|黏液球
+Glow Dust|Poudre lumineuse|发光粉
+Bucket|Seau|桶
+Water Bucket|Seau d'eau|水桶
+Lava Bucket|Seau de lave|熔岩桶
+Milk|Lait|牛奶
+Oak Door|Porte en chêne|橡木门
+Bed|Lit|床
+Compass|Boussole|指南针
+Fishing Rod|Canne à pêche|钓鱼竿
+Clock|Horloge|时钟
+Cocoa Beans|Fèves de cacao|可可豆
+Lapis Lazuli|Lapis-lazuli|青金石
+Bone Meal|Poudre d'os|骨粉
+Apple|Pomme|苹果
+Golden Apple|Pomme dorée|金苹果
+Bread|Pain|面包
+Raw Ham|Jambon cru|生火腿
+Roast Ham|Jambon rôti|烤火腿
+Raw Ox Meat|Viande de bosseux crue|生驼牛肉
+Ox Steak|Pavé de bosseux|驼牛排
+Raw Drumstick|Pilon cru|生鸟腿
+Roast Drumstick|Pilon rôti|烤鸟腿
+Raw Shank|Jarret cru|生腿肉
+Roast Shank|Jarret rôti|烤腿肉
+Mud Cake|Galette de boue|泥饼
+Beetle Eye|Œil de scarabée|甲虫眼
+Mushroom Stew|Soupe aux champignons|蘑菇汤
+Cookie|Biscuit|曲奇
+Carrot|Carotte|胡萝卜
+Potato|Pomme de terre|马铃薯
+Baked Potato|Pomme de terre cuite|烤马铃薯
+Poisonous Potato|Pomme de terre empoisonnée|毒马铃薯
+Pumpkin Pie|Tarte à la citrouille|南瓜派
+Raw Fish|Poisson cru|生鱼
+Raw Salmon|Saumon cru|生鲑鱼
+Violet Fish|Poisson violet|紫鱼
+Pufferfish|Poisson-globe|河豚
+Cooked Fish|Poisson cuit|熟鱼
+Cooked Salmon|Saumon cuit|熟鲑鱼
+Building|Construction|建筑
+Nature and Decor|Nature et déco|自然与装饰
+Gadgets|Mécanismes|机关
+Travel|Voyage|出行
+Other|Divers|其他
+Search|Chercher|搜索
+Food|Nourriture|食物
+Tools|Outils|工具
+Fighting|Combat|战斗
+Unused|Inutilisé|未用
+Materials|Matériaux|材料
+Your Bag|Ton sac|你的背包
+Done|OK|完成
+alpha: abc/123   shift: Abc   toolbox: finish the word|alpha : abc/123   shift : Abc   boîte à outils : finir le mot|alpha：字母/数字   shift：大写   工具箱：补全
+x,n,t  :     var  _     x10^x  ~     ans  space     0  @|x,n,t  :     var  _     x10^x  ~     ans  espace     0  @|x,n,t  :     var  _     x10^x  ~     ans  空格     0  @
+Play|Jouer|开始
+Play Together|Jouer à plusieurs|一起玩
+Settings|Réglages|设置
+Leave|Quitter|离开
+Play This World|Jouer à ce monde|进入这个世界
+New World|Nouveau monde|新世界
+Rename|Renommer|改名
+Delete|Supprimer|删除
+Same Settings|Mêmes réglages|同样设置
+Cancel|Annuler|取消
+Mode: |Mode : |模式：
+Commands: |Commandes : |命令：
+ON|Oui|开
+OFF|Non|关
+World Number: |N° du monde : |世界编号：
+(any)|(au hasard)|（随机）
+Land: |Terrain : |地形：
+Flat|Plat|平坦
+Natural|Naturel|自然
+Difficulty: |Difficulté : |难度：
+Detail: |Détails : |细节：
+High|Élevés|高
+Low|Réduits|低
+Look Speed: |Vitesse du regard : |转头速度：
+Clouds: |Nuages : |云：
+Head Sway: |Balancement : |视角摇晃：
+Keys|Touches|按键
+Resume|Reprendre|继续
+Journal|Journal|日志
+Records|Records|记录
+Turn On Commands|Activer les commandes|开启命令
+Save and Leave|Sauver et quitter|保存并离开
+Use These Settings|Appliquer|使用这些设置
+Try Again|Réessayer|再试一次
+Main Menu|Menu principal|主菜单
+Copy of |Copie de |副本：
+Look|Regard|视角
+Break, Hit|Casser, frapper|破坏、攻击
+Break, hit|Casser, frapper|破坏、攻击
+Copy Block|Copier le bloc|复制方块
+Copy block|Copier le bloc|复制方块
+Use, Place|Utiliser, poser|使用、放置
+Place, use|Poser, utiliser|放置、使用
+Throw Item|Lancer l'objet|扔出物品
+Throw|Lancer|扔出
+Belt Slot 1|Ceinture 1|快捷栏 1
+Belt Slot 2|Ceinture 2|快捷栏 2
+Belt Slot 3|Ceinture 3|快捷栏 3
+Belt Slot 4|Ceinture 4|快捷栏 4
+Belt Slot 5|Ceinture 5|快捷栏 5
+Belt Slot 6|Ceinture 6|快捷栏 6
+Belt Slot 7|Ceinture 7|快捷栏 7
+Belt Slot 8|Ceinture 8|快捷栏 8
+Belt Slot 9|Ceinture 9|快捷栏 9
+Slot 1|Case 1|格 1
+Slot 2|Case 2|格 2
+Slot 3|Case 3|格 3
+Slot 4|Case 4|格 4
+Slot 5|Case 5|格 5
+Slot 6|Case 6|格 6
+Slot 7|Case 7|格 7
+Slot 8|Case 8|格 8
+Slot 9|Case 9|格 9
+Bag|Sac|背包
+Pause|Pause|暂停
+Jump|Sauter|跳
+Crouch|S'accroupir|蹲下
+Run|Courir|奔跑
+Step Left|Pas à gauche|左移
+Left|Gauche|左
+Step Right|Pas à droite|右移
+Right|Droite|右
+Go Back|Reculer|后退
+Backward|Arrière|后
+Go Forward|Avancer|前进
+Forward|Avant|前
+Chat Box|Discussion|聊天框
+Chat|Discuter|聊天
+Command Box|Commande|命令框
+Command|Commande|命令
+Actions|Actions|动作
+Moving|Déplacement|移动
+Back|Retour|返回
+toolbox|boîte à outils|工具箱
+NONE|AUCUNE|无
+Controls|Commandes|操作
+Home|Home|Home
+Save, quit|Sauver, quitter|保存、退出
+1 to 9: belt slot.|1 à 9 : case de la ceinture.|1 到 9：快捷栏格子。
+EXE: as OK.|EXE : comme OK.|EXE：同 OK。
+: | : |：
+.|.|。
+Forward twice: run.   Jump twice: fly (Creative).|Deux fois avant : courir.   Deux sauts : voler (Création).|连按前进：奔跑。   连跳两次：飞行（创造）。
+Menus: OK takes or puts, EXE one, shift+OK moves.|Menus : OK prend ou pose, EXE un seul, shift+OK déplace.|菜单：OK 拿起或放下，EXE 一个，shift+OK 移动。
+Hold OK and move over slots to spread a stack out.|Garde OK et passe sur les cases pour répartir une pile.|按住 OK 划过格子可平分一组物品。
+Key Sheet|Aide des touches|按键说明
+Reset|Défaut|默认
+Default Keys|Touches par défaut|默认按键
+Build anything!|Construis tout ce que tu veux !|想造什么就造什么！
+One block at a time|Un bloc à la fois|一次一块
+Dig deep, look up|Creuse profond, lève les yeux|深挖，也要抬头看
+Mind the fizzlers|Gare aux pétards|小心火药桶怪
+Made for your calculator|Fait pour ta calculatrice|为你的计算器而做
+Plant a tree today|Plante un arbre aujourd'hui|今天种棵树吧
+A block-building game of NumPlay|Un jeu de construction de NumPlay|NumPlay 的方块建造游戏
+Made by Mason Chen as part of NumPlay|Créé par Mason Chen pour NumPlay|Mason Chen 为 NumPlay 制作
+Your Worlds|Tes mondes|你的世界
+, commands|, commandes|，命令
+No worlds yet|Pas encore de monde|还没有世界
+Storage free: |Mémoire libre : |剩余空间：
+ KB| Ko| KB
+Name|Nom|名称
+Every block, flying, and blocks|Tous les blocs, le vol, et des blocs|所有方块、飞行，还有
+Gather, build and craft, and keep|Récolte, construis, fabrique, et reste|采集、建造、制作，并保持
+that break at once|qui cassent d'un coup|一下就碎的方块
+yourself fed and healthy|nourri et en bonne santé|吃饱和健康
+alpha: letters or digits, shift: capitals, OK: done|alpha : lettres ou chiffres, shift : majuscules, OK : fini|alpha：字母或数字，shift：大写，OK：完成
+Leave it empty for any world|Laisse vide pour un monde au hasard|留空则随机生成世界
+Delete this world?|Supprimer ce monde ?|删除这个世界？
+'|« |“
+' will be gone for good.| » disparaîtra pour de bon.|”将被永久删除。
+Paused|En pause|已暂停
+Commands|Commandes|命令
+Settings for This World|Réglages de ce monde|这个世界的设置
+Opening the world|Ouverture du monde|正在打开世界
+Making the land|Création du terrain|正在生成地形
+Make|Fabriquer|制作
+Knocked out!|K.-O. !|你倒下了！
+Points: |Points : |分数：
+You can sleep only at night|On ne peut dormir que la nuit|只能在夜里睡觉
+Too many monsters around to sleep|Trop de monstres autour pour dormir|附近有怪物，睡不着
+'''
+
+for line in LINES.strip('\n').split('\n'):
+    en, fr, zh = line.split('|') if line.count('|') == 2 else (None, None, None)
+    if en is None:   # (texts with | inside: the commands' help)
+        parts = line.split('|')
+        n = len(parts) // 3
+        en, fr, zh = '|'.join(parts[:n]), '|'.join(parts[n:2 * n]), '|'.join(parts[2 * n:])
+    T[en] = (fr, zh)
+# the dyes: only some colours are called "... Dye"
+for en, fr_m, fr_f, zh in COLORS:
+    if f'{en} Dye' in T or en in ('White', 'Brown', 'Blue'):
+        continue
+T.pop('-', None)
+
+
+def strings():
+    mark = re.compile(r'\bT(!?)\(\s*"((?:[^"\\\n]|\\.)*)"\s*\)')
+    seen = []
+    for base, dirs, files in os.walk(os.path.join(NB, 'src')):
+        for f in sorted(files):
+            if f.endswith(('.c', '.h')):
+                for m in mark.finditer(open(os.path.join(base, f), encoding='utf-8').read()):
+                    if m.group(2) not in seen:
+                        seen.append(m.group(2))
+    return seen
+
+
+def main():
+    ss = strings()
+    missing = [s for s in ss if s not in T]
+    for code, k, name in (('fr', 0, 'French'), ('zh', 1, 'Chinese')):
+        out = [f'# NumBlocks in {name}: the English text as in the source, a tab, the translation (see tools/lang.py).',
+               '# Our own translations (Calcade, 19 October 2026: tools/conformite/numblocks_lang.py).']
+        for s in ss:
+            if s in T:
+                out.append(f'{s}\t{T[s][k]}')
+        open(os.path.join(NB, 'lang', code + '.txt'), 'w', encoding='utf-8').write('\n'.join(out) + '\n')
+    print(f'{len(ss)} texts, {len(ss) - len(missing)} translated; missing: {missing}')
+
+
+if __name__ == '__main__':
+    main()
diff --git a/tools/conformite/numblocks_models.py b/tools/conformite/numblocks_models.py
new file mode 100644
index 0000000..b4b9fb2
--- /dev/null
+++ b/tools/conformite/numblocks_models.py
@@ -0,0 +1,375 @@
+#!/usr/bin/env python3
+"""NumBlocks' own creatures (Calcade, 19 October 2026): the boxes each one is made of,
+where their faces go in its skin, and how each face is painted.
+
+    python3 tools/conformite/numblocks_models.py     # writes games/numblocks/src/mob_skin.h
+
+numblocks_art.py paints the skins from the same table, so the C models (mob.c, which
+uses the SZ_ and UV_ names of mob_skin.h) and the pictures always agree.
+
+A box's faces are laid out in its skin the usual way for box models: a strip of
+(depth + width) x 2 wide and depth + height tall at (u, v):
+  row 0 (depth tall): [depth gap][top: width][bottom: width]
+  row 1 (height tall): [side -x: depth][front: width][side +x: depth][back: width]
+"""
+import math
+import os
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+ROOT = os.path.dirname(os.path.dirname(HERE))
+
+
+def rgb(h):
+    return tuple(int(h[i:i + 2], 16) for i in (0, 2, 4))
+
+
+def mixc(a, b, t):
+    return tuple(int(round(a[i] + (b[i] - a[i]) * t)) for i in range(3))
+
+
+def shade(c, k):
+    return tuple(max(0, min(255, int(round(v * k)))) for v in c)
+
+
+def hsh(*a):
+    h = 2166136261
+    for v in a:
+        h = ((h ^ (v & 0xFFFFFFFF)) * 16777619) & 0xFFFFFFFF
+    return h
+
+
+# ---------------------------------------------------------------- painters
+# A painter is f(face, x, y, w, h) -> (r, g, b) or None (see-through); face is
+# 'top' 'bottom' 'front' 'back' 'left' 'right'; x, y from the face's top-left.
+
+def solid(col, spots=None, spot_col=None, noise=0.06, key=0):
+    def f(face, x, y, w, h):
+        k = 1 + noise * (((hsh(key, x, y, ord(face[0])) & 255) / 255) - 0.5) * 2
+        c = shade(col, k)
+        if spots and (hsh(key + 7, x // 2, y // 2, ord(face[0])) % 100) < spots:
+            c = spot_col
+        if face == 'bottom':
+            c = shade(c, 0.85)
+        return c
+    return f
+
+
+def with_face(base, draw):
+    """base everywhere, then the front face drawn by draw(x, y, w, h) -> colour or None (keep base)"""
+    def f(face, x, y, w, h):
+        if face == 'front':
+            c = draw(x, y, w, h)
+            if c is not None:
+                return c
+        return base(face, x, y, w, h)
+    return f
+
+
+def bands(base, band_col, rows, key=0):
+    def f(face, x, y, w, h):
+        if face in ('front', 'back', 'left', 'right') and y in rows:
+            return band_col
+        return base(face, x, y, w, h)
+    return f
+
+
+# ---------------------------------------------------------------- colours
+MUD = rgb('6E5034')
+MOSS = rgb('5E8A3A')
+POD = rgb('8A3A5E')
+THORN = rgb('F2D86A')
+STALK = rgb('4E8A36')
+SHELL = rgb('1E4A4C')
+BARREL = rgb('A0663A')      # the fizzler: a walking powder keg
+HOOP = rgb('5A606A')
+PINK = rgb('F2A6B0')
+CREAM = rgb('EDE4CF')
+PATCH = rgb('7A4E2C')
+WOOL = rgb('F2F0EA')
+FACE_S = rgb('4A4A52')
+WHITE_C = rgb('F7F5EE')
+EYE = rgb('F2E25A')
+DARK = rgb('2A2430')
+
+
+def mud_face(x, y, w, h):
+    if y == 1 and x in (1, 4):
+        return EYE
+    if y == 3 and 1 <= x <= 4:
+        return shade(MUD, 0.5)
+    return None
+
+
+def pod_face(x, y, w, h):
+    if y in (4, 5) and 1 <= x <= 5:
+        return DARK if y == 4 else shade(POD, 0.6)   # a mouth slit
+    if y == 2 and x in (2, 4):
+        return THORN
+    return None
+
+
+def keg_face(x, y, w, h):
+    # one big round eye in the middle of the keg
+    d = math.hypot(x - 3.5, y - 5.5)
+    if d < 1.2:
+        return DARK
+    if d < 2.6:
+        return WHITE_C
+    return None
+
+
+def skitter_face(x, y, w, h):
+    if y == 1 and x in (1, 4):
+        return rgb('F26B5E')
+    return None
+
+
+# the tame ones (NumBlocks' own animals)
+TAPIR = rgb('2E2A34')       # the snuffler: a dark rooter with a pale saddle, a long snout
+STRIPE = rgb('E8E2D2')
+OX = rgb('6E7A8E')          # the humpox: a slate-blue ox with a hump
+OX_HUMP = rgb('4E5868')
+MUZZLE = rgb('C8B8A8')
+HORN_C = rgb('F2E6C8')
+FLEECE = rgb('D8CFEA')      # the woolly: a ball of lilac fleece on long legs
+WOOLLY_SKIN = rgb('7A5A44')
+BIRD = rgb('2E8A9A')        # the strider: a running bird, teal with a crest
+BIRD_BELLY = rgb('E8E0C8')
+BIRD_LEG = rgb('E8862E')
+
+
+def snuffler_face(x, y, w, h):
+    if y == 1 and x in (1, w - 2):
+        return rgb('F2E6C8')
+    if y == 2 and x in (1, w - 2):
+        return DARK
+    return None
+
+
+def snuffler_body(face, x, y, w, h):
+    # a broad pale saddle round its middle
+    along = x if face in ('left', 'right') else y if face in ('top', 'bottom') else -1
+    if 5 <= along <= 8 and face != 'bottom':
+        return solid(STRIPE, key=39)(face, x, y, w, h)
+    return solid(TAPIR, key=40)(face, x, y, w, h)
+
+
+def ox_face(x, y, w, h):
+    if y >= h - 3:
+        return MUZZLE if not (y == h - 2 and x in (1, w - 2)) else shade(MUZZLE, 0.5)
+    if y == 1 and x in (0, w - 1):
+        return DARK
+    return None
+
+
+def woolly_face(x, y, w, h):
+    if y == 1 and x in (0, w - 1):
+        return rgb('F2D25A')
+    return None
+
+
+def strider_face(x, y, w, h):
+    if y == 0 and x in (0, w - 1):
+        return DARK
+    return None
+
+
+# the player's builder (NumBlocks' own): dark hair, a yellow cap, a teal jacket
+HAIR = rgb('3A2A1E')
+SKIN_P = rgb('C8906A')
+JACKET = rgb('2A8A8C')
+SCARF = rgb('F2C53A')
+JEANS = rgb('3A4258')
+BOOTS = rgb('6E4A2E')
+
+
+def player_head(face, x, y, w, h):
+    if face == 'top':
+        return HAIR
+    if face == 'front':
+        if y < 2:
+            return HAIR
+        if y == 3 and x in (1, 2, 5, 6):
+            return rgb('FFFFFF') if x in (1, 6) else rgb('2A3A6E')
+        if y == 5 and x in (3, 4):
+            return shade(SKIN_P, 0.8)
+        if y == 6 and 2 <= x <= 5:
+            return rgb('9A5A48')
+        return SKIN_P
+    if face == 'back':
+        return HAIR
+    if face in ('left', 'right'):
+        return HAIR if y < 3 or x > 4 else SKIN_P
+    return SKIN_P
+
+
+def player_cap(face, x, y, w, h):
+    if face == 'top' or (face in ('front', 'back', 'left', 'right') and y < 2):
+        return SCARF if not (face == 'front' and y == 1) else shade(SCARF, 0.8)
+    if face == 'bottom':
+        return None
+    return None
+
+
+def player_body(face, x, y, w, h):
+    if face in ('front', 'back') and y < 2:
+        return SCARF
+    if face == 'front' and x in (3, 4) and y >= 2:
+        return shade(JACKET, 0.7) if x == 3 else rgb('D8DDE2') if y % 3 == 0 else shade(JACKET, 0.8)
+    if y >= 10:
+        return rgb('4A3A2E')   # a belt
+    return JACKET
+
+
+GLOVE = rgb('E8A03A')   # the builder's work gloves
+
+
+def player_arm(face, x, y, w, h):
+    if face == 'bottom':
+        return shade(GLOVE, 0.85)
+    if y >= 6:   # the glove, stitched across the knuckles
+        if y == 8 and face in ('front', 'back'):
+            return shade(GLOVE, 0.72)
+        return GLOVE if (x + y) % 5 else shade(GLOVE, 1.12)
+    if y == 5:
+        return rgb('5A3A22')   # its cuff
+    return JACKET
+
+
+def player_leg(face, x, y, w, h):
+    if y >= 9:
+        return BOOTS
+    return JEANS if face != 'top' else JEANS
+
+
+# ---------------------------------------------------------------- the models: skin -> [(part, w, h, d, painter)]
+MODELS = {
+    'mudling': (64, 32, [   # a squat lump of mud and moss, two amber eyes
+        ('HEAD', 6, 5, 5, with_face(solid(MUD, 20, MOSS, key=1), mud_face)),
+        ('BODY', 10, 8, 8, solid(MUD, 22, MOSS, key=2)),
+        ('ARM', 3, 6, 3, solid(shade(MUD, 0.85), 15, MOSS, key=3)),
+        ('LEG', 4, 5, 4, solid(shade(MUD, 0.75), key=4)),
+    ]),
+    'thornling': (64, 32, [   # a walking plant: a stalk, a thorny pod for a head, two leaves, roots
+        ('POD', 7, 7, 7, with_face(solid(POD, 14, THORN, key=5), pod_face)),
+        ('STALK', 4, 14, 4, bands(solid(STALK, key=6), shade(STALK, 0.75), (3, 7, 11))),
+        ('LEAF', 6, 1, 3, solid(shade(STALK, 1.15), key=7)),
+        ('ROOTS', 8, 2, 8, solid(rgb('6E5032'), 30, rgb('4A3420'), key=70)),
+    ]),
+    'fizzler': (64, 32, [   # NumBlocks' exploding monster: a walking powder keg
+        ('BODY', 8, 14, 8, with_face(bands(solid(BARREL, 8, shade(BARREL, 0.75), key=8), HOOP, (1, 12)), keg_face)),
+        ('FUSE', 1, 4, 1, lambda f, x, y, w, h: rgb('E8401E') if y == 0 else rgb('2A2420')),
+        ('LEG', 3, 6, 4, solid(shade(BARREL, 0.7), key=9)),
+    ]),
+    'skitter': (64, 32, [   # a beetle: a shiny shell, six legs, two feelers
+        ('SHELL', 10, 5, 12, bands(solid(SHELL, 10, shade(SHELL, 1.6), key=10), rgb('E8B83A'), (1,))),
+        ('HEAD', 6, 4, 4, with_face(solid(shade(SHELL, 0.8), key=11), skitter_face)),
+        ('LEG', 9, 1, 1, solid(shade(SHELL, 0.7), key=12)),
+        ('FEELER', 1, 1, 5, solid(rgb('E8B83A'), key=13)),
+    ]),
+    'snuffler': (64, 32, [   # a round, striped rooter: a long drooping snout, round ears, short legs
+        ('HEAD', 6, 5, 5, with_face(solid(shade(TAPIR, 1.1), key=41), snuffler_face)),
+        ('SNOUT', 2, 2, 5, lambda f, x, y, w, h: rgb('C88A8A') if f == 'front' else shade(TAPIR, 1.25)),
+        ('EAR', 2, 2, 1, lambda f, x, y, w, h: STRIPE if f == 'front' else TAPIR),
+        ('BODY', 8, 7, 12, snuffler_body),
+        ('LEG', 2, 6, 2, solid(shade(TAPIR, 0.8), key=44)),
+    ]),
+    'humpox': (64, 32, [   # a low, long ox with a hump over its shoulders and horns pointing ahead
+        ('HEAD', 6, 6, 5, with_face(solid(OX, 8, OX_HUMP, key=45), ox_face)),
+        ('HORN', 1, 1, 4, solid(HORN_C, key=46)),
+        ('HUMP', 6, 4, 6, solid(OX_HUMP, 12, shade(OX_HUMP, 0.85), key=47)),
+        ('BODY', 9, 7, 13, solid(OX, 10, shade(OX, 0.88), key=48)),
+        ('LEG', 3, 7, 3, bands(solid(shade(OX, 0.85), key=49), shade(OX_HUMP, 0.6), (6,))),
+    ]),
+    'woolly': (64, 32, [   # shorn: a thin dark body on four long legs, a small head on a neck
+        ('HEAD', 4, 4, 5, with_face(solid(WOOLLY_SKIN, key=50), woolly_face)),
+        ('NECK', 2, 8, 2, solid(shade(WOOLLY_SKIN, 1.1), key=51)),
+        ('EAR', 1, 3, 1, solid(shade(WOOLLY_SKIN, 0.8), key=52)),
+        ('BODY', 7, 6, 9, solid(shade(WOOLLY_SKIN, 1.2), key=53)),
+        ('LEG', 2, 10, 2, bands(solid(WOOLLY_SKIN, key=54), rgb('3A2A20'), (9,))),
+    ]),
+    'woolly_fur': (64, 32, [   # its fleece: a round ball, puffed up on top
+        ('BALL', 11, 9, 12, solid(FLEECE, 30, shade(FLEECE, 0.9), key=55)),
+        ('PUFF', 7, 3, 8, solid(shade(FLEECE, 1.05), 30, shade(FLEECE, 0.92), key=56)),
+        ('CAP', 4, 2, 4, solid(FLEECE, 20, shade(FLEECE, 0.9), key=57)),
+        ('COLLAR', 4, 4, 4, solid(FLEECE, 25, shade(FLEECE, 0.9), key=58)),
+    ]),
+    'strider': (64, 32, [   # a running bird: long orange legs, a small body, a long neck, a crest
+        ('HEAD', 3, 3, 4, with_face(solid(BIRD, key=58), strider_face)),
+        ('BEAK', 1, 1, 3, solid(BIRD_LEG, key=59)),
+        ('CREST', 1, 3, 3, solid(rgb('F2C53A'), key=60)),
+        ('NECK', 2, 7, 2, solid(BIRD_BELLY, key=61)),
+        ('BODY', 5, 5, 8, lambda f, x, y, w, h: BIRD_BELLY if f == 'bottom' or (f in ('left', 'right') and y >= 3)
+         else solid(BIRD, 15, shade(BIRD, 1.2), key=62)(f, x, y, w, h)),
+        ('PLUME', 3, 5, 1, solid(shade(BIRD, 0.7), key=63)),
+        ('WING', 1, 3, 5, solid(shade(BIRD, 0.85), key=64)),
+        ('LEG', 1, 10, 1, solid(BIRD_LEG, key=65)),
+    ]),
+}
+
+# the player: the regions the game reads (pack.py: player_front and the arm), at fixed places of a 64 x 64 skin
+PLAYER = [('HEAD', 8, 8, 8, 0, 0, player_head), ('CAP', 8, 8, 8, 32, 0, player_cap),
+          ('BODY', 8, 12, 4, 16, 16, player_body), ('ARM_R', 4, 12, 4, 40, 16, player_arm),
+          ('ARM_L', 4, 12, 4, 32, 48, player_arm), ('LEG_R', 4, 12, 4, 0, 16, player_leg),
+          ('LEG_L', 4, 12, 4, 16, 48, player_leg)]
+
+
+def pack_uv(parts, W=64, H=32):
+    """first-fit placement of each part's footprint ((d + w) * 2 x (d + h)), biggest first"""
+    used = [[False] * W for _ in range(H)]
+    out = {}
+    for name, w, h, d, _ in sorted(parts, key=lambda p: -(2 * (p[3] + p[1])) * (p[3] + p[2])):
+        fw, fh = 2 * (d + w), d + h
+        spot = None
+        for y in range(H - fh + 1):
+            for x in range(W - fw + 1):
+                if all(not used[y + j][x + i] for j in range(fh) for i in range(fw)):
+                    spot = (x, y)
+                    break
+            if spot:
+                break
+        if not spot:
+            raise SystemExit(f'skin full at {name}')
+        for j in range(fh):
+            for i in range(fw):
+                used[spot[1] + j][spot[0] + i] = True
+        out[name] = spot
+    return out
+
+
+def faces(w, h, d):
+    """face name -> (x0, y0, width, height) relative to (u, v)"""
+    return {'top': (d, 0, w, d), 'bottom': (d + w, 0, w, d), 'left': (0, d, d, h), 'front': (d, d, w, h),
+            'right': (d + w, d, d, h), 'back': (d + w + d, d, w, h)}
+
+
+def paint(im, u, v, w, h, d, painter):
+    px = im.load()
+    for face, (x0, y0, fw, fh) in faces(w, h, d).items():
+        for y in range(fh):
+            for x in range(fw):
+                c = painter(face, x, y, fw, fh)
+                if c is None:
+                    continue
+                X, Y = u + x0 + x, v + y0 + y
+                if 0 <= X < im.size[0] and 0 <= Y < im.size[1]:
+                    px[X, Y] = tuple(c[:3]) + (255,)
+
+
+def header():
+    lines = ['/* Generated by tools/conformite/numblocks_models.py: where each part of NumBlocks\' creatures',
+             ' * has its faces in its skin (UV_) and its size in model pixels (SZ_: width, height, depth). */',
+             '#ifndef NB_MOB_SKIN_H', '#define NB_MOB_SKIN_H']
+    for skin, (W, H, parts) in MODELS.items():
+        uv = pack_uv(parts, W, H)
+        for name, w, h, d, _ in parts:
+            lines.append(f'#define SZ_{skin.upper()}_{name} {w}, {h}, {d}')
+            lines.append(f'#define UV_{skin.upper()}_{name} {uv[name][0]}, {uv[name][1]}')
+    lines += ['#endif', '']
+    return '\n'.join(lines)
+
+
+if __name__ == '__main__':
+    p = os.path.join(ROOT, 'games', 'numblocks', 'src', 'mob_skin.h')
+    open(p, 'w').write(header())
+    print('wrote', p)
diff --git a/tools/conformite/numdash_icone.py b/tools/conformite/numdash_icone.py
new file mode 100644
index 0000000..d9082c0
--- /dev/null
+++ b/tools/conformite/numdash_icone.py
@@ -0,0 +1,37 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""L'icône de NumDash (games/numdash/assets/icon.png) : le cube de NumDash (bloc arrondi corail, visière bleue)
+sur un fond violet à bandes, à la place de l'icône qui reprenait le cube par défaut de Geometry Dash.
+
+  python3 tools/conformite/numdash_icone.py
+"""
+import os
+from PIL import Image, ImageDraw
+
+ICI = os.path.dirname(os.path.abspath(__file__))
+OUT = os.path.join(ICI, "..", "..", "games", "numdash", "assets", "icon.png")
+W, H, K = 55, 56, 8
+
+
+def main():
+    im = Image.new("RGBA", (W * K, H * K), (0, 0, 0, 0))
+    d = ImageDraw.Draw(im)
+    d.rounded_rectangle([0, 0, W * K - 1, H * K - 1], radius=10 * K, fill=(48, 26, 110, 255))
+    for x in range(-H * K, W * K, 18 * K):
+        d.polygon([(x, H * K), (x + 7 * K, H * K), (x + 7 * K + H * K * 0.58, 0), (x + H * K * 0.58, 0)], fill=(66, 40, 140, 255))
+    cx, cy, r = W * K / 2, H * K / 2 + 1 * K, 19 * K
+    d.rounded_rectangle([cx - r, cy - r, cx + r, cy + r], radius=5 * K, fill=(16, 10, 24, 255))
+    r2 = r - 2.4 * K
+    d.rounded_rectangle([cx - r2, cy - r2, cx + r2, cy + r2], radius=4 * K, fill=(255, 122, 89, 255))
+    d.rectangle([cx - r2, cy + r2 - 7 * K, cx + r2, cy + r2], fill=(222, 92, 64, 255))
+    d.rounded_rectangle([cx - 13 * K, cy - 9.5 * K, cx + 15 * K, cy + 1.5 * K], radius=4 * K, fill=(16, 10, 24, 255))
+    d.rounded_rectangle([cx - 11 * K, cy - 7.5 * K, cx + 13 * K, cy - 0.5 * K], radius=3 * K, fill=(76, 158, 255, 255))
+    d.rectangle([cx + 4 * K, cy - 7.5 * K, cx + 11 * K, cy - 4.5 * K], fill=(170, 210, 255, 255))
+    d.rectangle([cx - 6 * K, cy + 10 * K, cx + 6 * K, cy + 13.5 * K], fill=(16, 10, 24, 255))
+    im = im.resize((W, H), Image.LANCZOS)
+    im.save(OUT)
+    print(OUT)
+
+
+if __name__ == "__main__":
+    main()
diff --git a/tools/conformite/numdash_niveaux.py b/tools/conformite/numdash_niveaux.py
new file mode 100644
index 0000000..da9d7dd
--- /dev/null
+++ b/tools/conformite/numdash_niveaux.py
@@ -0,0 +1,402 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Les 12 niveaux de NumDash, conçus pour NumDash (19 octobre 2026).
+
+Ils remplacent les niveaux officiels de Geometry Dash que NumDash 1.10.0 reprenait (données de RobTop Games).
+Chaque niveau est assemblé à partir de figures écrites ici (sauts de pics, escaliers, plateformes, tremplins,
+anneaux, couloirs de vaisseau, de boule, d'OVNI, de vague…), avec une graine fixe : le résultat est toujours le
+même. tools/levels.py (dans games/numdash) les compile ; tools/solve.c prouve que chacun se termine.
+
+Unités : celles du moteur (un bloc = 30, le sol en y = 0, x et y au centre de l'objet).
+Sortie : games/numdash/levels/numdash/NN.json  { nom, couleurs, objets [[type, x, y, rot, flips]], événements }
+
+  python3 tools/conformite/numdash_niveaux.py
+"""
+import json
+import os
+import random
+
+ICI = os.path.dirname(os.path.abspath(__file__))
+OUT = os.path.join(ICI, "..", "..", "games", "numdash", "levels", "numdash")
+B = 30
+FLIP_Y = 2
+
+
+class Niveau:
+    def __init__(self, graine):
+        self.r = random.Random(graine)
+        self.objs = []
+        self.events = []
+        self.x = 10 * B          # où commence la figure suivante
+        self.coins = 0
+        self.mode = "cube"
+        self.speed = 1
+
+    def add(self, t, x, y, rot=0, flips=0):
+        self.objs.append([t, int(round(x)), int(round(y)), rot, flips])
+
+    def col(self, x, row, t="BLOCK"):
+        self.add(t, x, row * B + 15)
+
+    def spike(self, x, row=0, ceil_y=None):
+        if ceil_y is None:
+            self.add("SPIKE", x, row * B + 15)
+        else:
+            self.add("SPIKE", x, ceil_y - 15, 0, FLIP_Y)
+
+    def run(self, n):
+        self.x += n * B
+
+    def colour(self, chan, rgb, dur=600):
+        # chan: 0 fond, 1 sol, 2 ligne, 3 objets
+        self.events.append(["COLOR", self.x, 15, chan, rgb[0], rgb[1], rgb[2], 0, dur])
+
+    def coin(self, x, y):
+        if self.coins < 3:
+            self.add("COIN", x, y)
+            self.coins += 1
+
+    # ------------------------------------------------------------- cube
+    def pics(self, n):
+        for k in range(n):
+            self.spike(self.x + k * B)
+        if n == 1 and self.coins < 3 and self.r.random() < 0.15:
+            self.coin(self.x, 85)
+        self.run(n + 6)
+
+    def bloc_et_pic(self):
+        self.col(self.x, 0)
+        self.spike(self.x + 4 * B)
+        self.run(10)
+
+    def escalier(self, h):
+        # marches de 1 à h blocs, 3 blocs de large, des pics au sol après
+        x = self.x
+        for s in range(1, h + 1):
+            for c in range(3):
+                for row in range(s):
+                    self.col(x + c * B, row, "BLOCK" if row == s - 1 else "GRID_DECO")
+            x += 3 * B
+        # descente : pics au sol devant la dernière marche
+        self.spike(x + B)
+        self.spike(x + 2 * B)
+        self.x = x + 9 * B
+
+    def plateforme(self, long):
+        # une marche, puis une plateforme au 2e rang au-dessus de pics
+        x = self.x
+        self.col(x, 0)
+        for c in range(long):
+            self.col(x + (3 + c) * B, 1)
+            self.add("GRID_DECO", x + (3 + c) * B, 15)
+        for c in range(1, long - 1, 2):
+            pass
+        for c in range(long + 2):
+            self.spike(x + (2 + c) * B) if c % 3 == 1 else None
+        if self.coins < 3 and self.r.random() < 0.4:
+            self.coin(x + (3 + long // 2) * B, 110)
+        self.x = x + (long + 9) * B
+
+    def tremplin(self):
+        x = self.x
+        self.add("PAD_Y", x, 2)
+        for row in range(4):
+            self.col(x + 5 * B, row, "BLOCK" if row == 3 else "GRID_DECO")
+        self.spike(x + 9 * B)
+        self.x = x + 13 * B
+
+    def anneau(self, n=6, sorte="ORB_Y"):
+        x = self.x
+        for k in range(n):
+            self.spike(x + k * B)
+        self.add(sorte, x + (n // 2 - 1) * B, 75)
+        self.x = x + (n + 7) * B
+
+    def tremplin_bleu(self):
+        # tremplin bleu : la gravité s'inverse, plafond de blocs, retour par un autre
+        x = self.x
+        self.add("PAD_B", x, 2)
+        for c in range(-1, 12):
+            self.col(x + c * B, 6)
+        self.spike(x + 4 * B, ceil_y=165)
+        self.add("PAD_B", x + 8 * B, 178, 0, FLIP_Y)
+        self.x = x + 16 * B
+
+    def cube_suite(self, n, dur):
+        figs = [lambda: self.pics(1), lambda: self.pics(2), self.bloc_et_pic,
+                lambda: self.escalier(2), lambda: self.plateforme(5)]
+        if dur >= 2:
+            figs += [lambda: self.pics(3), self.tremplin, lambda: self.anneau(5), lambda: self.escalier(3),
+                     lambda: self.plateforme(7)]
+        if dur >= 3:
+            figs += [lambda: self.anneau(6, "ORB_P"), self.tremplin_bleu, lambda: self.pics(3)]
+        last = None
+        for k in range(int(n * 1.6)):
+            f = self.r.choice(figs)
+            while f is last and len(figs) > 1:
+                f = self.r.choice(figs)
+            last = f
+            x0 = self.x
+            f()
+            self.decor(x0, self.x)
+            if self.coins < 3 and k % 6 == 3:
+                self.coin(self.x - 3 * B, 40)    # dans la course, au sol
+
+    def decor(self, x0, x1):
+        """des collines au fond et des étoiles dans le ciel, entre x0 et x1"""
+        r = self.r
+        if r.random() < 0.6:
+            t, y = r.choice([("DSPIKES2", 18), ("DSPIKES3", 14), ("DSPIKES1", 21)])
+            self.add(t, (x0 + x1) / 2 + r.uniform(-30, 30), y)
+        for _ in range(r.randint(0, 2)):
+            self.add("STAR", r.uniform(x0, x1), r.choice([165, 195, 225, 255]))
+
+    # ------------------------------------------------------------- portails
+    def portail(self, t, y=45):
+        self.add(t, self.x, y)
+        self.run(4)
+
+    def vers(self, mode, y=45):
+        noms = {"cube": "PORTAL_CUBE", "ship": "PORTAL_SHIP", "ball": "PORTAL_BALL", "ufo": "UFO_PORTAL",
+                "wave": "WAVE_PORTAL", "robot": "ROBOT_PORTAL", "spider": "SPIDER_PORTAL", "swing": "SWING_PORTAL"}
+        self.run(2)
+        self.portail(noms[mode], y)
+        self.mode = mode
+        self.run(3)
+
+    def vitesse(self, v):
+        self.add(["SPEED_SLOW", "SPEED_NORMAL", "SPEED_FAST", "SPEED_FASTER"][v], self.x, 45)
+        self.speed = v
+        self.run(4)
+
+    # ------------------------------------------------------------- bandes (vaisseau, OVNI, vague…)
+    def colonnes(self, n, haut=10, ecart=4, pas=7, pics=False):
+        """des colonnes du sol et du plafond qui laissent un passage de `ecart` blocs, à des hauteurs variées"""
+        x = self.x
+        prev = haut // 2
+        for k in range(n):
+            g = max(1, min(haut - ecart - 1, prev + self.r.choice([-2, -1, 1, 2])))
+            prev = g
+            for row in range(g):
+                self.col(x, row, "BLOCK" if row == g - 1 else "GRID_DECO")
+            top = g + ecart
+            for row in range(top, haut):
+                self.col(x, row, "BLOCK" if row == top else "GRID_DECO")
+            if k % 2 == 1:
+                self.add("STAR", x + pas * B / 2, (g + ecart / 2) * B)
+            if pics:
+                self.spike(x, g)
+            if k == n // 2 and self.coins < 3:
+                self.coin(x, (g + ecart / 2) * B)
+            x += pas * B
+        self.x = x + 2 * B
+
+    def bande_boule(self, n, haut=8):
+        x = self.x
+        for k in range(n):
+            if k % 2 == 0:
+                self.spike(x)
+                self.spike(x + B)
+            else:
+                self.spike(x, ceil_y=haut * B)
+                self.spike(x + B, ceil_y=haut * B)
+            x += 6 * B
+        self.x = x + 2 * B
+
+    def bande_araignee(self, n, haut=10):
+        x = self.x
+        for k in range(n):
+            if k % 2 == 0:
+                for c in range(3):
+                    self.spike(x + c * B)
+            else:
+                for c in range(3):
+                    self.spike(x + c * B, ceil_y=haut * B)
+            x += 8 * B
+        self.x = x + 2 * B
+
+    def section(self, mode, n, ecart=4, pics=False):
+        self.vers(mode)
+        if mode in ("ship", "ufo", "wave", "swing"):
+            pas = {"ship": 7, "ufo": 6, "wave": 6, "swing": 7}[mode]
+            self.colonnes(int(n * 1.4), ecart=ecart + (1 if mode == "wave" else 0), pas=pas, pics=pics)
+        elif mode == "ball":
+            self.bande_boule(int(n * 1.4))
+        elif mode == "spider":
+            self.bande_araignee(int(n * 1.4))
+        elif mode == "robot":
+            for _ in range(n):
+                self.r.choice([lambda: self.pics(2), lambda: self.escalier(2), lambda: self.pics(3)])()
+        self.vers("cube")
+        self.run(3)
+
+    def fin(self):
+        self.run(8)
+
+    def json(self, nom, couleurs, diff, etoiles, bpm, depart=0):
+        while self.coins < 3:           # les éclats qui manquent : au sol, après la dernière figure
+            self.run(3)
+            self.coin(self.x, 40)
+            self.run(5)
+        self.fin()
+        return {"nom": nom, "difficulte": diff, "etoiles": etoiles, "bpm": bpm, "depart": depart,
+                "couleurs": couleurs, "objets": self.objs, "evenements": self.events}
+
+
+PALETTES = [  # fond, sol, ligne, objets : les couleurs de NumDash
+    ((22, 18, 64), (94, 36, 160), (255, 214, 102), (255, 255, 255)),
+    ((10, 52, 60), (16, 120, 110), (255, 180, 90), (255, 255, 255)),
+    ((58, 14, 52), (170, 40, 110), (120, 240, 210), (255, 255, 255)),
+    ((64, 40, 12), (190, 110, 30), (255, 240, 200), (255, 255, 255)),
+    ((14, 28, 40), (40, 90, 130), (250, 120, 80), (255, 255, 255)),
+    ((30, 10, 20), (120, 20, 60), (255, 200, 60), (255, 255, 255)),
+    ((8, 40, 70), (40, 150, 200), (230, 250, 255), (255, 255, 255)),
+    ((40, 30, 30), (110, 80, 70), (255, 160, 60), (255, 255, 255)),
+    ((18, 16, 40), (70, 60, 150), (200, 200, 255), (255, 255, 255)),
+    ((6, 6, 10), (60, 60, 80), (120, 255, 120), (255, 255, 255)),
+    ((50, 8, 0), (170, 50, 0), (255, 220, 120), (255, 255, 255)),
+    ((0, 20, 30), (0, 90, 90), (255, 90, 200), (255, 255, 255)),
+]
+
+
+def couleurs(i):
+    bg, g, line, obj = PALETTES[i]
+    return {"fond": bg, "sol": g, "ligne": line, "objets": obj}
+
+
+def change(n, i):
+    bg, g, line, _ = PALETTES[i]
+    n.colour(0, bg)
+    n.colour(1, g)
+
+
+def niveaux():
+    L = []
+    # 1 : le cube seul
+    n = Niveau(101)
+    n.cube_suite(26, 1)
+    L.append(n.json("NEON START", couleurs(0), 1, 1, 150))
+    # 2 : le cube et le vaisseau
+    n = Niveau(202)
+    n.cube_suite(12, 1)
+    change(n, 1)
+    n.section("ship", 9, ecart=5)
+    n.cube_suite(12, 2)
+    L.append(n.json("PULSE RIDE", couleurs(1), 1, 2, 135))
+    # 3 : anneaux et vaisseau
+    n = Niveau(303)
+    n.cube_suite(10, 2)
+    n.section("ship", 10, ecart=4)
+    change(n, 2)
+    n.cube_suite(12, 2)
+    n.section("ship", 8, ecart=4)
+    n.cube_suite(6, 2)
+    L.append(n.json("SKY CIRCUIT", couleurs(2), 2, 3, 160))
+    # 4 : la boule
+    n = Niveau(404)
+    n.cube_suite(10, 2)
+    n.section("ball", 10)
+    change(n, 3)
+    n.cube_suite(10, 2)
+    n.section("ship", 8, ecart=4)
+    n.cube_suite(6, 2)
+    L.append(n.json("SALT FLATS", couleurs(3), 2, 4, 140))
+    # 5 : cube, vaisseau, boule, tremplins bleus
+    n = Niveau(505)
+    n.cube_suite(10, 3)
+    n.section("ship", 10, ecart=4, pics=True)
+    n.cube_suite(8, 3)
+    change(n, 4)
+    n.section("ball", 12)
+    n.cube_suite(8, 3)
+    L.append(n.json("GRID RUNNER", couleurs(4), 3, 5, 145))
+    # 6 : l'OVNI
+    n = Niveau(606)
+    n.cube_suite(10, 3)
+    n.section("ufo", 10, ecart=4)
+    change(n, 5)
+    n.cube_suite(10, 3)
+    n.section("ship", 10, ecart=4, pics=True)
+    n.cube_suite(6, 3)
+    L.append(n.json("HOLLOW BEAT", couleurs(5), 3, 6, 150))
+    # 7 : plus vite
+    n = Niveau(707)
+    n.cube_suite(8, 3)
+    n.vitesse(2)
+    n.cube_suite(8, 3)
+    n.section("ship", 10, ecart=4, pics=True)
+    change(n, 6)
+    n.vitesse(1)
+    n.cube_suite(8, 3)
+    n.section("ufo", 10, ecart=4)
+    n.cube_suite(6, 3)
+    L.append(n.json("FROST LINE", couleurs(6), 4, 7, 170))
+    # 8 : boule et OVNI, vitesses changeantes
+    n = Niveau(808)
+    n.cube_suite(8, 3)
+    n.section("ball", 12)
+    n.vitesse(2)
+    n.section("ufo", 10, ecart=4)
+    change(n, 7)
+    n.vitesse(1)
+    n.cube_suite(10, 3)
+    n.section("ship", 12, ecart=4, pics=True)
+    n.cube_suite(6, 3)
+    L.append(n.json("IRON TIDE", couleurs(7), 4, 8, 142))
+    # 9 : la vague
+    n = Niveau(909)
+    n.cube_suite(8, 3)
+    n.section("wave", 10, ecart=4)
+    change(n, 8)
+    n.cube_suite(8, 3)
+    n.section("ball", 10)
+    n.section("ship", 10, ecart=4, pics=True)
+    n.cube_suite(6, 3)
+    L.append(n.json("LUNAR LOOP", couleurs(8), 4, 9, 130))
+    # 10 : robot et araignée
+    n = Niveau(1010)
+    n.cube_suite(8, 3)
+    n.section("robot", 8)
+    n.section("wave", 12, ecart=4)
+    change(n, 9)
+    n.section("spider", 10)
+    n.cube_suite(8, 3)
+    n.section("ship", 12, ecart=3, pics=True)
+    n.cube_suite(6, 3)
+    L.append(n.json("STATIC STORM", couleurs(9), 5, 10, 128))
+    # 11 : tout, plus vite
+    n = Niveau(1111)
+    n.vitesse(2)
+    n.cube_suite(10, 3)
+    n.section("ship", 12, ecart=3, pics=True)
+    n.section("ball", 12)
+    change(n, 10)
+    n.section("ufo", 12, ecart=3)
+    n.section("wave", 12, ecart=4)
+    n.cube_suite(8, 3)
+    L.append(n.json("MAGMA CORE", couleurs(10), 6, 12, 132))
+    # 12 : le dernier, le plus long
+    n = Niveau(1212)
+    n.cube_suite(8, 3)
+    n.section("swing", 10, ecart=5)
+    n.vitesse(2)
+    n.section("wave", 12, ecart=4)
+    change(n, 11)
+    n.section("spider", 12)
+    n.section("ship", 12, ecart=3, pics=True)
+    n.vitesse(3)
+    n.cube_suite(8, 3)
+    n.section("ufo", 10, ecart=4)
+    n.vitesse(1)
+    n.cube_suite(6, 3)
+    L.append(n.json("FINAL SIGNAL", couleurs(11), 6, 14, 136))
+    return L
+
+
+if __name__ == "__main__":
+    os.makedirs(OUT, exist_ok=True)
+    for i, lv in enumerate(niveaux()):
+        p = os.path.join(OUT, "%02d.json" % (i + 1))
+        with open(p, "w") as f:
+            json.dump(lv, f, separators=(",", ":"))
+        print("%2d %-14s %4d objets, %6d unités" % (i + 1, lv["nom"], len(lv["objets"]), max(o[1] for o in lv["objets"])))
diff --git a/tools/conformite/numdrive_font.py b/tools/conformite/numdrive_font.py
new file mode 100644
index 0000000..f9c06c7
--- /dev/null
+++ b/tools/conformite/numdrive_font.py
@@ -0,0 +1,142 @@
+"""NumDrive's fonts and icons (Calcade, October 2026): anti-aliased 2 bits a pixel bitmaps of
+Poppins Bold (SIL Open Font License 1.1, games/numdrive/LICENSES/OFL-1.1-Poppins.txt) and NumDrive's
+own icons, written as games/numdrive/src/font.c.
+
+usage: numdrive_font.py [Poppins-Bold.ttf] [out.c]"""
+import os
+import sys
+from PIL import Image, ImageDraw, ImageFont
+
+SS = 4
+HERE = os.path.dirname(os.path.abspath(__file__))
+GAME = os.path.join(HERE, '..', '..', 'games', 'numdrive')
+ASCII = ''.join(chr(c) for c in range(32, 127))
+FONTS = [('font_s', 10, ASCII), ('font_m', 13, ASCII), ('font_l', 19, ASCII)]
+
+
+def quant(im):
+    w, h = im.size
+    im = im.resize((w // SS, h // SS), Image.BOX)
+    w, h = im.size
+    b = im.tobytes()
+    return [[(b[y * w + x] * 3 + 127) // 255 for x in range(w)] for y in range(h)]
+
+
+def record(rows):
+    H = len(rows)
+    W = len(rows[0]) if H else 0
+    ys = [y for y in range(H) if any(rows[y])]
+    xs = [x for x in range(W) if any(rows[y][x] for y in range(H))]
+    if not ys:
+        return 0, 0, 0, 0, b''
+    x0, x1, y0, y1 = xs[0], xs[-1] + 1, ys[0], ys[-1] + 1
+    bits = []
+    for y in range(y0, y1):
+        bits += rows[y][x0:x1]
+    out = bytearray()
+    for i in range(0, len(bits), 4):
+        q = bits[i:i + 4] + [0] * (4 - len(bits[i:i + 4]))
+        out.append(q[0] | q[1] << 2 | q[2] << 4 | q[3] << 6)
+    return x0, y0, x1 - x0, y1 - y0, bytes(out)
+
+
+def build_font(path, size, chars):
+    f = ImageFont.truetype(path, size * SS)
+    asc, desc = f.getmetrics()
+    H = (asc + desc) // SS + 1
+    recs = []
+    for ch in chars:
+        adv = round(f.getlength(ch) / SS)
+        W = adv + 4
+        im = Image.new('L', (W * SS, H * SS), 0)
+        ImageDraw.Draw(im).text((SS, 0), ch, font=f, fill=255)
+        x0, y0, w, h, data = record(quant(im))
+        recs.append((ch, adv, x0 - 1, y0, w, h, data))
+    cap = f.getbbox('H')
+    return dict(h=H, base=asc // SS, cap_top=cap[1] // SS, recs=recs)
+
+
+def icon(fn, w, h):
+    im = Image.new('L', (w * SS, h * SS), 0)
+    fn(ImageDraw.Draw(im), SS)
+    return record(quant(im))
+
+
+def bars(d, s):
+    d.rounded_rectangle((2 * s, 1 * s, 5 * s, 11 * s), 1 * s, fill=255)
+    d.rounded_rectangle((7 * s, 1 * s, 10 * s, 11 * s), 1 * s, fill=255)
+
+
+def play(d, s):
+    d.polygon([(2 * s, 1 * s), (11 * s, 6 * s), (2 * s, 11 * s)], fill=255)
+
+
+def restart(d, s):
+    d.arc((1.5 * s, 1.5 * s, 10.5 * s, 10.5 * s), 40, 330, fill=255, width=int(2 * s))
+    d.polygon([(7.5 * s, 0), (12 * s, 2.5 * s), (8 * s, 6 * s)], fill=255)
+
+
+def grid(d, s):
+    for i in range(2):
+        for j in range(2):
+            d.rounded_rectangle(((1 + 6 * i) * s, (1 + 6 * j) * s, (5 + 6 * i) * s, (5 + 6 * j) * s), 1 * s, fill=255)
+
+
+def chev_l(d, s):
+    d.line([(8 * s, 1 * s), (3 * s, 6 * s), (8 * s, 11 * s)], fill=255, width=int(2.4 * s), joint='curve')
+
+
+def chev_r(d, s):
+    d.line([(3 * s, 1 * s), (8 * s, 6 * s), (3 * s, 11 * s)], fill=255, width=int(2.4 * s), joint='curve')
+
+
+def check(d, s):
+    d.line([(1.5 * s, 5 * s), (4 * s, 7.5 * s), (8.5 * s, 2 * s)], fill=255, width=int(2 * s), joint='curve')
+
+
+def flag(d, s):
+    d.rectangle((1 * s, 0, 2.2 * s, 11 * s), fill=255)
+    d.polygon([(2.2 * s, 0.5 * s), (10 * s, 2.5 * s), (2.2 * s, 5.5 * s)], fill=255)
+
+
+ICONS = [('ic_pause', bars, 12, 12), ('ic_play', play, 12, 12), ('ic_restart', restart, 12, 12),
+         ('ic_grid', grid, 12, 12), ('ic_back', chev_l, 11, 12), ('ic_next', chev_r, 11, 12),
+         ('ic_check', check, 10, 9), ('ic_flag', flag, 11, 11)]
+
+
+def main():
+    src = sys.argv[1] if len(sys.argv) > 1 else '/usr/share/fonts/truetype/google-fonts/Poppins-Bold.ttf'
+    out = sys.argv[2] if len(sys.argv) > 2 else os.path.join(GAME, 'src', 'font.c')
+    lines = ['/* made by tools/conformite/numdrive_font.py: Poppins Bold (SIL Open Font License 1.1) and',
+             '   NumDrive\'s own icons */', '#include "font.h"', '']
+    for name, size, chars in FONTS:
+        F = build_font(src, size, chars)
+        data = bytearray()
+        glyphs = []
+        for ch, adv, xo, y0, w, h, bits in F['recs']:
+            glyphs.append((ord(ch), adv, xo, y0, w, h, len(data)))
+            data += bits
+        lines.append('static const uint8_t %s_data[] = {%s};' % (name, ','.join(map(str, data))))
+        lines.append('static const Glyph %s_glyphs[] = {' % name)
+        for g in glyphs:
+            lines.append('  {%d, %d, %d, %d, %d, %d, %d},' % g)
+        lines.append('};')
+        lines.append('const Font %s = {%d, %d, %d, %d, %s_glyphs, %s_data};' % (
+            name, F['h'], F['base'], F['cap_top'], len(glyphs), name, name))
+        lines.append('')
+    for name, fn, w, h in ICONS:
+        xo, y0, gw, gh, bits = icon(fn, w, h)
+        lines.append('static const uint8_t %s_data[] = {%s};' % (name, ','.join(map(str, bits))))
+        lines.append('const Icon %s = {%d, %d, %d, %d, %d, %d, %s_data};' % (name, w, h, xo, y0, gw, gh, name))
+    open(out, 'w').write('\n'.join(lines) + '\n')
+    hdr = os.path.join(os.path.dirname(out), 'font.h')
+    text = open(hdr).read()
+    i = text.index('extern const Font')
+    j = text.index('#endif', i)
+    text = text[:i] + 'extern const Font font_s, font_m, font_l;\nextern const Icon %s;\n\n' % ', '.join(
+        n for n, _, _, _ in ICONS) + text[j:]
+    open(hdr, 'w').write(text)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/tools/conformite/numdrive_icon.py b/tools/conformite/numdrive_icon.py
new file mode 100644
index 0000000..a9d56a6
--- /dev/null
+++ b/tools/conformite/numdrive_icon.py
@@ -0,0 +1,50 @@
+"""NumDrive's icon (Calcade, October 2026): the orange buggy on a green hill under a blue sky,
+drawn here, written to games/numdrive/src/icon.png (55 x 56, the calculator's size)."""
+import math
+import os
+from PIL import Image, ImageDraw
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+OUT = os.path.join(HERE, '..', '..', 'games', 'numdrive', 'src', 'icon.png')
+S = 8
+W, H = 55 * S, 56 * S
+im = Image.new('RGBA', (W, H), (0, 0, 0, 0))
+d = ImageDraw.Draw(im)
+# sky
+for y in range(H):
+    t = y / H
+    c = (int(0x4f + (0xc8 - 0x4f) * t), int(0xa8 + (0xec - 0xa8) * t), int(0xf0 + (0xff - 0xf0) * t))
+    d.line([(0, y), (W, y)], fill=c)
+d.ellipse((36 * S, 6 * S, 48 * S, 18 * S), fill=(255, 242, 160))
+# hill
+pts = [(0, H)]
+for x in range(0, W + 1, S):
+    pts.append((x, 40 * S - 6 * S * math.sin(x / W * math.pi * 0.9 + 0.3)))
+pts.append((W, H))
+d.polygon(pts, fill=(0x7e, 0xd9, 0x57))
+pts2 = [(x, y + 3 * S) for x, y in pts[1:-1]]
+d.polygon([(0, H)] + pts2 + [(W, H)], fill=(0xb0, 0x78, 0x4c))
+# the buggy, tilted a little up the hill
+car = Image.new('RGBA', (W, H), (0, 0, 0, 0))
+c = ImageDraw.Draw(car)
+ink = (0x1a, 0x1a, 0x24)
+def poly(p, fill):
+    c.polygon([(x * S, y * S) for x, y in p], fill=fill, outline=ink, width=S)
+poly([(18, 18), (30, 18), (32, 27), (16, 27)], (0x2d, 0x5f, 0xff))  # cabin
+poly([(20, 20), (28, 20), (29.5, 26), (19, 26)], (0xae, 0xdf, 0xff))  # window
+c.ellipse((20.5 * S, 20 * S, 26.5 * S, 26 * S), fill=(255, 255, 255), outline=ink, width=S)  # helmet
+c.rectangle((23.5 * S, 22 * S, 26.5 * S, 24 * S), fill=(0x30, 0x3c, 0x5a))
+poly([(8, 27), (46, 27), (47, 31), (42, 35), (10, 35), (7, 31)], (0xff, 0x6c, 0x00))  # body
+c.rectangle((9 * S, 32 * S, 45 * S, 35 * S), fill=(0xa2, 0x44, 0x00))
+for cx in (15, 39):
+    c.ellipse(((cx - 6) * S, 31 * S, (cx + 6) * S, 43 * S), fill=(0x2c, 0x2c, 0x34), outline=ink, width=S)
+    c.ellipse(((cx - 3) * S, 34 * S, (cx + 3) * S, 40 * S), fill=(0xc8, 0xcc, 0xd8))
+car = car.rotate(8, resample=Image.BICUBIC, center=(W / 2, H * 0.6))
+im.alpha_composite(car, (0, -2 * S))
+# rounded corners
+mask = Image.new('L', (W, H), 0)
+ImageDraw.Draw(mask).rounded_rectangle((0, 0, W - 1, H - 1), 9 * S, fill=255)
+im.putalpha(mask)
+im = im.resize((55, 56), Image.LANCZOS)
+im.save(OUT)
+print('wrote', OUT)
diff --git a/tools/conformite/numdrive_levels.py b/tools/conformite/numdrive_levels.py
new file mode 100644
index 0000000..b9a053c
--- /dev/null
+++ b/tools/conformite/numdrive_levels.py
@@ -0,0 +1,368 @@
+"""NumDrive's 157 levels (Calcade, October 2026), all made here: for each level a car, a scenery and
+a list of pieces (road, slopes, hills, gaps, bridges, seesaws, crates...), chosen from a seed with a
+difficulty that grows from the first level to the last. Every level is then driven on the computer
+(games/numdrive/host2/check: gas only, then a search over gas / coast / brake); a level that cannot
+be finished, or does not fit the game's tables, gets a new seed until all of them work.
+
+usage: numdrive_levels.py [--rounds N] [--jobs N]    writes games/numdrive/src/levels_data.c
+                                                     and games/numdrive/tools/levels.txt (the seeds)"""
+import os
+import random
+import subprocess
+import sys
+from concurrent.futures import ThreadPoolExecutor
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+GAME = os.path.normpath(os.path.join(HERE, '..', '..', 'games', 'numdrive'))
+OUT_C = os.path.join(GAME, 'src', 'levels_data.c')
+SEEDS = os.path.join(GAME, 'tools', 'levels.txt')
+N = 157
+
+(P_END, P_FLAT, P_SLOPE, P_HILL, P_BUMPS, P_CURVE, P_GAP, P_STEPS, P_BRIDGE, P_SEESAW, P_FALL, P_CRATES,
+ P_WALL, P_ROOF, P_LIFT, P_SPIN, P_BALL) = range(17)
+
+THEMES = ['meadow', 'desert', 'snow', 'dusk', 'night', 'volcano']
+ADJ = {
+    'meadow': ['Green', 'Sunny', 'Clover', 'Daisy', 'Breezy', 'Happy', 'Meadow', 'Spring'],
+    'desert': ['Dusty', 'Sandy', 'Cactus', 'Golden', 'Mirage', 'Dune', 'Scorching', 'Canyon'],
+    'snow': ['Frosty', 'Icy', 'Polar', 'Snowy', 'Glacier', 'Chilly', 'Blizzard', 'Pine'],
+    'dusk': ['Twilight', 'Amber', 'Violet', 'Sunset', 'Evening', 'Coral', 'Peach', 'Velvet'],
+    'night': ['Moonlit', 'Starry', 'Midnight', 'Comet', 'Owl', 'Neon', 'Shadow', 'Dream'],
+    'volcano': ['Molten', 'Ashen', 'Ember', 'Magma', 'Cinder', 'Scorch', 'Smoky', 'Blaze'],
+}
+NOUN = {
+    'road': ['Road', 'Drive', 'Run', 'Trip', 'Way', 'Ride'],
+    'hill': ['Hills', 'Rollers', 'Waves', 'Humps', 'Swells', 'Bumps'],
+    'slope': ['Ramps', 'Climb', 'Incline', 'Ascent', 'Slide', 'Descent'],
+    'gap': ['Leap', 'Jump', 'Gap', 'Hop', 'Chasm', 'Drop'],
+    'steps': ['Stairs', 'Steps', 'Ledges', 'Terraces', 'Staircase', 'Shelves'],
+    'bridge': ['Bridge', 'Planks', 'Crossing', 'Boardwalk', 'Span', 'Rope Walk'],
+    'seesaw': ['Seesaw', 'Tilt', 'Teeter', 'Balance', 'Rocker', 'Lever'],
+    'crates': ['Crates', 'Boxes', 'Cargo', 'Parcels', 'Stack', 'Warehouse'],
+    'fall': ['Crumble', 'Shaky Slabs', 'Collapse', 'Rubble', 'Quake', 'Cave-in'],
+    'ball': ['Boulder', 'Big Ball', 'Rolling Rock', 'Bowling', 'Marble', 'Pushover'],
+    'roof': ['Tunnel', 'Low Roof', 'Cave', 'Underpass', 'Burrow', 'Crawl'],
+    'lift': ['Elevator', 'Lift', 'Rise', 'Updraft', 'Hoist', 'Platform'],
+    'spin': ['Windmill', 'Spinner', 'Sweeper', 'Rotor', 'Propeller', 'Turnstile'],
+    'wall': ['Curbs', 'Blocks', 'Hurdles', 'Barriers', 'Kerbs', 'Obstacles'],
+}
+SUFFIX = ['', ' II', ' III', ' IV', ' V']
+
+# when each piece shows up (level number), and the cars (index: see level.c)
+UNLOCK = [('hill', 0), ('slope', 0), ('gap', 3), ('steps', 6), ('bridge', 9), ('wall', 12), ('seesaw', 16),
+          ('crates', 20), ('fall', 25), ('ball', 30), ('roof', 36), ('lift', 45), ('spin', 60)]
+CAR_UNLOCK = [(0, 0), (1, 12), (2, 22), (4, 34), (3, 46), (5, 62), (6, 80)]
+
+
+def hm(x):
+    """lengths: metres to signed half metres (a byte)"""
+    v = int(round(x * 2))
+    v = max(-127, min(127, v))
+    return v & 255
+
+
+def hq(x):
+    """heights and sizes: metres to signed quarter metres (a byte)"""
+    v = int(round(x * 4))
+    v = max(-127, min(127, v))
+    return v & 255
+
+
+# the cars' (smallest) wheel radius: how high a step they can climb
+WHEEL_R = [0.42, 0.72, 0.32, 0.44, 0.38, 0.40, 0.48]
+
+
+class Builder:
+    def __init__(self, rng, d):
+        self.rng, self.d = rng, d
+        self.ops = []
+        self.statics = 3
+        self.bodies = 4
+        self.length = 12.0
+        self.y = 0.0
+
+    def add(self, code, *args):
+        self.ops.append(code)
+        self.ops.extend(args)
+
+    def flat(self, L):
+        while L > 0.5:
+            l = min(L, 60)
+            self.add(P_FLAT, hm(l))
+            self.statics += 1
+            self.length += l
+            L -= l
+
+    def piece(self, kind):
+        r, d = self.rng, self.d
+        if kind == 'hill':
+            L = r.uniform(10, 24)
+            h = r.uniform(0.8, 1.5 + 2.5 * d) * r.choice([1, 1, -1])
+            if r.random() < 0.45:
+                n = r.randint(2, 3 + int(d * 3))
+                L = min(60, L * n * 0.6)
+                h = max(-2.5, min(2.5, h * 0.7))
+                self.add(P_BUMPS, hm(L), hq(h), n)
+                self.statics += max(4 * n, int(L / 0.8))
+            else:
+                self.add(P_HILL, hm(L), hq(h))
+                self.statics += max(4, int(L / 0.8))
+            self.length += L
+        elif kind == 'slope':
+            L = r.uniform(6, 16)
+            k = r.uniform(0.15, 0.3 + 0.35 * d)
+            dy = L * k * r.choice([1, -1])
+            if self.y + dy > 12 or self.y + dy < -12:
+                dy = -dy
+            if r.random() < 0.5:
+                self.add(P_CURVE, hm(L), hq(dy))
+                self.statics += max(4, int(L / 0.8))
+            else:
+                self.add(P_SLOPE, hm(L), hq(dy))
+                self.statics += 1
+            self.y += dy
+            self.length += L
+        elif kind == 'gap':
+            L = r.uniform(1.5, 2.5 + 7 * d)
+            if r.random() < 0.6 or L > 4:
+                kl = r.uniform(4, 8)
+                kick = r.uniform(0.6, 1.2 + 1.2 * d)
+                self.add(P_SLOPE, hm(kl), hq(kick))
+                self.statics += 1
+                self.y += kick
+                self.length += kl
+            dy = r.uniform(-2.5, 0.6)
+            pool = 2 if self.theme == 'volcano' else (1 if r.random() < 0.6 else 0)
+            self.add(P_GAP, hm(L), hq(dy), pool)
+            self.statics += 3
+            self.y += dy
+            self.length += L
+        elif kind == 'steps':
+            n = r.randint(2, 4 + int(d * 3))
+            w = r.uniform(1.2, 3.0)
+            up = self.wheel * r.uniform(0.3, 0.55)
+            h = r.choice([up, -r.uniform(0.3, 0.8 + 0.6 * d)])
+            h = round(h * 4) / 4 or 0.25
+            self.add(P_STEPS, n, hq(w), hq(h))
+            self.statics += n
+            self.y += n * h
+            self.length += n * w
+        elif kind == 'bridge':
+            L = r.uniform(6, 9 + 8 * d)
+            n = max(4, int(L / 1.4))
+            if self.bodies + n > 36:
+                return self.piece('hill')
+            self.add(P_BRIDGE, hm(L), n)
+            self.bodies += n
+            self.statics += 1
+            self.length += L
+        elif kind == 'wall':
+            h = max(0.25, self.wheel * r.uniform(0.3, 0.5 + 0.2 * d))
+            w = r.uniform(0.5, 1.5)
+            for _ in range(r.randint(1, 3)):
+                self.add(P_WALL, hq(h), hq(w))
+                self.statics += 2
+                self.length += w + 1
+                self.flat(r.uniform(3, 6))
+        elif kind == 'seesaw':
+            if self.bodies + 1 > 36:
+                return self.piece('hill')
+            L = r.uniform(6, 9)
+            dy = r.uniform(-1.2, 0.3)
+            self.add(P_SEESAW, hm(L), hq(dy))
+            self.bodies += 1
+            self.statics += 3
+            self.y += dy
+            self.length += L
+        elif kind == 'crates':
+            n = r.randint(1, 2 + int(d * 2))
+            s = r.uniform(0.5, 0.8)
+            if self.bodies + n > 36:
+                return self.piece('hill')
+            self.add(P_CRATES, n, hq(s))
+            self.bodies += n
+            self.statics += 1
+            self.length += 2 + 3 * s
+        elif kind == 'fall':
+            if self.bodies + 1 > 36:
+                return self.piece('hill')
+            L = r.uniform(3, 4.5 + 2.5 * d)
+            self.add(P_FALL, hm(L))
+            self.bodies += 1
+            self.statics += 1
+            self.length += L
+        elif kind == 'ball':
+            if self.bodies + 1 > 36:
+                return self.piece('hill')
+            rr = r.uniform(0.5, 0.7 + 0.5 * d)
+            self.add(P_BALL, hq(rr))
+            self.bodies += 1
+            self.statics += 1
+            self.length += 3 + 2 * rr
+        elif kind == 'roof':
+            L = r.uniform(6, 10 + 8 * d)
+            h = r.uniform(2.6, 3.4)
+            self.add(P_ROOF, hm(L), hq(h + self.wheel))
+            self.statics += 2
+            self.length += L
+        elif kind == 'lift':
+            if self.bodies + 1 > 36:
+                return self.piece('hill')
+            L = r.uniform(4, 6)
+            dy = r.uniform(1.0, 2.0 + 1.5 * d)
+            self.add(P_LIFT, hm(L), hq(dy))
+            self.bodies += 1
+            self.statics += 2
+            self.y += dy
+            self.length += L
+        elif kind == 'spin':
+            if self.bodies + 1 > 36:
+                return self.piece('hill')
+            h = r.uniform(3.0, 3.6) + self.wheel
+            ln = r.uniform(2.6, 3.8)
+            sp = r.randint(3, 6) * r.choice([1, -1])
+            self.add(P_SPIN, hq(h), hq(ln), sp & 255)
+            self.bodies += 1
+            self.statics += 2
+            self.length += ln + 2
+        return None
+
+
+def gen_level(i, seed):
+    rng = random.Random(seed * 7919 + i)
+    d = i / (N - 1)
+    theme = THEMES[(i // 8) % len(THEMES)]
+    cars = [c for c, at in CAR_UNLOCK if at <= i]
+    newest = max(at for c, at in CAR_UNLOCK if at <= i)
+    car = [c for c, at in CAR_UNLOCK if at == newest][0] if i - newest < 3 else rng.choice(cars)
+    pool = [k for k, at in UNLOCK if at <= i]
+    # the newest piece is the level's theme for a few levels after it shows up
+    newp = [k for k, at in UNLOCK if at <= i and i - at < 4]
+    sig = newp[-1] if newp else rng.choice(pool)
+    b = Builder(rng, d)
+    b.theme = theme
+    b.wheel = WHEEL_R[car]
+    b.flat(rng.uniform(3, 6))
+    count = 3 + int(round(d * 7)) + rng.randint(0, 1)
+    for k in range(count):
+        kind = sig if (k % 2 == 1 or rng.random() < 0.3) else rng.choice(pool)
+        b.piece(kind)
+        b.flat(rng.uniform(4 - 2 * d, 8 - 3 * d))
+    b.add(P_END)
+    return dict(theme=THEMES.index(theme), car=car, ops=b.ops, sig=sig, statics=b.statics, bodies=b.bodies,
+                length=b.length, themename=theme)
+
+
+def names_for(levels):
+    used = set()
+    out = []
+    for i, lv in enumerate(levels):
+        rng = random.Random(1000 + i)
+        sig = lv['sig'] if i > 0 else 'road'
+        for tries in range(200):
+            nm = rng.choice(ADJ[lv['themename']]) + ' ' + rng.choice(NOUN[sig if tries < 100 else 'road'])
+            if nm not in used:
+                break
+        else:
+            k = 1
+            while nm + SUFFIX[k % len(SUFFIX)] in used:
+                k += 1
+            nm += SUFFIX[k % len(SUFFIX)]
+        used.add(nm)
+        out.append(nm)
+    return out
+
+
+def write_c(levels, names):
+    lines = ['/* NumDrive\'s levels, made by tools/conformite/numdrive_levels.py (seeds in tools/levels.txt) */',
+             '#include "nd.h"', '#include "level.h"', '']
+    for i, lv in enumerate(levels):
+        lines.append('static const uint8_t l%d[] = {%s};' % (i, ','.join(str(x) for x in lv['ops'])))
+    lines.append('')
+    lines.append('const LevelDef level_defs[] = {')
+    for i, lv in enumerate(levels):
+        lines.append('  {"%s", %d, %d, l%d},' % (names[i], lv['car'], lv['theme'], i))
+    lines.append('};')
+    lines.append('const int level_count = %d;' % len(levels))
+    open(OUT_C, 'w').write('\n'.join(lines) + '\n')
+
+
+def build_checker():
+    subprocess.run(['make', '-s', '-C', os.path.join(GAME, 'host2'), 'check'], check=True)
+
+
+def check_one(i):
+    r = subprocess.run([os.path.join(GAME, 'host2', 'check'), str(i), str(i)], capture_output=True, text=True,
+                       timeout=900)
+    line = r.stdout.strip().splitlines()[-1] if r.stdout.strip() else '%d FAIL crash' % i
+    return line
+
+
+def ok(i, line):
+    f = line.split()
+    if len(f) < 2:
+        return False
+    if f[1] == 'GAS':
+        return True
+    if f[1] == 'WIN':
+        return i >= 8  # the first levels need only the gas
+    return False
+
+
+def main():
+    rounds, jobs = 12, os.cpu_count() or 4
+    a = sys.argv[1:]
+    if '--rounds' in a:
+        rounds = int(a[a.index('--rounds') + 1])
+    if '--jobs' in a:
+        jobs = int(a[a.index('--jobs') + 1])
+    seeds = [1] * N
+    results = {}
+    if os.path.exists(SEEDS):
+        for line in open(SEEDS):
+            f = line.split()
+            if len(f) >= 2 and f[0].isdigit() and int(f[0]) < N:
+                seeds[int(f[0])] = int(f[1])
+                results[int(f[0])] = ' '.join(f[2:])
+    todo = list(range(N))
+    if '--redo' in a:  # only the levels whose last check failed (the others keep their seed)
+        todo = [i for i in range(N) if not ok(i, results.get(i, ''))]
+    for rnd in range(rounds):
+        levels = [None] * N
+        for i in range(N):
+            for _ in range(50):
+                lv = gen_level(i, seeds[i])
+                if lv['statics'] <= 480 and lv['bodies'] <= 38:
+                    break
+                seeds[i] += 1
+            levels[i] = lv
+        write_c(levels, names_for(levels))
+        build_checker()
+        with ThreadPoolExecutor(jobs) as ex:
+            out = list(ex.map(check_one, todo))
+        bad = []
+        for i, line in zip(todo, out):
+            results[i] = line
+            if not ok(i, line):
+                bad.append(i)
+                seeds[i] += 1
+        print('round %d: %d checked, %d to redo %s' % (rnd, len(todo), len(bad), bad[:20]), flush=True)
+        with open(SEEDS, 'w') as f:
+            f.write('# level seed result (tools/conformite/numdrive_levels.py)\n')
+            for i in range(N):
+                f.write('%d %d %s\n' % (i, seeds[i], results.get(i, '')[:80]))
+        if not bad:
+            break
+        todo = bad
+    # the last round's failures got a new seed after their check: write the levels that passed
+    if todo and bad:
+        for i in bad:
+            seeds[i] -= 1
+        levels = [gen_level(i, seeds[i]) for i in range(N)]
+        write_c(levels, names_for(levels))
+        print('still failing:', bad)
+        sys.exit(1)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/tools/conformite/numdrive_shots.py b/tools/conformite/numdrive_shots.py
new file mode 100644
index 0000000..3e0cb5f
--- /dev/null
+++ b/tools/conformite/numdrive_shots.py
@@ -0,0 +1,50 @@
+"""NumDrive's preview pictures (Calcade, October 2026): runs the game on the computer
+(games/numdrive/host2/shots) and keeps a few frames: docs/calcade.png and docs/shot<n>.png."""
+import os
+import subprocess
+import sys
+import tempfile
+from PIL import Image
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+GAME = os.path.normpath(os.path.join(HERE, '..', '..', 'games', 'numdrive'))
+SHOTS = [  # level, frame, keys, picture
+    (0, 150, 'RIGHT:0:400', 'calcade.png'),
+    (9, 260, None, 'shot1.png'),
+    (16, 260, None, 'shot2.png'),
+    (40, 300, None, 'shot3.png'),
+]
+
+
+def winning_keys(level):
+    """the checker's winning path for a level, as held key ranges"""
+    out = subprocess.run([os.path.join(GAME, 'host2', 'check'), str(level), str(level)], capture_output=True,
+                         text=True).stdout.split()
+    if len(out) >= 2 and out[1] == 'GAS':
+        return 'RIGHT:0:20000'
+    path = out[-1]
+    keys, f = [], 0
+    for c in path:
+        if c == '2':
+            keys.append('RIGHT:%d:%d' % (f, f + 12))
+        elif c == '1':
+            keys.append('LEFT:%d:%d' % (f, f + 12))
+        f += 12
+    return ','.join(keys)
+
+
+def main():
+    subprocess.run(['make', '-s', '-C', os.path.join(GAME, 'host2')], check=True)
+    os.makedirs(os.path.join(GAME, 'docs'), exist_ok=True)
+    for level, frame, keys, name in SHOTS:
+        keys = keys or winning_keys(level)
+        with tempfile.TemporaryDirectory() as d:
+            env = dict(os.environ, ND_LEVEL=str(level), ND_FRAMES=str(frame + 2), ND_SHOTS=str(frame), ND_KEYS=keys,
+                       ND_OUT=d, ND_SAVE='')
+            subprocess.run([os.path.join(GAME, 'host2', 'shots')], env=env, check=True)
+            Image.open(os.path.join(d, 'f%04d.ppm' % frame)).save(os.path.join(GAME, 'docs', name))
+        print('docs/' + name)
+
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/tools/conformite/piou_font.py b/tools/conformite/piou_font.py
new file mode 100644
index 0000000..f7d280a
--- /dev/null
+++ b/tools/conformite/piou_font.py
@@ -0,0 +1,57 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Piou Road (ex-Crossy Road) : sa police à elle, des lettres carrées aux angles coupés, dessinées sur une
+grille de 5x5 doublée (10x10), à la place des chiffres « décodés du jeu » d'origine. Écrit les lignes
+.font_w et .font de games/crossyroad/src/crossy.c (mêmes caractères, même ordre)."""
+CH = "0123456789ACDEGILMNOPQRSTUWY?V"
+S = {
+ "0": ["XXXX.", "X..XX", "X.X.X", "XX..X", ".XXXX"],
+ "1": [".XX", "XXX", ".XX", ".XX", ".XX"],
+ "2": ["XXXX.", "...XX", ".XXX.", "XX...", "XXXXX"],
+ "3": ["XXXX.", "...XX", ".XXX.", "...XX", "XXXX."],
+ "4": ["XX.XX", "XX.XX", "XXXXX", "...XX", "...XX"],
+ "5": ["XXXXX", "XX...", "XXXX.", "...XX", "XXXX."],
+ "6": [".XXXX", "XX...", "XXXX.", "XX.XX", ".XXX."],
+ "7": ["XXXXX", "...XX", "..XX.", ".XX..", ".XX.."],
+ "8": [".XXX.", "XX.XX", ".XXX.", "XX.XX", ".XXX."],
+ "9": [".XXX.", "XX.XX", ".XXXX", "...XX", "XXXX."],
+ "A": [".XXX.", "XX.XX", "XXXXX", "XX.XX", "XX.XX"],
+ "C": [".XXXX", "XX...", "XX...", "XX...", ".XXXX"],
+ "D": ["XXXX.", "XX.XX", "XX.XX", "XX.XX", "XXXX."],
+ "E": ["XXXXX", "XX...", "XXXX.", "XX...", "XXXXX"],
+ "G": [".XXXX", "XX...", "XX.XX", "XX..X", ".XXXX"],
+ "I": ["XX", "XX", "XX", "XX", "XX"],
+ "L": ["XX...", "XX...", "XX...", "XX...", "XXXXX"],
+ "M": ["XX..XX", "XXXXXX", "XX.XXX", "XX..XX", "XX..XX"],
+ "N": ["XX.XX", "XXXXX", "XXXXX", "XX.XX", "XX.XX"],
+ "O": [".XXX.", "XX.XX", "XX.XX", "XX.XX", ".XXX."],
+ "P": ["XXXX.", "XX.XX", "XXXX.", "XX...", "XX..."],
+ "Q": [".XXX.", "XX.XX", "XX.XX", "XX.X.", ".XX.X"],
+ "R": ["XXXX.", "XX.XX", "XXXX.", "XX.X.", "XX.XX"],
+ "S": [".XXXX", "XX...", ".XXX.", "...XX", "XXXX."],
+ "T": ["XXXXX", ".XXX.", ".XXX.", ".XXX.", ".XXX."],
+ "U": ["XX.XX", "XX.XX", "XX.XX", "XX.XX", ".XXX."],
+ "W": ["XX..XX", "XX..XX", "XXX.XX", "XXXXXX", "XX..XX"],
+ "Y": ["XX.XX", "XX.XX", ".XXX.", ".XXX.", ".XXX."],
+ "?": ["XXXX.", "...XX", ".XXX.", ".....", ".XX.."],
+ "V": ["XX.XX", "XX.XX", "XX.XX", ".XXX.", "..X.."],
+}
+ws, lines = [], []
+for c in CH:
+    seed = S[c]
+    w = 2 * len(seed[0])
+    rows = []
+    for r in seed:
+        bits = "".join(ch * 2 for ch in r.replace(".", "0").replace("X", "1"))
+        rows += [bits, bits]
+    ws.append(w)
+    if w == 12:
+        vals = [int(b, 2) for b in rows]
+        body = "{" + ", ".join("0x%03X" % v for v in vals) + "}"
+    else:
+        vals = [int(b.ljust(10, "0"), 2) for b in rows]
+        body = "GLYPH(" + ", ".join("0x%03X" % v for v in vals) + ")"
+    lines.append((c, body))
+print("W", ws)
+for c, b in lines:
+    print("    %s,  // %s" % (b, c))
diff --git a/tools/conformite/stackfall_art.py b/tools/conformite/stackfall_art.py
new file mode 100644
index 0000000..35aa5b5
--- /dev/null
+++ b/tools/conformite/stackfall_art.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+# Calcade, 2026 — fait partie de NumPlay modifié, sous licence GNU GPL v3.
+"""Stackfall (ex-Tetris de Tatone26) : ses propres blocs et son icône, à la place des couleurs du
+« Tetris Guideline » et du mot TETRIS. 10 cases de 12 px : 7 couleurs, puis noir, cadre, blanc
+(les 3 dernières comme avant), et l'icône 55x56 (des blocs empilés, sans texte).
+
+Usage : stackfall_art.py games/tetris/tetris/src/data
+"""
+import sys
+from PIL import Image, ImageDraw
+
+D = sys.argv[1]
+COULEURS = [0xFFB627, 0x4361EE, 0xF15BB5, 0x80ED99, 0xFF6F61, 0x4CC9F0, 0x9B5DE5]  # (corail, menthe, rose... à nous)
+
+
+def rgb(c):
+    return (c >> 16 & 255, c >> 8 & 255, c & 255)
+
+
+def mix(a, b, t):
+    return tuple(int(x + (y - x) * t) for x, y in zip(a, b))
+
+
+def bloc(c):
+    """une case 12x12 : un galet arrondi, clair en haut à gauche, un point brillant"""
+    base = rgb(c)
+    im = Image.new("RGB", (12, 12), (0, 0, 0))
+    d = ImageDraw.Draw(im)
+    d.rounded_rectangle((0, 0, 11, 11), 3, fill=mix(base, (0, 0, 0), 0.35))
+    d.rounded_rectangle((0, 0, 10, 10), 3, fill=base)
+    d.rounded_rectangle((2, 2, 8, 8), 2, fill=mix(base, (255, 255, 255), 0.25))
+    d.point([(3, 3), (4, 3), (3, 4)], fill=(255, 255, 255))
+    return im
+
+
+old = Image.open(f"{D}/tiles.png").convert("RGB")
+out = Image.new("RGB", (120, 12))
+for i, c in enumerate(COULEURS):
+    out.paste(bloc(c), (12 * i, 0))
+out.paste(old.crop((84, 0, 120, 12)), (84, 0))  # noir, cadre, blanc : inchangés
+out.save(f"{D}/tiles.png")
+with open(f"{D}/image.ppm", "wb") as f:
+    f.write(b"P6\n120 12\n255\n" + out.tobytes())
+
+# l'icône : trois pièces empilées sur un fond nuit
+ic = Image.new("RGBA", (55, 56), (0, 0, 0, 0))
+d = ImageDraw.Draw(ic)
+d.rounded_rectangle((0, 0, 54, 55), 12, fill=(32, 26, 64, 255))
+cases = [(1, 5, 4), (2, 5, 4), (3, 5, 4), (2, 4, 4),        # une pièce en T, en bas
+         (4, 5, 0), (4, 4, 0), (4, 3, 0), (3, 3, 0),        # une en L
+         (1, 4, 5), (1, 3, 5), (1, 2, 5), (1, 1, 5)]        # une barre
+for x, y, k in cases:
+    ic.paste(bloc(COULEURS[k]).resize((9, 9), Image.LANCZOS), (2 + 8 * x, 3 + 8 * y))
+ic.save(f"{D}/icon.png")
+print("ok")
diff --git a/tools/conformite/warplab_art.py b/tools/conformite/warplab_art.py
new file mode 100644
index 0000000..f01f6ae
--- /dev/null
+++ b/tools/conformite/warplab_art.py
@@ -0,0 +1,470 @@
+#!/usr/bin/env python3
+"""Warp Lab (games/portal): draws all of the game's art and writes games/portal/src/art.h.
+
+Calcade, 19 October 2026. Everything here is drawn by this script: the 16 color
+palette, the 16x16 tiles, the sprites (Pip the lab robot, the crate, the orb),
+the 5x7 font and the icon (games/portal/src/icon.png). Nothing comes from
+another game.
+
+Tiles and sprites are 4 bits a pixel, two pixels a byte (left pixel in the
+low nibble); in sprites, color 0 is transparent.
+"""
+import os
+
+from PIL import Image, ImageDraw
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+GAME = os.path.join(HERE, '..', '..', 'games', 'portal')
+OUT = os.path.join(GAME, 'src', 'art.h')
+
+PAL = [
+    0x1B2333,  # 0 room background (transparent in sprites)
+    0x2A3550,  # 1 background dots
+    0xDCE1E8,  # 2 panel
+    0xA2ABBA,  # 3 panel shade
+    0x4E5566,  # 4 metal
+    0x343A48,  # 5 metal dark
+    0x9FD8E8,  # 6 glass
+    0xFFFFFF,  # 7 white
+    0x10141C,  # 8 ink
+    0xFF5C8A,  # 9 gate A (rose)
+    0x3DE0C0,  # 10 gate B (mint)
+    0xF2C94C,  # 11 yellow
+    0x8EDB5E,  # 12 green
+    0xB79CFF,  # 13 violet
+    0xC98F5A,  # 14 crate
+    0x8A5A33,  # 15 crate dark
+]
+
+
+def rgb565(c):
+    r, g, b = c >> 16, c >> 8 & 255, c & 255
+    return (r >> 3) << 11 | (g >> 2) << 5 | b >> 3
+
+
+# ------------------------------------------------------------------ pictures from text
+# A picture is rows of characters, one per pixel: '.' is color 0, other
+# characters map through KEY.
+KEY = {'.': 0, ',': 1, 'P': 2, 'p': 3, 'M': 4, 'm': 5, 'g': 6, 'W': 7, 'k': 8, 'A': 9, 'B': 10, 'Y': 11,
+       'G': 12, 'V': 13, 'C': 14, 'c': 15}
+
+
+def pic(rows):
+    rows = [r for r in rows.strip('\n').split('\n')]
+    return [[KEY[ch] for ch in r] for r in rows]
+
+
+def grid(w, h, v=0):
+    return [[v] * w for _ in range(h)]
+
+
+# ------------------------------------------------------------------ tiles
+def t_empty():
+    t = grid(16, 16)
+    t[7][7] = 1
+    return t
+
+
+def t_panel():
+    t = grid(16, 16, 2)
+    for i in range(16):
+        t[15][i] = 3
+        t[i][15] = 3
+    for i in range(1, 15):  # the seam between the two plates
+        t[7][i] = 3
+    t[3][3] = t[3][12] = t[11][3] = t[11][12] = 3
+    return t
+
+
+def t_metal():
+    t = grid(16, 16, 4)
+    for y in range(16):
+        for x in range(16):
+            if (x + y) % 6 == 0:
+                t[y][x] = 5
+    for i in range(16):
+        t[0][i] = 5 if t[0][i] == 4 else 5
+        t[15][i] = 8
+        t[i][15] = 8
+    for (x, y) in ((2, 2), (13, 2), (2, 13), (13, 13)):
+        t[y][x] = 3
+    return t
+
+
+def t_glass():
+    t = grid(16, 16)
+    for i in range(16):
+        t[0][i] = t[15][i] = 6
+        t[i][0] = t[i][15] = 6
+    for k in range(3, 13):  # a glint
+        t[16 - k][k] = 6 if k % 4 else 7
+    t[13][4] = 7
+    return t
+
+
+def t_door(col, opened):
+    t = grid(16, 16)
+    if opened:
+        for y in range(16):
+            t[y][0] = t[y][15] = 5
+            if y % 4 == 0:
+                t[y][1] = t[y][14] = col
+        return t
+    for y in range(16):
+        for x in range(16):
+            t[y][x] = 4 if y % 4 else 5
+        t[y][0] = t[y][15] = 5
+    for y in range(2, 14):
+        t[y][7] = t[y][8] = col
+    for x in range(3, 13):
+        t[2][x] = t[13][x] = col
+    return t
+
+
+def t_button(col, pressed):
+    t = t_empty()
+    top = 13 if pressed else 11
+    for y in range(top, 16):
+        for x in range(2, 14):
+            t[y][x] = col if y == top else 5
+    for x in range(1, 15):
+        t[15][x] = 4
+    return t
+
+
+def t_scrubber(phase):
+    t = grid(16, 16)
+    for y in range(16):
+        for x in (2, 6, 9, 13):
+            if (y + phase * 2 + x) % 6 < 3:
+                t[y][x] = 13
+        if (y + phase) % 8 == 0:
+            for x in range(1, 15, 2):
+                t[y][x] = 13
+    return t
+
+
+def t_zap(phase):
+    t = grid(16, 16)
+    xs = [8, 10, 11, 10, 8, 6, 5, 6]
+    for y in range(16):
+        x = xs[(y + phase * 4) % 8]
+        t[y][x] = 11
+        t[y][x - 1 if (y + phase) % 2 else x + 1] = 7 if y % 5 == 0 else 11
+    return t
+
+
+def t_spikes():
+    t = t_empty()
+    for k in range(4):
+        cx = 2 + k * 4
+        for y in range(9, 16):
+            hw = (y - 9) // 3
+            for x in range(cx - hw, cx + hw + 2):
+                if 0 <= x < 16:
+                    t[y][x] = 7 if x == cx else 3
+    return t
+
+
+def t_exit():
+    t = grid(16, 16, 8)
+    for i in range(16):
+        t[0][i] = t[1][i] = 12
+        t[i][0] = t[i][15] = 12
+    for c in (4, 9):  # two chevrons
+        for k in range(4):
+            t[5 + k][c + k] = 7
+            t[11 - k][c + k] = 7
+    return t
+
+
+def t_receiver(lit):
+    t = t_metal()
+    ring = 12 if lit else 3
+    for y in range(16):
+        for x in range(16):
+            d = (x - 7.5) ** 2 + (y - 7.5) ** 2
+            if 9 <= d <= 25:
+                t[y][x] = ring
+            elif d < 9:
+                t[y][x] = 11 if lit else 8
+    return t
+
+
+def t_emitter():
+    t = t_metal()
+    for y in range(4, 12):
+        for x in range(4, 12):
+            t[y][x] = 5
+    for y in range(6, 10):
+        for x in range(6, 10):
+            t[y][x] = 11
+    return t
+
+
+def t_dropper():
+    t = t_empty()
+    for x in range(16):
+        t[0][x] = 5
+        t[1][x] = 4
+    for x in range(3, 13):
+        t[2][x] = 5
+    t[2][7] = t[2][8] = 11
+    return t
+
+
+# order: the game's tile numbers (see warplab.h)
+TILES = [
+    ('EMPTY', t_empty()), ('PANEL', t_panel()), ('METAL', t_metal()), ('GLASS', t_glass()),
+    ('DOOR1', t_door(11, False)), ('DOOR1_OPEN', t_door(11, True)),
+    ('DOOR2', t_door(12, False)), ('DOOR2_OPEN', t_door(12, True)),
+    ('BUTTON1', t_button(11, False)), ('BUTTON1_DOWN', t_button(11, True)),
+    ('BUTTON2', t_button(12, False)), ('BUTTON2_DOWN', t_button(12, True)),
+    ('SCRUB0', t_scrubber(0)), ('SCRUB1', t_scrubber(1)), ('ZAP0', t_zap(0)), ('ZAP1', t_zap(1)),
+    ('SPIKES', t_spikes()), ('EXIT', t_exit()), ('RECV_OFF', t_receiver(False)), ('RECV_ON', t_receiver(True)),
+    ('EMITTER', t_emitter()), ('DROPPER', t_dropper()),
+]
+
+# ------------------------------------------------------------------ sprites
+# Pip, the lab robot (10x14, facing right): a round white head with a dark
+# visor and one mint eye, an antenna, a small body, two legs.
+PIP = {
+    'STAND': '''
+....YY....
+.....k....
+..WWWWWW..
+.WWWWWWWW.
+.WkkkkkBW.
+.WkkkkkkW.
+.WWWWWWWW.
+..pWWWWp..
+..WpppW...
+..WWWWWp..
+..pWWWW...
+...k..k...
+...k..k...
+..kk..kk..''',
+    'RUN1': '''
+....YY....
+.....k....
+..WWWWWW..
+.WWWWWWWW.
+.WkkkkkBW.
+.WkkkkkkW.
+.WWWWWWWW.
+..pWWWWp..
+..WpppW...
+..WWWWWp..
+..pWWWW...
+..k....k..
+.k......k.
+kk.......k''',
+    'RUN2': '''
+....YY....
+.....k....
+..WWWWWW..
+.WWWWWWWW.
+.WkkkkkBW.
+.WkkkkkkW.
+.WWWWWWWW.
+..pWWWWp..
+..WpppW...
+..WWWWWp..
+..pWWWW...
+....kk....
+...k..k...
+...kk.kk..''',
+    'JUMP': '''
+....YY....
+.....k....
+..WWWWWW..
+.WWWWWWWW.
+.WkkkkkBW.
+.WkkkkkkW.
+.WWWWWWWW.
+p.pWWWWp.p
+.pWpppW.p.
+..WWWWWp..
+..pWWWW...
+..k...k...
+.k.....k..
+..........''',
+}
+
+CRATE = '''
+cccccccccc
+cCCCCCCCCc
+cCcCCCCcCc
+cCCcCCcCCc
+cCCCccCCCc
+cCCCccCCCc
+cCCcCCcCCc
+cCcCCCCcCc
+cCCCCCCCCc
+cccccccccc'''
+
+ORB0 = '''
+..YY..
+.YWWY.
+YWWWWY
+YWWWWY
+.YWWY.
+..YY..'''
+ORB1 = '''
+..YY..
+.YYYY.
+YYWWYY
+YYWWYY
+.YYYY.
+..YY..'''
+
+# ------------------------------------------------------------------ font (5x7, capitals)
+FONT = {
+    ' ': ['.....'] * 7,
+    'A': ['.###.', '#...#', '#...#', '#####', '#...#', '#...#', '#...#'],
+    'B': ['####.', '#...#', '####.', '#...#', '#...#', '#...#', '####.'],
+    'C': ['.####', '#....', '#....', '#....', '#....', '#....', '.####'],
+    'D': ['####.', '#...#', '#...#', '#...#', '#...#', '#...#', '####.'],
+    'E': ['#####', '#....', '####.', '#....', '#....', '#....', '#####'],
+    'F': ['#####', '#....', '####.', '#....', '#....', '#....', '#....'],
+    'G': ['.####', '#....', '#....', '#..##', '#...#', '#...#', '.###.'],
+    'H': ['#...#', '#...#', '#####', '#...#', '#...#', '#...#', '#...#'],
+    'I': ['#####', '..#..', '..#..', '..#..', '..#..', '..#..', '#####'],
+    'J': ['..###', '....#', '....#', '....#', '#...#', '#...#', '.###.'],
+    'K': ['#...#', '#..#.', '###..', '#..#.', '#...#', '#...#', '#...#'],
+    'L': ['#....', '#....', '#....', '#....', '#....', '#....', '#####'],
+    'M': ['#...#', '##.##', '#.#.#', '#.#.#', '#...#', '#...#', '#...#'],
+    'N': ['#...#', '##..#', '#.#.#', '#..##', '#...#', '#...#', '#...#'],
+    'O': ['.###.', '#...#', '#...#', '#...#', '#...#', '#...#', '.###.'],
+    'P': ['####.', '#...#', '#...#', '####.', '#....', '#....', '#....'],
+    'Q': ['.###.', '#...#', '#...#', '#...#', '#.#.#', '#..#.', '.##.#'],
+    'R': ['####.', '#...#', '#...#', '####.', '#..#.', '#...#', '#...#'],
+    'S': ['.####', '#....', '.###.', '....#', '....#', '....#', '####.'],
+    'T': ['#####', '..#..', '..#..', '..#..', '..#..', '..#..', '..#..'],
+    'U': ['#...#', '#...#', '#...#', '#...#', '#...#', '#...#', '.###.'],
+    'V': ['#...#', '#...#', '#...#', '#...#', '.#.#.', '.#.#.', '..#..'],
+    'W': ['#...#', '#...#', '#...#', '#.#.#', '#.#.#', '##.##', '#...#'],
+    'X': ['#...#', '.#.#.', '..#..', '.#.#.', '#...#', '#...#', '#...#'],
+    'Y': ['#...#', '#...#', '.#.#.', '..#..', '..#..', '..#..', '..#..'],
+    'Z': ['#####', '...#.', '..#..', '.#...', '#....', '#....', '#####'],
+    '0': ['.###.', '#..##', '#.#.#', '#.#.#', '##..#', '#...#', '.###.'],
+    '1': ['..#..', '.##..', '..#..', '..#..', '..#..', '..#..', '.###.'],
+    '2': ['.###.', '#...#', '....#', '..##.', '.#...', '#....', '#####'],
+    '3': ['####.', '....#', '..##.', '....#', '....#', '....#', '####.'],
+    '4': ['...#.', '..##.', '.#.#.', '#..#.', '#####', '...#.', '...#.'],
+    '5': ['#####', '#....', '####.', '....#', '....#', '#...#', '.###.'],
+    '6': ['.###.', '#....', '####.', '#...#', '#...#', '#...#', '.###.'],
+    '7': ['#####', '....#', '...#.', '..#..', '..#..', '..#..', '..#..'],
+    '8': ['.###.', '#...#', '.###.', '#...#', '#...#', '#...#', '.###.'],
+    '9': ['.###.', '#...#', '#...#', '.####', '....#', '....#', '.###.'],
+    '.': ['.....', '.....', '.....', '.....', '.....', '.##..', '.##..'],
+    ',': ['.....', '.....', '.....', '.....', '.##..', '..#..', '.#...'],
+    ':': ['.....', '.##..', '.##..', '.....', '.##..', '.##..', '.....'],
+    ';': ['.....', '.##..', '.##..', '.....', '.##..', '..#..', '.#...'],
+    '!': ['..#..', '..#..', '..#..', '..#..', '..#..', '.....', '..#..'],
+    '?': ['.###.', '#...#', '....#', '..##.', '..#..', '.....', '..#..'],
+    "'": ['..#..', '..#..', '.#...', '.....', '.....', '.....', '.....'],
+    '"': ['.#.#.', '.#.#.', '.....', '.....', '.....', '.....', '.....'],
+    '-': ['.....', '.....', '.....', '.###.', '.....', '.....', '.....'],
+    '+': ['.....', '..#..', '..#..', '#####', '..#..', '..#..', '.....'],
+    '/': ['....#', '....#', '...#.', '..#..', '.#...', '#....', '#....'],
+    '(': ['...#.', '..#..', '.#...', '.#...', '.#...', '..#..', '...#.'],
+    ')': ['.#...', '..#..', '...#.', '...#.', '...#.', '..#..', '.#...'],
+    '<': ['...#.', '..#..', '.#...', '#....', '.#...', '..#..', '...#.'],
+    '>': ['.#...', '..#..', '...#.', '....#', '...#.', '..#..', '.#...'],
+    '=': ['.....', '.....', '#####', '.....', '#####', '.....', '.....'],
+    '%': ['##..#', '##.#.', '...#.', '..#..', '.#...', '.#.##', '#..##'],
+    '&': ['.##..', '#..#.', '.##..', '.#...', '#.#.#', '#..#.', '.##.#'],
+    '*': ['.....', '#.#.#', '.###.', '#####', '.###.', '#.#.#', '.....'],
+    '#': ['.#.#.', '.#.#.', '#####', '.#.#.', '#####', '.#.#.', '.#.#.'],
+    '_': ['.....', '.....', '.....', '.....', '.....', '.....', '#####'],
+    '[': ['.###.', '.#...', '.#...', '.#...', '.#...', '.#...', '.###.'],
+    ']': ['.###.', '...#.', '...#.', '...#.', '...#.', '...#.', '.###.'],
+    '@': ['.###.', '#...#', '#.###', '#.#.#', '#.###', '#....', '.####'],
+}
+FIRST, LAST = 0x20, 0x5F
+
+
+def font_bytes():
+    out = bytearray()
+    for c in range(FIRST, LAST + 1):
+        g = FONT.get(chr(c), FONT['?'])
+        for row in g:
+            b = 0
+            for i, ch in enumerate(row):
+                if ch == '#':
+                    b |= 1 << i
+            out.append(b)
+    return out
+
+
+def pack4(img):
+    out = bytearray()
+    for row in img:
+        for x in range(0, len(row), 2):
+            out.append(row[x] | (row[x + 1] if x + 1 < len(row) else 0) << 4)
+    return out
+
+
+def carray(name, data, typ='uint8_t'):
+    s = 'static const %s %s[%d] = {' % (typ, name, len(data))
+    for i, v in enumerate(data):
+        if i % 24 == 0:
+            s += '\n  '
+        s += '%d,' % v
+    return s + '\n};\n'
+
+
+def icon():
+    """55x56: two gates, rose and mint, facing each other, with an orb flying between them."""
+    S = 8
+    W, H = 55 * S, 56 * S
+    im = Image.new('RGBA', (W, H), (0, 0, 0, 0))
+    d = ImageDraw.Draw(im)
+    bg = tuple(PAL[0].to_bytes(3, 'big'))
+    d.rounded_rectangle((0, 0, W - 1, H - 1), radius=12 * S, fill=bg + (255,))
+    rose, mint = tuple(PAL[9].to_bytes(3, 'big')), tuple(PAL[10].to_bytes(3, 'big'))
+    panel = tuple(PAL[2].to_bytes(3, 'big'))
+    d.rectangle((6 * S, 10 * S, 12 * S, 46 * S), fill=panel)
+    d.rectangle((43 * S, 10 * S, 49 * S, 46 * S), fill=panel)
+    d.ellipse((10 * S, 14 * S, 18 * S, 42 * S), fill=rose)
+    d.ellipse((37 * S, 14 * S, 45 * S, 42 * S), fill=mint)
+    yel = tuple(PAL[11].to_bytes(3, 'big'))
+    for k, r in ((0, 4.5), (1, 2.6), (2, 1.6)):
+        cx = 30 - k * 5
+        d.ellipse(((cx - r) * S, (28 - r) * S, (cx + r) * S, (28 + r) * S), fill=yel if k == 0 else yel + (150 - k * 40,))
+    im = im.resize((55, 56), Image.LANCZOS)
+    im.save(os.path.join(GAME, 'src', 'icon.png'))
+
+
+def main():
+    out = ['/* Generated by tools/conformite/warplab_art.py: do not edit. */\n',
+           '#ifndef WARPLAB_ART_H\n#define WARPLAB_ART_H\n#include <stdint.h>\n']
+    out.append(carray('PAL', [rgb565(c) for c in PAL], 'uint16_t'))
+    data = bytearray()
+    for name, t in TILES:
+        assert len(t) == 16 and all(len(r) == 16 for r in t), name
+        data += pack4(t)
+    out.append('enum {\n' + ''.join('  ART_%s,\n' % n for n, _ in TILES) + '  ART_TILES\n};\n')
+    out.append(carray('TILE_ART', data))
+    sp = bytearray()
+    offs = []
+    for name, rows in [('PIP_' + k, v) for k, v in PIP.items()] + [('CRATE', CRATE), ('ORB0', ORB0), ('ORB1', ORB1)]:
+        p = pic(rows)
+        w, h = len(p[0]), len(p)
+        assert all(len(r) == w for r in p), name
+        offs.append((name, len(sp), w, h))
+        sp += bytes([w, h]) + pack4(p)
+    out.append(carray('SPRITES', sp))
+    for name, o, w, h in offs:
+        out.append('#define SPR_%s (SPRITES + %d) /* %dx%d */\n' % (name, o, w, h))
+    out.append('#define FONT_FIRST %d\n#define FONT_LAST %d\n' % (FIRST, LAST))
+    out.append(carray('FONT', font_bytes()))
+    out.append('#endif\n')
+    open(OUT, 'w').write(''.join(out))
+    icon()
+    print('wrote', OUT)
+
+
+if __name__ == '__main__':
+    main()
diff --git a/tools/conformite/warplab_probe.py b/tools/conformite/warplab_probe.py
new file mode 100644
index 0000000..5796f3b
--- /dev/null
+++ b/tools/conformite/warplab_probe.py
@@ -0,0 +1,61 @@
+#!/usr/bin/env python3
+"""Warp Lab room design helper: where the 8 shots land from a cell of a room.
+
+  warplab_probe.py SERIES ROOM CX CY      Pip standing in cell (CX, CY)
+  warplab_probe.py SERIES ROOM CX CY DX   ... DX pixels right of the cell's left edge (default 3)
+
+Same rules as fire() in games/portal/src/sim.c (doors counted closed)."""
+import os
+import sys
+
+sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
+import warplab_rooms as wr
+
+STOP = set('#XORr') | {'S', 'D', 'd'}
+FACES = ['UP (floor)', 'DOWN (ceiling)', 'LEFT side', 'RIGHT side']
+DIRS = {1: (-1, 1), 2: (0, 1), 3: (1, 1), 4: (-1, 0), 6: (1, 0), 7: (-1, -1), 8: (0, -1), 9: (1, -1)}
+SOLID = set('#XGORr') | {'D', 'd'}
+
+
+def cell(rows, cx, cy):
+    if cx < 0 or cy < 0 or cx >= 20 or cy >= 14:
+        return 'X'
+    return rows[cy][cx]
+
+
+def main():
+    s, r, cx, cy = map(int, sys.argv[1:5])
+    off = int(sys.argv[5]) if len(sys.argv) > 5 else 3
+    room = wr.parse(os.path.join(wr.GAME, 'rooms', wr.SERIES[s - 1]))[r - 1]
+    rows = room['rows']
+    for d, (dx, dy) in DIRS.items():
+        x, y = cx * 16 + off + 5, cy * 16 + 2 + 5
+        res = 'off the room'
+        for _ in range(600):
+            done = False
+            for axis, st in ((0, dx), (1, dy)):
+                if not st:
+                    continue
+                if axis:
+                    y += st
+                else:
+                    x += st
+                c = cell(rows, x >> 4, y >> 4)
+                if c in STOP:
+                    if c == '#':
+                        face = (0 if st > 0 else 1) if axis else (2 if st > 0 else 3)
+                        ax = (x >> 4) + (-1 if face == 2 else 1 if face == 3 else 0)
+                        ay = (y >> 4) + (-1 if face == 0 else 1 if face == 1 else 0)
+                        ok = cell(rows, ax, ay) not in SOLID
+                        res = 'GATE on (%d,%d) %s%s' % (x >> 4, y >> 4, FACES[face], '' if ok else ' (blocked side)')
+                    else:
+                        res = 'stops on %r at (%d,%d)' % (c, x >> 4, y >> 4)
+                    done = True
+                    break
+            if done:
+                break
+        print('%d: %s   [ends at %d,%d px]' % (d, res, x, y))
+
+
+if __name__ == '__main__':
+    main()
diff --git a/tools/conformite/warplab_rooms.py b/tools/conformite/warplab_rooms.py
new file mode 100644
index 0000000..a607d87
--- /dev/null
+++ b/tools/conformite/warplab_rooms.py
@@ -0,0 +1,111 @@
+#!/usr/bin/env python3
+"""Warp Lab (games/portal): compiles the rooms in games/portal/rooms (series1.txt, series2.txt) into
+games/portal/src/rooms.h (and test/solutions.h, the solutions test/host.c replays).
+
+Calcade, 19 October 2026: every room was designed for Warp Lab.
+
+A room file holds rooms one after the other:
+
+    == ROOM NAME
+    20 characters x 14 lines, one per cell:
+      .  empty            #  white panel (takes gates)   X  metal wall    G  glass
+      D  door, group 1    d  door, group 2               B  button, group 1   b  button, group 2
+      R  receiver, gr. 1  r  receiver, group 2           O  orb emitter   C  crate dropper
+      S  scrubber field   Z  zap field                   ^  spikes        E  exit
+      P  Pip's start (an empty cell)
+    solve: the inputs that finish it (see test/host.c)
+
+A group's doors are open while all its buttons are pressed and all its
+receivers are lit.
+"""
+import os
+import re
+import sys
+
+HERE = os.path.dirname(os.path.abspath(__file__))
+GAME = os.path.join(HERE, '..', '..', 'games', 'portal')
+CODES = {'.': 0, '#': 1, 'X': 2, 'G': 3, 'D': 4, 'd': 5, 'B': 6, 'b': 7, 'S': 8, 'Z': 9, '^': 10, 'E': 11,
+         'R': 12, 'r': 13, 'O': 14, 'C': 15, 'P': 0}
+SERIES = ['series1.txt', 'series2.txt']
+W, H = 20, 14
+
+
+def parse(path):
+    rooms, cur = [], None
+    for n, line in enumerate(open(path, encoding='utf-8'), 1):
+        line = line.rstrip('\n')
+        if line.startswith(';'):
+            continue
+        if line.startswith('== '):
+            cur = {'name': line[3:].strip(), 'rows': [], 'solve': '', 'line': n}
+            rooms.append(cur)
+        elif line.startswith('solve:'):
+            cur['solve'] = line[6:].strip()
+        elif line.strip() and cur is not None and len(cur['rows']) < H:
+            cur['rows'].append(line)
+    for r in rooms:
+        where = '%s:%d %s' % (os.path.basename(path), r['line'], r['name'])
+        assert len(r['rows']) == H, where + ': %d rows' % len(r['rows'])
+        for row in r['rows']:
+            assert len(row) == W, where + ': row %r' % row
+            for ch in row:
+                assert ch in CODES, where + ': %r' % ch
+        flat = ''.join(r['rows'])
+        assert flat.count('P') == 1, where + ': one P'
+        assert flat.count('E') >= 1, where + ': an exit'
+        assert flat.count('C') <= 1 and flat.count('O') <= 1, where
+        assert r['solve'], where + ': no solution'
+        assert re.fullmatch(r'[A-Z0-9 ]*', r['solve']), where
+    return rooms
+
+
+def pack(room):
+    flat = ''.join(room['rows'])
+    out = bytearray()
+    for i in range(0, W * H, 2):
+        out.append(CODES[flat[i]] | CODES[flat[i + 1]] << 4)
+    out.append(flat.index('P'))
+    return out
+
+
+def cstr(s):
+    return '"' + s.replace('\\', '\\\\').replace('"', '\\"') + '"'
+
+
+def main():
+    all_rooms = [parse(os.path.join(GAME, 'rooms', f)) for f in SERIES]
+    data, starts = bytearray(), []
+    for rooms in all_rooms:
+        starts.append(len(data))
+        for r in rooms:
+            data += pack(r)
+    h = ['/* Generated by tools/conformite/warplab_rooms.py from games/portal/rooms: do not edit. */\n',
+         '#define ROOM_BYTES %d\n' % (W * H // 2 + 1)]
+    h.append('static const u8 ROOM_DATA[%d] = {' % len(data))
+    for i, v in enumerate(data):
+        if i % 24 == 0:
+            h.append('\n  ')
+        h.append('%d,' % v)
+    h.append('\n};\n')
+    h.append('static const u16 ROOM_START[%d] = {%s};\n' % (len(starts), ', '.join(map(str, starts))))
+    h.append('static const u8 ROOM_COUNT[%d] = {%s};\n' % (len(starts), ', '.join(str(len(r)) for r in all_rooms)))
+    for k, rooms in enumerate(all_rooms):
+        h.append('static const char *const ROOM_NAMES_%d[] = {\n' % k)
+        for r in rooms:
+            h.append('  T(%s),\n' % cstr(r['name']))
+        h.append('};\n')
+    h.append('static const char *const *const ROOM_NAMES[%d] = {%s};\n' %
+             (len(all_rooms), ', '.join('ROOM_NAMES_%d' % k for k in range(len(all_rooms)))))
+    open(os.path.join(GAME, 'src', 'rooms.h'), 'w').write(''.join(h))
+    s = ['/* Generated by tools/conformite/warplab_rooms.py: the solutions of the rooms. */\n',
+         'static const char *const SOLUTIONS[%d][%d] = {\n' % (len(all_rooms), max(len(r) for r in all_rooms))]
+    for rooms in all_rooms:
+        s.append('  {' + ', '.join(cstr(r['solve']) for r in rooms) + '},\n')
+    s.append('};\n')
+    os.makedirs(os.path.join(GAME, 'test'), exist_ok=True)
+    open(os.path.join(GAME, 'test', 'solutions.h'), 'w').write(''.join(s))
+    print('rooms:', [len(r) for r in all_rooms], 'bytes:', len(data))
+
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/tools/conformite/warplab_search.py b/tools/conformite/warplab_search.py
new file mode 100644
index 0000000..836627d
--- /dev/null
+++ b/tools/conformite/warplab_search.py
@@ -0,0 +1,44 @@
+#!/usr/bin/env python3
+"""Warp Lab room design helper: tries the inputs of a template until one reaches the exit.
+
+  warplab_search.py SERIES ROOM "L10 F1 R{14-17}F2 R{6,8,10} L{10-18} W50 R90"
+
+{a-b} is every number from a to b, {a,b,c} those numbers. Prints the first few
+that work (games/portal/output/host must be built: make host)."""
+import itertools
+import os
+import re
+import subprocess
+import sys
+
+HOST = os.path.join(os.path.dirname(os.path.abspath(__file__)), '..', '..', 'games', 'portal', 'output', 'host')
+
+
+def choices(spec):
+    if '-' in spec and ',' not in spec:
+        a, b = map(int, spec.split('-'))
+        return [str(v) for v in range(a, b + 1)]
+    return spec.split(',')
+
+
+def main():
+    s, r, tpl = sys.argv[1], sys.argv[2], sys.argv[3]
+    want = int(sys.argv[4]) if len(sys.argv) > 4 else 3
+    parts = re.split(r'\{([^}]*)\}', tpl)
+    fixed, var = parts[0::2], [choices(p) for p in parts[1::2]]
+    found = 0
+    for combo in itertools.product(*var):
+        txt = ''.join(f + c for f, c in zip(fixed, list(combo) + [''])) + (fixed[-1] if len(fixed) > len(combo) + 1 else '')
+        out = subprocess.run([HOST, 'run', s, r, txt], capture_output=True, text=True).stdout
+        m = re.search(r'exit at frame (\d+)', out)
+        if m:
+            print(m.group(1), txt)
+            found += 1
+            if found >= want:
+                return 0
+    print('none' if not found else '')
+    return 1 if not found else 0
+
+
+if __name__ == '__main__':
+    sys.exit(main())
diff --git a/tools/emu.py b/tools/emu.py
index f08cc26..8e2e605 100644
--- a/tools/emu.py
+++ b/tools/emu.py
@@ -1,4 +1,5 @@
 #!/usr/bin/env python3
+# Modifié par Calcade le 19 octobre 2026 : charge aussi un pack déjà lié (.elf, pack/lier.py).
 """Run a calculator build of an app (.nwa) in the Unicorn CPU emulator.
 
 The .nwa is linked by nwlink exactly as the calculator's installer does, at a
@@ -48,6 +49,7 @@ EXT_RAM_END = 0x24037000
 EXT_RAM_LEN = 153676
 EXT_RAM_START = EXT_RAM_END - EXT_RAM_LEN
 STACK_TOP = 0x2403F000
+EVENT_EDGES = False  # tests/pack_emu.py: events only when a key goes down
 EXT_FLASH_START = 0x90200000
 EXT_FLASH_END = 0x903F0000
 CPU_HZ = 216_000_000
@@ -177,7 +179,10 @@ class Calculator:
                    str(EXT_RAM_LEN), "--trampoline-start", hex(TRAMPOLINE)]
             if external_data:
                 cmd += ["--external-data", external_data]
-            subprocess.run(cmd, check=True)
+            if nwa.endswith(".elf"):  # Calcade : un pack NumPlay déjà lié comme le site (pack/lier.py)
+                elf = nwa
+            else:
+                subprocess.run(cmd, check=True)
             e = ELFFile(open(elf, "rb"))
             self.segments = [(s["p_paddr"], s.data()) for s in e.iter_segments()
                              if s["p_type"] == "PT_LOAD" and s["p_filesz"]]
@@ -462,6 +467,8 @@ class Calculator:
         elif n == 23:  # event get
             ret = 216  # Ion::Events::None
             s = self.keyboard_state()
+            if EVENT_EDGES:  # (Calcade) like the calculator: a key held down is one event, not one per call
+                s, self.event_held = s & ~getattr(self, "event_held", 0), s
             for k in range(64):
                 if s >> k & 1:
                     ret = k
diff --git a/tools/icongen.py b/tools/icongen.py
index 828d64b..cf955bf 100644
--- a/tools/icongen.py
+++ b/tools/icongen.py
@@ -115,18 +115,22 @@ def back(w, h):
 
 
 def logo(w, h):
-    """A little game pad."""
-    im, d = canvas(w, h)
-    W, H = w * S, h * S
-    d.rounded_rectangle([0, H * 0.12, W, H * 0.92], radius=H * 0.4, fill=255)
-    cx, cy, a, b = W * 0.28, H * 0.52, W * 0.13, H * 0.1
-    d.rectangle([cx - a, cy - b * 0.55, cx + a, cy + b * 0.55], fill=0)
-    d.rectangle([cx - b * 0.55 * W / H * 0.9, cy - a * H / W * 2.3, cx + b * 0.55 * W / H * 0.9, cy + a * H / W * 2.3],
-                fill=0)
-    for fx, fy in ((0.68, 0.42), (0.8, 0.6)):
-        rr = H * 0.1
-        d.ellipse([W * fx - rr, H * fy - rr, W * fx + rr, H * fy + rr], fill=0)
-    return finish(im, w, h)
+    """Calcade's logo (tools/calcade/calcade-logo.svg) as a mask: the tilted calculator in full, its
+    screen and buttons cut out, the play arrow kept (Calcade, 20 octobre 2026)."""
+    import io
+    import os
+    import cairosvg
+    svg = open(os.path.join(os.path.dirname(os.path.abspath(__file__)), "calcade", "calcade-logo.svg"), "rb").read()
+    n = max(w, h) * S
+    im = Image.open(io.BytesIO(cairosvg.svg2png(bytestring=svg, output_width=n, output_height=n))).convert("RGBA")
+    px = np.asarray(im).astype(np.int32)
+    r, g, b, al = px[..., 0], px[..., 1], px[..., 2], px[..., 3]
+    blue = (b > r + 60) & (b > g + 40)  # the body and the arrow, #1D3FBF
+    m = np.where(blue, al, 0).astype(np.uint8)
+    full = Image.fromarray(m, "L")
+    out = Image.new("L", (w * S, h * S), 0)
+    out.paste(full, ((w * S - n) // 2, (h * S - n) // 2))
+    return finish(out, w, h)
 
 
 def heart(w, h):
@@ -148,7 +152,7 @@ ICONS = [
     ("back", lambda: back(14, 12)),
     ("left", lambda: chevron(8, 14, True)),
     ("right", lambda: chevron(8, 14, False)),
-    ("logo", lambda: logo(22, 15)),
+    ("logo", lambda: logo(18, 18)),
     ("heart", lambda: heart(10, 9)),
 ]
 
diff --git a/tools/npmodule.py b/tools/npmodule.py
index 382adce..fcb812f 100644
--- a/tools/npmodule.py
+++ b/tools/npmodule.py
@@ -93,6 +93,9 @@ def main():
     ap.add_argument("--index", type=int, required=True)
     ap.add_argument("--entry", default="main")
     ap.add_argument("--json")
+    # Calcade (pack NumPlay) : la RAM du jeu est adressee depuis ce symbole (debut de la zone
+    # libre de l'appli, _heap_start), .data a +0 et .bss juste apres (aligne sur 8)
+    ap.add_argument("--arena-symbol")
     a = ap.parse_args()
     g = a.game
     e = Elf(open(a.inp, "rb").read())
@@ -185,12 +188,22 @@ def main():
     out_syms.append(dict(name=f"np_{g}_init", value=0, size=data_size, bind=STB_GLOBAL, type=STT_OBJECT,
                          other=0, shndx=INIT))
     ram_index = {}
-    for region in ("data", "bss"):
-        ram_index[region] = len(out_syms)
-        out_syms.append(dict(name=f"np_{g}_{region}", value=0, size=0, bind=STB_GLOBAL,
+    bss_base = 0
+    if a.arena_symbol:
+        bss_base = (data_size + 7) & ~7
+        ram_index["data"] = ram_index["bss"] = len(out_syms)
+        out_syms.append(dict(name=a.arena_symbol, value=0, size=0, bind=STB_GLOBAL,
                              type=STT_NOTYPE, other=0, shndx=SHN_UNDEF))
+    else:
+        for region in ("data", "bss"):
+            ram_index[region] = len(out_syms)
+            out_syms.append(dict(name=f"np_{g}_{region}", value=0, size=0, bind=STB_GLOBAL,
+                                 type=STT_NOTYPE, other=0, shndx=SHN_UNDEF))
     und_index = {}
     for name, n in undefined.items():
+        if a.arena_symbol and name == a.arena_symbol:
+            und_index[name] = ram_index["data"]
+            continue
         und_index[name] = len(out_syms)
         out_syms.append(n)
     for k, s in enumerate(e.syms):
@@ -206,6 +219,8 @@ def main():
                 region, value = ram_sym[si]
                 if typ not in RAM_RELOCS:
                     fail(f"relocation type {typ} at {off:#x} points into RAM; only ABS32 is handled")
+                if region == "bss":
+                    value += bss_base
                 if value:
                     addend, = struct.unpack_from("<I", blob, off)
                     struct.pack_into("<I", blob, off, (addend + value) & 0xFFFFFFFF)
@@ -296,7 +311,7 @@ def main():
     open(a.out, "wb").write(out)
 
     info = dict(game=g, index=a.index, code=len(code_bytes), data=data_size, bss=bss_size,
-                ram_align=ram_align, undefined=sorted(undefined))
+                ram_align=ram_align, undefined=sorted(undefined), bss_offset=bss_base)
     if a.json:
         json.dump(info, open(a.json, "w"), indent=1)
     print(f"module {g}: code+rodata {len(code_bytes)} B, data {data_size} B, bss {bss_size} B")
diff --git a/tools/shots.py b/tools/shots.py
index 64e3571..2b8a423 100644
--- a/tools/shots.py
+++ b/tools/shots.py
@@ -51,7 +51,10 @@ def quantize(im, colors):
 def pack(path, colors):
     im = Image.open(path).convert("RGB")
     if im.size != (W, H):
-        im = im.resize((W, H), Image.LANCZOS)
+        # Calcade (19/10/2026) : réduction puis léger renforcement de netteté, pour rester aussi
+        # net que la capture d'origine sur la carte du carrousel
+        from PIL import ImageFilter
+        im = im.resize((W, H), Image.LANCZOS).filter(ImageFilter.UnsharpMask(radius=0.8, percent=70, threshold=2))
     q = quantize(im, colors)
     idx = q.tobytes()
     used = max(idx) + 1
